diff --git a/components/picker/package.json b/components/picker/package.json
index e2921d80472..ff8e4b42cde 100644
--- a/components/picker/package.json
+++ b/components/picker/package.json
@@ -21,7 +21,7 @@
"@spectrum-css/icon": ">=3",
"@spectrum-css/menu": ">=4",
"@spectrum-css/popover": ">=5 <=6",
- "@spectrum-css/tokens": ">=10.0.0"
+ "@spectrum-css/tokens": ">=11.0.0"
},
"devDependencies": {
"@spectrum-css/component-builder-simple": "^2.0.15",
diff --git a/components/pickerbutton/gulpfile.js b/components/pickerbutton/gulpfile.js
index 79fce384ab1..aff190165b0 100644
--- a/components/pickerbutton/gulpfile.js
+++ b/components/pickerbutton/gulpfile.js
@@ -1 +1 @@
-module.exports = require("@spectrum-css/component-builder");
+module.exports = require("@spectrum-css/component-builder-simple");
diff --git a/components/pickerbutton/index.css b/components/pickerbutton/index.css
index 77cf72e27c7..24107f08e07 100644
--- a/components/pickerbutton/index.css
+++ b/components/pickerbutton/index.css
@@ -10,57 +10,426 @@ OF ANY KIND, either express or implied. See the License for the specific languag
governing permissions and limitations under the License.
*/
-@import "../commons/basebutton.css";
-@import "../vars/css/components/spectrum-pickerbutton.css";
+.spectrum-PickerButton {
+ --spectrum-picker-button-height: var(--spectrum-component-height-100);
+ --spectrum-picker-button-width: var(--spectrum-component-height-100);
+ --spectrum-picker-button-gap: var(--spectrum-text-to-visual-50);
+
+ --spectrum-picker-button-padding: var(--spectrum-in-field-button-edge-to-fill);
+ --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-50);
+ --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-100);
+
+ --spectrum-picker-button-border-radius-rounded: var(
+ --spectrum-corner-radius-200
+ );
+
+ --spectrum-picker-button-icon-color: var(
+ --spectrum-neutral-content-color-default
+ );
+ --spectrum-picker-button-icon-color-hover: var(
+ --spectrum-neutral-content-color-hover
+ );
+ --spectrum-picker-button-icon-color-down: var(
+ --spectrum-neutral-content-color-down
+ );
+ --spectrum-picker-button-icon-color-key-focus: var(
+ --spectrum-neutral-content-color-key-focus
+ );
+
+ --spectrum-picker-button-font-color: var(
+ --spectrum-neutral-content-color-default
+ );
+ --spectrum-picker-button-font-color-hover: var(
+ --spectrum-neutral-content-color-hover
+ );
+ --spectrum-picker-button-font-color-down: var(
+ --spectrum-neutral-content-color-down
+ );
+ --spectrum-picker-button-font-color-key-focus: var(
+ --spectrum-neutral-content-color-key-focus
+ );
+
+ --spectrum-picker-button-font-family: var(--spectrum-sans-font-family-stack);
+ --spectrum-picker-button-font-style: var(--spectrum-default-font-style);
+ --spectrum-picker-button-font-weight: var(
+ --spectrum-body-sans-serif-font-weight
+ );
+ --spectrum-picker-button-font-size: var(--spectrum-font-size-100);
+
+ --spectrum-picker-button-background-animation-duration: var(
+ --spectrum-animation-duration-100
+ );
+
+ &:disabled {
+ --mod-picker-button-background-color: var(
+ --mod-picker-button-background-color-disabled,
+ var(--spectrum-disabled-background-color)
+ );
+ --mod-picker-button-background-color-hover: var(
+ --mod-picker-button-background-color-hover-disabled,
+ var(--spectrum-disabled-background-color)
+ );
+ --mod-picker-button-background-color-down: var(
+ --mod-picker-button-background-color-down-disabled,
+ var(--spectrum-disabled-background-color)
+ );
+ --mod-picker-button-border-color: var(
+ --mod-picker-button-border-color-disabled,
+ var(--spectrum-disabled-background-color)
+ );
+
+ --mod-picker-button-font-color: var(
+ --mod-picker-button-font-color-disabled,
+ var(--spectrum-disabled-content-color)
+ );
+ --mod-picker-button-font-color-hover: var(
+ --mod-picker-button-font-color-hover-disabled,
+ var(--spectrum-disabled-content-color)
+ );
+ --mod-picker-button-font-color-down: var(
+ --mod-picker-button-font-color-down-disabled,
+ var(--spectrum-disabled-content-color)
+ );
-@import "./pickerbutton-generated.css";
+ --mod-picker-button-icon-color: var(
+ --mod-picker-button-icon-color-disabled,
+ var(--spectrum-disabled-content-color)
+ );
+ --mod-picker-button-icon-color-hover: var(
+ --mod-picker-button-icon-color-hover-disabled,
+ var(--spectrum-disabled-content-color)
+ );
+ --mod-picker-button-icon-color-down: var(
+ --mod-picker-button-icon-color-down-disabled,
+ var(--spectrum-disabled-content-color)
+ );
+ }
+
+ &.spectrum-PickerButton--quiet {
+ --mod-picker-button-background-color: var(
+ --mod-picker-button-background-color-quiet,
+ transparent
+ );
+ --mod-picker-button-background-color-hover: var(
+ --mod-picker-button-background-color-hover-quiet,
+ transparent
+ );
+ --mod-picker-button-background-color-down: var(
+ --mod-picker-button-background-color-down-quiet,
+ transparent
+ );
+ --mod-picker-button-background-color-key-focus: var(
+ --mod-picker-button-background-color-key-focus-quiet,
+ transparent
+ );
+
+ --mod-picker-button-border-color: var(
+ --mod-picker-button-border-color-quiet,
+ transparent
+ );
+ }
+
+ &.spectrum-PickerButton--sizeS {
+ --spectrum-picker-button-height: var(--spectrum-component-height-75);
+ --spectrum-picker-button-width: var(--spectrum-component-height-75);
+ --spectrum-picker-button-label-padding: var(--spectrum-spacing-75);
+ --spectrum-picker-button-font-size: var(--spectrum-font-size-75);
+ --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-75);
+ }
+
+ &.spectrum-PickerButton--sizeL {
+ --spectrum-picker-button-height: var(--spectrum-component-height-200);
+ --spectrum-picker-button-width: var(--spectrum-component-height-200);
+ --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-200);
+ --spectrum-picker-button-font-size: var(--spectrum-font-size-200);
+ --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-200);
+ }
+
+ &.spectrum-PickerButton--sizeXL {
+ --spectrum-picker-button-height: var(--spectrum-component-height-300);
+ --spectrum-picker-button-width: var(--spectrum-component-height-300);
+ --spectrum-picker-button-label-padding: var(--spectrum-text-to-visual-300);
+ --spectrum-picker-button-font-size: var(--spectrum-font-size-300);
+ --spectrum-picker-button-fill-padding: var(--spectrum-field-edge-to-disclosure-icon-300);
+ }
+}
.spectrum-PickerButton {
- @inherit: %spectrum-BaseButton;
+ border-style: none;
+ background-color: transparent;
+ block-size: var(
+ --mod-picker-button-width,
+ var(--spectrum-picker-button-width)
+ );
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ box-sizing: border-box;
+ padding: var(
+ --mod-picker-button-padding,
+ var(--spectrum-picker-button-padding)
+ );
+
+ &:hover {
+ .spectrum-PickerButton-fill {
+ background-color: var(
+ --mod-picker-button-background-color-hover,
+ var(--spectrum-picker-button-background-color-hover)
+ );
+ }
+
+ .spectrum-PickerButton-label {
+ color: var(
+ --mod-picker-button-font-color-hover,
+ var(--spectrum-picker-button-font-color-hover)
+ );
+ }
- border-style: none;
- background-color: transparent;
+ .spectrum-PickerButton-icon {
+ color: var(
+ --mod-picker-button-icon-color-hover,
+ var(--spectrum-picker-button-icon-color-hover)
+ );
+ }
+ }
- display: flex;
- justify-content: center;
- align-items: center;
+ &:active,
+ &.is-open {
+ .spectrum-PickerButton-fill {
+ background-color: var(
+ --mod-picker-button-background-color-down,
+ var(--spectrum-picker-button-background-color-down)
+ );
+ }
- --spectrum-infieldbutton-border-color-override: initial;
+ .spectrum-PickerButton-label {
+ color: var(
+ --mod-picker-button-font-color-down,
+ var(--spectrum-picker-button-font-color-down)
+ );
+ }
+
+ .spectrum-PickerButton-icon {
+ color: var(
+ --mod-picker-button-icon-color-down,
+ var(--spectrum-picker-button-icon-color-down)
+ );
+ }
+ }
+
+ &:focus,
+ &.is-focused,
+ &:focus-visible,
+ &.is-keyboardFocused {
+ .spectrum-PickerButton-fill {
+ background-color: var(
+ --mod-picker-button-background-color-key-focus,
+ var(--spectrum-picker-button-background-color-key-focus)
+ );
+ }
+ .spectrum-PickerButton-label {
+ color: var(
+ --mod-picker-button-font-color-key-focus,
+ var(--spectrum-picker-button-font-color-key-focus)
+ );
+ }
+ .spectrum-PickerButton-icon {
+ color: var(
+ --mod-picker-button-icon-color-key-focus,
+ var(--spectrum-picker-button-icon-color-key-focus)
+ );
+ }
+ }
+}
+
+.spectrum-PickerButton--right {
+ .spectrum-PickerButton-fill {
+ border-end-start-radius: var(
+ --mod-picker-button-border-radius-sided,
+ var(--spectrum-picker-button-border-radius-sided)
+ );
+ border-start-start-radius: var(
+ --mod-picker-button-border-radius-sided,
+ var(--spectrum-picker-button-border-radius-sided)
+ );
+ }
+
+ &.spectrum-PickerButton--rounded {
+ .spectrum-PickerButton-fill {
+ border-end-start-radius: var(
+ --mod-picker-button-border-radius-rounded-sided,
+ var(--spectrum-picker-button-border-radius-rounded-sided)
+ );
+ border-start-start-radius: var(
+ --mod-picker-button-border-radius-rounded-sided,
+ var(--spectrum-picker-button-border-radius-rounded-sided)
+ );
+ }
+ }
+}
+
+.spectrum-PickerButton--left {
+ .spectrum-PickerButton-fill {
+ border-end-end-radius: var(
+ --mod-picker-button-border-radius-sided,
+ var(--spectrum-picker-button-border-radius-sided)
+ );
+ border-start-end-radius: var(
+ --mod-picker-button-border-radius-sided,
+ var(--spectrum-picker-button-border-radius-sided)
+ );
+ }
+
+ &.spectrum-PickerButton--rounded {
+ .spectrum-PickerButton-fill {
+ border-end-end-radius: var(
+ --mod-picker-button-border-radius-rounded-sided,
+ var(--spectrum-picker-button-border-radius-rounded-sided)
+ );
+ border-start-end-radius: var(
+ --mod-picker-button-border-radius-rounded-sided,
+ var(--spectrum-picker-button-border-radius-rounded-sided)
+ );
+ }
+ }
}
.spectrum-PickerButton-label {
- /* Be the biggest, but also shrink! */
- flex: 1 1 auto;
+ /* Be the biggest, but also shrink! */
+ flex: 1 1 auto;
+ color: var(
+ --mod-picker-button-font-color,
+ var(--spectrum-picker-button-font-color)
+ );
- white-space: nowrap;
- overflow: hidden;
+ white-space: nowrap;
+ overflow: hidden;
+ padding-block-end: var(
+ --mod-picker-button-label-padding,
+ var(--spectrum-picker-button-label-padding)
+ );
+ padding-block-start: var(
+ --mod-picker-button-label-padding,
+ var(--spectrum-picker-button-label-padding)
+ );
+
+ font-family: var(
+ --mod-picker-button-font-family,
+ var(--spectrum-picker-button-font-family)
+ );
+ font-style: var(
+ --mod-picker-button-font-style,
+ var(--spectrum-picker-button-font-style)
+ );
+ font-weight: var(
+ --mod-picker-button-font-weight,
+ var(--spectrum-picker-button-font-weight)
+ );
+ font-size: var(
+ --mod-picker-button-font-size,
+ var(--spectrum-picker-button-font-size)
+ );
}
.spectrum-PickerButton-fill {
- box-sizing: border-box;
- border-color: var(--spectrum-infieldbutton-border-color-override);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ block-size: 100%;
+ inline-size: 100%;
+ gap: var(--mod-picker-button-gap, var(--spectrum-picker-button-gap));
+
+ background-color: var(
+ --mod-picker-button-background-color,
+ var(--spectrum-picker-button-background-color)
+ );
+ border-color: var(
+ --mod-picker-button-border-color,
+ var(--spectrum-picker-button-border-color)
+ );
+ border-width: var(
+ --mod-picker-button-border-width,
+ var(--spectrum-picker-button-border-width)
+ );
+ border-style: solid;
+ padding: calc(var(--mod-picker-button-fill-padding, var(--spectrum-picker-button-fill-padding)) -
+ var(--mod-picker-button-padding, var(--spectrum-picker-button-padding)) -
+ var(
+ --mod-picker-button-border-width,
+ var(--spectrum-picker-button-border-width)
+ ));
- /* center icon */
- display: flex;
- align-items: center;
- justify-content: center;
+ border-end-end-radius: var(
+ --mod-picker-button-border-radius,
+ var(--spectrum-picker-button-border-radius)
+ );
+ border-end-start-radius: var(
+ --mod-picker-button-border-radius,
+ var(--spectrum-picker-button-border-radius)
+ );
+ border-start-end-radius: var(
+ --mod-picker-button-border-radius,
+ var(--spectrum-picker-button-border-radius)
+ );
+ border-start-start-radius: var(
+ --mod-picker-button-border-radius,
+ var(--spectrum-picker-button-border-radius)
+ );
- transition: border-color var(--spectrum-global-animation-duration-100) ease-in-out;
+ transition: border-color
+ var(
+ --mod-picker-button-background-animation-duration,
+ var(--spectrum-picker-button-background-animation-duration)
+ )
+ ease-in-out;
}
-.spectrum-PickerButton--uiicononly {
- .spectrum-PickerButton-fill {
- /* let icons position correctly */
- padding: 0 !important;
- }
+.spectrum-PickerButton-icon {
+ /* don't be small, ever */
+ flex-shrink: 0;
+ color: var(
+ --mod-picker-button-icon-color,
+ var(--spectrum-picker-button-icon-color)
+ );
}
-.spectrum-PickerButton-UIIcon {
- /* remove margin used for centering */
- margin: 0 !important;
+.spectrum-PickerButton--rounded {
+ .spectrum-PickerButton-fill {
+ border-end-end-radius: var(
+ --mod-picker-button-border-radius-rounded,
+ var(--spectrum-picker-button-border-radius-rounded)
+ );
+ border-end-start-radius: var(
+ --mod-picker-button-border-radius-rounded,
+ var(--spectrum-picker-button-border-radius-rounded)
+ );
+ border-start-end-radius: var(
+ --mod-picker-button-border-radius-rounded,
+ var(--spectrum-picker-button-border-radius-rounded)
+ );
+ border-start-start-radius: var(
+ --mod-picker-button-border-radius-rounded,
+ var(--spectrum-picker-button-border-radius-rounded)
+ );
+ }
}
-.spectrum-PickerButton-icon {
- /* don't be small, ever */
- flex-shrink: 0;
+.spectrum-PickerButton--uiicononly {
+ inline-size: var(
+ --mod-picker-button-height,
+ var(--spectrum-picker-button-height)
+ );
+ .spectrum-PickerButton-label {
+ display: none;
+ }
+ .spectrum-PickerButton-fill {
+ padding: 0px;
+ }
+}
+
+.spectrum-PickerButton--textuiicon {
+ .spectrum-PickerButton-fill {
+ inline-size: auto;
+ }
}
diff --git a/components/pickerbutton/metadata/mods.md b/components/pickerbutton/metadata/mods.md
new file mode 100644
index 00000000000..cf73c6a25c7
--- /dev/null
+++ b/components/pickerbutton/metadata/mods.md
@@ -0,0 +1,46 @@
+| Modifiable Custom Properties |
+| ------------------------------------------------------ |
+| `--mod-picker-button-background-animation-duration` |
+| `--mod-picker-button-background-color` |
+| `--mod-picker-button-background-color-disabled` |
+| `--mod-picker-button-background-color-down` |
+| `--mod-picker-button-background-color-down-disabled` |
+| `--mod-picker-button-background-color-down-quiet` |
+| `--mod-picker-button-background-color-hover` |
+| `--mod-picker-button-background-color-hover-disabled` |
+| `--mod-picker-button-background-color-hover-quiet` |
+| `--mod-picker-button-background-color-key-focus` |
+| `--mod-picker-button-background-color-key-focus-quiet` |
+| `--mod-picker-button-background-color-quiet` |
+| `--mod-picker-button-border-color` |
+| `--mod-picker-button-border-color-disabled` |
+| `--mod-picker-button-border-color-quiet` |
+| `--mod-picker-button-border-radius` |
+| `--mod-picker-button-border-radius-rounded` |
+| `--mod-picker-button-border-radius-rounded-sided` |
+| `--mod-picker-button-border-radius-sided` |
+| `--mod-picker-button-border-width` |
+| `--mod-picker-button-fill-padding` |
+| `--mod-picker-button-font-color` |
+| `--mod-picker-button-font-color-disabled` |
+| `--mod-picker-button-font-color-down` |
+| `--mod-picker-button-font-color-down-disabled` |
+| `--mod-picker-button-font-color-hover` |
+| `--mod-picker-button-font-color-hover-disabled` |
+| `--mod-picker-button-font-color-key-focus` |
+| `--mod-picker-button-font-family` |
+| `--mod-picker-button-font-size` |
+| `--mod-picker-button-font-style` |
+| `--mod-picker-button-font-weight` |
+| `--mod-picker-button-gap` |
+| `--mod-picker-button-height` |
+| `--mod-picker-button-icon-color` |
+| `--mod-picker-button-icon-color-disabled` |
+| `--mod-picker-button-icon-color-down` |
+| `--mod-picker-button-icon-color-down-disabled` |
+| `--mod-picker-button-icon-color-hover` |
+| `--mod-picker-button-icon-color-hover-disabled` |
+| `--mod-picker-button-icon-color-key-focus` |
+| `--mod-picker-button-label-padding` |
+| `--mod-picker-button-padding` |
+| `--mod-picker-button-width` |
diff --git a/components/pickerbutton/metadata/pickerbutton.yml b/components/pickerbutton/metadata/pickerbutton.yml
index ed4f33c8017..be4fbe0f6a6 100644
--- a/components/pickerbutton/metadata/pickerbutton.yml
+++ b/components/pickerbutton/metadata/pickerbutton.yml
@@ -4,7 +4,7 @@ SpectrumSiteSlug: https://spectrum.adobe.com/page/picker/
sections:
- name: Migration Guide
description: |
- ### Picker Button uses the [Quiet](pickerbutton.html#quiet) variant instead of loudness levels.
+ ### Picker button uses the [Quiet](pickerbutton.html#quiet) variant instead of loudness levels.
The Loudness level classes, `.spectrum-PickerButton--low`, `.spectrum-PickerButton--medium`, and `.spectrum-PickerButton--high`, have been removed.
@@ -13,6 +13,10 @@ sections:
The Loudness - Medium variant has been removed, so there is no equivalent.
+ ### .spectrum-PickerButton-UIIcon class removed
+
+ The `.spectrum-PickerButton-UIIcon` class no longer matches our naming convention. Both types of icons now use the `spectrum-PickerButton-icon` class
+
examples:
- id: pickerbutton-sizing
name: Sizing
@@ -23,8 +27,8 @@ examples:
@@ -35,8 +39,8 @@ examples:
@@ -47,8 +51,8 @@ examples:
@@ -59,8 +63,8 @@ examples:
@@ -73,8 +77,8 @@ examples:
@@ -85,8 +89,8 @@ examples:
@@ -94,20 +98,20 @@ examples:
- id: pickerbutton-icononly
name: UI icon only
markup: |
-