@edgedev/create-edge-app 1.1.25 → 1.1.26
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/README.md +55 -20
- package/{agent.md → agents.md} +2 -0
- package/bin/cli.js +6 -6
- package/edge/components/auth/login.vue +384 -0
- package/edge/components/auth/register.vue +396 -0
- package/edge/components/auth.vue +108 -0
- package/edge/components/autoFileUpload.vue +215 -0
- package/edge/components/billing.vue +8 -0
- package/edge/components/buttonDivider.vue +14 -0
- package/edge/components/chip.vue +34 -0
- package/edge/components/clipboardButton.vue +42 -0
- package/edge/components/cms/block.vue +529 -0
- package/edge/components/cms/blockApi.vue +212 -0
- package/edge/components/cms/blockEditor.vue +725 -0
- package/edge/components/cms/blockInput.vue +66 -0
- package/edge/components/cms/blockPicker.vue +486 -0
- package/edge/components/cms/blockRender.vue +78 -0
- package/edge/components/cms/blockSheetContent.vue +28 -0
- package/edge/components/cms/codeEditor.vue +466 -0
- package/edge/components/cms/fontUpload.vue +327 -0
- package/edge/components/cms/htmlContent.vue +807 -0
- package/edge/components/cms/init_blocks/api_with_subarrays.html +17 -0
- package/edge/components/cms/init_blocks/array_with_collection.html +7 -0
- package/edge/components/cms/init_blocks/array_with_objects.html +7 -0
- package/edge/components/cms/init_blocks/carousel.html +103 -0
- package/edge/components/cms/init_blocks/contact_us.html +69 -0
- package/edge/components/cms/init_blocks/content_with_left_image.html +27 -0
- package/edge/components/cms/init_blocks/footer.html +24 -0
- package/edge/components/cms/init_blocks/header_divider.html +7 -0
- package/edge/components/cms/init_blocks/hero.html +35 -0
- package/edge/components/cms/init_blocks/hero_carousel.html +52 -0
- package/edge/components/cms/init_blocks/newsletter.html +117 -0
- package/edge/components/cms/init_blocks/post_content.html +7 -0
- package/edge/components/cms/init_blocks/post_title_header.html +21 -0
- package/edge/components/cms/init_blocks/posts_list.html +20 -0
- package/edge/components/cms/init_blocks/properties_showcase.html +100 -0
- package/edge/components/cms/init_blocks/property_carousel.html +59 -0
- package/edge/components/cms/init_blocks/property_detail.html +112 -0
- package/edge/components/cms/init_blocks/property_detail_header.html +34 -0
- package/edge/components/cms/init_blocks/property_results.html +137 -0
- package/edge/components/cms/init_blocks/property_search.html +75 -0
- package/edge/components/cms/init_blocks/simple_array.html +7 -0
- package/edge/components/cms/mediaCard.vue +116 -0
- package/edge/components/cms/mediaManager.vue +386 -0
- package/edge/components/cms/menu.vue +1103 -0
- package/edge/components/cms/optionsSelect.vue +107 -0
- package/edge/components/cms/page.vue +1785 -0
- package/edge/components/cms/posts.vue +1083 -0
- package/edge/components/cms/site.vue +1298 -0
- package/edge/components/cms/themeDefaultMenu.vue +548 -0
- package/edge/components/cms/themeEditor.vue +426 -0
- package/edge/components/dashboard.vue +776 -0
- package/edge/components/editor.vue +671 -0
- package/edge/components/fileTree.vue +72 -0
- package/edge/components/files.vue +89 -0
- package/edge/components/formSubtypes/myOrgs.vue +214 -0
- package/edge/components/formSubtypes/users.vue +336 -0
- package/edge/components/functionChips.vue +57 -0
- package/edge/components/gError.vue +98 -0
- package/edge/components/gHelper.vue +67 -0
- package/edge/components/gInput.vue +1331 -0
- package/edge/components/loggingIn.vue +41 -0
- package/edge/components/menu.vue +137 -0
- package/edge/components/menuContent.vue +132 -0
- package/edge/components/myAccount.vue +317 -0
- package/edge/components/myOrganizations.vue +75 -0
- package/edge/components/myProfile.vue +122 -0
- package/edge/components/orgSwitcher.vue +25 -0
- package/edge/components/organizationMembers.vue +522 -0
- package/edge/components/organizationSettings.vue +271 -0
- package/edge/components/shad/breadcrumbs.vue +35 -0
- package/edge/components/shad/button.vue +43 -0
- package/edge/components/shad/checkbox.vue +73 -0
- package/edge/components/shad/combobox.vue +238 -0
- package/edge/components/shad/datepicker.vue +184 -0
- package/edge/components/shad/dialog.vue +32 -0
- package/edge/components/shad/dropdownMenu.vue +54 -0
- package/edge/components/shad/dropdownMenuItem.vue +21 -0
- package/edge/components/shad/form.vue +59 -0
- package/edge/components/shad/html.vue +877 -0
- package/edge/components/shad/input.vue +139 -0
- package/edge/components/shad/number.vue +109 -0
- package/edge/components/shad/select.vue +151 -0
- package/edge/components/shad/selectTags.vue +278 -0
- package/edge/components/shad/switch.vue +67 -0
- package/edge/components/shad/tags.vue +137 -0
- package/edge/components/shad/textarea.vue +102 -0
- package/edge/components/shad/typeMoney.vue +167 -0
- package/edge/components/sideBar.vue +288 -0
- package/edge/components/sideBarContent.vue +268 -0
- package/edge/components/sidebarProvider.vue +33 -0
- package/edge/components/tooltip.vue +16 -0
- package/edge/components/userMenu.vue +148 -0
- package/edge/components/v/alert.vue +59 -0
- package/edge/components/v/alertTitle.vue +18 -0
- package/edge/components/v/card.vue +53 -0
- package/edge/components/v/cardActions.vue +18 -0
- package/edge/components/v/cardText.vue +18 -0
- package/edge/components/v/cardTitle.vue +20 -0
- package/edge/components/v/col.vue +56 -0
- package/edge/components/v/list.vue +46 -0
- package/edge/components/v/listItem.vue +26 -0
- package/edge/components/v/listItemTitle.vue +18 -0
- package/edge/components/v/row.vue +42 -0
- package/edge/components/v/toolbar.vue +24 -0
- package/edge/composables/global.ts +519 -0
- package/edge-pull.sh +2 -0
- package/edge-push.sh +1 -0
- package/edge-status.sh +14 -0
- package/package.json +1 -1
- package/edge-components-install.sh +0 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { cn } from '@/lib/utils'
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
title: {
|
|
5
|
+
type: String,
|
|
6
|
+
default: 'Organization(s)',
|
|
7
|
+
},
|
|
8
|
+
buttonClass: {
|
|
9
|
+
type: String,
|
|
10
|
+
default: '',
|
|
11
|
+
},
|
|
12
|
+
iconClass: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: '',
|
|
15
|
+
},
|
|
16
|
+
singleOrg: {
|
|
17
|
+
type: Boolean,
|
|
18
|
+
default: false,
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
const edgeFirebase = inject('edgeFirebase')
|
|
22
|
+
const isAdmin = computed(() => {
|
|
23
|
+
const orgRole = edgeFirebase?.user?.roles.find(role =>
|
|
24
|
+
role.collectionPath === edgeGlobal.edgeState.organizationDocPath.replaceAll('/', '-'),
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
return orgRole && orgRole.role === 'admin'
|
|
28
|
+
})
|
|
29
|
+
const route = useRoute()
|
|
30
|
+
const router = useRouter()
|
|
31
|
+
const goTo = (path) => {
|
|
32
|
+
router.push(path)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const currentRoutePath = computed(() => {
|
|
36
|
+
const currentRoutePath = route.fullPath.endsWith('/') ? route.fullPath.substring(0, route.fullPath.length - 1) : route.fullPath
|
|
37
|
+
return currentRoutePath
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
const firstPart = computed(() => {
|
|
41
|
+
const firstPart = route.path.split('/')[1]
|
|
42
|
+
return `/${firstPart}`
|
|
43
|
+
})
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<template>
|
|
47
|
+
<DropdownMenu>
|
|
48
|
+
<DropdownMenuTrigger v-bind="$attrs" class="flex flex-col items-center" as-child>
|
|
49
|
+
<slot name="trigger">
|
|
50
|
+
<Button size="icon" :class="cn('rounded-full', props.buttonClass)">
|
|
51
|
+
<Settings2 :class="cn('h-5 w-5', props.iconClass)" />
|
|
52
|
+
</Button>
|
|
53
|
+
</slot>
|
|
54
|
+
</DropdownMenuTrigger>
|
|
55
|
+
<DropdownMenuContent align="end">
|
|
56
|
+
<!-- <DropdownMenuItem class="bg-accent"> -->
|
|
57
|
+
<Card class="border-0 p-4 bg-popover shadow-none">
|
|
58
|
+
<CardHeader class="p-0">
|
|
59
|
+
<CardTitle>
|
|
60
|
+
{{ edgeFirebase.user.meta.name }}
|
|
61
|
+
</CardTitle>
|
|
62
|
+
<CardDescription class="p-2">
|
|
63
|
+
{{ edgeFirebase.user.firebaseUser.providerData[0].email }}
|
|
64
|
+
</CardDescription>
|
|
65
|
+
</CardHeader>
|
|
66
|
+
</Card>
|
|
67
|
+
<!-- </DropdownMenuItem> -->
|
|
68
|
+
<DropdownMenuSeparator v-if="!props.singleOrg" />
|
|
69
|
+
<DropdownMenuLabel v-if="!props.singleOrg" class="text-xs text-muted-foreground">
|
|
70
|
+
{{ props.title }}
|
|
71
|
+
</DropdownMenuLabel>
|
|
72
|
+
<template v-for="org in edgeGlobal.edgeState.organizations">
|
|
73
|
+
<DropdownMenuItem
|
|
74
|
+
v-if="!props.singleOrg"
|
|
75
|
+
:key="org.docId"
|
|
76
|
+
class="cursor-pointer"
|
|
77
|
+
:class="{ 'bg-accent': org.docId === edgeGlobal.edgeState.currentOrganization }"
|
|
78
|
+
@click="edgeGlobal.setOrganization(org.docId, edgeFirebase)"
|
|
79
|
+
>
|
|
80
|
+
{{ org.name }}
|
|
81
|
+
<Check v-if="org.docId === edgeGlobal.edgeState.currentOrganization" class="h-3 w-3 mr-2 ml-auto" />
|
|
82
|
+
<div v-else class="h-3 w-3 mr-2" />
|
|
83
|
+
</DropdownMenuItem>
|
|
84
|
+
</template>
|
|
85
|
+
<template v-if="isAdmin">
|
|
86
|
+
<DropdownMenuSeparator />
|
|
87
|
+
<DropdownMenuLabel class="text-xs text-muted-foreground">
|
|
88
|
+
{{ props.title }} Settings
|
|
89
|
+
</DropdownMenuLabel>
|
|
90
|
+
<DropdownMenuItem
|
|
91
|
+
class="cursor-pointer"
|
|
92
|
+
:class="{ 'bg-accent': currentRoutePath === `${firstPart}/account/organization-settings` }"
|
|
93
|
+
@click="goTo(`${firstPart}/account/organization-settings`)"
|
|
94
|
+
>
|
|
95
|
+
<Settings class="h-4 w-4 mr-2" />
|
|
96
|
+
Settings
|
|
97
|
+
<Check v-if="currentRoutePath === `${firstPart}/account/organization-settings`" class="h-3 w-3 mr-2 ml-auto" />
|
|
98
|
+
</DropdownMenuItem>
|
|
99
|
+
<DropdownMenuItem
|
|
100
|
+
class="cursor-pointer"
|
|
101
|
+
:class="{ 'bg-accent': currentRoutePath === `${firstPart}/account/organization-members` }"
|
|
102
|
+
@click="goTo(`${firstPart}/account/organization-members`)"
|
|
103
|
+
>
|
|
104
|
+
<Users class="h-4 w-4 mr-2" />
|
|
105
|
+
Members
|
|
106
|
+
<Check v-if="currentRoutePath === `${firstPart}/account/organization-members`" class="h-3 w-3 mr-2 ml-auto" />
|
|
107
|
+
</DropdownMenuItem>
|
|
108
|
+
</template>
|
|
109
|
+
<DropdownMenuSeparator />
|
|
110
|
+
<DropdownMenuLabel class="text-xs text-muted-foreground">
|
|
111
|
+
My Settings
|
|
112
|
+
</DropdownMenuLabel>
|
|
113
|
+
<DropdownMenuItem
|
|
114
|
+
class="cursor-pointer"
|
|
115
|
+
:class="{ 'bg-accent': currentRoutePath === `${firstPart}/account/my-profile` }"
|
|
116
|
+
@click="goTo(`${firstPart}/account/my-profile`)"
|
|
117
|
+
>
|
|
118
|
+
<User class="h-4 w-4 mr-2" />
|
|
119
|
+
Profile
|
|
120
|
+
<Check v-if="currentRoutePath === `${firstPart}/account/my-profile`" class="h-3 w-3 mr-2 ml-auto" />
|
|
121
|
+
</DropdownMenuItem>
|
|
122
|
+
<DropdownMenuItem
|
|
123
|
+
class="cursor-pointer"
|
|
124
|
+
:class="{ 'bg-accent': currentRoutePath === `${firstPart}/account/my-account` }"
|
|
125
|
+
@click="goTo(`${firstPart}/account/my-account`)"
|
|
126
|
+
>
|
|
127
|
+
<CircleUser class="h-4 w-4 mr-2" />
|
|
128
|
+
Account
|
|
129
|
+
<Check v-if="currentRoutePath === `${firstPart}/account/my-account`" class="h-3 w-3 mr-2 ml-auto" />
|
|
130
|
+
</DropdownMenuItem>
|
|
131
|
+
<DropdownMenuItem
|
|
132
|
+
v-if="!props.singleOrg"
|
|
133
|
+
class="cursor-pointer"
|
|
134
|
+
:class="{ 'bg-accent': currentRoutePath === `${firstPart}/account/my-organizations` }"
|
|
135
|
+
@click="goTo(`${firstPart}/account/my-organizations`)"
|
|
136
|
+
>
|
|
137
|
+
<Group class="h-4 w-4 mr-2" />
|
|
138
|
+
Organizations
|
|
139
|
+
<Check v-if="currentRoutePath === `${firstPart}/account/my-organizations`" class="h-3 w-3 mr-2 ml-auto" />
|
|
140
|
+
</DropdownMenuItem>
|
|
141
|
+
<DropdownMenuSeparator />
|
|
142
|
+
<DropdownMenuItem class="cursor-pointer" @click="logOut(edgeFirebase, edgeGlobal)">
|
|
143
|
+
<LogOut class="h-4 w-4 mr-2" />
|
|
144
|
+
Logout
|
|
145
|
+
</DropdownMenuItem>
|
|
146
|
+
</DropdownMenuContent>
|
|
147
|
+
</DropdownMenu>
|
|
148
|
+
</template>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { cn } from '@/lib/utils'
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
variant: {
|
|
5
|
+
type: String,
|
|
6
|
+
default: 'plain',
|
|
7
|
+
},
|
|
8
|
+
type: {
|
|
9
|
+
type: String,
|
|
10
|
+
default: 'info',
|
|
11
|
+
},
|
|
12
|
+
class: {
|
|
13
|
+
type: String,
|
|
14
|
+
required: false,
|
|
15
|
+
},
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const cardClassesBasedOnVariantProp = computed(() => {
|
|
19
|
+
switch (props.variant) {
|
|
20
|
+
case 'text':
|
|
21
|
+
return ''
|
|
22
|
+
case 'flat':
|
|
23
|
+
return ''
|
|
24
|
+
case 'elevated':
|
|
25
|
+
return ''
|
|
26
|
+
case 'tonal':
|
|
27
|
+
return 'bg-muted/30 shadow-md'
|
|
28
|
+
case 'outlined':
|
|
29
|
+
return ''
|
|
30
|
+
case 'plain':
|
|
31
|
+
return ''
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
const cardClassesBasedOnTypeProp = computed(() => {
|
|
36
|
+
switch (props.type) {
|
|
37
|
+
case 'info':
|
|
38
|
+
return 'bg-info'
|
|
39
|
+
case 'success':
|
|
40
|
+
return 'bg-success'
|
|
41
|
+
case 'warning':
|
|
42
|
+
return 'bg-warning'
|
|
43
|
+
case 'error':
|
|
44
|
+
return 'bg-error'
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
<template>
|
|
50
|
+
<Alert class="p-0 border-0" :class="cn(cardClassesBasedOnTypeProp, props.class)">
|
|
51
|
+
<div class="w-full h-full p-4" :class="cardClassesBasedOnVariantProp">
|
|
52
|
+
<slot />
|
|
53
|
+
</div>
|
|
54
|
+
</Alert>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<style scoped>
|
|
58
|
+
/* your styles here */
|
|
59
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
const props = defineProps({
|
|
3
|
+
class: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: false,
|
|
6
|
+
},
|
|
7
|
+
})
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<AlertTitle :class="props.class">
|
|
12
|
+
<slot />
|
|
13
|
+
</AlertTitle>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<style scoped>
|
|
17
|
+
/* your styles here */
|
|
18
|
+
</style>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { cn } from '@/lib/utils'
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
variant: {
|
|
5
|
+
type: String,
|
|
6
|
+
default: 'plain',
|
|
7
|
+
},
|
|
8
|
+
class: {
|
|
9
|
+
type: String,
|
|
10
|
+
required: false,
|
|
11
|
+
},
|
|
12
|
+
maxWidth: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: '',
|
|
15
|
+
},
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const cardClassesBasedOnVariantProp = computed(() => {
|
|
19
|
+
switch (props.variant) {
|
|
20
|
+
case 'text':
|
|
21
|
+
return 'bg-muted/100 border-0'
|
|
22
|
+
case 'flat':
|
|
23
|
+
return 'bg-muted/100 border-0'
|
|
24
|
+
case 'elevated':
|
|
25
|
+
return 'bg-muted/100 elevation-2'
|
|
26
|
+
case 'tonal':
|
|
27
|
+
return 'bg-muted/60 shadow-md'
|
|
28
|
+
case 'outlined':
|
|
29
|
+
return 'bg-muted/100'
|
|
30
|
+
case 'plain':
|
|
31
|
+
return 'bg-muted/100 border-0'
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
const maxWidthClass = computed (() => {
|
|
36
|
+
if (!props.maxWidth) {
|
|
37
|
+
return 'w-full'
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return 'w-full max-w-7xl'
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
<Card :class="cn(maxWidthClass, cardClassesBasedOnVariantProp, props.class)">
|
|
47
|
+
<slot />
|
|
48
|
+
</Card>
|
|
49
|
+
</template>
|
|
50
|
+
|
|
51
|
+
<style scoped>
|
|
52
|
+
/* your styles here */
|
|
53
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
const props = defineProps({
|
|
3
|
+
class: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: false,
|
|
6
|
+
},
|
|
7
|
+
})
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<CardFooter class="flex justify-end gap-1">
|
|
12
|
+
<slot />
|
|
13
|
+
</CardFooter>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<style scoped>
|
|
17
|
+
/* your styles here */
|
|
18
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
const props = defineProps({
|
|
3
|
+
class: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: false,
|
|
6
|
+
},
|
|
7
|
+
})
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<div class="px-5 py-2" :class="props.class">
|
|
12
|
+
<slot />
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<style scoped>
|
|
17
|
+
/* your styles here */
|
|
18
|
+
</style>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
const props = defineProps({
|
|
3
|
+
class: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: false,
|
|
6
|
+
},
|
|
7
|
+
})
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<CardHeader>
|
|
12
|
+
<CardTitle :class="props.class">
|
|
13
|
+
<slot />
|
|
14
|
+
</CardTitle>
|
|
15
|
+
</CardHeader>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<style scoped>
|
|
19
|
+
/* your styles here */
|
|
20
|
+
</style>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { cn } from '@/lib/utils'
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
class: {
|
|
5
|
+
type: String,
|
|
6
|
+
required: false,
|
|
7
|
+
},
|
|
8
|
+
cols: {
|
|
9
|
+
type: String,
|
|
10
|
+
default: 'auto',
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const colsClasses = computed(() => {
|
|
15
|
+
switch (props.cols) {
|
|
16
|
+
case 'auto':
|
|
17
|
+
return 'grow'
|
|
18
|
+
case '1':
|
|
19
|
+
return 'w-1/12'
|
|
20
|
+
case '2':
|
|
21
|
+
return 'w-2/12'
|
|
22
|
+
case '3':
|
|
23
|
+
return 'w-3/12'
|
|
24
|
+
case '4':
|
|
25
|
+
return 'w-4/12'
|
|
26
|
+
case '5':
|
|
27
|
+
return 'w-5/12'
|
|
28
|
+
case '6':
|
|
29
|
+
return 'w-6/12'
|
|
30
|
+
case '7':
|
|
31
|
+
return 'w-7/12'
|
|
32
|
+
case '8':
|
|
33
|
+
return 'w-8/12'
|
|
34
|
+
case '9':
|
|
35
|
+
return 'w-9/12'
|
|
36
|
+
case '10':
|
|
37
|
+
return 'w-10/12'
|
|
38
|
+
case '11':
|
|
39
|
+
return 'w-11/12'
|
|
40
|
+
case '12':
|
|
41
|
+
return 'w-full'
|
|
42
|
+
default:
|
|
43
|
+
return 'grow'
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
<template>
|
|
49
|
+
<div class="px-2" :class="cn(colsClasses, props.class)">
|
|
50
|
+
<slot />
|
|
51
|
+
</div>
|
|
52
|
+
</template>
|
|
53
|
+
|
|
54
|
+
<style scoped>
|
|
55
|
+
/* your styles here */
|
|
56
|
+
</style>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { cn } from '@/lib/utils'
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
class: {
|
|
5
|
+
type: String,
|
|
6
|
+
required: false,
|
|
7
|
+
},
|
|
8
|
+
justify: {
|
|
9
|
+
type: String,
|
|
10
|
+
default: 'center',
|
|
11
|
+
},
|
|
12
|
+
lines: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: '',
|
|
15
|
+
},
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const justifyClasses = computed(() => {
|
|
19
|
+
switch (props.justify) {
|
|
20
|
+
case 'start':
|
|
21
|
+
return 'justify-start'
|
|
22
|
+
case 'center':
|
|
23
|
+
return 'justify-center'
|
|
24
|
+
case 'end':
|
|
25
|
+
return 'justify-end'
|
|
26
|
+
case 'between':
|
|
27
|
+
return 'justify-between'
|
|
28
|
+
case 'around':
|
|
29
|
+
return 'justify-around'
|
|
30
|
+
case 'evenly':
|
|
31
|
+
return 'justify-evenly'
|
|
32
|
+
case 'stretch':
|
|
33
|
+
return 'grid-flow-col justify-stretch'
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<template>
|
|
39
|
+
<div class="flex flex-wrap items-center py-0" :class="cn(justifyClasses, props.class)">
|
|
40
|
+
<slot />
|
|
41
|
+
</div>
|
|
42
|
+
</template>
|
|
43
|
+
|
|
44
|
+
<style scoped>
|
|
45
|
+
/* your styles here */
|
|
46
|
+
</style>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
const props = defineProps({
|
|
3
|
+
class: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: false,
|
|
6
|
+
},
|
|
7
|
+
})
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<div class="w-full flex justify-between items-center py-1 gap-3" :class="props.class">
|
|
12
|
+
<div>
|
|
13
|
+
<slot name="prepend" />
|
|
14
|
+
</div>
|
|
15
|
+
<div class="grow">
|
|
16
|
+
<slot />
|
|
17
|
+
</div>
|
|
18
|
+
<div>
|
|
19
|
+
<slot name="append" />
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<style scoped>
|
|
25
|
+
/* your styles here */
|
|
26
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
const props = defineProps({
|
|
3
|
+
class: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: false,
|
|
6
|
+
},
|
|
7
|
+
})
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<div class="text-lg" :class="props.class">
|
|
12
|
+
<slot />
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<style scoped>
|
|
17
|
+
/* your styles here */
|
|
18
|
+
</style>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { cn } from '@/lib/utils'
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
class: {
|
|
5
|
+
type: String,
|
|
6
|
+
required: false,
|
|
7
|
+
},
|
|
8
|
+
justify: {
|
|
9
|
+
type: String,
|
|
10
|
+
default: 'center',
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const justifyClasses = computed(() => {
|
|
15
|
+
switch (props.justify) {
|
|
16
|
+
case 'start':
|
|
17
|
+
return 'justify-start'
|
|
18
|
+
case 'center':
|
|
19
|
+
return 'justify-center'
|
|
20
|
+
case 'end':
|
|
21
|
+
return 'justify-end'
|
|
22
|
+
case 'between':
|
|
23
|
+
return 'justify-between'
|
|
24
|
+
case 'around':
|
|
25
|
+
return 'justify-around'
|
|
26
|
+
case 'evenly':
|
|
27
|
+
return 'justify-evenly'
|
|
28
|
+
case 'stretch':
|
|
29
|
+
return 'grid-flow-col justify-stretch'
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<template>
|
|
35
|
+
<div :class="cn('flex flex-wrap py-2 items-center', justifyClasses, props.class)">
|
|
36
|
+
<slot />
|
|
37
|
+
</div>
|
|
38
|
+
</template>
|
|
39
|
+
|
|
40
|
+
<style scoped>
|
|
41
|
+
/* your styles here */
|
|
42
|
+
</style>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
const props = defineProps({
|
|
3
|
+
class: {
|
|
4
|
+
type: String,
|
|
5
|
+
required: false,
|
|
6
|
+
},
|
|
7
|
+
flat: {
|
|
8
|
+
type: Boolean,
|
|
9
|
+
},
|
|
10
|
+
})
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
<edge-menu>
|
|
15
|
+
<template #start />
|
|
16
|
+
<template #end>
|
|
17
|
+
<slot />
|
|
18
|
+
</template>
|
|
19
|
+
</edge-menu>
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<style scoped>
|
|
23
|
+
/* your styles here */
|
|
24
|
+
</style>
|