@foldkit/ui 0.112.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 (201) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -0
  3. package/dist/anchor.d.ts +38 -0
  4. package/dist/anchor.d.ts.map +1 -0
  5. package/dist/anchor.js +142 -0
  6. package/dist/animation/index.d.ts +49 -0
  7. package/dist/animation/index.d.ts.map +1 -0
  8. package/dist/animation/index.js +75 -0
  9. package/dist/animation/public.d.ts +3 -0
  10. package/dist/animation/public.d.ts.map +1 -0
  11. package/dist/animation/public.js +1 -0
  12. package/dist/animation/schema.d.ts +43 -0
  13. package/dist/animation/schema.d.ts.map +1 -0
  14. package/dist/animation/schema.js +41 -0
  15. package/dist/animation/update.d.ts +24 -0
  16. package/dist/animation/update.d.ts.map +1 -0
  17. package/dist/animation/update.js +67 -0
  18. package/dist/button/index.d.ts +17 -0
  19. package/dist/button/index.d.ts.map +1 -0
  20. package/dist/button/index.js +22 -0
  21. package/dist/button/public.d.ts +3 -0
  22. package/dist/button/public.d.ts.map +1 -0
  23. package/dist/button/public.js +1 -0
  24. package/dist/calendar/index.d.ts +462 -0
  25. package/dist/calendar/index.d.ts.map +1 -0
  26. package/dist/calendar/index.js +825 -0
  27. package/dist/calendar/public.d.ts +3 -0
  28. package/dist/calendar/public.d.ts.map +1 -0
  29. package/dist/calendar/public.js +1 -0
  30. package/dist/checkbox/index.d.ts +119 -0
  31. package/dist/checkbox/index.d.ts.map +1 -0
  32. package/dist/checkbox/index.js +111 -0
  33. package/dist/checkbox/public.d.ts +3 -0
  34. package/dist/checkbox/public.d.ts.map +1 -0
  35. package/dist/checkbox/public.js +1 -0
  36. package/dist/combobox/multi.d.ts +183 -0
  37. package/dist/combobox/multi.d.ts.map +1 -0
  38. package/dist/combobox/multi.js +81 -0
  39. package/dist/combobox/multiPublic.d.ts +3 -0
  40. package/dist/combobox/multiPublic.d.ts.map +1 -0
  41. package/dist/combobox/multiPublic.js +1 -0
  42. package/dist/combobox/public.d.ts +7 -0
  43. package/dist/combobox/public.d.ts.map +1 -0
  44. package/dist/combobox/public.js +3 -0
  45. package/dist/combobox/shared.d.ts +423 -0
  46. package/dist/combobox/shared.d.ts.map +1 -0
  47. package/dist/combobox/shared.js +708 -0
  48. package/dist/combobox/single.d.ts +198 -0
  49. package/dist/combobox/single.d.ts.map +1 -0
  50. package/dist/combobox/single.js +106 -0
  51. package/dist/datePicker/index.d.ts +457 -0
  52. package/dist/datePicker/index.d.ts.map +1 -0
  53. package/dist/datePicker/index.js +318 -0
  54. package/dist/datePicker/public.d.ts +3 -0
  55. package/dist/datePicker/public.d.ts.map +1 -0
  56. package/dist/datePicker/public.js +1 -0
  57. package/dist/dialog/index.d.ts +160 -0
  58. package/dist/dialog/index.d.ts.map +1 -0
  59. package/dist/dialog/index.js +211 -0
  60. package/dist/dialog/public.d.ts +3 -0
  61. package/dist/dialog/public.d.ts.map +1 -0
  62. package/dist/dialog/public.js +1 -0
  63. package/dist/disclosure/index.d.ts +110 -0
  64. package/dist/disclosure/index.d.ts.map +1 -0
  65. package/dist/disclosure/index.js +111 -0
  66. package/dist/disclosure/public.d.ts +3 -0
  67. package/dist/disclosure/public.d.ts.map +1 -0
  68. package/dist/disclosure/public.js +1 -0
  69. package/dist/dragAndDrop/index.d.ts +540 -0
  70. package/dist/dragAndDrop/index.d.ts.map +1 -0
  71. package/dist/dragAndDrop/index.js +535 -0
  72. package/dist/dragAndDrop/public.d.ts +3 -0
  73. package/dist/dragAndDrop/public.d.ts.map +1 -0
  74. package/dist/dragAndDrop/public.js +1 -0
  75. package/dist/fieldset/index.d.ts +21 -0
  76. package/dist/fieldset/index.d.ts.map +1 -0
  77. package/dist/fieldset/index.js +25 -0
  78. package/dist/fieldset/public.d.ts +3 -0
  79. package/dist/fieldset/public.d.ts.map +1 -0
  80. package/dist/fieldset/public.js +1 -0
  81. package/dist/fileDrop/index.d.ts +109 -0
  82. package/dist/fileDrop/index.d.ts.map +1 -0
  83. package/dist/fileDrop/index.js +127 -0
  84. package/dist/fileDrop/public.d.ts +3 -0
  85. package/dist/fileDrop/public.d.ts.map +1 -0
  86. package/dist/fileDrop/public.js +1 -0
  87. package/dist/group.d.ts +8 -0
  88. package/dist/group.d.ts.map +1 -0
  89. package/dist/group.js +13 -0
  90. package/dist/index.d.ts +25 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +24 -0
  93. package/dist/input/index.d.ts +26 -0
  94. package/dist/input/index.d.ts.map +1 -0
  95. package/dist/input/index.js +43 -0
  96. package/dist/input/public.d.ts +3 -0
  97. package/dist/input/public.d.ts.map +1 -0
  98. package/dist/input/public.js +1 -0
  99. package/dist/internal/optionExtensions.d.ts +6 -0
  100. package/dist/internal/optionExtensions.d.ts.map +1 -0
  101. package/dist/internal/optionExtensions.js +2 -0
  102. package/dist/keyboard.d.ts +6 -0
  103. package/dist/keyboard.d.ts.map +1 -0
  104. package/dist/keyboard.js +9 -0
  105. package/dist/listbox/multi.d.ts +189 -0
  106. package/dist/listbox/multi.d.ts.map +1 -0
  107. package/dist/listbox/multi.js +65 -0
  108. package/dist/listbox/multiPublic.d.ts +3 -0
  109. package/dist/listbox/multiPublic.d.ts.map +1 -0
  110. package/dist/listbox/multiPublic.js +1 -0
  111. package/dist/listbox/public.d.ts +7 -0
  112. package/dist/listbox/public.d.ts.map +1 -0
  113. package/dist/listbox/public.js +3 -0
  114. package/dist/listbox/shared.d.ts +432 -0
  115. package/dist/listbox/shared.d.ts.map +1 -0
  116. package/dist/listbox/shared.js +670 -0
  117. package/dist/listbox/single.d.ts +207 -0
  118. package/dist/listbox/single.d.ts.map +1 -0
  119. package/dist/listbox/single.js +73 -0
  120. package/dist/menu/index.d.ts +368 -0
  121. package/dist/menu/index.d.ts.map +1 -0
  122. package/dist/menu/index.js +682 -0
  123. package/dist/menu/public.d.ts +4 -0
  124. package/dist/menu/public.d.ts.map +1 -0
  125. package/dist/menu/public.js +1 -0
  126. package/dist/popover/index.d.ts +267 -0
  127. package/dist/popover/index.d.ts.map +1 -0
  128. package/dist/popover/index.js +346 -0
  129. package/dist/popover/public.d.ts +4 -0
  130. package/dist/popover/public.d.ts.map +1 -0
  131. package/dist/popover/public.js +1 -0
  132. package/dist/radioGroup/index.d.ts +169 -0
  133. package/dist/radioGroup/index.d.ts.map +1 -0
  134. package/dist/radioGroup/index.js +197 -0
  135. package/dist/radioGroup/public.d.ts +3 -0
  136. package/dist/radioGroup/public.d.ts.map +1 -0
  137. package/dist/radioGroup/public.js +1 -0
  138. package/dist/select/index.d.ts +24 -0
  139. package/dist/select/index.d.ts.map +1 -0
  140. package/dist/select/index.js +40 -0
  141. package/dist/select/public.d.ts +3 -0
  142. package/dist/select/public.d.ts.map +1 -0
  143. package/dist/select/public.js +1 -0
  144. package/dist/slider/index.d.ts +318 -0
  145. package/dist/slider/index.d.ts.map +1 -0
  146. package/dist/slider/index.js +337 -0
  147. package/dist/slider/public.d.ts +3 -0
  148. package/dist/slider/public.d.ts.map +1 -0
  149. package/dist/slider/public.js +1 -0
  150. package/dist/switch/index.d.ts +99 -0
  151. package/dist/switch/index.d.ts.map +1 -0
  152. package/dist/switch/index.js +107 -0
  153. package/dist/switch/public.d.ts +3 -0
  154. package/dist/switch/public.d.ts.map +1 -0
  155. package/dist/switch/public.js +1 -0
  156. package/dist/tabs/index.d.ts +155 -0
  157. package/dist/tabs/index.d.ts.map +1 -0
  158. package/dist/tabs/index.js +185 -0
  159. package/dist/tabs/public.d.ts +3 -0
  160. package/dist/tabs/public.d.ts.map +1 -0
  161. package/dist/tabs/public.js +1 -0
  162. package/dist/test/apps/disabledButton.d.ts +38 -0
  163. package/dist/test/apps/disabledButton.d.ts.map +1 -0
  164. package/dist/test/apps/disabledButton.js +71 -0
  165. package/dist/textarea/index.d.ts +26 -0
  166. package/dist/textarea/index.d.ts.map +1 -0
  167. package/dist/textarea/index.js +44 -0
  168. package/dist/textarea/public.d.ts +3 -0
  169. package/dist/textarea/public.d.ts.map +1 -0
  170. package/dist/textarea/public.js +1 -0
  171. package/dist/toast/index.d.ts +608 -0
  172. package/dist/toast/index.d.ts.map +1 -0
  173. package/dist/toast/index.js +146 -0
  174. package/dist/toast/public.d.ts +4 -0
  175. package/dist/toast/public.d.ts.map +1 -0
  176. package/dist/toast/public.js +1 -0
  177. package/dist/toast/schema.d.ts +154 -0
  178. package/dist/toast/schema.d.ts.map +1 -0
  179. package/dist/toast/schema.js +93 -0
  180. package/dist/toast/update.d.ts +510 -0
  181. package/dist/toast/update.d.ts.map +1 -0
  182. package/dist/toast/update.js +225 -0
  183. package/dist/tooltip/index.d.ts +170 -0
  184. package/dist/tooltip/index.d.ts.map +1 -0
  185. package/dist/tooltip/index.js +253 -0
  186. package/dist/tooltip/public.d.ts +4 -0
  187. package/dist/tooltip/public.d.ts.map +1 -0
  188. package/dist/tooltip/public.js +1 -0
  189. package/dist/typeahead.d.ts +4 -0
  190. package/dist/typeahead.d.ts.map +1 -0
  191. package/dist/typeahead.js +14 -0
  192. package/dist/virtualList/index.d.ts +203 -0
  193. package/dist/virtualList/index.d.ts.map +1 -0
  194. package/dist/virtualList/index.js +392 -0
  195. package/dist/virtualList/public.d.ts +3 -0
  196. package/dist/virtualList/public.d.ts.map +1 -0
  197. package/dist/virtualList/public.js +1 -0
  198. package/dist/vitest-setup.d.ts +2 -0
  199. package/dist/vitest-setup.d.ts.map +1 -0
  200. package/dist/vitest-setup.js +2 -0
  201. package/package.json +161 -0
@@ -0,0 +1,22 @@
1
+ import { Predicate } from 'effect';
2
+ import { html } from 'foldkit/html';
3
+ /** Renders an accessible button by building attribute groups and delegating layout to the consumer's `toView` callback. */
4
+ export const view = (config) => {
5
+ const h = html();
6
+ const { toView, onClick, isDisabled = false, type = 'button', isAutofocus = false, } = config;
7
+ const disabledAttributes = isDisabled
8
+ ? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
9
+ : [];
10
+ const clickAttributes = Predicate.isNotUndefined(onClick) && !isDisabled ? [h.OnClick(onClick)] : [];
11
+ const autofocusAttributes = isAutofocus ? [h.Autofocus(true)] : [];
12
+ const buttonAttributes = [
13
+ h.Type(type),
14
+ h.Tabindex(0),
15
+ ...disabledAttributes,
16
+ ...clickAttributes,
17
+ ...autofocusAttributes,
18
+ ];
19
+ return toView({
20
+ button: buttonAttributes,
21
+ });
22
+ };
@@ -0,0 +1,3 @@
1
+ export { view } from './index.js';
2
+ export type { ViewConfig, ButtonAttributes } from './index.js';
3
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/button/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1 @@
1
+ export { view } from './index.js';
@@ -0,0 +1,462 @@
1
+ import { Effect, Option, Schema as S } from 'effect';
2
+ import * as Calendar from 'foldkit/calendar';
3
+ import type { CalendarDate } from 'foldkit/calendar';
4
+ import * as Command from 'foldkit/command';
5
+ import { type ChildAttribute, type Html } from 'foldkit/html';
6
+ import { type Reflect } from 'foldkit/submodel';
7
+ /** Which grid the calendar is currently displaying. `Days` is the standard
8
+ * 6×7 day grid; `Months` is a 3×4 month-name grid for fast month jumps;
9
+ * `Years` is a 3×4 year grid paged in 12-year windows for fast year jumps. */
10
+ export declare const ViewMode: S.Literals<readonly ["Days", "Months", "Years"]>;
11
+ export type ViewMode = typeof ViewMode.Type;
12
+ /** Schema for the calendar component's state. Tracks the visible month/year,
13
+ * the keyboard-focused and user-selected dates, the active view mode, and
14
+ * the configuration that governs navigation (locale, min/max, disabled
15
+ * days). */
16
+ export declare const Model: S.Struct<{
17
+ readonly id: S.String;
18
+ readonly today: S.Struct<{
19
+ readonly year: S.Int;
20
+ readonly month: S.Int;
21
+ readonly day: S.Int;
22
+ }>;
23
+ readonly viewYear: S.Int;
24
+ readonly viewMonth: S.Int;
25
+ readonly viewMode: S.Literals<readonly ["Days", "Months", "Years"]>;
26
+ readonly maybeFocusedDate: S.Option<S.Struct<{
27
+ readonly year: S.Int;
28
+ readonly month: S.Int;
29
+ readonly day: S.Int;
30
+ }>>;
31
+ readonly maybeSelectedDate: S.Option<S.Struct<{
32
+ readonly year: S.Int;
33
+ readonly month: S.Int;
34
+ readonly day: S.Int;
35
+ }>>;
36
+ readonly isGridFocused: S.Boolean;
37
+ readonly locale: S.Struct<{
38
+ readonly firstDayOfWeek: S.Literals<readonly ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]>;
39
+ readonly monthNames: S.Tuple<readonly [S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String]>;
40
+ readonly shortMonthNames: S.Tuple<readonly [S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String, S.String]>;
41
+ readonly dayNames: S.Tuple<readonly [S.String, S.String, S.String, S.String, S.String, S.String, S.String]>;
42
+ readonly shortDayNames: S.Tuple<readonly [S.String, S.String, S.String, S.String, S.String, S.String, S.String]>;
43
+ }>;
44
+ readonly maybeMinDate: S.Option<S.Struct<{
45
+ readonly year: S.Int;
46
+ readonly month: S.Int;
47
+ readonly day: S.Int;
48
+ }>>;
49
+ readonly maybeMaxDate: S.Option<S.Struct<{
50
+ readonly year: S.Int;
51
+ readonly month: S.Int;
52
+ readonly day: S.Int;
53
+ }>>;
54
+ readonly disabledDaysOfWeek: S.$Array<S.Literals<readonly ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]>>;
55
+ readonly disabledDates: S.$Array<S.Struct<{
56
+ readonly year: S.Int;
57
+ readonly month: S.Int;
58
+ readonly day: S.Int;
59
+ }>>;
60
+ }>;
61
+ export type Model = typeof Model.Type;
62
+ /** Sent when the user clicks a day cell in the grid. */
63
+ export declare const ClickedDay: import("foldkit/schema").CallableTaggedStruct<"ClickedDay", {
64
+ date: S.Struct<{
65
+ readonly year: S.Int;
66
+ readonly month: S.Int;
67
+ readonly day: S.Int;
68
+ }>;
69
+ }>;
70
+ /** Sent when the user presses a key on the grid container. The update maps
71
+ * the key to a navigation or selection action. */
72
+ export declare const PressedKeyOnGrid: import("foldkit/schema").CallableTaggedStruct<"PressedKeyOnGrid", {
73
+ key: S.String;
74
+ isShift: S.Boolean;
75
+ }>;
76
+ /** Sent when the user clicks the previous-month navigation button in Days
77
+ * mode. (The Years mode prev/next-page buttons dispatch `PagedYears`.) */
78
+ export declare const ClickedPreviousMonthButton: import("foldkit/schema").CallableTaggedStruct<"ClickedPreviousMonthButton", {}>;
79
+ /** Sent when the user clicks the next-month navigation button in Days
80
+ * mode. (The Years mode prev/next-page buttons dispatch `PagedYears`.) */
81
+ export declare const ClickedNextMonthButton: import("foldkit/schema").CallableTaggedStruct<"ClickedNextMonthButton", {}>;
82
+ /** Sent when the user clicks the calendar heading. Zooms out one mode
83
+ * level: Days → Months, Months → Years. Terminal in Years mode. */
84
+ export declare const ClickedHeading: import("foldkit/schema").CallableTaggedStruct<"ClickedHeading", {}>;
85
+ /** Sent when the user picks a month from the months grid. Jumps the view
86
+ * to that month and returns the calendar to Days mode. */
87
+ export declare const SelectedMonth: import("foldkit/schema").CallableTaggedStruct<"SelectedMonth", {
88
+ month: S.Int;
89
+ }>;
90
+ /** Sent when the user picks a year from the years grid. Jumps the view to
91
+ * that year and transitions the calendar to Months mode for further drilling. */
92
+ export declare const SelectedYear: import("foldkit/schema").CallableTaggedStruct<"SelectedYear", {
93
+ year: S.Int;
94
+ }>;
95
+ /** Sent when the user pages the years grid forward or backward by one
96
+ * window. Direction is `1` for next, `-1` for previous. */
97
+ export declare const PagedYears: import("foldkit/schema").CallableTaggedStruct<"PagedYears", {
98
+ direction: S.Literals<readonly [1, -1]>;
99
+ }>;
100
+ /** Sent when the grid container receives DOM focus. */
101
+ export declare const FocusedGrid: import("foldkit/schema").CallableTaggedStruct<"FocusedGrid", {}>;
102
+ /** Sent when the grid container loses DOM focus. */
103
+ export declare const BlurredGrid: import("foldkit/schema").CallableTaggedStruct<"BlurredGrid", {}>;
104
+ /** Sent when a long-lived session's "today" reference should be refreshed. */
105
+ export declare const RefreshedToday: import("foldkit/schema").CallableTaggedStruct<"RefreshedToday", {
106
+ today: S.Struct<{
107
+ readonly year: S.Int;
108
+ readonly month: S.Int;
109
+ readonly day: S.Int;
110
+ }>;
111
+ }>;
112
+ /** Sent when a FocusGrid command completes. */
113
+ export declare const CompletedFocusGrid: import("foldkit/schema").CallableTaggedStruct<"CompletedFocusGrid", {}>;
114
+ /** Union of all messages the calendar component can produce. */
115
+ export declare const Message: S.Union<readonly [import("foldkit/schema").CallableTaggedStruct<"ClickedDay", {
116
+ date: S.Struct<{
117
+ readonly year: S.Int;
118
+ readonly month: S.Int;
119
+ readonly day: S.Int;
120
+ }>;
121
+ }>, import("foldkit/schema").CallableTaggedStruct<"PressedKeyOnGrid", {
122
+ key: S.String;
123
+ isShift: S.Boolean;
124
+ }>, import("foldkit/schema").CallableTaggedStruct<"ClickedPreviousMonthButton", {}>, import("foldkit/schema").CallableTaggedStruct<"ClickedNextMonthButton", {}>, import("foldkit/schema").CallableTaggedStruct<"ClickedHeading", {}>, import("foldkit/schema").CallableTaggedStruct<"SelectedMonth", {
125
+ month: S.Int;
126
+ }>, import("foldkit/schema").CallableTaggedStruct<"SelectedYear", {
127
+ year: S.Int;
128
+ }>, import("foldkit/schema").CallableTaggedStruct<"PagedYears", {
129
+ direction: S.Literals<readonly [1, -1]>;
130
+ }>, import("foldkit/schema").CallableTaggedStruct<"FocusedGrid", {}>, import("foldkit/schema").CallableTaggedStruct<"BlurredGrid", {}>, import("foldkit/schema").CallableTaggedStruct<"RefreshedToday", {
131
+ today: S.Struct<{
132
+ readonly year: S.Int;
133
+ readonly month: S.Int;
134
+ readonly day: S.Int;
135
+ }>;
136
+ }>, import("foldkit/schema").CallableTaggedStruct<"CompletedFocusGrid", {}>]>;
137
+ export type Message = typeof Message.Type;
138
+ export type ClickedDay = typeof ClickedDay.Type;
139
+ export type PressedKeyOnGrid = typeof PressedKeyOnGrid.Type;
140
+ export type SelectedMonth = typeof SelectedMonth.Type;
141
+ export type SelectedYear = typeof SelectedYear.Type;
142
+ /** Emitted when the visible month changes due to navigation. Consumers of an
143
+ * inline calendar may use this to load month-scoped data (holidays, events).
144
+ * A click that commits a date in a different month emits `SelectedDate`, not
145
+ * `ChangedViewMonth`. The parent infers the month change from the date. */
146
+ export declare const ChangedViewMonth: import("foldkit/schema").CallableTaggedStruct<"ChangedViewMonth", {
147
+ year: S.Int;
148
+ month: S.Int;
149
+ }>;
150
+ /** Emitted when the user commits a date selection via click or keyboard. The
151
+ * calendar's internal state already reflects the new selection by the time
152
+ * this fires; consumers react by lifting the date into their domain state
153
+ * (closing a popover, advancing a form step, etc.). */
154
+ export declare const SelectedDate: import("foldkit/schema").CallableTaggedStruct<"SelectedDate", {
155
+ date: S.Struct<{
156
+ readonly year: S.Int;
157
+ readonly month: S.Int;
158
+ readonly day: S.Int;
159
+ }>;
160
+ }>;
161
+ /** Union of the calendar's OutMessages. */
162
+ export declare const OutMessage: S.Union<readonly [import("foldkit/schema").CallableTaggedStruct<"ChangedViewMonth", {
163
+ year: S.Int;
164
+ month: S.Int;
165
+ }>, import("foldkit/schema").CallableTaggedStruct<"SelectedDate", {
166
+ date: S.Struct<{
167
+ readonly year: S.Int;
168
+ readonly month: S.Int;
169
+ readonly day: S.Int;
170
+ }>;
171
+ }>]>;
172
+ export type OutMessage = typeof OutMessage.Type;
173
+ export type ChangedViewMonth = typeof ChangedViewMonth.Type;
174
+ export type SelectedDate = typeof SelectedDate.Type;
175
+ /** Configuration for creating a calendar model with `init`. */
176
+ export type InitConfig = Readonly<{
177
+ id: string;
178
+ today: CalendarDate;
179
+ initialSelectedDate?: CalendarDate;
180
+ locale?: Calendar.LocaleConfig;
181
+ minDate?: CalendarDate;
182
+ maxDate?: CalendarDate;
183
+ disabledDaysOfWeek?: ReadonlyArray<Calendar.DayOfWeek>;
184
+ disabledDates?: ReadonlyArray<CalendarDate>;
185
+ }>;
186
+ /** Creates an initial calendar model. The view month defaults to the month
187
+ * of the initial selected date, or today if no date is pre-selected. */
188
+ export declare const init: (config: InitConfig) => Model;
189
+ type UpdateReturn = readonly [
190
+ Model,
191
+ ReadonlyArray<Command.Command<Message>>,
192
+ Option.Option<OutMessage>
193
+ ];
194
+ /** Focuses the calendar grid container. Parent components like DatePicker
195
+ * dispatch this after opening to hand focus to the grid's keyboard layer. */
196
+ export declare const FocusGrid: Command.CommandDefinitionWithArgs<"FocusGrid", {
197
+ id: S.String;
198
+ }, Effect.Effect<{
199
+ readonly _tag: "CompletedFocusGrid";
200
+ }, never, never>>;
201
+ /** Programmatically selects a date on the calendar, committing it as the
202
+ * chosen value and moving the cursor onto it. Use this in controlled-mode
203
+ * handlers (when the view's `onSelectedDate` callback is provided) to write
204
+ * the selection back to the calendar's internal state.
205
+ *
206
+ * Equivalent to dispatching `ClickedDay({ date })` through `update`. */
207
+ export declare const selectDate: (model: Model, date: CalendarDate) => UpdateReturn;
208
+ /** Reflects an externally-sourced selected date onto the model without
209
+ * emitting an OutMessage. When a date is given, sets the selection and
210
+ * moves the view to the date's month so it stays visible, mirroring
211
+ * `selectDate`'s state change minus the `SelectedDate` announcement. Pass
212
+ * `Option.none()` to clear the selection (the view is left where it is).
213
+ * Use this to mirror external truth (a URL parameter, a saved draft) onto
214
+ * the calendar. Contrast with `selectDate`, a user or programmatic
215
+ * *choice* that emits `SelectedDate`. Returns the model directly because
216
+ * it produces no commands and no OutMessage. */
217
+ export declare const reflectSelectedDate: Reflect<Model, Option.Option<CalendarDate>>;
218
+ /** Reflects the minimum selectable date onto the model. Pass `Option.none()`
219
+ * to remove the minimum. Use this when the minimum derives from other Model
220
+ * state (e.g. a start date field whose current selection constrains an end
221
+ * date picker).
222
+ *
223
+ * Does NOT reconcile the current selection. If a previously-selected date
224
+ * is now below the new minimum, it remains selected. Callers should clear or
225
+ * reassign the selection explicitly if their domain requires it. */
226
+ export declare const reflectMinDate: Reflect<Model, Option.Option<CalendarDate>>;
227
+ /** Reflects the maximum selectable date onto the model. Pass `Option.none()`
228
+ * to remove the maximum. Does NOT reconcile the current selection. */
229
+ export declare const reflectMaxDate: Reflect<Model, Option.Option<CalendarDate>>;
230
+ /** Reflects the list of individually-disabled dates onto the model. Pass an
231
+ * empty array to clear. Does NOT reconcile the current selection. */
232
+ export declare const reflectDisabledDates: Reflect<Model, ReadonlyArray<CalendarDate>>;
233
+ /** Reflects the days of the week that are disabled (e.g. weekends) onto the
234
+ * model. Pass an empty array to clear. Does NOT reconcile the current
235
+ * selection. */
236
+ export declare const reflectDisabledDaysOfWeek: Reflect<Model, ReadonlyArray<Calendar.DayOfWeek>>;
237
+ /** Returns the calendar to Days mode regardless of current depth. Useful for
238
+ * standalone (non-popovered) consumers that want to wire their own back-out
239
+ * gesture. Popovered consumers like `DatePicker` don't need this. Escape
240
+ * closes the popover, and the calendar resets to Days on next open.
241
+ *
242
+ * Reconciles `maybeFocusedDate` to a date inside the visible (`viewYear`,
243
+ * `viewMonth`). Months/Years navigation can leave the cursor on a date
244
+ * outside the days grid (paged-away year, etc.), which would otherwise
245
+ * cause `aria-activedescendant` to point at a non-rendered cell and the
246
+ * next ArrowLeft to jump to the cursor's stale year. */
247
+ export declare const dropToDays: (model: Model) => Model;
248
+ /** Processes a calendar message and returns the next model, commands, and
249
+ * optional OutMessage. */
250
+ export declare const update: (model: Model, message: Message) => UpdateReturn;
251
+ /** Information about a single day cell in the rendered calendar grid. */
252
+ export type DayCell = Readonly<{
253
+ date: CalendarDate;
254
+ label: string;
255
+ cellAttributes: ReadonlyArray<ChildAttribute>;
256
+ buttonAttributes: ReadonlyArray<ChildAttribute>;
257
+ isSelected: boolean;
258
+ isFocused: boolean;
259
+ isToday: boolean;
260
+ isInViewMonth: boolean;
261
+ isDisabled: boolean;
262
+ }>;
263
+ /** A column header for the day grid's first row (day-of-week labels). */
264
+ export type ColumnHeader = Readonly<{
265
+ name: string;
266
+ attributes: ReadonlyArray<ChildAttribute>;
267
+ }>;
268
+ /** A single week row in the day grid, carrying its own row attributes (role,
269
+ * aria-rowindex) alongside its 7 day cells. */
270
+ export type Week = Readonly<{
271
+ attributes: ReadonlyArray<ChildAttribute>;
272
+ cells: ReadonlyArray<DayCell>;
273
+ }>;
274
+ /** Information about a single month cell in the rendered months grid.
275
+ * `label` is the locale-aware full month name (e.g. "September"); `shortLabel`
276
+ * is the locale-aware abbreviation (e.g. "Sep"). Render whichever fits the
277
+ * cell. Never substring `label` to abbreviate, since that's not safe across
278
+ * locales. */
279
+ export type MonthCell = Readonly<{
280
+ month: number;
281
+ label: string;
282
+ shortLabel: string;
283
+ cellAttributes: ReadonlyArray<ChildAttribute>;
284
+ buttonAttributes: ReadonlyArray<ChildAttribute>;
285
+ isSelected: boolean;
286
+ isFocused: boolean;
287
+ isCurrentMonth: boolean;
288
+ isDisabled: boolean;
289
+ }>;
290
+ /** Information about a single year cell in the rendered years grid. */
291
+ export type YearCell = Readonly<{
292
+ year: number;
293
+ label: string;
294
+ cellAttributes: ReadonlyArray<ChildAttribute>;
295
+ buttonAttributes: ReadonlyArray<ChildAttribute>;
296
+ isSelected: boolean;
297
+ isFocused: boolean;
298
+ isCurrentYear: boolean;
299
+ isDisabled: boolean;
300
+ }>;
301
+ /** Attributes provided to the consumer when rendering the day grid. */
302
+ export type DaysModeAttributes = Readonly<{
303
+ _tag: 'Days';
304
+ root: ReadonlyArray<ChildAttribute>;
305
+ previousMonthButton: ReadonlyArray<ChildAttribute>;
306
+ nextMonthButton: ReadonlyArray<ChildAttribute>;
307
+ headingButton: ReadonlyArray<ChildAttribute>;
308
+ heading: Readonly<{
309
+ id: string;
310
+ text: string;
311
+ }>;
312
+ grid: ReadonlyArray<ChildAttribute>;
313
+ headerRow: ReadonlyArray<ChildAttribute>;
314
+ columnHeaders: ReadonlyArray<ColumnHeader>;
315
+ weeks: ReadonlyArray<Week>;
316
+ }>;
317
+ /** Attributes provided to the consumer when rendering the months grid. The
318
+ * 12 cells are pre-built in calendar (locale-ordered). The consumer arranges
319
+ * them in whatever grid layout they prefer (3×4 is the typical choice). */
320
+ export type MonthsModeAttributes = Readonly<{
321
+ _tag: 'Months';
322
+ root: ReadonlyArray<ChildAttribute>;
323
+ headingButton: ReadonlyArray<ChildAttribute>;
324
+ heading: Readonly<{
325
+ id: string;
326
+ text: string;
327
+ }>;
328
+ grid: ReadonlyArray<ChildAttribute>;
329
+ cells: ReadonlyArray<MonthCell>;
330
+ }>;
331
+ /** Attributes provided to the consumer when rendering the years grid. The
332
+ * 12 cells span one paged window; prev/next buttons page by 12 years. */
333
+ export type YearsModeAttributes = Readonly<{
334
+ _tag: 'Years';
335
+ root: ReadonlyArray<ChildAttribute>;
336
+ previousPageButton: ReadonlyArray<ChildAttribute>;
337
+ nextPageButton: ReadonlyArray<ChildAttribute>;
338
+ heading: Readonly<{
339
+ id: string;
340
+ text: string;
341
+ }>;
342
+ grid: ReadonlyArray<ChildAttribute>;
343
+ cells: ReadonlyArray<YearCell>;
344
+ }>;
345
+ /** Discriminated union of attribute groups and derived data the calendar
346
+ * component provides to the consumer's `toView` callback. The variant
347
+ * matches `model.viewMode`. Pattern-match on `_tag` with `M.tagsExhaustive`
348
+ * to render each mode. */
349
+ export type CalendarAttributes = DaysModeAttributes | MonthsModeAttributes | YearsModeAttributes;
350
+ /** Per-render view inputs passed to `view` via `h.submodel`'s `viewInputs` field.
351
+ *
352
+ * The Calendar dispatches its own `ClickedDay` message on date commit
353
+ * and emits a `SelectedDate` OutMessage. Consumers handle date
354
+ * selection by pattern-matching the OutMessage in their
355
+ * `GotCalendarMessage` handler. */
356
+ export type ViewInputs = Readonly<{
357
+ toView: (attributes: CalendarAttributes) => Html;
358
+ previousMonthLabel?: string;
359
+ nextMonthLabel?: string;
360
+ previousYearsPageLabel?: string;
361
+ nextYearsPageLabel?: string;
362
+ daysHeadingButtonLabel?: string;
363
+ monthsHeadingButtonLabel?: string;
364
+ }>;
365
+ /** Renders an accessible calendar. Publishes mode-specific ARIA attribute
366
+ * bundles + derived cell data, then delegates layout to the consumer's
367
+ * `toView` callback. The variant of `CalendarAttributes` passed to
368
+ * `toView` matches `model.viewMode`. */
369
+ export declare const view: import("foldkit/submodel").View<{
370
+ readonly id: string;
371
+ readonly today: {
372
+ readonly year: number;
373
+ readonly month: number;
374
+ readonly day: number;
375
+ };
376
+ readonly viewYear: number;
377
+ readonly viewMonth: number;
378
+ readonly viewMode: "Days" | "Months" | "Years";
379
+ readonly maybeFocusedDate: Option.Option<{
380
+ readonly year: number;
381
+ readonly month: number;
382
+ readonly day: number;
383
+ }>;
384
+ readonly maybeSelectedDate: Option.Option<{
385
+ readonly year: number;
386
+ readonly month: number;
387
+ readonly day: number;
388
+ }>;
389
+ readonly isGridFocused: boolean;
390
+ readonly locale: {
391
+ readonly firstDayOfWeek: "Sunday" | "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday";
392
+ readonly monthNames: readonly [string, string, string, string, string, string, string, string, string, string, string, string];
393
+ readonly shortMonthNames: readonly [string, string, string, string, string, string, string, string, string, string, string, string];
394
+ readonly dayNames: readonly [string, string, string, string, string, string, string];
395
+ readonly shortDayNames: readonly [string, string, string, string, string, string, string];
396
+ };
397
+ readonly maybeMinDate: Option.Option<{
398
+ readonly year: number;
399
+ readonly month: number;
400
+ readonly day: number;
401
+ }>;
402
+ readonly maybeMaxDate: Option.Option<{
403
+ readonly year: number;
404
+ readonly month: number;
405
+ readonly day: number;
406
+ }>;
407
+ readonly disabledDaysOfWeek: readonly ("Sunday" | "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday")[];
408
+ readonly disabledDates: readonly {
409
+ readonly year: number;
410
+ readonly month: number;
411
+ readonly day: number;
412
+ }[];
413
+ }, {
414
+ readonly _tag: "ClickedDay";
415
+ readonly date: {
416
+ readonly year: number;
417
+ readonly month: number;
418
+ readonly day: number;
419
+ };
420
+ } | {
421
+ readonly _tag: "PressedKeyOnGrid";
422
+ readonly key: string;
423
+ readonly isShift: boolean;
424
+ } | {
425
+ readonly _tag: "ClickedPreviousMonthButton";
426
+ } | {
427
+ readonly _tag: "ClickedNextMonthButton";
428
+ } | {
429
+ readonly _tag: "ClickedHeading";
430
+ } | {
431
+ readonly _tag: "SelectedMonth";
432
+ readonly month: number;
433
+ } | {
434
+ readonly _tag: "SelectedYear";
435
+ readonly year: number;
436
+ } | {
437
+ readonly _tag: "PagedYears";
438
+ readonly direction: 1 | -1;
439
+ } | {
440
+ readonly _tag: "FocusedGrid";
441
+ } | {
442
+ readonly _tag: "BlurredGrid";
443
+ } | {
444
+ readonly _tag: "RefreshedToday";
445
+ readonly today: {
446
+ readonly year: number;
447
+ readonly month: number;
448
+ readonly day: number;
449
+ };
450
+ } | {
451
+ readonly _tag: "CompletedFocusGrid";
452
+ }, Readonly<{
453
+ toView: (attributes: CalendarAttributes) => Html;
454
+ previousMonthLabel?: string;
455
+ nextMonthLabel?: string;
456
+ previousYearsPageLabel?: string;
457
+ nextYearsPageLabel?: string;
458
+ daysHeadingButtonLabel?: string;
459
+ monthsHeadingButtonLabel?: string;
460
+ }>>;
461
+ export {};
462
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calendar/index.ts"],"names":[],"mappings":"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"}