dashboard-shell-shell 3.0.5-test.4 → 3.0.5-test.6

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 (198) hide show
  1. package/assets/brand/harvester/favicon.png +0 -0
  2. package/assets/brand/suse/favicon.png +0 -0
  3. package/assets/images/pl/half-logo.svg +23 -2
  4. package/assets/images/pl/harvester.png +0 -0
  5. package/assets/styles/app.scss +0 -4
  6. package/assets/styles/base/_basic.scss +2 -2
  7. package/assets/styles/base/_mixins.scss +1 -1
  8. package/assets/styles/base/_typography.scss +1 -2
  9. package/assets/styles/base/_variables.scss +4 -11
  10. package/assets/styles/global/_button.scss +27 -45
  11. package/assets/styles/global/_columns.scss +1 -3
  12. package/assets/styles/global/_form.scss +13 -45
  13. package/assets/styles/global/_labeled-input.scss +26 -54
  14. package/assets/styles/global/_layout.scss +3 -8
  15. package/assets/styles/global/_select.scss +17 -25
  16. package/assets/styles/global/_table.scss +1 -7
  17. package/assets/styles/global/_tooltip.scss +6 -54
  18. package/assets/styles/themes/_dark.scss +0 -3
  19. package/assets/styles/themes/_light.scss +42 -63
  20. package/assets/styles/vendor/vue-select.scss +9 -22
  21. package/assets/translations/en-us.yaml +4 -28
  22. package/assets/translations/zh-hans.yaml +189 -376
  23. package/components/ActionDropdown.vue +1 -2
  24. package/components/ActionMenu.vue +2 -2
  25. package/components/ActionMenuShell.vue +0 -2
  26. package/components/AppModal.vue +5 -46
  27. package/components/BrandImage.vue +0 -1
  28. package/components/ButtonDropdown.vue +4 -26
  29. package/components/ButtonMultiAction.vue +0 -1
  30. package/components/ClusterIconMenu.vue +1 -1
  31. package/components/CodeMirror.vue +6 -20
  32. package/components/ConsumptionGauge.vue +5 -24
  33. package/components/CruResource.vue +8 -9
  34. package/components/CruResourceFooter.vue +2 -2
  35. package/components/DashboardOptions.vue +17 -29
  36. package/components/ExplorerProjectsNamespaces.vue +5 -19
  37. package/components/GlobalRoleBindings.vue +48 -112
  38. package/components/GrafanaDashboard.vue +4 -4
  39. package/components/GrowlManager.vue +1 -3
  40. package/components/HardwareResourceGauge.vue +3 -39
  41. package/components/IndentedPanel.vue +10 -4
  42. package/components/InfoBox.vue +3 -3
  43. package/components/InputOrDisplay.vue +2 -28
  44. package/components/LabelValue.vue +1 -20
  45. package/components/ModalWithCard.vue +3 -12
  46. package/components/PodSecurityAdmission.vue +1 -1
  47. package/components/PromptModal.vue +1 -1
  48. package/components/PromptRemove.vue +11 -30
  49. package/components/ResourceDetail/Masthead/legacy.vue +38 -181
  50. package/components/ResourceDetail/legacy.vue +13 -29
  51. package/components/ResourceList/Masthead.vue +54 -226
  52. package/components/ResourceList/ResourceLoadingIndicator.vue +2 -5
  53. package/components/ResourceTable.vue +2 -24
  54. package/components/SideNav.vue +20 -74
  55. package/components/SortableTable/THead.vue +3 -33
  56. package/components/SortableTable/index.vue +464 -1017
  57. package/components/SortableTable/paging.js +16 -26
  58. package/components/SortableTable/selection.js +2 -2
  59. package/components/Tabbed/Tab.vue +3 -3
  60. package/components/Tabbed/index.vue +29 -47
  61. package/components/YamlEditor.vue +1 -0
  62. package/components/auth/Principal.vue +12 -36
  63. package/components/auth/RoleDetailEdit.vue +7 -58
  64. package/components/auth/SelectPrincipal.vue +0 -1
  65. package/components/form/ArrayList.vue +33 -41
  66. package/components/form/ArrayListGrouped.vue +2 -10
  67. package/components/form/ArrayListSelect.vue +1 -1
  68. package/components/form/BannerSettings.vue +59 -64
  69. package/components/form/ChangePassword.vue +4 -4
  70. package/components/form/ColorInput.vue +8 -32
  71. package/components/form/Footer.vue +8 -11
  72. package/components/form/InputWithSelect.vue +5 -8
  73. package/components/form/KeyValue.vue +7 -47
  74. package/components/form/LabeledSelect.vue +241 -212
  75. package/components/form/Labels.vue +3 -3
  76. package/components/form/MatchExpressions.vue +7 -24
  77. package/components/form/Members/ClusterPermissionsEditor.vue +2 -1
  78. package/components/form/Members/MembershipEditor.vue +1 -1
  79. package/components/form/NameNsDescription.vue +20 -59
  80. package/components/form/Password.vue +7 -16
  81. package/components/form/PodAffinity.vue +5 -4
  82. package/components/form/ResourceQuota/Namespace.vue +4 -4
  83. package/components/form/ResourceQuota/NamespaceRow.vue +17 -18
  84. package/components/form/ResourceQuota/Project.vue +4 -4
  85. package/components/form/ResourceQuota/ProjectRow.vue +6 -3
  86. package/components/form/Select.vue +2 -5
  87. package/components/form/SimpleSecretSelector.vue +9 -29
  88. package/components/form/UnitInput.vue +3 -8
  89. package/components/formatter/BadgeStateFormatter.vue +5 -8
  90. package/components/formatter/LiveDate.vue +3 -3
  91. package/components/nav/Favorite.vue +1 -5
  92. package/components/nav/Group.vue +99 -132
  93. package/components/nav/Header.vue +27 -124
  94. package/components/nav/HeaderPageActionMenu.vue +0 -1
  95. package/components/nav/NamespaceFilter.vue +15 -19
  96. package/components/nav/TopLevelMenu.vue +119 -182
  97. package/components/nav/Type.vue +41 -63
  98. package/composables/useClickOutside.ts +1 -1
  99. package/config/private-label.js +11 -15
  100. package/config/product/auth.js +7 -17
  101. package/config/product/settings.js +9 -19
  102. package/config/settings.ts +0 -28
  103. package/config/table-headers.js +2 -3
  104. package/dialog/ForceMachineRemoveDialog.vue +2 -2
  105. package/dialog/ScalePoolDownDialog.vue +2 -2
  106. package/edit/management.cattle.io.user.vue +4 -17
  107. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
  108. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +31 -31
  109. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +12 -36
  110. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  111. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  112. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
  113. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
  114. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
  115. package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
  116. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
  117. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
  118. package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
  119. package/edit/namespace.vue +2 -1
  120. package/edit/token.vue +12 -31
  121. package/edit/workload/index.vue +1 -1
  122. package/list/management.cattle.io.setting.vue +13 -22
  123. package/list/management.cattle.io.user.vue +3 -7
  124. package/list/namespace.vue +0 -3
  125. package/list/provisioning.cattle.io.cluster.vue +7 -6
  126. package/mixins/brand.js +0 -17
  127. package/package.json +1 -1
  128. package/pages/account/index.vue +12 -74
  129. package/pages/auth/login.vue +51 -214
  130. package/pages/auth/setup.vue +19 -142
  131. package/pages/c/_cluster/_product/namespaces.vue +4 -4
  132. package/pages/c/_cluster/auth/roles/index.vue +1 -19
  133. package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
  134. package/pages/c/_cluster/settings/banners.vue +102 -174
  135. package/pages/c/_cluster/settings/brand.vue +302 -350
  136. package/pages/c/_cluster/settings/performance.vue +38 -61
  137. package/pages/home.vue +30 -70
  138. package/pages/prefs.vue +25 -27
  139. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  140. package/public/index.html +4 -4
  141. package/rancher-components/BadgeState/BadgeState.vue +4 -6
  142. package/rancher-components/Banner/Banner.vue +8 -12
  143. package/rancher-components/Card/Card.vue +8 -7
  144. package/rancher-components/Form/Checkbox/Checkbox.vue +0 -4
  145. package/rancher-components/Form/LabeledInput/LabeledInput.vue +3 -42
  146. package/rancher-components/Form/Radio/RadioButton.vue +11 -35
  147. package/rancher-components/Form/Radio/RadioGroup.vue +5 -13
  148. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +3 -3
  149. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +0 -1
  150. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +4 -12
  151. package/rancher-components/RcDropdown/RcDropdown.vue +7 -35
  152. package/rancher-components/RcDropdown/RcDropdownItem.vue +2 -2
  153. package/rancher-components/RcDropdown/RcDropdownMenu.vue +4 -9
  154. package/rancher-components/RcDropdown/types.ts +0 -1
  155. package/rancher-components/StringList/StringList.vue +1 -1
  156. package/static/favicon.ico +0 -0
  157. package/static/favicon.png +0 -0
  158. package/static/loading-indicator.html +3 -3
  159. package/store/i18n.js +2 -2
  160. package/store/modal.ts +3 -3
  161. package/store/prefs.js +4 -11
  162. package/store/type-map.js +2 -32
  163. package/types/shell/index.d.ts +67 -74
  164. package/utils/error.js +8 -87
  165. package/utils/router.js +0 -21
  166. package/utils/select.js +3 -26
  167. package/utils/string.js +5 -8
  168. package/utils/title.ts +1 -1
  169. package/assets/icons/demo.css +0 -539
  170. package/assets/icons/demo.css:Zone.Identifier +0 -0
  171. package/assets/icons/demo_index.html +0 -1131
  172. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  173. package/assets/icons/iconfont.css +0 -216
  174. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  175. package/assets/icons/iconfont.js +0 -1
  176. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  177. package/assets/icons/iconfont.json +0 -324
  178. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  179. package/assets/icons/iconfont.ttf +0 -0
  180. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  181. package/assets/icons/iconfont.woff +0 -0
  182. package/assets/icons/iconfont.woff2 +0 -0
  183. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  184. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  185. package/assets/images/API.svg +0 -3
  186. package/assets/images/action.svg +0 -6
  187. package/assets/images/login/password.svg +0 -20
  188. package/assets/images/login/user.svg +0 -6
  189. package/assets/images/login-bg.png +0 -0
  190. package/assets/images/login-left.png +0 -0
  191. package/assets/images/login-logo.svg +0 -19
  192. package/assets/images/logo.png +0 -0
  193. package/assets/images/pl/logo.png +0 -0
  194. package/assets/images/promp-yellow.svg +0 -5
  195. package/assets/images/user.png +0 -0
  196. package/assets/styles/all.scss +0 -63
  197. package/components/DotState.vue +0 -84
  198. package/utils/errorTranslate.json +0 -1336
@@ -52,10 +52,7 @@ export default {
52
52
  helper.update(args);
53
53
  }
54
54
 
55
- const topLevelPermissions = sessionStorage.getItem('TOPLEVELPERMISSIONS') || ''
56
-
57
55
  return {
58
- topLevelPermissions,
59
56
  shown: false,
60
57
  displayVersion,
61
58
  fullVersion,
@@ -474,14 +471,12 @@ export default {
474
471
 
475
472
  <template>
476
473
  <div>
477
- <!-- ====================== 遮罩层(点击可关闭菜单) ====================== -->
474
+ <!-- Overlay -->
478
475
  <div
479
476
  v-if="shown"
480
477
  class="side-menu-glass"
481
478
  @click="hide()"
482
479
  />
483
-
484
- <!-- ====================== 菜单主容器(带淡入淡出过渡) ====================== -->
485
480
  <transition name="fade">
486
481
  <!-- Side menu -->
487
482
  <div
@@ -492,11 +487,8 @@ export default {
492
487
  role="navigation"
493
488
  :aria-label="t('nav.ariaLabel.topLevelMenu')"
494
489
  >
495
-
496
- <!-- ====================== 菜单头部(Logo + 菜单按钮) ====================== -->
490
+ <!-- Logo and name -->
497
491
  <div class="title">
498
-
499
- <!-- 菜单按钮(汉堡图标) -->
500
492
  <div
501
493
  data-testid="top-level-menu"
502
494
  :aria-label="t('nav.expandCollapseAppBar')"
@@ -507,8 +499,6 @@ export default {
507
499
  @keyup.space="toggle()"
508
500
  @click="toggle()"
509
501
  >
510
-
511
- <!-- 汉堡菜单SVG图标 -->
512
502
  <svg
513
503
  class="menu-icon"
514
504
  xmlns="http://www.w3.org/2000/svg"
@@ -521,22 +511,19 @@ export default {
521
511
  fill="none"
522
512
  /><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" /></svg>
523
513
  </div>
524
-
525
- <!-- 品牌Logo -->
526
- <div v-if="topLevelPermissions && topLevelPermissions === 'superadmin'" class="side-menu-logo">
514
+ <div class="side-menu-logo">
527
515
  <BrandImage
528
516
  data-testid="side-menu__brand-img"
529
517
  :alt="t('nav.alt.mainMenuRancherLogo')"
530
- file-name="logo.png"
518
+ file-name="rancher-logo.svg"
531
519
  />
532
520
  </div>
533
521
  </div>
534
522
 
535
- <!-- ====================== 菜单内容区 ====================== -->
523
+ <!-- Menu body -->
536
524
  <div class="body">
537
- <div v-if="topLevelPermissions && topLevelPermissions === 'superadmin'">
538
-
539
- <!-- 首页按钮 -->
525
+ <div>
526
+ <!-- Home button -->
540
527
  <div @click="hide()">
541
528
  <router-link
542
529
  class="option cluster selector home"
@@ -544,8 +531,6 @@ export default {
544
531
  role="link"
545
532
  :aria-label="t('nav.ariaLabel.homePage')"
546
533
  >
547
-
548
- <!-- 首页图标 -->
549
534
  <svg
550
535
  v-clean-tooltip="getTooltipConfig(t('nav.home'))"
551
536
  class="top-menu-icon"
@@ -562,14 +547,12 @@ export default {
562
547
  </div>
563
548
  </router-link>
564
549
  </div>
565
-
566
- <!-- 集群搜索框 -->
550
+ <!-- Search bar -->
567
551
  <div
568
552
  v-if="showClusterSearch"
569
553
  class="clusters-search"
570
554
  >
571
555
  <div class="clusters-search-count">
572
- <!-- 当前搜索到的集群数量 -->
573
556
  <span>{{ clusterFilterCount }}</span>
574
557
  {{ t('nav.search.clusters') }}
575
558
  <i
@@ -588,14 +571,10 @@ export default {
588
571
  :tabindex="!shown ? -1 : 0"
589
572
  :aria-label="t('nav.search.ariaLabel')"
590
573
  >
591
-
592
- <!-- 搜索图标 -->
593
574
  <i
594
575
  class="magnifier icon icon-search"
595
576
  :class="{ active: clusterFilter }"
596
577
  />
597
-
598
- <!-- 清空按钮 -->
599
578
  <i
600
579
  v-if="clusterFilter"
601
580
  class="icon icon-close"
@@ -605,11 +584,9 @@ export default {
605
584
  </div>
606
585
  </div>
607
586
 
608
- <!-- ====================== Harvester 相关功能区 ====================== -->
587
+ <!-- Harvester extras -->
609
588
  <template v-if="hciApps.length">
610
589
  <div class="category" />
611
-
612
- <!-- 跳转 Harvester Dashboard -->
613
590
  <div>
614
591
  <a
615
592
  v-if="isRancherInHarvester"
@@ -625,8 +602,6 @@ export default {
625
602
  </div>
626
603
  </a>
627
604
  </div>
628
-
629
- <!-- Harvester 应用列表 -->
630
605
  <div
631
606
  v-for="(a, i) in appBar.hciApps"
632
607
  :key="i"
@@ -649,14 +624,14 @@ export default {
649
624
  </div>
650
625
  </template>
651
626
 
652
- <!-- ====================== 集群列表 ====================== -->
653
- <template v-if="topLevelPermissions && topLevelPermissions === 'superadmin' && !!allClustersCount">
627
+ <!-- Cluster menu -->
628
+ <template v-if="!!allClustersCount">
654
629
  <div
655
630
  ref="clusterList"
656
631
  class="clusters"
657
632
  :style="pinnedClustersHeight"
658
633
  >
659
- <!-- 已固定集群 -->
634
+ <!-- Pinned Clusters -->
660
635
  <div
661
636
  v-if="showPinClusters && pinFiltered.length"
662
637
  class="clustersPinned"
@@ -667,13 +642,11 @@ export default {
667
642
  :data-testid="`pinned-ready-cluster-${index}`"
668
643
  @click="hide()"
669
644
  >
670
-
671
- <!-- 可用集群按钮 -->
672
- <span
645
+ <button
673
646
  v-if="c.ready"
674
647
  v-shortkey.push="{windows: ['alt'], mac: ['option']}"
675
648
  :data-testid="`pinned-menu-cluster-${ c.id }`"
676
- class="clusterBtn cluster selector option"
649
+ class="cluster selector option"
677
650
  :class="{'active-menu-link': c.isMenuActive }"
678
651
  :to="c.clusterRoute"
679
652
  role="button"
@@ -703,9 +676,7 @@ export default {
703
676
  :cluster="c"
704
677
  :tab-order="shown ? 0 : -1"
705
678
  />
706
- </span>
707
-
708
- <!-- 不可用集群 -->
679
+ </button>
709
680
  <span
710
681
  v-else
711
682
  class="option cluster selector disabled"
@@ -734,8 +705,6 @@ export default {
734
705
  />
735
706
  </span>
736
707
  </div>
737
-
738
- <!-- 分割线 -->
739
708
  <div
740
709
  v-if="clustersFiltered.length > 0"
741
710
  class="category-title"
@@ -744,7 +713,7 @@ export default {
744
713
  </div>
745
714
  </div>
746
715
 
747
- <!-- 搜索结果集群列表 -->
716
+ <!-- Clusters Search result -->
748
717
  <div class="clustersList">
749
718
  <div
750
719
  v-for="(c, index) in appBar.clustersFiltered"
@@ -752,13 +721,11 @@ export default {
752
721
  :data-testid="`top-level-menu-cluster-${index}`"
753
722
  @click="hide()"
754
723
  >
755
-
756
- <!-- 可用集群 -->
757
- <span
724
+ <button
758
725
  v-if="c.ready"
759
726
  v-shortkey.push="{windows: ['alt'], mac: ['option']}"
760
727
  :data-testid="`menu-cluster-${ c.id }`"
761
- class="cluster selector option clusterBtn"
728
+ class="cluster selector option"
762
729
  :class="{'active-menu-link': c.isMenuActive }"
763
730
  :to="c.clusterRoute"
764
731
  role="button"
@@ -789,9 +756,7 @@ export default {
789
756
  :tab-order="shown ? 0 : -1"
790
757
  :cluster="c"
791
758
  />
792
- </span>
793
-
794
- <!-- 不可用集群 -->
759
+ </button>
795
760
  <span
796
761
  v-else
797
762
  class="option cluster selector disabled"
@@ -823,7 +788,7 @@ export default {
823
788
  </div>
824
789
  </div>
825
790
 
826
- <!-- 无匹配集群提示 -->
791
+ <!-- No clusters message -->
827
792
  <div
828
793
  v-if="clustersFiltered.length === 0 && searchActive"
829
794
  data-testid="top-level-menu-no-results"
@@ -833,7 +798,7 @@ export default {
833
798
  </div>
834
799
  </div>
835
800
 
836
- <!-- 查看所有集群按钮 -->
801
+ <!-- See all clusters -->
837
802
  <router-link
838
803
  v-if="allClustersCount > maxClustersToShow"
839
804
  class="clusters-all"
@@ -852,129 +817,104 @@ export default {
852
817
  </router-link>
853
818
  </template>
854
819
 
855
- <!-- ====================== 多集群应用区 ====================== -->
856
- <div :style="!(topLevelPermissions && topLevelPermissions === 'superadmin') ? { placeContent: 'flex-start', display: 'flex', flexDirection: 'column' } : {}" class="category">
857
- <!-- 多集群应用 -->
820
+ <!-- MULTI CLUSTER APPS -->
821
+ <div class="category">
858
822
  <template v-if="multiClusterApps.length">
859
- <template v-if="topLevelPermissions && topLevelPermissions === 'superadmin'">
860
- <div
861
- class="category-title"
823
+ <div
824
+ class="category-title"
825
+ >
826
+ <hr role="none">
827
+ <span>
828
+ {{ t('nav.categories.multiCluster') }}
829
+ </span>
830
+ </div>
831
+ <div
832
+ v-for="(a, i) in appBar.multiClusterApps"
833
+ :key="i"
834
+ @click="hide()"
835
+ >
836
+ <router-link
837
+ class="option"
838
+ :class="{'active-menu-link': a.isMenuActive }"
839
+ :to="a.to"
840
+ role="link"
841
+ :aria-label="`${t('nav.ariaLabel.multiClusterApps')} ${ a.label }`"
862
842
  >
863
- <hr role="none">
864
- <span>
865
- {{ t('nav.categories.multiCluster') }}
866
- </span>
867
- </div>
868
- <template v-for="(a, i) in appBar.multiClusterApps" :key="i">
869
- <div
870
- v-if="a.value === 'harvesterManager'"
871
- @click="hide()"
872
- >
873
- <router-link
874
- class="option"
875
- :class="{'active-menu-link': a.isMenuActive }"
876
- :to="a.to"
877
- role="link"
878
- :aria-label="`${t('nav.ariaLabel.multiClusterApps')} ${ a.label }`"
879
- >
880
- <IconOrSvg
881
- v-clean-tooltip="getTooltipConfig(a.label)"
882
- class="app-icon"
883
- :icon="a.icon"
884
- :src="a.svg"
885
- />
886
- <span class="option-link">{{ a.label }}</span>
887
- </router-link>
888
- </div>
889
- </template>
890
- </template>
891
- <template v-else>
892
- <template v-for="(a, i) in appBar.multiClusterApps" :key="i">
893
- <div
894
- v-if="a.value === 'harvesterManager'"
895
- @click="hide()"
896
- >
897
- <router-link
898
- class="option"
899
- :class="{'active-menu-link': a.isMenuActive }"
900
- :to="a.to"
901
- role="link"
902
- :aria-label="`${t('nav.ariaLabel.multiClusterApps')} ${ a.label }`"
903
- >
904
- <IconOrSvg
905
- v-clean-tooltip="getTooltipConfig(a.label)"
906
- class="app-icon"
907
- :icon="a.icon"
908
- :src="a.svg"
909
- />
910
- <span class="option-link">{{ a.label }}</span>
911
- </router-link>
912
- </div>
913
- </template>
914
- </template>
843
+ <IconOrSvg
844
+ v-clean-tooltip="getTooltipConfig(a.label)"
845
+ class="app-icon"
846
+ :icon="a.icon"
847
+ :src="a.svg"
848
+ />
849
+ <span class="option-link">{{ a.label }}</span>
850
+ </router-link>
851
+ </div>
915
852
  </template>
916
853
 
917
- <!-- 配置类应用 -->
918
- <div>
919
- <template v-if="configurationApps.length">
920
- <template v-if="topLevelPermissions && topLevelPermissions === 'superadmin'">
921
- <div
922
- class="category-title"
923
- >
924
- <hr role="none">
925
- <span>
926
- {{ t('nav.categories.configuration') }}
927
- </span>
928
- </div>
929
- <div
930
- v-for="(a, i) in appBar.configurationApps"
931
- :key="i"
932
- @click="hide()"
933
- >
934
- <router-link
935
- class="option"
936
- :class="{'active-menu-link': a.isMenuActive }"
937
- :to="a.to"
938
- role="link"
939
- :aria-label="`${t('nav.ariaLabel.configurationApps')} ${ a.label }`"
940
- >
941
- <IconOrSvg
942
- v-clean-tooltip="getTooltipConfig(a.label)"
943
- class="app-icon"
944
- :icon="a.icon"
945
- :src="a.svg"
946
- />
947
- <div>{{ a.label }}</div>
948
- </router-link>
949
- </div>
950
- </template>
951
- <template v-else>
952
- <template v-for="(a, i) in appBar.configurationApps" :key="i">
953
- <div
954
- v-if="a.value === 'settings' || a.value === 'auth'"
955
- @click="hide()"
956
- >
957
- <router-link
958
- class="option"
959
- :class="{'active-menu-link': a.isMenuActive }"
960
- :to="a.to"
961
- role="link"
962
- :aria-label="`${t('nav.ariaLabel.configurationApps')} ${ a.label }`"
963
- >
964
- <IconOrSvg
965
- v-clean-tooltip="getTooltipConfig(a.label)"
966
- class="app-icon"
967
- :icon="a.icon"
968
- :src="a.svg"
969
- />
970
- <div>{{ a.label }}</div>
971
- </router-link>
972
- </div>
973
- </template>
974
- </template>
975
- <div style="height: 40px;"></div>
976
- </template>
977
- </div>
854
+ <!-- Configuration apps menu -->
855
+ <template v-if="configurationApps.length">
856
+ <div
857
+ class="category-title"
858
+ >
859
+ <hr role="none">
860
+ <span>
861
+ {{ t('nav.categories.configuration') }}
862
+ </span>
863
+ </div>
864
+ <div
865
+ v-for="(a, i) in appBar.configurationApps"
866
+ :key="i"
867
+ @click="hide()"
868
+ >
869
+ <router-link
870
+ class="option"
871
+ :class="{'active-menu-link': a.isMenuActive }"
872
+ :to="a.to"
873
+ role="link"
874
+ :aria-label="`${t('nav.ariaLabel.configurationApps')} ${ a.label }`"
875
+ >
876
+ <IconOrSvg
877
+ v-clean-tooltip="getTooltipConfig(a.label)"
878
+ class="app-icon"
879
+ :icon="a.icon"
880
+ :src="a.svg"
881
+ />
882
+ <div>{{ a.label }}</div>
883
+ </router-link>
884
+ </div>
885
+ </template>
886
+ </div>
887
+ </div>
888
+
889
+ <!-- Footer -->
890
+ <div
891
+ class="footer"
892
+ >
893
+ <div
894
+ v-if="canEditSettings"
895
+ class="support"
896
+ @click="hide()"
897
+ >
898
+ <router-link
899
+ :to="{name: 'support'}"
900
+ role="link"
901
+ :aria-label="t('nav.ariaLabel.support')"
902
+ >
903
+ {{ t('nav.support', {hasSupport}) }}
904
+ </router-link>
905
+ </div>
906
+ <div
907
+ class="version"
908
+ :class="{'version-small': largeAboutText}"
909
+ @click="hide()"
910
+ >
911
+ <router-link
912
+ :to="{ name: 'about' }"
913
+ role="link"
914
+ :aria-label="t('nav.ariaLabel.about')"
915
+ >
916
+ {{ aboutText }}
917
+ </router-link>
978
918
  </div>
979
919
  </div>
980
920
  </div>
@@ -1033,10 +973,6 @@ export default {
1033
973
  $option-padding-left: 14px;
1034
974
  $option-height: $icon-size + $option-padding + $option-padding;
1035
975
 
1036
- .clusterBtn {
1037
- background-color: var(--nav-icon-badge-bg);
1038
- }
1039
-
1040
976
  .side-menu {
1041
977
  .menu {
1042
978
  position: absolute;
@@ -1133,6 +1069,7 @@ export default {
1133
1069
  flex: 1;
1134
1070
  display: flex;
1135
1071
  flex-direction: column;
1072
+ margin: 10px 0;
1136
1073
  width: 300px;
1137
1074
  overflow: auto;
1138
1075
 
@@ -1140,7 +1077,7 @@ export default {
1140
1077
  align-items: center;
1141
1078
  cursor: pointer;
1142
1079
  display: flex;
1143
- color: var(--primary);
1080
+ color: var(--link);
1144
1081
  font-size: 14px;
1145
1082
  height: $option-height;
1146
1083
  white-space: nowrap;
@@ -1150,7 +1087,7 @@ export default {
1150
1087
  border: none;
1151
1088
 
1152
1089
  .cluster-badge-logo-text {
1153
- color: var(--primary);
1090
+ color: var(--default-active-text);
1154
1091
  font-weight: 500;
1155
1092
  }
1156
1093
 
@@ -1222,7 +1159,7 @@ export default {
1222
1159
  .rancher-provider-icon,
1223
1160
  svg {
1224
1161
  margin-right: 16px;
1225
- fill: var(--primary);
1162
+ fill: var(--link);
1226
1163
  }
1227
1164
 
1228
1165
  .top-menu-icon {