diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json index 4edc25510a..30b1a834ee 100644 --- a/.bundlewatch.config.json +++ b/.bundlewatch.config.json @@ -34,11 +34,11 @@ }, { "path": "./packages/orange/dist/css/ouds-web.css", - "maxSize": "65.5 kB" + "maxSize": "66 kB" }, { "path": "./packages/orange/dist/css/ouds-web.min.css", - "maxSize": "61.75 kB" + "maxSize": "62 kB" }, { "path": "./dist/js/ouds-web.bundle.js", diff --git a/packages/orange-compact/scss/tokens/_component.scss b/packages/orange-compact/scss/tokens/_component.scss index a853911be6..662b224c52 100644 --- a/packages/orange-compact/scss/tokens/_component.scss +++ b/packages/orange-compact/scss/tokens/_component.scss @@ -156,6 +156,11 @@ $ouds-button-space-padding-inline-end-icon-start: $ouds-space-padding-inline-3xl $ouds-button-space-padding-inline-icon-none: $ouds-space-padding-inline-4xlarge !default; $ouds-button-space-padding-inline-icon-start: $ouds-space-padding-inline-xlarge !default; $ouds-button-space-padding-inline-start-icon-end: $ouds-space-padding-inline-3xlarge !default; +// Manually added tokens for AI button +$ouds-button-color-border-primary: var(--#{$prefix}color-border-brand-primary) !default; +$ouds-button-color-border-secondary: $core-orange-color-decorative-shocking-pink-200 !default; +$ouds-button-color-border-tertiary: $core-orange-color-decorative-amethyst-400 !default; +$ouds-button-color-border-quaternary: $core-orange-color-decorative-sky-400 !default; // scss-docs-end ouds-component-button // Checkbox diff --git a/packages/orange-compact/scss/tokens/_composite.scss b/packages/orange-compact/scss/tokens/_composite.scss index baf2b56ede..6f66127303 100644 --- a/packages/orange-compact/scss/tokens/_composite.scss +++ b/packages/orange-compact/scss/tokens/_composite.scss @@ -77,6 +77,23 @@ $play-icon: url("data:image/svg+xml,") !default; $helper-icon: url("data:image/svg+xml,") !default; +// Alert +// icon tick-confirmation-fill v1.4 +$alert-icon-success: url("data:image/svg+xml,") !default; +// icon info-fill v1.4 +$alert-icon-info: url("data:image/svg+xml,") !default; +// icon warning-external-shape v1.4 +$alert-icon-warning-external: url("data:image/svg+xml,") !default; +// icon warning-internal-shape v1.4 +$alert-icon-warning-internal: url("data:image/svg+xml,") !default; +// icon important-fill v1.4 +$alert-icon-important: url("data:image/svg+xml,") !default; + +// Assistant button +// icon button assistant v1.5 +$btn-assistant-icon: url("data:image/svg+xml,") !default; +// $btn-assistant-background: linear-gradient(var(--#{$prefix}btn-bg, var(--#{$prefix}color-bg-primary))) padding-box, conic-gradient($ouds-button-color-border-secondary 0deg 82deg, $ouds-button-color-border-tertiary 82deg 118deg, $ouds-button-color-border-quaternary 118deg 242deg, $ouds-button-color-border-primary 242deg 360deg) border-box !default; + // Breadcrumb $breadcrumb-divider: url("data:image/svg+xml,") !default; // OUDS mod @@ -96,28 +113,16 @@ $form-check-radio-checked-bg-image: url("data:image/svg+xml,") !default; $form-switch-checked-bg-image: url("data:image/svg+xml,") !default; -// Alert -// icon tick-confirmation-fill v1.4 -$alert-icon-success: url("data:image/svg+xml,") !default; -// icon info-fill v1.4 -$alert-icon-info: url("data:image/svg+xml,") !default; -// icon warning-external-shape v1.4 -$alert-icon-warning-external: url("data:image/svg+xml,") !default; -// icon warning-internal-shape v1.4 -$alert-icon-warning-internal: url("data:image/svg+xml,") !default; -// icon important-fill v1.4 -$alert-icon-important: 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; - // Navigation button // icon button previous v1.4 $btn-previous-icon: url("data:image/svg+xml,") !default; // icon button next v1.4 $btn-next-icon: 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/packages/orange/scss/tokens/_component.scss b/packages/orange/scss/tokens/_component.scss index 85e2d72648..bf294fcfdb 100644 --- a/packages/orange/scss/tokens/_component.scss +++ b/packages/orange/scss/tokens/_component.scss @@ -156,6 +156,11 @@ $ouds-button-space-padding-inline-end-icon-start: $ouds-space-padding-inline-3xl $ouds-button-space-padding-inline-icon-none: $ouds-space-padding-inline-4xlarge !default; $ouds-button-space-padding-inline-icon-start: $ouds-space-padding-inline-xlarge !default; $ouds-button-space-padding-inline-start-icon-end: $ouds-space-padding-inline-3xlarge !default; +// Manually added tokens for AI button +$ouds-button-color-border-primary: var(--#{$prefix}color-border-brand-primary) !default; +$ouds-button-color-border-secondary: $core-orange-color-decorative-shocking-pink-200 !default; +$ouds-button-color-border-tertiary: $core-orange-color-decorative-amethyst-400 !default; +$ouds-button-color-border-quaternary: $core-orange-color-decorative-sky-400 !default; // scss-docs-end ouds-component-button // Checkbox diff --git a/packages/orange/scss/tokens/_composite.scss b/packages/orange/scss/tokens/_composite.scss index baf2b56ede..6f66127303 100644 --- a/packages/orange/scss/tokens/_composite.scss +++ b/packages/orange/scss/tokens/_composite.scss @@ -77,6 +77,23 @@ $play-icon: url("data:image/svg+xml,") !default; $helper-icon: url("data:image/svg+xml,") !default; +// Alert +// icon tick-confirmation-fill v1.4 +$alert-icon-success: url("data:image/svg+xml,") !default; +// icon info-fill v1.4 +$alert-icon-info: url("data:image/svg+xml,") !default; +// icon warning-external-shape v1.4 +$alert-icon-warning-external: url("data:image/svg+xml,") !default; +// icon warning-internal-shape v1.4 +$alert-icon-warning-internal: url("data:image/svg+xml,") !default; +// icon important-fill v1.4 +$alert-icon-important: url("data:image/svg+xml,") !default; + +// Assistant button +// icon button assistant v1.5 +$btn-assistant-icon: url("data:image/svg+xml,") !default; +// $btn-assistant-background: linear-gradient(var(--#{$prefix}btn-bg, var(--#{$prefix}color-bg-primary))) padding-box, conic-gradient($ouds-button-color-border-secondary 0deg 82deg, $ouds-button-color-border-tertiary 82deg 118deg, $ouds-button-color-border-quaternary 118deg 242deg, $ouds-button-color-border-primary 242deg 360deg) border-box !default; + // Breadcrumb $breadcrumb-divider: url("data:image/svg+xml,") !default; // OUDS mod @@ -96,28 +113,16 @@ $form-check-radio-checked-bg-image: url("data:image/svg+xml,") !default; $form-switch-checked-bg-image: url("data:image/svg+xml,") !default; -// Alert -// icon tick-confirmation-fill v1.4 -$alert-icon-success: url("data:image/svg+xml,") !default; -// icon info-fill v1.4 -$alert-icon-info: url("data:image/svg+xml,") !default; -// icon warning-external-shape v1.4 -$alert-icon-warning-external: url("data:image/svg+xml,") !default; -// icon warning-internal-shape v1.4 -$alert-icon-warning-internal: url("data:image/svg+xml,") !default; -// icon important-fill v1.4 -$alert-icon-important: 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; - // Navigation button // icon button previous v1.4 $btn-previous-icon: url("data:image/svg+xml,") !default; // icon button next v1.4 $btn-next-icon: 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/packages/sosh/scss/tokens/_component-colors-custom-props.scss b/packages/sosh/scss/tokens/_component-colors-custom-props.scss index aed916e409..0774bb18ef 100644 --- a/packages/sosh/scss/tokens/_component-colors-custom-props.scss +++ b/packages/sosh/scss/tokens/_component-colors-custom-props.scss @@ -8,6 +8,7 @@ @include color-mode(light, true) { --#{$prefix}button-color-bg-brand-pressed: #{$core-sosh-color-magenta-500}; --#{$prefix}button-color-bg-brand-loading: #{$core-sosh-color-magenta-500}; + --#{$prefix}button-color-border-quaternary: #{$core-ouds-color-opacity-black-680}; --#{$prefix}button-color-content-brand-pressed: #{$core-ouds-color-functional-white}; --#{$prefix}button-color-content-brand-loading: #{$core-ouds-color-functional-white}; --#{$prefix}button-mono-color-bg-default-hover: #{$core-ouds-color-opacity-black-680}; @@ -64,6 +65,7 @@ @include color-mode(dark, true) { --#{$prefix}button-color-bg-brand-pressed: #{$core-sosh-color-blue-duck-light-800}; --#{$prefix}button-color-bg-brand-loading: #{$core-sosh-color-blue-duck-light-800}; + --#{$prefix}button-color-border-quaternary: #{$core-ouds-color-opacity-white-200}; --#{$prefix}button-color-content-brand-pressed: #{$core-ouds-color-functional-black}; --#{$prefix}button-color-content-brand-loading: #{$core-ouds-color-functional-black}; --#{$prefix}button-mono-color-bg-default-hover: #{$core-ouds-color-opacity-white-800}; diff --git a/packages/sosh/scss/tokens/_component.scss b/packages/sosh/scss/tokens/_component.scss index 0359b5e73d..61ab8b8e33 100644 --- a/packages/sosh/scss/tokens/_component.scss +++ b/packages/sosh/scss/tokens/_component.scss @@ -156,6 +156,11 @@ $ouds-button-space-padding-inline-end-icon-start: $ouds-space-padding-inline-3xl $ouds-button-space-padding-inline-icon-none: $ouds-space-padding-inline-4xlarge !default; $ouds-button-space-padding-inline-icon-start: $ouds-space-padding-inline-xlarge !default; $ouds-button-space-padding-inline-start-icon-end: $ouds-space-padding-inline-3xlarge !default; +// Manually added tokens for AI button +$ouds-button-color-border-primary: var(--#{$prefix}color-border-brand-secondary) !default; +$ouds-button-color-border-secondary: var(--#{$prefix}color-border-brand-primary) !default; +$ouds-button-color-border-tertiary: var(--#{$prefix}color-border-brand-tertiary) !default; +$ouds-button-color-border-quaternary: var(--#{$prefix}button-color-border-quaternary) !default; // scss-docs-end ouds-component-button // Checkbox diff --git a/packages/sosh/scss/tokens/_composite.scss b/packages/sosh/scss/tokens/_composite.scss index 5805dd981c..382575dc27 100644 --- a/packages/sosh/scss/tokens/_composite.scss +++ b/packages/sosh/scss/tokens/_composite.scss @@ -68,6 +68,23 @@ $play-icon: url("data:image/svg+xml,") !default; $helper-icon: url("data:image/svg+xml,") !default; +// Alert +// icon tick-confirmation-fill v1.4 +$alert-icon-success: url("data:image/svg+xml,") !default; +// icon info-fill v1.4 +$alert-icon-info: url("data:image/svg+xml,") !default; +// icon warning-external-shape v1.4 +$alert-icon-warning-external: url("data:image/svg+xml,") !default; +// icon warning-internal-shape v1.4 +$alert-icon-warning-internal: url("data:image/svg+xml,") !default; +// icon important-fill v1.4 +$alert-icon-important: url("data:image/svg+xml,") !default; + +// Assistant button +// icon button assistant v1.5 +$btn-assistant-icon: url("data:image/svg+xml,") !default; +// $btn-assistant-background: linear-gradient(var(--#{$prefix}btn-bg, var(--#{$prefix}color-bg-primary))) padding-box, conic-gradient($ouds-button-color-border-secondary 0deg 82deg, $ouds-button-color-border-tertiary 82deg 118deg, $ouds-button-color-border-quaternary 118deg 242deg, $ouds-button-color-border-primary 242deg 360deg) border-box !default; + // Breadcrumb $breadcrumb-divider: url("data:image/svg+xml,") !default; // OUDS mod @@ -87,28 +104,16 @@ $form-check-radio-checked-bg-image: url("data:image/svg+xml,") !default; $form-switch-checked-bg-image: url("data:image/svg+xml,") !default; -// Alert -// icon tick-confirmation-fill v1.4 -$alert-icon-success: url("data:image/svg+xml,") !default; -// icon info-fill v1.4 -$alert-icon-info: url("data:image/svg+xml,") !default; -// icon warning-external-shape v1.4 -$alert-icon-warning-external: url("data:image/svg+xml,") !default; -// icon warning-internal-shape v1.4 -$alert-icon-warning-internal: url("data:image/svg+xml,") !default; -// icon important-fill v1.4 -$alert-icon-important: 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; - // Navigation button // icon button previous v1.4 $btn-previous-icon: url("data:image/svg+xml,") !default; // icon button next v1.4 $btn-next-icon: 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/scss/_buttons.scss b/scss/_buttons.scss index b471ae7703..86247d28b2 100644 --- a/scss/_buttons.scss +++ b/scss/_buttons.scss @@ -60,6 +60,7 @@ display: inline-flex; // OUDS mod: instead of `inline-block` flex-shrink: 0; + gap: var(--#{$prefix}btn-icon-gap); align-items: center; // OUDS mod justify-content: center; // OUDS mod min-width: var(--#{$prefix}btn-min-width); // OUDS mod @@ -187,7 +188,6 @@ flex-shrink: 0; width: 1em; height: 1em; - margin-right: var(--#{$prefix}btn-icon-gap); overflow: hidden; font-size: var(--#{$prefix}btn-icon-size); line-height: 1; @@ -495,29 +495,23 @@ .btn-previous { --#{$prefix}btn-padding-start: #{$ouds-button-space-padding-inline-chevron-start}; --#{$prefix}btn-padding-end: #{$ouds-button-space-padding-inline-end-icon-start}; + --#{$prefix}btn-icon-gap: #{$ouds-button-space-column-gap-chevron}; &::before { content: ""; mask-image: $btn-previous-icon; } - - &:not(.btn-icon)::before { - margin-right: $ouds-button-space-column-gap-chevron; - } } .btn-next { --#{$prefix}btn-padding-start: #{$ouds-button-space-padding-inline-start-icon-end}; --#{$prefix}btn-padding-end: #{$ouds-button-space-padding-inline-chevron-end}; + --#{$prefix}btn-icon-gap: #{$ouds-button-space-column-gap-chevron}; &::after { content: ""; mask-image: $btn-next-icon; } - - &:not(.btn-icon)::after { - margin-left: $ouds-button-space-column-gap-chevron; - } } .btn-previous::before, @@ -527,3 +521,42 @@ background-color: currentcolor; } +.btn-assistant { + --#{$prefix}btn-padding-start: #{$ouds-button-space-padding-inline-icon-start}; + --#{$prefix}btn-padding-end: #{$ouds-button-space-padding-inline-start-icon-end}; + --#{$prefix}btn-interaction-border-width: #{$ouds-button-border-width-default-interaction}; + --#{$prefix}btn-color: #{$ouds-button-mono-color-content-default-enabled}; + --#{$prefix}btn-bg: initial; + --#{$prefix}btn-hover-color: #{$ouds-button-color-content-default-hover}; + --#{$prefix}btn-active-color: #{$ouds-button-color-content-default-pressed}; + --#{$prefix}btn-disabled-color: #{$ouds-button-color-content-default-disabled}; + --#{$prefix}btn-focus-color: #{$ouds-button-color-content-default-focus}; + --#{$prefix}btn-loading-color: #{$ouds-button-color-content-default-loading}; + + &::before { + width: var(--#{$prefix}btn-icon-size); + height: var(--#{$prefix}btn-icon-size); + content: ""; + background-color: currentcolor; + mask-image: $btn-assistant-icon; + } + + background: linear-gradient(var(--#{$prefix}btn-bg, var(--#{$prefix}color-bg-primary))) padding-box, conic-gradient($ouds-button-color-border-secondary 0deg 82deg, $ouds-button-color-border-tertiary 82deg 118deg, $ouds-button-color-border-quaternary 118deg 242deg, $ouds-button-color-border-primary 242deg 360deg) border-box; + background-origin: border-box; + border-color: transparent; + + &:hover, + &:active, + &:focus-visible { + border-color: transparent; + } + + &:disabled:not(&.loading-indeterminate, &.loading-determinate) { + background: initial; + // border-color: transparent; + } + + &.btn-icon { + --#{$prefix}btn-border-radius: 50%; + } +} diff --git a/site/data/components-details.ts b/site/data/components-details.ts index a1cca06d11..6a7619815b 100644 --- a/site/data/components-details.ts +++ b/site/data/components-details.ts @@ -3,6 +3,13 @@ import { getConfig } from '@libs/config' import { getVersionedDocsPath } from '@libs/path' export const componentsDetails: ComponentCardData[] = [ + { + name: 'Assistant button', + slug: 'assistant-button', + link: 'buttons#assistant-button', + category: 'Actions', + snippet: `` + }, { name: 'Alert message', slug: 'alert-message', diff --git a/site/src/content/docs/components/buttons.mdx b/site/src/content/docs/components/buttons.mdx index 898c647645..cd24d03581 100644 --- a/site/src/content/docs/components/buttons.mdx +++ b/site/src/content/docs/components/buttons.mdx @@ -7,6 +7,7 @@ toc: true types: - Button - Navigation button + - Assistant button --- import { getData } from '@libs/data' @@ -22,7 +23,7 @@ import { getMode } from '@libs/sass-variables' ### Component types -