@mixin baseTheme { --font-sans: "Inter", sans-serif; --font-mono: "Roboto Mono", monospace; --font-icon: "Material Icons"; } @mixin darkTheme { // Background color --primary-color: theme("colors.true-gray.900"); // Light Background color --primary-light-color: theme("colors.dark.600"); // Dark Background color --primary-dark-color: theme("colors.true-gray.800"); // Text color --secondary-color: theme("colors.true-gray.400"); // Light Text color --secondary-light-color: theme("colors.true-gray.500"); // Dark Text color --secondary-dark-color: theme("colors.true-gray.100"); // Border color --divider-color: theme("colors.true-gray.800"); // Light Border color --divider-light-color: theme("colors.dark.500"); // Dark Border color --divider-dark-color: theme("colors.dark.300"); // Error color --error-color: theme("colors.warm-gray.800"); // Tooltip color --tooltip-color: theme("colors.true-gray.100"); // Popover color --popover-color: theme("colors.dark.700"); // Editor theme --editor-theme: "merbivore_soft"; } @mixin lightTheme { // Background color --primary-color: theme("colors.white"); // Light Background color --primary-light-color: theme("colors.true-gray.50"); // Dark Background color --primary-dark-color: theme("colors.true-gray.100"); // Text color --secondary-color: theme("colors.true-gray.500"); // Light Text color --secondary-light-color: theme("colors.true-gray.400"); // Dark Text color --secondary-dark-color: theme("colors.true-gray.900"); // Border color --divider-color: theme("colors.true-gray.200"); // Light Border color --divider-light-color: theme("colors.true-gray.100"); // Dark Border color --divider-dark-color: theme("colors.true-gray.300"); // Error color --error-color: theme("colors.yellow.100"); // Tooltip color --tooltip-color: theme("colors.true-gray.800"); // Popover color --popover-color: theme("colors.white"); // Editor theme --editor-theme: "textmate"; } @mixin blackTheme { // Background color --primary-color: theme("colors.dark.900"); // Light Background color --primary-light-color: theme("colors.true-gray.900"); // Dark Background color --primary-dark-color: theme("colors.dark.800"); // Text color --secondary-color: theme("colors.true-gray.400"); // Light Text color --secondary-light-color: theme("colors.true-gray.500"); // Dark Text color --secondary-dark-color: theme("colors.true-gray.100"); // Border color --divider-color: theme("colors.true-gray.800"); // Light Border color --divider-light-color: theme("colors.dark.700"); // Dark Border color --divider-dark-color: theme("colors.dark.300"); // Error color --error-color: theme("colors.warm-gray.900"); // Tooltip color --tooltip-color: theme("colors.true-gray.100"); // Popover color --popover-color: theme("colors.dark.700"); // Editor theme --editor-theme: "twilight"; } @mixin greenTheme { // Accent color --accent-color: theme("colors.green.500"); // Light Accent color --accent-light-color: theme("colors.green.400"); // Dark Accent color --accent-dark-color: theme("colors.green.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.green.200"); // Gradient via --gradient-via-color: theme("colors.green.400"); // Gradient to --gradient-to-color: theme("colors.green.600"); } @mixin tealTheme { // Accent color --accent-color: theme("colors.teal.500"); // Light Accent color --accent-light-color: theme("colors.teal.400"); // Dark Accent color --accent-dark-color: theme("colors.teal.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.teal.200"); // Gradient via --gradient-via-color: theme("colors.teal.400"); // Gradient to --gradient-to-color: theme("colors.teal.600"); } @mixin blueTheme { // Accent color --accent-color: theme("colors.blue.500"); // Light Accent color --accent-light-color: theme("colors.blue.400"); // Dark Accent color --accent-dark-color: theme("colors.blue.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.blue.200"); // Gradient via --gradient-via-color: theme("colors.blue.400"); // Gradient to --gradient-to-color: theme("colors.blue.600"); } @mixin indigoTheme { // Accent color --accent-color: theme("colors.indigo.500"); // Light Accent color --accent-light-color: theme("colors.indigo.400"); // Dark Accent color --accent-dark-color: theme("colors.indigo.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.indigo.200"); // Gradient via --gradient-via-color: theme("colors.indigo.400"); // Gradient to --gradient-to-color: theme("colors.indigo.600"); } @mixin purpleTheme { // Accent color --accent-color: theme("colors.purple.500"); // Light Accent color --accent-light-color: theme("colors.purple.400"); // Dark Accent color --accent-dark-color: theme("colors.purple.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.purple.200"); // Gradient via --gradient-via-color: theme("colors.purple.400"); // Gradient to --gradient-to-color: theme("colors.purple.600"); } @mixin yellowTheme { // Accent color --accent-color: theme("colors.yellow.500"); // Light Accent color --accent-light-color: theme("colors.yellow.400"); // Dark Accent color --accent-dark-color: theme("colors.yellow.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.yellow.200"); // Gradient via --gradient-via-color: theme("colors.yellow.400"); // Gradient to --gradient-to-color: theme("colors.yellow.600"); } @mixin orangeTheme { // Accent color --accent-color: theme("colors.orange.500"); // Light Accent color --accent-light-color: theme("colors.orange.400"); // Dark Accent color --accent-dark-color: theme("colors.orange.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.orange.200"); // Gradient via --gradient-via-color: theme("colors.orange.400"); // Gradient to --gradient-to-color: theme("colors.orange.600"); } @mixin redTheme { // Accent color --accent-color: theme("colors.red.500"); // Light Accent color --accent-light-color: theme("colors.red.400"); // Dark Accent color --accent-dark-color: theme("colors.red.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.red.200"); // Gradient via --gradient-via-color: theme("colors.red.400"); // Gradient to --gradient-to-color: theme("colors.red.600"); } @mixin pinkTheme { // Accent color --accent-color: theme("colors.pink.500"); // Light Accent color --accent-light-color: theme("colors.pink.400"); // Dark Accent color --accent-dark-color: theme("colors.pink.600"); // Light Contrast color --accent-contrast-color: theme("colors.white"); // Gradient from --gradient-from-color: theme("colors.pink.200"); // Gradient via --gradient-via-color: theme("colors.pink.400"); // Gradient to --gradient-to-color: theme("colors.pink.600"); } :root { @include baseTheme; @include darkTheme; @include greenTheme; } :root.light { @include lightTheme; } :root.dark { @include darkTheme; } :root.black { @include blackTheme; } :root[data-accent="blue"] { @include blueTheme; } :root[data-accent="green"] { @include greenTheme; } :root[data-accent="teal"] { @include tealTheme; } :root[data-accent="indigo"] { @include indigoTheme; } :root[data-accent="purple"] { @include purpleTheme; } :root[data-accent="orange"] { @include orangeTheme; } :root[data-accent="pink"] { @include pinkTheme; } :root[data-accent="red"] { @include redTheme; } :root[data-accent="yellow"] { @include yellowTheme; } @mixin fontSmall { // Font size --body-font-size: 0.75rem; // Line height --body-line-height: 1rem; // Upper primary sticky fold --upper-primary-sticky-fold: 4.125rem; // Upper secondary sticky fold --upper-secondary-sticky-fold: 6.125rem; // Upper tertiary sticky fold --upper-tertiary-sticky-fold: 8.188rem; // Lower primary sticky fold --lower-primary-sticky-fold: 3rem; // Lower secondary sticky fold --lower-secondary-sticky-fold: 5rem; // Sidebar primary sticky fold --sidebar-primary-sticky-fold: 2rem; // Sidebar secondary sticky fold --sidebar-secondary-sticky-fold: 4rem; } @mixin fontMedium { // Font size --body-font-size: 0.875rem; // Line height --body-line-height: 1.25rem; // Upper primary sticky fold --upper-primary-sticky-fold: 4.375rem; // Upper secondary sticky fold --upper-secondary-sticky-fold: 6.625rem; // Upper tertiary sticky fold --upper-tertiary-sticky-fold: 8.813rem; // Lower primary sticky fold --lower-primary-sticky-fold: 3.25rem; // Lower secondary sticky fold --lower-secondary-sticky-fold: 5.5rem; // Sidebar primary sticky fold --sidebar-primary-sticky-fold: 2.25rem; // Sidebar secondary sticky fold --sidebar-secondary-sticky-fold: 4.5rem; } @mixin fontLarge { // Font size --body-font-size: 1rem; // Line height --body-line-height: 1.5rem; // Upper primary sticky fold --upper-primary-sticky-fold: 4.625rem; // Upper secondary sticky fold --upper-secondary-sticky-fold: 7.125rem; // Upper tertiary sticky fold --upper-tertiary-sticky-fold: 9.5rem; // Lower primary sticky fold --lower-primary-sticky-fold: 3.5rem; // Lower secondary sticky fold --lower-secondary-sticky-fold: 6rem; // Sidebar primary sticky fold --sidebar-primary-sticky-fold: 2.5rem; // Sidebar secondary sticky fold --sidebar-secondary-sticky-fold: 5rem; } :root[data-font-size="small"] { @include fontSmall; } :root[data-font-size="medium"] { @include fontMedium; } :root[data-font-size="large"] { @include fontLarge; }