@bobbykim/mcl-header 0.5.1 → 0.6.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.
@@ -1,270 +0,0 @@
1
- <script setup lang="ts">
2
- import type {
3
- BodyText,
4
- ColorPalette,
5
- CtaTarget,
6
- HeadingSize,
7
- } from '@bobbykim/manguito-theme'
8
- import generateClass, { HeaderVertical } from '@bobbykim/manguito-theme'
9
- import { computed, ref } from 'vue'
10
- import type { MenuCollapseType, MenuItemType } from '../common/index.types'
11
- import NavCollapseVertical from './NavCollapseVertical.vue'
12
- import NavLinkVertical from './NavLinkVertical.vue'
13
-
14
- const props = withDefaults(
15
- defineProps<{
16
- logo: string
17
- logoAlt?: string
18
- title: string
19
- titleSize?: HeadingSize
20
- titleColor?: ColorPalette
21
- titleBlockAsLink?: boolean
22
- titleBlockLinkTarget?: CtaTarget
23
- titleBlockLink: string
24
- menuItems: Array<MenuItemType | MenuCollapseType>
25
- menuItemAsLink?: boolean
26
- menuTextSize?: BodyText
27
- menuTextColor?: ColorPalette
28
- menuTextBold?: boolean
29
- displayHighlight?: boolean
30
- highlightColor?: ColorPalette
31
- bgColor?: ColorPalette
32
- drawerBtnColor?: ColorPalette
33
- drawerBtnBorder?: boolean
34
- headerWidth?: number
35
- }>(),
36
- {
37
- logoAlt: '',
38
- titleBlockAsLink: false,
39
- titleBlockLinkTarget: '_self',
40
- titleSize: 'md',
41
- titleColor: 'dark-3',
42
- menuItemAsLink: false,
43
- menuTextSize: 'md',
44
- menuTextColor: 'dark-3',
45
- menuTextBold: false,
46
- displayHighlight: true,
47
- highlightColor: 'primary',
48
- bgColor: 'light-1',
49
- drawerBtnColor: 'dark-1',
50
- drawerBtnBorder: true,
51
- headerWidth: 160,
52
- }
53
- )
54
- const slots = defineSlots<{
55
- default: any
56
- 'content-bottom': any
57
- 'mobile-bottom'(props: { headerClose: () => void }): any
58
- }>()
59
- const emit = defineEmits<{
60
- (e: 'toggle-drawer', event: Event, open: boolean): void
61
- (e: 'title-click', event: Event, url: string, target: CtaTarget): void
62
- (e: 'menu-click', event: Event, item: MenuItemType): void
63
- (e: 'collapse-click', event: Event, title: string, visible: boolean): void
64
- }>()
65
- const componentRef = ref<InstanceType<typeof HeaderVertical>>()
66
- const collapseRef = ref<InstanceType<typeof NavCollapseVertical>[]>()
67
- const handleDrawerClick = (e: Event, status: boolean) => {
68
- emit('toggle-drawer', e, status)
69
- }
70
- const closeDrawer = (): void => {
71
- componentRef.value?.headerClose()
72
- }
73
- const closeCollapse = (): void => {
74
- for (let i = 0; i < collapseRef.value!.length; i++) {
75
- collapseRef.value![i].closeCollapse()
76
- }
77
- }
78
- const handleTitleClick = (e: Event) => {
79
- const { titleBlockAsLink, titleBlockLink, titleBlockLinkTarget } = props
80
- if (!titleBlockAsLink) {
81
- e.preventDefault()
82
- }
83
- emit('title-click', e, titleBlockLink, titleBlockLinkTarget)
84
- closeDrawer()
85
- closeCollapse()
86
- }
87
- const handleMenuClick = (e: Event, item: MenuItemType) => {
88
- const { menuItemAsLink } = props
89
- if (!menuItemAsLink) {
90
- e.preventDefault()
91
- }
92
- emit('menu-click', e, item)
93
- closeDrawer()
94
- closeCollapse()
95
- }
96
- const handleCollapseMenuClick = (e: Event, title: string, visible: boolean) => {
97
- emit('collapse-click', e, title, visible)
98
- }
99
- const titleTextClass = computed<string>(() => {
100
- const { titleSize, titleColor } = props
101
- const classArray = [
102
- generateClass('H3', titleSize),
103
- generateClass('TEXTCOLOR', titleColor),
104
- ]
105
- return classArray.join(' ')
106
- })
107
- const hasChildren = (item: MenuItemType | MenuCollapseType) => {
108
- const NavCollapse = item as MenuCollapseType
109
- if (typeof NavCollapse.children === 'undefined') {
110
- return false
111
- }
112
- return NavCollapse.children.length > 0
113
- }
114
- defineExpose({
115
- headerClose: closeDrawer,
116
- })
117
- </script>
118
-
119
- <template>
120
- <HeaderVertical
121
- :bg-color="bgColor"
122
- :drawer-btn-color="drawerBtnColor"
123
- :drawer-btn-border="drawerBtnBorder"
124
- :header-width="headerWidth"
125
- @toggle-drawer="handleDrawerClick"
126
- ref="componentRef"
127
- >
128
- <template #default>
129
- <slot name="default"></slot>
130
- </template>
131
- <template #content>
132
- <div>
133
- <!-- logo block -->
134
- <div class="p-md text-center">
135
- <a
136
- :href="titleBlockLink"
137
- :target="titleBlockLinkTarget"
138
- @click="handleTitleClick"
139
- >
140
- <img
141
- :src="logo"
142
- :alt="logoAlt"
143
- class="h-full inline-block max-h-xl"
144
- />
145
- </a>
146
- </div>
147
- <!-- title block -->
148
- <div>
149
- <a
150
- :href="titleBlockLink"
151
- :target="titleBlockLinkTarget"
152
- @click="handleTitleClick"
153
- >
154
- <h3
155
- :class="titleTextClass"
156
- class="text-center mb-md"
157
- v-html="title"
158
- ></h3>
159
- </a>
160
- </div>
161
- <!-- menu item block -->
162
- <ul class="flex flex-col">
163
- <li v-for="(item, index) in menuItems" :key="`menu-${index}`">
164
- <NavLinkVertical
165
- v-if="!hasChildren(item)"
166
- :menu-item="(item as MenuItemType)"
167
- :as-link="menuItemAsLink"
168
- :text-color="menuTextColor"
169
- :text-size="menuTextSize"
170
- :font-bold="menuTextBold"
171
- :d-hl="displayHighlight"
172
- :hl-color="highlightColor"
173
- @menu-click="handleMenuClick"
174
- />
175
- <NavCollapseVertical
176
- v-else
177
- ref="collapseRef"
178
- :nav-id="item.title"
179
- nav-location="desktop"
180
- :nav-accordion-group="title"
181
- :menu-item="(item as MenuCollapseType)"
182
- :as-link="menuItemAsLink"
183
- :text-color="menuTextColor"
184
- :text-size="menuTextSize"
185
- :font-bold="menuTextBold"
186
- :d-hl="displayHighlight"
187
- :hl-color="highlightColor"
188
- @child-click="handleMenuClick"
189
- @label-click="handleCollapseMenuClick"
190
- />
191
- </li>
192
- </ul>
193
- </div>
194
- </template>
195
- <template #content-bottom>
196
- <div v-if="slots['content-bottom']">
197
- <slot name="content-bottom"></slot>
198
- </div>
199
- </template>
200
- <template #mobile-content="{ headerClose }">
201
- <!-- mobile content -->
202
- <div class="flex flex-col justify-between h-full">
203
- <div>
204
- <!-- logo block -->
205
- <div class="p-md text-center">
206
- <a
207
- :href="titleBlockLink"
208
- :target="titleBlockLinkTarget"
209
- @click="handleTitleClick"
210
- >
211
- <img
212
- :src="logo"
213
- :alt="logoAlt"
214
- class="h-full inline-block max-h-xl"
215
- />
216
- </a>
217
- </div>
218
- <!-- title block -->
219
- <div>
220
- <a
221
- :href="titleBlockLink"
222
- :target="titleBlockLinkTarget"
223
- @click="handleTitleClick"
224
- >
225
- <h3
226
- :class="titleTextClass"
227
- class="text-center mb-md"
228
- v-html="title"
229
- ></h3>
230
- </a>
231
- </div>
232
- <!-- menu item block -->
233
- <ul class="flex flex-col">
234
- <li v-for="(item, index) in menuItems" :key="`menu-${index}`">
235
- <NavLinkVertical
236
- v-if="!hasChildren(item)"
237
- :menu-item="(item as MenuItemType)"
238
- :as-link="menuItemAsLink"
239
- :text-color="menuTextColor"
240
- :text-size="menuTextSize"
241
- :font-bold="menuTextBold"
242
- :d-hl="displayHighlight"
243
- :hl-color="highlightColor"
244
- @menu-click="handleMenuClick"
245
- />
246
- <NavCollapseVertical
247
- v-else
248
- :nav-id="item.title"
249
- nav-location="mobile"
250
- :nav-accordion-group="title"
251
- :menu-item="(item as MenuCollapseType)"
252
- :as-link="menuItemAsLink"
253
- :text-color="menuTextColor"
254
- :text-size="menuTextSize"
255
- :font-bold="menuTextBold"
256
- :d-hl="displayHighlight"
257
- :hl-color="highlightColor"
258
- @child-click="handleMenuClick"
259
- @label-click="handleCollapseMenuClick"
260
- />
261
- </li>
262
- </ul>
263
- </div>
264
- <div v-if="slots['mobile-bottom']">
265
- <slot name="mobile-bottom" :headerClose="headerClose"></slot>
266
- </div>
267
- </div>
268
- </template>
269
- </HeaderVertical>
270
- </template>
@@ -1,138 +0,0 @@
1
- import type { BodyText, ColorPalette, CtaTarget, HeadingSize } from '@bobbykim/manguito-theme';
2
- import type { MenuCollapseType, MenuItemType } from '../common/index.types';
3
- declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
4
- logo: string;
5
- logoAlt?: string | undefined;
6
- title: string;
7
- titleSize?: HeadingSize | undefined;
8
- titleColor?: ColorPalette | undefined;
9
- titleBlockAsLink?: boolean | undefined;
10
- titleBlockLinkTarget?: CtaTarget | undefined;
11
- titleBlockLink: string;
12
- menuItems: (MenuItemType | MenuCollapseType)[];
13
- menuItemAsLink?: boolean | undefined;
14
- menuTextSize?: BodyText | undefined;
15
- menuTextColor?: ColorPalette | undefined;
16
- menuTextBold?: boolean | undefined;
17
- displayHighlight?: boolean | undefined;
18
- highlightColor?: ColorPalette | undefined;
19
- bgColor?: ColorPalette | undefined;
20
- drawerBtnColor?: ColorPalette | undefined;
21
- drawerBtnBorder?: boolean | undefined;
22
- headerWidth?: number | undefined;
23
- }>, {
24
- logoAlt: string;
25
- titleBlockAsLink: boolean;
26
- titleBlockLinkTarget: string;
27
- titleSize: string;
28
- titleColor: string;
29
- menuItemAsLink: boolean;
30
- menuTextSize: string;
31
- menuTextColor: string;
32
- menuTextBold: boolean;
33
- displayHighlight: boolean;
34
- highlightColor: string;
35
- bgColor: string;
36
- drawerBtnColor: string;
37
- drawerBtnBorder: boolean;
38
- headerWidth: number;
39
- }>, {
40
- headerClose: () => void;
41
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
42
- "toggle-drawer": (event: Event, open: boolean) => void;
43
- "title-click": (event: Event, url: string, target: CtaTarget) => void;
44
- "menu-click": (event: Event, item: MenuItemType) => void;
45
- "collapse-click": (event: Event, title: string, visible: boolean) => void;
46
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
47
- logo: string;
48
- logoAlt?: string | undefined;
49
- title: string;
50
- titleSize?: HeadingSize | undefined;
51
- titleColor?: ColorPalette | undefined;
52
- titleBlockAsLink?: boolean | undefined;
53
- titleBlockLinkTarget?: CtaTarget | undefined;
54
- titleBlockLink: string;
55
- menuItems: (MenuItemType | MenuCollapseType)[];
56
- menuItemAsLink?: boolean | undefined;
57
- menuTextSize?: BodyText | undefined;
58
- menuTextColor?: ColorPalette | undefined;
59
- menuTextBold?: boolean | undefined;
60
- displayHighlight?: boolean | undefined;
61
- highlightColor?: ColorPalette | undefined;
62
- bgColor?: ColorPalette | undefined;
63
- drawerBtnColor?: ColorPalette | undefined;
64
- drawerBtnBorder?: boolean | undefined;
65
- headerWidth?: number | undefined;
66
- }>, {
67
- logoAlt: string;
68
- titleBlockAsLink: boolean;
69
- titleBlockLinkTarget: string;
70
- titleSize: string;
71
- titleColor: string;
72
- menuItemAsLink: boolean;
73
- menuTextSize: string;
74
- menuTextColor: string;
75
- menuTextBold: boolean;
76
- displayHighlight: boolean;
77
- highlightColor: string;
78
- bgColor: string;
79
- drawerBtnColor: string;
80
- drawerBtnBorder: boolean;
81
- headerWidth: number;
82
- }>>> & {
83
- "onToggle-drawer"?: ((event: Event, open: boolean) => any) | undefined;
84
- "onTitle-click"?: ((event: Event, url: string, target: CtaTarget) => any) | undefined;
85
- "onMenu-click"?: ((event: Event, item: MenuItemType) => any) | undefined;
86
- "onCollapse-click"?: ((event: Event, title: string, visible: boolean) => any) | undefined;
87
- }, {
88
- bgColor: ColorPalette;
89
- drawerBtnColor: ColorPalette;
90
- drawerBtnBorder: boolean;
91
- headerWidth: number;
92
- titleColor: ColorPalette;
93
- menuTextSize: BodyText;
94
- menuTextColor: ColorPalette;
95
- menuTextBold: boolean;
96
- displayHighlight: boolean;
97
- highlightColor: ColorPalette;
98
- logoAlt: string;
99
- titleSize: HeadingSize;
100
- titleBlockAsLink: boolean;
101
- titleBlockLinkTarget: CtaTarget;
102
- menuItemAsLink: boolean;
103
- }, {}>, Readonly<{
104
- default: any;
105
- 'content-bottom': any;
106
- 'mobile-bottom'(props: {
107
- headerClose: () => void;
108
- }): any;
109
- }> & {
110
- default: any;
111
- 'content-bottom': any;
112
- 'mobile-bottom'(props: {
113
- headerClose: () => void;
114
- }): any;
115
- }>;
116
- export default _default;
117
- type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
118
- type __VLS_TypePropsToRuntimeProps<T> = {
119
- [K in keyof T]-?: {} extends Pick<T, K> ? {
120
- type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
121
- } : {
122
- type: import('vue').PropType<T[K]>;
123
- required: true;
124
- };
125
- };
126
- type __VLS_WithDefaults<P, D> = {
127
- [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
128
- default: D[K];
129
- }> : P[K];
130
- };
131
- type __VLS_Prettify<T> = {
132
- [K in keyof T]: T[K];
133
- } & {};
134
- type __VLS_WithTemplateSlots<T, S> = T & {
135
- new (): {
136
- $slots: S;
137
- };
138
- };
@@ -1,211 +0,0 @@
1
- <script setup lang="ts">
2
- import type { BodyText, ColorPalette } from '@bobbykim/manguito-theme'
3
- import generateClass, { Collapse, vCollapse } from '@bobbykim/manguito-theme'
4
- import { computed, ref } from 'vue'
5
- import type { MenuCollapseType, MenuItemType } from '../common/index.types'
6
- type NavLocationType = 'desktop' | 'mobile'
7
- const props = withDefaults(
8
- defineProps<{
9
- navId: string
10
- navAccordionGroup: string
11
- navLocation: NavLocationType
12
- menuItem: MenuCollapseType
13
- textColor?: ColorPalette
14
- textSize?: BodyText
15
- fontBold?: boolean
16
- dHl?: boolean
17
- hlColor?: ColorPalette
18
- asLink?: boolean
19
- }>(),
20
- {
21
- textColor: 'dark-3',
22
- textSize: 'md',
23
- fontBold: false,
24
- dHl: true,
25
- hlColor: 'primary',
26
- asLink: true,
27
- }
28
- )
29
- const toggle = ref<boolean>(false)
30
- const collapseRef = ref<InstanceType<typeof Collapse>>()
31
- const emit = defineEmits<{
32
- (e: 'label-click', event: Event, title: string, open: boolean): void
33
- (e: 'child-click', event: Event, item: MenuItemType): void
34
- }>()
35
- const toggleCollapse = (visible: boolean): void => {
36
- toggle.value = visible
37
- }
38
- const closeCollapse = () => {
39
- collapseRef.value?.close()
40
- }
41
- const handleCollapseLabelClick = (e: Event, title: string) => {
42
- emit('label-click', e, title, toggle.value)
43
- }
44
- const handleChildClick = (e: Event, item: MenuItemType) => {
45
- const { asLink } = props
46
- if (!asLink) {
47
- e.preventDefault()
48
- }
49
- emit('child-click', e, item)
50
- collapseRef.value?.close()
51
- closeCollapse()
52
- }
53
- const getNavId = computed<string>(() => {
54
- const { navId, navLocation } = props
55
- const navIdLower = navId.toLowerCase()
56
- const navIdKebab = navIdLower.replaceAll(' ', '-')
57
- return `nav-${navLocation}-${navIdKebab}`
58
- })
59
- const getAccordionGroup = computed<string>(() => {
60
- const { navAccordionGroup, navLocation } = props
61
- const agKebab = navAccordionGroup.toLowerCase().replaceAll(' ', '-')
62
- return `nav-accordion-group-${navLocation}-${agKebab}`
63
- })
64
-
65
- const colorClass = computed<string>(() => {
66
- const { textColor, textSize, dHl, hlColor, fontBold } = props
67
- const classArray: string[] = [generateClass('BODYTEXT', textSize)]
68
- if (!dHl) {
69
- const nonHlTextClass: string[] = [
70
- generateClass('TEXTCOLOR', textColor),
71
- generateClass('HVTEXTCOLOR', hlColor),
72
- generateClass('FCTEXTCOLOR', hlColor),
73
- ]
74
- classArray.push(nonHlTextClass.join(' '))
75
- }
76
- if (dHl) {
77
- const highlightColor: string = generateClass('BEFOREBG', hlColor)
78
- const hlClass: string =
79
- '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 '
80
- classArray.push(hlClass + highlightColor)
81
- const hlTextClass: string[] = [
82
- generateClass('TEXTCOLOR', hlColor),
83
- generateClass('HVTEXTCOLOR', textColor),
84
- generateClass('FCTEXTCOLOR', textColor),
85
- ]
86
- classArray.push(hlTextClass.join(' '))
87
- }
88
- if (fontBold) {
89
- classArray.push('font-bold')
90
- }
91
- return classArray.join(' ')
92
- })
93
- const collapseHighlightClass = computed<string>(() => {
94
- const { dHl, hlColor, navLocation } = props
95
- const classArray: string[] = []
96
- if (!dHl) {
97
- return ''
98
- }
99
- const classNames: string =
100
- 'before:absolute before:w-xs before:h-full before:bg-primary before:bg-opacity-70 '
101
- const hlLocation: string =
102
- navLocation === 'desktop' ? 'before:left-0 ' : 'before:right-0 '
103
- classArray.push(classNames + hlLocation + generateClass('BEFOREBG', hlColor))
104
- return classArray.join(' ')
105
- })
106
- const childItemColorClass = computed<string>(() => {
107
- const { textColor, textSize, dHl, hlColor, fontBold, navLocation } = props
108
- let childBodyText: BodyText =
109
- textSize === 'xl'
110
- ? 'lg'
111
- : textSize === 'lg'
112
- ? 'md'
113
- : textSize === 'md'
114
- ? 'sm'
115
- : 'xs'
116
- const classArray: string[] = [
117
- generateClass('TEXTCOLOR', textColor),
118
- generateClass('BODYTEXT', childBodyText),
119
- ]
120
- if (navLocation === 'mobile') {
121
- classArray.push('text-end')
122
- }
123
- if (!dHl) {
124
- const nonHlTextClass: string[] = [
125
- generateClass('TEXTCOLOR', textColor),
126
- generateClass('HVTEXTCOLOR', hlColor),
127
- generateClass('FCTEXTCOLOR', hlColor),
128
- ]
129
- classArray.push(nonHlTextClass.join(' '))
130
- }
131
- if (dHl) {
132
- const highlightColor: string = generateClass('BEFOREBG', hlColor)
133
- const hlClass: string =
134
- 'before:inset-y-0 before:duration-300 before:ease-linear before:w-0 hover:before:w-full focus:before:w-full before:bg-opacity-70 '
135
- const hlLocation: string =
136
- navLocation === 'desktop'
137
- ? 'before:left-0 before:transition-[width] '
138
- : 'before:left-full hover:before:left-0 focus:before:left-0 before:transition-[all] '
139
- classArray.push(hlClass + hlLocation + highlightColor)
140
- const hlTextClass: string[] = [
141
- generateClass('TEXTCOLOR', hlColor),
142
- generateClass('HVTEXTCOLOR', textColor),
143
- generateClass('FCTEXTCOLOR', textColor),
144
- ]
145
- classArray.push(hlTextClass.join(' '))
146
- }
147
- if (fontBold) {
148
- classArray.push('font-bold')
149
- }
150
- return classArray.join(' ')
151
- })
152
- defineExpose({
153
- closeCollapse: closeCollapse,
154
- })
155
- </script>
156
-
157
- <template>
158
- <div>
159
- <button
160
- v-collapse:[getNavId]
161
- class="px-xs py-2xs relative text-center block w-full before:absolute transition-colors duration-300 ease-linear"
162
- @click="handleCollapseLabelClick($event, menuItem.title)"
163
- :class="[colorClass]"
164
- >
165
- <div class="relative flex gap-2 items-center justify-center">
166
- <span>{{ menuItem.title }}</span>
167
- <svg
168
- xmlns="http://www.w3.org/2000/svg"
169
- viewBox="0 0 448 512"
170
- class="h-[0.8rem] fill-current"
171
- :class="[
172
- toggle ? 'rotate-180' : 'rotate-0',
173
- 'transition-transform duration-300 ease-in',
174
- ]"
175
- >
176
- <!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
177
- <path
178
- d="M224 416c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L224 338.8l169.4-169.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-192 192C240.4 412.9 232.2 416 224 416z"
179
- />
180
- </svg>
181
- </div>
182
- </button>
183
- <Collapse
184
- ref="collapseRef"
185
- :id="getNavId"
186
- :accordion="getAccordionGroup"
187
- @open="toggleCollapse"
188
- @close="toggleCollapse"
189
- >
190
- <ul class="relative" :class="[collapseHighlightClass]">
191
- <li
192
- v-for="(item, idx) in menuItem.children"
193
- :key="idx"
194
- :class="[navLocation === 'desktop' ? 'ml-xs' : 'mr-xs']"
195
- >
196
- <a
197
- :href="item.url"
198
- :target="item.target"
199
- @click="handleChildClick($event, item)"
200
- class="relative before:absolute w-full px-2xs py-3xs block overflow-x-hidden transition-colors duration-300 ease-linear"
201
- :class="[childItemColorClass]"
202
- >
203
- <span class="relative">
204
- {{ item.title }}
205
- </span>
206
- </a>
207
- </li>
208
- </ul>
209
- </Collapse>
210
- </div>
211
- </template>
@@ -1,73 +0,0 @@
1
- import type { BodyText, ColorPalette } from '@bobbykim/manguito-theme';
2
- import type { MenuCollapseType, MenuItemType } from '../common/index.types';
3
- type NavLocationType = 'desktop' | 'mobile';
4
- declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
5
- navId: string;
6
- navAccordionGroup: string;
7
- navLocation: NavLocationType;
8
- menuItem: MenuCollapseType;
9
- textColor?: ColorPalette | undefined;
10
- textSize?: BodyText | undefined;
11
- fontBold?: boolean | undefined;
12
- dHl?: boolean | undefined;
13
- hlColor?: ColorPalette | undefined;
14
- asLink?: boolean | undefined;
15
- }>, {
16
- textColor: string;
17
- textSize: string;
18
- fontBold: boolean;
19
- dHl: boolean;
20
- hlColor: string;
21
- asLink: boolean;
22
- }>, {
23
- closeCollapse: () => void;
24
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
25
- "label-click": (event: Event, title: string, open: boolean) => void;
26
- "child-click": (event: Event, item: MenuItemType) => void;
27
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
28
- navId: string;
29
- navAccordionGroup: string;
30
- navLocation: NavLocationType;
31
- menuItem: MenuCollapseType;
32
- textColor?: ColorPalette | undefined;
33
- textSize?: BodyText | undefined;
34
- fontBold?: boolean | undefined;
35
- dHl?: boolean | undefined;
36
- hlColor?: ColorPalette | undefined;
37
- asLink?: boolean | undefined;
38
- }>, {
39
- textColor: string;
40
- textSize: string;
41
- fontBold: boolean;
42
- dHl: boolean;
43
- hlColor: string;
44
- asLink: boolean;
45
- }>>> & {
46
- "onChild-click"?: ((event: Event, item: MenuItemType) => any) | undefined;
47
- "onLabel-click"?: ((event: Event, title: string, open: boolean) => any) | undefined;
48
- }, {
49
- textColor: ColorPalette;
50
- asLink: boolean;
51
- textSize: BodyText;
52
- fontBold: boolean;
53
- dHl: boolean;
54
- hlColor: ColorPalette;
55
- }, {}>;
56
- export default _default;
57
- type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
58
- type __VLS_TypePropsToRuntimeProps<T> = {
59
- [K in keyof T]-?: {} extends Pick<T, K> ? {
60
- type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
61
- } : {
62
- type: import('vue').PropType<T[K]>;
63
- required: true;
64
- };
65
- };
66
- type __VLS_WithDefaults<P, D> = {
67
- [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
68
- default: D[K];
69
- }> : P[K];
70
- };
71
- type __VLS_Prettify<T> = {
72
- [K in keyof T]: T[K];
73
- } & {};