---
# System prepended metadata

title: css design system

---

# css design system

[Organized SCSS Folder Structures for Design Systems](https://blog.prototypr.io/organized-scss-folder-structures-for-design-systems-ecb861f1522c)
```bash=
pm init svelte@next sv-skd-urql ; cd $_ ; pnpm i 
pm i -D @urql/svelte graphql
mkdir src/lib
mkdir -p src/lib/patterns src/lib/patterns/components src/lib/patterns/objects src/lib/patterns/templates
mkdir -p src/lib/graphql src/lib/graphql/queries
touch src/lib/types.ts
touch src/lib/styles.css
touch src/routes/__layout.svelte
code .
```

## links

Design system blog posts

* [Building your own Modern CSS Design System](https://dev.to/rockykev/building-your-own-modern-css-design-system-32kd)
* [Building a “utility-first” design system (part 1)](https://uxdesign.cc/building-utility-first-design-systems-part-1-52ce020630b)
* [designs systems](https://www.designsystems.com/)
* [design system gallery](https://designsystemsrepo.com/design-systems-recent/)
  * [Orbit](https://orbit.kiwi/components/breadcrumbs/) 


## tools

### colors 

* [Color palette generator to generate CSS variables](https://palettolithic.com/)

### typography / typscaling

* [baseline typesale generator](https://baseline.is/tools/type-scale-generator/)
* [typescale generator](https://type-scale.com/)
* [modulear scale](https://www.modularscale.com/)
* [Vertical Rhythm Reset](https://jhildenbiddle.github.io/vertical-rhythm-reset/#:~:text=Vertical%20Rhythm%20Reset%20simplifies%20grid,needed%20for%20proper%20grid%20alignment.)

### spacing 

* [Create your design system, part 4: Spacing](https://medium.com/codyhouse/create-your-design-system-part-4-spacing-895c9213e2b9)


## box shadow

* [box shadow generator](https://getcssscan.com/css-box-shadow-examples)

## example

```css=
:root {
 --baseFontSize: 1rem;
 --baseNavSize: 0.64rem;
 --smallFontSize: 0.8rem;
 --smallestFontSie: 0.512rem;
}
```

## margins
Just use margin bottom will save your headaches.

## elements

* [Card](https://youtu.be/LwYZTKxj-do?t=1411)

## organize colors

Start with your brand colors, work out your layout colors, then your denotive colors, from their your interactive colors in shades.

* **Brand Colors**
* **Layout Colors**:   `background`, `foreground`, `title text`, `subtitle text`, `body text`
* See if primary brand color works on both a light and dark background
* **Low Contrast Neutral Colors**
  * On the light side it's going to be a very light gray `sidebars`, `form fields`
* **Higher Contrast Background Color**
* Establishing your whites and your blacks.  Note white / black don't have to be absolute.
* **lower Contrast Colors** as reduced version of your absolute blank / white.
* Color that is low contrast but useful on the light background and high contrast but useful on the dark background.  `sub titles`, `body text`
* **Denotive**: the colors actually mean something.
  * **Error state**: a state of something having gone wrong.
  * **Success messaging**: if brand is green then can use it as your success color.
    * Use the same denotive colors for both light and dark backgrounds.
  * **Disabled state**: Essnetially low opacity: different for light and dark bg.
    *  Enough contrast that they are readable
* **Interactive Colors** For things that people can touch or click.
  * Try to use as few as possible 
  * Select a color, 
  * Add a lighter and darker version: `hover sttute`
  * Event lighter / darker version: `rollover state`, `pushed in`, `focused`
    * Use +1, -1 in naming convention 








