Skip to content

Commit

Permalink
Split normalised and enhanced system styling
Browse files Browse the repository at this point in the history
  • Loading branch information
Egor Kloos committed Jan 16, 2024
1 parent 34e9589 commit 8561da2
Show file tree
Hide file tree
Showing 10 changed files with 177 additions and 156 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ Import via NPM:
npm i @dutchcelt/system.css
```

If you wish to use the layout and form validations you will need to switch the 'system enhancement' on:

```
<html lang="en" style="--system-enhanced: var(--ON)">
```

### Style API

System.css has a number of custom properties for you to use.
Expand Down
4 changes: 2 additions & 2 deletions example.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en" style="--system-enhanced: var(--ON)">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
Expand All @@ -8,7 +8,7 @@
<meta name="keywords" content="system, css, framework,classless css" />
<link rel="stylesheet" href="index.css" />
</head>
<body>
<body class="system">
<header>
<h3>system.css</h3>
<nav>
Expand Down
2 changes: 1 addition & 1 deletion forms.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en" style="--system-enhanced: var(--ON)">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en" style="--system-enhanced: var(--ON)">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
Expand Down
4 changes: 2 additions & 2 deletions openprops.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="en" style="--system-enhanced: var(--ON)">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
Expand All @@ -8,7 +8,7 @@
<meta name="keywords" content="system, css, framework,classless css" />
<link rel="stylesheet" href="theme/openprops.css" />
</head>
<body>
<body class="system">
<header>
<h3>system.css</h3>
<nav>
Expand Down
148 changes: 75 additions & 73 deletions src/system-forms.css
Original file line number Diff line number Diff line change
@@ -1,89 +1,91 @@
@layer --system {
fieldset {
display: flex;
flex-direction: column;
position: relative;
border: 0;
padding: 0;
margin: 0;
@container --system (width > 1rem) {
form fieldset {
display: flex;
flex-direction: column;
position: relative;
border: 0;
padding: 0;
margin: 0;

&:has(legend) {
margin-block-start: calc(1ex - 0.5lh);
margin-block-end: 1ex;
padding-block-start: 0.5lh;
&:has(legend) {
margin-block-start: calc(1ex - 0.5lh);
margin-block-end: 1ex;
padding-block-start: 0.5lh;
}
}
}

form > div:has(button) {
margin-block-start: var(--system-spacing-main);
}

legend {
position: relative;
inset: 0.5lh 0;
}

fieldset:has(:user-invalid),
form:has(:user-invalid),
form :user-invalid:not(:focus-visible) {
position: relative;
outline: var(--system-stroke-thin) solid var(--system-invalid-color);
&::before {
position: absolute;
margin-inline-start: max(
calc(var(--system-spacing-page-inline) * -1),
calc(var(--system-spacing-double) * -1)
);
content: '';
width: 0px;
height: 100%;
display: block;
border-inline-end-width: 0;
border-inline-end-style: solid;
border-inline-end-color: var(--system-invalid-color);
form > div:has(button) {
margin-block-start: var(--system-spacing-main);
}
&:is(input) {
border-color: var(--system-invalid-color);

form legend {
position: relative;
inset: 0.5lh 0;
}
&:is(fieldset) {
outline: 0;

form fieldset:has(:user-invalid),
form:has(:user-invalid),
form :user-invalid:not(:focus-visible) {
position: relative;
outline: var(--system-stroke-thin) solid var(--system-invalid-color);
&::before {
border-inline-end-width: var(--system-stroke-thick);
position: absolute;
margin-inline-start: max(
calc(var(--system-spacing-page-inline) * -1),
calc(var(--system-spacing-double) * -1)
);
content: '';
width: 0px;
height: 100%;
display: block;
border-inline-end-width: 0;
border-inline-end-style: solid;
border-inline-end-color: var(--system-invalid-color);
}
}
&:is(form) {
outline: 0;
&::before {
border-inline-end-width: var(--system-stroke-thin);
&:is(input) {
border-color: var(--system-invalid-color);
}
&:is(fieldset) {
outline: 0;
&::before {
border-inline-end-width: var(--system-stroke-thick);
}
}
&:is(form) {
outline: 0;
&::before {
border-inline-end-width: var(--system-stroke-thin);
}
}
}
}

fieldset > :is(p, div, fieldset) {
display: flex;
flex-direction: column;
align-items: start;
justify-items: start;
margin-block: calc((1lh - 1em) / 2);
gap: calc((1lh - 1em) / 2);
border: 0;
padding: 0;
form fieldset > :is(p, div, fieldset) {
display: flex;
flex-direction: column;
align-items: start;
justify-items: start;
margin-block: calc((1lh - 1em) / 2);
gap: calc((1lh - 1em) / 2);
border: 0;
padding: 0;

&:has([type='checkbox'], [type='radio']) {
display: grid;
grid-template-columns: min-content 1fr;
row-gap: calc(1em - 1ex);
column-gap: 1ch;
padding-block: calc(1em - 1ex);
font-family: var(--system-font-family-data);
font-size: var(--system-font-size-m);
line-height: var(--system-line-height-compact);
}
&:has([type='checkbox'], [type='radio']) {
display: grid;
grid-template-columns: min-content 1fr;
row-gap: calc(1em - 1ex);
column-gap: 1ch;
padding-block: calc(1em - 1ex);
font-family: var(--system-font-family-data);
font-size: var(--system-font-size-m);
line-height: var(--system-line-height-compact);
}

&:is(fieldset):has(:user-valid) {
& input {
accent-color: initial;
outline: 0;
&:is(fieldset):has(:user-valid) {
& input {
accent-color: initial;
outline: 0;
}
}
}
}
Expand Down
125 changes: 78 additions & 47 deletions src/system-layout.css
Original file line number Diff line number Diff line change
@@ -1,58 +1,89 @@
@layer --system {
body {
--viewport-padding: minmax(var(--system-spacing-page-inline), 1fr);
--content-width: minmax(
calc(var(--system-dimension-min-width) - (var(--system-spacing-page-inline) * 2)),
var(--system-dimension-content-width)
);

display: grid;
grid-template-columns:
[--viewport-start] var(--viewport-padding) [--content-start] var(--content-width) [--content-end] var(
--viewport-padding
)
[--viewport-end];
}
body > :is(header, footer) {
display: grid;
grid-template-columns: subgrid;
grid-column: --viewport-start / --viewport-end;
padding-block: var(--system-spacing-main);
@container --system (width > 1rem) {
body {
--viewport-padding: minmax(var(--system-spacing-page-inline), 1fr);
--content-width: minmax(
calc(var(--system-dimension-min-width) - (var(--system-spacing-page-inline) * 2)),
var(--system-dimension-content-width)
);

& > * {
grid-column: --content-start / --content-end;
margin: 0;
padding: 0;
display: grid;
grid-template-columns:
[--viewport-start] var(--viewport-padding) [--content-start] var(--content-width) [--content-end] var(
--viewport-padding
)
[--viewport-end];
margin: unset;
}
}

main {
/* Center main in page */
grid-column: --content-start / --content-end;
container: --content / inline-size;
padding-block: clamp(
var(--system-spacing-main) * 2,
var(--system-spacing-page-inline),
var(--system-spacing-main) * 4
);
/* Waiting on margin-trim */

& > *:first-child {
margin-block-start: unset;
body > :is(header, footer) {
display: grid;
grid-template-columns: subgrid;
grid-column: --viewport-start / --viewport-end;
padding-block: var(--system-spacing-main);

& > * {
grid-column: --content-start / --content-end;
margin: 0;
padding: 0;
}
}

& > *:last-child {
margin-block-end: unset;
body > header {
background: var(--system-surface-color);

& > :is(h1, h2, h3),
& > p:only-child {
font-weight: var(--system-font-weight-extralight);
font-family: var(--system-font-family-display);
font-size: var(--system-font-size-xxl);
color: var(--system-gray-text);
}
& > nav {
font-family: var(--system-font-family-interactive);
& [href] {
color: var(--system-link-text);
}
& [aria-current='page'] {
pointer-events: none;
text-decoration: none;
color: currentcolor;
}
}
}
}

body > header > nav {
display: flex;
column-gap: var(--system-spacing-column-gap);
margin-block-start: var(--system-spacing-single);
}
body > :is(header, main, footer):not(:has(*)) {
display: none;
}

body > :is(header, main, footer):not(:has(*)) {
display: none;
body > main {
/* Center main in page */
grid-column: --content-start / --content-end;
container: --content / inline-size;
padding-block: clamp(
var(--system-spacing-main) * 2,
var(--system-spacing-page-inline),
var(--system-spacing-main) * 4
);
/* Waiting on margin-trim */

& > *:first-child {
margin-block-start: unset;
}

& > *:last-child {
margin-block-end: unset;
}
}

body > header > nav {
display: flex;
column-gap: var(--system-spacing-column-gap);
margin-block-start: var(--system-spacing-single);
}

body > :is(header, main, footer):not(:has(*)) {
display: none;
}
}
}
8 changes: 8 additions & 0 deletions src/system-properties.css
Original file line number Diff line number Diff line change
Expand Up @@ -111,3 +111,11 @@
inherits: true;
initial-value: VisitedText;
}

@layer --system {
:root {
--OFF: ;
--ON: initial;
--system-enhanced: var(--OFF);
}
}
Loading

0 comments on commit 8561da2

Please sign in to comment.