@svelte-atoms/core 1.0.0-alpha.29 → 1.0.0-alpha.31

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 (176) hide show
  1. package/README.md +3 -2
  2. package/dist/attachments/clickout.svelte.d.ts +1 -1
  3. package/dist/attachments/clickout.svelte.js +2 -2
  4. package/dist/components/accordion/accordion-root.svelte +65 -61
  5. package/dist/components/accordion/accordion-root.svelte.d.ts +1 -1
  6. package/dist/components/accordion/accordion.stories.svelte +70 -134
  7. package/dist/components/accordion/item/accordion-item-body.svelte +44 -42
  8. package/dist/components/accordion/item/accordion-item-header.svelte +51 -50
  9. package/dist/components/accordion/item/accordion-item-indicator.svelte +51 -50
  10. package/dist/components/accordion/item/accordion-item-root.svelte +66 -65
  11. package/dist/components/accordion/item/bond.svelte.d.ts +2 -0
  12. package/dist/components/accordion/item/index.d.ts +3 -0
  13. package/dist/components/accordion/item/index.js +3 -0
  14. package/dist/components/accordion/item/motion.svelte.d.ts +15 -0
  15. package/dist/components/accordion/item/motion.svelte.js +30 -0
  16. package/dist/components/accordion/item/types.d.ts +7 -24
  17. package/dist/components/alert/alert-close-button.svelte +66 -70
  18. package/dist/components/alert/alert-description.svelte +42 -42
  19. package/dist/components/alert/alert-description.svelte.d.ts +3 -6
  20. package/dist/components/alert/alert-root.svelte +68 -103
  21. package/dist/components/alert/alert-root.svelte.d.ts +2 -2
  22. package/dist/components/alert/alert.stories.svelte +10 -11
  23. package/dist/components/alert/bond.svelte.d.ts +0 -13
  24. package/dist/components/alert/bond.svelte.js +0 -32
  25. package/dist/components/alert/types.d.ts +8 -32
  26. package/dist/components/atom/html-atom.svelte +261 -207
  27. package/dist/components/avatar/avatar.stories.svelte +8 -13
  28. package/dist/components/badge/badge.stories.svelte +1 -6
  29. package/dist/components/badge/badge.svelte +1 -1
  30. package/dist/components/breadcrumb/breadcrumb.stories.svelte +16 -21
  31. package/dist/components/button/button.stories.svelte +1 -34
  32. package/dist/components/calendar/calendar-day.svelte +9 -4
  33. package/dist/components/calendar/calendar-header.svelte +29 -29
  34. package/dist/components/calendar/calendar-root.svelte +206 -206
  35. package/dist/components/calendar/calendar.stories.svelte +26 -31
  36. package/dist/components/card/card-body.svelte +1 -1
  37. package/dist/components/card/card-footer.svelte +1 -1
  38. package/dist/components/card/card-root.svelte +1 -1
  39. package/dist/components/card/card.stories.svelte +92 -104
  40. package/dist/components/checkbox/checkbox.stories.svelte +4 -9
  41. package/dist/components/checkbox/checkbox.svelte +159 -157
  42. package/dist/components/collapsible/collapsible.stories.svelte +2 -3
  43. package/dist/components/combobox/atoms.d.ts +1 -1
  44. package/dist/components/combobox/atoms.js +1 -1
  45. package/dist/components/combobox/combobox-root.svelte +1 -1
  46. package/dist/components/combobox/compobox.stories.svelte +19 -22
  47. package/dist/components/combobox/index.d.ts +1 -0
  48. package/dist/components/container/container.stories.svelte +8 -11
  49. package/dist/components/container/container.svelte.d.ts +1 -1
  50. package/dist/components/datagrid/datagrid-root.svelte +59 -59
  51. package/dist/components/datagrid/datagrid.css +5 -5
  52. package/dist/components/datagrid/datagrid.stories.svelte +47 -50
  53. package/dist/components/datagrid/tr/bond.svelte.d.ts +4 -2
  54. package/dist/components/datagrid/tr/bond.svelte.js +9 -7
  55. package/dist/components/datagrid/tr/datagrid-tr.svelte +90 -88
  56. package/dist/components/date-picker/date-picker-calendar.svelte +2 -2
  57. package/dist/components/date-picker/date-picker-header.svelte +100 -100
  58. package/dist/components/date-picker/date-picker-months.svelte +142 -142
  59. package/dist/components/date-picker/date-picker-root.svelte +95 -95
  60. package/dist/components/date-picker/date-picker-years.svelte +205 -205
  61. package/dist/components/date-picker/date-picker.stories.svelte +35 -42
  62. package/dist/components/dialog/bond.svelte.d.ts +13 -3
  63. package/dist/components/dialog/bond.svelte.js +66 -5
  64. package/dist/components/dialog/dialog-content.svelte +2 -20
  65. package/dist/components/dialog/dialog-root.svelte +91 -110
  66. package/dist/components/dialog/dialog.stories.svelte +34 -37
  67. package/dist/components/dialog/motion.svelte.d.ts +13 -0
  68. package/dist/components/dialog/motion.svelte.js +44 -0
  69. package/dist/components/drawer/attachments.svelte.d.ts +1 -1
  70. package/dist/components/drawer/attachments.svelte.js +7 -10
  71. package/dist/components/drawer/bond.svelte.d.ts +24 -5
  72. package/dist/components/drawer/bond.svelte.js +77 -11
  73. package/dist/components/drawer/drawer-content.svelte +49 -42
  74. package/dist/components/drawer/drawer.stories.svelte +144 -224
  75. package/dist/components/drawer/index.d.ts +2 -0
  76. package/dist/components/drawer/index.js +2 -0
  77. package/dist/components/drawer/motion.d.ts +15 -0
  78. package/dist/components/drawer/motion.js +28 -0
  79. package/dist/components/dropdown/atoms.d.ts +1 -1
  80. package/dist/components/dropdown/atoms.js +1 -1
  81. package/dist/components/dropdown/bond.svelte.d.ts +5 -1
  82. package/dist/components/dropdown/dropdown-root.svelte +1 -1
  83. package/dist/components/dropdown/dropdown.stories.svelte +38 -41
  84. package/dist/components/dropdown/index.d.ts +1 -0
  85. package/dist/components/form/form.stories.svelte +58 -61
  86. package/dist/components/image/image.stories.svelte +9 -12
  87. package/dist/components/input/input.stories.svelte +11 -14
  88. package/dist/components/label/label.stories.svelte +1 -12
  89. package/dist/components/label/label.stories.svelte.d.ts +24 -4
  90. package/dist/components/lazy/lazy.stories.svelte +28 -35
  91. package/dist/components/lazy/lazy.svelte +28 -28
  92. package/dist/components/link/link.stories.svelte +1 -12
  93. package/dist/components/link/link.stories.svelte.d.ts +24 -4
  94. package/dist/components/list/list-item.svelte +20 -20
  95. package/dist/components/menu/atoms.d.ts +1 -0
  96. package/dist/components/menu/atoms.js +1 -0
  97. package/dist/components/menu/index.d.ts +2 -1
  98. package/dist/components/menu/index.js +1 -1
  99. package/dist/components/menu/menu-item.svelte +69 -51
  100. package/dist/components/menu/menu-item.svelte.d.ts +1 -0
  101. package/dist/components/menu/menu-list.svelte +40 -40
  102. package/dist/components/menu/menu.stories.svelte +9 -12
  103. package/dist/components/popover/bond.svelte.d.ts +20 -7
  104. package/dist/components/popover/bond.svelte.js +104 -45
  105. package/dist/components/popover/motion.d.ts +6 -0
  106. package/dist/components/popover/motion.js +56 -0
  107. package/dist/components/popover/popover-arrow.svelte +4 -4
  108. package/dist/components/popover/popover-content.svelte +137 -178
  109. package/dist/components/popover/popover-indicator.svelte +2 -1
  110. package/dist/components/popover/popover-root.svelte +1 -1
  111. package/dist/components/popover/popover.stories.svelte +49 -52
  112. package/dist/components/popover/types.d.ts +9 -7
  113. package/dist/components/portal/active-portal.svelte +29 -22
  114. package/dist/components/portal/active-portal.svelte.d.ts +2 -9
  115. package/dist/components/portal/portal-root.svelte +76 -83
  116. package/dist/components/portal/portal-root.svelte.d.ts +4 -6
  117. package/dist/components/portal/teleport.svelte +49 -50
  118. package/dist/components/portal/teleport.svelte.d.ts +3 -4
  119. package/dist/components/qr-code/qr-code.stories.svelte +18 -27
  120. package/dist/components/qr-code/qr-code.svelte +75 -75
  121. package/dist/components/radio/radio-group.stories.svelte +21 -30
  122. package/dist/components/radio/radio.stories.svelte +1 -10
  123. package/dist/components/radio/radio.svelte +109 -109
  124. package/dist/components/radio/types.d.ts +98 -0
  125. package/dist/components/radio/types.js +2 -0
  126. package/dist/components/root/root.svelte +104 -121
  127. package/dist/components/scrollable/scrollable-root.svelte.d.ts +2 -2
  128. package/dist/components/scrollable/scrollable.stories.svelte +95 -105
  129. package/dist/components/sidebar/index.d.ts +2 -0
  130. package/dist/components/sidebar/index.js +2 -0
  131. package/dist/components/sidebar/motion.svelte.d.ts +11 -0
  132. package/dist/components/sidebar/motion.svelte.js +16 -0
  133. package/dist/components/sidebar/sidebar-content.svelte +3 -2
  134. package/dist/components/sidebar/sidebar-root.svelte +39 -41
  135. package/dist/components/sidebar/sidebar.stories.svelte +43 -54
  136. package/dist/components/sidebar/types.d.ts +3 -12
  137. package/dist/components/tabs/tab/bond.svelte.d.ts +4 -1
  138. package/dist/components/tabs/tab/bond.svelte.js +4 -1
  139. package/dist/components/tabs/tabs.stories.svelte +31 -34
  140. package/dist/components/textarea/atoms.d.ts +1 -0
  141. package/dist/components/textarea/atoms.js +1 -0
  142. package/dist/components/textarea/textarea-input.svelte +9 -6
  143. package/dist/components/textarea/textarea-root.svelte +9 -9
  144. package/dist/components/textarea/textarea-root.svelte.d.ts +2 -0
  145. package/dist/components/tooltip/tooltip-trigger.svelte +39 -37
  146. package/dist/components/tooltip/tooltip-trigger.svelte.d.ts +1 -0
  147. package/dist/components/tooltip/tooltip.stories.svelte +7 -10
  148. package/dist/components/tree/tree.stories.svelte +102 -94
  149. package/dist/context/preset.svelte.d.ts +3 -3
  150. package/dist/icons/icon-copy.svelte +6 -0
  151. package/dist/{components/radio/types.svelte.d.ts → icons/icon-copy.svelte.d.ts} +3 -3
  152. package/dist/utils/function.d.ts +2 -0
  153. package/dist/utils/function.js +6 -0
  154. package/dist/utils/markdown-to-llm.d.ts +28 -0
  155. package/dist/utils/markdown-to-llm.js +76 -0
  156. package/package.json +6 -10
  157. package/dist/actions/animation.svelte.d.ts +0 -6
  158. package/dist/actions/animation.svelte.js +0 -14
  159. package/dist/actions/clickout.svelte.d.ts +0 -2
  160. package/dist/actions/clickout.svelte.js +0 -15
  161. package/dist/actions/popover.svelte.d.ts +0 -19
  162. package/dist/actions/popover.svelte.js +0 -81
  163. package/dist/actions/portal.svelte.d.ts +0 -8
  164. package/dist/actions/portal.svelte.js +0 -32
  165. package/dist/attachments/gsap.svelte.d.ts +0 -2
  166. package/dist/attachments/gsap.svelte.js +0 -26
  167. package/dist/components/radio/types.svelte +0 -0
  168. package/llm/composition.md +0 -395
  169. package/llm/crafting.md +0 -838
  170. package/llm/motion.md +0 -970
  171. package/llm/philosophy.md +0 -23
  172. package/llm/preset-variant-integration.md +0 -516
  173. package/llm/preset.md +0 -383
  174. package/llm/styling.md +0 -216
  175. package/llm/usage.md +0 -46
  176. package/llm/variants.md +0 -1259
@@ -1,29 +1,29 @@
1
- <script lang="ts">
2
- import { cn } from '../../utils';
3
- import { HtmlAtom } from '../atom';
4
- import { CalendarBond } from './bond.svelte';
5
- import CalendarWeekDay from './calendar-week-day.svelte';
6
-
7
- const calendarBond = CalendarBond.get();
8
- const currentMonth = $derived(calendarBond?.state.props.currentMonth);
9
-
10
- let { class: klass = '', preset = 'calendar.header', ...restProps } = $props();
11
-
12
- const headerProps = $derived({
13
- ...calendarBond?.header(),
14
- ...restProps
15
- });
16
- </script>
17
-
18
- <HtmlAtom
19
- {preset}
20
- class={cn(
21
- 'calendar-header border-border col-span-full grid h-fit grid-cols-subgrid border-b',
22
- klass
23
- )}
24
- {...headerProps}
25
- >
26
- {#each (currentMonth?.days ?? []).filter((d) => d.week == 1) as day}
27
- <CalendarWeekDay isWeekend={day.weekend}>{day.name}</CalendarWeekDay>
28
- {/each}
29
- </HtmlAtom>
1
+ <script lang="ts">
2
+ import { cn } from '../../utils';
3
+ import { HtmlAtom } from '../atom';
4
+ import { CalendarBond } from './bond.svelte';
5
+ import CalendarWeekDay from './calendar-week-day.svelte';
6
+
7
+ const calendarBond = CalendarBond.get();
8
+ const currentMonth = $derived(calendarBond?.state.props.currentMonth);
9
+
10
+ let { class: klass = '', preset = 'calendar.header', ...restProps } = $props();
11
+
12
+ const headerProps = $derived({
13
+ ...calendarBond?.header(),
14
+ ...restProps
15
+ });
16
+ </script>
17
+
18
+ <HtmlAtom
19
+ {preset}
20
+ class={cn(
21
+ 'calendar-header border-border col-span-full grid h-fit grid-cols-subgrid border-b',
22
+ klass
23
+ )}
24
+ {...headerProps}
25
+ >
26
+ {#each (currentMonth?.days ?? []).filter((d) => d.week == 1) as day}
27
+ <CalendarWeekDay isWeekend={day.weekend}>{day.name}</CalendarWeekDay>
28
+ {/each}
29
+ </HtmlAtom>
@@ -1,206 +1,206 @@
1
- <script lang="ts">
2
- import { cn, defineProperty, defineState } from '../../utils';
3
- import { addMonths, format, isToday, startOfDay, subMonths } from 'date-fns';
4
- import type { CalendarRange, CalendarRootProps, Day, Month } from './types';
5
- import { CalendarBond, CalendarBondState, type CalendarBondProps } from './bond.svelte';
6
- import { HtmlAtom } from '../atom';
7
-
8
- import './calendar.css';
9
-
10
- let {
11
- class: klass = '',
12
- preset = 'calendar',
13
- value = $bindable(),
14
- range = $bindable([undefined, undefined]),
15
- pivote = $bindable(new Date()),
16
- start = $bindable(startOfDay(new Date())),
17
- end = $bindable(),
18
- min = undefined,
19
- max = undefined,
20
- type = 'single',
21
- extend = {},
22
- onchange = undefined,
23
- factory = _factory,
24
- children = undefined,
25
- ...restProps
26
- }: CalendarRootProps = $props();
27
-
28
- const monthCurrentDays = $derived(generator(pivote));
29
-
30
- const monthCurrent: Month = $derived.by(() => {
31
- const start = monthCurrentDays.at(0) as Day;
32
- const end = monthCurrentDays.at(-1) as Day;
33
-
34
- return {
35
- start: start?.date,
36
- end: end?.date,
37
- days: monthCurrentDays,
38
- name: start ? format(start.date, 'MM') : '',
39
- fullname: start ? format(start.date, 'MMM') : ''
40
- };
41
- });
42
-
43
- const monthPreviousDays = $derived(generator(subMonths(pivote, 1)));
44
- const monthPrevious: Month = $derived.by(() => {
45
- const start = monthPreviousDays.at(0) as Day;
46
- const end = monthPreviousDays.at(-1) as Day;
47
-
48
- return {
49
- start: start?.date,
50
- end: end?.date,
51
- days: monthPreviousDays,
52
- name: start ? format(start.date, 'MM') : '',
53
- fullname: start ? format(start.date, 'MMM') : ''
54
- };
55
- });
56
-
57
- const monthNextDays = $derived(generator(addMonths(pivote, 1)));
58
-
59
- const monthNext: Month = $derived.by(() => {
60
- const start = monthNextDays.at(0) as Day;
61
- const end = monthNextDays.at(-1) as Day;
62
-
63
- return {
64
- start: start?.date,
65
- end: end?.date,
66
- days: monthNextDays,
67
- name: start ? format(start.date, 'MM') : '',
68
- fullname: start ? format(start.date, 'MMM') : ''
69
- };
70
- });
71
-
72
- function generator(pivot: Date): Day[] {
73
- const firstDay = new Date(pivot.getFullYear(), pivot.getMonth(), 1).getDay();
74
- const lastMonthDaysCount = monthDays(pivot.getMonth() - 1, pivot.getFullYear());
75
- const sample = startOfDay(
76
- new Date(pivot.getFullYear(), pivot.getMonth() - 1, lastMonthDaysCount - firstDay)
77
- );
78
-
79
- const array: Day[] = [];
80
-
81
- for (let index = 0; index < 42; index++) {
82
- sample.setDate(sample.getDate() + 1);
83
-
84
- const prec =
85
- pivot.getMonth() > sample.getMonth() || pivot.getFullYear() > sample.getFullYear();
86
- const next =
87
- (pivot.getMonth() < sample.getMonth() && pivot.getFullYear() === sample.getFullYear()) ||
88
- (pivot.getMonth() > sample.getMonth() && pivot.getFullYear() < sample.getFullYear());
89
-
90
- const disabled =
91
- (min ? sample < startOfDay(min) : false) || (max ? sample > startOfDay(max) : false);
92
-
93
- array.push({
94
- id: sample.getTime(),
95
- date: new Date(sample),
96
- get offmonth() {
97
- return next || prec;
98
- },
99
- dayOfMonth: sample.getDate(),
100
- today: isToday(sample),
101
- week: Math.floor(index / 7),
102
- month: sample.getMonth(),
103
- disabled: disabled,
104
- weekend: sample.getDay() == 0,
105
- name: format(sample, 'iii'),
106
- fullname: format(sample, 'iiiii'),
107
- get fromNextMonth() {
108
- return next;
109
- },
110
- get fromPreviousMonth() {
111
- return prec;
112
- }
113
- });
114
- }
115
-
116
- return array;
117
- }
118
-
119
- function monthDays(month: number, year = 2020) {
120
- return new Date(year, month + 1, 0).getDate();
121
- }
122
-
123
- const bondProps = defineState<CalendarBondProps>(
124
- [
125
- defineProperty(
126
- 'range',
127
- () => range,
128
- (v: CalendarRange) => {
129
- range = v;
130
- onchange?.(new CustomEvent('change'), { range, pivote });
131
- }
132
- ),
133
- defineProperty(
134
- 'value',
135
- () => range?.[0],
136
- (v) => {
137
- if (range?.[0]) {
138
- range[0] = v;
139
- }
140
- onchange?.(new CustomEvent('change'), { range, pivote });
141
- }
142
- ),
143
- defineProperty(
144
- 'pivote',
145
- () => pivote,
146
- (v: Date) => {
147
- pivote = v;
148
- onchange?.(new CustomEvent('change'), { range, pivote });
149
- }
150
- ),
151
- defineProperty(
152
- 'start',
153
- () => range?.[0],
154
- (v: Date) => {
155
- range[0] = v;
156
- onchange?.(new CustomEvent('change'), { range, pivote });
157
- }
158
- ),
159
- defineProperty(
160
- 'end',
161
- () => range?.[1],
162
- (v: Date | undefined) => {
163
- range[1] = v;
164
- onchange?.(new CustomEvent('change'), { range, pivote });
165
- }
166
- ),
167
- defineProperty(
168
- 'min',
169
- () => min,
170
- (v: Date | undefined) => (min = v)
171
- ),
172
- defineProperty(
173
- 'max',
174
- () => max,
175
- (v: Date | undefined) => (max = v)
176
- ),
177
- defineProperty('type', () => type ?? 'single'),
178
- defineProperty('nextMonth', () => monthNext),
179
- defineProperty('currentMonth', () => monthCurrent),
180
- defineProperty('previousMonth', () => monthPrevious)
181
- ],
182
- () => ({ extend })
183
- );
184
-
185
- const bond = factory(bondProps).share();
186
-
187
- const rootProps = $derived({
188
- ...bond.root(),
189
- ...restProps
190
- });
191
-
192
- function _factory(props: typeof bondProps) {
193
- const popoverState = new CalendarBondState(() => props);
194
- const popoverBond = new CalendarBond(popoverState);
195
-
196
- return popoverBond;
197
- }
198
-
199
- export function getBond() {
200
- return bond;
201
- }
202
- </script>
203
-
204
- <HtmlAtom {preset} class={cn('h-full w-full', klass)} data-atom="calendar-root" {...rootProps}>
205
- {@render children?.({ calendar: bond })}
206
- </HtmlAtom>
1
+ <script lang="ts">
2
+ import { cn, defineProperty, defineState } from '../../utils';
3
+ import { addMonths, format, isToday, startOfDay, subMonths } from 'date-fns';
4
+ import type { CalendarRange, CalendarRootProps, Day, Month } from './types';
5
+ import { CalendarBond, CalendarBondState, type CalendarBondProps } from './bond.svelte';
6
+ import { HtmlAtom } from '../atom';
7
+
8
+ import './calendar.css';
9
+
10
+ let {
11
+ class: klass = '',
12
+ preset = 'calendar',
13
+ value = $bindable(),
14
+ range = $bindable([undefined, undefined]),
15
+ pivote = $bindable(new Date()),
16
+ start = $bindable(startOfDay(new Date())),
17
+ end = $bindable(),
18
+ min = undefined,
19
+ max = undefined,
20
+ type = 'single',
21
+ extend = {},
22
+ onchange = undefined,
23
+ factory = _factory,
24
+ children = undefined,
25
+ ...restProps
26
+ }: CalendarRootProps = $props();
27
+
28
+ const monthCurrentDays = $derived(generator(pivote));
29
+
30
+ const monthCurrent: Month = $derived.by(() => {
31
+ const start = monthCurrentDays.at(0) as Day;
32
+ const end = monthCurrentDays.at(-1) as Day;
33
+
34
+ return {
35
+ start: start?.date,
36
+ end: end?.date,
37
+ days: monthCurrentDays,
38
+ name: start ? format(start.date, 'MM') : '',
39
+ fullname: start ? format(start.date, 'MMM') : ''
40
+ };
41
+ });
42
+
43
+ const monthPreviousDays = $derived(generator(subMonths(pivote, 1)));
44
+ const monthPrevious: Month = $derived.by(() => {
45
+ const start = monthPreviousDays.at(0) as Day;
46
+ const end = monthPreviousDays.at(-1) as Day;
47
+
48
+ return {
49
+ start: start?.date,
50
+ end: end?.date,
51
+ days: monthPreviousDays,
52
+ name: start ? format(start.date, 'MM') : '',
53
+ fullname: start ? format(start.date, 'MMM') : ''
54
+ };
55
+ });
56
+
57
+ const monthNextDays = $derived(generator(addMonths(pivote, 1)));
58
+
59
+ const monthNext: Month = $derived.by(() => {
60
+ const start = monthNextDays.at(0) as Day;
61
+ const end = monthNextDays.at(-1) as Day;
62
+
63
+ return {
64
+ start: start?.date,
65
+ end: end?.date,
66
+ days: monthNextDays,
67
+ name: start ? format(start.date, 'MM') : '',
68
+ fullname: start ? format(start.date, 'MMM') : ''
69
+ };
70
+ });
71
+
72
+ function generator(pivot: Date): Day[] {
73
+ const firstDay = new Date(pivot.getFullYear(), pivot.getMonth(), 1).getDay();
74
+ const lastMonthDaysCount = monthDays(pivot.getMonth() - 1, pivot.getFullYear());
75
+ const sample = startOfDay(
76
+ new Date(pivot.getFullYear(), pivot.getMonth() - 1, lastMonthDaysCount - firstDay)
77
+ );
78
+
79
+ const array: Day[] = [];
80
+
81
+ for (let index = 0; index < 42; index++) {
82
+ sample.setDate(sample.getDate() + 1);
83
+
84
+ const prec =
85
+ pivot.getMonth() > sample.getMonth() || pivot.getFullYear() > sample.getFullYear();
86
+ const next =
87
+ (pivot.getMonth() < sample.getMonth() && pivot.getFullYear() === sample.getFullYear()) ||
88
+ (pivot.getMonth() > sample.getMonth() && pivot.getFullYear() < sample.getFullYear());
89
+
90
+ const disabled =
91
+ (min ? sample < startOfDay(min) : false) || (max ? sample > startOfDay(max) : false);
92
+
93
+ array.push({
94
+ id: sample.getTime(),
95
+ date: new Date(sample),
96
+ get offmonth() {
97
+ return next || prec;
98
+ },
99
+ dayOfMonth: sample.getDate(),
100
+ today: isToday(sample),
101
+ week: Math.floor(index / 7),
102
+ month: sample.getMonth(),
103
+ disabled: disabled,
104
+ weekend: sample.getDay() == 0,
105
+ name: format(sample, 'iii'),
106
+ fullname: format(sample, 'iiiii'),
107
+ get fromNextMonth() {
108
+ return next;
109
+ },
110
+ get fromPreviousMonth() {
111
+ return prec;
112
+ }
113
+ });
114
+ }
115
+
116
+ return array;
117
+ }
118
+
119
+ function monthDays(month: number, year = 2020) {
120
+ return new Date(year, month + 1, 0).getDate();
121
+ }
122
+
123
+ const bondProps = defineState<CalendarBondProps>(
124
+ [
125
+ defineProperty(
126
+ 'range',
127
+ () => range,
128
+ (v: CalendarRange) => {
129
+ range = v;
130
+ onchange?.(new CustomEvent('change'), { range, pivote });
131
+ }
132
+ ),
133
+ defineProperty(
134
+ 'value',
135
+ () => range?.[0],
136
+ (v) => {
137
+ if (range?.[0]) {
138
+ range[0] = v;
139
+ }
140
+ onchange?.(new CustomEvent('change'), { range, pivote });
141
+ }
142
+ ),
143
+ defineProperty(
144
+ 'pivote',
145
+ () => pivote,
146
+ (v: Date) => {
147
+ pivote = v;
148
+ onchange?.(new CustomEvent('change'), { range, pivote });
149
+ }
150
+ ),
151
+ defineProperty(
152
+ 'start',
153
+ () => range?.[0],
154
+ (v: Date) => {
155
+ range[0] = v;
156
+ onchange?.(new CustomEvent('change'), { range, pivote });
157
+ }
158
+ ),
159
+ defineProperty(
160
+ 'end',
161
+ () => range?.[1],
162
+ (v: Date | undefined) => {
163
+ range[1] = v;
164
+ onchange?.(new CustomEvent('change'), { range, pivote });
165
+ }
166
+ ),
167
+ defineProperty(
168
+ 'min',
169
+ () => min,
170
+ (v: Date | undefined) => (min = v)
171
+ ),
172
+ defineProperty(
173
+ 'max',
174
+ () => max,
175
+ (v: Date | undefined) => (max = v)
176
+ ),
177
+ defineProperty('type', () => type ?? 'single'),
178
+ defineProperty('nextMonth', () => monthNext),
179
+ defineProperty('currentMonth', () => monthCurrent),
180
+ defineProperty('previousMonth', () => monthPrevious)
181
+ ],
182
+ () => ({ extend })
183
+ );
184
+
185
+ const bond = factory(bondProps).share();
186
+
187
+ const rootProps = $derived({
188
+ ...bond.root(),
189
+ ...restProps
190
+ });
191
+
192
+ function _factory(props: typeof bondProps) {
193
+ const popoverState = new CalendarBondState(() => props);
194
+ const popoverBond = new CalendarBond(popoverState);
195
+
196
+ return popoverBond;
197
+ }
198
+
199
+ export function getBond() {
200
+ return bond;
201
+ }
202
+ </script>
203
+
204
+ <HtmlAtom {preset} class={cn('h-full w-full', klass)} data-atom="calendar-root" {...rootProps}>
205
+ {@render children?.({ calendar: bond })}
206
+ </HtmlAtom>
@@ -1,31 +1,26 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import { Calendar as CalendarModule } from '.';
4
-
5
- const { Story } = defineMeta({
6
- title: 'Atoms/Calendar'
7
- });
8
- </script>
9
-
10
- <script>
11
- import { Root } from '../root';
12
- </script>
13
-
14
- <Story name="Calendar">
15
- {#snippet children({ args })}
16
- <Root>
17
- {#snippet children({})}
18
- <div class="flex h-fit items-center justify-center">
19
- <CalendarModule.Root>
20
- <CalendarModule.Header></CalendarModule.Header>
21
- <CalendarModule.Body>
22
- {#snippet children({ day })}
23
- <CalendarModule.Day {day}></CalendarModule.Day>
24
- {/snippet}
25
- </CalendarModule.Body>
26
- </CalendarModule.Root>
27
- </div>
28
- {/snippet}
29
- </Root>
30
- {/snippet}
31
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Calendar as CalendarModule } from '.';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Atoms/Calendar'
7
+ });
8
+ </script>
9
+
10
+ <script>
11
+ </script>
12
+
13
+ <Story name="Calendar">
14
+ {#snippet children({ args })}
15
+ <div class="flex h-fit items-center justify-center">
16
+ <CalendarModule.Root>
17
+ <CalendarModule.Header></CalendarModule.Header>
18
+ <CalendarModule.Body>
19
+ {#snippet children({ day })}
20
+ <CalendarModule.Day {day}></CalendarModule.Day>
21
+ {/snippet}
22
+ </CalendarModule.Body>
23
+ </CalendarModule.Root>
24
+ </div>
25
+ {/snippet}
26
+ </Story>
@@ -26,7 +26,7 @@
26
26
  <HtmlAtom
27
27
  {bond}
28
28
  preset="card.content"
29
- class={['card-content border-border px-4', '$preset', klass]}
29
+ class={['card-content border-border px-4 pb-4', '$preset', klass]}
30
30
  enter={enter?.bind(bond.state)}
31
31
  exit={exit?.bind(bond.state)}
32
32
  initial={initial?.bind(bond.state)}
@@ -28,7 +28,7 @@
28
28
  {as}
29
29
  {bond}
30
30
  preset="card.footer"
31
- class={['card-footer border-border flex items-center gap-2 px-4 py-4', '$preset', klass]}
31
+ class={['card-footer border-border flex items-center gap-2 px-4 pb-4', '$preset', klass]}
32
32
  enter={enter?.bind(bond.state)}
33
33
  exit={exit?.bind(bond.state)}
34
34
  initial={initial?.bind(bond.state)}
@@ -71,7 +71,7 @@
71
71
  <HtmlAtom
72
72
  preset="card"
73
73
  class={[
74
- 'card bg-card border-border flex flex-col gap-2 overflow-clip rounded-lg border shadow-sm',
74
+ 'card bg-card border-border flex flex-col overflow-clip rounded-lg border shadow-sm',
75
75
  disabledStyles,
76
76
  '$preset',
77
77
  klass