diff --git a/docs/css/codehilite.css b/docs/css/codehilite.css index df7773d9..884c7991 100644 --- a/docs/css/codehilite.css +++ b/docs/css/codehilite.css @@ -19,7 +19,7 @@ .highlight .p, .highlight .cp { - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); } /* HTML tags and YAML keys */ @@ -34,7 +34,7 @@ .highlight .nf, .highlight .fm, .highlight .nn { - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); } /* Variable names */ @@ -47,7 +47,7 @@ /* Attributes */ .highlight .na { - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); } /* Strings */ diff --git a/docs/css/custom.css b/docs/css/custom.css index db66d4eb..2db421f3 100644 --- a/docs/css/custom.css +++ b/docs/css/custom.css @@ -1,34 +1,51 @@ +/* Cohesivo palette. Values mirror the product design system, converted from oklch(): + vendor/ibexa/admin-ui-assets/.../vendors/ids-assets/dist/scss/variables/_colors.scss + The scss/ sources carry the same values in scss/_variables.scss. */ :root > * { - --ibexa-orange: rgb(255,71,19); - --ibexa-red: rgb(219,0,50); - --ibexa-jazzberry: rgb(174,17,100); - --ibexa-dusk-black: rgb(19,28,38); - --ibexa-snow: rgb(224,224,232); + --cohesivo-violet: #4E24A5; + --cohesivo-violet-light: #B497E8; + --cohesivo-dusk-black: #0E1216; + --cohesivo-snow: #E7E7E8; + --cohesivo-amber: #DC8004; + --cohesivo-red: #BA2124; + --cohesivo-info: #19628F; + --cohesivo-info-dark: #003F63; + --cohesivo-ink-muted: #3E4145; + --cohesivo-mist: #F5F6F6; + --black: rgb(0,0,0); --white: rgb(255,255,255); - --warm-stone: rgb(236,223,209); - --turquoise-pearl: rgb(71,190,219); - --yellow-orange: rgb(252,174,66); - --apricot: rgb(241,138,107); - --sherpa-blue: rgb(0,77,93); - + --mid-grey: rgb(201,201,208); --dark-grey: rgb(151,151,151); - - - --caution-border: var(--ibexa-orange); + + + --caution-border: var(--cohesivo-amber); --note-border: var(--mid-grey); - --enterprise-border: var(--ibexa-jazzberry); - + --enterprise-border: var(--cohesivo-violet); + + /* Admonitions — the product's .ibexa-alert silhouette, but with the fill taken + from the lightest step of the same ramp. The app's alerts are transient and + single-line; these sit in long-form prose and repeat often, so the saturated + fills are toned down. Titles are the darkest step, for AA on the light fill. */ + --admonition-radius: 10px; + --admonition-info-bg: #F1ECFB; + --admonition-info-bar: #4E24A5; + --admonition-info-title: #391B79; + --admonition-warning-bg: #FCEFDE; + --admonition-warning-bar: #DC8004; + --admonition-warning-title: #8C3F00; + --codeblock: rgb(89,96,103); --inline-code: rgb(242,242,245); --table-header: var(--codeblock); --code-highlight: #D9E9FF; - - --link: rgb(0,71,206); + + /* Links follow the app: dark ink, always underlined, violet on hover. */ + --link: var(--cohesivo-dusk-black); /* Override Material colors */ - --md-accent-fg-color: var(--ibexa-jazzberry); + --md-accent-fg-color: var(--cohesivo-violet); --md-admonition-icon--tip: url('data:image/svg+xml;charset=utf-8,'); @@ -94,7 +111,7 @@ body, input { font-family: "Noto Sans", sans-serif; - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); } body { @@ -125,18 +142,27 @@ body { } [data-md-color-primary=blue-grey] .md-header { - background-color: var(--ibexa-dusk-black); + background-color: var(--cohesivo-dusk-black); color: #fff; height: 56px; } .md-typeset a { color: var(--link); + text-decoration: underline; } .md-typeset a:hover, .md-typeset a:focus { - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); +} + +/* Anchors that are UI affordances rather than prose links keep no underline. */ +.md-typeset .headerlink, +.md-typeset a.md-icon, +.md-typeset .tabbed-labels a, +.md-typeset .md-clipboard { + text-decoration: none; } .md-typeset th a { @@ -150,7 +176,7 @@ body { /* Headings */ .md-typeset h1, .md-typeset h2, .md-typeset h3, .md-typeset h4, .md-typeset h5, .md-typeset h6 { - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); line-height: 1; display: flex; align-items: center; @@ -194,7 +220,7 @@ body { } ul li::marker { - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); } ul li li { @@ -228,55 +254,128 @@ ul li li li { padding: .5rem; } -/* Admonitions */ - -.md-typeset :is(.admonition,details):is(.tip,.note,.caution), -.md-typeset :is(.admonition-title,summary), -.md-typeset :is(.tip,.note)>:is(.admonition-title,summary) { +/* Generic titles and summaries — e.g. the homepage accordion — keep the plain + look. The admonition rules below are more specific and override this. */ +.md-typeset :is(.admonition-title,summary) { background-color: #ffffff; box-shadow: none; font-size: 16px; } -.md-typeset :is(.admonition,details):is(.tip,.note) -{ - border: 0.1rem solid var(--note-border); - border-radius: 0.1rem; +/* Admonitions + Styled after the product's .ibexa-alert (vendor/ibexa/admin-ui/.../scss/_alerts.scss): + a 4px left accent bar, square on the left and rounded on the right, over a tinted + fill, with the title and icon in the accent's dark tone. note/tip map to the app's + --info variant, caution/warning to --warning. */ + +.md-typeset :is(.admonition,details):is(.tip,.note,.caution,.warning) { + box-shadow: none; + font-size: 16px; + border-width: 0 0 0 4px; + border-left-style: solid; + border-radius: 0 var(--admonition-radius) var(--admonition-radius) 0; + padding: 4px 12px; } -.md-typeset :is(.admonition,details):is(.caution) -{ - border: 0.1rem solid var(--caution-border); - border-radius: 0.1rem; +/* Own the icon geometry rather than inheriting Material's rem-based padding, + which does not line up once the container padding changes. */ +.md-typeset :is(.admonition,details):is(.tip,.note,.caution,.warning) > :is(.admonition-title,summary) { + background-color: transparent; + border: 0; + font-size: 16px; + font-weight: 600; + margin: 8px 0; + padding: 0 0 0 28px; + position: relative; + min-height: 20px; + display: flex; + align-items: center; } -.md-typeset .admonition.caution>.admonition-title { - border-color: var(--caution-border); +.md-typeset :is(.admonition,details):is(.tip,.note,.caution,.warning) > :is(.admonition-title,summary)::before { + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + width: 20px; + height: 20px; + margin: 0; } -.md-typeset .admonition:is(.note,.tip)>:is(.admonition-title) { - border-color: var(--note-border); +/* Body copy stays on the default dark ink — admonition bodies run long here, + unlike the app's single-line alerts. */ +.md-typeset :is(.admonition,details):is(.tip,.note,.caution,.warning) > :not(.admonition-title):not(summary) { + color: var(--cohesivo-dusk-black); } -.md-typeset :is(.admonition,details[open]):is(.note,.tip,.caution) :is(.admonition-title,summary) { - border-bottom: 1px solid var(--note-border); +/* Collapsible admonitions (??? note). Material draws the toggle as summary::after, + colours it per admonition type, and positions it against its own padding — so it + needs re-pointing at our accent and re-centring against ours. Material's rotation + rule does not survive our overrides either, so it is restated here. */ +.md-typeset details:is(.tip,.note,.caution,.warning) > summary { + padding-right: 32px; + cursor: pointer; + list-style: none; +} + +.md-typeset details:is(.tip,.note,.caution,.warning) > summary::-webkit-details-marker { + display: none; +} + +.md-typeset details:is(.tip,.note,.caution,.warning) > summary::after { + top: 50%; + right: 8px; + width: 20px; + height: 20px; + margin: 0; + transform: translateY(-50%); + transition: transform 0.2s; +} + +.md-typeset details[open]:is(.tip,.note,.caution,.warning) > summary::after { + transform: translateY(-50%) rotate(90deg); +} + +/* note / tip — the app's .ibexa-alert--info */ +.md-typeset :is(.admonition,details):is(.tip,.note) { + background-color: var(--admonition-info-bg); + border-left-color: var(--admonition-info-bar); +} + +.md-typeset :is(.admonition,details):is(.tip,.note) > :is(.admonition-title,summary) { + color: var(--admonition-info-title); +} + +.md-typeset :is(.admonition,details):is(.tip,.note) > :is(.admonition-title,summary)::before { + background-color: var(--admonition-info-title); } -/* Admonition icons */ +/* Material sets `color` on the marker per admonition type; its background is + currentcolor, so re-pointing colour alone recolours the whole chevron. */ +.md-typeset details:is(.tip,.note) > summary::after { + color: var(--admonition-info-title); +} -.md-typeset .note > .admonition-title::before, -.md-typeset .tip > .admonition-title::before, -.md-typeset .note > summary::before, -.md-typeset .tip > summary::before { - background-color: var(--note-border); +/* caution / warning — the app's .ibexa-alert--warning */ +.md-typeset :is(.admonition,details):is(.caution,.warning) { + background-color: var(--admonition-warning-bg); + border-left-color: var(--admonition-warning-bar); } -.md-typeset :is(.admonition,details).caution>:is(.admonition-title,summary):before { - background-color: var(--caution-border); +.md-typeset :is(.admonition,details):is(.caution,.warning) > :is(.admonition-title,summary) { + color: var(--admonition-warning-title); +} + +.md-typeset :is(.admonition,details):is(.caution,.warning) > :is(.admonition-title,summary)::before { + background-color: var(--admonition-warning-title); -webkit-mask-image: var(--md-admonition-icon--caution); mask-image: var(--md-admonition-icon--caution); } +.md-typeset details:is(.caution,.warning) > summary::after { + color: var(--admonition-warning-title); +} + /* Tile admonition */ .md-typeset :is(.admonition):is(.tile) { @@ -306,7 +405,7 @@ ul li li li { /* Code highlighting */ .md-typeset code, .md-typeset pre { - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); } .md-typeset .highlighttable code, .md-typeset .highlighttable pre { @@ -329,7 +428,7 @@ ul li li li { } .md-typeset .highlighttable pre code::-webkit-scrollbar-track { - background-color: var(--ibexa-snow); + background-color: var(--cohesivo-snow); } .md-typeset .highlighttable pre code::-webkit-scrollbar-thumb { @@ -350,7 +449,7 @@ ul li li li { } .md-typeset .highlighttable .linenodiv pre { - color: var(--ibexa-snow); + color: var(--cohesivo-snow); background-color: var(--codeblock); } @@ -373,7 +472,7 @@ ul li li li { /* Code block titles */ .highlighttable span.filename { - background-color: var(--ibexa-snow); + background-color: var(--cohesivo-snow); } /* Tables */ @@ -384,7 +483,7 @@ ul li li li { } .md-typeset table:not([class]) th { - color: var(--ibexa-snow); + color: var(--cohesivo-snow); background-color: var(--table-header); } @@ -393,7 +492,7 @@ ul li li li { } .md-nav__link[data-md-state=blur] { - color: rgb(19, 28, 38); + color: var(--cohesivo-dusk-black); } figure { @@ -420,7 +519,7 @@ a.external:not(.card):not(.notification__cta a):after { } [data-md-color-primary=blue-grey] .md-nav__link--active { - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); font-weight: 700; } @@ -501,7 +600,10 @@ a.external:not(.card):not(.notification__cta a):after { .md-typeset .tabbed-set .tabbed-content { order: 99; - border: 1px solid var(--ibexa-snow); + /* The panel is an opaque white card so the set reads the same on a plain page + and on a tinted admonition fill. */ + background: #FFFFFF; + border: 1px solid var(--cohesivo-snow); padding: 4px 4px 4px 1rem; border-radius: 0 .2rem .2rem .2rem; } @@ -509,9 +611,12 @@ a.external:not(.card):not(.notification__cta a):after { .md-typeset .tabbed-set label { font-size: .64rem; font-weight: 700; + /* Unselected tabs sit recessed behind the panel. */ + background: var(--cohesivo-mist); + color: var(--cohesivo-ink-muted); padding: 0.9375em 1.25em 0.78125em; - border: 1px solid var(--ibexa-snow); - border-bottom: 2px solid var(--ibexa-snow); + border: 1px solid var(--cohesivo-snow); + border-bottom: 2px solid var(--cohesivo-snow); border-radius: 4px 4px 0 0; } @@ -520,8 +625,8 @@ a.external:not(.card):not(.notification__cta a):after { } .md-typeset .tabbed-labels > label:hover { - color: var(--ibexa-dusk-black); - border-bottom: 2px solid var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); + border-bottom: 2px solid var(--cohesivo-dusk-black); } .md-typeset .tabbed-set > input:first-child:checked ~ .tabbed-labels > :first-child, @@ -544,7 +649,11 @@ a.external:not(.card):not(.notification__cta a):after { .md-typeset .tabbed-set > input:nth-child(18):checked ~ .tabbed-labels > :nth-child(18), .md-typeset .tabbed-set > input:nth-child(19):checked ~ .tabbed-labels > :nth-child(19), .md-typeset .tabbed-set > input:nth-child(20):checked ~ .tabbed-labels > :nth-child(20) { + /* The selected tab is raised: it shares the panel's white fill and drops its + bottom border so the two merge into one surface. */ color: var(--md-accent-fg-color); + background: #FFFFFF; + border-bottom-color: #FFFFFF; } .js .md-typeset .tabbed-labels:before { @@ -556,11 +665,11 @@ a.external:not(.card):not(.notification__cta a):after { } .md-clipboard:focus, .md-clipboard:hover { - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); } .md-typeset .headerlink:focus, .md-typeset .headerlink:hover, .md-typeset :target>.headerlink { - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); } /** Cards */ @@ -593,7 +702,7 @@ div.path { background-color: #FFFFFF; padding: 0.7rem; margin-bottom: 0.4rem; - border: 1px solid #E0E0E8; + border: 1px solid var(--cohesivo-snow); min-width: 230px; height: 240px; box-sizing: border-box; @@ -603,17 +712,32 @@ div.path { .cards div.card-wrapper div div, .path div.card-wrapper div div { - border: 1px solid #D4D4D4; + border: 1px solid var(--cohesivo-snow); border-radius: 5px; background-color: #FFFFFF; padding: 0.7rem; margin-bottom: 0.4rem; overflow: auto; + transition: border-color 0.2s, box-shadow 0.2s; } +/* Same hover treatment as the homepage info tiles and the product's cards: + neutral at rest, violet border over a violet-tinted shadow on hover. */ .cards div.card-wrapper div div:hover, .path div.card-wrapper div div:hover { - border-color: var(--ibexa-dusk-black); + border-color: var(--cohesivo-violet); + box-shadow: 0 22px 24px 0 rgba(119, 66, 213, 0.15); +} + +/* The whole card is one anchor — underline the title only, never the description. */ +.md-typeset .cards a.card, +.md-typeset .path a.card { + text-decoration: none; +} + +.md-typeset .cards a.card p.title, +.md-typeset .path a.card p.title { + text-decoration: underline; } .cards div.card-wrapper div div { max-width: 10rem; @@ -639,7 +763,7 @@ div.path { .cards p.description, .path p.description { - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); } #older-versions { @@ -655,7 +779,7 @@ div.path { gap: 0; margin: 12px 0 2rem 0; padding-bottom: 6px; - border-bottom: 1px solid var(--ibexa-snow); + border-bottom: 1px solid var(--cohesivo-snow); } .md-typeset .page-action-btn { @@ -666,7 +790,7 @@ div.path { background: transparent; border: none; text-decoration: none; - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); font-size: 13px; font-weight: 500; cursor: pointer; @@ -683,7 +807,7 @@ div.path { transform: translateY(-50%); height: 16px; width: 1px; - background: var(--ibexa-snow); + background: var(--cohesivo-snow); } .page-action-btn svg { @@ -715,7 +839,7 @@ div.path { } .page-action-btn.page-action-btn--info { - background: color-mix(in srgb, var(--turquoise-pearl) 25%, white); - border-color: color-mix(in srgb, var(--turquoise-pearl) 40%, white); - color: var(--sherpa-blue); + background: color-mix(in srgb, var(--cohesivo-info) 25%, white); + border-color: color-mix(in srgb, var(--cohesivo-info) 40%, white); + color: var(--cohesivo-info-dark); } diff --git a/docs/css/docs.switcher.css b/docs/css/docs.switcher.css index cb4e8073..d31418ee 100644 --- a/docs/css/docs.switcher.css +++ b/docs/css/docs.switcher.css @@ -22,7 +22,7 @@ .switcher__list dd { margin: 0; line-height: 1; - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); } .switcher__list dd:focus, @@ -109,7 +109,7 @@ width: auto; text-align: left; line-height: 1rem; - background-color: var(--ibexa-dusk-black); + background-color: var(--cohesivo-dusk-black); } .md-header__switcher .rst-versions .rst-current-version { diff --git a/docs/css/front-page.css b/docs/css/front-page.css index e15209b5..66486ff6 100644 --- a/docs/css/front-page.css +++ b/docs/css/front-page.css @@ -35,13 +35,13 @@ body { padding-right: 12px; } .md-typeset .front-page .info-tile { - border: 1px solid #ececf1; + border: 1px solid #ececec; border-radius: 12px; padding: 12px; display: flex; align-items: center; flex: 1; - box-shadow: 4px 22px 47px rgba(52, 116, 204, 0.05); + box-shadow: 4px 22px 47px rgba(119, 66, 213, 0.05); height: 100%; } .md-typeset .front-page .info-tile--link-card { @@ -52,13 +52,13 @@ body { margin-bottom: 0; } .md-typeset .front-page .info-tile--link-card h3 svg { - fill: #ae1164; + fill: #4e24a5; width: 16px; height: 16px; margin-right: 4px; } .md-typeset .front-page .info-tile--link-card a { - color: #131c26; + color: #0e1216; text-decoration: underline; } .md-typeset .front-page .info-tile__circle { @@ -77,7 +77,7 @@ body { height: 100%; font-size: 12px; line-height: 18px; - color: #71767c; + color: #6e7173; display: flex; flex-direction: column; justify-content: center; @@ -96,20 +96,20 @@ body { font-size: 22px; line-height: 26px; margin-top: 8px; - color: #131c26; + color: #0e1216; } .md-typeset .front-page .info-tile__details { display: flex; justify-content: flex-end; align-items: center; font-size: 10px; - color: #ae1164; + color: #4e24a5; } .md-typeset .front-page .info-tile__arrow-icon { width: 13px; height: 13px; margin-left: 4px; - fill: #ae1164; + fill: #4e24a5; } .md-typeset .front-page .info-tile h3 { font-size: 18px; @@ -123,7 +123,6 @@ body { .md-typeset .front-page .info-tile ul { margin: 0 0 0 12px; list-style: none; - margin-left: 24px; } .md-typeset .front-page .info-tile ul li { padding: 4px; @@ -132,9 +131,15 @@ body { .md-typeset .front-page .info-tile ul li + li { margin-top: 16px; } +.md-typeset .front-page .info-tile ul { + margin-left: 24px; +} +.md-typeset .front-page a.info-tile { + text-decoration: none; +} .md-typeset .front-page a.info-tile:hover { - border-color: #ae1164; - box-shadow: 0px 22px 24px 0px rgba(174, 17, 100, 0.1); + border-color: #4e24a5; + box-shadow: 0 22px 24px 0 rgba(119, 66, 213, 0.15); text-decoration: none; } .md-typeset .front-page .notifications { @@ -143,7 +148,7 @@ body { } .md-typeset .front-page .notification { border-radius: 12px; - color: #131c26; + color: #0e1216; font-size: 12px; padding: 32px; position: relative; @@ -163,11 +168,11 @@ body { line-height: 1.5; } .md-typeset .front-page .notification__content a { - color: #131c26; + color: #0e1216; text-decoration: underline; } .md-typeset .front-page .notification__content a:hover { - color: #3474cc; + color: #19628f; } .md-typeset .front-page .notification__cta { position: relative; @@ -180,7 +185,7 @@ body { padding: 15px 16px; border-radius: 12px; font-size: 14px; - color: #ae1164; + color: #4e24a5; } .md-typeset .front-page .notification__cta a + a { margin-left: 8px; @@ -204,19 +209,19 @@ body { padding-right: 240px; } .md-typeset .front-page .notification--latest-release .notification__cta a { - background: linear-gradient(to right, #db0032 0%, #ae1164 100%); + background: linear-gradient(90deg, #4e24a5 40%, #b497e8 100%); color: #ffffff; } .md-typeset .front-page .notification--lts-update { - border: 2px solid #e0e0e8; + border: 2px solid #e7e7e8; height: 100%; padding-top: 30px; } .md-typeset .front-page .notification--lts-update .notification__cta a:first-child { - border: 1px solid #ae1164; + border: 1px solid #4e24a5; } .md-typeset .front-page .accordion { - border: 1px solid #ececf1; + border: 1px solid #ececec; border-radius: 12px; padding: 12px; } @@ -229,7 +234,7 @@ body { box-shadow: none; } .md-typeset .front-page .accordion details[open] summary { - border-bottom: 1px solid #e0e0e8; + border-bottom: 1px solid #e7e7e8; padding-bottom: 16px; margin-bottom: 16px; } @@ -241,11 +246,11 @@ body { font-size: 14px; } .md-typeset .front-page .accordion details[open] .row a { - color: #131c26; + color: #0e1216; text-decoration: underline; } .md-typeset .front-page .accordion details[open] .row a:hover { - color: #3474cc; + color: #19628f; } .md-typeset .front-page .accordion details[open] .row ul { margin: 0 0 0 12px; @@ -293,5 +298,3 @@ body { max-width: 25%; } } - -/*# sourceMappingURL=front-page.css.map */ diff --git a/docs/css/instantsearch.css b/docs/css/instantsearch.css index 5d27f45a..2b249a92 100644 --- a/docs/css/instantsearch.css +++ b/docs/css/instantsearch.css @@ -46,33 +46,33 @@ footer.md-footer { } .md-content .ais-InstantSearch .ais-Hits-item + .ais-Hits-item { - border-top: 1px solid #E0E0E8; + border-top: 1px solid var(--cohesivo-snow); margin-top: 16px; padding-top: 16px; } .md-content .ais-InstantSearch .ais-Highlight-highlighted { - background-color: #ECF4FF; - color: #4191FF; + background-color: #E7DEF8; + color: #4E24A5; font-size: inherit; line-height: inherit; } .md-content .ais-InstantSearch .instantsearch__entry { display: block; - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); } .md-content .ais-InstantSearch .instantsearch__entry:hover, .md-content .ais-InstantSearch .instantsearch__entry:hover .instantsearch__entry-header, .md-content .ais-InstantSearch .instantsearch__entry:hover .instantsearch__entry-content { - color: var(--ibexa-jazzberry) + color: var(--cohesivo-violet) } .md-content .ais-InstantSearch .instantsearch__entry:hover mark, .md-content .ais-InstantSearch .instantsearch__entry:hover .instantsearch__entry-header mark, .md-content .ais-InstantSearch .instantsearch__entry:hover .instantsearch__entry-content mark { - color: var(--ibexa-jazzberry) + color: var(--cohesivo-violet) } .md-content .ais-InstantSearch .instantsearch__entry-header { @@ -90,7 +90,7 @@ footer.md-footer { } .md-content .ais-InstantSearch .instantsearch__entry-content { - color: #3B424A; + color: #3E4145; font-size: 14px; line-height: 21px; letter-spacing: 0.12px; @@ -139,7 +139,7 @@ footer.md-footer { font-size: 14px; line-height: 21px; letter-spacing: 0.12px; - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); height: 40px; min-width: 40px; display: flex; @@ -149,7 +149,7 @@ footer.md-footer { .md-content .ais-InstantSearch .ais-Pagination .ais-Pagination-item--selected .ais-Pagination-link, .md-content .ais-InstantSearch .ais-Pagination .ais-Pagination-link:hover { - background-color: #F3F3F6; + background-color: #F5F6F6; border-radius: 5px; } diff --git a/docs/css/navigation.css b/docs/css/navigation.css index 00c38f04..c4bb1032 100644 --- a/docs/css/navigation.css +++ b/docs/css/navigation.css @@ -49,7 +49,7 @@ font-weight: 700; text-overflow: ellipsis; overflow: hidden; - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); } /* Page TOC */ @@ -87,7 +87,7 @@ .md-nav--secondary li.level-1 a:focus { font-size: 16px; font-weight: 600; - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); } .md-nav--secondary li.level-2 { @@ -115,7 +115,7 @@ } .md-nav--secondary .md-nav__link--active { - border-left: 2px solid var(--ibexa-jazzberry); + border-left: 2px solid var(--cohesivo-violet); padding-left: 0.4rem; margin-left: -0.55rem; } @@ -227,7 +227,7 @@ } .md-nav--primary .level-4.md-nav__link--active { - border-left: 2px solid var(--ibexa-jazzberry); + border-left: 2px solid var(--cohesivo-violet); } .md-nav[data-md-level="3"] ul li { @@ -244,7 +244,7 @@ .md-nav--primary li label:focus, .md-nav--primary .level-4:hover, .md-nav--primary .level-4:focus { - color: var(--ibexa-jazzberry) !important; + color: var(--cohesivo-violet) !important; } .md-nav--primary>.md-nav__list>li:first-child { @@ -275,7 +275,10 @@ } .md-header__button.md-logo img { - width: inherit; + /* The Cohesivo lockup is icon + wordmark at ~4:1; constrain by height so it + fits the 56px header instead of inheriting the button width. */ + height: 32px; + width: auto; } .md-header__source { @@ -324,7 +327,7 @@ border: 1px solid var(--dark-grey); border-radius: 12px; font-size: 12px; - background-color: var(--ibexa-dusk-black); + background-color: var(--cohesivo-dusk-black); letter-spacing: 0.12px; margin-top: 3px; } @@ -404,7 +407,7 @@ ul.breadcrumbs li.breadcrumb-item { } ul.breadcrumbs li.breadcrumb-item-current { - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); font-weight: 600; } diff --git a/docs/css/pills.css b/docs/css/pills.css index 67b2c18e..184ea4ba 100644 --- a/docs/css/pills.css +++ b/docs/css/pills.css @@ -5,39 +5,39 @@ padding: 1px 8px; border: 1px solid; margin-right: 8px; - color: #A32768; + color: #4e24a5; } .pill--headless { - color: #C4234A; - border-color: #C4234A; + color: #ba2124; + border-color: #ba2124; } .pill--headless::after { content: "Headless"; } .pill--experience { - color: #D3822B; - border-color: #D3822B; + color: #a85000; + border-color: #a85000; } .pill--experience::after { content: "Experience"; } .pill--commerce { - color: #A32768; - border-color: #A32768; + color: #4e24a5; + border-color: #4e24a5; } .pill--commerce::after { content: "Commerce"; } .pill--lts-update { - color: #5DA7C0; - border-color: #5DA7C0; + color: #19628f; + border-color: #19628f; } .pill--lts-update::after { content: "LTS Update"; } .pill--new-feature { - color: #2C9445; - border-color: #2C9445; + color: #146d00; + border-color: #146d00; } .pill--new-feature::after { content: "New feature"; @@ -48,13 +48,10 @@ .pill--new { margin-right: 15px; align-self: center; - color: #d9e8ff; - color: #3562a0; + color: #19628f; text-transform: lowercase; } div.pills { float: right; } - -/*# sourceMappingURL=pills.css.map */ diff --git a/docs/css/search.css b/docs/css/search.css index 883da560..0fca0298 100644 --- a/docs/css/search.css +++ b/docs/css/search.css @@ -8,16 +8,16 @@ .md-header .md-search .algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content { background-color: transparent; - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); } .md-header .md-search .algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--wrapper * { - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); } .md-header .md-search .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--highlight { - background-color: #ECF4FF; - color: #4191FF !important; + background-color: #E7DEF8; + color: #4E24A5 !important; box-shadow: none; padding: 0; } @@ -28,7 +28,7 @@ .md-header .md-search .algolia-autocomplete .algolia-docsearch-suggestion:not(.algolia-docsearch-suggestion__main) { padding: 14px 0; - border-top: 1px solid #E0E0E8; + border-top: 1px solid var(--cohesivo-snow); } .md-header .md-search .algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header { @@ -42,7 +42,7 @@ padding: 0 40px; border: 0; background-color: #F2F2F5; - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); font-weight: 600; } @@ -60,7 +60,7 @@ text-align: left; padding: 0; margin: 0 40px; - color: var(--ibexa-dusk-black); + color: var(--cohesivo-dusk-black); } .md-header .md-search .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--title { @@ -74,7 +74,7 @@ float: none; width: 100%; text-align: left; - color: #3B424A; + color: #3E4145; font-size: 12px; line-height: 21px; letter-spacing: 0.12px; @@ -89,7 +89,7 @@ } .md-header .md-search .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--text { - color: #3B424A; + color: #3E4145; font-size: 14px; line-height: 21px; letter-spacing: 0.12px; @@ -128,7 +128,7 @@ } .md-header .md-search .algolia-autocomplete .search-page-link:hover { - color: var(--ibexa-jazzberry); + color: var(--cohesivo-violet); transition: color 125ms; } diff --git a/docs/images/arrow_down.svg b/docs/images/arrow_down.svg index 2491397d..44a0c13a 100644 --- a/docs/images/arrow_down.svg +++ b/docs/images/arrow_down.svg @@ -2,8 +2,8 @@ - - + + diff --git a/docs/images/background-gradient.svg b/docs/images/background-gradient.svg index 0d4e5708..cf31745b 100644 --- a/docs/images/background-gradient.svg +++ b/docs/images/background-gradient.svg @@ -10,8 +10,8 @@ - - + + diff --git a/docs/images/caret-double-back.svg b/docs/images/caret-double-back.svg index 7e3a53b1..0d856f5e 100644 --- a/docs/images/caret-double-back.svg +++ b/docs/images/caret-double-back.svg @@ -1,6 +1,6 @@ - + diff --git a/docs/images/caret-double-next.svg b/docs/images/caret-double-next.svg index 41d13ea6..b7a06ea2 100644 --- a/docs/images/caret-double-next.svg +++ b/docs/images/caret-double-next.svg @@ -1,6 +1,6 @@ - + diff --git a/docs/images/caret-down.svg b/docs/images/caret-down.svg index 36a9d2a5..4bebd0f1 100644 --- a/docs/images/caret-down.svg +++ b/docs/images/caret-down.svg @@ -1,3 +1,3 @@ - + diff --git a/docs/images/caret.svg b/docs/images/caret.svg index d8ec3209..a5cc7ea6 100644 --- a/docs/images/caret.svg +++ b/docs/images/caret.svg @@ -1,3 +1,3 @@ - + diff --git a/docs/images/check.svg b/docs/images/check.svg index 5c7c8c44..e06376f6 100644 --- a/docs/images/check.svg +++ b/docs/images/check.svg @@ -1 +1 @@ - + diff --git a/docs/images/cohesivo-logo.svg b/docs/images/cohesivo-logo.svg new file mode 100644 index 00000000..b7ecab22 --- /dev/null +++ b/docs/images/cohesivo-logo.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/ez-icons.svg b/docs/images/ez-icons.svg index 4ae23b0f..00ce0df1 100644 --- a/docs/images/ez-icons.svg +++ b/docs/images/ez-icons.svg @@ -97,7 +97,7 @@ - + @@ -107,7 +107,7 @@ - + diff --git a/docs/images/favicon.png b/docs/images/favicon.png index 8a6e7f53..6074c94f 100644 Binary files a/docs/images/favicon.png and b/docs/images/favicon.png differ diff --git a/docs/images/ibexa-dxp-logo.png b/docs/images/ibexa-dxp-logo.png deleted file mode 100644 index 81f08b8b..00000000 Binary files a/docs/images/ibexa-dxp-logo.png and /dev/null differ diff --git a/docs/images/icons.svg b/docs/images/icons.svg index 11c6f67d..be959bda 100644 --- a/docs/images/icons.svg +++ b/docs/images/icons.svg @@ -1,15 +1,15 @@ - + - - - + + + - + diff --git a/docs/images/minus.svg b/docs/images/minus.svg index 5334d011..c6e53ca5 100644 --- a/docs/images/minus.svg +++ b/docs/images/minus.svg @@ -1,3 +1,3 @@ - + diff --git a/docs/images/notification-latest-release.svg b/docs/images/notification-latest-release.svg index c5766a3f..529d7157 100644 --- a/docs/images/notification-latest-release.svg +++ b/docs/images/notification-latest-release.svg @@ -103,12 +103,12 @@ - - + + - - + + @@ -143,8 +143,8 @@ - - + + \ No newline at end of file diff --git a/docs/images/notification-lts-update.svg b/docs/images/notification-lts-update.svg index 212365ef..78ea75e2 100644 --- a/docs/images/notification-lts-update.svg +++ b/docs/images/notification-lts-update.svg @@ -4,12 +4,12 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/images/page_lg.svg b/docs/images/page_lg.svg index 7445daca..bb124d16 100644 --- a/docs/images/page_lg.svg +++ b/docs/images/page_lg.svg @@ -1,3 +1,3 @@ - + diff --git a/docs/images/plus.svg b/docs/images/plus.svg index 6213eefa..dce5c0cb 100644 --- a/docs/images/plus.svg +++ b/docs/images/plus.svg @@ -1,3 +1,3 @@ - + diff --git a/docs/index.md b/docs/index.md index 57174dae..d2d46ff9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,7 +6,7 @@
-
+
@@ -26,7 +26,7 @@
-
+
@@ -46,7 +46,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
diff --git a/mkdocs.yml b/mkdocs.yml index 098af4a8..85da3eb2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -151,7 +151,7 @@ theme: palette: primary: 'blue grey' accent: 'deep orange' - logo: 'images/ibexa-dxp-logo.png' + logo: 'images/cohesivo-logo.svg' extra: append_bootstrap: diff --git a/scss/_variables.scss b/scss/_variables.scss index b10c3396..e017c434 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -1,23 +1,62 @@ +// Cohesivo palette. +// +// Values mirror the product design system, converted from oklch() to sRGB hex: +// vendor/ibexa/admin-ui-assets/src/bundle/Resources/public/vendors/ids-assets/dist/scss/variables/_colors.scss +// +// Keep this file the single source of truth for colour in scss/. The hand-maintained +// stylesheets in docs/css/ mirror the same values as --cohesivo-* custom properties. + $transition-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1); $transition-duration: 0.4s; -$color-primary-main: #A32768; - -$color-dark-85-white: #DCDDDE; -$color-dark-100-white: #FFFFFF; - -$color-info-main: #5DA7C0; - -$color-success-main: #2C9445; - -$color-error-main: #C4234A; - -$color-warning-dark-01: #D3822B; - -$color-primary: #AE1164; - -$color-light: #E0E0E8; -$color-light-400: #ECECF1; - -$color-dark: #131C26; -$color-dark-400: #71767C; +// Primary — violet +$color-primary-100: #391b79; +$color-primary-80: #4e24a5; +$color-primary-60: #612dcd; +$color-primary-40: #7f53da; +$color-primary-5: #cfbef1; +$color-primary-0: #e7def8; + +// Primary alt — lighter violet, used for gradients and shadow tints +$color-primary-alt-80: #7742d5; +$color-primary-alt-40: #b497e8; + +// Neutral +$color-neutral-240: #0e1216; +$color-neutral-200: #3e4145; +$color-neutral-160: #6e7173; +$color-neutral-60: #e7e7e8; +$color-neutral-50: #ececec; +$color-neutral-30: #f5f6f6; +$color-neutral-10: #ffffff; + +// Semantic +$color-info-100: #003f63; +$color-info-80: #19628f; +$color-info-5: #edf2f7; + +$color-success-100: #146d00; +$color-success-80: #378f19; + +$color-error-80: #ba2124; + +$color-warning-110: #a85000; +$color-warning-80: #dc8004; +$color-warning-10: #fcefde; + +// Gradient — $gradient-primary-1 in the design system +$gradient-primary: linear-gradient(90deg, $color-primary-80 40%, $color-primary-alt-40 100%); + +// Shadows are tinted with primary-alt, matching ids-assets/.../_shadows.scss +$shadow-tile: 4px 22px 47px rgba($color-primary-alt-80, 0.05); +$shadow-tile-hover: 0 22px 24px 0 rgba($color-primary-alt-80, 0.15); + +// Aliases kept for readability at call sites +$color-primary: $color-primary-80; +$color-primary-main: $color-primary-80; +$color-dark: $color-neutral-240; +$color-dark-400: $color-neutral-160; +$color-light: $color-neutral-60; +$color-light-400: $color-neutral-50; +$color-dark-85-white: $color-neutral-60; +$color-dark-100-white: $color-neutral-10; diff --git a/scss/front-page.scss b/scss/front-page.scss index aa19cea5..e3d947d5 100644 --- a/scss/front-page.scss +++ b/scss/front-page.scss @@ -1,26 +1,4 @@ - -$ibexa-color-primary: #ae1164; - -$ibexa-color-danger: #db0032; - -$ibexa-color-info-700: #275799; -$ibexa-color-info-600: #3474cc; - -$ibexa-color-dark: #131c26; -$ibexa-color-dark-400: #71767c; - -$ibexa-color-light: #e0e0e8; -$ibexa-color-light-300: #f3f3f6; -$ibexa-color-light-400: #ececf1; - -$ibexa-color-white: #ffffff; - -$ibexa-color-complementary: #47bedb; -$ibexa-color-complementary-800: #1c4c58; -$ibexa-color-complementary-700: #2b7283; -$ibexa-color-complementary-300: #b5e5f0; -$ibexa-color-complementary-200: #daf2f7; -$ibexa-color-complementary-100: #ecf8fb; +@use 'variables'; @mixin list() { margin: 0 0 0 12px; @@ -79,13 +57,13 @@ body { } .info-tile { - border: 1px solid $ibexa-color-light-400; + border: 1px solid variables.$color-neutral-50; border-radius: 12px; padding: 12px; display: flex; align-items: center; flex: 1; - box-shadow: 4px 22px 47px rgba(52, 116, 204, 0.05); + box-shadow: variables.$shadow-tile; height: 100%; &--link-card { @@ -98,7 +76,7 @@ body { h3 { svg { - fill: $ibexa-color-primary; + fill: variables.$color-primary-80; width: 16px; height: 16px; margin-right: 4px; @@ -107,7 +85,7 @@ body { } a { - color: $ibexa-color-dark; + color: variables.$color-neutral-240; text-decoration: underline; } } @@ -129,7 +107,7 @@ body { height: 100%; font-size: 12px; line-height: 18px; - color: $ibexa-color-dark-400; + color: variables.$color-neutral-160; display: flex; flex-direction: column; justify-content: center; @@ -150,7 +128,7 @@ body { font-size: 22px; line-height: 26px; margin-top: 8px; - color: $ibexa-color-dark; + color: variables.$color-neutral-240; } } @@ -159,14 +137,14 @@ body { justify-content: flex-end; align-items: center; font-size: 10px; - color: $ibexa-color-primary; + color: variables.$color-primary-80; } &__arrow-icon { width: 13px; height: 13px; margin-left: 4px; - fill: $ibexa-color-primary; + fill: variables.$color-primary-80; } h3 { @@ -188,9 +166,12 @@ body { } a.info-tile { + // The whole tile is the link; underlining it would strike through the copy. + text-decoration: none; + &:hover { - border-color: $ibexa-color-primary; - box-shadow: 0px 22px 24px 0px rgba(174, 17, 100, 0.10); + border-color: variables.$color-primary-80; + box-shadow: variables.$shadow-tile-hover; text-decoration: none; } } @@ -202,7 +183,7 @@ body { .notification { border-radius: 12px; - color: $ibexa-color-dark; + color: variables.$color-neutral-240; font-size: 12px; padding: 32px; position: relative; @@ -223,11 +204,11 @@ body { } a { - color: $ibexa-color-dark; + color: variables.$color-neutral-240; text-decoration: underline; &:hover { - color: $ibexa-color-info-600; + color: variables.$color-info-80; } } } @@ -243,7 +224,7 @@ body { padding: 15px 16px; border-radius: 12px; font-size: 14px; - color: $ibexa-color-primary; + color: variables.$color-primary-80; & + a { margin-left: 8px; @@ -275,15 +256,15 @@ body { &__cta { a { - background: linear-gradient(to right, $ibexa-color-danger 0%, $ibexa-color-primary 100%); - color: $ibexa-color-white; + background: variables.$gradient-primary; + color: variables.$color-neutral-10; } } } } &--lts-update { - border: 2px solid $ibexa-color-light; + border: 2px solid variables.$color-neutral-60; height: calc(100%); padding-top: 30px; @@ -291,7 +272,7 @@ body { &__cta { a { &:first-child { - border: 1px solid $ibexa-color-primary; + border: 1px solid variables.$color-primary-80; } } } @@ -302,7 +283,7 @@ body { .accordion { $self: &; - border: 1px solid $ibexa-color-light-400; + border: 1px solid variables.$color-neutral-50; border-radius: 12px; padding: 12px; @@ -315,7 +296,7 @@ body { box-shadow: none; summary { - border-bottom: 1px solid $ibexa-color-light; + border-bottom: 1px solid variables.$color-neutral-60; padding-bottom: 16px; margin-bottom: 16px; @@ -331,11 +312,11 @@ body { font-size: 14px; a { - color: $ibexa-color-dark; + color: variables.$color-neutral-240; text-decoration: underline; &:hover { - color: $ibexa-color-info-600; + color: variables.$color-info-80; } } diff --git a/scss/pills.scss b/scss/pills.scss index f0843788..5292bab6 100644 --- a/scss/pills.scss +++ b/scss/pills.scss @@ -10,12 +10,14 @@ margin-right: 8px; color: variables.$color-primary-main; + // Tones are picked from the Cohesivo ramps at steps that clear WCAG AA (4.5:1) + // as text on white — the lighter -80 steps of warning and success do not. $types: ( - "headless": (variables.$color-error-main, "Headless"), - "experience": (variables.$color-warning-dark-01, "Experience"), - "commerce": (variables.$color-primary-main, "Commerce"), - "lts-update": (variables.$color-info-main, "LTS Update"), - "new-feature": (variables.$color-success-main, "New feature") + "headless": (variables.$color-error-80, "Headless"), + "experience": (variables.$color-warning-110, "Experience"), + "commerce": (variables.$color-primary-80, "Commerce"), + "lts-update": (variables.$color-info-80, "LTS Update"), + "new-feature": (variables.$color-success-100, "New feature") ); @each $name, $values in $types { @@ -41,8 +43,7 @@ &--new { margin-right: 15px; align-self: center; - color: #d9e8ff; - color: #3562a0; + color: variables.$color-info-80; text-transform: lowercase; } }