@nexxtmove/ui 1.38.0 → 1.40.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 (27) hide show
  1. package/dist/components/editor/molecules/EditorAlignItems/EditorAlignItems.vue.d.ts +18 -3
  2. package/dist/components/editor/molecules/EditorBackgroundSize/EditorBackgroundSize.vue.d.ts +15 -3
  3. package/dist/components/editor/molecules/EditorBorder/EditorBorder.vue.d.ts +11 -6
  4. package/dist/components/editor/molecules/EditorFlexDirection/EditorFlexDirection.vue.d.ts +13 -3
  5. package/dist/components/editor/molecules/EditorGap/EditorGap.vue.d.ts +55 -6
  6. package/dist/components/editor/molecules/EditorHeadingType/EditorHeadingType.vue.d.ts +16 -12
  7. package/dist/components/editor/molecules/EditorJustifyContent/EditorJustifyContent.vue.d.ts +18 -3
  8. package/dist/components/editor/molecules/EditorPadding/EditorPadding.vue.d.ts +106 -0
  9. package/dist/components/editor/molecules/EditorTextAlign/EditorTextAlign.vue.d.ts +18 -3
  10. package/dist/components/organisms/ComboboxPanel/_ComboboxPanelOptions.vue.d.ts +24 -0
  11. package/dist/components/organisms/ComboboxPanel/combobox-types.d.ts +17 -0
  12. package/dist/index.d.ts +11 -1
  13. package/dist/index.js +5079 -4894
  14. package/package.json +1 -1
  15. package/src/components/editor/molecules/EditorAlignItems/EditorAlignItems.vue +35 -11
  16. package/src/components/editor/molecules/EditorBackgroundSize/EditorBackgroundSize.vue +33 -6
  17. package/src/components/editor/molecules/EditorBorder/EditorBorder.vue +19 -12
  18. package/src/components/editor/molecules/EditorFlexDirection/EditorFlexDirection.vue +40 -5
  19. package/src/components/editor/molecules/EditorGap/EditorGap.vue +30 -15
  20. package/src/components/editor/molecules/EditorHeadingType/EditorHeadingType.vue +19 -15
  21. package/src/components/editor/molecules/EditorJustifyContent/EditorJustifyContent.vue +35 -15
  22. package/src/components/editor/molecules/EditorPadding/EditorPadding.vue +61 -19
  23. package/src/components/editor/molecules/EditorTextAlign/EditorTextAlign.vue +35 -7
  24. package/src/components/organisms/ComboboxPanel/ComboboxPanel.vue +58 -46
  25. package/src/components/organisms/ComboboxPanel/_ComboboxPanelOptions.vue +96 -0
  26. package/src/components/organisms/ComboboxPanel/combobox-types.ts +19 -0
  27. package/src/index.ts +14 -1
@@ -1,8 +1,23 @@
1
+ /**
2
+ * The options the editor offers, in the order they are shown. `token` is the
3
+ * class without its fixed `items-` prefix, so the class is `items-` plus the
4
+ * token. The labels are not in here; they arrive through `messages`, keyed by
5
+ * token.
6
+ */
7
+ export declare const EDITOR_ALIGN_ITEMS_OPTIONS: readonly [{
8
+ readonly token: "start";
9
+ }, {
10
+ readonly token: "center";
11
+ }, {
12
+ readonly token: "end";
13
+ }, {
14
+ readonly token: "stretch";
15
+ }];
1
16
  /**
2
17
  * The cross-axis alignment as the editor needs it: the Tailwind class itself,
3
18
  * so the consumer can put the model value straight on the element it styles.
4
19
  */
5
- export type EditorAlignItemsValue = 'items-start' | 'items-center' | 'items-end' | 'items-stretch';
20
+ export type EditorAlignItemsValue = `items-${(typeof EDITOR_ALIGN_ITEMS_OPTIONS)[number]['token']}`;
6
21
  /** Overridable copy for the four options. Every key is optional. */
7
22
  export interface EditorAlignItemsMessages {
8
23
  /** Accessible name of the `items-start` option. Defaults to `'Begin'`. */
@@ -35,10 +50,10 @@ declare const __VLS_export: import('vue').DefineComponent<NexxtEditorAlignItemsP
35
50
  /** The selected alignment, as the Tailwind class to apply. */
36
51
  modelValue: EditorAlignItemsValue;
37
52
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
38
- "update:modelValue": (value: EditorAlignItemsValue) => any;
53
+ "update:modelValue": (value: "items-center" | "items-end" | "items-start" | "items-stretch") => any;
39
54
  }, string, import('vue').PublicProps, Readonly<NexxtEditorAlignItemsProps & {
40
55
  /** The selected alignment, as the Tailwind class to apply. */
41
56
  modelValue: EditorAlignItemsValue;
42
57
  }> & Readonly<{
43
- "onUpdate:modelValue"?: ((value: EditorAlignItemsValue) => any) | undefined;
58
+ "onUpdate:modelValue"?: ((value: "items-center" | "items-end" | "items-start" | "items-stretch") => any) | undefined;
44
59
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1,8 +1,20 @@
1
+ /**
2
+ * The options the editor offers, in the order they are shown. `token` is the
3
+ * class without its fixed `bg-` prefix, so the class is `bg-` plus the token.
4
+ * The labels are not in here; they arrive through `messages`, keyed by token.
5
+ */
6
+ export declare const EDITOR_BACKGROUND_SIZE_OPTIONS: readonly [{
7
+ readonly token: "cover";
8
+ }, {
9
+ readonly token: "contain";
10
+ }, {
11
+ readonly token: "auto";
12
+ }];
1
13
  /**
2
14
  * The background size as the editor needs it: the Tailwind class itself, so the
3
15
  * consumer can put the model value straight on the element it styles.
4
16
  */
5
- export type EditorBackgroundSizeValue = 'bg-cover' | 'bg-contain' | 'bg-auto';
17
+ export type EditorBackgroundSizeValue = `bg-${(typeof EDITOR_BACKGROUND_SIZE_OPTIONS)[number]['token']}`;
6
18
  /** Overridable copy for the three options. Every key is optional. */
7
19
  export interface EditorBackgroundSizeMessages {
8
20
  /** Accessible name of the `bg-cover` option. Defaults to `'Opvullen'`. */
@@ -33,10 +45,10 @@ declare const __VLS_export: import('vue').DefineComponent<NexxtEditorBackgroundS
33
45
  /** The selected background size, as the Tailwind class to apply. */
34
46
  modelValue: EditorBackgroundSizeValue;
35
47
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
36
- "update:modelValue": (value: EditorBackgroundSizeValue) => any;
48
+ "update:modelValue": (value: "bg-auto" | "bg-cover" | "bg-contain") => any;
37
49
  }, string, import('vue').PublicProps, Readonly<NexxtEditorBackgroundSizeProps & {
38
50
  /** The selected background size, as the Tailwind class to apply. */
39
51
  modelValue: EditorBackgroundSizeValue;
40
52
  }> & Readonly<{
41
- "onUpdate:modelValue"?: ((value: EditorBackgroundSizeValue) => any) | undefined;
53
+ "onUpdate:modelValue"?: ((value: "bg-auto" | "bg-cover" | "bg-contain") => any) | undefined;
42
54
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -4,22 +4,27 @@
4
4
  * rather than theme tokens -- the theme defines no border-width scale, so
5
5
  * stepping over arbitrary integers would produce classes with no CSS behind
6
6
  * them.
7
+ *
8
+ * `token` is the full width class, not a suffix: the 1px step is the bare
9
+ * `border`, which has none. The model value pairs it with an optional colour
10
+ * class; a value without a width class on the list puts the slider on the first
11
+ * step.
7
12
  */
8
- declare const BORDER_STEPS: readonly [{
9
- readonly class: "border";
13
+ export declare const EDITOR_BORDER_STEPS: readonly [{
14
+ readonly token: "border";
10
15
  readonly px: 1;
11
16
  }, {
12
- readonly class: "border-2";
17
+ readonly token: "border-2";
13
18
  readonly px: 2;
14
19
  }, {
15
- readonly class: "border-4";
20
+ readonly token: "border-4";
16
21
  readonly px: 4;
17
22
  }, {
18
- readonly class: "border-8";
23
+ readonly token: "border-8";
19
24
  readonly px: 8;
20
25
  }];
21
26
  /** The width part of the model value, as the Tailwind class itself. */
22
- export type EditorBorderWidth = (typeof BORDER_STEPS)[number]['class'];
27
+ export type EditorBorderWidth = (typeof EDITOR_BORDER_STEPS)[number]['token'];
23
28
  /** Overridable copy of the readout and the picker. Every key is optional. */
24
29
  export interface EditorBorderMessages {
25
30
  /** Unit shown behind the width. Defaults to `'px'`. */
@@ -1,8 +1,18 @@
1
+ /**
2
+ * The options the editor offers, in the order they are shown. `token` is the
3
+ * class without its fixed `flex-` prefix, so the class is `flex-` plus the
4
+ * token. The labels are not in here; they arrive through `messages`.
5
+ */
6
+ export declare const EDITOR_FLEX_DIRECTION_OPTIONS: readonly [{
7
+ readonly token: "row";
8
+ }, {
9
+ readonly token: "col";
10
+ }];
1
11
  /**
2
12
  * The flex direction as the editor needs it: the Tailwind class itself, so the
3
13
  * consumer can put the model value straight on the element it styles.
4
14
  */
5
- export type EditorFlexDirectionValue = 'flex-row' | 'flex-col';
15
+ export type EditorFlexDirectionValue = `flex-${(typeof EDITOR_FLEX_DIRECTION_OPTIONS)[number]['token']}`;
6
16
  /** Overridable copy for the two options. Every key is optional. */
7
17
  export interface EditorFlexDirectionMessages {
8
18
  /** Label of the `flex-row` option. Defaults to `'Horizontaal'`. */
@@ -30,10 +40,10 @@ declare const __VLS_export: import('vue').DefineComponent<NexxtEditorFlexDirecti
30
40
  /** The selected direction, as the Tailwind class to apply. */
31
41
  modelValue: EditorFlexDirectionValue;
32
42
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
33
- "update:modelValue": (value: EditorFlexDirectionValue) => any;
43
+ "update:modelValue": (value: "flex-col" | "flex-row") => any;
34
44
  }, string, import('vue').PublicProps, Readonly<NexxtEditorFlexDirectionProps & {
35
45
  /** The selected direction, as the Tailwind class to apply. */
36
46
  modelValue: EditorFlexDirectionValue;
37
47
  }> & Readonly<{
38
- "onUpdate:modelValue"?: ((value: EditorFlexDirectionValue) => any) | undefined;
48
+ "onUpdate:modelValue"?: ((value: "flex-col" | "flex-row") => any) | undefined;
39
49
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1,15 +1,64 @@
1
1
  /**
2
- * The steps the slider can land on, as the numeric part of the Tailwind class.
3
- * 13 and 15 are missing on purpose: the theme defines `--spacing-0` through
4
- * `--spacing-12` and then only 14 and 16, so stepping over the px value instead
5
- * of over this list would offer gaps that have no token behind them.
2
+ * The steps the slider can land on, with the px they render (the spacing scale
3
+ * is built on 0.25rem, so a step is 4 px). 13 and 15 are missing on purpose:
4
+ * the theme defines `--spacing-0` through `--spacing-12` and then only 14 and
5
+ * 16, so stepping over the px value instead of over this list would offer gaps
6
+ * that have no token behind them.
7
+ *
8
+ * `token` is the numeric part of the class; the class is `gap-` plus the token.
9
+ * A stored value that is not on the list puts the slider on the first step.
6
10
  */
7
- declare const GAP_STEPS: readonly [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16];
11
+ export declare const EDITOR_GAP_STEPS: readonly [{
12
+ readonly token: 0;
13
+ readonly px: 0;
14
+ }, {
15
+ readonly token: 1;
16
+ readonly px: 4;
17
+ }, {
18
+ readonly token: 2;
19
+ readonly px: 8;
20
+ }, {
21
+ readonly token: 3;
22
+ readonly px: 12;
23
+ }, {
24
+ readonly token: 4;
25
+ readonly px: 16;
26
+ }, {
27
+ readonly token: 5;
28
+ readonly px: 20;
29
+ }, {
30
+ readonly token: 6;
31
+ readonly px: 24;
32
+ }, {
33
+ readonly token: 7;
34
+ readonly px: 28;
35
+ }, {
36
+ readonly token: 8;
37
+ readonly px: 32;
38
+ }, {
39
+ readonly token: 9;
40
+ readonly px: 36;
41
+ }, {
42
+ readonly token: 10;
43
+ readonly px: 40;
44
+ }, {
45
+ readonly token: 11;
46
+ readonly px: 44;
47
+ }, {
48
+ readonly token: 12;
49
+ readonly px: 48;
50
+ }, {
51
+ readonly token: 14;
52
+ readonly px: 56;
53
+ }, {
54
+ readonly token: 16;
55
+ readonly px: 64;
56
+ }];
8
57
  /**
9
58
  * The gap as the editor needs it: the Tailwind class itself, so the consumer
10
59
  * can put the model value straight on the element it styles.
11
60
  */
12
- export type EditorGapValue = `gap-${(typeof GAP_STEPS)[number]}`;
61
+ export type EditorGapValue = `gap-${(typeof EDITOR_GAP_STEPS)[number]['token']}`;
13
62
  /** Overridable copy of the value readout. Every key is optional. */
14
63
  export interface EditorGapMessages {
15
64
  /** Unit shown behind the value. Defaults to `'px'`. */
@@ -1,35 +1,39 @@
1
1
  /**
2
2
  * The heading levels the editor offers, in the order they are listed. The level
3
- * is what the option shows -- its label and its `h1`..`h6` icon -- and the size
4
- * is what the model carries. The sizes are Tailwind's default scale on purpose,
5
- * not the theme's `heading-*` utilities: this value is data the editor stores
6
- * and puts back on an element, so it has to be a class every consumer resolves.
3
+ * is what the option shows -- its label and its `h1`..`h6` icon -- and the
4
+ * token is what the model carries. The sizes are Tailwind's default scale on
5
+ * purpose, not the theme's `heading-*` utilities: this value is data the editor
6
+ * stores and puts back on an element, so it has to be a class every consumer
7
+ * resolves.
8
+ *
9
+ * `token` is the full font-size class, not a suffix: it is stored as is. The
10
+ * labels are not in here; they arrive through `messages`, keyed by level.
7
11
  */
8
- declare const HEADING_LEVELS: readonly [{
12
+ export declare const EDITOR_HEADING_TYPE_OPTIONS: readonly [{
13
+ readonly token: "text-4xl";
9
14
  readonly level: 1;
10
- readonly size: "text-4xl";
11
15
  }, {
16
+ readonly token: "text-3xl";
12
17
  readonly level: 2;
13
- readonly size: "text-3xl";
14
18
  }, {
19
+ readonly token: "text-2xl";
15
20
  readonly level: 3;
16
- readonly size: "text-2xl";
17
21
  }, {
22
+ readonly token: "text-xl";
18
23
  readonly level: 4;
19
- readonly size: "text-xl";
20
24
  }, {
25
+ readonly token: "text-lg";
21
26
  readonly level: 5;
22
- readonly size: "text-lg";
23
27
  }, {
28
+ readonly token: "text-base";
24
29
  readonly level: 6;
25
- readonly size: "text-base";
26
30
  }];
27
31
  /**
28
32
  * The heading as the editor needs it: the Tailwind font-size class itself, so
29
33
  * the consumer can put the model value straight on the element it styles.
30
34
  * Weight is deliberately not part of it -- that becomes a setting of its own.
31
35
  */
32
- export type EditorHeadingTypeValue = (typeof HEADING_LEVELS)[number]['size'];
36
+ export type EditorHeadingTypeValue = (typeof EDITOR_HEADING_TYPE_OPTIONS)[number]['token'];
33
37
  /** Overridable copy for the six options. Every key is optional. */
34
38
  export interface EditorHeadingTypeMessages {
35
39
  /** Label of the `h1` option. Defaults to `'Heading 1'`. */
@@ -1,8 +1,23 @@
1
+ /**
2
+ * The options the editor offers, in the order they are shown. `token` is the
3
+ * class without its fixed `justify-` prefix, so the class is `justify-` plus
4
+ * the token. The labels are not in here; they arrive through `messages`, keyed
5
+ * by token.
6
+ */
7
+ export declare const EDITOR_JUSTIFY_CONTENT_OPTIONS: readonly [{
8
+ readonly token: "start";
9
+ }, {
10
+ readonly token: "center";
11
+ }, {
12
+ readonly token: "end";
13
+ }, {
14
+ readonly token: "between";
15
+ }];
1
16
  /**
2
17
  * The justification as the editor needs it: the Tailwind class itself, so the
3
18
  * consumer can put the model value straight on the element it styles.
4
19
  */
5
- export type EditorJustifyContentValue = 'justify-start' | 'justify-center' | 'justify-end' | 'justify-between';
20
+ export type EditorJustifyContentValue = `justify-${(typeof EDITOR_JUSTIFY_CONTENT_OPTIONS)[number]['token']}`;
6
21
  /** Overridable copy for the four options. Every key is optional. */
7
22
  export interface EditorJustifyContentMessages {
8
23
  /** Accessible name of the `justify-start` option. Defaults to `'Begin'`. */
@@ -35,10 +50,10 @@ declare const __VLS_export: import('vue').DefineComponent<NexxtEditorJustifyCont
35
50
  /** The selected justification, as the Tailwind class to apply. */
36
51
  modelValue: EditorJustifyContentValue;
37
52
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
38
- "update:modelValue": (value: EditorJustifyContentValue) => any;
53
+ "update:modelValue": (value: "justify-center" | "justify-end" | "justify-start" | "justify-between") => any;
39
54
  }, string, import('vue').PublicProps, Readonly<NexxtEditorJustifyContentProps & {
40
55
  /** The selected justification, as the Tailwind class to apply. */
41
56
  modelValue: EditorJustifyContentValue;
42
57
  }> & Readonly<{
43
- "onUpdate:modelValue"?: ((value: EditorJustifyContentValue) => any) | undefined;
58
+ "onUpdate:modelValue"?: ((value: "justify-center" | "justify-end" | "justify-start" | "justify-between") => any) | undefined;
44
59
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1,3 +1,109 @@
1
+ /**
2
+ * The steps a field can land on: every integer `--spacing-*` token the theme
3
+ * defines, with the px it renders (the spacing scale is built on 0.25rem, so a
4
+ * step is 4 px). The list thins out as it climbs -- 13 and 15 are absent, and
5
+ * past 16 it moves in fours and then eights -- so snapping over this list
6
+ * rather than over the px value keeps the field off classes that have no token
7
+ * behind them.
8
+ *
9
+ * `token` is the numeric part of the class, without a prefix: one padding value
10
+ * is written with several of them (`p-`, `px-`, `py-`, `pt-`, `pr-`, `pb-`,
11
+ * `pl-`), so the full class depends on which sides it covers. A value between
12
+ * two steps snaps to the nearest one, the lower on a tie.
13
+ */
14
+ export declare const EDITOR_PADDING_STEPS: readonly [{
15
+ readonly token: 0;
16
+ readonly px: 0;
17
+ }, {
18
+ readonly token: 1;
19
+ readonly px: 4;
20
+ }, {
21
+ readonly token: 2;
22
+ readonly px: 8;
23
+ }, {
24
+ readonly token: 3;
25
+ readonly px: 12;
26
+ }, {
27
+ readonly token: 4;
28
+ readonly px: 16;
29
+ }, {
30
+ readonly token: 5;
31
+ readonly px: 20;
32
+ }, {
33
+ readonly token: 6;
34
+ readonly px: 24;
35
+ }, {
36
+ readonly token: 7;
37
+ readonly px: 28;
38
+ }, {
39
+ readonly token: 8;
40
+ readonly px: 32;
41
+ }, {
42
+ readonly token: 9;
43
+ readonly px: 36;
44
+ }, {
45
+ readonly token: 10;
46
+ readonly px: 40;
47
+ }, {
48
+ readonly token: 11;
49
+ readonly px: 44;
50
+ }, {
51
+ readonly token: 12;
52
+ readonly px: 48;
53
+ }, {
54
+ readonly token: 14;
55
+ readonly px: 56;
56
+ }, {
57
+ readonly token: 16;
58
+ readonly px: 64;
59
+ }, {
60
+ readonly token: 20;
61
+ readonly px: 80;
62
+ }, {
63
+ readonly token: 24;
64
+ readonly px: 96;
65
+ }, {
66
+ readonly token: 28;
67
+ readonly px: 112;
68
+ }, {
69
+ readonly token: 32;
70
+ readonly px: 128;
71
+ }, {
72
+ readonly token: 36;
73
+ readonly px: 144;
74
+ }, {
75
+ readonly token: 40;
76
+ readonly px: 160;
77
+ }, {
78
+ readonly token: 44;
79
+ readonly px: 176;
80
+ }, {
81
+ readonly token: 48;
82
+ readonly px: 192;
83
+ }, {
84
+ readonly token: 52;
85
+ readonly px: 208;
86
+ }, {
87
+ readonly token: 56;
88
+ readonly px: 224;
89
+ }, {
90
+ readonly token: 60;
91
+ readonly px: 240;
92
+ }, {
93
+ readonly token: 64;
94
+ readonly px: 256;
95
+ }, {
96
+ readonly token: 72;
97
+ readonly px: 288;
98
+ }, {
99
+ readonly token: 80;
100
+ readonly px: 320;
101
+ }, {
102
+ readonly token: 96;
103
+ readonly px: 384;
104
+ }];
105
+ /** A padding step as the numeric part of the Tailwind class, as in `p-4`. */
106
+ export type EditorPaddingStep = (typeof EDITOR_PADDING_STEPS)[number]['token'];
1
107
  /** Overridable copy of the field and toggle names. Every key is optional. */
2
108
  export interface EditorPaddingMessages {
3
109
  /** Accessible name of the collapsed left/right field. Defaults to `'Horizontaal'`. */
@@ -1,8 +1,23 @@
1
+ /**
2
+ * The options the editor offers, in the order they are shown. `token` is the
3
+ * class without its fixed `text-` prefix, so the class is `text-` plus the
4
+ * token. The labels are not in here; they arrive through `messages`, keyed by
5
+ * token.
6
+ */
7
+ export declare const EDITOR_TEXT_ALIGN_OPTIONS: readonly [{
8
+ readonly token: "left";
9
+ }, {
10
+ readonly token: "center";
11
+ }, {
12
+ readonly token: "right";
13
+ }, {
14
+ readonly token: "justify";
15
+ }];
1
16
  /**
2
17
  * The text alignment as the editor needs it: the Tailwind class itself, so the
3
18
  * consumer can put the model value straight on the element it styles.
4
19
  */
5
- export type EditorTextAlignValue = 'text-left' | 'text-center' | 'text-right' | 'text-justify';
20
+ export type EditorTextAlignValue = `text-${(typeof EDITOR_TEXT_ALIGN_OPTIONS)[number]['token']}`;
6
21
  /** Overridable copy for the four options. Every key is optional. */
7
22
  export interface EditorTextAlignMessages {
8
23
  /** Accessible name of the `text-left` option. Defaults to `'Links'`. */
@@ -35,10 +50,10 @@ declare const __VLS_export: import('vue').DefineComponent<NexxtEditorTextAlignPr
35
50
  /** The selected text alignment, as the Tailwind class to apply. */
36
51
  modelValue: EditorTextAlignValue;
37
52
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
38
- "update:modelValue": (value: EditorTextAlignValue) => any;
53
+ "update:modelValue": (value: "text-left" | "text-right" | "text-center" | "text-justify") => any;
39
54
  }, string, import('vue').PublicProps, Readonly<NexxtEditorTextAlignProps & {
40
55
  /** The selected text alignment, as the Tailwind class to apply. */
41
56
  modelValue: EditorTextAlignValue;
42
57
  }> & Readonly<{
43
- "onUpdate:modelValue"?: ((value: EditorTextAlignValue) => any) | undefined;
58
+ "onUpdate:modelValue"?: ((value: "text-left" | "text-right" | "text-center" | "text-justify") => any) | undefined;
44
59
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,24 @@
1
+ import { ComboboxOption } from './combobox-types';
2
+ /** A run of options in the listbox; `label` is set for a titled group only. */
3
+ export type OptionSection = {
4
+ id: string;
5
+ label?: string;
6
+ options: ComboboxOption[];
7
+ };
8
+ export interface ComboboxPanelOptionsProps {
9
+ /** Visible options per section. An untitled section renders its options straight into the list. */
10
+ sections: OptionSection[];
11
+ /** Selected values. */
12
+ selected: (string | number)[];
13
+ /** Marks the selected option with a tint and a check. */
14
+ singleSelect?: boolean;
15
+ /** Inline layout (inside `NexxtCombobox`): rows get a minimum width. */
16
+ inline?: boolean;
17
+ }
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ declare const __VLS_export: import('vue').DefineComponent<ComboboxPanelOptionsProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
21
+ pick: (option: ComboboxOption) => any;
22
+ }, string, import('vue').PublicProps, Readonly<ComboboxPanelOptionsProps> & Readonly<{
23
+ onPick?: ((option: ComboboxOption) => any) | undefined;
24
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -2,6 +2,16 @@ export type ComboboxOption = string | {
2
2
  label: string;
3
3
  value: string | number;
4
4
  };
5
+ /**
6
+ * A titled group of options. Option values must be unique across **all** groups: selection is
7
+ * stored by value only, so a value that appears twice cannot tell its groups apart.
8
+ */
9
+ export type NexxtComboboxGroup = {
10
+ /** Heading shown above the group, and the accessible name of its `role="group"`. */
11
+ label: string;
12
+ /** The options of this group. */
13
+ options: ComboboxOption[];
14
+ };
5
15
  export type ComboboxOptions = {
6
16
  options: string[];
7
17
  allowNew?: boolean;
@@ -11,4 +21,11 @@ export type ComboboxOptions = {
11
21
  value: string | number;
12
22
  }[];
13
23
  allowNew?: never;
24
+ } | {
25
+ /**
26
+ * Options in titled groups. Values must be unique across all groups. Groups cannot be
27
+ * combined with `allowNew`.
28
+ */
29
+ options: NexxtComboboxGroup[];
30
+ allowNew?: never;
14
31
  };
package/dist/index.d.ts CHANGED
@@ -5,21 +5,30 @@ export type { EnergyLabelLetter } from './components/atoms/EnergyLabel/EnergyLab
5
5
  export type { IconType, NexxtIconName } from './components/atoms/Icon/Icon.vue';
6
6
  export type { CustomIconName } from './components/atoms/Icon/customIcons';
7
7
  export type { NexxtTabItem } from './components/molecules/Tabs/Tabs.vue';
8
+ export type { NexxtComboboxGroup } from './components/organisms/ComboboxPanel/combobox-types';
8
9
  export type { NexxtPageCardProps, NexxtPageCardSlots, } from './components/molecules/PageCard/PageCard.vue';
9
10
  export type { NexxtPageMockupType } from './components/molecules/PageMockup/PageMockup.vue';
10
11
  export type { NexxtPickerGroupData, NexxtPickerItemData, } from './components/molecules/PickerList/PickerList.vue';
11
12
  export type { NexxtTreeMove, NexxtTreeNode, NexxtTreeProps, NexxtTreeSlots, } from './components/molecules/Tree/Tree.vue';
12
13
  export type { NexxtPlaceholderGroup, NexxtPlaceholderInputMessages, NexxtPlaceholderInputProps, } from './components/molecules/PlaceholderInput/PlaceholderInput.vue';
14
+ export { EDITOR_ALIGN_ITEMS_OPTIONS } from './components/editor/molecules/EditorAlignItems/EditorAlignItems.vue';
13
15
  export type { EditorAlignItemsMessages, EditorAlignItemsValue, } from './components/editor/molecules/EditorAlignItems/EditorAlignItems.vue';
16
+ export { EDITOR_BACKGROUND_SIZE_OPTIONS } from './components/editor/molecules/EditorBackgroundSize/EditorBackgroundSize.vue';
14
17
  export type { EditorBackgroundSizeMessages, EditorBackgroundSizeValue, } from './components/editor/molecules/EditorBackgroundSize/EditorBackgroundSize.vue';
18
+ export { EDITOR_FLEX_DIRECTION_OPTIONS } from './components/editor/molecules/EditorFlexDirection/EditorFlexDirection.vue';
15
19
  export type { EditorFlexDirectionMessages, EditorFlexDirectionValue, } from './components/editor/molecules/EditorFlexDirection/EditorFlexDirection.vue';
20
+ export { EDITOR_GAP_STEPS } from './components/editor/molecules/EditorGap/EditorGap.vue';
16
21
  export type { EditorGapMessages, EditorGapValue, } from './components/editor/molecules/EditorGap/EditorGap.vue';
17
22
  export type { EditorColorLiteralValue, EditorColorMessages, EditorColorProperty, EditorColorRole, EditorColorRoleValue, EditorColorThemeRole, EditorColorValue, } from './components/editor/molecules/EditorColor/EditorColor.vue';
23
+ export { EDITOR_BORDER_STEPS } from './components/editor/molecules/EditorBorder/EditorBorder.vue';
18
24
  export type { EditorBorderMessages, EditorBorderWidth, } from './components/editor/molecules/EditorBorder/EditorBorder.vue';
25
+ export { EDITOR_HEADING_TYPE_OPTIONS } from './components/editor/molecules/EditorHeadingType/EditorHeadingType.vue';
19
26
  export type { EditorHeadingTypeMessages, EditorHeadingTypeValue, } from './components/editor/molecules/EditorHeadingType/EditorHeadingType.vue';
20
27
  export { EDITOR_RADIUS_STEPS } from './components/editor/molecules/EditorRadius/EditorRadius.vue';
21
28
  export type { EditorRadiusMessages, EditorRadiusValue, } from './components/editor/molecules/EditorRadius/EditorRadius.vue';
29
+ export { EDITOR_TEXT_ALIGN_OPTIONS } from './components/editor/molecules/EditorTextAlign/EditorTextAlign.vue';
22
30
  export type { EditorTextAlignMessages, EditorTextAlignValue, } from './components/editor/molecules/EditorTextAlign/EditorTextAlign.vue';
31
+ export { EDITOR_JUSTIFY_CONTENT_OPTIONS } from './components/editor/molecules/EditorJustifyContent/EditorJustifyContent.vue';
23
32
  export type { EditorJustifyContentMessages, EditorJustifyContentValue, } from './components/editor/molecules/EditorJustifyContent/EditorJustifyContent.vue';
24
33
  export { EDITOR_MAX_WIDTH_STEPS } from './components/editor/molecules/EditorMaxWidth/EditorMaxWidth.vue';
25
34
  export type { EditorMaxWidthMessages, EditorMaxWidthValue, } from './components/editor/molecules/EditorMaxWidth/EditorMaxWidth.vue';
@@ -27,7 +36,8 @@ export { EDITOR_LINE_HEIGHT_STEPS } from './components/editor/molecules/EditorLi
27
36
  export type { EditorLineHeightMessages, EditorLineHeightValue, } from './components/editor/molecules/EditorLineHeight/EditorLineHeight.vue';
28
37
  export { EDITOR_LETTER_SPACING_STEPS } from './components/editor/molecules/EditorLetterSpacing/EditorLetterSpacing.vue';
29
38
  export type { EditorLetterSpacingMessages, EditorLetterSpacingValue, } from './components/editor/molecules/EditorLetterSpacing/EditorLetterSpacing.vue';
30
- export type { EditorPaddingMessages } from './components/editor/molecules/EditorPadding/EditorPadding.vue';
39
+ export { EDITOR_PADDING_STEPS } from './components/editor/molecules/EditorPadding/EditorPadding.vue';
40
+ export type { EditorPaddingMessages, EditorPaddingStep, } from './components/editor/molecules/EditorPadding/EditorPadding.vue';
31
41
  export type { NexxtTemplateCardContentFeature, NexxtTemplateCardProps, NexxtTemplateCardSlots, } from './components/molecules/TemplateCard/TemplateCard.vue';
32
42
  export { default as NexxtAnimatedNumber } from './components/atoms/AnimatedNumber/AnimatedNumber.vue';
33
43
  export { default as NexxtAnnouncement } from './components/molecules/Announcement/Announcement.vue';