fulldev-ui 0.7.0-beta.4 → 0.7.0-beta.5

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 (49) hide show
  1. package/astro.config.ts +0 -2
  2. package/package.json +25 -20
  3. package/pnpm-lock.yaml +209 -751
  4. package/src/blocks/Faqs2.astro +1 -1
  5. package/src/components/Block.astro +9 -15
  6. package/src/components/Form.vue +2 -5
  7. package/src/components/Icon.astro +18 -11
  8. package/src/components/ui/button/Button.vue +2 -2
  9. package/src/content/blocks/category-group1.md +18 -0
  10. package/src/content/blocks/category-list1.md +22 -0
  11. package/src/content/blocks/contact1.md +30 -0
  12. package/src/content/blocks/contact2.md +31 -0
  13. package/src/content/blocks/content1.md +14 -0
  14. package/src/content/blocks/cta1.md +11 -0
  15. package/src/content/blocks/faqs1.md +18 -0
  16. package/src/content/blocks/faqs2.md +18 -0
  17. package/src/content/blocks/features1.md +16 -0
  18. package/src/content/blocks/hero1.md +14 -0
  19. package/src/content/blocks/intro1.md +6 -0
  20. package/src/content/blocks/post-single1.md +18 -0
  21. package/src/content/blocks/product-group1.md +21 -0
  22. package/src/content/blocks/product-list1.md +25 -0
  23. package/src/content/blocks/product-single1.md +23 -0
  24. package/src/content/blocks/reviews1.md +16 -0
  25. package/src/content.config.ts +20 -0
  26. package/src/data/settings.json +26 -0
  27. package/src/layouts/NavigationLayout.astro +14 -0
  28. package/src/pages/blocks/[...block].astro +24 -0
  29. package/src/pages/blocks/index.astro +21 -0
  30. package/src/pages/index.astro +8 -0
  31. package/src/schemas/blocks/categoryGroup.ts +1 -1
  32. package/src/schemas/blocks/faqs.ts +4 -3
  33. package/src/schemas/blocks/features.ts +5 -4
  34. package/src/schemas/collections/block.ts +83 -0
  35. package/src/schemas/collections/category.ts +11 -0
  36. package/src/schemas/collections/page.ts +13 -0
  37. package/src/schemas/collections/post.ts +11 -0
  38. package/src/schemas/collections/product.ts +11 -0
  39. package/src/schemas/fields/section.ts +2 -2
  40. package/src/styles/global.css +123 -0
  41. package/src/components/ui/breadcrumb/Breadcrumb.vue +0 -13
  42. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +0 -22
  43. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +0 -14
  44. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +0 -19
  45. package/src/components/ui/breadcrumb/BreadcrumbList.vue +0 -16
  46. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +0 -19
  47. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +0 -21
  48. package/src/components/ui/breadcrumb/index.ts +0 -7
  49. package/src/schemas/fields/block.ts +0 -60
@@ -0,0 +1,83 @@
1
+ import { z } from 'astro:content'
2
+ import { categoryGroupSchema } from '../blocks/categoryGroup'
3
+ import { categoryListSchema } from '../blocks/categoryList'
4
+ import { contactSchema } from '../blocks/contact'
5
+ import { contentSchema } from '../blocks/content'
6
+ import { ctaSchema } from '../blocks/cta'
7
+ import { faqsSchema } from '../blocks/faqs'
8
+ import { featuresSchema } from '../blocks/features'
9
+ import { footerSchema } from '../blocks/footer'
10
+ import { headerSchema } from '../blocks/header'
11
+ import { heroSchema } from '../blocks/hero'
12
+ import { introSchema } from '../blocks/intro'
13
+ import { postSingleSchema } from '../blocks/postSingle'
14
+ import { productGroupSchema } from '../blocks/productGroup'
15
+ import { productListSchema } from '../blocks/productList'
16
+ import { productSingleSchema } from '../blocks/productSingle'
17
+ import { reviewsSchema } from '../blocks/reviews'
18
+
19
+ // export const blockSchema = z
20
+ // .object({
21
+ // title: z.string().optional(),
22
+ // description: z.string().optional(),
23
+ // categories: categorySingleSchema
24
+ // .extend({
25
+ // href: z.string().optional(),
26
+ // })
27
+ // .array()
28
+ // .optional(),
29
+ // })
30
+ // .passthrough()
31
+
32
+ export const blockSchema = z.union([
33
+ categoryGroupSchema.extend({
34
+ block: z.string(),
35
+ }),
36
+ categoryListSchema.extend({
37
+ block: z.string(),
38
+ }),
39
+ contactSchema.extend({
40
+ block: z.string(),
41
+ }),
42
+ contentSchema.extend({
43
+ block: z.string(),
44
+ }),
45
+ ctaSchema.extend({
46
+ block: z.string(),
47
+ }),
48
+ faqsSchema.extend({
49
+ block: z.string(),
50
+ }),
51
+ featuresSchema.extend({
52
+ block: z.string(),
53
+ }),
54
+ footerSchema.extend({
55
+ block: z.string(),
56
+ }),
57
+ headerSchema.extend({
58
+ block: z.string(),
59
+ }),
60
+ heroSchema.extend({
61
+ block: z.string(),
62
+ }),
63
+ introSchema.extend({
64
+ block: z.string(),
65
+ }),
66
+ postSingleSchema.extend({
67
+ block: z.string(),
68
+ }),
69
+ productGroupSchema.extend({
70
+ block: z.string(),
71
+ }),
72
+ productListSchema.extend({
73
+ block: z.string(),
74
+ }),
75
+ productSingleSchema.extend({
76
+ block: z.string(),
77
+ }),
78
+ reviewsSchema.extend({
79
+ block: z.string(),
80
+ }),
81
+ ])
82
+
83
+ export type BlockSchema = z.infer<typeof blockSchema>
@@ -0,0 +1,11 @@
1
+ import { z } from 'astro:content'
2
+ import { categorySingleSchema } from 'fulldev-ui/schemas/blocks/categorySingle'
3
+ import { metaSchema } from 'fulldev-ui/schemas/fields/meta'
4
+ import { sectionSchema } from 'fulldev-ui/schemas/fields/section'
5
+
6
+ export const categorySchema = categorySingleSchema.extend({
7
+ meta: metaSchema.optional(),
8
+ sections: sectionSchema.array().optional(),
9
+ })
10
+
11
+ export type CategorySchema = z.infer<typeof categorySchema>
@@ -0,0 +1,13 @@
1
+ import { z } from 'astro:content'
2
+ import { metaSchema } from 'fulldev-ui/schemas/fields/meta'
3
+ import { sectionSchema } from 'fulldev-ui/schemas/fields/section'
4
+
5
+ export const pageSchema = z
6
+ .object({
7
+ title: z.string().optional(),
8
+ meta: metaSchema.optional(),
9
+ sections: sectionSchema.array().optional(),
10
+ })
11
+ .strict()
12
+
13
+ export type PageSchema = z.infer<typeof pageSchema>
@@ -0,0 +1,11 @@
1
+ import { z } from 'astro:content'
2
+ import { postSingleSchema } from 'fulldev-ui/schemas/blocks/postSingle'
3
+ import { metaSchema } from 'fulldev-ui/schemas/fields/meta'
4
+ import { sectionSchema } from 'fulldev-ui/schemas/fields/section'
5
+
6
+ export const postSchema = postSingleSchema.extend({
7
+ meta: metaSchema.optional(),
8
+ sections: sectionSchema.array().optional(),
9
+ })
10
+
11
+ export type PostSchema = z.infer<typeof postSchema>
@@ -0,0 +1,11 @@
1
+ import { z } from 'astro:content'
2
+ import { productSingleSchema } from 'fulldev-ui/schemas/blocks/productSingle'
3
+ import { metaSchema } from 'fulldev-ui/schemas/fields/meta'
4
+ import { sectionSchema } from 'fulldev-ui/schemas/fields/section'
5
+
6
+ export const productSchema = productSingleSchema.extend({
7
+ meta: metaSchema.optional(),
8
+ sections: sectionSchema.array().optional(),
9
+ })
10
+
11
+ export type ProductSchema = z.infer<typeof productSchema>
@@ -10,7 +10,7 @@ import { introSchema } from '../blocks/intro'
10
10
  import { productListSchema } from '../blocks/productList'
11
11
  import { reviewsSchema } from '../blocks/reviews'
12
12
 
13
- export const section = z.union([
13
+ export const sectionSchema = z.union([
14
14
  categoryListSchema.extend({
15
15
  block: z.string(),
16
16
  categories: reference('categories').array().optional(),
@@ -45,4 +45,4 @@ export const section = z.union([
45
45
  }),
46
46
  ])
47
47
 
48
- export type SectionSchema = z.infer<typeof section>
48
+ export type SectionSchema = z.infer<typeof sectionSchema>
@@ -0,0 +1,123 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ @layer base {
6
+ :root {
7
+ --font-sans: 'Geist Sans', sans-serif;
8
+
9
+ --background: 0 0% 100%;
10
+ --foreground: 222.2 84% 4.9%;
11
+
12
+ --muted: 210 40% 96.1%;
13
+ --muted-foreground: 215.4 16.3% 46.9%;
14
+
15
+ --popover: 0 0% 100%;
16
+ --popover-foreground: 222.2 84% 4.9%;
17
+
18
+ --card: 0 0% 100%;
19
+ --card-foreground: 222.2 84% 4.9%;
20
+
21
+ --border: 214.3 31.8% 91.4%;
22
+ --input: 214.3 31.8% 91.4%;
23
+
24
+ --primary: 222.2 47.4% 11.2%;
25
+ --primary-foreground: 210 40% 98%;
26
+
27
+ --secondary: 210 40% 96.1%;
28
+ --secondary-foreground: 222.2 47.4% 11.2%;
29
+
30
+ --accent: 210 40% 96.1%;
31
+ --accent-foreground: 222.2 47.4% 11.2%;
32
+
33
+ --destructive: 0 84.2% 60.2%;
34
+ --destructive-foreground: 210 40% 98%;
35
+
36
+ --ring: 222.2 84% 4.9%;
37
+
38
+ --radius: 0.5rem;
39
+ }
40
+
41
+ .dark {
42
+ --background: 222.2 84% 4.9%;
43
+ --foreground: 210 40% 98%;
44
+
45
+ --muted: 217.2 32.6% 17.5%;
46
+ --muted-foreground: 215 20.2% 65.1%;
47
+
48
+ --popover: 222.2 84% 4.9%;
49
+ --popover-foreground: 210 40% 98%;
50
+
51
+ --card: 222.2 84% 4.9%;
52
+ --card-foreground: 210 40% 98%;
53
+
54
+ --border: 217.2 32.6% 17.5%;
55
+ --input: 217.2 32.6% 17.5%;
56
+
57
+ --primary: 210 40% 98%;
58
+ --primary-foreground: 222.2 47.4% 11.2%;
59
+
60
+ --secondary: 217.2 32.6% 17.5%;
61
+ --secondary-foreground: 210 40% 98%;
62
+
63
+ --accent: 217.2 32.6% 17.5%;
64
+ --accent-foreground: 210 40% 98%;
65
+
66
+ --destructive: 0 62.8% 30.6%;
67
+ --destructive-foreground: 210 40% 98%;
68
+
69
+ --ring: 212.7 26.8% 83.9%;
70
+ }
71
+ }
72
+
73
+ /* Miele */
74
+ /* @layer base {
75
+ :root {
76
+ --font-sans: 'Geist Sans', sans-serif;
77
+
78
+ --background: 0 0% 9%;
79
+ --foreground: 0 0% 98%;
80
+
81
+ --muted: 0 0% 14%;
82
+ --muted-foreground: 0 0% 80%;
83
+
84
+ --popover: 0 0% 14%;
85
+ --popover-foreground: 0 0% 90%;
86
+
87
+ --card: 0 0% 14%;
88
+ --card-foreground: 0 0% 90%;
89
+
90
+ --border: 0 0% 25%;
91
+ --input: 0 0% 34%;
92
+
93
+ --primary: 351 100% 27%;
94
+ --primary-foreground: 0 0% 100%;
95
+
96
+ --secondary: 0 0% 20%;
97
+ --secondary-foreground: 0 0% 90%;
98
+
99
+ --accent: 0 0% 14%;
100
+ --accent-foreground: 0 0% 90%;
101
+
102
+ --destructive: 0 84.2% 60.2%;
103
+ --destructive-foreground: 210 40% 98%;
104
+
105
+ --ring: 0 0% 70%;
106
+
107
+ --radius: 0.3rem;
108
+ }
109
+ } */
110
+
111
+ @layer base {
112
+ * {
113
+ @apply border-border;
114
+ }
115
+ body {
116
+ @apply bg-background text-foreground;
117
+ }
118
+
119
+ .font-sans {
120
+ font-synthesis: initial;
121
+ font-synthesis-weight: auto;
122
+ }
123
+ }
@@ -1,13 +0,0 @@
1
- <script lang="ts" setup>
2
- import type { HTMLAttributes } from 'vue'
3
-
4
- const props = defineProps<{
5
- class?: HTMLAttributes['class']
6
- }>()
7
- </script>
8
-
9
- <template>
10
- <nav aria-label="breadcrumb" :class="props.class">
11
- <slot />
12
- </nav>
13
- </template>
@@ -1,22 +0,0 @@
1
- <script lang="ts" setup>
2
- import { cn } from 'fulldev-ui/lib/utils'
3
- import { MoreHorizontal } from 'lucide-vue-next'
4
- import type { HTMLAttributes } from 'vue'
5
-
6
- const props = defineProps<{
7
- class?: HTMLAttributes['class']
8
- }>()
9
- </script>
10
-
11
- <template>
12
- <span
13
- role="presentation"
14
- aria-hidden="true"
15
- :class="cn('flex h-9 w-9 items-center justify-center', props.class)"
16
- >
17
- <slot>
18
- <MoreHorizontal class="h-4 w-4" />
19
- </slot>
20
- <span class="sr-only">More</span>
21
- </span>
22
- </template>
@@ -1,14 +0,0 @@
1
- <script lang="ts" setup>
2
- import { cn } from 'fulldev-ui/lib/utils'
3
- import type { HTMLAttributes } from 'vue'
4
-
5
- const props = defineProps<{
6
- class?: HTMLAttributes['class']
7
- }>()
8
- </script>
9
-
10
- <template>
11
- <li :class="cn('inline-flex items-center gap-1.5', props.class)">
12
- <slot />
13
- </li>
14
- </template>
@@ -1,19 +0,0 @@
1
- <script lang="ts" setup>
2
- import { cn } from 'fulldev-ui/lib/utils'
3
- import { Primitive, type PrimitiveProps } from 'radix-vue'
4
- import type { HTMLAttributes } from 'vue'
5
-
6
- const props = withDefaults(defineProps<PrimitiveProps & { class?: HTMLAttributes['class'] }>(), {
7
- as: 'a',
8
- })
9
- </script>
10
-
11
- <template>
12
- <Primitive
13
- :as="as"
14
- :as-child="asChild"
15
- :class="cn('transition-colors hover:text-foreground', props.class)"
16
- >
17
- <slot />
18
- </Primitive>
19
- </template>
@@ -1,16 +0,0 @@
1
- <script lang="ts" setup>
2
- import { cn } from 'fulldev-ui/lib/utils'
3
- import type { HTMLAttributes } from 'vue'
4
-
5
- const props = defineProps<{
6
- class?: HTMLAttributes['class']
7
- }>()
8
- </script>
9
-
10
- <template>
11
- <ol
12
- :class="cn('flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5', props.class)"
13
- >
14
- <slot />
15
- </ol>
16
- </template>
@@ -1,19 +0,0 @@
1
- <script lang="ts" setup>
2
- import { cn } from 'fulldev-ui/lib/utils'
3
- import type { HTMLAttributes } from 'vue'
4
-
5
- const props = defineProps<{
6
- class?: HTMLAttributes['class']
7
- }>()
8
- </script>
9
-
10
- <template>
11
- <span
12
- role="link"
13
- aria-disabled="true"
14
- aria-current="page"
15
- :class="cn('font-normal text-foreground', props.class)"
16
- >
17
- <slot />
18
- </span>
19
- </template>
@@ -1,21 +0,0 @@
1
- <script lang="ts" setup>
2
- import { cn } from 'fulldev-ui/lib/utils'
3
- import { ChevronRight } from 'lucide-vue-next'
4
- import type { HTMLAttributes } from 'vue'
5
-
6
- const props = defineProps<{
7
- class?: HTMLAttributes['class']
8
- }>()
9
- </script>
10
-
11
- <template>
12
- <li
13
- role="presentation"
14
- aria-hidden="true"
15
- :class="cn('[&>svg]:w-3.5 [&>svg]:h-3.5', props.class)"
16
- >
17
- <slot>
18
- <ChevronRight />
19
- </slot>
20
- </li>
21
- </template>
@@ -1,7 +0,0 @@
1
- export { default as Breadcrumb } from './Breadcrumb.vue'
2
- export { default as BreadcrumbEllipsis } from './BreadcrumbEllipsis.vue'
3
- export { default as BreadcrumbItem } from './BreadcrumbItem.vue'
4
- export { default as BreadcrumbLink } from './BreadcrumbLink.vue'
5
- export { default as BreadcrumbList } from './BreadcrumbList.vue'
6
- export { default as BreadcrumbPage } from './BreadcrumbPage.vue'
7
- export { default as BreadcrumbSeparator } from './BreadcrumbSeparator.vue'
@@ -1,60 +0,0 @@
1
- import { reference, z } from 'astro:content'
2
- import { badgeSchema } from 'fulldev-ui/schemas/fields/badge.ts'
3
- import { buttonSchema } from 'fulldev-ui/schemas/fields/button.ts'
4
- import { cardSchema } from 'fulldev-ui/schemas/fields/card.ts'
5
- import { channelSchema } from 'fulldev-ui/schemas/fields/channel.ts'
6
- import { formSchema } from 'fulldev-ui/schemas/fields/form.ts'
7
- import { imageSchema } from 'fulldev-ui/schemas/fields/image.ts'
8
- import { linkSchema } from 'fulldev-ui/schemas/fields/link.ts'
9
- import { logoSchema } from 'fulldev-ui/schemas/fields/logo.ts'
10
- import { menuSchema } from 'fulldev-ui/schemas/fields/menu.ts'
11
- import { proofSchema } from 'fulldev-ui/schemas/fields/proof.ts'
12
-
13
- export const blockSchema = z
14
- .object({
15
- block: z.string().optional(),
16
- align: z.enum(['start', 'center', 'end']).optional(),
17
- size: z.enum(['sm', 'md', 'lg']).optional(),
18
- depth: z.union([z.literal(1), z.literal(2), z.literal(3)]).optional(),
19
- logo: logoSchema.optional(),
20
- socials: z.string().array().optional(),
21
- channels: channelSchema.array().optional(),
22
- menus: menuSchema.array().optional(),
23
- title: z.string().optional(),
24
- description: z.string().optional(),
25
- tagline: z.string().optional(),
26
- heading: z.string().optional(),
27
- paragraph: z.string().optional(),
28
- content: z.string().optional(),
29
- list: z.string().array().optional(),
30
- image: imageSchema.optional(),
31
- images: imageSchema.array().optional(),
32
- button: buttonSchema.optional(),
33
- buttons: buttonSchema.array().optional(),
34
- price: z.number().optional(),
35
- soldout: z.boolean().optional(),
36
- variants: z.record(z.string(), z.string().array()).optional(),
37
- categories: reference('categories').array().optional(),
38
- products: reference('products').array().optional(),
39
- posts: reference('posts').array().optional(),
40
- pages: reference('pages').array().optional(),
41
- jobs: reference('jobs').array().optional(),
42
- docs: reference('docs').array().optional(),
43
- form: formSchema.optional(),
44
- cards: cardSchema.array().optional(),
45
- pros: cardSchema.optional(),
46
- cons: cardSchema.optional(),
47
- badge: badgeSchema.optional(),
48
- badges: badgeSchema.array().optional(),
49
- link: linkSchema.optional(),
50
- links: linkSchema.array().optional(),
51
- proof: proofSchema.optional(),
52
- search: z.boolean().optional(),
53
- themer: z.boolean().optional(),
54
- reviews: z.any().array().optional(),
55
- features: z.any().array().optional(),
56
- faqs: z.any().array().optional(),
57
- })
58
- .strict()
59
-
60
- export type BlockSchema = z.infer<typeof blockSchema>