@appscode/design-system 1.1.0-beta.6 → 1.1.0-beta.60

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 (98) hide show
  1. package/base/utilities/_colors.scss +45 -114
  2. package/base/utilities/_global.scss +25 -19
  3. package/base/utilities/_typography.scss +2 -2
  4. package/base/utilities/dark-theme.scss +2 -8
  5. package/components/_ac-alert-box.scss +2 -2
  6. package/components/_ac-code-highlight.scss +9 -12
  7. package/components/_ac-drag.scss +4 -4
  8. package/components/_ac-modal.scss +2 -2
  9. package/components/_ac-select-box.scss +5 -5
  10. package/components/_ac-table.scss +7 -7
  11. package/components/_ac-tabs.scss +29 -26
  12. package/components/_all.scss +8 -5
  13. package/components/_buttons.scss +10 -10
  14. package/components/_getkeeper.scss +110 -0
  15. package/components/_graph.scss +10 -10
  16. package/components/_image-upload.scss +4 -4
  17. package/components/_input-card.scss +232 -0
  18. package/components/{_ac-input.scss → _input.scss} +53 -7
  19. package/components/_left-sidebar-menu.scss +9 -13
  20. package/components/_monaco-editor.scss +2 -2
  21. package/components/_multi-select.scss +589 -0
  22. package/components/_navbar.scss +7 -7
  23. package/components/_nested-list.scss +2 -2
  24. package/components/_overview-info.scss +3 -3
  25. package/components/_pricing-table.scss +5 -5
  26. package/components/_progress-bar.scss +61 -74
  27. package/components/_subscription-card.scss +8 -10
  28. package/components/_table-of-content.scss +4 -4
  29. package/components/{_ac-terminal.scss → _terminal.scss} +63 -74
  30. package/components/_widget-menu.scss +7 -12
  31. package/components/_wizard.scss +13 -286
  32. package/components/bbum/_information-center.scss +8 -10
  33. package/components/bbum/_mobile-desktop.scss +9 -14
  34. package/components/bbum/_single-post-preview.scss +9 -9
  35. package/components/ui-builder/_ui-builder.scss +194 -10
  36. package/components/ui-builder/_vue-open-api.scss +58 -13
  37. package/icons/close-icon.svg +3 -0
  38. package/layouts/_code-preview.scss +6 -7
  39. package/package.json +1 -1
  40. package/vue-components/types/importFlow.ts +16 -0
  41. package/vue-components/types/notification.ts +3 -3
  42. package/vue-components/types/table.ts +1 -0
  43. package/vue-components/v2/banner/Banner.vue +1 -1
  44. package/vue-components/v2/editor/FilteredFileEditor.vue +2 -2
  45. package/vue-components/v2/modal/Modal.vue +1 -1
  46. package/vue-components/v2/pagination/Pagination.vue +1 -0
  47. package/vue-components/v3/alert/Alert.vue +2 -2
  48. package/vue-components/v3/banner/Banner.vue +2 -2
  49. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +66 -4
  50. package/vue-components/v3/button/Button.vue +33 -11
  51. package/vue-components/v3/cards/Cluster.vue +6 -2
  52. package/vue-components/v3/cards/FeatureCard.vue +1 -1
  53. package/vue-components/v3/cards/FeatureCards.vue +1 -1
  54. package/vue-components/v3/cards/InfoCard.vue +1 -2
  55. package/vue-components/v3/cards/OverviewCard.vue +4 -0
  56. package/vue-components/v3/cards/OverviewCards.vue +10 -2
  57. package/vue-components/v3/cards/Vendor.vue +10 -5
  58. package/vue-components/v3/content/ContentTable.vue +1 -1
  59. package/vue-components/v3/editor/FilteredFileEditor.vue +5 -1
  60. package/vue-components/v3/footer/FooterArea.vue +8 -2
  61. package/vue-components/v3/footer/Info.vue +10 -8
  62. package/vue-components/v3/footer/Status.vue +24 -23
  63. package/vue-components/v3/footer/Usage.vue +20 -30
  64. package/vue-components/v3/form/Form.vue +0 -3
  65. package/vue-components/v3/form-fields/AcSingleInput.vue +3 -8
  66. package/vue-components/v3/header/Header.vue +2 -2
  67. package/vue-components/v3/loaders/InfoCardLoader.vue +18 -60
  68. package/vue-components/v3/loaders/SingleInfoCardLoader.vue +24 -0
  69. package/vue-components/v3/modal/Modal.vue +6 -11
  70. package/vue-components/v3/navbar/NavbarItemContent.vue +1 -1
  71. package/vue-components/v3/navbar/User.vue +4 -4
  72. package/vue-components/v3/notification/AlertBox.vue +233 -3
  73. package/vue-components/v3/notification/Notification.vue +2 -2
  74. package/vue-components/v3/option-dots/Options.vue +3 -2
  75. package/vue-components/v3/pagination/Pagination.vue +2 -1
  76. package/vue-components/v3/preloader/Preloader.vue +1 -1
  77. package/vue-components/v3/sidebar/ClusterSwitcher.vue +1 -761
  78. package/vue-components/v3/sidebar/Sidebar.vue +2 -29
  79. package/vue-components/v3/sidebar/SidebarFooter.vue +6 -3
  80. package/vue-components/v3/sidebar/SidebarHeader.vue +1 -1
  81. package/vue-components/v3/sidebar/Steps.vue +55 -51
  82. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +78 -2
  83. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +12 -3
  84. package/vue-components/v3/table/InfoTable.vue +1 -1
  85. package/vue-components/v3/table/Table.vue +47 -21
  86. package/vue-components/v3/table/TableRow.vue +2 -2
  87. package/vue-components/v3/table/table-cell/ArrayCell.vue +2 -2
  88. package/vue-components/v3/table/table-cell/CellValue.vue +1 -1
  89. package/vue-components/v3/table/table-cell/ObjectCell.vue +3 -3
  90. package/vue-components/v3/tag/Tag.vue +1 -0
  91. package/components/_ac-card.scss +0 -0
  92. package/components/_ac-multi-select.scss +0 -780
  93. package/vue-components/types/longRunningTasks.ts +0 -20
  94. package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +0 -94
  95. package/vue-components/v3/modals/LongRunningTasksModal.vue +0 -402
  96. package/vue-components/v3/terminal/LongRunningTaskTerminal.vue +0 -151
  97. /package/components/{_ac-accordion.scss → _accordion.scss} +0 -0
  98. /package/components/{_ac-report.scss → _report.scss} +0 -0
@@ -55,10 +55,25 @@ const handleClick = (e: Event) => {
55
55
  <style lang="scss" scoped>
56
56
  .button {
57
57
  &.ac-button {
58
- padding: 8px 18px;
58
+ padding: 8px 16px;
59
59
  font-weight: 500;
60
60
  line-height: 1;
61
+ &.is-primary {
62
+ &.is-light {
63
+ color: $primary;
64
+ }
65
+ }
66
+ &.is-warning {
67
+ &.is-light {
68
+ color: $yellow-30;
69
+ }
70
+ }
61
71
 
72
+ &.is-success {
73
+ &.is-light {
74
+ color: $green-30;
75
+ }
76
+ }
62
77
  &.is-light {
63
78
  &.is-loading {
64
79
  &::after {
@@ -66,16 +81,23 @@ const handleClick = (e: Event) => {
66
81
  }
67
82
  }
68
83
  }
84
+ &.is-ghost {
85
+ border-color: transparent !important;
86
+ }
69
87
  &.is-square {
70
88
  border: 1px solid $primary-95;
71
89
  }
72
90
  &.is-small {
73
91
  padding: 4px 9px;
74
92
  }
93
+ &.is-medium {
94
+ font-size: 1rem;
95
+ height: 36px;
96
+ }
75
97
  }
76
98
  }
77
99
  button.is-primary {
78
- background-color: $ac-primary;
100
+ background-color: $primary;
79
101
  }
80
102
  // .button {
81
103
  // transition: 86ms ease-in-out;
@@ -248,19 +270,19 @@ button.is-primary {
248
270
  // color: $black-40;
249
271
 
250
272
  // &:hover {
251
- // background-color: $white-100-lighter;
252
- // color: $ac-black;
273
+ // background-color: $primary-90;
274
+ // color: $black-5;
253
275
  // }
254
276
 
255
277
  // &:focus {
256
- // background-color: $white-100-lighter;
257
- // color: $ac-black;
278
+ // background-color: $primary-90;
279
+ // color: $black-5;
258
280
  // }
259
281
  // }
260
282
 
261
283
  // &.transparent-bg {
262
284
  // background-color: transparent;
263
- // border: 1px solid $ac-label-text;
285
+ // border: 1px solid $primary-10;
264
286
 
265
287
  // img {
266
288
  // &:hover {
@@ -536,7 +558,7 @@ button.is-primary {
536
558
  // // counter button start
537
559
  // .ac-counter-button {
538
560
  // background-color: transparent;
539
- // border: 1px solid $ac-label-text;
561
+ // border: 1px solid $primary-10;
540
562
  // border-radius: 4px;
541
563
  // height: 46px;
542
564
  // overflow: hidden;
@@ -583,13 +605,13 @@ button.is-primary {
583
605
  // .ac-counter-arrow-wrapper {
584
606
  // height: 100%;
585
607
  // color: $primary-10;
586
- // border-left: 1px solid $ac-label-text;
608
+ // border-left: 1px solid $primary-10;
587
609
 
588
610
  // .ac-counter-arrow {
589
611
  // background-color: transparent;
590
612
  // border: none;
591
613
  // cursor: pointer;
592
- // color: $ac-label-text;
614
+ // color: $primary-10;
593
615
  // height: 23px;
594
616
 
595
617
  // &:hover {
@@ -597,7 +619,7 @@ button.is-primary {
597
619
  // }
598
620
 
599
621
  // &:first-child {
600
- // border-bottom: 1px solid $ac-label-text;
622
+ // border-bottom: 1px solid $primary-10;
601
623
  // }
602
624
  // }
603
625
  // }
@@ -28,14 +28,14 @@ const OptionDots = defineAsyncComponent(
28
28
  </script>
29
29
 
30
30
  <template>
31
- <div class="card-details" :class="modifierClasses">
31
+ <div class="card-details" :class="modifierClasses" data-testid="cluster-item-navigate">
32
32
  <div class="c-header">
33
33
  <div class="c-logo">
34
34
  <img :src="clusterData.providerIcon" alt="" />
35
35
  </div>
36
36
  <div class="c-content">
37
37
  <div class="is-flex is-justify-content-space-between">
38
- <h4>{{ clusterData.name }}</h4>
38
+ <h4 data-testid="cluster-title-text">{{ clusterData.name }}</h4>
39
39
  <option-dots v-if="showOptions" :position="'is-right'">
40
40
  <slot name="options" />
41
41
  </option-dots>
@@ -45,6 +45,7 @@ const OptionDots = defineAsyncComponent(
45
45
  v-for="(tag, idx) in clusterData.tags"
46
46
  :key="idx + tag.value"
47
47
  :class="tag.class"
48
+ :data-testid="idx===0 ? 'cluster-status-text' : undefined"
48
49
  >{{ tag.value }}</span
49
50
  >
50
51
  </div>
@@ -65,6 +66,9 @@ const OptionDots = defineAsyncComponent(
65
66
  transition: 0.3s ease-in-out;
66
67
  position: relative;
67
68
  z-index: 1;
69
+ width: calc(33% - 7px);
70
+ min-width: 430px;
71
+ max-width: 530px;
68
72
 
69
73
  .c-header {
70
74
  display: flex;
@@ -12,7 +12,7 @@ withDefaults(
12
12
  </script>
13
13
  <template>
14
14
  <!-- single card wrapper start -->
15
- <div class="card-basic b-1">
15
+ <div class="card-basic b-1" data-testid="simple-feature-card">
16
16
  <div class="c-header is-flex is-justify-content-space-between">
17
17
  <div
18
18
  v-if="isRequired"
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts"></script>
2
2
  <template>
3
- <div class="is-flex is-flex-wrap-wrap" style="gap: 16px">
3
+ <div class="is-flex is-flex-wrap-wrap" data-testid="simple-feature-sets" style="gap: 16px">
4
4
  <slot />
5
5
  </div>
6
6
  </template>
@@ -166,9 +166,8 @@ const OptionDots = defineAsyncComponent(
166
166
  .header {
167
167
  display: flex;
168
168
  align-items: center;
169
- padding: 8px 16px;
169
+ padding: 12px 16px;
170
170
  border-bottom: 1px dashed $primary-90;
171
- background-color: $primary-97;
172
171
 
173
172
  .logo {
174
173
  display: flex;
@@ -20,5 +20,9 @@
20
20
  border: 1px solid $primary-90;
21
21
  padding: 8px 16px;
22
22
  border-radius: 2px;
23
+ strong {
24
+ min-width: 30px;
25
+ font-size: 14px;
26
+ }
23
27
  }
24
28
  </style>
@@ -4,12 +4,20 @@ import { defineAsyncComponent } from "vue";
4
4
  const ContentHeader = defineAsyncComponent(
5
5
  () => import("./../content/ContentHeader.vue")
6
6
  );
7
+
8
+ interface Props {
9
+ headerTitle: string;
10
+ }
11
+
12
+ withDefaults(defineProps<Props>(), {
13
+ headerTitle: "",
14
+ });
7
15
  </script>
8
16
 
9
17
  <template>
10
18
  <div class="overview-cards-wrapper">
11
19
  <!-- title -->
12
- <content-header headerTitle="Resource Usage"></content-header>
20
+ <content-header :headerTitle="headerTitle"></content-header>
13
21
  <!-- title -->
14
22
  <div class="overview-cards b-t-1">
15
23
  <slot />
@@ -20,7 +28,7 @@ const ContentHeader = defineAsyncComponent(
20
28
  .overview-cards-wrapper {
21
29
  border: 1px solid $primary-90;
22
30
  margin-right: 20px;
23
- height: 100%;
31
+ height: calc(100% - 16px);
24
32
  }
25
33
  .overview-cards {
26
34
  display: grid;
@@ -3,26 +3,31 @@ interface Props {
3
3
  title?: string;
4
4
  subTitle?: string;
5
5
  logo?: string;
6
+ link?: string;
6
7
  }
7
8
 
8
9
  withDefaults(defineProps<Props>(), {
9
10
  title: "no title",
10
11
  subTitle: "",
11
12
  logo: "https://bb-developer-v1.web.app/_nuxt/img/azure-logo.4fa9281.svg",
13
+ link: "#",
12
14
  });
13
15
  </script>
16
+
14
17
  <template>
15
18
  <!-- use "is-selected" for select item -->
16
- <a class="ac-single-card has-text-centered">
19
+ <RouterLink :to="link" class="ac-single-card has-text-centered">
17
20
  <div class="ac-card-logo">
18
- <div class="card-status"></div>
21
+ <div class="card-status" />
19
22
  <img :src="logo" alt="vendor logo" />
20
23
  </div>
21
24
  <div class="ac-card-name">
22
25
  <p>{{ title }}</p>
23
- <p class="has-text-weight-normal mt-8" v-if="subTitle">{{ subTitle }}</p>
26
+ <p v-if="subTitle" class="has-text-weight-normal mt-8">
27
+ {{ subTitle }}
28
+ </p>
24
29
  </div>
25
- </a>
30
+ </RouterLink>
26
31
  </template>
27
32
 
28
33
  <style lang="scss" scoped>
@@ -34,7 +39,7 @@ withDefaults(defineProps<Props>(), {
34
39
  flex-direction: column;
35
40
  justify-content: space-between;
36
41
  background-color: $primary-97;
37
- min-width: 220px;
42
+ min-width: 215px;
38
43
  padding: 30px 20px 20px;
39
44
  cursor: pointer;
40
45
 
@@ -54,7 +54,7 @@ const updateSearchText = (text: string) => {
54
54
  <search-bar
55
55
  v-if="searchable"
56
56
  @search="updateSearchText"
57
- :id="acInuptId"
57
+ :ac-input-id="acInuptId"
58
58
  />
59
59
  </header-item>
60
60
  <slot name="content-right-controls" />
@@ -137,7 +137,7 @@ watch(
137
137
  </strong>
138
138
  <template v-else>
139
139
  <div v-if="!isPreviewLoading && previewYamls" class="left-content">
140
- <div class="ac-files ac-hscrollbar pt-0">
140
+ <div class="ac-files ac-hscrollbar ac-vscrollbar pt-0">
141
141
  <ul v-if="!isPreviewLoading">
142
142
  <li
143
143
  v-for="(previewYaml, idx) in filteredYamls"
@@ -288,6 +288,10 @@ watch(
288
288
 
289
289
  .ac-files {
290
290
  ul {
291
+ margin: 0;
292
+ padding: 0;
293
+ list-style: none;
294
+
291
295
  li {
292
296
  &.is-active {
293
297
  a {
@@ -21,8 +21,9 @@
21
21
  min-height: 30px;
22
22
  padding: 0 20px;
23
23
  background: $primary-20;
24
- border-top: 1px solid $primary-90;
25
- z-index: 99;
24
+ border-top: 1px solid #3d5e7c;
25
+ z-index: 9999;
26
+ transition: 0.3s ease-in-out;
26
27
  }
27
28
 
28
29
  .footer-left,
@@ -31,4 +32,9 @@
31
32
  align-items: center;
32
33
  gap: 32px;
33
34
  }
35
+ .sidebar-collapsed {
36
+ .footer-area {
37
+ width: calc(100% - 60px);
38
+ }
39
+ }
34
40
  </style>
@@ -1,20 +1,22 @@
1
1
  <script lang="ts" setup>
2
- import { ref, defineAsyncComponent } from "vue";
2
+ import { defineAsyncComponent } from "vue";
3
3
 
4
4
  const FooterItems = defineAsyncComponent(() => import("./FooterItems.vue"));
5
5
  const FooterItem = defineAsyncComponent(() => import("./FooterItem.vue"));
6
6
 
7
- const dataObj = ref([
8
- { key: "VERSION:", value: "10.5.8" },
9
- { key: "NAMESPACE:", value: "demo" },
10
- { key: "MODE:", value: "Standalone" },
11
- ]);
7
+ interface Props {
8
+ infoData?: Array<Record<string, string>>;
9
+ }
10
+
11
+ withDefaults(defineProps<Props>(), {
12
+ infoData: () => [],
13
+ });
12
14
  </script>
13
15
 
14
16
  <template>
15
17
  <footer-items>
16
- <footer-item v-for="(data, idx) in dataObj" :key="idx">
17
- <span class="">{{ data.key }}</span>
18
+ <footer-item v-for="(data, idx) in infoData" :key="idx + data.key">
19
+ <span class="">{{ data.key }}:</span>
18
20
  <span>{{ data.value }}</span>
19
21
  </footer-item>
20
22
  </footer-items>
@@ -5,36 +5,37 @@ const FooterItem = defineAsyncComponent(() => import("./FooterItem.vue"));
5
5
  const HeroiconsCheckBadge = defineAsyncComponent(
6
6
  () => import("~icons/heroicons/check-badge")
7
7
  );
8
+ const HeroiconsCrossBadge = defineAsyncComponent(
9
+ () => import("~icons/heroicons/x-circle")
10
+ );
11
+ const HeroiconsLoadingBadge = defineAsyncComponent(
12
+ () => import("~icons/heroicons/arrow-path")
13
+ );
14
+ interface Props {
15
+ statusInfo?: Array<Record<string, string>>;
16
+ }
8
17
 
9
- const status = ref([
10
- {
11
- icon: "HeroiconsCheckCircle",
12
- label: "Not Exposed",
13
- classType: "has-text-warning",
14
- },
15
- { icon: "HeroiconsXCircle", label: "TLS", classType: "has-text-danger" },
16
- {
17
- icon: "HeroiconsCheckBadge",
18
- label: "Backup",
19
- classType: "has-text-success",
20
- },
21
- {
22
- icon: "HeroiconsXCircle",
23
- label: "Monitoring",
24
- classType: "has-text-danger",
25
- },
26
- ]);
18
+ withDefaults(defineProps<Props>(), {
19
+ statusInfo: () => [],
20
+ });
27
21
  </script>
28
22
 
29
23
  <template>
30
24
  <footer-items>
31
25
  <footer-item
32
- v-for="(item, idx) in status"
33
- :key="idx"
34
- :modifier-classes="item.classType"
26
+ v-for="(item, idx) in statusInfo"
27
+ :key="idx + item.label"
28
+ :modifier-classes="item.color"
35
29
  >
36
- <span class="icon"><HeroiconsCheckBadge :size="20" /></span
37
- ><span>{{ item.label }}</span>
30
+ <span class="icon">
31
+ <HeroiconsCheckBadge v-if="item.color === `has-text-success`" />
32
+ <i
33
+ v-else-if="item.color === `has-text-warning`"
34
+ class="fa fa-refresh fa-spin fa-fw"
35
+ ></i>
36
+ <HeroiconsCrossBadge v-else />
37
+ </span>
38
+ <span>{{ item.label }}</span>
38
39
  </footer-item>
39
40
  </footer-items>
40
41
  </template>
@@ -1,42 +1,32 @@
1
1
  <script lang="ts" setup>
2
- import { defineAsyncComponent, ref } from "vue";
2
+ import { defineAsyncComponent } from "vue";
3
3
  const FooterItems = defineAsyncComponent(() => import("./FooterItems.vue"));
4
4
  const FooterItem = defineAsyncComponent(() => import("./FooterItem.vue"));
5
5
 
6
- const HeroiconsCpuChip = defineAsyncComponent(
7
- () => import("~icons/heroicons/cpu-chip")
8
- );
6
+ interface Props {
7
+ usages?: Array<{
8
+ icon?: string;
9
+ useData?: {
10
+ limit?: string;
11
+ request?: string;
12
+ };
13
+ }>;
14
+ }
9
15
 
10
- const usages = ref([
11
- {
12
- icon: "HeroiconsCpuChip",
13
- useData: {
14
- limit: "500m",
15
- usage: "500m",
16
- },
17
- },
18
- {
19
- icon: "HeroiconsCpuChip",
20
- useData: {
21
- limit: "1G",
22
- usage: "1G",
23
- },
24
- },
25
- {
26
- icon: "HeroiconsCpuChip",
27
- useData: {
28
- limit: "10Gi",
29
- usage: "10Gi",
30
- },
31
- },
32
- ]);
16
+ withDefaults(defineProps<Props>(), {
17
+ usages: () => [],
18
+ });
33
19
  </script>
34
20
 
35
21
  <template>
36
22
  <footer-items>
37
- <footer-item v-for="(type, idx) in usages" :key="idx">
38
- <span class="icon"><HeroiconsCpuChip :size="20" /></span
39
- ><span>{{ type.useData.limit }}/{{ type.useData.usage }}</span>
23
+ <footer-item v-for="(info, idx) in usages" :key="idx">
24
+ <span class="icon"><img :src="info.icon" /></span
25
+ ><span
26
+ >{{ info.useData?.limit || "N" }}/{{
27
+ info.useData?.request || "A"
28
+ }}</span
29
+ >
40
30
  </footer-item>
41
31
  </footer-items>
42
32
  </template>
@@ -22,9 +22,6 @@ withDefaults(defineProps<Props>(), {
22
22
  <div class="form-wrapper">
23
23
  <div
24
24
  :class="{
25
- 'pt-20': !reducePaddingTop,
26
- 'pt-10': reducePaddingTop,
27
- 'pl-20': !isContainer,
28
25
  'form-content': !isContainer,
29
26
  container: isContainer,
30
27
  }"
@@ -142,7 +142,7 @@ withDefaults(defineProps<Props>(), {
142
142
 
143
143
  &.show-label {
144
144
  font-size: 12px;
145
- color: $black-40;
145
+ color: $primary-20;
146
146
  top: -9px;
147
147
  font-weight: 500;
148
148
  background-color: $white-100;
@@ -394,12 +394,7 @@ withDefaults(defineProps<Props>(), {
394
394
  transition: 0.3s;
395
395
 
396
396
  &:hover {
397
- background-color: hsla(
398
- var(--hsl-hue),
399
- var(--hsl-saturation),
400
- var(--hsl-lightness),
401
- 0.2
402
- );
397
+ background-color: $primary-30;
403
398
  color: $primary;
404
399
  }
405
400
  }
@@ -494,7 +489,7 @@ withDefaults(defineProps<Props>(), {
494
489
 
495
490
  span.eye {
496
491
  i.fa {
497
- color: $primary-80;
492
+ color: $primary-70;
498
493
  position: absolute;
499
494
  cursor: pointer;
500
495
  padding: 15px;
@@ -26,7 +26,7 @@ withDefaults(defineProps<Props>(), {
26
26
  <header-items>
27
27
  <header-item>
28
28
  <transition name="fade" mode="out-in" appear>
29
- <h5 :key="title">{{ title }}</h5>
29
+ <h4 :key="title">{{ title }}</h4>
30
30
  </transition>
31
31
  </header-item>
32
32
  <slot name="header-left-controls" />
@@ -41,7 +41,7 @@ withDefaults(defineProps<Props>(), {
41
41
  <style lang="scss" scoped>
42
42
  .inner-header {
43
43
  padding: 6px 20px;
44
- border-bottom: 1px solid $primary-90;
44
+ border-bottom: 1px solid $primary-93;
45
45
  position: sticky;
46
46
  background: $white-100;
47
47
  z-index: 99;
@@ -1,65 +1,23 @@
1
- <script setup lang="ts">
1
+ <script>
2
2
  import { ContentLoader } from "vue-content-loader";
3
+
4
+ export default {
5
+ components: { ContentLoader },
6
+ };
3
7
  </script>
4
8
 
5
9
  <template>
6
- <div>
7
- <svg
8
- role="img"
9
- width="230"
10
- height="115"
11
- aria-labelledby="loading-aria"
12
- viewBox="0 0 230 115"
13
- preserveAspectRatio="none"
14
- >
15
- <title id="loading-aria">Loading...</title>
16
- <rect
17
- x="0"
18
- y="0"
19
- width="100%"
20
- height="100%"
21
- clip-path="url(#clip-path)"
22
- style="fill: url('#fill')"
23
- ></rect>
24
- <defs>
25
- <clipPath id="clip-path">
26
- <rect x="150" y="40" rx="3" ry="3" width="60" height="50" />
27
- <rect x="10" y="70" rx="3" ry="3" width="120" height="11" />
28
- <rect x="10" y="100" rx="3" ry="3" width="120" height="11" />
29
- <rect x="150" y="100" rx="3" ry="3" width="60" height="11" />
30
- <rect x="10" y="1" rx="3" ry="3" width="200" height="22" />
31
- <rect x="10" y="40" rx="3" ry="3" width="120" height="11" />
32
- </clipPath>
33
- <linearGradient id="fill">
34
- <stop offset="0.599964" stop-color="#cfcfcf" stop-opacity="1">
35
- <animate
36
- attributeName="offset"
37
- values="-2; -2; 1"
38
- keyTimes="0; 0.25; 1"
39
- dur="2s"
40
- repeatCount="indefinite"
41
- ></animate>
42
- </stop>
43
- <stop offset="1.59996" stop-color="#ecebeb" stop-opacity="1">
44
- <animate
45
- attributeName="offset"
46
- values="-1; -1; 2"
47
- keyTimes="0; 0.25; 1"
48
- dur="2s"
49
- repeatCount="indefinite"
50
- ></animate>
51
- </stop>
52
- <stop offset="2.59996" stop-color="#cfcfcf" stop-opacity="1">
53
- <animate
54
- attributeName="offset"
55
- values="0; 0; 3"
56
- keyTimes="0; 0.25; 1"
57
- dur="2s"
58
- repeatCount="indefinite"
59
- ></animate>
60
- </stop>
61
- </linearGradient>
62
- </defs>
63
- </svg>
64
- </div>
10
+ <content-loader
11
+ viewBox="0 0 230 115"
12
+ :speed="2"
13
+ primaryColor="#f5f5f5"
14
+ secondaryColor="#ecebeb"
15
+ >
16
+ <rect x="0" y="0" rx="0" ry="0" />
17
+ <rect x="10" y="70" rx="3" ry="3" width="120" height="11" />
18
+ <rect x="10" y="100" rx="3" ry="3" width="120" height="11" />
19
+ <rect x="150" y="100" rx="3" ry="3" width="60" height="11" />
20
+ <rect x="10" y="1" rx="3" ry="3" width="216" height="22" />
21
+ <rect x="10" y="40" rx="3" ry="3" width="120" height="11" />
22
+ </content-loader>
65
23
  </template>
@@ -0,0 +1,24 @@
1
+ <script>
2
+ import { ContentLoader } from "vue-content-loader";
3
+
4
+ export default {
5
+ components: { ContentLoader },
6
+ };
7
+ </script>
8
+
9
+ <template>
10
+ <content-loader
11
+ viewBox="0 0 1540 90"
12
+ :speed="2"
13
+ primaryColor="#f5f5f5"
14
+ secondaryColor="#ecebeb"
15
+ >
16
+ <rect x="0" y="0" rx="0" ry="0" />
17
+ <circle cx="47" cy="52" r="21" />
18
+ <rect x="86" y="64" rx="0" ry="0" width="95" height="11" />
19
+ <rect x="86" y="29" rx="0" ry="0" width="146" height="22" />
20
+ <rect x="1240" y="57" rx="0" ry="0" width="64" height="12" />
21
+ <rect x="1340" y="57" rx="0" ry="0" width="64" height="12" />
22
+ <rect x="1440" y="56" rx="0" ry="0" width="64" height="12" />
23
+ </content-loader>
24
+ </template>