@appscode/design-system 2.4.26 → 2.4.27-alpha1
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.
- package/main.scss +4 -0
- package/package.json +1 -1
- package/vue-components/styles/base/utilities/_colors.scss +1 -1
- package/vue-components/styles/base/utilities/_global.scss +13 -0
- package/vue-components/styles/base/utilities/_typography.scss +1 -1
- package/vue-components/styles/components/inbox/all.scss +88 -0
- package/vue-components/v3/form-fields/Searchbar.vue +25 -23
- package/vue-components/v3/icons/ArrowDownIcon.vue +2 -2
- package/vue-components/v3/icons/CloseIcon.vue +2 -9
- package/vue-components/v3/icons/EllipsisVertical.vue +16 -0
- package/vue-components/v3/icons/InfoIcon.vue +9 -0
- package/vue-components/v3/icons/SearchIcon.vue +16 -0
- package/vue-components/v3/icons/StarIcon.vue +33 -0
- package/vue-components/v3/icons/TrashIcon.vue +16 -0
- package/vue-components/v3/inbox/Inbox.vue +13 -0
- package/vue-components/v3/inbox/MessageDetails.vue +102 -0
- package/vue-components/v3/inbox/MessageList.vue +95 -0
- package/vue-components/v3/navbar/Appdrawer.vue +7 -8
package/main.scss
CHANGED
|
@@ -16,11 +16,15 @@
|
|
|
16
16
|
// COMPONENTS
|
|
17
17
|
// @import "@/components/vue-components/styles/components/all";
|
|
18
18
|
@import "@/components/vue-components/styles/components/button";
|
|
19
|
+
@import "@/components/vue-components/styles/components/avatar";
|
|
19
20
|
@import "@/components/vue-components/styles/components/terminal";
|
|
20
21
|
@import "@/components/vue-components/styles/components/steps";
|
|
21
22
|
@import "@/components/vue-components/styles/components/code-preview/all";
|
|
22
23
|
@import "@/components/vue-components/styles/components/form-fields/input";
|
|
24
|
+
@import "@/components/vue-components/styles/components/form-fields/check-radio-switch";
|
|
23
25
|
@import "@/components/vue-components/styles/components/form-fields/custom-selectbox";
|
|
26
|
+
@import "@/components/vue-components/styles/components/inbox/all";
|
|
24
27
|
@import "@/components/vue-components/styles/components/ui-builder/vue-open-api";
|
|
25
28
|
@import "@/components/vue-components/styles/components/ui-builder/ui-builder";
|
|
29
|
+
@import "@/components/vue-components/styles/components/dropdown.scss";
|
|
26
30
|
// @import "@/components/vue-components/styles/theme/appscode.scss";
|
package/package.json
CHANGED
|
@@ -56,7 +56,7 @@ $secondary-dark-grey: hsl($secondary-hue, 10%, 10%);
|
|
|
56
56
|
$secondary-light-gray: hsl($secondary-hue, 10%, 96%);
|
|
57
57
|
$secondary-dark-gray: hsl($secondary-hue, 10%, 10%);
|
|
58
58
|
|
|
59
|
-
$color-text: hsl($secondary-hue, 10%,
|
|
59
|
+
$color-text: hsl($secondary-hue, 10%, 25%);
|
|
60
60
|
$color-heading: hsl($secondary-hue, 10%, 10%);
|
|
61
61
|
$color-label: hsl($secondary-hue, 20%, 30%);
|
|
62
62
|
$color-link: hsl($secondary-hue, 40%, 20%);
|
|
@@ -333,6 +333,19 @@ hr {
|
|
|
333
333
|
}
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
+
.overflow-y-hidden {
|
|
337
|
+
overflow-y: hidden;
|
|
338
|
+
}
|
|
339
|
+
.overflow-x-hidden {
|
|
340
|
+
overflow-x: hidden;
|
|
341
|
+
}
|
|
342
|
+
.overflow-y-auto {
|
|
343
|
+
overflow-y: auto;
|
|
344
|
+
}
|
|
345
|
+
.overflow-x-auto {
|
|
346
|
+
overflow-x: auto;
|
|
347
|
+
}
|
|
348
|
+
|
|
336
349
|
.is-transparent-bg {
|
|
337
350
|
background-color: transparent !important;
|
|
338
351
|
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
.inbox-sidebar {
|
|
2
|
+
width: 460px;
|
|
3
|
+
border-right: 1px solid $color-border;
|
|
4
|
+
// padding: 20px;
|
|
5
|
+
// box-shadow: 2px 0px 6px 2px rgba(0, 0, 0, 0.04);
|
|
6
|
+
position: sticky;
|
|
7
|
+
top: 60px;
|
|
8
|
+
@include until-widescreen {
|
|
9
|
+
width: 360px;
|
|
10
|
+
}
|
|
11
|
+
.head {
|
|
12
|
+
position: sticky;
|
|
13
|
+
top: 0px;
|
|
14
|
+
z-index: 99;
|
|
15
|
+
background-color: #fff;
|
|
16
|
+
padding: 20px;
|
|
17
|
+
// box-shadow: $ac-shadow-1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
.message-list {
|
|
21
|
+
height: calc(100vh - 170px);
|
|
22
|
+
overflow-y: auto;
|
|
23
|
+
overflow-x: hidden;
|
|
24
|
+
padding-inline: 20px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.single-message {
|
|
28
|
+
transition: 0.2s ease-in-out;
|
|
29
|
+
padding: 10px 20px;
|
|
30
|
+
border-radius: 4px;
|
|
31
|
+
position: relative;
|
|
32
|
+
z-index: 9;
|
|
33
|
+
width: calc(100% + 40px);
|
|
34
|
+
margin-left: -20px;
|
|
35
|
+
&:after {
|
|
36
|
+
position: absolute;
|
|
37
|
+
content: "";
|
|
38
|
+
left: 0;
|
|
39
|
+
top: 0;
|
|
40
|
+
width: 0px;
|
|
41
|
+
height: 100%;
|
|
42
|
+
border-radius: 4px 0 0 4px;
|
|
43
|
+
background-color: $ac-primary;
|
|
44
|
+
opacity: 0;
|
|
45
|
+
visibility: hidden;
|
|
46
|
+
transition: 0.2s ease-in-out;
|
|
47
|
+
}
|
|
48
|
+
&.is-unread {
|
|
49
|
+
background-color: $primary-light-gray;
|
|
50
|
+
}
|
|
51
|
+
&:hover {
|
|
52
|
+
background-color: $primary-95;
|
|
53
|
+
&::after {
|
|
54
|
+
opacity: 1;
|
|
55
|
+
visibility: visible;
|
|
56
|
+
width: 4px;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.message-details {
|
|
62
|
+
max-width: 768px;
|
|
63
|
+
margin: 36px 32px 32px 64px;
|
|
64
|
+
@include until-widescreen {
|
|
65
|
+
margin: 36px 16px 16px 16px;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.recommended-actions {
|
|
70
|
+
border-radius: 8px;
|
|
71
|
+
box-shadow: 0px 1px 10px 3px rgba(0, 0, 0, 0.06);
|
|
72
|
+
border: 1px solid $color-border;
|
|
73
|
+
overflow: hidden;
|
|
74
|
+
.recommended-heading {
|
|
75
|
+
padding: 10px 20px;
|
|
76
|
+
border-bottom: 1px solid $color-border;
|
|
77
|
+
background-color: $secondary-light-gray;
|
|
78
|
+
}
|
|
79
|
+
.recommended-body {
|
|
80
|
+
padding: 12px 8px;
|
|
81
|
+
.single-action {
|
|
82
|
+
background-color: hsla(var(--secondary-hue), 12%, 98%);
|
|
83
|
+
border: 1px solid $color-border;
|
|
84
|
+
padding: 16px 20px;
|
|
85
|
+
border-radius: 4px;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -1,35 +1,37 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { defineAsyncComponent } from "vue";
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
size?: string;
|
|
7
|
+
loading?: boolean;
|
|
8
|
+
withResult?: boolean;
|
|
9
|
+
}
|
|
10
|
+
withDefaults(defineProps<Props>(), {
|
|
11
|
+
placeholder: "Search what you are looking for",
|
|
12
|
+
size: "is-small",
|
|
13
|
+
loading: false,
|
|
14
|
+
withResult: false,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const SearchIcon = defineAsyncComponent(() => import("./../icons/SearchIcon.vue"));
|
|
18
|
+
const RefreshIcon = defineAsyncComponent(() => import("./../icons/RefreshIcon.vue"));
|
|
19
|
+
</script>
|
|
1
20
|
<template>
|
|
2
21
|
<!-- searchbar -->
|
|
3
22
|
<div class="searchbar ac-single-input is-small is-relative">
|
|
4
23
|
<label for="search">
|
|
5
24
|
<span class="icon">
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
fill="none"
|
|
9
|
-
viewBox="0 0 24 24"
|
|
10
|
-
stroke-width="1.5"
|
|
11
|
-
stroke="currentColor"
|
|
12
|
-
class="w-6 h-6"
|
|
13
|
-
>
|
|
14
|
-
<path
|
|
15
|
-
stroke-linecap="round"
|
|
16
|
-
stroke-linejoin="round"
|
|
17
|
-
d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"
|
|
18
|
-
/>
|
|
19
|
-
</svg>
|
|
25
|
+
<RefreshIcon v-if="loading" class="is-spin" />
|
|
26
|
+
<SearchIcon v-else />
|
|
20
27
|
</span>
|
|
21
28
|
</label>
|
|
22
|
-
<input id="search" type="text" placeholder="
|
|
29
|
+
<input id="search" type="text" :placeholder="placeholder" class="pl-40" />
|
|
23
30
|
|
|
24
31
|
<!-- use .is-absolute -->
|
|
25
|
-
<div
|
|
26
|
-
<div class="search-content
|
|
27
|
-
<
|
|
28
|
-
<h2 class="is-size-5 has-text-primary">Changelog | <em>Kube</em>DB</h2>
|
|
29
|
-
<p class="is-ellipsis-2">
|
|
30
|
-
<em>Kube</em>DB v2020.07.10-beta.1 (2020-07-10) kubedb/apimachinery v0.14.0-beta.1 157a8724 Update for…
|
|
31
|
-
</p>
|
|
32
|
-
</a>
|
|
32
|
+
<div v-if="withResult" class="search-result-box panel is-fullwidth z-900">
|
|
33
|
+
<div class="search-content ac-vscrollbar p-0" style="max-height: 350px; overflow-y: auto">
|
|
34
|
+
<slot name="search-result" />
|
|
33
35
|
</div>
|
|
34
36
|
</div>
|
|
35
37
|
</div>
|
|
@@ -8,14 +8,14 @@ withDefaults(defineProps<{ direction?: "up" | "down" }>(), {
|
|
|
8
8
|
<svg
|
|
9
9
|
xmlns="http://www.w3.org/2000/svg"
|
|
10
10
|
fill="none"
|
|
11
|
-
width="16px"
|
|
12
11
|
height="16px"
|
|
12
|
+
width="16px"
|
|
13
13
|
viewBox="0 0 24 24"
|
|
14
14
|
stroke-width="1.5"
|
|
15
15
|
stroke="currentColor"
|
|
16
16
|
class="size-6"
|
|
17
17
|
:style="direction === 'up' ? 'transform: rotate(0deg)' : 'transform: rotate(-180deg)'"
|
|
18
18
|
>
|
|
19
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="
|
|
19
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5" />
|
|
20
20
|
</svg>
|
|
21
21
|
</template>
|
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
withDefaults(defineProps<{ direction?: "up" | "down" }>(), {
|
|
3
|
-
direction: "up",
|
|
4
|
-
});
|
|
5
|
-
</script>
|
|
6
|
-
|
|
7
1
|
<template>
|
|
8
2
|
<svg
|
|
9
3
|
xmlns="http://www.w3.org/2000/svg"
|
|
10
4
|
fill="none"
|
|
11
|
-
height="16px"
|
|
12
5
|
width="16px"
|
|
6
|
+
height="16px"
|
|
13
7
|
viewBox="0 0 24 24"
|
|
14
8
|
stroke-width="1.5"
|
|
15
9
|
stroke="currentColor"
|
|
16
10
|
class="size-6"
|
|
17
|
-
:style="direction === 'up' ? 'transform: rotate(0deg)' : 'transform: rotate(-180deg)'"
|
|
18
11
|
>
|
|
19
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="
|
|
12
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
|
|
20
13
|
</svg>
|
|
21
14
|
</template>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
fill="none"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
stroke-width="1.5"
|
|
7
|
+
stroke="currentColor"
|
|
8
|
+
class="size-6"
|
|
9
|
+
>
|
|
10
|
+
<path
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
d="M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 18.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z"
|
|
14
|
+
/>
|
|
15
|
+
</svg>
|
|
16
|
+
</template>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="width-32">
|
|
3
|
+
<path
|
|
4
|
+
fill-rule="evenodd"
|
|
5
|
+
d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 0 1 .67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 1 1-.671-1.34l.041-.022ZM12 9a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z"
|
|
6
|
+
clip-rule="evenodd"
|
|
7
|
+
/>
|
|
8
|
+
</svg>
|
|
9
|
+
</template>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
fill="none"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
stroke-width="1.5"
|
|
7
|
+
stroke="currentColor"
|
|
8
|
+
class="w-6 h-6"
|
|
9
|
+
>
|
|
10
|
+
<path
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"
|
|
14
|
+
/>
|
|
15
|
+
</svg>
|
|
16
|
+
</template>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
fill?: boolean;
|
|
4
|
+
}
|
|
5
|
+
withDefaults(defineProps<Props>(), {
|
|
6
|
+
fill: false,
|
|
7
|
+
});
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<svg v-if="fill" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-6">
|
|
12
|
+
<path
|
|
13
|
+
fill-rule="evenodd"
|
|
14
|
+
d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.006 5.404.434c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.434 2.082-5.005Z"
|
|
15
|
+
clip-rule="evenodd"
|
|
16
|
+
/>
|
|
17
|
+
</svg>
|
|
18
|
+
<svg
|
|
19
|
+
v-else
|
|
20
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
21
|
+
fill="none"
|
|
22
|
+
viewBox="0 0 24 24"
|
|
23
|
+
stroke-width="1.5"
|
|
24
|
+
stroke="currentColor"
|
|
25
|
+
class="size-6"
|
|
26
|
+
>
|
|
27
|
+
<path
|
|
28
|
+
stroke-linecap="round"
|
|
29
|
+
stroke-linejoin="round"
|
|
30
|
+
d="M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z"
|
|
31
|
+
/>
|
|
32
|
+
</svg>
|
|
33
|
+
</template>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
4
|
+
fill="none"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
stroke-width="1.5"
|
|
7
|
+
stroke="currentColor"
|
|
8
|
+
class="size-6"
|
|
9
|
+
>
|
|
10
|
+
<path
|
|
11
|
+
stroke-linecap="round"
|
|
12
|
+
stroke-linejoin="round"
|
|
13
|
+
d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"
|
|
14
|
+
/>
|
|
15
|
+
</svg>
|
|
16
|
+
</template>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { defineAsyncComponent } from "vue";
|
|
3
|
+
import MessageDetails from "./MessageDetails.vue";
|
|
4
|
+
|
|
5
|
+
const MessageList = defineAsyncComponent(() => import("@/components/vue-components/v3/inbox/MessageList.vue"));
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<div class="is-flex">
|
|
10
|
+
<MessageList />
|
|
11
|
+
<MessageDetails />
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { defineAsyncComponent } from "vue";
|
|
3
|
+
const AlertMessage = defineAsyncComponent(() => import("@/components/vue-components/v3/alert/AlertMessage.vue"));
|
|
4
|
+
const AcSingleInput = defineAsyncComponent(
|
|
5
|
+
() => import("@/components/vue-components/v3/form-fields/AcSingleInput.vue"),
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
const EllipsisVertical = defineAsyncComponent(() => import("../icons/EllipsisVertical.vue"));
|
|
9
|
+
const StarIcon = defineAsyncComponent(() => import("../icons/StarIcon.vue"));
|
|
10
|
+
const TrashIcon = defineAsyncComponent(() => import("../icons/TrashIcon.vue"));
|
|
11
|
+
const InfoIcon = defineAsyncComponent(() => import("../icons/InfoIcon.vue"));
|
|
12
|
+
</script>
|
|
13
|
+
<template>
|
|
14
|
+
<div class="message-details">
|
|
15
|
+
<div class="is-flex is-justify-content-space-between">
|
|
16
|
+
<div class="is-flex gap-16">
|
|
17
|
+
<figure class="avatar image is-48x48">
|
|
18
|
+
<!-- <span class="dots"></span> -->
|
|
19
|
+
<div class="is-initial is-rounded is-size-2 has-text-weight-bold">S</div>
|
|
20
|
+
</figure>
|
|
21
|
+
<div class="is-flex is-flex-direction-column">
|
|
22
|
+
<h5>Support @AppsCode.com</h5>
|
|
23
|
+
<p>@appscode</p>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="is-flex">
|
|
28
|
+
<button class="button ac-button is-white is-small" title="Star">
|
|
29
|
+
<span class="icon">
|
|
30
|
+
<StarIcon :fill="true" />
|
|
31
|
+
</span>
|
|
32
|
+
</button>
|
|
33
|
+
|
|
34
|
+
<button class="button ac-button is-white is-small" title="Trash">
|
|
35
|
+
<span class="icon">
|
|
36
|
+
<TrashIcon />
|
|
37
|
+
</span>
|
|
38
|
+
</button>
|
|
39
|
+
|
|
40
|
+
<button class="button ac-button is-white is-small" title="More Options">
|
|
41
|
+
<span class="icon">
|
|
42
|
+
<EllipsisVertical />
|
|
43
|
+
</span>
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class="message-content mt-24">
|
|
49
|
+
<h2 class="mb-4">Update scanner addons</h2>
|
|
50
|
+
<p>
|
|
51
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the Lorem Ipsum
|
|
52
|
+
is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the...Lorem Ipsum is simply
|
|
53
|
+
dummy text of the printing and typesetting industry. Lorem Ipsum has been the...
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
<alert-message class="is-info mt-24 mb-24">
|
|
57
|
+
<template #icon>
|
|
58
|
+
<InfoIcon />
|
|
59
|
+
</template>
|
|
60
|
+
<template #custom-text>
|
|
61
|
+
Flux CD is not installed. We are going to install it. By default, we are going to enable Helm Controller and
|
|
62
|
+
Source controller feature of Flux CD. You will be able to configure Flux CD options from Settings > Flux CD of
|
|
63
|
+
your cluster dashboard.
|
|
64
|
+
</template>
|
|
65
|
+
</alert-message>
|
|
66
|
+
|
|
67
|
+
<!-- recommended actions -->
|
|
68
|
+
<div class="recommended-actions mb-16">
|
|
69
|
+
<div class="recommended-heading">
|
|
70
|
+
<h4>Recommend Actions</h4>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div class="recommended-body">
|
|
74
|
+
<div class="single-action" :class="{ 'mb-16': i === 1 }" v-for="i in 2" :key="i">
|
|
75
|
+
<h5 class="mb-4">Remedy Actions {{ i }}</h5>
|
|
76
|
+
<p>
|
|
77
|
+
Simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the Lorem Ipsum is simply
|
|
78
|
+
dummy text of the printing and typesetting industry.
|
|
79
|
+
</p>
|
|
80
|
+
|
|
81
|
+
<div class="grid grid-cols-2 mt-16">
|
|
82
|
+
<ac-single-input modifier-classes="is-primary mr-16" v-for="i in 4" :key="i">
|
|
83
|
+
<label for="email" class="ac-label is-required show-label"
|
|
84
|
+
>Email {{ i }}
|
|
85
|
+
<!-- <span class="has-text-danger">*</span> -->
|
|
86
|
+
</label>
|
|
87
|
+
|
|
88
|
+
<input id="email" name="email" type="email" class="ac-input bg-white" value="user@appscode.com" />
|
|
89
|
+
</ac-single-input>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<div class="buttons">
|
|
93
|
+
<button class="button ac-button is-primary">Execute</button>
|
|
94
|
+
<button class="button ac-button">Ignore</button>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
<!-- recommended actions -->
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
</template>
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { defineAsyncComponent } from "vue";
|
|
3
|
+
const Searchbar = defineAsyncComponent(() => import("@/components/vue-components/v3/form-fields/Searchbar.vue"));
|
|
4
|
+
|
|
5
|
+
const ArrowDownIcon = defineAsyncComponent(() => import("../icons/ArrowDownIcon.vue"));
|
|
6
|
+
const RefreshIcon = defineAsyncComponent(() => import("../icons/RefreshIcon.vue"));
|
|
7
|
+
const StarIcon = defineAsyncComponent(() => import("../icons/StarIcon.vue"));
|
|
8
|
+
const EllipsisVertical = defineAsyncComponent(() => import("../icons/EllipsisVertical.vue"));
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<div class="inbox-sidebar">
|
|
13
|
+
<div class="head">
|
|
14
|
+
<!-- search -->
|
|
15
|
+
<Searchbar placeholder="Search..." />
|
|
16
|
+
<!-- search -->
|
|
17
|
+
|
|
18
|
+
<!-- filter -->
|
|
19
|
+
<div class="is-flex is-justify-content-space-between">
|
|
20
|
+
<div class="is-flex gap-8">
|
|
21
|
+
<label class="ac-checkbox" for="checkbox16">
|
|
22
|
+
<input class="is-danger" id="checkbox16" type="checkbox" /><span class="checkmark"></span>
|
|
23
|
+
</label>
|
|
24
|
+
<button class="button ac-button is-white is-small" title="Filter">
|
|
25
|
+
<span class="icon">
|
|
26
|
+
<ArrowDownIcon />
|
|
27
|
+
</span>
|
|
28
|
+
</button>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div class="is-flex gap-4">
|
|
32
|
+
<button class="button ac-button is-white is-small" title="Refresh">
|
|
33
|
+
<span class="icon">
|
|
34
|
+
<RefreshIcon />
|
|
35
|
+
</span>
|
|
36
|
+
</button>
|
|
37
|
+
<!-- is-active -->
|
|
38
|
+
<div class="dropdown-action dropdown">
|
|
39
|
+
<button class="button ac-button is-white is-small" title="More">
|
|
40
|
+
<span class="icon">
|
|
41
|
+
<EllipsisVertical />
|
|
42
|
+
</span>
|
|
43
|
+
</button>
|
|
44
|
+
<!-- dropdown -->
|
|
45
|
+
<div class="dropdown-menu" id="dropdown-menu3" role="menu" style="left: auto; right: 0">
|
|
46
|
+
<div class="dropdown-content ac-scrollbar p-0">
|
|
47
|
+
<div class="dropdown-group">
|
|
48
|
+
<label>Options</label>
|
|
49
|
+
<a href="#" class="dropdown-item">
|
|
50
|
+
<span class="icon">
|
|
51
|
+
<RefreshIcon />
|
|
52
|
+
</span>
|
|
53
|
+
<span>Read</span>
|
|
54
|
+
</a>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
<!-- dropdown -->
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
<!-- filter -->
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<div class="message-list ac-vscrollbar pt-0 pb-0">
|
|
66
|
+
<!-- messages '.is-unread' -->
|
|
67
|
+
<div
|
|
68
|
+
class="is-flex gap-16 is-clickable single-message"
|
|
69
|
+
v-for="i in 10"
|
|
70
|
+
:key="i"
|
|
71
|
+
:class="{ 'is-unread': i % 2 !== 0 }"
|
|
72
|
+
>
|
|
73
|
+
<label class="ac-checkbox is-align-items-flex-start" :for="'check' + i">
|
|
74
|
+
<input class="is-danger" :id="'check' + i" type="checkbox" /><span class="checkmark"></span>
|
|
75
|
+
</label>
|
|
76
|
+
<div class="is-flex gap-4 is-flex-direction-column">
|
|
77
|
+
<div class="is-flex is-flex-direction-column">
|
|
78
|
+
<span>Category</span>
|
|
79
|
+
<h6 class="has-text-weight-medium is-size-5">Update scanner addons</h6>
|
|
80
|
+
</div>
|
|
81
|
+
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been</p>
|
|
82
|
+
</div>
|
|
83
|
+
<div class="is-flex is-flex-direction-column is-justify-content-space-between">
|
|
84
|
+
<p class="is-size-7">2mins</p>
|
|
85
|
+
<button class="button ac-button is-transparent is-small">
|
|
86
|
+
<span class="icon">
|
|
87
|
+
<StarIcon />
|
|
88
|
+
</span>
|
|
89
|
+
</button>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
<!-- messages -->
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
</template>
|
|
@@ -3,10 +3,10 @@ import { setCookie } from "tiny-cookie";
|
|
|
3
3
|
import { computed, defineAsyncComponent, ref } from "vue";
|
|
4
4
|
|
|
5
5
|
interface Props {
|
|
6
|
-
currentApp
|
|
7
|
-
baseUrl
|
|
8
|
-
activeOrganization
|
|
9
|
-
rootDomain
|
|
6
|
+
currentApp?: "console" | "db" | "platform" | "billing" | "selfhost" | "learn" | "grafana";
|
|
7
|
+
baseUrl?: string;
|
|
8
|
+
activeOrganization?: string;
|
|
9
|
+
rootDomain?: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
const props = withDefaults(defineProps<Props>(), {
|
|
@@ -102,9 +102,8 @@ const filteredAppList = appListWithUrl.filter((element) => {
|
|
|
102
102
|
return true;
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
-
const handleClick = (
|
|
106
|
-
setCookie("gorg", props.activeOrganization, { domain: props.rootDomain });
|
|
107
|
-
window.open(url, "_blank");
|
|
105
|
+
const handleClick = (name: string) => {
|
|
106
|
+
if (name === "grafana") setCookie("gorg", props.activeOrganization, { domain: props.rootDomain });
|
|
108
107
|
};
|
|
109
108
|
</script>
|
|
110
109
|
|
|
@@ -148,7 +147,7 @@ const handleClick = (url: string) => {
|
|
|
148
147
|
<navbar-item-content class="navbar-dropdown-wrapper" style="right: -30px">
|
|
149
148
|
<ul class="ac-scrollbar p-0 app-drawer">
|
|
150
149
|
<li v-for="app in filteredAppList" :key="app.url">
|
|
151
|
-
<a @click
|
|
150
|
+
<a :href="app.url" target="_blank" @click="handleClick(app.name)">
|
|
152
151
|
<article class="media">
|
|
153
152
|
<figure class="media-left">
|
|
154
153
|
<p class="image">
|