@ou-imdt/css
Version:
The IMDT CSS library styles native elements with light, extendable CSS. It is developed for Interactive Media Developers at the Open University.
265 lines (218 loc) • 6.14 kB
CSS
:root,
:host {
/* Semantic colours */
--neutral: #474045;
--information: #003E8C;
--success: #006539;
--warning: #9B3900;
--danger: #9B0509;
/* calc bgs and text colors */
--neutral-light: color-mix(in srgb, var(--neutral) 20%, var(--mix-color, white));
--neutral-dark: var(--neutral);
--information-light: color-mix(in srgb, var(--information) 20%, var(--mix-color, white));
--information-dark: var(--information);
--success-light: color-mix(in srgb, var(--success) 20%, var(--mix-color, white));
--success-dark: color-mix(in srgb, var(--success) 75%, #000000);
--warning-light: color-mix(in srgb, var(--warning) 20%, var(--mix-color, white));
--warning-dark: var(--warning);
--danger-light: color-mix(in srgb, var(--danger) 20%, var(--mix-color, white));
--danger-dark: var(--danger);
/* Accent colours */
--accent1: #AF216B;
--accent2: #21A0B0;
--accent3: #B09F21;
--accent4: #679700;
--accent5: #67138C;
--accent6: #BE5400;
--accent1-light: color-mix(in srgb, var(--accent1) 20%, var(--mix-color, white));
/* accent2-dark is not used in accent1 as contrast with base color is adequent */
--accent1-dark: color-mix(in srgb, var(--accent1) 70%, #000000);
--accent2-light: color-mix(in srgb, var(--accent2) 20%, var(--mix-color, white));
--accent2-dark: color-mix(in srgb, var(--accent2) 70%, #000000);
--accent3-light: color-mix(in srgb, var(--accent3) 20%, var(--mix-color, white));
--accent3-dark: color-mix(in srgb, var(--accent3) 65%, #000000);
--accent4-light: color-mix(in srgb, var(--accent4) 20%, var(--mix-color, white));
--accent4-dark: color-mix(in srgb, var(--accent4) 75%, #000000);
--accent5-light: color-mix(in srgb, var(--accent5) 20%, var(--mix-color, white));
/* accent5-dark is not used in accent5 as contrast with base color is adequent */
--accent5-dark: color-mix(in srgb, var(--accent5) 70%, #000000);
--accent6-light: color-mix(in srgb, var(--accent6) 20%, var(--mix-color, white));
--accent6-dark: color-mix(in srgb, var(--accent6) 75%, #000000);
}
/* Palette classes */
.neutral,
.information,
.success,
.warning,
.danger,
.input,
.accent1,
.accent2,
.accent3,
.accent4,
.accent5,
.accent6 {
--color-dark: var(--color);
--color-light: color-mix(in srgb, var(--color) 20%, var(--mix-color));
&:not(.border,
.fg,
.bg,
.border-color,
.bg-color,
.stroke,
.fill,
.use-true-color,
button,
progress,
details) {
background-color: var(--color-light);
color: var(--color-dark);
accent-color: var(--color);
}
&:where(progress) {
accent-color: var(--color);
}
&:where(button) {
color: var(--color-dark);
border-color: var(--color-dark);
accent-color: var(--color);
&:disabled {
--btn-disabled-fg: var(--color-dark);
border-color: var(--color-dark);
filter: opacity(0.5);
}
&:hover:not(:disabled) {
border-color: var(--core2);
background-color: var(--color-dark);
}
}
&:where(details) {
border-color: var(--color-dark);
background-color: initial;
&[open]>summary,
>summary {
color: var(--color-dark);
background-color: var(--color-light);
accent-color: var(--color);
}
}
&.fg {
color: var(--color-dark);
}
&.stroke svg *,
/* ^ target a whole svg from parent element*/
&.stroke {
stroke: var(--color-dark);
}
&.fill svg *,
/* ^ target a whole svg from parent element*/
&.fill {
fill: var(--color-dark);
}
&.bg {
background-color: var(--color-light);
}
&.bg-color:not(details) {
background-color: var(--color-dark);
color: var(--mix-color, white);
}
&details.bg-color summary {
background-color: var(--color-dark);
color: var(--mix-color, white);
}
&.border {
border: var(--border);
border-color: var(--color-light)
}
&.border-color {
border: var(--border);
border-color: var(--color)
}
&.use-true,
&.use-true-color {
--color-dark: var(--color);
--color-light: var(--color);
}
}
/* Semantic Classes */
.neutral {
--color: var(--neutral);
--color-dark: var(--neutral-dark);
--color-light: var(--neutral-light);
}
.information {
--color: var(--information);
--color-dark: var(--information-dark);
--color-light: var(--information-light);
}
.success {
--color: var(--success);
--color-dark: var(--success-dark);
--color-light: var(--success-light);
}
.warning {
--color: var(--warning);
--color-dark: var(--warning-dark);
--color-light: var(--warning-light);
}
.danger {
--color: var(--danger);
--color-dark: var(--danger-dark);
--color-light: var(--danger-light);
}
/* sem-icon has been removed while font awesome is being decoupled from the project */
/* Class to auto prefix FA items to semantic classe e.g. feedback danger will style danger and also add the feedback icon danger */
/* .sem-icon {
&.information {
--content-icon: '\f05a' / "information";
}
&.success {
--content-icon: "\f058" / "success";
}
&.warning {
--content-icon: "\f06a" / "warning";
}
&.danger {
--content-icon: "\f071" / "danger";
}
&:not(:empty)::before {
margin-inline-end: 1ch;
font-weight: 900;
display: inline-block;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
font-family: 'Font Awesome 6 Free';
content: var(--content-icon)
}
} */
/* Accent Colours */
.accent1 {
--color: var(--accent1);
--color-dark: var(--accent1);
--color-light: var(--accent1-light);
}
.accent2 {
--color: var(--accent2);
--color-dark: var(--accent2-dark);
--color-light: var(--accent2-light);
}
.accent3 {
--color: var(--accent3);
--color-dark: var(--accent3-dark);
--color-light: var(--accent3-light);
}
.accent4 {
--color: var(--accent4);
--color-dark: var(--accent4-dark);
--color-light: var(--accent4-light);
}
.accent5 {
--color: var(--accent5);
--color-dark: var(--accent5);
--color-light: var(--accent5-light);
}
.accent6 {
--color: var(--accent6);
--color-dark: var(--accent6-dark);
--color-light: var(--accent6-light);
}