@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.
Files changed (111) hide show
  1. package/README.md +55 -20
  2. package/{agent.md → agents.md} +2 -0
  3. package/bin/cli.js +6 -6
  4. package/edge/components/auth/login.vue +384 -0
  5. package/edge/components/auth/register.vue +396 -0
  6. package/edge/components/auth.vue +108 -0
  7. package/edge/components/autoFileUpload.vue +215 -0
  8. package/edge/components/billing.vue +8 -0
  9. package/edge/components/buttonDivider.vue +14 -0
  10. package/edge/components/chip.vue +34 -0
  11. package/edge/components/clipboardButton.vue +42 -0
  12. package/edge/components/cms/block.vue +529 -0
  13. package/edge/components/cms/blockApi.vue +212 -0
  14. package/edge/components/cms/blockEditor.vue +725 -0
  15. package/edge/components/cms/blockInput.vue +66 -0
  16. package/edge/components/cms/blockPicker.vue +486 -0
  17. package/edge/components/cms/blockRender.vue +78 -0
  18. package/edge/components/cms/blockSheetContent.vue +28 -0
  19. package/edge/components/cms/codeEditor.vue +466 -0
  20. package/edge/components/cms/fontUpload.vue +327 -0
  21. package/edge/components/cms/htmlContent.vue +807 -0
  22. package/edge/components/cms/init_blocks/api_with_subarrays.html +17 -0
  23. package/edge/components/cms/init_blocks/array_with_collection.html +7 -0
  24. package/edge/components/cms/init_blocks/array_with_objects.html +7 -0
  25. package/edge/components/cms/init_blocks/carousel.html +103 -0
  26. package/edge/components/cms/init_blocks/contact_us.html +69 -0
  27. package/edge/components/cms/init_blocks/content_with_left_image.html +27 -0
  28. package/edge/components/cms/init_blocks/footer.html +24 -0
  29. package/edge/components/cms/init_blocks/header_divider.html +7 -0
  30. package/edge/components/cms/init_blocks/hero.html +35 -0
  31. package/edge/components/cms/init_blocks/hero_carousel.html +52 -0
  32. package/edge/components/cms/init_blocks/newsletter.html +117 -0
  33. package/edge/components/cms/init_blocks/post_content.html +7 -0
  34. package/edge/components/cms/init_blocks/post_title_header.html +21 -0
  35. package/edge/components/cms/init_blocks/posts_list.html +20 -0
  36. package/edge/components/cms/init_blocks/properties_showcase.html +100 -0
  37. package/edge/components/cms/init_blocks/property_carousel.html +59 -0
  38. package/edge/components/cms/init_blocks/property_detail.html +112 -0
  39. package/edge/components/cms/init_blocks/property_detail_header.html +34 -0
  40. package/edge/components/cms/init_blocks/property_results.html +137 -0
  41. package/edge/components/cms/init_blocks/property_search.html +75 -0
  42. package/edge/components/cms/init_blocks/simple_array.html +7 -0
  43. package/edge/components/cms/mediaCard.vue +116 -0
  44. package/edge/components/cms/mediaManager.vue +386 -0
  45. package/edge/components/cms/menu.vue +1103 -0
  46. package/edge/components/cms/optionsSelect.vue +107 -0
  47. package/edge/components/cms/page.vue +1785 -0
  48. package/edge/components/cms/posts.vue +1083 -0
  49. package/edge/components/cms/site.vue +1298 -0
  50. package/edge/components/cms/themeDefaultMenu.vue +548 -0
  51. package/edge/components/cms/themeEditor.vue +426 -0
  52. package/edge/components/dashboard.vue +776 -0
  53. package/edge/components/editor.vue +671 -0
  54. package/edge/components/fileTree.vue +72 -0
  55. package/edge/components/files.vue +89 -0
  56. package/edge/components/formSubtypes/myOrgs.vue +214 -0
  57. package/edge/components/formSubtypes/users.vue +336 -0
  58. package/edge/components/functionChips.vue +57 -0
  59. package/edge/components/gError.vue +98 -0
  60. package/edge/components/gHelper.vue +67 -0
  61. package/edge/components/gInput.vue +1331 -0
  62. package/edge/components/loggingIn.vue +41 -0
  63. package/edge/components/menu.vue +137 -0
  64. package/edge/components/menuContent.vue +132 -0
  65. package/edge/components/myAccount.vue +317 -0
  66. package/edge/components/myOrganizations.vue +75 -0
  67. package/edge/components/myProfile.vue +122 -0
  68. package/edge/components/orgSwitcher.vue +25 -0
  69. package/edge/components/organizationMembers.vue +522 -0
  70. package/edge/components/organizationSettings.vue +271 -0
  71. package/edge/components/shad/breadcrumbs.vue +35 -0
  72. package/edge/components/shad/button.vue +43 -0
  73. package/edge/components/shad/checkbox.vue +73 -0
  74. package/edge/components/shad/combobox.vue +238 -0
  75. package/edge/components/shad/datepicker.vue +184 -0
  76. package/edge/components/shad/dialog.vue +32 -0
  77. package/edge/components/shad/dropdownMenu.vue +54 -0
  78. package/edge/components/shad/dropdownMenuItem.vue +21 -0
  79. package/edge/components/shad/form.vue +59 -0
  80. package/edge/components/shad/html.vue +877 -0
  81. package/edge/components/shad/input.vue +139 -0
  82. package/edge/components/shad/number.vue +109 -0
  83. package/edge/components/shad/select.vue +151 -0
  84. package/edge/components/shad/selectTags.vue +278 -0
  85. package/edge/components/shad/switch.vue +67 -0
  86. package/edge/components/shad/tags.vue +137 -0
  87. package/edge/components/shad/textarea.vue +102 -0
  88. package/edge/components/shad/typeMoney.vue +167 -0
  89. package/edge/components/sideBar.vue +288 -0
  90. package/edge/components/sideBarContent.vue +268 -0
  91. package/edge/components/sidebarProvider.vue +33 -0
  92. package/edge/components/tooltip.vue +16 -0
  93. package/edge/components/userMenu.vue +148 -0
  94. package/edge/components/v/alert.vue +59 -0
  95. package/edge/components/v/alertTitle.vue +18 -0
  96. package/edge/components/v/card.vue +53 -0
  97. package/edge/components/v/cardActions.vue +18 -0
  98. package/edge/components/v/cardText.vue +18 -0
  99. package/edge/components/v/cardTitle.vue +20 -0
  100. package/edge/components/v/col.vue +56 -0
  101. package/edge/components/v/list.vue +46 -0
  102. package/edge/components/v/listItem.vue +26 -0
  103. package/edge/components/v/listItemTitle.vue +18 -0
  104. package/edge/components/v/row.vue +42 -0
  105. package/edge/components/v/toolbar.vue +24 -0
  106. package/edge/composables/global.ts +519 -0
  107. package/edge-pull.sh +2 -0
  108. package/edge-push.sh +1 -0
  109. package/edge-status.sh +14 -0
  110. package/package.json +1 -1
  111. 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>