@red-hat-developer-hub/backstage-plugin-bui-test 0.5.0 → 0.5.1
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/CHANGELOG.md +11 -0
- package/dist/components/BUITestPage.esm.js +16 -2
- package/dist/components/BUITestPage.esm.js.map +1 -1
- package/dist/components/FormComponents.esm.js +4 -4
- package/dist/components/FormComponents.esm.js.map +1 -1
- package/dist/components/OtherExample.esm.js +836 -0
- package/dist/components/OtherExample.esm.js.map +1 -0
- package/dist/components/ThemeTokensInspector.esm.js +70 -0
- package/dist/components/ThemeTokensInspector.esm.js.map +1 -0
- package/dist/package.json.esm.js +9 -9
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @red-hat-developer-hub/backstage-plugin-bui-test
|
|
2
2
|
|
|
3
|
+
## 0.5.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e8c4cd7: feat: allow customers to customize BUI components via app-config (RHIDP-14510)
|
|
8
|
+
|
|
9
|
+
Adds two new `app.branding` configuration options:
|
|
10
|
+
|
|
11
|
+
- `customCSS`: raw CSS string injected as global styles (use at your own risk)
|
|
12
|
+
- `theme.{light|dark}.bui.tokens`: per-theme structured token overrides mapping to BUI CSS custom properties (`--bui-*`), allowing different values for light and dark themes
|
|
13
|
+
|
|
3
14
|
## 0.5.0
|
|
4
15
|
|
|
5
16
|
### Minor Changes
|
|
@@ -5,6 +5,8 @@ import { UserSettingsThemeToggle } from '@backstage/plugin-user-settings';
|
|
|
5
5
|
import { FormComponents } from './FormComponents.esm.js';
|
|
6
6
|
import { TableExample } from './TableExample.esm.js';
|
|
7
7
|
import { CardsExample } from './CardExample.esm.js';
|
|
8
|
+
import { OtherExample } from './OtherExample.esm.js';
|
|
9
|
+
import { ThemeTokensInspector } from './ThemeTokensInspector.esm.js';
|
|
8
10
|
|
|
9
11
|
const BUITestPage = () => {
|
|
10
12
|
const { pathname } = useLocation();
|
|
@@ -13,7 +15,7 @@ const BUITestPage = () => {
|
|
|
13
15
|
Header,
|
|
14
16
|
{
|
|
15
17
|
title: "Backstage UI Tests",
|
|
16
|
-
customActions: /* @__PURE__ */ jsx(UserSettingsThemeToggle, {}),
|
|
18
|
+
customActions: /* @__PURE__ */ jsx("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: /* @__PURE__ */ jsx(UserSettingsThemeToggle, {}) }),
|
|
17
19
|
tabs: [
|
|
18
20
|
{
|
|
19
21
|
id: "form-components",
|
|
@@ -29,6 +31,16 @@ const BUITestPage = () => {
|
|
|
29
31
|
id: "card-example",
|
|
30
32
|
label: "Card Example",
|
|
31
33
|
href: "/bui-tests/card-example"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: "other-example",
|
|
37
|
+
label: "Other Example",
|
|
38
|
+
href: "/bui-tests/other-example"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "theme-tokens",
|
|
42
|
+
label: "Theme Tokens",
|
|
43
|
+
href: "/bui-tests/theme-tokens"
|
|
32
44
|
}
|
|
33
45
|
]
|
|
34
46
|
}
|
|
@@ -36,7 +48,9 @@ const BUITestPage = () => {
|
|
|
36
48
|
/* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsxs(Tabs, { selectedKey: pathname.split("/")[2] ?? "form-components", children: [
|
|
37
49
|
/* @__PURE__ */ jsx(TabPanel, { id: "form-components", children: /* @__PURE__ */ jsx(FormComponents, {}) }),
|
|
38
50
|
/* @__PURE__ */ jsx(TabPanel, { id: "table-example", children: /* @__PURE__ */ jsx(TableExample, {}) }),
|
|
39
|
-
/* @__PURE__ */ jsx(TabPanel, { id: "card-example", children: /* @__PURE__ */ jsx(CardsExample, {}) })
|
|
51
|
+
/* @__PURE__ */ jsx(TabPanel, { id: "card-example", children: /* @__PURE__ */ jsx(CardsExample, {}) }),
|
|
52
|
+
/* @__PURE__ */ jsx(TabPanel, { id: "other-example", children: /* @__PURE__ */ jsx(OtherExample, {}) }),
|
|
53
|
+
/* @__PURE__ */ jsx(TabPanel, { id: "theme-tokens", children: /* @__PURE__ */ jsx(ThemeTokensInspector, {}) })
|
|
40
54
|
] }) })
|
|
41
55
|
] });
|
|
42
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BUITestPage.esm.js","sources":["../../src/components/BUITestPage.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Container, Header, TabPanel, Tabs } from '@backstage/ui';\n\nimport { useLocation } from 'react-router';\n\nimport { UserSettingsThemeToggle } from '@backstage/plugin-user-settings';\n\nimport { FormComponents } from './FormComponents';\nimport { TableExample } from './TableExample';\nimport { CardsExample } from './CardExample';\n\nexport const BUITestPage = () => {\n const { pathname } = useLocation();\n\n return (\n <>\n <Header\n title=\"Backstage UI Tests\"\n customActions={<UserSettingsThemeToggle
|
|
1
|
+
{"version":3,"file":"BUITestPage.esm.js","sources":["../../src/components/BUITestPage.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Container, Header, TabPanel, Tabs } from '@backstage/ui';\n\nimport { useLocation } from 'react-router';\n\nimport { UserSettingsThemeToggle } from '@backstage/plugin-user-settings';\n\nimport { FormComponents } from './FormComponents';\nimport { TableExample } from './TableExample';\nimport { CardsExample } from './CardExample';\nimport { OtherExample } from './OtherExample';\nimport { ThemeTokensInspector } from './ThemeTokensInspector';\n\nexport const BUITestPage = () => {\n const { pathname } = useLocation();\n\n return (\n <>\n <Header\n title=\"Backstage UI Tests\"\n customActions={\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n <UserSettingsThemeToggle />\n </ul>\n }\n tabs={[\n {\n id: 'form-components',\n label: 'Form Components',\n href: '/bui-tests',\n },\n {\n id: 'table-example',\n label: 'Table Example',\n href: '/bui-tests/table-example',\n },\n {\n id: 'card-example',\n label: 'Card Example',\n href: '/bui-tests/card-example',\n },\n {\n id: 'other-example',\n label: 'Other Example',\n href: '/bui-tests/other-example',\n },\n {\n id: 'theme-tokens',\n label: 'Theme Tokens',\n href: '/bui-tests/theme-tokens',\n },\n ]}\n />\n <Container>\n <Tabs selectedKey={pathname.split('/')[2] ?? 'form-components'}>\n <TabPanel id=\"form-components\">\n <FormComponents />\n </TabPanel>\n <TabPanel id=\"table-example\">\n <TableExample />\n </TabPanel>\n <TabPanel id=\"card-example\">\n <CardsExample />\n </TabPanel>\n <TabPanel id=\"other-example\">\n <OtherExample />\n </TabPanel>\n <TabPanel id=\"theme-tokens\">\n <ThemeTokensInspector />\n </TabPanel>\n </Tabs>\n </Container>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AA4BO,MAAM,cAAc,MAAM;AAC/B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,WAAA,EAAY;AAEjC,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,oBAAA;AAAA,QACN,aAAA,kBACE,GAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,SAAA,EAAW,MAAA,EAAQ,MAAA,EAAQ,CAAA,EAAG,OAAA,EAAS,CAAA,EAAE,EACpD,QAAA,kBAAA,GAAA,CAAC,2BAAwB,CAAA,EAC3B,CAAA;AAAA,QAEF,IAAA,EAAM;AAAA,UACJ;AAAA,YACE,EAAA,EAAI,iBAAA;AAAA,YACJ,KAAA,EAAO,iBAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,EAAA,EAAI,eAAA;AAAA,YACJ,KAAA,EAAO,eAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,EAAA,EAAI,cAAA;AAAA,YACJ,KAAA,EAAO,cAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,EAAA,EAAI,eAAA;AAAA,YACJ,KAAA,EAAO,eAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,EAAA,EAAI,cAAA;AAAA,YACJ,KAAA,EAAO,cAAA;AAAA,YACP,IAAA,EAAM;AAAA;AACR;AACF;AAAA,KACF;AAAA,oBACA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,WAAA,EAAa,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,iBAAA,EAC3C,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,EAAA,EAAG,iBAAA,EACX,QAAA,kBAAA,GAAA,CAAC,kBAAe,CAAA,EAClB,CAAA;AAAA,0BACC,QAAA,EAAA,EAAS,EAAA,EAAG,eAAA,EACX,QAAA,kBAAA,GAAA,CAAC,gBAAa,CAAA,EAChB,CAAA;AAAA,0BACC,QAAA,EAAA,EAAS,EAAA,EAAG,cAAA,EACX,QAAA,kBAAA,GAAA,CAAC,gBAAa,CAAA,EAChB,CAAA;AAAA,0BACC,QAAA,EAAA,EAAS,EAAA,EAAG,eAAA,EACX,QAAA,kBAAA,GAAA,CAAC,gBAAa,CAAA,EAChB,CAAA;AAAA,0BACC,QAAA,EAAA,EAAS,EAAA,EAAG,cAAA,EACX,QAAA,kBAAA,GAAA,CAAC,wBAAqB,CAAA,EACxB;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -73,8 +73,8 @@ const Checkboxes = () => {
|
|
|
73
73
|
return /* @__PURE__ */ jsxs(Flex, { children: [
|
|
74
74
|
/* @__PURE__ */ jsx(Text, { children: "Checkboxes" }),
|
|
75
75
|
/* @__PURE__ */ jsxs(Flex, { align: "center", children: [
|
|
76
|
-
/* @__PURE__ */ jsx(Checkbox, {
|
|
77
|
-
/* @__PURE__ */ jsx(Checkbox, {
|
|
76
|
+
/* @__PURE__ */ jsx(Checkbox, { "aria-label": "Checkbox" }),
|
|
77
|
+
/* @__PURE__ */ jsx(Checkbox, { "aria-label": "Checkbox", defaultSelected: true }),
|
|
78
78
|
/* @__PURE__ */ jsx(Checkbox, { children: "Checkbox" }),
|
|
79
79
|
/* @__PURE__ */ jsx(Checkbox, { defaultSelected: true, children: "Checkbox" })
|
|
80
80
|
] })
|
|
@@ -84,8 +84,8 @@ const Switches = () => {
|
|
|
84
84
|
return /* @__PURE__ */ jsxs(Flex, { children: [
|
|
85
85
|
/* @__PURE__ */ jsx(Text, { children: "Switches" }),
|
|
86
86
|
/* @__PURE__ */ jsxs(Flex, { align: "center", children: [
|
|
87
|
-
/* @__PURE__ */ jsx(Switch, {}),
|
|
88
|
-
/* @__PURE__ */ jsx(Switch, { isSelected: true }),
|
|
87
|
+
/* @__PURE__ */ jsx(Switch, { "aria-label": "Switch" }),
|
|
88
|
+
/* @__PURE__ */ jsx(Switch, { "aria-label": "Switch", isSelected: true }),
|
|
89
89
|
/* @__PURE__ */ jsx(Switch, { label: "Switch" }),
|
|
90
90
|
/* @__PURE__ */ jsx(Switch, { label: "Switch", isSelected: true })
|
|
91
91
|
] })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormComponents.esm.js","sources":["../../src/components/FormComponents.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Button,\n ButtonProps,\n Checkbox,\n Flex,\n Switch,\n Text,\n} from '@backstage/ui';\nimport CloudIcon from '@mui/icons-material/Cloud';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\nconst Buttons = () => {\n const variants: ButtonProps['variant'][] = [\n 'primary',\n 'secondary',\n 'tertiary',\n ];\n const sizes: ButtonProps['size'][] = [undefined, 'small', 'medium'];\n\n return (\n <Flex direction=\"column\">\n {variants.map(variant => (\n <Flex direction=\"column\" key={variant as string}>\n <Text>{variant as string}</Text>\n {sizes.map(size => (\n <Flex align=\"center\" key={size as string}>\n <Button variant={variant} size={size}>\n Button\n </Button>\n <Button\n iconStart={<CloudIcon fontSize=\"small\" />}\n variant={variant}\n size={size}\n >\n Button\n </Button>\n <Button\n iconEnd={<ChevronRightIcon fontSize=\"small\" />}\n variant={variant}\n size={size}\n >\n Button\n </Button>\n <Button\n iconStart={<CloudIcon fontSize=\"small\" />}\n iconEnd={<ChevronRightIcon fontSize=\"small\" />}\n style={{\n width: '200px',\n }}\n variant={variant}\n size={size}\n >\n Button\n </Button>\n <Button variant={variant} size={size} isDisabled>\n Button\n </Button>\n <Button\n iconStart={<CloudIcon fontSize=\"small\" />}\n variant={variant}\n size={size}\n isDisabled\n >\n Button\n </Button>\n <Button\n iconEnd={<ChevronRightIcon fontSize=\"small\" />}\n variant={variant}\n size={size}\n isDisabled\n >\n Button\n </Button>\n </Flex>\n ))}\n </Flex>\n ))}\n </Flex>\n );\n};\n\nconst Checkboxes = () => {\n return (\n <Flex>\n <Text>Checkboxes</Text>\n <Flex align=\"center\">\n <Checkbox
|
|
1
|
+
{"version":3,"file":"FormComponents.esm.js","sources":["../../src/components/FormComponents.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Button,\n ButtonProps,\n Checkbox,\n Flex,\n Switch,\n Text,\n} from '@backstage/ui';\nimport CloudIcon from '@mui/icons-material/Cloud';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\nconst Buttons = () => {\n const variants: ButtonProps['variant'][] = [\n 'primary',\n 'secondary',\n 'tertiary',\n ];\n const sizes: ButtonProps['size'][] = [undefined, 'small', 'medium'];\n\n return (\n <Flex direction=\"column\">\n {variants.map(variant => (\n <Flex direction=\"column\" key={variant as string}>\n <Text>{variant as string}</Text>\n {sizes.map(size => (\n <Flex align=\"center\" key={size as string}>\n <Button variant={variant} size={size}>\n Button\n </Button>\n <Button\n iconStart={<CloudIcon fontSize=\"small\" />}\n variant={variant}\n size={size}\n >\n Button\n </Button>\n <Button\n iconEnd={<ChevronRightIcon fontSize=\"small\" />}\n variant={variant}\n size={size}\n >\n Button\n </Button>\n <Button\n iconStart={<CloudIcon fontSize=\"small\" />}\n iconEnd={<ChevronRightIcon fontSize=\"small\" />}\n style={{\n width: '200px',\n }}\n variant={variant}\n size={size}\n >\n Button\n </Button>\n <Button variant={variant} size={size} isDisabled>\n Button\n </Button>\n <Button\n iconStart={<CloudIcon fontSize=\"small\" />}\n variant={variant}\n size={size}\n isDisabled\n >\n Button\n </Button>\n <Button\n iconEnd={<ChevronRightIcon fontSize=\"small\" />}\n variant={variant}\n size={size}\n isDisabled\n >\n Button\n </Button>\n </Flex>\n ))}\n </Flex>\n ))}\n </Flex>\n );\n};\n\nconst Checkboxes = () => {\n return (\n <Flex>\n <Text>Checkboxes</Text>\n <Flex align=\"center\">\n <Checkbox aria-label=\"Checkbox\" />\n <Checkbox aria-label=\"Checkbox\" defaultSelected />\n <Checkbox>Checkbox</Checkbox>\n <Checkbox defaultSelected>Checkbox</Checkbox>\n </Flex>\n </Flex>\n );\n};\n\nconst Switches = () => {\n return (\n <Flex>\n <Text>Switches</Text>\n <Flex align=\"center\">\n <Switch aria-label=\"Switch\" />\n <Switch aria-label=\"Switch\" isSelected />\n <Switch label=\"Switch\" />\n <Switch label=\"Switch\" isSelected />\n </Flex>\n </Flex>\n );\n};\n\nexport const FormComponents = () => {\n return (\n <div>\n <Buttons />\n <br />\n <Checkboxes />\n <br />\n <Switches />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|