feat: implement new design for button
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
.layout {
|
.layout {
|
||||||
--header-height: 4.5rem;
|
--header-height: 4.5rem;
|
||||||
|
|
||||||
background-color: var(--Brand-Coffee-Subtle);
|
background-color: var(--Scandic-Brand-Warm-White);
|
||||||
display: grid;
|
display: grid;
|
||||||
font-family: var(--ff-fira-sans);
|
font-family: var(--ff-fira-sans);
|
||||||
grid-template-rows: var(--header-height) auto 1fr;
|
grid-template-rows: var(--header-height) auto 1fr;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ export default function EditProfile({ params }: PageArgs<LangParams>) {
|
|||||||
<Button
|
<Button
|
||||||
aria-label="Cancel"
|
aria-label="Cancel"
|
||||||
asChild
|
asChild
|
||||||
bgcolor="white"
|
|
||||||
form="edit-profile"
|
form="edit-profile"
|
||||||
size="small"
|
size="small"
|
||||||
type="reset"
|
type="reset"
|
||||||
@@ -24,12 +23,10 @@ export default function EditProfile({ params }: PageArgs<LangParams>) {
|
|||||||
<Link href={profile[params.lang]}>{_("Cancel")}</Link>
|
<Link href={profile[params.lang]}>{_("Cancel")}</Link>
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
bgcolor="quarternary"
|
|
||||||
disabled={!isValid || isPending}
|
disabled={!isValid || isPending}
|
||||||
form="edit-profile"
|
form="edit-profile"
|
||||||
size="small"
|
size="small"
|
||||||
type="submit"
|
type="submit"
|
||||||
weight="regular"
|
|
||||||
>
|
>
|
||||||
{_("Save")}
|
{_("Save")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import type { LangParams, PageArgs } from "@/types/params"
|
|||||||
|
|
||||||
export default function ProfileView({ params }: PageArgs<LangParams>) {
|
export default function ProfileView({ params }: PageArgs<LangParams>) {
|
||||||
return (
|
return (
|
||||||
<Button asChild bgcolor="quarternary" size="small" weight="regular">
|
<Button asChild size="small">
|
||||||
<Link href={profileEdit[params.lang]}>{_("Edit")}</Link>
|
<Link href={profileEdit[params.lang]}>{_("Edit")}</Link>
|
||||||
</Button>
|
</Button>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.layout {
|
.layout {
|
||||||
display: grid;
|
display: grid;
|
||||||
font-family: var(--ff-fira-sans);
|
font-family: var(--ff-fira-sans);
|
||||||
background-color: var(--Brand-Coffee-Subtle);
|
background-color: var(--Scandic-Brand-Warm-White);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 37rem;
|
height: 37rem;
|
||||||
border-radius: 1.6rem;
|
border-radius: 1.6rem;
|
||||||
background-color: var(--Base-Fill-Normal);
|
background-color: var(--UI-Grey-10);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-right: 1.6rem;
|
margin-right: 1.6rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
height: 37rem;
|
height: 37rem;
|
||||||
min-width: 32rem;
|
min-width: 32rem;
|
||||||
padding: 4rem 1rem;
|
padding: 4rem 1rem;
|
||||||
background-color: var(--Base-Fill-Normal);
|
background-color: var(--UI-Grey-10);
|
||||||
border-radius: 1.6rem;
|
border-radius: 1.6rem;
|
||||||
gap: 1.8rem;
|
gap: 1.8rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
min-height: 280px;
|
min-height: 280px;
|
||||||
background-color: var(--Base-Fill-Normal);
|
background-color: var(--UI-Grey-10);
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export default async function NextLevelBenefitsBlock({
|
|||||||
<CardGrid variant="twoColumnGrid">
|
<CardGrid variant="twoColumnGrid">
|
||||||
{perks.map((perk) => (
|
{perks.map((perk) => (
|
||||||
<article key={perk.id} className={styles.card}>
|
<article key={perk.id} className={styles.card}>
|
||||||
<Button type="button" intent="secondary" disabled>
|
<Button type="button" disabled>
|
||||||
<Lock height={16} />
|
<Lock height={16} />
|
||||||
Level up to unlock
|
Level up to unlock
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export default function ShowMoreButton({
|
|||||||
<Button
|
<Button
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
intent="primary"
|
intent="primary"
|
||||||
bgcolor="white"
|
theme="secondaryDark"
|
||||||
type="button"
|
type="button"
|
||||||
onClick={loadMoreData}
|
onClick={loadMoreData}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export default function EmptyUpcomingStaysBlock() {
|
|||||||
{_("Where should you go next?")}
|
{_("Where should you go next?")}
|
||||||
</span>
|
</span>
|
||||||
</Title>
|
</Title>
|
||||||
<Button intent="primary" bgcolor="quarternary" asChild type="button">
|
<Button intent="primary" asChild type="button">
|
||||||
<Link className={styles.link} href={"#"} key="getInspired">
|
<Link className={styles.link} href={"#"} key="getInspired">
|
||||||
{_("Get inspired")}
|
{_("Get inspired")}
|
||||||
</Link>
|
</Link>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export default function EmptyUpcomingStaysBlock() {
|
|||||||
{_("Where should you go next?")}
|
{_("Where should you go next?")}
|
||||||
</span>
|
</span>
|
||||||
</Title>
|
</Title>
|
||||||
<Button intent="primary" bgcolor="quarternary" asChild type="button">
|
<Button intent="primary" asChild type="button">
|
||||||
<Link className={styles.link} href={"#"} key="getInspired">
|
<Link className={styles.link} href={"#"} key="getInspired">
|
||||||
{_("Get inspired")}
|
{_("Get inspired")}
|
||||||
</Link>
|
</Link>
|
||||||
|
|||||||
@@ -4,21 +4,43 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
text-align: center;
|
||||||
|
font-family: var(--ff-fira-sans);
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 150%;
|
||||||
|
letter-spacing: 1%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.primary {
|
||||||
|
color: var(--font-color,);
|
||||||
|
background-color: var(--background-color,);
|
||||||
|
}
|
||||||
|
|
||||||
|
.primary:hover,
|
||||||
|
.primary:active,
|
||||||
|
.primary:focus {
|
||||||
|
background-color: var(--hover-background,);
|
||||||
|
color: var(--hover-color,);
|
||||||
|
}
|
||||||
|
|
||||||
|
.secondary {
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0.1rem solid var(--background-color);
|
||||||
|
color: var(--background-color,);
|
||||||
|
}
|
||||||
|
|
||||||
|
.secondary:hover,
|
||||||
|
.secondary:active,
|
||||||
|
.secondary:focus {
|
||||||
|
border: 0.1rem solid var(--hover-color,);
|
||||||
|
color: var(--hover-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.default {
|
.default {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background-color: var(--some-white-color, #fff);
|
|
||||||
border-radius: 4rem;
|
border-radius: 4rem;
|
||||||
color: var(--some-grey-color, #111);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
font-family: var(--ff-fira-sans);
|
|
||||||
font-size: 1.8rem;
|
|
||||||
font-weight: 500;
|
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
letter-spacing: 1%;
|
|
||||||
line-height: 2.2rem;
|
|
||||||
padding: 0.75rem 1.65rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
@@ -26,125 +48,110 @@
|
|||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Primary styles */
|
|
||||||
.primary {
|
|
||||||
background-color: var(--some-grey-color, #444343);
|
|
||||||
border: 2px solid transparent;
|
|
||||||
outline: 1px solid transparent;
|
|
||||||
border-radius: 46px;
|
|
||||||
color: var(--Main-Grey-00, #fff);
|
|
||||||
}
|
|
||||||
|
|
||||||
.primary:hover {
|
|
||||||
background: var(--some-grey-color, #444343);
|
|
||||||
}
|
|
||||||
|
|
||||||
.primary:active,
|
|
||||||
.primary:focus {
|
|
||||||
border: var(--some-grey-color, #444343);
|
|
||||||
outline: var(--some-grey-color, #444343);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Secondary styles */
|
|
||||||
.secondary {
|
|
||||||
border: 1px solid var(--some-grey-color, #444343);
|
|
||||||
background-color: transparent;
|
|
||||||
color: var(--some-grey-color, #444343);
|
|
||||||
border-radius: 46px;
|
|
||||||
font-size: 12px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.secondary:hover {
|
|
||||||
border: 1px solid var(--some-grey-color, #444343);
|
|
||||||
}
|
|
||||||
|
|
||||||
.secondary:active,
|
|
||||||
.secondary:focus {
|
|
||||||
border: 1px solid var(--some-grey-color, #444343);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Disabled styles */
|
/* Disabled styles */
|
||||||
.btn:disabled {
|
.btn:disabled {
|
||||||
border: 1px solid var(--some-grey-color, #444343);
|
background-color: var(--disabled-background-color);
|
||||||
background-color: transparent;
|
color: var(--disabled-color);
|
||||||
color: var(--some-grey-color, #444343);
|
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Sizes */
|
||||||
.small {
|
.small {
|
||||||
border-radius: 3rem;
|
padding: var(--Spacing-x1) var(--Spacing-x2);
|
||||||
|
gap: 0.2rem;
|
||||||
|
|
||||||
font-size: 1.4rem;
|
font-size: 1.4rem;
|
||||||
height: 2.6rem;
|
height: 4rem;
|
||||||
line-height: 1.7rem;
|
|
||||||
padding: 0.8rem 2.2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.average {
|
|
||||||
border-radius: 4.7rem;
|
|
||||||
font-size: 1.4rem;
|
|
||||||
height: 3.2rem;
|
|
||||||
letter-spacing: 1%;
|
|
||||||
line-height: 1.6rem;
|
|
||||||
padding: 0.65rem 1.3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.light {
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
.regular {
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.medium {
|
.medium {
|
||||||
font-weight: 500;
|
height: 3rem;
|
||||||
|
padding: 1.2rem var(--Spacing-x2,);
|
||||||
|
|
||||||
|
font-size: 1.6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.semiBold {
|
.large {
|
||||||
font-weight: 600;
|
padding: var(--Spacing-x2) 2.4rem;
|
||||||
|
gap: 0.4rem;
|
||||||
|
|
||||||
|
font-size: 1.6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bold {
|
.primaryLight {
|
||||||
font-weight: 700;
|
--font-color: var(--Theme-Primary-Light-Button-Primary-On-Fill-Normal);
|
||||||
|
--background-color: var(--Theme-Primary-Light-Button-Primary-Fill-Normal,);
|
||||||
|
--hover-background: var(--Theme-Primary-Light-Button-Primary-Fill-Hover,);
|
||||||
|
--hover-color: var(--Theme-Primary-Light-Button-Primary-On-Fill-Hover,);
|
||||||
|
|
||||||
|
--disabled-background-color: var(
|
||||||
|
--Theme-Primary-Light-Button-Primary-Fill-Disabled,
|
||||||
|
);
|
||||||
|
--disabled-color: var(--Theme-Primary-Light-Button-Primary-On-Fill-Disabled,);
|
||||||
}
|
}
|
||||||
|
|
||||||
.black {
|
.primaryDark {
|
||||||
font-weight: 900;
|
--font-color: var(--Theme-Primary-Dark-Button-Primary-On-Fill-Normal,);
|
||||||
|
--background-color: var(--Theme-Primary-Dark-Button-Primary-Fill-Normal,);
|
||||||
|
--hover-color: var(--Theme-Primary-Dark-Button-Primary-On-Fill-Hover,);
|
||||||
|
--hover-background: var(--Theme-Primary-Dark-Button-Primary-Fill-Hover,);
|
||||||
|
|
||||||
|
--disabled-background-color: var(
|
||||||
|
--Theme-Primary-Dark-Button-Primary-Fill-Disabled,
|
||||||
|
);
|
||||||
|
--disabled-color: var(--Theme-Primary-Dark-Button-Primary-On-Fill-Disabled,);
|
||||||
}
|
}
|
||||||
|
|
||||||
.primary {
|
.secondaryLight {
|
||||||
background-color: var(--scandic-blue, #02838e);
|
--font-color: var(--Theme-Secondary-Light-Button-Primary-On-Fill-Normal,);
|
||||||
border: 0.1rem solid var(--scandic-blue, #02838e);
|
--background-color: var(--Theme-Secondary-Light-Button-Primary-Fill-Normal,);
|
||||||
color: var(--some-white-color, #fff);
|
--hover-color: var(--Theme-Secondary-Light-Button-Primary-On-Fill-Hover,);
|
||||||
|
--hover-background: var(--Theme-Secondary-Light-Button-Primary-Fill-Hover,);
|
||||||
|
|
||||||
|
--disabled-background-color: var(
|
||||||
|
--Theme-Secondary-Light-Button-Primary-Fill-Disabled,
|
||||||
|
);
|
||||||
|
--disabled-color: var(
|
||||||
|
--Theme-Secondary-Light-Button-Primary-On-Fill-Disabled,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
.secondary {
|
.secondaryDark {
|
||||||
background-color: var(--some-black-color, #000);
|
--font-color: var(--Theme-Secondary-Dark-Button-Primary-On-Fill-Normal,);
|
||||||
border: 0.1rem solid var(--some-black-color, #000);
|
--background-color: var(--Theme-Secondary-Dark-Button-Primary-Fill-Normal,);
|
||||||
color: var(--some-white-color, #fff);
|
--hover-color: var(--Theme-Secondary-Dark-Button-Primary-On-Fill-Hover,);
|
||||||
|
--hover-background: var(--Theme-Secondary-Dark-Button-Primary-Fill-Hover,);
|
||||||
|
|
||||||
|
--disabled-background-color: var(
|
||||||
|
--Theme-Secondary-Dark-Button-Primary-Fill-Disabled,
|
||||||
|
);
|
||||||
|
--disabled-color: var(
|
||||||
|
--Theme-Secondary-Dark-Button-Primary-On-Fill-Disabled,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
.tertiary {
|
.tertiaryLight {
|
||||||
background-color: var(--some-red-color, #d60728);
|
--font-color: var(--Theme-Tertiary-Light-Button-Primary-On-Fill-Normal,);
|
||||||
border: 0.1rem solid var(--some-red-color, #d60728);
|
--background-color: var(--Theme-Tertiary-Light-Button-Primary-Fill-Normal,);
|
||||||
color: var(--some-white-color, #fff);
|
--hover-color: var(--Theme-Tertiary-Light-Button-Primary-On-Fill-Hover,);
|
||||||
|
--hover-background: var(--Theme-Tertiary-Light-Button-Primary-Fill-Hover,);
|
||||||
|
|
||||||
|
--disabled-background-color: var(
|
||||||
|
--Theme-Tertiary-Light-Button-Primary-Fill-Disabled,
|
||||||
|
);
|
||||||
|
--disabled-color: var(
|
||||||
|
--Theme-Tertiary-Light-Button-Primary-On-Fill-Disabled,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
.quarternary {
|
.tertiaryDark {
|
||||||
background-color: var(--some-grey-color, #727272);
|
--font-color: var(--Theme-Tertiary-Dark-Button-Primary-On-Fill-Normal);
|
||||||
border: 0.1rem solid var(--some-black-color, #727272);
|
--background-color: var(--Theme-Tertiary-Dark-Button-Primary-Fill-Normal);
|
||||||
color: var(--some-white-color, #fff);
|
--hover-color: var(--Theme-Tertiary-Dark-Button-Primary-On-Fill-Hover);
|
||||||
}
|
--hover-background: var(--Theme-Tertiary-Dark-Button-Primary-Fill-Hover);
|
||||||
|
|
||||||
.white {
|
--disabled-background-color: var(
|
||||||
background-color: var(--some-white-color, #fff);
|
--Theme-Tertiary-Dark-Button-Primary-Fill-Disabled,
|
||||||
border: 0.1rem solid var(--some-black-color, #000);
|
);
|
||||||
color: var(--some-black-color, #000);
|
--disabled-color: var(--Theme-Tertiary-Dark-Button-Primary-On-Fill-Disabled,);
|
||||||
}
|
|
||||||
|
|
||||||
.btn:disabled {
|
|
||||||
background-color: var(--some-grey-color, #d9d9d9);
|
|
||||||
color: var(--some-grey-color, #757575);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,23 +8,21 @@ import type { ButtonProps } from "./button"
|
|||||||
|
|
||||||
export default function Button({
|
export default function Button({
|
||||||
asChild = false,
|
asChild = false,
|
||||||
bgcolor,
|
theme,
|
||||||
className,
|
className,
|
||||||
disabled,
|
disabled,
|
||||||
intent,
|
intent,
|
||||||
size,
|
size,
|
||||||
variant,
|
variant,
|
||||||
weight,
|
|
||||||
...props
|
...props
|
||||||
}: ButtonProps) {
|
}: ButtonProps) {
|
||||||
const Comp = asChild ? Slot : "button"
|
const Comp = asChild ? Slot : "button"
|
||||||
const classNames = buttonVariants({
|
const classNames = buttonVariants({
|
||||||
bgcolor,
|
theme,
|
||||||
className,
|
className,
|
||||||
intent,
|
intent,
|
||||||
size,
|
size,
|
||||||
variant,
|
variant,
|
||||||
weight,
|
|
||||||
})
|
})
|
||||||
return <Comp className={classNames} disabled={disabled} {...props} />
|
return <Comp className={classNames} disabled={disabled} {...props} />
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,13 @@ import styles from "./button.module.css"
|
|||||||
|
|
||||||
export const buttonVariants = cva(styles.btn, {
|
export const buttonVariants = cva(styles.btn, {
|
||||||
variants: {
|
variants: {
|
||||||
bgcolor: {
|
theme: {
|
||||||
primary: styles.primary,
|
primaryLight: styles.primaryLight,
|
||||||
secondary: styles.secondary,
|
primaryDark: styles.primaryDark,
|
||||||
tertiary: styles.tertiary,
|
secondaryLight: styles.secondaryLight,
|
||||||
quarternary: styles.quarternary,
|
secondaryDark: styles.secondaryDark,
|
||||||
white: styles.white,
|
tertiaryLight: styles.tertiaryLight,
|
||||||
|
tertiaryDark: styles.tertiaryDark,
|
||||||
},
|
},
|
||||||
intent: {
|
intent: {
|
||||||
primary: styles.primary,
|
primary: styles.primary,
|
||||||
@@ -17,23 +18,18 @@ export const buttonVariants = cva(styles.btn, {
|
|||||||
},
|
},
|
||||||
size: {
|
size: {
|
||||||
small: styles.small,
|
small: styles.small,
|
||||||
regular: styles.average,
|
medium: styles.medium,
|
||||||
|
large: styles.large,
|
||||||
},
|
},
|
||||||
variant: {
|
variant: {
|
||||||
default: styles.default,
|
default: styles.default,
|
||||||
icon: styles.icon,
|
icon: styles.icon,
|
||||||
},
|
},
|
||||||
weight: {
|
|
||||||
light: styles.light,
|
|
||||||
regular: styles.regular,
|
|
||||||
medium: styles.medium,
|
|
||||||
semiBold: styles.semiBold,
|
|
||||||
bold: styles.bold,
|
|
||||||
black: styles.black,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
defaultVariants: {
|
defaultVariants: {
|
||||||
variant: "default",
|
variant: "default",
|
||||||
weight: "regular",
|
size: "medium",
|
||||||
|
theme: "primaryLight",
|
||||||
|
intent: "primary",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user