mirror of
https://github.com/navikt/aksel.git
synced 2026-10-13 01:02:02 +00:00
Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e41d0e6c5 | ||
|
|
d304309962 | ||
|
|
360294cab3 | ||
|
|
cac9c5d1ed | ||
|
|
909e431714 | ||
|
|
c57ebc6d31 | ||
|
|
59d3b86d25 | ||
|
|
3795a1e8fa | ||
|
|
c526873cd3 |
No files matched your search
@@ -1,8 +1,8 @@
|
||||
.navds-accordion-anchor-menu {
|
||||
padding: 1rem 0;
|
||||
padding: var(--navds-spacing-4) 0;
|
||||
}
|
||||
|
||||
.navds-accordion-anchor-menu__title {
|
||||
margin-left: 1rem;
|
||||
margin-right: 1rem;
|
||||
margin-left: var(--navds-spacing-4);
|
||||
margin-right: var(--navds-spacing-4);
|
||||
}
|
||||
@@ -32,7 +32,7 @@
|
||||
.navds-accordion-menu-item,
|
||||
.navds-accordion-menu-collapsable__button {
|
||||
display: flex;
|
||||
padding: 0.75rem 1rem;
|
||||
padding: var(--navds-spacing-3) var(--navds-spacing-4);
|
||||
line-height: 1.5rem; /* TODO: fix typography. */
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
font-size: 1.5rem;
|
||||
color: var(--navds-color-text-link);
|
||||
flex-shrink: 0;
|
||||
margin-left: 0.5rem;
|
||||
margin-left: var(--navds-spacing-2);
|
||||
}
|
||||
|
||||
.navds-accordion-menu-collapsable--open
|
||||
@@ -53,7 +53,7 @@
|
||||
.navds-accordion-menu-collapsable
|
||||
.navds-accordion-menu-collapsable
|
||||
.navds-accordion-menu-collapsable__button {
|
||||
padding-left: 2rem;
|
||||
padding-left: var(--navds-spacing-8);
|
||||
}
|
||||
|
||||
.navds-accordion-menu-collapsable
|
||||
@@ -63,7 +63,7 @@
|
||||
.navds-accordion-menu-collapsable
|
||||
.navds-accordion-menu-collapsable
|
||||
.navds-accordion-menu-collapsable__button {
|
||||
padding-left: 3rem;
|
||||
padding-left: var(--navds-spacing-12);
|
||||
}
|
||||
|
||||
.navds-accordion-menu-collapsable
|
||||
@@ -75,7 +75,7 @@
|
||||
.navds-accordion-menu-collapsable
|
||||
.navds-accordion-menu-collapsable
|
||||
.navds-accordion-menu-collapsable__button {
|
||||
padding-left: 4rem;
|
||||
padding-left: var(--navds-spacing-16);
|
||||
}
|
||||
|
||||
.navds-accordion-menu-item:focus,
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
height: 1.25em;
|
||||
transform: rotateZ(0deg);
|
||||
flex-shrink: 0;
|
||||
margin-left: 1rem;
|
||||
margin-left: var(--navds-spacing-4);
|
||||
}
|
||||
|
||||
.navds-accordion__chevron--up {
|
||||
@@ -38,7 +38,7 @@
|
||||
}
|
||||
|
||||
.navds-accordion__button {
|
||||
padding: 1rem;
|
||||
padding: var(--navds-spacing-4);
|
||||
border-radius: 4px;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
@@ -51,19 +51,13 @@
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.navds-accordion__button .navds-accordion__heading {
|
||||
font-size: var(--navds-font-size-large);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
line-height: var(--navds-font-line-height-large);
|
||||
}
|
||||
|
||||
.navds-accordion__button:hover .navds-accordion__heading {
|
||||
text-decoration: underline;
|
||||
color: var(--navds-color-text-link);
|
||||
}
|
||||
|
||||
.navds-accordion__content {
|
||||
padding: 0.5rem 1rem 1rem;
|
||||
padding: var(--navds-spacing-2) var(--navds-spacing-4) var(--navds-spacing-4);
|
||||
}
|
||||
|
||||
.navds-accordion--open .navds-accordion__content {
|
||||
|
||||
@@ -3,18 +3,16 @@
|
||||
border: var(--navds-border-default);
|
||||
|
||||
/* Padding calculated based on 16px font for 64px tall alert */
|
||||
padding: 1.1875em 1em;
|
||||
padding: 1.1875rem var(--navds-spacing-4);
|
||||
display: grid;
|
||||
grid-auto-flow: column;
|
||||
column-gap: 0.75rem;
|
||||
justify-content: start;
|
||||
font-size: var(--navds-font-size-small);
|
||||
line-height: var(--navds-font-line-height-small);
|
||||
}
|
||||
|
||||
.navds-alert--small {
|
||||
border-radius: 0;
|
||||
padding: 0.5em 1em;
|
||||
padding: var(--navds-spacing-2) var(--navds-spacing-4);
|
||||
}
|
||||
|
||||
.navds-alert > svg {
|
||||
|
||||
+22
-25
@@ -3,24 +3,21 @@
|
||||
cursor: pointer;
|
||||
background-color: var(--navds-color-background);
|
||||
color: var(--navds-color-action-default);
|
||||
font: inherit;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font-size: var(--navds-font-size-small);
|
||||
line-height: var(--navds-font-line-height-small);
|
||||
border-color: var(--navds-color-action-default);
|
||||
border-radius: 2px;
|
||||
border-style: solid;
|
||||
border-width: 2px;
|
||||
|
||||
/* Padding calculated based on 16px font for 40px tall button */
|
||||
padding: calc(0.5625em - 2px) calc(2em - 2px);
|
||||
/* Padding calculated based on 18px font for 44px tall button */
|
||||
padding: calc(0.625rem - 2px) calc(var(--navds-spacing-8) - 2px);
|
||||
}
|
||||
|
||||
.navds-button.navds-button--small {
|
||||
.navds-button--small {
|
||||
/* Padding calculated based on 16px font for 32px tall button */
|
||||
padding: calc(0.3125em - 2px) calc(1.11em - 2px);
|
||||
padding: calc(0.3125rem - 2px) calc(var(--navds-spacing-4) - 2px);
|
||||
}
|
||||
|
||||
.navds-button:focus {
|
||||
@@ -38,14 +35,14 @@
|
||||
background-color: var(--navds-color-action-hover);
|
||||
border-width: 0;
|
||||
|
||||
/* Padding calculated based on 16px font for 40px tall button */
|
||||
padding: 0.5625em 2em;
|
||||
/* Padding calculated based on 18px font for 44px tall button */
|
||||
padding: 0.625rem var(--navds-spacing-8);
|
||||
}
|
||||
|
||||
.navds-button--primary:hover.navds-button--small,
|
||||
.navds-button--primary:active.navds-button--small {
|
||||
/* Padding calculated based on 16px font for 32px tall button */
|
||||
padding: 0.3125em 1.11em;
|
||||
padding: 0.3125rem var(--navds-spacing-4);
|
||||
}
|
||||
|
||||
.navds-button--primary:active {
|
||||
@@ -89,8 +86,8 @@
|
||||
|
||||
.navds-button--action,
|
||||
.navds-button--danger {
|
||||
/* Padding calculated based on 16px font for 40px tall button */
|
||||
padding: 0.5625em 2em;
|
||||
/* Padding calculated based on 18px font for 44px tall button */
|
||||
padding: 0.625rem var(--navds-spacing-8);
|
||||
border-width: 0;
|
||||
transform: translateY(calc(-1 * 2px));
|
||||
position: relative;
|
||||
@@ -100,7 +97,7 @@
|
||||
.navds-button--action.navds-button--small,
|
||||
.navds-button--danger.navds-button--small {
|
||||
/* Padding calculated based on 16px font for 32px tall button */
|
||||
padding: 0.3125em 1.11em;
|
||||
padding: 0.3125rem var(--navds-spacing-4);
|
||||
}
|
||||
|
||||
.navds-button--action:not(:focus),
|
||||
@@ -158,8 +155,8 @@
|
||||
|
||||
.navds-button--danger:focus,
|
||||
.navds-button--action:focus {
|
||||
/* Padding calculated based on 16px font for 40px tall button */
|
||||
padding: calc(0.5625em - 2px) calc(2em - 2px);
|
||||
/* Padding calculated based on 18px font for 44px tall button */
|
||||
padding: calc(0.625rem - 2px) calc(var(--navds-spacing-8) - 2px);
|
||||
transform: translateY(calc(-1 * 2px));
|
||||
position: relative;
|
||||
border-width: 2px;
|
||||
@@ -168,7 +165,7 @@
|
||||
.navds-button--action:focus.navds-button--small,
|
||||
.navds-button--danger:focus.navds-button--small {
|
||||
/* Padding calculated based on 16px font for 32px tall button */
|
||||
padding: calc(0.3125em - 2px) calc(1.11em - 2px);
|
||||
padding: calc(0.3125rem - 2px) calc(var(--navds-spacing-4) - 2px);
|
||||
}
|
||||
|
||||
.navds-button--action:hover:focus {
|
||||
@@ -181,8 +178,8 @@
|
||||
|
||||
.navds-button--action:hover:focus,
|
||||
.navds-button--danger:hover:focus {
|
||||
/* Padding calculated based on 16px font for 40px tall button */
|
||||
padding: 0.5625em 2em;
|
||||
/* Padding calculated based on 18px font for 44px tall button */
|
||||
padding: 0.625rem var(--navds-spacing-8);
|
||||
border-width: 0;
|
||||
color: var(--navds-color-text-inverse);
|
||||
}
|
||||
@@ -190,7 +187,7 @@
|
||||
.navds-button--action:hover:focus.navds-button--small,
|
||||
.navds-button--danger:hover:focus.navds-button--small {
|
||||
/* Padding calculated based on 16px font for 32px tall button */
|
||||
padding: 0.3125em 1.11em;
|
||||
padding: 0.3125rem var(--navds-spacing-4);
|
||||
}
|
||||
|
||||
.navds-button--action:active:focus {
|
||||
@@ -205,8 +202,8 @@
|
||||
|
||||
.navds-button--action:active:focus,
|
||||
.navds-button--danger:active:focus {
|
||||
/* Padding calculated based on 16px font for 40px tall button */
|
||||
padding: calc(0.5625em - 2px) calc(2em - 2px);
|
||||
/* Padding calculated based on 18px font for 44px tall button */
|
||||
padding: calc(0.625rem - 2px) calc(var(--navds-spacing-8) - 2px);
|
||||
transform: translateY(0);
|
||||
position: relative;
|
||||
border-width: 2px;
|
||||
@@ -216,7 +213,7 @@
|
||||
.navds-button--action:active:focus.navds-button--small,
|
||||
.navds-button--danger:active:focus.navds-button--small {
|
||||
/* Padding calculated based on 16px font for 32px tall button */
|
||||
padding: calc(0.3125em - 2px) calc(1.11em - 2px);
|
||||
padding: calc(0.3125rem - 2px) calc(var(--navds-spacing-4) - 2px);
|
||||
}
|
||||
|
||||
.navds-button--action:hover:focus:active {
|
||||
@@ -267,8 +264,8 @@
|
||||
**************************/
|
||||
|
||||
.navds-button:disabled:disabled {
|
||||
/* Padding calculated based on 16px font for 40px tall button */
|
||||
padding: 0.5625em 2em;
|
||||
/* Padding calculated based on 18px font for 44px tall button */
|
||||
padding: 0.625rem var(--navds-spacing-8);
|
||||
background-color: var(--navds-color-disabled);
|
||||
color: var(--navds-color-text-inverse);
|
||||
cursor: not-allowed;
|
||||
@@ -279,5 +276,5 @@
|
||||
|
||||
.navds-button:disabled:disabled.navds-button--small {
|
||||
/* Padding calculated based on 16px font for 32px tall button */
|
||||
padding: 0.3125em 1.11em;
|
||||
padding: 0.3125rem var(--navds-spacing-4);
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
column-gap: 0.5em;
|
||||
padding: 0.25em;
|
||||
padding: var(--navds-spacing-1);
|
||||
}
|
||||
|
||||
.navds-copy-to-clipboard__popover {
|
||||
padding: 0.25rem;
|
||||
padding: var(--navds-spacing-1);
|
||||
}
|
||||
@@ -1,4 +1,8 @@
|
||||
@import "baseline/baseline.css";
|
||||
@import "typography.css";
|
||||
@import "grid.css";
|
||||
@import "layouts.css";
|
||||
|
||||
@import "accordion.css";
|
||||
@import "accordion-anchor-menu.css";
|
||||
@import "accordion-menu.css";
|
||||
@@ -6,12 +10,10 @@
|
||||
@import "button.css";
|
||||
@import "content-container.css";
|
||||
@import "copy-to-clipboard.css";
|
||||
@import "grid.css";
|
||||
@import "internal-header.css";
|
||||
@import "layouts.css";
|
||||
@import "link.css";
|
||||
@import "modal.css";
|
||||
@import "popover.css";
|
||||
@import "tag.css";
|
||||
@import "panel.css";
|
||||
@import "typography.css";
|
||||
@import "link-panel.css";
|
||||
@@ -21,7 +21,7 @@
|
||||
**************************/
|
||||
|
||||
.navds-header__title {
|
||||
padding: 0 1.5rem 0 1.5rem;
|
||||
padding: 0 var(--navds-spacing-6);
|
||||
border-right: 1px solid var(--navds-color-gray-40);
|
||||
display: flex;
|
||||
align-self: stretch;
|
||||
@@ -29,9 +29,6 @@
|
||||
text-decoration: none;
|
||||
margin: 0;
|
||||
color: var(--navds-color-text-inverse);
|
||||
font-size: var(--navds-font-size-medium);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
line-height: var(--navds-font-line-height-medium);
|
||||
}
|
||||
|
||||
.navds-header__title > span > a {
|
||||
@@ -50,7 +47,7 @@
|
||||
|
||||
.navds-header__user {
|
||||
color: var(--navds-color-text-inverse);
|
||||
padding: 0 1.5rem 0 1.5rem;
|
||||
padding: 0 var(--navds-spacing-6);
|
||||
margin-left: auto;
|
||||
border-left: 1px solid var(--navds-color-gray-40);
|
||||
display: flex;
|
||||
@@ -58,15 +55,6 @@
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.navds-header__name {
|
||||
margin-right: 1rem;
|
||||
font-size: var(--navds-font-size-small);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
line-height: var(--navds-font-line-height-small);
|
||||
}
|
||||
|
||||
.navds-header__ident {
|
||||
font-size: var(--navds-font-size-xs);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
line-height: var(--navds-font-line-height-xs);
|
||||
.navds-header__name.navds-body-short {
|
||||
margin-right: var(--navds-spacing-4);
|
||||
}
|
||||
@@ -168,12 +168,12 @@
|
||||
}
|
||||
|
||||
.navds-layout__header-title {
|
||||
margin: 0.25rem 0.85rem;
|
||||
margin: var(--navds-spacing-1) var(--navds-spacing-3);
|
||||
}
|
||||
|
||||
@media (min-width: 448px) {
|
||||
.navds-layout__header-title {
|
||||
margin: 0.25rem 0;
|
||||
margin: var(--navds-spacing-1) 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
.navds-link-panel {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
text-decoration: none;
|
||||
color: var(--navds-color-gray-90);
|
||||
}
|
||||
|
||||
.navds-link-panel:hover .navds-link-panel-title {
|
||||
text-decoration: underline;
|
||||
color: var(--navds-color-text-link);
|
||||
}
|
||||
|
||||
.navds-link-panel:hover {
|
||||
box-shadow: var(--navds-shadow-hover);
|
||||
border-color: var(--navds-color-blue-50);
|
||||
}
|
||||
|
||||
.navds-link-panel:focus {
|
||||
box-shadow: var(--navds-shadow-focus);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.navds-link-panel__chevron {
|
||||
font-size: 1.5rem;
|
||||
transition: transform 200ms;
|
||||
}
|
||||
|
||||
.navds-link-panel:hover > .navds-link-panel__chevron,
|
||||
.navds-link-panel:focus-within > .navds-link-panel__chevron {
|
||||
transform: translateX(4px);
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
background-color: var(--navds-color-background);
|
||||
display: block;
|
||||
position: relative;
|
||||
padding: 1rem;
|
||||
padding: var(--navds-spacing-4);
|
||||
border-radius: 4px;
|
||||
overflow: auto;
|
||||
max-height: 100%;
|
||||
@@ -29,7 +29,7 @@
|
||||
left: 0;
|
||||
right: 0;
|
||||
background-color: var(--navds-color-modal-overlay);
|
||||
padding: 1rem;
|
||||
padding: var(--navds-spacing-4);
|
||||
}
|
||||
|
||||
.navds-modal__button--shake {
|
||||
@@ -45,9 +45,10 @@
|
||||
|
||||
.navds-modal__button {
|
||||
position: fixed;
|
||||
top: 1rem;
|
||||
right: 1rem;
|
||||
top: var(--navds-spacing-4);
|
||||
right: var(--navds-spacing-4);
|
||||
display: flex;
|
||||
padding: var(--navds-spacing-2);
|
||||
}
|
||||
|
||||
.navds-modal__button svg {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-css",
|
||||
"version": "0.4.2",
|
||||
"version": "0.5.3",
|
||||
"private": false,
|
||||
"description": "Css for NAV Designsystem components",
|
||||
"author": "NAV Designsystem team",
|
||||
@@ -21,7 +21,7 @@
|
||||
"watch-css": "postcss -w --use postcss-import -o dist/index.css index.css"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@navikt/ds-tokens": "^0.2.1",
|
||||
"@navikt/ds-tokens": "^0.3.2",
|
||||
"normalize.css": "^8.0.1",
|
||||
"postcss": "^8.2.7",
|
||||
"postcss-cli": "^8.3.1",
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
.navds-panel {
|
||||
background-color: var(--navds-color-white);
|
||||
display: block;
|
||||
padding: 1rem;
|
||||
padding: var(--navds-spacing-4);
|
||||
border-radius: var(--navds-border-radius);
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.navds-panel--border {
|
||||
border: var(--navds-border-default);
|
||||
border-color: var(--navds-color-border);
|
||||
}
|
||||
@@ -3,12 +3,10 @@
|
||||
border: var(--navds-border-default);
|
||||
background-color: var(--navds-color-tag-info-background);
|
||||
border-color: var(--navds-color-tag-info-border);
|
||||
font-size: var(--navds-font-size-xs);
|
||||
line-height: var(--navds-font-line-height-xs);
|
||||
display: inline-block;
|
||||
|
||||
/* Padding calculated based on 16px font for 24px tall tag */
|
||||
padding: 0.0625rem 0.5rem;
|
||||
padding: 0.0625rem var(--navds-spacing-2);
|
||||
}
|
||||
|
||||
.navds-tag--error {
|
||||
|
||||
+123
-38
@@ -1,63 +1,148 @@
|
||||
/*
|
||||
* Heading
|
||||
*/
|
||||
.navds-heading {
|
||||
/* Title */
|
||||
.navds-title {
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
line-height: calc(1em + 0.25rem);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navds-heading--xxl {
|
||||
font-size: var(--navds-font-size-heading-xxl);
|
||||
.navds-title--2xl {
|
||||
font-size: var(--navds-font-size-title-2xl);
|
||||
letter-spacing: -0.01em;
|
||||
line-height: var(--navds-font-line-height-2xl);
|
||||
}
|
||||
|
||||
.navds-heading--xl {
|
||||
font-size: var(--navds-font-size-heading-xl);
|
||||
.navds-title--2xl.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-5);
|
||||
}
|
||||
|
||||
.navds-heading--large {
|
||||
font-size: var(--navds-font-size-heading-large);
|
||||
.navds-title--xl {
|
||||
font-size: var(--navds-font-size-title-xl);
|
||||
letter-spacing: -0.008em;
|
||||
line-height: var(--navds-font-line-height-xl);
|
||||
}
|
||||
|
||||
.navds-heading--medium {
|
||||
font-size: var(--navds-font-size-heading-medium);
|
||||
.navds-title--xl.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-4);
|
||||
}
|
||||
|
||||
.navds-heading--small {
|
||||
font-size: var(--navds-font-size-heading-small);
|
||||
.navds-title--l {
|
||||
font-size: var(--navds-font-size-title-l);
|
||||
letter-spacing: -0.004em;
|
||||
line-height: var(--navds-font-line-height-l);
|
||||
}
|
||||
|
||||
/*
|
||||
* Text
|
||||
*/
|
||||
.navds-text--large {
|
||||
font-size: var(--navds-font-size-large);
|
||||
line-height: var(--navds-font-line-height-large);
|
||||
.navds-title--l.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-3);
|
||||
}
|
||||
|
||||
.navds-text--medium {
|
||||
font-size: var(--navds-font-size-medium);
|
||||
line-height: var(--navds-font-line-height-medium);
|
||||
.navds-title--m {
|
||||
font-size: var(--navds-font-size-title-m);
|
||||
letter-spacing: -0.002em;
|
||||
line-height: var(--navds-font-line-height-m);
|
||||
}
|
||||
|
||||
.navds-text--small {
|
||||
font-size: var(--navds-font-size-small);
|
||||
line-height: var(--navds-font-line-height-small);
|
||||
.navds-title--m.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-3);
|
||||
}
|
||||
|
||||
.navds-text--xs {
|
||||
font-size: var(--navds-font-size-xs);
|
||||
.navds-title--s {
|
||||
font-size: var(--navds-font-size-title-s);
|
||||
letter-spacing: -0.001em;
|
||||
line-height: var(--navds-font-line-height-s);
|
||||
}
|
||||
|
||||
.navds-title--s.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-3);
|
||||
}
|
||||
|
||||
/* Ingress */
|
||||
.navds-ingress {
|
||||
font-size: var(--navds-font-size-xl);
|
||||
letter-spacing: -0.001em;
|
||||
line-height: var(--navds-font-line-height-s);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navds-ingress.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-10);
|
||||
}
|
||||
|
||||
/* Body */
|
||||
.navds-body-long {
|
||||
font-size: var(--navds-font-size-l);
|
||||
letter-spacing: 0;
|
||||
line-height: var(--navds-font-line-height-s);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navds-body-short {
|
||||
font-size: var(--navds-font-size-l);
|
||||
letter-spacing: 0;
|
||||
line-height: var(--navds-font-line-height-xs);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navds-body-long.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-7);
|
||||
}
|
||||
|
||||
.navds-body-short.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-3);
|
||||
}
|
||||
|
||||
.navds-body--s {
|
||||
font-size: var(--navds-font-size-m);
|
||||
letter-spacing: 0.002em;
|
||||
line-height: var(--navds-font-line-height-xs);
|
||||
}
|
||||
|
||||
/*
|
||||
* Article typography
|
||||
*/
|
||||
.navds-article__lead {
|
||||
font-size: var(--navds-font-size-article-lead);
|
||||
line-height: var(--navds-font-line-height-large);
|
||||
.navds-body-long.navds-body--s.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-6);
|
||||
}
|
||||
|
||||
.navds-article__paragraph {
|
||||
font-size: var(--navds-font-size-article-paragraph);
|
||||
line-height: var(--navds-font-line-height-medium);
|
||||
.navds-body-short.navds-body--s.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-2);
|
||||
}
|
||||
|
||||
/* Label */
|
||||
.navds-label {
|
||||
font-size: var(--navds-font-size-l);
|
||||
letter-spacing: 0;
|
||||
line-height: var(--navds-font-line-height-xs);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navds-label.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-3);
|
||||
}
|
||||
|
||||
.navds-label--s {
|
||||
font-size: var(--navds-font-size-m);
|
||||
letter-spacing: 0.002em;
|
||||
line-height: var(--navds-font-line-height-2xs);
|
||||
}
|
||||
|
||||
.navds-label--s.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-2);
|
||||
}
|
||||
|
||||
/* Small text */
|
||||
.navds-detail {
|
||||
font-size: var(--navds-font-size-s);
|
||||
letter-spacing: 0.004em;
|
||||
line-height: var(--navds-font-line-height-2xs);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.navds-detail.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-2);
|
||||
}
|
||||
|
||||
.navds-detail--s {
|
||||
font-weight: var(--navds-font-weight-regular);
|
||||
}
|
||||
|
||||
.navds-detail--s.navds-typo--spacing {
|
||||
margin-bottom: var(--navds-spacing-2);
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-react",
|
||||
"version": "0.4.3",
|
||||
"version": "0.5.3",
|
||||
"private": false,
|
||||
"description": "NAV designsystem react components",
|
||||
"author": "NAV Designsystem team",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React, { forwardRef, HTMLAttributes } from "react";
|
||||
import { AccordionMenu as BaseAccordionMenu } from "../accordion-menu";
|
||||
import { Heading } from "../index";
|
||||
import { Title } from "../index";
|
||||
import { ActiveAnchorProvider } from "./ActiveAnchorStore";
|
||||
import cl from "classnames";
|
||||
|
||||
@@ -21,13 +21,9 @@ const AccordionAnchorMenu = forwardRef<
|
||||
{...rest}
|
||||
>
|
||||
{title && (
|
||||
<Heading
|
||||
level={2}
|
||||
size="medium"
|
||||
className="navds-accordion-anchor-menu__title"
|
||||
>
|
||||
<Title level={2} size="m" className="navds-accordion-anchor-menu__title">
|
||||
{title}
|
||||
</Heading>
|
||||
</Title>
|
||||
)}
|
||||
<ActiveAnchorProvider>
|
||||
<BaseAccordionMenu aria-label={title || "Meny"}>
|
||||
|
||||
@@ -78,7 +78,9 @@ const Accordion = forwardRef<HTMLDivElement, AccordionProps>(
|
||||
onClick={onClick ? onClick : () => setInternalOpen((open) => !open)}
|
||||
{...rest}
|
||||
>
|
||||
<span className="navds-accordion__heading">{heading}</span>
|
||||
<span className="navds-accordion__heading navds-title navds-title--s">
|
||||
{heading}
|
||||
</span>
|
||||
<Expand
|
||||
className={cl(
|
||||
"navds-accordion__chevron",
|
||||
|
||||
@@ -50,7 +50,9 @@ const Alert = forwardRef<HTMLDivElement, AlertProps>(
|
||||
className,
|
||||
"navds-alert",
|
||||
`navds-alert--${variant}`,
|
||||
`navds-alert--${size}`
|
||||
`navds-alert--${size}`,
|
||||
"navds-body-long",
|
||||
"navds-body--s"
|
||||
)}
|
||||
{...rest}
|
||||
>
|
||||
|
||||
@@ -35,7 +35,8 @@ const Button = forwardRef<HTMLButtonElement, ButtonProps>(
|
||||
className,
|
||||
"navds-button",
|
||||
`navds-button--${variant}`,
|
||||
`navds-button--${size}`
|
||||
`navds-button--${size}`,
|
||||
"navds-body-short"
|
||||
)}
|
||||
{...rest}
|
||||
/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as React from "react";
|
||||
import { ContentContainer } from "../index";
|
||||
import { Text } from "../../index";
|
||||
import { BodyLong } from "../../index";
|
||||
import "./style.css";
|
||||
import { useEffect } from "react";
|
||||
|
||||
@@ -41,7 +41,7 @@ export default {
|
||||
export const All = () => {
|
||||
return (
|
||||
<ContentContainer className={"navds-story-content-container"}>
|
||||
<Text size="medium">-- Innhold --</Text>
|
||||
<BodyLong size="m">-- Innhold --</BodyLong>
|
||||
</ContentContainer>
|
||||
);
|
||||
};
|
||||
@@ -34,13 +34,14 @@ export { Link, LinkProps } from "./link/index";
|
||||
export { Modal, ModalProps } from "./modal/index";
|
||||
export { Popover, PopoverProps } from "./popover/index";
|
||||
export { Tag, TagProps } from "./tag/index";
|
||||
export { LinkPanel, LinkPanelProps, LinkPanelTitle } from "./link-panel/index";
|
||||
export { Panel, PanelProps } from "./panel/index";
|
||||
export {
|
||||
Heading,
|
||||
HeadingProps,
|
||||
Lead,
|
||||
Paragraph,
|
||||
Text,
|
||||
TextProps,
|
||||
Title,
|
||||
Ingress,
|
||||
BodyLong,
|
||||
BodyShort,
|
||||
Label,
|
||||
Detail,
|
||||
} from "./typography/index";
|
||||
export { OverridableComponent } from "./util/index";
|
||||
@@ -22,7 +22,7 @@ const InternalHeaderTitle = forwardRef<HTMLElement, InternalHeaderTitleProps>(
|
||||
createElement(element, {
|
||||
...rest,
|
||||
ref,
|
||||
className: cl("navds-header__title", className),
|
||||
className: cl("navds-header__title", "navds-label", className),
|
||||
children: <span>{children}</span>,
|
||||
})
|
||||
);
|
||||
|
||||
@@ -20,8 +20,10 @@ export interface InternalHeaderUserProps
|
||||
const InternalHeaderUser = forwardRef<HTMLDivElement, InternalHeaderUserProps>(
|
||||
({ className, name, ident, ...rest }, ref) => (
|
||||
<div ref={ref} className={cl("navds-header__user", className)} {...rest}>
|
||||
<span className="navds-header__name">{name}</span>
|
||||
<span className="navds-header__ident">{ident}</span>
|
||||
<span className="navds-header__name navds-body-short navds-body--s">
|
||||
{name}
|
||||
</span>
|
||||
<span className="navds-detail navds-detail--s">{ident}</span>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import cl from "classnames";
|
||||
import React, { Children, forwardRef, HTMLAttributes, useEffect } from "react";
|
||||
import { ContentContainer, Heading } from "../../index";
|
||||
import { ContentContainer, Title } from "../../index";
|
||||
|
||||
const cls = (className, columns) =>
|
||||
cl(
|
||||
@@ -35,13 +35,13 @@ const ProductPageLayout = forwardRef<HTMLDivElement, ProductPageLayoutProps>(
|
||||
<ContentContainer>
|
||||
<div className={cls(className, columns)} {...rest}>
|
||||
<div className={cl("navds-layout__header-content")}>
|
||||
<Heading
|
||||
size={"xxl"}
|
||||
<Title
|
||||
size="2xl"
|
||||
className={cl("navds-layout__header-title")}
|
||||
level={1}
|
||||
>
|
||||
{title}
|
||||
</Heading>
|
||||
</Title>
|
||||
</div>
|
||||
</div>
|
||||
</ContentContainer>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { useEffect, useRef } from "react";
|
||||
import { forwardRef, ReactNode } from "react";
|
||||
import cl from "classnames";
|
||||
import { Heading, CopyToClipboard } from "../../";
|
||||
import { Title, CopyToClipboard } from "../../";
|
||||
import { Attachment } from "@navikt/ds-icons";
|
||||
|
||||
export interface ProductPagePanelProps
|
||||
@@ -50,9 +50,9 @@ const ProductPagePanel = forwardRef<HTMLDivElement, ProductPagePanelProps>(
|
||||
/>
|
||||
</div>
|
||||
{icon && <div className={"navds-layout__panel-icon"}>{icon}</div>}
|
||||
<Heading size={"xl"} className={"navds-layout__panel-title"} level={2}>
|
||||
<Title size={"xl"} className={"navds-layout__panel-title"} level={2}>
|
||||
{title}
|
||||
</Heading>
|
||||
</Title>
|
||||
|
||||
<CopyToClipboard
|
||||
className="navds-layout__panel-copy"
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
import * as React from "react";
|
||||
import {
|
||||
Button,
|
||||
Cell,
|
||||
Grid,
|
||||
Heading,
|
||||
Link,
|
||||
Paragraph,
|
||||
} from "../../../../index";
|
||||
import { Button, Cell, Grid, Title, Link, BodyLong } from "../../../../index";
|
||||
|
||||
export const Main = ({ title = true }) => (
|
||||
<>
|
||||
@@ -19,30 +12,30 @@ export const Main = ({ title = true }) => (
|
||||
export const MainOne = ({ title = true }) => (
|
||||
<div>
|
||||
{title && (
|
||||
<Heading level={1} size={"xl"} id={"leo-quis"}>
|
||||
<Title level={1} size={"xl"} id={"leo-quis"}>
|
||||
Leo quis
|
||||
</Heading>
|
||||
</Title>
|
||||
)}
|
||||
<Paragraph>
|
||||
<BodyLong>
|
||||
Sed ullamcorper quam eget lorem volutpat, quis cursus risus fermentum.
|
||||
Quisque varius ornare nulla, ut condimentum sapien dapibus non. Nullam
|
||||
eget interdum nibh
|
||||
</Paragraph>
|
||||
</BodyLong>
|
||||
</div>
|
||||
);
|
||||
|
||||
export const MainTwo = ({ title = true }) => (
|
||||
<div>
|
||||
{title && (
|
||||
<Heading level={1} size={"xl"} id={"proin-accumsan"}>
|
||||
<Title level={1} size={"xl"} id={"proin-accumsan"}>
|
||||
Proin accumsan
|
||||
</Heading>
|
||||
</Title>
|
||||
)}
|
||||
<Paragraph className={"section"}>
|
||||
<BodyLong className={"section"}>
|
||||
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
|
||||
doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo
|
||||
inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
|
||||
</Paragraph>
|
||||
</BodyLong>
|
||||
<Grid className={"section"}>
|
||||
<Cell xs={6}>
|
||||
<Link href={"#"}>Ea voluptate</Link>
|
||||
@@ -51,17 +44,17 @@ export const MainTwo = ({ title = true }) => (
|
||||
<Link href={"#"}>Quis autem</Link>
|
||||
</Cell>
|
||||
</Grid>
|
||||
<Paragraph className={"section"}>
|
||||
<BodyLong className={"section"}>
|
||||
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
|
||||
consectetur, adipisci velit, sed quia non numquam eius modi tempora.
|
||||
</Paragraph>
|
||||
<Heading level={2} size={"large"} id={"nulla-pariatur"}>
|
||||
</BodyLong>
|
||||
<Title level={2} size={"l"} id={"nulla-pariatur"}>
|
||||
Nulla pariatur?
|
||||
</Heading>
|
||||
<Paragraph className={"section"}>
|
||||
</Title>
|
||||
<BodyLong className={"section"}>
|
||||
Etiam viverra neque sit amet libero dapibus tincidunt. Pellentesque quis
|
||||
imperdiet erat. Morbi sodales bibendum volutpat.
|
||||
</Paragraph>
|
||||
</BodyLong>
|
||||
<table className={"section tabell tabell--stripet"}>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -92,18 +85,18 @@ export const MainTwo = ({ title = true }) => (
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<Paragraph className={"section"}>
|
||||
<BodyLong className={"section"}>
|
||||
Curabitur a purus pretium, condimentum magna ac, pellentesque diam. Nulla
|
||||
facilisi. Nullam consequat, dui sed bibendum faucibus, metus mauris
|
||||
commodo tortor.
|
||||
</Paragraph>
|
||||
<Heading level={2} size={"large"} id={"luctus-justo"}>
|
||||
</BodyLong>
|
||||
<Title level={2} size={"l"} id={"luctus-justo"}>
|
||||
Luctus justo
|
||||
</Heading>
|
||||
<Paragraph className={"section"}>
|
||||
</Title>
|
||||
<BodyLong className={"section"}>
|
||||
Nunc eget consectetur felis, id scelerisque sapien. Ut id feugiat nulla,
|
||||
ut cursus sem. In viverra felis vitae aliquet finibus.
|
||||
</Paragraph>
|
||||
</BodyLong>
|
||||
<Button>Søk ...</Button>
|
||||
</div>
|
||||
);
|
||||
@@ -111,30 +104,30 @@ export const MainTwo = ({ title = true }) => (
|
||||
export const MainThree = ({ title = true }) => (
|
||||
<div>
|
||||
{title && (
|
||||
<Heading level={1} size={"xl"} id={"maecenas-in-pretium"}>
|
||||
<Title level={1} size={"xl"} id={"maecenas-in-pretium"}>
|
||||
Maecenas in pretium
|
||||
</Heading>
|
||||
</Title>
|
||||
)}
|
||||
<Paragraph>
|
||||
<BodyLong>
|
||||
Sed ullamcorper quam eget lorem volutpat, quis cursus risus fermentum.
|
||||
Quisque varius ornare nulla, ut condimentum sapien dapibus non. Nullam
|
||||
eget interdum nibh
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
</BodyLong>
|
||||
<BodyLong>
|
||||
Cras tempor eros sed dapibus egestas. Curabitur bibendum quam quis lectus
|
||||
pretium lacinia. Nunc consequat ac augue quis laoreet. Donec porta, erat
|
||||
vitae blandit egestas, arcu metus pharetra nulla, et laoreet risus purus
|
||||
convallis turpis.
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
</BodyLong>
|
||||
<BodyLong>
|
||||
Suspendisse potenti. Praesent at elit interdum, porttitor sem eget,
|
||||
blandit dolor. Nunc eget consectetur felis, id scelerisque sapien. Ut id
|
||||
feugiat nulla, ut cursus sem. In viverra felis vitae aliquet finibus.
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
</BodyLong>
|
||||
<BodyLong>
|
||||
Vivamus id mi lectus. Duis ac augue magna. Aliquam ut euismod dui. Duis
|
||||
consectetur, magna a malesuada tempus, elit urna fermentum arcu, at
|
||||
porttitor magna sapien id enim.
|
||||
</Paragraph>
|
||||
</BodyLong>
|
||||
</div>
|
||||
);
|
||||
@@ -0,0 +1,65 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import { OverridableComponent } from "../util";
|
||||
import { Panel } from "../index";
|
||||
import { Next } from "@navikt/ds-icons";
|
||||
import cl from "classnames";
|
||||
|
||||
export type LinkPanelType = OverridableComponent<LinkPanelProps>;
|
||||
|
||||
export interface LinkPanelProps {
|
||||
props: {
|
||||
children?: React.ReactNode;
|
||||
className?: string;
|
||||
noHeading?: boolean;
|
||||
border?: boolean;
|
||||
} & React.HTMLAttributes<HTMLAnchorElement>;
|
||||
defaultComponent: "a";
|
||||
}
|
||||
|
||||
const LinkPanel: LinkPanelType = forwardRef(
|
||||
({ children, component = "a", border = true, className, ...rest }, ref) => {
|
||||
return (
|
||||
<Panel
|
||||
component={component}
|
||||
border={border}
|
||||
ref={ref}
|
||||
className={cl("navds-link-panel", className)}
|
||||
{...rest}
|
||||
>
|
||||
{typeof children === "string" ? (
|
||||
<LinkPanelTitle>{children}</LinkPanelTitle>
|
||||
) : (
|
||||
<span className="navds-link-panel__content">{children}</span>
|
||||
)}
|
||||
<Next
|
||||
className="navds-link-panel__chevron"
|
||||
aria-label="arrow-icon pointing right"
|
||||
/>
|
||||
</Panel>
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
interface LinkPanelTitleProps {
|
||||
props: {
|
||||
children: React.ReactNode;
|
||||
} & React.HTMLAttributes<HTMLSpanElement>;
|
||||
defaultComponent: "span";
|
||||
}
|
||||
|
||||
export const LinkPanelTitle: OverridableComponent<LinkPanelTitleProps> = forwardRef(
|
||||
({ className, component: Component = "span", ...rest }, ref) => (
|
||||
<Component
|
||||
ref={ref}
|
||||
className={cl(
|
||||
"navds-link-panel-title",
|
||||
"navds-title",
|
||||
"navds-title--m",
|
||||
className
|
||||
)}
|
||||
{...rest}
|
||||
/>
|
||||
)
|
||||
);
|
||||
|
||||
export default LinkPanel;
|
||||
@@ -0,0 +1,2 @@
|
||||
export { default as LinkPanel } from "./LinkPanel";
|
||||
export * from "./LinkPanel";
|
||||
@@ -0,0 +1,166 @@
|
||||
import React from "react";
|
||||
import { LinkPanel, LinkPanelTitle } from "../index";
|
||||
|
||||
export default {
|
||||
title: "ds-react/linkPanel",
|
||||
component: LinkPanel,
|
||||
};
|
||||
|
||||
export const All = () => {
|
||||
return (
|
||||
<>
|
||||
<h1>Link</h1>
|
||||
<LinkPanel href="#">Dette er en tekstlenke</LinkPanel>
|
||||
|
||||
<h1>No border</h1>
|
||||
<LinkPanel href="#" border={false}>
|
||||
Dette er en tekstlenke
|
||||
</LinkPanel>
|
||||
|
||||
<h1>Custom styling</h1>
|
||||
<LinkPanel href="#" style={{ textDecoration: "none" }}>
|
||||
<div
|
||||
style={{
|
||||
padding: "1rem",
|
||||
display: "grid",
|
||||
gridAutoFlow: "column",
|
||||
gap: "2rem",
|
||||
alignItems: "center",
|
||||
}}
|
||||
>
|
||||
<Illustration />
|
||||
<div>
|
||||
<LinkPanelTitle>Dagpenger</LinkPanelTitle>
|
||||
<p>
|
||||
Du kan få dagpenger når du er arbeidsledig og har mistet inntekten
|
||||
din.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</LinkPanel>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
const Illustration = () => (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="110" height="110">
|
||||
<defs>
|
||||
<path id="a" d="M.686.654h4.399v5.852H.686z"></path>
|
||||
</defs>
|
||||
<g fill="none" fillRule="evenodd">
|
||||
<path fill="transparent" d="M-287-1518H993V543H-287z"></path>
|
||||
<rect
|
||||
width="796"
|
||||
height="181"
|
||||
fill="transparent"
|
||||
rx="8"
|
||||
transform="translate(-45 -36)"
|
||||
></rect>
|
||||
<circle cx="55" cy="55" r="55" fill="#CCDEE6"></circle>
|
||||
<g fill="#D8D8D8">
|
||||
<path
|
||||
fill="#337C9B"
|
||||
d="M32.034 5.834l-11.606 3.11-9.517 2.55-4.637 1.242 1.284 4.794 9.069 33.843 1.284 4.795 4.637-1.243 9.518-2.55 11.605-3.11c2.561-.686 4.063-3.389 3.353-6.037L37.956 9.385c-.71-2.648-3.361-4.238-5.922-3.551"
|
||||
></path>
|
||||
<path
|
||||
fill="#38363A"
|
||||
d="M38.322 51.833l1.77-.474-12.12-45.233-1.77.474z"
|
||||
></path>
|
||||
<path
|
||||
fill="#CE2128"
|
||||
d="M26.593 57.996l-1.179-.613-.713 1.12-.93-3.47 1.892-.507z"
|
||||
></path>
|
||||
</g>
|
||||
<path
|
||||
fill="#FFF"
|
||||
d="M61.773 69.14l8.95 38.112a2.524 2.524 0 0 0 3.036 1.881l32.913-7.745a2.528 2.528 0 0 0 1.88-3.04L98.279 54.591a2.526 2.526 0 0 0-3.037-1.883L68.425 59.02l-6.652 10.12z"
|
||||
></path>
|
||||
<path
|
||||
fill="#C0C0BE"
|
||||
d="M68.425 59.02l1.326 5.645a2.527 2.527 0 0 1-1.88 3.038l-6.098 1.436 6.652-10.12z"
|
||||
></path>
|
||||
<path
|
||||
stroke="#8E9294"
|
||||
strokeLinecap="round"
|
||||
strokeWidth="2.152"
|
||||
d="M68.902 74.197l11.982-2.82m-10.721 8.19l24.874-5.853M71.424 84.937l24.873-5.853"
|
||||
></path>
|
||||
<path
|
||||
stroke="#8E9294"
|
||||
strokeLinecap="round"
|
||||
strokeWidth="2.264"
|
||||
d="M72.685 90.307l24.873-5.854M73.857 95.297l24.873-5.853M75.021 100.7l24.874-5.853"
|
||||
></path>
|
||||
<path
|
||||
fill="#CCDEE6"
|
||||
d="M21.698 86.68c-5.726-3.643-7.42-11.243-3.78-16.976 3.64-5.733 11.231-7.427 16.958-3.784 5.727 3.643 7.42 11.243 3.78 16.976-3.639 5.733-11.231 7.427-16.958 3.784z"
|
||||
></path>
|
||||
<path
|
||||
fill="#C42B34"
|
||||
d="M9.283 106.905a2.772 2.772 0 0 1-.851-3.823l8.759-13.798a2.765 2.765 0 0 1 3.817-.852 2.77 2.77 0 0 1 .851 3.822l-8.758 13.799a2.764 2.764 0 0 1-3.818.852"
|
||||
></path>
|
||||
<path
|
||||
fill="#2E3137"
|
||||
d="M19.032 90.912c-.86-.547-1.348-1.318-.801-2.179l1.826-2.877a1.841 1.841 0 0 1 2.546-.567 1.847 1.847 0 0 1 .566 2.547l-1.826 2.878c-.547.86-1.452.744-2.31.198"
|
||||
></path>
|
||||
<path
|
||||
fill="#D84B55"
|
||||
d="M16.41 91l-8.266 13.021a.925.925 0 0 0 .283 1.275.92.92 0 0 0 1.272-.284l7.912-12.463c-.713-.47-1.083-1.039-1.2-1.549"
|
||||
></path>
|
||||
<path
|
||||
fill="#2E3137"
|
||||
d="M27.811 87.523a11.115 11.115 0 0 1-1.117-.196 11.283 11.283 0 0 1-3.577-1.48c-5.295-3.369-6.866-10.423-3.502-15.723 3.366-5.301 10.412-6.874 15.709-3.504 5.296 3.368 6.866 10.422 3.5 15.723a11.317 11.317 0 0 1-2.86 3.053 11.4 11.4 0 0 1-4.72 2.029c-1.127.203-2.284.24-3.433.098m12.57-4.19c3.911-6.16 2.085-14.358-4.069-18.271-6.154-3.915-14.342-2.089-18.253 4.072-3.91 6.16-2.085 14.356 4.07 18.271 6.153 3.915 14.343 2.09 18.252-4.072"
|
||||
></path>
|
||||
<path
|
||||
fill="#FFD399"
|
||||
d="M93.445 12.554c2.45 5.367.088 11.707-5.274 14.159-5.361 2.452-11.695.088-14.145-5.279-2.449-5.368-.088-11.707 5.275-14.16 5.361-2.452 11.695-.088 14.144 5.28"
|
||||
></path>
|
||||
<path
|
||||
fill="#FFD399"
|
||||
d="M91.45 28.239l-4.274 1.954a2.697 2.697 0 0 1-3.574-1.334l-2.775-6.08a2.7 2.7 0 0 1 1.333-3.578l4.274-1.955a2.696 2.696 0 0 1 3.575 1.334l2.775 6.08a2.702 2.702 0 0 1-1.333 3.579"
|
||||
></path>
|
||||
<path
|
||||
fill="#5A5C5D"
|
||||
d="M94.1 30.6l-6.9 3.156a1.255 1.255 0 0 1-1.043-2.284l6.902-3.155a1.253 1.253 0 1 1 1.04 2.282m1.275 2.794l-6.9 3.156a1.254 1.254 0 1 1-1.041-2.283l6.9-3.156a1.254 1.254 0 0 1 1.041 2.283m-1.682 1.387l-3.044 1.392c-.458.21-.4.889.09 1.006.685.164 1.425.11 2.115-.207a3.25 3.25 0 0 0 1.54-1.464c.233-.449-.241-.936-.701-.727"
|
||||
></path>
|
||||
<g transform="rotate(-69 92.268 -44.056)">
|
||||
<mask id="b" fill="#fff">
|
||||
<use xlinkHref="#a"></use>
|
||||
</mask>
|
||||
<path
|
||||
fill="#C42B34"
|
||||
d="M.732 4.08l.397-1.844a1.999 1.999 0 1 1 3.91.842l-.396 1.846A2 2 0 1 1 .732 4.08"
|
||||
mask="url(#b)"
|
||||
></path>
|
||||
</g>
|
||||
<path
|
||||
fill="#E1CFB4"
|
||||
d="M86.458 79.011l-1.334 7.43 6.268-4.21-2.12-2.355z"
|
||||
></path>
|
||||
<path
|
||||
fill="#FECB86"
|
||||
d="M103.266 56.87l-1.644-1.073-14.841 22.72 1.643 1.072z"
|
||||
></path>
|
||||
<path
|
||||
fill="#FAA736"
|
||||
d="M104.912 57.945l-1.644-1.074-14.841 22.72 1.644 1.073z"
|
||||
></path>
|
||||
<path
|
||||
fill="#FECB86"
|
||||
d="M90.071 80.664l1.644 1.072 14.842-22.72-1.645-1.072zm-3.306-.951c.31.203.774-.055 1.188.215a.513.513 0 0 1 .152.15l.32-.488-1.644-1.073-.297.453s-.028.542.281.743"
|
||||
></path>
|
||||
<path
|
||||
fill="#FAA736"
|
||||
d="M88.106 80.078c.205.277.111.67.548.956.44.286.764.042 1.098.118l.32-.488-1.648-1.075-.318.489z"
|
||||
></path>
|
||||
<path
|
||||
fill="#FECB86"
|
||||
d="M89.752 81.152a.507.507 0 0 1 .198.08c.414.27.365.797.675 1 .311.204.794-.041.794-.041l.296-.454-1.644-1.073-.32.488z"
|
||||
></path>
|
||||
<path
|
||||
fill="#535756"
|
||||
d="M85.123 86.44l2.22-1.488-1.749-1.14zm21.434-27.423l-4.935-3.22.437-.67 4.935 3.22z"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
@@ -1,26 +1,41 @@
|
||||
import React, { forwardRef, HTMLAttributes } from "react";
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
import { OverridableComponent } from "../util";
|
||||
|
||||
export interface PanelProps extends HTMLAttributes<HTMLDivElement> {
|
||||
/**
|
||||
* Component content
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Adds a border to the panel
|
||||
* @default false
|
||||
*/
|
||||
border?: boolean;
|
||||
export type PanelType = OverridableComponent<PanelProps>;
|
||||
|
||||
export interface PanelProps {
|
||||
props: {
|
||||
/**
|
||||
* Component content
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Adds a border to the panel
|
||||
* @default false
|
||||
*/
|
||||
border?: boolean;
|
||||
} & React.HTMLAttributes<HTMLElement>;
|
||||
defaultComponent: "div";
|
||||
}
|
||||
|
||||
const Panel = forwardRef<HTMLDivElement, PanelProps>(
|
||||
({ children, className, border = false, ...rest }, ref) => {
|
||||
const Panel: PanelType = forwardRef(
|
||||
(
|
||||
{
|
||||
children,
|
||||
className,
|
||||
border = false,
|
||||
component: Component = "div",
|
||||
...rest
|
||||
},
|
||||
ref
|
||||
) => {
|
||||
return (
|
||||
<div
|
||||
<Component
|
||||
ref={ref}
|
||||
className={cl("navds-panel", className, {
|
||||
"navds-panel--border": border,
|
||||
@@ -28,7 +43,7 @@ const Panel = forwardRef<HTMLDivElement, PanelProps>(
|
||||
{...rest}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
</Component>
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
@@ -21,7 +21,13 @@ const Tag = forwardRef<HTMLSpanElement, TagProps>(
|
||||
return (
|
||||
<span
|
||||
ref={ref}
|
||||
className={cl("navds-tag", className, `navds-tag--${variant}`)}
|
||||
className={cl(
|
||||
"navds-tag",
|
||||
className,
|
||||
"navds-detail",
|
||||
"navds-detail--s",
|
||||
`navds-tag--${variant}`
|
||||
)}
|
||||
{...rest}
|
||||
>
|
||||
{children}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
import { OverridableComponent } from "../util";
|
||||
|
||||
export interface BodyLongProps {
|
||||
props: {
|
||||
/**
|
||||
* M: 18px, S: 16px
|
||||
* @default "m"
|
||||
*/
|
||||
size?: "m" | "s";
|
||||
/**
|
||||
* Component content
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* Custom styling on element
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Adds margins to typo
|
||||
*/
|
||||
spacing?: boolean;
|
||||
} & React.HTMLAttributes<HTMLParagraphElement>;
|
||||
defaultComponent: "p";
|
||||
}
|
||||
|
||||
const BodyLong: OverridableComponent<BodyLongProps> = forwardRef(
|
||||
(
|
||||
{ className, size = "m", spacing, component: Component = "p", ...rest },
|
||||
ref
|
||||
) => (
|
||||
<Component
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-body-long", {
|
||||
"navds-body--s": size === "s",
|
||||
"navds-typo--spacing": !!spacing,
|
||||
})}
|
||||
/>
|
||||
)
|
||||
);
|
||||
|
||||
export default BodyLong;
|
||||
@@ -0,0 +1,44 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
import { OverridableComponent } from "../util/OverridableComponent";
|
||||
|
||||
export interface BodyShortProps {
|
||||
props: {
|
||||
/**
|
||||
* M: 18px, S: 16px
|
||||
* @default "m"
|
||||
*/
|
||||
size?: "m" | "s";
|
||||
/**
|
||||
* Component content
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* Custom styling on element
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Adds margins to typo
|
||||
*/
|
||||
spacing?: boolean;
|
||||
} & React.HTMLAttributes<HTMLParagraphElement>;
|
||||
defaultComponent: "p";
|
||||
}
|
||||
|
||||
const BodyShort: OverridableComponent<BodyShortProps> = forwardRef(
|
||||
(
|
||||
{ className, size = "m", spacing, component: Component = "p", ...rest },
|
||||
ref
|
||||
) => (
|
||||
<Component
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-body-short", {
|
||||
"navds-body--s": size === "s",
|
||||
"navds-typo--spacing": !!spacing,
|
||||
})}
|
||||
/>
|
||||
)
|
||||
);
|
||||
|
||||
export default BodyShort;
|
||||
@@ -0,0 +1,44 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
import { OverridableComponent } from "../util";
|
||||
|
||||
export interface DetailProps {
|
||||
props: {
|
||||
/**
|
||||
* M: 18px, S: 16px
|
||||
* @default "m"
|
||||
*/
|
||||
size?: "m" | "s";
|
||||
/**
|
||||
* Component content
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* Custom styling on element
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Adds margins to typo
|
||||
*/
|
||||
spacing?: boolean;
|
||||
} & React.HTMLAttributes<HTMLParagraphElement>;
|
||||
defaultComponent: "p";
|
||||
}
|
||||
|
||||
const Detail: OverridableComponent<DetailProps> = forwardRef(
|
||||
(
|
||||
{ className, size = "m", spacing, component: Component = "p", ...rest },
|
||||
ref
|
||||
) => (
|
||||
<Component
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-detail", {
|
||||
"navds-detail--s": size === "s",
|
||||
"navds-typo--spacing": !!spacing,
|
||||
})}
|
||||
/>
|
||||
)
|
||||
);
|
||||
|
||||
export default Detail;
|
||||
@@ -1,26 +0,0 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
|
||||
export interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {
|
||||
level: 1 | 2 | 3 | 4 | 5 | 6;
|
||||
size: "xxl" | "xl" | "large" | "medium" | "small";
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(
|
||||
({ level, size, className, children, ...rest }, ref) => {
|
||||
let HeadingTag = `h${level}` as React.ElementType;
|
||||
|
||||
return (
|
||||
<HeadingTag
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-heading", `navds-heading--${size}`)}
|
||||
>
|
||||
{children}
|
||||
</HeadingTag>
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
export default Heading;
|
||||
@@ -0,0 +1,35 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
import { OverridableComponent } from "../util";
|
||||
|
||||
export interface IngressProps {
|
||||
props: {
|
||||
/**
|
||||
* Component content
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* Custom styling on element
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Adds margins to typo
|
||||
*/
|
||||
spacing?: boolean;
|
||||
} & React.HTMLAttributes<HTMLParagraphElement>;
|
||||
defaultComponent: "p";
|
||||
}
|
||||
|
||||
const Ingress: OverridableComponent<IngressProps> = forwardRef(
|
||||
({ className, spacing, component: Component = "p", ...rest }, ref) => (
|
||||
<Component
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-ingress", {
|
||||
"navds-typo--spacing": !!spacing,
|
||||
})}
|
||||
/>
|
||||
)
|
||||
);
|
||||
|
||||
export default Ingress;
|
||||
@@ -0,0 +1,44 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
import { OverridableComponent } from "../util";
|
||||
|
||||
export interface LabelProps {
|
||||
props: {
|
||||
/**
|
||||
* M: 18px, S: 16px
|
||||
* @default "m"
|
||||
*/
|
||||
size?: "m" | "s";
|
||||
/**
|
||||
* Component content
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* Custom styling on element
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Adds margins to typo
|
||||
*/
|
||||
spacing?: boolean;
|
||||
} & React.HTMLAttributes<HTMLParagraphElement>;
|
||||
defaultComponent: "p";
|
||||
}
|
||||
|
||||
const Label: OverridableComponent<LabelProps> = forwardRef(
|
||||
(
|
||||
{ className, size = "m", spacing, component: Component = "p", ...rest },
|
||||
ref
|
||||
) => (
|
||||
<Component
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-label", {
|
||||
"navds-label--s": size === "s",
|
||||
"navds-typo--spacing": !!spacing,
|
||||
})}
|
||||
/>
|
||||
)
|
||||
);
|
||||
|
||||
export default Label;
|
||||
@@ -1,11 +0,0 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
|
||||
const Lead = forwardRef<
|
||||
HTMLParagraphElement,
|
||||
React.HTMLAttributes<HTMLParagraphElement>
|
||||
>(({ className, ...rest }, ref) => (
|
||||
<p {...rest} ref={ref} className={cl(className, "navds-article__lead")} />
|
||||
));
|
||||
|
||||
export default Lead;
|
||||
@@ -1,15 +0,0 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
|
||||
const Paragraph = forwardRef<
|
||||
HTMLParagraphElement,
|
||||
React.HTMLAttributes<HTMLParagraphElement>
|
||||
>(({ className, ...rest }, ref) => (
|
||||
<p
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-article__paragraph")}
|
||||
/>
|
||||
));
|
||||
|
||||
export default Paragraph;
|
||||
@@ -1,21 +0,0 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
|
||||
export interface TextProps extends React.HTMLAttributes<HTMLSpanElement> {
|
||||
size: "large" | "medium" | "small" | "xs";
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
const Text = forwardRef<HTMLSpanElement, TextProps>(
|
||||
({ size, className, children, ...rest }, ref) => (
|
||||
<span
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-text", `navds-text--${size}`)}
|
||||
>
|
||||
{children}
|
||||
</span>
|
||||
)
|
||||
);
|
||||
|
||||
export default Text;
|
||||
@@ -0,0 +1,49 @@
|
||||
import React, { forwardRef } from "react";
|
||||
import cl from "classnames";
|
||||
import { OverridableComponent } from "../util";
|
||||
|
||||
export interface TitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
|
||||
props: {
|
||||
/**
|
||||
* Heading level
|
||||
*/
|
||||
level: 1 | 2 | 3 | 4 | 5;
|
||||
/**
|
||||
* Sizes from largest "2xl" to smallest "s"
|
||||
*/
|
||||
size: "2xl" | "xl" | "l" | "m" | "s";
|
||||
/**
|
||||
* Heading to render
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* Custom styling on element
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* Adds margins to typo
|
||||
*/
|
||||
spacing?: boolean;
|
||||
} & React.HTMLAttributes<HTMLParagraphElement>;
|
||||
defaultComponent: "h1";
|
||||
}
|
||||
|
||||
const Title: OverridableComponent<TitleProps> = forwardRef(
|
||||
({ level, size, spacing, className, children, component, ...rest }, ref) => {
|
||||
let HeadingTag = component ?? (`h${level}` as React.ElementType);
|
||||
|
||||
return (
|
||||
<HeadingTag
|
||||
{...rest}
|
||||
ref={ref}
|
||||
className={cl(className, "navds-title", `navds-title--${size}`, {
|
||||
"navds-typo--spacing": !!spacing,
|
||||
})}
|
||||
>
|
||||
{children}
|
||||
</HeadingTag>
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
export default Title;
|
||||
@@ -1,8 +1,6 @@
|
||||
export { default as Heading } from "./Heading";
|
||||
export * from "./Heading";
|
||||
export { default as Text } from "./Text";
|
||||
export * from "./Text";
|
||||
export { default as Paragraph } from "./Paragraph";
|
||||
export * from "./Paragraph";
|
||||
export { default as Lead } from "./Lead";
|
||||
export * from "./Lead";
|
||||
export { default as Title } from "./Title";
|
||||
export { default as Ingress } from "./Ingress";
|
||||
export { default as BodyLong } from "./BodyLong";
|
||||
export { default as BodyShort } from "./BodyShort";
|
||||
export { default as Detail } from "./Detail";
|
||||
export { default as Label } from "./Label";
|
||||
@@ -0,0 +1,3 @@
|
||||
.typo-story > div:nth-child(even) {
|
||||
background: var(--navds-color-gray-20);
|
||||
}
|
||||
@@ -1,116 +1,137 @@
|
||||
import React from "react";
|
||||
import { Heading, Text, Paragraph, Lead } from "../index";
|
||||
import { Title, BodyShort, BodyLong, Detail, Ingress, Label } from "../index";
|
||||
import "./index.css";
|
||||
|
||||
export default {
|
||||
title: "ds-react/typography",
|
||||
component: Heading,
|
||||
component: BodyLong,
|
||||
};
|
||||
|
||||
export const heading = () => {
|
||||
return (
|
||||
export const TypoMedSpacing = () => <TypoMal spacing={true} />;
|
||||
export const TypoUtenSpacing = () => <TypoMal spacing={false} />;
|
||||
|
||||
const TypoMal = ({ ...rest }) => {
|
||||
const lorem = (text) => (
|
||||
<>
|
||||
<Heading level={1} size="xxl">
|
||||
xxl
|
||||
</Heading>
|
||||
<Heading level={2} size="xl">
|
||||
xl
|
||||
</Heading>
|
||||
<Heading level={3} size="large">
|
||||
large
|
||||
</Heading>
|
||||
<Heading level={4} size="medium">
|
||||
medium
|
||||
</Heading>
|
||||
<Heading level={5} size="small">
|
||||
small
|
||||
</Heading>
|
||||
{text} <br /> Veniam consequat cillum pariatur officia duis aute labore
|
||||
anim labore. Pariatur ad duis do nulla.
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export const text = () => {
|
||||
return (
|
||||
<div style={{ display: "flex", flexDirection: "column" }}>
|
||||
<Text size="large">large</Text>
|
||||
<Text size="medium">medium</Text>
|
||||
<Text size="small">small</Text>
|
||||
<Text size="xs">xs</Text>
|
||||
<div
|
||||
className="typo-story"
|
||||
style={{
|
||||
display: "flex",
|
||||
flexDirection: "column",
|
||||
}}
|
||||
>
|
||||
<div>
|
||||
<Title {...rest} level={1} size="2xl">
|
||||
{lorem("Title 2xl")}
|
||||
</Title>
|
||||
<Title {...rest} level={2} size="xl">
|
||||
{lorem("Title xl")}
|
||||
</Title>
|
||||
<Title {...rest} level={3} size="l">
|
||||
{lorem("Title l")}
|
||||
</Title>
|
||||
<Title {...rest} level={4} size="m">
|
||||
{lorem("Title m")}
|
||||
</Title>
|
||||
<Title {...rest} level={5} size="s">
|
||||
{lorem("Title s")}
|
||||
</Title>
|
||||
</div>
|
||||
<div>
|
||||
<Ingress {...rest}>{lorem("Ingress")}</Ingress>
|
||||
</div>
|
||||
<div>
|
||||
<BodyLong {...rest}>{lorem("BodyLong")}</BodyLong>
|
||||
<BodyLong {...rest} size="s">
|
||||
{lorem("BodyLong small")}
|
||||
</BodyLong>
|
||||
</div>
|
||||
<div>
|
||||
<BodyShort component="span" {...rest} {...rest}>
|
||||
{lorem("BodyShort")}
|
||||
</BodyShort>
|
||||
<BodyShort {...rest} size="s">
|
||||
{lorem("BodyShort small")}
|
||||
</BodyShort>
|
||||
</div>
|
||||
<div>
|
||||
<Label {...rest}>{lorem("Label")}</Label>
|
||||
<Label {...rest} size="s">
|
||||
{lorem("Label small")}
|
||||
</Label>
|
||||
</div>
|
||||
<div>
|
||||
<Detail {...rest}>{lorem("Detail")}</Detail>
|
||||
<Detail {...rest} size="s">
|
||||
{lorem("Detail small")}
|
||||
</Detail>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export const article = () => {
|
||||
export const SideInnholdEksempel = () => {
|
||||
return (
|
||||
<article>
|
||||
<Heading level={1} size="xxl">
|
||||
Uføretrygd
|
||||
</Heading>
|
||||
<Lead>
|
||||
Uføretrygd kan være aktuelt for deg som har varig nedsatt inntektsevne
|
||||
på grunn av sykdom eller skade.
|
||||
</Lead>
|
||||
<Paragraph>
|
||||
Uføretrygden erstatter den delen av inntektsevnen du har tapt på grunn
|
||||
av varig sykdom eller skade.
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
Om du har rett til 100 prosent uføretrygd eller gradert (delvis)
|
||||
uføretrygd, er avhengig av inntektsevnen din. Har du mulighet til å
|
||||
jobbe for eksempel 40 prosent, kan du ha rett til 60 prosent uføretrygd.{" "}
|
||||
</Paragraph>
|
||||
<p>
|
||||
Anim duis aliqua ad culpa amet ad. Anim deserunt veniam laborum commodo
|
||||
in excepteur reprehenderit. Sunt occaecat velit fugiat qui Lorem officia
|
||||
reprehenderit elit cillum occaecat. Lorem laborum adipisicing non qui
|
||||
consectetur do minim nostrud adipisicing qui. Sint et dolore commodo
|
||||
cillum elit magna reprehenderit labore consequat reprehenderit magna
|
||||
consequat qui. Ullamco eu sunt cupidatat laborum. Velit eu ex culpa
|
||||
voluptate proident tempor deserunt. Do pariatur consequat incididunt ad
|
||||
ut velit. Ea nisi eiusmod aliquip laboris nulla in ipsum amet sunt
|
||||
magna. Laboris pariatur nisi in culpa adipisicing sit esse esse. Ullamco
|
||||
dolore mollit minim dolor reprehenderit. Velit ipsum proident nostrud
|
||||
laborum non. Sunt consequat aute quis minim reprehenderit ipsum sunt
|
||||
ipsum.
|
||||
</p>
|
||||
<Heading level={2} size="xl">
|
||||
Hvem kan få uføretrygd?
|
||||
</Heading>
|
||||
<Paragraph>
|
||||
For å ha rett til å få uføretrygd må du som hovedregel oppfylle disse
|
||||
vilkårene:
|
||||
</Paragraph>
|
||||
<ul>
|
||||
<li>Du må være mellom 18 og 67 år.</li>
|
||||
<li>
|
||||
Du må ha vært medlem av folketrygden i de siste tre årene før du ble
|
||||
syk.
|
||||
</li>
|
||||
<li>
|
||||
Sykdom og/eller skade må være hovedårsaken til at inntektsevnen din er
|
||||
nedsatt.
|
||||
</li>
|
||||
<li>
|
||||
Hensiktsmessig behandling og arbeidsrettede tiltak må være
|
||||
gjennomført.
|
||||
</li>
|
||||
<li>
|
||||
Inntektsevnen din må være varig nedsatt med minst 50 prosent på grunn
|
||||
av sykdom og/eller skade.
|
||||
</li>
|
||||
</ul>
|
||||
<Paragraph>
|
||||
Mottar du{" "}
|
||||
<a href="https://www.nav.no/no/person/arbeid/arbeidsavklaringspenger/arbeidsavklaringspenger-aap">
|
||||
arbeidsavklaringspenger
|
||||
</a>{" "}
|
||||
på søknadstidspunktet er det tilstrekkelig at inntektsevnen din er varig
|
||||
nedsatt med minst 40 prosent. Skyldes uførheten en godkjent{" "}
|
||||
<a href="https://www.nav.no/no/person/arbeid/yrkesskade-og-yrkessykdom">
|
||||
yrkesskade eller yrkessykdom
|
||||
</a>
|
||||
, er det tilstrekkelig at inntektsevnen din er varig nedsatt med minst
|
||||
30 prosent.
|
||||
</Paragraph>
|
||||
</article>
|
||||
<div style={{ maxWidth: 600 }}>
|
||||
<Title level={1} size="2xl" spacing>
|
||||
Title lvl 1 2xl
|
||||
</Title>
|
||||
<BodyLong spacing>
|
||||
BodyLong: Aliqua ad et nisi commodo sit excepteur in commodo proident
|
||||
proident. Nostrud consectetur dolore eu nostrud aliqua. Adipisicing
|
||||
labore aliqua qui velit amet ea amet do. Magna anim velit et incididunt.
|
||||
Lorem ad pariatur pariatur quis magna cupidatat. Exercitation officia
|
||||
occaecat occaecat id nulla fugiat laborum elit laboris non est ex
|
||||
nostrud occaecat. Commodo laboris veniam cillum in aute.
|
||||
</BodyLong>
|
||||
<BodyLong spacing>
|
||||
BodyLong: Cillum consequat velit est ea voluptate. Et elit irure magna
|
||||
sit consequat mollit excepteur ad non excepteur velit exercitation aute.
|
||||
Fugiat deserunt quis nulla cupidatat esse quis ex. Laborum eiusmod culpa
|
||||
labore eu irure quis laborum. Irure veniam et nostrud do. Quis ut ea est
|
||||
culpa tempor anim.
|
||||
</BodyLong>
|
||||
<BodyLong spacing>
|
||||
BodyLong: Dolore commodo ad veniam commodo aute voluptate est officia
|
||||
sunt proident irure consectetur excepteur.
|
||||
</BodyLong>
|
||||
<Title level={2} size="xl" spacing>
|
||||
Title lvl 2 xl
|
||||
</Title>
|
||||
<Ingress spacing>
|
||||
Ingress: Mollit incididunt incididunt officia amet est et non aliqua
|
||||
officia nulla et aute aliqua culpa.
|
||||
</Ingress>
|
||||
<BodyLong spacing>
|
||||
BodyLong: Commodo veniam enim laborum pariatur excepteur commodo do
|
||||
cillum. Nisi elit sunt commodo id in adipisicing cupidatat dolore dolore
|
||||
et tempor cupidatat. Cillum quis sunt in dolor occaecat.
|
||||
</BodyLong>
|
||||
<BodyLong spacing>
|
||||
BodyLong: Irure dolore laborum amet occaecat ex laboris mollit
|
||||
reprehenderit nisi laborum voluptate laborum. Ipsum eu sint laborum
|
||||
adipisicing ut incididunt laborum laborum. Ipsum non amet laboris quis
|
||||
Lorem est laborum qui pariatur ex eu. Eiusmod proident amet esse ex.
|
||||
</BodyLong>
|
||||
<BodyLong size="s" spacing>
|
||||
BodyLong small: Irure dolore laborum amet occaecat ex laboris mollit
|
||||
reprehenderit nisi laborum voluptate laborum. Ipsum eu sint laborum
|
||||
adipisicing ut incididunt laborum laborum. Ipsum non amet laboris quis
|
||||
Lorem est laborum qui pariatur ex eu. Eiusmod proident amet esse ex.
|
||||
</BodyLong>
|
||||
<BodyShort spacing>
|
||||
BodyShort: Id consectetur velit sunt laboris consequat ullamco
|
||||
incididunt.
|
||||
</BodyShort>
|
||||
<BodyShort size="s" spacing>
|
||||
BodyShort small: Sunt amet officia sit excepteur sit pariatur sit
|
||||
reprehenderit irure ipsum.
|
||||
</BodyShort>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
@@ -0,0 +1,14 @@
|
||||
const StyleDictionary = require("style-dictionary");
|
||||
const kebabCase = require("./kebabCase");
|
||||
|
||||
StyleDictionary.registerTransform({
|
||||
name: "name/cti/kebab",
|
||||
type: "name",
|
||||
transformer: (prop, options) =>
|
||||
kebabCase([options.prefix].concat(prop.path).join(" ")),
|
||||
});
|
||||
|
||||
const StyleDictionaryExtended = StyleDictionary.extend(
|
||||
__dirname + "/config.json"
|
||||
);
|
||||
StyleDictionaryExtended.buildAllPlatforms();
|
||||
@@ -0,0 +1,4 @@
|
||||
const _ = require("lodash");
|
||||
|
||||
module.exports = (string) =>
|
||||
_.kebabCase(string).replace(/(^|-)(\d+)-(x[ls])/g, "$1$2$3");
|
||||
@@ -0,0 +1,26 @@
|
||||
const kebabCase = require("./kebabCase");
|
||||
|
||||
describe("kebabCase", () => {
|
||||
[
|
||||
"foo bar",
|
||||
"Foo bar",
|
||||
"foo Bar",
|
||||
"Foo Bar",
|
||||
"FOO BAR",
|
||||
"fooBar",
|
||||
"--foo-bar--",
|
||||
"__foo_bar__",
|
||||
].forEach((string) =>
|
||||
test(`${string} is converted to foo-bar`, () => {
|
||||
expect(kebabCase(string)).toBe("foo-bar");
|
||||
})
|
||||
);
|
||||
|
||||
test(`spacing 3xl is converted to spacing-3xl`, () => {
|
||||
expect(kebabCase("spacing 3xl")).toBe("spacing-3xl");
|
||||
});
|
||||
|
||||
test(`3xs is converted to 3xs`, () => {
|
||||
expect(kebabCase("3xs")).toBe("3xs");
|
||||
});
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-tokens",
|
||||
"version": "0.2.1",
|
||||
"version": "0.3.2",
|
||||
"private": false,
|
||||
"description": "Auto-generated design-tokens for NAV design-systems framework",
|
||||
"author": "NAV Designsystem team",
|
||||
@@ -17,9 +17,10 @@
|
||||
"/src"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "style-dictionary build",
|
||||
"build": "node ./build.js",
|
||||
"watch": "nodemon --watch src/index.js --exec \"yarn build\"",
|
||||
"token": "style-dictionary build"
|
||||
"token": "style-dictionary build",
|
||||
"test": "jest"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -28,6 +29,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"color": "^3.1.3",
|
||||
"jest": "^26.6.3",
|
||||
"lodash": "^4.17.21",
|
||||
"nodemon": "^2.0.6",
|
||||
"style-dictionary": "^2.10.2"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
const Color = require("color");
|
||||
|
||||
const baseFontSize = 16;
|
||||
|
||||
const getFontSize = (size) => `${size / baseFontSize}rem`;
|
||||
// https://github.com/hihayk/scale/blob/69b766bba2db046d3e8cb4026ae32a32c897f9ff/src/utils.js#L44
|
||||
const mixColors = (color, step, amount, mixColor) => {
|
||||
const saturation = Math.round(Color(color).hsl().color[1]);
|
||||
@@ -92,7 +95,7 @@ module.exports = {
|
||||
border: { value: "{navds.color.gray.40.value}" },
|
||||
background: { value: "{navds.color.white.value}" },
|
||||
text: {
|
||||
primary: { value: "{navds.color.darkgray.value}" },
|
||||
primary: { value: "{navds.color.gray.90}" },
|
||||
inverse: { value: "{navds.color.white.value}" },
|
||||
disabled: { value: "{navds.color.gray.60.value}" },
|
||||
link: { value: "{navds.color.blue.50.value}" },
|
||||
@@ -134,35 +137,34 @@ module.exports = {
|
||||
},
|
||||
font: {
|
||||
family: { value: '"Source Sans Pro", Arial, sans-serif' },
|
||||
line: {
|
||||
height: {
|
||||
"2xl": { value: getFontSize(52) },
|
||||
xl: { value: getFontSize(40) },
|
||||
l: { value: getFontSize(36) },
|
||||
m: { value: getFontSize(32) },
|
||||
s: { value: getFontSize(28) },
|
||||
xs: { value: getFontSize(24) },
|
||||
"2xs": { value: getFontSize(20) },
|
||||
},
|
||||
},
|
||||
size: {
|
||||
heading: {
|
||||
xxl: { value: "2.5rem" },
|
||||
xl: { value: "2rem" },
|
||||
large: { value: "1.5rem" },
|
||||
medium: { value: "1.25rem" },
|
||||
small: { value: "1.125rem" },
|
||||
},
|
||||
large: { value: "1.25rem" },
|
||||
medium: { value: "1.125rem" },
|
||||
small: { value: "1rem" },
|
||||
xs: { value: "0.875rem" },
|
||||
article: {
|
||||
lead: { value: "1.25rem" },
|
||||
paragraph: { value: "1.125rem" },
|
||||
title: {
|
||||
"2xl": { value: getFontSize(40) },
|
||||
xl: { value: getFontSize(32) },
|
||||
l: { value: getFontSize(28) },
|
||||
m: { value: getFontSize(24) },
|
||||
s: { value: getFontSize(20) },
|
||||
},
|
||||
xl: { value: getFontSize(20) },
|
||||
l: { value: getFontSize(18) },
|
||||
m: { value: getFontSize(16) },
|
||||
s: { value: getFontSize(14) },
|
||||
},
|
||||
weight: {
|
||||
bold: { value: "600" },
|
||||
regular: { value: "400" },
|
||||
},
|
||||
line: {
|
||||
height: {
|
||||
large: { value: "1.625rem" },
|
||||
medium: { value: "1.5rem" },
|
||||
small: { value: "1.375rem" },
|
||||
xs: { value: "1.25rem" },
|
||||
},
|
||||
},
|
||||
},
|
||||
shadow: {
|
||||
focus: { value: "0 0 0 3px {navds.color.blue.80.value}" },
|
||||
@@ -176,14 +178,14 @@ module.exports = {
|
||||
contentContainer: {
|
||||
maxWidth: { value: "79.5rem" },
|
||||
padding: {
|
||||
small: { value: "1rem" },
|
||||
mediumAndLarger: { value: "1.5rem" },
|
||||
small: { value: "{navds.spacing.4.value}" },
|
||||
mediumAndLarger: { value: "{navds.spacing.6.value}" },
|
||||
},
|
||||
},
|
||||
grid: {
|
||||
gutter: {
|
||||
small: { value: "1rem" },
|
||||
mediumAndLarger: { value: "1.5rem" },
|
||||
small: { value: "{navds.spacing.4.value}" },
|
||||
mediumAndLarger: { value: "{navds.spacing.6.value}" },
|
||||
},
|
||||
},
|
||||
layout: {
|
||||
@@ -192,20 +194,18 @@ module.exports = {
|
||||
gray: { value: "{navds.color.gray.10.value}" },
|
||||
},
|
||||
padding: {
|
||||
small: { value: "1rem" },
|
||||
mediumAndLarger: { value: "2.5rem" },
|
||||
small: { value: "{navds.spacing.4.value}" },
|
||||
mediumAndLarger: { value: "{navds.spacing.10.value}" },
|
||||
},
|
||||
},
|
||||
z: {
|
||||
index: {
|
||||
modal: {
|
||||
content: { value: "1010" },
|
||||
overlay: { value: "1000" },
|
||||
},
|
||||
popover: {
|
||||
default: { value: "2000" },
|
||||
arrow: { value: "-1" },
|
||||
},
|
||||
"z-index": {
|
||||
modal: {
|
||||
content: { value: "1010" },
|
||||
overlay: { value: "1000" },
|
||||
},
|
||||
popover: {
|
||||
default: { value: "2000" },
|
||||
arrow: { value: "-1" },
|
||||
},
|
||||
},
|
||||
sidebar: {
|
||||
@@ -213,5 +213,14 @@ module.exports = {
|
||||
offset: { value: "0" },
|
||||
},
|
||||
},
|
||||
spacing: Array(24)
|
||||
.fill(0)
|
||||
.reduce(
|
||||
(spacing, _, index) => ({
|
||||
...spacing,
|
||||
[index + 1]: { value: `${(index + 1) / 4}rem` },
|
||||
}),
|
||||
{}
|
||||
),
|
||||
},
|
||||
};
|
||||
@@ -1,5 +1,27 @@
|
||||
# Endringslogg
|
||||
|
||||
## 02. Juni 2021
|
||||
|
||||
### Nytt typo-oppsett for ds-react, ds-css og ds-tokens
|
||||
|
||||
[#1079](https://github.com/navikt/nav-frontend-moduler/pull/1079)
|
||||
|
||||
[Typo med spacing](https://navikt.github.io/Designsystemet/?path=/story/ds-react-typography--typo-med-spacing)
|
||||
[Typo uten spacing](https://navikt.github.io/Designsystemet/?path=/story/ds-react-typography--typo-uten-spacing)
|
||||
[Bruks eksempel](https://navikt.github.io/Designsystemet/?path=/story/ds-react-typography--side-innhold-eksempel)
|
||||
|
||||
Ds-react, ds-css og ds-tokens er alle minor-bumpet
|
||||
|
||||
Nye komponenter for typografi:
|
||||
- Title: Heading
|
||||
- Ingress
|
||||
- BodyLong: Lengre tekster, tenk en vanlig paragraf
|
||||
- BodyShort: Mindre tekster, tenk teksten på en knapp eller label
|
||||
- Label
|
||||
- Detail: Detaljetekst på 14px
|
||||
|
||||
Ds-css og ds-tokens er endret for å tilrettelegge for disse. Diverse komponenter i ds-react bruker nå også typo-stilene for å sikre riktig typo.
|
||||
|
||||
## 21. Mai 2021
|
||||
|
||||
### Popover-position oppdateres nå onMount
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ErrorFilled, Settings, SuccessFilled } from "@navikt/ds-icons";
|
||||
import { Alert, Heading, Link, Paragraph } from "@navikt/ds-react";
|
||||
import { Alert, Title, Link, BodyLong } from "@navikt/ds-react";
|
||||
import Alertstripe from "nav-frontend-alertstriper";
|
||||
import Chevron from "nav-frontend-chevron";
|
||||
import Ekspanderbartpanel from "nav-frontend-ekspanderbartpanel";
|
||||
@@ -94,11 +94,11 @@ import Proptable from "./props/Proptable";
|
||||
import TableOfContents from "./table-of-contents/TableOfContents";
|
||||
|
||||
const components = {
|
||||
h1: (props) => <Heading size="xxl" level={1} {...props} />,
|
||||
h2: (props) => <Heading size="large" level={2} {...props} />,
|
||||
h3: (props) => <Heading size="small" level={3} {...props} />,
|
||||
h4: (props) => <Heading size="small" level={4} {...props} />,
|
||||
p: (props) => <Paragraph size="medium" {...props} />,
|
||||
h1: (props) => <Title size="2xl" level={1} spacing {...props} />,
|
||||
h2: (props) => <Title size="l" level={2} spacing {...props} />,
|
||||
h3: (props) => <Title size="s" level={3} spacing {...props} />,
|
||||
h4: (props) => <Title size="s" level={4} spacing {...props} />,
|
||||
p: (props) => <BodyLong size="m" spacing {...props} />,
|
||||
a: (props) => <Link {...props} />,
|
||||
code: (props) => <Inline {...props} />,
|
||||
SuccessIcon: () => (
|
||||
|
||||
@@ -30,7 +30,9 @@ const Header = ({
|
||||
<Link href="/">
|
||||
<button className={"header__link"}>
|
||||
<NavLogo />
|
||||
<span className={"header__link-title"}>NAV Designsystem</span>
|
||||
<span className="header__link-title navds-title navds-title--m">
|
||||
NAV Designsystem
|
||||
</span>
|
||||
</button>
|
||||
</Link>
|
||||
</header>
|
||||
|
||||
@@ -67,9 +67,6 @@
|
||||
|
||||
.header__link-title {
|
||||
color: white;
|
||||
font-size: var(--navds-font-size-heading-large);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
line-height: var(--navds-font-line-height-large);
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useContext } from "react";
|
||||
import { Next } from "@navikt/ds-icons";
|
||||
import { Heading } from "@navikt/ds-react";
|
||||
import { Title } from "@navikt/ds-react";
|
||||
import { PagePropsContext } from "../../pages/_app";
|
||||
import "./tableOfContents.css";
|
||||
|
||||
@@ -9,12 +9,12 @@ const TableOfContents = () => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Heading size="large" level={2}>
|
||||
<Title size="l" spacing level={2}>
|
||||
Innhold
|
||||
</Heading>
|
||||
</Title>
|
||||
<ul className={"toc__ul"}>
|
||||
{tableOfContents?.map(({ heading, slug }) => (
|
||||
<li key={slug} className={"toc__li"}>
|
||||
<li key={slug} className={"toc__li navds-body-short"}>
|
||||
<Next
|
||||
aria-label="Pil peker på lenke"
|
||||
focusable="false"
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
.toc__li {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
font-size: var(--navds-font-size-medium);
|
||||
line-height: var(--navds-font-line-height-medium);
|
||||
color: var(--navds-color-blue-50);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -250,11 +250,11 @@ const IconPage = () => {
|
||||
<Systemtittel>{selectedIcon.name}</Systemtittel>
|
||||
<div className="iconPage__modal--wrapper">
|
||||
<div>
|
||||
<p className="iconPage__modalTitle">Fargevelger</p>
|
||||
<p className="iconPage__modalTitle navds-label">Fargevelger</p>
|
||||
<ColorSwitch onChange={(c) => setColor(c)} />
|
||||
</div>
|
||||
<div style={{ marginLeft: "2rem" }}>
|
||||
<p className="iconPage__modalTitle">Last ned</p>
|
||||
<p className="iconPage__modalTitle navds-label">Last ned</p>
|
||||
<div className="iconPage__modalButton--wrapper">
|
||||
<Button
|
||||
size="small"
|
||||
|
||||
@@ -107,9 +107,6 @@
|
||||
|
||||
&Title {
|
||||
margin: 0 0 0 0.2rem;
|
||||
font-size: var(--navds-font-size-heading-small);
|
||||
line-height: var(--navds-font-line-height-small);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
}
|
||||
|
||||
&Icons {
|
||||
|
||||
@@ -260,11 +260,11 @@ const IconPage = () => {
|
||||
<Systemtittel>{selectedIcon.name}</Systemtittel>
|
||||
<div className="iconPage__modal--wrapper">
|
||||
<div>
|
||||
<p className="iconPage__modalTitle">Fargevelger</p>
|
||||
<p className="iconPage__modalTitle navds-label">Fargevelger</p>
|
||||
<ColorSwitch onChange={(c) => setColor(c)} />
|
||||
</div>
|
||||
<div style={{ marginLeft: "2rem" }}>
|
||||
<p className="iconPage__modalTitle">Last ned</p>
|
||||
<p className="iconPage__modalTitle navds-label">Last ned</p>
|
||||
<div className="iconPage__modalButton--wrapper">
|
||||
<Button
|
||||
size="small"
|
||||
|
||||
@@ -107,9 +107,6 @@
|
||||
|
||||
&Title {
|
||||
margin: 0 0 0 0.2rem;
|
||||
font-size: var(--navds-font-size-heading-small);
|
||||
line-height: var(--navds-font-line-height-small);
|
||||
font-weight: var(--navds-font-weight-bold);
|
||||
}
|
||||
|
||||
&Icons {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { MDXProvider } from "@mdx-js/react";
|
||||
import { Heading, Paragraph } from "@navikt/ds-react";
|
||||
import { Title, BodyLong } from "@navikt/ds-react";
|
||||
import cl from "classnames";
|
||||
import React, { useEffect, useState } from "react";
|
||||
import { Helmet } from "react-helmet";
|
||||
@@ -55,12 +55,12 @@ const BetaLayout = (props) => {
|
||||
code: (props) => <Codeblock {...props} />,
|
||||
inlineCode: (props) => <InlineCode {...props} />,
|
||||
Example,
|
||||
h1: (props) => <Heading {...props} level={1} size="xxl" />,
|
||||
h2: (props) => <Heading {...props} level={2} size="xl" />,
|
||||
h3: (props) => <Heading {...props} level={3} size="large" />,
|
||||
h4: (props) => <Heading {...props} level={4} size="medium" />,
|
||||
h5: (props) => <Heading {...props} level={5} size="small" />,
|
||||
p: (props) => <Paragraph {...props} />,
|
||||
h1: (props) => <Title {...props} level={1} size="2xl" />,
|
||||
h2: (props) => <Title {...props} level={2} size="xl" />,
|
||||
h3: (props) => <Title {...props} level={3} size="l" />,
|
||||
h4: (props) => <Title {...props} level={4} size="m" />,
|
||||
h5: (props) => <Title {...props} level={5} size="s" />,
|
||||
p: (props) => <BodyLong {...props} />,
|
||||
}}
|
||||
>
|
||||
{props.children}
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
---
|
||||
title: Typografi
|
||||
rank: 1
|
||||
---
|
||||
|
||||
import { Heading, Text, Paragraph, Lead } from "@navikt/ds-react";
|
||||
|
||||
# Typografi
|
||||
|
||||
NAVs font på nett er Google-fonten Source Sans Pro, med Arial og sans-serif som fallback.
|
||||
|
||||
```css
|
||||
font-family: "Source Sans Pro", Arial, sans-serif;
|
||||
```
|
||||
|
||||
Fonten kan lastes ned her: https://fonts.google.com/specimen/Source+Sans+Pro
|
||||
|
||||
## Komponenter
|
||||
|
||||
Foreslått tredeling av typografi-komponenter: overskrifter, artikkel-stiler, småtester.
|
||||
|
||||
### Heading
|
||||
|
||||
Merk at størrelse er frikoblet hierarkisk nivå. (Her gir det mening å si noe om tiltent bruk i ulike sammenhenger som eksterne flater, saksbehandlingsløsninger osv.)
|
||||
|
||||
<Example>
|
||||
<Heading level={1} size="xxl">
|
||||
Heading xxl 40px semibold (line-height: 44px)
|
||||
</Heading>
|
||||
<Heading level={2} size="xl">
|
||||
Heading xl 32px semibold (line-height: 36px)
|
||||
</Heading>
|
||||
<Heading level={3} size="large">
|
||||
Heading large 24px semibold (line-height: 28px)
|
||||
</Heading>
|
||||
<Heading level={4} size="medium">
|
||||
Heading medium 20px semibold (line-height: 24px)
|
||||
</Heading>
|
||||
<Heading level={5} size="small">
|
||||
Heading small 18px semibold (line-height: 22px)
|
||||
</Heading>
|
||||
</Example>
|
||||
|
||||
Spørsmål: Burde overskriftene ha margin?
|
||||
|
||||
### Text
|
||||
|
||||
Text er en typografikomponent som brukes for alle tekster som ikke er en overskirft, eller er en del av en artikkel (paragraf o.l.).
|
||||
|
||||
<Example style={{ display: "grid" }}>
|
||||
<Text size="large">Text large 20px normal (line-height: 26px)</Text>
|
||||
<Text size="medium">Text medium 18px normal (line-height: 24px)</Text>
|
||||
<Text size="small">Text small 16px normal (line-height: 22px)</Text>
|
||||
<Text size="xs">Text xs 14px normal (line-height: 20px)</Text>
|
||||
</Example>
|
||||
|
||||
### Paragraph
|
||||
|
||||
Paragraph er komponenten for brødtekst.
|
||||
|
||||
<Example>
|
||||
<Paragraph>Heading xxl 40px semibold</Paragraph>
|
||||
</Example>
|
||||
|
||||
### Lead
|
||||
|
||||
Lead er komponenten for ingress i artikler.
|
||||
|
||||
<Example>
|
||||
<Lead>Heading xxl 40px semibold</Lead>
|
||||
</Example>
|
||||
|
||||
### Flere?
|
||||
|
||||
## Størrelse
|
||||
|
||||
Alle font-størrelser faller innenfor denne skalaen:
|
||||
|
||||
<span style="font-size: 14px">14px, </span>
|
||||
<span style="font-size: 16px">16px, </span>
|
||||
<span style="font-size: 18px">18px, </span>
|
||||
<span style="font-size: 20px">20px, </span>
|
||||
<span style="font-size: 24px">24px, </span>
|
||||
<span style="font-size: 32px">32px, </span>
|
||||
<span style="font-size: 40px">40px</span>
|
||||
|
||||
Spørsmål: For øyeblikket skalerer tekstene avhengig av skjembredde. Jeg mener vi ikke trenger den ekstra kompleksiteten.
|
||||
|
||||
## Linjehøyde
|
||||
|
||||
Spørsmål: Burde linjehøyden heller være en relativ størrelse (f.eks. 1.3)?
|
||||
@@ -17361,6 +17361,28 @@ natural-compare@^1.4.0:
|
||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||
|
||||
nav-frontend-core@^5.0.11, nav-frontend-core@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/nav-frontend-core/-/nav-frontend-core-5.1.1.tgz#564df53fdfa61f084950841bd6e3668fab41bfeb"
|
||||
integrity sha512-oK6VFJggnMIHsEBWXArsv+d9IO9uqUc1dp4kplHrRmTeYT2tN+pb1DA6BUOHXplGe062DIe241zYz4/lrGsmAg==
|
||||
|
||||
nav-frontend-knapper-style@^1.0.17:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/nav-frontend-knapper-style/-/nav-frontend-knapper-style-1.1.2.tgz#700c3ee14f8e757d0d4e706a4b1ee5488eae9a40"
|
||||
integrity sha512-A8y4PkjAUBTjs4HzWJuGvk1rwXHE5Slz2SsnedqPt79Oyy+/msp+f/WyIRSsCyzp2qcMQyhcj1JSccqglpBbBA==
|
||||
|
||||
nav-frontend-knapper@^2.0.32:
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/nav-frontend-knapper/-/nav-frontend-knapper-2.1.4.tgz#8eea6a82a5f014987e22a4aba02f847a1382e220"
|
||||
integrity sha512-qq4d6mZ1wlvo62cNe4rwWbTgupEyJlaQzZNuYLWCCkIbSDNR6vz/pkfAue57lsFgeAXAWK4YC13r/8MbMu6f+w==
|
||||
|
||||
nav-frontend-typografi-style@^1.0.35:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/nav-frontend-typografi-style/-/nav-frontend-typografi-style-1.1.1.tgz#cfcfd6c9650ef3a1176e0954645feaf494723808"
|
||||
integrity sha512-AaXOmWMX+7kU/bFlzKgb4fLzUBEqedZfV00ri8TChWOoP+fR9t9cdBaWKkFiMQqlttA6n6IRrTCKYXhuquQWzQ==
|
||||
dependencies:
|
||||
nav-frontend-core "^5.1.1"
|
||||
|
||||
needle@^2.5.2:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.6.0.tgz#24dbb55f2509e2324b4a99d61f413982013ccdbe"
|
||||
|
||||
Reference in new issue
Block a user