@db-ux/v-core-components 4.12.1 → 4.13.0-shell-f221975

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 (116) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/agent/ControlPanelBrand.md +15 -0
  3. package/agent/ControlPanelDesktop.md +48 -0
  4. package/agent/ControlPanelMeta.md +19 -0
  5. package/agent/ControlPanelMobile.md +40 -0
  6. package/agent/ControlPanelNavigation.md +24 -0
  7. package/agent/ControlPanelNavigationItem.md +39 -0
  8. package/agent/ControlPanelPrimaryActions.md +20 -0
  9. package/agent/ControlPanelSecondaryActions.md +24 -0
  10. package/agent/Drawer.md +0 -8
  11. package/agent/Shell.md +28 -0
  12. package/agent/ShellSubNavigation.md +6 -0
  13. package/agent/_instructions.md +11 -6
  14. package/dist/components/accordion/accordion.vue.d.ts +1 -1
  15. package/dist/components/accordion/model.d.ts +2 -8
  16. package/dist/components/button/button.vue.d.ts +3 -1
  17. package/dist/components/button/model.d.ts +8 -0
  18. package/dist/components/control-panel-brand/index.d.ts +1 -0
  19. package/dist/components/control-panel-brand/model.d.ts +5 -0
  20. package/dist/components/control-panel-desktop/control-panel-desktop.vue.d.ts +34 -0
  21. package/dist/components/control-panel-desktop/index.d.ts +1 -0
  22. package/dist/components/control-panel-desktop/model.d.ts +5 -0
  23. package/dist/components/control-panel-flat-icon/control-panel-flat-icon.vue.d.ts +22 -0
  24. package/dist/components/control-panel-flat-icon/index.d.ts +1 -0
  25. package/dist/components/control-panel-flat-icon/model.d.ts +12 -0
  26. package/dist/components/control-panel-meta/control-panel-meta.vue.d.ts +18 -0
  27. package/dist/components/control-panel-meta/index.d.ts +1 -0
  28. package/dist/components/control-panel-meta/model.d.ts +5 -0
  29. package/dist/components/control-panel-mobile/control-panel-mobile.vue.d.ts +33 -0
  30. package/dist/components/control-panel-mobile/index.d.ts +1 -0
  31. package/dist/components/control-panel-mobile/model.d.ts +21 -0
  32. package/dist/components/control-panel-navigation/control-panel-navigation.vue.d.ts +25 -0
  33. package/dist/components/control-panel-navigation/index.d.ts +1 -0
  34. package/dist/components/control-panel-navigation/model.d.ts +25 -0
  35. package/dist/components/control-panel-navigation-item/control-panel-navigation-item.vue.d.ts +27 -0
  36. package/dist/components/control-panel-navigation-item/index.d.ts +1 -0
  37. package/dist/components/control-panel-navigation-item/model.d.ts +20 -0
  38. package/dist/components/{navigation-item/navigation-item.vue.d.ts → control-panel-navigation-item-group/control-panel-navigation-item-group.vue.d.ts} +7 -11
  39. package/dist/components/control-panel-navigation-item-group/index.d.ts +1 -0
  40. package/dist/components/control-panel-navigation-item-group/model.d.ts +44 -0
  41. package/dist/components/control-panel-primary-actions/control-panel-primary-actions.vue.d.ts +18 -0
  42. package/dist/components/control-panel-primary-actions/index.d.ts +1 -0
  43. package/dist/components/control-panel-primary-actions/model.d.ts +5 -0
  44. package/dist/components/control-panel-secondary-actions/control-panel-secondary-actions.vue.d.ts +18 -0
  45. package/dist/components/control-panel-secondary-actions/index.d.ts +1 -0
  46. package/dist/components/control-panel-secondary-actions/model.d.ts +5 -0
  47. package/dist/components/{brand/brand.vue.d.ts → control-panel-skip-navigation/control-panel-skip-navigation.vue.d.ts} +3 -5
  48. package/dist/components/control-panel-skip-navigation/index.d.ts +1 -0
  49. package/dist/components/control-panel-skip-navigation/model.d.ts +16 -0
  50. package/dist/components/custom-button/custom-button.vue.d.ts +1 -1
  51. package/dist/components/custom-select/custom-select.vue.d.ts +1 -1
  52. package/dist/components/custom-select/model.d.ts +5 -1
  53. package/dist/components/custom-select-list/custom-select-list.vue.d.ts +1 -1
  54. package/dist/components/drawer/drawer.vue.d.ts +7 -7
  55. package/dist/components/drawer/model.d.ts +18 -3
  56. package/dist/components/drawer-footer/drawer-footer.vue.d.ts +18 -0
  57. package/dist/components/drawer-footer/index.d.ts +1 -0
  58. package/dist/components/drawer-footer/model.d.ts +5 -0
  59. package/dist/components/drawer-header/drawer-header.vue.d.ts +26 -0
  60. package/dist/components/drawer-header/index.d.ts +1 -0
  61. package/dist/components/drawer-header/model.d.ts +9 -0
  62. package/dist/components/input/input.vue.d.ts +1 -1
  63. package/dist/components/notification/notification.vue.d.ts +1 -1
  64. package/dist/components/select/select.vue.d.ts +1 -1
  65. package/dist/components/shell/index.d.ts +1 -0
  66. package/dist/components/shell/model.d.ts +34 -0
  67. package/dist/components/shell/shell.vue.d.ts +25 -0
  68. package/dist/components/shell-content/index.d.ts +1 -0
  69. package/dist/components/shell-content/model.d.ts +28 -0
  70. package/dist/components/{page/page.vue.d.ts → shell-content/shell-content.vue.d.ts} +7 -7
  71. package/dist/components/shell-sub-navigation/index.d.ts +1 -0
  72. package/dist/components/shell-sub-navigation/model.d.ts +5 -0
  73. package/dist/components/shell-sub-navigation/shell-sub-navigation.vue.d.ts +22 -0
  74. package/dist/components/table/table.vue.d.ts +1 -0
  75. package/dist/components/table-body/table-body.vue.d.ts +1 -0
  76. package/dist/components/table-caption/table-caption.vue.d.ts +1 -0
  77. package/dist/components/table-data-cell/table-data-cell.vue.d.ts +1 -0
  78. package/dist/components/table-footer/table-footer.vue.d.ts +1 -0
  79. package/dist/components/table-head/table-head.vue.d.ts +1 -0
  80. package/dist/components/table-header-cell/table-header-cell.vue.d.ts +1 -0
  81. package/dist/components/table-row/table-row.vue.d.ts +1 -0
  82. package/dist/components/tabs/model.d.ts +4 -12
  83. package/dist/components/tabs/tabs.vue.d.ts +4 -2
  84. package/dist/db-ux.es.js +2670 -1751
  85. package/dist/db-ux.umd.js +1 -1
  86. package/dist/index.d.ts +32 -10
  87. package/dist/shared/constants.d.ts +44 -39
  88. package/dist/shared/figma.d.ts +11 -4
  89. package/dist/shared/model.d.ts +109 -7
  90. package/dist/utils/abstract-document-listener.d.ts +18 -0
  91. package/dist/utils/abstract-observer-listener.d.ts +39 -0
  92. package/dist/utils/document-click-listener.d.ts +3 -3
  93. package/dist/utils/document-scroll-listener.d.ts +3 -3
  94. package/dist/utils/floating-components.d.ts +29 -6
  95. package/dist/utils/index.d.ts +11 -0
  96. package/dist/utils/intersection-observer-listener.d.ts +15 -0
  97. package/dist/utils/navigation.d.ts +12 -11
  98. package/dist/utils/resize-observer-listener.d.ts +15 -0
  99. package/package.json +8 -8
  100. package/agent/Brand.md +0 -19
  101. package/agent/Header.md +0 -35
  102. package/agent/Navigation.md +0 -23
  103. package/agent/NavigationItem.md +0 -29
  104. package/agent/Page.md +0 -33
  105. package/dist/components/brand/index.d.ts +0 -1
  106. package/dist/components/brand/model.d.ts +0 -10
  107. package/dist/components/header/header.vue.d.ts +0 -40
  108. package/dist/components/header/index.d.ts +0 -1
  109. package/dist/components/header/model.d.ts +0 -44
  110. package/dist/components/navigation/index.d.ts +0 -1
  111. package/dist/components/navigation/model.d.ts +0 -5
  112. package/dist/components/navigation-item/index.d.ts +0 -1
  113. package/dist/components/navigation-item/model.d.ts +0 -39
  114. package/dist/components/page/index.d.ts +0 -1
  115. package/dist/components/page/model.d.ts +0 -36
  116. /package/dist/components/{navigation/navigation.vue.d.ts → control-panel-brand/control-panel-brand.vue.d.ts} +0 -0
package/dist/index.d.ts CHANGED
@@ -4,14 +4,34 @@ export * from './components/accordion-item/model.js';
4
4
  export * from './components/accordion/model.js';
5
5
  export * from './components/badge/index.js';
6
6
  export * from './components/badge/model.js';
7
- export * from './components/brand/index.js';
8
- export * from './components/brand/model.js';
9
7
  export * from './components/button/index.js';
10
8
  export * from './components/button/model.js';
11
9
  export * from './components/card/index.js';
12
10
  export * from './components/card/model.js';
13
11
  export * from './components/checkbox/index.js';
14
12
  export * from './components/checkbox/model.js';
13
+ export * from './components/control-panel-brand/index.js';
14
+ export * from './components/control-panel-brand/model.js';
15
+ export * from './components/control-panel-desktop/index.js';
16
+ export * from './components/control-panel-desktop/model.js';
17
+ export * from './components/control-panel-flat-icon/index.js';
18
+ export * from './components/control-panel-flat-icon/model.js';
19
+ export * from './components/control-panel-meta/index.js';
20
+ export * from './components/control-panel-meta/model.js';
21
+ export * from './components/control-panel-mobile/index.js';
22
+ export * from './components/control-panel-mobile/model.js';
23
+ export * from './components/control-panel-navigation/index.js';
24
+ export * from './components/control-panel-navigation-item/index.js';
25
+ export * from './components/control-panel-navigation-item-group/index.js';
26
+ export * from './components/control-panel-navigation-item-group/model.js';
27
+ export * from './components/control-panel-navigation-item/model.js';
28
+ export * from './components/control-panel-navigation/model.js';
29
+ export * from './components/control-panel-primary-actions/index.js';
30
+ export * from './components/control-panel-primary-actions/model.js';
31
+ export * from './components/control-panel-secondary-actions/index.js';
32
+ export * from './components/control-panel-secondary-actions/model.js';
33
+ export * from './components/control-panel-skip-navigation/index.js';
34
+ export * from './components/control-panel-skip-navigation/model.js';
15
35
  export * from './components/custom-button/index.js';
16
36
  export * from './components/custom-button/model.js';
17
37
  export * from './components/custom-select/index.js';
@@ -27,9 +47,11 @@ export * from './components/custom-select/model.js';
27
47
  export * from './components/divider/index.js';
28
48
  export * from './components/divider/model.js';
29
49
  export * from './components/drawer/index.js';
50
+ export * from './components/drawer-footer/index.js';
51
+ export * from './components/drawer-footer/model.js';
52
+ export * from './components/drawer-header/index.js';
53
+ export * from './components/drawer-header/model.js';
30
54
  export * from './components/drawer/model.js';
31
- export * from './components/header/index.js';
32
- export * from './components/header/model.js';
33
55
  export * from './components/icon/index.js';
34
56
  export * from './components/icon/model.js';
35
57
  export * from './components/infotext/index.js';
@@ -38,14 +60,8 @@ export * from './components/input/index.js';
38
60
  export * from './components/input/model.js';
39
61
  export * from './components/link/index.js';
40
62
  export * from './components/link/model.js';
41
- export * from './components/navigation/index.js';
42
- export * from './components/navigation-item/index.js';
43
- export * from './components/navigation-item/model.js';
44
- export * from './components/navigation/model.js';
45
63
  export * from './components/notification/index.js';
46
64
  export * from './components/notification/model.js';
47
- export * from './components/page/index.js';
48
- export * from './components/page/model.js';
49
65
  export * from './components/popover/index.js';
50
66
  export * from './components/popover/model.js';
51
67
  export * from './components/radio/index.js';
@@ -54,6 +70,12 @@ export * from './components/section/index.js';
54
70
  export * from './components/section/model.js';
55
71
  export * from './components/select/index.js';
56
72
  export * from './components/select/model.js';
73
+ export * from './components/shell/index.js';
74
+ export * from './components/shell-content/index.js';
75
+ export * from './components/shell-content/model.js';
76
+ export * from './components/shell-sub-navigation/index.js';
77
+ export * from './components/shell-sub-navigation/model.js';
78
+ export * from './components/shell/model.js';
57
79
  export * from './components/stack/index.js';
58
80
  export * from './components/stack/model.js';
59
81
  export * from './components/switch/index.js';
@@ -14,60 +14,65 @@ export declare const DEFAULT_INVALID_MESSAGE: string;
14
14
  export declare const DEFAULT_REMOVE: string;
15
15
  export declare const DEFAULT_BACK: string;
16
16
  export declare const DEFAULT_SELECTED: string;
17
+ export declare const DEFAULT_EXPAND: string;
18
+ export declare const DEFAULT_COLLAPSE: string;
19
+ export declare const DEFAULT_SCROLL_LEFT: string;
20
+ export declare const DEFAULT_SCROLL_RIGHT: string;
17
21
  export declare const DEFAULT_BURGER_MENU: string;
18
- export declare const DEFAULT_ICON: string;
19
22
  export declare const DEFAULT_ROWS: number;
20
23
  export declare const DEFAULT_CLOSE_BUTTON: string;
24
+ export declare const MAIN_CONTENT_ID: string;
21
25
  export declare const DENSITY_CONST: string;
22
26
  export declare const COLOR_CONST: string;
23
27
  export declare enum DENSITY {
24
- 'FUNCTIONAL' = "functional",
25
- 'REGULAR' = "regular",
26
- 'EXPRESSIVE' = "expressive"
28
+ FUNCTIONAL = "functional",
29
+ REGULAR = "regular",
30
+ EXPRESSIVE = "expressive"
27
31
  }
28
32
  export declare const DENSITIES: DENSITY[];
29
33
  export declare enum COLOR_SIMPLE {
30
- 'PRIMARY' = "primary"
34
+ PRIMARY = "primary"
31
35
  }
32
36
  export declare enum COLOR {
33
- 'NEUTRAL_BG_LEVEL_1' = "neutral-bg-basic-level-1",
34
- 'NEUTRAL_BG_LEVEL_2' = "neutral-bg-basic-level-2",
35
- 'NEUTRAL_BG_LEVEL_3' = "neutral-bg-basic-level-3",
36
- 'NEUTRAL_BG_TRANSPARENT_SEMI' = "neutral-bg-basic-transparent-semi",
37
- 'NEUTRAL_BG_TRANSPARENT_FULL' = "neutral-bg-basic-transparent-full",
38
- 'BRAND_BG_LEVEL_1' = "brand-bg-basic-level-1",
39
- 'BRAND_BG_LEVEL_2' = "brand-bg-basic-level-2",
40
- 'BRAND_BG_LEVEL_3' = "brand-bg-basic-level-3",
41
- 'BRAND_BG_TRANSPARENT_SEMI' = "brand-bg-basic-transparent-semi",
42
- 'BRAND_BG_TRANSPARENT_FULL' = "brand-bg-basic-transparent-full",
43
- 'SUCCESSFUL_BG_LEVEL_1' = "successful-bg-basic-level-1",
44
- 'SUCCESSFUL_BG_LEVEL_2' = "successful-bg-basic-level-2",
45
- 'SUCCESSFUL_BG_LEVEL_3' = "successful-bg-basic-level-3",
46
- 'SUCCESSFUL_BG_TRANSPARENT_SEMI' = "successful-bg-basic-transparent-semi",
47
- 'SUCCESSFUL_BG_TRANSPARENT_FULL' = "successful-bg-basic-transparent-full",
48
- 'CRITICAL_BG_LEVEL_1' = "critical-bg-basic-level-1",
49
- 'CRITICAL_BG_LEVEL_2' = "critical-bg-basic-level-2",
50
- 'CRITICAL_BG_LEVEL_3' = "critical-bg-basic-level-3",
51
- 'CRITICAL_BG_TRANSPARENT_SEMI' = "critical-bg-basic-transparent-semi",
52
- 'CRITICAL_BG_TRANSPARENT_Full' = "critical-bg-basic-transparent-full",
53
- 'WARNING_BG_LEVEL_1' = "warning-bg-basic-level-1",
54
- 'WARNING_BG_LEVEL_2' = "warning-bg-basic-level-2",
55
- 'WARNING_BG_LEVEL_3' = "warning-bg-basic-level-3",
56
- 'WARNING_BG_TRANSPARENT_SEMI' = "warning-bg-basic-transparent-semi",
57
- 'WARNING_BG_TRANSPARENT_FULL' = "warning-bg-basic-transparent-full",
58
- 'INFORMATIONAL_BG_LEVEL_1' = "informational-bg-basic-level-1",
59
- 'INFORMATIONAL_BG_LEVEL_2' = "informational-bg-basic-level-2",
60
- 'INFORMATIONAL_BG_LEVEL_3' = "informational-bg-basic-level-3",
61
- 'INFORMATIONAL_BG_TRANSPARENT_SEMI' = "informational-bg-basic-transparent-semi",
62
- 'INFORMATIONAL_BG_TRANSPARENT_FULL' = "informational-bg-basic-transparent-full"
37
+ NEUTRAL_BG_LEVEL_1 = "neutral-bg-basic-level-1",
38
+ NEUTRAL_BG_LEVEL_2 = "neutral-bg-basic-level-2",
39
+ NEUTRAL_BG_LEVEL_3 = "neutral-bg-basic-level-3",
40
+ NEUTRAL_BG_TRANSPARENT_SEMI = "neutral-bg-basic-transparent-semi",
41
+ NEUTRAL_BG_TRANSPARENT_FULL = "neutral-bg-basic-transparent-full",
42
+ BRAND_BG_LEVEL_1 = "brand-bg-basic-level-1",
43
+ BRAND_BG_LEVEL_2 = "brand-bg-basic-level-2",
44
+ BRAND_BG_LEVEL_3 = "brand-bg-basic-level-3",
45
+ BRAND_BG_TRANSPARENT_SEMI = "brand-bg-basic-transparent-semi",
46
+ BRAND_BG_TRANSPARENT_FULL = "brand-bg-basic-transparent-full",
47
+ SUCCESSFUL_BG_LEVEL_1 = "successful-bg-basic-level-1",
48
+ SUCCESSFUL_BG_LEVEL_2 = "successful-bg-basic-level-2",
49
+ SUCCESSFUL_BG_LEVEL_3 = "successful-bg-basic-level-3",
50
+ SUCCESSFUL_BG_TRANSPARENT_SEMI = "successful-bg-basic-transparent-semi",
51
+ SUCCESSFUL_BG_TRANSPARENT_FULL = "successful-bg-basic-transparent-full",
52
+ CRITICAL_BG_LEVEL_1 = "critical-bg-basic-level-1",
53
+ CRITICAL_BG_LEVEL_2 = "critical-bg-basic-level-2",
54
+ CRITICAL_BG_LEVEL_3 = "critical-bg-basic-level-3",
55
+ CRITICAL_BG_TRANSPARENT_SEMI = "critical-bg-basic-transparent-semi",
56
+ CRITICAL_BG_TRANSPARENT_Full = "critical-bg-basic-transparent-full",
57
+ WARNING_BG_LEVEL_1 = "warning-bg-basic-level-1",
58
+ WARNING_BG_LEVEL_2 = "warning-bg-basic-level-2",
59
+ WARNING_BG_LEVEL_3 = "warning-bg-basic-level-3",
60
+ WARNING_BG_TRANSPARENT_SEMI = "warning-bg-basic-transparent-semi",
61
+ WARNING_BG_TRANSPARENT_FULL = "warning-bg-basic-transparent-full",
62
+ INFORMATIONAL_BG_LEVEL_1 = "informational-bg-basic-level-1",
63
+ INFORMATIONAL_BG_LEVEL_2 = "informational-bg-basic-level-2",
64
+ INFORMATIONAL_BG_LEVEL_3 = "informational-bg-basic-level-3",
65
+ INFORMATIONAL_BG_TRANSPARENT_SEMI = "informational-bg-basic-transparent-semi",
66
+ INFORMATIONAL_BG_TRANSPARENT_FULL = "informational-bg-basic-transparent-full"
63
67
  }
64
68
  export declare const COLORS: COLOR[];
65
69
  export declare const COLORS_SIMPLE: COLOR_SIMPLE[];
66
70
  export declare enum SEMANTIC {
67
- 'CRITICAL' = "critical",
68
- 'INFORMATIONAL' = "informational",
69
- 'WARNING' = "warning",
70
- 'SUCCESSFUL' = "successful"
71
+ NEUTRAL = "neutral",
72
+ CRITICAL = "critical",
73
+ INFORMATIONAL = "informational",
74
+ WARNING = "warning",
75
+ SUCCESSFUL = "successful"
71
76
  }
72
77
  export declare const SEMANTICS: SEMANTIC[];
73
78
  export declare const DEFAULT_VIEWPORT: {
@@ -1,4 +1,4 @@
1
- /** Base for all Figma prop definitions. */
1
+ /** @public Base for all Figma prop definitions. */
2
2
  export type FigmaBaseProp = {
3
3
  /** The prop type discriminator. */
4
4
  type: string;
@@ -10,14 +10,14 @@ export type FigmaBaseProp = {
10
10
  */
11
11
  layer?: string;
12
12
  };
13
- /** A nested Figma instance swap prop (e.g. icon components). */
13
+ /** @public A nested Figma instance swap prop (e.g. icon components). */
14
14
  export type FigmaInstanceProp = FigmaBaseProp & {
15
15
  /** Use 'instance' for generic instance swaps, 'iconSwap' for icon instances that resolve to a string name. */
16
16
  type: 'instance' | 'iconSwap';
17
17
  /** The Figma property key of the instance swap (e.g. '🔄 Icon Small'). */
18
18
  key: string;
19
19
  };
20
- /** An enum prop mapping Figma variant values to code values. */
20
+ /** @public An enum prop mapping Figma variant values to code values. */
21
21
  export type FigmaEnumProp = FigmaBaseProp & {
22
22
  type: 'enum';
23
23
  /** The Figma property key (e.g. 'Size', '💻 Variant'). */
@@ -31,7 +31,7 @@ export type FigmaEnumProp = FigmaBaseProp & {
31
31
  */
32
32
  guardKey?: string;
33
33
  };
34
- /** A simple scalar prop. */
34
+ /** @public A simple scalar prop. */
35
35
  export type FigmaSimpleProp = FigmaBaseProp & {
36
36
  /**
37
37
  * - 'string': maps to instance.getString()
@@ -50,6 +50,7 @@ export type FigmaSimpleProp = FigmaBaseProp & {
50
50
  guardKeys?: string[];
51
51
  };
52
52
  /**
53
+ * @public
53
54
  * Reads a text property from the first code-connected child instance.
54
55
  * Generates: instance.findConnectedInstances((node) => node.hasCodeConnect())
55
56
  * .filter((node) => node.type === 'INSTANCE')
@@ -64,6 +65,7 @@ export type FigmaConnectedTextProp = FigmaBaseProp & {
64
65
  index?: number;
65
66
  };
66
67
  /**
68
+ * @public
67
69
  * Generates a single message variable from a connected instance's text,
68
70
  * then maps it to different attribute names based on another prop's value.
69
71
  *
@@ -80,6 +82,7 @@ export type FigmaValidationMessageProp = FigmaBaseProp & {
80
82
  map: Record<string, string>;
81
83
  };
82
84
  /**
85
+ * @public
83
86
  * Renders all direct code-connected child instances as children.
84
87
  * Generates: instance.findConnectedInstances((node) => node.hasCodeConnect())
85
88
  * .flatMap((child) => child.executeTemplate().example)
@@ -94,6 +97,7 @@ export type FigmaConnectedInstancesProp = FigmaBaseProp & {
94
97
  filter?: string;
95
98
  };
96
99
  /**
100
+ * @public
97
101
  * Renders code-connected child instances recursively, filtered by a nestedImports string.
98
102
  * Uses traverseInstances: true to find all descendants, then filters by checking whether
99
103
  * the instance's template nestedImports contains the given filter string.
@@ -112,6 +116,7 @@ export type FigmaNestedConnectedInstancesProp = FigmaBaseProp & {
112
116
  filter?: string;
113
117
  };
114
118
  /**
119
+ * @public
115
120
  * Maps multiple boolean Figma properties to a single enum code value.
116
121
  * The first property whose value is `true` wins; if none match, the prop is omitted.
117
122
  *
@@ -127,6 +132,7 @@ export type FigmaBooleanToEnumProp = FigmaBaseProp & {
127
132
  }>;
128
133
  };
129
134
  /**
135
+ * @public
130
136
  * Finds all nested instances matching a filter and maps their properties to an array.
131
137
  * Each matched instance produces one object in the array, with keys defined by `props`.
132
138
  *
@@ -141,6 +147,7 @@ export type FigmaNestedInstancesToArrayProp = FigmaBaseProp & {
141
147
  props: Record<string, FigmaProp>;
142
148
  };
143
149
  /**
150
+ * @public
144
151
  * Wraps an iconSwap prop so it is only rendered when a boolean Figma property is enabled.
145
152
  * Generates: let icon = ''; if (getPropertyValue(guardKey) === true || getPropertyValue(guardKey) === 'True') { icon = `\n\t\ticon="${iconLeading}"` }
146
153
  */
@@ -25,6 +25,18 @@ export interface GlobalProps {
25
25
  */
26
26
  propOverrides?: PropOverridesType;
27
27
  }
28
+ export type StartSlotProps = {
29
+ /**
30
+ * Slot for start content, for example add a custom component between an icon and a label.
31
+ */
32
+ startSlot?: any;
33
+ };
34
+ export type EndSlotProps = {
35
+ /**
36
+ * Slot for end content, for example add a custom component between an icon and a label.
37
+ */
38
+ endSlot?: any;
39
+ };
28
40
  export type PropOverridesType = Pick<GlobalProps, 'id'>;
29
41
  export type GlobalState = {
30
42
  _id?: string;
@@ -92,6 +104,10 @@ export type MarginProps = {
92
104
  */
93
105
  margin?: MarginType;
94
106
  };
107
+ export declare const ShellControlPanelDesktopPosition: readonly ["top", "left"];
108
+ export type ShellControlPanelDesktopPositionType = (typeof ShellControlPanelDesktopPosition)[number];
109
+ export declare const ShellControlPanelMobilePosition: readonly ["top", "bottom"];
110
+ export type ShellControlPanelMobilePositionType = (typeof ShellControlPanelMobilePosition)[number];
95
111
  export declare const PlacementHorizontalList: readonly ["left", "right", "left-start", "left-end", "right-start", "right-end"];
96
112
  export type PlacementHorizontalType = (typeof PlacementHorizontalList)[number];
97
113
  export declare const PlacementVerticalList: readonly ["top", "bottom", "top-start", "top-end", "bottom-start", "bottom-end"];
@@ -237,11 +253,13 @@ export type ValueProps = {
237
253
  */
238
254
  value?: any;
239
255
  };
240
- export type BaseFormProps = {
256
+ export type DisabledProps = {
241
257
  /**
242
- * The disabled attribute can be set to keep a user from clicking on the form element.
258
+ * The disabled attribute can be set to keep a user from clicking on the item.
243
259
  */
244
260
  disabled?: boolean | string;
261
+ };
262
+ export type BaseFormProps = {
245
263
  /**
246
264
  * The label attribute specifies the caption of the form element.
247
265
  */
@@ -250,7 +268,7 @@ export type BaseFormProps = {
250
268
  * The name attribute gives the name of the form control, as used in form submission and in the form element's elements object.
251
269
  */
252
270
  name?: string;
253
- };
271
+ } & DisabledProps;
254
272
  export type CustomFormProps = {
255
273
  /**
256
274
  * Overwrites auto handling for aria-describedby.
@@ -521,11 +539,33 @@ export type NavigationBackButtonProps = {
521
539
  */
522
540
  backButtonText?: string;
523
541
  };
524
- export type AriaControlsProps = {
542
+ export type ControlPanelProps = {
525
543
  /**
526
- * Pass `aria-controls` to inner element
544
+ * Slot to pass in the DBControlPanelBrand component
527
545
  */
528
- controls?: string;
546
+ brand?: any;
547
+ /**
548
+ * Slot to pass in a meta navigation.
549
+ * Desktop: Above the regular control-panel-desktop
550
+ * Mobile: Inside the drawer
551
+ */
552
+ metaNavigation?: any;
553
+ /**
554
+ * Slot to pass one or more elements like DBButton (e.g. search) as primary action.
555
+ * Desktop: Shown next to the main-navigation
556
+ * Mobile: Shown next to the control-panel-brand
557
+ */
558
+ primaryActions?: any;
559
+ /**
560
+ * Slot to pass one or more elements like DBButton (e.g. profile, language, etc.) as secondary action.
561
+ * Desktop: Shown separated by divider at the end of the control-panel-desktop
562
+ * Mobile: Shown inside the drawer at the bottom.
563
+ */
564
+ secondaryActions?: any;
565
+ /**
566
+ * Slot to pass an anchor or link to skip the navigation and jump to main content.
567
+ */
568
+ skipNavigation?: any;
529
569
  };
530
570
  export type NoTextProps = {
531
571
  /**
@@ -537,10 +577,72 @@ export type ValueLabelType = {
537
577
  value: string;
538
578
  label?: string;
539
579
  };
580
+ export type OverflowScrollButtonProps = {
581
+ /**
582
+ * Change amount of scroll distance when clicking on an overflow scroll arrow button.
583
+ */
584
+ arrowScrollDistance?: number | string;
585
+ /**
586
+ * Set the text for the scroll left button
587
+ */
588
+ scrollLeftText?: string;
589
+ /**
590
+ * Set the text for the scroll right button
591
+ */
592
+ scrollRightText?: string;
593
+ };
594
+ export type OverflowScrollButtonState = {
595
+ scroll: (left?: boolean) => void;
596
+ showScrollLeft?: boolean;
597
+ showScrollRight?: boolean;
598
+ evaluateScrollButtons: (tabList: Element) => void;
599
+ };
600
+ export type SidebarProps = {
601
+ /**
602
+ * Set the expanded/collapsed state initially for the left sidebar
603
+ */
604
+ expanded?: boolean | string;
605
+ /**
606
+ * Set the tooltip for the expand/collapse button
607
+ */
608
+ expandButtonTooltip?: string;
609
+ /**
610
+ * Set the tooltip for the expand/collapse button based on the state. (only react|vue)
611
+ */
612
+ expandButtonTooltipFn?: (open: boolean) => string;
613
+ /**
614
+ * Set the tooltip for the expand/collapse button based on the state. (only react|vue)
615
+ */
616
+ onExpandButtonTooltipFn?: (open: boolean) => string;
617
+ };
618
+ export type SidebarState = {
619
+ _open: boolean;
620
+ getToggleButtonText: () => string;
621
+ };
622
+ export declare const NavigationItemGroupVariantList: readonly ["popover", "tree"];
623
+ export type NavigationItemGroupVariantType = (typeof NavigationItemGroupVariantList)[number];
624
+ export type NavigationItemGroupVariant = {
625
+ /**
626
+ * Selects the navigation interaction model: `popover` shows sub-items
627
+ * in a flyout menu, `tree` shows a collapsible tree structure.
628
+ * Note: This selects an interaction model, not just a visual variant.
629
+ */
630
+ variant?: NavigationItemGroupVariantType;
631
+ };
632
+ export declare const CollapsibleBehaviorList: readonly ["single", "multiple"];
633
+ export type CollapsibleBehaviorType = (typeof CollapsibleBehaviorList)[number];
634
+ export type CollapsibleBehaviorProps = {
635
+ /**
636
+ * To allow multiple items open at the same time or only 1 item
637
+ * @default 'multiple'
638
+ */
639
+ behavior?: CollapsibleBehaviorType;
640
+ };
540
641
  export type DocumentScrollState = {
541
642
  _documentScrollListenerCallbackId?: string;
542
643
  handleDocumentScroll: (event: any, parent?: HTMLElement) => void;
543
- _observer?: IntersectionObserver;
644
+ _intersectionObserverCallbackId?: string;
645
+ _resizeObserverCallbackId?: string;
544
646
  };
545
647
  export type PopoverState = {
546
648
  handleEscape: (event: any) => void;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Generic base class for singleton document event listeners.
3
+ * Manages a shared set of callbacks dispatched when a document-level
4
+ * event fires.
5
+ *
6
+ * Subclasses own their static state (callbacks, instance) and expose
7
+ * it via the abstract accessor methods below.
8
+ *
9
+ * @template TEvent - The event type passed to callbacks (Event, MouseEvent, etc.)
10
+ */
11
+ export declare abstract class AbstractDocumentListener<TEvent = any> {
12
+ /**
13
+ * Subclasses must return a reference to their own static callbacks store.
14
+ */
15
+ protected abstract getCallbacks(): Record<string, (event: TEvent) => void>;
16
+ addCallback(callback: (event: TEvent) => void): string;
17
+ removeCallback(id: string): void;
18
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Generic base class for singleton observer listeners.
3
+ * Uses a Map<Element, Map<id, callback>> for O(1) element lookup in the
4
+ * observer handler — avoids quadratic scanning when many elements are observed.
5
+ *
6
+ * Subclasses own their static state (callbacksByElement, idToElement, observer,
7
+ * instance) and expose it via the abstract accessor methods below.
8
+ *
9
+ * @template TObserver - The observer type (ResizeObserver, IntersectionObserver, etc.)
10
+ * @template TEntry - The entry type passed to the callback
11
+ */
12
+ export declare abstract class AbstractObserverListener<TObserver, TEntry> {
13
+ /**
14
+ * Returns a Map keyed by Element, where each value is a Map of id → callback.
15
+ */
16
+ protected abstract getCallbacksByElement(): Map<Element, Map<string, (entry: TEntry) => void>>;
17
+ /**
18
+ * Returns a Map of id → Element for reverse lookup during unobserve.
19
+ */
20
+ protected abstract getIdToElement(): Map<string, Element>;
21
+ /**
22
+ * Subclasses must return their own static observer instance (or null).
23
+ */
24
+ protected abstract getObserver(): TObserver | null;
25
+ /**
26
+ * Start observing an element via the underlying observer API.
27
+ */
28
+ protected abstract observeElement(observer: TObserver, element: Element): void;
29
+ /**
30
+ * Stop observing an element via the underlying observer API.
31
+ */
32
+ protected abstract unobserveElement(observer: TObserver, element: Element): void;
33
+ observe(element: Element, callback: (entry: TEntry) => void): string | undefined;
34
+ unobserve(id: string): void;
35
+ /**
36
+ * Called by subclass observer handlers to dispatch callbacks for an entry.
37
+ */
38
+ protected dispatchEntry(element: Element, entry: TEntry): void;
39
+ }
@@ -1,8 +1,8 @@
1
- export declare class DocumentClickListener {
1
+ import { AbstractDocumentListener } from './abstract-document-listener.js';
2
+ export declare class DocumentClickListener extends AbstractDocumentListener {
2
3
  private static callbacks;
3
4
  private static _instance;
4
5
  private static runCallbacks;
5
6
  constructor();
6
- addCallback(callback: (event: any) => void): string;
7
- removeCallback(id: string): void;
7
+ protected getCallbacks(): Record<string, (event: any) => void>;
8
8
  }
@@ -1,9 +1,9 @@
1
- export declare class DocumentScrollListener {
1
+ import { AbstractDocumentListener } from './abstract-document-listener.js';
2
+ export declare class DocumentScrollListener extends AbstractDocumentListener {
2
3
  private static callbacks;
3
4
  private static _instance;
4
5
  private static runCallbacks;
5
6
  private ticking;
6
7
  constructor();
7
- addCallback(callback: (event: any) => void): string;
8
- removeCallback(id: string): void;
8
+ protected getCallbacks(): Record<string, (event: any) => void>;
9
9
  }
@@ -1,8 +1,3 @@
1
- export interface DBDataOutsidePair {
2
- vx?: 'left' | 'right';
3
- vy?: 'top' | 'bottom';
4
- }
5
- export declare const handleDataOutside: (el: HTMLElement) => DBDataOutsidePair;
6
1
  export declare const handleFixedDropdown: (element: HTMLElement, parent: HTMLElement, placement: string) => void;
7
2
  export declare const getFloatingProps: (element: HTMLElement, parent: HTMLElement, placement: string) => {
8
3
  top: number;
@@ -16,5 +11,33 @@ export declare const getFloatingProps: (element: HTMLElement, parent: HTMLElemen
16
11
  correctedPlacement: string;
17
12
  innerWidth: number;
18
13
  innerHeight: number;
14
+ outsideYBoth?: undefined;
15
+ } | {
16
+ top: number;
17
+ bottom: number;
18
+ right: number;
19
+ height: number;
20
+ width: number;
21
+ left: number;
22
+ childHeight: number;
23
+ childWidth: number;
24
+ correctedPlacement: string;
25
+ innerWidth: number;
26
+ innerHeight: number;
27
+ outsideYBoth: boolean;
19
28
  };
20
- export declare const handleFixedPopover: (element: HTMLElement, parent: HTMLElement, placement: string) => void;
29
+ export declare const handleFixedPopover: (element: HTMLElement, parent: HTMLElement, placement?: string) => void;
30
+ /**
31
+ * Detects whether a floating element overflows the viewport edges
32
+ * and sets `data-outside-vy` / `data-outside-vx` attributes accordingly.
33
+ * CSS rules can use these attributes to flip/reposition the element.
34
+ *
35
+ * If the element was already flipped (has existing data-outside-* attributes),
36
+ * it checks whether the flipped position would overflow on the opposite side
37
+ * using the parent's rect as reference, preventing infinite flip-flop.
38
+ */
39
+ export interface DBDataOutsidePair {
40
+ vx?: 'left' | 'right';
41
+ vy?: 'top' | 'bottom';
42
+ }
43
+ export declare const handleDataOutside: (el: HTMLElement) => DBDataOutsidePair;
@@ -21,6 +21,16 @@ export declare const hasVoiceOver: () => boolean;
21
21
  */
22
22
  export declare const isIOSSafari: () => boolean;
23
23
  export declare const delay: (fn: () => void, ms: number) => Promise<unknown>;
24
+ /**
25
+ * Checks whether a CSS custom property on an element equals '1'.
26
+ * Useful for detecting CSS-driven boolean state (e.g. responsive breakpoints)
27
+ * without coupling JS to hardcoded breakpoint values.
28
+ *
29
+ * @param element - The element to read computed styles from
30
+ * @param property - The CSS custom property name (e.g. '--db-my-flag')
31
+ * @returns `true` if the trimmed property value is '1'
32
+ */
33
+ export declare const hasCssFlag: (element: Element, property: string) => boolean;
24
34
  /**
25
35
  * Converts boolean-like inputs to "true" or "false" strings.
26
36
  * Handles HTML-style boolean attributes where an empty string or the
@@ -60,6 +70,7 @@ export declare const stringPropVisible: (givenString?: string, showString?: bool
60
70
  export declare const getSearchInput: (element: HTMLElement) => HTMLInputElement | null;
61
71
  export declare const getOptionKey: (option: {
62
72
  id?: string;
73
+ label?: string;
63
74
  value?: string | number | string[] | undefined;
64
75
  }, prefix: string) => string;
65
76
  export declare const isKeyboardEvent: <T>(event?: ClickEvent<T> | GeneralKeyboardEvent<T>) => event is GeneralKeyboardEvent<T>;
@@ -0,0 +1,15 @@
1
+ import { AbstractObserverListener } from './abstract-observer-listener.js';
2
+ type IntersectionCallback = (entry: IntersectionObserverEntry) => void;
3
+ export declare class IntersectionObserverListener extends AbstractObserverListener<IntersectionObserver, IntersectionObserverEntry> {
4
+ private static _instance;
5
+ private static callbacksByElement;
6
+ private static idToElement;
7
+ private static observer;
8
+ constructor();
9
+ protected getCallbacksByElement(): Map<Element, Map<string, IntersectionCallback>>;
10
+ protected getIdToElement(): Map<string, Element>;
11
+ protected getObserver(): IntersectionObserver | null;
12
+ protected observeElement(observer: IntersectionObserver, element: Element): void;
13
+ protected unobserveElement(observer: IntersectionObserver, element: Element): void;
14
+ }
15
+ export {};
@@ -3,8 +3,13 @@ export type TriangleData = {
3
3
  parentElementWidth: number;
4
4
  subNavigationHeight: number;
5
5
  padding: number;
6
- outsideVX: 'left' | 'right' | undefined;
7
- outsideVY: 'top' | 'bottom' | undefined;
6
+ /**
7
+ * The direction the sub-navigation opens relative to the element.
8
+ * 'right' = sub-menu is to the right of the item
9
+ * 'left' = sub-menu is to the left of the item
10
+ * 'bottom' = sub-menu is below the item
11
+ */
12
+ openDirection: 'left' | 'right' | 'bottom';
8
13
  };
9
14
  export declare const isEventTargetNavigationItem: (event: unknown) => boolean;
10
15
  export declare class NavigationItemSafeTriangle {
@@ -19,14 +24,10 @@ export declare class NavigationItemSafeTriangle {
19
24
  private init;
20
25
  enableFollow(): void;
21
26
  disableFollow(): void;
22
- private getTriangleTipX;
23
- private getTriangleTipY;
24
27
  private hasMouseEnteredSubNavigation;
25
- private getTriangleCoordinates;
26
- followByMouseEvent(event: MouseEvent): void;
28
+ followByMouseEvent(event: {
29
+ clientX: number;
30
+ clientY: number;
31
+ }): void;
27
32
  }
28
- declare const _default: {
29
- isEventTargetNavigationItem: (event: unknown) => boolean;
30
- NavigationItemSafeTriangle: typeof NavigationItemSafeTriangle;
31
- };
32
- export default _default;
33
+ export declare const handleSubNavigationPosition: (element: HTMLElement, level?: number, vertical?: boolean) => void;
@@ -0,0 +1,15 @@
1
+ import { AbstractObserverListener } from './abstract-observer-listener.js';
2
+ type ResizeCallback = (entry: ResizeObserverEntry) => void;
3
+ export declare class ResizeObserverListener extends AbstractObserverListener<ResizeObserver, ResizeObserverEntry> {
4
+ private static _instance;
5
+ private static callbacksByElement;
6
+ private static idToElement;
7
+ private static observer;
8
+ constructor();
9
+ protected getCallbacksByElement(): Map<Element, Map<string, ResizeCallback>>;
10
+ protected getIdToElement(): Map<string, Element>;
11
+ protected getObserver(): ResizeObserver | null;
12
+ protected observeElement(observer: ResizeObserver, element: Element): void;
13
+ protected unobserveElement(observer: ResizeObserver, element: Element): void;
14
+ }
15
+ export {};