@bobbykim/mcl-header 0.3.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.
@@ -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,11 +1,11 @@
1
1
  {
2
2
  "name": "@bobbykim/mcl-header",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "index.ts",
7
7
  "scripts": {
8
- "build": "vue-tsc --project tsconfig.vue.json && tsc"
8
+ "build": "vue-tsc --project tsconfig.vue.json && tsc --project tsconfig.ts.json"
9
9
  },
10
10
  "author": {
11
11
  "name": "Bobby Kim",
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
- "@bobbykim/manguito-theme": "^0.15.0"
24
+ "@bobbykim/manguito-theme": "^0.16.0"
25
25
  },
26
- "gitHead": "69d6ee1c4f91a74b226cb46182845201141805fa"
26
+ "gitHead": "5b81953e5108fd166c0b89ebc6a24e6de9499635"
27
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", "./**/*.vue"],
5
- "compilerOptions": {
6
- "skipLibCheck": true,
7
- "declaration": true
8
- }
3
+ "include": ["./**/*.ts", "./**/*.vue"],
4
+ "exclude": ["node_modules", "./**/*.vue.d.ts"]
9
5
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../../tsconfig.json",
3
+ "include": ["./**/*.ts"],
4
+ "exclude": ["node_modules", "./**/*.vue.d.ts", "./**/*.vue"],
5
+ "compilerOptions": {
6
+ "skipLibCheck": true,
7
+ "declaration": true
8
+ }
9
+ }
@@ -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