RFC: added brandcolor for switch (#8213)

This commit is contained in:
Peer Richelsen
2023-04-19 14:39:23 +00:00
committed by GitHub
parent bdbf9bd04d
commit de61b032b7
4 changed files with 26 additions and 7 deletions
@@ -52,6 +52,7 @@ const AppearanceView = () => {
const utils = trpc.useContext();
const { data: user, isLoading } = trpc.viewer.me.useQuery();
const [darkModeError, setDarkModeError] = useState(false);
const [lightModeError, setLightModeError] = useState(false);
const { isLoading: isTeamPlanStatusLoading, hasPaidPlan } = useHasPaidPlan();
@@ -145,7 +146,14 @@ const AppearanceView = () => {
<p className="text-default mb-2 block text-sm font-medium">{t("light_brand_color")}</p>
<ColorPicker
defaultValue={user.brandColor}
onChange={(value) => formMethods.setValue("brandColor", value, { shouldDirty: true })}
onChange={(value) => {
if (!checkWCAGContrastColor("#ffffff", value)) {
setLightModeError(true);
} else {
setLightModeError(false);
}
formMethods.setValue("brandColor", value, { shouldDirty: true });
}}
/>
</div>
)}
@@ -180,6 +188,14 @@ const AppearanceView = () => {
/>
</div>
) : null}
{lightModeError ? (
<div className="mt-4">
<Alert
severity="warning"
message="Light Theme color doesn't pass contrast check. We recommend you change this colour so your buttons will be more visible."
/>
</div>
) : null}
{/* TODO future PR to preview brandColors */}
{/* <Button
color="secondary"
+4 -3
View File
@@ -26,9 +26,10 @@ module.exports = {
error: "var(--cal-bg-error)",
black: "#111111",
brand: {
default: "var(--cal-brand,'#111827')",
emphasis: "var(--cal-brand-emphasis,'#101010')",
subtle: "var(--cal-brand-subtle,'#9CA3AF')",
default: "var(--cal-brand,#111827)",
emphasis: "var(--cal-brand-emphasis,#101010)",
subtle: "var(--cal-brand-subtle,#9CA3AF)",
accent: "var(--cal-brand-accent,white)",
},
gray: {
50: "#F9FAFB",
+2
View File
@@ -183,12 +183,14 @@ const useGetBrandingColours = ({
"cal-brand-emphasis": lightColourMap["400"],
"cal-brand-subtle": lightColourMap["200"],
"cal-brand-text": getWCAGContrastColor(lightColourMap["500"]),
"cal-brand-accent": getWCAGContrastColor(lightColourMap["500"]),
},
dark: {
"cal-brand": darkColourMap["500"],
"cal-brand-emphasis": darkColourMap["600"],
"cal-brand-subtle": darkColourMap["800"],
"cal-brand-text": getWCAGContrastColor(darkColourMap["500"]),
"cal-brand-accent": getWCAGContrastColor(darkColourMap["500"]),
},
};
return theme;
@@ -27,7 +27,7 @@ const Switch = (
) => {
const { label, fitToHeight, classNames, ...primitiveProps } = props;
const id = useId();
const isChecked = props.checked || props.defaultChecked;
return (
<Wrapper tooltip={props.tooltip}>
<div
@@ -38,7 +38,7 @@ const Switch = (
)}>
<PrimitiveSwitch.Root
className={cx(
props.checked || props.defaultChecked ? "bg-inverted" : "bg-emphasis",
props.checked || props.defaultChecked ? "bg-brand-default" : "bg-emphasis",
primitiveProps.disabled && "cursor-not-allowed",
"focus:ring-brand-default h-5 w-[34px] rounded-full shadow-none",
props.className
@@ -48,7 +48,7 @@ const Switch = (
id={id}
className={cx(
"block h-[14px] w-[14px] rounded-full transition will-change-transform ltr:translate-x-[4px] rtl:-translate-x-[4px] ltr:[&[data-state='checked']]:translate-x-[17px] rtl:[&[data-state='checked']]:-translate-x-[17px]",
props.checked || props.defaultChecked ? "bg-default shadow-inner" : "bg-inverted",
isChecked ? "bg-brand-accent shadow-inner" : "bg-default",
classNames?.thumb
)}
/>