@appscode/design-system 1.1.0-beta.4 → 1.1.0-beta.40

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 (80) hide show
  1. package/base/utilities/_colors.scss +45 -114
  2. package/base/utilities/_global.scss +18 -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-multi-select.scss +17 -17
  10. package/components/_ac-select-box.scss +5 -5
  11. package/components/_ac-table.scss +7 -7
  12. package/components/_ac-tabs.scss +29 -26
  13. package/components/_all.scss +6 -4
  14. package/components/_buttons.scss +10 -10
  15. package/components/_graph.scss +10 -10
  16. package/components/_image-upload.scss +4 -4
  17. package/components/_input-card.scss +232 -0
  18. package/components/_input.scss +947 -0
  19. package/components/_left-sidebar-menu.scss +9 -13
  20. package/components/_monaco-editor.scss +2 -2
  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} +59 -73
  29. package/components/_widget-menu.scss +7 -12
  30. package/components/_wizard.scss +518 -793
  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 +193 -11
  35. package/components/ui-builder/_vue-open-api.scss +59 -13
  36. package/layouts/_code-preview.scss +6 -7
  37. package/main.scss +3 -3
  38. package/package.json +1 -1
  39. package/vue-components/types/importFlow.ts +16 -0
  40. package/vue-components/v2/banner/Banner.vue +1 -1
  41. package/vue-components/v2/editor/FilteredFileEditor.vue +2 -2
  42. package/vue-components/v2/modal/Modal.vue +1 -1
  43. package/vue-components/v2/pagination/Pagination.vue +1 -0
  44. package/vue-components/v3/alert/Alert.vue +2 -2
  45. package/vue-components/v3/banner/Banner.vue +2 -2
  46. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +4 -2
  47. package/vue-components/v3/button/Button.vue +33 -11
  48. package/vue-components/v3/cards/Cluster.vue +3 -0
  49. package/vue-components/v3/cards/Vendor.vue +1 -1
  50. package/vue-components/v3/content/ContentTable.vue +1 -1
  51. package/vue-components/v3/editor/FilteredFileEditor.vue +5 -1
  52. package/vue-components/v3/footer/Info.vue +10 -8
  53. package/vue-components/v3/footer/Status.vue +21 -23
  54. package/vue-components/v3/footer/Usage.vue +20 -30
  55. package/vue-components/v3/form/Form.vue +0 -3
  56. package/vue-components/v3/form-fields/AcSingleInput.vue +8 -0
  57. package/vue-components/v3/header/Header.vue +2 -2
  58. package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +7 -7
  59. package/vue-components/v3/modal/Modal.vue +1 -1
  60. package/vue-components/v3/modals/LongRunningTasksModal.vue +5 -5
  61. package/vue-components/v3/navbar/Navbar.vue +3 -1
  62. package/vue-components/v3/navbar/NavbarItemContent.vue +1 -1
  63. package/vue-components/v3/navbar/User.vue +4 -4
  64. package/vue-components/v3/notification/AlertBox.vue +233 -3
  65. package/vue-components/v3/option-dots/Options.vue +3 -2
  66. package/vue-components/v3/pagination/Pagination.vue +2 -1
  67. package/vue-components/v3/preloader/Preloader.vue +1 -1
  68. package/vue-components/v3/sidebar/ClusterSwitcher.vue +31 -27
  69. package/vue-components/v3/sidebar/Sidebar.vue +3 -30
  70. package/vue-components/v3/sidebar/SidebarFooter.vue +5 -2
  71. package/vue-components/v3/sidebar/Steps.vue +55 -51
  72. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +78 -2
  73. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +12 -3
  74. package/vue-components/v3/table/InfoTable.vue +6 -4
  75. package/vue-components/v3/table/Table.vue +16 -16
  76. package/vue-components/v3/table/TableRow.vue +2 -2
  77. package/components/_ac-card.scss +0 -0
  78. package/components/_ac-input.scss +0 -394
  79. /package/components/{_ac-accordion.scss → _accordion.scss} +0 -0
  80. /package/components/{_ac-report.scss → _report.scss} +0 -0
@@ -2,8 +2,8 @@
2
2
 
3
3
  <template>
4
4
  <div class="sign-up-notification mb-20">
5
- <div class="notification-inner has-text-centered">
6
- <h3><slot name="banner-title">Error!</slot></h3>
5
+ <div class="has-text-centered">
6
+ <h3 class="has-text-danger"><slot name="banner-title">Error!</slot></h3>
7
7
  <slot><p>Oops!! There was an error while loading!</p></slot>
8
8
  </div>
9
9
  </div>
@@ -54,8 +54,10 @@ const createBreadcrumbs = () => {
54
54
  pathReplaceWithParam(element.path)
55
55
  );
56
56
 
57
- //Removing the last duplicate value from the listpaths array
58
- listPaths.pop();
57
+ // If there is duplicate value in arrays last element remove it
58
+ const length = listPaths.length;
59
+ if (length > 1 && listPaths[length - 1] === listPaths[length - 2])
60
+ listPaths.pop();
59
61
 
60
62
  //Createing the breadcrumb name
61
63
  const listName = createList(listPaths);
@@ -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
  // }
@@ -65,6 +65,9 @@ const OptionDots = defineAsyncComponent(
65
65
  transition: 0.3s ease-in-out;
66
66
  position: relative;
67
67
  z-index: 1;
68
+ width: calc(33% - 7px);
69
+ min-width: 430px;
70
+ max-width: 530px;
68
71
 
69
72
  .c-header {
70
73
  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 {
@@ -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
  }"
@@ -187,6 +187,7 @@ withDefaults(defineProps<Props>(), {
187
187
  label {
188
188
  top: 8px;
189
189
  font-size: 13px;
190
+
190
191
  &.switch-label {
191
192
  top: 0;
192
193
  }
@@ -196,6 +197,7 @@ withDefaults(defineProps<Props>(), {
196
197
  top: -9px;
197
198
  font-weight: 500;
198
199
  color: $black-40;
200
+
199
201
  &.is-required {
200
202
  &:after {
201
203
  width: calc(100% + 10px);
@@ -241,6 +243,7 @@ withDefaults(defineProps<Props>(), {
241
243
  align-items: center;
242
244
  width: 40px;
243
245
  justify-content: center;
246
+
244
247
  svg {
245
248
  width: 18px;
246
249
  }
@@ -249,6 +252,7 @@ withDefaults(defineProps<Props>(), {
249
252
  label {
250
253
  top: 8px;
251
254
  font-size: 13px;
255
+
252
256
  &.switch-label {
253
257
  top: 0;
254
258
  }
@@ -411,11 +415,13 @@ withDefaults(defineProps<Props>(), {
411
415
  }
412
416
  }
413
417
  }
418
+
414
419
  textarea {
415
420
  border: 1px solid $primary-80;
416
421
  background-color: transparent;
417
422
  padding: 10px 15px;
418
423
  min-height: 50px;
424
+
419
425
  &.bg-white {
420
426
  background-color: transparent;
421
427
  }
@@ -447,9 +453,11 @@ withDefaults(defineProps<Props>(), {
447
453
  &.bg-white {
448
454
  background-color: $white-100;
449
455
  }
456
+
450
457
  &.StripeElement--focus {
451
458
  border: 1px solid $primary;
452
459
  }
460
+
453
461
  &:focus {
454
462
  border: 1px solid $primary;
455
463
  outline: none;
@@ -26,7 +26,7 @@ withDefaults(defineProps<Props>(), {
26
26
  <header-items>
27
27
  <header-item>
28
28
  <transition name="fade" mode="out-in" appear>
29
- <h5 :key="title">{{ title }}</h5>
29
+ <h4 :key="title">{{ title }}</h4>
30
30
  </transition>
31
31
  </header-item>
32
32
  <slot name="header-left-controls" />
@@ -41,7 +41,7 @@ withDefaults(defineProps<Props>(), {
41
41
  <style lang="scss" scoped>
42
42
  .inner-header {
43
43
  padding: 6px 20px;
44
- border-bottom: 1px solid $primary-90;
44
+ border-bottom: 1px solid $primary-93;
45
45
  position: sticky;
46
46
  background: $white-100;
47
47
  z-index: 99;
@@ -38,14 +38,14 @@ const statusIcon = computed(() => {
38
38
  border-radius: 5px;
39
39
  transition: all 0.3s ease-in-out;
40
40
  &:hover {
41
- background-color: var(--ac-white-light);
41
+ background-color: $primary-97;
42
42
  cursor: pointer;
43
43
  }
44
44
  &.is-active {
45
- background-color: var(--ac-white-light);
45
+ background-color: $primary-97;
46
46
  }
47
47
  &.is-pending {
48
- color: var(--ac-gray-light);
48
+ color: $black-50;
49
49
  i {
50
50
  visibility: hidden;
51
51
  }
@@ -55,7 +55,7 @@ const statusIcon = computed(() => {
55
55
  }
56
56
  }
57
57
  &.is-aborted {
58
- color: var(--ac-gray-light);
58
+ color: $black-50;
59
59
  &:hover {
60
60
  background-color: transparent;
61
61
  cursor: not-allowed;
@@ -64,7 +64,7 @@ const statusIcon = computed(() => {
64
64
  &.is-running,
65
65
  &.is-started {
66
66
  i {
67
- color: var(--ac-primary);
67
+ color: $primary;
68
68
  animation-name: spin;
69
69
  animation-duration: 1000ms;
70
70
  animation-iteration-count: infinite;
@@ -82,12 +82,12 @@ const statusIcon = computed(() => {
82
82
  }
83
83
  &.is-success {
84
84
  i {
85
- color: #158748;
85
+ color: $success;
86
86
  }
87
87
  }
88
88
  &.is-failed {
89
89
  i {
90
- color: #ff3729;
90
+ color: $danger;
91
91
  }
92
92
  }
93
93
  }
@@ -97,7 +97,7 @@ watch(
97
97
  <div class="ac-modal-inner">
98
98
  <!-- modal header start -->
99
99
  <div class="ac-modal-header">
100
- <h6>{{ title }}</h6>
100
+ <h5>{{ title }}</h5>
101
101
  <header-items>
102
102
  <slot name="modal-header-controls" />
103
103
  <header-item>
@@ -351,7 +351,7 @@ watch(longRunningTaskStatus, (n) => {
351
351
  align-items: center;
352
352
  justify-content: center;
353
353
  font-size: 20px;
354
- color: var(--ac-primary);
354
+ color: $primary;
355
355
  }
356
356
  .task-log {
357
357
  width: 100%;
@@ -366,12 +366,12 @@ watch(longRunningTaskStatus, (n) => {
366
366
  font-size: 16px;
367
367
  }
368
368
  i {
369
- color: var(--ac-primary);
369
+ color: $primary;
370
370
  &.is-success {
371
- color: #158748;
371
+ color: $success;
372
372
  }
373
373
  &.is-failed {
374
- color: #ff3729;
374
+ color: $danger;
375
375
  }
376
376
  }
377
377
  font-weight: 500;
@@ -395,7 +395,7 @@ watch(longRunningTaskStatus, (n) => {
395
395
  .task-log {
396
396
  width: 70%;
397
397
  height: 100%;
398
- border-radius: 1rem;
398
+ border-radius: 4px;
399
399
  font-size: 13px;
400
400
  }
401
401
  }
@@ -90,7 +90,9 @@ withDefaults(defineProps<Props>(), {
90
90
  height: 30px;
91
91
  }
92
92
  }
93
-
93
+ .ac-navbar-cluster-switcher {
94
+ max-width: 350px;
95
+ }
94
96
  .ac-navbar-menu {
95
97
  display: flex;
96
98
  align-items: center;
@@ -80,7 +80,7 @@
80
80
  border: none;
81
81
  padding: 0;
82
82
  font-size: 11px;
83
- color: #eb5757;
83
+ color: $danger;
84
84
  background-color: transparent;
85
85
  }
86
86
  }
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
2
  import { defineAsyncComponent, ref, watch, computed, nextTick } from "vue";
3
- import type { User, Organization } from "../../types/user";
3
+ import type { User } from "../../types/user";
4
4
 
5
- interface FormatedOrgs extends Organization {
5
+ interface FormatedOrgs extends User {
6
6
  isPersonalAccount?: boolean;
7
7
  }
8
8
 
@@ -93,13 +93,13 @@ watch(dropDownStatus, (n) => {
93
93
  <navbar-item :modifierClasses="'ac-profile-button'">
94
94
  <template #navbar-item>
95
95
  <div class="ac-user-profile mr-8">
96
- <img :src="(user.avatar_url as string)" alt="User Photo" />
96
+ <img :src="user.avatar_url" alt="User Photo" />
97
97
  </div>
98
98
  {{ user.full_name || user.username }}
99
99
  <i class="fa fa-angle-down" aria-hidden="true"></i>
100
100
  </template>
101
101
  <!-- <button class="button ac-nav-button ac-profile-button">
102
-
102
+
103
103
  </button> -->
104
104
 
105
105
  <template #navbar-content>