@youcan/celeste 0.22.0 → 0.23.0

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 (48) hide show
  1. package/ai/README.md +1 -1
  2. package/ai/component-registry.json +127 -2
  3. package/ai/icons.json +2 -2
  4. package/ai/tokens.json +2 -2
  5. package/dist/celeste.css +156 -104
  6. package/dist/cjs/breadcrumb-arrow.cjs +2 -0
  7. package/dist/cjs/breadcrumb-item.cjs +2 -0
  8. package/dist/cjs/breadcrumb.cjs +2 -0
  9. package/dist/cjs/chunks/breadcrumb-arrow.cjs +50 -0
  10. package/dist/cjs/chunks/breadcrumb-item.cjs +52 -0
  11. package/dist/cjs/chunks/breadcrumb.cjs +50 -0
  12. package/dist/cjs/chunks/button.cjs +1 -1
  13. package/dist/cjs/chunks/components.cjs +6 -0
  14. package/dist/cjs/chunks/fancy-button.cjs +1 -1
  15. package/dist/cjs/chunks/link-button.cjs +1 -1
  16. package/dist/cjs/chunks/social-button.cjs +1 -1
  17. package/dist/cjs/index.cjs +6 -0
  18. package/dist/components/breadcrumb/breadcrumb-arrow.d.ts +18 -0
  19. package/dist/components/breadcrumb/breadcrumb-item.d.ts +19 -0
  20. package/dist/components/breadcrumb/breadcrumb.d.ts +20 -0
  21. package/dist/components/breadcrumb/index.d.ts +6 -0
  22. package/dist/components/button/button.d.ts +1 -1
  23. package/dist/components/button/fancy-button.d.ts +1 -1
  24. package/dist/components/button/link-button.d.ts +1 -1
  25. package/dist/components/index.d.ts +1 -0
  26. package/dist/es/breadcrumb-arrow.js +2 -0
  27. package/dist/es/breadcrumb-item.js +2 -0
  28. package/dist/es/breadcrumb.js +2 -0
  29. package/dist/es/chunks/breadcrumb-arrow.js +41 -0
  30. package/dist/es/chunks/breadcrumb-item.js +43 -0
  31. package/dist/es/chunks/breadcrumb.js +41 -0
  32. package/dist/es/chunks/button.js +1 -1
  33. package/dist/es/chunks/components.js +6 -0
  34. package/dist/es/chunks/fancy-button.js +1 -1
  35. package/dist/es/chunks/link-button.js +1 -1
  36. package/dist/es/chunks/social-button.js +1 -1
  37. package/dist/es/index.js +4 -1
  38. package/package.json +3 -3
  39. package/src/components/breadcrumb/breadcrumb-arrow.vue +48 -0
  40. package/src/components/breadcrumb/breadcrumb-item.vue +55 -0
  41. package/src/components/breadcrumb/breadcrumb.vue +33 -0
  42. package/src/components/breadcrumb/index.ts +8 -0
  43. package/src/components/breadcrumb/stories/breadcrumb.stories.ts +78 -0
  44. package/src/components/button/button.vue +1 -0
  45. package/src/components/button/fancy-button.vue +1 -0
  46. package/src/components/button/link-button.vue +1 -0
  47. package/src/components/button/social-button.vue +1 -0
  48. package/src/components/index.ts +1 -0
@@ -0,0 +1,48 @@
1
+ <script setup lang="ts">
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import clsx from 'clsx';
5
+ import { Primitive } from 'reka-ui';
6
+
7
+ export interface BreadcrumbArrowProps extends PrimitiveProps {
8
+ class?: HTMLAttributes['class'];
9
+ }
10
+
11
+ const props = defineProps<BreadcrumbArrowProps>();
12
+ </script>
13
+
14
+ <template>
15
+ <Primitive
16
+ :as
17
+ :as-child
18
+ aria-hidden="true"
19
+ data-slot="breadcrumb-arrow"
20
+ :class="clsx('celeste-breadcrumb-arrow', props.class)"
21
+ >
22
+ <slot>
23
+ <i class="i-celeste-arrow-right-s-line" />
24
+ </slot>
25
+ </Primitive>
26
+ </template>
27
+
28
+ <style lang="scss" scoped>
29
+ .celeste-breadcrumb-arrow {
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ width: 20px;
34
+ height: 20px;
35
+ color: var(--color-text-disabled-300);
36
+ font: var(--paragraph-md);
37
+ user-select: none;
38
+
39
+ &:deep(i) {
40
+ width: 20px;
41
+ height: 20px;
42
+ }
43
+
44
+ &:dir(rtl):deep(i) {
45
+ transform: scaleX(-1);
46
+ }
47
+ }
48
+ </style>
@@ -0,0 +1,55 @@
1
+ <script setup lang="ts">
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import clsx from 'clsx';
5
+ import { Primitive } from 'reka-ui';
6
+
7
+ export interface BreadcrumbItemProps extends PrimitiveProps {
8
+ class?: HTMLAttributes['class'];
9
+ active?: boolean;
10
+ }
11
+
12
+ const props = defineProps<BreadcrumbItemProps>();
13
+ </script>
14
+
15
+ <template>
16
+ <Primitive
17
+ :as
18
+ :as-child
19
+ :aria-current="active ? 'page' : undefined"
20
+ data-slot="breadcrumb-item"
21
+ :class="clsx('celeste-breadcrumb-item', active && 'celeste-breadcrumb-item-active', props.class)"
22
+ >
23
+ <slot />
24
+ </Primitive>
25
+ </template>
26
+
27
+ <style lang="scss" scoped>
28
+ .celeste-breadcrumb-item {
29
+ display: flex;
30
+ align-items: center;
31
+ transition-property: color, text-decoration-color;
32
+ transition-duration: var(--animation-fast);
33
+ transition-timing-function: ease-out;
34
+ color: var(--color-text-sub-600);
35
+ font: var(--label-sm);
36
+ text-decoration: underline transparent;
37
+ gap: var(--spacing-6);
38
+
39
+ &:deep(i) {
40
+ width: 20px;
41
+ height: 20px;
42
+ }
43
+
44
+ &:hover {
45
+ color: var(--color-text-strong-950);
46
+ text-decoration-color: currentcolor;
47
+ }
48
+
49
+ &-active,
50
+ &-active:hover {
51
+ color: var(--color-text-strong-950);
52
+ text-decoration-color: transparent;
53
+ }
54
+ }
55
+ </style>
@@ -0,0 +1,33 @@
1
+ <script setup lang="ts">
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import clsx from 'clsx';
5
+ import { Primitive } from 'reka-ui';
6
+
7
+ export interface BreadcrumbProps extends PrimitiveProps {
8
+ class?: HTMLAttributes['class'];
9
+ }
10
+
11
+ const props = withDefaults(defineProps<BreadcrumbProps>(), { as: 'nav' });
12
+ </script>
13
+
14
+ <template>
15
+ <Primitive
16
+ :as
17
+ :as-child
18
+ aria-label="Breadcrumb"
19
+ data-slot="breadcrumb"
20
+ :class="clsx('celeste-breadcrumb', props.class)"
21
+ >
22
+ <slot />
23
+ </Primitive>
24
+ </template>
25
+
26
+ <style scoped>
27
+ .celeste-breadcrumb {
28
+ display: flex;
29
+ flex-wrap: wrap;
30
+ align-items: center;
31
+ gap: var(--spacing-6);
32
+ }
33
+ </style>
@@ -0,0 +1,8 @@
1
+ export * from './breadcrumb-arrow.vue';
2
+ export { default as BreadcrumbArrow } from './breadcrumb-arrow.vue';
3
+
4
+ export * from './breadcrumb-item.vue';
5
+ export { default as BreadcrumbItem } from './breadcrumb-item.vue';
6
+
7
+ export * from './breadcrumb.vue';
8
+ export { default as Breadcrumb } from './breadcrumb.vue';
@@ -0,0 +1,78 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import BreadcrumbArrow from '../breadcrumb-arrow.vue';
3
+ import BreadcrumbItem from '../breadcrumb-item.vue';
4
+ import Breadcrumb from '../breadcrumb.vue';
5
+
6
+ const meta: Meta<typeof Breadcrumb> = {
7
+ title: 'Components/Breadcrumb',
8
+ component: Breadcrumb,
9
+ };
10
+
11
+ export default meta;
12
+
13
+ type Story = StoryObj<typeof Breadcrumb>;
14
+
15
+ export const Default: Story = {
16
+ render: () => ({
17
+ components: { Breadcrumb, BreadcrumbItem, BreadcrumbArrow },
18
+ template: `
19
+ <Breadcrumb>
20
+ <BreadcrumbItem>
21
+ <i class="i-celeste-home-6-line" />
22
+ </BreadcrumbItem>
23
+ <BreadcrumbArrow />
24
+ <BreadcrumbItem>Blogs</BreadcrumbItem>
25
+ <BreadcrumbArrow />
26
+ <BreadcrumbItem active>The Power of Minimalism in Design</BreadcrumbItem>
27
+ </Breadcrumb>
28
+ `,
29
+ }),
30
+ };
31
+
32
+ export const AsLink: Story = {
33
+ render: () => ({
34
+ components: { Breadcrumb, BreadcrumbItem, BreadcrumbArrow },
35
+ template: `
36
+ <Breadcrumb>
37
+ <BreadcrumbItem as="a" href="#">
38
+ <i class="i-celeste-settings-2-line" />
39
+ Settings
40
+ </BreadcrumbItem>
41
+ <BreadcrumbArrow />
42
+ <BreadcrumbItem as="a" href="#">
43
+ <i class="i-celeste-notification-3-line" />
44
+ Notifications
45
+ </BreadcrumbItem>
46
+ <BreadcrumbArrow />
47
+ <BreadcrumbItem as="a" href="#" active>
48
+ <i class="i-celeste-mail-open-line" />
49
+ Email Notifications
50
+ </BreadcrumbItem>
51
+ </Breadcrumb>
52
+ `,
53
+ }),
54
+ };
55
+
56
+ export const SlashSeparator: Story = {
57
+ render: () => ({
58
+ components: { Breadcrumb, BreadcrumbItem, BreadcrumbArrow },
59
+ template: `
60
+ <Breadcrumb>
61
+ <BreadcrumbItem as="a" href="#">
62
+ <i class="i-celeste-settings-2-line" />
63
+ Settings
64
+ </BreadcrumbItem>
65
+ <BreadcrumbArrow>/</BreadcrumbArrow>
66
+ <BreadcrumbItem as="a" href="#">
67
+ <i class="i-celeste-notification-3-line" />
68
+ Notifications
69
+ </BreadcrumbItem>
70
+ <BreadcrumbArrow>/</BreadcrumbArrow>
71
+ <BreadcrumbItem as="a" href="#" active>
72
+ <i class="i-celeste-mail-open-line" />
73
+ Email Notifications
74
+ </BreadcrumbItem>
75
+ </Breadcrumb>
76
+ `,
77
+ }),
78
+ };
@@ -227,6 +227,7 @@ $hover-map: (
227
227
  background-color: transparent;
228
228
  font: var(--label-sm);
229
229
  text-decoration: none;
230
+ white-space: nowrap;
230
231
  cursor: pointer;
231
232
 
232
233
  &:disabled {
@@ -93,6 +93,7 @@ $intent-map: (
93
93
  background-color: transparent;
94
94
  font: var(--label-sm);
95
95
  text-decoration: none;
96
+ white-space: nowrap;
96
97
  cursor: pointer;
97
98
 
98
99
  &:disabled {
@@ -47,6 +47,7 @@ const props = withDefaults(defineProps<LinkButtonProps>(), {
47
47
  transition-duration: var(--animation-fast);
48
48
  transition-timing-function: ease-out;
49
49
  text-decoration: none;
50
+ white-space: nowrap;
50
51
  cursor: pointer;
51
52
 
52
53
  &:disabled,
@@ -80,6 +80,7 @@ $brand-map: (
80
80
  border-radius: var(--radius-10);
81
81
  font: var(--label-sm);
82
82
  text-decoration: none;
83
+ white-space: nowrap;
83
84
  cursor: pointer;
84
85
  gap: var(--spacing-8);
85
86
 
@@ -1,5 +1,6 @@
1
1
  export * from './alert';
2
2
  export * from './badge';
3
+ export * from './breadcrumb';
3
4
  export * from './button';
4
5
  export * from './calendar';
5
6
  export * from './chart';