` or ``). *If possible, display a text that semantically describes the purpose of the tags*, otherwise add an `aria-label` to the container that explains the tags' function.
-
+
Mobile coverage:
diff --git a/site/src/content/docs/forms/select-input.mdx b/site/src/content/docs/forms/select-input.mdx
new file mode 100644
index 0000000000..bdf23e4f2e
--- /dev/null
+++ b/site/src/content/docs/forms/select-input.mdx
@@ -0,0 +1,477 @@
+---
+title: Select input
+description: Customize the native `
`} />
+
+When there’s a value already defined, ``s will automatically adjust to their floated position.
+
+
+
+ Selected select example
+
+
+
+
+
+
+
+ `} />
+
+## Variants
+
+### Outlined
+
+Add `.select-input-container-outlined` for a minimalist input with a transparent background and a visible stroke outlining the field. This style may be interesting for contexts other than form pages:
+* When selects need to feel lightweight and unobtrusive
+* In a selection/filtering feature in a product catalog
+
+
+
+ Outlined select example
+
+
+
+
+
+
+
+ `} />
+
+
+### Rounded
+
+Add `.select-input-container-rounded` for a finish with rounded corners.
+
+
+
+ Rounded select example
+
+
+
+
+
+
+
+
+
+
+ Rounded outlined select example
+
+
+
+
+
+
+
+
`} />
+
+
+### Leading icon
+
+Add an icon to help indicate the purpose of the input by placing an `
`} />
-### Loading
-
-Add the `.loading-indeterminate` or `.loading-determinate` class on a `.select-input-field` to display a loader instead of the arrow.
-
-You must have the svg already in the `.select-input-container` to make it work like charm. You may also have a status span to display the loading message on assistive technologies.
-
-When the loading starts, you will have to:
-- Add the class `.loading-indeterminate` (for an unknown loading time) or `.loading-determinate` (for a known loading time) to the select to provide the appropriate styles and animation.
-- For a known loading time, provide a CSS variable `--bs-loading-time` to set the loading time. For example, add `style="--bs-loading-time: 5s;"` to the select, for a 5 seconds loading.
-- Update regularly the status message `` containing the loading message.
-
-Optionally, you may disable the select to prevent any further change.
-
-At the end of the loading, you should:
-
-- Set a final status message in ``, indicating the loading has ended.
-- Remove the class `.loading-indeterminate` or `.loading-determinate` to restore the select’s look.
-- Put the focus back on the select to ensure similar behavior across browsers and not lose the user after changes.
-
-
-
`} />
-
{/* ## Specific attributes
### Multiple
From 24f33d486d28bb0759e7dcd3686b4fb839ec57de Mon Sep 17 00:00:00 2001
From: Louis-Maxime Piton
Date: Mon, 15 Dec 2025 10:55:23 +0100
Subject: [PATCH 04/12] Fix CI
---
.bundlewatch.config.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json
index f12f4fba2d..6976c541ad 100644
--- a/.bundlewatch.config.json
+++ b/.bundlewatch.config.json
@@ -2,11 +2,11 @@
"files": [
{
"path": "./packages/orange/dist/css/ouds-web-bootstrap.css",
- "maxSize": "72.0 kB"
+ "maxSize": "72.25 kB"
},
{
"path": "./packages/orange/dist/css/ouds-web-bootstrap.min.css",
- "maxSize": "68.5 kB"
+ "maxSize": "68.75 kB"
},
{
"path": "./packages/orange/dist/css/ouds-web-grid.css",
@@ -34,11 +34,11 @@
},
{
"path": "./packages/orange/dist/css/ouds-web.css",
- "maxSize": "62.5 kB"
+ "maxSize": "62.75 kB"
},
{
"path": "./packages/orange/dist/css/ouds-web.min.css",
- "maxSize": "58.75 kB"
+ "maxSize": "59.0 kB"
},
{
"path": "./dist/js/ouds-web.bundle.js",
From 6e5f73658c6679879d59bcbea5058c1bd057d7f2 Mon Sep 17 00:00:00 2001
From: Vincent Prothais
Date: Mon, 15 Dec 2025 09:14:21 +0100
Subject: [PATCH 05/12] feat: Add Orange font-face for Helvetica Neue plus
medium font weight (#3255)
---
packages/orange/scss/tokens/_composite.scss | 12 ++++++++----
packages/sosh/scss/tokens/_composite.scss | 6 +++---
scss/_maps.scss | 3 ++-
.../_ouds-web-bootstrap-utilities.test.scss | 8 ++++++++
site/src/content/docs/content/reboot.mdx | 7 +++++--
site/src/content/docs/content/typography.mdx | 2 +-
.../docs/migrations/migration-from-boosted.mdx | 4 +++-
site/src/content/docs/migrations/migration.mdx | 4 ++++
site/src/content/docs/utilities/text.mdx | 12 ++++++++++++
9 files changed, 46 insertions(+), 12 deletions(-)
diff --git a/packages/orange/scss/tokens/_composite.scss b/packages/orange/scss/tokens/_composite.scss
index c257053f35..7b88900760 100644
--- a/packages/orange/scss/tokens/_composite.scss
+++ b/packages/orange/scss/tokens/_composite.scss
@@ -14,15 +14,19 @@ $ouds-elevation-sticky: $ouds-elevation-x-sticky $ouds-elevation-y-sticky $ouds-
// Font
+// stylelint-disable value-keyword-case, scss/dollar-variable-colon-space-after
+// scss-docs-start ouds-composite-font-sans-serif
$custom-font-name: "HelvNeueOrange" !default;
// Map of CDN URLs for custom font, with weight as keys
-$custom-font-cdn-urls: () !default;
+$custom-font-cdn-urls: (
+ $ouds-font-weight-system-web-default: "https://mastermedia.dam-broadcast.com/pm_12751_490_490071-myaimdgylf--HelveticaNeue-Default.woff2",
+ $ouds-font-weight-system-web-moderate: "https://mastermedia.dam-broadcast.com/pm_12751_490_490074-tqtijgs7e4--HelveticaNeue-Moderate.woff2",
+ $ouds-font-weight-system-web-strong: "https://mastermedia.dam-broadcast.com/pm_12751_490_490077-wejriti88u--HelveticaNeue-Strong.woff2"
+) !default;
-// stylelint-disable value-keyword-case, scss/dollar-variable-colon-space-after
-// scss-docs-start ouds-composite-font-sans-serif
$ouds-font-family-sans-serif-stack:
- // Custom OUDS font
+ // OUDS custom font
$custom-font-name,
// Older macOS and iOS
"Helvetica Neue",
diff --git a/packages/sosh/scss/tokens/_composite.scss b/packages/sosh/scss/tokens/_composite.scss
index fc1185d4c7..ab228b1f30 100644
--- a/packages/sosh/scss/tokens/_composite.scss
+++ b/packages/sosh/scss/tokens/_composite.scss
@@ -14,6 +14,8 @@ $ouds-elevation-sticky: $ouds-elevation-x-sticky $ouds-elevation-y-sticky $ouds-
// Font
+// stylelint-disable value-keyword-case, scss/dollar-variable-colon-space-after
+// scss-docs-start ouds-composite-font-sans-serif
$custom-font-name: "Sosh" !default;
// Map of CDN URLs for custom font, with weight as keys
@@ -22,10 +24,8 @@ $custom-font-cdn-urls: (
$ouds-font-weight-system-web-strong: "https://mastermedia.dam-broadcast.com/pm_12751_481_481815-qd9nelrt7o--Sosh-Bold.woff2"
) !default;
-// stylelint-disable value-keyword-case, scss/dollar-variable-colon-space-after
-// scss-docs-start ouds-composite-font-sans-serif
$ouds-font-family-sans-serif-stack:
- // Custom OUDS font
+ // OUDS custom font
$custom-font-name,
// Basic web fallback
Arial,
diff --git a/scss/_maps.scss b/scss/_maps.scss
index 92a7d3cb0e..b12201cc6a 100644
--- a/scss/_maps.scss
+++ b/scss/_maps.scss
@@ -120,7 +120,8 @@ $ouds-font-sizes: (
$ouds-font-weights: (
normal: $ouds-font-weight-system-web-default,
- bold: $ouds-font-weight-system-web-strong
+ medium: $ouds-font-weight-system-web-moderate,
+ bold: $ouds-font-weight-system-web-strong,
) !default;
$ouds-icon-sizes: ("small", "medium", "large") !default;
diff --git a/scss/tests/customize/_ouds-web-bootstrap-utilities.test.scss b/scss/tests/customize/_ouds-web-bootstrap-utilities.test.scss
index 68ad35ff7a..320901b115 100644
--- a/scss/tests/customize/_ouds-web-bootstrap-utilities.test.scss
+++ b/scss/tests/customize/_ouds-web-bootstrap-utilities.test.scss
@@ -3500,6 +3500,10 @@ $utilities: ();
font-weight: 400 !important;
}
+ .fw-medium {
+ font-weight: 500 !important;
+ }
+
.fw-bold {
font-weight: 700 !important;
}
@@ -14315,6 +14319,10 @@ $utilities: ();
font-weight: 400 !important;
}
+ .fw-medium {
+ font-weight: 500 !important;
+ }
+
.fw-bold {
font-weight: 700 !important;
}
diff --git a/site/src/content/docs/content/reboot.mdx b/site/src/content/docs/content/reboot.mdx
index 5582acd83b..5472fdc6db 100644
--- a/site/src/content/docs/content/reboot.mdx
+++ b/site/src/content/docs/content/reboot.mdx
@@ -50,14 +50,17 @@ The `:root` and child elements are updated to provide better page-wide defaults.
- The `:root` children also sets a global `font-family`, `font-weight`, `line-height`, and `color`. This is inherited later by some form elements to prevent font inconsistencies.
- For safety, the `:root` children has a declared `background-color`, defaulting to `#fff`.
-## Native font stack
+## Font stack
+OUDS Web uses custom fonts loaded from a CDN, to ensure optimum text rendering on every device and OS, and to benefit from the browser's cache.
-OUDS Web utilizes a "native font stack" or "system font stack" for optimum text rendering on every device and OS. These system fonts have been designed specifically with today’s devices in mind, with improved rendering on screens, variable font support, and more. Read more about [native font stacks in this *Smashing Magazine* article](https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/).
+OUDS Web utilizes a “native font stack” or “system font stack” — as a fallback for custom font — for optimum text rendering on every device and OS. These system fonts have been designed specifically with today’s devices in mind, with improved rendering on screens, variable font support, and more. Read more about [native font stacks in this *Smashing Magazine* article](https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/).
This `font-family` is applied to the `` and automatically inherited globally throughout OUDS Web. To switch the global `font-family`, update `$font-family-base` and recompile OUDS Web.
+The font faces are generated directly in the `_root.scss` file, based on the `$custom-font-cdn-urls` map variable. You can customize these URLs if needed (for example, to avoid loading resources from the Internet).
+
The following `font-family` is applied on every code basis element. To switch the global `font-family`, update `$font-family-code` and recompile OUDS Web.
diff --git a/site/src/content/docs/content/typography.mdx b/site/src/content/docs/content/typography.mdx
index 7b2c904217..07d21401ac 100644
--- a/site/src/content/docs/content/typography.mdx
+++ b/site/src/content/docs/content/typography.mdx
@@ -10,7 +10,7 @@ toc: true
OUDS Web sets basic global display, typography, and link styles. When more control is needed, check out the [textual utility classes]([[docsref:/utilities/text]]).
-- Use a [native font stack]([[docsref:/content/reboot#native-font-stack]]) that selects the best `font-family` for each OS and device.
+- Use a [font stack]([[docsref:/content/reboot#font-stack]]) of a custom font with native fonts fallback that selects the best `font-family` for each OS and device.
- For a more inclusive and accessible type scale, we use the browser’s default root `font-size` (typically 16px) so visitors can customize their browser defaults as needed.
- Use the `$font-family-base`, `$font-size-base`, and `$line-height-base` attributes as our typographic base applied to the `:root` children.
- Use `max-width` on all font references for readability reasons. If you want to get rid of the `max-width`, please make sure to use our `.mw-none` [width utility]([[docsref:/utilities/sizing]]).
diff --git a/site/src/content/docs/migrations/migration-from-boosted.mdx b/site/src/content/docs/migrations/migration-from-boosted.mdx
index 9c7d34c37c..b7039c02a7 100644
--- a/site/src/content/docs/migrations/migration-from-boosted.mdx
+++ b/site/src/content/docs/migrations/migration-from-boosted.mdx
@@ -42,13 +42,15 @@ From now on, OUDS Web won’t embed Bootstrap elements that are not part of Oran
## Fonts
-OUDS Web doesn’t use the Helvetica Neue font. Instead, it uses the system font stack. This means that the font will be slightly different depending on the operating system and browser being used.
+OUDS Web doesn’t provide Helvetica Neue font files. Instead, it loads the font from a CDN in order to share the cached files between every project using OUDS Web.
Technically, it means that you can get rid of the following things:
- Helvetica Neue woff2 files: `fonts/HelvNeue55_W1G.woff2`, `fonts/HelvNeue75_W1G.woff2`, `fonts/HelveticaNeueW20-55Roman.woff2`, and `fonts/HelveticaNeueW20-75Bold.woff2`.
- `orange-helvetica.*.css` file (default, RTL, or minified version).
- If you were customizing your Sass compilation, you can remove the `@import "orange-helvetica";` line from your Sass files if it was there.
+Read more about the [font stack]([[docsref:/content/reboot#font-stack]]) for more details.
+
## Content styles
### Typography
diff --git a/site/src/content/docs/migrations/migration.mdx b/site/src/content/docs/migrations/migration.mdx
index 245ba3bdda..8a97d7825a 100644
--- a/site/src/content/docs/migrations/migration.mdx
+++ b/site/src/content/docs/migrations/migration.mdx
@@ -12,6 +12,10 @@ toc: true
+### Core
+
+- New OUDS Web now uses custom fonts loaded from a CDN for consistency in visual rendering across environments. Read more about the [font stack]([[docsref:/content/reboot#font-stack]]).
+
### Forms
#### Checkboxes
diff --git a/site/src/content/docs/utilities/text.mdx b/site/src/content/docs/utilities/text.mdx
index 8ef09cdf7e..4638683714 100644
--- a/site/src/content/docs/utilities/text.mdx
+++ b/site/src/content/docs/utilities/text.mdx
@@ -150,8 +150,20 @@ Customize your available `font-size`s by modifying the `$font-sizes` Sass map.
Quickly change the `font-weight` of text with these utilities. `font-weight` utilities are abbreviated as `.fw-*`.
+
+
+The medium font-weight can only be used with `label` and `body` [font references]([[docsref:/content/typography/#regular-texts]]).
+
+
+Bold text.
+
diff --git a/site/src/content/docs/components/buttons.mdx b/site/src/content/docs/components/buttons.mdx
index 0ef2bc4269..7c03eb6b85 100644
--- a/site/src/content/docs/components/buttons.mdx
+++ b/site/src/content/docs/components/buttons.mdx
@@ -66,7 +66,7 @@ OUDS Web offers a few variations to use on [colored backgrounds]([[docsref:/util
- Negative buttons should never be used on colored background.
-
+
@@ -74,7 +74,7 @@ OUDS Web offers a few variations to use on [colored backgrounds]([[docsref:/util
-
+
@@ -150,7 +150,7 @@ You don’t need to apply any spacing utility on the icon to get consistent spac
diff --git a/site/src/content/docs/content/reboot.mdx b/site/src/content/docs/content/reboot.mdx
index 5472fdc6db..c88a7b5804 100644
--- a/site/src/content/docs/content/reboot.mdx
+++ b/site/src/content/docs/content/reboot.mdx
@@ -123,18 +123,18 @@ Placeholder links—those without an `href`—are targeted with a more specific
On colored backgrounds, links should have a different style. Visited links don’t have a specific style on colored backgrounds.
-
diff --git a/site/src/content/docs/helpers/clearfix.mdx b/site/src/content/docs/helpers/clearfix.mdx
index f7b66a66e5..7231cf90cb 100644
--- a/site/src/content/docs/helpers/clearfix.mdx
+++ b/site/src/content/docs/helpers/clearfix.mdx
@@ -18,7 +18,7 @@ Use in HTML:
The mixin source code:
-
+
Use the mixin in SCSS:
@@ -28,7 +28,7 @@ Use the mixin in SCSS:
The following example shows how the clearfix can be used. Without the clearfix the wrapping div would not span around the buttons which would cause a broken layout.
-
+
diff --git a/site/src/content/docs/migrations/migration-from-boosted.mdx b/site/src/content/docs/migrations/migration-from-boosted.mdx
index b7039c02a7..498fbe09f5 100644
--- a/site/src/content/docs/migrations/migration-from-boosted.mdx
+++ b/site/src/content/docs/migrations/migration-from-boosted.mdx
@@ -423,18 +423,18 @@ See [our new Text Area page]([[docsref:/forms/text-area]]) for more information.
1. `.bg-transparent` stays the same
2. `.bg-white` → `.bg-always-white`
3. `.bg-black` → `.bg-always-black`
- 4. `.bg-primary` → `.bg-brand-primary`
+ 4. `.bg-primary` → `.bg-surface-brand-primary`
5. `.bg-primary-subtle` (that shouldn’t have been used) → `.bg-tertiary`
6. `.bg-secondary` → `.bg-emphasized` or in some rare cases `.bg-status-neutral-emphasized`
7. `.bg-secondary-subtle` (that shouldn’t have been used) → `.bg-secondary`
- 8. `.bg-success` → `.bg-status-positive-emphasized` or in some rare cases `.bg-status-positive-muted`
- 9. `.bg-success-subtle` (that shouldn’t have been used) → `.bg-status-positive-muted`
- 10. `.bg-danger` → `.bg-status-negative-emphasized` or in some rare cases `.bg-status-negative-muted`
- 11. `.bg-danger-subtle` (that shouldn’t have been used) → `.bg-status-negative-muted`
- 12. `.bg-info` → `.bg-status-info-emphasized` or in some rare cases `.bg-status-info-muted`
- 13. `.bg-info-subtle` (that shouldn’t have been used) → `.bg-status-positive-muted`
- 14. `.bg-warning` → `.bg-status-warning-emphasized`, `.bg-status-accent-emphasized` or in some rare cases `.bg-status-warning-muted`, `.bg-status-accent-muted`
- 15. `.bg-warning-subtle` (that shouldn’t have been used) → `.bg-status-warning-muted` or `.bg-status-accent-muted` depending on your context
+ 8. `.bg-success` → `.bg-surface-status-positive-emphasized` or in some rare cases `.bg-surface-status-positive-muted`
+ 9. `.bg-success-subtle` (that shouldn’t have been used) → `.bg-surface-status-positive-muted`
+ 10. `.bg-danger` → `.bg-surface-status-negative-emphasized` or in some rare cases `.bg-surface-status-negative-muted`
+ 11. `.bg-danger-subtle` (that shouldn’t have been used) → `.bg-surface-status-negative-muted`
+ 12. `.bg-info` → `.bg-surface-status-info-emphasized` or in some rare cases `.bg-surface-status-info-muted`
+ 13. `.bg-info-subtle` (that shouldn’t have been used) → `.bg-surface-status-positive-muted`
+ 14. `.bg-warning` → `.bg-surface-status-warning-emphasized`, `.bg-surface-status-accent-emphasized` or in some rare cases `.bg-surface-status-warning-muted`, `.bg-surface-status-accent-muted`
+ 15. `.bg-warning-subtle` (that shouldn’t have been used) → `.bg-surface-status-warning-muted` or `.bg-surface-status-accent-muted` depending on your context
16. `.bg-body` → `.bg-primary`
17. `.bg-body-secondary` → `.bg-secondary` or in some rare cases `.bg-opacity-lower` or `.bg-opacity-lowest`
18. `.bg-body-tertiary` (that shouldn’t have been used) → `.bg-secondary`
diff --git a/site/src/content/docs/migrations/migration.mdx b/site/src/content/docs/migrations/migration.mdx
index 8a97d7825a..a0bea22bd1 100644
--- a/site/src/content/docs/migrations/migration.mdx
+++ b/site/src/content/docs/migrations/migration.mdx
@@ -46,16 +46,35 @@ toc: true
### Utilities
-#### Opacity
-
-- New `.opacity-weakest` is now available.
+#### Background
-- Warning Opacity levels values have been changed. Read more in our [opacity page]([[docsref:/utilities/opacity]]).
+- Breaking Some background utilities have been renamed as follows:
+ - `.bg-brand-primary` is renamed to `.bg-surface-brand-primary`
+ - `.bg-brand-secondary` is renamed to `.bg-surface-brand-secondary`
+ - `.bg-brand-tertiary` is renamed to `.bg-surface-brand-tertiary`
+ - `.bg-status-accent-emphasized` is renamed to `.bg-surface-status-accent-emphasized`
+ - `.bg-status-accent-muted` is renamed to `.bg-surface-status-accent-muted`
+ - `.bg-status-positive-emphasized` is renamed to `.bg-surface-status-positive-emphasized`
+ - `.bg-status-positive-muted` is renamed to `.bg-surface-status-positive-muted`
+ - `.bg-status-negative-emphasized` is renamed to `.bg-surface-status-negative-emphasized`
+ - `.bg-status-negative-muted` is renamed to `.bg-surface-status-negative-muted`
+ - `.bg-status-warning-emphasized` is renamed to `.bg-surface-status-warning-emphasized`
+ - `.bg-status-warning-muted` is renamed to `.bg-surface-status-warning-muted`
+ - `.bg-status-info-emphasized` is renamed to `.bg-surface-status-info-emphasized`
+ - `.bg-status-info-muted` is renamed to `.bg-surface-status-info-muted`
+
+- New New background utilities: `.bg-surface-primary`, `.bg-surface-secondary`, `.bg-surface-tertiary`, `.bg-surface-inverse-high`, `.bg-surface-inverse-low`. Read more in our [background page]([[docsref:/utilities/background]]).
#### Borders
- New Border color `.border-minimal` has been added.
+#### Opacity
+
+- New `.opacity-weakest` is now available.
+
+- Warning Opacity levels values have been changed. Read more in our [opacity page]([[docsref:/utilities/opacity]]).
+
## v0.6.0
diff --git a/site/src/content/docs/utilities/background.mdx b/site/src/content/docs/utilities/background.mdx
index 6dab44d998..967b3135a5 100644
--- a/site/src/content/docs/utilities/background.mdx
+++ b/site/src/content/docs/utilities/background.mdx
@@ -8,7 +8,7 @@ toc: true
import { getConfig } from '@libs/config'
import { getData } from '@libs/data'
-import { allTokens, hasToken } from '@libs/sass-variables'
+import { allTokens } from '@libs/sass-variables'
@@ -16,10 +16,18 @@ import { allTokens, hasToken } from '@libs/sass-variables'
Background utilities like `.bg-*` are generated from our `$ouds-backgrounds` Sass map and respond to color modes.
-Similar to the contextual text color classes, set the background of an element to any contextual class. Background utilities **do not set `color`**, so depending on the cases you’ll want to use an additional:
+Similar to the contextual text color classes, set the background of an element to any contextual class. Some background utilities will set the text color for you, some will not.
+
+Utilities that set the text color: `.bg-surface-brand-primary`, `.bg-surface-brand-secondary`, `.bg-surface-brand-tertiary`, `.bg-surface-status-accent-emphasized`, `.bg-surface-status-accent-muted`, `.bg-surface-status-positive-emphasized`,`.bg-surface-status-positive-muted`, `.bg-surface-status-negative-emphasized`, `.bg-surface-status-negative-muted`, `.bg-surface-status-warning-emphasized`, `.bg-surface-status-warning-muted`, `.bg-surface-status-info-emphasized`,`.bg-surface-status-info-muted`, `.bg-always-black`, `.bg-always-white`.
+
+All the other background utilities **will not set `color`**, depending on the cases you’ll want to use an additional:
* `[data-bs-theme]` [color mode attribute]([[docsref:/customize/color-modes#how-to-use]]) is the best option most of the time and moreover when the element using a background utility contains complex sub-elements such as components that need to respond to color modes. It also sets the right color for texts inside
* `.text-*` [color utilities]([[docsref:/utilities/colors]]) when the background color and color couple are accessible together in light and dark mode, and there is no components inside
+
+ You can find more information on the OUDS background colors in the [design guidelines](https://unified-design-system.orange.com/472794e18/p/217ac6-color/t/b3d025a22f)
+
+
Here are the equivalent Bootstrap background that you shouldn’t be using. Prefer using the classes above according to [our design system]([[config:ouds.web]]).
@@ -45,9 +53,9 @@ Please note that we use `[data-bs-theme]` attribute on a child element to avoid
token.name.match(/\$ouds-color-surface-.*-light/))
+ ...allTokens.filter(token => token.name.match(/\$ouds-color-bg-.*-light/))
.map(token => {
- const bgName = token.name.match(/\$ouds-color-surface-(.*)-light/)[1]
+ const bgName = token.name.match(/\$ouds-color-bg-(.*)-light/)[1]
const themesArray = allTokens.filter(allToken => {
return allToken.name.match(`modes-on-(bg-)?${bgName}-(dark|light)`)
}).map(token => token.compiledValue)
@@ -60,6 +68,22 @@ Please note that we use `[data-bs-theme]` attribute on a child element to avoid
: 'root-inverted'
return `
`
@@ -111,9 +147,9 @@ We also provide some opacity backgrounds that should only be used in very specif
`,
- ...allTokens.filter(token => token.name.match(/\$ouds-color-surface-.*-light/))
+ ...allTokens.filter(token => token.name.match(/\$ouds-color-bg-.*-light/))
.map(token => {
- const bgName = token.name.match(/\$ouds-color-surface-(.*)-light/)[1]
+ const bgName = token.name.match(/\$ouds-color-bg-(.*)-light/)[1]
const themesArray = allTokens.filter(allToken => {
return allToken.name.match(`modes-on-(bg-)?${bgName}-(dark|light)`)
}).map(token => token.compiledValue)
@@ -122,6 +158,18 @@ We also provide some opacity backgrounds that should only be used in very specif
: 'light'
return `
`,
@@ -184,11 +248,27 @@ We also provide some opacity backgrounds that should only be used in very specif
In OUDS Web, we have some backgrounds that are a bit specific because they can take only few components like buttons, links and texts. For accessibility reasons we remove the color of these components.
-`.bg-brand-primary`,{getConfig().brand !== 'orange' ? <>.bg-brand-secondary, .bg-brand-tertiary> : ''} `.bg-status-accent-emphasized`, `.bg-status-warning-emphasized`, `.bg-status-negative-emphasized`, `.bg-status-positive-emphasized` and `.bg-status-info-emphasized` are considered as colored backgrounds.
+`.bg-surface-brand-primary`,{getConfig().brand !== 'orange' ? <>.bg-surface-brand-secondary, .bg-surface-brand-tertiary> : ''} `.bg-surface-status-accent-emphasized`, `.bg-surface-status-warning-emphasized`, `.bg-surface-status-negative-emphasized`, `.bg-surface-status-positive-emphasized` and `.bg-surface-status-info-emphasized` are considered as colored backgrounds.
- (token.name.match(/\$ouds-color-bg-/) || token.name.match(/\$ouds-color-surface-/)) && token.name.match(/-light/) && (token.name.match(/-brand/) || token.name.match(/status-.*-emphasized/)) && !token.name.match(/-neutral/) && token.compiledValue).map(token => {
+ (token.name.match(/\$ouds-color-surface-brand.*-light/) && token.compiledValue)).map(token => {
+ const brandName = token.name.match(/\$ouds-color-surface-brand-(.*)-light/)[1]
+ const themesArray = allTokens.filter(allToken => {
+ return allToken.name.match(`modes-on-brand-${brandName}-(dark|light)`)
+ }).map(token => token.compiledValue)
+ const theme = themesArray[0].includes('dark')
+ ? themesArray[1].includes('light')
+ ? 'root'
+ : 'dark'
+ : themesArray[1].includes('light')
+ ? 'light'
+ : 'root-inverted'
+ return `
`
+ })
+ ]} />
+
+## Multiple backgrounds
+
+Sometimes it will be necessary to layer two background colors on top of each other. This can happen when designers opt to have two fill color on a container for example if the parent container have a specific background and we want to opacify a card on top of it. To achieve this with OUDS Web you will need two containers with the specified background color utility.
+
+
+
`} />
-d-block
+d-block
d-block`} />
## Hiding elements
diff --git a/site/src/content/docs/utilities/opacity.mdx b/site/src/content/docs/utilities/opacity.mdx
index ffa272d949..6d51269e76 100644
--- a/site/src/content/docs/utilities/opacity.mdx
+++ b/site/src/content/docs/utilities/opacity.mdx
@@ -16,13 +16,13 @@ The `opacity` property sets the opacity level for an element. The opacity level
Set the opacity of an element using `.opacity-{value}` utilities.
-
-
-
-
-
-
- `} />
+
+
+
+
+
+
+ `} />
```html
...
@@ -39,11 +39,11 @@ The `opacity` property sets the opacity level for an element. The opacity level
Set the `opacity` of an element using `.opacity-{value}` utilities.
-
-
-
-
- `} />
+
+
+
+
+ `} />
```html
...
diff --git a/site/src/content/docs/utilities/text.mdx b/site/src/content/docs/utilities/text.mdx
index 4638683714..5e79751f55 100644
--- a/site/src/content/docs/utilities/text.mdx
+++ b/site/src/content/docs/utilities/text.mdx
@@ -34,7 +34,7 @@ Note that we don’t provide utility classes for justified text. While, aestheti
Wrap text with a `.text-wrap` class.
-
+
This text should wrap.
`} />
From 8ee52f1c9e736f3b273b6a8c33c4f38f030cf4ba Mon Sep 17 00:00:00 2001
From: Samuel Collin
Date: Mon, 15 Dec 2025 15:06:29 +0100
Subject: [PATCH 07/12] fix: update input invalid accessibility
---
site/src/content/docs/forms/select-input.mdx | 10 ++++-----
site/src/content/docs/forms/text-area.mdx | 14 ++++++-------
site/src/content/docs/forms/text-input.mdx | 22 ++++++++++----------
3 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/site/src/content/docs/forms/select-input.mdx b/site/src/content/docs/forms/select-input.mdx
index 829154a1b1..269e505eaa 100644
--- a/site/src/content/docs/forms/select-input.mdx
+++ b/site/src/content/docs/forms/select-input.mdx
@@ -260,13 +260,13 @@ Add the `readonly` boolean attribute on an input to prevent modification of the
To display an invalid select, add `.is-invalid` to a `.select-input-field` within the `.select-input-container`. Please take a look at our [Validation page to learn more]([[docsref:/forms/validation]]).
-For accessibility purposes, the invalid state should be associated with a `.error-text` as a sibling of a `.select-input-container` and related to it with an `aria-labelledby` attribute when displayed. Note that the `.error-text` will replace the helper text, so it should be descriptive enough to convey the error.
+For accessibility purposes, the invalid state should be associated with a `.error-text` as a sibling of a `.select-input-container` and related to it with an `aria-describedby` attribute when displayed. Note that the `.error-text` will replace the helper text, so it should be descriptive enough to convey the error Note that the `.error-text` will replace the helper text, so it should be descriptive enough to convey the error and you must dynamically replace the `aria-describedby` attribute when the select input becomes invalid.
Select example with error
-
+
@@ -287,7 +287,7 @@ For accessibility purposes, the invalid state should be associated with a `.erro
`} />
From 23277704d98aabb61a8bc01fc557e9debe2621c3 Mon Sep 17 00:00:00 2001
From: Samuel Collin
Date: Mon, 15 Dec 2025 17:47:44 +0100
Subject: [PATCH 11/12] fix: aria-describedby again
---
site/src/content/docs/forms/text-area.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/site/src/content/docs/forms/text-area.mdx b/site/src/content/docs/forms/text-area.mdx
index 35da69dd4f..5d92eaec0e 100644
--- a/site/src/content/docs/forms/text-area.mdx
+++ b/site/src/content/docs/forms/text-area.mdx
@@ -171,8 +171,8 @@ For accessibility purposes, the invalid state should be associated with a `.erro
- Additional comments
-
+ Additional comments
+
Please be concise and limit your comment to 180 characters.
From 3089a8146f14854d39b4516de0de5e64953ff1cd Mon Sep 17 00:00:00 2001
From: Louis-Maxime Piton
Date: Thu, 18 Dec 2025 15:46:47 +0100
Subject: [PATCH 12/12] Proposal
---
packages/orange/scss/tokens/_composite.scss | 4 ----
site/src/content/docs/forms/select-input.mdx | 12 ++++++------
site/src/content/docs/forms/text-area.mdx | 8 ++++----
site/src/content/docs/forms/text-input.mdx | 8 ++++----
4 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/packages/orange/scss/tokens/_composite.scss b/packages/orange/scss/tokens/_composite.scss
index fb72044940..c404e08da9 100644
--- a/packages/orange/scss/tokens/_composite.scss
+++ b/packages/orange/scss/tokens/_composite.scss
@@ -112,10 +112,6 @@ $alert-icon-important: url("data:image/svg+xml,") !default;
$select-input-expanded-chevron: url("data:image/svg+xml,") !default;
-// Select input
-$select-input-chevron: url("data:image/svg+xml,") !default;
-$select-input-expanded-chevron: url("data:image/svg+xml,") !default;
-
//// SVG used several times
$svg-as-custom-props: (
"chevron": $chevron-icon,
diff --git a/site/src/content/docs/forms/select-input.mdx b/site/src/content/docs/forms/select-input.mdx
index 73d3bddef9..a588378493 100644
--- a/site/src/content/docs/forms/select-input.mdx
+++ b/site/src/content/docs/forms/select-input.mdx
@@ -165,7 +165,7 @@ If the helper text is not sufficient, it’s possible to offer the user an addit
To display a helper link below selects, use a standard small link [with `.link` and `.link-small` classes]([[docsref:/components/links#sizes]]) as a sibling of a `.select-input-container`.
-Helper link should be explicitly labelled using the `aria-labelledby` attribute in which you must combine the helper link id and the related select input label id. This will ensure that assistive technologies—such as screen readers—will announce this helper link in relation with the select input. We also recommend adding a `.visually-hidden` span inside the link to provide additional context about the link purpose in relation with the select input.
+Helper link should be explicitly labelled using the `aria-labelledby` attribute in which you must combine the helper link id and the related select input label id. This will ensure that assistive technologies—such as screen readers—will announce this helper link in relation with the select input. We also recommend adding a `.visually-hidden` span inside the link to coordinate the link content and the label.
@@ -182,7 +182,7 @@ Helper link should be explicitly labelled using the `aria-labelledby` attribute
Choose a number.
diff --git a/site/src/content/docs/forms/text-area.mdx b/site/src/content/docs/forms/text-area.mdx
index b387048fa3..5b481ff95d 100644
--- a/site/src/content/docs/forms/text-area.mdx
+++ b/site/src/content/docs/forms/text-area.mdx
@@ -91,7 +91,7 @@ If the helper text is not sufficient, it’s possible to offer the user an addit
To display a helper link below text areas, use a standard small link [with `.link` and `.link-small` classes]([[docsref:/components/links#sizes]]) as a sibling of a `.text-area-container`.
-Helper link should be explicitly described using the `aria-labelledby` attribute in which you must combine the helper link id and the related text area label id. This will ensure that assistive technologies—such as screen readers—will announce this helper link in relation with the text area. We also recommend adding a `.visually-hidden` span inside the link to provide additional context about the link purpose in relation with the text area.
+Helper link should be explicitly described using the `aria-labelledby` attribute in which you must combine the helper link id and the related text area label id. This will ensure that assistive technologies—such as screen readers—will announce this helper link in relation with the text area. We also recommend adding a `.visually-hidden` span inside the link to coordinate the link content and the label.
@@ -103,7 +103,7 @@ Helper link should be explicitly described using the `aria-labelledby` attribute
Please be concise and limit your comment to 180 characters.
- More information on additional comments
+ More information on
@@ -112,7 +112,7 @@ Helper link should be explicitly described using the `aria-labelledby` attribute
`} />
diff --git a/site/src/content/docs/forms/text-input.mdx b/site/src/content/docs/forms/text-input.mdx
index aa8f6cf4a7..9fd1e0c58d 100644
--- a/site/src/content/docs/forms/text-input.mdx
+++ b/site/src/content/docs/forms/text-input.mdx
@@ -188,7 +188,7 @@ If the helper text is not sufficient, it's possible to offer the user an additio
To display a helper link below inputs, use a standard small link [with `.link` and `.link-small` classes]([[docsref:/components/links#sizes]]) as a sibling of a `.text-input-container`.
-Helper link should be explicitly described using the `aria-labelledby` attribute in which you must combine the helper link id and the related text input label id. This will ensure that assistive technologies—such as screen readers—will announce this helper link in relation with the input. We also recommend adding a `.visually-hidden` span inside the link to provide additional context about the link purpose in relation with the input.
+Helper link should be explicitly described using the `aria-labelledby` attribute in which you must combine the helper link id and the related text input label id. This will ensure that assistive technologies—such as screen readers—will announce this helper link in relation with the input. We also recommend adding a `.visually-hidden` span inside the link to coordinate the link content and the label.
@@ -200,7 +200,7 @@ Helper link should be explicitly described using the `aria-labelledby` attribute
Please describe your feedback in a few words.
- More information on sending feedback
+ More information on
@@ -209,7 +209,7 @@ Helper link should be explicitly described using the `aria-labelledby` attribute