@0001-labs/design-system-1 0.3.0-alpha.20 → 0.3.0-alpha.21

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 (43) hide show
  1. package/DS1/0-face/bento.ts +84 -0
  2. package/DS1/0-face/calendar.ts +2 -2
  3. package/DS1/1-root/bento.css +97 -0
  4. package/DS1/1-root/card.css +6 -1
  5. package/DS1/1-root/cjk.css +1 -1
  6. package/DS1/1-root/controls.css +1 -0
  7. package/DS1/1-root/fonts.css +1 -1
  8. package/DS1/1-root/one.css +1 -1
  9. package/DS1/1-root/one.semantic.css +1 -1
  10. package/DS1/3-unit/calendar-base.ts +31 -22
  11. package/DS1/3-unit/ds-bento.ts +67 -0
  12. package/DS1/3-unit/ds-calendar.ts +477 -22
  13. package/DS1/3-unit/styles/ds-bento.css +66 -0
  14. package/DS1/3-unit/styles/ds-calendar.css +119 -1
  15. package/DS1/index.ts +1 -1
  16. package/dist/0-face/bento.d.ts +41 -0
  17. package/dist/0-face/bento.d.ts.map +1 -0
  18. package/dist/0-face/bento.js +77 -0
  19. package/dist/0-face/calendar.js +2 -2
  20. package/dist/3-unit/calendar-base.d.ts +17 -12
  21. package/dist/3-unit/calendar-base.d.ts.map +1 -1
  22. package/dist/3-unit/calendar-base.js +21 -16
  23. package/dist/3-unit/ds-bento.d.ts +31 -0
  24. package/dist/3-unit/ds-bento.d.ts.map +1 -0
  25. package/dist/3-unit/ds-bento.js +47 -0
  26. package/dist/3-unit/ds-calendar-large.d.ts +3 -4
  27. package/dist/3-unit/ds-calendar-large.d.ts.map +1 -1
  28. package/dist/3-unit/ds-calendar.d.ts +139 -12
  29. package/dist/3-unit/ds-calendar.d.ts.map +1 -1
  30. package/dist/3-unit/ds-calendar.js +464 -23
  31. package/dist/design-system-1.bundle.js +1124 -1094
  32. package/dist/design-system-1.bundle.js.map +1 -1
  33. package/dist/design-system-1.bundle.min.js +2483 -2456
  34. package/dist/design-system-1.bundle.min.js.map +1 -1
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/package.json +1 -1
  39. package/DS1/3-unit/ds-date-picker.ts +0 -540
  40. package/DS1/3-unit/styles/ds-date-picker.css +0 -124
  41. package/dist/3-unit/ds-date-picker.d.ts +0 -203
  42. package/dist/3-unit/ds-date-picker.d.ts.map +0 -1
  43. package/dist/3-unit/ds-date-picker.js +0 -499
@@ -1,14 +1,39 @@
1
1
  import { type PropertyValues } from "lit";
2
+ import { type DateLength } from "../0-face/format";
2
3
  import { type CalendarEvent, type Day } from "../0-face/calendar";
3
4
  import { CalendarBase } from "./calendar-base";
4
5
  import "../2-core/ds-icon";
5
6
  export * from "./calendar-base";
7
+ /** One end of a picker's value: its day and, when it has one, its time (`14:30`). */
8
+ export interface CalendarEnd {
9
+ day: Day;
10
+ time: string;
11
+ }
12
+ /** Reads a value: `2026-10-21`, `2026-10-21T14:30`, or two of them joined by `/`. */
13
+ export declare function readDateValue(value: string | null | undefined): {
14
+ start?: CalendarEnd;
15
+ end?: CalendarEnd;
16
+ };
17
+ /**
18
+ * Writes a value from its ends, the times only with `time`. An end that is
19
+ * the same moment as the start leaves the value one day.
20
+ */
21
+ export declare function writeDateValue(start: CalendarEnd | undefined, end: CalendarEnd | undefined, options: {
22
+ time: boolean;
23
+ }): string;
24
+ /** Reads what a person typed: a day written `YYYY-MM-DD`, or a date the browser can read ("Oct 21, 2026"). */
25
+ export declare function parseTypedDay(text: string): Day | null;
6
26
  /**
7
27
  * @element ds-calendar
8
28
  * @prop {string} month - The month shown, `YYYY-MM` (or a day in it). The
9
29
  * selected day's month, or today's, when left out; the arrows change it.
10
- * @prop {string} value - The selected day, `YYYY-MM-DD`.
11
- * @prop {boolean} selectable - Pressing a day selects it and fires `change`.
30
+ * @prop {string} value - The selected day, `YYYY-MM-DD`, or a range,
31
+ * `YYYY-MM-DD/YYYY-MM-DD`; in a picker either end may carry a time
32
+ * (`2026-10-21T09:00`).
33
+ * @prop {boolean} selectable - Pressing a day selects it and fires `change`:
34
+ * the first press one day, the next the end of a range from it.
35
+ * @prop {boolean} picker - A field one control high that opens the small
36
+ * month below it, with the days to type, Include time and Clear.
12
37
  * @prop {boolean} compact - One square per day, no events written out: the
13
38
  * small month.
14
39
  * @prop {number} dayWidth - Squares per day (`day-width`): 4 by default, 1
@@ -19,8 +44,6 @@ export * from "./calendar-base";
19
44
  * @prop {boolean} fixed - Always draw six weeks, so the month keeps its height.
20
45
  * @prop {boolean} outsideDays - Draw the days of the months before and after
21
46
  * in the title grey (`outside-days`); pressing one moves there.
22
- * @prop {boolean} range - A selectable calendar chooses a first and a last
23
- * day; `value` is then `YYYY-MM-DD/YYYY-MM-DD`.
24
47
  * @prop {boolean} noHeader - Leave out the title and arrows (`no-header`).
25
48
  * @prop {boolean} noToday - Leave out the Today button (`no-today`).
26
49
  * @prop {string} min - The first day a person may choose.
@@ -28,20 +51,35 @@ export * from "./calendar-base";
28
51
  * @prop {string} weekStart - The week's first day (`week-start`), 0–6 from
29
52
  * Sunday or its English name; the language's own by default.
30
53
  * @prop {string} today - The day drawn as today; the reader's own by default.
54
+ * @prop {string} label - The grid's name, or a picker's: a translation key,
55
+ * or literal words with `literal`.
56
+ * @prop {string} name - The form field's name.
57
+ * @prop {string} placeholder - A picker's words before a day is chosen; the
58
+ * shared "Choose a date" by default.
59
+ * @prop {string} length - How a picker writes a day: `short`, `medium` (the
60
+ * default) or `long`.
61
+ * @prop {boolean} time - A picker chooses a time with each day (Include time).
62
+ * @prop {boolean} required - A form needs a value; a picker leaves Clear out.
63
+ * @prop {boolean} disabled - A picker cannot be opened.
64
+ * @prop {boolean} open - A picker's month is open.
31
65
  * @prop {CalendarEvent[]} events - What happens on the days (property only).
32
66
  *
33
67
  * @fires day-press - A day was pressed or chosen with Enter or Space;
34
68
  * `{ day, events }`. Cancelable: cancelled, a selectable calendar keeps its value.
35
- * @fires change - A person selected a day; `{ value, previous }`.
69
+ * @fires change - A person selected a day or ended a range;
70
+ * `{ value, previous, start, end }`, `end` empty while it is still to come.
71
+ * @fires input - A picker's value changed, the same moment as `change`.
36
72
  * @fires event-press - An event was pressed; `{ event, day }`.
37
73
  * @fires navigate - A person moved to another month; `{ month }`.
74
+ * @fires ds-calendar-toggle - A picker's month opened or closed; `{ open }`.
38
75
  *
39
76
  * @example
40
77
  * <ds-calendar month="2026-10" week-numbers></ds-calendar>
41
- * <ds-calendar compact selectable value="2026-10-18"></ds-calendar>
42
- * <ds-calendar compact selectable range value="2026-10-18/2026-10-24"></ds-calendar>
78
+ * <ds-calendar compact selectable value="2026-10-18/2026-10-24"></ds-calendar>
79
+ * <ds-calendar picker label="When" literal name="when" value="2026-10-21/2026-10-24"></ds-calendar>
43
80
  */
44
81
  export declare class Calendar extends CalendarBase {
82
+ static formAssociated: boolean;
45
83
  static properties: {
46
84
  month: {
47
85
  type: StringConstructor;
@@ -82,7 +120,37 @@ export declare class Calendar extends CalendarBase {
82
120
  attribute: string;
83
121
  reflect: boolean;
84
122
  };
123
+ picker: {
124
+ type: BooleanConstructor;
125
+ reflect: boolean;
126
+ };
127
+ name: {
128
+ type: StringConstructor;
129
+ reflect: boolean;
130
+ };
131
+ placeholder: {
132
+ type: StringConstructor;
133
+ };
134
+ length: {
135
+ type: StringConstructor;
136
+ };
137
+ time: {
138
+ type: BooleanConstructor;
139
+ reflect: boolean;
140
+ };
141
+ required: {
142
+ type: BooleanConstructor;
143
+ reflect: boolean;
144
+ };
145
+ disabled: {
146
+ type: BooleanConstructor;
147
+ reflect: boolean;
148
+ };
85
149
  open: {
150
+ type: BooleanConstructor;
151
+ reflect: boolean;
152
+ };
153
+ unfolded: {
86
154
  state: boolean;
87
155
  };
88
156
  value: {
@@ -106,10 +174,6 @@ export declare class Calendar extends CalendarBase {
106
174
  type: BooleanConstructor;
107
175
  reflect: boolean;
108
176
  };
109
- range: {
110
- type: BooleanConstructor;
111
- reflect: boolean;
112
- };
113
177
  label: {
114
178
  type: StringConstructor;
115
179
  };
@@ -126,6 +190,9 @@ export declare class Calendar extends CalendarBase {
126
190
  hoverDay: {
127
191
  state: boolean;
128
192
  };
193
+ endPending: {
194
+ state: boolean;
195
+ };
129
196
  };
130
197
  static styles: import("lit").CSSResult[];
131
198
  month: string | undefined;
@@ -137,17 +204,37 @@ export declare class Calendar extends CalendarBase {
137
204
  outsideDays: boolean;
138
205
  noHeader: boolean;
139
206
  noToday: boolean;
207
+ picker: boolean;
208
+ name: string | undefined;
209
+ placeholder: string | undefined;
210
+ length: DateLength | undefined;
211
+ time: boolean;
212
+ required: boolean;
213
+ disabled: boolean;
214
+ open: boolean;
140
215
  /** The day whose hidden events are unfolded. */
141
- open: Day | undefined;
216
+ unfolded: Day | undefined;
142
217
  protected readonly weeksRun: "rows";
143
218
  private byDay;
219
+ private readonly internals;
220
+ /** The value the field started with, for a form's reset. */
221
+ private initial;
222
+ private shown;
223
+ /** Whether opening a picker should move focus into the month (a key opened it). */
224
+ private focusMonth;
144
225
  constructor();
226
+ disconnectedCallback(): void;
227
+ protected firstUpdated(): void;
228
+ /** The form was reset: back to the value it started with. */
229
+ formResetCallback(): void;
230
+ formDisabledCallback(disabled: boolean): void;
145
231
  /** The first of the month shown. */
146
232
  get shownMonth(): Day;
147
233
  private get squaresPerDay();
148
234
  private get eventLines();
149
235
  protected eventsOn(day: Day): CalendarEvent[];
150
236
  protected willUpdate(changed: PropertyValues<this>): void;
237
+ protected updated(changed: PropertyValues<this>): void;
151
238
  /** Shows another month and says so with `navigate`. */
152
239
  showMonth(month: string, announce?: boolean): void;
153
240
  /** The month before, as the previous arrow does. */
@@ -166,6 +253,46 @@ export declare class Calendar extends CalendarBase {
166
253
  private renderHeader;
167
254
  private renderDay;
168
255
  render(): import("lit").TemplateResult<1>;
256
+ private pickerWords;
257
+ private get trigger();
258
+ private get panel();
259
+ /** The small month inside the picker. */
260
+ private get smallMonth();
261
+ private get ends();
262
+ /** Opens a picker's month. */
263
+ show(): void;
264
+ /** Closes a picker's month, giving focus back to the field when it was inside. */
265
+ hide(restore?: boolean): void;
266
+ private focusPickerDay;
267
+ /** Below the field, half a square from it, or above when there is more room there; held inside the screen. */
268
+ private place;
269
+ private onOutside;
270
+ private toggle;
271
+ private onTriggerKey;
272
+ private onPanelKey;
273
+ private onPanelFocusOut;
274
+ /** Takes a new value and says so. */
275
+ private commit;
276
+ private write;
277
+ /**
278
+ * A day pressed in the month. The first press of an opening is the value;
279
+ * the second ends the range and, without times to set, closes the month.
280
+ */
281
+ private picked;
282
+ /** A day typed in a field, read when the person leaves it or presses Enter. */
283
+ private typed;
284
+ private timed;
285
+ private setTime;
286
+ /** Pressing the switch's row presses the switch, as a label would. */
287
+ private passPress;
288
+ private clear;
289
+ private moment;
290
+ private formatter;
291
+ private fieldText;
292
+ /** The face's words: one day, or a range written as the language writes one ("Oct 21 – 24, 2026"). */
293
+ private faceText;
294
+ private renderEnd;
295
+ private renderPicker;
169
296
  }
170
297
  declare global {
171
298
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"ds-calendar.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-calendar.ts"],"names":[],"mappings":"AAOA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEpE,OAAO,EAUL,KAAK,aAAa,EAClB,KAAK,GAAG,EACT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAwB,MAAM,iBAAiB,CAAC;AACrE,OAAO,mBAAmB,CAAC;AAK3B,cAAc,iBAAiB,CAAC;AAKhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAYf;IAEF,MAAM,CAAC,MAAM,4BAAgE;IAErE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACzB,gDAAgD;IACxC,IAAI,EAAE,GAAG,GAAG,SAAS,CAAC;IAE9B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAE9C,OAAO,CAAC,KAAK,CAAmC;;IAYhD,oCAAoC;IACpC,IAAI,UAAU,IAAI,GAAG,CAEpB;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,EAAE;IAI7C,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IASlD,uDAAuD;IACvD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,UAAQ;IAQzC,oDAAoD;IACpD,aAAa;IAIb,+CAA+C;IAC/C,SAAS;IAIT,+CAA+C;IAC/C,SAAS;IAKT,6FAA6F;IAC7F,OAAO,KAAK,MAAM,GAIjB;IAED,OAAO,CAAC,SAAS,CAmBf;IAEF,OAAO,CAAC,OAAO,CAqBb;IAEF,8EAA8E;IAC9E,OAAO,CAAC,aAAa,CAOnB;IAEF,OAAO,CAAC,UAAU,CAEhB;IAEF,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,SAAS;IAkDjB,MAAM;CA8BP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,QAAQ,CAAC;KACzB;CACF"}
1
+ {"version":3,"file":"ds-calendar.d.ts","sourceRoot":"","sources":["../../DS1/3-unit/ds-calendar.ts"],"names":[],"mappings":"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"}