@lekoala/date-picker 0.1.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 (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +236 -0
  3. package/custom-elements.json +366 -0
  4. package/dist/date-picker.css +344 -0
  5. package/dist/date-picker.js +2693 -0
  6. package/dist/date-picker.min.css +1 -0
  7. package/dist/date-picker.min.js +17 -0
  8. package/dist/date-picker.standalone.min.js +361 -0
  9. package/dist/types/calendar-model.d.ts +34 -0
  10. package/dist/types/calendar-model.d.ts.map +1 -0
  11. package/dist/types/date-calendar.d.ts +228 -0
  12. package/dist/types/date-calendar.d.ts.map +1 -0
  13. package/dist/types/date-field.d.ts +94 -0
  14. package/dist/types/date-field.d.ts.map +1 -0
  15. package/dist/types/date-picker.d.ts +258 -0
  16. package/dist/types/date-picker.d.ts.map +1 -0
  17. package/dist/types/date-range.d.ts +89 -0
  18. package/dist/types/date-range.d.ts.map +1 -0
  19. package/dist/types/date.d.ts +61 -0
  20. package/dist/types/date.d.ts.map +1 -0
  21. package/dist/types/define.d.ts +2 -0
  22. package/dist/types/define.d.ts.map +1 -0
  23. package/dist/types/index.d.ts +9 -0
  24. package/dist/types/index.d.ts.map +1 -0
  25. package/dist/types/intl.d.ts +33 -0
  26. package/dist/types/intl.d.ts.map +1 -0
  27. package/dist/types/locales/ar.d.ts +22 -0
  28. package/dist/types/locales/ar.d.ts.map +1 -0
  29. package/dist/types/locales/de.d.ts +22 -0
  30. package/dist/types/locales/de.d.ts.map +1 -0
  31. package/dist/types/locales/en.d.ts +22 -0
  32. package/dist/types/locales/en.d.ts.map +1 -0
  33. package/dist/types/locales/es.d.ts +22 -0
  34. package/dist/types/locales/es.d.ts.map +1 -0
  35. package/dist/types/locales/fr.d.ts +22 -0
  36. package/dist/types/locales/fr.d.ts.map +1 -0
  37. package/dist/types/locales/hi.d.ts +22 -0
  38. package/dist/types/locales/hi.d.ts.map +1 -0
  39. package/dist/types/locales/id.d.ts +22 -0
  40. package/dist/types/locales/id.d.ts.map +1 -0
  41. package/dist/types/locales/it.d.ts +22 -0
  42. package/dist/types/locales/it.d.ts.map +1 -0
  43. package/dist/types/locales/ja.d.ts +22 -0
  44. package/dist/types/locales/ja.d.ts.map +1 -0
  45. package/dist/types/locales/ko.d.ts +22 -0
  46. package/dist/types/locales/ko.d.ts.map +1 -0
  47. package/dist/types/locales/nl.d.ts +22 -0
  48. package/dist/types/locales/nl.d.ts.map +1 -0
  49. package/dist/types/locales/pl.d.ts +22 -0
  50. package/dist/types/locales/pl.d.ts.map +1 -0
  51. package/dist/types/locales/pt-BR.d.ts +22 -0
  52. package/dist/types/locales/pt-BR.d.ts.map +1 -0
  53. package/dist/types/locales/pt-PT.d.ts +22 -0
  54. package/dist/types/locales/pt-PT.d.ts.map +1 -0
  55. package/dist/types/locales/ru.d.ts +22 -0
  56. package/dist/types/locales/ru.d.ts.map +1 -0
  57. package/dist/types/locales/tr.d.ts +22 -0
  58. package/dist/types/locales/tr.d.ts.map +1 -0
  59. package/dist/types/locales/zh-CN.d.ts +22 -0
  60. package/dist/types/locales/zh-CN.d.ts.map +1 -0
  61. package/dist/types/messages.d.ts +43 -0
  62. package/dist/types/messages.d.ts.map +1 -0
  63. package/dist/types/source.d.ts +28 -0
  64. package/dist/types/source.d.ts.map +1 -0
  65. package/docs/ACCESSIBILITY.md +128 -0
  66. package/docs/API.md +289 -0
  67. package/docs/ARCHITECTURE.md +183 -0
  68. package/docs/AT-CHECKLIST.md +63 -0
  69. package/docs/CALENDAR-INTEGRATION.md +70 -0
  70. package/docs/DECISIONS.md +40 -0
  71. package/docs/MIGRATION-FLATPICKR.md +92 -0
  72. package/docs/ROADMAP.md +105 -0
  73. package/docs/TESTING.md +73 -0
  74. package/docs/USE_CASES.md +128 -0
  75. package/package.json +174 -0
  76. package/src/calendar-model.js +80 -0
  77. package/src/date-calendar.js +800 -0
  78. package/src/date-field.js +203 -0
  79. package/src/date-picker.css +344 -0
  80. package/src/date-picker.js +1140 -0
  81. package/src/date-range.js +172 -0
  82. package/src/date.js +203 -0
  83. package/src/define.js +9 -0
  84. package/src/index.js +15 -0
  85. package/src/intl.js +155 -0
  86. package/src/locales/ar.js +20 -0
  87. package/src/locales/de.js +20 -0
  88. package/src/locales/en.js +20 -0
  89. package/src/locales/es.js +20 -0
  90. package/src/locales/fr.js +20 -0
  91. package/src/locales/hi.js +20 -0
  92. package/src/locales/id.js +20 -0
  93. package/src/locales/it.js +20 -0
  94. package/src/locales/ja.js +20 -0
  95. package/src/locales/ko.js +20 -0
  96. package/src/locales/nl.js +20 -0
  97. package/src/locales/pl.js +20 -0
  98. package/src/locales/pt-BR.js +20 -0
  99. package/src/locales/pt-PT.js +20 -0
  100. package/src/locales/ru.js +20 -0
  101. package/src/locales/tr.js +20 -0
  102. package/src/locales/zh-CN.js +20 -0
  103. package/src/messages.js +31 -0
  104. package/src/source.js +50 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 LeKoala
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,236 @@
1
+ # @lekoala/date-picker
2
+
3
+ Small, native-first date picker and inline calendar primitives.
4
+
5
+ > v0.1: the interaction contract, event names, public styling tokens and the component API are frozen — see [docs/DECISIONS.md](docs/DECISIONS.md). Internal DOM and class names are `.dp-*` implementation details and stay private.
6
+
7
+ This project fills the gap between a normal editable date field and a full scheduling calendar. A plain date input remains the right answer for simple CMS/editing forms. This component becomes useful when a date has context: availability, disabled days, annotations, remote state, start/end relationships, or a mini calendar that navigates another view.
8
+
9
+ ## The two primitives
10
+
11
+ ### `<date-calendar>`
12
+
13
+ An inline calendar with real month/year navigation, keyboard support and three separate pieces of state:
14
+
15
+ - `display` — the month being rendered (`YYYY-MM`);
16
+ - `focusedDate` — the roving keyboard target (`YYYY-MM-DD`);
17
+ - `value` — the selected date (`YYYY-MM-DD`, optional).
18
+
19
+ User activation is exposed separately as `dateactivate`. This is what makes the same calendar useful as a selector **and** as a mini navigator.
20
+
21
+ ```html
22
+ <date-calendar value="2026-09-10" fixed-weeks></date-calendar>
23
+ ```
24
+
25
+ For a navigator that should not own a selection:
26
+
27
+ ```html
28
+ <date-calendar id="mini" selection="none" fixed-weeks show-week-numbers></date-calendar>
29
+ <script type="module">
30
+ const mini = document.querySelector("#mini");
31
+ mini.addEventListener("dateactivate", (event) => {
32
+ agenda.gotoDate(event.detail.date);
33
+ });
34
+ </script>
35
+ ```
36
+
37
+ ### `<date-picker>`
38
+
39
+ A composition around a real editable text input. The user sees and edits a short locale-aware numeric date while form submission stays canonical ISO.
40
+
41
+ **Use `<date-picker>` when choosing a date benefits from calendar context.** For a simple editable date field, a normal input with formatting and validation is the right tool instead.
42
+
43
+ ```html
44
+ <date-picker value="2026-09-10" locale="fr-BE">
45
+ <input name="appointment_date" required>
46
+ </date-picker>
47
+ ```
48
+
49
+ With JavaScript enabled the input displays `10/09/2026`; the hidden submitted value remains `2026-09-10`. The visible input keeps the label, focus, required state and validation UI.
50
+
51
+ By default the calendar opens when the field receives focus — without stealing the keyboard focus, so typing works immediately. `open-on-focus="false"` makes the calendar opt-in (trigger button or `ArrowDown`). Under `readonly` the value stays editable-by-calendar-off but is still submitted; under `disabled` the field is also unsubmitted.
52
+
53
+ ## Start/end ranges
54
+
55
+ Two product shapes cover ranges.
56
+
57
+ **One shared calendar surface** — two editable fields wired to a single picker popup:
58
+
59
+ ```html
60
+ <date-picker range>
61
+ <input data-range-start name="arrival" aria-label="Arrival">
62
+ <input data-range-end name="departure" aria-label="Departure">
63
+ </date-picker>
64
+ ```
65
+
66
+ Opening from a field targets that bound; picking the first date moves the active endpoint to the other bound without closing, and the second pick completes and closes. `picker.range` is the atomic `{ start, end }` API (single `rangechange` event).
67
+
68
+ **Two independent pickers** — a small external link for visually separate fields:
69
+
70
+ ```js
71
+ import { linkDateRange } from "@lekoala/date-picker";
72
+
73
+ const cleanup = linkDateRange(startPicker, endPicker);
74
+ ```
75
+
76
+ The relationship applies `end >= start` and `start <= end` as effective bounds. Neither picker knows about its sibling.
77
+
78
+ ## Availability and per-day metadata
79
+
80
+ The calendar accepts a source function or `{ load() }` object with the same abortable shape used elsewhere in LeKoala components:
81
+
82
+ ```js
83
+ calendar.source = async ({ start, end }, { signal }) => {
84
+ const response = await fetch(`/availability?start=${start}&end=${end}`, { signal });
85
+ return response.json();
86
+ };
87
+ ```
88
+
89
+ Accepted payloads are deliberately simple:
90
+
91
+ ```js
92
+ {
93
+ dates: {
94
+ "2026-09-10": {
95
+ enabled: true,
96
+ description: "Available morning and afternoon",
97
+ morning: true,
98
+ afternoon: true
99
+ }
100
+ }
101
+ }
102
+ ```
103
+
104
+ Business metadata is not interpreted by the core. Consumers can add visual content without replacing the grid cell or its accessibility semantics:
105
+
106
+ ```js
107
+ calendar.renderDay = (_date, state) => {
108
+ if (!state.morning && !state.afternoon) return "";
109
+ return `${state.morning ? "●" : "○"}${state.afternoon ? "●" : "○"}`;
110
+ };
111
+ ```
112
+
113
+ ## Date math
114
+
115
+ The public value model is intentionally boring: canonical `YYYY-MM-DD` strings. There is no public `Date`, timestamp, timezone or `Temporal` dependency.
116
+
117
+ Pure civil-date helpers are exported under `dates`:
118
+
119
+ ```js
120
+ import { dates } from "@lekoala/date-picker";
121
+
122
+ const weeks = dates.getMonthWeeks("2026-09-03", { firstDay: 1 });
123
+ ```
124
+
125
+ `getMonthWeeks()` returns the true 4–6 full civil weeks covering the month. It never pads to six rows. `fixed-weeks` is a rendering choice made by `<date-calendar>`.
126
+
127
+ ## Accessibility baseline
128
+
129
+ The calendar follows the WAI-ARIA date-picker/grid interaction model:
130
+
131
+ - semantic `table[role="grid"]`;
132
+ - one roving `tabindex="0"` grid cell;
133
+ - arrow keys move by day/week;
134
+ - Home/End move to week boundaries;
135
+ - PageUp/PageDown move by month;
136
+ - Shift+PageUp/PageDown move by year;
137
+ - Enter/Space activate a date;
138
+ - keyboard movement never implicitly selects;
139
+ - `aria-selected` identifies the selected date;
140
+ - `aria-current="date"` identifies today;
141
+ - abbreviated weekday headers keep full `abbr` names.
142
+
143
+ The picker popup uses native Popover for the top layer and `@lekoala/floating` for geometry. It has `role="dialog"`, but it is intentionally **not** marked `aria-modal` because the current implementation does not inert the rest of the document.
144
+
145
+ When the popup opens on the field's focus, grid navigation is reachable via `ArrowDown` (or the trigger button) so the focus-restore/Escape flow stays predictable.
146
+
147
+ See [docs/ACCESSIBILITY.md](docs/ACCESSIBILITY.md).
148
+
149
+ ## Install / develop
150
+
151
+ ```bash
152
+ bun install
153
+ bun run dev
154
+ ```
155
+
156
+ If a previous `bun run dev` is still holding port `4859`, clear it with `bun run dev:kill` (or restart in one go with `bun run dev:restart`).
157
+
158
+ Tooling is aligned with the current LeKoala component repos:
159
+
160
+ - Bun 1.4.2
161
+ - TypeScript 7.0.2 (`checkJs` + declaration emit)
162
+ - Biome 2.5.11
163
+ - Playwright 1.62.1
164
+ - `@lekoala/floating ^0.1.1`
165
+
166
+ Useful commands:
167
+
168
+ ```bash
169
+ bun run test
170
+ bun run typecheck
171
+ bun run lint
172
+ bun run build
173
+ bun run test:browser
174
+ bun run test:browser:all
175
+ bun run check:all
176
+ ```
177
+
178
+ ## Build outputs
179
+
180
+ `bun run build` produces:
181
+
182
+ ```text
183
+ dist/date-picker.js
184
+ dist/date-picker.min.js
185
+ dist/date-picker.css
186
+ dist/date-picker.min.css
187
+ dist/date-picker.standalone.min.js
188
+ dist/types/**
189
+ ```
190
+
191
+ The default ESM exports point at `src/`, matching the native-first development style of `@lekoala/combobox`. The classic build is file:// friendly; the standalone build additionally injects the component CSS.
192
+
193
+ ## Scope
194
+
195
+ Included in v0.1:
196
+
197
+ - inline single-date selection;
198
+ - mini-calendar/navigation-only use;
199
+ - month and year selection;
200
+ - previous/next navigation;
201
+ - editable localized input + canonical submitted value;
202
+ - min/max and custom disabled rules;
203
+ - presentation-only range band (`highlightedRange`);
204
+ - shared-calendar two-field range picker (`<date-picker range>`);
205
+ - linked start/end pickers (`linkDateRange`);
206
+ - async per-day state with cancellation;
207
+ - custom day decorations that cannot replace the accessible cell;
208
+ - fixed six-row presentation as an opt-in;
209
+ - ISO week numbers;
210
+ - keyboard and focus contracts.
211
+
212
+ Deliberately out of scope for v0.1:
213
+
214
+ - time or datetime picking;
215
+ - timezones;
216
+ - in-place single-calendar range *selection interaction* (use the two-field picker);
217
+ - multi-date selection;
218
+ - recurrence;
219
+ - natural-language parsing;
220
+ - plugin registry;
221
+ - virtualized months;
222
+ - scheduling/time slots.
223
+
224
+ ## Docs
225
+
226
+ - [Changelog](CHANGELOG.md)
227
+ - [Architecture](docs/ARCHITECTURE.md)
228
+ - [Decisions](docs/DECISIONS.md)
229
+ - [API](docs/API.md)
230
+ - [Accessibility checklist](docs/AT-CHECKLIST.md)
231
+ - [Use cases](docs/USE_CASES.md)
232
+ - [Accessibility](docs/ACCESSIBILITY.md)
233
+ - [Testing](docs/TESTING.md)
234
+ - [Roadmap](docs/ROADMAP.md)
235
+ - [Calendar integration](docs/CALENDAR-INTEGRATION.md)
236
+ - [Flatpickr/Formidable migration](docs/MIGRATION-FLATPICKR.md)
@@ -0,0 +1,366 @@
1
+ {
2
+ "schemaVersion": "2.1.0",
3
+ "readme": "README.md",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "src/date-calendar.js",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "name": "DateCalendarElement",
12
+ "tagName": "date-calendar",
13
+ "attributes": [
14
+ {
15
+ "name": "value"
16
+ },
17
+ {
18
+ "name": "display"
19
+ },
20
+ {
21
+ "name": "min"
22
+ },
23
+ {
24
+ "name": "max"
25
+ },
26
+ {
27
+ "name": "first-day"
28
+ },
29
+ {
30
+ "name": "locale"
31
+ },
32
+ {
33
+ "name": "fixed-weeks"
34
+ },
35
+ {
36
+ "name": "show-week-numbers"
37
+ },
38
+ {
39
+ "name": "selection"
40
+ }
41
+ ],
42
+ "members": [
43
+ {
44
+ "kind": "getter",
45
+ "name": "locale"
46
+ },
47
+ {
48
+ "kind": "getter",
49
+ "name": "value"
50
+ },
51
+ {
52
+ "kind": "getter",
53
+ "name": "display"
54
+ },
55
+ {
56
+ "kind": "getter",
57
+ "name": "focusedDate"
58
+ },
59
+ {
60
+ "kind": "getter",
61
+ "name": "min"
62
+ },
63
+ {
64
+ "kind": "getter",
65
+ "name": "max"
66
+ },
67
+ {
68
+ "kind": "getter",
69
+ "name": "firstDay"
70
+ },
71
+ {
72
+ "kind": "getter",
73
+ "name": "selection"
74
+ },
75
+ {
76
+ "kind": "getter",
77
+ "name": "highlightedRange"
78
+ },
79
+ {
80
+ "kind": "getter",
81
+ "name": "fixedWeeks"
82
+ },
83
+ {
84
+ "kind": "getter",
85
+ "name": "showWeekNumbers"
86
+ },
87
+ {
88
+ "kind": "getter",
89
+ "name": "messages"
90
+ },
91
+ {
92
+ "kind": "getter",
93
+ "name": "source"
94
+ },
95
+ {
96
+ "kind": "getter",
97
+ "name": "dateState"
98
+ },
99
+ {
100
+ "kind": "getter",
101
+ "name": "renderDay"
102
+ },
103
+ {
104
+ "kind": "getter",
105
+ "name": "isDateDisabled"
106
+ },
107
+ {
108
+ "kind": "method",
109
+ "name": "getDateState"
110
+ },
111
+ {
112
+ "kind": "method",
113
+ "name": "refreshSource"
114
+ },
115
+ {
116
+ "kind": "method",
117
+ "name": "ensureDate"
118
+ },
119
+ {
120
+ "kind": "method",
121
+ "name": "previousMonth"
122
+ },
123
+ {
124
+ "kind": "method",
125
+ "name": "nextMonth"
126
+ },
127
+ {
128
+ "kind": "method",
129
+ "name": "focusDate"
130
+ },
131
+ {
132
+ "kind": "method",
133
+ "name": "focusGrid"
134
+ },
135
+ {
136
+ "kind": "method",
137
+ "name": "render"
138
+ }
139
+ ],
140
+ "events": [
141
+ {
142
+ "name": "dateactivate"
143
+ },
144
+ {
145
+ "name": "datechange"
146
+ },
147
+ {
148
+ "name": "dateinvalid"
149
+ },
150
+ {
151
+ "name": "dateloadend"
152
+ },
153
+ {
154
+ "name": "dateloaderror"
155
+ },
156
+ {
157
+ "name": "dateloadstart"
158
+ },
159
+ {
160
+ "name": "displaychange"
161
+ }
162
+ ],
163
+ "cssProperties": [
164
+ {
165
+ "name": "--dp-bg"
166
+ },
167
+ {
168
+ "name": "--dp-fg"
169
+ },
170
+ {
171
+ "name": "--dp-muted"
172
+ },
173
+ {
174
+ "name": "--dp-border"
175
+ },
176
+ {
177
+ "name": "--dp-hover"
178
+ },
179
+ {
180
+ "name": "--dp-accent"
181
+ },
182
+ {
183
+ "name": "--dp-accent-fg"
184
+ },
185
+ {
186
+ "name": "--dp-radius"
187
+ },
188
+ {
189
+ "name": "--dp-day-size"
190
+ },
191
+ {
192
+ "name": "--dp-gap"
193
+ }
194
+ ]
195
+ }
196
+ ],
197
+ "exports": [
198
+ {
199
+ "kind": "js",
200
+ "name": "DateCalendarElement",
201
+ "declaration": {
202
+ "name": "DateCalendarElement",
203
+ "module": "src/date-calendar.js"
204
+ }
205
+ }
206
+ ]
207
+ },
208
+ {
209
+ "kind": "javascript-module",
210
+ "path": "src/date-picker.js",
211
+ "declarations": [
212
+ {
213
+ "kind": "class",
214
+ "name": "DatePickerElement",
215
+ "tagName": "date-picker",
216
+ "attributes": [
217
+ {
218
+ "name": "value"
219
+ },
220
+ {
221
+ "name": "locale"
222
+ },
223
+ {
224
+ "name": "min"
225
+ },
226
+ {
227
+ "name": "max"
228
+ },
229
+ {
230
+ "name": "open-on-focus"
231
+ }
232
+ ],
233
+ "members": [
234
+ {
235
+ "kind": "getter",
236
+ "name": "input"
237
+ },
238
+ {
239
+ "kind": "getter",
240
+ "name": "calendar"
241
+ },
242
+ {
243
+ "kind": "getter",
244
+ "name": "value"
245
+ },
246
+ {
247
+ "kind": "getter",
248
+ "name": "range"
249
+ },
250
+ {
251
+ "kind": "getter",
252
+ "name": "locale"
253
+ },
254
+ {
255
+ "kind": "getter",
256
+ "name": "min"
257
+ },
258
+ {
259
+ "kind": "getter",
260
+ "name": "max"
261
+ },
262
+ {
263
+ "kind": "getter",
264
+ "name": "openOnFocus"
265
+ },
266
+ {
267
+ "kind": "getter",
268
+ "name": "open"
269
+ },
270
+ {
271
+ "kind": "getter",
272
+ "name": "messages"
273
+ },
274
+ {
275
+ "kind": "getter",
276
+ "name": "source"
277
+ },
278
+ {
279
+ "kind": "getter",
280
+ "name": "dateState"
281
+ },
282
+ {
283
+ "kind": "getter",
284
+ "name": "renderDay"
285
+ },
286
+ {
287
+ "kind": "getter",
288
+ "name": "isDateDisabled"
289
+ },
290
+ {
291
+ "kind": "method",
292
+ "name": "validate"
293
+ },
294
+ {
295
+ "kind": "method",
296
+ "name": "show"
297
+ },
298
+ {
299
+ "kind": "method",
300
+ "name": "hide"
301
+ }
302
+ ],
303
+ "events": [
304
+ {
305
+ "name": "close"
306
+ },
307
+ {
308
+ "name": "dateinvalid"
309
+ },
310
+ {
311
+ "name": "open"
312
+ },
313
+ {
314
+ "name": "rangechange"
315
+ },
316
+ {
317
+ "name": "valuechange"
318
+ }
319
+ ],
320
+ "cssProperties": [
321
+ {
322
+ "name": "--dp-bg"
323
+ },
324
+ {
325
+ "name": "--dp-fg"
326
+ },
327
+ {
328
+ "name": "--dp-muted"
329
+ },
330
+ {
331
+ "name": "--dp-border"
332
+ },
333
+ {
334
+ "name": "--dp-hover"
335
+ },
336
+ {
337
+ "name": "--dp-accent"
338
+ },
339
+ {
340
+ "name": "--dp-accent-fg"
341
+ },
342
+ {
343
+ "name": "--dp-radius"
344
+ },
345
+ {
346
+ "name": "--dp-day-size"
347
+ },
348
+ {
349
+ "name": "--dp-gap"
350
+ }
351
+ ]
352
+ }
353
+ ],
354
+ "exports": [
355
+ {
356
+ "kind": "js",
357
+ "name": "DatePickerElement",
358
+ "declaration": {
359
+ "name": "DatePickerElement",
360
+ "module": "src/date-picker.js"
361
+ }
362
+ }
363
+ ]
364
+ }
365
+ ]
366
+ }