fulldev-ui 0.4.15 → 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 (45) 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 +2 -1
  11. package/public/showcase/anti-slip-profiles.webp +0 -0
  12. package/public/showcase/fulldev-ui.webp +0 -0
  13. package/public/showcase/lavis-detailing.webp +0 -0
  14. package/public/showcase/leren-trainingsacteren.webp +0 -0
  15. package/public/showcase/miele-witgoedcenter-amsterdam.webp +0 -0
  16. package/public/showcase/sloepverhuur-bolsward.webp +0 -0
  17. package/public/showcase/stark-vulcanising-products.webp +0 -0
  18. package/public/showcase/the-gym-haren.webp +0 -0
  19. package/public/showcase/van-dillen-antieke-bouwmaterialen.webp +0 -0
  20. package/src/blocks/Features.astro +1 -1
  21. package/src/blocks/Prices.astro +1 -1
  22. package/src/components/Badge.astro +1 -1
  23. package/src/components/Box.astro +3 -0
  24. package/src/components/Button.astro +7 -5
  25. package/src/components/Card.astro +23 -2
  26. package/src/components/Drawer.astro +1 -0
  27. package/src/components/Footer.astro +1 -1
  28. package/src/components/Grid.astro +1 -1
  29. package/src/components/Header.astro +52 -48
  30. package/src/components/Rating.astro +6 -2
  31. package/src/components/Root.astro +1 -1
  32. package/src/components/Section.astro +20 -2
  33. package/src/components/Stack.astro +36 -0
  34. package/src/components/docs/NavigationButtons.astro +59 -0
  35. package/src/components/experimental/Channel.astro +1 -4
  36. package/src/content/pages/_segment/footer.mdx +11 -11
  37. package/src/content/pages/base/badge.mdx +1 -1
  38. package/src/content/pages/base/button.mdx +9 -9
  39. package/src/content/pages/overview/showcase.mdx +62 -0
  40. package/src/content/pages/structure/stack.mdx +22 -0
  41. package/src/content/settings/base.yml +4 -0
  42. package/src/content/settings/components.yml +2 -0
  43. package/src/css/custom.css +16 -1
  44. package/src/layouts/Layout.astro +63 -62
  45. package/src/schemas/base.ts +10 -1
@@ -1,57 +1,12 @@
1
- name: "Bug report"
2
- description: Report an issue
3
- title: '[bug]: '
4
- labels: ["bug"]
1
+ name: 'Bug report'
2
+ description: Report a bug or issue
3
+ labels: ['bug']
5
4
  body:
6
- - type: markdown
7
- attributes:
8
- value: |
9
- ### Thanks for taking the time to create a bug report. Please search existing issues before submitting, as the issue may have already been addressed.
10
-
11
- - type: textarea
12
- id: bug-description
13
- attributes:
14
- label: Describe the bug
15
- description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, describe how in the description.
16
- placeholder: Bug description
17
- validations:
18
- required: true
19
-
20
- - type: input
21
- id: components-affected
22
- attributes:
23
- label: Affected component/components/documentation
24
- description: Is this feature request relevant to any of the already existing components?
25
- placeholder: ex. Button, Input...
26
- validations:
27
- required: false
28
-
29
5
  - type: textarea
30
- id: reproduction
6
+ id: description
31
7
  attributes:
32
- label: How to reproduce
33
- description: A step-by-step description of how to reproduce the bug.
34
- placeholder: |
35
- 1. Go to '...'
36
- 2. Click on '....'
37
- 3. See error
8
+ label: Describe the bug or issue
9
+ description: Be clear and concise. Add logs and/or screenshots if applicable.
10
+ placeholder: Add your bug or issue description here...
38
11
  validations:
39
12
  required: true
40
-
41
- - type: textarea
42
- id: logs
43
- attributes:
44
- label: Logs
45
- description: "Please include browser console and server logs around the time this bug occurred. Optional if provided reproduction. Please try not to insert an image but copy paste the log text."
46
- render: bash
47
-
48
- - type: checkboxes
49
- id: terms
50
- attributes:
51
- label: Before submitting
52
- description: By submitting this issue, you agree to follow our [Contributing Guidelines](https://github.com/fulldotdev/ui/blob/main/CONTRIBUTING.md).
53
- options:
54
- - label: I've made research efforts and searched the documentation
55
- required: true
56
- - label: I've searched for existing issues
57
- required: true
@@ -1,5 +1,8 @@
1
1
  blank_issues_enabled: false
2
2
  contact_links:
3
+ - name: Add your site to our showcase
4
+ url: https://github.com/fulldotdev/ui/blob/main/CONTRIBUTING.md#showcase
5
+ about: Add your project to the showcase page and get featured on our website.
3
6
  - name: Get Help on Discord
4
7
  url: https://discord.gg/tdmUyH2YE4
5
8
  about: If you can't get something to work, open a forum post in our Discord server.
@@ -0,0 +1,12 @@
1
+ name: 'Documentation'
2
+ description: Issues and suggestions regarding documentation
3
+ labels: ['docs']
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: Describe the issue or suggestion
9
+ description: Be clear and concise. Add logs and/or screenshots if applicable.
10
+ placeholder: Add your issue or suggestion description here...
11
+ validations:
12
+ required: true
@@ -1,39 +1,12 @@
1
- name: 'Feature request'
2
- description: Create a feature request for fulldev-ui
3
- title: '[feat]: '
4
- labels: ['area: request']
1
+ name: 'Feature'
2
+ description: Propose and discuss improvements
3
+ labels: ['feature']
5
4
  body:
6
- - type: markdown
7
- attributes:
8
- value: |
9
- ### Thanks for taking the time to create a feature request! Please search existing issues before submitting, as the issue may have already been addressed.
10
-
11
5
  - type: textarea
12
- id: feature-description
6
+ id: description
13
7
  attributes:
14
- label: Feature description
15
- description: Tell us about your feature request
16
- placeholder: 'I think this feature would be nice to have because...'
17
- value: 'Describe your feature request...'
8
+ label: Describe the feature
9
+ description: Be clear and concise. Add logs and/or screenshots if applicable.
10
+ placeholder: Add your feature description here...
18
11
  validations:
19
12
  required: true
20
-
21
- - type: input
22
- id: components-affected
23
- attributes:
24
- label: Affected component/components/documentation
25
- description: Is this feature request relevant to any of the already existing components?
26
- placeholder: ex. Button, Input...
27
- validations:
28
- required: false
29
-
30
- - type: checkboxes
31
- id: terms
32
- attributes:
33
- label: Before submitting
34
- description: By submitting this request, you agree to follow our [Contributing Guidelines](https://github.com/fulldotdev/ui/blob/main/CONTRIBUTING.md).
35
- options:
36
- - label: I've made research efforts and searched the documentation
37
- required: true
38
- - label: I've searched for existing issues and PRs
39
- required: true
@@ -0,0 +1,12 @@
1
+ name: 'Support'
2
+ description: Ask a question or request help
3
+ labels: ['support']
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: Describe your question or request
9
+ description: Be clear and concise. Add logs and/or screenshots if applicable.
10
+ placeholder: Add your question or request description here...
11
+ validations:
12
+ required: true
@@ -1,19 +1,7 @@
1
- # Changes/Additions being made
1
+ # Changes/Additions being made and why
2
2
 
3
3
  Here give examples of the changes you've made in this pull request. Include an itemized list if you can. It'll help the reviewer
4
4
 
5
- ## What's the context?
6
-
7
- What's the context for the changes? Are there any
8
-
9
- ## Rationale behind the change or addition
10
-
11
- Why did you choose to make these changes? Were there any trade-offs you had to consider?
12
-
13
- ## Test plan
14
-
15
- How do you know the changes are safe to ship to production?
16
-
17
5
  ## Screenshots (optional)
18
6
 
19
7
  If you made visual changes, what are the before an afters?
@@ -0,0 +1,6 @@
1
+ # Contributor Code of Conduct
2
+ We accept and encourage everyone's contributions. It doesn't matter how you look, how you feel, where you're from, or anything like that. In fact, we won't bring it up, or ask.
3
+
4
+ We are here to build great software, to learn, to grow, and to help each other. Maybe make some friends along the way.
5
+
6
+ If you have any questions, please reach out!
package/CONTRIBUTING.md CHANGED
@@ -55,11 +55,14 @@ The main source directory containing all the core files of the project.
55
55
 
56
56
  ### Setup
57
57
 
58
- 1. Clone the Github repository in your designated folder:
58
+ 1. Fork the [repository](https://github.com/fulldotdev/ui) by clicking the fork button on the top right of the repository page.
59
+
60
+ 2. Clone the Github repository in your designated folder:
59
61
 
60
62
  ```bash
61
- git clone https://github.com/fulldotdev/ui.git
63
+ git clone https://github.com/your-user-name/ui
62
64
  ```
65
+ Ensure the cloned repo is named "ui" or replace "ui" with your fork's name.
63
66
 
64
67
  2. Enter the folder using `cd ui`.
65
68
 
@@ -69,7 +72,7 @@ git clone https://github.com/fulldotdev/ui.git
69
72
  git checkout -b my-new-branch
70
73
  ```
71
74
 
72
- 1. Install the packages using pnpm:
75
+ 4. Install the packages using pnpm:
73
76
 
74
77
  ```bash
75
78
  pnpm install
@@ -77,7 +80,7 @@ pnpm install
77
80
 
78
81
  Make sure to do this in root to make sure you're using the local version of the component package.
79
82
 
80
- 1. Run the development server:
83
+ 5. Run the development server:
81
84
 
82
85
  ```bash
83
86
  pnpm dev
@@ -85,10 +88,23 @@ pnpm dev
85
88
 
86
89
  ## Commit & Pull Requests
87
90
 
91
+ ### Pull Requests
92
+
93
+ The simplest way to open a pull request with your changes is by using github web, after following the [setup guide](#setup) and commit your changes you have a contribute button at the top of your repo, after clicking that you should be able to make a pull request and go from there.
94
+
88
95
  ### Commit Conduct
89
96
 
90
97
  For a faster and easier review we advise you to use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#summary).
91
98
 
99
+ ## Showcase
100
+
101
+ Have you used fulldev-ui to build a website? Add it to the showcase!
102
+
103
+ 1. Fork this repository.
104
+ 2. Add a screenshot of your site to the `public/showcase/` directory.
105
+ 3. Add your site to the `showcase` array at the top of `src/content/pages/overview/showcase.mdx`.
106
+ 4. Go to the forked repository on your Github and clicke the 'Contribute` button to make a Pull Request.
107
+
92
108
  ## Community / Contact
93
109
 
94
110
  Looking to share your work using fulldev-ui, regular talks about it or support join our [discord server](https://discord.gg/tdmUyH2YE4).
package/README.md CHANGED
@@ -29,3 +29,4 @@ Copyright (c) 2024–present [Fulldev][fulldev]
29
29
  [docs]: https://ui.full.dev/
30
30
  [fulldev]: https://full.dev/
31
31
  [issues]: https://github.com/fulldotdev/ui/issues/
32
+ [discord]: https://discord.gg/vXZqMbadm8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fulldev-ui",
3
- "version": "0.4.15",
3
+ "version": "0.4.16",
4
4
  "description": "A component library built for Astro",
5
5
  "homepage": "https://ui.full.dev",
6
6
  "bugs": "https://github.com/fulldotdev/ui/issues",
@@ -22,6 +22,7 @@
22
22
  "build": "astro build",
23
23
  "check": "astro check",
24
24
  "preview": "astro preview",
25
+ "build:prod": "astro check && astro build",
25
26
  "astro": "astro",
26
27
  "test": "astro check && astro build && astro preview --host"
27
28
  },
Binary file
@@ -6,6 +6,6 @@ const { ...rest } = Astro.props
6
6
 
7
7
  <Section
8
8
  class:list="features"
9
- structure="grid"
9
+ structure="stack"
10
10
  {...rest}
11
11
  />
@@ -6,7 +6,7 @@ const { ...rest } = Astro.props
6
6
 
7
7
  <Section
8
8
  class:list="prices"
9
- structure="grid"
9
+ structure="stack"
10
10
  frame="panel"
11
11
  {...rest}
12
12
  />
@@ -34,8 +34,8 @@ const {
34
34
  <slot>
35
35
  <Fragment set:text={text} />
36
36
  <Fragment set:html={html} />
37
- <Icon name={icon} />
38
37
  </slot>
38
+ <Icon name={icon} />
39
39
  </Root>
40
40
 
41
41
  <style is:global lang="scss">
@@ -8,6 +8,7 @@ import Masonry from './Masonry.astro'
8
8
  import Row from './Row.astro'
9
9
  import Split from './Split.astro'
10
10
  import Spread from './Spread.astro'
11
+ import Stack from './Stack.astro'
11
12
  import Wrap from './Wrap.astro'
12
13
 
13
14
  type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> & {
@@ -25,6 +26,7 @@ type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> & {
25
26
  | 'split'
26
27
  | 'spread'
27
28
  | 'wrap'
29
+ | 'stack'
28
30
  }
29
31
 
30
32
  const structuresMap = {
@@ -37,6 +39,7 @@ const structuresMap = {
37
39
  split: Split,
38
40
  spread: Spread,
39
41
  wrap: Wrap,
42
+ stack: Stack,
40
43
  }
41
44
 
42
45
  const {
@@ -35,9 +35,9 @@ const {
35
35
  {radius}
36
36
  {...rest}
37
37
  >
38
+ <Avatar src={avatar} />
39
+ <Icon name={icon} />
38
40
  <slot>
39
- <Avatar src={avatar} />
40
- <Icon name={icon} />
41
41
  <Fragment set:html={html} />
42
42
  <Fragment set:text={text} />
43
43
  </slot>
@@ -57,7 +57,7 @@ const {
57
57
  cursor: pointer;
58
58
  outline: none;
59
59
  box-shadow: none;
60
- border: none;
60
+ border-width: 0px;
61
61
  background: none;
62
62
  padding: 0 var(--space-4);
63
63
  height: calc(var(--text-2) + 2 * var(--space-4));
@@ -111,21 +111,23 @@ const {
111
111
  }
112
112
 
113
113
  &.variant-secondary {
114
- box-shadow: 0 var(--space-1) var(--space-3) 0 rgba(0, 0, 0, 0.05);
114
+ border-style: solid;
115
+ border-color: var(--color-7);
115
116
  background-color: var(--color-3);
116
117
  color: var(--color-11);
117
118
 
118
119
  &:hover {
120
+ border-color: var(--color-8);
119
121
  background-color: var(--color-4);
120
122
  }
121
123
 
122
124
  &:active {
125
+ border-color: var(--color-8);
123
126
  background-color: var(--color-5);
124
127
  }
125
128
  }
126
129
 
127
130
  &.variant-tertiary {
128
- box-shadow: 0 var(--space-1) var(--space-3) 0 rgba(0, 0, 0, 0.05);
129
131
  background-color: transparent;
130
132
  color: var(--color-11);
131
133
 
@@ -12,12 +12,14 @@ import Spread from 'fulldev-ui/components/Spread.astro'
12
12
  import Tagline from 'fulldev-ui/components/Tagline.astro'
13
13
  import Text from 'fulldev-ui/components/Text.astro'
14
14
  import Wrap from 'fulldev-ui/components/Wrap.astro'
15
+ import Badge from './Badge.astro'
15
16
 
16
17
  type Props<As extends HTMLTag = 'a'> = Polymorphic<{ as: As }> & {
17
18
  ratio?: 'landscape' | 'portrait' | 'square' | number
18
19
  variant?: 'primary' | 'secondary' | 'tertiary'
19
20
  position?: 'background' | 'cover' | 'inset'
20
21
  align?: 'start' | 'center' | 'end'
22
+ justify?: 'start' | 'center' | 'end'
21
23
  level?: 1 | 2 | 3 | 4 | 5 | 6
22
24
  size?: 'sm' | 'md' | 'lg'
23
25
  radius?: 'auto' | 'none'
@@ -26,8 +28,11 @@ type Props<As extends HTMLTag = 'a'> = Polymorphic<{ as: As }> & {
26
28
  space?: 'auto' | 'none'
27
29
  mask?: 'sm' | 'md' | 'lg'
28
30
  image?: string
31
+ images?: string[]
29
32
  button?: ComponentProps<typeof Button<'a'>>
30
33
  buttons?: ComponentProps<typeof Button<'a'>>[]
34
+ badge?: string | ComponentProps<typeof Badge<'a'>>
35
+ badges?: (string | ComponentProps<typeof Badge<'a'>>)[]
31
36
  rating?: number | ComponentProps<typeof Rating>
32
37
  price?: number
33
38
  icon?: string
@@ -48,7 +53,7 @@ const {
48
53
  href,
49
54
  as = href ? 'a' : 'div',
50
55
  space = 'auto',
51
- frame = 'panel',
56
+ frame = 'none',
52
57
  radius = 'auto',
53
58
  align = 'start',
54
59
  variant,
@@ -63,8 +68,11 @@ const {
63
68
  description,
64
69
  list,
65
70
  buttons,
71
+ badge,
72
+ badges,
66
73
  ratio,
67
74
  image,
75
+ images,
68
76
  rating,
69
77
  button,
70
78
  price,
@@ -101,13 +109,26 @@ const buttonVariant = (i: number) => {
101
109
  {position}
102
110
  {mask}
103
111
  ratio={position === 'background' ? undefined : ratio}
104
- src={image}
112
+ src={image || images?.[0]}
105
113
  />
106
114
  <Icon name={icon} />
107
115
  <Rating
108
116
  color="brand"
117
+ {avatars}
118
+ {avatar}
119
+ {label}
109
120
  {...typeof rating === 'number' ? { value: rating } : rating}
110
121
  />
122
+ <Wrap>
123
+ {
124
+ [badge, ...(badges ?? [])].filter(Boolean)?.map((badge: any) => (
125
+ <Badge
126
+ color="base"
127
+ {...(typeof badge === 'string' ? { html: badge } : badge)}
128
+ />
129
+ ))
130
+ }
131
+ </Wrap>
111
132
  <Tagline
112
133
  color="base"
113
134
  html={tagline}
@@ -59,6 +59,7 @@ const {
59
59
  background: var(--color-2);
60
60
  padding: 0;
61
61
  padding: var(--space-7) var(--space-7) var(--space-7) var(--gutter);
62
+ min-width: 260px;
62
63
  max-width: 360px;
63
64
  height: 100vh;
64
65
  max-height: 100vh;
@@ -8,7 +8,7 @@ import Text from 'fulldev-ui/components/Text.astro'
8
8
  import Logo from 'fulldev-ui/components/experimental/Logo.astro'
9
9
 
10
10
  type Props<As extends HTMLTag = 'footer'> = Polymorphic<{ as: As }> & {
11
- structure?: 'spread' | 'row' | 'split' | 'column'
11
+ structure?: 'spread' | 'row' | 'split' | 'column' | 'stack'
12
12
  variant?: 'base' | 'ghost' | 'subtle' | 'soft' | 'surface' | 'outline'
13
13
  frame?: 'fill' | 'panel' | 'contain'
14
14
  align?: 'start' | 'center' | 'end'
@@ -24,7 +24,7 @@ const { ...rest } = Astro.props
24
24
 
25
25
  display: grid;
26
26
  position: relative;
27
- grid-template-columns: repeat(auto-fit, minmax(var(--column-width), 1fr));
27
+ grid-template-columns: repeat(auto-fill, minmax(var(--column-width), 1fr));
28
28
  gap: var(--space-4);
29
29
  width: 100%;
30
30
  }
@@ -32,8 +32,7 @@ const {
32
32
  structure = 'spread',
33
33
  space = 'auto',
34
34
  size = 'sm',
35
- frame = 'fill',
36
- variant = 'base',
35
+ frame = 'none',
37
36
  logo,
38
37
  heading,
39
38
  links,
@@ -52,7 +51,6 @@ const url = Astro.url.href
52
51
  {as}
53
52
  {frame}
54
53
  {structure}
55
- {variant}
56
54
  {space}
57
55
  {size}
58
56
  {...rest}
@@ -86,52 +84,54 @@ const url = Astro.url.href
86
84
  />
87
85
  ))
88
86
  }
89
- <Search {...search} />
90
- <Drawer
91
- icon="menu-2"
92
- id="navigation-drawer"
93
- >
94
- {
95
- drawer &&
96
- drawer.length > 0 &&
97
- drawer.map((item: any) => (
98
- <>
99
- <Heading
100
- level={6}
101
- html={item.heading}
102
- />
103
- {item.links?.map((link: any) => (
104
- <Link
105
- {...link}
106
- class="sidebar-link"
107
- color={
108
- url.replace(/\/$/, '').endsWith(link.href)
109
- ? 'brand'
110
- : undefined
111
- }
87
+ {search && <Search {...search} />}
88
+ {
89
+ drawer && (
90
+ <Drawer
91
+ icon="menu-2"
92
+ id="navigation-drawer"
93
+ >
94
+ {drawer &&
95
+ drawer.length > 0 &&
96
+ drawer.map((item: any) => (
97
+ <>
98
+ <Heading
99
+ level={6}
100
+ html={item.heading}
112
101
  />
113
- ))}
114
- {item.folder &&
115
- (async () => {
116
- const pages = await getCollection(
117
- 'pages',
118
- (entry: any) =>
119
- entry.slug.startsWith(item.folder) &&
120
- !entry.slug.endsWith(item.folder)
121
- )
122
- return pages.map((page: any) => (
123
- <Link
124
- href={`/${page.slug}`}
125
- class="sidebar-link"
126
- color={slug === page.slug ? 'brand' : undefined}
127
- html={page.data.title}
128
- />
129
- ))
130
- })()}
131
- </>
132
- ))
133
- }
134
- </Drawer>
102
+ {item.links?.map((link: any) => (
103
+ <Link
104
+ {...link}
105
+ class="sidebar-link"
106
+ color={
107
+ url.replace(/\/$/, '').endsWith(link.href)
108
+ ? 'brand'
109
+ : undefined
110
+ }
111
+ />
112
+ ))}
113
+ {item.folder &&
114
+ (async () => {
115
+ const pages = await getCollection(
116
+ 'pages',
117
+ (entry: any) =>
118
+ entry.slug.startsWith(item.folder) &&
119
+ !entry.slug.endsWith(item.folder)
120
+ )
121
+ return pages.map((page: any) => (
122
+ <Link
123
+ href={`/${page.slug}`}
124
+ class="sidebar-link"
125
+ color={slug === page.slug ? 'brand' : undefined}
126
+ html={page.data.title}
127
+ />
128
+ ))
129
+ })()}
130
+ </>
131
+ ))}
132
+ </Drawer>
133
+ )
134
+ }
135
135
  </Row>
136
136
  </Root>
137
137
 
@@ -160,6 +160,10 @@ const url = Astro.url.href
160
160
  max-width: calc(100% - (2 * var(--outer-x)));
161
161
  height: var(--header-height);
162
162
 
163
+ &.frame-none {
164
+ padding: 0 var(--gutter);
165
+ }
166
+
163
167
  &.frame-fill {
164
168
  background-color: var(--color-2);
165
169
  padding: 0 var(--gutter);
@@ -8,6 +8,7 @@ import Label from './Label.astro'
8
8
 
9
9
  type Props = HTMLAttributes<'div'> & {
10
10
  color?: 'base' | 'brand'
11
+ align?: 'start' | 'center' | 'end'
11
12
  value?: number
12
13
  size?: string
13
14
  label?: string
@@ -15,7 +16,7 @@ type Props = HTMLAttributes<'div'> & {
15
16
  avatar?: string
16
17
  }
17
18
 
18
- const { value, label, avatars, avatar, ...rest } = Astro.props
19
+ const { value, label, avatars, avatar, align, ...rest } = Astro.props
19
20
 
20
21
  const getIcon = (count: number) => {
21
22
  if (!value) return
@@ -24,6 +25,8 @@ const getIcon = (count: number) => {
24
25
  if (difference >= -0.75) return 'star-half-filled'
25
26
  return 'star'
26
27
  }
28
+
29
+ const hasAvatars = avatars && avatars?.length > 0
27
30
  ---
28
31
 
29
32
  <Root
@@ -38,7 +41,7 @@ const getIcon = (count: number) => {
38
41
  />
39
42
  ))
40
43
  }
41
- <Column>
44
+ <Column align={!hasAvatars ? align : undefined}>
42
45
  <Root
43
46
  class:list={'stars'}
44
47
  {...rest}
@@ -64,6 +67,7 @@ const getIcon = (count: number) => {
64
67
  @layer fulldev {
65
68
  .rating {
66
69
  display: flex;
70
+ align-items: center;
67
71
  gap: var(--space-4);
68
72
 
69
73
  .avatar + .avatar {