@bagelink/vue 0.0.284 → 0.0.287
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/dist/components/Avatar.vue.d.ts.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/index.cjs +180 -300
- package/dist/index.mjs +180 -300
- package/dist/style.css +41 -202
- package/package.json +1 -1
- package/src/components/Accordion.vue +4 -4
- package/src/components/AccordionItem.vue +41 -41
- package/src/components/Avatar.vue +23 -24
- package/src/components/BglVideo.vue +58 -0
- package/src/components/index.ts +0 -1
- package/src/components/layout/Column.vue +6 -0
- package/src/components/charts/BarChart.vue +0 -301
- package/src/components/charts/index.ts +0 -1
package/dist/style.css
CHANGED
|
@@ -555,46 +555,46 @@
|
|
|
555
555
|
}
|
|
556
556
|
}
|
|
557
557
|
|
|
558
|
-
.accordion-item[data-v-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
558
|
+
.accordion-item[data-v-bf74738b] {
|
|
559
|
+
border-bottom: 1px solid var(--border-color);
|
|
560
|
+
transition: all 0.2s;
|
|
561
|
+
cursor: pointer;
|
|
562
|
+
overflow: hidden;
|
|
563
563
|
}
|
|
564
|
-
.accordion-head[data-v-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
564
|
+
.accordion-head[data-v-bf74738b] {
|
|
565
|
+
height: var(--input-height);
|
|
566
|
+
background: transparent;
|
|
567
|
+
display: flex;
|
|
568
|
+
width: 100%;
|
|
569
|
+
align-items: center;
|
|
570
|
+
justify-content: space-between;
|
|
571
571
|
}
|
|
572
|
-
.accordion-icon[data-v-
|
|
573
|
-
|
|
572
|
+
.accordion-icon[data-v-bf74738b] {
|
|
573
|
+
transition: all 0.2s ease;
|
|
574
574
|
}
|
|
575
|
-
.accordion-icon.open[data-v-
|
|
576
|
-
|
|
575
|
+
.accordion-icon.open[data-v-bf74738b] {
|
|
576
|
+
transform: rotate(180deg);
|
|
577
577
|
}
|
|
578
|
-
.accordion-label[data-v-
|
|
579
|
-
|
|
578
|
+
.accordion-label[data-v-bf74738b] {
|
|
579
|
+
font-weight: bold;
|
|
580
580
|
}
|
|
581
|
-
.accordion-head:hover .accordion-label[data-v-
|
|
582
|
-
|
|
581
|
+
.accordion-head:hover .accordion-label[data-v-bf74738b] {
|
|
582
|
+
text-decoration: underline;
|
|
583
583
|
}
|
|
584
|
-
.accordion-body[data-v-
|
|
584
|
+
.accordion-body[data-v-bf74738b] {}
|
|
585
585
|
|
|
586
586
|
.expand-enter-active,
|
|
587
587
|
.expand-leave-active {
|
|
588
|
-
|
|
589
|
-
|
|
588
|
+
transition: all 0.5s;
|
|
589
|
+
transition-delay: 0ms;
|
|
590
590
|
}
|
|
591
591
|
.expand-enter-from,
|
|
592
592
|
.expand-leave-to {
|
|
593
|
-
|
|
593
|
+
max-height: 0;
|
|
594
594
|
}
|
|
595
595
|
.expand-enter-to,
|
|
596
596
|
.expand-leave-from {
|
|
597
|
-
|
|
597
|
+
max-height: 300px;
|
|
598
598
|
}
|
|
599
599
|
|
|
600
600
|
.search-wrap {
|
|
@@ -875,25 +875,24 @@ th[data-v-2137a7a8] {
|
|
|
875
875
|
color: var(--input-color);
|
|
876
876
|
}
|
|
877
877
|
|
|
878
|
-
.avatar[data-v-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
flex: 0 0 40px;
|
|
878
|
+
.avatar[data-v-b46163a3] {
|
|
879
|
+
border-radius: 100%;
|
|
880
|
+
background-color: var(--bgl-gray-20);
|
|
881
|
+
border: 0.5px solid var(--border-color);
|
|
882
|
+
overflow: hidden;
|
|
883
|
+
text-align: center;
|
|
884
|
+
padding: 0;
|
|
886
885
|
}
|
|
887
|
-
.avatar p[data-v-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
886
|
+
.avatar p[data-v-b46163a3] {
|
|
887
|
+
font-size: 1.5rem;
|
|
888
|
+
line-height: 50px;
|
|
889
|
+
margin: 0;
|
|
890
|
+
font-weight: 200;
|
|
892
891
|
}
|
|
893
|
-
.avatar img[data-v-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
892
|
+
.avatar img[data-v-b46163a3] {
|
|
893
|
+
width: 100%;
|
|
894
|
+
height: 100%;
|
|
895
|
+
object-fit: cover;
|
|
897
896
|
}
|
|
898
897
|
.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}
|
|
899
898
|
|
|
@@ -933,166 +932,6 @@ th[data-v-2137a7a8] {
|
|
|
933
932
|
border-radius: var(--card-border-radius);
|
|
934
933
|
}
|
|
935
934
|
|
|
936
|
-
/* .group-wrap * {
|
|
937
|
-
outline: 1px solid red;
|
|
938
|
-
} */
|
|
939
|
-
.group-wrap[data-v-fe5af582] {
|
|
940
|
-
height: 100%;
|
|
941
|
-
display: flex;
|
|
942
|
-
align-items: center;
|
|
943
|
-
justify-content: center;
|
|
944
|
-
flex-wrap: wrap;
|
|
945
|
-
gap: 2px;
|
|
946
|
-
}
|
|
947
|
-
.group-wrap .bar-wrap[data-v-fe5af582] {
|
|
948
|
-
gap: 2px;
|
|
949
|
-
}
|
|
950
|
-
.group-title[data-v-fe5af582] {
|
|
951
|
-
font-size: 0.6em;
|
|
952
|
-
width: 100%;
|
|
953
|
-
}
|
|
954
|
-
.bar-txt[data-v-fe5af582] {
|
|
955
|
-
font-size: 11px;
|
|
956
|
-
font-weight: 200;
|
|
957
|
-
/* max-width: 95%; */
|
|
958
|
-
width: max-content;
|
|
959
|
-
height: 20px;
|
|
960
|
-
line-height: 1.2;
|
|
961
|
-
margin: 5px auto 0;
|
|
962
|
-
position: absolute;
|
|
963
|
-
transform: rotate(300deg);
|
|
964
|
-
transform-origin: 40px 40px;
|
|
965
|
-
}
|
|
966
|
-
.graph-wrap[data-v-fe5af582] {
|
|
967
|
-
display: flex;
|
|
968
|
-
flex-direction: row;
|
|
969
|
-
align-items: flex-end;
|
|
970
|
-
padding: 0 10px;
|
|
971
|
-
}
|
|
972
|
-
.bar-wrap[data-v-fe5af582] {
|
|
973
|
-
text-align: center;
|
|
974
|
-
height: 100%;
|
|
975
|
-
/* flex: 0 1 16.6%; */
|
|
976
|
-
display: flex;
|
|
977
|
-
flex-direction: row;
|
|
978
|
-
align-items: flex-end;
|
|
979
|
-
position: relative;
|
|
980
|
-
}
|
|
981
|
-
.bar[data-v-fe5af582] {
|
|
982
|
-
background: var(--bgl-primary);
|
|
983
|
-
position: relative;
|
|
984
|
-
min-width: 10px;
|
|
985
|
-
min-height: 5px;
|
|
986
|
-
width: 4px;
|
|
987
|
-
margin: 0 auto;
|
|
988
|
-
transition: all ease-out 0.8s;
|
|
989
|
-
}
|
|
990
|
-
.bar.compare[data-v-fe5af582] {
|
|
991
|
-
background-color: #cf2135;
|
|
992
|
-
}
|
|
993
|
-
.bar-chart[data-v-fe5af582] {
|
|
994
|
-
height: calc(100vh - 500px);
|
|
995
|
-
width: 90%;
|
|
996
|
-
margin: 30px auto;
|
|
997
|
-
display: flex;
|
|
998
|
-
justify-content: space-between;
|
|
999
|
-
position: relative;
|
|
1000
|
-
}
|
|
1001
|
-
.graps .bar-chart[data-v-fe5af582] {
|
|
1002
|
-
aspect-ratio: 9/5;
|
|
1003
|
-
height: auto;
|
|
1004
|
-
max-height: calc(100vh - 500px);
|
|
1005
|
-
}
|
|
1006
|
-
.bar-lines[data-v-fe5af582] {
|
|
1007
|
-
position: absolute;
|
|
1008
|
-
/* font-size: 20px; */
|
|
1009
|
-
display: flex;
|
|
1010
|
-
flex-direction: column-reverse;
|
|
1011
|
-
top: -15px;
|
|
1012
|
-
bottom: -12px;
|
|
1013
|
-
left: -30px;
|
|
1014
|
-
justify-content: space-between;
|
|
1015
|
-
width: calc(100% + 20px);
|
|
1016
|
-
text-align: start;
|
|
1017
|
-
}
|
|
1018
|
-
.bar-lines p[data-v-fe5af582] {
|
|
1019
|
-
margin: 0;
|
|
1020
|
-
position: relative;
|
|
1021
|
-
}
|
|
1022
|
-
.bar-lines p[data-v-fe5af582]::after {
|
|
1023
|
-
content: "";
|
|
1024
|
-
background: var(--bgl-primary-tint);
|
|
1025
|
-
height: 1px;
|
|
1026
|
-
position: absolute;
|
|
1027
|
-
width: calc(100% - 20px);
|
|
1028
|
-
margin: 14px 0 0 10px;
|
|
1029
|
-
opacity: 0.5;
|
|
1030
|
-
}
|
|
1031
|
-
.bar-lines p[data-v-fe5af582]:first-child:after {
|
|
1032
|
-
content: "";
|
|
1033
|
-
background: var(--bgl-primary-tint);
|
|
1034
|
-
height: 1px;
|
|
1035
|
-
position: absolute;
|
|
1036
|
-
width: calc(100% - 10px);
|
|
1037
|
-
margin: 8px 0 0 10px;
|
|
1038
|
-
opacity: 0.5;
|
|
1039
|
-
}
|
|
1040
|
-
.red-bar[data-v-fe5af582] {
|
|
1041
|
-
background: #cf2135;
|
|
1042
|
-
height: var(--b74eb91e);
|
|
1043
|
-
width: 100%;
|
|
1044
|
-
position: absolute;
|
|
1045
|
-
left: 0px;
|
|
1046
|
-
bottom: 0;
|
|
1047
|
-
opacity: 0.6;
|
|
1048
|
-
transition: all 200ms ease;
|
|
1049
|
-
}
|
|
1050
|
-
.red-bar.open-redbar[data-v-fe5af582] {
|
|
1051
|
-
height: 7%;
|
|
1052
|
-
}
|
|
1053
|
-
.factor[data-v-fe5af582] {
|
|
1054
|
-
position: absolute;
|
|
1055
|
-
transform: rotate(270deg);
|
|
1056
|
-
height: 0px;
|
|
1057
|
-
width: 0;
|
|
1058
|
-
left: -60px;
|
|
1059
|
-
font-size: 22px;
|
|
1060
|
-
text-align: center;
|
|
1061
|
-
white-space: nowrap;
|
|
1062
|
-
top: 60%;
|
|
1063
|
-
}
|
|
1064
|
-
.dash-hor[data-v-fe5af582] {
|
|
1065
|
-
/* border-bottom: 1px dashed white; */
|
|
1066
|
-
position: absolute;
|
|
1067
|
-
background-image: linear-gradient(to right, #cf2134 53%, transparent 0%);
|
|
1068
|
-
height: 10px;
|
|
1069
|
-
bottom: 41.5%;
|
|
1070
|
-
width: 100%;
|
|
1071
|
-
animation: 1s linear 0s infinite dash-fe5af582;
|
|
1072
|
-
background-position: left;
|
|
1073
|
-
background-repeat: repeat-x;
|
|
1074
|
-
background-size: 15px 4px;
|
|
1075
|
-
}
|
|
1076
|
-
.dash-hor[data-v-fe5af582]::after {
|
|
1077
|
-
content: "Average Speedup = 25x";
|
|
1078
|
-
position: absolute;
|
|
1079
|
-
left: 0;
|
|
1080
|
-
bottom: 10px;
|
|
1081
|
-
font-size: 22px;
|
|
1082
|
-
background: #cf2134;
|
|
1083
|
-
z-index: 2;
|
|
1084
|
-
padding: 1px 4px;
|
|
1085
|
-
border-radius: 3px;
|
|
1086
|
-
}
|
|
1087
|
-
@keyframes dash-fe5af582 {
|
|
1088
|
-
0% {
|
|
1089
|
-
background-position: 0;
|
|
1090
|
-
}
|
|
1091
|
-
100% {
|
|
1092
|
-
background-position: 15px;
|
|
1093
|
-
}
|
|
1094
|
-
}
|
|
1095
|
-
|
|
1096
935
|
.del-top {
|
|
1097
936
|
transform: translateY(-2.6rem);
|
|
1098
937
|
}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<div>
|
|
3
|
+
<slot />
|
|
4
|
+
</div>
|
|
5
5
|
</template>
|
|
6
6
|
|
|
7
7
|
<script setup lang="ts">
|
|
8
8
|
import { reactive, provide } from 'vue';
|
|
9
9
|
|
|
10
10
|
const state = reactive({
|
|
11
|
-
|
|
11
|
+
openItem: null as string | null,
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
provide('accordionState', state);
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
<div class="accordion-item">
|
|
3
|
+
<button @click="toggle()" :aria-expanded="open ? 'true' : 'false'" class="accordion-head"
|
|
4
|
+
:aria-controls="`accordion-body-${id}`">
|
|
5
|
+
<span class="accordion-label">{{ label }}</span>
|
|
6
|
+
<div class="accordion-icon" :class="{ open }">
|
|
7
|
+
<MaterialIcon icon="expand_more" />
|
|
8
|
+
</div>
|
|
9
|
+
</button>
|
|
10
|
+
<Transition name="expand">
|
|
11
|
+
<div v-if="open" class="accordion-body" :id="`accordion-body-${id}`" :aria-hidden="open ? 'false' : 'true'">
|
|
12
|
+
<slot />
|
|
13
|
+
</div>
|
|
14
|
+
</Transition>
|
|
15
|
+
</div>
|
|
16
16
|
</template>
|
|
17
17
|
|
|
18
18
|
<script lang="ts" setup>
|
|
@@ -20,58 +20,58 @@ import { MaterialIcon } from '@bagelink/vue';
|
|
|
20
20
|
import { watch, inject } from 'vue';
|
|
21
21
|
|
|
22
22
|
const props = defineProps<{
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
label: string,
|
|
24
|
+
id?: string,
|
|
25
25
|
}>();
|
|
26
26
|
let open = $ref(false);
|
|
27
27
|
|
|
28
28
|
const accordionState = inject('accordionState') as { openItem: string | null };
|
|
29
29
|
const id = props.id || Math.random().toString(36).substring(7);
|
|
30
30
|
|
|
31
|
-
watch(() => accordionState
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
watch(() => accordionState?.openItem, (currentOpenId) => {
|
|
32
|
+
if (currentOpenId !== id) {
|
|
33
|
+
open = false;
|
|
34
|
+
}
|
|
35
35
|
}, { immediate: true });
|
|
36
36
|
|
|
37
37
|
function toggle() {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
open = !open;
|
|
39
|
+
if (open && accordionState?.openItem) accordionState.openItem = id;
|
|
40
|
+
else if (accordionState?.openItem === id) accordionState.openItem = null;
|
|
41
41
|
}
|
|
42
42
|
</script>
|
|
43
43
|
|
|
44
44
|
<style scoped>
|
|
45
45
|
.accordion-item {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
border-bottom: 1px solid var(--border-color);
|
|
47
|
+
transition: all 0.2s;
|
|
48
|
+
cursor: pointer;
|
|
49
|
+
overflow: hidden;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
.accordion-head {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
height: var(--input-height);
|
|
54
|
+
background: transparent;
|
|
55
|
+
display: flex;
|
|
56
|
+
width: 100%;
|
|
57
|
+
align-items: center;
|
|
58
|
+
justify-content: space-between;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
.accordion-icon {
|
|
62
|
-
|
|
62
|
+
transition: all 0.2s ease;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
.accordion-icon.open {
|
|
66
|
-
|
|
66
|
+
transform: rotate(180deg);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
.accordion-label {
|
|
70
|
-
|
|
70
|
+
font-weight: bold;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
.accordion-head:hover .accordion-label {
|
|
74
|
-
|
|
74
|
+
text-decoration: underline;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
.accordion-body {}
|
|
@@ -80,17 +80,17 @@ function toggle() {
|
|
|
80
80
|
<style>
|
|
81
81
|
.expand-enter-active,
|
|
82
82
|
.expand-leave-active {
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
transition: all 0.5s;
|
|
84
|
+
transition-delay: 0ms;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
.expand-enter-from,
|
|
88
88
|
.expand-leave-to {
|
|
89
|
-
|
|
89
|
+
max-height: 0;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
.expand-enter-to,
|
|
93
93
|
.expand-leave-from {
|
|
94
|
-
|
|
94
|
+
max-height: 300px;
|
|
95
95
|
}
|
|
96
96
|
</style>
|
|
@@ -1,44 +1,43 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
<div class="avatar" :style="{ width: `${size}px`, height: `${size}px` }">
|
|
3
|
+
<img v-if="src" :src="src" :alt="name">
|
|
4
|
+
<p v-else :style="{ 'line-height': `${size * 0.9}px` }">
|
|
5
|
+
{{ fallback || initials(name || '') }}
|
|
6
|
+
</p>
|
|
7
|
+
</div>
|
|
8
8
|
</template>
|
|
9
9
|
|
|
10
10
|
<script setup lang="ts">
|
|
11
11
|
import { initials } from '@bagelink/vue';
|
|
12
12
|
|
|
13
13
|
withDefaults(defineProps<{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
fallback?: string;
|
|
15
|
+
src?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
size?: number;
|
|
18
18
|
}>(), { size: 50 });
|
|
19
19
|
</script>
|
|
20
20
|
|
|
21
21
|
<style scoped>
|
|
22
22
|
.avatar {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
flex: 0 0 40px;
|
|
23
|
+
border-radius: 100%;
|
|
24
|
+
background-color: var(--bgl-gray-20);
|
|
25
|
+
border: 0.5px solid var(--border-color);
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
text-align: center;
|
|
28
|
+
padding: 0;
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
.avatar p {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
font-size: 1.5rem;
|
|
33
|
+
line-height: 50px;
|
|
34
|
+
margin: 0;
|
|
35
|
+
font-weight: 200;
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
.avatar img {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
width: 100%;
|
|
40
|
+
height: 100%;
|
|
41
|
+
object-fit: cover;
|
|
43
42
|
}
|
|
44
43
|
</style>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<iframe
|
|
4
|
+
v-if="isYoutubeOrVimeo"
|
|
5
|
+
:src="videoUrl"
|
|
6
|
+
:style="{ aspectRatio }"
|
|
7
|
+
frameborder="0"
|
|
8
|
+
allowfullscreen
|
|
9
|
+
title="Video"
|
|
10
|
+
/>
|
|
11
|
+
<video
|
|
12
|
+
v-else
|
|
13
|
+
:src="src"
|
|
14
|
+
:autoplay="autoplay"
|
|
15
|
+
:muted="mute"
|
|
16
|
+
:loop="loop"
|
|
17
|
+
:style="{ aspectRatio }"
|
|
18
|
+
controls="controllers"
|
|
19
|
+
/>
|
|
20
|
+
</div>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script setup lang="ts">
|
|
24
|
+
type Props = {
|
|
25
|
+
src: string;
|
|
26
|
+
autoplay: boolean;
|
|
27
|
+
mute: boolean;
|
|
28
|
+
aspectRatio: string;
|
|
29
|
+
controllers: boolean;
|
|
30
|
+
loop: boolean;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const props = defineProps<Props>();
|
|
34
|
+
|
|
35
|
+
const aspectRatio = $computed(() => props.aspectRatio.replace(':', '/'));
|
|
36
|
+
|
|
37
|
+
const isYoutubeOrVimeo = $computed(() => {
|
|
38
|
+
const youtubeRegex = /youtube\.com|youtu\.be/;
|
|
39
|
+
const vimeoRegex = /vimeo\.com/;
|
|
40
|
+
return youtubeRegex.test(props.src) || vimeoRegex.test(props.src);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const videoUrl = $computed(() => {
|
|
44
|
+
if (isYoutubeOrVimeo.value) {
|
|
45
|
+
// Handle YouTube and Vimeo URLs here
|
|
46
|
+
// For simplicity, returning the URL as is, but you might need to transform it
|
|
47
|
+
return props.src;
|
|
48
|
+
}
|
|
49
|
+
return '';
|
|
50
|
+
});
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<style scoped>
|
|
54
|
+
iframe, video {
|
|
55
|
+
width: 100%;
|
|
56
|
+
height: auto;
|
|
57
|
+
}
|
|
58
|
+
</style>
|
package/src/components/index.ts
CHANGED
|
@@ -22,7 +22,6 @@ export { default as Title } from './Title.vue';
|
|
|
22
22
|
export { default as Accordion } from './Accordion.vue';
|
|
23
23
|
export { default as ComboBox } from './ComboBox.vue';
|
|
24
24
|
|
|
25
|
-
export * from './charts';
|
|
26
25
|
export * from './form';
|
|
27
26
|
export * from './dashboard';
|
|
28
27
|
export * from './whatsapp';
|