From 3ae855f98e9943e17acb1bab9ee74b895c21b4f6 Mon Sep 17 00:00:00 2001 From: vsjolander Date: Tue, 15 Jun 2021 17:08:07 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Design=20tokens,=20mixin?= =?UTF-8?q?s=20and=20classes=20for=20typography?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Design tokens and maps for typography that are used in mixins to create typography css. Also moved Chlorophyll css into hot module reloading and added .idea to gitignore ✅ Closes: #45 --- .gitignore | 3 +- .../.storybook/preview-head.html | 3 +- .../.storybook/preview.js | 1 + .../public/green-chlorophyll.css | 545 +++++++++--------- .../public/green-chlorophyll.css.map | 2 +- .../stories/css/button/Button.stories.svelte | 9 +- .../src/stories/css/button/Index.stories.mdx | 5 +- .../css/playground/Playground.stories.svelte | 5 +- .../stories/css/playground/Playground.svelte | 2 - .../css/typography/Typography.stories.svelte | 10 +- .../chlorophyll/src/scss/classes/_index.scss | 1 + .../src/scss/classes/typography/_index.scss | 24 + .../src/scss/mixins/typography/_index.scss | 13 + .../src/scss/mixins/typography/_reset.scss | 23 + .../src/scss/mixins/utility/_typography.scss | 3 +- .../src/scss/scss-tokens/_typography.scss | 107 +++- 16 files changed, 458 insertions(+), 298 deletions(-) diff --git a/.gitignore b/.gitignore index 1eb2b05e97..d300f2e33a 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,5 @@ coverage tsconfig.tsbuildinfo ## OS -.DS_Store \ No newline at end of file +.DS_Store +.idea \ No newline at end of file diff --git a/packages/chlorophyll-storybook/.storybook/preview-head.html b/packages/chlorophyll-storybook/.storybook/preview-head.html index c767d1dc6a..fe4260ed4e 100644 --- a/packages/chlorophyll-storybook/.storybook/preview-head.html +++ b/packages/chlorophyll-storybook/.storybook/preview-head.html @@ -1,9 +1,8 @@ - + \ No newline at end of file diff --git a/packages/chlorophyll-storybook/.storybook/preview.js b/packages/chlorophyll-storybook/.storybook/preview.js index 0c9f415fbd..4d475e313a 100644 --- a/packages/chlorophyll-storybook/.storybook/preview.js +++ b/packages/chlorophyll-storybook/.storybook/preview.js @@ -1,3 +1,4 @@ +import "../public/green-chlorophyll.css" export const parameters = { actions: { argTypesRegex: "^on[A-Z].*" }, diff --git a/packages/chlorophyll-storybook/public/green-chlorophyll.css b/packages/chlorophyll-storybook/public/green-chlorophyll.css index 36f50dfedf..0810d176b3 100644 --- a/packages/chlorophyll-storybook/public/green-chlorophyll.css +++ b/packages/chlorophyll-storybook/public/green-chlorophyll.css @@ -1,305 +1,302 @@ +/** + * Calculate the luminance for a color. + * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests + */ +/** + * Calculate the contrast ratio between two colors. + * See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests + */ +/** + * Determine whether to use dark or light text on top of given color. + * Returns black for dark text and white for light text. + */ /* Forward all mixins and variables so that they can be used by referencing a single file. Mixins and variables can be access using forward prefix like this -. Ie. 'button-base' (mixin), badge-padding (variable). */ -.ds-green .badge { - margin: 0; - display: block; - background: none; -} -.ds-green button, -.ds-green button[type=button] { - display: inline-block; - text-align: center; - text-decoration: none; - vertical-align: middle; - user-select: none; - border: 1px solid transparent; - border-radius: 0.25em; - background-color: #0092e1; - color: #fff; - padding: 0.5em 1em; -} -.ds-green button:hover, .ds-green button:active, -.ds-green button[type=button]:hover, -.ds-green button[type=button]:active { - background-color: #41b0ee; -} -.ds-green button.danger, -.ds-green button.delete { - background: #fff; - color: #d81a1a; - border-color: transparent; -} -.ds-green button.danger:hover, .ds-green button.danger:active, -.ds-green button.delete:hover, -.ds-green button.delete:active { - color: #fff; - background-color: #f03529; - border-color: transparent; -} -.ds-green button.delete.confirm { - background: #d81a1a; - color: #fff; - border-color: transparent; -} -.ds-green button.delete.confirm:hover, .ds-green button.delete.confirm:active { - color: #fff; - background-color: #f03529; - border-color: transparent; -} -.ds-green button.ghost { - background: #fff; - color: #333; - border-color: #333; -} -.ds-green button.ghost:hover, .ds-green button.ghost:active { - color: #fff; - background-color: #333; - border-color: transparent; -} -.ds-green button.link { - background: #fff; - color: #0092e1; - border-color: #0092e1; - border-color: transparent; -} -.ds-green button.link:hover, .ds-green button.link:active { - color: #fff; - background-color: #41b0ee; - border-color: transparent; -} -.ds-green button.link:hover, .ds-green button.link:active { - border-color: transparent; -} -.ds-green button[type=menu] { - background: #fff; - color: #0092e1; - border-color: #0092e1; - border-color: transparent; -} -.ds-green button[type=menu]:hover, .ds-green button[type=menu]:active { - color: #fff; - background-color: #41b0ee; - border-color: transparent; -} -.ds-green button[type=menu]:hover, .ds-green button[type=menu]:active { - border-color: transparent; -} -.ds-green button[type=reset] { - display: inline-block; - text-align: center; - text-decoration: none; - vertical-align: middle; - user-select: none; - border: 1px solid transparent; - border-radius: 0.25em; - background-color: #0092e1; - color: #fff; - padding: 0.5em 1em; - background: #d81a1a; - color: #fff; - border-color: transparent; -} -.ds-green button[type=reset]:hover, .ds-green button[type=reset]:active { - background-color: #41b0ee; -} -.ds-green button[type=reset]:hover, .ds-green button[type=reset]:active { - color: #fff; - background-color: #f03529; - border-color: transparent; -} -.ds-green button.secondary { - background: #fff; - color: #0092e1; - border-color: #0092e1; -} -.ds-green button.secondary:hover, .ds-green button.secondary:active { - color: #fff; - background-color: #41b0ee; - border-color: transparent; -} -.ds-green button[type=submit] { - display: inline-block; - text-align: center; - text-decoration: none; - vertical-align: middle; - user-select: none; - border: 1px solid transparent; - border-radius: 0.25em; - background-color: #0092e1; - color: #fff; - padding: 0.5em 1em; -} -.ds-green button[type=submit]:hover, .ds-green button[type=submit]:active { - background-color: #41b0ee; -} -.ds-green input[type=button] { - display: inline-block; - text-align: center; - text-decoration: none; - vertical-align: middle; - user-select: none; - border: 1px solid transparent; - border-radius: 0.25em; - background-color: #0092e1; - color: #fff; - padding: 0.5em 1em; - background: #fff; - color: #0092e1; - border-color: #0092e1; +/*.btn, +.btn[type='button'] { + @include button.base; + @include button.primary; +}*/ +.btn { + border: none; + background-color: transparent; + font-family: inherit; + padding: 0; + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + padding-left: 1rem; + padding-right: 1rem; + padding-bottom: 0.75rem; + padding-top: 0.75rem; + border-radius: 4px; + border: solid 1px; + font-weight: 500; } -.ds-green input[type=button]:hover, .ds-green input[type=button]:active { - background-color: #41b0ee; +@media screen and (-ms-high-contrast: active) { + .btn { + border: 2px solid currentcolor; + } } -.ds-green input[type=button]:hover, .ds-green input[type=button]:active { - color: #fff; - background-color: #41b0ee; - border-color: transparent; + +.btn-primary { + background: #0092e1; + color: black; + /*&:hover, + &:active { + color: tokens.$theme-light-secondary-opposite2; + background-color: tokens.$theme-light-secondary-color2; + border-color: transparent; + }*/ +} +.btn-primary:focus:not(:focus-visible) { + outline: 0; +} +.btn-primary:focus-visible { + outline-style: solid; + box-shadow: 0 0 0 4px #000099; + outline-color: transparent; } -.ds-green input[type=date] { - display: inline-block; - border: 1px solid #cecece; + +button:not([class]), a { + border: none; + background-color: transparent; + font-family: inherit; + padding: 0; + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + padding-left: 1rem; + padding-right: 1rem; + padding-bottom: 0.75rem; + padding-top: 0.75rem; border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + border: solid 1px; + font-weight: 500; + background: #0092e1; + color: black; + /*&:hover, + &:active { + color: tokens.$theme-light-secondary-opposite2; + background-color: tokens.$theme-light-secondary-color2; + border-color: transparent; + }*/ +} +@media screen and (-ms-high-contrast: active) { + button:not([class]), a { + border: 2px solid currentcolor; + } +} +button:not([class]):focus:not(:focus-visible), a:focus:not(:focus-visible) { + outline: 0; +} +button:not([class]):focus-visible, a:focus-visible { + outline-style: solid; + box-shadow: 0 0 0 4px #000099; + outline-color: transparent; } -.ds-green input[type=datetime] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; + +/*@use 'delete'; +@use 'ghost'; +@use 'link'; +@use 'menu'; +@use 'reset'; +@use 'secondary'; +@use 'submit';*/ +/*@use "../../tokens"; +@use "../button"; + +$selector: 'input:not([type])'; +$selector-button: 'input[type=button]'; +$selector-checkbox: 'input[type=checkbox]'; +$selector-color: 'input[type=color]'; +$selector-date: 'input[type=date]'; +$selector-datetime: 'input[type=datetime]'; +$selector-datetime-local: 'input[type=datetime-local]'; +$selector-email: 'input[type=email]'; +$selector-hidden: 'input[type=hidden]'; +$selector-image: 'input[type=image]'; +$selector-month: 'input[type=month]'; +$selector-number: 'input[type=number]'; +$selector-password: 'input[type=password]'; +$selector-radio: 'input[type=radio]'; +$selector-range: 'input[type=range]'; +$selector-reset: 'input[type=reset]'; +$selector-search: 'input[type=search]'; +$selector-submit: 'input[type=submit]'; +$selector-tel: 'input[type=tel]'; +$selector-text: 'input[type=text]'; +$selector-time: 'input[type=time]'; +$selector-url: 'input[type=url]'; +$selector-week: 'input[type=week]'; + +@mixin input-field { + display: tokens.$shape-input-display; + border: 1px solid tokens.$color-grey-400; + border-radius: tokens.$shape-input-border-radius; + color: tokens.$theme-light-background-opposite; + padding: tokens.$shape-input-padding-v tokens.$shape-input-padding-h; min-height: 44px; } -.ds-green input[type=datetime-local] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +@mixin button { + @include button.base; + @include button.secondary; } -.ds-green input[type=email] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +@mixin reset { + @include button.base; + @include button.danger-opposite; } -.ds-green input[type=month] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +@mixin submit { + @include button.base; } -.ds-green input[type=number] { - display: inline-block; - border: 1px solid #cecece; +*/ +.form-input { + background-color: transparent; + font-family: inherit; + padding: 0; + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + padding-left: 1rem; + padding-right: 1rem; + padding-bottom: 0.75rem; + padding-top: 0.75rem; border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + border: solid 1px; } -.ds-green input[type=password] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; +@media screen and (-ms-high-contrast: active) { + .form-input { + border: 2px solid currentcolor; + } } -.ds-green input[type=reset] { - display: inline-block; - text-align: center; - text-decoration: none; - vertical-align: middle; - user-select: none; - border: 1px solid transparent; - border-radius: 0.25em; - background-color: #0092e1; - color: #fff; - padding: 0.5em 1em; - background: #d81a1a; - color: #fff; - border-color: transparent; + +/*@use 'button'; +@use 'checkbox'; +@use 'color'; +@use 'date'; +@use 'datetime'; +@use 'datetime-local'; +@use 'email'; +@use 'file'; +@use 'hidden'; +@use 'image'; +@use 'month'; +@use 'number'; +@use 'password'; +@use 'radio'; +@use 'range'; +@use 'reset'; +@use 'search'; +@use 'submit'; +@use 'tel'; +@use 'text'; +@use 'time'; +@use 'url'; +@use 'week'; +*/ +body html { + font-size: 16px; +} +body body { + font-weight: 400; + font-family: 'SEBSansSerif',Arial,sans-serif; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} +.display-01 { + font-size: 3rem; + font-weight: 800; + line-height: 56px; + letter-spacing: 0; } -.ds-green input[type=reset]:hover, .ds-green input[type=reset]:active { - background-color: #41b0ee; + +h1 { + font-size: 2rem; + font-weight: 800; + line-height: 40px; + letter-spacing: 0; } -.ds-green input[type=reset]:hover, .ds-green input[type=reset]:active { - color: #fff; - background-color: #f03529; - border-color: transparent; + +h2 { + font-size: 1.5rem; + font-weight: 800; + line-height: 32px; + letter-spacing: 0; } -.ds-green input[type=search] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +h3 { + font-size: 1.25rem; + font-weight: 800; + line-height: 28px; + letter-spacing: 0; } -.ds-green input[type=submit] { - display: inline-block; - text-align: center; - text-decoration: none; - vertical-align: middle; - user-select: none; - border: 1px solid transparent; - border-radius: 0.25em; - background-color: #0092e1; - color: #fff; - padding: 0.5em 1em; + +h4 { + font-size: 1.25rem; + font-weight: 800; + line-height: 28px; + letter-spacing: 0; } -.ds-green input[type=submit]:hover, .ds-green input[type=submit]:active { - background-color: #41b0ee; + +h5 { + font-size: 1rem; + font-weight: 800; + line-height: 24px; + letter-spacing: 0; } -.ds-green input[type=tel] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +h6 { + font-size: 0.875rem; + font-weight: 800; + line-height: 20px; + letter-spacing: 0; } -.ds-green input:not([type]), -.ds-green input[type=text] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +p { + font-size: 1rem; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; } -.ds-green input[type=time] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +p.small { + font-size: 0.75rem; + font-weight: 400; + line-height: 20px; + letter-spacing: 0; } -.ds-green input[type=url] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +/*.ds-green { + @import 'badge'; + @import 'button'; + @import 'input'; +}*/ +.size-sm { + padding-left: 0.5rem; + padding-right: 0.5rem; + padding-bottom: 0.25rem; + padding-top: 0.25rem; + font-size: 0.75rem; + line-height: 1; } -.ds-green input[type=week] { - display: inline-block; - border: 1px solid #cecece; - border-radius: 4px; - color: #1a1a1a; - padding: 0 16px; - min-height: 44px; + +.size-lg { + padding-left: 1.5rem; + padding-right: 1.5rem; + padding-bottom: 1rem; + padding-top: 1rem; + font-size: 1.25rem; + line-height: 1.3; } /* import specific class like this: diff --git a/packages/chlorophyll-storybook/public/green-chlorophyll.css.map b/packages/chlorophyll-storybook/public/green-chlorophyll.css.map index 090bbfa616..fc18e3c2dd 100644 --- a/packages/chlorophyll-storybook/public/green-chlorophyll.css.map +++ b/packages/chlorophyll-storybook/public/green-chlorophyll.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../chlorophyll/src/scss/mixins/_index.scss","../../chlorophyll/src/scss/classes/badge/_base.scss","../../chlorophyll/src/scss/mixins/badge/_index.scss","../../chlorophyll/src/scss/classes/button/_base.scss","../../chlorophyll/src/scss/mixins/button/_index.scss","../../chlorophyll/src/scss/tokens/_shapes.scss","../../chlorophyll/src/scss/tokens/_themes.scss","../../chlorophyll/src/scss/classes/button/_delete.scss","../../chlorophyll/src/scss/classes/button/_ghost.scss","../../chlorophyll/src/scss/classes/button/_link.scss","../../chlorophyll/src/scss/classes/button/_menu.scss","../../chlorophyll/src/scss/classes/button/_reset.scss","../../chlorophyll/src/scss/classes/button/_secondary.scss","../../chlorophyll/src/scss/classes/button/_submit.scss","../../chlorophyll/src/scss/classes/input/_button.scss","../../chlorophyll/src/scss/classes/input/_date.scss","../../chlorophyll/src/scss/mixins/input/_index.scss","../../chlorophyll/src/scss/classes/input/_datetime.scss","../../chlorophyll/src/scss/classes/input/_datetime-local.scss","../../chlorophyll/src/scss/classes/input/_email.scss","../../chlorophyll/src/scss/classes/input/_month.scss","../../chlorophyll/src/scss/classes/input/_number.scss","../../chlorophyll/src/scss/classes/input/_password.scss","../../chlorophyll/src/scss/classes/input/_reset.scss","../../chlorophyll/src/scss/classes/input/_search.scss","../../chlorophyll/src/scss/classes/input/_submit.scss","../../chlorophyll/src/scss/classes/input/_tel.scss","../../chlorophyll/src/scss/classes/input/_text.scss","../../chlorophyll/src/scss/classes/input/_time.scss","../../chlorophyll/src/scss/classes/input/_url.scss","../../chlorophyll/src/scss/classes/input/_week.scss","../../chlorophyll/src/scss/index.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;ECCE;EACA;EACA;;ACHF;AAAA;ECGE,SCLe;EDMf;EACA;EACA;EACA;EACA;EACA,eCPqB;EDQrB,kBERoB;EFSpB,OERuB;EFSvB;;AAEA;AAAA;AAAA;EAEE,kBEZmB;;ACHvB;AAAA;EH2CE,YEjCmB;EFkCnB,OEjCsB;EFkCtB;;AAEA;AAAA;AAAA;EAEE,OEpCqB;EFqCrB,kBEtCkB;EFuClB;;AG9CJ;EHmDE,YE7CsB;EF8CtB,OE/CmB;EFgDnB;;AAEA;EAEE,OEjDqB;EFkDrB,kBEnDkB;EFoDlB;;AIhEJ;EJqEE,YE7DkB;EF8DlB,OE7DqB;EF8DrB,cE9DqB;;AFgErB;EAEE,OEnEgB;EFoEhB,kBEnEmB;EFoEnB;;AK7EJ;ELoBE,YEhBsB;EFiBtB,OEhByB;EFiBzB,cEjByB;EF6BzB;;AAVA;EAEE,OEnBwB;EFoBxB,kBErBqB;EFsBrB;;AAQF;EAEE;;AMvCJ;ENqBE,YEhBsB;EFiBtB,OEhByB;EFiBzB,cEjByB;EF6BzB;;AAVA;EAEE,OEnBwB;EFoBxB,kBErBqB;EFsBrB;;AAQF;EAEE;;AOtCJ;EPEE,SCLe;EDMf;EACA;EACA;EACA;EACA;EACA,eCPqB;EDQrB,kBERoB;EFSpB,OERuB;EFSvB;EA6CA,YE7CsB;EF8CtB,OE/CmB;EFgDnB;;AA7CA;EAEE,kBEZmB;;AFyDrB;EAEE,OEjDqB;EFkDrB,kBEnDkB;EFoDlB;;AQhEJ;ERoBE,YEhBsB;EFiBtB,OEhByB;EFiBzB,cEjByB;;AFmBzB;EAEE,OEnBwB;EFoBxB,kBErBqB;EFsBrB;;AS5BJ;ETEE,SCLe;EDMf;EACA;EACA;EACA;EACA;EACA,eCPqB;EDQrB,kBERoB;EFSpB,OERuB;EFSvB;;AAEA;EAEE,kBEZmB;;AQJvB;EVGE,SCLe;EDMf;EACA;EACA;EACA;EACA;EACA,eCPqB;EDQrB,kBERoB;EFSpB,OERuB;EFSvB;EASA,YEhBsB;EFiBtB,OEhByB;EFiBzB,cEjByB;;AFQzB;EAEE,kBEZmB;;AFqBrB;EAEE,OEnBwB;EFoBxB,kBErBqB;EFsBrB;;AW7BJ;EC0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AC/BF;ED0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AE/BF;EF0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AG/BF;EH0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AI/BF;EJ0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AK/BF;EL0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AM/BF;EN0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AO/BF;EnBGE,SCLe;EDMf;EACA;EACA;EACA;EACA;EACA,eCPqB;EDQrB,kBERoB;EFSpB,OERuB;EFSvB;EA6CA,YE7CsB;EF8CtB,OE/CmB;EFgDnB;;AA7CA;EAEE,kBEZmB;;AFyDrB;EAEE,OEjDqB;EFkDrB,kBEnDkB;EFoDlB;;AoBjEJ;ER0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AS/BF;ErBGE,SCLe;EDMf;EACA;EACA;EACA;EACA;EACA,eCPqB;EDQrB,kBERoB;EFSpB,OERuB;EFSvB;;AAEA;EAEE,kBEZmB;;AoBJvB;EV0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AW/BF;AAAA;EX0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;AY/BF;EZ0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;Aa/BF;Eb0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;Ac/BF;Ed0BE,SXrBc;EWsBd;EACA,eXnBoB;EWoBpB,OV9B0B;EU+B1B;EACA;;;Ae7BF;AAAA;AAAA;AAAA","file":"green-chlorophyll.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../chlorophyll/src/scss/functions/_index.scss","../../chlorophyll/src/scss/mixins/_index.scss","../../chlorophyll/src/scss/classes/button/_base.scss","../../chlorophyll/src/scss/mixins/button/_index.scss","../../chlorophyll/src/scss/mixins/utility/_spacing.scss","../../chlorophyll/src/scss/mixins/utility/_border.scss","../../chlorophyll/src/scss/scss-tokens/_border.scss","../../chlorophyll/src/scss/mixins/utility/_typography.scss","../../chlorophyll/src/scss/classes/button/_primary.scss","../../chlorophyll/src/scss/mixins/utility/_focus.scss","../../chlorophyll/src/scss/classes/button/_default.scss","../../chlorophyll/src/scss/classes/button/_index.scss","../../chlorophyll/src/scss/mixins/input/_index.scss","../../chlorophyll/src/scss/classes/input/_index.scss","../../chlorophyll/src/scss/mixins/typography/_reset.scss","../../chlorophyll/src/scss/scss-tokens/_typography.scss","../../chlorophyll/src/scss/classes/typography/_index.scss","../../chlorophyll/src/scss/mixins/typography/_index.scss","../../chlorophyll/src/scss/classes/_index.scss","../../chlorophyll/src/scss/index.scss"],"names":[],"mappings":"AA4QA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAWA;AAAA;AAAA;AAAA;ACnSA;AAAA;AAAA;AAAA;AAAA;ACEA;AAAA;AAAA;AAAA;AAAA;AAKA;ECEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ECNA;EACA;EAIA;EACA;ECdA,eCFO;EDMP;EEEA;;AJiBA;EDlBF;ICmBI;;;;AKxBJ;EL+BE;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;;AMnCA;EACE;;AAGF;EACE;EACA;EACA;;;ACNJ;EPOE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ECNA;EACA;EAIA;EACA;ECdA,eCFO;EDMP;EEEA;EJyBA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAXA;EOvBF;IPwBI;;;AMzBF;EACE;;AAGF;EACE;EACA;EACA;;;AELJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACsBA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;ACvBA;EDGE;EACA;EACA;EACA;EACA;EACA;EACA;ERDA;EACA;EAIA;EACA;ECdA,eCFO;EDMP;;AOaA;ECjBF;IDkBI;;;;ACfJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACCE;EACE,WCPa;;ADUf;EACE;EAEA,aATmB;EAUnB;EACA;EACA;;AETJ;ECDI,WFgDS;EEhDT,aFgDS;EEhDT,aFgDS;EEhDT,gBFgDS;;;AC1CX;ECNE,WDO2B;ECP3B,aDO2B;ECP3B,aDO2B;ECP3B,gBDO2B;;;AAD7B;ECNE,WDO2B;ECP3B,aDO2B;ECP3B,aDO2B;ECP3B,gBDO2B;;;AAD7B;ECNE,WDO2B;ECP3B,aDO2B;ECP3B,aDO2B;ECP3B,gBDO2B;;;AAD7B;ECNE,WDO2B;ECP3B,aDO2B;ECP3B,aDO2B;ECP3B,gBDO2B;;;AAD7B;ECNE,WDO2B;ECP3B,aDO2B;ECP3B,aDO2B;ECP3B,gBDO2B;;;AAD7B;ECNE,WDO2B;ECP3B,aDO2B;ECP3B,aDO2B;ECP3B,gBDO2B;;;AAI/B;ECXI,WFiGM;EEjGN,aFiGM;EEjGN,aFiGM;EEjGN,gBFiGM;;;AClFV;ECfI,WFwGM;EExGN,aFwGM;EExGN,aFwGM;EExGN,gBFwGM;;;AG7GV;AAAA;AAAA;AAAA;AAAA;AASA;EdAE;EACA;EAIA;EACA;EGbA;EACA;;;AWYF;EdNE;EACA;EAIA;EACA;EGbA;EACA;;;AYCF;AAAA;AAAA;AAAA","file":"green-chlorophyll.css"} \ No newline at end of file diff --git a/packages/chlorophyll-storybook/src/stories/css/button/Button.stories.svelte b/packages/chlorophyll-storybook/src/stories/css/button/Button.stories.svelte index 13cf6edecc..b5e8089ef2 100644 --- a/packages/chlorophyll-storybook/src/stories/css/button/Button.stories.svelte +++ b/packages/chlorophyll-storybook/src/stories/css/button/Button.stories.svelte @@ -11,7 +11,7 @@ type: { control: { type: "select", options: ["primary", "secondary"] }, } - }} + }} /> @@ -19,11 +19,10 @@ `} - name="Primary" - args={{ + source={``} + name="Primary" + args={{ type: "primary", label: "Primary", }} diff --git a/packages/chlorophyll-storybook/src/stories/css/button/Index.stories.mdx b/packages/chlorophyll-storybook/src/stories/css/button/Index.stories.mdx index 5eaf2ee690..01982e7b54 100644 --- a/packages/chlorophyll-storybook/src/stories/css/button/Index.stories.mdx +++ b/packages/chlorophyll-storybook/src/stories/css/button/Index.stories.mdx @@ -6,8 +6,7 @@ import { Meta, Story } from '@storybook/addon-docs/blocks'; Lorem ipsum buttons - - - + + diff --git a/packages/chlorophyll-storybook/src/stories/css/playground/Playground.stories.svelte b/packages/chlorophyll-storybook/src/stories/css/playground/Playground.stories.svelte index 4a61398e67..979c3956ba 100644 --- a/packages/chlorophyll-storybook/src/stories/css/playground/Playground.stories.svelte +++ b/packages/chlorophyll-storybook/src/stories/css/playground/Playground.stories.svelte @@ -4,11 +4,10 @@ - diff --git a/packages/chlorophyll-storybook/src/stories/css/playground/Playground.svelte b/packages/chlorophyll-storybook/src/stories/css/playground/Playground.svelte index 156f9c52e5..feb18afd4e 100644 --- a/packages/chlorophyll-storybook/src/stories/css/playground/Playground.svelte +++ b/packages/chlorophyll-storybook/src/stories/css/playground/Playground.svelte @@ -14,5 +14,3 @@
-

h1

-

h2

diff --git a/packages/chlorophyll-storybook/src/stories/css/typography/Typography.stories.svelte b/packages/chlorophyll-storybook/src/stories/css/typography/Typography.stories.svelte index 5ff354c173..2171150d73 100644 --- a/packages/chlorophyll-storybook/src/stories/css/typography/Typography.stories.svelte +++ b/packages/chlorophyll-storybook/src/stories/css/typography/Typography.stories.svelte @@ -1,18 +1,18 @@ diff --git a/packages/chlorophyll/src/scss/classes/_index.scss b/packages/chlorophyll/src/scss/classes/_index.scss index 13d51c8cfc..9e054f226c 100644 --- a/packages/chlorophyll/src/scss/classes/_index.scss +++ b/packages/chlorophyll/src/scss/classes/_index.scss @@ -6,6 +6,7 @@ }*/ @use 'button'; @use 'input'; + @use 'typography'; .size-sm { @include utility.padding-horizontal('xs'); diff --git a/packages/chlorophyll/src/scss/classes/typography/_index.scss b/packages/chlorophyll/src/scss/classes/typography/_index.scss index e69de29bb2..5fb5f0da4d 100644 --- a/packages/chlorophyll/src/scss/classes/typography/_index.scss +++ b/packages/chlorophyll/src/scss/classes/typography/_index.scss @@ -0,0 +1,24 @@ +@use "../../mixins/typography" as mixins; +@use "../../scss-tokens/typography" as tokens; + +body { + @include mixins.reset() +} + +.display-01 { + @include mixins.properties(tokens.$display-01); +} + +@for $i from 1 through 6 { + h#{$i} { + @include mixins.properties(map-get(tokens.$headings, $i)); + } +} + +p { + @include mixins.properties(tokens.$body-01); +} + +p.small { + @include mixins.properties(tokens.$body-02); +} \ No newline at end of file diff --git a/packages/chlorophyll/src/scss/mixins/typography/_index.scss b/packages/chlorophyll/src/scss/mixins/typography/_index.scss index e69de29bb2..ff03a09a2d 100644 --- a/packages/chlorophyll/src/scss/mixins/typography/_index.scss +++ b/packages/chlorophyll/src/scss/mixins/typography/_index.scss @@ -0,0 +1,13 @@ +@use "../../scss-tokens/typography"; + +@forward "reset"; + +@mixin properties($map) { + @each $name, $value in $map { + #{$name}: $value; + } +} + +@mixin header-margin() { + +} \ No newline at end of file diff --git a/packages/chlorophyll/src/scss/mixins/typography/_reset.scss b/packages/chlorophyll/src/scss/mixins/typography/_reset.scss index e69de29bb2..87a6102ac4 100644 --- a/packages/chlorophyll/src/scss/mixins/typography/_reset.scss +++ b/packages/chlorophyll/src/scss/mixins/typography/_reset.scss @@ -0,0 +1,23 @@ +@use "../../scss-tokens/typography" as tokens; + +@mixin reset( + $base-font-size: tokens.$base-font-size, + $body-font-family: tokens.font-family('sans') +) { + html { + font-size: $base-font-size; + } + + body { + font-weight: tokens.font-weight('regular'); + + font-family: $body-font-family; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + } + + strong { + font-weight: tokens.font-weight('semibold'); + } +} \ No newline at end of file diff --git a/packages/chlorophyll/src/scss/mixins/utility/_typography.scss b/packages/chlorophyll/src/scss/mixins/utility/_typography.scss index b0c93137b7..3b2bce8e0e 100644 --- a/packages/chlorophyll/src/scss/mixins/utility/_typography.scss +++ b/packages/chlorophyll/src/scss/mixins/utility/_typography.scss @@ -1,9 +1,10 @@ @use '../../scss-tokens'; + @mixin font-size($size) { font-size: map-get(scss-tokens.$font-size, $size); line-height: map-get(scss-tokens.$line-height, $size); } @mixin font-weight($weight) { - font-weight: map-get(scss-tokens.$font-weight, $weight); + font-weight: map-get(scss-tokens.$font-weights, $weight); } diff --git a/packages/chlorophyll/src/scss/scss-tokens/_typography.scss b/packages/chlorophyll/src/scss/scss-tokens/_typography.scss index e5658d587b..a75b099472 100644 --- a/packages/chlorophyll/src/scss/scss-tokens/_typography.scss +++ b/packages/chlorophyll/src/scss/scss-tokens/_typography.scss @@ -1,3 +1,5 @@ +$base-font-size: 16px !default; + $font-size: ( 's': 0.75rem, 'm': 1rem, @@ -6,15 +8,118 @@ $font-size: ( 'xxl': 3rem, ); +$font-scale: ( + 1: 0.75rem, // 12px + 2: 0.875rem, // 14px + 3: 1rem, // 16px + 4: 1.25rem, // 20px + 5: 1.5rem, // 24px + 6: 2rem, // 32px + 7: 2.5rem, // 40px + 8: 3rem, // 48px + 9: 4rem, // 64px + 10: 6rem // 92px +); + $line-height: ( 's': 1, 'm': 1.25, 'l': 1.3, ); -$font-weight: ( +@function font-scale($step) { + @return map-get($font-scale, $step); +} + +$font-weights: ( 'light': 300, 'regular': 400, 'medium': 500, 'bold': 800, ); + +@function font-weight($weight) { + @return map-get($font-weights, $weight); +} + +$font-family-sans-serif: "'SEBSansSerif',Arial,sans-serif"; + +$font-families: ( + 'sans': unquote($font-family-sans-serif) +); + +@function font-family($family) { + @return map-get($font-families, $family); +} + +$display-01: ( + font-size: font-scale(8), + font-weight: font-weight('bold'), + line-height: 56px, + letter-spacing: 0 +); + +$heading-01: ( + font-size: font-scale(6), + font-weight: font-weight('bold'), + line-height: 40px, + letter-spacing: 0 +); + +$heading-02: ( + font-size: font-scale(5), + font-weight: font-weight('bold'), + line-height: 32px, + letter-spacing: 0 +); + +$heading-03: ( + font-size: font-scale(4), + font-weight: font-weight('bold'), + line-height: 28px, + letter-spacing: 0 +); + +$heading-04: ( + font-size: font-scale(4), + font-weight: font-weight('bold'), + line-height: 28px, + letter-spacing: 0 +); + +$heading-05: ( + font-size: font-scale(3), + font-weight: font-weight('bold'), + line-height: 24px, + letter-spacing: 0 +); + +$heading-06: ( + font-size: font-scale(2), + font-weight: font-weight('bold'), + line-height: 20px, + letter-spacing: 0 +); + +$body-01: ( + font-size: font-scale(3), + font-weight: font-weight('regular'), + line-height: 24px, + letter-spacing: 0 +); + +$body-02: ( + font-size: font-scale(1), + font-weight: font-weight('regular'), + line-height: 20px, + letter-spacing: 0 +); + +$headings: ( + 1: $heading-01, + 2: $heading-02, + 3: $heading-03, + 4: $heading-04, + 5: $heading-05, + 6: $heading-06, +);