@appscode/design-system 1.1.0-alpha.9 → 1.1.0-beta.3

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 (194) hide show
  1. package/base/_video-player.scss +65 -0
  2. package/base/utilities/_all.scss +6 -5
  3. package/base/utilities/_colors.scss +446 -0
  4. package/base/utilities/_customize-bulma.scss +23 -27
  5. package/base/utilities/_extended.scss +3 -2
  6. package/base/utilities/{_default.scss → _global.scss} +171 -323
  7. package/base/utilities/_layouts.scss +157 -0
  8. package/base/utilities/_mixin.scss +11 -11
  9. package/base/utilities/_spacing.scss +96 -0
  10. package/base/utilities/_typography.scss +56 -24
  11. package/base/utilities/dark-theme.scss +1 -1
  12. package/components/_ac-accordion.scss +117 -117
  13. package/components/_ac-alert-box.scss +205 -263
  14. package/components/_ac-calendar.scss +4 -4
  15. package/components/_ac-card.scss +122 -130
  16. package/components/_ac-code-highlight.scss +6 -6
  17. package/components/_ac-content-layout.scss +165 -165
  18. package/components/_ac-drag.scss +11 -11
  19. package/components/_ac-input.scss +38 -520
  20. package/components/_ac-modal.scss +212 -212
  21. package/components/_ac-multi-select.scss +780 -751
  22. package/components/_ac-options.scss +122 -123
  23. package/components/_ac-select-box.scss +5 -5
  24. package/components/_ac-table.scss +503 -502
  25. package/components/_ac-tabs.scss +39 -38
  26. package/components/_ac-tags.scss +116 -116
  27. package/components/_ac-terminal.scss +95 -51
  28. package/components/_add-card.scss +3 -3
  29. package/components/_all.scss +31 -28
  30. package/components/_app-drawer.scss +0 -134
  31. package/components/_breadcumb.scss +0 -71
  32. package/components/_buttons.scss +779 -779
  33. package/components/_card-body-wrapper.scss +5 -5
  34. package/components/_dashboard-header.scss +0 -115
  35. package/components/_direct-deploy.scss +8 -8
  36. package/components/_go-to-top.scss +1 -1
  37. package/components/_image-upload.scss +3 -3
  38. package/components/_left-sidebar-menu.scss +448 -579
  39. package/components/_monaco-editor.scss +1 -1
  40. package/components/_navbar.scss +786 -752
  41. package/components/_nested-list.scss +1 -1
  42. package/components/_overview-info.scss +7 -7
  43. package/components/_overview-page.scss +4 -4
  44. package/components/_pagination.scss +106 -124
  45. package/components/_payment-card.scss +21 -21
  46. package/components/_preloader.scss +1 -1
  47. package/components/_preview-modal.scss +18 -18
  48. package/components/_pricing-table.scss +10 -10
  49. package/components/_progress-bar.scss +12 -12
  50. package/components/_subscription-card.scss +14 -14
  51. package/components/_table-of-content.scss +4 -4
  52. package/components/_tfa.scss +9 -9
  53. package/components/_widget-menu.scss +247 -247
  54. package/components/_wizard.scss +82 -82
  55. package/components/ac-toaster/_ac-toasted.scss +1 -1
  56. package/components/bbum/_activities-header.scss +1 -1
  57. package/components/bbum/_card-team.scss +12 -12
  58. package/components/bbum/_information-center.scss +13 -13
  59. package/components/bbum/_left-sidebar.scss +8 -8
  60. package/components/bbum/_mobile-desktop.scss +7 -7
  61. package/components/bbum/_post.scss +5 -5
  62. package/components/bbum/_sign-up-notification.scss +10 -10
  63. package/components/bbum/_single-post-preview.scss +21 -21
  64. package/components/bbum/_user-profile.scss +10 -10
  65. package/components/ui-builder/_ui-builder.scss +15 -15
  66. package/components/ui-builder/_vue-open-api.scss +514 -2
  67. package/layouts/_code-preview.scss +11 -11
  68. package/main.scss +26 -10
  69. package/package.json +1 -1
  70. package/vue-components/plugins/time-convert.js +49 -0
  71. package/vue-components/text.vue +1 -0
  72. package/vue-components/types/cluster.ts +6 -0
  73. package/vue-components/types/longRunningTasks.ts +20 -0
  74. package/vue-components/types/notification.ts +6 -0
  75. package/vue-components/types/previewYaml.ts +8 -0
  76. package/vue-components/types/table.ts +54 -0
  77. package/vue-components/types/theme.ts +10 -0
  78. package/vue-components/types/user.ts +22 -0
  79. package/vue-components/v2/card/Card.vue +1 -1
  80. package/vue-components/v2/card/OverviewCards.vue +17 -2
  81. package/vue-components/v2/editor/ResourceKeyValueEditor.vue +21 -21
  82. package/vue-components/v2/icons/Ellipsis.vue +2 -1
  83. package/vue-components/v2/modal/Modal.vue +0 -5
  84. package/vue-components/v2/navbar/Appdrawer.vue +37 -12
  85. package/vue-components/v2/navbar/Navbar.vue +3 -3
  86. package/vue-components/v2/navbar/NavbarItem.vue +3 -1
  87. package/vue-components/v2/navbar/NavbarItemContent.vue +1 -1
  88. package/vue-components/v2/navbar/User.vue +5 -22
  89. package/vue-components/v2/pagination/Pagination.vue +65 -0
  90. package/vue-components/v2/sidebar/SidebarItem.vue +10 -7
  91. package/vue-components/v3/accordion/Accordion.vue +151 -0
  92. package/vue-components/v3/alert/Alert.vue +238 -0
  93. package/vue-components/v3/alert/Toast.vue +79 -0
  94. package/vue-components/v3/banner/Banner.vue +10 -0
  95. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +104 -0
  96. package/vue-components/v3/button/Button.vue +831 -58
  97. package/vue-components/v3/button/Buttons.vue +6 -0
  98. package/vue-components/v3/button/DownloadBtn.vue +31 -0
  99. package/vue-components/v3/cards/Card.vue +32 -0
  100. package/vue-components/v3/cards/CardContent.vue +7 -0
  101. package/vue-components/v3/cards/CardHeader.vue +14 -0
  102. package/vue-components/v3/cards/Cards.vue +7 -0
  103. package/vue-components/v3/cards/Cluster.vue +150 -0
  104. package/vue-components/v3/cards/Counter.vue +27 -0
  105. package/vue-components/v3/cards/FeatureCard.vue +40 -0
  106. package/vue-components/v3/cards/FeatureCards.vue +6 -0
  107. package/vue-components/v3/cards/InfoCard.vue +248 -0
  108. package/vue-components/v3/cards/Monitoring.vue +94 -0
  109. package/vue-components/v3/cards/OverviewCard.vue +24 -0
  110. package/vue-components/v3/cards/OverviewCards.vue +31 -0
  111. package/vue-components/v3/cards/Payment.vue +62 -0
  112. package/vue-components/v3/cards/Vendor.vue +23 -0
  113. package/vue-components/v3/content/ContentHeader.vue +39 -30
  114. package/vue-components/v3/content/ContentLayout.vue +20 -0
  115. package/vue-components/v3/content/ContentTable.vue +37 -61
  116. package/vue-components/v3/dropdown/DropdownDivider.vue +2 -0
  117. package/vue-components/v3/dropdown/DropdownItem.vue +2 -0
  118. package/vue-components/v3/dropdown/DropdownMenu.vue +85 -91
  119. package/vue-components/v3/editor/Editor.vue +100 -113
  120. package/vue-components/v3/editor/FilteredFileEditor.vue +124 -127
  121. package/vue-components/v3/editor/ResourceKeyValueEditor.vue +70 -94
  122. package/vue-components/v3/footer/FooterArea.vue +34 -0
  123. package/vue-components/v3/footer/FooterItem.vue +32 -0
  124. package/vue-components/v3/footer/FooterItems.vue +15 -0
  125. package/vue-components/v3/footer/Info.vue +23 -0
  126. package/vue-components/v3/footer/Status.vue +42 -0
  127. package/vue-components/v3/footer/Usage.vue +44 -0
  128. package/vue-components/v3/form/Form.vue +24 -33
  129. package/vue-components/v3/form/FormFooterControl.vue +7 -0
  130. package/vue-components/v3/form/FormFooterControls.vue +7 -0
  131. package/vue-components/v3/form-fields/AcSingleInput.vue +520 -0
  132. package/vue-components/v3/form-fields/Input.vue +19 -14
  133. package/vue-components/v3/header/Header.vue +117 -24
  134. package/vue-components/v3/header/HeaderItem.vue +18 -0
  135. package/vue-components/v3/header/HeaderItems.vue +4 -0
  136. package/vue-components/v3/icons/Ellipsis.vue +2 -0
  137. package/vue-components/v3/loaders/ResourceLoader.vue +4 -12
  138. package/vue-components/v3/loaders/SidebarLoader.vue +4 -12
  139. package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +17 -15
  140. package/vue-components/v3/modal/Modal.vue +292 -96
  141. package/vue-components/v3/modals/DeleteConfirmationModal.vue +37 -50
  142. package/vue-components/v3/modals/JsonShowModal.vue +62 -68
  143. package/vue-components/v3/modals/LongRunningTasksModal.vue +145 -143
  144. package/vue-components/v3/navbar/Appdrawer.vue +196 -51
  145. package/vue-components/v3/navbar/Navbar.vue +296 -0
  146. package/vue-components/v3/navbar/NavbarItem.vue +81 -0
  147. package/vue-components/v3/navbar/NavbarItemContent.vue +284 -0
  148. package/vue-components/v3/navbar/Notification.vue +179 -0
  149. package/vue-components/v3/navbar/ThemeMode.vue +128 -112
  150. package/vue-components/v3/navbar/User.vue +383 -268
  151. package/vue-components/v3/notification/AlertBox.vue +39 -42
  152. package/vue-components/v3/notification/Notification.vue +49 -43
  153. package/vue-components/v3/notification/NotificationItem.vue +51 -19
  154. package/vue-components/v3/option-dots/Options.vue +188 -0
  155. package/vue-components/v3/pagination/Pagination.vue +203 -99
  156. package/vue-components/v3/preloader/Preloader.vue +23 -0
  157. package/vue-components/v3/searchbars/SearchBar.vue +51 -34
  158. package/vue-components/v3/sidebar/AccentColorPicker.vue +97 -0
  159. package/vue-components/v3/sidebar/ClusterSwitcher.vue +834 -81
  160. package/vue-components/v3/sidebar/Sidebar.vue +271 -0
  161. package/vue-components/v3/sidebar/SidebarBody.vue +7 -0
  162. package/vue-components/v3/sidebar/SidebarFooter.vue +80 -0
  163. package/vue-components/v3/sidebar/SidebarHeader.vue +124 -0
  164. package/vue-components/v3/sidebar/SidebarItem.vue +62 -0
  165. package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +101 -104
  166. package/vue-components/v3/sidebar/SidebarMenuList.vue +9 -0
  167. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +128 -0
  168. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +29 -0
  169. package/vue-components/v3/sidebar/sidebar-tabs/TabsContent.vue +99 -0
  170. package/vue-components/v3/tab/TabItem.vue +10 -12
  171. package/vue-components/v3/tab/Tabs.vue +9 -0
  172. package/vue-components/v3/tab/TabsBody.vue +7 -0
  173. package/vue-components/v3/table/EmptyTableInfo.vue +8 -0
  174. package/vue-components/v3/table/FakeTableCell.vue +22 -31
  175. package/vue-components/v3/table/InfoTable.vue +85 -59
  176. package/vue-components/v3/table/MultiInfoTable.vue +72 -95
  177. package/vue-components/v3/table/Table.vue +582 -151
  178. package/vue-components/v3/table/TableCell.vue +20 -23
  179. package/vue-components/v3/table/TableContainer.vue +50 -28
  180. package/vue-components/v3/table/TableRow.vue +63 -85
  181. package/vue-components/v3/table/table-cell/ArrayCell.vue +67 -79
  182. package/vue-components/v3/table/table-cell/CellValue.vue +97 -103
  183. package/vue-components/v3/table/table-cell/GenericCell.vue +43 -42
  184. package/vue-components/v3/table/table-cell/ObjectCell.vue +67 -79
  185. package/vue-components/v3/table/table-cell/ValueWithModal.vue +22 -31
  186. package/vue-components/v3/tabs/EditorTabs.vue +18 -24
  187. package/vue-components/v3/tag/Tag.vue +15 -12
  188. package/vue-components/v3/tag/Tags.vue +7 -0
  189. package/vue-components/v3/terminal/LongRunningTaskTerminal.vue +26 -23
  190. package/base/utilities/_derived-variables.scss +0 -25
  191. package/base/utilities/_initial-variables.scss +0 -215
  192. package/components/_basic-card.scss +0 -128
  193. package/mixins/stickyContent.js +0 -141
  194. package/plugins/caching.ts +0 -243
@@ -0,0 +1,6 @@
1
+ <script setup lang="ts"></script>
2
+ <template>
3
+ <div class="buttons">
4
+ <slot />
5
+ </div>
6
+ </template>
@@ -0,0 +1,31 @@
1
+ <script setup lang="ts">
2
+ import { defineAsyncComponent } from "vue";
3
+ import downloadFunc from "downloadjs";
4
+
5
+ interface Props {
6
+ fileData?: string;
7
+ fileName?: string;
8
+ isFetching?: boolean;
9
+ }
10
+
11
+ const props = withDefaults(defineProps<Props>(), {
12
+ fileData: "",
13
+ fileName: "",
14
+ isFetching: false,
15
+ });
16
+
17
+ const AcButton = defineAsyncComponent(() => import("../button/Button.vue"));
18
+
19
+ const download = () => {
20
+ downloadFunc(props.fileData, props.fileName);
21
+ };
22
+ </script>
23
+
24
+ <template>
25
+ <ac-button
26
+ modifier-classes="is-primary is-square"
27
+ icon-class="download"
28
+ :is-loader-active="isFetching"
29
+ @click="download()"
30
+ />
31
+ </template>
@@ -0,0 +1,32 @@
1
+ <script setup lang="ts">
2
+ interface Props {
3
+ isSelected?: boolean;
4
+ hasLogo?: boolean;
5
+ hasName?: boolean;
6
+ }
7
+
8
+ withDefaults(defineProps<Props>(), {
9
+ isSelected: false,
10
+ hasLogo: true,
11
+ hasName: true,
12
+ });
13
+ </script>
14
+
15
+ <template>
16
+ <div
17
+ class="ac-single-card has-text-centered vendor-card"
18
+ :class="{ 'is-selected': isSelected }"
19
+ @click="$emit('click', $event)"
20
+ data-testid="card-list-item"
21
+ >
22
+ <div class="ac-card-logo" v-if="hasLogo">
23
+ <slot name="card-logo" />
24
+ </div>
25
+ <div class="ac-card-name" v-if="hasName">
26
+ <p>
27
+ <slot name="card-name" />
28
+ </p>
29
+ </div>
30
+ <slot />
31
+ </div>
32
+ </template>
@@ -0,0 +1,7 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <div class="ac-card-content b-1 b-t-n">
5
+ <slot />
6
+ </div>
7
+ </template>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <div
5
+ class="is-flex is-justify-content-space-between pt-8 pb-8 pl-20 pr-20 b-1"
6
+ >
7
+ <div class="header-left-content">
8
+ <slot name="card-header-left" />
9
+ </div>
10
+ <div class="header-right-content">
11
+ <slot name="card-header-right" />
12
+ </div>
13
+ </div>
14
+ </template>
@@ -0,0 +1,7 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <div class="ac-card-wrapper">
5
+ <slot />
6
+ </div>
7
+ </template>
@@ -0,0 +1,150 @@
1
+ <script setup lang="ts">
2
+ import { defineAsyncComponent } from "vue";
3
+ interface Props {
4
+ clusterData?: {
5
+ name?: string;
6
+ providerIcon?: string;
7
+ tags?: Array<{ value: string; class: string }>;
8
+ details?: Array<{ title: string; value: string }>;
9
+ };
10
+ modifierClasses?: string;
11
+ showOptions?: boolean;
12
+ }
13
+
14
+ withDefaults(defineProps<Props>(), {
15
+ clusterData: () => ({
16
+ name: "",
17
+ providerIcon: "",
18
+ tags: [],
19
+ details: [],
20
+ }),
21
+ modifierClasses: "",
22
+ showOptions: false,
23
+ });
24
+
25
+ const OptionDots = defineAsyncComponent(
26
+ () => import("../option-dots/Options.vue")
27
+ );
28
+ </script>
29
+
30
+ <template>
31
+ <div class="card-details" :class="modifierClasses">
32
+ <div class="c-header">
33
+ <div class="c-logo">
34
+ <img :src="clusterData.providerIcon" alt="" />
35
+ </div>
36
+ <div class="c-content">
37
+ <div class="is-flex is-justify-content-space-between">
38
+ <h4>{{ clusterData.name }}</h4>
39
+ <option-dots v-if="showOptions" :position="'is-right'">
40
+ <slot name="options" />
41
+ </option-dots>
42
+ </div>
43
+ <div class="tags">
44
+ <span
45
+ v-for="(tag, idx) in clusterData.tags"
46
+ :key="idx + tag.value"
47
+ :class="tag.class"
48
+ >{{ tag.value }}</span
49
+ >
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <div class="c-body">
54
+ <p v-for="(detail, idx) in clusterData.details" :key="idx + detail.title">
55
+ <span>{{ detail.title }}</span> <strong>{{ detail.value }}</strong>
56
+ </p>
57
+ </div>
58
+ </div>
59
+ </template>
60
+
61
+ <style lang="scss" scoped>
62
+ .card-details {
63
+ border: 1px solid $primary-90;
64
+ padding: 30px 20px;
65
+ // width: calc(33.3% - 8px);
66
+ min-width: 360px;
67
+ max-width: 520px;
68
+ // border-radius: 4px;
69
+ transition: 0.3s ease-in-out;
70
+ position: relative;
71
+ z-index: 1;
72
+
73
+ .c-header {
74
+ display: flex;
75
+ margin-bottom: 20px;
76
+
77
+ .c-logo {
78
+ width: 54px;
79
+ height: 54px;
80
+ background: #e8f3fc;
81
+ border-radius: 50%;
82
+ display: flex;
83
+ align-items: center;
84
+ justify-content: center;
85
+ margin-right: 24px;
86
+
87
+ img {
88
+ height: 24px;
89
+ }
90
+ }
91
+
92
+ .c-content {
93
+ width: calc(100% - 78px);
94
+ h4 {
95
+ font-size: 18px;
96
+ line-height: 130%;
97
+ color: #030d17;
98
+ }
99
+ .icon {
100
+ color: #0c365a;
101
+ cursor: pointer;
102
+ position: relative;
103
+ z-index: 1;
104
+ &:after {
105
+ position: absolute;
106
+ content: "";
107
+ border-radius: 50%;
108
+ width: 32px;
109
+ height: 32px;
110
+ background: #e8f3fc;
111
+ opacity: 0;
112
+ visibility: hidden;
113
+ transition: 0.3s ease-in-out;
114
+ z-index: -1;
115
+ }
116
+ &:hover {
117
+ &:after {
118
+ opacity: 1;
119
+ visibility: visible;
120
+ }
121
+ }
122
+ }
123
+ .tags {
124
+ margin-top: 12px;
125
+ }
126
+ }
127
+ }
128
+
129
+ .c-body {
130
+ display: flex;
131
+ flex-wrap: wrap;
132
+ gap: 20px;
133
+ justify-content: space-between;
134
+ p {
135
+ width: calc(25% - 16px);
136
+
137
+ span {
138
+ font-size: 11px;
139
+ color: #666666;
140
+ display: block;
141
+ }
142
+ strong {
143
+ color: #061b2d;
144
+ font-size: 13px;
145
+ font-weight: 400;
146
+ }
147
+ }
148
+ }
149
+ }
150
+ </style>
@@ -0,0 +1,27 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <a class="ac-single-card has-text-centered card-counter">
5
+ <!-- header start -->
6
+ <div class="card-header">
7
+ <h3>Clusters</h3>
8
+ <div class="logo">
9
+ <img
10
+ src="https://bb-developer-v1.web.app/_nuxt/img/cluster-icon.f68a1b6.svg"
11
+ alt=""
12
+ />
13
+ </div>
14
+ </div>
15
+ <!-- header end -->
16
+ <div class="card-body">
17
+ <div class="count cluster">072</div>
18
+ </div>
19
+ </a>
20
+ </template>
21
+ <style lang="scss" scoped>
22
+ .ac-single-card {
23
+ width: calc(25% - 8px);
24
+ max-width: 390px;
25
+ min-width: 290px;
26
+ }
27
+ </style>
@@ -0,0 +1,40 @@
1
+ <script setup lang="ts">
2
+ withDefaults(
3
+ defineProps<{
4
+ isRequired?: boolean;
5
+ statusClass?: string;
6
+ }>(),
7
+ {
8
+ isRequired: false,
9
+ statusClass: "has-background-primary-light has-text-primary",
10
+ }
11
+ );
12
+ </script>
13
+ <template>
14
+ <!-- single card wrapper start -->
15
+ <div class="card-basic b-1">
16
+ <div class="c-header is-flex is-justify-content-space-between">
17
+ <div
18
+ v-if="isRequired"
19
+ class="tag has-background-warning has-text-secondary is-rounded required"
20
+ >
21
+ Required
22
+ </div>
23
+
24
+ <div class="c-title is-flex is-align-items-center">
25
+ <div class="icon mr-8">
26
+ <slot name="card-logo" />
27
+ </div>
28
+ <h4><slot name="card-title" /></h4>
29
+ </div>
30
+ <!-- <span class="tag has-background-dark-light has-text-dark is-rounded"
31
+ >Dark</span
32
+ > -->
33
+ <slot name="card-status" />
34
+ </div>
35
+ <div class="c-body">
36
+ <p><slot name="card-sub-title" /></p>
37
+ </div>
38
+ </div>
39
+ <!-- single card wrapper end -->
40
+ </template>
@@ -0,0 +1,6 @@
1
+ <script setup lang="ts"></script>
2
+ <template>
3
+ <div class="is-flex is-flex-wrap-wrap" style="gap: 16px">
4
+ <slot />
5
+ </div>
6
+ </template>
@@ -0,0 +1,248 @@
1
+ <script setup lang="ts">
2
+ import { defineAsyncComponent } from "vue";
3
+ import type { AcTable } from "../../types/table";
4
+ interface Props {
5
+ title?: string;
6
+ modifierClasses?: string;
7
+ data: AcTable;
8
+ }
9
+
10
+ withDefaults(defineProps<Props>(), {
11
+ title: "no-title",
12
+ modifierClasses: "",
13
+ data: () => ({ columns: [], rows: [] }),
14
+ });
15
+
16
+ const OptionDots = defineAsyncComponent(
17
+ () => import("../option-dots/Options.vue")
18
+ );
19
+ </script>
20
+
21
+ <template>
22
+ <div
23
+ class="info-card"
24
+ :class="modifierClasses"
25
+ v-for="(rowData, idx) in data.rows"
26
+ :key="idx"
27
+ >
28
+ <div class="header">
29
+ <div class="logo">
30
+ <img :src="rowData.cells[0].icon" alt="icon" />
31
+ </div>
32
+ <div class="content">
33
+ <div class="is-flex is-justify-content-space-between">
34
+ <h5>{{ rowData.cells[0].data }}</h5>
35
+ <option-dots :position="'is-right is-hidden'" />
36
+ </div>
37
+ </div>
38
+ </div>
39
+ <div class="body">
40
+ <div class="left-content">
41
+ <p title="CPU (request/limit)">
42
+ <span class="icon">
43
+ <svg
44
+ width="21"
45
+ height="19"
46
+ viewBox="0 0 21 19"
47
+ fill="none"
48
+ xmlns="http://www.w3.org/2000/svg"
49
+ >
50
+ <path
51
+ d="M6.63471 1V2.45659M2.60992 6.09807H1M20.319 6.09807H18.7091M2.60992 9.73955H1M20.319 9.73955H18.7091M2.60992 13.381H1M20.319 13.381H18.7091M6.63471 17.0225V18.4791M10.6595 1V2.45659M10.6595 17.0225V18.4791M14.6843 1V2.45659M14.6843 17.0225V18.4791M5.02479 17.0225H16.2942C16.9347 17.0225 17.5489 16.7923 18.0018 16.3826C18.4547 15.9728 18.7091 15.4171 18.7091 14.8376V4.64148C18.7091 4.06201 18.4547 3.50628 18.0018 3.09653C17.5489 2.68679 16.9347 2.45659 16.2942 2.45659H5.02479C4.38433 2.45659 3.7701 2.68679 3.31722 3.09653C2.86434 3.50628 2.60992 4.06201 2.60992 4.64148V14.8376C2.60992 15.4171 2.86434 15.9728 3.31722 16.3826C3.7701 16.7923 4.38433 17.0225 5.02479 17.0225ZM5.82975 5.36978H15.4893V14.1093H5.82975V5.36978Z"
52
+ stroke="#5C5C5C"
53
+ stroke-width="0.979443"
54
+ stroke-linecap="round"
55
+ stroke-linejoin="round"
56
+ />
57
+ </svg>
58
+ </span>
59
+ <strong>
60
+ {{ rowData.cells[2].data ? rowData.cells[2].data : "-" }}
61
+ </strong>
62
+ </p>
63
+ <p title="Memory (request/limit)">
64
+ <span class="icon">
65
+ <svg
66
+ width="20"
67
+ height="13"
68
+ viewBox="0 0 20 13"
69
+ fill="none"
70
+ xmlns="http://www.w3.org/2000/svg"
71
+ >
72
+ <rect
73
+ x="0.489721"
74
+ y="0.489721"
75
+ width="18.6094"
76
+ height="11.7533"
77
+ rx="1.46916"
78
+ stroke="#5C5C5C"
79
+ stroke-width="0.979443"
80
+ />
81
+ <rect
82
+ x="3.10105"
83
+ y="2.91453"
84
+ width="2.50302"
85
+ height="7.2059"
86
+ rx="1.25151"
87
+ stroke="#5C5C5C"
88
+ stroke-width="0.979443"
89
+ />
90
+ <rect
91
+ x="8.54246"
92
+ y="2.91453"
93
+ width="2.50302"
94
+ height="7.2059"
95
+ rx="1.25151"
96
+ stroke="#5C5C5C"
97
+ stroke-width="0.979443"
98
+ />
99
+ <rect
100
+ x="13.9839"
101
+ y="2.91453"
102
+ width="2.50302"
103
+ height="7.2059"
104
+ rx="1.25151"
105
+ stroke="#5C5C5C"
106
+ stroke-width="0.979443"
107
+ />
108
+ </svg>
109
+ </span>
110
+ <strong>
111
+ {{ rowData.cells[3].data ? rowData.cells[3].data : "-" }}
112
+ </strong>
113
+ </p>
114
+ <p title="Storage (request/limit)">
115
+ <span class="icon">
116
+ <svg
117
+ width="21"
118
+ height="16"
119
+ viewBox="0 0 21 16"
120
+ fill="none"
121
+ xmlns="http://www.w3.org/2000/svg"
122
+ >
123
+ <path
124
+ d="M20.3189 7.76208H1"
125
+ stroke="#5C5C5C"
126
+ stroke-width="0.979443"
127
+ stroke-linecap="round"
128
+ stroke-linejoin="round"
129
+ />
130
+ <path
131
+ d="M4.3325 1.93817L1 7.76161V12.8328C1 13.2811 1.20354 13.7111 1.56584 14.0281C1.92814 14.3451 2.41952 14.5232 2.93189 14.5232H18.387C18.8994 14.5232 19.3907 14.3451 19.753 14.0281C20.1153 13.7111 20.3189 13.2811 20.3189 12.8328V7.76161L16.9864 1.93817C16.8264 1.65654 16.5799 1.41953 16.2744 1.2538C15.969 1.08806 15.6167 1.00017 15.2573 1H6.06154C5.70213 1.00017 5.3499 1.08806 5.04445 1.2538C4.739 1.41953 4.49244 1.65654 4.3325 1.93817Z"
132
+ stroke="#5C5C5C"
133
+ stroke-width="0.979443"
134
+ stroke-linecap="round"
135
+ stroke-linejoin="round"
136
+ />
137
+ <path
138
+ d="M4.86426 11.1421H4.87333"
139
+ stroke="#5C5C5C"
140
+ stroke-width="1.27328"
141
+ stroke-linecap="round"
142
+ stroke-linejoin="round"
143
+ />
144
+ <path
145
+ d="M8.72754 11.1421H8.73661"
146
+ stroke="#5C5C5C"
147
+ stroke-width="1.27328"
148
+ stroke-linecap="round"
149
+ stroke-linejoin="round"
150
+ />
151
+ </svg>
152
+ </span>
153
+ <strong>
154
+ {{ rowData.cells[4].data ? rowData.cells[4].data : "-" }}
155
+ </strong>
156
+ </p>
157
+ </div>
158
+ <div class="right-content">
159
+ <h2>{{ rowData.cells[1].data }}</h2>
160
+ <p>Instance</p>
161
+ </div>
162
+ </div>
163
+ </div>
164
+ </template>
165
+
166
+ <style lang="scss" scoped>
167
+ .info-card {
168
+ border: 1px solid $primary-90;
169
+ position: relative;
170
+ border-radius: 2px;
171
+ .header {
172
+ display: flex;
173
+ align-items: center;
174
+ padding: 8px 16px;
175
+ border-bottom: 1px dashed $primary-90;
176
+ background-color: $primary-97;
177
+
178
+ .logo {
179
+ display: flex;
180
+ align-items: center;
181
+ margin-right: 12px;
182
+ img {
183
+ width: 16px;
184
+ }
185
+ }
186
+
187
+ .content {
188
+ width: 100%;
189
+ h5 {
190
+ color: $primary-10;
191
+ font-weight: 500;
192
+ margin-bottom: 0;
193
+ }
194
+ }
195
+ }
196
+
197
+ .body {
198
+ display: flex;
199
+ align-items: flex-end;
200
+ justify-content: space-between;
201
+ padding: 16px;
202
+ p {
203
+ display: flex;
204
+ align-items: center;
205
+ margin-bottom: 8px;
206
+ span.icon {
207
+ padding-right: 8px;
208
+ width: 22px;
209
+ }
210
+
211
+ strong {
212
+ font-size: 13px;
213
+ font-weight: 400;
214
+ color: $primary-10;
215
+ }
216
+ }
217
+ }
218
+ }
219
+
220
+ .line-color {
221
+ position: relative;
222
+ z-index: 1;
223
+ overflow: hidden;
224
+ &::after {
225
+ position: absolute;
226
+ content: "";
227
+ left: 0;
228
+ bottom: 0;
229
+ width: 100%;
230
+ height: 1px;
231
+ background: linear-gradient(-45deg, $primary, $success, $warning, $danger);
232
+ background-size: 400% 400%;
233
+ animation: gradient 3s ease infinite;
234
+ }
235
+ }
236
+
237
+ @keyframes gradient {
238
+ 0% {
239
+ background-position: 0% 50%;
240
+ }
241
+ 50% {
242
+ background-position: 100% 50%;
243
+ }
244
+ 100% {
245
+ background-position: 0% 50%;
246
+ }
247
+ }
248
+ </style>
@@ -0,0 +1,94 @@
1
+ <script setup lang="ts">
2
+ interface Props {
3
+ title?: string;
4
+ modifierClasses?: string;
5
+ }
6
+
7
+ withDefaults(defineProps<Props>(), {
8
+ title: "no title",
9
+ modifierClasses: "",
10
+ });
11
+ </script>
12
+
13
+ <template>
14
+ <div class="card-basic b-1 mb-12 has-hover-style">
15
+ <div class="c-header is-flex is-justify-content-space-between">
16
+ <div
17
+ class="tag has-background-danger-light has-text-danger is-rounded required"
18
+ >
19
+ REQUIRED
20
+ </div>
21
+ <div class="c-title is-flex is-align-items-center">
22
+ <div class="icon mr-8">
23
+ <svg
24
+ width="24"
25
+ height="24"
26
+ viewBox="0 0 24 24"
27
+ fill="none"
28
+ xmlns="http://www.w3.org/2000/svg"
29
+ >
30
+ <path
31
+ d="M20 3H4C2.89543 3 2 3.89543 2 5V15C2 16.1046 2.89543 17 4 17H20C21.1046 17 22 16.1046 22 15V5C22 3.89543 21.1046 3 20 3Z"
32
+ stroke="#808080"
33
+ stroke-width="1.5"
34
+ stroke-linecap="round"
35
+ stroke-linejoin="round"
36
+ ></path>
37
+ <path
38
+ d="M8 21H16"
39
+ stroke="#808080"
40
+ stroke-width="1.5"
41
+ stroke-linecap="round"
42
+ stroke-linejoin="round"
43
+ ></path>
44
+ <path
45
+ d="M12 17V21"
46
+ stroke="#808080"
47
+ stroke-width="1.5"
48
+ stroke-linecap="round"
49
+ stroke-linejoin="round"
50
+ ></path>
51
+ </svg>
52
+ </div>
53
+ <h4>{{ title }}</h4>
54
+ </div>
55
+ <div class="tag has-background-success-light has-text-success is-rounded">
56
+ ENABLED
57
+ </div>
58
+ </div>
59
+ <div class="c-body">
60
+ <p>Monitor your kubernetes resources with Prometheus and Grafana.</p>
61
+ </div>
62
+ </div>
63
+ </template>
64
+
65
+ <style lang="scss">
66
+ // ac card
67
+ .card-basic {
68
+ padding: 20px;
69
+ width: calc(25% - 8px);
70
+ max-width: 390px;
71
+ min-width: 290px;
72
+ position: relative;
73
+
74
+ .required {
75
+ position: absolute;
76
+ left: 20px;
77
+ top: -9px;
78
+ }
79
+ .c-header {
80
+ .c-title {
81
+ h4 {
82
+ font-size: 18px;
83
+ color: #061b2d;
84
+ }
85
+ }
86
+ }
87
+
88
+ .c-body {
89
+ p {
90
+ color: #0c365a;
91
+ }
92
+ }
93
+ }
94
+ </style>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <div class="card-data">
5
+ <p>
6
+ <slot name="card-label" />
7
+ </p>
8
+ <strong>
9
+ <slot name="card-value" />
10
+ </strong>
11
+ </div>
12
+ </template>
13
+
14
+ <style lang="scss" scoped>
15
+ .card-data {
16
+ // min-width: 200px;
17
+ align-items: center;
18
+ display: flex;
19
+ justify-content: space-between;
20
+ border: 1px solid $primary-90;
21
+ padding: 8px 16px;
22
+ border-radius: 2px;
23
+ }
24
+ </style>