@flyanra/vue-core 1.2.1 → 1.3.1

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 (64) hide show
  1. package/dist/types/components/general/fly-icon-v2/index.d.ts +1 -1
  2. package/dist/types/composables/index.d.ts +4 -3
  3. package/dist/types/composables/useFeatureGate/index.d.ts +1 -0
  4. package/dist/types/composables/useFeatureGate/useFeatureGate.d.ts +6 -0
  5. package/dist/types/composables/useFormHider/index.d.ts +1 -0
  6. package/dist/types/composables/useFormHider/useFormHider.d.ts +8 -0
  7. package/dist/types/composables/useLocaleInjector/index.d.ts +2 -0
  8. package/dist/types/composables/useSidebarActiveIndex/index.d.ts +1 -0
  9. package/dist/types/composables/{useSidebarActiveIndex.d.ts → useSidebarActiveIndex/useSidebarActiveIndex.d.ts} +1 -1
  10. package/package.json +4 -3
  11. package/src/components/basic/fly-button/FlyButton.types.ts +28 -28
  12. package/src/components/basic/fly-button/FlyButton.vue +178 -178
  13. package/src/components/basic/typography/FlyCollapseTitleRenderer.vue +46 -46
  14. package/src/components/feedback/tooltip/FlyInfoTooltip.vue +49 -49
  15. package/src/components/feedback/tooltip/FlyTooltip.element.scss +4 -4
  16. package/src/components/feedback/tooltip/FlyTooltip.vue +60 -60
  17. package/src/components/form/form.utils.ts +72 -72
  18. package/src/components/form/index.ts +6 -6
  19. package/src/components/form/input-renderers/boolean/FlyBoolean.vue +48 -48
  20. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue +48 -48
  21. package/src/components/form/input-renderers/form-item-renderer/index.ts +4 -4
  22. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts +3 -3
  23. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.ts +221 -221
  24. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue +75 -75
  25. package/src/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.ts +97 -97
  26. package/src/components/form/input-renderers/input-renderer/FlyInputRenderer.vue +49 -49
  27. package/src/components/form/input-renderers/input-renderer/index.ts +4 -4
  28. package/src/components/form/input-renderers/input-renderer.utils.ts +18 -18
  29. package/src/components/form/input-renderers/number/FlyNumber.vue +64 -64
  30. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.ts +15 -15
  31. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue +99 -99
  32. package/src/components/form/input-renderers/select/FlySelect.scss +1 -1
  33. package/src/components/form/input-renderers/select/FlySelect.utils.ts +37 -37
  34. package/src/components/form/input-renderers/text/FlyText.vue +70 -70
  35. package/src/components/form/input-renderers/value-unit/FlyValueUnit.vue +102 -102
  36. package/src/components/form/input-validators.ts +99 -99
  37. package/src/components/general/fly-icon-v2/FlyIconV2.types.ts +6 -6
  38. package/src/components/general/fly-icon-v2/FlyIconV2.vue +17 -17
  39. package/src/components/general/fly-icon-v2/index.ts +6 -6
  40. package/src/components/general/index.ts +5 -5
  41. package/src/components/index.ts +7 -7
  42. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.ts +8 -8
  43. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue +55 -55
  44. package/src/components/navigation/menu/fly-sidebar/FlySidebar.types.ts +49 -49
  45. package/src/components/navigation/menu/fly-sidebar/FlySidebar.vue +146 -146
  46. package/src/components/navigation/menu/fly-sidebar/FlySidebarNode.vue +47 -47
  47. package/src/composables/index.ts +4 -4
  48. package/src/composables/useFeatureGate/index.ts +1 -0
  49. package/src/composables/useFeatureGate/useFeatureGate.ts +19 -0
  50. package/src/composables/useFormHider/index.ts +1 -0
  51. package/src/composables/useFormHider/useFormHider.ts +37 -0
  52. package/src/composables/{UseLocaleInjector.ts → useLocaleInjector/UseLocaleInjector.ts} +37 -37
  53. package/src/composables/useLocaleInjector/index.ts +2 -0
  54. package/src/composables/useSidebarActiveIndex/index.ts +1 -0
  55. package/src/composables/{useSidebarActiveIndex.ts → useSidebarActiveIndex/useSidebarActiveIndex.ts} +103 -103
  56. package/src/styles/element/mixins/collapse.scss +61 -61
  57. package/src/styles/element/overrides/form.scss +121 -121
  58. package/src/styles/element/overrides/message-box.scss +2 -2
  59. package/src/styles/element/overrides/radio.scss +2 -2
  60. package/src/styles/element/overrides/select.scss +9 -9
  61. package/src/utils/index.ts +2 -2
  62. package/src/utils/pure-functions.ts +15 -15
  63. package/src/utils/validators.ts +81 -81
  64. /package/dist/types/composables/{UseLocaleInjector.d.ts → useLocaleInjector/UseLocaleInjector.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
1
  import FlyIconV2 from './FlyIconV2.vue';
2
2
  export default FlyIconV2;
3
3
  export { FlyIconV2 };
4
- export type { T_FlyIconV2Props } from './FlyIconV2.types.ts';
4
+ export type { T_FlyIconV2Props } from './FlyIconV2.types';
@@ -1,3 +1,4 @@
1
- export { initLocaleInjector, UseLocaleInjector } from './UseLocaleInjector';
2
- export type { T_LocaleInjector } from './UseLocaleInjector';
3
- export { useSidebarActiveIndex } from './useSidebarActiveIndex';
1
+ export * from './useLocaleInjector';
2
+ export * from './useSidebarActiveIndex';
3
+ export * from './useFeatureGate';
4
+ export * from './useFormHider';
@@ -0,0 +1 @@
1
+ export * from './useFeatureGate';
@@ -0,0 +1,6 @@
1
+ import { type MaybeRefOrGetter } from 'vue';
2
+ import { type T_FeatureGatingConfig, type T_GateInput } from '@flyanra/js-utils/utils';
3
+ export declare function useFeatureGate(configRefs: MaybeRefOrGetter<(T_FeatureGatingConfig | undefined)[]>): {
4
+ allow: <TModuleKey extends string>(gate: T_GateInput<TModuleKey> | undefined) => import("vue").ComputedRef<boolean>;
5
+ allowNow: <TModuleKey extends string>(gate: T_GateInput<TModuleKey> | undefined) => boolean;
6
+ };
@@ -0,0 +1 @@
1
+ export * from './useFormHider';
@@ -0,0 +1,8 @@
1
+ import { type ComputedRef, type MaybeRefOrGetter } from 'vue';
2
+ import type { T_FeatureGatingConfig, T_FieldUiRule } from '@flyanra/js-utils/utils';
3
+ export declare function useFormHider<TConfig extends T_FeatureGatingConfig, TModuleKey extends string, TFormKey extends string, TFieldKey extends string>(configsRef: MaybeRefOrGetter<(TConfig | undefined)[]>, moduleKey: TModuleKey, formKey: TFormKey): {
4
+ resolved: ComputedRef<{
5
+ fieldRules: Map<TFieldKey, T_FieldUiRule>;
6
+ }>;
7
+ isFieldHidden: (key: TFieldKey) => ComputedRef<boolean>;
8
+ };
@@ -0,0 +1,2 @@
1
+ export { initLocaleInjector, UseLocaleInjector } from './UseLocaleInjector';
2
+ export type { T_LocaleInjector } from './UseLocaleInjector';
@@ -0,0 +1 @@
1
+ export { useSidebarActiveIndex } from './useSidebarActiveIndex';
@@ -1,5 +1,5 @@
1
1
  import { type MaybeRefOrGetter } from 'vue';
2
- import type { T_FlySidebar } from '../components';
2
+ import type { T_FlySidebar } from '../../components';
3
3
  /**
4
4
  * Minimal route shape required by `useSidebarActiveIndex`.
5
5
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyanra/vue-core",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "private": false,
5
5
  "description": "Source-distributed Vue component library for Vite and Nuxt consumers.",
6
6
  "sideEffects": false,
@@ -75,6 +75,7 @@
75
75
  "dev": "vite",
76
76
  "format": "prettier . --write",
77
77
  "format:check": "prettier . --check",
78
+ "preinstall": "npx only-allow npm",
78
79
  "lint": "eslint .",
79
80
  "lint:fix": "eslint . --fix",
80
81
  "pack": "npm pack",
@@ -97,7 +98,7 @@
97
98
  "devDependencies": {
98
99
  "@changesets/cli": "^2.30.0",
99
100
  "@eslint/js": "^10.0.1",
100
- "@flyanra/js-utils": "^1.5.0",
101
+ "@flyanra/js-utils": "^1.6.0",
101
102
  "@iconify-json/mdi": "^1.2.3",
102
103
  "@iconify-json/ri": "^1.2.10",
103
104
  "@jamescoyle/vue-icon": "^0.1.2",
@@ -153,6 +154,6 @@
153
154
  },
154
155
  "volta": {
155
156
  "node": "24.12.0",
156
- "yarn": "1.22.22"
157
+ "npm": "11.6.2"
157
158
  }
158
159
  }
@@ -1,28 +1,28 @@
1
- import type { ButtonType, ElButton, UseTooltipProps } from 'element-plus'
2
-
3
- import type { T_FlyIconV2Props } from '../../general'
4
-
5
- export type FlyButtonIconPosition = 'left' | 'right'
6
-
7
- export type FlyButtonSizes = InstanceType<typeof ElButton>['$props']['size']
8
- export type FlyButtonTypes = ButtonType
9
-
10
- export type FlyButtonProps = {
11
- active?: boolean
12
- appButtonClass?: string
13
- aspect1?: boolean
14
- /**
15
- * Test
16
- */
17
- clipRound?: boolean
18
- full?: boolean
19
- icon?: T_FlyIconV2Props['icon']
20
- iconPosition?: FlyButtonIconPosition
21
- imageUrl?: string
22
- label?: string
23
- size?: FlyButtonSizes
24
- stop?: boolean
25
- title?: string
26
- tooltip?: UseTooltipProps
27
- type?: FlyButtonTypes
28
- }
1
+ import type { ButtonType, ElButton, UseTooltipProps } from 'element-plus'
2
+
3
+ import type { T_FlyIconV2Props } from '../../general'
4
+
5
+ export type FlyButtonIconPosition = 'left' | 'right'
6
+
7
+ export type FlyButtonSizes = InstanceType<typeof ElButton>['$props']['size']
8
+ export type FlyButtonTypes = ButtonType
9
+
10
+ export type FlyButtonProps = {
11
+ active?: boolean
12
+ appButtonClass?: string
13
+ aspect1?: boolean
14
+ /**
15
+ * Test
16
+ */
17
+ clipRound?: boolean
18
+ full?: boolean
19
+ icon?: T_FlyIconV2Props['icon']
20
+ iconPosition?: FlyButtonIconPosition
21
+ imageUrl?: string
22
+ label?: string
23
+ size?: FlyButtonSizes
24
+ stop?: boolean
25
+ title?: string
26
+ tooltip?: UseTooltipProps
27
+ type?: FlyButtonTypes
28
+ }
@@ -1,178 +1,178 @@
1
- <template>
2
- <div class="fly-button" :class="[{ full }, appButtonClass]">
3
- <FlyTooltip
4
- :tooltip="{
5
- // effect: 'dark',
6
- content: title,
7
- placement: tooltip?.placement ?? 'bottom',
8
- disabled: !!tooltip?.disabled || isEmpty(title)
9
- }"
10
- >
11
- <el-button
12
- v-bind="additionalButtonBindingValues"
13
- :class="[{ active, 'aspect-1': aspect1 }]"
14
- @click="handleClick"
15
- >
16
- <FlyIconV2
17
- v-if="icon && resolvedIconPosition === 'left'"
18
- :icon="icon"
19
- :class="[{ 'left-icon': slots.default }]"
20
- />
21
-
22
- <slot></slot>
23
-
24
- <FlyIconV2
25
- v-if="icon && resolvedIconPosition === 'right'"
26
- :icon="icon"
27
- :class="[{ 'right-icon': slots.default }]"
28
- />
29
-
30
- <span v-if="imageUrl" class="btn-image" :class="[{ 'clip-round': clipRound }]">
31
- <img :src="imageUrl" />
32
- </span>
33
- </el-button>
34
- </FlyTooltip>
35
- </div>
36
- </template>
37
-
38
- <script lang="ts" setup>
39
- import { computed, useAttrs, useSlots } from 'vue'
40
-
41
- import { ElButton } from 'element-plus'
42
-
43
- import { isEmpty } from 'lodash-es'
44
-
45
- import FlyTooltip from '../../feedback/tooltip/FlyTooltip.vue'
46
- import FlyIconV2 from '../../general/fly-icon-v2/FlyIconV2.vue'
47
-
48
- import './FlyButton.element.scss'
49
- import type { FlyButtonIconPosition, FlyButtonProps } from './FlyButton.types'
50
-
51
- const attrs = useAttrs()
52
- const slots = useSlots()
53
- const emit = defineEmits(['click'])
54
-
55
- defineOptions({
56
- inheritAttrs: false
57
- })
58
-
59
- const props = withDefaults(defineProps<FlyButtonProps>(), {
60
- active: false,
61
- aspect1: false,
62
- clipRound: false,
63
- full: false,
64
- stop: false,
65
- tooltip: () => ({
66
- placement: 'bottom',
67
- disabled: false
68
- })
69
- })
70
-
71
- const additionalButtonBindingValues = computed(() => {
72
- const { type, size } = props
73
-
74
- return {
75
- ...attrs,
76
- size,
77
- type
78
- } as object
79
- })
80
-
81
- const resolvedIconPosition = computed<FlyButtonIconPosition>(() => props.iconPosition || 'left')
82
-
83
- function handleClick(e: MouseEvent) {
84
- /**
85
- * Stop the event propagation if the stop prop is set to true
86
- */
87
- if (props.stop) {
88
- e.stopPropagation()
89
- }
90
-
91
- emit('click', e)
92
- }
93
- </script>
94
-
95
- <style lang="scss" scoped>
96
- .fly-button {
97
- pointer-events: auto;
98
-
99
- &.full button {
100
- width: 100%;
101
- }
102
-
103
- :deep(.el-button) {
104
- &.active {
105
- /* 1px ring stile */
106
- box-shadow: 0 0 0 1px var(--anra-white);
107
- }
108
-
109
- .fly-icon {
110
- svg {
111
- width: calc(1em + 2px);
112
- }
113
- }
114
- }
115
-
116
- :deep(.fly-icon.left-icon) {
117
- padding-inline-end: 0.25rem;
118
- }
119
-
120
- :deep(.fly-icon.right-icon) {
121
- padding-inline-start: 0.25rem;
122
- }
123
-
124
- .btn-image {
125
- display: flex;
126
- align-items: center;
127
- justify-content: center;
128
- position: absolute;
129
- top: 0;
130
- left: 0;
131
- right: 0;
132
- bottom: 0;
133
-
134
- &.clip-round {
135
- -webkit-box-align: stretch;
136
- align-items: stretch;
137
- border-radius: 50%;
138
- box-sizing: content-box;
139
- display: flex;
140
- flex-direction: column;
141
- -webkit-box-pack: center;
142
- justify-content: center;
143
- overflow: hidden;
144
-
145
- img {
146
- border: 5px solid transparent;
147
- border-radius: 50%;
148
- display: flex;
149
- width: 100%;
150
- height: 100%;
151
- flex: 1 1 100%;
152
- }
153
- }
154
- }
155
- }
156
- </style>
157
-
158
- <style lang="scss">
159
- @use './FlyButton.mixins.scss' as button;
160
-
161
- .el-button-group {
162
- display: flex;
163
- }
164
-
165
- html.dark {
166
- button.el-button {
167
- @include button.fly-button-overrides-dark;
168
- }
169
- }
170
-
171
- button.el-button {
172
- position: relative;
173
- overflow: hidden;
174
- transition: 0.1s;
175
- text-wrap: balance;
176
- @include button.fly-button-overrides;
177
- }
178
- </style>
1
+ <template>
2
+ <div class="fly-button" :class="[{ full }, appButtonClass]">
3
+ <FlyTooltip
4
+ :tooltip="{
5
+ // effect: 'dark',
6
+ content: title,
7
+ placement: tooltip?.placement ?? 'bottom',
8
+ disabled: !!tooltip?.disabled || isEmpty(title)
9
+ }"
10
+ >
11
+ <el-button
12
+ v-bind="additionalButtonBindingValues"
13
+ :class="[{ active, 'aspect-1': aspect1 }]"
14
+ @click="handleClick"
15
+ >
16
+ <FlyIconV2
17
+ v-if="icon && resolvedIconPosition === 'left'"
18
+ :icon="icon"
19
+ :class="[{ 'left-icon': slots.default }]"
20
+ />
21
+
22
+ <slot></slot>
23
+
24
+ <FlyIconV2
25
+ v-if="icon && resolvedIconPosition === 'right'"
26
+ :icon="icon"
27
+ :class="[{ 'right-icon': slots.default }]"
28
+ />
29
+
30
+ <span v-if="imageUrl" class="btn-image" :class="[{ 'clip-round': clipRound }]">
31
+ <img :src="imageUrl" />
32
+ </span>
33
+ </el-button>
34
+ </FlyTooltip>
35
+ </div>
36
+ </template>
37
+
38
+ <script lang="ts" setup>
39
+ import { computed, useAttrs, useSlots } from 'vue'
40
+
41
+ import { ElButton } from 'element-plus'
42
+
43
+ import { isEmpty } from 'lodash-es'
44
+
45
+ import FlyTooltip from '../../feedback/tooltip/FlyTooltip.vue'
46
+ import FlyIconV2 from '../../general/fly-icon-v2/FlyIconV2.vue'
47
+
48
+ import './FlyButton.element.scss'
49
+ import type { FlyButtonIconPosition, FlyButtonProps } from './FlyButton.types'
50
+
51
+ const attrs = useAttrs()
52
+ const slots = useSlots()
53
+ const emit = defineEmits(['click'])
54
+
55
+ defineOptions({
56
+ inheritAttrs: false
57
+ })
58
+
59
+ const props = withDefaults(defineProps<FlyButtonProps>(), {
60
+ active: false,
61
+ aspect1: false,
62
+ clipRound: false,
63
+ full: false,
64
+ stop: false,
65
+ tooltip: () => ({
66
+ placement: 'bottom',
67
+ disabled: false
68
+ })
69
+ })
70
+
71
+ const additionalButtonBindingValues = computed(() => {
72
+ const { type, size } = props
73
+
74
+ return {
75
+ ...attrs,
76
+ size,
77
+ type
78
+ } as object
79
+ })
80
+
81
+ const resolvedIconPosition = computed<FlyButtonIconPosition>(() => props.iconPosition || 'left')
82
+
83
+ function handleClick(e: MouseEvent) {
84
+ /**
85
+ * Stop the event propagation if the stop prop is set to true
86
+ */
87
+ if (props.stop) {
88
+ e.stopPropagation()
89
+ }
90
+
91
+ emit('click', e)
92
+ }
93
+ </script>
94
+
95
+ <style lang="scss" scoped>
96
+ .fly-button {
97
+ pointer-events: auto;
98
+
99
+ &.full button {
100
+ width: 100%;
101
+ }
102
+
103
+ :deep(.el-button) {
104
+ &.active {
105
+ /* 1px ring stile */
106
+ box-shadow: 0 0 0 1px var(--anra-white);
107
+ }
108
+
109
+ .fly-icon {
110
+ svg {
111
+ width: calc(1em + 2px);
112
+ }
113
+ }
114
+ }
115
+
116
+ :deep(.fly-icon.left-icon) {
117
+ padding-inline-end: 0.25rem;
118
+ }
119
+
120
+ :deep(.fly-icon.right-icon) {
121
+ padding-inline-start: 0.25rem;
122
+ }
123
+
124
+ .btn-image {
125
+ display: flex;
126
+ align-items: center;
127
+ justify-content: center;
128
+ position: absolute;
129
+ top: 0;
130
+ left: 0;
131
+ right: 0;
132
+ bottom: 0;
133
+
134
+ &.clip-round {
135
+ -webkit-box-align: stretch;
136
+ align-items: stretch;
137
+ border-radius: 50%;
138
+ box-sizing: content-box;
139
+ display: flex;
140
+ flex-direction: column;
141
+ -webkit-box-pack: center;
142
+ justify-content: center;
143
+ overflow: hidden;
144
+
145
+ img {
146
+ border: 5px solid transparent;
147
+ border-radius: 50%;
148
+ display: flex;
149
+ width: 100%;
150
+ height: 100%;
151
+ flex: 1 1 100%;
152
+ }
153
+ }
154
+ }
155
+ }
156
+ </style>
157
+
158
+ <style lang="scss">
159
+ @use './FlyButton.mixins.scss' as button;
160
+
161
+ .el-button-group {
162
+ display: flex;
163
+ }
164
+
165
+ html.dark {
166
+ button.el-button {
167
+ @include button.fly-button-overrides-dark;
168
+ }
169
+ }
170
+
171
+ button.el-button {
172
+ position: relative;
173
+ overflow: hidden;
174
+ transition: 0.1s;
175
+ text-wrap: balance;
176
+ @include button.fly-button-overrides;
177
+ }
178
+ </style>
@@ -1,46 +1,46 @@
1
- <template>
2
- <div class="fly-collapse-title-renderer">
3
- <div class="fly-collapse-title-renderer__inner">
4
- <p class="fly-collapse-title-renderer__title">
5
- {{ t(title) }}
6
- </p>
7
-
8
- <slot></slot>
9
- </div>
10
- </div>
11
- </template>
12
-
13
- <script lang="ts" setup>
14
- import { UseLocaleInjector } from '../../../composables/UseLocaleInjector'
15
-
16
- defineProps<{
17
- title: string
18
- }>()
19
-
20
- const { t } = UseLocaleInjector()
21
- </script>
22
-
23
- <style lang="scss" scoped>
24
- .fly-collapse-title-renderer {
25
- display: flex;
26
- gap: 0.25rem;
27
- align-items: center;
28
- text-align: left;
29
- flex-grow: 1;
30
-
31
- &__inner {
32
- display: flex;
33
- padding-left: 0.5rem;
34
- padding-right: 0.5rem;
35
- flex-grow: 1;
36
- align-items: center;
37
- }
38
-
39
- &__title {
40
- font-size: 0.875rem;
41
- line-height: 1.25rem;
42
- font-weight: 500;
43
- flex-grow: 1;
44
- }
45
- }
46
- </style>
1
+ <template>
2
+ <div class="fly-collapse-title-renderer">
3
+ <div class="fly-collapse-title-renderer__inner">
4
+ <p class="fly-collapse-title-renderer__title">
5
+ {{ t(title) }}
6
+ </p>
7
+
8
+ <slot></slot>
9
+ </div>
10
+ </div>
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import { UseLocaleInjector } from '../../../composables/useLocaleInjector/UseLocaleInjector'
15
+
16
+ defineProps<{
17
+ title: string
18
+ }>()
19
+
20
+ const { t } = UseLocaleInjector()
21
+ </script>
22
+
23
+ <style lang="scss" scoped>
24
+ .fly-collapse-title-renderer {
25
+ display: flex;
26
+ gap: 0.25rem;
27
+ align-items: center;
28
+ text-align: left;
29
+ flex-grow: 1;
30
+
31
+ &__inner {
32
+ display: flex;
33
+ padding-left: 0.5rem;
34
+ padding-right: 0.5rem;
35
+ flex-grow: 1;
36
+ align-items: center;
37
+ }
38
+
39
+ &__title {
40
+ font-size: 0.875rem;
41
+ line-height: 1.25rem;
42
+ font-weight: 500;
43
+ flex-grow: 1;
44
+ }
45
+ }
46
+ </style>