@flyanra/vue-core 0.3.0 → 0.4.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 (139) hide show
  1. package/README.md +176 -176
  2. package/package.json +137 -128
  3. package/src/components/basic/fly-button/FlyButton.element.scss +3 -3
  4. package/src/components/basic/fly-button/FlyButton.mixins.scss +58 -58
  5. package/src/components/basic/fly-button/FlyButton.types.ts +29 -29
  6. package/src/components/basic/fly-button/FlyButton.vue +180 -180
  7. package/src/components/basic/fly-button/index.ts +11 -11
  8. package/src/components/basic/index.ts +2 -2
  9. package/src/components/basic/typography/FlyCollapseTitleRenderer.vue +46 -0
  10. package/src/components/feedback/index.ts +2 -2
  11. package/src/components/feedback/tooltip/FlyInfoTooltip.vue +48 -0
  12. package/src/components/feedback/tooltip/FlyTooltip.element.scss +4 -4
  13. package/src/components/feedback/tooltip/FlyTooltip.types.ts +5 -5
  14. package/src/components/feedback/tooltip/FlyTooltip.vue +60 -59
  15. package/src/components/feedback/tooltip/index.ts +6 -6
  16. package/src/components/form/form.utils.ts +57 -0
  17. package/src/components/form/index.ts +0 -0
  18. package/src/components/form/input-renderers/boolean/FlyBoolean.scss +1 -0
  19. package/src/components/form/input-renderers/boolean/FlyBoolean.types.ts +16 -0
  20. package/src/components/form/input-renderers/boolean/FlyBoolean.vue +35 -0
  21. package/src/components/form/input-renderers/date-time/FlyDateTime.scss +1 -0
  22. package/src/components/form/input-renderers/date-time/FlyDateTime.types.ts +21 -0
  23. package/src/components/form/input-renderers/date-time/FlyDateTime.vue +85 -0
  24. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.scss +4 -0
  25. package/src/components/form/input-renderers/form-item-renderer/FlyFormItemRenderer.vue +48 -0
  26. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.types.ts +3 -0
  27. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.utils.ts +246 -0
  28. package/src/components/form/input-renderers/form-schema-renderer/FlyFormSchemaRenderer.vue +75 -0
  29. package/src/components/form/input-renderers/form-schema-renderer/UseFormSchemaRenderer.ts +97 -0
  30. package/src/components/form/input-renderers/form-schema.types.ts +95 -0
  31. package/src/components/form/input-renderers/input-renderer/FlyInputRenderer.vue +49 -0
  32. package/src/components/form/input-renderers/input-renderer.types.ts +49 -0
  33. package/src/components/form/input-renderers/input-renderer.utils.ts +18 -0
  34. package/src/components/form/input-renderers/number/FlyNumber.scss +1 -0
  35. package/src/components/form/input-renderers/number/FlyNumber.types.ts +13 -0
  36. package/src/components/form/input-renderers/number/FlyNumber.utils.ts +6 -0
  37. package/src/components/form/input-renderers/number/FlyNumber.vue +48 -0
  38. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.types.ts +15 -0
  39. package/src/components/form/input-renderers/regional-tenant-form-renderer/FlyRegionalTenantFormRenderer.vue +99 -0
  40. package/src/components/form/input-renderers/select/FlySelect.scss +9 -0
  41. package/src/components/form/input-renderers/select/FlySelect.types.ts +25 -0
  42. package/src/components/form/input-renderers/select/FlySelect.utils.ts +37 -0
  43. package/src/components/form/input-renderers/select/FlySelect.vue +48 -0
  44. package/src/components/form/input-renderers/text/FlyText.scss +1 -0
  45. package/src/components/form/input-renderers/text/FlyText.types.ts +20 -0
  46. package/src/components/form/input-renderers/text/FlyText.vue +56 -0
  47. package/src/components/form/input-renderers/value-unit/FlyValueUnit.scss +2 -0
  48. package/src/components/form/input-renderers/value-unit/FlyValueUnit.types.ts +28 -0
  49. package/src/components/form/input-renderers/value-unit/FlyValueUnit.vue +101 -0
  50. package/src/components/form/input-validators.ts +121 -0
  51. package/src/components/general/fly-icon/FlyIcon.types.ts +12 -12
  52. package/src/components/general/fly-icon/FlyIcon.vue +24 -24
  53. package/src/components/general/fly-icon/index.ts +6 -6
  54. package/src/components/general/index.ts +2 -2
  55. package/src/components/index.ts +5 -11
  56. package/src/components/navigation/fly-steps/FlySteps.element.scss +100 -100
  57. package/src/components/navigation/fly-steps/FlySteps.types.ts +10 -10
  58. package/src/components/navigation/fly-steps/FlySteps.vue +30 -30
  59. package/src/components/navigation/fly-steps/index.ts +6 -6
  60. package/src/components/navigation/index.ts +2 -2
  61. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.element.scss +2 -2
  62. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.ts +8 -8
  63. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.vue +46 -46
  64. package/src/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue +55 -55
  65. package/src/components/navigation/menu/fly-mini-sidebar/index.ts +6 -6
  66. package/src/components/navigation/menu/fly-sidebar/FlySidebar.element.scss +9 -9
  67. package/src/components/navigation/menu/fly-sidebar/FlySidebar.types.ts +36 -36
  68. package/src/components/navigation/menu/fly-sidebar/FlySidebar.vue +150 -150
  69. package/src/components/navigation/menu/fly-sidebar/FlySidebarNode.vue +47 -47
  70. package/src/components/navigation/menu/fly-sidebar/index.ts +12 -12
  71. package/src/components/navigation/menu/index.ts +5 -5
  72. package/src/index.ts +1 -1
  73. package/src/styles/_scss-tokens.scss +76 -76
  74. package/src/styles/core/animations.scss +40 -40
  75. package/src/styles/core/index.scss +36 -36
  76. package/src/styles/core/scrollbar.scss +36 -36
  77. package/src/styles/core/typography-utils.scss +9 -9
  78. package/src/styles/element/common.scss +56 -56
  79. package/src/styles/element/dark.scss +38 -38
  80. package/src/styles/element/mixins/collapse.scss +61 -61
  81. package/src/styles/element/mixins/dialog.scss +101 -101
  82. package/src/styles/element/overrides/alerts.scss +28 -28
  83. package/src/styles/element/overrides/badge.scss +6 -6
  84. package/src/styles/element/overrides/cascader.scss +2 -2
  85. package/src/styles/element/overrides/collapse.scss +2 -2
  86. package/src/styles/element/overrides/date-time.scss +11 -0
  87. package/src/styles/element/overrides/dialog.scss +2 -2
  88. package/src/styles/element/overrides/dropdown.scss +11 -11
  89. package/src/styles/element/overrides/form.scss +107 -107
  90. package/src/styles/element/overrides/message.scss +39 -39
  91. package/src/styles/element/overrides/notification.scss +46 -46
  92. package/src/styles/element/overrides/segmented.scss +17 -17
  93. package/src/styles/element/overrides/table.scss +2 -2
  94. package/src/styles/element/overrides/tag.scss +19 -19
  95. package/src/styles/index.d.ts +1 -1
  96. package/src/styles/index.scss +5 -5
  97. package/src/styles/mixins/shadows.scss +15 -15
  98. package/src/styles/tokens.scss +84 -83
  99. package/dist/types/components/AppButton/AppButton.types.d.ts +0 -8
  100. package/dist/types/components/AppButton/AppButton.vue.d.ts +0 -20
  101. package/dist/types/components/AppButton/index.d.ts +0 -4
  102. package/dist/types/components/AppCard/AppCard.types.d.ts +0 -5
  103. package/dist/types/components/AppCard/AppCard.vue.d.ts +0 -17
  104. package/dist/types/components/AppCard/index.d.ts +0 -4
  105. package/dist/types/components/basic/fly-button/FlyButton.types.d.ts +0 -25
  106. package/dist/types/components/basic/fly-button/FlyButton.vue.d.ts +0 -26
  107. package/dist/types/components/basic/fly-button/index.d.ts +0 -4
  108. package/dist/types/components/basic/index.d.ts +0 -2
  109. package/dist/types/components/feedback/index.d.ts +0 -2
  110. package/dist/types/components/feedback/tooltip/FlyTooltip.types.d.ts +0 -4
  111. package/dist/types/components/feedback/tooltip/FlyTooltip.vue.d.ts +0 -16
  112. package/dist/types/components/feedback/tooltip/index.d.ts +0 -4
  113. package/dist/types/components/general/fly-icon/FlyIcon.types.d.ts +0 -7
  114. package/dist/types/components/general/fly-icon/FlyIcon.vue.d.ts +0 -6
  115. package/dist/types/components/general/fly-icon/index.d.ts +0 -4
  116. package/dist/types/components/general/index.d.ts +0 -2
  117. package/dist/types/components/index.d.ts +0 -8
  118. package/dist/types/components/navigation/fly-steps/FlySteps.types.d.ts +0 -9
  119. package/dist/types/components/navigation/fly-steps/FlySteps.vue.d.ts +0 -9
  120. package/dist/types/components/navigation/fly-steps/index.d.ts +0 -4
  121. package/dist/types/components/navigation/index.d.ts +0 -2
  122. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.types.d.ts +0 -7
  123. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebar.vue.d.ts +0 -8
  124. package/dist/types/components/navigation/menu/fly-mini-sidebar/FlyMiniSidebarItem.vue.d.ts +0 -7
  125. package/dist/types/components/navigation/menu/fly-mini-sidebar/index.d.ts +0 -4
  126. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.types.d.ts +0 -29
  127. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebar.vue.d.ts +0 -8
  128. package/dist/types/components/navigation/menu/fly-sidebar/FlySidebarNode.vue.d.ts +0 -7
  129. package/dist/types/components/navigation/menu/fly-sidebar/index.d.ts +0 -4
  130. package/dist/types/components/navigation/menu/index.d.ts +0 -4
  131. package/dist/types/index.d.ts +0 -1
  132. package/dist/types/types/index.d.ts +0 -1
  133. package/src/components/AppButton/AppButton.element.scss +0 -2
  134. package/src/components/AppButton/AppButton.types.ts +0 -10
  135. package/src/components/AppButton/AppButton.vue +0 -65
  136. package/src/components/AppButton/index.ts +0 -6
  137. package/src/components/AppCard/AppCard.types.ts +0 -5
  138. package/src/components/AppCard/AppCard.vue +0 -58
  139. package/src/components/AppCard/index.ts +0 -6
@@ -1,100 +1,100 @@
1
- @use 'element-plus/theme-chalk/src/steps.scss' as *;
2
- @use 'element-plus/theme-chalk/src/step.scss' as *;
3
-
4
- .el-steps {
5
- &.el-steps--horizontal {
6
- .el-step__head {
7
- .el-step__line {
8
- height: 1px;
9
- top: 15px;
10
- }
11
-
12
- .el-step__icon {
13
- width: 30px;
14
- height: 30px;
15
- }
16
-
17
- &.is-process {
18
- border-color: var(--primary);
19
-
20
- .el-step__icon {
21
- &.is-text {
22
- background-color: var(--anra-primary);
23
- color: var(--anra-black);
24
- }
25
- }
26
- }
27
-
28
- &.is-success {
29
- border-color: var(--anra-primary-accent);
30
-
31
- .el-step__icon {
32
- &.is-text {
33
- background-color: var(--anra-primary-accent);
34
- color: var(--anra-black);
35
- }
36
- }
37
- }
38
- }
39
-
40
- .el-step__main {
41
- .el-step__title {
42
- font-size: 13px;
43
- line-height: normal;
44
- padding-top: 0.25rem;
45
-
46
- .clickable {
47
- cursor: pointer;
48
- text-decoration: underline;
49
- border-bottom: 1px solid transparent;
50
-
51
- &:hover {
52
- color: var(--anra-primary);
53
- border-color: transparent;
54
- }
55
- }
56
-
57
- &.is-process,
58
- &.is-success {
59
- color: var(--default-text-color);
60
- }
61
-
62
- &.is-process {
63
- text-decoration: none;
64
- font-weight: 500;
65
- }
66
- }
67
- }
68
- }
69
-
70
- .el-step {
71
- &.is-center {
72
- &:first-child {
73
- .el-step__head {
74
- text-align: start;
75
- .el-step__line {
76
- inset-inline-start: 0;
77
- }
78
- }
79
- .el-step__main {
80
- text-align: start;
81
- }
82
- }
83
- &:last-child {
84
- .el-step__head {
85
- text-align: end;
86
- }
87
- .el-step__main {
88
- text-align: end;
89
- }
90
- }
91
- &:nth-last-child(2) {
92
- .el-step__head {
93
- .el-step__line {
94
- inset-inline-end: -100%;
95
- }
96
- }
97
- }
98
- }
99
- }
100
- }
1
+ @use 'element-plus/theme-chalk/src/steps.scss' as *;
2
+ @use 'element-plus/theme-chalk/src/step.scss' as *;
3
+
4
+ .el-steps {
5
+ &.el-steps--horizontal {
6
+ .el-step__head {
7
+ .el-step__line {
8
+ height: 1px;
9
+ top: 15px;
10
+ }
11
+
12
+ .el-step__icon {
13
+ width: 30px;
14
+ height: 30px;
15
+ }
16
+
17
+ &.is-process {
18
+ border-color: var(--primary);
19
+
20
+ .el-step__icon {
21
+ &.is-text {
22
+ background-color: var(--anra-primary);
23
+ color: var(--anra-black);
24
+ }
25
+ }
26
+ }
27
+
28
+ &.is-success {
29
+ border-color: var(--anra-primary-accent);
30
+
31
+ .el-step__icon {
32
+ &.is-text {
33
+ background-color: var(--anra-primary-accent);
34
+ color: var(--anra-black);
35
+ }
36
+ }
37
+ }
38
+ }
39
+
40
+ .el-step__main {
41
+ .el-step__title {
42
+ font-size: 13px;
43
+ line-height: normal;
44
+ padding-top: 0.25rem;
45
+
46
+ .clickable {
47
+ cursor: pointer;
48
+ text-decoration: underline;
49
+ border-bottom: 1px solid transparent;
50
+
51
+ &:hover {
52
+ color: var(--anra-primary);
53
+ border-color: transparent;
54
+ }
55
+ }
56
+
57
+ &.is-process,
58
+ &.is-success {
59
+ color: var(--default-text-color);
60
+ }
61
+
62
+ &.is-process {
63
+ text-decoration: none;
64
+ font-weight: 500;
65
+ }
66
+ }
67
+ }
68
+ }
69
+
70
+ .el-step {
71
+ &.is-center {
72
+ &:first-child {
73
+ .el-step__head {
74
+ text-align: start;
75
+ .el-step__line {
76
+ inset-inline-start: 0;
77
+ }
78
+ }
79
+ .el-step__main {
80
+ text-align: start;
81
+ }
82
+ }
83
+ &:last-child {
84
+ .el-step__head {
85
+ text-align: end;
86
+ }
87
+ .el-step__main {
88
+ text-align: end;
89
+ }
90
+ }
91
+ &:nth-last-child(2) {
92
+ .el-step__head {
93
+ .el-step__line {
94
+ inset-inline-end: -100%;
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ }
@@ -1,10 +1,10 @@
1
- export type T_FlyStepItem = {
2
- label: string
3
- id: number
4
- clickable?: boolean
5
- }
6
-
7
- export type T_FlyStepProps = {
8
- steps: T_FlyStepItem[]
9
- activeIndex: number
10
- }
1
+ export type T_FlyStepItem = {
2
+ label: string
3
+ id: number
4
+ clickable?: boolean
5
+ }
6
+
7
+ export type T_FlyStepProps = {
8
+ steps: T_FlyStepItem[]
9
+ activeIndex: number
10
+ }
@@ -1,30 +1,30 @@
1
- <template>
2
- <div class="anra-steps">
3
- <el-steps :active="activeIndex" align-center finish-status="success">
4
- <el-step v-for="step in steps" :key="step.id" :title="step.label">
5
- <template #title>
6
- <div
7
- :role="step.clickable ? 'button' : ''"
8
- class="tw-text-sm tw-leading-normal tw-pt-px"
9
- :class="step.clickable ? 'clickable' : ''"
10
- @click="step.clickable ? emit('change-step', step.id) : null"
11
- >
12
- {{ step.label }}
13
- </div>
14
- </template>
15
- </el-step>
16
- </el-steps>
17
- </div>
18
- </template>
19
-
20
- <script setup lang="ts">
21
- import { ElStep, ElSteps } from 'element-plus'
22
-
23
- import './FlySteps.element.scss'
24
- import type { T_FlyStepProps } from './FlySteps.types'
25
-
26
- const emit = defineEmits<{
27
- (e: 'change-step', data: number): void
28
- }>()
29
- defineProps<T_FlyStepProps>()
30
- </script>
1
+ <template>
2
+ <div class="anra-steps">
3
+ <el-steps :active="activeIndex" align-center finish-status="success">
4
+ <el-step v-for="step in steps" :key="step.id" :title="step.label">
5
+ <template #title>
6
+ <div
7
+ :role="step.clickable ? 'button' : ''"
8
+ class="tw-text-sm tw-leading-normal tw-pt-px"
9
+ :class="step.clickable ? 'clickable' : ''"
10
+ @click="step.clickable ? emit('change-step', step.id) : null"
11
+ >
12
+ {{ step.label }}
13
+ </div>
14
+ </template>
15
+ </el-step>
16
+ </el-steps>
17
+ </div>
18
+ </template>
19
+
20
+ <script setup lang="ts">
21
+ import { ElStep, ElSteps } from 'element-plus'
22
+
23
+ import './FlySteps.element.scss'
24
+ import type { T_FlyStepProps } from './FlySteps.types'
25
+
26
+ const emit = defineEmits<{
27
+ (e: 'change-step', data: number): void
28
+ }>()
29
+ defineProps<T_FlyStepProps>()
30
+ </script>
@@ -1,6 +1,6 @@
1
- import FlySteps from './FlySteps.vue'
2
-
3
- export default FlySteps
4
- export { FlySteps }
5
-
6
- export type { T_FlyStepProps, T_FlyStepItem } from './FlySteps.types'
1
+ import FlySteps from './FlySteps.vue'
2
+
3
+ export default FlySteps
4
+ export { FlySteps }
5
+
6
+ export type { T_FlyStepProps, T_FlyStepItem } from './FlySteps.types'
@@ -1,2 +1,2 @@
1
- export * from './menu'
2
- export * from './fly-steps'
1
+ export * from './menu'
2
+ export * from './fly-steps'
@@ -1,2 +1,2 @@
1
- @use '../../../../styles/element/common.scss' as *;
2
- @use 'element-plus/theme-chalk/src/scrollbar.scss' as *;
1
+ @use '../../../../styles/element/common.scss' as *;
2
+ @use 'element-plus/theme-chalk/src/scrollbar.scss' as *;
@@ -1,8 +1,8 @@
1
- import type { T_FlyIconProps } from '../../../general/fly-icon'
2
-
3
- export type T_FlyMiniSidebarItem = {
4
- key: string | number
5
- label: string
6
- path: string
7
- icon: T_FlyIconProps
8
- }
1
+ import type { T_FlyIconProps } from '../../../general/fly-icon'
2
+
3
+ export type T_FlyMiniSidebarItem = {
4
+ key: string | number
5
+ label: string
6
+ path: string
7
+ icon: T_FlyIconProps
8
+ }
@@ -1,46 +1,46 @@
1
- <template>
2
- <aside class="anra-mini-sidebar">
3
- <el-scrollbar>
4
- <div class="anra-mini-sidebar__menu">
5
- <FlyMiniSidebarItem v-for="item in menu" :key="item.key" :menu="item" />
6
- </div>
7
- </el-scrollbar>
8
- </aside>
9
- </template>
10
-
11
- <script setup lang="ts">
12
- import { ElScrollbar } from 'element-plus'
13
-
14
- import './FlyMiniSidebar.element.scss'
15
- import type { T_FlyMiniSidebarItem } from './FlyMiniSidebar.types'
16
- import FlyMiniSidebarItem from './FlyMiniSidebarItem.vue'
17
-
18
- defineProps<{
19
- menu: T_FlyMiniSidebarItem[]
20
- }>()
21
- </script>
22
-
23
- <style lang="scss">
24
- .anra-mini-sidebar {
25
- background-color: var(--anra-bg-20);
26
- width: 5rem;
27
- border-inline-end: 1px solid var(--anra-border-color);
28
- flex-shrink: 0;
29
- height: 100%;
30
- padding-top: 0.5rem;
31
- padding-bottom: 0.5rem;
32
- overflow: hidden;
33
-
34
- &wrapper {
35
- flex-grow: 1;
36
- padding-top: 0.5rem;
37
- overflow-y: auto;
38
- }
39
-
40
- &__menu {
41
- display: flex;
42
- flex-direction: column;
43
- gap: 0.5rem;
44
- }
45
- }
46
- </style>
1
+ <template>
2
+ <aside class="anra-mini-sidebar">
3
+ <el-scrollbar>
4
+ <div class="anra-mini-sidebar__menu">
5
+ <FlyMiniSidebarItem v-for="item in menu" :key="item.key" :menu="item" />
6
+ </div>
7
+ </el-scrollbar>
8
+ </aside>
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import { ElScrollbar } from 'element-plus'
13
+
14
+ import './FlyMiniSidebar.element.scss'
15
+ import type { T_FlyMiniSidebarItem } from './FlyMiniSidebar.types'
16
+ import FlyMiniSidebarItem from './FlyMiniSidebarItem.vue'
17
+
18
+ defineProps<{
19
+ menu: T_FlyMiniSidebarItem[]
20
+ }>()
21
+ </script>
22
+
23
+ <style lang="scss">
24
+ .anra-mini-sidebar {
25
+ background-color: var(--anra-bg-20);
26
+ width: 5rem;
27
+ border-inline-end: 1px solid var(--anra-border-color);
28
+ flex-shrink: 0;
29
+ height: 100%;
30
+ padding-top: 0.5rem;
31
+ padding-bottom: 0.5rem;
32
+ overflow: hidden;
33
+
34
+ &wrapper {
35
+ flex-grow: 1;
36
+ padding-top: 0.5rem;
37
+ overflow-y: auto;
38
+ }
39
+
40
+ &__menu {
41
+ display: flex;
42
+ flex-direction: column;
43
+ gap: 0.5rem;
44
+ }
45
+ }
46
+ </style>
@@ -1,55 +1,55 @@
1
- <template>
2
- <router-link :to="menu.path" class="anra-sidebar-item" active-class="anra-sidebar-item--active">
3
- <span class="anra-sidebar-item__icon">
4
- <FlyIcon :icon="menu.icon.icon" :type="menu.icon.type" />
5
- </span>
6
-
7
- <span class="anra-sidebar-item__label">{{ menu.label }}</span>
8
- </router-link>
9
- </template>
10
-
11
- <script setup lang="ts">
12
- import FlyIcon from '../../../general/fly-icon/FlyIcon.vue'
13
-
14
- import type { T_FlyMiniSidebarItem } from './FlyMiniSidebar.types'
15
-
16
- defineProps<{
17
- menu: T_FlyMiniSidebarItem
18
- }>()
19
- </script>
20
-
21
- <style lang="scss">
22
- .anra-sidebar-item {
23
- text-align: center;
24
- padding-left: 0.5rem;
25
- padding-right: 0.5rem;
26
- padding-top: 0.25rem;
27
- padding-bottom: 0.25rem;
28
- transition: all 0.2s ease;
29
- color: var(--anra-text-subtle);
30
- display: flex;
31
- flex-direction: column;
32
-
33
- &--active {
34
- background-color: var(--anra-primary);
35
- color: var(--anra-text-on-primary);
36
- }
37
-
38
- &__icon {
39
- display: flex;
40
- justify-content: center;
41
- flex-shrink: 0;
42
-
43
- svg {
44
- width: 1em;
45
- }
46
- }
47
-
48
- &__label {
49
- display: inline-block;
50
- font-size: 0.75rem;
51
- letter-spacing: 0;
52
- line-height: 1.5;
53
- }
54
- }
55
- </style>
1
+ <template>
2
+ <router-link :to="menu.path" class="anra-sidebar-item" active-class="anra-sidebar-item--active">
3
+ <span class="anra-sidebar-item__icon">
4
+ <FlyIcon :icon="menu.icon.icon" :type="menu.icon.type" />
5
+ </span>
6
+
7
+ <span class="anra-sidebar-item__label">{{ menu.label }}</span>
8
+ </router-link>
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import FlyIcon from '../../../general/fly-icon/FlyIcon.vue'
13
+
14
+ import type { T_FlyMiniSidebarItem } from './FlyMiniSidebar.types'
15
+
16
+ defineProps<{
17
+ menu: T_FlyMiniSidebarItem
18
+ }>()
19
+ </script>
20
+
21
+ <style lang="scss">
22
+ .anra-sidebar-item {
23
+ text-align: center;
24
+ padding-left: 0.5rem;
25
+ padding-right: 0.5rem;
26
+ padding-top: 0.25rem;
27
+ padding-bottom: 0.25rem;
28
+ transition: all 0.2s ease;
29
+ color: var(--anra-text-subtle);
30
+ display: flex;
31
+ flex-direction: column;
32
+
33
+ &--active {
34
+ background-color: var(--anra-primary);
35
+ color: var(--anra-text-on-primary);
36
+ }
37
+
38
+ &__icon {
39
+ display: flex;
40
+ justify-content: center;
41
+ flex-shrink: 0;
42
+
43
+ svg {
44
+ width: 1em;
45
+ }
46
+ }
47
+
48
+ &__label {
49
+ display: inline-block;
50
+ font-size: 0.75rem;
51
+ letter-spacing: 0;
52
+ line-height: 1.5;
53
+ }
54
+ }
55
+ </style>
@@ -1,6 +1,6 @@
1
- import FlyMiniSidebar from './FlyMiniSidebar.vue'
2
-
3
- export default FlyMiniSidebar
4
- export { FlyMiniSidebar }
5
-
6
- export type { T_FlyMiniSidebarItem } from './FlyMiniSidebar.types'
1
+ import FlyMiniSidebar from './FlyMiniSidebar.vue'
2
+
3
+ export default FlyMiniSidebar
4
+ export { FlyMiniSidebar }
5
+
6
+ export type { T_FlyMiniSidebarItem } from './FlyMiniSidebar.types'
@@ -1,9 +1,9 @@
1
- @use '../../../../styles/element/common.scss' as *;
2
- @use 'element-plus/theme-chalk/src/menu.scss' as *;
3
- @use 'element-plus/theme-chalk/src/sub-menu.scss' as *;
4
- @use 'element-plus/theme-chalk/src/menu-item.scss' as *;
5
- @use 'element-plus/theme-chalk/src/menu-item-group.scss' as *;
6
- @use 'element-plus/theme-chalk/src/popper.scss' as *;
7
- @use 'element-plus/theme-chalk/src/tooltip.scss' as *;
8
- @use 'element-plus/theme-chalk/src/icon.scss' as *;
9
- @use 'element-plus/theme-chalk/src/scrollbar.scss' as *;
1
+ @use '../../../../styles/element/common.scss' as *;
2
+ @use 'element-plus/theme-chalk/src/menu.scss' as *;
3
+ @use 'element-plus/theme-chalk/src/sub-menu.scss' as *;
4
+ @use 'element-plus/theme-chalk/src/menu-item.scss' as *;
5
+ @use 'element-plus/theme-chalk/src/menu-item-group.scss' as *;
6
+ @use 'element-plus/theme-chalk/src/popper.scss' as *;
7
+ @use 'element-plus/theme-chalk/src/tooltip.scss' as *;
8
+ @use 'element-plus/theme-chalk/src/icon.scss' as *;
9
+ @use 'element-plus/theme-chalk/src/scrollbar.scss' as *;
@@ -1,36 +1,36 @@
1
- import type { T_FlyIconProps } from '../../../general/fly-icon/FlyIcon.types'
2
-
3
- export type T_FlySidebarBase = {
4
- index: string
5
- label?: string
6
- icon?: T_FlyIconProps
7
- disabled?: boolean
8
- }
9
-
10
- export type T_FlySidebarItem = T_FlySidebarBase & {
11
- type: 'item'
12
- }
13
-
14
- export type T_FlySidebarSubMenu = T_FlySidebarBase & {
15
- type: 'submenu'
16
- children: T_FlySidebarNode[]
17
- }
18
-
19
- export type T_FlySidebarGroup = {
20
- index: string
21
- type: 'group'
22
- label?: string
23
- children: T_FlySidebarItem[]
24
- }
25
-
26
- export type T_FlySidebarNode = T_FlySidebarItem | T_FlySidebarSubMenu | T_FlySidebarGroup
27
-
28
- export type T_FlySidebar = T_FlySidebarNode[]
29
-
30
- export type T_FlySidebarProps = {
31
- isCollapsed?: boolean
32
- router?: boolean
33
- defaultActive?: string
34
- menu: T_FlySidebarNode[]
35
- height?: string
36
- }
1
+ import type { T_FlyIconProps } from '../../../general/fly-icon/FlyIcon.types'
2
+
3
+ export type T_FlySidebarBase = {
4
+ index: string
5
+ label?: string
6
+ icon?: T_FlyIconProps
7
+ disabled?: boolean
8
+ }
9
+
10
+ export type T_FlySidebarItem = T_FlySidebarBase & {
11
+ type: 'item'
12
+ }
13
+
14
+ export type T_FlySidebarSubMenu = T_FlySidebarBase & {
15
+ type: 'submenu'
16
+ children: T_FlySidebarNode[]
17
+ }
18
+
19
+ export type T_FlySidebarGroup = {
20
+ index: string
21
+ type: 'group'
22
+ label?: string
23
+ children: T_FlySidebarItem[]
24
+ }
25
+
26
+ export type T_FlySidebarNode = T_FlySidebarItem | T_FlySidebarSubMenu | T_FlySidebarGroup
27
+
28
+ export type T_FlySidebar = T_FlySidebarNode[]
29
+
30
+ export type T_FlySidebarProps = {
31
+ isCollapsed?: boolean
32
+ router?: boolean
33
+ defaultActive?: string
34
+ menu: T_FlySidebarNode[]
35
+ height?: string
36
+ }