fulldev-ui 0.4.14 → 0.4.16

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 (47) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.yml +7 -52
  2. package/.github/ISSUE_TEMPLATE/config.yml +3 -0
  3. package/.github/ISSUE_TEMPLATE/documentation.yml +12 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.yml +7 -34
  5. package/.github/ISSUE_TEMPLATE/support.yml +12 -0
  6. package/.github/pull_request_template.md +1 -13
  7. package/CODE_OF_CONDUCT.md +6 -0
  8. package/CONTRIBUTING.md +20 -4
  9. package/README.md +1 -0
  10. package/package.json +6 -5
  11. package/pnpm-lock.yaml +2903 -3639
  12. package/public/showcase/anti-slip-profiles.webp +0 -0
  13. package/public/showcase/fulldev-ui.webp +0 -0
  14. package/public/showcase/lavis-detailing.webp +0 -0
  15. package/public/showcase/leren-trainingsacteren.webp +0 -0
  16. package/public/showcase/miele-witgoedcenter-amsterdam.webp +0 -0
  17. package/public/showcase/sloepverhuur-bolsward.webp +0 -0
  18. package/public/showcase/stark-vulcanising-products.webp +0 -0
  19. package/public/showcase/the-gym-haren.webp +0 -0
  20. package/public/showcase/van-dillen-antieke-bouwmaterialen.webp +0 -0
  21. package/src/blocks/Features.astro +1 -1
  22. package/src/blocks/Prices.astro +1 -1
  23. package/src/components/Badge.astro +1 -1
  24. package/src/components/Box.astro +3 -0
  25. package/src/components/Button.astro +7 -5
  26. package/src/components/Card.astro +23 -2
  27. package/src/components/Drawer.astro +1 -0
  28. package/src/components/Footer.astro +1 -1
  29. package/src/components/Grid.astro +1 -1
  30. package/src/components/Header.astro +52 -48
  31. package/src/components/Rating.astro +6 -2
  32. package/src/components/Root.astro +1 -1
  33. package/src/components/Section.astro +20 -2
  34. package/src/components/Stack.astro +36 -0
  35. package/src/components/docs/NavigationButtons.astro +59 -0
  36. package/src/components/experimental/Channel.astro +1 -4
  37. package/src/content/pages/_segment/footer.mdx +11 -11
  38. package/src/content/pages/base/badge.mdx +1 -1
  39. package/src/content/pages/base/button.mdx +9 -9
  40. package/src/content/pages/overview/showcase.mdx +62 -0
  41. package/src/content/pages/structure/stack.mdx +22 -0
  42. package/src/content/settings/base.yml +4 -0
  43. package/src/content/settings/components.yml +2 -0
  44. package/src/css/custom.css +16 -1
  45. package/src/integration/index.ts +7 -7
  46. package/src/layouts/Layout.astro +63 -62
  47. package/src/schemas/base.ts +10 -1
@@ -16,7 +16,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
16
16
 
17
17
  <Footer
18
18
  heading="Fulldev UI"
19
- set:html="Rapidly build content-driven websites."
19
+ text="Rapidly build content-driven websites."
20
20
  align="start"
21
21
  size="sm"
22
22
  columns={[
@@ -45,7 +45,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
45
45
 
46
46
  <Footer
47
47
  heading="Fulldev UI"
48
- set:html="Rapidly build content-driven websites."
48
+ text="Rapidly build content-driven websites."
49
49
  align="start"
50
50
  size="sm"
51
51
  columns={[
@@ -70,7 +70,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
70
70
 
71
71
  <Footer
72
72
  heading="Fulldev UI"
73
- set:html="Rapidly build content-driven websites."
73
+ text="Rapidly build content-driven websites."
74
74
  align="start"
75
75
  size="sm"
76
76
  structure="spread"
@@ -88,7 +88,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
88
88
 
89
89
  <Footer
90
90
  heading="Fulldev UI"
91
- set:html="Rapidly build content-driven websites."
91
+ text="Rapidly build content-driven websites."
92
92
  align="start"
93
93
  size="md"
94
94
  structure="spread"
@@ -106,7 +106,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
106
106
 
107
107
  <Footer
108
108
  heading="Fulldev UI"
109
- set:html="Rapidly build content-driven websites."
109
+ text="Rapidly build content-driven websites."
110
110
  align="start"
111
111
  size="lg"
112
112
  structure="spread"
@@ -133,7 +133,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
133
133
  structure="spread"
134
134
  align="start"
135
135
  heading="Fulldev UI"
136
- set:html="Rapidly build content-driven websites."
136
+ text="Rapidly build content-driven websites."
137
137
  columns={[
138
138
  {
139
139
  heading: 'Links',
@@ -151,7 +151,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
151
151
  structure="spread"
152
152
  align="start"
153
153
  heading="Fulldev UI"
154
- set:html="Rapidly build content-driven websites."
154
+ text="Rapidly build content-driven websites."
155
155
  columns={[
156
156
  {
157
157
  heading: 'Links',
@@ -169,7 +169,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
169
169
  structure="spread"
170
170
  align="start"
171
171
  heading="Fulldev UI"
172
- set:html="Rapidly build content-driven websites."
172
+ text="Rapidly build content-driven websites."
173
173
  columns={[
174
174
  {
175
175
  heading: 'Links',
@@ -187,7 +187,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
187
187
  structure="spread"
188
188
  align="start"
189
189
  heading="Fulldev UI"
190
- set:html="Rapidly build content-driven websites."
190
+ text="Rapidly build content-driven websites."
191
191
  columns={[
192
192
  {
193
193
  heading: 'Links',
@@ -211,7 +211,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
211
211
  structure="spread"
212
212
  align="start"
213
213
  heading="Fulldev UI"
214
- set:html="Rapidly build content-driven websites."
214
+ text="Rapidly build content-driven websites."
215
215
  columns={[
216
216
  {
217
217
  heading: 'Links',
@@ -229,7 +229,7 @@ import Footer from 'fulldev-ui/components/Footer.astro'
229
229
  structure="spread"
230
230
  align="start"
231
231
  heading="Fulldev UI"
232
- set:html="Rapidly build content-driven websites."
232
+ text="Rapidly build content-driven websites."
233
233
  columns={[
234
234
  {
235
235
  heading: 'Links',
@@ -66,5 +66,5 @@ import Badge from 'fulldev-ui/components/Badge.astro'
66
66
  import Badge from 'fulldev-ui/components/Badge.astro'
67
67
  ---
68
68
 
69
- <Badge icon="circle" set:html="Badge" />
69
+ <Badge icon="circle" text="Badge" />
70
70
  ```
@@ -38,7 +38,7 @@ import Button from 'fulldev-ui/components/Button.astro'
38
38
  import Button from 'fulldev-ui/components/Button.astro'
39
39
  ---
40
40
 
41
- <Button icon="circle" set:html="Button" set:html="Buttontje" />
41
+ <Button icon="circle" text="Button" text="Buttontje" />
42
42
  ```
43
43
 
44
44
  ```astro live
@@ -46,9 +46,9 @@ import Button from 'fulldev-ui/components/Button.astro'
46
46
  import Button from 'fulldev-ui/components/Button.astro'
47
47
  ---
48
48
 
49
- <Button size="sm" set:html="Button" />
50
- <Button size="md" set:html="Button" />
51
- <Button size="lg" set:html="Button" />
49
+ <Button size="sm" text="Button" />
50
+ <Button size="md" text="Button" />
51
+ <Button size="lg" text="Button" />
52
52
  ```
53
53
 
54
54
  ```astro live
@@ -56,8 +56,8 @@ import Button from 'fulldev-ui/components/Button.astro'
56
56
  import Button from 'fulldev-ui/components/Button.astro'
57
57
  ---
58
58
 
59
- <Button color="base" set:html="Button" />
60
- <Button color="brand" set:html="Button" />
59
+ <Button color="base" text="Button" />
60
+ <Button color="brand" text="Button" />
61
61
  ```
62
62
 
63
63
  ```astro live
@@ -65,7 +65,7 @@ import Button from 'fulldev-ui/components/Button.astro'
65
65
  import Button from 'fulldev-ui/components/Button.astro'
66
66
  ---
67
67
 
68
- <Button radius="none" set:html="Button" />
69
- <Button radius="auto" set:html="Button" />
70
- <Button radius="full" set:html="Button" />
68
+ <Button radius="none" text="Button" />
69
+ <Button radius="auto" text="Button" />
70
+ <Button radius="full" text="Button" />
71
71
  ```
@@ -0,0 +1,62 @@
1
+ ---
2
+ showcase:
3
+ # Add your project here below 👇
4
+
5
+ - heading: Van Dillen Antieke Bouwmaterialen
6
+ image: /showcase/van-dillen-antieke-bouwmaterialen.webp
7
+ href: 'https://vdabouwmaterialen.nl'
8
+ - heading: Anti Slip Profiles
9
+ image: /showcase/anti-slip-profiles.webp
10
+ href: 'https://antislipprofiles.com'
11
+ - heading: Fulldev UI
12
+ image: /showcase/fulldev-ui.webp
13
+ href: 'https://ui.ull.dev'
14
+ - heading: The Gym Haren
15
+ image: /showcase/the-gym-haren.webp
16
+ href: 'https://thegymharen.nl'
17
+ - heading: Lavis Detailing
18
+ image: /showcase/lavis-detailing.webp
19
+ href: 'https://lavisdetailing.nl'
20
+ - heading: Leren Trainingsacteren
21
+ image: /showcase/leren-trainingsacteren.webp
22
+ href: 'https://lerentrainingsacteren.nl'
23
+ - heading: Miele Witgoedcenter Amsterdam
24
+ image: /showcase/miele-witgoedcenter-amsterdam.webp
25
+ href: 'https://witgoedcenteramsterdam.nl'
26
+ - heading: Sloepverhuur Bolsward
27
+ image: /showcase/sloepverhuur-bolsward.webp
28
+ href: 'https://sloepverhuurbolsward.nl'
29
+ - heading: Stark Vulcanising Products
30
+ image: /showcase/stark-vulcanising-products.webp
31
+
32
+ _layout: PostLayout
33
+ settings: components
34
+ ---
35
+
36
+ import Masonry from 'fulldev-ui/components/Masonry.astro'
37
+ import Card from 'fulldev-ui/components/Card.astro'
38
+
39
+ # Showcase
40
+
41
+ Projects that are built with Fulldev UI.
42
+
43
+ <Card
44
+ color="brand"
45
+ size="sm"
46
+ frame="panel"
47
+ style={{ marginTop: 'var(--space-6)', marginBottom: 'var(--space-7)' }}
48
+ heading="Your project in this showcase?"
49
+ description="Add your project to the showcase in 1 minute."
50
+ button={{
51
+ text: 'Add your project',
52
+ variant: 'secondary',
53
+ href: 'https://github.com/fulldotdev/ui/blob/main/CONTRIBUTING.md#showcase',
54
+ target: '_blank',
55
+ }}
56
+ />
57
+
58
+ <Masonry>
59
+ {frontmatter.showcase.map((showcase) => (
60
+ <Card frame="panel" position="inset" {...showcase} target="_blank" />
61
+ ))}
62
+ </Masonry>
@@ -0,0 +1,22 @@
1
+ ---
2
+ _layout: BlockLayout
3
+ settings: components
4
+
5
+ title: Stack
6
+ ---
7
+
8
+ ```astro live
9
+ ---
10
+ import DecorativeBox from 'fulldev-ui/components/docs/DecorativeBox.astro'
11
+ import Section from 'fulldev-ui/components/Section.astro'
12
+ import Stack from 'fulldev-ui/components/Stack.astro'
13
+ ---
14
+
15
+ <Section>
16
+ <Stack>
17
+ <DecorativeBox />
18
+ <DecorativeBox />
19
+ <DecorativeBox />
20
+ </Stack>
21
+ </Section>
22
+ ```
@@ -11,6 +11,8 @@ header:
11
11
  href: /typography/heading
12
12
  - text: Blocks
13
13
  href: /blocks
14
+ - text: Showcase
15
+ href: /overview/showcase
14
16
  search:
15
17
  icon: search
16
18
  variant: soft
@@ -43,6 +45,8 @@ header:
43
45
  href: /overview/theming
44
46
  - text: Frameworks
45
47
  href: /overview/frameworks
48
+ - text: Showcase
49
+ href: /overview/showcase
46
50
  - heading: Typography
47
51
  folder: typography
48
52
  - heading: Base
@@ -11,6 +11,8 @@ sidebar:
11
11
  href: /overview/theming
12
12
  - text: Frameworks
13
13
  href: /overview/frameworks
14
+ - text: Showcase
15
+ href: /overview/showcase
14
16
  - heading: Typography
15
17
  folder: typography
16
18
  - heading: Base
@@ -1,4 +1,19 @@
1
+ /* TODO: temporary decreased due to z-index issue over header */
1
2
  .hero:not(.window .hero)::before {
3
+ position: absolute;
4
+ top: 0;
5
+ left: 0;
6
+ z-index: -1;
7
+ background: radial-gradient(
8
+ ellipse closest-side,
9
+ rgba(255, 85, 0, 0.1),
10
+ #f500 70%
11
+ );
12
+ width: 100%;
13
+ height: 100%;
14
+ content: '';
15
+ }
16
+ /* .hero:not(.window .hero)::before {
2
17
  position: absolute;
3
18
  top: -80%;
4
19
  left: 0;
@@ -11,7 +26,7 @@
11
26
  width: 100%;
12
27
  height: 170%;
13
28
  content: '';
14
- }
29
+ } */
15
30
 
16
31
  .header:not(.window .header) {
17
32
  backdrop-filter: blur(10px);
@@ -129,13 +129,13 @@ export default function fulldevIntegration(
129
129
  'virtual:colors.css': css,
130
130
  }),
131
131
  ],
132
- // css: {
133
- // preprocessorOptions: {
134
- // scss: {
135
- // additionalData: `$layer: ${config.layer};`,
136
- // },
137
- // },
138
- // },
132
+ css: {
133
+ preprocessorOptions: {
134
+ scss: {
135
+ api: 'modern',
136
+ },
137
+ },
138
+ },
139
139
  },
140
140
  })
141
141
 
@@ -7,6 +7,7 @@ import Head from 'fulldev-ui/components/Head.astro'
7
7
  import Header from 'fulldev-ui/components/Header.astro'
8
8
  import Sidebar from 'fulldev-ui/components/Sidebar.astro'
9
9
  import Toc from 'fulldev-ui/components/Toc.astro'
10
+ import NavigationButtons from '../components/docs/NavigationButtons.astro'
10
11
 
11
12
  type Props = Partial<CollectionEntry<'pages'>> & {
12
13
  class?: string
@@ -44,10 +45,7 @@ const h2Headings = headings.filter((heading: any) => heading.depth === 2)
44
45
  },
45
46
  ]}
46
47
  >
47
- <Header
48
- {logo}
49
- {...header}
50
- />
48
+ <Header {...header} />
51
49
  <div class="core">
52
50
  <Sidebar {sidebar} />
53
51
  <main data-pagefind-body>
@@ -57,6 +55,7 @@ const h2Headings = headings.filter((heading: any) => heading.depth === 2)
57
55
  />
58
56
  <div class="blocks">
59
57
  <slot />
58
+ <NavigationButtons {sidebar} />
60
59
  </div>
61
60
  </main>
62
61
  </div>
@@ -87,78 +86,80 @@ const h2Headings = headings.filter((heading: any) => heading.depth === 2)
87
86
 
88
87
  <Fragment set:html={data?.code?.body} />
89
88
  <style lang="scss" is:global>
90
- :root {
91
- --screen: 1536px;
92
- --gutter: max(4vw, calc(100vw - var(--screen)) / 2);
93
- --gutter-left: var(--gutter);
94
- --gutter-right: var(--gutter);
95
- --sidebar-width: 0px;
96
- --toc-width: 0px;
97
- --header-height: calc(
98
- var(--text-2) + 2 * var(--space-4) + 2 * var(--space-3)
99
- );
100
- }
89
+ @layer fulldev {
90
+ :root {
91
+ --screen: 1536px;
92
+ --gutter: max(4vw, calc(100vw - var(--screen)) / 2);
93
+ --gutter-left: var(--gutter);
94
+ --gutter-right: var(--gutter);
95
+ --sidebar-width: 0px;
96
+ --toc-width: 0px;
97
+ --header-height: calc(
98
+ var(--text-2) + 2 * var(--space-4) + 2 * var(--space-3)
99
+ );
100
+ }
101
101
 
102
- html,
103
- body {
104
- box-sizing: border-box;
105
- margin: 0;
106
- background-color: var(--color-background);
107
- padding: 0;
108
- width: 100%;
109
- min-height: 100vh;
110
- color: var(--base-11);
111
- color-scheme: var(--color-scheme);
112
- font-size: var(--text-2);
113
- font-family: var(--font-family);
114
- }
102
+ html,
103
+ body {
104
+ box-sizing: border-box;
105
+ margin: 0;
106
+ background-color: var(--color-background);
107
+ padding: 0;
108
+ width: 100%;
109
+ min-height: 100vh;
110
+ color: var(--base-11);
111
+ color-scheme: var(--color-scheme);
112
+ font-size: var(--text-2);
113
+ font-family: var(--font-family);
114
+ }
115
115
 
116
- body {
117
- display: flex;
118
- flex-direction: column;
116
+ body {
117
+ display: flex;
118
+ flex-direction: column;
119
119
 
120
- @media (min-width: 1024px) {
121
- &.has-sidebar .core {
122
- --gutter-left: var(--space-6);
123
- --sidebar-width: calc(var(--gutter) + 200px);
120
+ @media (min-width: 1024px) {
121
+ &.has-sidebar .core {
122
+ --gutter-left: var(--space-6);
123
+ --sidebar-width: calc(var(--gutter) + 200px);
124
124
 
125
- display: grid;
126
- grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
127
- }
125
+ display: grid;
126
+ grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
127
+ }
128
128
 
129
- &.has-toc main {
130
- --gutter-right: var(--space-6);
131
- --toc-width: calc(var(--gutter) + 200px);
129
+ &.has-toc main {
130
+ --gutter-right: var(--space-6);
131
+ --toc-width: calc(var(--gutter) + 200px);
132
132
 
133
- display: grid;
134
- grid-template-columns: minmax(0, 1fr) var(--toc-width);
133
+ display: grid;
134
+ grid-template-columns: minmax(0, 1fr) var(--toc-width);
135
+ }
135
136
  }
136
- }
137
-
138
- .header {
139
- width: 100%;
140
- height: var(--header-height);
141
- }
142
137
 
143
- .core {
144
- .sidebar {
145
- position: sticky;
146
- top: 0;
147
- padding-left: var(--gutter);
138
+ .header {
139
+ width: 100%;
140
+ height: var(--header-height);
148
141
  }
149
142
 
150
- main {
151
- .toc {
143
+ .core {
144
+ .sidebar {
152
145
  position: sticky;
153
146
  top: 0;
154
- order: 1;
155
- padding-right: var(--gutter);
147
+ padding-left: var(--gutter);
156
148
  }
157
149
 
158
- .blocks {
159
- display: flex;
160
- flex-direction: column;
161
- width: 100%;
150
+ main {
151
+ .toc {
152
+ position: sticky;
153
+ top: 0;
154
+ order: 1;
155
+ padding-right: var(--gutter);
156
+ }
157
+
158
+ .blocks {
159
+ display: flex;
160
+ flex-direction: column;
161
+ width: 100%;
162
+ }
162
163
  }
163
164
  }
164
165
  }
@@ -32,7 +32,16 @@ export const base = z
32
32
  html: z.string(),
33
33
  image: z.string(),
34
34
  images: z.string().array(),
35
- rating: z.number(),
35
+ rating: z.number().or(
36
+ z
37
+ .object({
38
+ value: z.number(),
39
+ label: z.string(),
40
+ avatars: z.string().array(),
41
+ avatar: z.string(),
42
+ })
43
+ .partial()
44
+ ),
36
45
  button: button,
37
46
  buttons: button.array(),
38
47
  link: link,