@youcan/celeste 0.13.0 → 0.14.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 (65) hide show
  1. package/ai/component-registry.json +49 -2
  2. package/ai/component-registry.md +24 -2
  3. package/ai/icons.md +1 -1
  4. package/ai/tokens.md +1 -1
  5. package/dist/celeste.css +299 -86
  6. package/dist/cjs/chunks/calendar.cjs +71 -72
  7. package/dist/cjs/chunks/combobox-root.cjs +6 -6
  8. package/dist/cjs/chunks/components.cjs +2 -0
  9. package/dist/cjs/chunks/digit-input.cjs +13 -12
  10. package/dist/cjs/chunks/dropdown-menu.cjs +9 -6
  11. package/dist/cjs/chunks/mochi.cjs +168 -0
  12. package/dist/cjs/chunks/radio-group.cjs +4 -8
  13. package/dist/cjs/chunks/range-calendar.cjs +71 -72
  14. package/dist/cjs/chunks/scroll-area.cjs +16 -17
  15. package/dist/cjs/chunks/segmented-control.cjs +20 -21
  16. package/dist/cjs/chunks/select.cjs +8 -5
  17. package/dist/cjs/chunks/slider.cjs +14 -15
  18. package/dist/cjs/chunks/tab-menu.cjs +8 -9
  19. package/dist/cjs/command-root.cjs +8 -5
  20. package/dist/cjs/index.cjs +2 -0
  21. package/dist/cjs/mochi.cjs +2 -0
  22. package/dist/cjs/use-direction.cjs +4 -4
  23. package/dist/components/index.d.ts +1 -0
  24. package/dist/components/mochi/index.d.ts +2 -0
  25. package/dist/components/mochi/mochi.d.ts +22 -0
  26. package/dist/components/radio-group/radio-group.d.ts +2 -2
  27. package/dist/components/scroll-area/scroll-area.d.ts +2 -2
  28. package/dist/components/segmented-control/segmented-control.d.ts +2 -2
  29. package/dist/components/tab-menu/tab-menu.d.ts +2 -2
  30. package/dist/composables/use-direction.d.ts +2 -2
  31. package/dist/es/chunks/calendar.js +71 -72
  32. package/dist/es/chunks/combobox-root.js +6 -6
  33. package/dist/es/chunks/components.js +2 -0
  34. package/dist/es/chunks/digit-input.js +14 -13
  35. package/dist/es/chunks/dropdown-menu.js +9 -6
  36. package/dist/es/chunks/mochi.js +162 -0
  37. package/dist/es/chunks/radio-group.js +5 -9
  38. package/dist/es/chunks/range-calendar.js +71 -72
  39. package/dist/es/chunks/scroll-area.js +16 -17
  40. package/dist/es/chunks/segmented-control.js +21 -22
  41. package/dist/es/chunks/select.js +8 -5
  42. package/dist/es/chunks/slider.js +14 -15
  43. package/dist/es/chunks/tab-menu.js +9 -10
  44. package/dist/es/command-root.js +8 -5
  45. package/dist/es/index.js +2 -1
  46. package/dist/es/mochi.js +2 -0
  47. package/dist/es/use-direction.js +5 -5
  48. package/package.json +3 -3
  49. package/src/components/calendar/calendar.vue +62 -64
  50. package/src/components/combobox/combobox-root.vue +9 -5
  51. package/src/components/command/command-root.vue +10 -9
  52. package/src/components/digit-input/digit-input.vue +10 -11
  53. package/src/components/dropdown-menu/dropdown-menu.vue +9 -8
  54. package/src/components/index.ts +1 -0
  55. package/src/components/mochi/index.ts +2 -0
  56. package/src/components/mochi/mochi.vue +480 -0
  57. package/src/components/mochi/stories/mochi.stories.ts +105 -0
  58. package/src/components/radio-group/radio-group.vue +9 -10
  59. package/src/components/range-calendar/range-calendar.vue +63 -65
  60. package/src/components/scroll-area/scroll-area.vue +14 -15
  61. package/src/components/segmented-control/segmented-control.vue +20 -21
  62. package/src/components/select/select.vue +9 -8
  63. package/src/components/slider/slider.vue +16 -17
  64. package/src/components/tab-menu/tab-menu.vue +9 -10
  65. package/src/composables/use-direction.ts +6 -6
@@ -15,7 +15,6 @@ import {
15
15
  CalendarNext,
16
16
  CalendarPrev,
17
17
  CalendarRoot,
18
- ConfigProvider,
19
18
  useForwardPropsEmits,
20
19
  } from 'reka-ui';
21
20
  import { useDelegatedProps } from '@/composables/use-delegated-props';
@@ -37,7 +36,7 @@ const emits = defineEmits<CalendarRootEmits>();
37
36
  const delegatedProps = useDelegatedProps(props, ['class', 'markedDates']);
38
37
  const forwarded = useForwardPropsEmits(delegatedProps, emits);
39
38
 
40
- const direction = useDirection();
39
+ const dir = useDirection(() => props.dir);
41
40
 
42
41
  function isMarked(date: DateValue): boolean {
43
42
  return props.markedDates?.some(marked => isEqualDay(marked, date)) ?? false;
@@ -49,70 +48,69 @@ function weekdayLabel(day: string): string {
49
48
  </script>
50
49
 
51
50
  <template>
52
- <ConfigProvider :dir="props.dir ?? direction">
53
- <CalendarRoot
54
- v-slot="{ weekDays, grid }"
55
- v-bind="forwarded"
56
- :class="clsx('celeste-calendar', props.class)"
57
- >
58
- <div class="celeste-calendar-header">
59
- <CalendarPrev as-child>
60
- <button type="button" class="celeste-calendar-nav">
61
- <i class="i-celeste-arrow-left-s-line" />
62
- </button>
63
- </CalendarPrev>
64
- <CalendarHeading class="celeste-calendar-heading" />
65
- <CalendarNext as-child>
66
- <button type="button" class="celeste-calendar-nav">
67
- <i class="i-celeste-arrow-right-s-line" />
68
- </button>
69
- </CalendarNext>
70
- </div>
71
-
72
- <div class="celeste-calendar-months">
73
- <CalendarGrid
74
- v-for="month in grid"
75
- :key="month.value.toString()"
76
- class="celeste-calendar-grid"
77
- >
78
- <CalendarGridHead>
79
- <CalendarGridRow class="celeste-calendar-week">
80
- <CalendarHeadCell
81
- v-for="day in weekDays"
82
- :key="day"
83
- class="celeste-calendar-weekday"
84
- >
85
- {{ weekdayLabel(day) }}
86
- </CalendarHeadCell>
87
- </CalendarGridRow>
88
- </CalendarGridHead>
89
- <CalendarGridBody class="celeste-calendar-body">
90
- <CalendarGridRow
91
- v-for="(weekDates, index) in month.rows"
92
- :key="`week-${index}`"
93
- class="celeste-calendar-week"
51
+ <CalendarRoot
52
+ v-slot="{ weekDays, grid }"
53
+ v-bind="forwarded"
54
+ :class="clsx('celeste-calendar', props.class)"
55
+ :dir="dir"
56
+ >
57
+ <div class="celeste-calendar-header">
58
+ <CalendarPrev as-child>
59
+ <button type="button" class="celeste-calendar-nav">
60
+ <i class="i-celeste-arrow-left-s-line" />
61
+ </button>
62
+ </CalendarPrev>
63
+ <CalendarHeading class="celeste-calendar-heading" />
64
+ <CalendarNext as-child>
65
+ <button type="button" class="celeste-calendar-nav">
66
+ <i class="i-celeste-arrow-right-s-line" />
67
+ </button>
68
+ </CalendarNext>
69
+ </div>
70
+
71
+ <div class="celeste-calendar-months">
72
+ <CalendarGrid
73
+ v-for="month in grid"
74
+ :key="month.value.toString()"
75
+ class="celeste-calendar-grid"
76
+ >
77
+ <CalendarGridHead>
78
+ <CalendarGridRow class="celeste-calendar-week">
79
+ <CalendarHeadCell
80
+ v-for="day in weekDays"
81
+ :key="day"
82
+ class="celeste-calendar-weekday"
83
+ >
84
+ {{ weekdayLabel(day) }}
85
+ </CalendarHeadCell>
86
+ </CalendarGridRow>
87
+ </CalendarGridHead>
88
+ <CalendarGridBody class="celeste-calendar-body">
89
+ <CalendarGridRow
90
+ v-for="(weekDates, index) in month.rows"
91
+ :key="`week-${index}`"
92
+ class="celeste-calendar-week"
93
+ >
94
+ <CalendarCell
95
+ v-for="weekDate in weekDates"
96
+ :key="weekDate.toString()"
97
+ :date="weekDate"
98
+ class="celeste-calendar-cell"
94
99
  >
95
- <CalendarCell
96
- v-for="weekDate in weekDates"
97
- :key="weekDate.toString()"
98
- :date="weekDate"
99
- class="celeste-calendar-cell"
100
+ <CalendarCellTrigger
101
+ :day="weekDate"
102
+ :month="month.value"
103
+ class="celeste-calendar-day"
104
+ :data-marked="isMarked(weekDate) ? '' : undefined"
100
105
  >
101
- <CalendarCellTrigger
102
- :day="weekDate"
103
- :month="month.value"
104
- class="celeste-calendar-day"
105
- :data-marked="isMarked(weekDate) ? '' : undefined"
106
- >
107
- <span class="celeste-calendar-day-number">{{ weekDate.day }}</span>
108
- </CalendarCellTrigger>
109
- </CalendarCell>
110
- </CalendarGridRow>
111
- </CalendarGridBody>
112
- </CalendarGrid>
113
- </div>
114
- </CalendarRoot>
115
- </ConfigProvider>
106
+ <span class="celeste-calendar-day-number">{{ weekDate.day }}</span>
107
+ </CalendarCellTrigger>
108
+ </CalendarCell>
109
+ </CalendarGridRow>
110
+ </CalendarGridBody>
111
+ </CalendarGrid>
112
+ </div>
113
+ </CalendarRoot>
116
114
  </template>
117
115
 
118
116
  <style scoped lang="scss">
@@ -8,15 +8,19 @@ const emits = defineEmits<ComboboxRootEmits>();
8
8
 
9
9
  const forwarded = useForwardPropsEmits(props, emits);
10
10
 
11
- const direction = useDirection();
11
+ const dir = useDirection(() => props.dir);
12
12
  </script>
13
13
 
14
14
  <template>
15
- <ConfigProvider :dir="props.dir ?? direction">
16
- <ComboboxRoot class="celeste-combobox-root" v-bind="forwarded">
15
+ <ComboboxRoot
16
+ class="celeste-combobox-root"
17
+ v-bind="forwarded"
18
+ :dir="dir"
19
+ >
20
+ <ConfigProvider :dir="dir">
17
21
  <slot />
18
- </ComboboxRoot>
19
- </ConfigProvider>
22
+ </ConfigProvider>
23
+ </ComboboxRoot>
20
24
  </template>
21
25
 
22
26
  <style lang="scss" scoped>
@@ -20,19 +20,20 @@ const delegatedProps = computed(() => {
20
20
 
21
21
  const forwarded = useForwardPropsEmits(delegatedProps, emits);
22
22
 
23
- const direction = useDirection();
23
+ const dir = useDirection(() => props.dir);
24
24
  </script>
25
25
 
26
26
  <template>
27
- <ConfigProvider :dir="props.dir ?? direction">
28
- <ComboboxRoot
29
- v-bind="forwarded"
30
- class="celeste-command-root"
31
- :class="props.class"
32
- >
27
+ <ComboboxRoot
28
+ v-bind="forwarded"
29
+ class="celeste-command-root"
30
+ :class="props.class"
31
+ :dir="dir"
32
+ >
33
+ <ConfigProvider :dir="dir">
33
34
  <slot />
34
- </ComboboxRoot>
35
- </ConfigProvider>
35
+ </ConfigProvider>
36
+ </ComboboxRoot>
36
37
  </template>
37
38
 
38
39
  <style>
@@ -3,7 +3,7 @@ import type { PinInputRootEmits, PinInputRootProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import { reactiveOmit } from '@vueuse/core';
5
5
  import clsx from 'clsx';
6
- import { ConfigProvider, PinInputRoot, useForwardPropsEmits } from 'reka-ui';
6
+ import { PinInputRoot, useForwardPropsEmits } from 'reka-ui';
7
7
  import { useDirection } from '@/composables/use-direction';
8
8
 
9
9
  export type PinInputType = 'text' | 'number';
@@ -21,19 +21,18 @@ const delegatedProps = reactiveOmit(props, 'class', 'hasError');
21
21
 
22
22
  const forwarded = useForwardPropsEmits(delegatedProps, emits);
23
23
 
24
- const direction = useDirection();
24
+ const dir = useDirection(() => props.dir);
25
25
  </script>
26
26
 
27
27
  <template>
28
- <ConfigProvider :dir="props.dir ?? direction">
29
- <PinInputRoot
30
- v-bind="forwarded"
31
- :class="clsx('celeste-digit-input', props.class)"
32
- :data-error="hasError"
33
- >
34
- <slot />
35
- </PinInputRoot>
36
- </ConfigProvider>
28
+ <PinInputRoot
29
+ v-bind="forwarded"
30
+ :class="clsx('celeste-digit-input', props.class)"
31
+ :data-error="hasError"
32
+ :dir="dir"
33
+ >
34
+ <slot />
35
+ </PinInputRoot>
37
36
  </template>
38
37
 
39
38
  <style scoped lang="scss">
@@ -12,18 +12,19 @@ const emits = defineEmits<DropdownMenuRootEmits>();
12
12
  const delegatedProps = useDelegatedProps(props, 'class');
13
13
  const forwarded = useForwardPropsEmits(delegatedProps, emits);
14
14
 
15
- const direction = useDirection();
15
+ const dir = useDirection(() => props.dir);
16
16
  </script>
17
17
 
18
18
  <template>
19
- <ConfigProvider :dir="props.dir ?? direction">
20
- <DropdownMenuRoot
21
- v-bind="forwarded"
22
- :class="clsx('celeste-dropdown-menu', props.class)"
23
- >
19
+ <DropdownMenuRoot
20
+ v-bind="forwarded"
21
+ :class="clsx('celeste-dropdown-menu', props.class)"
22
+ :dir="dir"
23
+ >
24
+ <ConfigProvider :dir="dir">
24
25
  <slot />
25
- </DropdownMenuRoot>
26
- </ConfigProvider>
26
+ </ConfigProvider>
27
+ </DropdownMenuRoot>
27
28
  </template>
28
29
 
29
30
  <style lang="scss" scoped>
@@ -15,6 +15,7 @@ export * from './dropdown-menu';
15
15
  export * from './file-upload';
16
16
  export * from './hint-text';
17
17
  export * from './label';
18
+ export * from './mochi';
18
19
  export * from './modal';
19
20
  export * from './pagination';
20
21
  export * from './popover';
@@ -0,0 +1,2 @@
1
+ export * from './mochi.vue';
2
+ export { default as Mochi } from './mochi.vue';