@svelte-atoms/core 1.0.0-alpha.28 → 1.0.0-alpha.30

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 (136) hide show
  1. package/README.md +852 -856
  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 +61 -61
  5. package/dist/components/accordion/accordion-root.svelte.d.ts +1 -1
  6. package/dist/components/accordion/accordion.stories.svelte +145 -134
  7. package/dist/components/alert/alert-actions.svelte +43 -43
  8. package/dist/components/alert/alert-close-button.svelte +70 -70
  9. package/dist/components/alert/alert-content.svelte +43 -43
  10. package/dist/components/alert/alert-description.svelte +42 -42
  11. package/dist/components/alert/alert-icon.svelte +47 -47
  12. package/dist/components/alert/alert-root.svelte +103 -103
  13. package/dist/components/alert/alert-title.svelte +42 -42
  14. package/dist/components/alert/alert.stories.svelte +10 -11
  15. package/dist/components/atom/html-atom.svelte +75 -19
  16. package/dist/components/atom/html-atom.svelte.d.ts +1 -1
  17. package/dist/components/atom/snippet-renderer.svelte +5 -5
  18. package/dist/components/avatar/avatar.stories.svelte +22 -27
  19. package/dist/components/badge/badge.stories.svelte +12 -17
  20. package/dist/components/badge/badge.svelte +19 -19
  21. package/dist/components/breadcrumb/breadcrumb.stories.svelte +16 -21
  22. package/dist/components/button/button.stories.svelte +1 -34
  23. package/dist/components/calendar/calendar-body.svelte +107 -107
  24. package/dist/components/calendar/calendar-day.svelte +96 -97
  25. package/dist/components/calendar/calendar-header.svelte +29 -33
  26. package/dist/components/calendar/calendar-header.svelte.d.ts +0 -1
  27. package/dist/components/calendar/calendar-root.svelte +206 -208
  28. package/dist/components/calendar/calendar-week-day.svelte +34 -34
  29. package/dist/components/calendar/calendar.css +26 -26
  30. package/dist/components/calendar/calendar.stories.svelte +10 -20
  31. package/dist/components/calendar/calendar.stories.svelte.d.ts +24 -4
  32. package/dist/components/card/card-body.svelte +39 -39
  33. package/dist/components/card/card-footer.svelte +41 -41
  34. package/dist/components/card/card-root.svelte +91 -91
  35. package/dist/components/card/card.stories.svelte +133 -145
  36. package/dist/components/checkbox/checkbox.stories.svelte +22 -27
  37. package/dist/components/checkbox/checkbox.svelte +155 -157
  38. package/dist/components/collapsible/collapsible.stories.svelte +172 -173
  39. package/dist/components/combobox/combobox-root.svelte +65 -65
  40. package/dist/components/combobox/compobox.stories.svelte +51 -54
  41. package/dist/components/container/container.stories.svelte +20 -23
  42. package/dist/components/datagrid/datagrid-root.svelte +2 -2
  43. package/dist/components/datagrid/datagrid.css +0 -42
  44. package/dist/components/datagrid/datagrid.stories.svelte +72 -75
  45. package/dist/components/datagrid/types.d.ts +1 -1
  46. package/dist/components/date-picker/atoms.d.ts +0 -4
  47. package/dist/components/date-picker/atoms.js +0 -4
  48. package/dist/components/date-picker/date-picker-calendar.svelte +67 -42
  49. package/dist/components/date-picker/date-picker-calendar.svelte.d.ts +2 -5
  50. package/dist/components/date-picker/date-picker-header.svelte +100 -105
  51. package/dist/components/date-picker/date-picker-header.svelte.d.ts +2 -5
  52. package/dist/components/date-picker/date-picker-months.svelte +142 -150
  53. package/dist/components/date-picker/date-picker-months.svelte.d.ts +2 -5
  54. package/dist/components/date-picker/date-picker-root.svelte +4 -3
  55. package/dist/components/date-picker/date-picker-root.svelte.d.ts +2 -15
  56. package/dist/components/date-picker/date-picker-years.svelte +205 -214
  57. package/dist/components/date-picker/date-picker-years.svelte.d.ts +2 -5
  58. package/dist/components/date-picker/date-picker.stories.svelte +15 -31
  59. package/dist/components/date-picker/types.d.ts +53 -1
  60. package/dist/components/dialog/dialog-content.svelte +1 -1
  61. package/dist/components/dialog/dialog.stories.svelte +64 -67
  62. package/dist/components/drawer/attachments.svelte.js +8 -9
  63. package/dist/components/drawer/drawer-content.svelte +57 -42
  64. package/dist/components/drawer/drawer.stories.svelte +212 -224
  65. package/dist/components/dropdown/dropdown-root.svelte +59 -59
  66. package/dist/components/dropdown/dropdown.stories.svelte +80 -83
  67. package/dist/components/element/html-element.svelte +85 -85
  68. package/dist/components/element/types.d.ts +1 -1
  69. package/dist/components/form/form.stories.svelte +96 -99
  70. package/dist/components/image/image.stories.svelte +20 -23
  71. package/dist/components/index.d.ts +1 -0
  72. package/dist/components/index.js +1 -0
  73. package/dist/components/input/input.stories.svelte +35 -38
  74. package/dist/components/label/label.stories.svelte +15 -26
  75. package/dist/components/label/label.stories.svelte.d.ts +24 -4
  76. package/dist/components/lazy/index.d.ts +1 -0
  77. package/dist/components/lazy/index.js +1 -0
  78. package/dist/components/lazy/lazy.stories.svelte +28 -0
  79. package/dist/components/lazy/lazy.stories.svelte.d.ts +19 -0
  80. package/dist/components/lazy/lazy.svelte +28 -0
  81. package/dist/components/lazy/lazy.svelte.d.ts +5 -0
  82. package/dist/components/lazy/types.d.ts +10 -0
  83. package/dist/components/lazy/types.js +1 -0
  84. package/dist/components/link/link.stories.svelte +15 -26
  85. package/dist/components/link/link.stories.svelte.d.ts +24 -4
  86. package/dist/components/menu/menu-list.svelte +2 -1
  87. package/dist/components/menu/menu-list.svelte.d.ts +1 -0
  88. package/dist/components/menu/menu.stories.svelte +33 -36
  89. package/dist/components/popover/bond.svelte.js +31 -25
  90. package/dist/components/popover/popover-arrow.svelte +111 -111
  91. package/dist/components/popover/popover-content.svelte +2 -5
  92. package/dist/components/popover/popover-indicator.svelte +44 -43
  93. package/dist/components/popover/popover-root.svelte +1 -1
  94. package/dist/components/popover/popover.stories.svelte +18 -21
  95. package/dist/components/qr-code/index.d.ts +1 -0
  96. package/dist/components/qr-code/index.js +1 -0
  97. package/dist/components/qr-code/qr-code.stories.svelte +4 -10
  98. package/dist/components/qr-code/qr-code.svelte +75 -25
  99. package/dist/components/qr-code/qr-code.svelte.d.ts +2 -4
  100. package/dist/components/qr-code/types.d.ts +14 -0
  101. package/dist/components/qr-code/types.js +1 -0
  102. package/dist/components/radio/radio-group.stories.svelte +41 -50
  103. package/dist/components/radio/radio.stories.svelte +17 -26
  104. package/dist/components/radio/radio.svelte +109 -109
  105. package/dist/components/root/root.svelte +121 -121
  106. package/dist/components/root/root.svelte.d.ts +1 -1
  107. package/dist/components/scrollable/scrollable.stories.svelte +116 -126
  108. package/dist/components/sidebar/bond.svelte.d.ts +0 -5
  109. package/dist/components/sidebar/bond.svelte.js +1 -12
  110. package/dist/components/sidebar/sidebar-content.svelte +50 -39
  111. package/dist/components/sidebar/sidebar-content.svelte.d.ts +2 -2
  112. package/dist/components/sidebar/sidebar-root.svelte +39 -68
  113. package/dist/components/sidebar/sidebar-root.svelte.d.ts +2 -2
  114. package/dist/components/sidebar/sidebar.stories.svelte +43 -52
  115. package/dist/components/sidebar/types.d.ts +7 -6
  116. package/dist/components/tabs/tab/bond.svelte.d.ts +4 -1
  117. package/dist/components/tabs/tab/bond.svelte.js +4 -1
  118. package/dist/components/tabs/tabs.stories.svelte +56 -59
  119. package/dist/components/tooltip/tooltip-trigger.svelte +39 -37
  120. package/dist/components/tooltip/tooltip.stories.svelte +32 -35
  121. package/dist/components/tree/tree.stories.svelte +142 -134
  122. package/dist/context/preset.svelte.d.ts +3 -3
  123. package/dist/utils/function.d.ts +2 -0
  124. package/dist/utils/function.js +6 -0
  125. package/llm/variants.md +1259 -1261
  126. package/package.json +7 -9
  127. package/dist/actions/animation.svelte.d.ts +0 -6
  128. package/dist/actions/animation.svelte.js +0 -14
  129. package/dist/actions/clickout.svelte.d.ts +0 -2
  130. package/dist/actions/clickout.svelte.js +0 -15
  131. package/dist/actions/popover.svelte.d.ts +0 -19
  132. package/dist/actions/popover.svelte.js +0 -81
  133. package/dist/actions/portal.svelte.d.ts +0 -8
  134. package/dist/actions/portal.svelte.js +0 -32
  135. package/dist/attachments/gsap.svelte.d.ts +0 -2
  136. package/dist/attachments/gsap.svelte.js +0 -26
@@ -1,214 +1,205 @@
1
- <script lang="ts">
2
- import { HtmlAtom } from '../atom';
3
- import { PopoverBond } from '../popover';
4
- import { Icon } from '../icon';
5
- import { DatePickerBond } from './bond.svelte';
6
- import { getYear, setYear } from 'date-fns';
7
- import { cn } from '../../utils';
8
- import { animate } from 'motion';
9
-
10
- const popover = PopoverBond.get();
11
- const datePicker = DatePickerBond.get();
12
- const calendar = datePicker.calendar;
13
-
14
- const pivote = $derived(datePicker?.state.props.pivote ?? new Date());
15
-
16
- let yearPivote = $state(pivote.getFullYear());
17
-
18
- const currentYear = $derived(getYear(pivote));
19
-
20
- // Generate array of years to display (12 years: current ±5)
21
- const yearsGrid = $derived.by(() => {
22
- const years = [];
23
- const startYear = yearPivote - 5;
24
- for (let i = 0; i < 12; i++) {
25
- years.push(startYear + i);
26
- }
27
- return years;
28
- });
29
-
30
- let { class: klass = '', preset = 'datepicker.years', children, ...restProps } = $props();
31
-
32
- let scrollTimeout: NodeJS.Timeout | undefined = undefined;
33
-
34
- function enter(node: HTMLElement) {
35
- animate(
36
- node,
37
- {
38
- scale: [0.8, 1]
39
- },
40
- { duration: 100 / 1000, ease: 'circOut' }
41
- );
42
- return {
43
- duration: 100
44
- };
45
- }
46
-
47
- function exit(node: HTMLElement) {
48
- animate(
49
- node,
50
- {
51
- scale: 0.8
52
- },
53
- { duration: 100 / 1000, ease: 'circOut' }
54
- );
55
- return {
56
- duration: 100
57
- };
58
- }
59
-
60
- function handlePreviousYear() {
61
- yearPivote = yearPivote - 1;
62
- }
63
-
64
- function handleNextYear() {
65
- yearPivote = yearPivote + 1;
66
- }
67
-
68
- function handleYearSelect(year: number) {
69
- if (!datePicker?.state.props.pivote) return;
70
- const current = datePicker.state.props.pivote;
71
- datePicker.state.props.pivote = setYear(current, year);
72
-
73
- datePicker.state.closeYearsPicker();
74
- }
75
-
76
- function handleWheel(event: WheelEvent) {
77
- event.preventDefault();
78
-
79
- // Clear any existing timeout
80
- if (scrollTimeout) {
81
- clearTimeout(scrollTimeout);
82
- }
83
-
84
- // Debounce the scroll event to avoid rapid year changes
85
- scrollTimeout = setTimeout(() => {
86
- const direction = event.deltaY > 0 ? 1 : -1; // Positive = scroll down = next year
87
- yearPivote = yearPivote + direction;
88
- }, 50);
89
- }
90
- </script>
91
-
92
- {#if datePicker.state.isYearsPickerOpen}
93
- <HtmlAtom
94
- class={['absolute inset-0 z-2 flex flex-col gap-2 bg-inherit opacity-0', '$preset', klass]}
95
- enter={(node) => {
96
- animate(
97
- node,
98
- {
99
- opacity: [0, 1]
100
- },
101
- { duration: 100 / 1000, ease: 'anticipate' }
102
- );
103
- return {
104
- duration: 100
105
- };
106
- }}
107
- exit={(node) => {
108
- animate(
109
- node,
110
- {
111
- opacity: 0
112
- },
113
- { duration: 100 / 1000, ease: 'anticipate' }
114
- );
115
- return {
116
- duration: 100
117
- };
118
- }}
119
- onwheel={handleWheel}
120
- {preset}
121
- {...restProps}
122
- >
123
- {#if children}
124
- {@render children?.({
125
- calendar,
126
- popover,
127
- currentYear,
128
- yearsGrid,
129
- onPrevious: handlePreviousYear,
130
- onNext: handleNextYear,
131
- onYearSelect: handleYearSelect
132
- })}
133
- {:else}
134
- <HtmlAtom class="flex flex-1 flex-col" {enter} {exit}>
135
- <!-- Navigation Bar -->
136
- <nav
137
- class="border-border text-foreground flex h-12 items-center justify-between gap-2 border-b px-2 py-2"
138
- >
139
- <!-- Previous Year Button -->
140
- <button
141
- type="button"
142
- class="hover:bg-foreground/10 active:bg-foreground/20 flex size-8 cursor-pointer items-center justify-center rounded-md transition-colors"
143
- onclick={handlePreviousYear}
144
- aria-label="Previous year"
145
- >
146
- <Icon class="size-5">
147
- <svg
148
- xmlns="http://www.w3.org/2000/svg"
149
- class="size-full"
150
- viewBox="0 0 24 24"
151
- fill="none"
152
- stroke="currentColor"
153
- stroke-width="2"
154
- stroke-linecap="round"
155
- stroke-linejoin="round"
156
- >
157
- <path d="M15 18l-6-6 6-6" />
158
- </svg>
159
- </Icon>
160
- </button>
161
-
162
- <!-- Year Display -->
163
- <div class="text-foreground flex-1 text-center text-sm font-semibold">
164
- {currentYear}
165
- </div>
166
-
167
- <!-- Next Year Button -->
168
- <button
169
- type="button"
170
- class="hover:bg-foreground/10 active:bg-foreground/20 flex size-8 cursor-pointer items-center justify-center rounded-md transition-colors"
171
- onclick={handleNextYear}
172
- aria-label="Next year"
173
- >
174
- <Icon class="size-5">
175
- <svg
176
- xmlns="http://www.w3.org/2000/svg"
177
- class="size-full"
178
- viewBox="0 0 24 24"
179
- fill="none"
180
- stroke="currentColor"
181
- stroke-width="2"
182
- stroke-linecap="round"
183
- stroke-linejoin="round"
184
- >
185
- <path d="M9 18l6-6-6-6" />
186
- </svg>
187
- </Icon>
188
- </button>
189
- </nav>
190
-
191
- <!-- Years Grid -->
192
- <div class="grid flex-1 grid-cols-4 gap-1 px-2 py-2">
193
- {#each yearsGrid as year}
194
- {@const isSelected = year === pivote.getFullYear()}
195
- {@const isCurrent = year === currentYear}
196
- <button
197
- type="button"
198
- class={cn(
199
- 'hover:bg-foreground/10 active:bg-foreground/20 rounded-md px-3 py-2 text-sm transition-colors',
200
- isSelected && 'bg-primary text-primary-foreground hover:bg-primary/90',
201
- isCurrent && !isSelected && 'ring-foreground/20 ring-1'
202
- )}
203
- onclick={() => handleYearSelect(year)}
204
- aria-label="Select year {year}"
205
- aria-current={isSelected ? 'date' : undefined}
206
- >
207
- {year}
208
- </button>
209
- {/each}
210
- </div>
211
- </HtmlAtom>
212
- {/if}
213
- </HtmlAtom>
214
- {/if}
1
+ <script lang="ts">
2
+ import { animate } from 'motion';
3
+ import { getYear, setYear } from 'date-fns';
4
+ import { cn } from '../../utils';
5
+ import { DatePickerBond } from './bond.svelte';
6
+ import type { DatePickerYearsProps } from './types';
7
+ import { HtmlAtom } from '../atom';
8
+ import { Icon } from '../icon';
9
+
10
+ const datePicker = DatePickerBond.get();
11
+
12
+ const pivote = $derived(datePicker?.state.props.pivote ?? new Date());
13
+
14
+ let pivoteYear = $derived(pivote.getFullYear());
15
+
16
+ const currentYear = $derived(getYear(pivote));
17
+
18
+ // Generate array of years to display (12 years: current ±5)
19
+ const yearsGrid = $derived.by(() => {
20
+ const years = [];
21
+ const startYear = pivoteYear - 5;
22
+ for (let i = 0; i < 12; i++) {
23
+ years.push(startYear + i);
24
+ }
25
+ return years;
26
+ });
27
+
28
+ let {
29
+ class: klass = '',
30
+ preset = 'datepicker.years',
31
+ children,
32
+ ...restProps
33
+ }: DatePickerYearsProps = $props();
34
+
35
+ let scrollTimeout: NodeJS.Timeout | undefined = undefined;
36
+
37
+ function enter(node: HTMLElement) {
38
+ animate(
39
+ node,
40
+ {
41
+ scale: [0.8, 1]
42
+ },
43
+ { duration: 100 / 1000, ease: 'circOut' }
44
+ );
45
+ return {
46
+ duration: 100
47
+ };
48
+ }
49
+
50
+ function exit(node: HTMLElement) {
51
+ animate(
52
+ node,
53
+ {
54
+ scale: 0.8
55
+ },
56
+ { duration: 100 / 1000, ease: 'circOut' }
57
+ );
58
+ return {
59
+ duration: 100
60
+ };
61
+ }
62
+
63
+ function handlePreviousYear() {
64
+ pivoteYear = pivoteYear - 1;
65
+ }
66
+
67
+ function handleNextYear() {
68
+ pivoteYear = pivoteYear + 1;
69
+ }
70
+
71
+ function handleYearSelect(year: number) {
72
+ if (!datePicker?.state.props.pivote) return;
73
+ const current = datePicker.state.props.pivote;
74
+ datePicker.state.props.pivote = setYear(current, year);
75
+
76
+ datePicker.state.closeYearsPicker();
77
+ }
78
+
79
+ function handleWheel(event: WheelEvent) {
80
+ event.preventDefault();
81
+
82
+ // Clear any existing timeout
83
+ if (scrollTimeout) {
84
+ clearTimeout(scrollTimeout);
85
+ }
86
+
87
+ // Debounce the scroll event to avoid rapid year changes
88
+ scrollTimeout = setTimeout(() => {
89
+ const direction = event.deltaY > 0 ? 1 : -1; // Positive = scroll down = next year
90
+ pivoteYear = pivoteYear + direction;
91
+ }, 50);
92
+ }
93
+ </script>
94
+
95
+ {#if datePicker.state.isYearsPickerOpen}
96
+ <HtmlAtom
97
+ class={['absolute inset-0 z-2 flex flex-col gap-2 bg-inherit opacity-0', '$preset', klass]}
98
+ enter={(node) => {
99
+ animate(
100
+ node,
101
+ {
102
+ opacity: [0, 1]
103
+ },
104
+ { duration: 100 / 1000, ease: 'anticipate' }
105
+ );
106
+ return {
107
+ duration: 100
108
+ };
109
+ }}
110
+ exit={(node) => {
111
+ animate(
112
+ node,
113
+ {
114
+ opacity: 0
115
+ },
116
+ { duration: 100 / 1000, ease: 'anticipate' }
117
+ );
118
+ return {
119
+ duration: 100
120
+ };
121
+ }}
122
+ onwheel={handleWheel}
123
+ {preset}
124
+ {...restProps}
125
+ >
126
+ <HtmlAtom class="flex flex-1 flex-col" {enter} {exit}>
127
+ <!-- Navigation Bar -->
128
+ <nav
129
+ class="border-border text-foreground flex h-12 items-center justify-between gap-2 border-b px-2 py-2"
130
+ >
131
+ <!-- Previous Year Button -->
132
+ <button
133
+ type="button"
134
+ class="hover:bg-foreground/10 active:bg-foreground/20 flex size-8 cursor-pointer items-center justify-center rounded-md transition-colors"
135
+ onclick={handlePreviousYear}
136
+ aria-label="Previous year"
137
+ >
138
+ <Icon class="size-5">
139
+ <svg
140
+ xmlns="http://www.w3.org/2000/svg"
141
+ class="size-full"
142
+ viewBox="0 0 24 24"
143
+ fill="none"
144
+ stroke="currentColor"
145
+ stroke-width="2"
146
+ stroke-linecap="round"
147
+ stroke-linejoin="round"
148
+ >
149
+ <path d="M15 18l-6-6 6-6" />
150
+ </svg>
151
+ </Icon>
152
+ </button>
153
+
154
+ <!-- Year Display -->
155
+ <div class="flex-1">
156
+ <!-- {currentYear} -->
157
+ </div>
158
+
159
+ <!-- Next Year Button -->
160
+ <button
161
+ type="button"
162
+ class="hover:bg-foreground/10 active:bg-foreground/20 flex size-8 cursor-pointer items-center justify-center rounded-md transition-colors"
163
+ onclick={handleNextYear}
164
+ aria-label="Next year"
165
+ >
166
+ <Icon class="size-5">
167
+ <svg
168
+ xmlns="http://www.w3.org/2000/svg"
169
+ class="size-full"
170
+ viewBox="0 0 24 24"
171
+ fill="none"
172
+ stroke="currentColor"
173
+ stroke-width="2"
174
+ stroke-linecap="round"
175
+ stroke-linejoin="round"
176
+ >
177
+ <path d="M9 18l6-6-6-6" />
178
+ </svg>
179
+ </Icon>
180
+ </button>
181
+ </nav>
182
+
183
+ <!-- Years Grid -->
184
+ <div class="grid flex-1 grid-cols-4 gap-1 px-2 py-2">
185
+ {#each yearsGrid as year}
186
+ {@const isSelected = year === pivote.getFullYear()}
187
+ {@const isCurrent = year === currentYear}
188
+ <button
189
+ type="button"
190
+ class={cn(
191
+ 'hover:bg-foreground/10 active:bg-foreground/20 rounded-md px-3 py-2 text-sm transition-colors',
192
+ isSelected && 'bg-primary text-primary-foreground hover:bg-primary/90',
193
+ isCurrent && !isSelected && 'ring-foreground/20 ring-1'
194
+ )}
195
+ onclick={() => handleYearSelect(year)}
196
+ aria-label="Select year {year}"
197
+ aria-current={isSelected ? 'date' : undefined}
198
+ >
199
+ {year}
200
+ </button>
201
+ {/each}
202
+ </div>
203
+ </HtmlAtom>
204
+ </HtmlAtom>
205
+ {/if}
@@ -1,7 +1,4 @@
1
- declare const DatePickerYears: import("svelte").Component<{
2
- class?: string;
3
- preset?: string;
4
- children: any;
5
- } & Record<string, any>, {}, "">;
1
+ import type { DatePickerYearsProps } from './types';
2
+ declare const DatePickerYears: import("svelte").Component<DatePickerYearsProps, {}, "">;
6
3
  type DatePickerYears = ReturnType<typeof DatePickerYears>;
7
4
  export default DatePickerYears;
@@ -7,45 +7,29 @@
7
7
  </script>
8
8
 
9
9
  <script lang="ts">
10
- import { Root } from '../root';
11
10
  import { DatePicker as ADatePicker } from '.';
12
11
  import { Button } from '../button';
13
- import { addDays, set, subDays } from 'date-fns';
14
- import { date } from 'zod';
12
+ import { addDays, subDays } from 'date-fns';
15
13
 
16
14
  let value: Date | undefined = $state(undefined);
15
+
16
+ let min = $state(subDays(new Date(), 5));
17
+ let max = $state(addDays(new Date(), 15));
17
18
  </script>
18
19
 
19
20
  <Story name="Date Picker">
20
21
  {#snippet children({ args })}
21
- <Root>
22
- {#snippet children({})}
23
- <div class="flex h-fit items-center justify-center">
24
- <ADatePicker.Root bind:value min={subDays(new Date(), 5)} max={addDays(new Date(), 15)}>
25
- <ADatePicker.Trigger base={Button} class="w-sm gap-4">
26
- {#if value}
27
- <div>{value.toDateString()}</div>
28
- {:else}
29
- <div>Open Date Picker</div>
30
- {/if}
31
-
32
- <ADatePicker.Indicator class="ml-auto" />
33
- </ADatePicker.Trigger>
34
- <ADatePicker.Calendar>
35
- <ADatePicker.Header class="col-span-full"></ADatePicker.Header>
36
- <ADatePicker.WeekDays></ADatePicker.WeekDays>
37
- <ADatePicker.Body>
38
- {#snippet children({ day })}
39
- <ADatePicker.Day {day} class=""></ADatePicker.Day>
40
- {/snippet}
41
- </ADatePicker.Body>
22
+ <ADatePicker.Root bind:value {min} {max}>
23
+ <ADatePicker.Trigger base={Button} class="w-sm gap-4">
24
+ {#if value}
25
+ <div>{value.toDateString()}</div>
26
+ {:else}
27
+ <div>Open Date Picker</div>
28
+ {/if}
42
29
 
43
- <ADatePicker.Years></ADatePicker.Years>
44
- <ADatePicker.Months></ADatePicker.Months>
45
- </ADatePicker.Calendar>
46
- </ADatePicker.Root>
47
- </div>
48
- {/snippet}
49
- </Root>
30
+ <ADatePicker.Indicator class="ml-auto" />
31
+ </ADatePicker.Trigger>
32
+ <ADatePicker.Calendar />
33
+ </ADatePicker.Root>
50
34
  {/snippet}
51
35
  </Story>
@@ -1 +1,53 @@
1
- export {};
1
+ import type { Component, Snippet } from 'svelte';
2
+ import type { Day, CalendarRange } from '../calendar/types';
3
+ import type { DatePickerBond } from './bond.svelte';
4
+ import type { Factory } from '../../types';
5
+ export interface DatePickerCalendarProps {
6
+ class?: string;
7
+ preset?: string;
8
+ children?: Snippet<[{
9
+ day: Day;
10
+ }]>;
11
+ Header?: Component;
12
+ Weekdays?: Component;
13
+ Body?: Component;
14
+ Day?: Component;
15
+ Months?: Component;
16
+ Years?: Component;
17
+ [key: string]: unknown;
18
+ }
19
+ export interface DatePickerHeaderProps {
20
+ class?: string;
21
+ preset?: string;
22
+ children?: Snippet;
23
+ [key: string]: unknown;
24
+ }
25
+ export interface DatePickerMonthsProps {
26
+ class?: string;
27
+ preset?: string;
28
+ children?: Snippet;
29
+ [key: string]: unknown;
30
+ }
31
+ export interface DatePickerYearsProps {
32
+ class?: string;
33
+ preset?: string;
34
+ children?: Snippet;
35
+ [key: string]: unknown;
36
+ }
37
+ export interface DatePickerRootProps {
38
+ open?: boolean;
39
+ value?: Date;
40
+ range?: CalendarRange;
41
+ pivote?: Date;
42
+ start?: Date;
43
+ end?: Date;
44
+ min?: Date;
45
+ max?: Date;
46
+ type?: 'range' | 'single';
47
+ offset?: number;
48
+ factory?: Factory<DatePickerBond>;
49
+ children?: Snippet<[{
50
+ datePicker: DatePickerBond;
51
+ }]>;
52
+ [key: string]: unknown;
53
+ }
@@ -45,7 +45,7 @@
45
45
  <HtmlAtom
46
46
  preset="dialog.content"
47
47
  class={[
48
- 'bg-card text-foreground border-border flex h-fit w-full max-w-[90svw] flex-col rounded-md border py-4 shadow-sm md:min-w-sm lg:max-w-xl lg:min-w-md',
48
+ 'bg-card text-foreground border-border flex h-fit w-full max-w-[90svw] flex-col rounded-md border py-4 shadow-sm',
49
49
  '$preset',
50
50
  klass
51
51
  ]}