@bobbykim/mcl-header 0.2.0 → 0.4.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.
- package/CHANGELOG.md +31 -0
- package/README.md +25 -4
- package/index.d.ts +3 -2
- package/index.js +3 -2
- package/index.ts +3 -2
- package/lib/{mcl-header-a → common}/index.types.d.ts +0 -10
- package/lib/{mcl-header-a → common}/index.types.ts +0 -12
- package/lib/mcl-header-a/MclHeaderA.vue +107 -238
- package/lib/mcl-header-a/MclHeaderA.vue.d.ts +46 -53
- package/lib/mcl-header-a/NavCollapse.vue +13 -21
- package/lib/mcl-header-a/NavCollapse.vue.d.ts +5 -3
- package/lib/mcl-header-a/NavDropdown.vue +15 -18
- package/lib/mcl-header-a/NavDropdown.vue.d.ts +5 -8
- package/lib/mcl-header-a/NavLink.vue +7 -5
- package/lib/mcl-header-a/NavLink.vue.d.ts +3 -3
- package/lib/mcl-header-b/MclHeaderB.vue +270 -0
- package/lib/mcl-header-b/MclHeaderB.vue.d.ts +132 -0
- package/lib/mcl-header-b/NavCollapseVertical.vue +211 -0
- package/lib/mcl-header-b/NavCollapseVertical.vue.d.ts +73 -0
- package/lib/mcl-header-b/NavLinkVertical.vue +78 -0
- package/lib/mcl-header-b/NavLinkVertical.vue.d.ts +62 -0
- package/package.json +27 -1
- package/tsconfig.json +2 -6
- package/tsconfig.ts.json +9 -0
- package/lib/common/HamburgerMenu.vue +0 -121
- package/lib/common/HamburgerMenu.vue.d.ts +0 -43
- /package/lib/{mcl-header-a → common}/index.types.js +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { BodyText, ColorPalette } from '@bobbykim/manguito-theme'
|
|
3
|
+
import generateClass from '@bobbykim/manguito-theme'
|
|
4
|
+
import { computed } from 'vue'
|
|
5
|
+
import type { MenuItemType } from '../common/index.types'
|
|
6
|
+
const props = withDefaults(
|
|
7
|
+
defineProps<{
|
|
8
|
+
menuItem: MenuItemType
|
|
9
|
+
textColor?: ColorPalette
|
|
10
|
+
textSize?: BodyText
|
|
11
|
+
fontBold?: boolean
|
|
12
|
+
dHl?: boolean
|
|
13
|
+
hlColor?: ColorPalette
|
|
14
|
+
asLink?: boolean
|
|
15
|
+
}>(),
|
|
16
|
+
{
|
|
17
|
+
textColor: 'dark-3',
|
|
18
|
+
textSize: 'md',
|
|
19
|
+
fontBold: false,
|
|
20
|
+
dHl: true,
|
|
21
|
+
hlColor: 'primary',
|
|
22
|
+
asLink: true,
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
const emit = defineEmits<{
|
|
26
|
+
(e: 'menu-click', event: Event, item: MenuItemType): void
|
|
27
|
+
}>()
|
|
28
|
+
const handleLinkClick = (e: Event, item: MenuItemType) => {
|
|
29
|
+
const { asLink } = props
|
|
30
|
+
if (!asLink) {
|
|
31
|
+
e.preventDefault()
|
|
32
|
+
}
|
|
33
|
+
emit('menu-click', e, item)
|
|
34
|
+
}
|
|
35
|
+
const colorClass = computed<string>(() => {
|
|
36
|
+
const { textColor, textSize, dHl, hlColor, fontBold } = props
|
|
37
|
+
const classArray: string[] = [
|
|
38
|
+
// generateClass('TEXTCOLOR', textColor),
|
|
39
|
+
generateClass('BODYTEXT', textSize),
|
|
40
|
+
]
|
|
41
|
+
if (!dHl) {
|
|
42
|
+
const nonHlTextClass: string[] = [
|
|
43
|
+
generateClass('TEXTCOLOR', textColor),
|
|
44
|
+
generateClass('HVTEXTCOLOR', hlColor),
|
|
45
|
+
generateClass('FCTEXTCOLOR', hlColor),
|
|
46
|
+
]
|
|
47
|
+
classArray.push(nonHlTextClass.join(' '))
|
|
48
|
+
}
|
|
49
|
+
if (dHl) {
|
|
50
|
+
const highlightColor: string = generateClass('BEFOREBG', hlColor)
|
|
51
|
+
const hlClass: string =
|
|
52
|
+
'before:inset-y-0 before:left-0 before:transition-[width] before:duration-300 before:ease-linear before:w-0 hover:before:w-full focus:before:w-full '
|
|
53
|
+
classArray.push(hlClass + highlightColor)
|
|
54
|
+
const hlTextClass: string[] = [
|
|
55
|
+
generateClass('TEXTCOLOR', hlColor),
|
|
56
|
+
generateClass('HVTEXTCOLOR', textColor),
|
|
57
|
+
generateClass('FCTEXTCOLOR', textColor),
|
|
58
|
+
]
|
|
59
|
+
classArray.push(hlTextClass.join(' '))
|
|
60
|
+
}
|
|
61
|
+
if (fontBold) {
|
|
62
|
+
classArray.push('font-bold')
|
|
63
|
+
}
|
|
64
|
+
return classArray.join(' ')
|
|
65
|
+
})
|
|
66
|
+
</script>
|
|
67
|
+
|
|
68
|
+
<template>
|
|
69
|
+
<a
|
|
70
|
+
:class="[colorClass]"
|
|
71
|
+
class="px-xs py-2xs relative text-center block w-full before:absolute transition-colors duration-300 ease-linear"
|
|
72
|
+
:href="menuItem.url"
|
|
73
|
+
:target="menuItem.target ? menuItem.target : '_self'"
|
|
74
|
+
@click="handleLinkClick($event, menuItem)"
|
|
75
|
+
>
|
|
76
|
+
<span class="relative">{{ menuItem.title }}</span>
|
|
77
|
+
</a>
|
|
78
|
+
</template>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { BodyText, ColorPalette } from '@bobbykim/manguito-theme';
|
|
2
|
+
import type { MenuItemType } from '../common/index.types';
|
|
3
|
+
declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
4
|
+
menuItem: MenuItemType;
|
|
5
|
+
textColor?: ColorPalette | undefined;
|
|
6
|
+
textSize?: BodyText | undefined;
|
|
7
|
+
fontBold?: boolean | undefined;
|
|
8
|
+
dHl?: boolean | undefined;
|
|
9
|
+
hlColor?: ColorPalette | undefined;
|
|
10
|
+
asLink?: boolean | undefined;
|
|
11
|
+
}>, {
|
|
12
|
+
textColor: string;
|
|
13
|
+
textSize: string;
|
|
14
|
+
fontBold: boolean;
|
|
15
|
+
dHl: boolean;
|
|
16
|
+
hlColor: string;
|
|
17
|
+
asLink: boolean;
|
|
18
|
+
}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
19
|
+
"menu-click": (event: Event, item: MenuItemType) => void;
|
|
20
|
+
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
21
|
+
menuItem: MenuItemType;
|
|
22
|
+
textColor?: ColorPalette | undefined;
|
|
23
|
+
textSize?: BodyText | undefined;
|
|
24
|
+
fontBold?: boolean | undefined;
|
|
25
|
+
dHl?: boolean | undefined;
|
|
26
|
+
hlColor?: ColorPalette | undefined;
|
|
27
|
+
asLink?: boolean | undefined;
|
|
28
|
+
}>, {
|
|
29
|
+
textColor: string;
|
|
30
|
+
textSize: string;
|
|
31
|
+
fontBold: boolean;
|
|
32
|
+
dHl: boolean;
|
|
33
|
+
hlColor: string;
|
|
34
|
+
asLink: boolean;
|
|
35
|
+
}>>> & {
|
|
36
|
+
"onMenu-click"?: ((event: Event, item: MenuItemType) => any) | undefined;
|
|
37
|
+
}, {
|
|
38
|
+
textColor: ColorPalette;
|
|
39
|
+
asLink: boolean;
|
|
40
|
+
textSize: BodyText;
|
|
41
|
+
fontBold: boolean;
|
|
42
|
+
dHl: boolean;
|
|
43
|
+
hlColor: ColorPalette;
|
|
44
|
+
}, {}>;
|
|
45
|
+
export default _default;
|
|
46
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
47
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
48
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
49
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
50
|
+
} : {
|
|
51
|
+
type: import('vue').PropType<T[K]>;
|
|
52
|
+
required: true;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
type __VLS_WithDefaults<P, D> = {
|
|
56
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
57
|
+
default: D[K];
|
|
58
|
+
}> : P[K];
|
|
59
|
+
};
|
|
60
|
+
type __VLS_Prettify<T> = {
|
|
61
|
+
[K in keyof T]: T[K];
|
|
62
|
+
} & {};
|
package/package.json
CHANGED
|
@@ -1 +1,27 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "@bobbykim/mcl-header",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "index.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "vue-tsc --project tsconfig.vue.json && tsc --project tsconfig.ts.json"
|
|
9
|
+
},
|
|
10
|
+
"author": {
|
|
11
|
+
"name": "Bobby Kim",
|
|
12
|
+
"url": "https://www.devbobbykim.com/"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://manguito-component-library.vercel.app/",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/bobbykim89/manguito-component-library.git"
|
|
18
|
+
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@bobbykim/manguito-theme": "^0.16.0"
|
|
25
|
+
},
|
|
26
|
+
"gitHead": "5b81953e5108fd166c0b89ebc6a24e6de9499635"
|
|
27
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": "../../../tsconfig.json",
|
|
3
|
-
"include": ["./**/*.ts"],
|
|
4
|
-
"exclude": ["node_modules", "./**/*.vue.d.ts"
|
|
5
|
-
"compilerOptions": {
|
|
6
|
-
"skipLibCheck": true,
|
|
7
|
-
"declaration": true
|
|
8
|
-
}
|
|
3
|
+
"include": ["./**/*.ts", "./**/*.vue"],
|
|
4
|
+
"exclude": ["node_modules", "./**/*.vue.d.ts"]
|
|
9
5
|
}
|
package/tsconfig.ts.json
ADDED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { computed } from 'vue'
|
|
3
|
-
import type { ColorPalette } from '@bobbykim/manguito-theme'
|
|
4
|
-
import generateClass from '@bobbykim/manguito-theme'
|
|
5
|
-
|
|
6
|
-
const props = withDefaults(
|
|
7
|
-
defineProps<{
|
|
8
|
-
color?: ColorPalette
|
|
9
|
-
displayBorder?: boolean
|
|
10
|
-
toggle: boolean
|
|
11
|
-
navColor: ColorPalette
|
|
12
|
-
}>(),
|
|
13
|
-
{
|
|
14
|
-
color: 'dark-2',
|
|
15
|
-
displayBorder: true,
|
|
16
|
-
}
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
const emit = defineEmits(['hbg-click'])
|
|
20
|
-
|
|
21
|
-
const handleButtonToggle = (e: Event): void => {
|
|
22
|
-
emit('hbg-click', e)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const hamburgetButtonState = computed({
|
|
26
|
-
get() {
|
|
27
|
-
return props.toggle
|
|
28
|
-
},
|
|
29
|
-
set(value) {
|
|
30
|
-
return value
|
|
31
|
-
},
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
const getBorderClass = (
|
|
35
|
-
bColor: ColorPalette,
|
|
36
|
-
border: boolean,
|
|
37
|
-
nColor: ColorPalette
|
|
38
|
-
): string => {
|
|
39
|
-
/**
|
|
40
|
-
* @bColor - color
|
|
41
|
-
* @border - displayBorder
|
|
42
|
-
* @nColor - navColor
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
const classArray: string[] = [
|
|
46
|
-
generateClass('RINGCOLOR', bColor),
|
|
47
|
-
generateClass('OFFSETRING', nColor),
|
|
48
|
-
]
|
|
49
|
-
|
|
50
|
-
if (border) {
|
|
51
|
-
classArray.push(generateClass('BORDER', bColor))
|
|
52
|
-
classArray.push('border')
|
|
53
|
-
}
|
|
54
|
-
return classArray.join(' ')
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const getHamburgerButtonClass = (color: ColorPalette): string => {
|
|
58
|
-
/**
|
|
59
|
-
* @color - color
|
|
60
|
-
*/
|
|
61
|
-
const classArray: string[] = [
|
|
62
|
-
generateClass('BGCOLOR', color),
|
|
63
|
-
generateClass('BEFOREBG', color),
|
|
64
|
-
generateClass('AFTERBG', color),
|
|
65
|
-
]
|
|
66
|
-
|
|
67
|
-
return classArray.join(' ')
|
|
68
|
-
}
|
|
69
|
-
</script>
|
|
70
|
-
|
|
71
|
-
<template>
|
|
72
|
-
<button
|
|
73
|
-
class="p-3xs rounded-md aspect-square outline-none focus:ring-4 ring-offset-2 transition-all duration-300 ease-linear hover:opacity-70 focus:opacity-70 hamburger__button"
|
|
74
|
-
:class="getBorderClass(color, displayBorder, navColor)"
|
|
75
|
-
@click="handleButtonToggle"
|
|
76
|
-
>
|
|
77
|
-
<input
|
|
78
|
-
type="checkbox"
|
|
79
|
-
v-model="hamburgetButtonState"
|
|
80
|
-
class="hidden hamburger__checkbox"
|
|
81
|
-
/>
|
|
82
|
-
<div
|
|
83
|
-
class="relative h-[3px] w-sm hamburger__icon before:w-sm after:w-sm before:h-[3px] after:h-[3px] transition-all duration-300 ease-linear"
|
|
84
|
-
:class="getHamburgerButtonClass(color)"
|
|
85
|
-
></div>
|
|
86
|
-
</button>
|
|
87
|
-
</template>
|
|
88
|
-
|
|
89
|
-
<style lang="scss" scoped>
|
|
90
|
-
.hamburger__icon {
|
|
91
|
-
&::before,
|
|
92
|
-
&::after {
|
|
93
|
-
position: absolute;
|
|
94
|
-
left: 0;
|
|
95
|
-
transition: all 0.3s linear;
|
|
96
|
-
}
|
|
97
|
-
&::before {
|
|
98
|
-
top: -0.5rem;
|
|
99
|
-
}
|
|
100
|
-
&::after {
|
|
101
|
-
top: 0.5rem;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
.hamburger__button {
|
|
105
|
-
&:focus .hamburger__icon,
|
|
106
|
-
&:hover .hamburger__icon {
|
|
107
|
-
scale: 1.05;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
.hamburger__checkbox:checked + .hamburger__icon {
|
|
111
|
-
background-color: transparent;
|
|
112
|
-
}
|
|
113
|
-
.hamburger__checkbox:checked + .hamburger__icon::before {
|
|
114
|
-
top: 0;
|
|
115
|
-
transform: rotate(135deg);
|
|
116
|
-
}
|
|
117
|
-
.hamburger__checkbox:checked + .hamburger__icon::after {
|
|
118
|
-
top: 0;
|
|
119
|
-
transform: rotate(-135deg);
|
|
120
|
-
}
|
|
121
|
-
</style>
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { ColorPalette } from '@bobbykim/manguito-theme';
|
|
2
|
-
declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
3
|
-
color?: ColorPalette | undefined;
|
|
4
|
-
displayBorder?: boolean | undefined;
|
|
5
|
-
toggle: boolean;
|
|
6
|
-
navColor: ColorPalette;
|
|
7
|
-
}>, {
|
|
8
|
-
color: string;
|
|
9
|
-
displayBorder: boolean;
|
|
10
|
-
}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
|
-
"hbg-click": (...args: any[]) => void;
|
|
12
|
-
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
13
|
-
color?: ColorPalette | undefined;
|
|
14
|
-
displayBorder?: boolean | undefined;
|
|
15
|
-
toggle: boolean;
|
|
16
|
-
navColor: ColorPalette;
|
|
17
|
-
}>, {
|
|
18
|
-
color: string;
|
|
19
|
-
displayBorder: boolean;
|
|
20
|
-
}>>> & {
|
|
21
|
-
"onHbg-click"?: ((...args: any[]) => any) | undefined;
|
|
22
|
-
}, {
|
|
23
|
-
color: ColorPalette;
|
|
24
|
-
displayBorder: boolean;
|
|
25
|
-
}, {}>;
|
|
26
|
-
export default _default;
|
|
27
|
-
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
28
|
-
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
29
|
-
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
30
|
-
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
31
|
-
} : {
|
|
32
|
-
type: import('vue').PropType<T[K]>;
|
|
33
|
-
required: true;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
type __VLS_WithDefaults<P, D> = {
|
|
37
|
-
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
38
|
-
default: D[K];
|
|
39
|
-
}> : P[K];
|
|
40
|
-
};
|
|
41
|
-
type __VLS_Prettify<T> = {
|
|
42
|
-
[K in keyof T]: T[K];
|
|
43
|
-
} & {};
|
|
File without changes
|