Initial commit
This commit is contained in:
142
src/providers/themeProvider/styles/cardStyles.ts
Normal file
142
src/providers/themeProvider/styles/cardStyles.ts
Normal file
@@ -0,0 +1,142 @@
|
||||
import type { CardStyleVariant } from "../config/types";
|
||||
|
||||
export const cardStyleMap: Record<CardStyleVariant, string> = {
|
||||
"solid": `
|
||||
position: relative;
|
||||
background: var(--color-card);
|
||||
`,
|
||||
"solid-accent": `
|
||||
position: relative;
|
||||
background: color-mix(in srgb, var(--color-accent) 30%, transparent);
|
||||
`,
|
||||
"solid-accent-light": `
|
||||
position: relative;
|
||||
background: color-mix(in srgb, var(--color-accent) 15%, transparent);
|
||||
`,
|
||||
"outline": `
|
||||
position: relative;
|
||||
background: var(--color-card);
|
||||
border: 1px solid color-mix(in srgb, var(--color-accent) 45%, transparent);
|
||||
`,
|
||||
"outline-light": `
|
||||
position: relative;
|
||||
background: var(--color-card);
|
||||
border: 1px solid color-mix(in srgb, var(--color-accent) 15%, transparent);
|
||||
`,
|
||||
"elevated": `
|
||||
position: relative;
|
||||
background: var(--color-card);
|
||||
box-shadow: 0 4px 6px -1px color-mix(in srgb, var(--color-foreground) 10%, transparent), 0 2px 4px -2px color-mix(in srgb, var(--color-foreground) 10%, transparent);
|
||||
`,
|
||||
"elevated-accent": `
|
||||
position: relative;
|
||||
background: color-mix(in srgb, var(--color-accent) 30%, transparent);
|
||||
box-shadow: 0 4px 6px -1px color-mix(in srgb, var(--color-foreground) 10%, transparent), 0 2px 4px -2px color-mix(in srgb, var(--color-foreground) 10%, transparent);
|
||||
`,
|
||||
"elevated-accent-light": `
|
||||
position: relative;
|
||||
background: color-mix(in srgb, var(--color-accent) 15%, transparent);
|
||||
box-shadow: 0 4px 6px -1px color-mix(in srgb, var(--color-foreground) 10%, transparent), 0 2px 4px -2px color-mix(in srgb, var(--color-foreground) 10%, transparent);
|
||||
`,
|
||||
"gradient-subtle": `
|
||||
position: relative;
|
||||
background: linear-gradient(135deg, var(--color-card) 0%, color-mix(in srgb, var(--color-card) 95%, var(--color-accent) 5%) 100%);
|
||||
`,
|
||||
"gradient-mesh": `
|
||||
position: relative;
|
||||
background:
|
||||
radial-gradient(at 0% 0%, color-mix(in srgb, var(--color-accent) 15%, transparent) 0px, transparent 50%),
|
||||
radial-gradient(at 100% 0%, color-mix(in srgb, var(--color-accent) 10%, transparent) 0px, transparent 50%),
|
||||
radial-gradient(at 100% 100%, color-mix(in srgb, var(--color-accent) 20%, transparent) 0px, transparent 50%),
|
||||
radial-gradient(at 0% 100%, color-mix(in srgb, var(--color-accent) 12%, transparent) 0px, transparent 50%),
|
||||
var(--color-card);
|
||||
`,
|
||||
"gradient-radial": `
|
||||
position: relative;
|
||||
background: radial-gradient(circle at center, color-mix(in srgb, var(--color-card) 100%, var(--color-accent) 8%) 0%, var(--color-card) 70%);
|
||||
`,
|
||||
"neon-glow": `
|
||||
position: relative;
|
||||
background: var(--color-card);
|
||||
box-shadow:
|
||||
0 0 20px color-mix(in srgb, var(--color-accent) 15%, transparent),
|
||||
0 0 40px color-mix(in srgb, var(--color-accent) 10%, transparent),
|
||||
0 0 60px color-mix(in srgb, var(--color-accent) 5%, transparent);
|
||||
border: 1px solid color-mix(in srgb, var(--color-accent) 30%, transparent);
|
||||
`,
|
||||
"inset": `
|
||||
position: relative;
|
||||
background: color-mix(in srgb, var(--color-card) 95%, var(--color-accent) 5%);
|
||||
box-shadow:
|
||||
inset 2px 2px 4px color-mix(in srgb, var(--color-accent) 15%, transparent),
|
||||
inset -2px -2px 4px color-mix(in srgb, var(--color-background) 20%, transparent);
|
||||
`,
|
||||
"spotlight": `
|
||||
position: relative;
|
||||
background: radial-gradient(ellipse at top, color-mix(in srgb, var(--color-card) 100%, var(--color-accent) 12%) 0%, var(--color-card) 60%);
|
||||
`,
|
||||
"shadow-colored": `
|
||||
position: relative;
|
||||
background: var(--color-card);
|
||||
box-shadow: 0 4px 6px -1px color-mix(in srgb, var(--color-accent) 20%, transparent), 0 2px 4px -2px color-mix(in srgb, var(--color-accent) 20%, transparent);
|
||||
`,
|
||||
"glass-elevated": `
|
||||
position: relative;
|
||||
backdrop-filter: blur(8px);
|
||||
background: linear-gradient(to bottom right, color-mix(in srgb, var(--color-card) 80%, transparent), color-mix(in srgb, var(--color-card) 40%, transparent));
|
||||
box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
||||
border: 1px solid var(--color-card);
|
||||
`,
|
||||
"glass-depth": `
|
||||
position: relative;
|
||||
background: color-mix(in srgb, var(--color-card) 80%, transparent);
|
||||
backdrop-filter: blur(14px);
|
||||
box-shadow:
|
||||
inset 0 0 20px 0 color-mix(in srgb, var(--color-accent) 7.5%, transparent);
|
||||
border: 1px solid color-mix(in srgb, var(--color-accent) 7.5%, transparent);
|
||||
`,
|
||||
"gradient-bordered": `
|
||||
position: relative;
|
||||
background: linear-gradient(180deg, color-mix(in srgb, var(--color-card) 100%, var(--color-accent) 5%) -35%, var(--color-card) 65%);
|
||||
box-shadow: 0px 0px 10px 4px color-mix(in srgb, var(--color-accent) 4%, transparent);
|
||||
`,
|
||||
"layered-gradient": `
|
||||
position: relative;
|
||||
background:
|
||||
linear-gradient(color-mix(in srgb, var(--color-accent) 6%, transparent) 0%, transparent 59.26%),
|
||||
linear-gradient(var(--color-card) 0%, var(--color-card) 100%),
|
||||
var(--color-card);
|
||||
box-shadow:
|
||||
20px 18px 7px color-mix(in srgb, var(--color-accent) 0%, transparent),
|
||||
2px 2px 2px color-mix(in srgb, var(--color-accent) 6.5%, transparent),
|
||||
1px 1px 2px color-mix(in srgb, var(--color-accent) 2%, transparent);
|
||||
border: 2px solid var(--color-secondary-cta);
|
||||
`,
|
||||
};
|
||||
|
||||
export const getGradientBorderedPseudo = (cardStyle: CardStyleVariant): string => {
|
||||
if (cardStyle !== "gradient-bordered") return '';
|
||||
|
||||
return `
|
||||
.card::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
inset: 0;
|
||||
padding: 1px;
|
||||
border-radius: inherit;
|
||||
background: linear-gradient(
|
||||
160deg,
|
||||
color-mix(in srgb, var(--color-accent) 25%, transparent) 0%,
|
||||
color-mix(in srgb, var(--color-accent) 5%, transparent) 35%,
|
||||
color-mix(in srgb, var(--color-foreground) 5%, transparent) 75%,
|
||||
color-mix(in srgb, var(--color-background-accent) 15%, transparent) 100%
|
||||
);
|
||||
-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
|
||||
-webkit-mask-composite: xor;
|
||||
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
|
||||
mask-composite: exclude;
|
||||
}
|
||||
`;
|
||||
};
|
||||
|
||||
48
src/providers/themeProvider/styles/primaryButtonStyles.ts
Normal file
48
src/providers/themeProvider/styles/primaryButtonStyles.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import type { PrimaryButtonStyleVariant } from "../config/types";
|
||||
|
||||
export const primaryButtonStyleMap: Record<PrimaryButtonStyleVariant, string> = {
|
||||
gradient: `
|
||||
background: linear-gradient(to bottom, color-mix(in srgb, var(--color-primary-cta) 83%, transparent), var(--color-primary-cta));
|
||||
box-shadow: color-mix(in srgb, var(--color-background) 25%, transparent) 0px 1px 1px 0px inset, color-mix(in srgb, var(--color-primary-cta) 15%, transparent) 3px 3px 3px 0px;
|
||||
`,
|
||||
shadow: `
|
||||
background: var(--color-primary-cta);
|
||||
box-shadow: 2.10837px 3.16256px 9.48767px color-mix(in srgb, var(--color-accent) 40%, transparent);
|
||||
`,
|
||||
flat: `
|
||||
background: var(--color-primary-cta);
|
||||
box-shadow: none;
|
||||
`,
|
||||
"layered-depth": `
|
||||
background: linear-gradient(to bottom, color-mix(in srgb, var(--color-primary-cta) 100%, #ffffff 20%), color-mix(in srgb, var(--color-primary-cta) 100%, #000000 40%));
|
||||
box-shadow:
|
||||
2.10837px 3.16256px 9.48767px color-mix(in srgb, var(--color-accent) 40%, transparent),
|
||||
inset 0 0 1.05419px 3.16256px color-mix(in srgb, var(--color-secondary-cta) 0%, transparent),
|
||||
inset 0 6.32511px 5.27093px color-mix(in srgb, var(--color-accent) 50%, transparent);
|
||||
border: 1px solid color-mix(in srgb, var(--color-primary-cta) 100%, #000000 60%);
|
||||
`,
|
||||
"radial-glow": `
|
||||
background:
|
||||
radial-gradient(circle at 0% 0%, color-mix(in srgb, var(--color-accent) 40%, transparent) 0%, transparent 45%),
|
||||
radial-gradient(circle at 100% 100%, color-mix(in srgb, var(--color-accent) 40%, transparent) 0%, transparent 45%),
|
||||
var(--color-foreground);
|
||||
box-shadow: 2.10837px 3.16256px 9.48767px color-mix(in srgb, var(--color-accent) 30%, transparent);
|
||||
`,
|
||||
"diagonal-gradient": `
|
||||
background: linear-gradient(to bottom right, color-mix(in srgb, var(--color-primary-cta) 65%, transparent), var(--color-accent));
|
||||
box-shadow: 2.10837px 3.16256px 9.48767px color-mix(in srgb, var(--color-accent) 30%, transparent);
|
||||
`,
|
||||
"neon-glow-border": `
|
||||
background: var(--color-primary-cta);
|
||||
border: 2px solid var(--color-accent);
|
||||
box-shadow:
|
||||
0 0 10px color-mix(in srgb, var(--color-accent) 40%, transparent),
|
||||
0 0 20px color-mix(in srgb, var(--color-accent) 20%, transparent),
|
||||
inset 0 0 10px color-mix(in srgb, var(--color-accent) 15%, transparent);
|
||||
`,
|
||||
"outline": `
|
||||
background: var(--color-foreground);
|
||||
border: 2px solid var(--color-accent);
|
||||
box-shadow: none;
|
||||
`,
|
||||
};
|
||||
38
src/providers/themeProvider/styles/secondaryButtonStyles.ts
Normal file
38
src/providers/themeProvider/styles/secondaryButtonStyles.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { SecondaryButtonStyleVariant } from "../config/types";
|
||||
|
||||
export const secondaryButtonStyleMap: Record<SecondaryButtonStyleVariant, string> = {
|
||||
glass: `
|
||||
backdrop-filter: blur(8px);
|
||||
background: linear-gradient(to bottom right, color-mix(in srgb, var(--color-secondary-cta) 80%, transparent), var(--color-secondary-cta));
|
||||
box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
||||
border: 1px solid var(--color-secondary-cta);
|
||||
`,
|
||||
outline: `
|
||||
background: var(--color-secondary-cta);
|
||||
box-shadow: none;
|
||||
border: 1px solid color-mix(in srgb, var(--color-accent) 35%, transparent);
|
||||
`,
|
||||
solid: `
|
||||
background: var(--color-secondary-cta);
|
||||
box-shadow: none;
|
||||
`,
|
||||
layered: `
|
||||
background:
|
||||
linear-gradient(color-mix(in srgb, var(--color-accent) 5%, transparent) 0%, transparent 59.26%),
|
||||
linear-gradient(var(--color-secondary-cta), var(--color-secondary-cta)),
|
||||
linear-gradient(var(--color-secondary-cta), var(--color-secondary-cta)),
|
||||
linear-gradient(color-mix(in srgb, var(--color-accent) 5%, transparent) 0%, transparent 59.26%),
|
||||
linear-gradient(color-mix(in srgb, var(--color-secondary-cta) 60%, transparent), color-mix(in srgb, var(--color-secondary-cta) 60%, transparent)),
|
||||
var(--color-secondary-cta);
|
||||
box-shadow:
|
||||
2.10837px 3.16256px 9.48767px color-mix(in srgb, var(--color-accent) 10%, transparent);
|
||||
border: 1px solid var(--color-secondary-cta);
|
||||
`,
|
||||
"radial-glow": `
|
||||
background:
|
||||
radial-gradient(circle at 0% 0%, color-mix(in srgb, var(--color-accent) 15%, transparent) 0%, transparent 40%),
|
||||
radial-gradient(circle at 100% 100%, color-mix(in srgb, var(--color-accent) 15%, transparent) 0%, transparent 40%),
|
||||
var(--color-secondary-cta);
|
||||
box-shadow: 2.10837px 3.16256px 9.48767px color-mix(in srgb, var(--color-accent) 10%, transparent);
|
||||
`,
|
||||
};
|
||||
Reference in New Issue
Block a user