nve-designsystem 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/.eslintignore +7 -7
  2. package/.gitattributes +6 -0
  3. package/.github/workflows/azure-static-web-app-kind-mushroom-03c272603.yml +49 -49
  4. package/.github/workflows/chromatic.yml +30 -0
  5. package/.github/workflows/npm-publish.yml +34 -0
  6. package/.prettierrc +6 -6
  7. package/.storybook/DocTemp.mdx +36 -36
  8. package/.storybook/main.ts +32 -32
  9. package/.storybook/preview.ts +18 -18
  10. package/.vscode/settings.json +30 -30
  11. package/LICENSE +21 -21
  12. package/README.md +184 -184
  13. package/build/css/nve.css +363 -363
  14. package/build/css/nve_dark.css +104 -104
  15. package/build/css/varsom.css +363 -363
  16. package/build/css/varsom_dark.css +104 -104
  17. package/build/tokens.css +134 -134
  18. package/customtransforms/boxShadow.js +12 -12
  19. package/customtransforms/fixZeroes.js +15 -15
  20. package/customtransforms/fontFamilies.js +20 -20
  21. package/customtransforms/fontSizes.js +11 -11
  22. package/customtransforms/fontWeights.js +50 -50
  23. package/doc/components.md +12 -12
  24. package/doc/nve-button.md +93 -93
  25. package/doc/nve-icon.md +10 -10
  26. package/doc/nve-input.md +121 -121
  27. package/doc/nve-label.md +6 -6
  28. package/doc/nve-radio-group.md +72 -72
  29. package/doc/nve-radio.md +43 -43
  30. package/doc/nve-spinner.md +32 -32
  31. package/doc/nve-tooltip.md +65 -65
  32. package/loader/cdn.js +3 -3
  33. package/loader/index.cjs.js +3 -3
  34. package/loader/index.d.ts +21 -21
  35. package/loader/index.es2017.js +3 -3
  36. package/loader/index.js +4 -4
  37. package/loader/package.json +10 -10
  38. package/package.json +52 -51
  39. package/src/components/index.ts +11 -11
  40. package/src/components/nve-button/nve-button-demo.ts +89 -89
  41. package/src/components/nve-button/nve-button.styles.ts +65 -65
  42. package/src/components/nve-button/nve-button.ts +24 -24
  43. package/src/components/nve-icon/nve-icon.ts +35 -35
  44. package/src/components/nve-input/nve-input.styles.ts +74 -84
  45. package/src/components/nve-input/nve-input.ts +42 -42
  46. package/src/components/nve-label/nve-label-demo.ts +13 -0
  47. package/src/components/nve-label/nve-label.styles.ts +4 -0
  48. package/src/components/nve-label/nve-label.ts +32 -11
  49. package/src/components/nve-radio/nve-radio-demo.ts +113 -0
  50. package/src/components/nve-radio/nve-radio.component.ts +23 -23
  51. package/src/components/nve-radio/nve-radio.styles.ts +54 -47
  52. package/src/components/nve-radio-button/nve-radio-button.component.ts +19 -19
  53. package/src/components/nve-radio-group/nve-radio-group.component.ts +193 -165
  54. package/src/components/nve-radio-group/nve-radio-group.styles.ts +50 -33
  55. package/src/components/nve-spinner/nve-spinner.ts +29 -29
  56. package/src/components/nve-tooltip/nve-tooltip.ts +19 -19
  57. package/src/components.d.ts +24 -24
  58. package/src/main.ts +16 -16
  59. package/src/stories/Configure.mdx +364 -364
  60. package/src/stories/assets/accessibility.svg +4 -4
  61. package/src/stories/assets/discord.svg +15 -15
  62. package/src/stories/assets/github.svg +3 -3
  63. package/src/stories/assets/tutorials.svg +12 -12
  64. package/src/stories/assets/youtube.svg +4 -4
  65. package/src/stories/{Button.stories.ts → examples/Button.stories.ts} +49 -49
  66. package/src/stories/{Button.ts → examples/Button.ts} +43 -43
  67. package/src/stories/{Header.stories.ts → examples/Header.stories.ts} +23 -23
  68. package/src/stories/{Header.ts → examples/Header.ts} +56 -56
  69. package/src/stories/{Page.stories.ts → examples/Page.stories.ts} +26 -26
  70. package/src/stories/{Page.ts → examples/Page.ts} +72 -72
  71. package/src/stories/{button.css → examples/button.css} +30 -30
  72. package/src/stories/{header.css → examples/header.css} +32 -32
  73. package/src/stories/{page.css → examples/page.css} +69 -69
  74. package/src/stories/{NveButton.stories.ts → nve-button/NveButton.stories.ts} +79 -79
  75. package/src/stories/{NveButton.ts → nve-button/NveButton.ts} +48 -48
  76. package/src/stories/{NveInput.stories.ts → nve-input/NveInput.stories.ts} +50 -50
  77. package/src/stories/{NveInput.ts → nve-input/NveInput.ts} +22 -22
  78. package/src/stories/{NveLabel.stories.ts → nve-label/NveLabel.stories.ts} +56 -56
  79. package/src/stories/{NveLabel.ts → nve-label/NveLabel.ts} +21 -21
  80. package/src/stories/nve-radio/NveRadio.stories.ts +45 -0
  81. package/src/stories/nve-radio/NveRadio.ts +26 -0
  82. package/src/styles/global.css +54 -54
  83. package/src/styles/imports.css +2 -2
  84. package/src/utils/watch.ts +60 -60
  85. package/src/vite-env.d.ts +1 -1
  86. package/tokens/$metadata.json +14 -14
  87. package/tokens/$themes.json +752 -752
  88. package/tokens/Theme/nve_dark.json +493 -493
  89. package/tokens/Theme/nve_light.json +494 -494
  90. package/tokens/Theme/varsom_dark.json +493 -493
  91. package/tokens/Theme/varsom_light.json +502 -502
  92. package/tokens/private.json +563 -563
  93. package/tokens/public/device/base.json +1051 -1043
  94. package/transform.js +130 -130
  95. package/tsconfig.json +24 -24
  96. package/vite.config +12 -12
  97. package/src/components/nve-radio/radio-demo.ts +0 -102
  98. package/src/stories/NveRadio.stories.ts +0 -39
  99. package/src/stories/NveRadio.ts +0 -23
package/.eslintignore CHANGED
@@ -1,8 +1,8 @@
1
- /dist
2
- /node_modules
3
- .eslintrc.js
4
- /vite.config.ts
5
- /tokens
6
- /www
7
- /build
1
+ /dist
2
+ /node_modules
3
+ .eslintrc.js
4
+ /vite.config.ts
5
+ /tokens
6
+ /www
7
+ /build
8
8
  /loader
package/.gitattributes ADDED
@@ -0,0 +1,6 @@
1
+ # Bytt ut <CR><LF> i alle tekstfiler i Windows med kun <LF> før de pushes (såkalt "LF normalization")
2
+ * text=auto eof=lf
3
+
4
+ # Generert API-dokumentasjon har kun <LF> som linjeskift, også i Windows.
5
+ # Dette gjør at git tror alle filer er endret hver gang vi genererer dokumentasjon
6
+ doc/nve*.md text eol=lf
@@ -1,49 +1,49 @@
1
- name: Azure Static Web Apps CI/CD
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- paths:
8
- - 'src/**'
9
- pull_request:
10
- types: [opened, synchronize, reopened, closed]
11
- branches:
12
- - main
13
-
14
- jobs:
15
- # Run when a pull request is created or updated
16
- build_and_deploy_pull_request:
17
- if: github.event_name == 'pull_request' && github.event.action != 'closed'
18
- runs-on: ubuntu-latest
19
- name: Build and Deploy Pull Request
20
- steps:
21
- - name: Checkout repository
22
- uses: actions/checkout@v4
23
- with:
24
- submodules: true
25
-
26
- - name: Build And Deploy
27
- id: builddeploy
28
- uses: Azure/static-web-apps-deploy@v1
29
- with:
30
- azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
31
- repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
32
- action: 'upload'
33
- app_location: '/'
34
- output_location: 'storybook-static'
35
- app_build_command: 'npm run build-storybook'
36
- ###### End of Repository/Build Configurations ######
37
- close_pull_request_job:
38
-
39
- close_pull_request_job:
40
- if: github.event_name == 'pull_request' && github.event.action == 'closed'
41
- runs-on: ubuntu-latest
42
- name: Close Pull Request Job
43
- steps:
44
- - name: Close Pull Request
45
- id: closepullrequest
46
- uses: Azure/static-web-apps-deploy@v1
47
- with:
48
- azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
49
- action: 'close'
1
+ name: Azure Static Web Apps CI/CD
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - 'src/**'
9
+ pull_request:
10
+ types: [opened, synchronize, reopened, closed]
11
+ branches:
12
+ - main
13
+
14
+ jobs:
15
+ # Run when a pull request is created or updated
16
+ build_and_deploy_pull_request:
17
+ if: github.event_name == 'pull_request' && github.event.action != 'closed'
18
+ runs-on: ubuntu-latest
19
+ name: Build and Deploy Pull Request
20
+ steps:
21
+ - name: Checkout repository
22
+ uses: actions/checkout@v4
23
+ with:
24
+ submodules: true
25
+
26
+ - name: Build And Deploy
27
+ id: builddeploy
28
+ uses: Azure/static-web-apps-deploy@v1
29
+ with:
30
+ azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
31
+ repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
32
+ action: 'upload'
33
+ app_location: '/'
34
+ output_location: 'storybook-static'
35
+ app_build_command: 'npm run build-storybook'
36
+ ###### End of Repository/Build Configurations ######
37
+ close_pull_request_job:
38
+
39
+ close_pull_request_job:
40
+ if: github.event_name == 'pull_request' && github.event.action == 'closed'
41
+ runs-on: ubuntu-latest
42
+ name: Close Pull Request Job
43
+ steps:
44
+ - name: Close Pull Request
45
+ id: closepullrequest
46
+ uses: Azure/static-web-apps-deploy@v1
47
+ with:
48
+ azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
49
+ action: 'close'
@@ -0,0 +1,30 @@
1
+ # Workflow name
2
+ name: 'Chromatic Publish'
3
+
4
+ # Event for the workflow
5
+ on:
6
+ push:
7
+ branches:
8
+ - main
9
+ paths:
10
+ - 'src/**'
11
+ - '.storybook/**'
12
+
13
+ # List of jobs
14
+ jobs:
15
+ test:
16
+ # Operating System
17
+ runs-on: ubuntu-latest
18
+ # Job steps
19
+ steps:
20
+ - uses: actions/checkout@v3
21
+ with:
22
+ fetch-depth: 0
23
+ - uses: actions/setup-node@v3
24
+ with:
25
+ node-version: 18
26
+ cache: 'npm'
27
+ - run: npm i
28
+ - run: npm run build
29
+ - run: npm run build-storybook
30
+ - run: npx chromatic --project-token=${{ secrets.CHROMATIC_PROJECT_TOKEN }} --token=${{ secrets.GITHUB_TOKEN }} --storybook-build-dir=storybook-static --auto-accept-changes
@@ -0,0 +1,34 @@
1
+ name: Publish package to npmjs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - 'src/**'
9
+ - 'build/**'
10
+ workflow_dispatch:
11
+
12
+ jobs:
13
+ build:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ # Setup .npmrc file to publish to npm
19
+ - uses: actions/setup-node@v3
20
+ with:
21
+ node-version: '20.x'
22
+ registry-url: 'https://registry.npmjs.org'
23
+
24
+ - name: Build and Publish
25
+ run: |
26
+ npm i
27
+ npm run build
28
+ git config --global user.email "jobl@nve.no"
29
+ git config --global user.name "Designsystem"
30
+ npm version patch -m "Bump version to %s [skip ci]" --force
31
+ git push --follow-tags
32
+ npm publish
33
+ env:
34
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH }}
package/.prettierrc CHANGED
@@ -1,6 +1,6 @@
1
- {
2
- "singleQuote": true,
3
- "semi": true,
4
- "trailingComma": "es5",
5
- "printWidth": 120
6
- }
1
+ {
2
+ "singleQuote": true,
3
+ "semi": true,
4
+ "trailingComma": "es5",
5
+ "printWidth": 120
6
+ }
@@ -1,36 +1,36 @@
1
- import { Story, Meta, Title, Subtitle, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
-
3
- <Meta isTemplate />
4
-
5
- <Title />
6
-
7
- # Default implementation
8
-
9
- <div style={{ display: 'flex' }}>
10
- <span style={{ margin: '1rem' }}>
11
- <Story name="Primary" height="50px">
12
- {() => <Primary />}
13
- </Story>
14
- </span>
15
- <span style={{ margin: '1rem' }}>
16
- <Story name="Secondary" height="50px">
17
- {() => <Primary />}
18
- </Story>
19
- </span>
20
- </div>
21
-
22
- <Primary />
23
-
24
- ## Inputs
25
-
26
- The component accepts the following inputs (props):
27
-
28
- <Controls />
29
-
30
- ---
31
-
32
- ## Additional variations
33
-
34
- Listed below are additional variations of the component.
35
-
36
- <Stories />
1
+ import { Story, Meta, Title, Subtitle, Description, Primary, Controls, Stories } from '@storybook/blocks';
2
+
3
+ <Meta isTemplate />
4
+
5
+ <Title />
6
+
7
+ # Default implementation
8
+
9
+ <div style={{ display: 'flex' }}>
10
+ <span style={{ margin: '1rem' }}>
11
+ <Story name="Primary" height="50px">
12
+ {() => <Primary />}
13
+ </Story>
14
+ </span>
15
+ <span style={{ margin: '1rem' }}>
16
+ <Story name="Secondary" height="50px">
17
+ {() => <Primary />}
18
+ </Story>
19
+ </span>
20
+ </div>
21
+
22
+ <Primary />
23
+
24
+ ## Inputs
25
+
26
+ The component accepts the following inputs (props):
27
+
28
+ <Controls />
29
+
30
+ ---
31
+
32
+ ## Additional variations
33
+
34
+ Listed below are additional variations of the component.
35
+
36
+ <Stories />
@@ -1,32 +1,32 @@
1
- import type { StorybookConfig } from '@storybook/web-components-vite';
2
-
3
- const globalCSSPath = process.env.NODE_ENV === 'production' ? '/assets/global.css' : '../src/styles/global.css';
4
-
5
- const varsomCSSPath = process.env.NODE_ENV === 'production' ? '/assets/varsom.css' : '../../../build/css/varsom.css';
6
-
7
- // we have to add another styling files after they will be in use
8
-
9
- const config: StorybookConfig = {
10
- stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx|mdx)'],
11
- addons: ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-docs'],
12
- framework: {
13
- name: '@storybook/web-components-vite',
14
- options: {},
15
- },
16
- previewHead: (head) => `
17
- ${head}
18
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.12.0/cdn/themes/light.css" />
19
- <link rel="stylesheet" href="https://fonts.cdnfonts.com/css/source-sans-pro" />
20
- <link
21
- rel="stylesheet"
22
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"
23
- />
24
- <link rel="stylesheet" href="${varsomCSSPath}" />
25
- <link rel="stylesheet" href="${globalCSSPath}" />
26
- `,
27
- docs: {
28
- autodocs: 'tag',
29
-
30
- },
31
- };
32
- export default config;
1
+ import type { StorybookConfig } from '@storybook/web-components-vite';
2
+
3
+ const globalCSSPath = process.env.NODE_ENV === 'production' ? '/assets/global.css' : '../src/styles/global.css';
4
+
5
+ const varsomCSSPath = process.env.NODE_ENV === 'production' ? '/assets/varsom.css' : '../../../build/css/varsom.css';
6
+
7
+ // we have to add another styling files after they will be in use
8
+
9
+ const config: StorybookConfig = {
10
+ stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx|mdx)'],
11
+ addons: ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-docs'],
12
+ framework: {
13
+ name: '@storybook/web-components-vite',
14
+ options: {},
15
+ },
16
+ previewHead: (head) => `
17
+ ${head}
18
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.12.0/cdn/themes/light.css" />
19
+ <link rel="stylesheet" href="https://fonts.cdnfonts.com/css/source-sans-pro" />
20
+ <link
21
+ rel="stylesheet"
22
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"
23
+ />
24
+ <link rel="stylesheet" href="${varsomCSSPath}" />
25
+ <link rel="stylesheet" href="${globalCSSPath}" />
26
+ `,
27
+ docs: {
28
+ autodocs: 'tag',
29
+
30
+ },
31
+ };
32
+ export default config;
@@ -1,18 +1,18 @@
1
- import type { Preview } from "@storybook/web-components";
2
- import DocTemp from './../.storybook/DocTemp.mdx';
3
- const preview: Preview = {
4
- parameters: {
5
- docs: {
6
- //page: DocTemp, kan sette custom mdx-fil her.
7
- },
8
- actions: { argTypesRegex: "^on[A-Z].*" },
9
- controls: {
10
- matchers: {
11
- color: /(background|color)$/i,
12
- date: /Date$/i,
13
- },
14
- },
15
- },
16
- };
17
-
18
- export default preview;
1
+ import type { Preview } from "@storybook/web-components";
2
+ import DocTemp from './../.storybook/DocTemp.mdx';
3
+ const preview: Preview = {
4
+ parameters: {
5
+ docs: {
6
+ //page: DocTemp, kan sette custom mdx-fil her.
7
+ },
8
+ actions: { argTypesRegex: "^on[A-Z].*" },
9
+ controls: {
10
+ matchers: {
11
+ color: /(background|color)$/i,
12
+ date: /Date$/i,
13
+ },
14
+ },
15
+ },
16
+ };
17
+
18
+ export default preview;
@@ -1,30 +1,30 @@
1
- {
2
- "i18n-ally.localesPaths": ["src/locale"],
3
- "editor.rulers": [120],
4
- "editor.formatOnSave": true,
5
- "editor.formatOnSaveMode": "file",
6
- "editor.codeActionsOnSave": {
7
- "source.fixAll": "explicit",
8
- "source.organizeImports": "never"
9
- },
10
- "[json]": {
11
- "editor.defaultFormatter": "esbenp.prettier-vscode",
12
- "editor.formatOnSaveMode": "file"
13
- },
14
- "[css]": {
15
- "editor.defaultFormatter": "esbenp.prettier-vscode",
16
- "editor.formatOnSaveMode": "file"
17
- },
18
- "[ts]": {
19
- "editor.defaultFormatter": "esbenp.prettier-vscode",
20
- "editor.formatOnSaveMode": "file"
21
- },
22
- "[javascript]": {
23
- "editor.defaultFormatter": "esbenp.prettier-vscode",
24
- "editor.formatOnSaveMode": "file"
25
- },
26
- "[html]": {
27
- "editor.defaultFormatter": "esbenp.prettier-vscode",
28
- "editor.formatOnSaveMode": "file"
29
- }
30
- }
1
+ {
2
+ "i18n-ally.localesPaths": ["src/locale"],
3
+ "editor.rulers": [120],
4
+ "editor.formatOnSave": true,
5
+ "editor.formatOnSaveMode": "file",
6
+ "editor.codeActionsOnSave": {
7
+ "source.fixAll": "explicit",
8
+ "source.organizeImports": "never"
9
+ },
10
+ "[json]": {
11
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
12
+ "editor.formatOnSaveMode": "file"
13
+ },
14
+ "[css]": {
15
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
16
+ "editor.formatOnSaveMode": "file"
17
+ },
18
+ "[ts]": {
19
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
20
+ "editor.formatOnSaveMode": "file"
21
+ },
22
+ "[javascript]": {
23
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
24
+ "editor.formatOnSaveMode": "file"
25
+ },
26
+ "[html]": {
27
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
28
+ "editor.formatOnSaveMode": "file"
29
+ }
30
+ }
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2023 Norges vassdrags- og energidirektorat
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Norges vassdrags- og energidirektorat
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.