Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cosmetic(pie-css): PEW-109 interactive-states mixin #2230

Open
wants to merge 20 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
0b76b91
feat(pie-css): PEW-109 interactiveStates mixin that supports dark mode
dandel10n Feb 14, 2025
f9eab37
cosmetic(pie-icon-button): PEW-109 mixin usage update
dandel10n Feb 14, 2025
cfc6f49
feat(browserslist-config-pie): PEW-109 wip
dandel10n Feb 14, 2025
ac80bef
cosmetic(pie-card): PEW-109 new interactive-states mixin usage
Feb 17, 2025
88ac910
cosmetic(pie-chip): PEW-109 new interactive-states mixin usage
Feb 17, 2025
fe97d25
cosmetic(pie-tag): PEW-109 new interactive-states mixin usage
dandel10n Feb 18, 2025
67cff41
cosmetic(pie-checkbox): PEW-109 hover and active styles update
dandel10n Feb 18, 2025
aae3c3b
cosmetic(pie-radio): PEW-109 hover and active styles update
dandel10n Feb 18, 2025
925f242
cosmetic(pie-text-input): PEW-109 hover styles update
dandel10n Feb 18, 2025
19c15ac
cosmetic(pie-switch): PEW-109 hover and active styles update
dandel10n Feb 18, 2025
7a00def
cosmetic(pie-textarea): PEW-109 hover and active styles update
dandel10n Feb 18, 2025
18bbd37
test(pie-css): PEW-109 tests update and change clean up
dandel10n Feb 18, 2025
50ccecd
ci(pie-tag): PEW-109 maxsize increase
dandel10n Feb 18, 2025
728820e
cosmetic(pie-css): PEW-109 changeset entries
dandel10n Feb 18, 2025
333748c
test(pie-tag): PEW-109 test update
dandel10n Feb 19, 2025
979230e
cosmetic(pie-icon-button): PEW-109 css var update for bg-color
dandel10n Feb 19, 2025
59c6ed9
cosmetic(pie-switch): PEW-109 interactive-states mixin usage
dandel10n Feb 20, 2025
fcca677
cosmetic(pie-monorepo): PEW-109 css var --bg-color to --mixin-bg-colo…
dandel10n Feb 20, 2025
91c6e69
test(pie-tag): PEW-109 test update
dandel10n Feb 20, 2025
1a5c2d5
cosmetic(pie-css): PEW-109 renames the bg color var
dandel10n Feb 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .changeset/dull-spies-play.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@justeattakeaway/pie-icon-button": minor
"@justeattakeaway/pie-text-input": minor
"@justeattakeaway/pie-checkbox": minor
"@justeattakeaway/pie-textarea": minor
"@justeattakeaway/pie-button": minor
"@justeattakeaway/pie-switch": minor
"@justeattakeaway/pie-radio": minor
"@justeattakeaway/pie-card": minor
"@justeattakeaway/pie-chip": minor
"@justeattakeaway/pie-tag": minor
---

[Changed] - active and hover styles to support dark mode
8 changes: 8 additions & 0 deletions .changeset/loud-rabbits-reflect.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"pie-storybook": minor
"pie-docs": minor
"pie-monorepo": minor
"@justeattakeaway/pie-modal": minor
---

[Changed] - pie-design-tokens version bump to 6.9.0
6 changes: 6 additions & 0 deletions .changeset/strange-numbers-listen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@justeattakeaway/pie-css": minor
---

[Added] - interactive-states mixin
[Removed] - button-interactive-states mixin
2 changes: 1 addition & 1 deletion apps/pie-docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"@docsearch/css": "3.5.2",
"@docsearch/js": "3.5.2",
"@justeat/fozzie": "11.0.2",
"@justeat/pie-design-tokens": "6.8.1",
"@justeat/pie-design-tokens": "6.9.0",
"@justeattakeaway/browserslist-config-pie": "0.2.0",
"@justeattakeaway/pie-css": "0.14.1",
"@justeattakeaway/pie-icons": "5.6.0",
Expand Down
2 changes: 1 addition & 1 deletion apps/pie-storybook/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"author": "Just Eat Takeaway.com - Design System Team",
"license": "Apache-2.0",
"dependencies": {
"@justeat/pie-design-tokens": "6.8.1",
"@justeat/pie-design-tokens": "6.9.0",
"@justeattakeaway/pie-assistive-text": "0.8.3",
"@justeattakeaway/pie-button": "1.2.0",
"@justeattakeaway/pie-card": "0.22.0",
Expand Down
2 changes: 1 addition & 1 deletion bundlewatch.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@
},
{
"path": "./packages/components/pie-tag/dist/index.js",
"maxSize": "2.7 KB"
"maxSize": "2.8 KB"
},
{
"path": "./packages/components/pie-tag/dist/react.js",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
"@changesets/cli": "2.27.10",
"@commitlint/cli": "17.5.1",
"@commitlint/config-conventional": "17.4.4",
"@justeat/pie-design-tokens": "6.8.1",
"@justeat/pie-design-tokens": "6.9.0",
"@justeattakeaway/browserslist-config-pie": "0.2.0",
"@justeattakeaway/generator-pie-component": "0.29.1",
"@justeattakeaway/pie-icons": "5.6.0",
Expand Down
55 changes: 25 additions & 30 deletions packages/components/pie-button/src/button.scss
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

// The following values set to default background and color
// currently this sets the primary button styles
--btn-bg-color: var(--dt-color-interactive-brand);
--int-states-mixin-bg-color: var(--dt-color-interactive-brand);
--btn-text-color: var(--dt-color-content-interactive-light);
--icon-display-override: block;

Expand All @@ -36,6 +36,9 @@
--btn-padding-horizontal-medium: var(--dt-spacing-d);
--btn-padding-horizontal-large: var(--dt-spacing-e);

// this token is needed for interactive-states mixin
--btn-bg-transparent: transparent;

/**
* Mixin for updating the button styles based on the size passed in.
* Takes in the name of the size to be used.
Expand Down Expand Up @@ -105,7 +108,7 @@
border: none;
border-radius: var(--btn-border-radius);
outline: none;
background-color: var(--btn-bg-color);
background-color: var(--int-states-mixin-bg-color);
font-family: var(--btn-font-family);
font-size: var(--btn-font-size);
font-weight: var(--btn-font-weight);
Expand All @@ -122,93 +125,85 @@
// Button Variant Modifiers
// ************************
&.o-btn--primary {
@include p.button-interactive-states('--dt-color-interactive-brand');
@include p.interactive-states('--dt-color-interactive-brand');

&.o-btn--xsmall,
&.o-btn--small-productive {
/**
* Where the font-size is smaller,
* update the button backgrounds so that the text is accessible
**/
--btn-bg-color: var(--dt-color-interactive-primary);
--int-states-mixin-bg-color: var(--dt-color-interactive-primary);
--btn-text-color: var(--dt-color-content-interactive-primary);

@include p.button-interactive-states('--dt-color-interactive-primary', 'inverse');
@include p.interactive-states('--dt-color-interactive-primary', 'inverse', '02');
}

// This is to handle the background colour change getting overridden above, but then being put in responsive mode
// can't use :not for this unfortunately, as then the smaller narrow state would lose its background colour too
&.o-btn--xsmall.o-btn--expressive,
&.o-btn--small-productive {
@include responsive-wide {
--btn-bg-color: var(--dt-color-interactive-brand);
--int-states-mixin-bg-color: var(--dt-color-interactive-brand);

@include p.button-interactive-states('--dt-color-interactive-brand');
@include p.interactive-states('--dt-color-interactive-brand');
}
}
}

&.o-btn--secondary {
--btn-bg-color: var(--dt-color-interactive-secondary);
--int-states-mixin-bg-color: var(--dt-color-interactive-secondary);
--btn-text-color: var(--dt-color-content-interactive-secondary);

@include p.button-interactive-states('--dt-color-interactive-secondary');
@include p.interactive-states('--dt-color-interactive-secondary');
}

&.o-btn--outline {
--btn-bg-color: transparent;
--int-states-mixin-bg-color: transparent;
--btn-text-color: var(--dt-color-content-interactive-secondary);

border: 1px solid var(--dt-color-border-strong);

// use black as the background color for hover and inverse,
// as this variant uses a shade of transparent black showing through the container background
@include p.button-interactive-states('--dt-color-black', 'transparent');
@include p.interactive-states('--btn-bg-transparent', 'transparent', '01');
}

&.o-btn--ghost {
--btn-bg-color: transparent;
--int-states-mixin-bg-color: transparent;
--btn-text-color: var(--dt-color-content-link);

// use black as the background color for hover and inverse,
// as this variant uses a shade of transparent black showing through the container background
@include p.button-interactive-states('--dt-color-black', 'transparent');
@include p.interactive-states('--btn-bg-transparent', 'transparent', '01');
}

&.o-btn--inverse {
--btn-bg-color: var(--dt-color-interactive-inverse);
--int-states-mixin-bg-color: var(--dt-color-interactive-inverse);
--btn-text-color: var(--dt-color-content-interactive-secondary);

@include p.button-interactive-states('--dt-color-interactive-inverse');
@include p.interactive-states('--dt-color-interactive-inverse');
}

&.o-btn--ghost-inverse,
&.o-btn--outline-inverse {
--btn-bg-color: transparent;
--int-states-mixin-bg-color: transparent;
--btn-text-color: var(--dt-color-content-interactive-primary);

// use white as the background color for hover and inverse,
// as these variants use a shade of transparent white showing through the container background
@include p.button-interactive-states('--dt-color-container-default', 'transparent');
@include p.interactive-states('--btn-bg-transparent', 'transparent-inverse', '02');
}

&.o-btn--outline-inverse {
border: 1px solid var(--dt-color-border-strong);
}

&.o-btn--destructive {
--btn-bg-color: var(--dt-color-support-error);
--int-states-mixin-bg-color: var(--dt-color-support-error);

@include p.button-interactive-states('--dt-color-support-error');
@include p.interactive-states('--dt-color-support-error');
}

&.o-btn--destructive-ghost {
--btn-bg-color: transparent;
--int-states-mixin-bg-color: transparent;
--btn-text-color: var(--dt-color-content-interactive-error);

// use black as the background color for hover and inverse,
// as this variant uses a shade of transparent black showing through the container background
@include p.button-interactive-states('--dt-color-black', 'transparent');
@include p.interactive-states('--btn-bg-transparent', 'transparent', '01');
}

// *********************
Expand Down Expand Up @@ -327,7 +322,7 @@

// For every variant (except ghost variants) set the disabled background color
&:not(.o-btn--ghost, .o-btn--ghost-inverse, .o-btn--destructive-ghost) {
--btn-bg-color: var(--dt-color-disabled-01) !important;
--int-states-mixin-bg-color: var(--dt-color-disabled-01) !important;
}

// For outline variants, set the border to the disabled color
Expand Down
48 changes: 13 additions & 35 deletions packages/components/pie-card/src/card.scss
Original file line number Diff line number Diff line change
@@ -1,46 +1,24 @@
@use '@justeattakeaway/pie-css/scss' as p;

@mixin card-interactive-states($bg-color, $mode: 'default') {
&:hover:not(.c-card--disabled) {
@if $mode == 'inverse' {
--hover-modifier: var(--dt-color-hover-01);
} @else {
--hover-modifier: calc(-1 * var(--dt-color-hover-01));
}

--card-bg-color: hsl(var(#{$bg-color}-h), var(#{$bg-color}-s), calc(var(#{$bg-color}-l) + var(--hover-modifier)));
}

&:active:not(.c-card--disabled) {
@if $mode == 'inverse' {
--active-modifier: var(--dt-color-active-01);
} @else {
--active-modifier: calc(-1 * var(--dt-color-active-01));
}

--card-bg-color: hsl(var(#{$bg-color}-h), var(#{$bg-color}-s), calc(var(#{$bg-color}-l) + var(--active-modifier)));
}
}

.c-card {
--card-bg-color: var(--dt-color-container-default);
--int-states-mixin-bg-color: var(--dt-color-container-default);
--card-color: var(--dt-color-content-default);
--card-radius: var(--dt-radius-rounded-c);
--card-border-color: transparent;

display: block;
position: relative;
color: var(--card-color);
background-color: var(--card-bg-color);
background-color: var(--int-states-mixin-bg-color);
border: 1px solid var(--card-border-color);
border-radius: var(--card-radius);
cursor: pointer;
user-select: none;
outline: none;
text-decoration: none;

&.c-card--disabled {
--card-bg-color: var(--dt-color-disabled-01);
&.disabled {
--int-states-mixin-bg-color: var(--dt-color-disabled-01);

cursor: not-allowed;

Expand All @@ -56,36 +34,36 @@
&.c-card--default {
box-shadow: var(--dt-elevation-card);

@include card-interactive-states('--dt-color-container-default');
@include p.interactive-states('--dt-color-container-default');
}

&.c-card--outline {
border-color: var(--dt-color-border-strong);

@include card-interactive-states('--dt-color-container-default');
@include p.interactive-states('--dt-color-container-default');
}

&.c-card--inverse {
--card-bg-color: var(--dt-color-container-inverse);
--int-states-mixin-bg-color: var(--dt-color-container-inverse);
--card-color: var(--dt-color-content-inverse);

box-shadow: var(--dt-elevation-inverse-card);

@include card-interactive-states('--dt-color-container-inverse', 'inverse');
@include p.interactive-states('--dt-color-container-inverse', 'inverse', '02');
}

&.c-card--outline-inverse {
--card-bg-color: var(--dt-color-container-inverse);
--int-states-mixin-bg-color: var(--dt-color-container-inverse);
--card-color: var(--dt-color-content-inverse);

border-color: var(--dt-color-border-inverse);

@include card-interactive-states('--dt-color-container-inverse', 'inverse');
@include p.interactive-states('--dt-color-container-inverse', 'inverse', '02');
}

&.c-card--inverse.c-card--disabled,
&.c-card--outline-inverse.c-card--disabled {
--card-bg-color: var(--dt-color-disabled-01-inverse);
&.c-card--inverse.disabled,
&.c-card--outline-inverse.disabled {
--int-states-mixin-bg-color: var(--dt-color-disabled-01-inverse);
}

&.c-card--draggable {
Expand Down
2 changes: 1 addition & 1 deletion packages/components/pie-card/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ export class PieCard extends LitElement implements CardProps {
'c-card': true,
[`c-card--${variant}`]: true,
'c-card--draggable': isDraggable,
'c-card--disabled': disabled,
disabled,
};

if (tag === 'a') return this.renderAnchor(classes);
Expand Down
Loading
Loading