@tedi-design-system/react 17.1.0-rc.8 → 17.1.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.
- package/_virtual/index.es13.js +2 -2
- package/_virtual/index.es14.js +2 -2
- package/bundle-stats.html +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
- package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
- package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
- package/external/prop-types/external/react-is/index.cjs.js +1 -1
- package/external/prop-types/external/react-is/index.es.js +1 -1
- package/external/react-is/index.cjs.js +1 -1
- package/external/react-is/index.es.js +1 -1
- package/external/toposort/index.cjs.js +1 -1
- package/external/toposort/index.es.js +1 -1
- package/index.css +1 -1
- package/package.json +2 -2
- package/src/tedi/components/buttons/button-content/button-content.d.ts +1 -1
- package/src/tedi/components/buttons/button-content/button-content.module.scss.cjs.js +1 -1
- package/src/tedi/components/buttons/button-content/button-content.module.scss.es.js +1 -1
- package/src/tedi/components/buttons/button-group/button-group.cjs.js +1 -1
- package/src/tedi/components/buttons/button-group/button-group.es.js +39 -37
- package/src/tedi/components/buttons/floating-button/floating-button.module.scss.cjs.js +1 -1
- package/src/tedi/components/buttons/floating-button/floating-button.module.scss.es.js +1 -1
- package/src/tedi/components/cards/card/card-stories-templates.d.ts +1 -1
- package/src/tedi/components/form/input-group/components/input/input.es.js +8 -8
- package/src/tedi/components/form/input-group/components/prefix/prefix.es.js +10 -10
- package/src/tedi/components/form/input-group/components/suffix/suffix.es.js +6 -6
- package/src/tedi/components/form/input-group/input-group.es.js +13 -13
- package/src/tedi/components/form/select/components/select-bulk-helpers.cjs.js +1 -0
- package/src/tedi/components/form/select/components/select-bulk-helpers.d.ts +55 -0
- package/src/tedi/components/form/select/components/select-bulk-helpers.es.js +34 -0
- package/src/tedi/components/form/select/components/select-group-bulk-context.cjs.js +1 -0
- package/src/tedi/components/form/select/components/select-group-bulk-context.d.ts +18 -0
- package/src/tedi/components/form/select/components/select-group-bulk-context.es.js +6 -0
- package/src/tedi/components/form/select/components/select-group-heading.cjs.js +1 -1
- package/src/tedi/components/form/select/components/select-group-heading.d.ts +4 -1
- package/src/tedi/components/form/select/components/select-group-heading.es.js +43 -8
- package/src/tedi/components/form/select/components/select-group.cjs.js +1 -1
- package/src/tedi/components/form/select/components/select-group.d.ts +4 -1
- package/src/tedi/components/form/select/components/select-group.es.js +18 -6
- package/src/tedi/components/form/select/components/select-menu-list.cjs.js +1 -1
- package/src/tedi/components/form/select/components/select-menu-list.d.ts +9 -1
- package/src/tedi/components/form/select/components/select-menu-list.es.js +22 -8
- package/src/tedi/components/form/select/components/select-multi-option.cjs.js +1 -1
- package/src/tedi/components/form/select/components/select-multi-option.es.js +40 -18
- package/src/tedi/components/form/select/components/select-multi-value.cjs.js +1 -1
- package/src/tedi/components/form/select/components/select-multi-value.d.ts +12 -1
- package/src/tedi/components/form/select/components/select-multi-value.es.js +42 -8
- package/src/tedi/components/form/select/components/select-single-option.cjs.js +1 -1
- package/src/tedi/components/form/select/components/select-single-option.es.js +5 -4
- package/src/tedi/components/form/select/components/select-single-value.cjs.js +1 -0
- package/src/tedi/components/form/select/components/select-single-value.d.ts +3 -0
- package/src/tedi/components/form/select/components/select-single-value.es.js +9 -0
- package/src/tedi/components/form/select/components/select-tags-context.cjs.js +1 -0
- package/src/tedi/components/form/select/components/select-tags-context.d.ts +11 -0
- package/src/tedi/components/form/select/components/select-tags-context.es.js +9 -0
- package/src/tedi/components/form/select/components/select-value-container.cjs.js +1 -1
- package/src/tedi/components/form/select/components/select-value-container.d.ts +12 -2
- package/src/tedi/components/form/select/components/select-value-container.es.js +76 -13
- package/src/tedi/components/form/select/select.cjs.js +1 -1
- package/src/tedi/components/form/select/select.d.ts +258 -0
- package/src/tedi/components/form/select/select.es.js +265 -175
- package/src/tedi/components/form/select/select.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/select/select.module.scss.es.js +14 -5
- package/src/tedi/components/layout/header/components/header-language/header-language.d.ts +45 -0
- package/src/tedi/components/layout/header/components/header-login/header-login.d.ts +22 -0
- package/src/tedi/components/layout/header/components/header-logout/header-logout.d.ts +22 -0
- package/src/tedi/components/layout/header/components/header-mobile-button/header-mobile-button.d.ts +21 -0
- package/src/tedi/components/layout/header/components/header-profile/header-profile.d.ts +43 -0
- package/src/tedi/components/layout/header/components/header-role/header-role-representatives.d.ts +79 -0
- package/src/tedi/components/layout/header/components/header-role/header-role.d.ts +74 -0
- package/src/tedi/components/layout/header/components/header-search/header-search.d.ts +28 -0
- package/src/tedi/components/layout/header/header.d.ts +115 -0
- package/src/tedi/components/layout/header/index.d.ts +7 -0
- package/src/tedi/components/layout/hide-at/hide-at.d.ts +10 -0
- package/src/tedi/components/layout/show-at/show-at.d.ts +10 -0
- package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.module.scss.cjs.js +1 -1
- package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.module.scss.es.js +1 -0
- package/src/tedi/components/overlays/overlay/overlay.cjs.js +1 -1
- package/src/tedi/components/overlays/overlay/overlay.d.ts +7 -0
- package/src/tedi/components/overlays/overlay/overlay.es.js +41 -40
- package/src/tedi/components/overlays/popover/index.d.ts +1 -0
- package/src/tedi/components/overlays/popover/popover-content.cjs.js +1 -1
- package/src/tedi/components/overlays/popover/popover-content.d.ts +5 -2
- package/src/tedi/components/overlays/popover/popover-content.es.js +36 -27
- package/src/tedi/components/overlays/popover/popover-context.cjs.js +1 -0
- package/src/tedi/components/overlays/popover/popover-context.d.ts +9 -0
- package/src/tedi/components/overlays/popover/popover-context.es.js +7 -0
- package/src/tedi/components/overlays/popover/popover.cjs.js +1 -1
- package/src/tedi/components/overlays/popover/popover.d.ts +12 -2
- package/src/tedi/components/overlays/popover/popover.es.js +18 -16
- package/src/tedi/components/overlays/popover/popover.module.scss.cjs.js +1 -1
- package/src/tedi/components/overlays/popover/popover.module.scss.es.js +2 -0
- package/src/tedi/components/tags/tag/tag.cjs.js +1 -1
- package/src/tedi/components/tags/tag/tag.d.ts +8 -0
- package/src/tedi/components/tags/tag/tag.es.js +14 -13
- package/src/tedi/helpers/hooks/use-breakpoint.cjs.js +1 -1
- package/src/tedi/helpers/hooks/use-breakpoint.es.js +7 -7
- package/src/tedi/providers/label-provider/label-provider.cjs.js +1 -1
- package/src/tedi/providers/label-provider/label-provider.d.ts +2 -0
- package/src/tedi/providers/label-provider/label-provider.es.js +57 -44
- package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
- package/src/tedi/providers/label-provider/labels-map.d.ts +84 -0
- package/src/tedi/providers/label-provider/labels-map.es.js +118 -34
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +60 -58
package/src/tedi/components/layout/header/components/header-mobile-button/header-mobile-button.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { IconWithoutBackgroundProps } from '../../../../base/icon/icon';
|
|
3
|
+
interface HeaderMobileButtonProps {
|
|
4
|
+
/** Click handler for the button. */
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
/** If provided, the button renders as a link navigating to this URL. */
|
|
7
|
+
href?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Icon displayed inside the button.
|
|
10
|
+
* Can be a material icon name (e.g. 'menu') or a full IconWithoutBackgroundProps object for more control.
|
|
11
|
+
*/
|
|
12
|
+
icon: string | IconWithoutBackgroundProps;
|
|
13
|
+
/** Label text displayed below the icon. */
|
|
14
|
+
label?: string;
|
|
15
|
+
/** Whether the button is in a selected state. */
|
|
16
|
+
selected?: boolean;
|
|
17
|
+
/** Whether the button is disabled. */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
declare const HeaderMobileButton: React.ForwardRefExoticComponent<HeaderMobileButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
21
|
+
export default HeaderMobileButton;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Breakpoint, BreakpointSupport } from '../../../../../helpers';
|
|
2
|
+
interface HeaderProfileContextValue {
|
|
3
|
+
activeRoleId: string | null;
|
|
4
|
+
setActiveRoleId: (id: string | null) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare const useHeaderProfile: () => HeaderProfileContextValue | null;
|
|
7
|
+
interface HeaderProfileBreakpointProps {
|
|
8
|
+
/**
|
|
9
|
+
* Defines the breakpoint from which the profile menu is displayed as a popover.
|
|
10
|
+
* Below this breakpoint, it is rendered as a modal.
|
|
11
|
+
*
|
|
12
|
+
* @default lg
|
|
13
|
+
*/
|
|
14
|
+
showPopover?: Breakpoint;
|
|
15
|
+
/** Custom label text for the profile button. Falls back to the `header.profile` translation key. */
|
|
16
|
+
label?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface HeaderProfileProps extends BreakpointSupport<HeaderProfileBreakpointProps> {
|
|
19
|
+
/** Content rendered inside the profile popover or modal (e.g. navigation links, logout button). */
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to display a text label next to the profile icon on non-mobile viewports.
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
showLabel?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the profile button is disabled. Prevents opening the popover or modal.
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Removes default item styles from the mobile modal content.
|
|
33
|
+
* When `true`, children are rendered without padding, borders, or background applied by the component.
|
|
34
|
+
* Use when the content requires custom item styling.
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
37
|
+
noStyle?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare const HeaderProfile: {
|
|
40
|
+
(props: HeaderProfileProps): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
displayName: string;
|
|
42
|
+
};
|
|
43
|
+
export default HeaderProfile;
|
package/src/tedi/components/layout/header/components/header-role/header-role-representatives.d.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { IconProps } from '../../../../base/icon/icon';
|
|
3
|
+
export interface Representative {
|
|
4
|
+
/** Unique identifier for the representative. */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Display name shown in the header and selection list. */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Additional context shown below the name (e.g. role, organization, personal code). */
|
|
9
|
+
description?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Icon displayed next to the representative in the selection list. Accepts either a
|
|
12
|
+
* Material Icon name as a string (`'person'`) for the common case, or a full
|
|
13
|
+
* `IconProps` object (`{ name: 'person', size: 18 }`) when explicit props are needed.
|
|
14
|
+
*/
|
|
15
|
+
icon?: string | IconProps;
|
|
16
|
+
}
|
|
17
|
+
interface HeaderRoleRepresentativesProps {
|
|
18
|
+
/** Unique id for the collapsible panel, used for aria-controls on the toggle. */
|
|
19
|
+
id?: string;
|
|
20
|
+
/** Id of the toggle button, used for aria-labelledby on the panel. */
|
|
21
|
+
toggleId?: string;
|
|
22
|
+
/** List of representatives to display in the selection list. */
|
|
23
|
+
representatives: Representative[];
|
|
24
|
+
/** Currently selected representative. */
|
|
25
|
+
representative?: Representative;
|
|
26
|
+
/** Current value of the search input. */
|
|
27
|
+
inputValue: string;
|
|
28
|
+
/** Callback to update the search input value. */
|
|
29
|
+
setInputValue: (value: string) => void;
|
|
30
|
+
/** Callback to update the selected representative. */
|
|
31
|
+
setRepresentative: (rep: Representative) => void;
|
|
32
|
+
/** Callback to control the open/closed state of the role selection. */
|
|
33
|
+
setIsRoleSelectionOpen: (open: boolean) => void;
|
|
34
|
+
/** Callback fired when the role selection is toggled. Handles both state update and external notification. */
|
|
35
|
+
onRoleSelectionToggle?: () => void;
|
|
36
|
+
/** Whether the role selection panel is currently open. */
|
|
37
|
+
isRoleSelectionOpen: boolean;
|
|
38
|
+
/** Whether the representatives belong to an organization context. Affects the search input label. */
|
|
39
|
+
isOrganization?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Label for the search input when selecting a representative.
|
|
42
|
+
* Falls back to i18n labels when not provided.
|
|
43
|
+
*/
|
|
44
|
+
searchLabel?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Label for the search input when selecting an organization representative.
|
|
47
|
+
* Overrides both the default and `searchLabel` when `isOrganization` is true.
|
|
48
|
+
*/
|
|
49
|
+
organizationSearchLabel?: string;
|
|
50
|
+
/** Optional id for the search input. Falls back to a generated unique id. */
|
|
51
|
+
searchId?: string;
|
|
52
|
+
/** Whether to keep the role selection open after selecting a representative. */
|
|
53
|
+
keepOpenOnSelect?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Whether to display the search input above the representative list.
|
|
56
|
+
* @default false
|
|
57
|
+
*/
|
|
58
|
+
showSearch?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Whether the search input shows a clear button.
|
|
61
|
+
* @default false
|
|
62
|
+
*/
|
|
63
|
+
searchClearable?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Whether to clear the search input when a representative is selected.
|
|
66
|
+
* @default true
|
|
67
|
+
*/
|
|
68
|
+
clearSearchOnSelect?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Custom content rendered when the filtered representative list is empty.
|
|
71
|
+
* Falls back to the default "no results" label when not provided.
|
|
72
|
+
*/
|
|
73
|
+
noResultsContent?: React.ReactNode;
|
|
74
|
+
}
|
|
75
|
+
declare const HeaderRoleRepresentatives: {
|
|
76
|
+
(props: HeaderRoleRepresentativesProps): import("react/jsx-runtime").JSX.Element;
|
|
77
|
+
displayName: string;
|
|
78
|
+
};
|
|
79
|
+
export default HeaderRoleRepresentatives;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { Representative } from './header-role-representatives';
|
|
3
|
+
export interface HeaderRoleProps {
|
|
4
|
+
/**
|
|
5
|
+
* Descriptive label rendered above the representative name (e.g. plain text, Tag, or any ReactNode).
|
|
6
|
+
*/
|
|
7
|
+
label?: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Whether to display the selected representative's description text in the header area.
|
|
10
|
+
* Does not affect the description shown in the selection list items.
|
|
11
|
+
* @default true
|
|
12
|
+
*/
|
|
13
|
+
showDescription?: boolean;
|
|
14
|
+
/** List of selectable representatives. */
|
|
15
|
+
representatives: Representative[];
|
|
16
|
+
/** Whether the role represents an organization. */
|
|
17
|
+
isOrganization?: boolean;
|
|
18
|
+
/** Custom labels for the accordion toggle button. */
|
|
19
|
+
accordionLabels?: {
|
|
20
|
+
open?: string;
|
|
21
|
+
close?: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Label for the search input when selecting a representative.
|
|
25
|
+
* Falls back to i18n labels when not provided.
|
|
26
|
+
*/
|
|
27
|
+
searchLabel?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Label for the search input when selecting an organization representative.
|
|
30
|
+
* Overrides both the default and `searchLabel` when `isOrganization` is true.
|
|
31
|
+
*/
|
|
32
|
+
organizationSearchLabel?: string;
|
|
33
|
+
/** Optional id for the search input. Falls back to a generated unique id. */
|
|
34
|
+
searchId?: string;
|
|
35
|
+
/** Callback fired when the role selection accordion or popover is toggled. */
|
|
36
|
+
onRoleSelectionToggle?: (isOpen: boolean) => void;
|
|
37
|
+
/** Callback fired when a representative is selected. */
|
|
38
|
+
onRepresentativeChange?: (representative: Representative) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Whether to display the search input above the representative list.
|
|
41
|
+
* @default false
|
|
42
|
+
*/
|
|
43
|
+
showSearch?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Whether the search input shows a clear button.
|
|
46
|
+
* @default false
|
|
47
|
+
*/
|
|
48
|
+
searchClearable?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Whether to clear the search input when a representative is selected.
|
|
51
|
+
* @default true
|
|
52
|
+
*/
|
|
53
|
+
clearSearchOnSelect?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Custom content rendered inside the role selection popover (desktop) or accordion (tablet and mobile).
|
|
56
|
+
* When provided, replaces the default representative list entirely.
|
|
57
|
+
*/
|
|
58
|
+
children?: React.ReactNode;
|
|
59
|
+
/**
|
|
60
|
+
* Whether to show the role selection toggle and dropdown.
|
|
61
|
+
* When omitted, defaults to showing the selection when there are multiple representatives.
|
|
62
|
+
*/
|
|
63
|
+
showRoleSwitch?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Custom content rendered when the filtered representative list is empty.
|
|
66
|
+
* Falls back to the default "no results" label when not provided.
|
|
67
|
+
*/
|
|
68
|
+
noResultsContent?: React.ReactNode;
|
|
69
|
+
}
|
|
70
|
+
export declare const HeaderRole: {
|
|
71
|
+
(props: HeaderRoleProps): import("react/jsx-runtime").JSX.Element;
|
|
72
|
+
displayName: string;
|
|
73
|
+
};
|
|
74
|
+
export default HeaderRole;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
type MobileSearchVariant = 'modal' | 'inline';
|
|
2
|
+
export interface HeaderSearchProps {
|
|
3
|
+
/** Search input or form content rendered inside the search area. */
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/**
|
|
6
|
+
* How the search is presented on mobile viewports.
|
|
7
|
+
* `'modal'` opens a full-screen overlay with a close button, `'inline'` renders the search directly in the header bottom area.
|
|
8
|
+
* @default modal
|
|
9
|
+
*/
|
|
10
|
+
mobileVariant?: MobileSearchVariant;
|
|
11
|
+
/** Custom label overrides for the search button and modal title. */
|
|
12
|
+
mobileLabels?: {
|
|
13
|
+
/** Label for the mobile search toggle button. Falls back to the `header.search` translation key. */
|
|
14
|
+
button?: string;
|
|
15
|
+
/** Title displayed at the top of the mobile search modal. Falls back to the `header.search` translation key. */
|
|
16
|
+
modalTitle?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Whether the mobile search button is disabled. Prevents opening the search modal.
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare const HeaderSearch: {
|
|
25
|
+
(props: HeaderSearchProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
displayName: string;
|
|
27
|
+
};
|
|
28
|
+
export default HeaderSearch;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface HeaderProps {
|
|
3
|
+
/**
|
|
4
|
+
* Content rendered inside the header, typically Header.Logo, Header.Center, and Header.Actions subcomponents.
|
|
5
|
+
*/
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Toggle element for the mobile side navigation menu.
|
|
9
|
+
* Typically a SideNav.Toggle component.
|
|
10
|
+
*/
|
|
11
|
+
toggle?: React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Content rendered below the main header bar on mobile viewports (below `md` breakpoint).
|
|
14
|
+
* Commonly used for a mobile-specific search bar or other compact navigation elements.
|
|
15
|
+
*/
|
|
16
|
+
bottom?: React.ReactNode;
|
|
17
|
+
/** Additional CSS class name applied to the header wrapper. */
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const Header: {
|
|
21
|
+
(props: HeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
displayName: string;
|
|
23
|
+
Logo: {
|
|
24
|
+
(props: HeaderLogoProps): import("react/jsx-runtime").JSX.Element | null;
|
|
25
|
+
displayName: string;
|
|
26
|
+
};
|
|
27
|
+
Center: {
|
|
28
|
+
(props: HeaderCenterProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
displayName: string;
|
|
30
|
+
};
|
|
31
|
+
Actions: {
|
|
32
|
+
(props: HeaderActionsProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
displayName: string;
|
|
34
|
+
};
|
|
35
|
+
Language: {
|
|
36
|
+
(props: import('./components/header-language/header-language').HeaderLanguageProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
displayName: string;
|
|
38
|
+
};
|
|
39
|
+
Login: {
|
|
40
|
+
(props: import('./components/header-login/header-login').HeaderLoginProps): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
displayName: string;
|
|
42
|
+
};
|
|
43
|
+
Logout: {
|
|
44
|
+
(props: import('./components/header-logout/header-logout').HeaderLogoutProps): import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
displayName: string;
|
|
46
|
+
};
|
|
47
|
+
Profile: {
|
|
48
|
+
(props: import('./components/header-profile/header-profile').HeaderProfileProps): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
displayName: string;
|
|
50
|
+
};
|
|
51
|
+
Role: {
|
|
52
|
+
(props: import('./components/header-role/header-role').HeaderRoleProps): import("react/jsx-runtime").JSX.Element;
|
|
53
|
+
displayName: string;
|
|
54
|
+
};
|
|
55
|
+
Search: {
|
|
56
|
+
(props: import('./components/header-search/header-search').HeaderSearchProps): import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
displayName: string;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
export interface HeaderLogoProps {
|
|
61
|
+
/**
|
|
62
|
+
* The default logo to display (typically used in light theme).
|
|
63
|
+
*/
|
|
64
|
+
logo: React.ReactNode;
|
|
65
|
+
/**
|
|
66
|
+
* Optional logo variant for dark theme.
|
|
67
|
+
* If provided, it will be used when the current theme is dark.
|
|
68
|
+
*/
|
|
69
|
+
logoDark?: React.ReactNode;
|
|
70
|
+
/**
|
|
71
|
+
* Controls visibility of the logo.
|
|
72
|
+
* Useful for conditionally hiding the logo based on application state, feature flags,
|
|
73
|
+
* or custom media queries that fall between standard breakpoints (e.g. 420px).
|
|
74
|
+
* For responsive hiding at standard breakpoints, prefer wrapping Header.Logo with HideAt/ShowAt.
|
|
75
|
+
* @default true
|
|
76
|
+
*/
|
|
77
|
+
showLogo?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Optional link URL.
|
|
80
|
+
* If provided, the logo will be wrapped in an anchor element.
|
|
81
|
+
*/
|
|
82
|
+
href?: string;
|
|
83
|
+
/** Additional CSS class name applied to the logo wrapper. */
|
|
84
|
+
className?: string;
|
|
85
|
+
}
|
|
86
|
+
export declare const HeaderLogo: {
|
|
87
|
+
(props: HeaderLogoProps): import("react/jsx-runtime").JSX.Element | null;
|
|
88
|
+
displayName: string;
|
|
89
|
+
};
|
|
90
|
+
export interface HeaderCenterProps {
|
|
91
|
+
/** Content rendered in the center area of the header, typically navigation links or a search bar. */
|
|
92
|
+
children: React.ReactNode;
|
|
93
|
+
/**
|
|
94
|
+
* Controls the horizontal alignment of center content.
|
|
95
|
+
* @default center
|
|
96
|
+
*/
|
|
97
|
+
alignment?: 'flex-start' | 'center' | 'space-between';
|
|
98
|
+
/** Additional CSS class name applied to the center content area. */
|
|
99
|
+
className?: string;
|
|
100
|
+
}
|
|
101
|
+
export declare const HeaderCenter: {
|
|
102
|
+
(props: HeaderCenterProps): import("react/jsx-runtime").JSX.Element;
|
|
103
|
+
displayName: string;
|
|
104
|
+
};
|
|
105
|
+
export interface HeaderActionsProps {
|
|
106
|
+
/** Action elements rendered on the right side of the header (e.g. language selector, login, profile). */
|
|
107
|
+
children: React.ReactNode;
|
|
108
|
+
/** Additional CSS class name applied to the actions wrapper. */
|
|
109
|
+
className?: string;
|
|
110
|
+
}
|
|
111
|
+
export declare const HeaderActions: {
|
|
112
|
+
(props: HeaderActionsProps): import("react/jsx-runtime").JSX.Element;
|
|
113
|
+
displayName: string;
|
|
114
|
+
};
|
|
115
|
+
export default Header;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './header';
|
|
2
|
+
export * from './components/header-language/header-language';
|
|
3
|
+
export * from './components/header-login/header-login';
|
|
4
|
+
export * from './components/header-logout/header-logout';
|
|
5
|
+
export * from './components/header-profile/header-profile';
|
|
6
|
+
export * from './components/header-role/header-role';
|
|
7
|
+
export * from './components/header-search/header-search';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { Breakpoint } from '../../../helpers';
|
|
3
|
+
type HideAtProps = {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
} & Partial<Record<Breakpoint, boolean>>;
|
|
6
|
+
export declare const HideAt: {
|
|
7
|
+
({ children, ...breakpoints }: HideAtProps): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { Breakpoint } from '../../../helpers';
|
|
3
|
+
type ShowAtProps = {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
} & Partial<Record<Breakpoint, boolean>>;
|
|
6
|
+
export declare const ShowAt: {
|
|
7
|
+
({ children, ...breakpoints }: ShowAtProps): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-sidenav-toggle":"tedi-sidenav-toggle-5aa60f9e","tedi-sidenav-toggle--collapse":"tedi-sidenav-toggle--collapse-3b54974c"};exports.default=e;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-sidenav-toggle":"tedi-sidenav-toggle-5aa60f9e","tedi-sidenav-toggle__icon":"tedi-sidenav-toggle__icon-a52afb07","tedi-sidenav-toggle--collapse":"tedi-sidenav-toggle--collapse-3b54974c"};exports.default=e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const N=require("react/jsx-runtime"),t=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),n=require("react"),Q=require("./overlay-content.cjs.js"),X=require("./overlay-trigger.cjs.js"),j=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),i=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),Y=require("../../../helpers/hooks/use-is-touch-device.cjs.js"),Z=require("../../../helpers/hooks/use-is-mounted.cjs.js"),$=3,S=n.createContext({open:!1,onOpenChange:()=>{},isMounted:!1,openWith:"hover",reference:()=>{},floating:()=>{},focusManager:{},arrowRef:{current:null},x:0,y:0,strategy:"absolute",getReferenceProps:()=>({}),getFloatingProps:()=>({}),arrow:{width:0,height:0,x:0,y:0,centerOffset:0},placement:"top",context:{},scrollLock:void 0,contentId:""}),u=E=>{const L=Y.useIsTouchDevice(),{children:W,placement:A="top",openWith:s=L?"click":"hover",defaultOpen:G=!1,open:a,onToggle:r,role:d="tooltip",arrowDimensions:e,offset:H=$+((e==null?void 0:e.height)??0),arrowPadding:V=4,focusManager:f,dismissible:y,scrollLock:O,trackReferencePosition:z=!1}=E,{order:M=["reference","content"],initialFocus:m,modal:g,...x}=f??{},C=m!==void 0?m:g?0:void 0,[F,P]=n.useState(G),p=n.useRef(null),R=Z.useIsMounted(),h=n.useMemo(()=>r&&typeof a<"u"?a:F,[r,a,F]),v=n.useCallback(l=>{typeof a>"u"&&P(l),r==null||r(l)},[a,P,r]),{x:q,y:I,refs:c,strategy:b,context:o,middlewareData:w,placement:k}=t.useFloating({placement:A,open:h,onOpenChange:v,middleware:[i.offset(H),i.flip(),i.shift({padding:8}),i.arrow({element:p,padding:V})],whileElementsMounted:z?(l,J,K)=>j.autoUpdate(l,J,K,{animationFrame:!0}):j.autoUpdate}),{getReferenceProps:T,getFloatingProps:U}=t.useInteractions([t.useHover(o,{enabled:s==="hover",handleClose:t.safePolygon()}),t.useClick(o,{toggle:y}),t.useFocus(o,{enabled:s==="hover"}),t.useRole(o,{role:d}),t.useDismiss(o,{enabled:y,outsidePressEvent:s==="click"?"mousedown":"pointerdown"})]),_=n.useId(),B=n.useMemo(()=>({open:h,onOpenChange:v,isMounted:R,openWith:s,focusManager:f?{order:M,modal:g,initialFocus:C,...x}:void 0,reference:c.setReference,floating:c.setFloating,arrowRef:p,x:q,y:I,strategy:b,getReferenceProps:T,getFloatingProps:U,arrow:{width:e==null?void 0:e.width,height:e==null?void 0:e.height,...w.arrow},context:o,placement:k,scrollLock:O,role:d,contentId:_}),[h,v,R,s,f,c.setReference,c.setFloating,p,q,I,b,T,U,e==null?void 0:e.width,e==null?void 0:e.height,w.arrow,o,k,O,d,_,g,M,C,x]);return N.jsx(S.Provider,{value:B,children:W})};u.Trigger=X.OverlayTrigger;u.Content=Q.OverlayContent;exports.Overlay=u;exports.OverlayContext=S;exports.default=u;
|
|
@@ -75,6 +75,13 @@ export interface OverlayProps {
|
|
|
75
75
|
* @default false
|
|
76
76
|
*/
|
|
77
77
|
trackReferencePosition?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Minimum distance (in px) between the arrow and the edges of the content.
|
|
80
|
+
* Helps keep the arrow away from rounded corners, especially on `-start` and `-end` placements.
|
|
81
|
+
* Use a larger value for bigger arrows or arrows with borders.
|
|
82
|
+
* @default 4
|
|
83
|
+
*/
|
|
84
|
+
arrowPadding?: number;
|
|
78
85
|
}
|
|
79
86
|
export interface OverlayContextType {
|
|
80
87
|
open: boolean;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useFloating as
|
|
3
|
-
import { createContext as
|
|
4
|
-
import { OverlayContent as
|
|
5
|
-
import { OverlayTrigger as
|
|
1
|
+
import { jsx as J } from "react/jsx-runtime";
|
|
2
|
+
import { useFloating as K, useInteractions as N, useHover as Q, useClick as X, useFocus as Y, useRole as Z, useDismiss as _, safePolygon as $ } from "../../../../../external/@floating-ui/react/dist/floating-ui.react.es.js";
|
|
3
|
+
import { createContext as D, useState as ee, useRef as te, useMemo as T, useCallback as oe, useId as ne } from "react";
|
|
4
|
+
import { OverlayContent as re } from "./overlay-content.es.js";
|
|
5
|
+
import { OverlayTrigger as se } from "./overlay-trigger.es.js";
|
|
6
6
|
import { autoUpdate as E } from "../../../../../external/@floating-ui/dom/dist/floating-ui.dom.es.js";
|
|
7
|
-
import { offset as
|
|
8
|
-
import { useIsTouchDevice as
|
|
9
|
-
import { useIsMounted as
|
|
10
|
-
const
|
|
7
|
+
import { offset as ae, flip as ce, shift as le, arrow as ie } from "../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.es.js";
|
|
8
|
+
import { useIsTouchDevice as fe } from "../../../helpers/hooks/use-is-touch-device.es.js";
|
|
9
|
+
import { useIsMounted as ue } from "../../../helpers/hooks/use-is-mounted.es.js";
|
|
10
|
+
const de = 3, pe = D({
|
|
11
11
|
open: !1,
|
|
12
12
|
onOpenChange: () => {
|
|
13
13
|
},
|
|
@@ -36,7 +36,7 @@ const ue = 3, de = $({
|
|
|
36
36
|
scrollLock: void 0,
|
|
37
37
|
contentId: ""
|
|
38
38
|
}), L = (W) => {
|
|
39
|
-
const j =
|
|
39
|
+
const j = fe(), {
|
|
40
40
|
children: A,
|
|
41
41
|
placement: G = "top",
|
|
42
42
|
openWith: n = j ? "click" : "hover",
|
|
@@ -45,47 +45,48 @@ const ue = 3, de = $({
|
|
|
45
45
|
onToggle: o,
|
|
46
46
|
role: c = "tooltip",
|
|
47
47
|
arrowDimensions: e,
|
|
48
|
-
offset: S =
|
|
48
|
+
offset: S = de + ((e == null ? void 0 : e.height) ?? 0),
|
|
49
|
+
arrowPadding: U = 4,
|
|
49
50
|
focusManager: l,
|
|
50
51
|
dismissible: p,
|
|
51
52
|
scrollLock: g,
|
|
52
|
-
trackReferencePosition:
|
|
53
|
-
} = W, { order: h = ["reference", "content"], initialFocus: m, modal: i, ...v } = l ?? {}, y = m !== void 0 ? m : i ? 0 : void 0, [O, x] =
|
|
53
|
+
trackReferencePosition: V = !1
|
|
54
|
+
} = W, { order: h = ["reference", "content"], initialFocus: m, modal: i, ...v } = l ?? {}, y = m !== void 0 ? m : i ? 0 : void 0, [O, x] = ee(H), f = te(null), F = ue(), u = T(() => o && typeof r < "u" ? r : O, [o, r, O]), d = oe(
|
|
54
55
|
(a) => {
|
|
55
56
|
typeof r > "u" && x(a), o == null || o(a);
|
|
56
57
|
},
|
|
57
58
|
[r, x, o]
|
|
58
|
-
), { x:
|
|
59
|
+
), { x: P, y: C, refs: s, strategy: M, context: t, middlewareData: R, placement: w } = K({
|
|
59
60
|
placement: G,
|
|
60
61
|
open: u,
|
|
61
62
|
onOpenChange: d,
|
|
62
63
|
middleware: [
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
ae(S),
|
|
65
|
+
ce(),
|
|
66
|
+
le({ padding: 8 }),
|
|
67
|
+
ie({
|
|
67
68
|
element: f,
|
|
68
|
-
padding:
|
|
69
|
+
padding: U
|
|
69
70
|
})
|
|
70
71
|
],
|
|
71
|
-
whileElementsMounted:
|
|
72
|
-
}), { getReferenceProps:
|
|
73
|
-
|
|
72
|
+
whileElementsMounted: V ? (a, z, B) => E(a, z, B, { animationFrame: !0 }) : E
|
|
73
|
+
}), { getReferenceProps: k, getFloatingProps: I } = N([
|
|
74
|
+
Q(t, {
|
|
74
75
|
enabled: n === "hover",
|
|
75
|
-
handleClose:
|
|
76
|
+
handleClose: $()
|
|
76
77
|
}),
|
|
77
|
-
|
|
78
|
+
X(t, {
|
|
78
79
|
toggle: p
|
|
79
80
|
}),
|
|
80
|
-
|
|
81
|
+
Y(t, {
|
|
81
82
|
enabled: n === "hover"
|
|
82
83
|
}),
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
Z(t, { role: c }),
|
|
85
|
+
_(t, {
|
|
85
86
|
enabled: p,
|
|
86
87
|
outsidePressEvent: n === "click" ? "mousedown" : "pointerdown"
|
|
87
88
|
})
|
|
88
|
-
]), b =
|
|
89
|
+
]), b = ne(), q = T(
|
|
89
90
|
() => ({
|
|
90
91
|
open: u,
|
|
91
92
|
onOpenChange: d,
|
|
@@ -100,10 +101,10 @@ const ue = 3, de = $({
|
|
|
100
101
|
reference: s.setReference,
|
|
101
102
|
floating: s.setFloating,
|
|
102
103
|
arrowRef: f,
|
|
103
|
-
x:
|
|
104
|
-
y:
|
|
105
|
-
strategy:
|
|
106
|
-
getReferenceProps:
|
|
104
|
+
x: P,
|
|
105
|
+
y: C,
|
|
106
|
+
strategy: M,
|
|
107
|
+
getReferenceProps: k,
|
|
107
108
|
getFloatingProps: I,
|
|
108
109
|
arrow: {
|
|
109
110
|
width: e == null ? void 0 : e.width,
|
|
@@ -111,7 +112,7 @@ const ue = 3, de = $({
|
|
|
111
112
|
...R.arrow
|
|
112
113
|
},
|
|
113
114
|
context: t,
|
|
114
|
-
placement:
|
|
115
|
+
placement: w,
|
|
115
116
|
scrollLock: g,
|
|
116
117
|
role: c,
|
|
117
118
|
contentId: b
|
|
@@ -125,16 +126,16 @@ const ue = 3, de = $({
|
|
|
125
126
|
s.setReference,
|
|
126
127
|
s.setFloating,
|
|
127
128
|
f,
|
|
129
|
+
P,
|
|
128
130
|
C,
|
|
129
131
|
M,
|
|
130
|
-
|
|
131
|
-
w,
|
|
132
|
+
k,
|
|
132
133
|
I,
|
|
133
134
|
e == null ? void 0 : e.width,
|
|
134
135
|
e == null ? void 0 : e.height,
|
|
135
136
|
R.arrow,
|
|
136
137
|
t,
|
|
137
|
-
|
|
138
|
+
w,
|
|
138
139
|
g,
|
|
139
140
|
c,
|
|
140
141
|
b,
|
|
@@ -144,12 +145,12 @@ const ue = 3, de = $({
|
|
|
144
145
|
v
|
|
145
146
|
]
|
|
146
147
|
);
|
|
147
|
-
return /* @__PURE__ */
|
|
148
|
+
return /* @__PURE__ */ J(pe.Provider, { value: q, children: A });
|
|
148
149
|
};
|
|
149
|
-
L.Trigger =
|
|
150
|
-
L.Content =
|
|
150
|
+
L.Trigger = se;
|
|
151
|
+
L.Content = re;
|
|
151
152
|
export {
|
|
152
153
|
L as Overlay,
|
|
153
|
-
|
|
154
|
+
pe as OverlayContext,
|
|
154
155
|
L as default
|
|
155
156
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),n=require("../../../../../external/classnames/index.cjs.js"),s=require("react"),y=require("../../base/typography/text/text.cjs.js"),_=require("../../buttons/closing-button/closing-button.cjs.js"),j=require("../overlay/overlay.cjs.js"),b=require("../overlay/overlay-content.cjs.js"),e=require("./popover.module.scss.cjs.js"),g=require("./popover-context.cjs.js"),x=C=>{const{children:i,width:d="small",className:h,title:t,titleProps:l={element:"h4"},close:a,closeProps:r={size:"default"}}=C,{onOpenChange:m}=s.useContext(j.OverlayContext),{withBorder:c}=s.useContext(g.PopoverContext),u=s.useId(),p=!!i,v=s.useId();return o.jsxs(b.OverlayContent,{classNames:{content:n.default(e.default["tedi-popover"],{[e.default[`tedi-popover--${d}`]]:d&&d!=="none",[e.default["tedi-popover--border"]]:c},h),arrow:n.default(e.default["tedi-popover__arrow"],{[e.default["tedi-popover__arrow--border"]]:c})},labelledBy:t?u:void 0,describedBy:p?v:void 0,children:[(t||a)&&o.jsxs("div",{className:n.default(e.default["tedi-popover__header"],{[e.default["tedi-popover__header--no-title"]]:!t}),children:[t&&o.jsx(y.Text,{...l,id:u,className:n.default("align-self-center",l.className),children:t}),a&&o.jsx(_.ClosingButton,{...r,onClick:q=>{var f;m(!1),(f=r.onClick)==null||f.call(r,q)}})]}),p?o.jsx("div",{id:v,children:i}):i]})};x.displayName="PopoverContent";exports.PopoverContent=x;
|
|
@@ -27,6 +27,9 @@ export interface PopoverContentProps extends Omit<OverlayContentProps, 'classNam
|
|
|
27
27
|
* Popover width.
|
|
28
28
|
* @default small
|
|
29
29
|
*/
|
|
30
|
-
width?: 'small' | 'medium' | 'large';
|
|
30
|
+
width?: 'small' | 'medium' | 'large' | 'none';
|
|
31
31
|
}
|
|
32
|
-
export declare const PopoverContent:
|
|
32
|
+
export declare const PopoverContent: {
|
|
33
|
+
(props: PopoverContentProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
displayName: string;
|
|
35
|
+
};
|