@octans/ui 1.0.0 → 1.2.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 (58) hide show
  1. package/README.md +45 -2
  2. package/dist/components/ActionList/ActionList.vue.d.ts +4 -4
  3. package/dist/components/AppFrame/AppFrame.vue.d.ts +3 -3
  4. package/dist/components/Badge/Badge.vue.d.ts +3 -3
  5. package/dist/components/Banner/Banner.vue.d.ts +18 -0
  6. package/dist/components/Button/Button.vue.d.ts +66 -0
  7. package/dist/components/Calendar/types.d.ts +52 -0
  8. package/dist/components/CalendarHeatmap/CalendarHeatmap.vue.d.ts +1 -1
  9. package/dist/components/Card/CardSection.vue.d.ts +1 -1
  10. package/dist/components/ColorSelector/ColorSelector.vue.d.ts +1 -1
  11. package/dist/components/ColorSelector/types.d.ts +2 -2
  12. package/dist/components/DataTable/BulkActions.vue.d.ts +21 -3
  13. package/dist/components/DatePicker/types.d.ts +33 -0
  14. package/dist/components/FileInput/FileInput.vue.d.ts +104 -0
  15. package/dist/components/FileInput/ItemList.vue.d.ts +6 -0
  16. package/dist/components/FileInput/pageDrop.d.ts +23 -0
  17. package/dist/components/Filters/FilterActions.vue.d.ts +21 -3
  18. package/dist/components/Filters/FilterItem.vue.d.ts +30 -3
  19. package/dist/components/Filters/Filters.vue.d.ts +72 -9
  20. package/dist/components/Formatter/Formatter.vue.d.ts +18 -0
  21. package/dist/components/KeyboardKey/KeyboardKey.vue.d.ts +38 -0
  22. package/dist/components/KeyboardKey/index.d.ts +2 -0
  23. package/dist/components/Labelled/Labelled.vue.d.ts +18 -2
  24. package/dist/components/Modal/ModalSection.vue.d.ts +71 -0
  25. package/dist/components/Modal/index.d.ts +2 -1
  26. package/dist/components/Page/Page.vue.d.ts +34 -4
  27. package/dist/components/{Popper/Popper.vue.d.ts → Popover/Popover.vue.d.ts} +4 -4
  28. package/dist/components/Popover/index.d.ts +90 -0
  29. package/dist/components/{Popper → Popover}/types.d.ts +3 -3
  30. package/dist/components/RangeSlider/RangeSlider.vue.d.ts +27 -0
  31. package/dist/components/Select/Select.vue.d.ts +30 -3
  32. package/dist/components/SkeletonPage/SkeletonPage.vue.d.ts +19 -0
  33. package/dist/components/SkeletonPage/index.d.ts +2 -0
  34. package/dist/components/SkeletonPage/types.d.ts +26 -0
  35. package/dist/components/Tag/Tag.vue.d.ts +3 -3
  36. package/dist/components/TextField/types.d.ts +10 -0
  37. package/dist/components/TimePicker/types.d.ts +10 -0
  38. package/dist/components/ToggleSwitch/ToggleSwitch.vue.d.ts +8 -2
  39. package/dist/components/ToggleSwitch/types.d.ts +29 -0
  40. package/dist/components/Tooltip/Tooltip.vue.d.ts +2 -2
  41. package/dist/components/all.d.ts +3 -1
  42. package/dist/components/types.d.ts +5 -0
  43. package/dist/lib.d.ts +4 -1
  44. package/dist/reset.css +73 -0
  45. package/dist/style.css +1 -1
  46. package/dist/ui.js +4156 -3721
  47. package/dist/ui.umd.js +3 -3
  48. package/dist/utils/color.d.ts +11 -0
  49. package/dist/utils/contrastPairs.d.ts +39 -0
  50. package/dist/utils/createTheme.d.ts +29 -0
  51. package/dist/utils/customTheme.d.ts +1 -1
  52. package/dist/utils/date.d.ts +12 -1
  53. package/dist/utils/format.d.ts +8 -0
  54. package/dist/utils/positionPanel.d.ts +2 -2
  55. package/dist/utils/radix.d.ts +2 -2
  56. package/package.json +5 -2
  57. package/skills/octans-ui/SKILL.md +303 -0
  58. package/dist/components/Popper/index.d.ts +0 -2
package/README.md CHANGED
@@ -7,8 +7,9 @@ shell components.
7
7
 
8
8
  <br clear="left" />
9
9
 
10
- [octans.dev](https://octans.dev) — live Storybook docs ·
11
- [github.com/tarwin/octans-ui](https://github.com/tarwin/octans-ui) ·
10
+ [octans.dev](https://octans.dev) ·
11
+ [Quick start](https://octans.dev/storybook/?path=/docs/documentation-quick-start--docs) ·
12
+ [Kitchen sink](https://octans.dev/storybook/?path=/story/documentation-kitchen-sink--all-components) ·
12
13
  [Issues](https://github.com/tarwin/octans-ui/issues)
13
14
 
14
15
  ## Install
@@ -21,6 +22,24 @@ pnpm add @octans/ui
21
22
  if you use the components that render router links (`MaybeRouterLink`,
22
23
  `UnstyledLink`, and anything that accepts a `to` prop).
23
24
 
25
+ ### A note on the `vue-demi` build warning
26
+
27
+ pnpm may report an ignored build script on install:
28
+
29
+ ```
30
+ [ERR_PNPM_IGNORED_BUILDS] Ignored build scripts: vue-demi
31
+ ```
32
+
33
+ This is safe to ignore. `vue-demi` arrives transitively via
34
+ `reka-ui` → `@floating-ui/vue`, which still supports Vue 2 alongside Vue 3. Its
35
+ postinstall only switches the package entry point to match the detected Vue
36
+ version, and the shipped default is already the Vue 3 build — so skipping it
37
+ changes nothing on Vue 3. Run `pnpm approve-builds` if you would rather the
38
+ warning went away.
39
+
40
+ It will disappear on its own once `reka-ui` moves to `@floating-ui/vue` v2,
41
+ which dropped `vue-demi`.
42
+
24
43
  ## Usage
25
44
 
26
45
  ```ts
@@ -33,6 +52,20 @@ import App from './App.vue'
33
52
  createApp(App).use(Octans).mount('#app')
34
53
  ```
35
54
 
55
+ ### `reset.css`
56
+
57
+ `style.css` resets nothing outside `.UIElement`, so the library can be dropped
58
+ into a page it doesn't own without moving anything on it. If Octans is the
59
+ whole UI, add the opt-in page reset as well — otherwise the markup your app
60
+ renders itself keeps the browser's defaults: serif text, the 8px body margin,
61
+ `content-box` sizing, and a body with no height that grows into a second
62
+ scrollbar.
63
+
64
+ ```ts
65
+ import '@octans/ui/style.css'
66
+ import '@octans/ui/reset.css' // only when Octans owns the page
67
+ ```
68
+
36
69
  Components can also be imported individually without installing the plugin:
37
70
 
38
71
  ```vue
@@ -173,6 +206,7 @@ pnpm dev # Storybook on :6006
173
206
  | Script | Does |
174
207
  | ----------------- | ------------------------------------------------ |
175
208
  | `pnpm dev` | Storybook dev server |
209
+ | `pnpm build-site` | Landing page + Storybook into `site-dist/` |
176
210
  | `pnpm build-lib` | Build the ES + UMD bundles and type declarations |
177
211
  | `pnpm type-check` | `vue-tsc --noEmit` |
178
212
  | `pnpm lint` | ESLint |
@@ -221,6 +255,15 @@ export interface SelectOptionType {
221
255
  }
222
256
  ```
223
257
 
258
+ ## Acknowledgements
259
+
260
+ - [Bryce Farrell](https://github.com/brycefarrell) — especially for ideas on how
261
+ to structure internal APIs to make them easy to use.
262
+ - [Ramunė Rastonis](https://www.instagram.com/ramunerastonis/) — for design
263
+ consulting.
264
+
265
+ Any shortcomings are my own fault.
266
+
224
267
  ## License
225
268
 
226
269
  [MIT](./LICENSE)
@@ -1,4 +1,4 @@
1
- import { PopperPlacementType } from '../Popper';
1
+ import { PopoverPlacementType } from '../Popover';
2
2
  import { ActionTooltipPositionType } from '../types';
3
3
  export interface ActionListProps {
4
4
  /**
@@ -9,10 +9,10 @@ export interface ActionListProps {
9
9
  * Groups of actions to render.
10
10
  */
11
11
  sections?: ActionListSectionType[];
12
- placement?: PopperPlacementType;
12
+ placement?: PopoverPlacementType;
13
13
  disabled?: boolean;
14
14
  /**
15
- * Custom z-index for the popper.
15
+ * Custom z-index for the popover.
16
16
  */
17
17
  zIndex?: number;
18
18
  /**
@@ -64,7 +64,7 @@ declare const __VLS_base: import('vue').DefineComponent<ActionListProps, {}, {},
64
64
  onHide?: (() => any) | undefined;
65
65
  onClose?: (() => any) | undefined;
66
66
  }>, {
67
- placement: PopperPlacementType;
67
+ placement: PopoverPlacementType;
68
68
  items: ActionListItemType[];
69
69
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
70
70
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,13 +1,13 @@
1
1
  import { AppFrameProps } from './types';
2
- declare var __VLS_8: {}, __VLS_10: {}, __VLS_38: {}, __VLS_40: {};
2
+ declare var __VLS_8: {}, __VLS_10: {}, __VLS_43: {}, __VLS_45: {};
3
3
  type __VLS_Slots = {} & {
4
4
  sidebar?: (props: typeof __VLS_8) => any;
5
5
  } & {
6
6
  topbar?: (props: typeof __VLS_10) => any;
7
7
  } & {
8
- default?: (props: typeof __VLS_38) => any;
8
+ default?: (props: typeof __VLS_43) => any;
9
9
  } & {
10
- footer?: (props: typeof __VLS_40) => any;
10
+ footer?: (props: typeof __VLS_45) => any;
11
11
  };
12
12
  declare const __VLS_base: import('vue').DefineComponent<AppFrameProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AppFrameProps> & Readonly<{}>, {
13
13
  loading: boolean;
@@ -1,4 +1,4 @@
1
- import { PopperPlacementType } from '../Popper';
1
+ import { PopoverPlacementType } from '../Popover';
2
2
  import { PropType } from 'vue';
3
3
  import { BadgeProgressType, BadgeSizeType, BadgeStatusType } from '../types';
4
4
  /**
@@ -53,7 +53,7 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
53
53
  * Placement of the tooltip if rendered
54
54
  */
55
55
  tooltipPosition: {
56
- type: PropType<PopperPlacementType>;
56
+ type: PropType<PopoverPlacementType>;
57
57
  };
58
58
  /**
59
59
  * An optional radius value for the badge edges
@@ -110,7 +110,7 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
110
110
  * Placement of the tooltip if rendered
111
111
  */
112
112
  tooltipPosition: {
113
- type: PropType<PopperPlacementType>;
113
+ type: PropType<PopoverPlacementType>;
114
114
  };
115
115
  /**
116
116
  * An optional radius value for the badge edges
@@ -170,6 +170,14 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
170
170
  type: BooleanConstructor;
171
171
  default: boolean;
172
172
  };
173
+ loading: {
174
+ type: BooleanConstructor;
175
+ default: boolean;
176
+ };
177
+ pressed: {
178
+ type: BooleanConstructor;
179
+ default: undefined;
180
+ };
173
181
  }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
174
182
  [key: string]: any;
175
183
  }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
@@ -225,15 +233,25 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
225
233
  type: BooleanConstructor;
226
234
  default: boolean;
227
235
  };
236
+ loading: {
237
+ type: BooleanConstructor;
238
+ default: boolean;
239
+ };
240
+ pressed: {
241
+ type: BooleanConstructor;
242
+ default: undefined;
243
+ };
228
244
  }>> & Readonly<{}>, {
229
245
  disabled: boolean;
230
246
  size: string;
231
247
  type: import('../types').ActionTypeType;
232
248
  destructive: boolean;
249
+ loading: boolean;
233
250
  tooltipPosition: import('../types').ActionTooltipPositionType;
234
251
  external: boolean;
235
252
  dropdown: boolean;
236
253
  fullWidth: boolean;
237
254
  invert: boolean;
255
+ pressed: boolean;
238
256
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
239
257
  }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -138,6 +138,38 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
138
138
  type: BooleanConstructor;
139
139
  default: boolean;
140
140
  };
141
+ /**
142
+ * Swaps the label for a spinner while an action is in flight, and stops
143
+ * the button acting.
144
+ *
145
+ * The label stays in the layout and is only made invisible, so the button
146
+ * keeps its width — a toolbar that reflows the instant something is
147
+ * clicked is worse than a slow one.
148
+ *
149
+ * It sets `aria-disabled`, NOT `disabled`. A real `disabled` attribute on
150
+ * a focused button drops focus to `<body>`, which is precisely the moment
151
+ * a keyboard user is waiting for something to happen.
152
+ */
153
+ loading: {
154
+ type: BooleanConstructor;
155
+ default: boolean;
156
+ };
157
+ /**
158
+ * Marks a toggle button as on. The resting surface takes whatever
159
+ * treatment the type already uses for `:active`, and the button announces
160
+ * `aria-pressed`.
161
+ *
162
+ * `undefined` by default rather than `false`, so the attribute appears
163
+ * only on a button that IS a toggle: `:pressed="false"` announces a
164
+ * toggle that is off, while omitting it announces nothing at all.
165
+ *
166
+ * For a set of mutually exclusive options reach for `SegmentedControl`
167
+ * instead — this is for a toggle that stands on its own.
168
+ */
169
+ pressed: {
170
+ type: BooleanConstructor;
171
+ default: undefined;
172
+ };
141
173
  }>, () => VNode<import('vue').RendererNode, import('vue').RendererElement, {
142
174
  [key: string]: any;
143
175
  }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
@@ -271,14 +303,48 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
271
303
  type: BooleanConstructor;
272
304
  default: boolean;
273
305
  };
306
+ /**
307
+ * Swaps the label for a spinner while an action is in flight, and stops
308
+ * the button acting.
309
+ *
310
+ * The label stays in the layout and is only made invisible, so the button
311
+ * keeps its width — a toolbar that reflows the instant something is
312
+ * clicked is worse than a slow one.
313
+ *
314
+ * It sets `aria-disabled`, NOT `disabled`. A real `disabled` attribute on
315
+ * a focused button drops focus to `<body>`, which is precisely the moment
316
+ * a keyboard user is waiting for something to happen.
317
+ */
318
+ loading: {
319
+ type: BooleanConstructor;
320
+ default: boolean;
321
+ };
322
+ /**
323
+ * Marks a toggle button as on. The resting surface takes whatever
324
+ * treatment the type already uses for `:active`, and the button announces
325
+ * `aria-pressed`.
326
+ *
327
+ * `undefined` by default rather than `false`, so the attribute appears
328
+ * only on a button that IS a toggle: `:pressed="false"` announces a
329
+ * toggle that is off, while omitting it announces nothing at all.
330
+ *
331
+ * For a set of mutually exclusive options reach for `SegmentedControl`
332
+ * instead — this is for a toggle that stands on its own.
333
+ */
334
+ pressed: {
335
+ type: BooleanConstructor;
336
+ default: undefined;
337
+ };
274
338
  }>> & Readonly<{}>, {
275
339
  disabled: boolean;
276
340
  size: string;
277
341
  type: ActionTypeType;
278
342
  destructive: boolean;
343
+ loading: boolean;
279
344
  tooltipPosition: ActionTooltipPositionType;
280
345
  external: boolean;
281
346
  dropdown: boolean;
282
347
  fullWidth: boolean;
283
348
  invert: boolean;
349
+ pressed: boolean;
284
350
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -6,6 +6,23 @@ export interface CalendarCellType {
6
6
  isCurrent?: boolean;
7
7
  isOtherPeriod?: boolean;
8
8
  isDisabled?: boolean;
9
+ /** Markers falling on this cell, in the order they were given. */
10
+ markers?: CalendarMarkerType[];
11
+ }
12
+ /**
13
+ * A dot drawn under a day, for saying "something happens here" without
14
+ * selecting it — deadlines, bookings, days with data.
15
+ */
16
+ export interface CalendarMarkerType {
17
+ /**
18
+ * The day to mark. Anything DayJS can parse, including a `Date` or another
19
+ * `Dayjs`; only the day part is used.
20
+ */
21
+ date: string | number | Date | Dayjs;
22
+ /** Any CSS colour. Defaults to the theme's primary. */
23
+ color?: string;
24
+ /** Native tooltip on the day. Several markers on a day join with a comma. */
25
+ tooltip?: string;
9
26
  }
10
27
  export interface CalendarProps {
11
28
  /**
@@ -36,4 +53,39 @@ export interface CalendarProps {
36
53
  * Restricts the maximum time that can be selected.
37
54
  */
38
55
  maxTime?: string;
56
+ /**
57
+ * The earliest selectable date, inclusive. Anything DayJS can parse.
58
+ *
59
+ * `disableDate` can express this too, but a range is the common case and
60
+ * writing a predicate for it every time is the wrong amount of work. Both
61
+ * apply when both are given.
62
+ */
63
+ minDate?: string | number | Date | Dayjs;
64
+ /**
65
+ * The latest selectable date, inclusive.
66
+ */
67
+ maxDate?: string | number | Date | Dayjs;
68
+ /**
69
+ * The day the week starts on, `0` Sunday through `6` Saturday.
70
+ *
71
+ * Normally you should NOT set this: the week start comes from the active
72
+ * locale, so `setLocale('fr')` already moves it to Monday. This is the
73
+ * per-instance override for a calendar that has to disagree with the
74
+ * viewer's locale — a roster in a fixed business week, say.
75
+ */
76
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
77
+ /**
78
+ * Days to mark with a dot.
79
+ */
80
+ markers?: CalendarMarkerType[];
81
+ /**
82
+ * The time zone that decides what "today" is, as an IANA name
83
+ * (`'America/Los_Angeles'`). Defaults to the library-wide display time zone
84
+ * — see `setTimezone` — and, failing that, the viewer's own clock.
85
+ *
86
+ * This moves the highlighted day and the day an empty picker opens on. It
87
+ * does NOT convert `modelValue`: the model is a wall clock in
88
+ * `modelFormat`, parsed and formatted without a zone, and it stays that way.
89
+ */
90
+ timezone?: string;
39
91
  }
@@ -2,8 +2,8 @@ import { CalendarHeatmapProps, CalendarHeatmapSeries } from './types';
2
2
  declare const __VLS_export: import('vue').DefineComponent<CalendarHeatmapProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<CalendarHeatmapProps> & Readonly<{}>, {
3
3
  data: import('./types').CalendarHeatmapDataPoint[];
4
4
  tooltip: boolean;
5
- series: CalendarHeatmapSeries[];
6
5
  weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
6
+ series: CalendarHeatmapSeries[];
7
7
  emptyColor: string;
8
8
  cellSize: number;
9
9
  cellGap: number;
@@ -84,6 +84,6 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
84
84
  };
85
85
  }>> & Readonly<{}>, {
86
86
  subdued: boolean;
87
- collapseActions: boolean;
88
87
  padded: boolean;
88
+ collapseActions: boolean;
89
89
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -7,7 +7,7 @@ declare const __VLS_export: import('vue').DefineComponent<ColorSelectorProps, {}
7
7
  "onUpdate:modelValue"?: ((value: string | Gradient) => any) | undefined;
8
8
  "onUpdate:swatches"?: ((value: string[]) => any) | undefined;
9
9
  }>, {
10
- placement: import('../Popper').PopperPlacementType;
10
+ placement: import('../Popover').PopoverPlacementType;
11
11
  disabled: boolean;
12
12
  trigger: import('./types').ColorSelectorTriggerType;
13
13
  mode: import('./types').ColorSelectorMode;
@@ -1,5 +1,5 @@
1
1
  import { ColorPickerProps } from '../ColorPicker';
2
- import { PopperPlacementType } from '../Popper';
2
+ import { PopoverPlacementType } from '../Popover';
3
3
  import { Gradient, GradientType } from '../../utils/gradient';
4
4
  /**
5
5
  * What the field is allowed to hold.
@@ -59,7 +59,7 @@ export interface ColorSelectorProps extends Omit<ColorPickerProps, 'modelValue'>
59
59
  /**
60
60
  * Where the picker opens relative to the trigger.
61
61
  */
62
- placement?: PopperPlacementType;
62
+ placement?: PopoverPlacementType;
63
63
  /**
64
64
  * What you click to open the picker. `swatch` strips the control back to the
65
65
  * colour itself; `input` lets the value be typed.
@@ -45,7 +45,7 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
45
45
  hide: () => any;
46
46
  close: () => any;
47
47
  }, import('vue').PublicProps, {
48
- placement: import('../Popper').PopperPlacementType;
48
+ placement: import('../Popover').PopoverPlacementType;
49
49
  items: import('../ActionList').ActionListItemType[];
50
50
  }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
51
51
  P: {};
@@ -59,7 +59,7 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
59
59
  onHide?: (() => any) | undefined;
60
60
  onClose?: (() => any) | undefined;
61
61
  }>, {}, {}, {}, {}, {
62
- placement: import('../Popper').PopperPlacementType;
62
+ placement: import('../Popover').PopoverPlacementType;
63
63
  items: import('../ActionList').ActionListItemType[];
64
64
  }>;
65
65
  __isFragment?: never;
@@ -74,7 +74,7 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
74
74
  hide: () => any;
75
75
  close: () => any;
76
76
  }, string, {
77
- placement: import('../Popper').PopperPlacementType;
77
+ placement: import('../Popover').PopoverPlacementType;
78
78
  items: import('../ActionList').ActionListItemType[];
79
79
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
80
80
  $slots: {
@@ -134,6 +134,14 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
134
134
  type: BooleanConstructor;
135
135
  default: boolean;
136
136
  };
137
+ loading: {
138
+ type: BooleanConstructor;
139
+ default: boolean;
140
+ };
141
+ pressed: {
142
+ type: BooleanConstructor;
143
+ default: undefined;
144
+ };
137
145
  }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
138
146
  [key: string]: any;
139
147
  }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
@@ -189,16 +197,26 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
189
197
  type: BooleanConstructor;
190
198
  default: boolean;
191
199
  };
200
+ loading: {
201
+ type: BooleanConstructor;
202
+ default: boolean;
203
+ };
204
+ pressed: {
205
+ type: BooleanConstructor;
206
+ default: undefined;
207
+ };
192
208
  }>> & Readonly<{}>, {
193
209
  disabled: boolean;
194
210
  size: string;
195
211
  type: import('../types').ActionTypeType;
196
212
  destructive: boolean;
213
+ loading: boolean;
197
214
  tooltipPosition: import('../types').ActionTooltipPositionType;
198
215
  external: boolean;
199
216
  dropdown: boolean;
200
217
  fullWidth: boolean;
201
218
  invert: boolean;
219
+ pressed: boolean;
202
220
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
203
221
  ButtonGroup: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
204
222
  segmented: {
@@ -1,4 +1,5 @@
1
1
  import { Dayjs } from 'dayjs';
2
+ import { CalendarMarkerType } from '../Calendar';
2
3
  export interface DatePickerProps {
3
4
  label?: string | false;
4
5
  error?: string | false | null;
@@ -54,4 +55,36 @@ export interface DatePickerProps {
54
55
  * If set to `false` will not automatically display the picker.
55
56
  */
56
57
  autoOpen?: boolean;
58
+ /**
59
+ * The earliest selectable date, inclusive. Anything DayJS can parse.
60
+ */
61
+ minDate?: string | number | Date | Dayjs;
62
+ /**
63
+ * The latest selectable date, inclusive.
64
+ */
65
+ maxDate?: string | number | Date | Dayjs;
66
+ /**
67
+ * The day the week starts on, `0` Sunday through `6` Saturday. Comes from
68
+ * the active locale unless set — see `Calendar`.
69
+ */
70
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
71
+ /**
72
+ * Days to mark with a dot in the calendar.
73
+ */
74
+ markers?: CalendarMarkerType[];
75
+ /**
76
+ * IANA time zone deciding what "today" is. Defaults to the library-wide
77
+ * display zone — see `setTimezone`. It does not convert `modelValue`.
78
+ */
79
+ timezone?: string;
80
+ /**
81
+ * Marks the field as required: an asterisk after the label, and
82
+ * `aria-required` on the control.
83
+ *
84
+ * Announced, not enforced — it deliberately does NOT set the native
85
+ * `required` attribute, so the browser's own validation bubble stays out of
86
+ * the way of whatever the app does about errors. Use `error` to show a
87
+ * failure.
88
+ */
89
+ required?: boolean;
57
90
  }
@@ -37,6 +37,18 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
37
37
  helpLink: {
38
38
  type: PropType<string | false | null>;
39
39
  };
40
+ /**
41
+ * Marks the field as required, drawing an asterisk after the label.
42
+ *
43
+ * Unlike the other form controls this sets no `aria-required`: the
44
+ * `<input type="file">` is visually hidden and so is not in the
45
+ * accessibility tree, and the drop zone is a plain region rather than a
46
+ * control that could carry it.
47
+ */
48
+ required: {
49
+ type: BooleanConstructor;
50
+ default: boolean;
51
+ };
40
52
  /**
41
53
  * A string that defines the file types the file input should accept.
42
54
  *
@@ -77,9 +89,24 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
77
89
  type: BooleanConstructor;
78
90
  default: boolean;
79
91
  };
92
+ /**
93
+ * Makes the WHOLE PAGE a drop target, not just the zone — dropping a file
94
+ * anywhere on the window adds it here, and an overlay says so while a
95
+ * drag is in progress. The zone stays where it is and keeps working.
96
+ *
97
+ * There is only one page, so only one input can have it: if a second one
98
+ * sets this, the first to mount keeps the page and the second warns and
99
+ * falls back to its own zone.
100
+ */
101
+ dropOnPage: {
102
+ type: BooleanConstructor;
103
+ default: boolean;
104
+ };
80
105
  }>, {}, {
81
106
  isValidating: boolean;
107
+ isDraggingOnPage: boolean;
82
108
  }, {
109
+ canAcceptFiles(): boolean;
83
110
  acceptFn(): (file: FileInputFileItemType) => boolean;
84
111
  items(): FileInputFileItemType[];
85
112
  }, {
@@ -90,6 +117,7 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
90
117
  appendFiles(fileList: FileList): Promise<void>;
91
118
  onChangeFiles(): void;
92
119
  onDropZoneDrop(fileList: FileList): void;
120
+ syncPageDrop(): void;
93
121
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
94
122
  modelValue: {
95
123
  type: PropType<FileInputFileItemType[]>;
@@ -125,6 +153,18 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
125
153
  helpLink: {
126
154
  type: PropType<string | false | null>;
127
155
  };
156
+ /**
157
+ * Marks the field as required, drawing an asterisk after the label.
158
+ *
159
+ * Unlike the other form controls this sets no `aria-required`: the
160
+ * `<input type="file">` is visually hidden and so is not in the
161
+ * accessibility tree, and the drop zone is a plain region rather than a
162
+ * control that could carry it.
163
+ */
164
+ required: {
165
+ type: BooleanConstructor;
166
+ default: boolean;
167
+ };
128
168
  /**
129
169
  * A string that defines the file types the file input should accept.
130
170
  *
@@ -165,12 +205,27 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
165
205
  type: BooleanConstructor;
166
206
  default: boolean;
167
207
  };
208
+ /**
209
+ * Makes the WHOLE PAGE a drop target, not just the zone — dropping a file
210
+ * anywhere on the window adds it here, and an overlay says so while a
211
+ * drag is in progress. The zone stays where it is and keeps working.
212
+ *
213
+ * There is only one page, so only one input can have it: if a second one
214
+ * sets this, the first to mount keeps the page and the second warns and
215
+ * falls back to its own zone.
216
+ */
217
+ dropOnPage: {
218
+ type: BooleanConstructor;
219
+ default: boolean;
220
+ };
168
221
  }>> & Readonly<{}>, {
222
+ required: boolean;
169
223
  modelValue: FileInputFileItemType[];
170
224
  readonly: boolean;
171
225
  multiple: boolean;
172
226
  accept: string;
173
227
  maxBytes: number;
228
+ dropOnPage: boolean;
174
229
  }, {}, {
175
230
  DropZone: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
176
231
  multiple: {
@@ -237,6 +292,49 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
237
292
  contained: boolean;
238
293
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
239
294
  }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
295
+ Icon: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
296
+ icon: {
297
+ type: StringConstructor;
298
+ };
299
+ size: {
300
+ type: StringConstructor;
301
+ };
302
+ contained: {
303
+ type: BooleanConstructor;
304
+ };
305
+ badge: {
306
+ type: PropType<import('../types').IconBadgeStatusType>;
307
+ };
308
+ badgeIcon: {
309
+ type: StringConstructor;
310
+ };
311
+ badgeColor: {
312
+ type: StringConstructor;
313
+ };
314
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
315
+ [key: string]: any;
316
+ }> | null, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
317
+ icon: {
318
+ type: StringConstructor;
319
+ };
320
+ size: {
321
+ type: StringConstructor;
322
+ };
323
+ contained: {
324
+ type: BooleanConstructor;
325
+ };
326
+ badge: {
327
+ type: PropType<import('../types').IconBadgeStatusType>;
328
+ };
329
+ badgeIcon: {
330
+ type: StringConstructor;
331
+ };
332
+ badgeColor: {
333
+ type: StringConstructor;
334
+ };
335
+ }>> & Readonly<{}>, {
336
+ contained: boolean;
337
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
240
338
  ItemList: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
241
339
  items: {
242
340
  type: PropType<FileInputFileItemType[]>;
@@ -275,6 +373,9 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
275
373
  type: StringConstructor;
276
374
  default: string;
277
375
  };
376
+ timezone: {
377
+ type: StringConstructor;
378
+ };
278
379
  }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
279
380
  [key: string]: any;
280
381
  }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
@@ -294,6 +395,9 @@ declare const __VLS_export: import('vue').DefineComponent<import('vue').ExtractP
294
395
  type: StringConstructor;
295
396
  default: string;
296
397
  };
398
+ timezone: {
399
+ type: StringConstructor;
400
+ };
297
401
  }>> & Readonly<{}>, {
298
402
  locale: string;
299
403
  currency: string;