@appscode/design-system 1.1.0 → 2.0.0

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 (215) hide show
  1. package/base/_video-player.scss +65 -0
  2. package/base/utilities/_all.scss +7 -5
  3. package/base/utilities/_colors.scss +377 -0
  4. package/base/utilities/_customize-bulma.scss +23 -27
  5. package/base/utilities/_extended.scss +39 -0
  6. package/base/utilities/{_default.scss → _global.scss} +192 -333
  7. package/base/utilities/_layouts.scss +19 -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/components/_ac-alert-box.scss +205 -263
  12. package/components/_ac-calendar.scss +4 -4
  13. package/components/_ac-code-highlight.scss +13 -16
  14. package/components/_ac-content-layout.scss +165 -165
  15. package/components/_ac-drag.scss +13 -13
  16. package/components/_ac-modal.scss +212 -212
  17. package/components/_ac-options.scss +122 -123
  18. package/components/_ac-select-box.scss +10 -10
  19. package/components/_ac-table.scss +503 -502
  20. package/components/_ac-tabs.scss +65 -61
  21. package/components/_ac-tags.scss +116 -116
  22. package/components/_accordion.scss +117 -0
  23. package/components/_add-card.scss +3 -3
  24. package/components/_all.scss +35 -28
  25. package/components/_app-drawer.scss +0 -134
  26. package/components/_breadcumb.scss +0 -71
  27. package/components/_buttons.scss +779 -779
  28. package/components/_card-body-wrapper.scss +5 -5
  29. package/components/_dashboard-header.scss +0 -115
  30. package/components/_direct-deploy.scss +8 -8
  31. package/components/_getkeeper.scss +110 -0
  32. package/components/_go-to-top.scss +1 -1
  33. package/components/_graph.scss +10 -10
  34. package/components/_image-upload.scss +9 -9
  35. package/components/_input-card.scss +232 -0
  36. package/components/_input.scss +573 -0
  37. package/components/_left-sidebar-menu.scss +452 -587
  38. package/components/_monaco-editor.scss +2 -2
  39. package/components/{_ac-multi-select.scss → _multi-select.scss} +89 -251
  40. package/components/_navbar.scss +786 -752
  41. package/components/_nested-list.scss +3 -3
  42. package/components/_overview-info.scss +10 -10
  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 +14 -14
  49. package/components/_progress-bar.scss +73 -86
  50. package/components/_subscription-card.scss +22 -24
  51. package/components/_table-of-content.scss +8 -8
  52. package/components/{_ac-terminal.scss → _terminal.scss} +114 -81
  53. package/components/_tfa.scss +9 -9
  54. package/components/_transitions.scss +35 -0
  55. package/components/_widget-menu.scss +252 -257
  56. package/components/_wizard.scss +518 -793
  57. package/components/ac-toaster/_ac-toasted.scss +11 -16
  58. package/components/bbum/_activities-header.scss +1 -1
  59. package/components/bbum/_card-team.scss +12 -12
  60. package/components/bbum/_information-center.scss +21 -23
  61. package/components/bbum/_left-sidebar.scss +8 -8
  62. package/components/bbum/_mobile-desktop.scss +16 -21
  63. package/components/bbum/_post.scss +5 -5
  64. package/components/bbum/_sign-up-notification.scss +10 -10
  65. package/components/bbum/_single-post-preview.scss +29 -29
  66. package/components/bbum/_user-profile.scss +10 -10
  67. package/components/ui-builder/_ui-builder.scss +221 -31
  68. package/components/ui-builder/_vue-open-api.scss +565 -7
  69. package/icons/close-icon.svg +3 -0
  70. package/layouts/_code-preview.scss +17 -18
  71. package/main.scss +26 -10
  72. package/package.json +1 -1
  73. package/plugins/theme.js +11 -9
  74. package/plugins/vue-toaster.js +1 -1
  75. package/vue-components/images/icons/cluster-icon.svg +10 -0
  76. package/vue-components/images/icons/org-icon.svg +10 -0
  77. package/vue-components/plugins/time-convert.js +49 -0
  78. package/vue-components/types/cluster.ts +6 -0
  79. package/vue-components/types/importFlow.ts +16 -0
  80. package/vue-components/types/notification.ts +6 -0
  81. package/vue-components/types/previewYaml.ts +8 -0
  82. package/vue-components/types/table.ts +55 -0
  83. package/vue-components/types/theme.ts +10 -0
  84. package/vue-components/types/user.ts +22 -0
  85. package/vue-components/v2/banner/Banner.vue +1 -1
  86. package/vue-components/v2/button/Buttons.vue +1 -1
  87. package/vue-components/v2/card/Card.vue +1 -1
  88. package/vue-components/v2/card/OverviewCards.vue +17 -2
  89. package/vue-components/v2/content/ContentTable.vue +14 -9
  90. package/vue-components/v2/editor/FilteredFileEditor.vue +2 -2
  91. package/vue-components/v2/editor/ResourceKeyValueEditor.vue +21 -21
  92. package/vue-components/v2/icons/Ellipsis.vue +2 -1
  93. package/vue-components/v2/modal/Modal.vue +2 -6
  94. package/vue-components/v2/navbar/Appdrawer.vue +37 -12
  95. package/vue-components/v2/navbar/Navbar.vue +3 -3
  96. package/vue-components/v2/navbar/NavbarItem.vue +3 -1
  97. package/vue-components/v2/navbar/NavbarItemContent.vue +1 -1
  98. package/vue-components/v2/navbar/User.vue +5 -22
  99. package/vue-components/v2/pagination/Pagination.vue +66 -0
  100. package/vue-components/v2/sidebar/SidebarItem.vue +10 -7
  101. package/{components/_ac-accordion.scss → vue-components/v3/accordion/Accordion.vue} +40 -6
  102. package/vue-components/v3/alert/Alert.vue +238 -0
  103. package/vue-components/v3/alert/Toast.vue +79 -0
  104. package/vue-components/v3/banner/Banner.vue +10 -0
  105. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +166 -0
  106. package/vue-components/v3/button/Button.vue +110 -57
  107. package/vue-components/v3/button/Buttons.vue +22 -0
  108. package/vue-components/v3/button/DownloadBtn.vue +31 -0
  109. package/vue-components/v3/cards/Card.vue +32 -0
  110. package/vue-components/v3/cards/CardContent.vue +7 -0
  111. package/vue-components/v3/cards/CardHeader.vue +14 -0
  112. package/vue-components/v3/cards/Cards.vue +7 -0
  113. package/vue-components/v3/cards/Cluster.vue +159 -0
  114. package/vue-components/v3/cards/Counter.vue +39 -0
  115. package/vue-components/v3/cards/FeatureCard.vue +67 -0
  116. package/vue-components/v3/cards/FeatureCards.vue +6 -0
  117. package/vue-components/v3/cards/InfoCard.vue +242 -0
  118. package/vue-components/v3/cards/Monitoring.vue +90 -0
  119. package/vue-components/v3/cards/OrgClusterCard.vue +86 -0
  120. package/vue-components/v3/cards/OverviewCard.vue +28 -0
  121. package/vue-components/v3/cards/OverviewCards.vue +39 -0
  122. package/vue-components/v3/cards/Payment.vue +62 -0
  123. package/vue-components/v3/cards/Vendor.vue +89 -0
  124. package/vue-components/v3/content/ContentHeader.vue +39 -30
  125. package/vue-components/v3/content/ContentLayout.vue +20 -0
  126. package/vue-components/v3/content/ContentTable.vue +44 -58
  127. package/vue-components/v3/dropdown/DropdownAction.vue +95 -0
  128. package/vue-components/v3/dropdown/DropdownDivider.vue +2 -0
  129. package/vue-components/v3/dropdown/DropdownItem.vue +2 -0
  130. package/vue-components/v3/dropdown/DropdownMenu.vue +85 -91
  131. package/vue-components/v3/editor/Editor.vue +117 -115
  132. package/vue-components/v3/editor/FilteredFileEditor.vue +325 -128
  133. package/vue-components/v3/editor/ResourceKeyValueEditor.vue +73 -94
  134. package/vue-components/v3/footer/FooterArea.vue +40 -0
  135. package/vue-components/v3/footer/FooterItem.vue +32 -0
  136. package/vue-components/v3/footer/FooterItems.vue +15 -0
  137. package/vue-components/v3/footer/Info.vue +25 -0
  138. package/vue-components/v3/footer/Status.vue +43 -0
  139. package/vue-components/v3/footer/Usage.vue +34 -0
  140. package/vue-components/v3/form/Form.vue +24 -36
  141. package/vue-components/v3/form/FormFooter.vue +24 -0
  142. package/vue-components/v3/form/FormFooterControl.vue +7 -0
  143. package/vue-components/v3/form/FormFooterControls.vue +7 -0
  144. package/vue-components/v3/form-fields/AcSingleInput.vue +21 -0
  145. package/vue-components/v3/form-fields/FileUpload.vue +89 -0
  146. package/vue-components/v3/form-fields/Input.vue +19 -15
  147. package/vue-components/v3/header/Header.vue +120 -26
  148. package/vue-components/v3/header/HeaderItem.vue +18 -0
  149. package/vue-components/v3/header/HeaderItems.vue +4 -0
  150. package/vue-components/v3/icons/Ellipsis.vue +2 -0
  151. package/vue-components/v3/loaders/ClusterSwitcherLoader.vue +13 -0
  152. package/vue-components/v3/loaders/InfoCardLoader.vue +19 -0
  153. package/vue-components/v3/loaders/ResourceLoader.vue +4 -12
  154. package/vue-components/v3/loaders/SidebarLoader.vue +4 -12
  155. package/vue-components/v3/loaders/SingleInfoCardLoader.vue +24 -0
  156. package/vue-components/v3/modal/Modal.vue +294 -95
  157. package/vue-components/v3/modals/DeleteConfirmationModal.vue +37 -50
  158. package/vue-components/v3/modals/JsonShowModal.vue +63 -68
  159. package/vue-components/v3/navbar/Appdrawer.vue +198 -51
  160. package/vue-components/v3/navbar/Navbar.vue +139 -0
  161. package/vue-components/v3/navbar/NavbarItem.vue +103 -0
  162. package/vue-components/v3/navbar/NavbarItemContent.vue +282 -0
  163. package/vue-components/v3/navbar/Notification.vue +207 -0
  164. package/vue-components/v3/navbar/ThemeMode.vue +128 -112
  165. package/vue-components/v3/navbar/User.vue +394 -267
  166. package/vue-components/v3/notification/AlertBox.vue +266 -39
  167. package/vue-components/v3/notification/Notification.vue +50 -44
  168. package/vue-components/v3/notification/NotificationItem.vue +51 -19
  169. package/vue-components/v3/option-dots/Options.vue +197 -0
  170. package/vue-components/v3/pagination/Pagination.vue +216 -102
  171. package/vue-components/v3/preloader/Preloader.vue +23 -0
  172. package/vue-components/v3/searchbars/SearchBar.vue +50 -34
  173. package/vue-components/v3/sidebar/AccentColorPicker.vue +97 -0
  174. package/vue-components/v3/sidebar/ClusterSwitcher.vue +71 -86
  175. package/vue-components/v3/sidebar/Sidebar.vue +239 -0
  176. package/vue-components/v3/sidebar/SidebarBody.vue +14 -0
  177. package/vue-components/v3/sidebar/SidebarFooter.vue +89 -0
  178. package/vue-components/v3/sidebar/SidebarHeader.vue +131 -0
  179. package/vue-components/v3/sidebar/SidebarItem.vue +62 -0
  180. package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +101 -104
  181. package/vue-components/v3/sidebar/SidebarMenuList.vue +9 -0
  182. package/vue-components/v3/sidebar/Steps.vue +152 -0
  183. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +204 -0
  184. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +44 -0
  185. package/vue-components/v3/sidebar/sidebar-tabs/TabsContent.vue +99 -0
  186. package/vue-components/v3/tab/TabItem.vue +10 -12
  187. package/vue-components/v3/tab/Tabs.vue +36 -0
  188. package/vue-components/v3/tab/TabsBody.vue +7 -0
  189. package/vue-components/v3/table/EmptyTableInfo.vue +8 -0
  190. package/vue-components/v3/table/FakeTableCell.vue +22 -31
  191. package/vue-components/v3/table/InfoTable.vue +89 -61
  192. package/vue-components/v3/table/MultiInfoTable.vue +72 -95
  193. package/vue-components/v3/table/Table.vue +596 -157
  194. package/vue-components/v3/table/TableCell.vue +13 -24
  195. package/vue-components/v3/table/TableContainer.vue +50 -28
  196. package/vue-components/v3/table/TableRow.vue +65 -87
  197. package/vue-components/v3/table/table-cell/ArrayCell.vue +94 -103
  198. package/vue-components/v3/table/table-cell/CellValue.vue +74 -106
  199. package/vue-components/v3/table/table-cell/GenericCell.vue +43 -42
  200. package/vue-components/v3/table/table-cell/ObjectCell.vue +91 -101
  201. package/vue-components/v3/table/table-cell/ValueWithModal.vue +22 -31
  202. package/vue-components/v3/tabs/EditorTabs.vue +18 -24
  203. package/vue-components/v3/tag/Tag.vue +16 -12
  204. package/vue-components/v3/tag/Tags.vue +7 -0
  205. package/base/utilities/_derived-variables.scss +0 -25
  206. package/base/utilities/_initial-variables.scss +0 -215
  207. package/base/utilities/dark-theme.scss +0 -26
  208. package/components/_ac-card.scss +0 -597
  209. package/components/_ac-input.scss +0 -876
  210. package/mixins/stickyContent.js +0 -141
  211. package/plugins/caching.ts +0 -243
  212. package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +0 -92
  213. package/vue-components/v3/modals/LongRunningTasksModal.vue +0 -400
  214. package/vue-components/v3/terminal/LongRunningTaskTerminal.vue +0 -148
  215. /package/components/{_ac-report.scss → _report.scss} +0 -0
@@ -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,159 @@
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" data-testid="cluster-item-navigate">
32
+ <option-dots v-if="showOptions" :position="'is-right'">
33
+ <slot name="options" />
34
+ </option-dots>
35
+ <div class="card-details-inner" :class="modifierClasses">
36
+ <div class="c-header">
37
+ <div class="c-logo">
38
+ <img :src="clusterData.providerIcon" alt="" />
39
+ </div>
40
+ <div class="c-content">
41
+ <div class="is-flex is-justify-content-space-between pr-32">
42
+ <h4 data-testid="cluster-title-text">{{ clusterData.name }}</h4>
43
+ </div>
44
+ <div class="tags">
45
+ <span
46
+ v-for="(tag, idx) in clusterData.tags"
47
+ :key="idx + tag.value"
48
+ :class="tag.class"
49
+ :data-testid="idx === 0 ? 'cluster-status-text' : undefined"
50
+ >{{ tag.value }}</span
51
+ >
52
+ </div>
53
+ </div>
54
+ </div>
55
+ <div class="c-body">
56
+ <p
57
+ v-for="(detail, idx) in clusterData.details"
58
+ :key="idx + detail.title"
59
+ >
60
+ <span>{{ detail.title }}</span> <strong>{{ detail.value }}</strong>
61
+ </p>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </template>
66
+
67
+ <style lang="scss" scoped>
68
+ .card-details {
69
+ border: 1px solid $primary-90;
70
+ padding: 30px 20px;
71
+ transition: 0.3s ease-in-out;
72
+ position: relative;
73
+ z-index: 1;
74
+ width: 100%;
75
+
76
+ .ac-options {
77
+ position: absolute;
78
+ right: 20px;
79
+ top: 30px;
80
+ z-index: 999;
81
+ }
82
+ .c-header {
83
+ display: flex;
84
+ margin-bottom: 20px;
85
+
86
+ .c-logo {
87
+ width: 54px;
88
+ height: 54px;
89
+ background: #e8f3fc;
90
+ border-radius: 50%;
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ margin-right: 24px;
95
+
96
+ img {
97
+ height: 24px;
98
+ }
99
+ }
100
+
101
+ .c-content {
102
+ width: calc(100% - 78px);
103
+ h4 {
104
+ font-size: 18px;
105
+ line-height: 130%;
106
+ color: #030d17;
107
+ }
108
+ .icon {
109
+ color: #0c365a;
110
+ cursor: pointer;
111
+ position: relative;
112
+ z-index: 1;
113
+ &:after {
114
+ position: absolute;
115
+ content: "";
116
+ border-radius: 50%;
117
+ width: 32px;
118
+ height: 32px;
119
+ background: #e8f3fc;
120
+ opacity: 0;
121
+ visibility: hidden;
122
+ transition: 0.3s ease-in-out;
123
+ z-index: -1;
124
+ }
125
+ &:hover {
126
+ &:after {
127
+ opacity: 1;
128
+ visibility: visible;
129
+ }
130
+ }
131
+ }
132
+ .tags {
133
+ margin-top: 12px;
134
+ }
135
+ }
136
+ }
137
+
138
+ .c-body {
139
+ display: flex;
140
+ flex-wrap: wrap;
141
+ gap: 20px;
142
+ justify-content: space-between;
143
+ p {
144
+ width: calc(25% - 16px);
145
+
146
+ span {
147
+ font-size: 11px;
148
+ color: #666666;
149
+ display: block;
150
+ }
151
+ strong {
152
+ color: #061b2d;
153
+ font-size: 13px;
154
+ font-weight: 400;
155
+ }
156
+ }
157
+ }
158
+ }
159
+ </style>
@@ -0,0 +1,39 @@
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
+ display: flex;
28
+ flex-direction: column;
29
+ justify-content: space-between;
30
+ height: 200px;
31
+
32
+ border: 1px solid $primary-90;
33
+
34
+ .card-header {
35
+ display: flex;
36
+ justify-content: space-between;
37
+ }
38
+ }
39
+ </style>
@@ -0,0 +1,67 @@
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" data-testid="simple-feature-card">
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 gap-8 is-fullwidth is-align-items-center">
25
+ <div class="icon">
26
+ <slot name="card-logo" />
27
+ </div>
28
+ <h5><slot name="card-title" /></h5>
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>
41
+
42
+ <style lang="scss" scoped>
43
+ // ac card
44
+ .card-basic {
45
+ padding: 20px;
46
+ width: calc(25% - 8px);
47
+ max-width: 390px;
48
+ min-width: 290px;
49
+ position: relative;
50
+
51
+ .required {
52
+ position: absolute;
53
+ left: 20px;
54
+ top: -9px;
55
+ }
56
+ .c-title {
57
+ h5 {
58
+ width: calc(100% - 28px);
59
+ }
60
+ }
61
+ .c-body {
62
+ p {
63
+ color: #0c365a;
64
+ }
65
+ }
66
+ }
67
+ </style>
@@ -0,0 +1,6 @@
1
+ <script setup lang="ts"></script>
2
+ <template>
3
+ <div class="is-flex is-flex-wrap-wrap" data-testid="simple-feature-sets" style="gap: 16px">
4
+ <slot />
5
+ </div>
6
+ </template>
@@ -0,0 +1,242 @@
1
+ <script setup lang="ts">
2
+ import { defineAsyncComponent } from "vue";
3
+ import type { AcTableRow } from "../../types/table";
4
+ interface Props {
5
+ title?: string;
6
+ modifierClasses?: string;
7
+ rowData?: AcTableRow;
8
+ }
9
+
10
+ withDefaults(defineProps<Props>(), {
11
+ title: "no-title",
12
+ modifierClasses: "",
13
+ rowData: () => ({ cells: [] }),
14
+ });
15
+
16
+ const OptionDots = defineAsyncComponent(
17
+ () => import("../option-dots/Options.vue")
18
+ );
19
+ </script>
20
+
21
+ <template>
22
+ <div class="info-card" :class="modifierClasses">
23
+ <div class="header">
24
+ <div class="logo">
25
+ <img :src="rowData.cells[0].icon" alt="icon" />
26
+ </div>
27
+ <div class="content">
28
+ <div class="is-flex is-justify-content-space-between">
29
+ <h5>{{ rowData.cells[0].data }}</h5>
30
+ <option-dots :position="'is-right is-hidden'" />
31
+ </div>
32
+ </div>
33
+ </div>
34
+ <div class="body">
35
+ <div class="left-content">
36
+ <p title="CPU (request/limit)">
37
+ <span class="icon">
38
+ <svg
39
+ width="21"
40
+ height="19"
41
+ viewBox="0 0 21 19"
42
+ fill="none"
43
+ xmlns="http://www.w3.org/2000/svg"
44
+ >
45
+ <path
46
+ 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"
47
+ stroke="#5C5C5C"
48
+ stroke-width="0.979443"
49
+ stroke-linecap="round"
50
+ stroke-linejoin="round"
51
+ />
52
+ </svg>
53
+ </span>
54
+ <strong>
55
+ {{ rowData.cells[2].data ? rowData.cells[2].data : "-" }}
56
+ </strong>
57
+ </p>
58
+ <p title="Memory (request/limit)">
59
+ <span class="icon">
60
+ <svg
61
+ width="20"
62
+ height="13"
63
+ viewBox="0 0 20 13"
64
+ fill="none"
65
+ xmlns="http://www.w3.org/2000/svg"
66
+ >
67
+ <rect
68
+ x="0.489721"
69
+ y="0.489721"
70
+ width="18.6094"
71
+ height="11.7533"
72
+ rx="1.46916"
73
+ stroke="#5C5C5C"
74
+ stroke-width="0.979443"
75
+ />
76
+ <rect
77
+ x="3.10105"
78
+ y="2.91453"
79
+ width="2.50302"
80
+ height="7.2059"
81
+ rx="1.25151"
82
+ stroke="#5C5C5C"
83
+ stroke-width="0.979443"
84
+ />
85
+ <rect
86
+ x="8.54246"
87
+ y="2.91453"
88
+ width="2.50302"
89
+ height="7.2059"
90
+ rx="1.25151"
91
+ stroke="#5C5C5C"
92
+ stroke-width="0.979443"
93
+ />
94
+ <rect
95
+ x="13.9839"
96
+ y="2.91453"
97
+ width="2.50302"
98
+ height="7.2059"
99
+ rx="1.25151"
100
+ stroke="#5C5C5C"
101
+ stroke-width="0.979443"
102
+ />
103
+ </svg>
104
+ </span>
105
+ <strong>
106
+ {{ rowData.cells[3].data ? rowData.cells[3].data : "-" }}
107
+ </strong>
108
+ </p>
109
+ <p title="Storage (request/limit)">
110
+ <span class="icon">
111
+ <svg
112
+ width="21"
113
+ height="16"
114
+ viewBox="0 0 21 16"
115
+ fill="none"
116
+ xmlns="http://www.w3.org/2000/svg"
117
+ >
118
+ <path
119
+ d="M20.3189 7.76208H1"
120
+ stroke="#5C5C5C"
121
+ stroke-width="0.979443"
122
+ stroke-linecap="round"
123
+ stroke-linejoin="round"
124
+ />
125
+ <path
126
+ 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"
127
+ stroke="#5C5C5C"
128
+ stroke-width="0.979443"
129
+ stroke-linecap="round"
130
+ stroke-linejoin="round"
131
+ />
132
+ <path
133
+ d="M4.86426 11.1421H4.87333"
134
+ stroke="#5C5C5C"
135
+ stroke-width="1.27328"
136
+ stroke-linecap="round"
137
+ stroke-linejoin="round"
138
+ />
139
+ <path
140
+ d="M8.72754 11.1421H8.73661"
141
+ stroke="#5C5C5C"
142
+ stroke-width="1.27328"
143
+ stroke-linecap="round"
144
+ stroke-linejoin="round"
145
+ />
146
+ </svg>
147
+ </span>
148
+ <strong>
149
+ {{ rowData.cells[4].data ? rowData.cells[4].data : "-" }}
150
+ </strong>
151
+ </p>
152
+ </div>
153
+ <div class="right-content">
154
+ <h2>{{ rowData.cells[1].data }}</h2>
155
+ <p>Instance</p>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </template>
160
+
161
+ <style lang="scss" scoped>
162
+ .info-card {
163
+ border: 1px solid $primary-90;
164
+ position: relative;
165
+ border-radius: 2px;
166
+ .header {
167
+ display: flex;
168
+ align-items: center;
169
+ padding: 12px 16px;
170
+ border-bottom: 1px dashed $primary-90;
171
+
172
+ .logo {
173
+ display: flex;
174
+ align-items: center;
175
+ margin-right: 12px;
176
+ img {
177
+ width: 16px;
178
+ }
179
+ }
180
+
181
+ .content {
182
+ width: 100%;
183
+ h5 {
184
+ color: $primary-10;
185
+ font-weight: 500;
186
+ margin-bottom: 0;
187
+ }
188
+ }
189
+ }
190
+
191
+ .body {
192
+ display: flex;
193
+ align-items: flex-end;
194
+ justify-content: space-between;
195
+ padding: 16px;
196
+ p {
197
+ display: flex;
198
+ align-items: center;
199
+ margin-bottom: 8px;
200
+ span.icon {
201
+ padding-right: 8px;
202
+ width: 22px;
203
+ }
204
+
205
+ strong {
206
+ font-size: 13px;
207
+ font-weight: 400;
208
+ color: $primary-10;
209
+ }
210
+ }
211
+ }
212
+ }
213
+
214
+ .line-color {
215
+ position: relative;
216
+ z-index: 1;
217
+ overflow: hidden;
218
+ &::after {
219
+ position: absolute;
220
+ content: "";
221
+ left: 0;
222
+ bottom: 0;
223
+ width: 100%;
224
+ height: 1px;
225
+ background: linear-gradient(-45deg, $primary, $success, $warning, $danger);
226
+ background-size: 400% 400%;
227
+ animation: gradient 3s ease infinite;
228
+ }
229
+ }
230
+
231
+ @keyframes gradient {
232
+ 0% {
233
+ background-position: 0% 50%;
234
+ }
235
+ 50% {
236
+ background-position: 100% 50%;
237
+ }
238
+ 100% {
239
+ background-position: 0% 50%;
240
+ }
241
+ }
242
+ </style>
@@ -0,0 +1,90 @@
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 gap-8 is-fullwidth is-align-items-center">
22
+ <div class="icon">
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
+ <h5>{{ title }}</h5>
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" scoped>
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-title {
80
+ h5 {
81
+ width: calc(100% - 28px);
82
+ }
83
+ }
84
+ .c-body {
85
+ p {
86
+ color: #0c365a;
87
+ }
88
+ }
89
+ }
90
+ </style>