@sb1/ffe-chips 1.2.1 → 1.3.0
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.
- package/README.md +47 -0
- package/css/chip.css +166 -0
- package/package.json +7 -5
package/README.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# @sb1/ffe-chips
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install --save @sb1/ffe-core @sb1/ffe-chips
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```less
|
|
12
|
+
@import 'path/to/node_modules/@sb1/ffe-chips/less/chip';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Importing compiled CSS
|
|
16
|
+
|
|
17
|
+
If your project does not use Less, you can import the compiled styling:
|
|
18
|
+
|
|
19
|
+
```css
|
|
20
|
+
@import '~@sb1/ffe-chips/css/chip.css';
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
See also `@sb1/ffe-chips-react`.
|
|
24
|
+
|
|
25
|
+
## Theming with CSS custom properties
|
|
26
|
+
|
|
27
|
+
In order to support theming of components, this package contains styling that depends on a set of custom properties, defined in `less/theme.less`. These properties in turn depend on a base theme defined in `ffe-core`.
|
|
28
|
+
|
|
29
|
+
If your project uses the `ffe-core`, you're probably good to go. If not, make sure to import the core properties in `theme.less`:
|
|
30
|
+
|
|
31
|
+
```css
|
|
32
|
+
@import '~@sb1/ffe-core/less/theme';
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Development
|
|
36
|
+
|
|
37
|
+
To start a local development server, run the following from the designsystem root folder:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install
|
|
41
|
+
npm run build
|
|
42
|
+
npm start
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
A local instance of `component-overview` with live reloading will run at http://localhost:1234/.
|
|
46
|
+
|
|
47
|
+
Example implementations using the latest versions of all components are also available at https://sparebank1.github.io/designsystem.
|
package/css/chip.css
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
:root,
|
|
2
|
+
:host {
|
|
3
|
+
--ffe-v-chip-text-color: var(--ffe-farge-svart);
|
|
4
|
+
--ffe-v-chip-background-color: var(--ffe-farge-hvit);
|
|
5
|
+
--ffe-v-chip-border-color: var(--ffe-farge-frost-70);
|
|
6
|
+
--ffe-v-chip-text-color-hover: var(--ffe-farge-svart);
|
|
7
|
+
--ffe-v-chip-background-color-hover: var(--ffe-farge-frost-30);
|
|
8
|
+
--ffe-v-chip-border-color-hover: var(--ffe-farge-frost-70);
|
|
9
|
+
--ffe-v-chip-text-color-active: var(--ffe-farge-svart);
|
|
10
|
+
--ffe-v-chip-background-color-active: var(--ffe-farge-frost-70);
|
|
11
|
+
--ffe-v-chip-border-color-active: var(--ffe-farge-frost-70);
|
|
12
|
+
--ffe-v-chip-text-color-selected: var(--ffe-farge-hvit);
|
|
13
|
+
--ffe-v-chip-background-color-selected: var(--ffe-farge-vann);
|
|
14
|
+
--ffe-v-chip-border-color-selected: var(--ffe-farge-vann);
|
|
15
|
+
--ffe-v-chip-text-color-selected-hover: var(--ffe-farge-hvit);
|
|
16
|
+
--ffe-v-chip-background-color-selected-hover: var(--ffe-farge-vann-70);
|
|
17
|
+
--ffe-v-chip-border-color-selected-hover: var(--ffe-farge-vann);
|
|
18
|
+
--ffe-v-chip-outline-color: var(--ffe-farge-vann);
|
|
19
|
+
}
|
|
20
|
+
@media (prefers-color-scheme: dark) {
|
|
21
|
+
:root .regard-color-scheme-preference,
|
|
22
|
+
:host .regard-color-scheme-preference {
|
|
23
|
+
--ffe-v-chip-text-color: var(--ffe-farge-hvit);
|
|
24
|
+
--ffe-v-chip-background-color: var(--ffe-farge-svart);
|
|
25
|
+
--ffe-v-chip-border-color: var(--ffe-farge-graa);
|
|
26
|
+
--ffe-v-chip-text-color-hover: var(--ffe-farge-hvit);
|
|
27
|
+
--ffe-v-chip-background-color-hover: var(--ffe-farge-koksgraa);
|
|
28
|
+
--ffe-v-chip-border-color-hover: var(--ffe-farge-graa);
|
|
29
|
+
--ffe-v-chip-text-color-active: var(--ffe-farge-hvit);
|
|
30
|
+
--ffe-v-chip-background-color-active: var(--ffe-farge-vann);
|
|
31
|
+
--ffe-v-chip-border-color-active: var(--ffe-farge-vann);
|
|
32
|
+
--ffe-v-chip-text-color-selected: var(--ffe-farge-hvit);
|
|
33
|
+
--ffe-v-chip-background-color-selected: var(--ffe-farge-vann);
|
|
34
|
+
--ffe-v-chip-border-color-selected: var(--ffe-farge-vann);
|
|
35
|
+
--ffe-v-chip-text-color-selected-hover: var(--ffe-farge-hvit);
|
|
36
|
+
--ffe-v-chip-background-color-selected-hover: var(--ffe-farge-vann-70);
|
|
37
|
+
--ffe-v-chip-border-color-selected-hover: var(--ffe-farge-vann);
|
|
38
|
+
--ffe-v-chip-outline-color: var(--ffe-farge-hvit);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
:root .ffe-chip--on-colored-bg,
|
|
42
|
+
:host .ffe-chip--on-colored-bg {
|
|
43
|
+
--ffe-v-chip-text-color: var(--ffe-farge-hvit);
|
|
44
|
+
--ffe-v-chip-background-color: var(--ffe-farge-vann);
|
|
45
|
+
--ffe-v-chip-border-color: var(--ffe-farge-hvit);
|
|
46
|
+
--ffe-v-chip-text-color-hover: var(--ffe-farge-hvit);
|
|
47
|
+
--ffe-v-chip-background-color-hover: var(--ffe-farge-vann-70);
|
|
48
|
+
--ffe-v-chip-border-color-hover: var(--ffe-farge-hvit);
|
|
49
|
+
--ffe-v-chip-text-color-active: var(--ffe-farge-svart);
|
|
50
|
+
--ffe-v-chip-background-color-active: var(--ffe-farge-vann-70);
|
|
51
|
+
--ffe-v-chip-border-color-active: var(--ffe-farge-vann-70);
|
|
52
|
+
--ffe-v-chip-text-color-selected: var(--ffe-farge-svart);
|
|
53
|
+
--ffe-v-chip-background-color-selected: var(--ffe-farge-hvit);
|
|
54
|
+
--ffe-v-chip-border-color-selected: var(--ffe-farge-frost);
|
|
55
|
+
--ffe-v-chip-text-color-selected-hover: var(--ffe-farge-svart);
|
|
56
|
+
--ffe-v-chip-background-color-selected-hover: var(--ffe-farge-frost-30);
|
|
57
|
+
--ffe-v-chip-border-color-selected-hover: var(--ffe-farge-frost);
|
|
58
|
+
--ffe-v-chip-outline-color: var(--ffe-farge-hvit);
|
|
59
|
+
}
|
|
60
|
+
.ffe-chip {
|
|
61
|
+
--border-width: 1px;
|
|
62
|
+
--background-color: var(--ffe-v-chip-background-color);
|
|
63
|
+
--border-color: var(--ffe-v-chip-border-color);
|
|
64
|
+
--text-color: var(--ffe-v-chip-text-color);
|
|
65
|
+
--border-radius: 24px;
|
|
66
|
+
--text-offset: 12px;
|
|
67
|
+
--icon-offset: var(--ffe-spacing-xs);
|
|
68
|
+
--offset-y: calc(var(--ffe-spacing-2xs) - var(--border-width));
|
|
69
|
+
--space-between: var(--ffe-spacing-2xs);
|
|
70
|
+
all: unset;
|
|
71
|
+
display: grid;
|
|
72
|
+
place-items: center;
|
|
73
|
+
grid-template-columns: var(--text-offset) 1fr var(--text-offset);
|
|
74
|
+
grid-template-rows: var(--offset-y) auto var(--offset-y);
|
|
75
|
+
border: var(--border-width) solid var(--border-color);
|
|
76
|
+
background: var(--background-color);
|
|
77
|
+
color: var(--text-color);
|
|
78
|
+
border-radius: var(--border-radius);
|
|
79
|
+
-webkit-transition-property: background-color, border-color, color, -webkit-transform;
|
|
80
|
+
transition-property: background-color, border-color, color, -webkit-transform;
|
|
81
|
+
-o-transition-property: background-color, transform, border-color, color;
|
|
82
|
+
transition-property: background-color, transform, border-color, color;
|
|
83
|
+
transition-property: background-color, transform, border-color, color, -webkit-transform;
|
|
84
|
+
-webkit-transition-duration: var(--ffe-transition-duration);
|
|
85
|
+
-o-transition-duration: var(--ffe-transition-duration);
|
|
86
|
+
transition-duration: var(--ffe-transition-duration);
|
|
87
|
+
-webkit-transition-timing-function: var(--ffe-ease);
|
|
88
|
+
-o-transition-timing-function: var(--ffe-ease);
|
|
89
|
+
transition-timing-function: var(--ffe-ease);
|
|
90
|
+
cursor: pointer;
|
|
91
|
+
}
|
|
92
|
+
.ffe-chip .ffe-icons,
|
|
93
|
+
.ffe-chip__label {
|
|
94
|
+
color: inherit;
|
|
95
|
+
}
|
|
96
|
+
.ffe-chip .ffe-icons {
|
|
97
|
+
display: block;
|
|
98
|
+
}
|
|
99
|
+
.ffe-chip__label {
|
|
100
|
+
margin: 0;
|
|
101
|
+
grid-area: 2 / 2 / span 1 / span 1;
|
|
102
|
+
}
|
|
103
|
+
@media (hover: hover) and (pointer: fine) {
|
|
104
|
+
.ffe-chip:hover {
|
|
105
|
+
--background-color: var(--ffe-v-chip-background-color-hover);
|
|
106
|
+
--border-color: var(--ffe-v-chip-border-color-hover);
|
|
107
|
+
--text-color: var(--ffe-v-chip-text-color-hover);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
.ffe-chip:focus-visible {
|
|
111
|
+
outline: 2px solid var(--ffe-v-chip-outline-color);
|
|
112
|
+
outline-offset: 3px;
|
|
113
|
+
}
|
|
114
|
+
.ffe-chip:active {
|
|
115
|
+
--background-color: var(--ffe-v-chip-background-color-active);
|
|
116
|
+
--border-color: var(--ffe-v-chip-border-color-active);
|
|
117
|
+
--text-color: var(--ffe-v-chip-text-color-active);
|
|
118
|
+
-webkit-transform: scale(0.97);
|
|
119
|
+
transform: scale(0.97);
|
|
120
|
+
}
|
|
121
|
+
.ffe-chip--selected {
|
|
122
|
+
--background-color: var(--ffe-v-chip-background-color-selected);
|
|
123
|
+
--border-color: var(--ffe-v-chip-border-color-selected);
|
|
124
|
+
--text-color: var(--ffe-v-chip-text-color-selected);
|
|
125
|
+
}
|
|
126
|
+
@media (hover: hover) and (pointer: fine) {
|
|
127
|
+
.ffe-chip--selected:hover {
|
|
128
|
+
--background-color: var(--ffe-v-chip-background-color-selected-hover);
|
|
129
|
+
--border-color: var(--ffe-v-chip-border-color-selected-hover);
|
|
130
|
+
--text-color: var(--ffe-v-chip-text-color-selected-hover);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
.ffe-chip--sm {
|
|
134
|
+
--text-offset: 12px;
|
|
135
|
+
--space-between: var(--ffe-spacing-2xs);
|
|
136
|
+
}
|
|
137
|
+
.ffe-chip--md {
|
|
138
|
+
--icon-offset: 12px;
|
|
139
|
+
--text-offset: var(--ffe-spacing-sm);
|
|
140
|
+
--offset-y: calc(var(--ffe-spacing-xs) - var(--border-width));
|
|
141
|
+
--space-between: var(--ffe-spacing-xs);
|
|
142
|
+
}
|
|
143
|
+
.ffe-chip--lg {
|
|
144
|
+
--icon-offset: var(--ffe-spacing-sm);
|
|
145
|
+
--text-offset: var(--ffe-spacing-md);
|
|
146
|
+
--offset-y: calc(12px - var(--border-width));
|
|
147
|
+
--space-between: var(--ffe-spacing-xs);
|
|
148
|
+
}
|
|
149
|
+
.ffe-chip--icon-right {
|
|
150
|
+
grid-template-columns: var(--text-offset) 1fr var(--space-between) auto var(--icon-offset);
|
|
151
|
+
}
|
|
152
|
+
.ffe-chip--icon-right .ffe-icons {
|
|
153
|
+
grid-area: 2 / 4 / span 1 / span 1;
|
|
154
|
+
}
|
|
155
|
+
.ffe-chip--icon-right .ffe-chip__label {
|
|
156
|
+
grid-area: 2 / 2 / span 1 / span 1;
|
|
157
|
+
}
|
|
158
|
+
.ffe-chip--icon-left {
|
|
159
|
+
grid-template-columns: var(--icon-offset) auto var(--space-between) 1fr var(--text-offset);
|
|
160
|
+
}
|
|
161
|
+
.ffe-chip--icon-left .ffe-icons {
|
|
162
|
+
grid-area: 2 / 2 / span 1 / span 1;
|
|
163
|
+
}
|
|
164
|
+
.ffe-chip--icon-left .ffe-chip__label {
|
|
165
|
+
grid-area: 2 / 4 / span 1 / span 1;
|
|
166
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sb1/ffe-chips",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Chips are compact elements that represent an input, attribute, or action.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ffe"
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"author": "SpareBank 1",
|
|
10
10
|
"files": [
|
|
11
|
-
"less"
|
|
11
|
+
"less",
|
|
12
|
+
"css"
|
|
12
13
|
],
|
|
13
14
|
"repository": {
|
|
14
15
|
"type": "git",
|
|
@@ -16,10 +17,11 @@
|
|
|
16
17
|
},
|
|
17
18
|
"scripts": {
|
|
18
19
|
"lint": "ffe-buildtool stylelint less/*.less",
|
|
19
|
-
"test": "npm run lint"
|
|
20
|
+
"test": "npm run lint",
|
|
21
|
+
"build": "lessc less/chip.less css/chip.css --autoprefix"
|
|
20
22
|
},
|
|
21
23
|
"dependencies": {
|
|
22
|
-
"@sb1/ffe-core": "^29.
|
|
24
|
+
"@sb1/ffe-core": "^29.2.0"
|
|
23
25
|
},
|
|
24
26
|
"devDependencies": {
|
|
25
27
|
"@sb1/ffe-buildtool": "^0.9.0"
|
|
@@ -27,5 +29,5 @@
|
|
|
27
29
|
"publishConfig": {
|
|
28
30
|
"access": "public"
|
|
29
31
|
},
|
|
30
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "55ee3d40abaef9433c55aa993889e67c3f5c5abd"
|
|
31
33
|
}
|