@ptbdynamic/plinth 0.0.0-stage → 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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +258 -2
  3. package/package.json +99 -4
  4. package/packages/css/dist/avatar.css +122 -0
  5. package/packages/css/dist/badge.css +76 -0
  6. package/packages/css/dist/button.css +273 -0
  7. package/packages/css/dist/callout.css +143 -0
  8. package/packages/css/dist/code-block.css +283 -0
  9. package/packages/css/dist/confirm-dialog.css +183 -0
  10. package/packages/css/dist/data-table.css +470 -0
  11. package/packages/css/dist/dialog.css +113 -0
  12. package/packages/css/dist/drawer.css +156 -0
  13. package/packages/css/dist/fonts/geist/LICENSE +93 -0
  14. package/packages/css/dist/fonts/geist/geist-cyrillic-ext-wght-normal.woff2 +0 -0
  15. package/packages/css/dist/fonts/geist/geist-cyrillic-wght-normal.woff2 +0 -0
  16. package/packages/css/dist/fonts/geist/geist-latin-ext-wght-normal.woff2 +0 -0
  17. package/packages/css/dist/fonts/geist/geist-latin-wght-normal.woff2 +0 -0
  18. package/packages/css/dist/fonts/geist/geist-vietnamese-wght-normal.woff2 +0 -0
  19. package/packages/css/dist/fonts/geist-mono/LICENSE +93 -0
  20. package/packages/css/dist/fonts/geist-mono/geist-mono-cyrillic-ext-wght-normal.woff2 +0 -0
  21. package/packages/css/dist/fonts/geist-mono/geist-mono-cyrillic-wght-normal.woff2 +0 -0
  22. package/packages/css/dist/fonts/geist-mono/geist-mono-latin-ext-wght-normal.woff2 +0 -0
  23. package/packages/css/dist/fonts/geist-mono/geist-mono-latin-wght-normal.woff2 +0 -0
  24. package/packages/css/dist/fonts/geist-mono/geist-mono-symbols2-wght-normal.woff2 +0 -0
  25. package/packages/css/dist/fonts/geist-mono/geist-mono-vietnamese-wght-normal.woff2 +0 -0
  26. package/packages/css/dist/fonts/index.css +109 -0
  27. package/packages/css/dist/header.css +110 -0
  28. package/packages/css/dist/icon.css +51 -0
  29. package/packages/css/dist/list-card.css +76 -0
  30. package/packages/css/dist/list-row.css +164 -0
  31. package/packages/css/dist/menu-sheet.css +84 -0
  32. package/packages/css/dist/menu.css +245 -0
  33. package/packages/css/dist/modal.css +367 -0
  34. package/packages/css/dist/page-header.css +124 -0
  35. package/packages/css/dist/pill-row.css +197 -0
  36. package/packages/css/dist/plinth.css +4446 -0
  37. package/packages/css/dist/section-menu.css +226 -0
  38. package/packages/css/dist/sheet.css +239 -0
  39. package/packages/css/dist/text-field.css +230 -0
  40. package/packages/css/dist/textarea.css +169 -0
  41. package/packages/css/dist/tokens.css +413 -0
  42. package/packages/react/dist/PlinthAvatar.d.ts +17 -0
  43. package/packages/react/dist/PlinthBadge.d.ts +7 -0
  44. package/packages/react/dist/PlinthButton.d.ts +29 -0
  45. package/packages/react/dist/PlinthCallout.d.ts +16 -0
  46. package/packages/react/dist/PlinthCodeBlock.d.ts +24 -0
  47. package/packages/react/dist/PlinthConfirmDialog.d.ts +38 -0
  48. package/packages/react/dist/PlinthDataTable.d.ts +11 -0
  49. package/packages/react/dist/PlinthDataTableCell.d.ts +15 -0
  50. package/packages/react/dist/PlinthDataTableColumn.d.ts +13 -0
  51. package/packages/react/dist/PlinthDataTableEmpty.d.ts +9 -0
  52. package/packages/react/dist/PlinthDataTableRow.d.ts +9 -0
  53. package/packages/react/dist/PlinthDataTableSort.d.ts +4 -0
  54. package/packages/react/dist/PlinthDialog.d.ts +26 -0
  55. package/packages/react/dist/PlinthDrawer.d.ts +29 -0
  56. package/packages/react/dist/PlinthIcon.d.ts +10 -0
  57. package/packages/react/dist/PlinthIconButton.d.ts +26 -0
  58. package/packages/react/dist/PlinthListCard.d.ts +14 -0
  59. package/packages/react/dist/PlinthListRow.d.ts +29 -0
  60. package/packages/react/dist/PlinthMenu.d.ts +12 -0
  61. package/packages/react/dist/PlinthMenuGroup.d.ts +9 -0
  62. package/packages/react/dist/PlinthMenuItem.d.ts +26 -0
  63. package/packages/react/dist/PlinthMenuSeparator.d.ts +4 -0
  64. package/packages/react/dist/PlinthMenuSheet.d.ts +24 -0
  65. package/packages/react/dist/PlinthPageHeader.d.ts +17 -0
  66. package/packages/react/dist/PlinthPill.d.ts +17 -0
  67. package/packages/react/dist/PlinthPillRow.d.ts +13 -0
  68. package/packages/react/dist/PlinthSectionMenu.d.ts +11 -0
  69. package/packages/react/dist/PlinthSectionMenuItem.d.ts +20 -0
  70. package/packages/react/dist/PlinthSheet.d.ts +26 -0
  71. package/packages/react/dist/PlinthTextField.d.ts +24 -0
  72. package/packages/react/dist/PlinthTextarea.d.ts +24 -0
  73. package/packages/react/dist/avatar.d.ts +12 -0
  74. package/packages/react/dist/button.d.ts +21 -0
  75. package/packages/react/dist/callout.d.ts +19 -0
  76. package/packages/react/dist/code-block.d.ts +16 -0
  77. package/packages/react/dist/confirm-dialog.d.ts +23 -0
  78. package/packages/react/dist/data-table.d.ts +15 -0
  79. package/packages/react/dist/dialog.d.ts +10 -0
  80. package/packages/react/dist/drawer.d.ts +20 -0
  81. package/packages/react/dist/heading.d.ts +5 -0
  82. package/packages/react/dist/icon.d.ts +5 -0
  83. package/packages/react/dist/index.d.ts +49 -0
  84. package/packages/react/dist/index.js +1326 -0
  85. package/packages/react/dist/list-row.d.ts +5 -0
  86. package/packages/react/dist/markup.d.ts +9 -0
  87. package/packages/react/dist/menu.d.ts +7 -0
  88. package/packages/react/dist/page-header.d.ts +5 -0
  89. package/packages/react/dist/sheet.d.ts +12 -0
  90. package/packages/react/dist/size.d.ts +13 -0
  91. package/packages/react/dist/swipe.d.ts +15 -0
  92. package/packages/react/dist/text-field.d.ts +10 -0
  93. package/packages/react/dist/tones.d.ts +5 -0
  94. package/packages/tokens/dist/index.d.ts +230 -0
  95. package/packages/tokens/dist/index.js +4091 -0
  96. package/packages/tokens/dist/tailwind-theme.css +80 -0
  97. package/packages/tokens/dist/tokens.css +413 -0
  98. package/packages/tokens/dist/tokens.json +3875 -0
  99. package/packages/vue/dist/PlinthAvatar.vue.d.ts +24 -0
  100. package/packages/vue/dist/PlinthBadge.vue.d.ts +21 -0
  101. package/packages/vue/dist/PlinthButton.vue.d.ts +42 -0
  102. package/packages/vue/dist/PlinthCallout.vue.d.ts +31 -0
  103. package/packages/vue/dist/PlinthCodeBlock.vue.d.ts +49 -0
  104. package/packages/vue/dist/PlinthConfirmDialog.vue.d.ts +51 -0
  105. package/packages/vue/dist/PlinthDataTable.vue.d.ts +21 -0
  106. package/packages/vue/dist/PlinthDataTableCell.vue.d.ts +29 -0
  107. package/packages/vue/dist/PlinthDataTableColumn.vue.d.ts +26 -0
  108. package/packages/vue/dist/PlinthDataTableEmpty.vue.d.ts +19 -0
  109. package/packages/vue/dist/PlinthDataTableRow.vue.d.ts +19 -0
  110. package/packages/vue/dist/PlinthDataTableSort.vue.d.ts +13 -0
  111. package/packages/vue/dist/PlinthDialog.vue.d.ts +45 -0
  112. package/packages/vue/dist/PlinthDrawer.vue.d.ts +48 -0
  113. package/packages/vue/dist/PlinthIcon.vue.d.ts +23 -0
  114. package/packages/vue/dist/PlinthIconButton.vue.d.ts +37 -0
  115. package/packages/vue/dist/PlinthListCard.vue.d.ts +26 -0
  116. package/packages/vue/dist/PlinthListRow.vue.d.ts +38 -0
  117. package/packages/vue/dist/PlinthMenu.vue.d.ts +24 -0
  118. package/packages/vue/dist/PlinthMenuGroup.vue.d.ts +17 -0
  119. package/packages/vue/dist/PlinthMenuItem.vue.d.ts +34 -0
  120. package/packages/vue/dist/PlinthMenuSeparator.vue.d.ts +3 -0
  121. package/packages/vue/dist/PlinthMenuSheet.vue.d.ts +48 -0
  122. package/packages/vue/dist/PlinthPageHeader.vue.d.ts +27 -0
  123. package/packages/vue/dist/PlinthPill.vue.d.ts +28 -0
  124. package/packages/vue/dist/PlinthPillRow.vue.d.ts +22 -0
  125. package/packages/vue/dist/PlinthSectionMenu.vue.d.ts +22 -0
  126. package/packages/vue/dist/PlinthSectionMenuItem.vue.d.ts +28 -0
  127. package/packages/vue/dist/PlinthSheet.vue.d.ts +45 -0
  128. package/packages/vue/dist/PlinthTextField.vue.d.ts +51 -0
  129. package/packages/vue/dist/PlinthTextarea.vue.d.ts +42 -0
  130. package/packages/vue/dist/avatar.d.ts +12 -0
  131. package/packages/vue/dist/button.d.ts +5 -0
  132. package/packages/vue/dist/callout.d.ts +19 -0
  133. package/packages/vue/dist/code-block.d.ts +16 -0
  134. package/packages/vue/dist/confirm-dialog.d.ts +23 -0
  135. package/packages/vue/dist/data-table.d.ts +15 -0
  136. package/packages/vue/dist/dialog.d.ts +10 -0
  137. package/packages/vue/dist/drawer.d.ts +20 -0
  138. package/packages/vue/dist/heading.d.ts +5 -0
  139. package/packages/vue/dist/icon.d.ts +5 -0
  140. package/packages/vue/dist/index.d.ts +53 -0
  141. package/packages/vue/dist/index.js +1732 -0
  142. package/packages/vue/dist/list-row.d.ts +5 -0
  143. package/packages/vue/dist/menu.d.ts +8 -0
  144. package/packages/vue/dist/page-header.d.ts +5 -0
  145. package/packages/vue/dist/sheet.d.ts +12 -0
  146. package/packages/vue/dist/size.d.ts +13 -0
  147. package/packages/vue/dist/slots.d.ts +3 -0
  148. package/packages/vue/dist/swipe.d.ts +12 -0
  149. package/packages/vue/dist/text-field.d.ts +10 -0
  150. package/packages/vue/dist/tones.d.ts +5 -0
@@ -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,48 @@
1
+ type __VLS_Props = {
2
+ /** The dialog's id, for the menu button's commandfor; one is generated when it is missing. */
3
+ id?: string;
4
+ /** The heading, and the sheet's and the navigation's accessible name. */
5
+ title?: string;
6
+ /** The close button's accessible name. */
7
+ closeLabel?: string;
8
+ /** The signed-in user's name; leave it out for no user row. */
9
+ userName?: string;
10
+ /** A second line under the name: an email or a role. */
11
+ userDetail?: string;
12
+ /** The user's picture; initials from the name stand in without it. */
13
+ userSrc?: string;
14
+ /** Makes the user row a link, to the profile. */
15
+ userHref?: string;
16
+ };
17
+ declare var __VLS_22: {}, __VLS_24: {};
18
+ type __VLS_Slots = {} & {
19
+ default?: (props: typeof __VLS_22) => any;
20
+ } & {
21
+ account?: (props: typeof __VLS_24) => any;
22
+ };
23
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
24
+ /** Opens the menu as a modal dialog. */
25
+ showModal: () => void | undefined;
26
+ /** Closes the menu; it emits `close`. */
27
+ close: () => void | undefined;
28
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
29
+ close: (event: Event) => any;
30
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
31
+ onClose?: ((event: Event) => any) | undefined;
32
+ }>, {
33
+ title: string;
34
+ id: string;
35
+ closeLabel: string;
36
+ userName: string;
37
+ userDetail: string;
38
+ userSrc: string;
39
+ userHref: string;
40
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
42
+ declare const _default: typeof __VLS_export;
43
+ export default _default;
44
+ type __VLS_WithSlots<T, S> = T & {
45
+ new (): {
46
+ $slots: S;
47
+ };
48
+ };
@@ -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,28 @@
1
+ type __VLS_Props = {
2
+ /** A number after the label, such as how many items the filter shows. */
3
+ count?: string | number | null;
4
+ /** Renders the pill as a link, for a row that navigates. */
5
+ href?: string;
6
+ /** The selected pill: aria-pressed="true" on a button, aria-current="page" on a link. */
7
+ selected?: boolean;
8
+ /** Disables the pill. */
9
+ disabled?: boolean;
10
+ };
11
+ declare var __VLS_7: {};
12
+ type __VLS_Slots = {} & {
13
+ default?: (props: typeof __VLS_7) => any;
14
+ };
15
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
16
+ href: string;
17
+ disabled: boolean;
18
+ selected: boolean;
19
+ count: string | number | null;
20
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
22
+ declare const _default: typeof __VLS_export;
23
+ export default _default;
24
+ type __VLS_WithSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };
@@ -0,0 +1,22 @@
1
+ type __VLS_Props = {
2
+ /** The row's accessible name (aria-label). */
3
+ label?: string;
4
+ /** Renders the row as a <nav>, for pills that are links. */
5
+ nav?: boolean;
6
+ };
7
+ declare var __VLS_7: {};
8
+ type __VLS_Slots = {} & {
9
+ default?: (props: typeof __VLS_7) => any;
10
+ };
11
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
+ label: string;
13
+ nav: boolean;
14
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
@@ -0,0 +1,22 @@
1
+ type __VLS_Props = {
2
+ /** The menu's accessible name (aria-label). */
3
+ label?: string;
4
+ /** A <nav> of links (the default); false for a <div role="group"> of buttons. */
5
+ nav?: boolean;
6
+ };
7
+ declare var __VLS_7: {};
8
+ type __VLS_Slots = {} & {
9
+ default?: (props: typeof __VLS_7) => any;
10
+ };
11
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
+ label: string;
13
+ nav: boolean;
14
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
@@ -0,0 +1,28 @@
1
+ type __VLS_Props = {
2
+ /** A number after the label, such as how many items the section holds. */
3
+ count?: string | number | null;
4
+ /** The section's address; without it the item is a button that switches the view in place. */
5
+ href?: string;
6
+ /** The current section: aria-current="page" on a link, aria-pressed="true" on a button. */
7
+ current?: boolean;
8
+ /** Disables the item. */
9
+ disabled?: boolean;
10
+ };
11
+ declare var __VLS_7: {};
12
+ type __VLS_Slots = {} & {
13
+ default?: (props: typeof __VLS_7) => any;
14
+ };
15
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
16
+ href: string;
17
+ disabled: boolean;
18
+ current: boolean;
19
+ count: string | number | null;
20
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
22
+ declare const _default: typeof __VLS_export;
23
+ export default _default;
24
+ type __VLS_WithSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };
@@ -0,0 +1,45 @@
1
+ import { type SheetSide } from './sheet';
2
+ type __VLS_Props = {
3
+ /** The dialog's id; one is generated when it is missing. */
4
+ id?: string;
5
+ /** The heading, and the sheet's accessible name. */
6
+ title: string;
7
+ /** A line under the title, and the sheet's accessible description. */
8
+ description?: string;
9
+ /** The close button's accessible name. */
10
+ closeLabel?: string;
11
+ /** The edge the sheet comes from, at every width. */
12
+ side?: SheetSide;
13
+ /** The edge below 768px, when it is another one. */
14
+ sidePhone?: SheetSide;
15
+ };
16
+ declare var __VLS_7: {}, __VLS_9: {};
17
+ type __VLS_Slots = {} & {
18
+ default?: (props: typeof __VLS_7) => any;
19
+ } & {
20
+ footer?: (props: typeof __VLS_9) => any;
21
+ };
22
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
23
+ /** Opens the sheet as a modal dialog. */
24
+ showModal: () => void | undefined;
25
+ /** Closes the sheet; the dialog fires `close`. */
26
+ close: () => void | undefined;
27
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
28
+ close: (event: Event) => any;
29
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
30
+ onClose?: ((event: Event) => any) | undefined;
31
+ }>, {
32
+ id: string;
33
+ sidePhone: "start" | "end" | "top" | "bottom";
34
+ description: string;
35
+ closeLabel: string;
36
+ side: "start" | "end" | "top" | "bottom";
37
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
38
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
39
+ declare const _default: typeof __VLS_export;
40
+ export default _default;
41
+ type __VLS_WithSlots<T, S> = T & {
42
+ new (): {
43
+ $slots: S;
44
+ };
45
+ };
@@ -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;
@@ -0,0 +1,12 @@
1
+ /** The avatar sizes (24, 32, 40 and 56 px), from the shared size scale. `md` is the default. */
2
+ export declare const avatarSizes: readonly ["sm", "md", "lg", "xl"];
3
+ export type AvatarSize = (typeof avatarSizes)[number];
4
+ /** A size from the list, or `md` when it is not one of them. */
5
+ export declare function avatarSize(value: string | undefined): AvatarSize;
6
+ /**
7
+ * Initials from a name: the first letter of the first and the last word, upper case. Blade's
8
+ * Initials::from() does the same; the parity tests compare them.
9
+ */
10
+ export declare function initialsFrom(name: string): string;
11
+ /** The person shown when there is neither an image nor a name to take initials from. */
12
+ export declare const avatarGlyph = "<svg class=\"plinth-avatar-glyph\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"9\" r=\"4\"></circle><path d=\"M4.5 20a7.5 7.5 0 0 1 15 0\"></path></svg>";
@@ -0,0 +1,5 @@
1
+ /** The button's variants. `primary` is the default. */
2
+ export declare const buttonVariants: readonly ["primary", "accent", "secondary", "ghost", "danger", "danger-ghost"];
3
+ export type ButtonVariant = (typeof buttonVariants)[number];
4
+ /** A variant from the list, or `primary` when it is not one of them. */
5
+ export declare function buttonVariant(value: string | undefined): ButtonVariant;
@@ -0,0 +1,19 @@
1
+ /** The callout's tones. `neutral` is the default. */
2
+ export declare const calloutTones: readonly ["neutral", "info", "success", "warning", "danger"];
3
+ export type CalloutTone = (typeof calloutTones)[number];
4
+ /** A tone from the list, or `neutral` when it is not one of them. */
5
+ export declare function calloutTone(value: string | undefined): CalloutTone;
6
+ /**
7
+ * The callout's roles: `note` (the default) for a note in the page, `status` for a message the
8
+ * app adds after something happens, `alert` for an urgent one. Assistive technology announces the
9
+ * last two when they appear.
10
+ */
11
+ export declare const calloutRoles: readonly ["note", "status", "alert"];
12
+ export type CalloutRole = (typeof calloutRoles)[number];
13
+ /** A role from the list, or `note` when it is not one of them. */
14
+ export declare function calloutRole(value: string | undefined): CalloutRole;
15
+ /**
16
+ * Each tone's icon, a different shape for each, so the tone never rests on colour alone. Blade's
17
+ * CalloutTone::icon() prints the same markup; the icon slot replaces it.
18
+ */
19
+ export declare const calloutIcons: Record<CalloutTone, string>;
@@ -0,0 +1,16 @@
1
+ /** A language tab: its name (Blade, Vue, React, HTML) and its code, as text or as markup. */
2
+ export interface CodeBlockTab {
3
+ label: string;
4
+ code: string;
5
+ /** The highlighter's markup for the code (trusted, not escaped), in place of `code`. */
6
+ html?: string;
7
+ }
8
+ /** The CSS shows the code of the first six tabs, so a block has at most six. */
9
+ export declare const codeBlockTabs: (tabs: readonly CodeBlockTab[]) => CodeBlockTab[];
10
+ /** The index of the tab that starts checked: the one labelled `selected`, or the first. */
11
+ export declare const checkedTab: (tabs: readonly CodeBlockTab[], selected: string | undefined) => number;
12
+ /**
13
+ * The text a code block's copy button copies: the code of the checked tab's <pre>, or of the only
14
+ * one. React's layer and Blade's Alpine do the same.
15
+ */
16
+ export declare function codeBlockText(button: Element): string;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * What the confirmation dialog asks for: `simple` (the default) asks only, `type` asks for a
3
+ * phrase typed exactly, `password` asks for the person's password, which the app checks.
4
+ */
5
+ export declare const confirmDialogKinds: readonly ["simple", "type", "password"];
6
+ export type ConfirmDialogKind = (typeof confirmDialogKinds)[number];
7
+ /** A kind from the list, or `simple` when it is not one of them. */
8
+ export declare function confirmDialogKind(value: string | undefined): ConfirmDialogKind;
9
+ /** The confirm button's tone: `neutral` (the default, a primary button) or `danger`. */
10
+ export declare const confirmDialogTones: readonly ["neutral", "danger"];
11
+ export type ConfirmDialogTone = (typeof confirmDialogTones)[number];
12
+ /** A tone from the list, or `neutral` when it is not one of them. */
13
+ export declare function confirmDialogTone(value: string | undefined): ConfirmDialogTone;
14
+ /** The field's label when the app gives none; `:phrase` is where the phrase goes. */
15
+ export declare const confirmDialogFieldLabels: {
16
+ readonly type: "Type :phrase to confirm";
17
+ readonly password: "Password";
18
+ };
19
+ /**
20
+ * The input's pattern: the phrase with the characters a pattern (a `v`-flag regular expression)
21
+ * treats as syntax escaped, so the browser accepts exactly the phrase.
22
+ */
23
+ export declare const confirmDialogPattern: (phrase: string) => string;
@@ -0,0 +1,15 @@
1
+ /** The sort states of a sortable column, as aria-sort takes them. `none` is the default. */
2
+ export declare const dataTableSorts: readonly ["none", "ascending", "descending"];
3
+ export type DataTableSort = (typeof dataTableSorts)[number];
4
+ /** A sort from the list, or `none` when it is not one of them. */
5
+ export declare function dataTableSort(value: string | undefined): DataTableSort;
6
+ /** What a cell is on a phone's card: a labelled field (the default), its title, or its actions. */
7
+ export declare const dataTableCellKinds: readonly ["field", "title", "actions"];
8
+ export type DataTableCellKind = (typeof dataTableCellKinds)[number];
9
+ /** A kind from the list, or `field` when it is not one of them. */
10
+ export declare function dataTableCellKind(value: string | undefined): DataTableCellKind;
11
+ /**
12
+ * The sort button's icon: an arrow up and an arrow down; the column's aria-sort decides which
13
+ * of them show. Blade's sort button prints the same markup.
14
+ */
15
+ export declare const dataTableSortIcon = "<span class=\"plinth-icon plinth-data-table-sort-icon\" data-size=\"sm\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path class=\"plinth-data-table-sort-up\" d=\"M8 9l4-4 4 4\"></path><path class=\"plinth-data-table-sort-down\" d=\"M8 15l4 4 4-4\"></path></svg></span>";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * How the dialog shows below 768px: `center` (the default, printed as no attribute) or `bottom`,
3
+ * a bottom sheet. From 768px up every dialog is centred.
4
+ */
5
+ export declare const dialogSidePhones: readonly ["center", "bottom"];
6
+ export type DialogSidePhone = (typeof dialogSidePhones)[number];
7
+ /** A side from the list, or `center` when it is not one of them. */
8
+ export declare function dialogSidePhone(value: string | undefined): DialogSidePhone;
9
+ /** The close button's icon, the same cross as the sheet's. Blade's dialog prints the same markup. */
10
+ export declare const dialogCloseIcon = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 6l12 12M18 6L6 18\"></path></svg>";
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The drawer's presentation from 768px up: `dialog` (the default), centred like the dialog, or
3
+ * `sheet`, a panel on the inline-end edge like the sheet.
4
+ */
5
+ export declare const drawerDesktops: readonly ["dialog", "sheet"];
6
+ export type DrawerDesktop = (typeof drawerDesktops)[number];
7
+ /** A presentation from the list, or `dialog` when it is not one of them. */
8
+ export declare function drawerDesktop(value: string | undefined): DrawerDesktop;
9
+ /** Where a drawer can rest on a phone, smallest first: a peek, half the screen, or all of it. */
10
+ export declare const drawerSnaps: readonly ["peek", "half", "full"];
11
+ export type DrawerSnap = (typeof drawerSnaps)[number];
12
+ /**
13
+ * The snap points from a list or a string of them separated by spaces: the known ones, each once,
14
+ * smallest first. Empty when there are none (a drawer as tall as its content).
15
+ */
16
+ export declare function drawerSnapPoints(value: readonly string[] | string | undefined): DrawerSnap[];
17
+ /** The snap point it opens at: `snap` when it is one of `points`, else the largest of them. */
18
+ export declare function drawerSnap(snap: string | undefined, points: DrawerSnap[]): DrawerSnap | undefined;
19
+ /** The close button's icon, the same cross as the sheet's. Blade's drawer prints the same markup. */
20
+ export declare const drawerCloseIcon = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 6l12 12M18 6L6 18\"></path></svg>";
@@ -0,0 +1,5 @@
1
+ /** The heading levels a component's heading can take. `h2` is the default. */
2
+ export declare const headingLevels: readonly ["h2", "h3", "h4", "h5", "h6"];
3
+ export type HeadingLevel = (typeof headingLevels)[number];
4
+ /** A level from the list, or `h2` when it is not one of them. */
5
+ export declare function headingLevel(value: string | undefined): HeadingLevel;
@@ -0,0 +1,5 @@
1
+ /** The icon sizes (16, 20 and 24 px), from the shared size scale. `md` is the default. */
2
+ export declare const iconSizes: readonly ["sm", "md", "lg"];
3
+ export type IconSize = (typeof iconSizes)[number];
4
+ /** A size from the list, or `md` when it is not one of them. */
5
+ export declare function iconSize(value: string | undefined): IconSize;
@@ -0,0 +1,53 @@
1
+ import type { Plugin } from 'vue';
2
+ import PlinthAvatar from './PlinthAvatar.vue';
3
+ import PlinthBadge from './PlinthBadge.vue';
4
+ import PlinthButton from './PlinthButton.vue';
5
+ import PlinthCallout from './PlinthCallout.vue';
6
+ import PlinthCodeBlock from './PlinthCodeBlock.vue';
7
+ import PlinthConfirmDialog from './PlinthConfirmDialog.vue';
8
+ import PlinthDataTable from './PlinthDataTable.vue';
9
+ import PlinthDataTableCell from './PlinthDataTableCell.vue';
10
+ import PlinthDataTableColumn from './PlinthDataTableColumn.vue';
11
+ import PlinthDataTableEmpty from './PlinthDataTableEmpty.vue';
12
+ import PlinthDataTableRow from './PlinthDataTableRow.vue';
13
+ import PlinthDataTableSort from './PlinthDataTableSort.vue';
14
+ import PlinthDialog from './PlinthDialog.vue';
15
+ import PlinthDrawer from './PlinthDrawer.vue';
16
+ import PlinthIcon from './PlinthIcon.vue';
17
+ import PlinthIconButton from './PlinthIconButton.vue';
18
+ import PlinthListCard from './PlinthListCard.vue';
19
+ import PlinthListRow from './PlinthListRow.vue';
20
+ import PlinthMenu from './PlinthMenu.vue';
21
+ import PlinthMenuGroup from './PlinthMenuGroup.vue';
22
+ import PlinthMenuItem from './PlinthMenuItem.vue';
23
+ import PlinthMenuSeparator from './PlinthMenuSeparator.vue';
24
+ import PlinthMenuSheet from './PlinthMenuSheet.vue';
25
+ import PlinthPageHeader from './PlinthPageHeader.vue';
26
+ import PlinthPill from './PlinthPill.vue';
27
+ import PlinthPillRow from './PlinthPillRow.vue';
28
+ import PlinthSectionMenu from './PlinthSectionMenu.vue';
29
+ import PlinthSectionMenuItem from './PlinthSectionMenuItem.vue';
30
+ import PlinthSheet from './PlinthSheet.vue';
31
+ import PlinthTextarea from './PlinthTextarea.vue';
32
+ import PlinthTextField from './PlinthTextField.vue';
33
+ export { PlinthAvatar, PlinthBadge, PlinthButton, PlinthCallout, PlinthCodeBlock, PlinthConfirmDialog, PlinthDataTable, PlinthDataTableCell, PlinthDataTableColumn, PlinthDataTableEmpty, PlinthDataTableRow, PlinthDataTableSort, PlinthDialog, PlinthDrawer, PlinthIcon, PlinthIconButton, PlinthListCard, PlinthListRow, PlinthMenu, PlinthMenuGroup, PlinthMenuItem, PlinthMenuSeparator, PlinthMenuSheet, PlinthPageHeader, PlinthPill, PlinthPillRow, PlinthSectionMenu, PlinthSectionMenuItem, PlinthSheet, PlinthTextarea, PlinthTextField, };
34
+ export { avatarGlyph, avatarSizes, initialsFrom, type AvatarSize } from './avatar';
35
+ export { buttonVariants, type ButtonVariant } from './button';
36
+ export { calloutIcons, calloutRole, calloutRoles, calloutTone, calloutTones, type CalloutRole, type CalloutTone, } from './callout';
37
+ export { type CodeBlockTab } from './code-block';
38
+ export { confirmDialogFieldLabels, confirmDialogKind, confirmDialogKinds, confirmDialogPattern, confirmDialogTone, confirmDialogTones, type ConfirmDialogKind, type ConfirmDialogTone, } from './confirm-dialog';
39
+ export { dataTableCellKind, dataTableCellKinds, dataTableSort, dataTableSortIcon, dataTableSorts, type DataTableCellKind, type DataTableSort, } from './data-table';
40
+ export { dialogCloseIcon, dialogSidePhone, dialogSidePhones, type DialogSidePhone } from './dialog';
41
+ export { drawerCloseIcon, drawerDesktop, drawerDesktops, drawerSnap, drawerSnapPoints, drawerSnaps, type DrawerDesktop, type DrawerSnap, } from './drawer';
42
+ export { headingLevel, headingLevels, type HeadingLevel } from './heading';
43
+ export { controlSizes, iconSizeFor, resolveSize, sizes, type ControlSize, type Size } from './size';
44
+ export { iconSizes, type IconSize } from './icon';
45
+ export { listRowChevron } from './list-row';
46
+ export { menuIdKey, menuItemTone, menuItemTones, type MenuItemTone } from './menu';
47
+ export { pageHeaderLevel, pageHeaderLevels, type PageHeaderLevel } from './page-header';
48
+ export { sheetCloseIcon, sheetSide, sheetSidePhone, sheetSides, type SheetSide } from './sheet';
49
+ export { fieldDescribedBy, textFieldSize, textFieldSizes, type TextFieldSize } from './text-field';
50
+ export { swipeToClose, useSwipeToClose } from './swipe';
51
+ export { tones, type Tone } from './tones';
52
+ /** Registers every Plinth component globally: `app.use(Plinth)`. */
53
+ export declare const Plinth: Plugin;