@patternfly/documentation-framework 6.0.0-alpha.9 → 6.0.0-alpha.91

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 (46) hide show
  1. package/CHANGELOG.md +1249 -0
  2. package/README.md +5 -76
  3. package/app.js +2 -5
  4. package/components/autoLinkHeader/autoLinkHeader.css +2 -2
  5. package/components/autoLinkHeader/autoLinkHeader.js +8 -19
  6. package/components/cssVariables/cssVariables.css +9 -11
  7. package/components/cssVariables/cssVariables.js +19 -32
  8. package/components/example/example.css +14 -58
  9. package/components/example/example.js +149 -78
  10. package/components/example/exampleToolbar.js +3 -2
  11. package/components/footer/RHLogoDark.png +0 -0
  12. package/components/footer/footer.css +31 -93
  13. package/components/footer/footer.js +139 -78
  14. package/components/gdprBanner/gdprBanner.css +0 -3
  15. package/components/gdprBanner/gdprBanner.js +22 -16
  16. package/components/inlineAlert/inlineAlert.js +1 -1
  17. package/components/link/link.js +23 -18
  18. package/components/propsTable/propsTable.js +14 -10
  19. package/components/sectionGallery/TextSummary.js +5 -5
  20. package/components/sectionGallery/sectionDataListLayout.js +87 -41
  21. package/components/sectionGallery/sectionGallery.css +6 -39
  22. package/components/sectionGallery/sectionGalleryLayout.js +73 -23
  23. package/components/sectionGallery/sectionGalleryToolbar.js +48 -12
  24. package/components/sideNav/sideNav.js +3 -4
  25. package/components/tableOfContents/tableOfContents.css +26 -35
  26. package/components/tableOfContents/tableOfContents.js +58 -28
  27. package/layouts/sideNavLayout/sideNavLayout.css +1 -36
  28. package/layouts/sideNavLayout/sideNavLayout.js +193 -103
  29. package/package.json +12 -19
  30. package/pages/404/404.css +2 -2
  31. package/pages/404/index.js +23 -36
  32. package/routes.js +3 -1
  33. package/scripts/md/anchor-header.js +1 -1
  34. package/scripts/md/parseMD.js +20 -18
  35. package/scripts/md/styled-tags.js +22 -14
  36. package/scripts/md/typecheck.js +1 -0
  37. package/scripts/webpack/prerender.js +2 -1
  38. package/scripts/webpack/webpack.base.config.js +7 -18
  39. package/scripts/writeScreenshots.js +2 -2
  40. package/templates/mdx.css +11 -288
  41. package/templates/mdx.js +40 -43
  42. package/templates/patternfly-docs/patternfly-docs.source.js +8 -8
  43. package/versions.json +42 -15
  44. package/components/sideNav/sideNav.css +0 -21
  45. package/pages/global-css-variables.md +0 -109
  46. package/pages/img/component-variable-mapping.png +0 -0
package/README.md CHANGED
@@ -16,53 +16,15 @@ We publish this theme [on npm.](https://www.npmjs.com/package/@patternfly/docume
16
16
 
17
17
  2. Provide or install the following either as dependencies if you want to use them in your own project, or as devDependencies:
18
18
  ```
19
- "@patternfly/patternfly": "^4.185.1",
20
- "@patternfly/react-core": "^4.202.16",
21
- "@patternfly/react-table": "^4.71.16",
22
- "@patternfly/react-code-editor": "^4.43.16",
19
+ "@patternfly/patternfly": "6.0.0-alpha.205",
20
+ "@patternfly/react-core": "6.0.0-alpha.94",
21
+ "@patternfly/react-table": "6.0.0-alpha.95",
22
+ "@patternfly/react-code-editor": "6.0.0-alpha.94",
23
23
  ```
24
24
  `yarn add -D @patternfly/patternfly @patternfly/react-core @patternfly/react-table @patternfly/react-code-editor`
25
25
 
26
- ### Resolutions
27
-
28
- This should not be needed, but if you encounter errors installing the above devDependencies, try adding one or more of these resolutions to your package.json file:
29
- ```
30
- "resolutions": {
31
- "@types/react": "^16.8.0",
32
- "@types/react-dom": "^16.8.0",
33
- "react": "16.8.0",
34
- "react-dom": "16.8.0",
35
- "chromedriver": "102.0.0",
36
- "node-sass": "7.0.1",
37
- "puppeteer": "14.3.0",
38
- "sharp": "0.30.6"
39
- }
40
- ```
41
-
42
26
  ## First time setup
43
27
 
44
- ### Puppeteer
45
-
46
- Puppeteer is used to create screenshots, it requires chromium to be installed on your machine
47
-
48
- - install chromium using brew:
49
-
50
- `brew install chromium`
51
- - check the chromium path, should point to /opt/homebrew/bin/chromium:
52
-
53
- `which chromium`
54
- - export out the path:
55
-
56
- export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
57
-
58
- export PUPPETEER_EXECUTABLE_PATH=\`which chromium\`
59
-
60
- - So you don't have to retype this in the future, save to your shell rc file like .bashrc or .zshrc:
61
-
62
- echo 'export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true' >> ~/.zshrc
63
-
64
- echo 'export PUPPETEER_EXECUTABLE_PATH=\`which chromium\`' >> ~/.zshrc
65
-
66
28
  ### Init documentation project
67
29
 
68
30
  To get started, you can scaffold out a sample extension docs setup:
@@ -81,48 +43,15 @@ For individual CLI commands, you can also display more information by running `n
81
43
 
82
44
  ### Develop docs
83
45
 
84
- `yarn docs:develop`
85
-
86
- or
87
-
88
46
  `npx pf-docs-framework start`
89
47
 
90
48
  ### Build docs
91
49
 
92
- `yarn docs:build`
93
-
94
- or
95
-
96
50
  `npx pf-docs-framework build all --output public`
97
51
 
98
52
  > NOTE: If you have `sideEffects: false` in your package.json, that will prevent the CSS from loading in the documentation production build. Set it to true or remove it to enable the CSS from being loaded.
99
53
 
100
- ### Generate screenshots
101
-
102
- You can generate screenshots against development or production builds.
103
-
104
- - Development:
105
-
106
- Terminal 1:
107
-
108
- `yarn docs:develop` or `npx pf-docs-framework start` (Take note of the port it started on, you can modify it in patternfly-docs.config)
109
-
110
- Terminal 2:
111
-
112
- `yarn docs:screenshots` or `npx pf-docs-framework screenshots --urlPrefix http://localhost:<PORT>`
113
-
114
- - Production:
115
-
116
- Terminal 1:
117
-
118
- - `yarn docs:build` or `npx pf-docs-framework build all --output public`
119
- - `yarn docs:serve` or `npx pf-docs-framework serve public --port 5000`
120
-
121
- Terminal 2:
122
-
123
- `yarn docs:screenshots` or `npx pf-docs-framework screenshots --urlPrefix http://localhost:5000`
124
-
125
- ### Publish docs to patternfly.org
54
+ ### Publish docs to patternfly.org
126
55
 
127
56
  1. Include the `patternfly-docs/content` and `patternfly-docs/generated` folders as part of your npm published module
128
57
 
package/app.js CHANGED
@@ -3,7 +3,6 @@ import { createRoot, hydrateRoot } from 'react-dom/client';
3
3
  import { Router, useLocation } from '@reach/router';
4
4
  import 'client-styles'; // Webpack replaces this import: patternfly-docs.css.js
5
5
  import { SideNavLayout } from '@patternfly/documentation-framework/layouts';
6
- import { Footer } from '@patternfly/documentation-framework/components';
7
6
  import { MDXTemplate } from '@patternfly/documentation-framework/templates/mdx';
8
7
  import { routes, groupedRoutes, fullscreenRoutes, getAsyncComponent } from './routes';
9
8
  import { trackEvent } from './helpers';
@@ -12,7 +11,6 @@ import './components/cssVariables/cssVariables.css';
12
11
  import './components/tableOfContents/tableOfContents.css';
13
12
  import './components/example/example.css';
14
13
  import './components/footer/footer.css';
15
- import './components/sideNav/sideNav.css';
16
14
  import './layouts/sideNavLayout/sideNavLayout.css';
17
15
 
18
16
  const AppRoute = ({ child, title, path }) => {
@@ -37,16 +35,15 @@ const AppRoute = ({ child, title, path }) => {
37
35
  return (
38
36
  <React.Fragment>
39
37
  {child}
40
- {process.env.hasFooter && <Footer />}
41
38
  </React.Fragment>
42
39
  );
43
40
  }
44
41
 
45
42
  const SideNavRouter = () => {
46
- const componentsData = process?.env?.componentsData;
43
+ const componentsData = process.env.componentsData;
47
44
  return (
48
45
  <SideNavLayout groupedRoutes={groupedRoutes} navOpen={true} >
49
- <Router id="ws-page-content-router">
46
+ <Router id="ws-page-content-router" component="main">
50
47
  {Object.entries(routes)
51
48
  .map(([path, { Component, title, sources, id }]) => Component
52
49
  ? <AppRoute
@@ -3,8 +3,8 @@
3
3
  }
4
4
 
5
5
  .ws-heading-anchor {
6
- color: var(--pf-v5-global--Color--100);
7
- transform: translate(calc(-100% - var(--pf-v5-global--spacer--xs)), -50%);
6
+ color: var(--pf-t--global--icon--color--regular);
7
+ transform: translate(calc(-100% - var(--pf-t--global--spacer--xs)), -50%);
8
8
  opacity: 0;
9
9
  position: absolute;
10
10
  left: 0;
@@ -1,22 +1,12 @@
1
1
  import React from 'react';
2
- import { Title, Flex, FlexItem } from '@patternfly/react-core';
2
+ import { Flex, FlexItem, Content } from '@patternfly/react-core';
3
3
  import LinkIcon from '@patternfly/react-icons/dist/esm/icons/link-icon';
4
4
  import { Link } from '../link/link';
5
5
  import { slugger } from '../../helpers/slugger';
6
-
7
- // "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl"
8
- const sizes = {
9
- h1: '3xl',
10
- h2: '2xl',
11
- h3: 'xl',
12
- h4: 'lg',
13
- h5: 'md',
14
- h6: 'sm'
15
- }
6
+ import { css } from '@patternfly/react-styles';
16
7
 
17
8
  export const AutoLinkHeader = ({
18
9
  id,
19
- size,
20
10
  headingLevel,
21
11
  children,
22
12
  metaText,
@@ -25,22 +15,21 @@ export const AutoLinkHeader = ({
25
15
  const slug = id || slugger(children);
26
16
 
27
17
  return (
28
- <Flex alignItems={{ default: 'alignItemsCenter'}} spaceItems={{ default: 'spaceItemsNone' }}>
18
+ <Flex alignItems={{ default: 'alignItemsCenter'}} spaceItems={{ default: "spaceItemsSm" }}>
29
19
  <FlexItem>
30
- <Title
20
+ <Content
31
21
  id={slug}
32
- size={sizes[size]}
33
- headingLevel={headingLevel || size}
34
- className={`ws-heading ${className}`}
22
+ component={headingLevel}
23
+ className={css('ws-heading', className)}
35
24
  tabIndex={-1}
36
25
  >
37
26
  <Link href={`#${slug}`} className="ws-heading-anchor" tabIndex="-1" aria-hidden>
38
27
  <LinkIcon className="ws-heading-anchor-icon" style={{ verticalAlign: 'middle' }} />
39
28
  </Link>
40
29
  {children}
41
- </Title>
30
+ </Content>
42
31
  </FlexItem>
43
- <FlexItem> {metaText}</FlexItem>
32
+ {metaText && <FlexItem>{metaText}</FlexItem>}
44
33
  </Flex>
45
34
  )
46
35
  };
@@ -1,15 +1,13 @@
1
- .ws-color-box {
2
- display: inline-block;
3
- height: 18px;
4
- width: 18px;
5
- border: var(--pf-v5-global--BorderWidth--sm) solid var(--pf-v5-global--BorderColor--200);
6
- border-radius: var(--pf-v5-global--BorderRadius--lg);
7
- }
8
1
 
9
- .ws-td-text {
10
- font-size: var(--pf-v5-global--FontSize--sm) !important;
2
+ .circle {
3
+ height: 1em;
4
+ display: inline-block;
5
+ aspect-ratio: 1 / 1;
6
+ border-radius: 50%;
7
+ border: var(--pf-t--global--border--width--regular) solid var(--pf-t--global--background--color--inverse--default);
8
+ box-shadow: var(--pf-t--global--box-shadow--sm);
11
9
  }
12
10
 
13
- .ws-css-property {
14
- padding: var(--pf-v5-global--spacer--xs) var(--pf-v5-global--spacer--md);
11
+ .rotate-90-deg {
12
+ transform: rotate(90deg);
15
13
  }
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { debounce } from "@patternfly/react-core";
2
+ import { List, ListItem, debounce } from "@patternfly/react-core";
3
3
  import {
4
4
  Table,
5
5
  Thead,
@@ -10,33 +10,22 @@ import {
10
10
  } from "@patternfly/react-table";
11
11
  import { AutoLinkHeader } from "../autoLinkHeader/autoLinkHeader";
12
12
  import * as tokensModule from "@patternfly/react-tokens/dist/esm/componentIndex";
13
- import global_spacer_md from "@patternfly/react-tokens/dist/esm/global_spacer_md";
14
13
  import LevelUpAltIcon from "@patternfly/react-icons/dist/esm/icons/level-up-alt-icon";
15
14
  import { CSSSearch } from './cssSearch';
16
15
 
17
16
  const isColorRegex = /^(#|rgb)/;
18
17
 
19
18
  const mappingAsList = (property, values) => (
20
- <div>
21
- <div className="ws-css-property">
22
- <span>
23
- {property}
24
- </span>
25
- </div>
26
- {values.map((entry, index) => (
27
- <div
28
- key={index}
29
- style={{
30
- padding: `4px 0 4px calc(${global_spacer_md.value} * ${index + 3})`
31
- }}
19
+ <List isPlain>
20
+ <ListItem>{property}</ListItem>
21
+ {values.map((entry) => (
22
+ <ListItem
23
+ icon={<LevelUpAltIcon className="rotate-90-deg" />}
32
24
  >
33
- <LevelUpAltIcon style={{ transform: 'rotate(90deg)' }} />
34
- <span style={{ paddingLeft: '16px' }}>
35
- {entry}
36
- </span>
37
- </div>
25
+ {entry}
26
+ </ListItem>
38
27
  ))}
39
- </div>
28
+ </List>
40
29
  );
41
30
 
42
31
  const flattenList = files => {
@@ -62,7 +51,7 @@ const flattenList = files => {
62
51
  export class CSSVariables extends React.Component {
63
52
  constructor(props) {
64
53
  super(props);
65
- const prefixToken = props.prefix.replace("pf-v5-", "").replace(/-+/g, "_");
54
+ const prefixToken = props.prefix.replace("pf-v6-", "").replace(/-+/g, "_");
66
55
  const applicableFiles = Object.entries(tokensModule)
67
56
  .filter(([key, val]) => prefixToken === key)
68
57
  .sort(([key1], [key2]) => key1.localeCompare(key2))
@@ -97,30 +86,28 @@ export class CSSVariables extends React.Component {
97
86
  (values && searchRE.test(JSON.stringify(values)));
98
87
  if (passes) {
99
88
  const rowKey = `${selector}_${property}`;
89
+ const isColor = isColorRegex.test(value);
100
90
  const cells = [
101
91
  ...this.props.hideSelectorColumn ? [] : [selector],
102
92
  property,
103
93
  <div key={rowKey}>
104
94
  <div
105
95
  key={`${rowKey}_1`}
106
- className="pf-v5-l-flex pf-m-space-items-sm"
96
+ className="pf-v6-l-flex pf-m-space-items-sm"
107
97
  >
108
- {isColorRegex.test(value) && (
98
+ {isColor && (
109
99
  <div
110
100
  key={`${rowKey}_2`}
111
- className="pf-v5-l-flex pf-m-column pf-m-align-self-center"
101
+ className="pf-v6-l-flex pf-m-column pf-m-align-self-center"
112
102
  >
113
- <span
114
- className="ws-color-box"
115
- style={{ backgroundColor: value }}
116
- />
103
+ <span className="circle" style={{ backgroundColor: `var(${property})`}}/>
117
104
  </div>
118
105
  )}
119
106
  <div
120
107
  key={`${rowKey}_3`}
121
- className="pf-v5-l-flex pf-m-column pf-m-align-self-center ws-td-text"
108
+ className="pf-v6-l-flex pf-m-column pf-m-align-self-center ws-td-text"
122
109
  >
123
- {value}
110
+ {isColor && '(In light theme)'} {value}
124
111
  </div>
125
112
  </div>
126
113
  </div>
@@ -170,7 +157,7 @@ export class CSSVariables extends React.Component {
170
157
  render() {
171
158
  return (
172
159
  <React.Fragment>
173
- {this.props.autoLinkHeader && <AutoLinkHeader size="h3" className="pf-v5-u-mt-lg pf-v5-u-mb-md">{`Prefixed with '${this.props.prefix}'`}</AutoLinkHeader>}
160
+ {this.props.autoLinkHeader && <AutoLinkHeader headingLevel="h3" className="pf-v6-u-mt-lg pf-v6-u-mb-md">{`Prefixed with '${this.props.prefix}'`}</AutoLinkHeader>}
174
161
  <CSSSearch getDebouncedFilteredRows={this.getDebouncedFilteredRows} />
175
162
  <Table
176
163
  variant="compact"
@@ -180,7 +167,7 @@ export class CSSVariables extends React.Component {
180
167
  <Tr>
181
168
  {!this.props.hideSelectorColumn && (
182
169
  <React.Fragment>
183
- <Th />
170
+ <Th screenReaderText="Expand or collapse column" />
184
171
  <Th>Selector</Th>
185
172
  </React.Fragment>
186
173
  )}
@@ -2,53 +2,19 @@
2
2
  --ws-code-editor--tooltip--MaxWidth: 16ch;
3
3
  }
4
4
 
5
- .ws-example {
6
- margin-top: var(--pf-v5-global--spacer--lg);
7
- margin-bottom: var(--pf-v5-global--spacer--lg);
8
- }
9
-
10
- .ws-example > .ws-example-header {
11
- padding: var(--pf-v5-global--spacer--md);
12
- }
13
-
14
- .ws-example-header > .ws-example-heading:not(:last-child) {
15
- margin-bottom: var(--pf-v5-global--spacer--md);
16
- }
17
-
18
- .ws-code-editor:not(.ws-example-code-expanded) > .pf-v5-c-code-editor__header::before {
19
- --pf-v5-c-code-editor__header--before--BorderBottomWidth: 0;
5
+ .ws-code-editor:not(.ws-example-code-expanded) > .pf-v6-c-code-editor__header::before {
6
+ --pf-v6-c-code-editor__header--before--BorderBottomWidth: 0;
20
7
  }
21
8
 
22
9
  .ws-code-editor-control {
23
- --pf-v5-c-button--m-control--BackgroundColor: transparent;
24
- --pf-v5-c-button--m-control--active--BackgroundColor: transparent;
25
- --pf-v5-c-button--m-control--focus--BackgroundColor: transparent;
26
- --pf-v5-c-button--m-control--hover--BackgroundColor: transparent;
27
- }
28
-
29
- .ws-code-editor-control.pf-v5-c-button {
30
- --pf-v5-c-button--after--BorderWidth: 0;
10
+ --pf-v6-c-button--m-control--BackgroundColor: transparent;
11
+ --pf-v6-c-button--m-control--active--BackgroundColor: transparent;
12
+ --pf-v6-c-button--m-control--focus--BackgroundColor: transparent;
13
+ --pf-v6-c-button--m-control--hover--BackgroundColor: transparent;
31
14
  }
32
15
 
33
- .ws-preview {
34
- padding: var(--pf-v5-global--spacer--md);
35
- background-color: var(--pf-v5-global--BackgroundColor--100);
36
- border-bottom: var(--pf-v5-global--BorderWidth--sm) solid var(--pf-v5-global--BorderColor--300);
37
- transition: width .2s ease-in-out;
38
- }
39
-
40
- .ws-core-c-page.ws-preview > .ws-preview-html,
41
- .ws-react-c-page.ws-preview > .pf-v5-c-page {
42
- overflow: hidden;
43
- }
44
-
45
- .ws-editor {
46
- font-size: var(--pf-v5-global--FontSize--md);
47
- }
48
-
49
- .ws-editor .token.punctuation,
50
- .ws-editor .token.operator {
51
- color: var(--pf-v5-global--danger-color--100);
16
+ .ws-code-editor-control.pf-v6-c-button {
17
+ --pf-v6-c-button--after--BorderWidth: 0;
52
18
  }
53
19
 
54
20
  .ws-preview__thumbnail-link {
@@ -61,7 +27,7 @@
61
27
  .ws-preview__thumbnail-link::before,
62
28
  .ws-preview__thumbnail-link::after {
63
29
  position: absolute;
64
- z-index: 500;
30
+ z-index: var(--pf-t--global--z-index--sm);
65
31
  transition: .2s;
66
32
  opacity: 0;
67
33
  }
@@ -100,33 +66,23 @@
100
66
  color: rgba(255,255,255,.4);
101
67
  }
102
68
 
103
- .pf-v5-c-badge.ws-beta-badge {
104
- --pf-v5-c-badge--m-unread--BackgroundColor: var(--pf-v5-global--BackgroundColor--100);
105
- --pf-v5-c-badge--m-unread--Color: var(--pf-v5-global--primary-color--100);
106
- border: var(--pf-v5-global--BorderWidth--sm) solid var(--pf-v5-global--primary-color--100);
107
- }
108
-
109
69
  .ws-prop-required {
110
- color: var(--pf-v5-global--danger-color--100);
70
+ color: var(--pf-t--global--text--color--status--danger--default);
111
71
  }
112
72
 
113
73
  .ws-full-page-utils {
114
74
  position: fixed;
115
75
  right: 0;
116
76
  bottom: 0;
117
- padding: var(--pf-v5-global--spacer--lg);
118
- z-index: var(--pf-v5-global--ZIndex--2xl);
77
+ padding: var(--pf-t--global--spacer--lg);
78
+ z-index: var(--pf-t--global--z-index--2xl);
119
79
  }
120
80
 
121
81
  .ws-full-page-utils::before {
122
82
  position: absolute;
123
83
  inset: 0;
124
84
  content: "";
125
- background-color: var(--pf-v5-global--BackgroundColor--100);
85
+ background-color: var(--pf-t--global--background--color--floating--default);
126
86
  opacity: 0.8;
127
- box-shadow: var(--pf-v5-global--BoxShadow--sm);
128
- }
129
-
130
- .pf-v5-theme-dark .ws-theme-switch-full-page::before {
131
- background-color: var(--pf-v5-global--BackgroundColor--300);
87
+ box-shadow: var(--pf-t--global--box-shadow--sm);
132
88
  }