@pantheon-systems/pds-toolkit-react 2.0.0-alpha.19 → 2.0.0-alpha.20
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/dist/components/{RefreshChecker/RefreshChecker.d.ts → StatusChecker/StatusChecker.d.ts} +5 -19
- package/dist/components/buttons/MenuButton/MenuButton.d.ts +1 -7
- package/dist/components/charts/shared/chart-colors.d.ts +1 -1
- package/dist/components/charts/shared/types.d.ts +1 -1
- package/dist/components/icons/Icon/generated-icon-data.d.ts +1 -1
- package/dist/components/navigation/Navbar/Navbar.d.ts +1 -1
- package/dist/components/navigation/SiteMenu/SiteMenu.d.ts +1 -5
- package/dist/components/navigation/SiteMenu/SiteMenuDropdown.d.ts +6 -9
- package/dist/components/navigation/UserMenu/UserMenu.d.ts +1 -5
- package/dist/components/navigation/WorkspaceSelector/WorkspaceSelector.d.ts +1 -5
- package/dist/components/notifications/NotificationsPopover/NotificationsPopover.d.ts +2 -7
- package/dist/css/component-css/pds-button-nav.css +1 -1
- package/dist/css/component-css/pds-dashboard-search.css +1 -1
- package/dist/css/component-css/pds-horizontal-empty-state.css +1 -1
- package/dist/css/component-css/pds-index.css +69 -12
- package/dist/css/component-css/pds-menu-button.css +4 -1
- package/dist/css/component-css/pds-nav-menu.css +1 -1
- package/dist/css/component-css/pds-navbar.css +4 -1
- package/dist/css/component-css/pds-notification-hub-icon.css +1 -1
- package/dist/css/component-css/pds-notifications-popover.css +13 -1
- package/dist/css/component-css/pds-pantheon-logo.css +1 -1
- package/dist/css/component-css/pds-status-checker.css +1 -0
- package/dist/css/component-css/pds-stepper.css +1 -1
- package/dist/css/component-css/pds-tab-menu.css +2 -2
- package/dist/css/component-css/pds-user-menu.css +29 -1
- package/dist/css/component-css/pds-vertical-stepper.css +1 -1
- package/dist/css/component-css/pds-workspace-selector.css +16 -1
- package/dist/css/design-tokens/variables.dark.css +50 -56
- package/dist/css/design-tokens/variables.light.css +50 -56
- package/dist/css/layout-css/pds-docs-layout.css +1 -1
- package/dist/css/layout-css/pds-index.css +1 -8
- package/dist/css/layout-css/pds-sidebar-layout.css +5 -0
- package/dist/css/pds-components.css +69 -12
- package/dist/css/pds-core.css +2 -2
- package/dist/css/pds-layouts.css +1 -8
- package/dist/index.css +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.js +6040 -5356
- package/dist/index.js.map +1 -1
- package/dist/index.source.d.ts +2 -7
- package/dist/layouts/DocsLayout/DocsLayout.d.ts +9 -7
- package/dist/layouts/SidebarLayout/SidebarLayout.d.ts +12 -3
- package/dist/libs/components/NavAccordion/NavAccordion.d.ts +27 -0
- package/dist/utilities/FlexContainer/FlexContainer.d.ts +1 -1
- package/dist/utilities/GlobalWrapper/GlobalWrapper.d.ts +21 -0
- package/package.json +35 -29
- package/dist/components/navigation/DashboardNav/DashboardNav.d.ts +0 -35
- package/dist/components/navigation/DashboardNav/DashboardNavItem.d.ts +0 -24
- package/dist/css/component-css/pds-dashboard-nav.css +0 -5
- package/dist/css/component-css/pds-refresh-checker.css +0 -1
- package/dist/css/layout-css/pds-dashboard-global.css +0 -8
- package/dist/css/layout-css/pds-dashboard-inner.css +0 -1
- package/dist/layouts/DashboardGlobal/DashboardGlobal.d.ts +0 -57
- package/dist/layouts/DashboardInner/DashboardInner.d.ts +0 -30
- package/dist/layouts/GlobalWrapper/GlobalWrapper.d.ts +0 -19
- package/dist/utilities/context-providers/ResponsiveContext/ResponsiveContext.d.ts +0 -6
package/dist/index.source.d.ts
CHANGED
|
@@ -67,8 +67,6 @@ export * from './components/media/VideoEmbed/VideoEmbed';
|
|
|
67
67
|
export * from './components/Modal/Modal';
|
|
68
68
|
export * from './components/navigation/Breadcrumb/Breadcrumb';
|
|
69
69
|
export * from './components/navigation/ButtonNav/ButtonNav';
|
|
70
|
-
export * from './components/navigation/DashboardNav/DashboardNav';
|
|
71
|
-
export * from './components/navigation/DashboardNav/DashboardNavItem';
|
|
72
70
|
export * from './components/navigation/DashboardSearch/DashboardSearch';
|
|
73
71
|
export * from './components/navigation/DropdownMenu/DropdownMenu';
|
|
74
72
|
export * from './components/navigation/Navbar/Navbar';
|
|
@@ -101,10 +99,10 @@ export * from './components/Popover/Popover';
|
|
|
101
99
|
export * from './components/progress-indicators/ProgressBar/ProgressBar';
|
|
102
100
|
export * from './components/progress-indicators/ProgressRing/ProgressRing';
|
|
103
101
|
export * from './components/PullQuote/PullQuote';
|
|
104
|
-
export * from './components/RefreshChecker/RefreshChecker';
|
|
105
102
|
export * from './components/SiteDashboardHeading/SiteDashboardHeading';
|
|
106
103
|
export * from './components/Skiplink/Skiplink';
|
|
107
104
|
export * from './components/SocialLinks/SocialLinks';
|
|
105
|
+
export * from './components/StatusChecker/StatusChecker';
|
|
108
106
|
export * from './components/StatusIndicator/StatusIndicator';
|
|
109
107
|
export * from './components/steppers/Stepper/Stepper';
|
|
110
108
|
export * from './components/steppers/VerticalStepper/VerticalStepper';
|
|
@@ -119,21 +117,18 @@ export * from './components/tiles/TileGrid/TileGrid';
|
|
|
119
117
|
export * from './components/Tooltip/Tooltip';
|
|
120
118
|
export * from './libs/components/SiteOptionDisplay/SiteOptionDisplay';
|
|
121
119
|
export * from './layouts/AppLayout/AppLayout';
|
|
122
|
-
export * from './layouts/DashboardGlobal/DashboardGlobal';
|
|
123
|
-
export * from './layouts/DashboardInner/DashboardInner';
|
|
124
120
|
export * from './layouts/DocsLayout/DocsLayout';
|
|
125
|
-
export * from './layouts/GlobalWrapper/GlobalWrapper';
|
|
126
121
|
export * from './layouts/SidebarLayout/SidebarLayout';
|
|
127
122
|
export * from './layouts/StepperLayout/StepperLayout';
|
|
128
123
|
export * from './layouts/ThreeItemLayout/ThreeItemLayout';
|
|
129
124
|
export * from './layouts/TwoItemLayout/TwoItemLayout';
|
|
130
125
|
export * from './utilities/Container/Container';
|
|
131
126
|
export * from './utilities/FlexContainer/FlexContainer';
|
|
127
|
+
export * from './utilities/GlobalWrapper/GlobalWrapper';
|
|
132
128
|
export * from './libs/types/custom-types';
|
|
133
129
|
export * from './libs/types/input-types';
|
|
134
130
|
export * from './libs/types/layout-types';
|
|
135
131
|
export * from './libs/types/navigation-types';
|
|
136
|
-
export * from './utilities/context-providers/ResponsiveContext/ResponsiveContext';
|
|
137
132
|
export * from './utilities/hooks/useBreakpoint/useBreakpoint';
|
|
138
133
|
export * from './utilities/hooks/useClipboard/useClipboard';
|
|
139
134
|
export * from './utilities/hooks/useDropdown';
|
|
@@ -13,18 +13,20 @@ interface DocsLayoutProps extends ComponentPropsWithoutRef<'div'> {
|
|
|
13
13
|
*/
|
|
14
14
|
className?: string;
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
* This is also the min-width of the sidebar when it is not collapsable (hasSidebarToggle is false).
|
|
16
|
+
* Width of the sidebar as a percentage.
|
|
18
17
|
*/
|
|
19
|
-
|
|
18
|
+
sidebarWidth?: string;
|
|
20
19
|
/**
|
|
21
|
-
*
|
|
22
|
-
* This is also the width of the sidebar when it is not collapsable (hasSidebarToggle is false).
|
|
20
|
+
* Maximum width of the sidebar in rems. Prevents the sidebar from growing too wide on large screens.
|
|
23
21
|
*/
|
|
24
|
-
|
|
22
|
+
sidebarWidthMax?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Minimum width of the sidebar in rems. Ensures the sidebar remains usable on medium-sized screens.
|
|
25
|
+
*/
|
|
26
|
+
sidebarWidthMin?: number;
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
27
29
|
* DocsLayout UI component
|
|
28
30
|
*/
|
|
29
|
-
export declare const DocsLayout: ({ children, className,
|
|
31
|
+
export declare const DocsLayout: ({ children, className, sidebarWidth, sidebarWidthMax, sidebarWidthMin, style, ...props }: DocsLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
30
32
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
2
|
import { GridGapOptions } from '../../libs/types/layout-types';
|
|
3
|
+
import './sidebar-layout.css';
|
|
3
4
|
/**
|
|
4
5
|
* Prop types for SidebarLayout
|
|
5
6
|
*/
|
|
@@ -26,12 +27,20 @@ interface SidebarLayoutProps extends ComponentPropsWithoutRef<'div'> {
|
|
|
26
27
|
*/
|
|
27
28
|
sidebarMobileLocation?: 'before' | 'after';
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
+
* Width of the sidebar as a percentage (e.g. `'33%'`).
|
|
30
31
|
*/
|
|
31
|
-
sidebarWidth?:
|
|
32
|
+
sidebarWidth?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Maximum width of the sidebar in rems. Prevents the sidebar from growing too wide on large screens.
|
|
35
|
+
*/
|
|
36
|
+
sidebarWidthMax?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Minimum width of the sidebar in rems. Ensures the sidebar remains usable on medium-sized screens.
|
|
39
|
+
*/
|
|
40
|
+
sidebarWidthMin?: number;
|
|
32
41
|
}
|
|
33
42
|
/**
|
|
34
43
|
* SidebarLayout UI component
|
|
35
44
|
*/
|
|
36
|
-
export declare const SidebarLayout: ({ children, className, gridGap, sidebarLocation, sidebarMobileLocation, sidebarWidth, ...props }: SidebarLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
export declare const SidebarLayout: ({ children, className, gridGap, sidebarLocation, sidebarMobileLocation, sidebarWidth, sidebarWidthMax, sidebarWidthMin, ...props }: SidebarLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
37
46
|
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import './nav-accordion.css';
|
|
3
|
+
interface NavAccordionProps {
|
|
4
|
+
/**
|
|
5
|
+
* Expandable content shown when open.
|
|
6
|
+
*/
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Additional class names.
|
|
10
|
+
*/
|
|
11
|
+
className?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Disables the toggle button.
|
|
14
|
+
*/
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Content of the toggle button — any ReactNode.
|
|
18
|
+
*/
|
|
19
|
+
label: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Internal accordion component for the mobile navbar panel.
|
|
23
|
+
* Renders a toggle button with a rotating chevron and expandable content.
|
|
24
|
+
* Used by MenuButton, UserMenu, WorkspaceSelector, and NotificationsPopover.
|
|
25
|
+
*/
|
|
26
|
+
export declare const NavAccordion: ({ children, className, disabled, label, }: NavAccordionProps) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export {};
|
|
@@ -68,5 +68,5 @@ interface FlexContainerProps extends ComponentPropsWithoutRef<'div'> {
|
|
|
68
68
|
/**
|
|
69
69
|
* Flex Container UI component
|
|
70
70
|
*/
|
|
71
|
-
export declare const FlexContainer: ({ alignContent, alignItems, children, className, flexDirection, flexWrap, gap, justifyContent, mobileAlignContent, mobileAlignItems, mobileFlexDirection, mobileFlexWrap, mobileGap, mobileJustifyContent, ...props }: FlexContainerProps) => import("react/jsx-runtime").JSX.Element;
|
|
71
|
+
export declare const FlexContainer: ({ alignContent, alignItems, children, className, flexDirection, flexWrap, gap, justifyContent, mobileAlignContent, mobileAlignItems, mobileFlexDirection, mobileFlexWrap, mobileGap, mobileJustifyContent, style, ...props }: FlexContainerProps) => import("react/jsx-runtime").JSX.Element;
|
|
72
72
|
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Prop types for GlobalWrapper
|
|
4
|
+
*/
|
|
5
|
+
interface GlobalWrapperProps {
|
|
6
|
+
/**
|
|
7
|
+
* Child components
|
|
8
|
+
*/
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Maximum viewport width in pixels at which mobile nav mode is active.
|
|
12
|
+
* Sets the `data-pds-mobile` attribute on `:root` for CSS to react to.
|
|
13
|
+
* Defaults to 767 to align with `--pds-bp-s-only` (`max-width: 767px`).
|
|
14
|
+
*/
|
|
15
|
+
mobileMaxWidth?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* GlobalWrapper wrapper component.
|
|
19
|
+
*/
|
|
20
|
+
export declare const GlobalWrapper: ({ children, mobileMaxWidth, }: GlobalWrapperProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pantheon-systems/pds-toolkit-react",
|
|
3
3
|
"technology": "React",
|
|
4
|
-
"version": "2.0.0-alpha.
|
|
4
|
+
"version": "2.0.0-alpha.20",
|
|
5
5
|
"description": "PDS toolkit built using the React framework",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public",
|
|
@@ -95,61 +95,61 @@
|
|
|
95
95
|
},
|
|
96
96
|
"devDependencies": {
|
|
97
97
|
"@arethetypeswrong/cli": "^0.15.3",
|
|
98
|
-
"@axe-core/playwright": "^4.11.
|
|
99
|
-
"@babel/preset-env": "^7.
|
|
98
|
+
"@axe-core/playwright": "^4.11.3",
|
|
99
|
+
"@babel/preset-env": "^7.29.5",
|
|
100
100
|
"@babel/preset-react": "^7.18.6",
|
|
101
101
|
"@babel/preset-typescript": "^7.28.5",
|
|
102
102
|
"@csstools/postcss-design-tokens": "^2.0.4",
|
|
103
103
|
"@csstools/postcss-global-data": "^1.0.3",
|
|
104
|
-
"@playwright/test": "
|
|
105
|
-
"@storybook/addon-a11y": "^10.
|
|
106
|
-
"@storybook/addon-docs": "^10.
|
|
107
|
-
"@storybook/addon-links": "^10.
|
|
108
|
-
"@storybook/addon-mcp": "^0.
|
|
109
|
-
"@storybook/addon-webpack5-compiler-swc": "^4.0.
|
|
110
|
-
"@storybook/react-vite": "^10.
|
|
111
|
-
"@storybook/react-webpack5": "^10.
|
|
112
|
-
"@types/prismjs": "^1.26.
|
|
113
|
-
"@types/react": "^19.2.
|
|
114
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
115
|
-
"@typescript-eslint/parser": "^8.
|
|
104
|
+
"@playwright/test": "1.56.1",
|
|
105
|
+
"@storybook/addon-a11y": "^10.4.0",
|
|
106
|
+
"@storybook/addon-docs": "^10.4.0",
|
|
107
|
+
"@storybook/addon-links": "^10.4.0",
|
|
108
|
+
"@storybook/addon-mcp": "^0.6.0",
|
|
109
|
+
"@storybook/addon-webpack5-compiler-swc": "^4.0.3",
|
|
110
|
+
"@storybook/react-vite": "^10.4.0",
|
|
111
|
+
"@storybook/react-webpack5": "^10.4.0",
|
|
112
|
+
"@types/prismjs": "^1.26.6",
|
|
113
|
+
"@types/react": "^19.2.14",
|
|
114
|
+
"@typescript-eslint/eslint-plugin": "^8.59.3",
|
|
115
|
+
"@typescript-eslint/parser": "^8.59.3",
|
|
116
116
|
"@vitejs/plugin-react": "^4.3.0",
|
|
117
117
|
"@vueless/storybook-dark-mode": "^9.0.9",
|
|
118
118
|
"axe-html-reporter": "^2.2.3",
|
|
119
119
|
"chromatic": "^13.3.4",
|
|
120
120
|
"concurrently": "^8.0.1",
|
|
121
121
|
"cssnano": "^6.0.1",
|
|
122
|
-
"eslint": "^9.
|
|
122
|
+
"eslint": "^9.39.4",
|
|
123
123
|
"eslint-config-prettier": "^9.1.0",
|
|
124
124
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
125
125
|
"eslint-plugin-import": "^2.32.0",
|
|
126
|
-
"eslint-plugin-prettier": "^5.
|
|
126
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
127
127
|
"eslint-plugin-react": "^7.32.2",
|
|
128
128
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
129
129
|
"eslint-plugin-sort-destructure-keys": "^2.0.0",
|
|
130
|
-
"eslint-plugin-storybook": "^10.
|
|
130
|
+
"eslint-plugin-storybook": "^10.4.0",
|
|
131
131
|
"eslint-plugin-typescript-sort-keys": "^3.3.0",
|
|
132
132
|
"fast-glob": "^3.3.2",
|
|
133
133
|
"husky": "^8.0.3",
|
|
134
134
|
"lint-staged": "^13.2.3",
|
|
135
135
|
"pino-pretty": "^13.1.3",
|
|
136
136
|
"plop": "^3.1.2",
|
|
137
|
-
"postcss": "^8.
|
|
137
|
+
"postcss": "^8.5.14",
|
|
138
138
|
"postcss-cli": "^10.1.0",
|
|
139
139
|
"postcss-custom-media": "^9.1.3",
|
|
140
140
|
"postcss-import": "^15.1.0",
|
|
141
141
|
"postcss-insert": "^1.0.0",
|
|
142
|
-
"postcss-loader": "^8.
|
|
142
|
+
"postcss-loader": "^8.2.1",
|
|
143
143
|
"postcss-nested": "^6.0.1",
|
|
144
|
-
"prettier": "3.
|
|
145
|
-
"prettier-plugin-css-order": "^2.
|
|
144
|
+
"prettier": "^3.8.3",
|
|
145
|
+
"prettier-plugin-css-order": "^2.2.0",
|
|
146
146
|
"react": "^18.2.0",
|
|
147
147
|
"react-dom": "^18.2.0",
|
|
148
148
|
"react-router-dom": "^6.13.0",
|
|
149
|
-
"storybook": "^10.
|
|
150
|
-
"tsc-alias": "^1.8.
|
|
149
|
+
"storybook": "^10.4.0",
|
|
150
|
+
"tsc-alias": "^1.8.17",
|
|
151
151
|
"typescript": "^5.4.5",
|
|
152
|
-
"vite": "^7.
|
|
152
|
+
"vite": "^7.3.3",
|
|
153
153
|
"vite-plugin-lib-inject-css": "^2.1.1",
|
|
154
154
|
"vite-tsconfig-paths": "^4.3.2"
|
|
155
155
|
},
|
|
@@ -160,12 +160,12 @@
|
|
|
160
160
|
"dependencies": {
|
|
161
161
|
"@floating-ui/react": "^0.24.3",
|
|
162
162
|
"@floating-ui/react-dom": "~1.3.0",
|
|
163
|
-
"@pantheon-systems/pds-design-tokens": "^2.0.0-alpha.
|
|
163
|
+
"@pantheon-systems/pds-design-tokens": "^2.0.0-alpha.38",
|
|
164
164
|
"@reactuses/core": "^5.0.15",
|
|
165
165
|
"date-fns": "^4.1.0",
|
|
166
|
-
"downshift": "^9.
|
|
167
|
-
"express": "^4.22.
|
|
168
|
-
"express-rate-limit": "^8.2
|
|
166
|
+
"downshift": "^9.3.2",
|
|
167
|
+
"express": "^4.22.2",
|
|
168
|
+
"express-rate-limit": "^8.5.2",
|
|
169
169
|
"focus-trap-react": "^10.2.1",
|
|
170
170
|
"hash-sum": "^2.0.0",
|
|
171
171
|
"modern-normalize": "^3.0.1",
|
|
@@ -185,6 +185,12 @@
|
|
|
185
185
|
"@fortawesome/pro-regular-svg-icons": "^7.2.0",
|
|
186
186
|
"@fortawesome/pro-solid-svg-icons": "^7.2.0"
|
|
187
187
|
},
|
|
188
|
+
"overrides": {
|
|
189
|
+
"@babel/plugin-transform-modules-systemjs": "^7.29.4",
|
|
190
|
+
"fast-uri": "^3.1.2",
|
|
191
|
+
"hono": "^4.12.18",
|
|
192
|
+
"ip-address": "^10.1.1"
|
|
193
|
+
},
|
|
188
194
|
"lint-staged": {
|
|
189
195
|
"*": "prettier --write --ignore-unknown",
|
|
190
196
|
"src/**/*.{js,jsx,ts,tsx}": "npm run eslint -- --fix"
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
-
import { DashboardNavItemProps } from './DashboardNavItem';
|
|
3
|
-
import './dashboard-nav.css';
|
|
4
|
-
/**
|
|
5
|
-
* Prop types for DashboardNav
|
|
6
|
-
*/
|
|
7
|
-
export interface DashboardNavProps extends ComponentPropsWithoutRef<'nav'> {
|
|
8
|
-
/**
|
|
9
|
-
* Aria label for the navigation.
|
|
10
|
-
*/
|
|
11
|
-
ariaLabel: string;
|
|
12
|
-
/**
|
|
13
|
-
* Additional class names
|
|
14
|
-
*/
|
|
15
|
-
className?: string;
|
|
16
|
-
/**
|
|
17
|
-
* Labels for translatable strings.
|
|
18
|
-
*/
|
|
19
|
-
labels?: {
|
|
20
|
-
submenu: string;
|
|
21
|
-
toggle: string;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Menu items to render.
|
|
25
|
-
*/
|
|
26
|
-
menuItems: DashboardNavItemProps[];
|
|
27
|
-
/**
|
|
28
|
-
* Text to display in the mobile menu trigger button when no active link is found.
|
|
29
|
-
*/
|
|
30
|
-
mobileMenuSelectTextFallback?: string;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* DashboardNav UI component
|
|
34
|
-
*/
|
|
35
|
-
export declare const DashboardNav: ({ ariaLabel, className, labels, menuItems, mobileMenuSelectTextFallback, ...props }: DashboardNavProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { NavigationItem } from '../../../libs/types/navigation-types';
|
|
2
|
-
import { PDSIcon } from '../../icons/Icon/Icon';
|
|
3
|
-
import './dashboard-nav.css';
|
|
4
|
-
export interface DashboardNavItemProps extends NavigationItem {
|
|
5
|
-
/**
|
|
6
|
-
* Icon to display next to the link content.
|
|
7
|
-
*/
|
|
8
|
-
icon?: PDSIcon;
|
|
9
|
-
/**
|
|
10
|
-
* Flag indicating whether the sidebar is expanded.
|
|
11
|
-
*/
|
|
12
|
-
isSidebarExpanded?: boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Labels for translatable strings.
|
|
15
|
-
*/
|
|
16
|
-
labels?: {
|
|
17
|
-
submenu: string;
|
|
18
|
-
toggle: string;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* DashboardNavItem UI component
|
|
23
|
-
*/
|
|
24
|
-
export declare const DashboardNavItem: ({ icon, isActive, isSidebarExpanded, labels, linkContent, links, }: DashboardNavItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
.pds-dashboard-nav{--dashboard-nav-icon-width:var(--pds-spacing-xl);--dashboard-nav-space-after-icon:var(--pds-spacing-s);--dashboard-nav-foreground-color:var(
|
|
2
|
-
--pds-color-dashboard-nav-item-foreground-default
|
|
3
|
-
);--dashboard-nav-outline-color:var(--pds-color-interactive-focus);font-family:var(--pds-typography-ff-default)}.pds-dashboard-nav,.pds-dashboard-nav a{color:var(--dashboard-nav-foreground-color)}.pds-dashboard-nav a{text-decoration:none}.pds-dashboard-nav a:focus{box-shadow:none;outline:none}.pds-dashboard-nav a:hover{color:var(--dashboard-nav-foreground-color)}.pds-dashboard-nav a:focus-visible,.pds-dashboard-nav button:focus-visible{border-radius:var(--pds-border-radius-container);outline:var(--pds-border-width-outline) solid var(--dashboard-nav-outline-color);outline-offset:-1px}.pds-dashboard-nav .pds-icon{pointer-events:none}.pds-dashboard-nav__logo{box-sizing:content-box;margin-block-end:var(--pds-spacing-xl);margin-block-start:var(--pds-spacing-4xs);padding-inline:calc(var(--pds-spacing-dashboard-nav-item-padding) + .1875rem)}.pds-dashboard-nav__menu{display:flex;flex-direction:column;list-style-type:none;margin:0;padding:0;row-gap:var(--pds-spacing-s)}.pds-dashboard-nav__menu.pds-dashboard-nav__menu--top-level{row-gap:var(--pds-spacing-m)}.pds-dashboard-nav__item{list-style-type:none;margin-bottom:0}.pds-dashboard-nav__item--top-level.pds-dashboard-nav__item--active .pds-dashboard-nav__item-wrapper{--dashboard-nav-foreground-color:var(
|
|
4
|
-
--pds-color-dashboard-nav-item-foreground-active
|
|
5
|
-
);--dashboard-nav-outline-color:var(--pds-color-brand-primary-default);background-color:var(--pds-color-dashboard-nav-item-background-active)}.pds-dashboard-nav__item--top-level.pds-dashboard-nav__item--active .pds-dashboard-nav__item-wrapper:hover{background-color:var(--pds-color-dashboard-nav-item-background-active)}.pds-dashboard-nav__item--top-level .pds-dashboard-nav__item-wrapper{align-items:center;border-radius:var(--pds-border-radius-container);display:flex;height:var(--pds-spacing-dashboard-nav-item-height);justify-content:space-between;width:100%}.pds-dashboard-nav__item--top-level .pds-dashboard-nav__item-wrapper:hover{background-color:var(--pds-color-dashboard-nav-item-background-hover);transition:var(--pds-animation-transition-button)}.pds-dashboard-nav__item--top-level .pds-dashboard-nav__item-wrapper a{border-radius:var(--pds-border-radius-container);padding-inline:var(--pds-spacing-dashboard-nav-item-padding);width:100%}.pds-dashboard-nav__item--top-level .pds-dashboard-nav__item-inner,.pds-dashboard-nav__link-icon{align-items:center;display:flex}.pds-dashboard-nav__link-icon{flex-grow:0;flex-shrink:0;height:var(--pds-spacing-dashboard-nav-item-height);justify-content:center;margin-inline-end:var(--dashboard-nav-space-after-icon);width:var(--dashboard-nav-icon-width)}.pds-dashboard-nav__link-icon .pds-icon--house,.pds-dashboard-nav__link-icon .pds-icon--robot{margin-block-start:-.125rem}.pds-dashboard-nav__menu--second-level{color:var(--pds-color-dashboard-nav-item-foreground-default);display:none;margin-block-start:var(--pds-spacing-s);padding-inline-start:calc(var(--pds-spacing-dashboard-nav-item-padding) + var(--dashboard-nav-icon-width) + var(--dashboard-nav-space-after-icon))}.pds-dashboard-nav__menu--second-level.pds-dashboard-nav__menu--expanded{display:flex;row-gap:var(--pds-spacing-s)}.pds-dashboard-nav__item.pds-dashboard-nav__item--second-level{font-size:var(--pds-typography-size-s)}.pds-dashboard-nav__item.pds-dashboard-nav__item--second-level.pds-dashboard-nav__item--active a{color:var(--pds-color-nav-item-default-foreground-hover);font-weight:var(--pds-typography-fw-semibold)}.pds-dashboard-nav__item.pds-dashboard-nav__item--second-level a:hover{color:var(--pds-color-nav-item-default-foreground-hover)}.pds-dashboard-nav__item.pds-dashboard-nav__item--second-level a:focus-visible{border-radius:var(--pds-border-radius-container);outline:var(--pds-border-width-outline) solid var(--pds-color-interactive-focus);transition:var(--pds-animation-transition-focus)}.pds-dashboard-nav__toggle{align-items:center;background-color:transparent;border:none;border-radius:var(--pds-border-radius-container);color:var(--dashboard-nav-foreground-color);cursor:pointer;display:flex;height:var(--pds-spacing-dashboard-nav-item-height);justify-content:flex-end;padding-inline:var(--pds-spacing-dashboard-nav-item-padding)}.pds-dashboard-nav__toggle .pds-icon{padding-inline:.125rem;transform:rotate(0deg);transition:var(--pds-animation-transition-rotation)}.pds-dashboard-nav__toggle--expanded .pds-icon{transform:rotate(180deg);transition:var(--pds-animation-transition-rotation)}.pds-dashboard-nav__link-label{opacity:1;transition:opacity .1s ease-in-out}.pds-dashboard-nav--collapsed .pds-dashboard-nav__logo svg{width:1.25rem}.pds-dashboard-nav--collapsed .pds-dashboard-nav__link-label{opacity:0;transition:opacity .1s ease-in-out}.pds-dashboard-nav--collapsed .pds-dashboard-nav__menu--second-level.pds-dashboard-nav__menu--expanded{display:none}.pds-dashboard-nav__item--top-level.pds-dashboard-nav__item--collapsed .pds-dashboard-nav__item-wrapper a{width:2.875rem}.pds-dashboard-nav__flyout{background-color:var(--pds-color-dropdown-background);border-radius:var(--pds-border-radius-container);box-shadow:var(--pds-elevation-overlay);max-width:30rem;padding:var(--pds-spacing-s);width:max-content;z-index:var(--pds-z-index-dropdown)}.pds-dashboard-nav__flyout-heading{color:var(--pds-color-dropdown-heading);font-family:var(--pds-typography-ff-default);font-size:var(--pds-typography-size-s);font-weight:var(--pds-typography-fw-regular);line-height:var(--pds-typography-lh-s);padding:var(--pds-spacing-s) var(--pds-spacing-s)}.pds-dashboard-nav__menu--second-level-flyout{row-gap:0}.pds-dashboard-nav__item--second-level-flyout{background-color:var(--pds-color-dropdown-background);color:var(--pds-color-dropdown-foreground);font-size:var(--pds-typography-size-m);line-height:var(--pds-typography-lh-s);margin:0}.pds-dashboard-nav__item--second-level-flyout a{border-radius:var(--pds-border-radius-container);cursor:pointer;display:block;padding:var(--pds-spacing-s) var(--pds-spacing-s)}.pds-dashboard-nav__item--second-level-flyout a:hover{background-color:var(--pds-color-dropdown-item-background-hover)}.pds-dashboard-nav__item--second-level-flyout.pds-dashboard-nav__item--active a{color:var(--pds-color-nav-item-default-foreground-active);font-weight:var(--pds-typography-fw-semibold)}.pds-dashboard-nav__item--second-level-flyout a:focus-visible{border-radius:var(--pds-border-radius-container);outline:var(--pds-border-width-outline) solid var(--pds-color-interactive-focus);transition:var(--pds-animation-transition-focus)}.pds-dashboard-nav .pds-tooltip__container{padding:var(--pds-spacing-3xs) var(--pds-spacing-xs)}.pds-dashboard-nav .pds-dropdown-menu .pds-dashboard-nav__item-inner{align-items:center;display:flex}.pds-dashboard-nav .pds-dropdown-menu__trigger{padding-inline:calc(var(--pds-spacing-dashboard-nav-item-padding) - .25rem)}.pds-dashboard-nav .pds-dropdown-menu__item a{padding-block:var(--pds-spacing-2xs);padding-inline:var(--pds-spacing-dashboard-nav-item-padding);width:100%}.pds-dashboard-nav .pds-dropdown-menu__item--second-level{padding-block:var(--pds-spacing-3xs);padding-inline-start:calc(var(--dashboard-nav-icon-width) + var(--dashboard-nav-space-after-icon) + .0625rem)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.pds-refresh-checker{display:flex}.pds-refresh-checker__button{align-items:center;background-color:transparent;border:0;color:var(--pds-color-fg-default-secondary);cursor:pointer;display:flex;font-family:var(--pds-typography-ff-default);font-size:var(--pds-typography-size-s);font-weight:var(--pds-typography-fw-regular);gap:var(--pds-spacing-xs);height:var(--pds-spacing-button-height-m)}.pds-refresh-checker__button:hover .pds-refresh-checker__icon,.pds-refresh-checker__button:hover .pds-refresh-checker__label{color:var(--pds-color-interactive-link-hover)}.pds-refresh-checker__button .pds-refresh-checker__icon{color:var(--pds-color-fg-default)}.pds-refresh-checker__button .pds-tooltip .pds-refresh-checker__tooltip-icon{align-items:center;display:flex}.pds-refresh-checker__button--spinning{cursor:not-allowed}.pds-refresh-checker__icon--spinning{animation:pds-refresh-checker__icon--spin 1s linear infinite}@keyframes pds-refresh-checker__icon--spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.pds-refresh-checker--left{justify-content:flex-start}.pds-refresh-checker--left .pds-tooltip{padding-inline-end:var(--pds-spacing-4xs)}.pds-refresh-checker--right{justify-content:flex-end}.pds-refresh-checker--right .pds-tooltip{padding-inline-start:var(--pds-spacing-4xs)}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
.pds-dashboard-global{--dashboard-toggle-icon-size:1.5rem;--dashboard-toggle-trigger-size:3rem;--dashboard-toggle-top-position:5rem;--dashboard-navbar-inline-padding:var(--pds-spacing-2xl);display:flex;min-height:100vh;overflow:hidden;position:relative}@media (min-width:768px){.pds-dashboard-global .pds-workspace-selector{margin-inline-start:-1.25rem}}.pds-dashboard-global .pds-pantheon-logo:not(.pds-pantheon-logo--icon){width:10rem}.pds-dashboard-global--notMobile{background-color:var(--pds-color-dashboard-nav-background)}.pds-dashboard-global--notMobile .pds-dashboard-global__header{max-width:calc(var(--pds-container-dashboard-navbar-max-width) + var(--dashboard-navbar-inline-padding)*2)}.pds-dashboard-global--notMobile .pds-dashboard-global__sidebar-toggle-button{background-color:transparent;border:none;height:calc(100% - var(--dashboard-toggle-top-position));position:absolute;right:calc(var(--dashboard-toggle-trigger-size)*-.5);top:var(--dashboard-toggle-top-position);width:var(--dashboard-toggle-trigger-size);z-index:2}.pds-dashboard-global--notMobile .pds-dashboard-global__sidebar-toggle-button:focus-visible{outline:none}.pds-dashboard-global--notMobile .pds-dashboard-global__sidebar-toggle-button:focus-visible>.pds-dashboard-global__sidebar-toggle-icon{opacity:1;outline:var(--pds-border-width-default) solid var(--pds-color-interactive-focus);outline-offset:2px}.pds-dashboard-global--notMobile .pds-dashboard-global__sidebar-toggle-button:hover>.pds-dashboard-global__sidebar-toggle-icon{opacity:1;transition:opacity .1s ease-in-out;transition-delay:.1s}.pds-dashboard-global--notMobile .pds-dashboard-global__sidebar-toggle-icon{align-items:center;background-color:var(--pds-color-dashboard-toggle-button-background);border:none;border-radius:50%;color:var(--pds-color-dashboard-toggle-button-foreground);display:flex;height:var(--dashboard-toggle-icon-size);justify-content:center;opacity:0;position:absolute;right:25%;top:2rem;transition:var(--pds-animation-transition-rotation);width:var(--dashboard-toggle-icon-size);z-index:2}.pds-dashboard-global--notMobile .pds-dashboard-global__sidebar-toggle-button[aria-expanded=false]
|
|
2
|
-
.pds-dashboard-global__sidebar-toggle-icon{transform:rotate(180deg);transition:var(--pds-animation-transition-rotation)}.pds-dashboard-global--notMobile .pds-dashboard-global__sidebar{box-sizing:content-box;padding-block-end:var(--pds-spacing-m);padding-block-start:.75rem;padding-inline-end:var(--pds-spacing-xl);padding-inline-start:calc(var(--pds-spacing-xl) + var(--pds-spacing-dashboard-nav-item-padding));position:relative}.pds-dashboard-global--notMobile .pds-dashboard-global__sidebar-inner{height:100%;margin-inline-start:-.75rem;overflow-x:hidden}.pds-dashboard-global--notMobile .pds-dashboard-global__right{display:flex;flex-direction:column}.pds-dashboard-global--notMobile .pds-navbar__inner{padding-inline-end:var(--pds-spacing-2xl)}.pds-dashboard-global--notMobile .pds-dashboard-global__inner{background-color:var(--pds-color-bg-default);border-top-left-radius:1.25rem;box-shadow:var(--pds-elevation-dashboard);display:flex;flex:1;flex-direction:column;position:relative}.pds-dashboard-global--notMobile .pds-dashboard-global__main{flex:1;padding-block:var(--pds-spacing-2xl);padding-inline:var(--pds-spacing-2xl) calc(var(--pds-spacing-2xl) + .25rem)}.pds-dashboard-global--notMobile .pds-site-footer .pds-container{padding-inline:var(--pds-spacing-2xl)}.pds-dashboard-global__sidebar--collapsed
|
|
3
|
-
.pds-dashboard-global__sidebar-toggle{opacity:1}.pds-dashboard-global--isMobile{display:flex;flex-direction:column}.pds-dashboard-global--isMobile .pds-dashboard-global__sidebar{padding-block:var(--pds-spacing-2xl);padding-inline:var(--pds-spacing-xl)}.pds-dashboard-global--isMobile .pds-dashboard-global__main{padding-block:var(--pds-spacing-s);padding-inline:var(--pds-spacing-xl)}.pds-dashboard-global--isMobile .pds-site-footer{padding-inline:var(--pds-spacing-3xs)}.pds-dashboard-global--isAdmin{--pds-color-dashboard-nav-background:var(
|
|
4
|
-
--pds-color-dashboard-nav-background-admin
|
|
5
|
-
)}.pds-dashboard-global--isAdmin .pds-dashboard-nav__item--top-level .pds-dashboard-nav__item-wrapper:hover,.pds-dashboard-global--isAdmin button.pds-icon-button:hover:enabled{background-color:var(
|
|
6
|
-
--pds-color-dashboard-nav-item-background-hover-admin
|
|
7
|
-
)}.pds-dashboard-global--isAdmin .pds-dashboard-nav__item--top-level.pds-dashboard-nav__item--active
|
|
8
|
-
.pds-dashboard-nav__item-wrapper:hover{background-color:var(--pds-color-dashboard-nav-item-background-active)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.pds-dashboard-inner{max-width:var(--pds-container-dashboard-navbar-max-width)}.pds-dashboard-inner__header{column-gap:var(--pds-spacing-2xl);display:flex;flex-wrap:wrap;justify-content:space-between;margin-block-end:var(--pds-spacing-xl);row-gap:var(--pds-spacing-xl)}.pds-dashboard-inner__content-wrapper{display:flex;flex-direction:column;row-gap:var(--pds-spacing-2xl);width:100%}.pds-dashboard-inner__content--with-spacing>:nth-last-child(2){margin-block-end:var(--pds-spacing-2xl)}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import React, { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
-
export declare const DashboardContext: React.Context<any>;
|
|
3
|
-
import './dashboard-global.css';
|
|
4
|
-
/**
|
|
5
|
-
* Prop types for DashboardGlobal
|
|
6
|
-
*/
|
|
7
|
-
interface DashboardGlobalProps extends ComponentPropsWithoutRef<'div'> {
|
|
8
|
-
/**
|
|
9
|
-
* Child elements to be assigned to named slots.
|
|
10
|
-
*/
|
|
11
|
-
children: ReactNode;
|
|
12
|
-
/**
|
|
13
|
-
* Additional class names. Will be merged with existing component root classes.
|
|
14
|
-
*/
|
|
15
|
-
className?: string;
|
|
16
|
-
/**
|
|
17
|
-
* Whether to include a sidebar toggle button.
|
|
18
|
-
*/
|
|
19
|
-
hasSidebarToggle?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Is the dashboard in admin mode?
|
|
22
|
-
*/
|
|
23
|
-
isAdmin?: boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Is the sidebar expanded?
|
|
26
|
-
*/
|
|
27
|
-
isSidebarExpanded?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* A fully-formed link element using the router of your choice. The link text will be used as the aria-label. If the logo should not be a link, set to `null`.
|
|
30
|
-
*/
|
|
31
|
-
logoLinkContent?: ReactNode;
|
|
32
|
-
/**
|
|
33
|
-
* Function to set the sidebar expanded state.
|
|
34
|
-
*/
|
|
35
|
-
setIsSidebarExpanded?: (isOpen: boolean) => void;
|
|
36
|
-
/**
|
|
37
|
-
* Width of the sidebar when collapsed in rems. This should not need to be modified.
|
|
38
|
-
*/
|
|
39
|
-
sidebarCollapsedWidth?: number;
|
|
40
|
-
/**
|
|
41
|
-
* Width of the sidebar when expanded in rems. This should not need to be modified, unless slightly to accommodate longer top-level navigation items.
|
|
42
|
-
*/
|
|
43
|
-
sidebarExpandedWidth?: number;
|
|
44
|
-
/**
|
|
45
|
-
* Translatable string for sidebar toggle button.
|
|
46
|
-
*/
|
|
47
|
-
sidebarToggleLabel?: string;
|
|
48
|
-
/**
|
|
49
|
-
* Translatable string for skiplink.
|
|
50
|
-
*/
|
|
51
|
-
skiplinkText?: string;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* DashboardGlobal UI component
|
|
55
|
-
*/
|
|
56
|
-
export declare const DashboardGlobal: ({ children, className, hasSidebarToggle, isAdmin, isSidebarExpanded, logoLinkContent, setIsSidebarExpanded, sidebarCollapsedWidth, sidebarExpandedWidth, sidebarToggleLabel, skiplinkText, ...props }: DashboardGlobalProps) => import("react/jsx-runtime").JSX.Element;
|
|
57
|
-
export {};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
2
|
-
import './dashboard-inner.css';
|
|
3
|
-
/**
|
|
4
|
-
* Prop types for DashboardInner
|
|
5
|
-
*/
|
|
6
|
-
interface DashboardInnerProps extends ComponentPropsWithoutRef<'div'> {
|
|
7
|
-
/**
|
|
8
|
-
* Child elements. Main content can be passed without a slot attribute (unslotted).
|
|
9
|
-
* Optional named slots: `header-left`, `header-right`, `content` (for backwards compatibility).
|
|
10
|
-
*/
|
|
11
|
-
children: ReactNode;
|
|
12
|
-
/**
|
|
13
|
-
* Additional class names
|
|
14
|
-
*/
|
|
15
|
-
className?: string;
|
|
16
|
-
/**
|
|
17
|
-
* Whether to apply bottom spacing to the second-to-last content child.
|
|
18
|
-
* This prop provides flexibility for different dashboard layouts:
|
|
19
|
-
* - When true: Adds consistent spacing between content sections while preventing
|
|
20
|
-
* unnecessary spacing after the last element
|
|
21
|
-
* - When false: Removes all content spacing for layouts that require custom spacing
|
|
22
|
-
* @default false
|
|
23
|
-
*/
|
|
24
|
-
hasContentSpacing?: boolean;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* DashboardInner UI component
|
|
28
|
-
*/
|
|
29
|
-
export declare const DashboardInner: ({ children, className, hasContentSpacing, ...props }: DashboardInnerProps) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
export {};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* Prop types for GlobalWrapper
|
|
4
|
-
*/
|
|
5
|
-
interface GlobalWrapperProps {
|
|
6
|
-
/**
|
|
7
|
-
* Child components
|
|
8
|
-
*/
|
|
9
|
-
children: ReactNode;
|
|
10
|
-
/**
|
|
11
|
-
* Mobile menu will be enabled when viewport is at or below this number in pixels.
|
|
12
|
-
*/
|
|
13
|
-
mobileMenuMaxWidth?: number;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* GlobalWrapper wrapper component.
|
|
17
|
-
*/
|
|
18
|
-
export declare const GlobalWrapper: ({ children, mobileMenuMaxWidth, }: GlobalWrapperProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
-
export {};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export declare const ResponsiveContext: React.Context<any>;
|
|
3
|
-
export declare const ResponsiveContextProvider: ({ children, mobileMenuMaxWidth, }: {
|
|
4
|
-
children: any;
|
|
5
|
-
mobileMenuMaxWidth?: number;
|
|
6
|
-
}) => import("react/jsx-runtime").JSX.Element;
|