Compare commits

...
Author SHA1 Message Date
github-actions[bot]andgithub-actions[bot] 30330473b1 Version Packages (#1949)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-27 16:20:52 +02:00
Ken b1e18fd724 🐛 Timeline bruker nå norsk locale (#1948) 2023-04-27 16:18:41 +02:00
Ken 5b458c2d52 💄 Ascii-art for CLI 2023-04-27 15:22:19 +02:00
github-actions[bot]andgithub-actions[bot] 6450922b32 Version Packages (#1947)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-27 14:46:32 +02:00
Ken f6e3840cde 📝 Bedre dokumentasjon for @navikt/aksel (#1946) 2023-04-27 14:41:49 +02:00
Ken 1afdee453f 🏷️ Conditional ExpansionCard-prop (#1944) 2023-04-27 14:38:43 +02:00
Ken 1c7734fb09 📝 Bedre dokumentasjon textarea 2023-04-27 12:26:35 +02:00
Ken 9816c4f3a9 ⬆️ Oppdatert sanity til 3.9.1 2023-04-27 12:10:46 +02:00
Ken c40bf79a46 🐛 Forside brakk ved bruk av Card uten ingress/metadata 2023-04-27 10:54:27 +02:00
Ken b1cf8e4724 🐛 CDN fikk ikke riktig mappe for generert CSS 2023-04-27 09:54:06 +02:00
Ken 4578693878 🐛 Release-workflow for CSS hadde feil nesting 2023-04-26 08:58:18 +02:00
Ken 297aef13ad ⬆️ Yarn lock 2023-04-26 08:57:15 +02:00
github-actions[bot]andgithub-actions[bot] d5c040d24f Version Packages (#1942)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-26 08:35:28 +02:00
Ken 250d6c55b6 ⬆️ Yarn lock 2023-04-26 08:17:44 +02:00
Ken de69c6c18b 🐛 Sync ds-css version with CLI 2023-04-26 08:16:16 +02:00
Ken 657b7f3f3e Fragmentert CSS + CLI-verktøy @navikt/aksel (#1941) 2023-04-26 08:13:40 +02:00
Ken 00697c7581 ⚰️ Fjernet Snyk-scans fra workflows (#1940) 2023-04-25 19:11:27 +02:00
Ken a556ac6d44 ⚰️ Fjernet Snyk-scans fra workflows (#1940) 2023-04-25 19:09:41 +02:00
github-actions[bot]andgithub-actions[bot] 32c7228504 Version Packages (#1938)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-24 15:45:26 +02:00
Ken ff001f2bcf 🐛 ExpansionCard.Content sendte ikke videre className 2023-04-24 15:35:09 +02:00
Ken 048dc285eb 🔥 Fjernet github-realeases fra changeset-config 2023-04-24 09:26:04 +02:00
github-actions[bot]andgithub-actions[bot] ecd58dd7d3 Version Packages (#1934)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-24 09:12:11 +02:00
Ken 2845342468 🎨 Datepickers viser nå bare in-range datoer ved input-fokus (#1929) 2023-04-21 19:03:36 +02:00
Ken 6682be1c8e 🔧 Alle pakker bruker nå npm provernance for verifisering (#1930) 2023-04-21 19:03:19 +02:00
Ken dfe923582a 🎉 Nye ikoner for aksel-icons (#1928) 2023-04-21 11:01:22 +02:00
github-actions[bot]andgithub-actions[bot] d6e2705700 Version Packages (#1927)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-20 16:09:51 +02:00
Ken f0d9a8853f ♻️ Datepicker/Monthpicke måned blir nå riktig oppdatert ved åpne/lukk 2023-04-20 15:39:25 +02:00
Ken 19a8c46378 🔒 Oppdatert CSP for aksel.nav.no (#1924) 2023-04-20 10:37:30 +02:00
github-actions[bot]andgithub-actions[bot] e5edad201a Version Packages (#1923)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-04-18 13:07:50 +02:00
Ken ecd6241e57 🎉 Oppdatert ikoner (#1921) 2023-04-18 12:40:22 +02:00
Ken 6ab0935a1f 🐛 Fikset kodevisning på Aksel 2023-04-17 12:19:01 +02:00
Ken ac0595135e 🐛 Fikset tsconfig aliasing 2023-04-17 09:29:45 +02:00
Ken 29928ef32e 🚚 Type-handling refactor
🏷️ Accordion-types

🏷️ Alert-types

🏷️ Code-snippet types

🏷️ Table-types

🏷️ UU-table typer

🏷️ token,bilde,innholdkort,relatertinnholdkort,examples,prop types

♻️ Cleanup types export/import

🏷️ Moved sanity-interfaceses

🏷️ Prop-generation types fix
2023-04-17 08:38:53 +02:00
Ken 9b4c7d972c ⬆️ Oppdatert storybook til v7 2023-04-13 13:54:38 +02:00
Ken f003fd38f7 ⬆️ Bumpet sanity 2023-04-13 13:17:54 +02:00
Ken 86cdc9cb70 ⬆️ 🐛 Oppdatert sanity, fikset axe-alerts 2023-04-13 13:11:30 +02:00
208 changed files with 4290 additions and 2911 deletions

No files matched your search

+1
View File
@@ -12,6 +12,7 @@
"@navikt/ds-react-internal",
"@navikt/ds-codemod",
"@navikt/aksel-icons",
"@navikt/aksel",
"@navikt/ds-icons"
]
],
-29
View File
@@ -6,34 +6,6 @@ on:
- next
jobs:
snyk-monitor:
name: monitor dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run Snyk to check for vulnerabilities
continue-on-error: true
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
command: monitor
args: --org=designsystemet --severity-threshold=high
snyk-test:
name: analyze dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
continue-on-error: true
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
command: test
args: --org=designsystemet --severity-threshold=high
build_and_deploy:
name: Build and deploy to dev-gcp
runs-on: ubuntu-20.04
@@ -49,7 +21,6 @@ jobs:
- name: add tokens to .env
run: |
echo "SANITY_WRITE_KEY=${{ secrets.SANITY_FEEDBACK_WRITE_KEY }}" >> aksel.nav.no/website/.env
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PREVIEW_TOKEN=${{ secrets.SANITY_PREVIEW_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PRIVATE_NO_DRAFTS=${{ secrets.SANITY_PRIVATE_NO_DRAFTS }}" >> aksel.nav.no/website/.env
echo "USE_CDN_ASSETS=true" >> aksel.nav.no/website/.env
-29
View File
@@ -10,34 +10,6 @@ env:
IMAGE: ghcr.io/navikt/aksel
jobs:
snyk-monitor:
name: monitor dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run Snyk to check for vulnerabilities
continue-on-error: true
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
command: monitor
args: --org=designsystemet --severity-threshold=high
snyk-test:
name: analyze dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
continue-on-error: true
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
command: test
args: --org=designsystemet --severity-threshold=high
sync_data_with_sanity:
name: Update component data
runs-on: ubuntu-latest
@@ -84,7 +56,6 @@ jobs:
- name: add tokens to .env
run: |
echo "SANITY_WRITE_KEY=${{ secrets.SANITY_FEEDBACK_WRITE_KEY }}" >> aksel.nav.no/website/.env
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PREVIEW_TOKEN=${{ secrets.SANITY_PREVIEW_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PRIVATE_NO_DRAFTS=${{ secrets.SANITY_PRIVATE_NO_DRAFTS }}" >> aksel.nav.no/website/.env
echo "USE_CDN_ASSETS=true" >> aksel.nav.no/website/.env
-1
View File
@@ -23,7 +23,6 @@ jobs:
- name: add tokens to .env
run: |
echo "SANITY_WRITE_KEY=${{ secrets.SANITY_FEEDBACK_WRITE_KEY }}" >> aksel.nav.no/website/.env
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PREVIEW_TOKEN=${{ secrets.SANITY_PREVIEW_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PRIVATE_NO_DRAFTS=${{ secrets.SANITY_PRIVATE_NO_DRAFTS }}" >> aksel.nav.no/website/.env
+16 -1
View File
@@ -11,7 +11,7 @@ concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
build:
name: "Release packages"
if: "!contains(github.event.head_commit.message, '[ci skip]')"
if: ${{!contains(github.event.head_commit.message, '[ci skip]')}}
runs-on: ubuntu-latest
permissions:
id-token: "write"
@@ -45,6 +45,7 @@ jobs:
with:
version: yarn version
publish: yarn release
createGithubReleases: false
env:
NPM_TOKEN: ${{ secrets.NPM_AUTOMATION }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -82,3 +83,17 @@ jobs:
cdn-team-name: aksel
source: ./@navikt/aksel-icons/aksel-icons.zip
destination: "/icons/zip"
- name: Get @navikt/ds-css version
run: |
VERSION=$(yarn css:get-version)
echo "version=$VERSION" >> $GITHUB_ENV
echo "Version of @navikt/ds-css: ${{ env.version }}"
- name: Upload CSS to NAV CDN
if: steps.changesets.outputs.published == 'true'
uses: navikt/frontend/actions/cdn-upload/v1@main
with:
cdn-team-name: aksel
source: ./@navikt/core/css/dist/version/${{env.version}}
destination: "@navikt/ds-css"
-1
View File
@@ -23,7 +23,6 @@ jobs:
- name: add tokens to .env
run: |
echo "SANITY_WRITE_KEY=${{ secrets.SANITY_FEEDBACK_WRITE_KEY }}" >> aksel.nav.no/website/.env
echo "SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PREVIEW_TOKEN=${{ secrets.SANITY_PREVIEW_TOKEN }}" >> aksel.nav.no/website/.env
echo "SANITY_PRIVATE_NO_DRAFTS=${{ secrets.SANITY_PRIVATE_NO_DRAFTS }}" >> aksel.nav.no/website/.env
-17
View File
@@ -23,7 +23,6 @@ module.exports = {
addons: [
"@storybook/addon-a11y",
"@whitespace/storybook-addon-html",
"storybook-addon-next-router",
{
name: "@storybook/addon-storysource",
@@ -83,24 +82,8 @@ module.exports = {
"../aksel.nav.no/website/components/website-modules/utils/index.ts"
),
},
{
find: "@lib",
replacement: path.resolve(
__dirname,
"../aksel.nav.no/website/lib/index.ts"
),
},
],
},
});
},
};
/* "@/components": ["components/index.ts"],
"@/lib": ["lib/index.ts"],
"@/pages/*": ["pages/*"],
"@/sanity-block": ["components/SanityBlockContent.tsx"],
"@/utils": ["components/website-modules/utils/index.ts"],
"@/layout": ["components/layout/index.ts"],
"@/error-boundary": ["components/website-modules/ErrorBoundary.tsx"],
"@/sanity-client": ["lib/sanity/sanity.server"] */
-3
View File
@@ -24,9 +24,6 @@ export const parameters = {
},
],
},
nextRouter: {
Provider: RouterContext.Provider,
},
};
export const globalTypes = {
+27
View File
@@ -1,5 +1,32 @@
# @navikt/aksel-icons
## 2.9.2
## 2.9.1
## 2.9.0
## 2.8.16
## 2.8.15
### Patch Changes
- [#1928](https://github.com/navikt/aksel/pull/1928) [`dfe923582`](https://github.com/navikt/aksel/commit/dfe923582a57b41c77cfb4fbfa7c56be047ef2b0) Thanks [@KenAJoh](https://github.com/KenAJoh)! - :tada: Lagt til nye ikoner :tada:
- HandKnot.svg
- HandKnotFilled.svg
- [#1930](https://github.com/navikt/aksel/pull/1930) [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Alle pakker implementerer nå npm provenance (beta)
## 2.8.14
## 2.8.13
### Patch Changes
- [#1921](https://github.com/navikt/aksel/pull/1921) [`ecd6241e5`](https://github.com/navikt/aksel/commit/ecd6241e5751519fbda800a5f41a613957dbf77c) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Oppdatert ikoner :tada:
## 2.8.12
## 2.8.11
@@ -13,5 +13,5 @@ keywords:
- reload
- oppdater
variant: Stroke
updated_at: 08.03.2023
updated_at: 03.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -11,5 +11,5 @@ keywords:
- åpnet
- opened
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- back
- tilbake
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- forward
- videresend
variant: Stroke
updated_at: 08.03.2023
updated_at: 20.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -9,5 +9,5 @@ keywords:
- frem
- fram
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- close
- lukke
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -9,5 +9,5 @@ keywords:
- sortering
- sorting
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -4,5 +4,5 @@ sub_category: Vehicles
keywords:
- sykkel
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -15,5 +15,5 @@ keywords:
- fullføring
- validering
variant: Stroke
updated_at: 08.03.2023
updated_at: 14.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- åpner
- mer
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -6,5 +6,5 @@ keywords:
- venstre
- side
variant: Stroke
updated_at: 08.03.2023
updated_at: 20.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -6,5 +6,5 @@ keywords:
- høyre
- side
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- lukk
- lukke
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- nettverk
- network
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- historikk
- visited
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -7,5 +7,5 @@ keywords:
- downloading
- last ned
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -14,5 +14,5 @@ keywords:
- pålogging
- adgang
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -9,5 +9,5 @@ keywords:
- open
- åpne
variant: Stroke
updated_at: 08.03.2023
updated_at: 19.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -7,5 +7,5 @@ keywords:
- data
- tabell
variant: Stroke
updated_at: 08.03.2023
updated_at: 14.04.2023
created_at: 07.03.2023
+3
View File
@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.75023 5C8.75023 4.30964 9.30988 3.75 10.0002 3.75C10.6906 3.75 11.2502 4.30964 11.2502 5V5.75H8.75023V5ZM8.75023 7.25V13.5C8.75023 13.7929 8.57973 14.059 8.31363 14.1814C8.04753 14.3038 7.73453 14.2601 7.51214 14.0694L5.39829 12.2576C4.91367 11.8422 4.19095 11.8699 3.73962 12.3213C3.30979 12.7511 3.26143 13.4316 3.62616 13.9179L8.37524 20.25H18.3986L19.6173 14.7659C19.8869 13.5528 19.122 12.3509 17.909 12.0813L11.8375 10.7321C11.4944 10.6559 11.2502 10.3515 11.2502 10V7.25H8.75023ZM10.0002 2.25C8.4921 2.25 7.26751 3.46401 7.25042 4.9681C7.03844 4.82515 6.81067 4.68453 6.58336 4.56753C6.28845 4.41573 5.89474 4.25 5.5 4.25C4.25736 4.25 3.25 5.25736 3.25 6.5C3.25 7.74264 4.25736 8.75 5.5 8.75C5.89474 8.75 6.28845 8.58427 6.58336 8.43247C6.8106 8.31551 7.03831 8.17493 7.25023 8.03203V11.8693L6.37448 11.1187C5.29475 10.1932 3.68453 10.255 2.67896 11.2606C1.72129 12.2183 1.61354 13.7344 2.42616 14.8179L7.40024 21.45C7.54188 21.6389 7.76417 21.75 8.00023 21.75H19.0002C19.3518 21.75 19.6561 21.5059 19.7324 21.1627L21.0816 15.0913C21.5309 13.0695 20.2561 11.0663 18.2344 10.6171L12.7502 9.39837V8.03234C12.962 8.17514 13.1896 8.31559 13.4166 8.43247C13.7115 8.58427 14.1053 8.75 14.5 8.75C15.7426 8.75 16.75 7.74264 16.75 6.5C16.75 5.25736 15.7426 4.25 14.5 4.25C14.1053 4.25 13.7115 4.41573 13.4166 4.56753C13.1895 4.68444 12.9619 4.82495 12.75 4.96779C12.7328 3.46385 11.5083 2.25 10.0002 2.25ZM13.3772 6.6411C13.3116 6.59389 13.2475 6.54657 13.1859 6.5C13.2475 6.45343 13.3116 6.40611 13.3772 6.3589C13.6227 6.18236 13.8759 6.0182 14.1031 5.90122C14.2162 5.84301 14.3119 5.80222 14.3886 5.77707C14.4608 5.75335 14.4956 5.7504 14.4997 5.75005C14.5002 5.75001 14.5003 5.75 14.5 5.75C14.9142 5.75 15.25 6.08579 15.25 6.5C15.25 6.91421 14.9142 7.25 14.5 7.25L14.5001 7.24999C14.5002 7.25 14.5002 7.25 14.5 7.25L14.4997 7.24995C14.4956 7.2496 14.4608 7.24665 14.3886 7.22293C14.3119 7.19778 14.2162 7.15699 14.1031 7.09878C13.8759 6.9818 13.6227 6.81764 13.3772 6.6411ZM6.81414 6.5C6.75246 6.45343 6.68842 6.40611 6.62277 6.3589C6.3773 6.18236 6.12414 6.0182 5.89688 5.90122C5.78379 5.84301 5.68809 5.80222 5.61143 5.77707C5.53915 5.75335 5.50443 5.7504 5.50025 5.75005C5.49978 5.75001 5.4997 5.75 5.5 5.75C5.08579 5.75 4.75 6.08579 4.75 6.5C4.75 6.91421 5.08579 7.25 5.5 7.25C5.4997 7.25 5.49978 7.24999 5.50025 7.24995C5.50443 7.2496 5.53915 7.24665 5.61143 7.22293C5.68809 7.19778 5.78379 7.15699 5.89688 7.09878C6.12414 6.9818 6.3773 6.81764 6.62277 6.6411C6.68842 6.59389 6.75246 6.54657 6.81414 6.5Z" fill="#262626"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

+12
View File
@@ -0,0 +1,12 @@
name: HandKnot
category: People
sub_category: Hands
keywords:
- hånd
- påminnelse
- note
- notat
- reminder
variant: Stroke
updated_at: 21.04.2023
created_at: 21.04.2023
@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.25042 4.9681C7.26752 3.46401 8.4921 2.25 10.0002 2.25C11.5083 2.25 12.7328 3.46384 12.7501 4.96778C12.9619 4.82494 13.1895 4.68444 13.4166 4.56753C13.7115 4.41573 14.1053 4.25 14.5 4.25C15.7426 4.25 16.75 5.25736 16.75 6.5C16.75 7.74264 15.7426 8.75 14.5 8.75C14.1053 8.75 13.7115 8.58427 13.4166 8.43247C13.1896 8.31559 12.962 8.17514 12.7502 8.03235L12.7502 5V9.39837L18.2344 10.6171C20.2561 11.0663 21.5309 13.0695 21.0816 15.0913L19.7324 21.1627C19.6561 21.5059 19.3518 21.75 19.0002 21.75H8.00024C7.76417 21.75 7.54188 21.6389 7.40024 21.45L2.42616 14.8179C1.61354 13.7344 1.72129 12.2183 2.67896 11.2606C3.68453 10.255 5.29475 10.1932 6.37448 11.1187L7.25024 11.8693L7.25024 8.03202C7.03831 8.17493 6.8106 8.31551 6.58336 8.43247C6.28845 8.58427 5.89474 8.75 5.5 8.75C4.25736 8.75 3.25 7.74264 3.25 6.5C3.25 5.25736 4.25736 4.25 5.5 4.25C5.89474 4.25 6.28845 4.41573 6.58336 4.56753C6.81067 4.68453 7.03844 4.82515 7.25042 4.9681ZM12 7C12 7.13807 11.8881 7.25 11.75 7.25H8.25C8.11193 7.25 8 7.13807 8 7V6C8 5.86193 8.11193 5.75 8.25 5.75H11.75C11.8881 5.75 12 5.86193 12 6V7ZM6.62277 6.3589C6.68842 6.40611 6.75246 6.45343 6.81414 6.5C6.75246 6.54657 6.68842 6.59389 6.62277 6.6411C6.3773 6.81764 6.12414 6.9818 5.89688 7.09878C5.78379 7.15699 5.68809 7.19778 5.61143 7.22293C5.53915 7.24665 5.50417 7.24965 5.5 7.25C5.08579 7.25 4.75 6.91421 4.75 6.5C4.75 6.08579 5.08604 5.75005 5.50025 5.75005C5.50443 5.7504 5.53915 5.75335 5.61143 5.77707C5.68809 5.80222 5.78379 5.84301 5.89688 5.90122C6.12414 6.0182 6.3773 6.18236 6.62277 6.3589ZM13.3772 6.6411C13.3116 6.59389 13.2475 6.54657 13.1859 6.5C13.2475 6.45343 13.3116 6.40611 13.3772 6.3589C13.6227 6.18236 13.8759 6.0182 14.1031 5.90122C14.2162 5.84301 14.3119 5.80222 14.3886 5.77707C14.4608 5.75335 14.4958 5.75035 14.5 5.75C14.9142 5.75 15.25 6.08579 15.25 6.5C15.25 6.91421 14.914 7.24995 14.4997 7.24995C14.4956 7.2496 14.4608 7.24665 14.3886 7.22293C14.3119 7.19778 14.2162 7.15699 14.1031 7.09878C13.8759 6.9818 13.6227 6.81764 13.3772 6.6411Z" fill="#262626"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,12 @@
name: HandKnotFilled
category: People
sub_category: Hands
keywords:
- hånd
- påminnelse
- note
- notat
- reminder
variant: Filled
updated_at: 21.04.2023
created_at: 21.04.2023
+1 -1
View File
@@ -10,5 +10,5 @@ keywords:
- wardrobe
- kleshenger
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- fremdrift
- nedtelling
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
@@ -13,5 +13,5 @@ keywords:
- fremdrift
- nedtelling
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
@@ -1,3 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 2.75C3.58579 2.75 3.25 3.08579 3.25 3.5V19.5C3.25 19.9142 3.58579 20.25 4 20.25H20C20.4142 20.25 20.75 19.9142 20.75 19.5V3.5C20.75 3.08579 20.4142 2.75 20 2.75H4ZM4.75 18.75V4.25H19.25V18.75H4.75ZM12 6.5C11.4477 6.5 11 6.94772 11 7.5C11 8.05228 11.4477 8.5 12 8.5C12.5523 8.5 13 8.05228 13 7.5C13 6.94772 12.5523 6.5 12 6.5ZM10.5 9.75C10.0858 9.75 9.75 10.0858 9.75 10.5C9.75 10.9142 10.0858 11.25 10.5 11.25H11.25V15.25H10.5C10.0858 15.25 9.75 15.5858 9.75 16C9.75 16.4142 10.0858 16.75 10.5 16.75H12H13.5C13.9142 16.75 14.25 16.4142 14.25 16C14.25 15.5858 13.9142 15.25 13.5 15.25H12.75V10.5C12.75 10.0858 12.4142 9.75 12 9.75H10.5Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 3.25C3.58579 3.25 3.25 3.58579 3.25 4V20C3.25 20.4142 3.58579 20.75 4 20.75H20C20.4142 20.75 20.75 20.4142 20.75 20V4C20.75 3.58579 20.4142 3.25 20 3.25H4ZM4.75 19.25V4.75H19.25V19.25H4.75ZM12 7C11.4477 7 11 7.44772 11 8C11 8.55228 11.4477 9 12 9C12.5523 9 13 8.55228 13 8C13 7.44772 12.5523 7 12 7ZM10.5 10.25C10.0858 10.25 9.75 10.5858 9.75 11C9.75 11.4142 10.0858 11.75 10.5 11.75H11.25V15.75H10.5C10.0858 15.75 9.75 16.0858 9.75 16.5C9.75 16.9142 10.0858 17.25 10.5 17.25H12H13.5C13.9142 17.25 14.25 16.9142 14.25 16.5C14.25 16.0858 13.9142 15.75 13.5 15.75H12.75V11C12.75 10.5858 12.4142 10.25 12 10.25H10.5Z" fill="#262626"/>
</svg>

Before

Width:  |  Height:  |  Size: 809 B

After

Width:  |  Height:  |  Size: 787 B

@@ -15,5 +15,5 @@ keywords:
- beskrivelse
- forklaring
variant: Stroke
updated_at: 08.03.2023
updated_at: 03.04.2023
created_at: 07.03.2023
@@ -1,3 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.25 3.5C3.25 3.08579 3.58579 2.75 4 2.75H20C20.4142 2.75 20.75 3.08579 20.75 3.5V19.5C20.75 19.9142 20.4142 20.25 20 20.25H4C3.58579 20.25 3.25 19.9142 3.25 19.5V3.5ZM11 7.5C11 6.94772 11.4477 6.5 12 6.5C12.5523 6.5 13 6.94772 13 7.5C13 8.05228 12.5523 8.5 12 8.5C11.4477 8.5 11 8.05228 11 7.5ZM9.75 10.5C9.75 10.0858 10.0858 9.75 10.5 9.75H12C12.4142 9.75 12.75 10.0858 12.75 10.5V15.25H13.5C13.9142 15.25 14.25 15.5858 14.25 16C14.25 16.4142 13.9142 16.75 13.5 16.75H12H10.5C10.0858 16.75 9.75 16.4142 9.75 16C9.75 15.5858 10.0858 15.25 10.5 15.25H11.25V11.25H10.5C10.0858 11.25 9.75 10.9142 9.75 10.5Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.25 4C3.25 3.58579 3.58579 3.25 4 3.25H20C20.4142 3.25 20.75 3.58579 20.75 4V20C20.75 20.4142 20.4142 20.75 20 20.75H4C3.58579 20.75 3.25 20.4142 3.25 20V4ZM11 8C11 7.44772 11.4477 7 12 7C12.5523 7 13 7.44772 13 8C13 8.55228 12.5523 9 12 9C11.4477 9 11 8.55228 11 8ZM9.75 11C9.75 10.5858 10.0858 10.25 10.5 10.25H12C12.4142 10.25 12.75 10.5858 12.75 11V15.75H13.5C13.9142 15.75 14.25 16.0858 14.25 16.5C14.25 16.9142 13.9142 17.25 13.5 17.25H12H10.5C10.0858 17.25 9.75 16.9142 9.75 16.5C9.75 16.0858 10.0858 15.75 10.5 15.75H11.25V11.75H10.5C10.0858 11.75 9.75 11.4142 9.75 11Z" fill="#262626"/>
</svg>

Before

Width:  |  Height:  |  Size: 777 B

After

Width:  |  Height:  |  Size: 750 B

@@ -15,5 +15,5 @@ keywords:
- beskrivelse
- forklaring
variant: Fill
updated_at: 08.03.2023
updated_at: 03.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- oversettelse
- bytt språk
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -15,5 +15,5 @@ keywords:
- avslutt
- avslutt
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -6,5 +6,5 @@ keywords:
- chain
- kobling
variant: Stroke
updated_at: 08.03.2023
updated_at: 11.04.2023
created_at: 07.03.2023
@@ -12,5 +12,5 @@ keywords:
- nedtrekksvalg
- ellipse
variant: Stroke
updated_at: 08.03.2023
updated_at: 17.04.2023
created_at: 07.03.2023
@@ -12,5 +12,5 @@ keywords:
- nedtrekksvalg
- ellipse
variant: Stroke
updated_at: 08.03.2023
updated_at: 12.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -7,5 +7,5 @@ keywords:
- grid
- rutenett
variant: Stroke
updated_at: 08.03.2023
updated_at: 19.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -6,5 +6,5 @@ keywords:
- meny
- hamburger
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- replace
- new version
variant: Stroke
updated_at: 08.03.2023
updated_at: 17.04.2023
created_at: 07.03.2023
+2 -1
View File
@@ -6,6 +6,7 @@ keywords:
- nyheter
- tidsskrift
- presse
- avis
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+2 -1
View File
@@ -6,6 +6,7 @@ keywords:
- nyheter
- tidsskrift
- presse
- avis
variant: Fill
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- papir
- kontorrekvisita
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+2 -1
View File
@@ -5,6 +5,7 @@ keywords:
- presentasjon
- presentere
- present
- whiteboard
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
@@ -5,6 +5,7 @@ keywords:
- presentasjon
- presentere
- present
- whiteboard
variant: Fill
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- loading
- laster
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -8,5 +8,5 @@ keywords:
- loading
- laster
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -11,5 +11,5 @@ keywords:
- doctor
- patient
variant: Stroke
updated_at: 08.03.2023
updated_at: 18.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -12,5 +12,5 @@ keywords:
- diagram
- analyse
variant: Stroke
updated_at: 08.03.2023
updated_at: 17.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -13,5 +13,5 @@ keywords:
- oksygen
- blodtrykk
variant: Stroke
updated_at: 08.03.2023
updated_at: 14.04.2023
created_at: 07.03.2023
+1 -1
View File
@@ -15,5 +15,5 @@ keywords:
- avvis
- avslå
variant: Stroke
updated_at: 08.03.2023
updated_at: 13.04.2023
created_at: 07.03.2023
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/aksel-icons",
"version": "2.8.12",
"version": "2.9.2",
"author": "Aksel | NAV",
"homepage": "https://aksel.nav.no/ikoner",
"repository": {
@@ -17,7 +17,8 @@
"svg"
],
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
},
"sideEffects": [
"*.svg"
+1
View File
@@ -0,0 +1 @@
dist
+22
View File
@@ -0,0 +1,22 @@
# @navikt/aksel
## 2.9.2
### Patch Changes
- Updated dependencies []:
- @navikt/ds-css@2.9.2
## 2.9.1
### Patch Changes
- Updated dependencies []:
- @navikt/ds-css@2.9.1
## 2.9.0
### Patch Changes
- Updated dependencies [[`657b7f3f3`](https://github.com/navikt/aksel/commit/657b7f3f3e62c5ce3173e6c95a29fcd237ce7343)]:
- @navikt/ds-css@2.9.0
+17
View File
@@ -0,0 +1,17 @@
# Aksel command line interface
CLI tool for managing CSS-imports and more when consuming Aksel-packages.
[Documentation](https://aksel.nav.no/preview/grunnleggende/kode/kommandolinje)
```bash
run:
npx @navikt/aksel
commands:
css-imports: Generate css-imports for all components from Aksel
```
## License
[MIT](https://github.com/navikt/aksel/blob/main/LICENCE)
+14
View File
@@ -0,0 +1,14 @@
export type AnswersT = {
"config-type": "regular" | "easy" | "advanced";
cdn: "yes" | "no";
version: string;
tailwind?: "yes" | "no";
layers?: "yes" | "no";
autoscan?: "yes" | "no";
scandir?: string;
imports?: string[];
output: "print" | "clipboard" | "print-clipboard";
};
export const ComponentPrefix = "C_";
export const layerSuffix = " layer(aksel)";
@@ -0,0 +1,175 @@
import { AnswersT, ComponentPrefix, layerSuffix } from "./config.js";
import {
formCss,
typoCss,
componentsCss,
StyleMappings,
componentDir,
rootDir,
globalDir,
} from "@navikt/ds-css/config/_mappings.js";
import { inquiry } from "./inquiry.js";
import clipboard from "clipboardy";
import lodash from "lodash";
import chalk from "chalk";
export async function generateImportOutput(answers: AnswersT) {
const useCdn = answers.cdn === "yes";
const useTailwind = answers.tailwind === "yes";
const version = answers.version;
const imports = [];
let importStr = "";
await inquiry(answers, [
{
type: "select",
name: "output",
message: "Output format",
initial: "print-clipboard",
choices: [
{ message: "Clipboard & Print", name: "clipboard-print" },
{ message: "Clipboard", name: "clipboard" },
{ message: "Print", name: "print" },
],
},
]);
answers["config-type"] === "regular"
? imports.push(simpleOutput(useCdn, answers.layers === "yes", version))
: imports.push(
...advancedOutput(answers, useCdn, answers.layers === "yes", version)
);
if (useTailwind) {
importStr = `@import "tailwindcss/base";
${imports.join("\n")}
@import "tailwindcss/components";
@import "tailwindcss/utilities";
`;
} else {
importStr = imports.join("\n");
}
if (answers.output.includes("print")) {
console.log(chalk.bold.cyan(`\nImports 🚀 \n`));
console.log(chalk.green(`${importStr}`));
}
if (useCdn) {
console.log(chalk.bold.underline.cyan(`\nNotes on CDN-usage 📝`));
console.log(
`We recommend using Static imports, then uploading the your bundled static-files to your own CDN-instance.
✔︎ This allows you to control the version of the CSS-files with package.json, and avoids desync between ds-react/ds-css.
✔︎ Remember to add 'https://cdn.nav.no' to your applications CSP!`
);
}
if (useTailwind) {
console.log(chalk.bold.underline.cyan(`\nNotes on Tailwind-use 📝`));
console.log(
`When using tailwind with Aksel, you will need to add the postcss plugin ${chalk.cyan(
"postcss-import"
)}
✔︎ NPM: https://www.npmjs.com/package/postcss-import
✔︎ Read more here: https://aksel.nav.no/grunnleggende/kode/tailwind`
);
}
if (answers.layers === "yes") {
console.log(chalk.bold.underline.cyan(`\nNotes on Layers 📝`));
console.log(
`Layers is not yet supported in Safari <= 15.3. (https://caniuse.com/css-cascade-layers)`
);
}
answers.output.includes("clipboard") && clipboard.writeSync(importStr);
}
function simpleOutput(cdn: boolean, layers: boolean, version: string) {
const options = {
static: `@import "@navikt/ds-css"${layers ? layerSuffix : ""};`,
cdn: toCdn("index.css", version),
};
return cdn ? options.cdn : options.static;
}
function advancedOutput(
answers: AnswersT,
cdn: boolean,
layers: boolean,
version: string
) {
const imports = ["/* Defaults */"];
const baselineImports = answers.imports.filter(
(x) => !x.startsWith(ComponentPrefix) && x !== "default"
);
const componentImports = answers.imports
.filter((x) => x.startsWith(ComponentPrefix) && x !== "components")
.map((x) => x.replace(ComponentPrefix, ""));
baselineImports.forEach((x) => {
cdn
? imports.push(toCdn(`${globalDir}/${x}.css`, version))
: imports.push(toCssImport(`${globalDir}/${x}.css`, layers));
});
if (answers["config-type"] === "easy") {
cdn
? imports.push(toCdn(componentsCss, version))
: imports.push(toCssImport(`${rootDir}/${componentsCss}`, layers));
return imports;
}
const components = new Set();
componentImports.forEach((x) => {
const styleRef = StyleMappings.components.find((y) => y.component === x);
if (styleRef) {
components.add(styleRef.main);
styleRef?.dependencies?.forEach((dep) => components.add(dep));
}
});
let componentImportsList = (Array.from(components) as string[])
.filter((x) => x.length > 0)
.sort((a, b) => a.localeCompare(b));
if (componentImportsList.find((x) => x === formCss)) {
componentImportsList = componentImportsList.filter((x) => x !== formCss);
componentImportsList.unshift(formCss);
}
if (componentImportsList.find((x) => x === typoCss)) {
componentImportsList = componentImportsList.filter((x) => x !== typoCss);
componentImportsList.unshift(typoCss);
}
if (componentImportsList.length === 0) {
return imports;
}
imports.push(``);
imports.push(`/* Components */`);
componentImportsList.forEach((x) => {
const pascalCase = lodash.camelCase(x.replace("css", "")).toLowerCase();
cdn
? imports.push(toCdn(`${componentDir}/${pascalCase}.css`, version))
: imports.push(toCssImport(`${componentDir}/${pascalCase}.css`, layers));
});
return imports;
}
function toCdn(str: string, version: string): string {
return `<link rel="preload" href="https://cdn.nav.no/aksel/@navikt/ds-css/${version}/${str
.replace(".css", ".min.css")
.replace(`${rootDir}/`, "")}" as="style"></link>`;
}
function toCssImport(str: string, layers: boolean): string {
return `@import "@navikt/ds-css/${str}"${layers ? layerSuffix : ""};`;
}
@@ -0,0 +1,22 @@
import fg from "fast-glob";
import path from "path";
export async function getDirectories() {
const baseDir = process.cwd();
const ignoreNodeModules = [
"**/node_modules/**",
"**/dist/**",
"**/build/**",
"**/lib/**",
];
const directories = await fg(`${baseDir}/**`, {
onlyDirectories: true,
ignore: ignoreNodeModules,
});
directories.sort((a, b) => a.length - b.length);
return [baseDir, ...directories].map((x) =>
x.replace(baseDir, path.basename(baseDir))
);
}
+13
View File
@@ -0,0 +1,13 @@
import axios from "axios";
export async function getAllVersions() {
try {
const npmPackageData = await axios.get(
`https://registry.npmjs.org/@navikt/ds-css`
);
return Object.keys(npmPackageData.data["versions"]);
} catch (e) {
console.log(e);
return [];
}
}
+199
View File
@@ -0,0 +1,199 @@
import { StyleMappings } from "@navikt/ds-css/config/_mappings.js";
import { generateImportOutput } from "./generate-output.js";
import { AnswersT, ComponentPrefix } from "./config.js";
import { inquiry } from "./inquiry.js";
import { exec } from "child_process";
import { fileURLToPath } from "url";
import { dirname } from "path";
import { getAllVersions } from "./get-version.js";
import chalk from "chalk";
import { getDirectories } from "./get-directories.js";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
export async function cssImportsCommand() {
let answers: AnswersT = {
"config-type": "regular",
cdn: "no",
version: "0.0.0",
autoscan: "no",
scandir: "",
tailwind: "no",
layers: "no",
imports: null,
output: "print-clipboard",
};
await inquiry(answers, [
{
type: "select",
name: "config-type",
message: "Import variants:",
initial: 0,
choices: [
{ message: "Regular import (recommended)", name: "regular" },
{ message: "Partial control (global)", name: "easy" },
{ message: "Full control (global + components)", name: "advanced" },
],
footer() {
return chalk.grey(
`${chalk.cyan(
`\n Documentation:`
)}\n Regular: https://aksel.nav.no/grunnleggende/kode/css-import
Partial: https://aksel.nav.no/grunnleggende/kode/css-import#h64650b1a4ad6
Full: https://aksel.nav.no/grunnleggende/kode/css-import#h4037598416ef\n`
);
},
},
{
type: "select",
name: "cdn",
message: "Import format",
initial: 0,
choices: [
{ message: "Static import (default)", name: "no" },
{ message: "CDN import (not recommended)", name: "yes" },
],
},
]);
if (answers?.cdn === "no") {
await inquiry(answers, [
{
type: "select",
name: "tailwind",
message: "Add tailwind support?",
initial: 0,
choices: [
{ message: "No", name: "no" },
{ message: "Yes", name: "yes" },
],
},
{
type: "select",
name: "layers",
message: "Add styling to custom @layer rule?",
initial: 0,
choices: [
{ message: "No", name: "no" },
{ message: "Yes", name: "yes" },
],
},
]);
} else {
let versions = (await getAllVersions()).filter((x) => !x.includes("-"));
const index = versions.findIndex((x) => x.startsWith("2.9.0"));
versions = versions.slice(index).reverse();
await inquiry(answers, [
{
type: "autocomplete",
name: "version",
message: `@navikt/ds-css version from CDN:`,
limit: 6,
initial: 0,
choices: versions,
footer() {
return chalk.grey(
'Remember to match version with @navikt/ds-react!\nNote: CDN was introduced in v2.9.0, older versions not available.\nUse "static" import instead.'
);
},
},
]);
}
if (answers["config-type"] === "regular") {
await generateImportOutput(answers);
return;
}
answers["config-type"] === "advanced" &&
(await inquiry(answers, [
{
type: "select",
name: "autoscan",
message: "Scan current directory for '@navikt/ds-react' components?",
initial: 0,
choices: [
{ message: "No", name: "no" },
{ message: "Yes", name: "yes" },
],
},
]));
answers.autoscan === "yes" &&
(await inquiry(answers, [
{
type: "autocomplete",
name: "scandir",
message: `Directory to scan`,
limit: 6,
initial: 0,
choices: getDirectories(),
footer() {
return chalk.grey(
"filtered out: node_moduels, dist, build, lib, .* (dotfiles)"
);
},
},
]));
let foundComponents: string[] = [];
if (answers["autoscan"] === "yes") {
foundComponents = await new Promise((resolve) => {
exec(`node ${__dirname}/scan-code.js ${answers.scandir}`, (_, stdout) => {
resolve(
stdout ? JSON.parse(stdout.trim().split("\n").slice(1).join("")) : []
);
});
});
}
await inquiry(answers, [
{
type: "multiselect",
name: "imports",
message: "Imports",
initial: [
...StyleMappings.baseline.map((x) => x.main.replace(".css", "")),
...StyleMappings.components
.filter((x) => foundComponents.includes(x.component))
.map((x) => `${ComponentPrefix}${x.component}`),
],
choices: [
{
message: "Default-imports",
name: "default",
choices: [
...StyleMappings.baseline.map((x) => ({
message: `${x.main.replace(".css", "")}${
x.optional ? "" : " (required)"
}`,
name: x.main.replace(".css", ""),
})),
],
},
...(answers["config-type"] === "advanced"
? [
{
message: "Components",
name: "components",
choices: [
...StyleMappings.components.map((x) => ({
message: x.component,
name: `${ComponentPrefix}${x.component}`,
})),
],
},
]
: []),
],
},
]);
await generateImportOutput(answers);
}
+29
View File
@@ -0,0 +1,29 @@
import Enquirer from "enquirer";
import { AnswersT } from "./config.js";
import chalk from "chalk";
export async function inquiry(answers: AnswersT, questions: any[]) {
return await Enquirer.prompt(
questions.map((x) => ({
...x,
cancel: () => process.exit(1),
header: `\n${chalk.gray(
"Command 'css-imports' will not edit your files directly!"
)}\n`,
}))
)
.then((a) => {
Object.entries(a).forEach(([key, value]) => {
answers[key] = value;
});
})
.catch((error) => {
if (error.isTtyError) {
console.log(
"Oops, something went wrong! Looks like @navikt/aksel-cli can't run in this terminal. Contact Aksel"
);
} else {
console.error(error);
}
});
}
+44
View File
@@ -0,0 +1,44 @@
import path from "path";
import scanner from "react-scanner";
run();
async function run() {
await scanCode();
}
async function scanCode() {
const cwd = process.cwd();
const config = {
rootDir: cwd,
crawlFrom: `${process.argv[2] ?? ""}`.replace(path.basename(cwd), "."),
globs: ["**/!(*.test|*.spec|*.stories|*.story).@(jsx|tsx)"],
exclude: (dirname: string) => dirname === "node_modules",
getComponentName: ({
imported,
moduleName,
}: {
imported: string;
moduleName: string;
}) => imported || path.basename(moduleName),
};
let result: any | null = null;
await scanner
.run({
...config,
importedFrom: /@navikt\/ds-react/,
processors: [
"count-components",
({ report }) => {
result = report;
},
],
})
.catch(() => null);
console.log(JSON.stringify(Object.keys(result)));
}
+18
View File
@@ -0,0 +1,18 @@
import chalk from "chalk";
import figlet from "figlet";
export function helpCommand() {
console.log(figlet.textSync("Aksel CLI"));
console.log(`
📝 Documentation
- ${chalk.blueBright(
"https://aksel.nav.no/grunnleggende/kode/kommandolinje"
)}
💻 Commands:
- ${chalk.cyan(`npx @navikt/aksel ${chalk.green("css-imports")}`)}
✔︎ Helps with CSS imports for all Aksel components
✔︎ Supports Static and CDN-imports
✔︎ Handles cascading, tailwind and @layer rules
`);
}
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env node
import chalk from "chalk";
import { helpCommand } from "./help.js";
import { cssImportsCommand } from "./css-imports/index.js";
run();
async function run() {
if (!process.argv[2] || process.argv[2] === "help") {
helpCommand();
return;
} else if (process.argv[2] === "css-imports") {
await cssImportsCommand();
return;
} else {
console.log(
chalk.red(
`Unknown command: ${process.argv[2]}.\nRun ${chalk.cyan(
"npx @navikt/aksel help"
)} for all available commands.`
)
);
}
}
+54
View File
@@ -0,0 +1,54 @@
{
"name": "@navikt/aksel",
"version": "2.9.2",
"description": "Aksel command line interface. Handles css-imports, codemods (planned) and more",
"author": "Aksel | NAV designsystem team",
"license": "MIT",
"keywords": [
"react",
"command-line",
"CLI",
"css",
"CDN"
],
"files": [
"dist"
],
"scripts": {
"clean": "rimraf dist",
"build": "yarn clean && tsc -p tsconfig.json",
"dev": "tsc --watch -p tsconfig.json"
},
"bin": "./dist/index.js",
"repository": {
"type": "git",
"url": "git+https://github.com/navikt/aksel.git",
"directory": "@navikt/aksel"
},
"type": "module",
"homepage": "https://aksel.nav.no/grunnleggende/kode/kommandolinje",
"dependencies": {
"@navikt/ds-css": "2.9.2",
"axios": "1.3.6",
"chalk": "4.1.0",
"clipboardy": "^3.0.0",
"enquirer": "^2.3.6",
"fast-glob": "3.2.11",
"figlet": "1.6.0",
"lodash": "4.17.21",
"react-scanner": "^1.1.0"
},
"devDependencies": {
"@types/inquirer": "^9.0.3",
"rimraf": "3.0.2",
"typescript": "^4.8.0"
},
"sideEffects": false,
"engines": {
"node": ">=16.0.0"
},
"publishConfig": {
"access": "public",
"provenance": true
}
}
+16
View File
@@ -0,0 +1,16 @@
{
"compilerOptions": {
"module": "Node16",
"sourceMap": false,
"esModuleInterop": true,
"target": "es2015",
"preserveWatchOutput": true,
"declaration": false,
"types": ["node", "jest"],
"outDir": "dist",
"rootDir": "./",
"resolveJsonModule": true
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist", "jest.config.js", "__tests__"]
}
+18
View File
@@ -1,5 +1,23 @@
# @navikt/ds-codemod
## 2.9.2
## 2.9.1
## 2.9.0
## 2.8.16
## 2.8.15
### Patch Changes
- [#1930](https://github.com/navikt/aksel/pull/1930) [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Alle pakker implementerer nå npm provenance (beta)
## 2.8.14
## 2.8.13
## 2.8.12
## 2.8.11
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-codemod",
"version": "2.8.12",
"version": "2.9.2",
"description": "Aksel codemods for NAVs designsystem",
"author": "Aksel | NAV designsystem team",
"license": "MIT",
@@ -59,6 +59,7 @@
"node": ">=12.0.0"
},
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
}
}
+4 -3
View File
@@ -19,7 +19,8 @@
"module": "./esm/index.js",
"typings": "./esm/index.d.ts",
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
},
"files": [
"/css",
@@ -39,8 +40,8 @@
"build-pict": "svgr --silent --index-template index-template.js --out-dir src/pictograms pictograms"
},
"dependencies": {
"@navikt/ds-icons": "^2.8.12",
"@navikt/ds-react": "^2.8.12",
"@navikt/ds-icons": "^2.9.2",
"@navikt/ds-react": "^2.9.2",
"clsx": "^1.1.1"
},
"devDependencies": {
+1
View File
@@ -0,0 +1 @@
!*.d.ts
+30
View File
@@ -1,5 +1,35 @@
# @navikt/ds-css
## 2.9.2
## 2.9.1
## 2.9.0
### Minor Changes
- [#1941](https://github.com/navikt/aksel/pull/1941) [`657b7f3f3`](https://github.com/navikt/aksel/commit/657b7f3f3e62c5ce3173e6c95a29fcd237ce7343) Thanks [@KenAJoh](https://github.com/KenAJoh)! - :tada: CSS nå tilgjengelig som separate filer
- Kan lastest fra CDN
- Tilbys nå i minified-versjoner
- Kommandoline: `npx @navikt/aksel css-imports` for å raskt komme i gang med CSS-optimalisering
## 2.8.16
## 2.8.15
### Patch Changes
- [#1930](https://github.com/navikt/aksel/pull/1930) [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Alle pakker implementerer nå npm provenance (beta)
## 2.8.14
### Patch Changes
- [`f0d9a8853`](https://github.com/navikt/aksel/commit/f0d9a8853f56854a4049bd3f6cc34968e9d6c380) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Fixes shown month on open in Datepicker/MonthPicker, better handling of out-of-range 'today'
## 2.8.13
## 2.8.12
## 2.8.11
@@ -0,0 +1,52 @@
html,
:host {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
font-size: 100%;
line-height: 1.15;
margin: 0;
color: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
legend {
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal;
}
[hidden] {
display: none;
}
@@ -1,3 +1,18 @@
/* https://web.dev/prefers-reduced-motion/ */
@media (prefers-reduced-motion: reduce) {
*:not(.navds-loader *):not(.navds-loader),
::before,
::after {
animation-delay: -1ms !important;
animation-duration: 1ms !important;
animation-iteration-count: 1 !important;
background-attachment: initial !important;
scroll-behavior: auto !important;
transition-duration: 0s !important;
transition-delay: 0s !important;
}
}
/*
* From https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/style.css
*
@@ -20,17 +35,15 @@
position: absolute;
white-space: nowrap;
width: 1px;
/* 1 */
}
/*
* From https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/style.css
*
* Extends the .sr-only class to allow the element
* to be focusable when navigated to via the keyboard:
* https://www.drupal.org/node/897638
*/
* From https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/style.css
*
* Extends the .sr-only class to allow the element
* to be focusable when navigated to via the keyboard:
* https://www.drupal.org/node/897638
*/
.sr-only.focusable:active,
.sr-only.focusable:focus,
+2 -35
View File
@@ -1,19 +1,5 @@
@import "@navikt/ds-tokens";
@import "normalize.css";
@import "fonts.css";
@import "print.css";
@import "utility.css";
html,
:host {
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
@import "./_inline-reset.css";
@import "./_utilities.css";
:root,
:host,
@@ -39,22 +25,3 @@ body,
a {
color: var(--a-text-action);
}
button {
color: inherit;
}
/* https://web.dev/prefers-reduced-motion/ */
@media (prefers-reduced-motion: reduce) {
*:not(.navds-loader *):not(.navds-loader),
::before,
::after {
animation-delay: -1ms !important;
animation-duration: 1ms !important;
animation-iteration-count: 1 !important;
background-attachment: initial !important;
scroll-behavior: auto !important;
transition-duration: 0s !important;
transition-delay: 0s !important;
}
}
+5
View File
@@ -0,0 +1,5 @@
@import "@navikt/ds-tokens";
@import "reset.css";
@import "fonts.css";
@import "print.css";
@import "baseline.css";
+294
View File
@@ -0,0 +1,294 @@
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
+1
View File
@@ -0,0 +1 @@
@import "@navikt/ds-tokens";
+24
View File
@@ -0,0 +1,24 @@
export declare const rootDir = "dist";
export declare const globalDir = "dist/global";
export declare const componentDir = "dist/component";
export declare const typoCss = "typography.css";
export declare const formCss = "form.css";
export declare const componentsCss = "components.css";
export declare const StyleMappings: {
baseline: {
main: string;
optional: boolean;
}[];
components: (
| {
component: string;
main: string;
dependencies: string[];
}
| {
component: string;
main: string;
dependencies?: undefined;
}
)[];
};
+149
View File
@@ -0,0 +1,149 @@
const rootDir = "dist";
const globalDir = "dist/global";
const componentDir = "dist/component";
const typoCss = "typography.css";
const formCss = "form.css";
const componentsCss = "components.css";
const StyleMappings = {
baseline: [
{
main: "fonts.css",
optional: false,
},
{
main: "tokens.css",
optional: false,
},
{
main: "reset.css",
optional: true,
},
{
main: "baseline.css",
optional: false,
},
{
main: "print.css",
optional: true,
},
],
components: [
{
component: "Accordion",
main: "accordion.css",
dependencies: [typoCss],
},
{ component: "Alert", main: "alert.css", dependencies: [typoCss] },
{
component: "BodyLong",
main: typoCss,
},
{
component: "BodyShort",
main: typoCss,
},
{
component: "Button",
main: "button.css",
dependencies: [typoCss, "loader.css"],
},
{ component: "Cell", main: "grid.css" },
{ component: "Chat", main: "chat.css", dependencies: [typoCss] },
{ component: "Checkbox", main: formCss, dependencies: [typoCss] },
{ component: "CheckboxGroup", main: formCss, dependencies: [typoCss] },
{ component: "Chips", main: "chips.css", dependencies: [typoCss] },
{
component: "ConfirmationPanel",
main: formCss,
dependencies: [typoCss],
},
{
component: "ContentContainer",
main: "content-container.css",
},
{ component: "Detail", main: typoCss },
{ component: "ErrorMessage", main: typoCss },
{ component: "ErrorSummary", main: formCss, dependencies: [typoCss] },
{
component: "ExpansionCard",
main: "expansion-card.css",
dependencies: [typoCss],
},
{ component: "Fieldset", main: formCss, dependencies: [typoCss] },
{ component: "Grid", main: "grid.css", dependencies: [typoCss] },
{
component: "GuidePanel",
main: "guide-panel.css",
dependencies: [typoCss],
},
{ component: "Heading", main: typoCss, dependencies: [typoCss] },
{
component: "HelpText",
main: "help-text.css",
dependencies: ["popover.css"],
},
{ component: "Ingress", main: typoCss },
{ component: "Label", main: typoCss },
{ component: "Link", main: "link.css", dependencies: [typoCss] },
{
component: "LinkPanel",
main: "link-panel.css",
dependencies: [typoCss, "panel.css"],
},
{ component: "List", main: "list.css", dependencies: [typoCss] },
{ component: "Loader", main: "loader.css" },
{
component: "Modal",
main: "modal.css",
dependencies: ["button.css"],
},
{
component: "Pagination",
main: "pagination.css",
dependencies: [typoCss, "button.css"],
},
{ component: "Panel", main: "panel.css" },
{ component: "Popover", main: "popover.css" },
{ component: "Provider", main: "" },
{ component: "Radio", main: formCss, dependencies: [typoCss] },
{ component: "RadioGroup", main: formCss, dependencies: [typoCss] },
{ component: "ReadMore", main: "read-more.css", dependencies: [typoCss] },
{ component: "Search", main: formCss, dependencies: [typoCss] },
{ component: "Select", main: formCss, dependencies: [typoCss] },
{ component: "Stepper", main: "stepper.css", dependencies: [typoCss] },
{ component: "Switch", main: formCss, dependencies: [typoCss] },
{ component: "Table", main: "table.css", dependencies: [typoCss] },
{ component: "Tabs", main: "tabs.css", dependencies: [typoCss] },
{ component: "Tag", main: "tag.css", dependencies: [typoCss] },
{ component: "TextField", main: formCss, dependencies: [typoCss] },
{ component: "Textarea", main: formCss, dependencies: [typoCss] },
{
component: "ToggleGroup",
main: "toggle-group.css",
dependencies: [typoCss],
},
{ component: "Tooltip", main: "tooltip.css", dependencies: [typoCss] },
{
component: "UNSAFE_DatePicker",
main: "date.css",
dependencies: [typoCss, "button.css", "popover.css"],
},
{
component: "UNSAFE_MonthPicker",
main: "date.css",
dependencies: [typoCss, "button.css", "popover.css"],
},
],
};
module.exports = {
StyleMappings,
typoCss,
formCss,
componentsCss,
rootDir,
globalDir,
componentDir,
};
+159
View File
@@ -0,0 +1,159 @@
const fs = require("fs");
const path = require("path");
const fastglob = require("fast-glob");
const { camelCase } = require("lodash");
const postcss = require("postcss");
const autoprefixer = require("autoprefixer");
const combineSelectors = require("postcss-combine-duplicated-selectors");
const cssImports = require("postcss-import");
const cssnano = require("cssnano");
const getDirName = require("path").dirname;
const version = require("../package.json").version;
const {
StyleMappings,
componentsCss,
formCss,
rootDir,
globalDir,
componentDir,
} = require("./_mappings.js");
run();
/**
* Postcss-plugins
* - cssImports: Inline of imports from other css files
* - combineSelectors: Combine selectors with the same properties, removes duplicates
* Minified-versions:
* - autoprefixer: Add vendor prefixes, uses browserlist in package.json
* - cssnano: css-minification
*/
async function run() {
[`${rootDir}/version/${version}`, globalDir, componentDir].forEach((dir) => {
if (!fs.existsSync(path.resolve(__dirname, `../${dir}`))) {
fs.mkdirSync(path.resolve(__dirname, `../${dir}`), { recursive: true });
}
});
await bundleMonolith();
await bundleComponents();
await bundleFragments();
await bundleMinified();
copyToVersionFolder();
}
async function bundleMonolith() {
const indexSrc = path.resolve(__dirname, "../index.css");
const indexDist = path.resolve(__dirname, `../${rootDir}/index.css`);
const css = fs.readFileSync(indexSrc);
const result = await postcss([cssImports, combineSelectors]).process(css, {
from: indexSrc,
to: indexDist,
});
fs.writeFileSync(indexDist, result.css);
}
/**
* Bundle Components together for flexible import-options
*/
async function bundleComponents() {
const indexSrc = path.resolve(__dirname, "../index.css");
const indexDist = path.resolve(__dirname, `../${rootDir}/${componentsCss}`);
const css = fs.readFileSync(indexSrc);
/* Remove @charset, baseline */
const cssString = css.toString().split("\n").slice(2).join("\n");
const result = await postcss([cssImports, combineSelectors]).process(
cssString,
{
from: indexSrc,
to: indexDist,
}
);
fs.writeFileSync(indexDist, result.css);
}
/**
* Postcss-plugins
* - cssImports: Handle inline of imports from other css files
* - combineSelectors: Combine selectors with the same properties
*/
async function bundleFragments() {
const files = buildFragmentFiles();
for (let file of files) {
const css = fs.readFileSync(file.input, { encoding: "utf-8" });
const result = await postcss([cssImports, combineSelectors]).process(css, {
from: file.input,
to: file.output,
});
fs.writeFileSync(file.output, result.css);
}
}
function buildFragmentFiles() {
const files = fastglob
.sync("*.css", { cwd: ".", ignore: "**/*.min.css" })
.map((fileN) => path.basename(fileN))
.map((x) => ({
input: path.resolve(__dirname, `../${x}`),
output: path.resolve(
__dirname,
`../${componentDir}/${camelCase(x.replace("css", ""))
.toLowerCase()
.replace(/ /g, "")}.css`
),
}));
StyleMappings.baseline.forEach(({ main }) => {
files.push({
input: `baseline/${main}`,
output: `${globalDir}/${main}`,
});
});
files.push({
input: "form/index.css",
output: `${componentDir}/${formCss}`,
});
return files;
}
async function bundleMinified() {
const files = fastglob
.sync("**/*.css", { cwd: `./${rootDir}`, ignore: "**/*.min.css" })
.map((x) => ({
input: `${rootDir}/${x}`,
output: `${rootDir}/${x}`.replace("css", "min.css"),
}));
for (let file of files) {
const css = fs.readFileSync(file.input, { encoding: "utf-8" });
const result = await postcss([autoprefixer, cssnano]).process(css, {
from: file.input,
to: file.output,
});
fs.writeFileSync(file.output, result.css);
}
}
function copyToVersionFolder() {
const files = fastglob.sync("**/*.css", { cwd: `./${rootDir}` });
for (let file of files) {
const css = fs.readFileSync(`${rootDir}/${file}`, { encoding: "utf-8" });
const filename = `${rootDir}/version/${version}/${file}`;
fs.mkdirSync(getDirName(filename), { recursive: true });
fs.writeFileSync(filename, css);
}
}
+4
View File
@@ -0,0 +1,4 @@
const packageJson = require("../package.json");
/* Make package-version accessible for github-workflow */
console.log(packageJson.version);
+2 -1
View File
@@ -163,7 +163,8 @@
gap: var(--a-spacing-2);
}
.navds-date__caption-button {
.navds-date__caption-button,
.navds-date__caption-button:disabled {
color: var(--ac-date-caption-text, var(--a-text-default));
}
+4
View File
@@ -18,6 +18,10 @@
margin-top: 0;
}
.navds-fieldset__legend {
padding: 0;
}
.navds-fieldset:disabled > .navds-fieldset__legend,
.navds-fieldset:disabled > .navds-fieldset__description {
opacity: 0.3;
+1 -1
View File
@@ -1,5 +1,5 @@
@charset "UTF-8";
@import "baseline/baseline.css";
@import "baseline/index.css";
@import "typography.css";
@import "grid.css";
@import "accordion.css";
+23 -6
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-css",
"version": "2.8.12",
"version": "2.9.2",
"description": "CSS for NAV Designsystem",
"author": "Aksel | NAV designsystem team",
"keywords": [
@@ -8,23 +8,40 @@
],
"license": "MIT",
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
},
"files": [
"*",
"!dist/version",
"!config/bundle.js"
],
"repository": {
"type": "git",
"url": "git+https://github.com/navikt/aksel.git"
},
"main": "./dist/index.css",
"scripts": {
"build": "postcss --use postcss-import postcss-combine-duplicated-selectors -o dist/index.css index.css",
"watch": "postcss --watch --use postcss-import -o dist/index.css index.css"
"build": "node config/bundle.js",
"watch": "nodemon --ignore dist -e css --watch . --exec \"yarn build\"",
"css:get-version": "node config/get-version.js"
},
"devDependencies": {
"@navikt/ds-tokens": "^2.8.12",
"@navikt/ds-tokens": "^2.9.2",
"cssnano": "6.0.0",
"fast-glob": "3.2.11",
"lodash": "4.17.21",
"nodemon": "^2.0.12",
"normalize.css": "^8.0.1",
"postcss": "^8.4.0",
"postcss-cli": "^9.0.0",
"postcss-combine-duplicated-selectors": "10.0.3",
"postcss-import": "^14.1.0"
}
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
}
+5 -4
View File
@@ -1,7 +1,3 @@
[data-theme="dark"] {
--ac-typo-error-text: var(--a-red-300);
}
/* Heading */
.navds-heading {
font-weight: var(--a-font-weight-bold);
@@ -186,6 +182,11 @@
margin-bottom: var(--a-spacing-2);
}
[data-theme="dark"].navds-error-message,
[data-theme="dark"] .navds-error-message {
--a-text-danger: var(--a-red-300);
}
.navds-error-message {
color: var(--ac-typo-error-text, var(--a-text-danger));
}
+66
View File
@@ -1,5 +1,71 @@
# @navikt/ds-react
## 2.9.2
### Patch Changes
- Updated dependencies []:
- @navikt/aksel-icons@2.9.2
- @navikt/ds-icons@2.9.2
## 2.9.1
### Patch Changes
- [#1944](https://github.com/navikt/aksel/pull/1944) [`1afdee453`](https://github.com/navikt/aksel/commit/1afdee453fbba20ec280dc868c8aa1ae2a92132d) Thanks [@KenAJoh](https://github.com/KenAJoh)! - ExpansionCard støtter nå aria-labelledby
- Updated dependencies []:
- @navikt/aksel-icons@2.9.1
- @navikt/ds-icons@2.9.1
## 2.9.0
### Patch Changes
- Updated dependencies []:
- @navikt/aksel-icons@2.9.0
- @navikt/ds-icons@2.9.0
## 2.8.16
### Patch Changes
- [`ff001f2bc`](https://github.com/navikt/aksel/commit/ff001f2bcf5a1ff0580660a1680f4f8342e7fdff) Thanks [@KenAJoh](https://github.com/KenAJoh)! - :bug: ExpansionCard.Content sendte ikke className videre
- Updated dependencies []:
- @navikt/aksel-icons@2.8.16
- @navikt/ds-icons@2.8.16
## 2.8.15
### Patch Changes
- [#1930](https://github.com/navikt/aksel/pull/1930) [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Alle pakker implementerer nå npm provenance (beta)
- [#1929](https://github.com/navikt/aksel/pull/1929) [`284534246`](https://github.com/navikt/aksel/commit/28453424684e00d65fd8d204f1405f7ed6a82fbf) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Bedre håndtering av visning for out-of-range dates i datepickers
- Updated dependencies [[`dfe923582`](https://github.com/navikt/aksel/commit/dfe923582a57b41c77cfb4fbfa7c56be047ef2b0), [`6682be1c8`](https://github.com/navikt/aksel/commit/6682be1c8e6562213c64e5be4bed70fef54ab865)]:
- @navikt/aksel-icons@2.8.15
- @navikt/ds-icons@2.8.15
## 2.8.14
### Patch Changes
- [`f0d9a8853`](https://github.com/navikt/aksel/commit/f0d9a8853f56854a4049bd3f6cc34968e9d6c380) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Fixes shown month on open in Datepicker/MonthPicker, better handling of out-of-range 'today'
- Updated dependencies []:
- @navikt/aksel-icons@2.8.14
- @navikt/ds-icons@2.8.14
## 2.8.13
### Patch Changes
- Updated dependencies [[`ecd6241e5`](https://github.com/navikt/aksel/commit/ecd6241e5751519fbda800a5f41a613957dbf77c)]:
- @navikt/aksel-icons@2.8.13
- @navikt/ds-icons@2.8.13
## 2.8.12
### Patch Changes
+5 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-react",
"version": "2.8.12",
"version": "2.9.2",
"description": "Aksel react-components for NAV designsystem",
"author": "Aksel | NAV designsystem team",
"license": "MIT",
@@ -18,7 +18,8 @@
"module": "./esm/index.js",
"typings": "./esm/index.d.ts",
"publishConfig": {
"access": "public"
"access": "public",
"provenance": true
},
"files": [
"/cjs",
@@ -37,8 +38,8 @@
},
"dependencies": {
"@floating-ui/react": "0.17.0",
"@navikt/aksel-icons": "^2.8.12",
"@navikt/ds-icons": "^2.8.12",
"@navikt/aksel-icons": "^2.9.2",
"@navikt/ds-icons": "^2.9.2",
"@radix-ui/react-tabs": "1.0.0",
"@radix-ui/react-toggle-group": "1.0.0",
"clsx": "^1.2.1",
@@ -7,6 +7,7 @@ import { CaptionProps, useDayPicker, useNavigation } from "react-day-picker";
import { Button, Select } from "../../..";
import { getMonths, getYears } from "../../utils/get-dates";
import { labelMonthDropdown, labelYearDropdown } from "../../utils/labels";
import { max, min } from "date-fns";
export const DropdownCaption = ({ displayMonth, id }: CaptionProps) => {
const { goToMonth, nextMonth, previousMonth } = useNavigation();
@@ -23,13 +24,18 @@ export const DropdownCaption = ({ displayMonth, id }: CaptionProps) => {
return null;
}
const handleYearChange: React.ChangeEventHandler<HTMLSelectElement> = (e) =>
goToMonth(setYear(startOfMonth(displayMonth), Number(e.target.value)));
const handleYearChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {
const newMonth = setYear(
startOfMonth(displayMonth),
Number(e.target.value)
);
goToMonth(startOfMonth(min([max([newMonth, fromDate]), toDate])));
};
const handleMonthChange: React.ChangeEventHandler<HTMLSelectElement> = (e) =>
goToMonth(setMonth(startOfMonth(displayMonth), Number(e.target.value)));
const years = getYears(fromDate, toDate);
const years = getYears(fromDate, toDate, displayMonth.getFullYear());
const months = getMonths(fromDate, toDate, displayMonth);
const previousLabel = labelPrevious(previousMonth, { locale });
@@ -149,14 +149,13 @@ export const ShowWeekNumber = () => (
export const UseDatepicker = () => {
const { datepickerProps, inputProps } = UNSAFE_useDatepicker({
fromDate: new Date("Aug 23 2019"),
toDate: new Date("Feb 23 2024"),
onDateChange: console.log,
locale: "en",
openOnFocus: false,
});
return (
<div style={{ display: "flex", gap: "1rem" }}>
<DatePicker {...datepickerProps}>
<DatePicker {...datepickerProps} dropdownCaption>
<DatePicker.Input {...inputProps} label="Velg dato" />
</DatePicker>
</div>
@@ -1,6 +1,6 @@
import differenceInCalendarDays from "date-fns/differenceInCalendarDays";
import isWeekend from "date-fns/isWeekend";
import React, { useRef, useState } from "react";
import React, { useCallback, useRef, useState } from "react";
import { DayClickEventHandler, isMatch } from "react-day-picker";
import { DateInputProps } from "../DateInput";
import { DatePickerProps } from "../datepicker/DatePicker";
@@ -150,13 +150,22 @@ export const useDatepicker = (
: "";
const [inputValue, setInputValue] = useState(defaultInputValue);
useOutsideClickHandler(open, setOpen, [
const handleOpen = useCallback(
(open: boolean) => {
setOpen(open);
!open &&
setMonth(selectedDay ?? defaultSelected ?? defaultMonth ?? today);
},
[defaultMonth, defaultSelected, selectedDay, today]
);
useOutsideClickHandler(open, handleOpen, [
daypickerRef,
inputRef.current,
inputRef.current?.nextSibling,
]);
useEscape(open, setOpen, inputRef);
useEscape(open, handleOpen, inputRef);
const updateDate = (date?: Date) => {
onDateChange?.(date);
@@ -182,7 +191,7 @@ export const useDatepicker = (
};
const handleFocus: React.FocusEventHandler<HTMLInputElement> = (e) => {
!open && openOnFocus && setOpen(true);
!open && openOnFocus && handleOpen(true);
let day = parseDate(
e.target.value,
today,
@@ -191,8 +200,14 @@ export const useDatepicker = (
allowTwoDigitYear
);
if (isValidDate(day)) {
setMonth(day);
setInputValue(formatDateForInput(day, locale, "date", inputFormat));
const isBefore =
fromDate && day && differenceInCalendarDays(fromDate, day) > 0;
const isAfter =
toDate && day && differenceInCalendarDays(day, toDate) > 0;
!isBefore && !isAfter && setMonth(day);
}
};
@@ -211,7 +226,7 @@ export const useDatepicker = (
/* Only allow de-selecting if not required */
const handleDayClick: DayClickEventHandler = (day, { selected }) => {
if (day && !selected) {
setOpen(false);
handleOpen(false);
inputRef.current && inputRef.current.focus();
}
@@ -288,7 +303,7 @@ export const useDatepicker = (
toDate,
today,
open,
onOpenToggle: () => setOpen((x) => !x),
onOpenToggle: () => handleOpen(!open),
disabled,
disableWeekends,
ref: setDaypickerRef,
@@ -1,8 +1,8 @@
import React, { useCallback, useEffect } from "react";
import { useCallback, useEffect } from "react";
export const useEscape = (
open: boolean,
setOpen: React.Dispatch<React.SetStateAction<boolean>>,
setOpen: (openState: boolean) => void,
focusRef: any
) => {
const handleClose = useCallback(() => {
@@ -1,4 +1,4 @@
import React, { useRef, useState } from "react";
import React, { useCallback, useMemo, useRef, useState } from "react";
import { DateInputProps } from "../DateInput";
import { MonthPickerProps } from "../monthpicker/MonthPicker";
import {
@@ -96,6 +96,20 @@ const getValidationMessage = (val = {}): MonthValidationT => ({
...val,
});
const getIsBefore = (opt: { fromDate?: Date; date?: Date }) =>
opt.fromDate &&
opt.date &&
(opt.fromDate.getFullYear() > opt.date.getFullYear() ||
(opt.fromDate.getFullYear() === opt.date.getFullYear() &&
opt.fromDate.getMonth() > opt.date.getMonth()));
const getIsAfter = (opt: { toDate?: Date; date?: Date }) =>
opt.toDate &&
opt.date &&
(opt.toDate.getFullYear() < opt.date.getFullYear() ||
(opt.toDate.getFullYear() === opt.date.getFullYear() &&
opt.toDate.getMonth() < opt.date.getMonth()));
export const useMonthpicker = (
opt: UseMonthPickerOptions = {}
): UseMonthPickerValue => {
@@ -116,7 +130,7 @@ export const useMonthpicker = (
const [defaultSelected, setDefaultSelected] = useState(_defaultSelected);
const today = new Date();
const today = useMemo(() => new Date(), []);
const locale = getLocaleFromString(_locale);
const inputRef = useRef<HTMLInputElement>(null);
@@ -133,13 +147,22 @@ export const useMonthpicker = (
const [inputValue, setInputValue] = useState(defaultInputValue);
useOutsideClickHandler(open, setOpen, [
const handleOpen = useCallback(
(open: boolean) => {
setOpen(open);
!open &&
setYear(selectedMonth ?? defaultSelected ?? defaultYear ?? today);
},
[defaultSelected, defaultYear, selectedMonth, today]
);
useOutsideClickHandler(open, handleOpen, [
monthpickerRef,
inputRef.current,
inputRef.current?.nextSibling,
]);
useEscape(open, setOpen, inputRef);
useEscape(open, handleOpen, inputRef);
const updateMonth = (date?: Date) => {
onMonthChange?.(date);
@@ -165,7 +188,7 @@ export const useMonthpicker = (
};
const handleFocus: React.FocusEventHandler<HTMLInputElement> = (e) => {
!open && openOnFocus && setOpen(true);
!open && openOnFocus && handleOpen(true);
let day = parseDate(
e.target.value,
today,
@@ -173,8 +196,11 @@ export const useMonthpicker = (
"month",
allowTwoDigitYear
);
const isBefore = getIsBefore({ fromDate, date: day });
const isAfter = getIsAfter({ toDate, date: day });
if (isValidDate(day)) {
setYear(day);
!isBefore && !isAfter && setYear(day);
setInputValue(formatDateForInput(day, locale, "month", inputFormat));
} else {
setYear(defaultSelected ?? defaultYear ?? today);
@@ -196,7 +222,7 @@ export const useMonthpicker = (
/* Only allow de-selecting if not required */
const handleMonthClick = (month?: Date) => {
if (month) {
setOpen(false);
handleOpen(false);
inputRef.current && inputRef.current.focus();
setYear(month);
}
@@ -228,19 +254,8 @@ export const useMonthpicker = (
allowTwoDigitYear
);
const isBefore =
fromDate &&
month &&
(fromDate.getFullYear() > month.getFullYear() ||
(fromDate.getFullYear() === month.getFullYear() &&
fromDate.getMonth() > month.getMonth()));
const isAfter =
toDate &&
month &&
(toDate.getFullYear() < month.getFullYear() ||
(toDate.getFullYear() === month.getFullYear() &&
toDate.getMonth() < month.getMonth()));
const isBefore = getIsBefore({ fromDate, date: month });
const isAfter = getIsAfter({ toDate, date: month });
if (!isValidDate(month) || (disabled && isMatch(month, disabled))) {
updateMonth(undefined);
@@ -282,7 +297,7 @@ export const useMonthpicker = (
fromDate,
toDate,
open,
onOpenToggle: () => setOpen((x) => !x),
onOpenToggle: () => handleOpen(!open),
disabled,
ref: setMonthpickerRef,
};
Loaded 100 of 208 files, more files were not shown because too many files have changed in this diff. Show more