@appscode/design-system 1.1.0-beta.5 → 1.1.0-beta.50

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 (90) 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 +7 -5
  13. package/components/_buttons.scss +10 -10
  14. package/components/_graph.scss +10 -10
  15. package/components/_image-upload.scss +4 -4
  16. package/components/_input-card.scss +232 -0
  17. package/components/{_ac-input.scss → _input.scss} +53 -7
  18. package/components/_left-sidebar-menu.scss +9 -13
  19. package/components/_monaco-editor.scss +2 -2
  20. package/components/_multi-select.scss +589 -0
  21. package/components/_navbar.scss +7 -7
  22. package/components/_nested-list.scss +2 -2
  23. package/components/_overview-info.scss +3 -3
  24. package/components/_pricing-table.scss +5 -5
  25. package/components/_progress-bar.scss +61 -74
  26. package/components/_subscription-card.scss +8 -10
  27. package/components/_table-of-content.scss +4 -4
  28. package/components/{_ac-terminal.scss → _terminal.scss} +62 -73
  29. package/components/_widget-menu.scss +7 -12
  30. package/components/_wizard.scss +13 -286
  31. package/components/bbum/_information-center.scss +8 -10
  32. package/components/bbum/_mobile-desktop.scss +9 -14
  33. package/components/bbum/_single-post-preview.scss +9 -9
  34. package/components/ui-builder/_ui-builder.scss +194 -10
  35. package/components/ui-builder/_vue-open-api.scss +58 -13
  36. package/icons/close-icon.svg +3 -0
  37. package/layouts/_code-preview.scss +6 -7
  38. package/package.json +1 -1
  39. package/vue-components/types/importFlow.ts +16 -0
  40. package/vue-components/types/notification.ts +3 -3
  41. package/vue-components/v2/banner/Banner.vue +1 -1
  42. package/vue-components/v2/editor/FilteredFileEditor.vue +2 -2
  43. package/vue-components/v2/modal/Modal.vue +1 -1
  44. package/vue-components/v2/pagination/Pagination.vue +1 -0
  45. package/vue-components/v3/alert/Alert.vue +2 -2
  46. package/vue-components/v3/banner/Banner.vue +2 -2
  47. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +66 -4
  48. package/vue-components/v3/button/Button.vue +33 -11
  49. package/vue-components/v3/cards/Cluster.vue +7 -3
  50. package/vue-components/v3/cards/FeatureCard.vue +1 -1
  51. package/vue-components/v3/cards/FeatureCards.vue +1 -1
  52. package/vue-components/v3/cards/InfoCard.vue +1 -2
  53. package/vue-components/v3/cards/Vendor.vue +1 -1
  54. package/vue-components/v3/content/ContentTable.vue +1 -1
  55. package/vue-components/v3/editor/FilteredFileEditor.vue +5 -1
  56. package/vue-components/v3/footer/FooterArea.vue +6 -0
  57. package/vue-components/v3/footer/Info.vue +10 -8
  58. package/vue-components/v3/footer/Status.vue +21 -23
  59. package/vue-components/v3/footer/Usage.vue +20 -30
  60. package/vue-components/v3/form/Form.vue +0 -3
  61. package/vue-components/v3/form-fields/AcSingleInput.vue +503 -1
  62. package/vue-components/v3/header/Header.vue +2 -2
  63. package/vue-components/v3/loaders/InfoCardLoader.vue +18 -60
  64. package/vue-components/v3/loaders/SingleInfoCardLoader.vue +24 -0
  65. package/vue-components/v3/modal/Modal.vue +6 -11
  66. package/vue-components/v3/navbar/NavbarItemContent.vue +1 -1
  67. package/vue-components/v3/navbar/User.vue +4 -4
  68. package/vue-components/v3/notification/AlertBox.vue +233 -3
  69. package/vue-components/v3/notification/Notification.vue +2 -2
  70. package/vue-components/v3/option-dots/Options.vue +3 -2
  71. package/vue-components/v3/pagination/Pagination.vue +2 -1
  72. package/vue-components/v3/preloader/Preloader.vue +1 -1
  73. package/vue-components/v3/sidebar/ClusterSwitcher.vue +1 -761
  74. package/vue-components/v3/sidebar/Sidebar.vue +3 -30
  75. package/vue-components/v3/sidebar/SidebarFooter.vue +5 -2
  76. package/vue-components/v3/sidebar/Steps.vue +55 -51
  77. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +78 -2
  78. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +12 -3
  79. package/vue-components/v3/table/InfoTable.vue +6 -4
  80. package/vue-components/v3/table/Table.vue +16 -16
  81. package/vue-components/v3/table/TableRow.vue +2 -2
  82. package/vue-components/v3/tag/Tag.vue +1 -0
  83. package/components/_ac-card.scss +0 -0
  84. package/components/_ac-multi-select.scss +0 -780
  85. package/vue-components/types/longRunningTasks.ts +0 -20
  86. package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +0 -94
  87. package/vue-components/v3/modals/LongRunningTasksModal.vue +0 -402
  88. package/vue-components/v3/terminal/LongRunningTaskTerminal.vue +0 -151
  89. /package/components/{_ac-accordion.scss → _accordion.scss} +0 -0
  90. /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;
@@ -78,7 +82,7 @@ const OptionDots = defineAsyncComponent(
78
82
  display: flex;
79
83
  align-items: center;
80
84
  justify-content: center;
81
- // margin-right: 24px;
85
+ margin-right: 24px;
82
86
 
83
87
  img {
84
88
  height: 24px;
@@ -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;
@@ -34,7 +34,7 @@ withDefaults(defineProps<Props>(), {
34
34
  flex-direction: column;
35
35
  justify-content: space-between;
36
36
  background-color: $primary-97;
37
- min-width: 220px;
37
+ min-width: 215px;
38
38
  padding: 30px 20px 20px;
39
39
  cursor: pointer;
40
40
 
@@ -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 {
@@ -23,6 +23,7 @@
23
23
  background: $primary-20;
24
24
  border-top: 1px solid $primary-90;
25
25
  z-index: 99;
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,34 @@ 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
+ <HeroiconsLoadingBadge v-else-if="item.color === `has-text-warning`" />
33
+ <HeroiconsCrossBadge v-else />
34
+ </span>
35
+ <span>{{ item.label }}</span>
38
36
  </footer-item>
39
37
  </footer-items>
40
38
  </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
  }"