fix(SW-741): UI fixes on contentpages and some components

This commit is contained in:
Erik Tiekstra
2024-11-06 16:20:13 +01:00
parent a8558eb499
commit edad4047ac
12 changed files with 86 additions and 165 deletions

View File

@@ -11,7 +11,7 @@ export default function ShortcutsListItems({
className, className,
}: ShortcutsListItemsProps) { }: ShortcutsListItemsProps) {
return ( return (
<ul className={className}> <ul className={`${styles.list} ${className}`}>
{shortcutsListItems.map((shortcut) => ( {shortcutsListItems.map((shortcut) => (
<li key={shortcut.title} className={styles.listItem}> <li key={shortcut.title} className={styles.listItem}>
<Link <Link

View File

@@ -1,5 +1,8 @@
.link { .list {
background-color: var(--Base-Surface-Primary-light-Normal); height: fit-content;
border-radius: var(--Corner-radius-Medium);
overflow: hidden;
list-style: none;
} }
.listItem { .listItem {

View File

@@ -15,36 +15,36 @@ export default function ShortcutsList({
hasTwoColumns, hasTwoColumns,
}: ShortcutsListProps) { }: ShortcutsListProps) {
const middleIndex = Math.ceil(shortcuts.length / 2) const middleIndex = Math.ceil(shortcuts.length / 2)
const leftColumn = shortcuts.slice(0, middleIndex) const columns =
const rightColumn = shortcuts.slice(middleIndex)
const classNames =
hasTwoColumns && shortcuts.length > 1 hasTwoColumns && shortcuts.length > 1
? { ? [
section: styles.twoColumnSection, {
leftColumn: styles.leftColumn, id: "shortcuts-column-1",
rightColumn: styles.rightColumn, column: shortcuts.slice(0, middleIndex),
} },
: { {
section: styles.oneColumnSection, id: "shortcuts-column-2",
leftColumn: column: shortcuts.slice(middleIndex),
shortcuts.length === 1 },
? styles.leftColumnBorderBottomNone ]
: styles.leftColumnBorderBottom, : [
} {
id: "shortcuts-column",
column: shortcuts,
},
]
return ( return (
<SectionContainer> <SectionContainer>
<SectionHeader preamble={subtitle} title={title} topTitle={firstItem} /> <SectionHeader preamble={subtitle} title={title} topTitle={firstItem} />
<section className={classNames.section}> <section className={styles.section}>
<ShortcutsListItems {columns.map(({ id, column }) => (
shortcutsListItems={leftColumn} <ShortcutsListItems
className={classNames.leftColumn} key={id}
/> shortcutsListItems={column}
<ShortcutsListItems className={styles.column}
shortcutsListItems={rightColumn} />
className={classNames.rightColumn} ))}
/>
</section> </section>
</SectionContainer> </SectionContainer>
) )

View File

@@ -1,33 +1,24 @@
.oneColumnSection, @media screen and (max-width: 1366px) {
.twoColumnSection { .section {
display: grid;
border-radius: var(--Corner-radius-Medium);
border: 1px solid var(--Base-Border-Subtle);
overflow: hidden;
}
.leftColumn,
.leftColumnBorderBottom {
border-bottom: 1px solid var(--Base-Border-Subtle);
}
.leftColumnBorderBottomNone {
border-bottom: none;
}
@media screen and (min-width: 1367px) {
.twoColumnSection {
grid-template-columns: 1fr 1fr;
column-gap: var(--Spacing-x2);
border-radius: 0;
border: none;
}
.leftColumn,
.rightColumn {
height: fit-content;
border: 1px solid var(--Base-Border-Subtle);
border-radius: var(--Corner-radius-Medium); border-radius: var(--Corner-radius-Medium);
overflow: hidden; overflow: hidden;
} }
.column {
border-radius: 0;
}
.column + .column {
border-top: 1px solid var(--Base-Border-Subtle);
}
}
@media screen and (min-width: 1367px) {
.section {
border-radius: 0;
}
.section:has(.column:nth-child(2)) {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: var(--Spacing-x2);
}
} }

View File

@@ -14,13 +14,11 @@ export default function TextCols({ text_cols }: TextColProps) {
return ( return (
<section key={col.title} className={styles.column}> <section key={col.title} className={styles.column}>
<Subtitle>{col.title}</Subtitle> <Subtitle>{col.title}</Subtitle>
<div className={styles.text}> <JsonToHtml
<JsonToHtml nodes={col.text.json.children}
nodes={col.text.json.children} embeds={col.text.embedded_itemsConnection.edges}
embeds={col.text.embedded_itemsConnection.edges} renderOptions={renderOptions}
renderOptions={renderOptions} />
/>
</div>
</section> </section>
) )
})} })}

View File

@@ -5,7 +5,6 @@ import styles from "./textcols.module.css"
import type { EmbedByUid } from "@/types/transitionTypes/jsontohtml" import type { EmbedByUid } from "@/types/transitionTypes/jsontohtml"
import { RTEItemTypeEnum, RTETypeEnum } from "@/types/transitionTypes/rte/enums" import { RTEItemTypeEnum, RTETypeEnum } from "@/types/transitionTypes/rte/enums"
import type { import type {
RTEDefaultNode,
RTENext, RTENext,
RTENode, RTENode,
RTERegularNode, RTERegularNode,
@@ -13,18 +12,6 @@ import type {
import type { RenderOptions } from "@/types/transitionTypes/rte/option" import type { RenderOptions } from "@/types/transitionTypes/rte/option"
export const renderOptions: RenderOptions = { export const renderOptions: RenderOptions = {
[RTETypeEnum.p]: (
node: RTEDefaultNode,
embeds: EmbedByUid,
next: RTENext,
fullRenderOptions: RenderOptions
) => {
return (
<p key={node.uid} className={styles.p}>
{next(node.children, embeds, fullRenderOptions)}
</p>
)
},
[RTETypeEnum.a]: ( [RTETypeEnum.a]: (
node: RTERegularNode, node: RTERegularNode,
embeds: EmbedByUid, embeds: EmbedByUid,

View File

@@ -1,39 +1,18 @@
.columns { .columns {
display: flex; display: grid;
flex-direction: column;
gap: var(--Spacing-x3); gap: var(--Spacing-x3);
} }
.column { .column {
display: grid;
gap: var(--Spacing-x1);
align-content: start;
padding-bottom: var(--Spacing-x2); padding-bottom: var(--Spacing-x2);
border-bottom: 1px solid var(--Base-Border-Subtle); border-bottom: 1px solid var(--Base-Border-Subtle);
gap: var(--Spacing-x1);
display: flex;
flex-direction: column;
}
.p {
color: var(--UI-Text-High-contrast);
line-height: var(--Spacing-x3);
margin: 0;
}
.a {
color: var(--Base-Text-High-contrast);
}
.text > section {
gap: 0;
} }
@media (min-width: 768px) { @media (min-width: 768px) {
.columns { .columns {
flex-direction: row; grid-template-columns: repeat(2, 1fr);
flex-wrap: wrap;
}
.column {
flex: 0 0 calc(50% - var(--Spacing-x3));
max-width: calc(50% - var(--Spacing-x3));
} }
} }

View File

@@ -1,50 +1,11 @@
import Link from "@/components/TempDesignSystem/Link" import Link from "@/components/TempDesignSystem/Link"
import styles from "./uspgrid.module.css"
import type { EmbedByUid } from "@/types/transitionTypes/jsontohtml" import type { EmbedByUid } from "@/types/transitionTypes/jsontohtml"
import { RTEItemTypeEnum, RTETypeEnum } from "@/types/transitionTypes/rte/enums" import { RTEItemTypeEnum, RTETypeEnum } from "@/types/transitionTypes/rte/enums"
import type { import type { RTENext, RTENode } from "@/types/transitionTypes/rte/node"
RTEDefaultNode,
RTENext,
RTENode,
RTERegularNode,
} from "@/types/transitionTypes/rte/node"
import type { RenderOptions } from "@/types/transitionTypes/rte/option" import type { RenderOptions } from "@/types/transitionTypes/rte/option"
export const renderOptions: RenderOptions = { export const renderOptions: RenderOptions = {
[RTETypeEnum.p]: (
node: RTEDefaultNode,
embeds: EmbedByUid,
next: RTENext,
fullRenderOptions: RenderOptions
) => {
return (
<p key={node.uid} className={styles.p}>
{next(node.children, embeds, fullRenderOptions)}
</p>
)
},
[RTETypeEnum.a]: (
node: RTERegularNode,
embeds: EmbedByUid,
next: RTENext,
fullRenderOptions: RenderOptions
) => {
if (node.attrs.url) {
return (
<a
href={node.attrs.url}
target={node.attrs.target ?? "_blank"}
key={node.uid}
className={styles.a}
>
{next(node.children, embeds, fullRenderOptions)}
</a>
)
}
return null
},
[RTETypeEnum.reference]: ( [RTETypeEnum.reference]: (
node: RTENode, node: RTENode,
embeds: EmbedByUid, embeds: EmbedByUid,
@@ -59,7 +20,12 @@ export const renderOptions: RenderOptions = {
: node.attrs.href : node.attrs.href
return ( return (
<Link href={href} key={node.uid} className={styles.a}> <Link
href={href}
key={node.uid}
variant="underscored"
color="burgundy"
>
{next(node.children, embeds, fullRenderOptions)} {next(node.children, embeds, fullRenderOptions)}
</Link> </Link>
) )

View File

@@ -2,26 +2,18 @@
display: grid; display: grid;
gap: var(--Spacing-x3); gap: var(--Spacing-x3);
} }
.usp {
display: grid;
gap: var(--Spacing-x3);
align-content: start;
}
@media screen and (min-width: 767px) { @media screen and (min-width: 767px) {
.grid { .grid {
grid-template-columns: repeat(3, 1fr);
}
.grid:has(.usp:nth-child(4)) {
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
} }
} .grid:has(.usp:nth-child(3)):not(:has(.usp:nth-child(4))) {
.usp { grid-template-columns: repeat(3, 1fr);
display: flex; }
flex-direction: column;
gap: var(--Spacing-x3);
}
.p {
margin: 0;
font-size: var(--typography-Caption-Regular-fontSize);
color: var(--UI-Text-Medium-contrast);
line-height: 21px; /* Caption variable for line-height is 139.9999976158142%, but it set to 21px in design */
}
.a {
font-size: var(--typography-Caption-Regular-fontSize);
color: var(--Base-Text-High-contrast);
} }

View File

@@ -65,6 +65,7 @@ export const renderOptions: RenderOptions = {
next: RTENext, next: RTENext,
fullRenderOptions: RenderOptions fullRenderOptions: RenderOptions
) => { ) => {
console.log({ RTE_A_NODE: node })
if (node.attrs.url) { if (node.attrs.url) {
const props = extractPossibleAttributes(node.attrs) const props = extractPossibleAttributes(node.attrs)
return ( return (

View File

@@ -1,7 +1,6 @@
import Image from "@/components/Image" import Image from "@/components/Image"
import Link from "@/components/TempDesignSystem/Link" import Link from "@/components/TempDesignSystem/Link"
import { insertResponseToImageVaultAsset } from "@/utils/imageVault" import { insertResponseToImageVaultAsset } from "@/utils/imageVault"
import { removeMultipleSlashes } from "@/utils/url"
import ImageContainer from "../ImageContainer" import ImageContainer from "../ImageContainer"
import Divider from "../TempDesignSystem/Divider" import Divider from "../TempDesignSystem/Divider"

View File

@@ -65,7 +65,6 @@
.shortcut { .shortcut {
align-items: center; align-items: center;
border-bottom: 1px solid var(--Base-Border-Subtle);
display: grid; display: grid;
font-family: var(--typography-Body-Regular-fontFamily); font-family: var(--typography-Body-Regular-fontFamily);
font-size: var(--typography-Body-Regular-fontSize); font-size: var(--typography-Body-Regular-fontSize);
@@ -74,7 +73,13 @@
grid-template-columns: 1fr auto; grid-template-columns: 1fr auto;
letter-spacing: var(--typography-Body-Regular-letterSpacing); letter-spacing: var(--typography-Body-Regular-letterSpacing);
line-height: var(--typography-Body-Regular-lineHeight); line-height: var(--typography-Body-Regular-lineHeight);
padding: var(--Spacing-x3); padding: var(--Spacing-x2) var(--Spacing-x3);
background-color: var(--Base-Surface-Primary-light-Normal);
transition: background-color 0.3s;
}
.shortcut:hover {
background-color: var(--UI-Input-Controls-Surface-Hover);
} }
.shortcut:last-of-type { .shortcut:last-of-type {