@ptbdynamic/plinth 0.1.1 → 0.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 (39) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/packages/css/dist/menu.css +245 -0
  4. package/packages/css/dist/page-header.css +124 -0
  5. package/packages/css/dist/plinth.css +833 -160
  6. package/packages/css/dist/section-menu.css +6 -5
  7. package/packages/css/dist/text-field.css +230 -0
  8. package/packages/css/dist/textarea.css +169 -0
  9. package/packages/css/dist/tokens.css +9 -1
  10. package/packages/react/dist/PlinthMenu.d.ts +12 -0
  11. package/packages/react/dist/PlinthMenuGroup.d.ts +9 -0
  12. package/packages/react/dist/PlinthMenuItem.d.ts +26 -0
  13. package/packages/react/dist/PlinthMenuSeparator.d.ts +4 -0
  14. package/packages/react/dist/PlinthPageHeader.d.ts +17 -0
  15. package/packages/react/dist/PlinthTextField.d.ts +24 -0
  16. package/packages/react/dist/PlinthTextarea.d.ts +24 -0
  17. package/packages/react/dist/index.d.ts +10 -1
  18. package/packages/react/dist/index.js +565 -366
  19. package/packages/react/dist/menu.d.ts +7 -0
  20. package/packages/react/dist/page-header.d.ts +5 -0
  21. package/packages/react/dist/text-field.d.ts +10 -0
  22. package/packages/tokens/dist/index.d.ts +13 -1
  23. package/packages/tokens/dist/index.js +131 -6
  24. package/packages/tokens/dist/tailwind-theme.css +2 -2
  25. package/packages/tokens/dist/tokens.css +9 -1
  26. package/packages/tokens/dist/tokens.json +116 -3
  27. package/packages/vue/dist/PlinthMenu.vue.d.ts +24 -0
  28. package/packages/vue/dist/{PlinthHeader.vue.d.ts → PlinthMenuGroup.vue.d.ts} +5 -7
  29. package/packages/vue/dist/PlinthMenuItem.vue.d.ts +34 -0
  30. package/packages/vue/dist/PlinthMenuSeparator.vue.d.ts +3 -0
  31. package/packages/vue/dist/PlinthPageHeader.vue.d.ts +27 -0
  32. package/packages/vue/dist/PlinthTextField.vue.d.ts +51 -0
  33. package/packages/vue/dist/PlinthTextarea.vue.d.ts +42 -0
  34. package/packages/vue/dist/index.d.ts +11 -2
  35. package/packages/vue/dist/index.js +661 -368
  36. package/packages/vue/dist/menu.d.ts +8 -0
  37. package/packages/vue/dist/page-header.d.ts +5 -0
  38. package/packages/vue/dist/text-field.d.ts +10 -0
  39. package/packages/react/dist/PlinthHeader.d.ts +0 -12
@@ -0,0 +1,7 @@
1
+ /** A menu item's tone: `neutral` (the default) or `danger`, for an item that destroys or removes. */
2
+ export declare const menuItemTones: readonly ["neutral", "danger"];
3
+ export type MenuItemTone = (typeof menuItemTones)[number];
4
+ /** A tone from the list, or `neutral` when it is not one of them. */
5
+ export declare function menuItemTone(value: string | undefined): MenuItemTone;
6
+ /** The id of the menu around an item, which a button item closes when it is pressed. */
7
+ export declare const MenuIdContext: import("react").Context<string | undefined>;
@@ -0,0 +1,5 @@
1
+ /** The levels the page header's heading can take. `h1` is the default. */
2
+ export declare const pageHeaderLevels: readonly ["h1", "h2", "h3", "h4", "h5", "h6"];
3
+ export type PageHeaderLevel = (typeof pageHeaderLevels)[number];
4
+ /** A level from the list, or `h1` when it is not one of them. */
5
+ export declare function pageHeaderLevel(value: string | undefined): PageHeaderLevel;
@@ -0,0 +1,10 @@
1
+ /** The text field sizes (28 and 32 px), from the shared size scale. `md` is the default. */
2
+ export declare const textFieldSizes: readonly ["sm", "md"];
3
+ export type TextFieldSize = (typeof textFieldSizes)[number];
4
+ /** A size from the list, or `md` when it is not one of them. */
5
+ export declare function textFieldSize(value: string | undefined): TextFieldSize;
6
+ /**
7
+ * What a field's aria-describedby lists: its description's id, then its error's, or nothing when
8
+ * it has neither (text-field.css, textarea.css).
9
+ */
10
+ export declare function fieldDescribedBy(id: string, description: string | undefined, error: string | undefined): string | undefined;
@@ -118,6 +118,10 @@ export declare const vars: {
118
118
  "dialog": string;
119
119
  "panel": string;
120
120
  "peek": string;
121
+ "menu": {
122
+ "min": string;
123
+ "max": string;
124
+ };
121
125
  };
122
126
  "layer": {
123
127
  "base": string;
@@ -178,8 +182,9 @@ export declare const vars: {
178
182
  "2": string;
179
183
  "3": string;
180
184
  };
181
- "header": {
185
+ "page-header": {
182
186
  "height": string;
187
+ "offset": string;
183
188
  };
184
189
  "data-table": {
185
190
  "row-height": string;
@@ -203,6 +208,13 @@ export declare const vars: {
203
208
  "height": string;
204
209
  "item-height": string;
205
210
  };
211
+ "menu": {
212
+ "min-width": string;
213
+ "max-width": string;
214
+ };
215
+ "text-field": {
216
+ "trailing-size": string;
217
+ };
206
218
  "callout": {
207
219
  "neutral-surface": string;
208
220
  "neutral-border": string;
@@ -1169,6 +1169,32 @@ export const tokens = [
1169
1169
  "value": "10rem",
1170
1170
  "css": "10rem"
1171
1171
  },
1172
+ {
1173
+ "path": [
1174
+ "ref",
1175
+ "size",
1176
+ "192"
1177
+ ],
1178
+ "name": "--plinth-ref-size-192",
1179
+ "cssVar": "var(--plinth-ref-size-192)",
1180
+ "tier": "primitive",
1181
+ "type": "dimension",
1182
+ "value": "12rem",
1183
+ "css": "12rem"
1184
+ },
1185
+ {
1186
+ "path": [
1187
+ "ref",
1188
+ "size",
1189
+ "320"
1190
+ ],
1191
+ "name": "--plinth-ref-size-320",
1192
+ "cssVar": "var(--plinth-ref-size-320)",
1193
+ "tier": "primitive",
1194
+ "type": "dimension",
1195
+ "value": "20rem",
1196
+ "css": "20rem"
1197
+ },
1172
1198
  {
1173
1199
  "path": [
1174
1200
  "ref",
@@ -2689,6 +2715,36 @@ export const tokens = [
2689
2715
  "ref": "ref.size.160",
2690
2716
  "css": "var(--plinth-ref-size-160)"
2691
2717
  },
2718
+ {
2719
+ "path": [
2720
+ "size",
2721
+ "menu",
2722
+ "min"
2723
+ ],
2724
+ "name": "--plinth-size-menu-min",
2725
+ "cssVar": "var(--plinth-size-menu-min)",
2726
+ "tier": "semantic",
2727
+ "type": "dimension",
2728
+ "description": "The least width of a menu (192 px).",
2729
+ "value": "12rem",
2730
+ "ref": "ref.size.192",
2731
+ "css": "var(--plinth-ref-size-192)"
2732
+ },
2733
+ {
2734
+ "path": [
2735
+ "size",
2736
+ "menu",
2737
+ "max"
2738
+ ],
2739
+ "name": "--plinth-size-menu-max",
2740
+ "cssVar": "var(--plinth-size-menu-max)",
2741
+ "tier": "semantic",
2742
+ "type": "dimension",
2743
+ "description": "The most width of a menu (320 px); a longer label wraps.",
2744
+ "value": "20rem",
2745
+ "ref": "ref.size.320",
2746
+ "css": "var(--plinth-ref-size-320)"
2747
+ },
2692
2748
  {
2693
2749
  "path": [
2694
2750
  "layer",
@@ -3484,17 +3540,32 @@ export const tokens = [
3484
3540
  },
3485
3541
  {
3486
3542
  "path": [
3487
- "header",
3543
+ "page-header",
3488
3544
  "height"
3489
3545
  ],
3490
- "name": "--plinth-header-height",
3491
- "cssVar": "var(--plinth-header-height)",
3546
+ "name": "--plinth-page-header-height",
3547
+ "cssVar": "var(--plinth-page-header-height)",
3492
3548
  "tier": "component",
3493
3549
  "type": "dimension",
3550
+ "description": "The page header's height, without the safe area it adds as the screen's top bar.",
3494
3551
  "value": "3.5rem",
3495
3552
  "ref": "space.14",
3496
3553
  "css": "var(--plinth-space-14)"
3497
3554
  },
3555
+ {
3556
+ "path": [
3557
+ "page-header",
3558
+ "offset"
3559
+ ],
3560
+ "name": "--plinth-page-header-offset",
3561
+ "cssVar": "var(--plinth-page-header-offset)",
3562
+ "tier": "component",
3563
+ "type": "dimension",
3564
+ "description": "Where the page header sticks: 0, or an app bar's height when the page header sits under one.",
3565
+ "value": "0",
3566
+ "ref": "space.0",
3567
+ "css": "var(--plinth-space-0)"
3568
+ },
3498
3569
  {
3499
3570
  "path": [
3500
3571
  "data-table",
@@ -3607,6 +3678,48 @@ export const tokens = [
3607
3678
  "ref": "control.lg",
3608
3679
  "css": "var(--plinth-control-lg)"
3609
3680
  },
3681
+ {
3682
+ "path": [
3683
+ "menu",
3684
+ "min-width"
3685
+ ],
3686
+ "name": "--plinth-menu-min-width",
3687
+ "cssVar": "var(--plinth-menu-min-width)",
3688
+ "tier": "component",
3689
+ "type": "dimension",
3690
+ "description": "A menu's least width (192px); it grows with its longest item.",
3691
+ "value": "12rem",
3692
+ "ref": "size.menu.min",
3693
+ "css": "var(--plinth-size-menu-min)"
3694
+ },
3695
+ {
3696
+ "path": [
3697
+ "menu",
3698
+ "max-width"
3699
+ ],
3700
+ "name": "--plinth-menu-max-width",
3701
+ "cssVar": "var(--plinth-menu-max-width)",
3702
+ "tier": "component",
3703
+ "type": "dimension",
3704
+ "description": "A menu's most width (320px), and never more than the screen less a margin.",
3705
+ "value": "20rem",
3706
+ "ref": "size.menu.max",
3707
+ "css": "var(--plinth-size-menu-max)"
3708
+ },
3709
+ {
3710
+ "path": [
3711
+ "text-field",
3712
+ "trailing-size"
3713
+ ],
3714
+ "name": "--plinth-text-field-trailing-size",
3715
+ "cssVar": "var(--plinth-text-field-trailing-size)",
3716
+ "tier": "component",
3717
+ "type": "dimension",
3718
+ "description": "The room a text field keeps at its end for its trailing slot (32px): a small icon button or a short keyboard hint. A project with a wider hint raises it.",
3719
+ "value": "2rem",
3720
+ "ref": "control.md",
3721
+ "css": "var(--plinth-control-md)"
3722
+ },
3610
3723
  {
3611
3724
  "path": [
3612
3725
  "callout",
@@ -3865,7 +3978,11 @@ export const vars = {
3865
3978
  },
3866
3979
  "dialog": "var(--plinth-size-dialog)",
3867
3980
  "panel": "var(--plinth-size-panel)",
3868
- "peek": "var(--plinth-size-peek)"
3981
+ "peek": "var(--plinth-size-peek)",
3982
+ "menu": {
3983
+ "min": "var(--plinth-size-menu-min)",
3984
+ "max": "var(--plinth-size-menu-max)"
3985
+ }
3869
3986
  },
3870
3987
  "layer": {
3871
3988
  "base": "var(--plinth-layer-base)",
@@ -3926,8 +4043,9 @@ export const vars = {
3926
4043
  "2": "var(--plinth-elevation-2)",
3927
4044
  "3": "var(--plinth-elevation-3)"
3928
4045
  },
3929
- "header": {
3930
- "height": "var(--plinth-header-height)"
4046
+ "page-header": {
4047
+ "height": "var(--plinth-page-header-height)",
4048
+ "offset": "var(--plinth-page-header-offset)"
3931
4049
  },
3932
4050
  "data-table": {
3933
4051
  "row-height": "var(--plinth-data-table-row-height)"
@@ -3951,6 +4069,13 @@ export const vars = {
3951
4069
  "height": "var(--plinth-section-menu-height)",
3952
4070
  "item-height": "var(--plinth-section-menu-item-height)"
3953
4071
  },
4072
+ "menu": {
4073
+ "min-width": "var(--plinth-menu-min-width)",
4074
+ "max-width": "var(--plinth-menu-max-width)"
4075
+ },
4076
+ "text-field": {
4077
+ "trailing-size": "var(--plinth-text-field-trailing-size)"
4078
+ },
3954
4079
  "callout": {
3955
4080
  "neutral-surface": "var(--plinth-callout-neutral-surface)",
3956
4081
  "neutral-border": "var(--plinth-callout-neutral-border)",
@@ -72,8 +72,8 @@
72
72
  --shadow-1: var(--plinth-elevation-1);
73
73
  --shadow-2: var(--plinth-elevation-2);
74
74
  --shadow-3: var(--plinth-elevation-3);
75
- --breakpoint-md: var(--plinth-breakpoint-md);
76
- --breakpoint-lg: var(--plinth-breakpoint-lg);
75
+ --breakpoint-md: 768px;
76
+ --breakpoint-lg: 1280px;
77
77
  --ease-standard: var(--plinth-easing-standard);
78
78
  --ease-enter: var(--plinth-easing-enter);
79
79
  --ease-exit: var(--plinth-easing-exit);
@@ -87,6 +87,8 @@
87
87
  --plinth-ref-size-44: 2.75rem;
88
88
  --plinth-ref-size-56: 3.5rem;
89
89
  --plinth-ref-size-160: 10rem;
90
+ --plinth-ref-size-192: 12rem;
91
+ --plinth-ref-size-320: 20rem;
90
92
  --plinth-ref-size-400: 25rem;
91
93
  --plinth-ref-size-480: 30rem;
92
94
  --plinth-ref-radius-0: 0;
@@ -199,6 +201,8 @@
199
201
  --plinth-size-dialog: var(--plinth-ref-size-480);
200
202
  --plinth-size-panel: var(--plinth-ref-size-400);
201
203
  --plinth-size-peek: var(--plinth-ref-size-160);
204
+ --plinth-size-menu-min: var(--plinth-ref-size-192);
205
+ --plinth-size-menu-max: var(--plinth-ref-size-320);
202
206
  --plinth-layer-base: 0;
203
207
  --plinth-layer-sticky: 100;
204
208
  --plinth-layer-overlay: 200;
@@ -206,7 +210,8 @@
206
210
  --plinth-layer-toast: 400;
207
211
  --plinth-breakpoint-md: 768px;
208
212
  --plinth-breakpoint-lg: 1280px;
209
- --plinth-header-height: var(--plinth-space-14);
213
+ --plinth-page-header-height: var(--plinth-space-14);
214
+ --plinth-page-header-offset: var(--plinth-space-0);
210
215
  --plinth-data-table-row-height: var(--plinth-size-row);
211
216
  --plinth-list-row-height: var(--plinth-size-row);
212
217
  --plinth-pill-height: var(--plinth-control-md);
@@ -215,6 +220,9 @@
215
220
  --plinth-drawer-peek-height: var(--plinth-size-peek);
216
221
  --plinth-section-menu-height: var(--plinth-space-14);
217
222
  --plinth-section-menu-item-height: var(--plinth-control-lg);
223
+ --plinth-menu-min-width: var(--plinth-size-menu-min);
224
+ --plinth-menu-max-width: var(--plinth-size-menu-max);
225
+ --plinth-text-field-trailing-size: var(--plinth-control-md);
218
226
  }
219
227
 
220
228
  :root,
@@ -1167,6 +1167,32 @@
1167
1167
  "value": "10rem",
1168
1168
  "css": "10rem"
1169
1169
  },
1170
+ {
1171
+ "path": [
1172
+ "ref",
1173
+ "size",
1174
+ "192"
1175
+ ],
1176
+ "name": "--plinth-ref-size-192",
1177
+ "cssVar": "var(--plinth-ref-size-192)",
1178
+ "tier": "primitive",
1179
+ "type": "dimension",
1180
+ "value": "12rem",
1181
+ "css": "12rem"
1182
+ },
1183
+ {
1184
+ "path": [
1185
+ "ref",
1186
+ "size",
1187
+ "320"
1188
+ ],
1189
+ "name": "--plinth-ref-size-320",
1190
+ "cssVar": "var(--plinth-ref-size-320)",
1191
+ "tier": "primitive",
1192
+ "type": "dimension",
1193
+ "value": "20rem",
1194
+ "css": "20rem"
1195
+ },
1170
1196
  {
1171
1197
  "path": [
1172
1198
  "ref",
@@ -2687,6 +2713,36 @@
2687
2713
  "ref": "ref.size.160",
2688
2714
  "css": "var(--plinth-ref-size-160)"
2689
2715
  },
2716
+ {
2717
+ "path": [
2718
+ "size",
2719
+ "menu",
2720
+ "min"
2721
+ ],
2722
+ "name": "--plinth-size-menu-min",
2723
+ "cssVar": "var(--plinth-size-menu-min)",
2724
+ "tier": "semantic",
2725
+ "type": "dimension",
2726
+ "description": "The least width of a menu (192 px).",
2727
+ "value": "12rem",
2728
+ "ref": "ref.size.192",
2729
+ "css": "var(--plinth-ref-size-192)"
2730
+ },
2731
+ {
2732
+ "path": [
2733
+ "size",
2734
+ "menu",
2735
+ "max"
2736
+ ],
2737
+ "name": "--plinth-size-menu-max",
2738
+ "cssVar": "var(--plinth-size-menu-max)",
2739
+ "tier": "semantic",
2740
+ "type": "dimension",
2741
+ "description": "The most width of a menu (320 px); a longer label wraps.",
2742
+ "value": "20rem",
2743
+ "ref": "ref.size.320",
2744
+ "css": "var(--plinth-ref-size-320)"
2745
+ },
2690
2746
  {
2691
2747
  "path": [
2692
2748
  "layer",
@@ -3482,17 +3538,32 @@
3482
3538
  },
3483
3539
  {
3484
3540
  "path": [
3485
- "header",
3541
+ "page-header",
3486
3542
  "height"
3487
3543
  ],
3488
- "name": "--plinth-header-height",
3489
- "cssVar": "var(--plinth-header-height)",
3544
+ "name": "--plinth-page-header-height",
3545
+ "cssVar": "var(--plinth-page-header-height)",
3490
3546
  "tier": "component",
3491
3547
  "type": "dimension",
3548
+ "description": "The page header's height, without the safe area it adds as the screen's top bar.",
3492
3549
  "value": "3.5rem",
3493
3550
  "ref": "space.14",
3494
3551
  "css": "var(--plinth-space-14)"
3495
3552
  },
3553
+ {
3554
+ "path": [
3555
+ "page-header",
3556
+ "offset"
3557
+ ],
3558
+ "name": "--plinth-page-header-offset",
3559
+ "cssVar": "var(--plinth-page-header-offset)",
3560
+ "tier": "component",
3561
+ "type": "dimension",
3562
+ "description": "Where the page header sticks: 0, or an app bar's height when the page header sits under one.",
3563
+ "value": "0",
3564
+ "ref": "space.0",
3565
+ "css": "var(--plinth-space-0)"
3566
+ },
3496
3567
  {
3497
3568
  "path": [
3498
3569
  "data-table",
@@ -3605,6 +3676,48 @@
3605
3676
  "ref": "control.lg",
3606
3677
  "css": "var(--plinth-control-lg)"
3607
3678
  },
3679
+ {
3680
+ "path": [
3681
+ "menu",
3682
+ "min-width"
3683
+ ],
3684
+ "name": "--plinth-menu-min-width",
3685
+ "cssVar": "var(--plinth-menu-min-width)",
3686
+ "tier": "component",
3687
+ "type": "dimension",
3688
+ "description": "A menu's least width (192px); it grows with its longest item.",
3689
+ "value": "12rem",
3690
+ "ref": "size.menu.min",
3691
+ "css": "var(--plinth-size-menu-min)"
3692
+ },
3693
+ {
3694
+ "path": [
3695
+ "menu",
3696
+ "max-width"
3697
+ ],
3698
+ "name": "--plinth-menu-max-width",
3699
+ "cssVar": "var(--plinth-menu-max-width)",
3700
+ "tier": "component",
3701
+ "type": "dimension",
3702
+ "description": "A menu's most width (320px), and never more than the screen less a margin.",
3703
+ "value": "20rem",
3704
+ "ref": "size.menu.max",
3705
+ "css": "var(--plinth-size-menu-max)"
3706
+ },
3707
+ {
3708
+ "path": [
3709
+ "text-field",
3710
+ "trailing-size"
3711
+ ],
3712
+ "name": "--plinth-text-field-trailing-size",
3713
+ "cssVar": "var(--plinth-text-field-trailing-size)",
3714
+ "tier": "component",
3715
+ "type": "dimension",
3716
+ "description": "The room a text field keeps at its end for its trailing slot (32px): a small icon button or a short keyboard hint. A project with a wider hint raises it.",
3717
+ "value": "2rem",
3718
+ "ref": "control.md",
3719
+ "css": "var(--plinth-control-md)"
3720
+ },
3608
3721
  {
3609
3722
  "path": [
3610
3723
  "callout",
@@ -0,0 +1,24 @@
1
+ type __VLS_Props = {
2
+ /** The menu's id, which its button names in popovertarget. */
3
+ id: string;
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
10
+ /** Opens the menu next to `source`, the button it belongs to. */
11
+ showPopover: (options: {
12
+ source: HTMLElement;
13
+ }) => void | undefined;
14
+ /** Closes the menu. */
15
+ hidePopover: () => void | undefined;
16
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -1,12 +1,10 @@
1
1
  type __VLS_Props = {
2
- /** The page's title, an <h1>. */
3
- title: string;
2
+ /** The heading over the group's items, and the group's accessible name. */
3
+ label?: string;
4
4
  };
5
- type __VLS_Slots = {
6
- /** The leading action, usually a back link or a menu button. */
7
- leading?: () => unknown;
8
- /** The trailing actions, usually icon buttons. */
9
- actions?: () => unknown;
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
10
8
  };
11
9
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
10
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -0,0 +1,34 @@
1
+ import { type MenuItemTone } from './menu';
2
+ type __VLS_Props = {
3
+ /** The item's address; without it the item is a button. */
4
+ href?: string;
5
+ /** `danger` for an item that destroys or removes something. */
6
+ tone?: MenuItemTone;
7
+ /** A keyboard shortcut to show at the item's end, such as ⌘D. */
8
+ shortcut?: string;
9
+ /** Disables the item. */
10
+ disabled?: boolean;
11
+ /** The id of the menu a button item closes; the menu around it when missing. */
12
+ menu?: string;
13
+ };
14
+ declare var __VLS_7: {}, __VLS_9: {};
15
+ type __VLS_Slots = {} & {
16
+ icon?: (props: typeof __VLS_7) => any;
17
+ } & {
18
+ default?: (props: typeof __VLS_9) => any;
19
+ };
20
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
+ menu: string;
22
+ tone: "neutral" | "danger";
23
+ href: string;
24
+ disabled: boolean;
25
+ shortcut: string;
26
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -0,0 +1,27 @@
1
+ import { type PageHeaderLevel } from './page-header';
2
+ type __VLS_Props = {
3
+ /** The page's heading. */
4
+ heading: string;
5
+ /** The heading's element: `h1`, or `h2` to `h6` beside another page's `h1`. */
6
+ level?: PageHeaderLevel;
7
+ /** The screen's top bar: it adds the top safe-area inset (data-top). */
8
+ top?: boolean;
9
+ };
10
+ type __VLS_Slots = {
11
+ /** The leading action, usually a menu button or a back link. */
12
+ leading?: () => unknown;
13
+ /** The trailing actions: icon buttons or a primary button. */
14
+ actions?: () => unknown;
15
+ };
16
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
17
+ top: boolean;
18
+ level: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
19
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
@@ -0,0 +1,51 @@
1
+ import { type TextFieldSize } from './text-field';
2
+ type __VLS_Props = {
3
+ /** The label, and the field's accessible name. */
4
+ label: string;
5
+ /** Hides the label visually; screen readers still read it. */
6
+ hideLabel?: boolean;
7
+ /** The input's id; one is generated when it is missing. */
8
+ id?: string;
9
+ /** The input's type: text, email, url, tel, password, number, search… */
10
+ type?: string;
11
+ size?: TextFieldSize;
12
+ /** A line under the field that helps fill it in. */
13
+ description?: string;
14
+ /** What is wrong with the value; it marks the field invalid. */
15
+ error?: string;
16
+ disabled?: boolean;
17
+ readonly?: boolean;
18
+ };
19
+ type __VLS_ModelProps = {
20
+ /** The value, with `v-model`. */
21
+ modelValue?: string;
22
+ };
23
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
24
+ declare var __VLS_1: {}, __VLS_3: {};
25
+ type __VLS_Slots = {} & {
26
+ icon?: (props: typeof __VLS_1) => any;
27
+ } & {
28
+ trailing?: (props: typeof __VLS_3) => any;
29
+ };
30
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
31
+ "update:modelValue": (value: string | undefined) => any;
32
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
33
+ "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
34
+ }>, {
35
+ size: "sm" | "md";
36
+ type: string;
37
+ disabled: boolean;
38
+ id: string;
39
+ error: string;
40
+ description: string;
41
+ hideLabel: boolean;
42
+ readonly: boolean;
43
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
44
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
45
+ declare const _default: typeof __VLS_export;
46
+ export default _default;
47
+ type __VLS_WithSlots<T, S> = T & {
48
+ new (): {
49
+ $slots: S;
50
+ };
51
+ };
@@ -0,0 +1,42 @@
1
+ type __VLS_Props = {
2
+ /** The label, and the field's accessible name. */
3
+ label: string;
4
+ /** Hides the label visually; screen readers still read it. */
5
+ hideLabel?: boolean;
6
+ /** The textarea's id; one is generated when it is missing. */
7
+ id?: string;
8
+ /** The lines it shows, and where it starts when it grows. */
9
+ rows?: number;
10
+ /** Grows with its content, from rows lines to maxRows, then scrolls. */
11
+ grow?: boolean;
12
+ /** The most lines it grows to. */
13
+ maxRows?: number;
14
+ /** A line under the field that helps fill it in. */
15
+ description?: string;
16
+ /** What is wrong with the value; it marks the field invalid. */
17
+ error?: string;
18
+ disabled?: boolean;
19
+ readonly?: boolean;
20
+ };
21
+ type __VLS_ModelProps = {
22
+ /** The value, with `v-model`. */
23
+ modelValue?: string;
24
+ };
25
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
26
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
27
+ "update:modelValue": (value: string | undefined) => any;
28
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
29
+ "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
30
+ }>, {
31
+ disabled: boolean;
32
+ id: string;
33
+ error: string;
34
+ description: string;
35
+ hideLabel: boolean;
36
+ readonly: boolean;
37
+ rows: number;
38
+ grow: boolean;
39
+ maxRows: number;
40
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
+ declare const _default: typeof __VLS_export;
42
+ export default _default;