@dative-gpi/foundation-shared-components 0.0.69 → 0.0.71

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.
@@ -1,5 +1,9 @@
1
1
  <template>
2
- <v-breadcrumbs v-bind="$attrs" :style="style" :items="$props.items">
2
+ <v-breadcrumbs
3
+ :style="style"
4
+ :items="$props.items"
5
+ v-bind="$attrs"
6
+ >
3
7
  <template #title="{ item }">
4
8
  <FSSpan :class="classes(item)">
5
9
  {{ item.title }}
@@ -65,12 +65,12 @@ export default defineComponent({
65
65
  default: "8px"
66
66
  },
67
67
  variant: {
68
- type: String as PropType<"background" | "standard">,
68
+ type: String as PropType<"background" | "standard" | "gradient">,
69
69
  required: false,
70
70
  default: "background"
71
71
  },
72
72
  color: {
73
- type: String as PropType<ColorBase>,
73
+ type: [Array, String] as PropType<ColorBase | ColorBase[]>,
74
74
  required: false,
75
75
  default: ColorEnum.Background
76
76
  },
@@ -91,9 +91,15 @@ export default defineComponent({
91
91
  }
92
92
  },
93
93
  setup(props) {
94
- const { getColors } = useColors();
94
+ const { getColors, getGradients } = useColors();
95
95
 
96
- const colors = computed(() => getColors(props.color));
96
+ const colors = computed(() => {
97
+ if(Array.isArray(props.color)) {
98
+ return getColors(props.color[0]);
99
+ }
100
+ return getColors(props.color);
101
+ });
102
+ const gradients = computed(() => getGradients(props.color, 135));
97
103
  const backgrounds = getColors(ColorEnum.Background);
98
104
  const lights = getColors(ColorEnum.Light);
99
105
  const darks = getColors(ColorEnum.Dark);
@@ -120,11 +126,29 @@ export default defineComponent({
120
126
  "--fs-card-border-color" : lights.dark,
121
127
  "--fs-card-color" : darks.base
122
128
  }
129
+ case "gradient": return {
130
+ "--fs-card-border-size" : props.border ? "1px" : "0",
131
+ "--fs-card-border-radius" : sizeToVar(props.borderRadius),
132
+ "--fs-card-padding" : sizeToVar(props.padding),
133
+ "--fs-card-height" : sizeToVar(props.height),
134
+ "--fs-card-width" : sizeToVar(props.width),
135
+ "--fs-card-background-color": gradients.value.base,
136
+ "--fs-card-border-color" : colors.value.lightContrast,
137
+ "--fs-card-color" : colors.value.lightContrast
138
+ }
123
139
  }
124
140
  });
125
141
 
126
142
  const classes = computed((): string[] => {
127
143
  const classNames = ["fs-card"];
144
+ switch(props.variant) {
145
+ case "gradient":
146
+ classNames.push("fs-card-gradient");
147
+ break;
148
+ default:
149
+ classNames.push("fs-card-background");
150
+ break;
151
+ }
128
152
  if (props.elevation) {
129
153
  classNames.push("fs-card-elevation");
130
154
  }
@@ -1,7 +1,8 @@
1
1
  <template>
2
2
  <v-icon
3
- :class="classes"
3
+ class="fs-icon"
4
4
  :color="color"
5
+ :style="style"
5
6
  v-bind="$attrs"
6
7
  >
7
8
  <slot />
@@ -11,14 +12,15 @@
11
12
  <script lang="ts">
12
13
  import { computed, defineComponent, PropType } from "vue";
13
14
 
14
- import { useColors } from "@dative-gpi/foundation-shared-components/composables";
15
+ import { useBreakpoints, useColors } from "@dative-gpi/foundation-shared-components/composables";
15
16
  import { ColorBase } from "@dative-gpi/foundation-shared-components/models";
17
+ import { sizeToVar } from "../utils";
16
18
 
17
19
  export default defineComponent({
18
20
  name: "FSIcon",
19
21
  props: {
20
22
  size: {
21
- type: String as PropType<"s" | "m" | "l">,
23
+ type: [Array, String, Number] as PropType<"s" | "m" | "l" | string[] | number[] | string | number | null>,
22
24
  required: false,
23
25
  default: "m"
24
26
  },
@@ -34,6 +36,7 @@ export default defineComponent({
34
36
  }
35
37
  },
36
38
  setup(props) {
39
+ const { isMobileSized } = useBreakpoints();
37
40
  const { getColors } = useColors();
38
41
 
39
42
  const color = computed((): string | null => {
@@ -43,13 +46,26 @@ export default defineComponent({
43
46
  return null;
44
47
  });
45
48
 
46
- const classes = computed((): string[] => {
47
- return [`fs-icon-${props.size}`];
49
+ const style = computed((): { [key: string] : string | undefined } => {
50
+ switch(props.size) {
51
+ case "s": return {
52
+ "--fs-icon-font-size": isMobileSized.value ? "14px" : "16px"
53
+ };
54
+ case "m": return {
55
+ "--fs-icon-font-size": isMobileSized.value ? "16px" : "20px"
56
+ };
57
+ case "l": return {
58
+ "--fs-icon-font-size": isMobileSized.value ? "20px" : "24px"
59
+ };
60
+ default: return {
61
+ "--fs-icon-font-size": sizeToVar(props.size)
62
+ };
63
+ }
48
64
  });
49
65
 
50
66
  return {
51
- classes,
52
- color
67
+ color,
68
+ style
53
69
  };
54
70
  }
55
71
  });
@@ -0,0 +1,60 @@
1
+ <template>
2
+ <FSCard
3
+ :variant="$props.backgroundColor == null ? 'background' : 'gradient'"
4
+ :border="$props.backgroundColor == null"
5
+ :color="$props.backgroundColor"
6
+ :height="$props.size"
7
+ :width="$props.size"
8
+ >
9
+ <FSRow
10
+ align="center-center"
11
+ >
12
+ <FSIcon
13
+ variant="dark"
14
+ size="56"
15
+ :color="$props.iconColor"
16
+ >
17
+ {{ $props.icon }}
18
+ </FSIcon>
19
+ </FSRow>
20
+ </FSCard>
21
+ </template>
22
+
23
+ <script lang="ts">
24
+ import { defineComponent, PropType } from "vue";
25
+
26
+ import { ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
27
+
28
+ import FSCard from "./FSCard.vue";
29
+ import FSIcon from "./FSIcon.vue";
30
+
31
+ export default defineComponent({
32
+ name: "FSIconCard",
33
+ components: {
34
+ FSCard,
35
+ FSIcon
36
+ },
37
+ props: {
38
+ size: {
39
+ type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>,
40
+ required: false,
41
+ default: null
42
+ },
43
+ backgroundColor: {
44
+ type: [Array, String] as PropType<ColorBase | ColorBase[]>,
45
+ required: false,
46
+ default: null
47
+ },
48
+ icon: {
49
+ type: String as PropType<string>,
50
+ required: false,
51
+ default: "mdi-shape"
52
+ },
53
+ iconColor: {
54
+ type: String as PropType<ColorBase>,
55
+ required: false,
56
+ default: ColorEnum.Dark
57
+ }
58
+ }
59
+ });
60
+ </script>
@@ -34,6 +34,7 @@
34
34
  prependIcon="mdi-pencil"
35
35
  variant="full"
36
36
  :editable="$props.editable"
37
+ v-bind="props"
37
38
  />
38
39
  </template>
39
40
  </FSTextField>
@@ -64,6 +65,7 @@
64
65
  prependIcon="mdi-pencil"
65
66
  variant="full"
66
67
  :editable="$props.editable"
68
+ v-bind="props"
67
69
  />
68
70
  </template>
69
71
  </FSTextField>
@@ -22,17 +22,18 @@
22
22
  gap="6px"
23
23
  :width="infoWidth"
24
24
  >
25
- <FSSpan
25
+ <FSText
26
26
  font="text-button"
27
27
  :lineClamp="2"
28
28
  >
29
29
  {{ $props.label }}
30
- </FSSpan>
31
- <FSSpan
30
+ </FSText>
31
+ <FSText
32
32
  font="text-overline"
33
+ variant="light"
33
34
  >
34
35
  {{ $props.code }}
35
- </FSSpan>
36
+ </FSText>
36
37
  </FSCol>
37
38
  <FSRow
38
39
  gap="4px"
@@ -82,7 +83,7 @@ import FSStatusesRow from "../deviceOrganisations/FSStatusesRow.vue";
82
83
  import FSWorstAlert from "../deviceOrganisations/FSWorstAlert.vue";
83
84
  import FSDivider from "../FSDivider.vue";
84
85
  import FSImage from "../FSImage.vue";
85
- import FSSpan from "../FSSpan.vue";
86
+ import FSText from "../FSText.vue";
86
87
  import FSTile from "./FSTile.vue";
87
88
  import FSCol from "../FSCol.vue";
88
89
  import FSRow from "../FSRow.vue";
@@ -96,8 +97,8 @@ export default defineComponent({
96
97
  FSWorstAlert,
97
98
  FSDivider,
98
99
  FSImage,
100
+ FSText,
99
101
  FSTile,
100
- FSSpan,
101
102
  FSCol,
102
103
  FSRow
103
104
  },
@@ -22,16 +22,17 @@
22
22
  gap="6px"
23
23
  :width="infoWidth"
24
24
  >
25
- <FSSpan
25
+ <FSText
26
26
  font="text-button"
27
27
  >
28
28
  {{ $props.label }}
29
- </FSSpan>
30
- <FSSpan
29
+ </FSText>
30
+ <FSText
31
31
  font="text-overline"
32
+ variant="light"
32
33
  >
33
34
  {{ $props.code }}
34
- </FSSpan>
35
+ </FSText>
35
36
  </FSCol>
36
37
  <FSCol
37
38
  gap="6px"
@@ -55,11 +56,11 @@
55
56
  </FSText>
56
57
  </FSRow>
57
58
  </FSColor>
58
- <FSSpan
59
+ <FSText
59
60
  font="text-overline"
60
61
  >
61
62
  {{ $tr("ui.group-tile.group(s)", "Group(s)") }}
62
- </FSSpan>
63
+ </FSText>
63
64
  </FSRow>
64
65
  <FSRow
65
66
  align="center-left"
@@ -80,11 +81,11 @@
80
81
  </FSText>
81
82
  </FSRow>
82
83
  </FSColor>
83
- <FSSpan
84
+ <FSText
84
85
  font="text-overline"
85
86
  >
86
87
  {{ $tr("ui.group-tile.device(s)", "Device(s)") }}
87
- </FSSpan>
88
+ </FSText>
88
89
  </FSRow>
89
90
  </FSCol>
90
91
  </FSCol>
@@ -106,7 +107,6 @@ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
106
107
 
107
108
  import FSImage from "../FSImage.vue";
108
109
  import FSColor from "../FSColor.vue";
109
- import FSSpan from "../FSSpan.vue";
110
110
  import FSText from "../FSText.vue";
111
111
  import FSTile from "./FSTile.vue";
112
112
  import FSCol from "../FSCol.vue";
@@ -117,7 +117,6 @@ export default defineComponent({
117
117
  components: {
118
118
  FSImage,
119
119
  FSColor,
120
- FSSpan,
121
120
  FSText,
122
121
  FSTile,
123
122
  FSCol,
@@ -0,0 +1,124 @@
1
+ <template>
2
+ <FSTile
3
+ :bottomColor="$props.bottomColor"
4
+ :editable="$props.editable"
5
+ :modelValue="$props.modelValue"
6
+ v-bind="$attrs"
7
+ >
8
+ <FSCol
9
+ align="center-center"
10
+ width="fill"
11
+ >
12
+ <FSRow
13
+ align="center-center"
14
+ gap="24px"
15
+ :height="imageSize"
16
+ :wrap="false"
17
+ >
18
+ <FSCol
19
+ gap="6px"
20
+ >
21
+ <FSText
22
+ font="text-button"
23
+ :lineClamp="2"
24
+ >
25
+ {{ $props.label }}
26
+ </FSText>
27
+ <FSText
28
+ font="text-overline"
29
+ variant="light"
30
+ >
31
+ {{ $props.code }}
32
+ </FSText>
33
+ </FSCol>
34
+ <FSIconCard
35
+ :backgroundColor="$props.iconBackgroundColor"
36
+ :icon="$props.icon"
37
+ :size="imageSize"
38
+ />
39
+ </FSRow>
40
+ </FSCol>
41
+ </FSTile>
42
+ </template>
43
+
44
+ <script lang="ts">
45
+ import { computed, defineComponent, PropType } from "vue";
46
+
47
+ import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
48
+ import { ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
49
+
50
+ import FSIconCard from "../FSIconCard.vue";
51
+ import FSText from "../FSText.vue";
52
+ import FSTile from "./FSTile.vue";
53
+ import FSCol from "../FSCol.vue";
54
+ import FSRow from "../FSRow.vue";
55
+
56
+ export default defineComponent({
57
+ name: "FSSimpleIconTileUI",
58
+ components: {
59
+ FSIconCard,
60
+ FSText,
61
+ FSTile,
62
+ FSCol,
63
+ FSRow
64
+ },
65
+ props: {
66
+ label: {
67
+ type: String as PropType<string | null>,
68
+ required: false,
69
+ default: null
70
+ },
71
+ modelValue: {
72
+ type: Boolean,
73
+ required: false,
74
+ default: false
75
+ },
76
+ code: {
77
+ type: String as PropType<string | null>,
78
+ required: false,
79
+ default: null
80
+ },
81
+ bottomColor: {
82
+ type: [Array, String] as PropType<ColorBase | ColorBase[]>,
83
+ required: false,
84
+ default: ColorEnum.Light
85
+ },
86
+ iconBackgroundColor: {
87
+ type: [Array, String] as PropType<ColorBase | ColorBase[]>,
88
+ required: false,
89
+ default: null
90
+ },
91
+ icon: {
92
+ type: String as PropType<string>,
93
+ required: false,
94
+ default: "mdi-ab-testing"
95
+ },
96
+ editable: {
97
+ type: Boolean,
98
+ required: false,
99
+ default: true
100
+ }
101
+ },
102
+ setup(props) {
103
+ const { isMobileSized } = useBreakpoints();
104
+
105
+ const imageSize = computed((): number => {
106
+ return isMobileSized.value ? 90 : 100;
107
+ });
108
+
109
+ const infoWidth = computed((): number => {
110
+ let width = isMobileSized.value ? 288 : 304;
111
+ if (props.icon) {
112
+ width -= imageSize.value;
113
+ }
114
+ return width;
115
+ });
116
+
117
+ return {
118
+ ColorEnum,
119
+ imageSize,
120
+ infoWidth
121
+ };
122
+ }
123
+ });
124
+ </script>
@@ -48,6 +48,7 @@
48
48
  />
49
49
  </FSCard>
50
50
  <div
51
+ v-if="$props.bottomColor"
51
52
  class="fs-tile-bottom"
52
53
  :style="style"
53
54
  />
@@ -89,9 +90,9 @@ export default defineComponent({
89
90
  default: false
90
91
  },
91
92
  bottomColor: {
92
- type: [Array, String] as PropType<ColorBase[] | ColorBase>,
93
+ type: [Array, String] as PropType<ColorBase[] | ColorBase | null>,
93
94
  required: false,
94
- default: ColorEnum.Primary
95
+ default: null
95
96
  },
96
97
  editable: {
97
98
  type: Boolean,
@@ -0,0 +1,174 @@
1
+ <template>
2
+ <FSTile
3
+ :editable="$props.editable"
4
+ :modelValue="$props.modelValue"
5
+ v-bind="$attrs"
6
+ >
7
+ <FSCol
8
+ align="center-center"
9
+ width="fill"
10
+ >
11
+ <FSRow
12
+ align="center-center"
13
+ gap="24px"
14
+ :wrap="false"
15
+ :height="imageSize"
16
+ >
17
+ <FSCol
18
+ gap="4px"
19
+ :width="infoWidth"
20
+ >
21
+ <FSText
22
+ font="text-button"
23
+ :lineClamp="2"
24
+ >
25
+ {{ title }}
26
+ </FSText>
27
+ <FSRow
28
+ v-if="roleLabel"
29
+ align="center-left"
30
+ gap="4px"
31
+ >
32
+ <FSIcon
33
+ v-if="roleIcon"
34
+ variant="light"
35
+ :color="ColorEnum.Dark"
36
+ >
37
+ {{ roleIcon }}
38
+ </FSIcon>
39
+ <FSText
40
+ font="text-overline"
41
+ variant="light"
42
+ >
43
+ {{ roleLabel }}
44
+ </FSText>
45
+ </FSRow>
46
+ </FSCol>
47
+ <FSImage
48
+ v-if="$props.imageId"
49
+ :imageId="$props.imageId"
50
+ :width="imageSize"
51
+ />
52
+ </FSRow>
53
+ </FSCol>
54
+ </FSTile>
55
+ </template>
56
+
57
+ <script lang="ts">
58
+ import { computed, defineComponent, PropType } from "vue";
59
+
60
+ import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
61
+ import { useBreakpoints } from "@dative-gpi/foundation-shared-components/composables";
62
+ import { ColorEnum } from "@dative-gpi/foundation-shared-components/models";
63
+ import { UserType } from "@dative-gpi/foundation-core-domain/models";
64
+
65
+ import FSImage from "../FSImage.vue";
66
+ import FSText from "../FSText.vue";
67
+ import FSTile from "./FSTile.vue";
68
+ import FSCol from "../FSCol.vue";
69
+ import FSRow from "../FSRow.vue";
70
+
71
+ export default defineComponent({
72
+ name: "FSUserOrganisationTileUI",
73
+ components: {
74
+ FSImage,
75
+ FSText,
76
+ FSTile,
77
+ FSCol,
78
+ FSRow
79
+ },
80
+ props: {
81
+ imageId: {
82
+ type: String as PropType<string | null>,
83
+ required: false,
84
+ default: null
85
+ },
86
+ name: {
87
+ type: String as PropType<string | null>,
88
+ required: false,
89
+ default: null
90
+ },
91
+ label: {
92
+ type: String as PropType<string | null>,
93
+ required: false,
94
+ default: null
95
+ },
96
+ userType: {
97
+ type: Number as PropType<UserType>,
98
+ required: false,
99
+ default: UserType.User
100
+ },
101
+ roleIcon: {
102
+ type: String as PropType<string | null>,
103
+ required: false,
104
+ default: null
105
+ },
106
+ roleLabel: {
107
+ type: String as PropType<string | null>,
108
+ required: false,
109
+ default: null
110
+ },
111
+ admin: {
112
+ type: Boolean,
113
+ required: false,
114
+ default: false
115
+ },
116
+ modelValue: {
117
+ type: Boolean,
118
+ required: false,
119
+ default: false
120
+ },
121
+ editable: {
122
+ type: Boolean,
123
+ required: false,
124
+ default: true
125
+ }
126
+ },
127
+ setup(props) {
128
+ const { isMobileSized } = useBreakpoints();
129
+ const { $tr } = useTranslationsProvider();
130
+
131
+ const title = computed((): string | null => {
132
+ switch (props.userType) {
133
+ case UserType.ServiceAccount: return props.label;
134
+ default: return props.name;
135
+ }
136
+ });
137
+
138
+ const roleIcon = computed((): string | null => {
139
+ if (props.admin) {
140
+ return "mdi-crown-outline";
141
+ }
142
+ return props.roleIcon;
143
+ });
144
+
145
+ const roleLabel = computed((): string | null => {
146
+ if (props.admin) {
147
+ return $tr("ui.user-organisation.admin", "Administrator");
148
+ }
149
+ return props.roleLabel;
150
+ });
151
+
152
+ const imageSize = computed((): number => {
153
+ return isMobileSized.value ? 90 : 100;
154
+ });
155
+
156
+ const infoWidth = computed((): number => {
157
+ let width = isMobileSized.value ? 288 : 304;
158
+ if (props.imageId) {
159
+ width -= imageSize.value;
160
+ }
161
+ return width;
162
+ });
163
+
164
+ return {
165
+ imageSize,
166
+ infoWidth,
167
+ ColorEnum,
168
+ roleLabel,
169
+ roleIcon,
170
+ title
171
+ };
172
+ }
173
+ });
174
+ </script>
@@ -101,17 +101,17 @@ export const useColors = () => {
101
101
  }
102
102
  };
103
103
 
104
- const getGradients = (colors: ColorBase | ColorBase[]): ColorVariations => {
104
+ const getGradients = (colors: ColorBase | ColorBase[], rotation: number = 90): ColorVariations => {
105
105
  const variations = Array.isArray(colors) ? colors.map(getColors) : [getColors(colors)];
106
106
 
107
107
  if (variations.length === 1) {
108
108
  return variations[0];
109
109
  }
110
110
  return {
111
- light: `linear-gradient(90deg, ${variations.map(v => v.light).join(", ")})`,
112
- soft: `linear-gradient(90deg, ${variations.map(v => v.soft).join(", ")})`,
113
- base: `linear-gradient(90deg, ${variations.map(v => v.base).join(", ")})`,
114
- dark: `linear-gradient(90deg, ${variations.map(v => v.dark).join(", ")})`,
111
+ light: `linear-gradient(${rotation}deg, ${variations.map(v => v.light).join(", ")})`,
112
+ soft: `linear-gradient(${rotation}deg, ${variations.map(v => v.soft).join(", ")})`,
113
+ base: `linear-gradient(${rotation}deg, ${variations.map(v => v.base).join(", ")})`,
114
+ dark: `linear-gradient(${rotation}deg, ${variations.map(v => v.dark).join(", ")})`,
115
115
  };
116
116
  }
117
117
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dative-gpi/foundation-shared-components",
3
3
  "sideEffects": false,
4
- "version": "0.0.69",
4
+ "version": "0.0.71",
5
5
  "description": "",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -10,8 +10,8 @@
10
10
  "author": "",
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
- "@dative-gpi/foundation-shared-domain": "0.0.69",
14
- "@dative-gpi/foundation-shared-services": "0.0.69",
13
+ "@dative-gpi/foundation-shared-domain": "0.0.71",
14
+ "@dative-gpi/foundation-shared-services": "0.0.71",
15
15
  "@fontsource/montserrat": "^5.0.16",
16
16
  "@lexical/clipboard": "^0.12.5",
17
17
  "@lexical/history": "^0.12.5",
@@ -32,5 +32,5 @@
32
32
  "sass": "^1.69.5",
33
33
  "sass-loader": "^13.3.2"
34
34
  },
35
- "gitHead": "f42750502e3f9499a2df817d41a2e89847c83cdd"
35
+ "gitHead": "72097470e9163b0da5e7ab5d67496ac5c403f918"
36
36
  }
@@ -23,6 +23,14 @@
23
23
  .v-breadcrumbs {
24
24
  padding: 0 !important;
25
25
  gap: 8px !important;
26
+
27
+ @include web {
28
+ height: 24px;
29
+ }
30
+
31
+ @include mobile {
32
+ height: 20px;
33
+ }
26
34
  }
27
35
 
28
36
  .v-breadcrumbs-item {
@@ -6,7 +6,6 @@
6
6
  width: var(--fs-card-width);
7
7
  display: flex;
8
8
 
9
- background-color: var(--fs-card-background-color);
10
9
  border-color: var(--fs-card-border-color);
11
10
  color: var(--fs-card-color);
12
11
 
@@ -15,4 +14,12 @@
15
14
  border-radius: 4px;
16
15
  margin: 4px;
17
16
  }
17
+
18
+ &-background {
19
+ background-color: var(--fs-card-background-color);
20
+ }
21
+
22
+ &-gradient {
23
+ background: var(--fs-card-background-color);
24
+ }
18
25
  }
@@ -1,27 +1,3 @@
1
- .fs-icon-s {
2
- @include web {
3
- font-size: 16px !important;
4
- }
5
- @include mobile {
6
- font-size: 14px !important;
7
- }
8
- }
9
-
10
- .fs-icon-m {
11
- @include web {
12
- font-size: 20px !important;
13
- }
14
- @include mobile {
15
- font-size: 16px !important;
16
- }
17
- }
18
-
19
- .fs-icon-l {
20
- @include web {
21
- font-size: 24px !important;
22
- }
23
-
24
- @include mobile {
25
- font-size: 20px !important;
26
- }
1
+ .fs-icon {
2
+ font-size: var(--fs-icon-font-size) !important;
27
3
  }