+
{children}
);
diff --git a/packages/canon/src/components/Container/Docs.mdx b/packages/canon/src/components/Container/Docs.mdx
index ca81477d44..05a0600813 100644
--- a/packages/canon/src/components/Container/Docs.mdx
+++ b/packages/canon/src/components/Container/Docs.mdx
@@ -1,8 +1,7 @@
import { Meta, Unstyled, Source } from '@storybook/blocks';
import * as ContainerStories from './Container.stories';
import { Title, Text, PropsTable, getProps } from '../../../docs/components';
-import { spacingProperties } from '../../layout/sprinkles.css';
-import { containerProperties } from './sprinkles.css';
+import { spacePropsList } from '../../../docs/spaceProps';
@@ -28,18 +27,41 @@ import { containerProperties } from './sprinkles.css';
diff --git a/packages/canon/src/components/Container/sprinkles.css.ts b/packages/canon/src/components/Container/sprinkles.css.ts
deleted file mode 100644
index 989e369433..0000000000
--- a/packages/canon/src/components/Container/sprinkles.css.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2024 The Backstage Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles';
-import { breakpoints, space } from '../../layout/properties';
-import { colorProperties, spacingProperties } from '../../layout/sprinkles.css';
-
-export const containerProperties = defineProperties({
- conditions: breakpoints,
- defaultCondition: 'xs',
- properties: {
- paddingTop: space,
- paddingBottom: space,
- marginTop: space,
- marginBottom: space,
- },
- shorthands: {
- paddingY: ['paddingTop', 'paddingBottom'],
- marginY: ['marginTop', 'marginBottom'],
- },
-});
-
-export const containerSprinkles = createSprinkles(
- spacingProperties,
- colorProperties,
- containerProperties,
-);
diff --git a/packages/canon/src/components/Container/styles.css b/packages/canon/src/components/Container/styles.css
index 4da813623f..f3ebd64f52 100644
--- a/packages/canon/src/components/Container/styles.css
+++ b/packages/canon/src/components/Container/styles.css
@@ -1,4 +1,4 @@
-.container {
+.canon-container {
max-width: var(--canon-container-max-width);
margin: 0 auto;
padding: 0 var(--canon-container-padding);
diff --git a/packages/canon/src/components/Container/types.ts b/packages/canon/src/components/Container/types.ts
index b1f414cf30..f9a71ecfa1 100644
--- a/packages/canon/src/components/Container/types.ts
+++ b/packages/canon/src/components/Container/types.ts
@@ -13,23 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { SpaceProps } from '../../layout/types';
+import { SpaceProps } from '../../types';
/** @public */
-export interface ContainerProps
- extends Omit<
- SpaceProps,
- | 'padding'
- | 'paddingLeft'
- | 'paddingRight'
- | 'paddingX'
- | 'margin'
- | 'marginLeft'
- | 'marginRight'
- | 'marginX'
- | 'gap'
- > {
+export interface ContainerProps {
children?: React.ReactNode;
className?: string;
+ marginY?: SpaceProps['marginY'];
+ marginBottom?: SpaceProps['marginBottom'];
+ marginTop?: SpaceProps['marginTop'];
+ paddingY?: SpaceProps['paddingY'];
+ paddingBottom?: SpaceProps['paddingBottom'];
+ paddingTop?: SpaceProps['paddingTop'];
style?: React.CSSProperties;
}
diff --git a/packages/canon/src/components/Grid/Docs.mdx b/packages/canon/src/components/Grid/Docs.mdx
index 14e3bfb922..c1a0237279 100644
--- a/packages/canon/src/components/Grid/Docs.mdx
+++ b/packages/canon/src/components/Grid/Docs.mdx
@@ -1,7 +1,7 @@
import { Canvas, Meta, Unstyled, Source } from '@storybook/blocks';
import * as GridStories from './Grid.stories';
-import { Title, Text, PropsTable, getProps } from '../../../docs/components';
-import { spacingProperties } from '../../layout/sprinkles.css';
+import { Title, Text, PropsTable } from '../../../docs/components';
+import { spacePropsList } from '../../../docs/spaceProps';
@@ -59,7 +59,7 @@ import { spacingProperties } from '../../layout/sprinkles.css';
The grid component also accepts all the spacing props from the Box component.
-
+
Grid Item
diff --git a/packages/canon/src/components/Grid/Grid.stories.tsx b/packages/canon/src/components/Grid/Grid.stories.tsx
index bf1bcecfd7..8fa6caec23 100644
--- a/packages/canon/src/components/Grid/Grid.stories.tsx
+++ b/packages/canon/src/components/Grid/Grid.stories.tsx
@@ -19,15 +19,12 @@ import type { Meta, StoryObj } from '@storybook/react';
import { Grid } from './Grid';
import type { GridItemProps } from './types';
import { Box } from '../Box/Box';
-import { argTypesSpacing, argTypesColor } from '../../../docs/utils/argTypes';
import { Stack } from '../Stack';
const meta = {
title: 'Components/Grid',
component: Grid,
argTypes: {
- ...argTypesSpacing,
- ...argTypesColor,
children: {
control: false,
},
@@ -45,7 +42,7 @@ type Story = StoryObj;
const FakeBox = () => (
);
@@ -105,7 +102,7 @@ export const RowAndColumns: Story = {
diff --git a/packages/canon/src/components/Grid/Grid.tsx b/packages/canon/src/components/Grid/Grid.tsx
index 2b61d1d3d4..3799a70ae8 100644
--- a/packages/canon/src/components/Grid/Grid.tsx
+++ b/packages/canon/src/components/Grid/Grid.tsx
@@ -16,62 +16,47 @@
import { createElement, forwardRef } from 'react';
import { GridItemProps, GridProps } from './types';
-import { gridItemSprinkles, gridSprinkles } from './sprinkles.css';
+import { getClassNames } from '../../utils/getClassNames';
const GridBase = forwardRef((props, ref) => {
const {
children,
- columns,
gap = 'xs',
+ columns = 'auto',
className,
style,
...restProps
} = props;
- const sprinklesClassName = gridSprinkles({
- ...restProps,
- gap,
- gridTemplateColumns: columns ? columns : 'auto',
- });
+ const utilityClassNames = getClassNames({ gap, columns, ...restProps });
- const classNames = ['grid', sprinklesClassName, className]
+ const classNames = ['canon-grid', utilityClassNames, className]
.filter(Boolean)
.join(' ');
- return createElement(
- 'div',
- {
- ref,
- className: classNames,
- style,
- },
+ return createElement('div', {
+ ref,
+ className: classNames,
+ style,
children,
- );
+ });
});
const GridItem = forwardRef((props, ref) => {
- const { children, rowSpan, colSpan, start, end, className, style } = props;
+ const { children, className, style, ...restProps } = props;
- const sprinklesClassName = gridItemSprinkles({
- rowSpan,
- colSpan,
- start,
- end,
- });
+ const utilityClassNames = getClassNames(restProps);
- const classNames = ['grid-item', sprinklesClassName, className]
+ const classNames = ['grid-item', utilityClassNames, className]
.filter(Boolean)
.join(' ');
- return createElement(
- 'div',
- {
- ref,
- className: classNames,
- style,
- },
+ return createElement('div', {
+ ref,
+ className: classNames,
+ style,
children,
- );
+ });
});
/** @public */
diff --git a/packages/canon/src/components/Grid/index.ts b/packages/canon/src/components/Grid/index.ts
index b07249241c..b2534c6b77 100644
--- a/packages/canon/src/components/Grid/index.ts
+++ b/packages/canon/src/components/Grid/index.ts
@@ -14,4 +14,4 @@
* limitations under the License.
*/
export { Grid } from './Grid';
-export type { GridProps, GridItemProps, Columns } from './types';
+export type { GridProps, GridItemProps } from './types';
diff --git a/packages/canon/src/components/Grid/sprinkles.css.ts b/packages/canon/src/components/Grid/sprinkles.css.ts
deleted file mode 100644
index aff5a340ed..0000000000
--- a/packages/canon/src/components/Grid/sprinkles.css.ts
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2024 The Backstage Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles';
-import { breakpoints } from '../../layout/properties';
-import { colorProperties, spacingProperties } from '../../layout/sprinkles.css';
-
-const gridProperties = defineProperties({
- conditions: breakpoints,
- defaultCondition: 'xs',
- properties: {
- gridTemplateColumns: {
- 1: 'repeat(1, minmax(0, 1fr))',
- 2: 'repeat(2, minmax(0, 1fr))',
- 3: 'repeat(3, minmax(0, 1fr))',
- 4: 'repeat(4, minmax(0, 1fr))',
- 5: 'repeat(5, minmax(0, 1fr))',
- 6: 'repeat(6, minmax(0, 1fr))',
- 7: 'repeat(7, minmax(0, 1fr))',
- 8: 'repeat(8, minmax(0, 1fr))',
- 9: 'repeat(9, minmax(0, 1fr))',
- 10: 'repeat(10, minmax(0, 1fr))',
- 11: 'repeat(11, minmax(0, 1fr))',
- 12: 'repeat(12, minmax(0, 1fr))',
- auto: 'repeat(auto-fit, minmax(0, 1fr))',
- },
- },
- shorthands: {
- columns: ['gridTemplateColumns'],
- },
-});
-
-export const gridSprinkles = createSprinkles(
- spacingProperties,
- colorProperties,
- gridProperties,
-);
-
-const gridItemProperties = defineProperties({
- conditions: breakpoints,
- defaultCondition: 'xs',
- properties: {
- gridColumn: {
- 1: 'span 1 / span 1',
- 2: 'span 2 / span 2',
- 3: 'span 3 / span 3',
- 4: 'span 4 / span 4',
- 5: 'span 5 / span 5',
- 6: 'span 6 / span 6',
- 7: 'span 7 / span 7',
- 8: 'span 8 / span 8',
- 9: 'span 9 / span 9',
- 10: 'span 10 / span 10',
- 11: 'span 11 / span 11',
- 12: 'span 12 / span 12',
- full: '1 / -1',
- },
- gridRow: {
- 1: 'span 1 / span 1',
- 2: 'span 2 / span 2',
- 3: 'span 3 / span 3',
- 4: 'span 4 / span 4',
- 5: 'span 5 / span 5',
- 6: 'span 6 / span 6',
- 7: 'span 7 / span 7',
- 8: 'span 8 / span 8',
- 9: 'span 9 / span 9',
- 10: 'span 10 / span 10',
- 11: 'span 11 / span 11',
- 12: 'span 12 / span 12',
- full: '1 / -1',
- },
- gridColumnStart: {
- 1: '1',
- 2: '2',
- 3: '3',
- 4: '4',
- 5: '5',
- 6: '6',
- 7: '7',
- 8: '8',
- 9: '9',
- 10: '10',
- 11: '11',
- 12: '12',
- 13: '13',
- auto: 'auto',
- },
- gridColumnEnd: {
- 1: '1',
- 2: '2',
- 3: '3',
- 4: '4',
- 5: '5',
- 6: '6',
- 7: '7',
- 8: '8',
- 9: '9',
- 10: '10',
- 11: '11',
- 12: '12',
- 13: '13',
- auto: 'auto',
- },
- },
- shorthands: {
- colSpan: ['gridColumn'],
- rowSpan: ['gridRow'],
- start: ['gridColumnStart'],
- end: ['gridColumnEnd'],
- },
-});
-
-export const gridItemSprinkles = createSprinkles(
- colorProperties,
- gridItemProperties,
-);
diff --git a/packages/canon/src/components/Grid/styles.css b/packages/canon/src/components/Grid/styles.css
index 81f8d5471d..8314f896bc 100644
--- a/packages/canon/src/components/Grid/styles.css
+++ b/packages/canon/src/components/Grid/styles.css
@@ -1,3 +1,3 @@
-.grid {
+.canon-grid {
display: grid;
}
diff --git a/packages/canon/src/components/Grid/types.ts b/packages/canon/src/components/Grid/types.ts
index 87edbd75bf..4e154f03b7 100644
--- a/packages/canon/src/components/Grid/types.ts
+++ b/packages/canon/src/components/Grid/types.ts
@@ -13,27 +13,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { Breakpoint, ColorProps } from '../../layout/types';
-import { SpaceProps } from '../../layout/types';
+
+import type { UtilityProps, SpaceProps } from '../../types';
/** @public */
-export type Columns = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
-
-/** @public */
-export interface GridProps extends SpaceProps, ColorProps {
+export interface GridProps extends SpaceProps {
children?: React.ReactNode;
- columns?: Columns | Partial>;
className?: string;
+ columns?: UtilityProps['columns'];
+ gap?: UtilityProps['gap'];
style?: React.CSSProperties;
}
/** @public */
export interface GridItemProps {
children: React.ReactNode;
- rowSpan?: Columns | 'full';
- colSpan?: Columns | 'full';
- start?: Columns | 'auto';
- end?: Columns | 'auto';
className?: string;
+ colSpan?: UtilityProps['colSpan'];
+ colEnd?: UtilityProps['colEnd'];
+ colStart?: UtilityProps['colStart'];
+ rowSpan?: UtilityProps['rowSpan'];
style?: React.CSSProperties;
}
diff --git a/packages/canon/src/components/Heading/types.ts b/packages/canon/src/components/Heading/types.ts
index fb37cf6414..7a9a44560c 100644
--- a/packages/canon/src/components/Heading/types.ts
+++ b/packages/canon/src/components/Heading/types.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { Breakpoint } from '../../layout/types';
+import { Breakpoint } from '../../types';
/** @public */
export interface HeadingProps {
diff --git a/packages/canon/src/components/Inline/Docs.mdx b/packages/canon/src/components/Inline/Docs.mdx
index 8ff19747f0..7671122966 100644
--- a/packages/canon/src/components/Inline/Docs.mdx
+++ b/packages/canon/src/components/Inline/Docs.mdx
@@ -1,8 +1,7 @@
import { Meta, Unstyled, Source } from '@storybook/blocks';
import * as InlineStories from './Inline.stories';
import { Title, Text, PropsTable, getProps } from '../../../docs/components';
-import { spacingProperties } from '../../layout/sprinkles.css';
-import { inlineProperties } from './sprinkles.css';
+import { spacePropsList } from '../../../docs/spaceProps';
@@ -34,11 +33,11 @@ import { inlineProperties } from './sprinkles.css';
-
+
Examples
diff --git a/packages/canon/src/components/Inline/Inline.stories.tsx b/packages/canon/src/components/Inline/Inline.stories.tsx
index 613fd68c68..b6653a3067 100644
--- a/packages/canon/src/components/Inline/Inline.stories.tsx
+++ b/packages/canon/src/components/Inline/Inline.stories.tsx
@@ -18,14 +18,11 @@ import React from 'react';
import type { Meta, StoryObj } from '@storybook/react';
import { Inline } from './Inline';
import { Box } from '../Box/Box';
-import { argTypesSpacing, argTypesColor } from '../../../docs/utils/argTypes';
const meta = {
title: 'Components/Inline',
component: Inline,
argTypes: {
- ...argTypesSpacing,
- ...argTypesColor,
align: {
control: 'inline-radio',
options: ['left', 'center', 'right'],
@@ -49,6 +46,41 @@ const meta = {
export default meta;
type Story = StoryObj;
+const fakeBlockList = [
+ { width: 45, height: 60 },
+ { width: 150, height: 75 },
+ { width: 80, height: 50 },
+ { width: 120, height: 70 },
+ { width: 95, height: 65 },
+ { width: 110, height: 55 },
+ { width: 130, height: 60 },
+ { width: 100, height: 80 },
+ { width: 140, height: 45 },
+ { width: 85, height: 70 },
+ { width: 125, height: 50 },
+ { width: 105, height: 75 },
+ { width: 115, height: 65 },
+ { width: 135, height: 55 },
+ { width: 90, height: 60 },
+ { width: 145, height: 80 },
+ { width: 75, height: 45 },
+ { width: 155, height: 70 },
+ { width: 60, height: 50 },
+ { width: 160, height: 75 },
+ { width: 70, height: 65 },
+ { width: 150, height: 55 },
+ { width: 95, height: 60 },
+ { width: 120, height: 80 },
+ { width: 85, height: 45 },
+ { width: 130, height: 70 },
+ { width: 100, height: 50 },
+ { width: 140, height: 75 },
+ { width: 110, height: 65 },
+ { width: 125, height: 55 },
+ { width: 105, height: 60 },
+ { width: 145, height: 80 },
+];
+
const FakeBox = ({
width = 120,
height = 80,
@@ -57,7 +89,7 @@ const FakeBox = ({
height?: number;
}) => (
);
@@ -66,12 +98,8 @@ export const Default: Story = {
args: {
children: (
<>
- {Array.from({ length: 32 }).map((_, index) => (
-
+ {fakeBlockList.map((block, index) => (
+
))}
>
),
diff --git a/packages/canon/src/components/Inline/Inline.tsx b/packages/canon/src/components/Inline/Inline.tsx
index b583b2ae08..b3aaeaf082 100644
--- a/packages/canon/src/components/Inline/Inline.tsx
+++ b/packages/canon/src/components/Inline/Inline.tsx
@@ -15,21 +15,43 @@
*/
import { createElement, forwardRef } from 'react';
-import { inlineSprinkles } from './sprinkles.css';
import type { InlineProps } from './types';
+import { getClassNames } from '../../utils/getClassNames';
+import { JustifyContent, Breakpoint, AlignItems } from '../../types';
-const alignYToFlexAlign = (alignY: InlineProps['alignY']) => {
- if (alignY === 'top') return 'flex-start';
- if (alignY === 'center') return 'center';
- if (alignY === 'bottom') return 'flex-end';
- return undefined;
+// Function to map align values
+const mapAlignValue = (value?: InlineProps['align']) => {
+ if (typeof value === 'string') {
+ let returnedValue: JustifyContent = 'stretch';
+ if (value === 'left') returnedValue = 'start';
+ if (value === 'center') returnedValue = 'center';
+ if (value === 'right') returnedValue = 'end';
+ return returnedValue;
+ } else if (typeof value === 'object') {
+ const returnedValue: Partial> = {};
+ for (const [key, val] of Object.entries(value)) {
+ returnedValue[key as Breakpoint] = mapAlignValue(val) as JustifyContent;
+ }
+ return returnedValue;
+ }
+ return 'stretch';
};
-const alignToFlexAlignY = (align: InlineProps['align']) => {
- if (align === 'left') return 'flex-start';
- if (align === 'center') return 'center';
- if (align === 'right') return 'flex-end';
- return undefined;
+const mapAlignYValue = (value?: InlineProps['alignY']) => {
+ if (typeof value === 'string') {
+ let returnedValue: AlignItems = 'stretch';
+ if (value === 'top') returnedValue = 'start';
+ if (value === 'center') returnedValue = 'center';
+ if (value === 'bottom') returnedValue = 'end';
+ return returnedValue;
+ } else if (typeof value === 'object') {
+ const returnedValue: Partial> = {};
+ for (const [key, val] of Object.entries(value)) {
+ returnedValue[key as Breakpoint] = mapAlignYValue(val) as AlignItems;
+ }
+ return returnedValue;
+ }
+ return 'stretch';
};
/** @public */
@@ -45,16 +67,16 @@ export const Inline = forwardRef((props, ref) => {
...restProps
} = props;
- // Generate the list of class names
- const sprinklesClassName = inlineSprinkles({
- ...restProps,
+ // Generate utility class names
+ const utilityClassNames = getClassNames({
gap,
- alignItems: alignYToFlexAlign(alignY),
- justifyContent: alignToFlexAlignY(align),
+ alignItems: mapAlignYValue(alignY),
+ justifyContent: mapAlignValue(align),
+ ...restProps,
});
// Combine the base class name, the sprinkles class name, and any additional class names
- const classNames = ['inline', sprinklesClassName, className]
+ const classNames = ['canon-inline', utilityClassNames, className]
.filter(Boolean)
.join(' ');
diff --git a/packages/canon/src/components/Inline/styles.css b/packages/canon/src/components/Inline/styles.css
index fb9b1c3825..bafd29bf53 100644
--- a/packages/canon/src/components/Inline/styles.css
+++ b/packages/canon/src/components/Inline/styles.css
@@ -1,4 +1,4 @@
-.inline {
+.canon-inline {
display: flex;
flex-wrap: wrap;
}
diff --git a/packages/canon/src/components/Inline/types.ts b/packages/canon/src/components/Inline/types.ts
index 3d981d0d31..c86f500018 100644
--- a/packages/canon/src/components/Inline/types.ts
+++ b/packages/canon/src/components/Inline/types.ts
@@ -14,13 +14,18 @@
* limitations under the License.
*/
-import { AsProps, Breakpoint, ColorProps } from '../../layout/types';
-import { SpaceProps } from '../../layout/types';
+import type {
+ SpaceProps,
+ UtilityProps,
+ AsProps,
+ Breakpoint,
+} from '../../types';
/** @public */
-export interface InlineProps extends SpaceProps, ColorProps {
+export interface InlineProps extends SpaceProps {
children: React.ReactNode;
as?: AsProps;
+ gap?: UtilityProps['gap'];
align?:
| 'left'
| 'center'
diff --git a/packages/canon/src/components/Stack/Docs.mdx b/packages/canon/src/components/Stack/Docs.mdx
index f1776e0262..921618f49f 100644
--- a/packages/canon/src/components/Stack/Docs.mdx
+++ b/packages/canon/src/components/Stack/Docs.mdx
@@ -1,7 +1,7 @@
import { Meta, Unstyled, Source } from '@storybook/blocks';
import * as StackStories from './Stack.stories';
import { Title, Text, PropsTable, getProps } from '../../../docs/components';
-import { spacingProperties } from '../../layout/sprinkles.css';
+import { spacePropsList } from '../../../docs/spaceProps';
@@ -33,7 +33,7 @@ import { spacingProperties } from '../../layout/sprinkles.css';
-
+
Common questions
diff --git a/packages/canon/src/components/Stack/Stack.stories.tsx b/packages/canon/src/components/Stack/Stack.stories.tsx
index 331c2ee1e1..7e77bc861d 100644
--- a/packages/canon/src/components/Stack/Stack.stories.tsx
+++ b/packages/canon/src/components/Stack/Stack.stories.tsx
@@ -18,14 +18,11 @@ import React from 'react';
import type { Meta, StoryObj } from '@storybook/react';
import { Stack } from './Stack';
import { Box } from '../Box/Box';
-import { argTypesSpacing, argTypesColor } from '../../../docs/utils/argTypes';
const meta = {
title: 'Components/Stack',
component: Stack,
argTypes: {
- ...argTypesSpacing,
- ...argTypesColor,
align: {
control: 'inline-radio',
options: ['left', 'center', 'right'],
@@ -53,7 +50,7 @@ const FakeBox = () => (
Fake Box
diff --git a/packages/canon/src/components/Stack/Stack.tsx b/packages/canon/src/components/Stack/Stack.tsx
index e0c36f2043..522782daac 100644
--- a/packages/canon/src/components/Stack/Stack.tsx
+++ b/packages/canon/src/components/Stack/Stack.tsx
@@ -16,13 +16,25 @@
import { createElement, forwardRef } from 'react';
import { StackProps } from './types';
-import { stackSprinkles } from './sprinkles.css';
+import { getClassNames } from '../../utils/getClassNames';
+import type { AlignItems, Breakpoint } from '../../types';
-const alignToFlexAlign = (align: StackProps['align']) => {
- if (align === 'left') return 'stretch';
- if (align === 'center') return 'center';
- if (align === 'right') return 'flex-end';
- return undefined;
+// Function to map align values
+const mapAlignValue = (value?: StackProps['align']) => {
+ if (typeof value === 'string') {
+ let returnedValue: AlignItems = 'stretch';
+ if (value === 'left') returnedValue = 'stretch';
+ if (value === 'center') returnedValue = 'center';
+ if (value === 'right') returnedValue = 'end';
+ return returnedValue;
+ } else if (typeof value === 'object') {
+ const returnedValue: Partial> = {};
+ for (const [key, val] of Object.entries(value)) {
+ returnedValue[key as Breakpoint] = mapAlignValue(val) as AlignItems;
+ }
+ return returnedValue;
+ }
+ return 'stretch';
};
/** @public */
@@ -37,18 +49,15 @@ export const Stack = forwardRef((props, ref) => {
...restProps
} = props;
- // Transform the align prop
- const flexAlign = alignToFlexAlign(align);
-
- // Generate the list of class names
- const sprinklesClassName = stackSprinkles({
- ...restProps,
+ // Generate utility class names
+ const utilityClassNames = getClassNames({
gap,
- alignItems: flexAlign,
+ alignItems: mapAlignValue(align),
+ ...restProps,
});
// Combine the base class name, the sprinkles class name, and any additional class names
- const classNames = ['stack', sprinklesClassName, className]
+ const classNames = ['canon-stack', utilityClassNames, className]
.filter(Boolean)
.join(' ');
diff --git a/packages/canon/src/components/Stack/styles.css b/packages/canon/src/components/Stack/styles.css
index 784fd3b1ab..fa5c3f7e5d 100644
--- a/packages/canon/src/components/Stack/styles.css
+++ b/packages/canon/src/components/Stack/styles.css
@@ -1,4 +1,4 @@
-.stack {
+.canon-stack {
display: flex;
flex-direction: column;
}
diff --git a/packages/canon/src/components/Stack/types.ts b/packages/canon/src/components/Stack/types.ts
index 529e92d1bd..bccdc59a57 100644
--- a/packages/canon/src/components/Stack/types.ts
+++ b/packages/canon/src/components/Stack/types.ts
@@ -13,13 +13,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { AsProps, Breakpoint, ColorProps } from '../../layout/types';
-import { SpaceProps } from '../../layout/types';
+
+import type {
+ SpaceProps,
+ UtilityProps,
+ AsProps,
+ Breakpoint,
+} from '../../types';
/** @public */
-export interface StackProps extends SpaceProps, ColorProps {
+export interface StackProps extends SpaceProps {
children: React.ReactNode;
as?: AsProps;
+ gap?: UtilityProps['gap'];
align?:
| 'left'
| 'center'
diff --git a/packages/canon/src/components/Text/types.ts b/packages/canon/src/components/Text/types.ts
index b054fdf2cf..d3232e1d67 100644
--- a/packages/canon/src/components/Text/types.ts
+++ b/packages/canon/src/components/Text/types.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { Breakpoint } from '../../layout/types';
+import type { Breakpoint } from '../../types';
/** @public */
export interface TextProps {
diff --git a/packages/canon/src/contexts/canon.tsx b/packages/canon/src/contexts/canon.tsx
index 2116d60168..a8c21e8fa9 100644
--- a/packages/canon/src/contexts/canon.tsx
+++ b/packages/canon/src/contexts/canon.tsx
@@ -18,21 +18,14 @@ import React, { createContext, useContext, ReactNode } from 'react';
import { IconMap, IconNames } from '../components/Icon/types';
import { defaultIcons } from '../components/Icon/icons';
import { useMediaQuery } from '../hooks/useMediaQuery';
-import { Breakpoints } from '../types';
-
-const defaultBreakpoints: Breakpoints = {
- xs: '0px',
- sm: '640px',
- md: '768px',
- lg: '1024px',
- xl: '1280px',
- '2xl': '1536px',
-};
+import type { Breakpoint } from '../types';
interface CanonContextProps {
icons: IconMap;
- breakpoint: keyof Breakpoints;
- getResponsiveValue: (value: string | Partial) => string;
+ breakpoint: Breakpoint;
+ getResponsiveValue: (
+ value: string | Partial>,
+ ) => string;
}
const CanonContext = createContext({
@@ -44,21 +37,20 @@ const CanonContext = createContext({
interface CanonProviderProps {
children?: ReactNode;
overrides?: Partial>;
- breakpoints?: Partial;
}
/** @public */
export const CanonProvider = (props: CanonProviderProps) => {
- const { children, overrides, breakpoints = defaultBreakpoints } = props;
+ const { children, overrides } = props;
// Merge provided overrides with default icons
const combinedIcons = { ...defaultIcons, ...overrides };
- const isBreakpointSm = useMediaQuery(`(min-width: ${breakpoints.sm})`);
- const isBreakpointMd = useMediaQuery(`(min-width: ${breakpoints.md})`);
- const isBreakpointLg = useMediaQuery(`(min-width: ${breakpoints.lg})`);
- const isBreakpointXl = useMediaQuery(`(min-width: ${breakpoints.xl})`);
- const isBreakpoint2xl = useMediaQuery(`(min-width: ${breakpoints['2xl']})`);
+ const isBreakpointSm = useMediaQuery(`(min-width: 640px)`);
+ const isBreakpointMd = useMediaQuery(`(min-width: 768px)`);
+ const isBreakpointLg = useMediaQuery(`(min-width: 1024px)`);
+ const isBreakpointXl = useMediaQuery(`(min-width: 1280px)`);
+ const isBreakpoint2xl = useMediaQuery(`(min-width: 1536px)`);
// Determine the current breakpoint
const breakpoint = (() => {
@@ -70,9 +62,11 @@ export const CanonProvider = (props: CanonProviderProps) => {
return 'xs';
})();
- const getResponsiveValue = (value: string | Partial) => {
+ const getResponsiveValue = (
+ value: string | Partial>,
+ ) => {
if (typeof value === 'object') {
- const breakpointsOrder: (keyof Breakpoints)[] = [
+ const breakpointsOrder: Breakpoint[] = [
'xs',
'sm',
'md',
diff --git a/packages/canon/src/css/base.css b/packages/canon/src/css/base.css
new file mode 100644
index 0000000000..f2bf6b3363
--- /dev/null
+++ b/packages/canon/src/css/base.css
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2024 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@layer base {
+ @import './normalize.css';
+
+ *,
+ html,
+ body {
+ font-family: var(--canon-font-regular);
+ font-weight: var(--canon-font-weight-regular);
+ }
+}
diff --git a/packages/canon/src/css/core.css b/packages/canon/src/css/core.css
index 2a3f2de61c..9f8dcfff19 100644
--- a/packages/canon/src/css/core.css
+++ b/packages/canon/src/css/core.css
@@ -15,14 +15,8 @@
*/
/* Normalize */
-@import './normalize.css';
-
-*,
-html,
-body {
- font-family: var(--canon-font-regular);
- font-weight: var(--canon-font-weight-regular);
-}
+@import './base.css';
+@import './utilities.css';
/* Light theme tokens */
:root {
@@ -33,10 +27,11 @@ body {
--canon-surface-2: #f4f4f4;
--canon-surface-3: #f1f1f1;
- /* Outlines */
- --canon-outline: rgba(0, 0, 0, 0.1);
- --canon-outline-hover: rgba(0, 0, 0, 0.2);
- --canon-outline-focus: #000;
+ /* Borders */
+ --canon-border-base: rgba(0, 0, 0, 0.1);
+ --canon-border-warning: #e36d05;
+ --canon-border-error: #e22b2b;
+ --canon-border-selected: #1db954;
/* States - Add more states */
--canon-error: #f50000;
@@ -47,9 +42,9 @@ body {
--canon-text-secondary: #646464;
/* Box shadows */
- --canon-box-shadow-small: 0 0 0 1px rgba(0, 0, 0, 0.05);
- --canon-box-shadow-medium: 0 0 0 1px rgba(0, 0, 0, 0.1);
- --canon-box-shadow-large: 0 0 0 1px rgba(0, 0, 0, 0.2);
+ /* --canon-box-shadow-small: 0 0 0 1px rgba(0, 0, 0, 0.05); */
+ /* --canon-box-shadow-medium: 0 0 0 1px rgba(0, 0, 0, 0.1); */
+ /* --canon-box-shadow-large: 0 0 0 1px rgba(0, 0, 0, 0.2); */
/* Font families */
--canon-font-regular: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
@@ -108,10 +103,11 @@ body {
--canon-surface-1: #121212;
--canon-surface-2: #1a1a1a;
- /* Outlines */
- --canon-outline: rgba(255, 255, 255, 0.2);
- --canon-outline-hover: rgba(255, 255, 255, 0.4);
- --canon-outline-focus: #fff;
+ /* Borders */
+ --canon-border-base: rgba(255, 255, 255, 0.2);
+ --canon-border-warning: #f50000;
+ --canon-border-error: #f87503;
+ --canon-border-selected: #25d262;
/* States - Add more states */
--canon-error: #f50000;
diff --git a/packages/canon/src/components/Inline/sprinkles.css.ts b/packages/canon/src/css/utilities.css
similarity index 51%
rename from packages/canon/src/components/Inline/sprinkles.css.ts
rename to packages/canon/src/css/utilities.css
index ccd4126608..ad4a8d03b4 100644
--- a/packages/canon/src/components/Inline/sprinkles.css.ts
+++ b/packages/canon/src/css/utilities.css
@@ -14,21 +14,20 @@
* limitations under the License.
*/
-import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles';
-import { breakpoints } from '../../layout/properties';
-import { colorProperties, spacingProperties } from '../../layout/sprinkles.css';
+/* Default utilities */
+@import './utilities/xs.css';
-export const inlineProperties = defineProperties({
- conditions: breakpoints,
- defaultCondition: 'xs',
- properties: {
- alignItems: ['flex-start', 'center', 'flex-end'],
- justifyContent: ['flex-start', 'center', 'flex-end'],
- },
-});
+/* Min 640px */
+@import './utilities/sm.css';
-export const inlineSprinkles = createSprinkles(
- spacingProperties,
- colorProperties,
- inlineProperties,
-);
+/* Min 768px */
+@import './utilities/md.css';
+
+/* Min 1024px */
+@import './utilities/lg.css';
+
+/* Min 1280px */
+@import './utilities/xl.css';
+
+/* Min 1536px */
+@import './utilities/2xl.css';
diff --git a/packages/canon/src/css/utilities/2xl.css b/packages/canon/src/css/utilities/2xl.css
new file mode 100644
index 0000000000..8938d0dbc5
--- /dev/null
+++ b/packages/canon/src/css/utilities/2xl.css
@@ -0,0 +1,884 @@
+/*
+ * Copyright 2024 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@layer utilities {
+ @media (min-width: 1536px) {
+ .cu-2xl-block {
+ display: block;
+ }
+
+ .cu-2xl-border-base {
+ border-color: var(--canon-border-base);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-2xl-border-error {
+ border-color: var(--canon-border-error);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-2xl-border-none {
+ border-color: transparent;
+ border-width: 0;
+ }
+
+ .cu-2xl-border-selected {
+ border-color: var(--canon-border-selected);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-2xl-border-warning {
+ border-color: var(--canon-border-warning);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-2xl-col-end-1 {
+ grid-column-end: 1;
+ }
+
+ .cu-2xl-col-end-10 {
+ grid-column-end: 10;
+ }
+
+ .cu-2xl-col-end-11 {
+ grid-column-end: 11;
+ }
+
+ .cu-2xl-col-end-12 {
+ grid-column-end: 12;
+ }
+
+ .cu-2xl-col-end-13 {
+ grid-column-end: 13;
+ }
+
+ .cu-2xl-col-end-2 {
+ grid-column-end: 2;
+ }
+
+ .cu-2xl-col-end-3 {
+ grid-column-end: 3;
+ }
+
+ .cu-2xl-col-end-4 {
+ grid-column-end: 4;
+ }
+
+ .cu-2xl-col-end-5 {
+ grid-column-end: 5;
+ }
+
+ .cu-2xl-col-end-6 {
+ grid-column-end: 6;
+ }
+
+ .cu-2xl-col-end-7 {
+ grid-column-end: 7;
+ }
+
+ .cu-2xl-col-end-8 {
+ grid-column-end: 8;
+ }
+
+ .cu-2xl-col-end-9 {
+ grid-column-end: 9;
+ }
+
+ .cu-2xl-col-end-auto {
+ grid-column-end: auto;
+ }
+
+ .cu-2xl-col-span-1 {
+ grid-column: span 1 / span 1;
+ }
+
+ .cu-2xl-col-span-10 {
+ grid-column: span 10 / span 10;
+ }
+
+ .cu-2xl-col-span-11 {
+ grid-column: span 11 / span 11;
+ }
+
+ .cu-2xl-col-span-12 {
+ grid-column: span 12 / span 12;
+ }
+
+ .cu-2xl-col-span-2 {
+ grid-column: span 2 / span 2;
+ }
+
+ .cu-2xl-col-span-3 {
+ grid-column: span 3 / span 3;
+ }
+
+ .cu-2xl-col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+
+ .cu-2xl-col-span-5 {
+ grid-column: span 5 / span 5;
+ }
+
+ .cu-2xl-col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+
+ .cu-2xl-col-span-7 {
+ grid-column: span 7 / span 7;
+ }
+
+ .cu-2xl-col-span-8 {
+ grid-column: span 8 / span 8;
+ }
+
+ .cu-2xl-col-span-9 {
+ grid-column: span 9 / span 9;
+ }
+
+ .cu-2xl-col-span-auto {
+ grid-column: span auto / span auto;
+ }
+
+ .cu-2xl-col-start-1 {
+ grid-column-start: 1;
+ }
+
+ .cu-2xl-col-start-10 {
+ grid-column-start: 10;
+ }
+
+ .cu-2xl-col-start-11 {
+ grid-column-start: 11;
+ }
+
+ .cu-2xl-col-start-12 {
+ grid-column-start: 12;
+ }
+
+ .cu-2xl-col-start-13 {
+ grid-column-start: 13;
+ }
+
+ .cu-2xl-col-start-2 {
+ grid-column-start: 2;
+ }
+
+ .cu-2xl-col-start-3 {
+ grid-column-start: 3;
+ }
+
+ .cu-2xl-col-start-4 {
+ grid-column-start: 4;
+ }
+
+ .cu-2xl-col-start-5 {
+ grid-column-start: 5;
+ }
+
+ .cu-2xl-col-start-6 {
+ grid-column-start: 6;
+ }
+
+ .cu-2xl-col-start-7 {
+ grid-column-start: 7;
+ }
+
+ .cu-2xl-col-start-8 {
+ grid-column-start: 8;
+ }
+
+ .cu-2xl-col-start-9 {
+ grid-column-start: 9;
+ }
+
+ .cu-2xl-col-start-auto {
+ grid-column-start: auto;
+ }
+
+ .cu-2xl-flex {
+ display: flex;
+ }
+
+ .cu-2xl-flex-col {
+ flex-direction: column;
+ }
+
+ .cu-2xl-flex-nowrap {
+ flex-wrap: nowrap;
+ }
+
+ .cu-2xl-flex-row {
+ flex-direction: row;
+ }
+
+ .cu-2xl-flex-wrap {
+ flex-wrap: wrap;
+ }
+
+ .cu-2xl-flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+
+ .cu-2xl-gap-2xl {
+ gap: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-gap-lg {
+ gap: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-gap-md {
+ gap: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-gap-none {
+ gap: 0;
+ }
+
+ .cu-2xl-gap-sm {
+ gap: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-gap-xl {
+ gap: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-gap-xs {
+ gap: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-grid {
+ display: grid;
+ }
+
+ .cu-2xl-grid-cols-1 {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-10 {
+ grid-template-columns: repeat(10, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-11 {
+ grid-template-columns: repeat(11, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-12 {
+ grid-template-columns: repeat(12, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-5 {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-6 {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-7 {
+ grid-template-columns: repeat(7, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-8 {
+ grid-template-columns: repeat(8, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-9 {
+ grid-template-columns: repeat(9, minmax(0, 1fr));
+ }
+
+ .cu-2xl-grid-cols-auto {
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
+ }
+
+ .cu-2xl-hidden {
+ display: none;
+ }
+
+ .cu-2xl-inline {
+ display: inline;
+ }
+
+ .cu-2xl-inline-block {
+ display: inline-block;
+ }
+
+ .cu-2xl-items-center {
+ align-items: center;
+ }
+
+ .cu-2xl-items-end {
+ align-items: flex-end;
+ }
+
+ .cu-2xl-items-start {
+ align-items: flex-start;
+ }
+
+ .cu-2xl-items-stretch {
+ align-items: stretch;
+ }
+
+ .cu-2xl-justify-around {
+ justify-content: space-around;
+ }
+
+ .cu-2xl-justify-between {
+ justify-content: space-between;
+ }
+
+ .cu-2xl-justify-center {
+ justify-content: center;
+ }
+
+ .cu-2xl-justify-end {
+ justify-content: flex-end;
+ }
+
+ .cu-2xl-justify-start {
+ justify-content: flex-start;
+ }
+
+ .cu-2xl-justify-stretch {
+ justify-content: stretch;
+ }
+
+ .cu-2xl-m-2xl {
+ margin: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-m-lg {
+ margin: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-m-md {
+ margin: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-m-none {
+ margin: 0;
+ }
+
+ .cu-2xl-m-sm {
+ margin: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-m-xl {
+ margin: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-m-xs {
+ margin: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-mb-2xl {
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-mb-lg {
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-mb-md {
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-mb-none {
+ margin-bottom: 0;
+ }
+
+ .cu-2xl-mb-sm {
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-mb-xl {
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-mb-xs {
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-ml-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-ml-lg {
+ margin-left: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-ml-md {
+ margin-left: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-ml-none {
+ margin-left: 0;
+ }
+
+ .cu-2xl-ml-sm {
+ margin-left: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-ml-xl {
+ margin-left: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-ml-xs {
+ margin-left: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-mr-2xl {
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-mr-lg {
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-mr-md {
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-mr-none {
+ margin-right: 0;
+ }
+
+ .cu-2xl-mr-sm {
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-mr-xl {
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-mr-xs {
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-mt-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-mt-lg {
+ margin-top: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-mt-md {
+ margin-top: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-mt-none {
+ margin-top: 0;
+ }
+
+ .cu-2xl-mt-sm {
+ margin-top: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-mt-xl {
+ margin-top: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-mt-xs {
+ margin-top: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-mx-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-mx-lg {
+ margin-left: var(--canon-spacing-lg);
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-mx-md {
+ margin-left: var(--canon-spacing-md);
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-mx-none {
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+ .cu-2xl-mx-sm {
+ margin-left: var(--canon-spacing-sm);
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-mx-xl {
+ margin-left: var(--canon-spacing-xl);
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-mx-xs {
+ margin-left: var(--canon-spacing-xs);
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-my-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-my-lg {
+ margin-top: var(--canon-spacing-lg);
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-my-md {
+ margin-top: var(--canon-spacing-md);
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-my-none {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+
+ .cu-2xl-my-sm {
+ margin-top: var(--canon-spacing-sm);
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-my-xl {
+ margin-top: var(--canon-spacing-xl);
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-my-xs {
+ margin-top: var(--canon-spacing-xs);
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-p-2xl {
+ padding: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-p-lg {
+ padding: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-p-md {
+ padding: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-p-none {
+ padding: 0;
+ }
+
+ .cu-2xl-p-sm {
+ padding: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-p-xl {
+ padding: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-p-xs {
+ padding: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-pb-2xl {
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-pb-lg {
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-pb-md {
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-pb-none {
+ padding-bottom: 0;
+ }
+
+ .cu-2xl-pb-sm {
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-pb-xl {
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-pb-xs {
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-pl-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-pl-lg {
+ padding-left: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-pl-md {
+ padding-left: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-pl-none {
+ padding-left: 0;
+ }
+
+ .cu-2xl-pl-sm {
+ padding-left: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-pl-xl {
+ padding-left: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-pl-xs {
+ padding-left: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-pr-2xl {
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-pr-lg {
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-pr-md {
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-pr-none {
+ padding-right: 0;
+ }
+
+ .cu-2xl-pr-sm {
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-pr-xl {
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-pr-xs {
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-pt-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-pt-lg {
+ padding-top: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-pt-md {
+ padding-top: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-pt-none {
+ padding-top: 0;
+ }
+
+ .cu-2xl-pt-sm {
+ padding-top: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-pt-xl {
+ padding-top: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-pt-xs {
+ padding-top: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-px-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-px-lg {
+ padding-left: var(--canon-spacing-lg);
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-px-md {
+ padding-left: var(--canon-spacing-md);
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-px-none {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .cu-2xl-px-sm {
+ padding-left: var(--canon-spacing-sm);
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-px-xl {
+ padding-left: var(--canon-spacing-xl);
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-px-xs {
+ padding-left: var(--canon-spacing-xs);
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-py-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-2xl-py-lg {
+ padding-top: var(--canon-spacing-lg);
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-2xl-py-md {
+ padding-top: var(--canon-spacing-md);
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-2xl-py-none {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .cu-2xl-py-sm {
+ padding-top: var(--canon-spacing-sm);
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-2xl-py-xl {
+ padding-top: var(--canon-spacing-xl);
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-2xl-py-xs {
+ padding-top: var(--canon-spacing-xs);
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-2xl-rounded-2xl {
+ border-radius: var(--canon-border-radius-2xl);
+ }
+
+ .cu-2xl-rounded-2xs {
+ border-radius: var(--canon-border-radius-2xs);
+ }
+
+ .cu-2xl-rounded-lg {
+ border-radius: var(--canon-border-radius-lg);
+ }
+
+ .cu-2xl-rounded-md {
+ border-radius: var(--canon-border-radius-md);
+ }
+
+ .cu-2xl-rounded-none {
+ border-radius: 0;
+ }
+
+ .cu-2xl-rounded-sm {
+ border-radius: var(--canon-border-radius-sm);
+ }
+
+ .cu-2xl-rounded-xl {
+ border-radius: var(--canon-border-radius-xl);
+ }
+
+ .cu-2xl-rounded-xs {
+ border-radius: var(--canon-border-radius-xs);
+ }
+
+ .cu-2xl-row-span-1 {
+ grid-row: span 1 / span 1;
+ }
+
+ .cu-2xl-row-span-10 {
+ grid-row: span 10 / span 10;
+ }
+
+ .cu-2xl-row-span-11 {
+ grid-row: span 11 / span 11;
+ }
+
+ .cu-2xl-row-span-12 {
+ grid-row: span 12 / span 12;
+ }
+
+ .cu-2xl-row-span-2 {
+ grid-row: span 2 / span 2;
+ }
+
+ .cu-2xl-row-span-3 {
+ grid-row: span 3 / span 3;
+ }
+
+ .cu-2xl-row-span-4 {
+ grid-row: span 4 / span 4;
+ }
+
+ .cu-2xl-row-span-5 {
+ grid-row: span 5 / span 5;
+ }
+
+ .cu-2xl-row-span-6 {
+ grid-row: span 6 / span 6;
+ }
+
+ .cu-2xl-row-span-7 {
+ grid-row: span 7 / span 7;
+ }
+
+ .cu-2xl-row-span-8 {
+ grid-row: span 8 / span 8;
+ }
+
+ .cu-2xl-row-span-9 {
+ grid-row: span 9 / span 9;
+ }
+
+ .cu-2xl-row-span-auto {
+ grid-row: span auto / span auto;
+ }
+
+ .cu-2xl-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+ }
+}
diff --git a/packages/canon/src/css/utilities/lg.css b/packages/canon/src/css/utilities/lg.css
new file mode 100644
index 0000000000..3053a0dde3
--- /dev/null
+++ b/packages/canon/src/css/utilities/lg.css
@@ -0,0 +1,884 @@
+/*
+ * Copyright 2024 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@layer utilities {
+ @media (min-width: 1024px) {
+ .cu-lg-block {
+ display: block;
+ }
+
+ .cu-lg-border-base {
+ border-color: var(--canon-border-base);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-lg-border-error {
+ border-color: var(--canon-border-error);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-lg-border-none {
+ border-color: transparent;
+ border-width: 0;
+ }
+
+ .cu-lg-border-selected {
+ border-color: var(--canon-border-selected);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-lg-border-warning {
+ border-color: var(--canon-border-warning);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-lg-col-end-1 {
+ grid-column-end: 1;
+ }
+
+ .cu-lg-col-end-10 {
+ grid-column-end: 10;
+ }
+
+ .cu-lg-col-end-11 {
+ grid-column-end: 11;
+ }
+
+ .cu-lg-col-end-12 {
+ grid-column-end: 12;
+ }
+
+ .cu-lg-col-end-13 {
+ grid-column-end: 13;
+ }
+
+ .cu-lg-col-end-2 {
+ grid-column-end: 2;
+ }
+
+ .cu-lg-col-end-3 {
+ grid-column-end: 3;
+ }
+
+ .cu-lg-col-end-4 {
+ grid-column-end: 4;
+ }
+
+ .cu-lg-col-end-5 {
+ grid-column-end: 5;
+ }
+
+ .cu-lg-col-end-6 {
+ grid-column-end: 6;
+ }
+
+ .cu-lg-col-end-7 {
+ grid-column-end: 7;
+ }
+
+ .cu-lg-col-end-8 {
+ grid-column-end: 8;
+ }
+
+ .cu-lg-col-end-9 {
+ grid-column-end: 9;
+ }
+
+ .cu-lg-col-end-auto {
+ grid-column-end: auto;
+ }
+
+ .cu-lg-col-span-1 {
+ grid-column: span 1 / span 1;
+ }
+
+ .cu-lg-col-span-10 {
+ grid-column: span 10 / span 10;
+ }
+
+ .cu-lg-col-span-11 {
+ grid-column: span 11 / span 11;
+ }
+
+ .cu-lg-col-span-12 {
+ grid-column: span 12 / span 12;
+ }
+
+ .cu-lg-col-span-2 {
+ grid-column: span 2 / span 2;
+ }
+
+ .cu-lg-col-span-3 {
+ grid-column: span 3 / span 3;
+ }
+
+ .cu-lg-col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+
+ .cu-lg-col-span-5 {
+ grid-column: span 5 / span 5;
+ }
+
+ .cu-lg-col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+
+ .cu-lg-col-span-7 {
+ grid-column: span 7 / span 7;
+ }
+
+ .cu-lg-col-span-8 {
+ grid-column: span 8 / span 8;
+ }
+
+ .cu-lg-col-span-9 {
+ grid-column: span 9 / span 9;
+ }
+
+ .cu-lg-col-span-auto {
+ grid-column: span auto / span auto;
+ }
+
+ .cu-lg-col-start-1 {
+ grid-column-start: 1;
+ }
+
+ .cu-lg-col-start-10 {
+ grid-column-start: 10;
+ }
+
+ .cu-lg-col-start-11 {
+ grid-column-start: 11;
+ }
+
+ .cu-lg-col-start-12 {
+ grid-column-start: 12;
+ }
+
+ .cu-lg-col-start-13 {
+ grid-column-start: 13;
+ }
+
+ .cu-lg-col-start-2 {
+ grid-column-start: 2;
+ }
+
+ .cu-lg-col-start-3 {
+ grid-column-start: 3;
+ }
+
+ .cu-lg-col-start-4 {
+ grid-column-start: 4;
+ }
+
+ .cu-lg-col-start-5 {
+ grid-column-start: 5;
+ }
+
+ .cu-lg-col-start-6 {
+ grid-column-start: 6;
+ }
+
+ .cu-lg-col-start-7 {
+ grid-column-start: 7;
+ }
+
+ .cu-lg-col-start-8 {
+ grid-column-start: 8;
+ }
+
+ .cu-lg-col-start-9 {
+ grid-column-start: 9;
+ }
+
+ .cu-lg-col-start-auto {
+ grid-column-start: auto;
+ }
+
+ .cu-lg-flex {
+ display: flex;
+ }
+
+ .cu-lg-flex-col {
+ flex-direction: column;
+ }
+
+ .cu-lg-flex-nowrap {
+ flex-wrap: nowrap;
+ }
+
+ .cu-lg-flex-row {
+ flex-direction: row;
+ }
+
+ .cu-lg-flex-wrap {
+ flex-wrap: wrap;
+ }
+
+ .cu-lg-flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+
+ .cu-lg-gap-2xl {
+ gap: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-gap-lg {
+ gap: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-gap-md {
+ gap: var(--canon-spacing-md);
+ }
+
+ .cu-lg-gap-none {
+ gap: 0;
+ }
+
+ .cu-lg-gap-sm {
+ gap: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-gap-xl {
+ gap: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-gap-xs {
+ gap: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-grid {
+ display: grid;
+ }
+
+ .cu-lg-grid-cols-1 {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-10 {
+ grid-template-columns: repeat(10, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-11 {
+ grid-template-columns: repeat(11, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-12 {
+ grid-template-columns: repeat(12, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-5 {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-6 {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-7 {
+ grid-template-columns: repeat(7, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-8 {
+ grid-template-columns: repeat(8, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-9 {
+ grid-template-columns: repeat(9, minmax(0, 1fr));
+ }
+
+ .cu-lg-grid-cols-auto {
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
+ }
+
+ .cu-lg-hidden {
+ display: none;
+ }
+
+ .cu-lg-inline {
+ display: inline;
+ }
+
+ .cu-lg-inline-block {
+ display: inline-block;
+ }
+
+ .cu-lg-items-center {
+ align-items: center;
+ }
+
+ .cu-lg-items-end {
+ align-items: flex-end;
+ }
+
+ .cu-lg-items-start {
+ align-items: flex-start;
+ }
+
+ .cu-lg-items-stretch {
+ align-items: stretch;
+ }
+
+ .cu-lg-justify-around {
+ justify-content: space-around;
+ }
+
+ .cu-lg-justify-between {
+ justify-content: space-between;
+ }
+
+ .cu-lg-justify-center {
+ justify-content: center;
+ }
+
+ .cu-lg-justify-end {
+ justify-content: flex-end;
+ }
+
+ .cu-lg-justify-start {
+ justify-content: flex-start;
+ }
+
+ .cu-lg-justify-stretch {
+ justify-content: stretch;
+ }
+
+ .cu-lg-m-2xl {
+ margin: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-m-lg {
+ margin: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-m-md {
+ margin: var(--canon-spacing-md);
+ }
+
+ .cu-lg-m-none {
+ margin: 0;
+ }
+
+ .cu-lg-m-sm {
+ margin: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-m-xl {
+ margin: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-m-xs {
+ margin: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-mb-2xl {
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-mb-lg {
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-mb-md {
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-lg-mb-none {
+ margin-bottom: 0;
+ }
+
+ .cu-lg-mb-sm {
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-mb-xl {
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-mb-xs {
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-ml-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-ml-lg {
+ margin-left: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-ml-md {
+ margin-left: var(--canon-spacing-md);
+ }
+
+ .cu-lg-ml-none {
+ margin-left: 0;
+ }
+
+ .cu-lg-ml-sm {
+ margin-left: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-ml-xl {
+ margin-left: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-ml-xs {
+ margin-left: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-mr-2xl {
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-mr-lg {
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-mr-md {
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-lg-mr-none {
+ margin-right: 0;
+ }
+
+ .cu-lg-mr-sm {
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-mr-xl {
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-mr-xs {
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-mt-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-mt-lg {
+ margin-top: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-mt-md {
+ margin-top: var(--canon-spacing-md);
+ }
+
+ .cu-lg-mt-none {
+ margin-top: 0;
+ }
+
+ .cu-lg-mt-sm {
+ margin-top: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-mt-xl {
+ margin-top: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-mt-xs {
+ margin-top: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-mx-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-mx-lg {
+ margin-left: var(--canon-spacing-lg);
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-mx-md {
+ margin-left: var(--canon-spacing-md);
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-lg-mx-none {
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+ .cu-lg-mx-sm {
+ margin-left: var(--canon-spacing-sm);
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-mx-xl {
+ margin-left: var(--canon-spacing-xl);
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-mx-xs {
+ margin-left: var(--canon-spacing-xs);
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-my-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-my-lg {
+ margin-top: var(--canon-spacing-lg);
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-my-md {
+ margin-top: var(--canon-spacing-md);
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-lg-my-none {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+
+ .cu-lg-my-sm {
+ margin-top: var(--canon-spacing-sm);
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-my-xl {
+ margin-top: var(--canon-spacing-xl);
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-my-xs {
+ margin-top: var(--canon-spacing-xs);
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-p-2xl {
+ padding: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-p-lg {
+ padding: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-p-md {
+ padding: var(--canon-spacing-md);
+ }
+
+ .cu-lg-p-none {
+ padding: 0;
+ }
+
+ .cu-lg-p-sm {
+ padding: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-p-xl {
+ padding: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-p-xs {
+ padding: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-pb-2xl {
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-pb-lg {
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-pb-md {
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-lg-pb-none {
+ padding-bottom: 0;
+ }
+
+ .cu-lg-pb-sm {
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-pb-xl {
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-pb-xs {
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-pl-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-pl-lg {
+ padding-left: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-pl-md {
+ padding-left: var(--canon-spacing-md);
+ }
+
+ .cu-lg-pl-none {
+ padding-left: 0;
+ }
+
+ .cu-lg-pl-sm {
+ padding-left: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-pl-xl {
+ padding-left: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-pl-xs {
+ padding-left: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-pr-2xl {
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-pr-lg {
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-pr-md {
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-lg-pr-none {
+ padding-right: 0;
+ }
+
+ .cu-lg-pr-sm {
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-pr-xl {
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-pr-xs {
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-pt-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-pt-lg {
+ padding-top: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-pt-md {
+ padding-top: var(--canon-spacing-md);
+ }
+
+ .cu-lg-pt-none {
+ padding-top: 0;
+ }
+
+ .cu-lg-pt-sm {
+ padding-top: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-pt-xl {
+ padding-top: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-pt-xs {
+ padding-top: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-px-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-px-lg {
+ padding-left: var(--canon-spacing-lg);
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-px-md {
+ padding-left: var(--canon-spacing-md);
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-lg-px-none {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .cu-lg-px-sm {
+ padding-left: var(--canon-spacing-sm);
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-px-xl {
+ padding-left: var(--canon-spacing-xl);
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-px-xs {
+ padding-left: var(--canon-spacing-xs);
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-py-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-lg-py-lg {
+ padding-top: var(--canon-spacing-lg);
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-lg-py-md {
+ padding-top: var(--canon-spacing-md);
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-lg-py-none {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .cu-lg-py-sm {
+ padding-top: var(--canon-spacing-sm);
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-lg-py-xl {
+ padding-top: var(--canon-spacing-xl);
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-lg-py-xs {
+ padding-top: var(--canon-spacing-xs);
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-lg-rounded-2xl {
+ border-radius: var(--canon-border-radius-2xl);
+ }
+
+ .cu-lg-rounded-2xs {
+ border-radius: var(--canon-border-radius-2xs);
+ }
+
+ .cu-lg-rounded-lg {
+ border-radius: var(--canon-border-radius-lg);
+ }
+
+ .cu-lg-rounded-md {
+ border-radius: var(--canon-border-radius-md);
+ }
+
+ .cu-lg-rounded-none {
+ border-radius: 0;
+ }
+
+ .cu-lg-rounded-sm {
+ border-radius: var(--canon-border-radius-sm);
+ }
+
+ .cu-lg-rounded-xl {
+ border-radius: var(--canon-border-radius-xl);
+ }
+
+ .cu-lg-rounded-xs {
+ border-radius: var(--canon-border-radius-xs);
+ }
+
+ .cu-lg-row-span-1 {
+ grid-row: span 1 / span 1;
+ }
+
+ .cu-lg-row-span-10 {
+ grid-row: span 10 / span 10;
+ }
+
+ .cu-lg-row-span-11 {
+ grid-row: span 11 / span 11;
+ }
+
+ .cu-lg-row-span-12 {
+ grid-row: span 12 / span 12;
+ }
+
+ .cu-lg-row-span-2 {
+ grid-row: span 2 / span 2;
+ }
+
+ .cu-lg-row-span-3 {
+ grid-row: span 3 / span 3;
+ }
+
+ .cu-lg-row-span-4 {
+ grid-row: span 4 / span 4;
+ }
+
+ .cu-lg-row-span-5 {
+ grid-row: span 5 / span 5;
+ }
+
+ .cu-lg-row-span-6 {
+ grid-row: span 6 / span 6;
+ }
+
+ .cu-lg-row-span-7 {
+ grid-row: span 7 / span 7;
+ }
+
+ .cu-lg-row-span-8 {
+ grid-row: span 8 / span 8;
+ }
+
+ .cu-lg-row-span-9 {
+ grid-row: span 9 / span 9;
+ }
+
+ .cu-lg-row-span-auto {
+ grid-row: span auto / span auto;
+ }
+
+ .cu-lg-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+ }
+}
diff --git a/packages/canon/src/css/utilities/md.css b/packages/canon/src/css/utilities/md.css
new file mode 100644
index 0000000000..62491f047a
--- /dev/null
+++ b/packages/canon/src/css/utilities/md.css
@@ -0,0 +1,884 @@
+/*
+ * Copyright 2024 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@layer utilities {
+ @media (min-width: 768px) {
+ .cu-md-block {
+ display: block;
+ }
+
+ .cu-md-border-base {
+ border-color: var(--canon-border-base);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-md-border-error {
+ border-color: var(--canon-border-error);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-md-border-none {
+ border-color: transparent;
+ border-width: 0;
+ }
+
+ .cu-md-border-selected {
+ border-color: var(--canon-border-selected);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-md-border-warning {
+ border-color: var(--canon-border-warning);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-md-col-end-1 {
+ grid-column-end: 1;
+ }
+
+ .cu-md-col-end-10 {
+ grid-column-end: 10;
+ }
+
+ .cu-md-col-end-11 {
+ grid-column-end: 11;
+ }
+
+ .cu-md-col-end-12 {
+ grid-column-end: 12;
+ }
+
+ .cu-md-col-end-13 {
+ grid-column-end: 13;
+ }
+
+ .cu-md-col-end-2 {
+ grid-column-end: 2;
+ }
+
+ .cu-md-col-end-3 {
+ grid-column-end: 3;
+ }
+
+ .cu-md-col-end-4 {
+ grid-column-end: 4;
+ }
+
+ .cu-md-col-end-5 {
+ grid-column-end: 5;
+ }
+
+ .cu-md-col-end-6 {
+ grid-column-end: 6;
+ }
+
+ .cu-md-col-end-7 {
+ grid-column-end: 7;
+ }
+
+ .cu-md-col-end-8 {
+ grid-column-end: 8;
+ }
+
+ .cu-md-col-end-9 {
+ grid-column-end: 9;
+ }
+
+ .cu-md-col-end-auto {
+ grid-column-end: auto;
+ }
+
+ .cu-md-col-span-1 {
+ grid-column: span 1 / span 1;
+ }
+
+ .cu-md-col-span-10 {
+ grid-column: span 10 / span 10;
+ }
+
+ .cu-md-col-span-11 {
+ grid-column: span 11 / span 11;
+ }
+
+ .cu-md-col-span-12 {
+ grid-column: span 12 / span 12;
+ }
+
+ .cu-md-col-span-2 {
+ grid-column: span 2 / span 2;
+ }
+
+ .cu-md-col-span-3 {
+ grid-column: span 3 / span 3;
+ }
+
+ .cu-md-col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+
+ .cu-md-col-span-5 {
+ grid-column: span 5 / span 5;
+ }
+
+ .cu-md-col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+
+ .cu-md-col-span-7 {
+ grid-column: span 7 / span 7;
+ }
+
+ .cu-md-col-span-8 {
+ grid-column: span 8 / span 8;
+ }
+
+ .cu-md-col-span-9 {
+ grid-column: span 9 / span 9;
+ }
+
+ .cu-md-col-span-auto {
+ grid-column: span auto / span auto;
+ }
+
+ .cu-md-col-start-1 {
+ grid-column-start: 1;
+ }
+
+ .cu-md-col-start-10 {
+ grid-column-start: 10;
+ }
+
+ .cu-md-col-start-11 {
+ grid-column-start: 11;
+ }
+
+ .cu-md-col-start-12 {
+ grid-column-start: 12;
+ }
+
+ .cu-md-col-start-13 {
+ grid-column-start: 13;
+ }
+
+ .cu-md-col-start-2 {
+ grid-column-start: 2;
+ }
+
+ .cu-md-col-start-3 {
+ grid-column-start: 3;
+ }
+
+ .cu-md-col-start-4 {
+ grid-column-start: 4;
+ }
+
+ .cu-md-col-start-5 {
+ grid-column-start: 5;
+ }
+
+ .cu-md-col-start-6 {
+ grid-column-start: 6;
+ }
+
+ .cu-md-col-start-7 {
+ grid-column-start: 7;
+ }
+
+ .cu-md-col-start-8 {
+ grid-column-start: 8;
+ }
+
+ .cu-md-col-start-9 {
+ grid-column-start: 9;
+ }
+
+ .cu-md-col-start-auto {
+ grid-column-start: auto;
+ }
+
+ .cu-md-flex {
+ display: flex;
+ }
+
+ .cu-md-flex-col {
+ flex-direction: column;
+ }
+
+ .cu-md-flex-nowrap {
+ flex-wrap: nowrap;
+ }
+
+ .cu-md-flex-row {
+ flex-direction: row;
+ }
+
+ .cu-md-flex-wrap {
+ flex-wrap: wrap;
+ }
+
+ .cu-md-flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+
+ .cu-md-gap-2xl {
+ gap: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-gap-lg {
+ gap: var(--canon-spacing-lg);
+ }
+
+ .cu-md-gap-md {
+ gap: var(--canon-spacing-md);
+ }
+
+ .cu-md-gap-none {
+ gap: 0;
+ }
+
+ .cu-md-gap-sm {
+ gap: var(--canon-spacing-sm);
+ }
+
+ .cu-md-gap-xl {
+ gap: var(--canon-spacing-xl);
+ }
+
+ .cu-md-gap-xs {
+ gap: var(--canon-spacing-xs);
+ }
+
+ .cu-md-grid {
+ display: grid;
+ }
+
+ .cu-md-grid-cols-1 {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-10 {
+ grid-template-columns: repeat(10, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-11 {
+ grid-template-columns: repeat(11, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-12 {
+ grid-template-columns: repeat(12, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-5 {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-6 {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-7 {
+ grid-template-columns: repeat(7, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-8 {
+ grid-template-columns: repeat(8, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-9 {
+ grid-template-columns: repeat(9, minmax(0, 1fr));
+ }
+
+ .cu-md-grid-cols-auto {
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
+ }
+
+ .cu-md-hidden {
+ display: none;
+ }
+
+ .cu-md-inline {
+ display: inline;
+ }
+
+ .cu-md-inline-block {
+ display: inline-block;
+ }
+
+ .cu-md-items-center {
+ align-items: center;
+ }
+
+ .cu-md-items-end {
+ align-items: flex-end;
+ }
+
+ .cu-md-items-start {
+ align-items: flex-start;
+ }
+
+ .cu-md-items-stretch {
+ align-items: stretch;
+ }
+
+ .cu-md-justify-around {
+ justify-content: space-around;
+ }
+
+ .cu-md-justify-between {
+ justify-content: space-between;
+ }
+
+ .cu-md-justify-center {
+ justify-content: center;
+ }
+
+ .cu-md-justify-end {
+ justify-content: flex-end;
+ }
+
+ .cu-md-justify-start {
+ justify-content: flex-start;
+ }
+
+ .cu-md-justify-stretch {
+ justify-content: stretch;
+ }
+
+ .cu-md-m-2xl {
+ margin: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-m-lg {
+ margin: var(--canon-spacing-lg);
+ }
+
+ .cu-md-m-md {
+ margin: var(--canon-spacing-md);
+ }
+
+ .cu-md-m-none {
+ margin: 0;
+ }
+
+ .cu-md-m-sm {
+ margin: var(--canon-spacing-sm);
+ }
+
+ .cu-md-m-xl {
+ margin: var(--canon-spacing-xl);
+ }
+
+ .cu-md-m-xs {
+ margin: var(--canon-spacing-xs);
+ }
+
+ .cu-md-mb-2xl {
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-mb-lg {
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-md-mb-md {
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-md-mb-none {
+ margin-bottom: 0;
+ }
+
+ .cu-md-mb-sm {
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-md-mb-xl {
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-md-mb-xs {
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-md-ml-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-ml-lg {
+ margin-left: var(--canon-spacing-lg);
+ }
+
+ .cu-md-ml-md {
+ margin-left: var(--canon-spacing-md);
+ }
+
+ .cu-md-ml-none {
+ margin-left: 0;
+ }
+
+ .cu-md-ml-sm {
+ margin-left: var(--canon-spacing-sm);
+ }
+
+ .cu-md-ml-xl {
+ margin-left: var(--canon-spacing-xl);
+ }
+
+ .cu-md-ml-xs {
+ margin-left: var(--canon-spacing-xs);
+ }
+
+ .cu-md-mr-2xl {
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-mr-lg {
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-md-mr-md {
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-md-mr-none {
+ margin-right: 0;
+ }
+
+ .cu-md-mr-sm {
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-md-mr-xl {
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-md-mr-xs {
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-md-mt-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-mt-lg {
+ margin-top: var(--canon-spacing-lg);
+ }
+
+ .cu-md-mt-md {
+ margin-top: var(--canon-spacing-md);
+ }
+
+ .cu-md-mt-none {
+ margin-top: 0;
+ }
+
+ .cu-md-mt-sm {
+ margin-top: var(--canon-spacing-sm);
+ }
+
+ .cu-md-mt-xl {
+ margin-top: var(--canon-spacing-xl);
+ }
+
+ .cu-md-mt-xs {
+ margin-top: var(--canon-spacing-xs);
+ }
+
+ .cu-md-mx-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-mx-lg {
+ margin-left: var(--canon-spacing-lg);
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-md-mx-md {
+ margin-left: var(--canon-spacing-md);
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-md-mx-none {
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+ .cu-md-mx-sm {
+ margin-left: var(--canon-spacing-sm);
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-md-mx-xl {
+ margin-left: var(--canon-spacing-xl);
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-md-mx-xs {
+ margin-left: var(--canon-spacing-xs);
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-md-my-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-my-lg {
+ margin-top: var(--canon-spacing-lg);
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-md-my-md {
+ margin-top: var(--canon-spacing-md);
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-md-my-none {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+
+ .cu-md-my-sm {
+ margin-top: var(--canon-spacing-sm);
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-md-my-xl {
+ margin-top: var(--canon-spacing-xl);
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-md-my-xs {
+ margin-top: var(--canon-spacing-xs);
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-md-p-2xl {
+ padding: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-p-lg {
+ padding: var(--canon-spacing-lg);
+ }
+
+ .cu-md-p-md {
+ padding: var(--canon-spacing-md);
+ }
+
+ .cu-md-p-none {
+ padding: 0;
+ }
+
+ .cu-md-p-sm {
+ padding: var(--canon-spacing-sm);
+ }
+
+ .cu-md-p-xl {
+ padding: var(--canon-spacing-xl);
+ }
+
+ .cu-md-p-xs {
+ padding: var(--canon-spacing-xs);
+ }
+
+ .cu-md-pb-2xl {
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-pb-lg {
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-md-pb-md {
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-md-pb-none {
+ padding-bottom: 0;
+ }
+
+ .cu-md-pb-sm {
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-md-pb-xl {
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-md-pb-xs {
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-md-pl-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-pl-lg {
+ padding-left: var(--canon-spacing-lg);
+ }
+
+ .cu-md-pl-md {
+ padding-left: var(--canon-spacing-md);
+ }
+
+ .cu-md-pl-none {
+ padding-left: 0;
+ }
+
+ .cu-md-pl-sm {
+ padding-left: var(--canon-spacing-sm);
+ }
+
+ .cu-md-pl-xl {
+ padding-left: var(--canon-spacing-xl);
+ }
+
+ .cu-md-pl-xs {
+ padding-left: var(--canon-spacing-xs);
+ }
+
+ .cu-md-pr-2xl {
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-pr-lg {
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-md-pr-md {
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-md-pr-none {
+ padding-right: 0;
+ }
+
+ .cu-md-pr-sm {
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-md-pr-xl {
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-md-pr-xs {
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-md-pt-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-pt-lg {
+ padding-top: var(--canon-spacing-lg);
+ }
+
+ .cu-md-pt-md {
+ padding-top: var(--canon-spacing-md);
+ }
+
+ .cu-md-pt-none {
+ padding-top: 0;
+ }
+
+ .cu-md-pt-sm {
+ padding-top: var(--canon-spacing-sm);
+ }
+
+ .cu-md-pt-xl {
+ padding-top: var(--canon-spacing-xl);
+ }
+
+ .cu-md-pt-xs {
+ padding-top: var(--canon-spacing-xs);
+ }
+
+ .cu-md-px-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-px-lg {
+ padding-left: var(--canon-spacing-lg);
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-md-px-md {
+ padding-left: var(--canon-spacing-md);
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-md-px-none {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .cu-md-px-sm {
+ padding-left: var(--canon-spacing-sm);
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-md-px-xl {
+ padding-left: var(--canon-spacing-xl);
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-md-px-xs {
+ padding-left: var(--canon-spacing-xs);
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-md-py-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-md-py-lg {
+ padding-top: var(--canon-spacing-lg);
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-md-py-md {
+ padding-top: var(--canon-spacing-md);
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-md-py-none {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .cu-md-py-sm {
+ padding-top: var(--canon-spacing-sm);
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-md-py-xl {
+ padding-top: var(--canon-spacing-xl);
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-md-py-xs {
+ padding-top: var(--canon-spacing-xs);
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-md-rounded-2xl {
+ border-radius: var(--canon-border-radius-2xl);
+ }
+
+ .cu-md-rounded-2xs {
+ border-radius: var(--canon-border-radius-2xs);
+ }
+
+ .cu-md-rounded-lg {
+ border-radius: var(--canon-border-radius-lg);
+ }
+
+ .cu-md-rounded-md {
+ border-radius: var(--canon-border-radius-md);
+ }
+
+ .cu-md-rounded-none {
+ border-radius: 0;
+ }
+
+ .cu-md-rounded-sm {
+ border-radius: var(--canon-border-radius-sm);
+ }
+
+ .cu-md-rounded-xl {
+ border-radius: var(--canon-border-radius-xl);
+ }
+
+ .cu-md-rounded-xs {
+ border-radius: var(--canon-border-radius-xs);
+ }
+
+ .cu-md-row-span-1 {
+ grid-row: span 1 / span 1;
+ }
+
+ .cu-md-row-span-10 {
+ grid-row: span 10 / span 10;
+ }
+
+ .cu-md-row-span-11 {
+ grid-row: span 11 / span 11;
+ }
+
+ .cu-md-row-span-12 {
+ grid-row: span 12 / span 12;
+ }
+
+ .cu-md-row-span-2 {
+ grid-row: span 2 / span 2;
+ }
+
+ .cu-md-row-span-3 {
+ grid-row: span 3 / span 3;
+ }
+
+ .cu-md-row-span-4 {
+ grid-row: span 4 / span 4;
+ }
+
+ .cu-md-row-span-5 {
+ grid-row: span 5 / span 5;
+ }
+
+ .cu-md-row-span-6 {
+ grid-row: span 6 / span 6;
+ }
+
+ .cu-md-row-span-7 {
+ grid-row: span 7 / span 7;
+ }
+
+ .cu-md-row-span-8 {
+ grid-row: span 8 / span 8;
+ }
+
+ .cu-md-row-span-9 {
+ grid-row: span 9 / span 9;
+ }
+
+ .cu-md-row-span-auto {
+ grid-row: span auto / span auto;
+ }
+
+ .cu-md-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+ }
+}
diff --git a/packages/canon/src/css/utilities/sm.css b/packages/canon/src/css/utilities/sm.css
new file mode 100644
index 0000000000..60ddf67de5
--- /dev/null
+++ b/packages/canon/src/css/utilities/sm.css
@@ -0,0 +1,884 @@
+/*
+ * Copyright 2024 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@layer utilities {
+ @media (min-width: 640px) {
+ .cu-sm-block {
+ display: block;
+ }
+
+ .cu-sm-border-base {
+ border-color: var(--canon-border-base);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-sm-border-error {
+ border-color: var(--canon-border-error);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-sm-border-none {
+ border-color: transparent;
+ border-width: 0;
+ }
+
+ .cu-sm-border-selected {
+ border-color: var(--canon-border-selected);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-sm-border-warning {
+ border-color: var(--canon-border-warning);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-sm-col-end-1 {
+ grid-column-end: 1;
+ }
+
+ .cu-sm-col-end-10 {
+ grid-column-end: 10;
+ }
+
+ .cu-sm-col-end-11 {
+ grid-column-end: 11;
+ }
+
+ .cu-sm-col-end-12 {
+ grid-column-end: 12;
+ }
+
+ .cu-sm-col-end-13 {
+ grid-column-end: 13;
+ }
+
+ .cu-sm-col-end-2 {
+ grid-column-end: 2;
+ }
+
+ .cu-sm-col-end-3 {
+ grid-column-end: 3;
+ }
+
+ .cu-sm-col-end-4 {
+ grid-column-end: 4;
+ }
+
+ .cu-sm-col-end-5 {
+ grid-column-end: 5;
+ }
+
+ .cu-sm-col-end-6 {
+ grid-column-end: 6;
+ }
+
+ .cu-sm-col-end-7 {
+ grid-column-end: 7;
+ }
+
+ .cu-sm-col-end-8 {
+ grid-column-end: 8;
+ }
+
+ .cu-sm-col-end-9 {
+ grid-column-end: 9;
+ }
+
+ .cu-sm-col-end-auto {
+ grid-column-end: auto;
+ }
+
+ .cu-sm-col-span-1 {
+ grid-column: span 1 / span 1;
+ }
+
+ .cu-sm-col-span-10 {
+ grid-column: span 10 / span 10;
+ }
+
+ .cu-sm-col-span-11 {
+ grid-column: span 11 / span 11;
+ }
+
+ .cu-sm-col-span-12 {
+ grid-column: span 12 / span 12;
+ }
+
+ .cu-sm-col-span-2 {
+ grid-column: span 2 / span 2;
+ }
+
+ .cu-sm-col-span-3 {
+ grid-column: span 3 / span 3;
+ }
+
+ .cu-sm-col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+
+ .cu-sm-col-span-5 {
+ grid-column: span 5 / span 5;
+ }
+
+ .cu-sm-col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+
+ .cu-sm-col-span-7 {
+ grid-column: span 7 / span 7;
+ }
+
+ .cu-sm-col-span-8 {
+ grid-column: span 8 / span 8;
+ }
+
+ .cu-sm-col-span-9 {
+ grid-column: span 9 / span 9;
+ }
+
+ .cu-sm-col-span-auto {
+ grid-column: span auto / span auto;
+ }
+
+ .cu-sm-col-start-1 {
+ grid-column-start: 1;
+ }
+
+ .cu-sm-col-start-10 {
+ grid-column-start: 10;
+ }
+
+ .cu-sm-col-start-11 {
+ grid-column-start: 11;
+ }
+
+ .cu-sm-col-start-12 {
+ grid-column-start: 12;
+ }
+
+ .cu-sm-col-start-13 {
+ grid-column-start: 13;
+ }
+
+ .cu-sm-col-start-2 {
+ grid-column-start: 2;
+ }
+
+ .cu-sm-col-start-3 {
+ grid-column-start: 3;
+ }
+
+ .cu-sm-col-start-4 {
+ grid-column-start: 4;
+ }
+
+ .cu-sm-col-start-5 {
+ grid-column-start: 5;
+ }
+
+ .cu-sm-col-start-6 {
+ grid-column-start: 6;
+ }
+
+ .cu-sm-col-start-7 {
+ grid-column-start: 7;
+ }
+
+ .cu-sm-col-start-8 {
+ grid-column-start: 8;
+ }
+
+ .cu-sm-col-start-9 {
+ grid-column-start: 9;
+ }
+
+ .cu-sm-col-start-auto {
+ grid-column-start: auto;
+ }
+
+ .cu-sm-flex {
+ display: flex;
+ }
+
+ .cu-sm-flex-col {
+ flex-direction: column;
+ }
+
+ .cu-sm-flex-nowrap {
+ flex-wrap: nowrap;
+ }
+
+ .cu-sm-flex-row {
+ flex-direction: row;
+ }
+
+ .cu-sm-flex-wrap {
+ flex-wrap: wrap;
+ }
+
+ .cu-sm-flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+
+ .cu-sm-gap-2xl {
+ gap: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-gap-lg {
+ gap: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-gap-md {
+ gap: var(--canon-spacing-md);
+ }
+
+ .cu-sm-gap-none {
+ gap: 0;
+ }
+
+ .cu-sm-gap-sm {
+ gap: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-gap-xl {
+ gap: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-gap-xs {
+ gap: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-grid {
+ display: grid;
+ }
+
+ .cu-sm-grid-cols-1 {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-10 {
+ grid-template-columns: repeat(10, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-11 {
+ grid-template-columns: repeat(11, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-12 {
+ grid-template-columns: repeat(12, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-5 {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-6 {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-7 {
+ grid-template-columns: repeat(7, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-8 {
+ grid-template-columns: repeat(8, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-9 {
+ grid-template-columns: repeat(9, minmax(0, 1fr));
+ }
+
+ .cu-sm-grid-cols-auto {
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
+ }
+
+ .cu-sm-hidden {
+ display: none;
+ }
+
+ .cu-sm-inline {
+ display: inline;
+ }
+
+ .cu-sm-inline-block {
+ display: inline-block;
+ }
+
+ .cu-sm-items-center {
+ align-items: center;
+ }
+
+ .cu-sm-items-end {
+ align-items: flex-end;
+ }
+
+ .cu-sm-items-start {
+ align-items: flex-start;
+ }
+
+ .cu-sm-items-stretch {
+ align-items: stretch;
+ }
+
+ .cu-sm-justify-around {
+ justify-content: space-around;
+ }
+
+ .cu-sm-justify-between {
+ justify-content: space-between;
+ }
+
+ .cu-sm-justify-center {
+ justify-content: center;
+ }
+
+ .cu-sm-justify-end {
+ justify-content: flex-end;
+ }
+
+ .cu-sm-justify-start {
+ justify-content: flex-start;
+ }
+
+ .cu-sm-justify-stretch {
+ justify-content: stretch;
+ }
+
+ .cu-sm-m-2xl {
+ margin: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-m-lg {
+ margin: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-m-md {
+ margin: var(--canon-spacing-md);
+ }
+
+ .cu-sm-m-none {
+ margin: 0;
+ }
+
+ .cu-sm-m-sm {
+ margin: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-m-xl {
+ margin: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-m-xs {
+ margin: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-mb-2xl {
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-mb-lg {
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-mb-md {
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-sm-mb-none {
+ margin-bottom: 0;
+ }
+
+ .cu-sm-mb-sm {
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-mb-xl {
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-mb-xs {
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-ml-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-ml-lg {
+ margin-left: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-ml-md {
+ margin-left: var(--canon-spacing-md);
+ }
+
+ .cu-sm-ml-none {
+ margin-left: 0;
+ }
+
+ .cu-sm-ml-sm {
+ margin-left: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-ml-xl {
+ margin-left: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-ml-xs {
+ margin-left: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-mr-2xl {
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-mr-lg {
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-mr-md {
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-sm-mr-none {
+ margin-right: 0;
+ }
+
+ .cu-sm-mr-sm {
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-mr-xl {
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-mr-xs {
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-mt-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-mt-lg {
+ margin-top: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-mt-md {
+ margin-top: var(--canon-spacing-md);
+ }
+
+ .cu-sm-mt-none {
+ margin-top: 0;
+ }
+
+ .cu-sm-mt-sm {
+ margin-top: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-mt-xl {
+ margin-top: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-mt-xs {
+ margin-top: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-mx-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-mx-lg {
+ margin-left: var(--canon-spacing-lg);
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-mx-md {
+ margin-left: var(--canon-spacing-md);
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-sm-mx-none {
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+ .cu-sm-mx-sm {
+ margin-left: var(--canon-spacing-sm);
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-mx-xl {
+ margin-left: var(--canon-spacing-xl);
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-mx-xs {
+ margin-left: var(--canon-spacing-xs);
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-my-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-my-lg {
+ margin-top: var(--canon-spacing-lg);
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-my-md {
+ margin-top: var(--canon-spacing-md);
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-sm-my-none {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+
+ .cu-sm-my-sm {
+ margin-top: var(--canon-spacing-sm);
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-my-xl {
+ margin-top: var(--canon-spacing-xl);
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-my-xs {
+ margin-top: var(--canon-spacing-xs);
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-p-2xl {
+ padding: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-p-lg {
+ padding: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-p-md {
+ padding: var(--canon-spacing-md);
+ }
+
+ .cu-sm-p-none {
+ padding: 0;
+ }
+
+ .cu-sm-p-sm {
+ padding: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-p-xl {
+ padding: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-p-xs {
+ padding: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-pb-2xl {
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-pb-lg {
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-pb-md {
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-sm-pb-none {
+ padding-bottom: 0;
+ }
+
+ .cu-sm-pb-sm {
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-pb-xl {
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-pb-xs {
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-pl-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-pl-lg {
+ padding-left: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-pl-md {
+ padding-left: var(--canon-spacing-md);
+ }
+
+ .cu-sm-pl-none {
+ padding-left: 0;
+ }
+
+ .cu-sm-pl-sm {
+ padding-left: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-pl-xl {
+ padding-left: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-pl-xs {
+ padding-left: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-pr-2xl {
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-pr-lg {
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-pr-md {
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-sm-pr-none {
+ padding-right: 0;
+ }
+
+ .cu-sm-pr-sm {
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-pr-xl {
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-pr-xs {
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-pt-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-pt-lg {
+ padding-top: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-pt-md {
+ padding-top: var(--canon-spacing-md);
+ }
+
+ .cu-sm-pt-none {
+ padding-top: 0;
+ }
+
+ .cu-sm-pt-sm {
+ padding-top: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-pt-xl {
+ padding-top: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-pt-xs {
+ padding-top: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-px-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-px-lg {
+ padding-left: var(--canon-spacing-lg);
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-px-md {
+ padding-left: var(--canon-spacing-md);
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-sm-px-none {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .cu-sm-px-sm {
+ padding-left: var(--canon-spacing-sm);
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-px-xl {
+ padding-left: var(--canon-spacing-xl);
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-px-xs {
+ padding-left: var(--canon-spacing-xs);
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-py-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-sm-py-lg {
+ padding-top: var(--canon-spacing-lg);
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-sm-py-md {
+ padding-top: var(--canon-spacing-md);
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-sm-py-none {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .cu-sm-py-sm {
+ padding-top: var(--canon-spacing-sm);
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-sm-py-xl {
+ padding-top: var(--canon-spacing-xl);
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-sm-py-xs {
+ padding-top: var(--canon-spacing-xs);
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-sm-rounded-2xl {
+ border-radius: var(--canon-border-radius-2xl);
+ }
+
+ .cu-sm-rounded-2xs {
+ border-radius: var(--canon-border-radius-2xs);
+ }
+
+ .cu-sm-rounded-lg {
+ border-radius: var(--canon-border-radius-lg);
+ }
+
+ .cu-sm-rounded-md {
+ border-radius: var(--canon-border-radius-md);
+ }
+
+ .cu-sm-rounded-none {
+ border-radius: 0;
+ }
+
+ .cu-sm-rounded-sm {
+ border-radius: var(--canon-border-radius-sm);
+ }
+
+ .cu-sm-rounded-xl {
+ border-radius: var(--canon-border-radius-xl);
+ }
+
+ .cu-sm-rounded-xs {
+ border-radius: var(--canon-border-radius-xs);
+ }
+
+ .cu-sm-row-span-1 {
+ grid-row: span 1 / span 1;
+ }
+
+ .cu-sm-row-span-10 {
+ grid-row: span 10 / span 10;
+ }
+
+ .cu-sm-row-span-11 {
+ grid-row: span 11 / span 11;
+ }
+
+ .cu-sm-row-span-12 {
+ grid-row: span 12 / span 12;
+ }
+
+ .cu-sm-row-span-2 {
+ grid-row: span 2 / span 2;
+ }
+
+ .cu-sm-row-span-3 {
+ grid-row: span 3 / span 3;
+ }
+
+ .cu-sm-row-span-4 {
+ grid-row: span 4 / span 4;
+ }
+
+ .cu-sm-row-span-5 {
+ grid-row: span 5 / span 5;
+ }
+
+ .cu-sm-row-span-6 {
+ grid-row: span 6 / span 6;
+ }
+
+ .cu-sm-row-span-7 {
+ grid-row: span 7 / span 7;
+ }
+
+ .cu-sm-row-span-8 {
+ grid-row: span 8 / span 8;
+ }
+
+ .cu-sm-row-span-9 {
+ grid-row: span 9 / span 9;
+ }
+
+ .cu-sm-row-span-auto {
+ grid-row: span auto / span auto;
+ }
+
+ .cu-sm-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+ }
+}
diff --git a/packages/canon/src/css/utilities/xl.css b/packages/canon/src/css/utilities/xl.css
new file mode 100644
index 0000000000..0a999756ae
--- /dev/null
+++ b/packages/canon/src/css/utilities/xl.css
@@ -0,0 +1,884 @@
+/*
+ * Copyright 2024 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@layer utilities {
+ @media (min-width: 1280px) {
+ .cu-xl-block {
+ display: block;
+ }
+
+ .cu-xl-border-base {
+ border-color: var(--canon-border-base);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-xl-border-error {
+ border-color: var(--canon-border-error);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-xl-border-none {
+ border-color: transparent;
+ border-width: 0;
+ }
+
+ .cu-xl-border-selected {
+ border-color: var(--canon-border-selected);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-xl-border-warning {
+ border-color: var(--canon-border-warning);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-xl-col-end-1 {
+ grid-column-end: 1;
+ }
+
+ .cu-xl-col-end-10 {
+ grid-column-end: 10;
+ }
+
+ .cu-xl-col-end-11 {
+ grid-column-end: 11;
+ }
+
+ .cu-xl-col-end-12 {
+ grid-column-end: 12;
+ }
+
+ .cu-xl-col-end-13 {
+ grid-column-end: 13;
+ }
+
+ .cu-xl-col-end-2 {
+ grid-column-end: 2;
+ }
+
+ .cu-xl-col-end-3 {
+ grid-column-end: 3;
+ }
+
+ .cu-xl-col-end-4 {
+ grid-column-end: 4;
+ }
+
+ .cu-xl-col-end-5 {
+ grid-column-end: 5;
+ }
+
+ .cu-xl-col-end-6 {
+ grid-column-end: 6;
+ }
+
+ .cu-xl-col-end-7 {
+ grid-column-end: 7;
+ }
+
+ .cu-xl-col-end-8 {
+ grid-column-end: 8;
+ }
+
+ .cu-xl-col-end-9 {
+ grid-column-end: 9;
+ }
+
+ .cu-xl-col-end-auto {
+ grid-column-end: auto;
+ }
+
+ .cu-xl-col-span-1 {
+ grid-column: span 1 / span 1;
+ }
+
+ .cu-xl-col-span-10 {
+ grid-column: span 10 / span 10;
+ }
+
+ .cu-xl-col-span-11 {
+ grid-column: span 11 / span 11;
+ }
+
+ .cu-xl-col-span-12 {
+ grid-column: span 12 / span 12;
+ }
+
+ .cu-xl-col-span-2 {
+ grid-column: span 2 / span 2;
+ }
+
+ .cu-xl-col-span-3 {
+ grid-column: span 3 / span 3;
+ }
+
+ .cu-xl-col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+
+ .cu-xl-col-span-5 {
+ grid-column: span 5 / span 5;
+ }
+
+ .cu-xl-col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+
+ .cu-xl-col-span-7 {
+ grid-column: span 7 / span 7;
+ }
+
+ .cu-xl-col-span-8 {
+ grid-column: span 8 / span 8;
+ }
+
+ .cu-xl-col-span-9 {
+ grid-column: span 9 / span 9;
+ }
+
+ .cu-xl-col-span-auto {
+ grid-column: span auto / span auto;
+ }
+
+ .cu-xl-col-start-1 {
+ grid-column-start: 1;
+ }
+
+ .cu-xl-col-start-10 {
+ grid-column-start: 10;
+ }
+
+ .cu-xl-col-start-11 {
+ grid-column-start: 11;
+ }
+
+ .cu-xl-col-start-12 {
+ grid-column-start: 12;
+ }
+
+ .cu-xl-col-start-13 {
+ grid-column-start: 13;
+ }
+
+ .cu-xl-col-start-2 {
+ grid-column-start: 2;
+ }
+
+ .cu-xl-col-start-3 {
+ grid-column-start: 3;
+ }
+
+ .cu-xl-col-start-4 {
+ grid-column-start: 4;
+ }
+
+ .cu-xl-col-start-5 {
+ grid-column-start: 5;
+ }
+
+ .cu-xl-col-start-6 {
+ grid-column-start: 6;
+ }
+
+ .cu-xl-col-start-7 {
+ grid-column-start: 7;
+ }
+
+ .cu-xl-col-start-8 {
+ grid-column-start: 8;
+ }
+
+ .cu-xl-col-start-9 {
+ grid-column-start: 9;
+ }
+
+ .cu-xl-col-start-auto {
+ grid-column-start: auto;
+ }
+
+ .cu-xl-flex {
+ display: flex;
+ }
+
+ .cu-xl-flex-col {
+ flex-direction: column;
+ }
+
+ .cu-xl-flex-nowrap {
+ flex-wrap: nowrap;
+ }
+
+ .cu-xl-flex-row {
+ flex-direction: row;
+ }
+
+ .cu-xl-flex-wrap {
+ flex-wrap: wrap;
+ }
+
+ .cu-xl-flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+
+ .cu-xl-gap-2xl {
+ gap: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-gap-lg {
+ gap: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-gap-md {
+ gap: var(--canon-spacing-md);
+ }
+
+ .cu-xl-gap-none {
+ gap: 0;
+ }
+
+ .cu-xl-gap-sm {
+ gap: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-gap-xl {
+ gap: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-gap-xs {
+ gap: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-grid {
+ display: grid;
+ }
+
+ .cu-xl-grid-cols-1 {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-10 {
+ grid-template-columns: repeat(10, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-11 {
+ grid-template-columns: repeat(11, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-12 {
+ grid-template-columns: repeat(12, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-5 {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-6 {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-7 {
+ grid-template-columns: repeat(7, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-8 {
+ grid-template-columns: repeat(8, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-9 {
+ grid-template-columns: repeat(9, minmax(0, 1fr));
+ }
+
+ .cu-xl-grid-cols-auto {
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
+ }
+
+ .cu-xl-hidden {
+ display: none;
+ }
+
+ .cu-xl-inline {
+ display: inline;
+ }
+
+ .cu-xl-inline-block {
+ display: inline-block;
+ }
+
+ .cu-xl-items-center {
+ align-items: center;
+ }
+
+ .cu-xl-items-end {
+ align-items: flex-end;
+ }
+
+ .cu-xl-items-start {
+ align-items: flex-start;
+ }
+
+ .cu-xl-items-stretch {
+ align-items: stretch;
+ }
+
+ .cu-xl-justify-around {
+ justify-content: space-around;
+ }
+
+ .cu-xl-justify-between {
+ justify-content: space-between;
+ }
+
+ .cu-xl-justify-center {
+ justify-content: center;
+ }
+
+ .cu-xl-justify-end {
+ justify-content: flex-end;
+ }
+
+ .cu-xl-justify-start {
+ justify-content: flex-start;
+ }
+
+ .cu-xl-justify-stretch {
+ justify-content: stretch;
+ }
+
+ .cu-xl-m-2xl {
+ margin: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-m-lg {
+ margin: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-m-md {
+ margin: var(--canon-spacing-md);
+ }
+
+ .cu-xl-m-none {
+ margin: 0;
+ }
+
+ .cu-xl-m-sm {
+ margin: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-m-xl {
+ margin: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-m-xs {
+ margin: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-mb-2xl {
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-mb-lg {
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-mb-md {
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-xl-mb-none {
+ margin-bottom: 0;
+ }
+
+ .cu-xl-mb-sm {
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-mb-xl {
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-mb-xs {
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-ml-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-ml-lg {
+ margin-left: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-ml-md {
+ margin-left: var(--canon-spacing-md);
+ }
+
+ .cu-xl-ml-none {
+ margin-left: 0;
+ }
+
+ .cu-xl-ml-sm {
+ margin-left: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-ml-xl {
+ margin-left: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-ml-xs {
+ margin-left: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-mr-2xl {
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-mr-lg {
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-mr-md {
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-xl-mr-none {
+ margin-right: 0;
+ }
+
+ .cu-xl-mr-sm {
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-mr-xl {
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-mr-xs {
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-mt-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-mt-lg {
+ margin-top: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-mt-md {
+ margin-top: var(--canon-spacing-md);
+ }
+
+ .cu-xl-mt-none {
+ margin-top: 0;
+ }
+
+ .cu-xl-mt-sm {
+ margin-top: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-mt-xl {
+ margin-top: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-mt-xs {
+ margin-top: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-mx-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-mx-lg {
+ margin-left: var(--canon-spacing-lg);
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-mx-md {
+ margin-left: var(--canon-spacing-md);
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-xl-mx-none {
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+ .cu-xl-mx-sm {
+ margin-left: var(--canon-spacing-sm);
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-mx-xl {
+ margin-left: var(--canon-spacing-xl);
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-mx-xs {
+ margin-left: var(--canon-spacing-xs);
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-my-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-my-lg {
+ margin-top: var(--canon-spacing-lg);
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-my-md {
+ margin-top: var(--canon-spacing-md);
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-xl-my-none {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+
+ .cu-xl-my-sm {
+ margin-top: var(--canon-spacing-sm);
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-my-xl {
+ margin-top: var(--canon-spacing-xl);
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-my-xs {
+ margin-top: var(--canon-spacing-xs);
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-p-2xl {
+ padding: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-p-lg {
+ padding: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-p-md {
+ padding: var(--canon-spacing-md);
+ }
+
+ .cu-xl-p-none {
+ padding: 0;
+ }
+
+ .cu-xl-p-sm {
+ padding: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-p-xl {
+ padding: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-p-xs {
+ padding: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-pb-2xl {
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-pb-lg {
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-pb-md {
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-xl-pb-none {
+ padding-bottom: 0;
+ }
+
+ .cu-xl-pb-sm {
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-pb-xl {
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-pb-xs {
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-pl-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-pl-lg {
+ padding-left: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-pl-md {
+ padding-left: var(--canon-spacing-md);
+ }
+
+ .cu-xl-pl-none {
+ padding-left: 0;
+ }
+
+ .cu-xl-pl-sm {
+ padding-left: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-pl-xl {
+ padding-left: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-pl-xs {
+ padding-left: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-pr-2xl {
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-pr-lg {
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-pr-md {
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-xl-pr-none {
+ padding-right: 0;
+ }
+
+ .cu-xl-pr-sm {
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-pr-xl {
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-pr-xs {
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-pt-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-pt-lg {
+ padding-top: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-pt-md {
+ padding-top: var(--canon-spacing-md);
+ }
+
+ .cu-xl-pt-none {
+ padding-top: 0;
+ }
+
+ .cu-xl-pt-sm {
+ padding-top: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-pt-xl {
+ padding-top: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-pt-xs {
+ padding-top: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-px-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-px-lg {
+ padding-left: var(--canon-spacing-lg);
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-px-md {
+ padding-left: var(--canon-spacing-md);
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-xl-px-none {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .cu-xl-px-sm {
+ padding-left: var(--canon-spacing-sm);
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-px-xl {
+ padding-left: var(--canon-spacing-xl);
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-px-xs {
+ padding-left: var(--canon-spacing-xs);
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-py-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-xl-py-lg {
+ padding-top: var(--canon-spacing-lg);
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-xl-py-md {
+ padding-top: var(--canon-spacing-md);
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-xl-py-none {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .cu-xl-py-sm {
+ padding-top: var(--canon-spacing-sm);
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-xl-py-xl {
+ padding-top: var(--canon-spacing-xl);
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-xl-py-xs {
+ padding-top: var(--canon-spacing-xs);
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-xl-rounded-2xl {
+ border-radius: var(--canon-border-radius-2xl);
+ }
+
+ .cu-xl-rounded-2xs {
+ border-radius: var(--canon-border-radius-2xs);
+ }
+
+ .cu-xl-rounded-lg {
+ border-radius: var(--canon-border-radius-lg);
+ }
+
+ .cu-xl-rounded-md {
+ border-radius: var(--canon-border-radius-md);
+ }
+
+ .cu-xl-rounded-none {
+ border-radius: 0;
+ }
+
+ .cu-xl-rounded-sm {
+ border-radius: var(--canon-border-radius-sm);
+ }
+
+ .cu-xl-rounded-xl {
+ border-radius: var(--canon-border-radius-xl);
+ }
+
+ .cu-xl-rounded-xs {
+ border-radius: var(--canon-border-radius-xs);
+ }
+
+ .cu-xl-row-span-1 {
+ grid-row: span 1 / span 1;
+ }
+
+ .cu-xl-row-span-10 {
+ grid-row: span 10 / span 10;
+ }
+
+ .cu-xl-row-span-11 {
+ grid-row: span 11 / span 11;
+ }
+
+ .cu-xl-row-span-12 {
+ grid-row: span 12 / span 12;
+ }
+
+ .cu-xl-row-span-2 {
+ grid-row: span 2 / span 2;
+ }
+
+ .cu-xl-row-span-3 {
+ grid-row: span 3 / span 3;
+ }
+
+ .cu-xl-row-span-4 {
+ grid-row: span 4 / span 4;
+ }
+
+ .cu-xl-row-span-5 {
+ grid-row: span 5 / span 5;
+ }
+
+ .cu-xl-row-span-6 {
+ grid-row: span 6 / span 6;
+ }
+
+ .cu-xl-row-span-7 {
+ grid-row: span 7 / span 7;
+ }
+
+ .cu-xl-row-span-8 {
+ grid-row: span 8 / span 8;
+ }
+
+ .cu-xl-row-span-9 {
+ grid-row: span 9 / span 9;
+ }
+
+ .cu-xl-row-span-auto {
+ grid-row: span auto / span auto;
+ }
+
+ .cu-xl-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+ }
+}
diff --git a/packages/canon/src/css/utilities/xs.css b/packages/canon/src/css/utilities/xs.css
new file mode 100644
index 0000000000..28ec25c817
--- /dev/null
+++ b/packages/canon/src/css/utilities/xs.css
@@ -0,0 +1,882 @@
+/*
+ * Copyright 2024 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@layer utilities {
+ .cu-block {
+ display: block;
+ }
+
+ .cu-border-base {
+ border-color: var(--canon-border-base);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-border-error {
+ border-color: var(--canon-border-error);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-border-none {
+ border-color: transparent;
+ border-width: 0;
+ }
+
+ .cu-border-selected {
+ border-color: var(--canon-border-selected);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-border-warning {
+ border-color: var(--canon-border-warning);
+ border-width: 1px;
+ border-style: solid;
+ }
+
+ .cu-col-end-1 {
+ grid-column-end: 1;
+ }
+
+ .cu-col-end-10 {
+ grid-column-end: 10;
+ }
+
+ .cu-col-end-11 {
+ grid-column-end: 11;
+ }
+
+ .cu-col-end-12 {
+ grid-column-end: 12;
+ }
+
+ .cu-col-end-13 {
+ grid-column-end: 13;
+ }
+
+ .cu-col-end-2 {
+ grid-column-end: 2;
+ }
+
+ .cu-col-end-3 {
+ grid-column-end: 3;
+ }
+
+ .cu-col-end-4 {
+ grid-column-end: 4;
+ }
+
+ .cu-col-end-5 {
+ grid-column-end: 5;
+ }
+
+ .cu-col-end-6 {
+ grid-column-end: 6;
+ }
+
+ .cu-col-end-7 {
+ grid-column-end: 7;
+ }
+
+ .cu-col-end-8 {
+ grid-column-end: 8;
+ }
+
+ .cu-col-end-9 {
+ grid-column-end: 9;
+ }
+
+ .cu-col-end-auto {
+ grid-column-end: auto;
+ }
+
+ .cu-col-span-1 {
+ grid-column: span 1 / span 1;
+ }
+
+ .cu-col-span-10 {
+ grid-column: span 10 / span 10;
+ }
+
+ .cu-col-span-11 {
+ grid-column: span 11 / span 11;
+ }
+
+ .cu-col-span-12 {
+ grid-column: span 12 / span 12;
+ }
+
+ .cu-col-span-2 {
+ grid-column: span 2 / span 2;
+ }
+
+ .cu-col-span-3 {
+ grid-column: span 3 / span 3;
+ }
+
+ .cu-col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+
+ .cu-col-span-5 {
+ grid-column: span 5 / span 5;
+ }
+
+ .cu-col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+
+ .cu-col-span-7 {
+ grid-column: span 7 / span 7;
+ }
+
+ .cu-col-span-8 {
+ grid-column: span 8 / span 8;
+ }
+
+ .cu-col-span-9 {
+ grid-column: span 9 / span 9;
+ }
+
+ .cu-col-span-auto {
+ grid-column: span auto / span auto;
+ }
+
+ .cu-col-start-1 {
+ grid-column-start: 1;
+ }
+
+ .cu-col-start-10 {
+ grid-column-start: 10;
+ }
+
+ .cu-col-start-11 {
+ grid-column-start: 11;
+ }
+
+ .cu-col-start-12 {
+ grid-column-start: 12;
+ }
+
+ .cu-col-start-13 {
+ grid-column-start: 13;
+ }
+
+ .cu-col-start-2 {
+ grid-column-start: 2;
+ }
+
+ .cu-col-start-3 {
+ grid-column-start: 3;
+ }
+
+ .cu-col-start-4 {
+ grid-column-start: 4;
+ }
+
+ .cu-col-start-5 {
+ grid-column-start: 5;
+ }
+
+ .cu-col-start-6 {
+ grid-column-start: 6;
+ }
+
+ .cu-col-start-7 {
+ grid-column-start: 7;
+ }
+
+ .cu-col-start-8 {
+ grid-column-start: 8;
+ }
+
+ .cu-col-start-9 {
+ grid-column-start: 9;
+ }
+
+ .cu-col-start-auto {
+ grid-column-start: auto;
+ }
+
+ .cu-flex {
+ display: flex;
+ }
+
+ .cu-flex-col {
+ flex-direction: column;
+ }
+
+ .cu-flex-nowrap {
+ flex-wrap: nowrap;
+ }
+
+ .cu-flex-row {
+ flex-direction: row;
+ }
+
+ .cu-flex-wrap {
+ flex-wrap: wrap;
+ }
+
+ .cu-flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+
+ .cu-gap-2xl {
+ gap: var(--canon-spacing-2xl);
+ }
+
+ .cu-gap-lg {
+ gap: var(--canon-spacing-lg);
+ }
+
+ .cu-gap-md {
+ gap: var(--canon-spacing-md);
+ }
+
+ .cu-gap-none {
+ gap: 0;
+ }
+
+ .cu-gap-sm {
+ gap: var(--canon-spacing-sm);
+ }
+
+ .cu-gap-xl {
+ gap: var(--canon-spacing-xl);
+ }
+
+ .cu-gap-xs {
+ gap: var(--canon-spacing-xs);
+ }
+
+ .cu-grid {
+ display: grid;
+ }
+
+ .cu-grid-cols-1 {
+ grid-template-columns: repeat(1, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-10 {
+ grid-template-columns: repeat(10, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-11 {
+ grid-template-columns: repeat(11, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-12 {
+ grid-template-columns: repeat(12, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-5 {
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-6 {
+ grid-template-columns: repeat(6, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-7 {
+ grid-template-columns: repeat(7, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-8 {
+ grid-template-columns: repeat(8, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-9 {
+ grid-template-columns: repeat(9, minmax(0, 1fr));
+ }
+
+ .cu-grid-cols-auto {
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
+ }
+
+ .cu-hidden {
+ display: none;
+ }
+
+ .cu-inline {
+ display: inline;
+ }
+
+ .cu-inline-block {
+ display: inline-block;
+ }
+
+ .cu-items-center {
+ align-items: center;
+ }
+
+ .cu-items-end {
+ align-items: flex-end;
+ }
+
+ .cu-items-start {
+ align-items: flex-start;
+ }
+
+ .cu-items-stretch {
+ align-items: stretch;
+ }
+
+ .cu-justify-around {
+ justify-content: space-around;
+ }
+
+ .cu-justify-between {
+ justify-content: space-between;
+ }
+
+ .cu-justify-center {
+ justify-content: center;
+ }
+
+ .cu-justify-end {
+ justify-content: flex-end;
+ }
+
+ .cu-justify-start {
+ justify-content: flex-start;
+ }
+
+ .cu-justify-stretch {
+ justify-content: stretch;
+ }
+
+ .cu-m-2xl {
+ margin: var(--canon-spacing-2xl);
+ }
+
+ .cu-m-lg {
+ margin: var(--canon-spacing-lg);
+ }
+
+ .cu-m-md {
+ margin: var(--canon-spacing-md);
+ }
+
+ .cu-m-none {
+ margin: 0;
+ }
+
+ .cu-m-sm {
+ margin: var(--canon-spacing-sm);
+ }
+
+ .cu-m-xl {
+ margin: var(--canon-spacing-xl);
+ }
+
+ .cu-m-xs {
+ margin: var(--canon-spacing-xs);
+ }
+
+ .cu-mb-2xl {
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-mb-lg {
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-mb-md {
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-mb-none {
+ margin-bottom: 0;
+ }
+
+ .cu-mb-sm {
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-mb-xl {
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-mb-xs {
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-ml-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-ml-lg {
+ margin-left: var(--canon-spacing-lg);
+ }
+
+ .cu-ml-md {
+ margin-left: var(--canon-spacing-md);
+ }
+
+ .cu-ml-none {
+ margin-left: 0;
+ }
+
+ .cu-ml-sm {
+ margin-left: var(--canon-spacing-sm);
+ }
+
+ .cu-ml-xl {
+ margin-left: var(--canon-spacing-xl);
+ }
+
+ .cu-ml-xs {
+ margin-left: var(--canon-spacing-xs);
+ }
+
+ .cu-mr-2xl {
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-mr-lg {
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-mr-md {
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-mr-none {
+ margin-right: 0;
+ }
+
+ .cu-mr-sm {
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-mr-xl {
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-mr-xs {
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-mt-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-mt-lg {
+ margin-top: var(--canon-spacing-lg);
+ }
+
+ .cu-mt-md {
+ margin-top: var(--canon-spacing-md);
+ }
+
+ .cu-mt-none {
+ margin-top: 0;
+ }
+
+ .cu-mt-sm {
+ margin-top: var(--canon-spacing-sm);
+ }
+
+ .cu-mt-xl {
+ margin-top: var(--canon-spacing-xl);
+ }
+
+ .cu-mt-xs {
+ margin-top: var(--canon-spacing-xs);
+ }
+
+ .cu-mx-2xl {
+ margin-left: var(--canon-spacing-2xl);
+ margin-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-mx-lg {
+ margin-left: var(--canon-spacing-lg);
+ margin-right: var(--canon-spacing-lg);
+ }
+
+ .cu-mx-md {
+ margin-left: var(--canon-spacing-md);
+ margin-right: var(--canon-spacing-md);
+ }
+
+ .cu-mx-none {
+ margin-left: 0;
+ margin-right: 0;
+ }
+
+ .cu-mx-sm {
+ margin-left: var(--canon-spacing-sm);
+ margin-right: var(--canon-spacing-sm);
+ }
+
+ .cu-mx-xl {
+ margin-left: var(--canon-spacing-xl);
+ margin-right: var(--canon-spacing-xl);
+ }
+
+ .cu-mx-xs {
+ margin-left: var(--canon-spacing-xs);
+ margin-right: var(--canon-spacing-xs);
+ }
+
+ .cu-my-2xl {
+ margin-top: var(--canon-spacing-2xl);
+ margin-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-my-lg {
+ margin-top: var(--canon-spacing-lg);
+ margin-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-my-md {
+ margin-top: var(--canon-spacing-md);
+ margin-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-my-none {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+
+ .cu-my-sm {
+ margin-top: var(--canon-spacing-sm);
+ margin-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-my-xl {
+ margin-top: var(--canon-spacing-xl);
+ margin-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-my-xs {
+ margin-top: var(--canon-spacing-xs);
+ margin-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-p-2xl {
+ padding: var(--canon-spacing-2xl);
+ }
+
+ .cu-p-lg {
+ padding: var(--canon-spacing-lg);
+ }
+
+ .cu-p-md {
+ padding: var(--canon-spacing-md);
+ }
+
+ .cu-p-none {
+ padding: 0;
+ }
+
+ .cu-p-sm {
+ padding: var(--canon-spacing-sm);
+ }
+
+ .cu-p-xl {
+ padding: var(--canon-spacing-xl);
+ }
+
+ .cu-p-xs {
+ padding: var(--canon-spacing-xs);
+ }
+
+ .cu-pb-2xl {
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-pb-lg {
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-pb-md {
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-pb-none {
+ padding-bottom: 0;
+ }
+
+ .cu-pb-sm {
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-pb-xl {
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-pb-xs {
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-pl-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ }
+
+ .cu-pl-lg {
+ padding-left: var(--canon-spacing-lg);
+ }
+
+ .cu-pl-md {
+ padding-left: var(--canon-spacing-md);
+ }
+
+ .cu-pl-none {
+ padding-left: 0;
+ }
+
+ .cu-pl-sm {
+ padding-left: var(--canon-spacing-sm);
+ }
+
+ .cu-pl-xl {
+ padding-left: var(--canon-spacing-xl);
+ }
+
+ .cu-pl-xs {
+ padding-left: var(--canon-spacing-xs);
+ }
+
+ .cu-pr-2xl {
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-pr-lg {
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-pr-md {
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-pr-none {
+ padding-right: 0;
+ }
+
+ .cu-pr-sm {
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-pr-xl {
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-pr-xs {
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-pt-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ }
+
+ .cu-pt-lg {
+ padding-top: var(--canon-spacing-lg);
+ }
+
+ .cu-pt-md {
+ padding-top: var(--canon-spacing-md);
+ }
+
+ .cu-pt-none {
+ padding-top: 0;
+ }
+
+ .cu-pt-sm {
+ padding-top: var(--canon-spacing-sm);
+ }
+
+ .cu-pt-xl {
+ padding-top: var(--canon-spacing-xl);
+ }
+
+ .cu-pt-xs {
+ padding-top: var(--canon-spacing-xs);
+ }
+
+ .cu-px-2xl {
+ padding-left: var(--canon-spacing-2xl);
+ padding-right: var(--canon-spacing-2xl);
+ }
+
+ .cu-px-lg {
+ padding-left: var(--canon-spacing-lg);
+ padding-right: var(--canon-spacing-lg);
+ }
+
+ .cu-px-md {
+ padding-left: var(--canon-spacing-md);
+ padding-right: var(--canon-spacing-md);
+ }
+
+ .cu-px-none {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ .cu-px-sm {
+ padding-left: var(--canon-spacing-sm);
+ padding-right: var(--canon-spacing-sm);
+ }
+
+ .cu-px-xl {
+ padding-left: var(--canon-spacing-xl);
+ padding-right: var(--canon-spacing-xl);
+ }
+
+ .cu-px-xs {
+ padding-left: var(--canon-spacing-xs);
+ padding-right: var(--canon-spacing-xs);
+ }
+
+ .cu-py-2xl {
+ padding-top: var(--canon-spacing-2xl);
+ padding-bottom: var(--canon-spacing-2xl);
+ }
+
+ .cu-py-lg {
+ padding-top: var(--canon-spacing-lg);
+ padding-bottom: var(--canon-spacing-lg);
+ }
+
+ .cu-py-md {
+ padding-top: var(--canon-spacing-md);
+ padding-bottom: var(--canon-spacing-md);
+ }
+
+ .cu-py-none {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+
+ .cu-py-sm {
+ padding-top: var(--canon-spacing-sm);
+ padding-bottom: var(--canon-spacing-sm);
+ }
+
+ .cu-py-xl {
+ padding-top: var(--canon-spacing-xl);
+ padding-bottom: var(--canon-spacing-xl);
+ }
+
+ .cu-py-xs {
+ padding-top: var(--canon-spacing-xs);
+ padding-bottom: var(--canon-spacing-xs);
+ }
+
+ .cu-rounded-2xl {
+ border-radius: var(--canon-border-radius-2xl);
+ }
+
+ .cu-rounded-2xs {
+ border-radius: var(--canon-border-radius-2xs);
+ }
+
+ .cu-rounded-lg {
+ border-radius: var(--canon-border-radius-lg);
+ }
+
+ .cu-rounded-md {
+ border-radius: var(--canon-border-radius-md);
+ }
+
+ .cu-rounded-none {
+ border-radius: 0;
+ }
+
+ .cu-rounded-sm {
+ border-radius: var(--canon-border-radius-sm);
+ }
+
+ .cu-rounded-xl {
+ border-radius: var(--canon-border-radius-xl);
+ }
+
+ .cu-rounded-xs {
+ border-radius: var(--canon-border-radius-xs);
+ }
+
+ .cu-row-span-1 {
+ grid-row: span 1 / span 1;
+ }
+
+ .cu-row-span-10 {
+ grid-row: span 10 / span 10;
+ }
+
+ .cu-row-span-11 {
+ grid-row: span 11 / span 11;
+ }
+
+ .cu-row-span-12 {
+ grid-row: span 12 / span 12;
+ }
+
+ .cu-row-span-2 {
+ grid-row: span 2 / span 2;
+ }
+
+ .cu-row-span-3 {
+ grid-row: span 3 / span 3;
+ }
+
+ .cu-row-span-4 {
+ grid-row: span 4 / span 4;
+ }
+
+ .cu-row-span-5 {
+ grid-row: span 5 / span 5;
+ }
+
+ .cu-row-span-6 {
+ grid-row: span 6 / span 6;
+ }
+
+ .cu-row-span-7 {
+ grid-row: span 7 / span 7;
+ }
+
+ .cu-row-span-8 {
+ grid-row: span 8 / span 8;
+ }
+
+ .cu-row-span-9 {
+ grid-row: span 9 / span 9;
+ }
+
+ .cu-row-span-auto {
+ grid-row: span auto / span auto;
+ }
+
+ .cu-wrap-reverse {
+ flex-wrap: wrap-reverse;
+ }
+}
diff --git a/packages/canon/src/index.ts b/packages/canon/src/index.ts
index e06207bd06..23432295e2 100644
--- a/packages/canon/src/index.ts
+++ b/packages/canon/src/index.ts
@@ -20,9 +20,6 @@
* @packageDocumentation
*/
-// Layout types
-export * from './layout/types';
-
// Layout components
export * from './components/Box';
export * from './components/Grid';
@@ -35,5 +32,6 @@ export * from './components/Button';
export * from './components/Icon';
export * from './components/Checkbox';
export * from './components/Table';
-export * from './components/Field';
-export * from './components/Input';
+
+// Types
+export * from './types';
diff --git a/packages/canon/src/layout/properties.ts b/packages/canon/src/layout/properties.ts
deleted file mode 100644
index d41bbddbeb..0000000000
--- a/packages/canon/src/layout/properties.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2024 The Backstage Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/** @public */
-export const breakpoints = {
- xs: {},
- sm: { '@media': 'screen and (min-width: 640px)' },
- md: { '@media': 'screen and (min-width: 768px)' },
- lg: { '@media': 'screen and (min-width: 1024px)' },
- xl: { '@media': 'screen and (min-width: 1280px)' },
- '2xl': { '@media': 'screen and (min-width: 1536px)' },
-};
-
-/** @public */
-export const themes = {
- light: { selector: '[data-theme="light"] &' },
- dark: { selector: '[data-theme="dark"] &' },
-};
-
-/** @public */
-export const space = {
- none: 0,
- '2xs': 'var(--canon-spacing-2xs)',
- xs: 'var(--canon-spacing-xs)',
- sm: 'var(--canon-spacing-sm)',
- md: 'var(--canon-spacing-md)',
- lg: 'var(--canon-spacing-lg)',
- xl: 'var(--canon-spacing-xl)',
- '2xl': 'var(--canon-spacing-2xl)',
-};
diff --git a/packages/canon/src/layout/sprinkles.css.ts b/packages/canon/src/layout/sprinkles.css.ts
deleted file mode 100644
index 7e85487fe3..0000000000
--- a/packages/canon/src/layout/sprinkles.css.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2024 The Backstage Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import { defineProperties } from '@vanilla-extract/sprinkles';
-import { breakpoints, space } from './properties';
-
-export const spacingProperties = defineProperties({
- conditions: breakpoints,
- defaultCondition: 'xs',
- responsiveArray: ['xs', 'sm', 'md', 'lg', 'xl', '2xl'],
- properties: {
- paddingTop: space,
- paddingBottom: space,
- paddingLeft: space,
- paddingRight: space,
- marginTop: space,
- marginBottom: space,
- marginLeft: space,
- marginRight: space,
- gap: space,
- },
- shorthands: {
- padding: ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'],
- paddingX: ['paddingLeft', 'paddingRight'],
- paddingY: ['paddingTop', 'paddingBottom'],
- margin: ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'],
- marginX: ['marginLeft', 'marginRight'],
- marginY: ['marginTop', 'marginBottom'],
- },
-});
-
-export const colorProperties = defineProperties({
- conditions: {
- light: { selector: '[data-theme="light"] &' },
- dark: { selector: '[data-theme="dark"] &' },
- },
- defaultCondition: ['light', 'dark'],
- properties: {
- color: {
- primary: 'var(--canon-text-primary)',
- secondary: 'var(--canon-text-secondary)',
- error: 'var(--canon-error)',
- },
- background: {
- background: 'var(--canon-background)',
- elevation1: 'var(--canon-surface-1)',
- elevation2: 'var(--canon-surface-2)',
- transparent: 'transparent',
- },
- },
-});
diff --git a/packages/canon/src/layout/types.ts b/packages/canon/src/layout/types.ts
deleted file mode 100644
index c051dacb44..0000000000
--- a/packages/canon/src/layout/types.ts
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright 2024 The Backstage Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import { breakpoints, space, themes } from './properties';
-
-/** @public */
-export type Breakpoint = keyof typeof breakpoints;
-
-/** @public */
-export type Space = keyof typeof space;
-
-/** @public */
-export type Theme = keyof typeof themes;
-
-/** @public */
-export type Gap = Space | Partial>;
-
-/** @public */
-export type PaddingLeft = Space | Partial>;
-
-/** @public */
-export type PaddingRight = Space | Partial>;
-
-/** @public */
-export type PaddingTop = Space | Partial>;
-
-/** @public */
-export type PaddingBottom = Space | Partial>;
-
-/** @public */
-export type Padding = Space | Partial>;
-
-/** @public */
-export type PaddingX = Space | Partial>;
-
-/** @public */
-export type PaddingY = Space | Partial>;
-
-/** @public */
-export type MarginLeft = Space | Partial>;
-
-/** @public */
-export type MarginRight = Space | Partial>;
-
-/** @public */
-export type MarginTop = Space | Partial>;
-
-/** @public */
-export type MarginBottom = Space | Partial>;
-
-/** @public */
-export type Margin = Space | Partial>;
-
-/** @public */
-export type MarginX = Space | Partial>;
-
-/** @public */
-export type MarginY = Space | Partial>;
-
-/** @public */
-export interface SpaceProps {
- gap?: Gap;
- padding?: Padding;
- paddingLeft?: PaddingLeft;
- paddingRight?: PaddingRight;
- paddingTop?: PaddingTop;
- paddingBottom?: PaddingBottom;
- paddingX?: PaddingX;
- paddingY?: PaddingY;
- margin?: Margin;
- marginLeft?: MarginLeft;
- marginRight?: MarginRight;
- marginTop?: MarginTop;
- marginBottom?: MarginBottom;
- marginX?: MarginX;
- marginY?: MarginY;
-}
-
-/** @public */
-export type Background =
- | 'background'
- | 'elevation1'
- | 'elevation2'
- | 'transparent'
- | Partial<
- Record
- >;
-
-/** @public */
-export type Color =
- | 'primary'
- | 'secondary'
- | 'error'
- | Partial>;
-
-/** @public */
-export type AsProps =
- | 'div'
- | 'span'
- | 'p'
- | 'article'
- | 'section'
- | 'main'
- | 'nav'
- | 'aside'
- | 'ul'
- | 'ol'
- | 'li'
- | 'details'
- | 'summary'
- | 'dd'
- | 'dl'
- | 'dt';
-
-/** @public */
-export interface ColorProps {
- color?: Color;
- background?: Background;
-}
diff --git a/packages/canon/src/types.ts b/packages/canon/src/types.ts
index 236d633f84..1211b1be4d 100644
--- a/packages/canon/src/types.ts
+++ b/packages/canon/src/types.ts
@@ -13,11 +13,101 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-export interface Breakpoints {
- xs: string;
- sm: string;
- md: string;
- lg: string;
- xl: string;
- '2xl': string;
+
+/** @public */
+export type AsProps =
+ | 'div'
+ | 'span'
+ | 'p'
+ | 'article'
+ | 'section'
+ | 'main'
+ | 'nav'
+ | 'aside'
+ | 'ul'
+ | 'ol'
+ | 'li'
+ | 'details'
+ | 'summary'
+ | 'dd'
+ | 'dl'
+ | 'dt';
+
+/** @public */
+export type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
+
+/** @public */
+export type Space = 'none' | '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
+
+/** @public */
+export type Display = 'none' | 'flex' | 'block' | 'inline';
+
+/** @public */
+export type FlexDirection = 'row' | 'column';
+
+/** @public */
+export type FlexWrap = 'wrap' | 'nowrap' | 'wrap-reverse';
+
+/** @public */
+export type JustifyContent =
+ | 'stretch'
+ | 'start'
+ | 'center'
+ | 'end'
+ | 'around'
+ | 'between';
+
+/** @public */
+export type AlignItems = 'stretch' | 'start' | 'center' | 'end';
+
+/** @public */
+export type BorderRadius =
+ | 'none'
+ | '2xs'
+ | 'xs'
+ | 'sm'
+ | 'md'
+ | 'lg'
+ | 'xl'
+ | '2xl';
+
+/** @public */
+export type Border = 'none' | 'base' | 'error' | 'warning' | 'selected';
+
+/** @public */
+export type Columns = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto';
+
+/** @public */
+export interface SpaceProps {
+ margin?: Space | Partial>;
+ marginBottom?: Space | Partial>;
+ marginLeft?: Space | Partial>;
+ marginRight?: Space | Partial>;
+ marginTop?: Space | Partial>;
+ marginX?: Space | Partial>;
+ marginY?: Space | Partial>;
+ padding?: Space | Partial>;
+ paddingBottom?: Space | Partial>;
+ paddingLeft?: Space | Partial>;
+ paddingRight?: Space | Partial>;
+ paddingTop?: Space | Partial>;
+ paddingX?: Space | Partial>;
+ paddingY?: Space | Partial>;
+}
+
+/** @public */
+export interface UtilityProps extends SpaceProps {
+ alignItems?: AlignItems | Partial>;
+ border?: Border | Partial>;
+ borderRadius?: BorderRadius | Partial>;
+ colEnd?: Columns | 'auto' | Partial>;
+ colSpan?: Columns | 'full' | Partial>;
+ colStart?: Columns | 'auto' | Partial>;
+ columns?: Columns | Partial>;
+ display?: Display | Partial>;
+ flexDirection?: FlexDirection | Partial>;
+ flexWrap?: FlexWrap | Partial>;
+ gap?: Space | Partial>;
+ justifyContent?: JustifyContent | Partial>;
+ rowSpan?: Columns | 'full' | Partial>;
}
diff --git a/packages/canon/src/utils/getClassNames.ts b/packages/canon/src/utils/getClassNames.ts
new file mode 100644
index 0000000000..684e633027
--- /dev/null
+++ b/packages/canon/src/utils/getClassNames.ts
@@ -0,0 +1,206 @@
+/*
+ * Copyright 2024 The Backstage Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import type { Breakpoint, UtilityProps } from '../types';
+
+const spaceMap = (type: string) => ({
+ none: `${type}-none`,
+ '2xs': `${type}-2xs`,
+ xs: `${type}-xs`,
+ sm: `${type}-sm`,
+ md: `${type}-md`,
+ lg: `${type}-lg`,
+ xl: `${type}-xl`,
+ '2xl': `${type}-2xl`,
+});
+
+const valueMap: Record> = {
+ alignItems: {
+ stretch: 'items-stretch',
+ start: 'items-start',
+ center: 'items-center',
+ end: 'items-end',
+ },
+ border: {
+ none: 'border-none',
+ base: 'border-base',
+ error: 'border-error',
+ warning: 'border-warning',
+ selected: 'border-selected',
+ },
+ borderRadius: {
+ none: 'rounded-none',
+ '2xs': 'rounded-2xs',
+ xs: 'rounded-xs',
+ sm: 'rounded-sm',
+ md: 'rounded-md',
+ lg: 'rounded-lg',
+ xl: 'rounded-xl',
+ '2xl': 'rounded-2xl',
+ },
+ colEnd: {
+ 1: 'col-end-1',
+ 2: 'col-end-2',
+ 3: 'col-end-3',
+ 4: 'col-end-4',
+ 5: 'col-end-5',
+ 6: 'col-end-6',
+ 7: 'col-end-7',
+ 8: 'col-end-8',
+ 9: 'col-end-9',
+ 10: 'col-end-10',
+ 11: 'col-end-11',
+ 12: 'col-end-12',
+ auto: 'col-end-auto',
+ },
+ colSpan: {
+ 1: 'col-span-1',
+ 2: 'col-span-2',
+ 3: 'col-span-3',
+ 4: 'col-span-4',
+ 5: 'col-span-5',
+ 6: 'col-span-6',
+ 7: 'col-span-7',
+ 8: 'col-span-8',
+ 9: 'col-span-9',
+ 10: 'col-span-10',
+ 11: 'col-span-11',
+ 12: 'col-span-12',
+ auto: 'col-span-auto',
+ },
+ colStart: {
+ 1: 'col-start-1',
+ 2: 'col-start-2',
+ 3: 'col-start-3',
+ 4: 'col-start-4',
+ 5: 'col-start-5',
+ 6: 'col-start-6',
+ 7: 'col-start-7',
+ 8: 'col-start-8',
+ 9: 'col-start-9',
+ 10: 'col-start-10',
+ 11: 'col-start-11',
+ 12: 'col-start-12',
+ auto: 'col-start-auto',
+ },
+ columns: {
+ 1: 'grid-cols-1',
+ 2: 'grid-cols-2',
+ 3: 'grid-cols-3',
+ 4: 'grid-cols-4',
+ 5: 'grid-cols-5',
+ 6: 'grid-cols-6',
+ 7: 'grid-cols-7',
+ 8: 'grid-cols-8',
+ 9: 'grid-cols-9',
+ 10: 'grid-cols-10',
+ 11: 'grid-cols-11',
+ 12: 'grid-cols-12',
+ auto: 'grid-cols-auto',
+ },
+ display: {
+ none: 'hidden',
+ flex: 'flex',
+ block: 'block',
+ inline: 'inline',
+ },
+ flexDirection: {
+ row: 'flex-row',
+ column: 'flex-col',
+ },
+ flexWrap: {
+ wrap: 'flex-wrap',
+ nowrap: 'flex-nowrap',
+ 'wrap-reverse': 'flex-wrap-reverse',
+ },
+ gap: spaceMap('gap'),
+ justifyContent: {
+ stretch: 'justify-stretch',
+ start: 'justify-start',
+ center: 'justify-center',
+ end: 'justify-end',
+ around: 'justify-around',
+ between: 'justify-between',
+ },
+ margin: spaceMap('m'),
+ marginBottom: spaceMap('mb'),
+ marginLeft: spaceMap('ml'),
+ marginRight: spaceMap('mr'),
+ marginTop: spaceMap('mt'),
+ marginX: spaceMap('mx'),
+ marginY: spaceMap('my'),
+ padding: spaceMap('p'),
+ paddingBottom: spaceMap('pb'),
+ paddingLeft: spaceMap('pl'),
+ paddingRight: spaceMap('pr'),
+ paddingTop: spaceMap('pt'),
+ paddingX: spaceMap('px'),
+ paddingY: spaceMap('py'),
+ rowSpan: {
+ 1: 'row-span-1',
+ 2: 'row-span-2',
+ 3: 'row-span-3',
+ 4: 'row-span-4',
+ 5: 'row-span-5',
+ 6: 'row-span-6',
+ 7: 'row-span-7',
+ 8: 'row-span-8',
+ 9: 'row-span-9',
+ 10: 'row-span-10',
+ 11: 'row-span-11',
+ 12: 'row-span-12',
+ full: 'row-span-full',
+ },
+};
+
+const generateClassNames = (propName: string, propValue: any) => {
+ const classNames: string[] = [];
+
+ // If the property name is not in the valueMap, return an empty array
+ if (!valueMap.hasOwnProperty(propName)) {
+ return classNames;
+ }
+
+ if (typeof propValue === 'string' || typeof propValue === 'number') {
+ // If the property value is a string, map it to the valueMap
+ const value = valueMap[propName]?.[propValue] || propValue;
+ classNames.push(`cu-${value}`);
+ } else if (typeof propValue === 'object') {
+ // If the property value is an object, map each key-value pair
+ Object.entries(propValue as Record).forEach(
+ ([breakpoint, value]) => {
+ const mappedValue = valueMap[propName]?.[value] || value;
+
+ if (breakpoint === 'xs') {
+ classNames.push(`cu-${mappedValue}`);
+ } else {
+ classNames.push(`cu-${breakpoint}-${mappedValue}`);
+ }
+ },
+ );
+ }
+ return classNames;
+};
+
+export const getClassNames = (props: UtilityProps) => {
+ const classNames: string[] = [];
+
+ Object.entries(props).forEach(([propName, propValue]) => {
+ classNames.push(...generateClassNames(propName, propValue));
+ });
+
+ return classNames.filter(Boolean).join(' ');
+};
diff --git a/plugins/catalog-backend/src/processors/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/processors/PlaceholderProcessor.test.ts
index c2c49ea1cb..9d47877972 100644
--- a/plugins/catalog-backend/src/processors/PlaceholderProcessor.test.ts
+++ b/plugins/catalog-backend/src/processors/PlaceholderProcessor.test.ts
@@ -28,16 +28,12 @@ import {
textPlaceholderResolver,
yamlPlaceholderResolver,
} from './PlaceholderProcessor';
-import { UrlReaderService } from '@backstage/backend-plugin-api';
+import { mockServices } from '@backstage/backend-test-utils';
const integrations = ScmIntegrations.fromConfig(new ConfigReader({}));
describe('PlaceholderProcessor', () => {
- const reader: jest.Mocked = {
- readTree: jest.fn(),
- search: jest.fn(),
- readUrl: jest.fn(),
- };
+ const reader = mockServices.urlReader.mock();
beforeEach(() => {
jest.resetAllMocks();
diff --git a/plugins/catalog-backend/src/processors/UrlReaderProcessor.test.ts b/plugins/catalog-backend/src/processors/UrlReaderProcessor.test.ts
index 545888e7cb..4a8f982027 100644
--- a/plugins/catalog-backend/src/processors/UrlReaderProcessor.test.ts
+++ b/plugins/catalog-backend/src/processors/UrlReaderProcessor.test.ts
@@ -31,7 +31,6 @@ import {
import { defaultEntityDataParser } from '../util/parse';
import { UrlReaderProcessor } from './UrlReaderProcessor';
import { UrlReaders } from '@backstage/backend-defaults/urlReader';
-import { UrlReaderService } from '@backstage/backend-plugin-api';
describe('UrlReaderProcessor', () => {
const mockApiOrigin = 'http://localhost';
@@ -193,11 +192,9 @@ describe('UrlReaderProcessor', () => {
it('uses search when there are globs', async () => {
const logger = mockServices.logger.mock();
- const reader: jest.Mocked = {
- readUrl: jest.fn(),
- readTree: jest.fn(),
- search: jest.fn().mockImplementation(async () => []),
- };
+ const reader = mockServices.urlReader.mock({
+ search: jest.fn().mockResolvedValue([]),
+ });
const processor = new UrlReaderProcessor({ reader, logger });
diff --git a/plugins/catalog-backend/src/service/createRouter.test.ts b/plugins/catalog-backend/src/service/createRouter.test.ts
index 2d158f7f16..234a636a62 100644
--- a/plugins/catalog-backend/src/service/createRouter.test.ts
+++ b/plugins/catalog-backend/src/service/createRouter.test.ts
@@ -42,7 +42,6 @@ import { wrapServer } from '@backstage/backend-openapi-utils';
import { Server } from 'http';
import { mockCredentials, mockServices } from '@backstage/backend-test-utils';
import { LocationAnalyzer } from '@backstage/plugin-catalog-node';
-import { PermissionsService } from '@backstage/backend-plugin-api';
describe('createRouter readonly disabled', () => {
let entitiesCatalog: jest.Mocked;
@@ -51,7 +50,7 @@ describe('createRouter readonly disabled', () => {
let app: express.Express | Server;
let refreshService: RefreshService;
let locationAnalyzer: jest.Mocked;
- let permissionsService: jest.Mocked;
+ const permissionsService = mockServices.permissions.mock();
beforeEach(async () => {
entitiesCatalog = {
@@ -69,15 +68,9 @@ describe('createRouter readonly disabled', () => {
deleteLocation: jest.fn(),
getLocationByEntity: jest.fn(),
};
-
locationAnalyzer = {
analyzeLocation: jest.fn(),
};
- permissionsService = {
- authorize: jest.fn(),
- authorizeConditional: jest.fn(),
- };
-
refreshService = { refresh: jest.fn() };
orchestrator = { process: jest.fn() };
const router = await createRouter({
@@ -91,13 +84,13 @@ describe('createRouter readonly disabled', () => {
auth: mockServices.auth(),
httpAuth: mockServices.httpAuth(),
locationAnalyzer,
- permissionsService: permissionsService,
+ permissionsService,
});
app = await wrapServer(express().use(router));
});
beforeEach(() => {
- jest.resetAllMocks();
+ jest.clearAllMocks();
});
describe('POST /refresh', () => {
@@ -158,7 +151,7 @@ describe('createRouter readonly disabled', () => {
auth: mockServices.auth(),
httpAuth: mockServices.httpAuth(),
locationAnalyzer,
- permissionsService: permissionsService,
+ permissionsService,
disableRelationsCompatibility: true, // added
});
app = await wrapServer(express().use(router));
@@ -218,7 +211,7 @@ describe('createRouter readonly disabled', () => {
auth: mockServices.auth(),
httpAuth: mockServices.httpAuth(),
locationAnalyzer,
- permissionsService: permissionsService,
+ permissionsService,
disableRelationsCompatibility: true, // added
});
app = await wrapServer(express().use(router));
@@ -939,7 +932,7 @@ describe('createRouter readonly and raw json enabled', () => {
let entitiesCatalog: jest.Mocked;
let app: express.Express;
let locationService: jest.Mocked;
- let permissionsService: jest.Mocked;
+ const permissionsService = mockServices.permissions.mock();
beforeAll(async () => {
entitiesCatalog = {
@@ -970,13 +963,13 @@ describe('createRouter readonly and raw json enabled', () => {
permissionIntegrationRouter: express.Router(),
auth: mockServices.auth(),
httpAuth: mockServices.httpAuth(),
- permissionsService: permissionsService,
+ permissionsService,
});
app = express().use(router);
});
beforeEach(() => {
- jest.resetAllMocks();
+ jest.clearAllMocks();
});
describe('GET /entities', () => {
@@ -1141,7 +1134,7 @@ describe('NextRouter permissioning', () => {
let locationService: jest.Mocked;
let app: express.Express;
let refreshService: RefreshService;
- let permissionsService: jest.Mocked;
+ const permissionsService = mockServices.permissions.mock();
const fakeRule = createPermissionRule({
name: 'FAKE_RULE',
@@ -1188,13 +1181,13 @@ describe('NextRouter permissioning', () => {
}),
auth: mockServices.auth(),
httpAuth: mockServices.httpAuth(),
- permissionsService: permissionsService,
+ permissionsService,
});
app = express().use(router);
});
afterEach(() => {
- jest.resetAllMocks();
+ jest.clearAllMocks();
});
it('accepts and evaluates conditions at the apply-conditions endpoint', async () => {
diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts
index e7b1d027a0..41803dcd9d 100644
--- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts
+++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts
@@ -23,10 +23,7 @@ import {
registerMswTestHooks,
} from '@backstage/backend-test-utils';
import { NotFoundError } from '@backstage/errors';
-import {
- AuthorizeResult,
- PermissionEvaluator,
-} from '@backstage/plugin-permission-common';
+import { AuthorizeResult } from '@backstage/plugin-permission-common';
import {
ANNOTATION_KUBERNETES_AUTH_PROVIDER,
KubernetesRequestAuth,
@@ -55,10 +52,7 @@ import {
} from './KubernetesProxy';
import type { Request } from 'express';
-import {
- BackstageCredentials,
- DiscoveryService,
-} from '@backstage/backend-plugin-api';
+import { BackstageCredentials } from '@backstage/backend-plugin-api';
const mockCertDir = createMockDirectory({
content: {
@@ -79,15 +73,8 @@ describe('KubernetesProxy', () => {
>(),
};
- const permissionApi: jest.Mocked = {
- authorize: jest.fn(),
- authorizeConditional: jest.fn(),
- };
-
- const mockDisocveryApi: jest.Mocked = {
- getBaseUrl: jest.fn(),
- getExternalBaseUrl: jest.fn(),
- };
+ const permissionApi = mockServices.permissions.mock();
+ const mockDisocveryApi = mockServices.discovery.mock();
registerMswTestHooks(worker);
diff --git a/plugins/notifications-backend/dev/index.ts b/plugins/notifications-backend/dev/index.ts
index cee630d1ad..f1fe453457 100644
--- a/plugins/notifications-backend/dev/index.ts
+++ b/plugins/notifications-backend/dev/index.ts
@@ -20,13 +20,13 @@ import {
createBackendPlugin,
} from '@backstage/backend-plugin-api';
import { notificationService } from '@backstage/plugin-notifications-node';
-import { errorHandler } from '@backstage/backend-common';
import {
notificationSeverities,
NotificationSeverity,
} from '@backstage/plugin-notifications-common';
import express, { Response } from 'express';
import Router from 'express-promise-router';
+import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter';
const randomSeverity = (): NotificationSeverity => {
return notificationSeverities[
@@ -77,8 +77,12 @@ const notificationsDebug = createBackendPlugin({
deps: {
notifications: notificationService,
httpRouter: coreServices.httpRouter,
+ config: coreServices.rootConfig,
+ logger: coreServices.logger,
},
- async init({ notifications, httpRouter }) {
+ async init({ notifications, httpRouter, config, logger }) {
+ const middleware = MiddlewareFactory.create({ config, logger });
+
const router = Router();
router.use(express.json());
router.post('/', async (_, res: Response) => {
@@ -96,7 +100,7 @@ const notificationsDebug = createBackendPlugin({
});
res.status(200).send({ status: 'ok' });
});
- router.use(errorHandler());
+ router.use(middleware.error());
httpRouter.use(router);
httpRouter.addAuthPolicy({
diff --git a/plugins/notifications-backend/package.json b/plugins/notifications-backend/package.json
index 4dd2c1a655..4330d4c903 100644
--- a/plugins/notifications-backend/package.json
+++ b/plugins/notifications-backend/package.json
@@ -38,7 +38,6 @@
"test": "backstage-cli package test"
},
"dependencies": {
- "@backstage/backend-common": "^0.25.0",
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/catalog-client": "workspace:^",
"@backstage/catalog-model": "workspace:^",
diff --git a/plugins/notifications-backend/src/service/router.test.ts b/plugins/notifications-backend/src/service/router.test.ts
index 5126181c4f..e557e5818d 100644
--- a/plugins/notifications-backend/src/service/router.test.ts
+++ b/plugins/notifications-backend/src/service/router.test.ts
@@ -14,16 +14,12 @@
* limitations under the License.
*/
-import {
- DatabaseManager,
- PluginDatabaseManager,
-} from '@backstage/backend-common';
import express from 'express';
import request from 'supertest';
import { createRouter } from './router';
-import { ConfigReader } from '@backstage/config';
import { SignalsService } from '@backstage/plugin-signals-node';
import {
+ TestDatabases,
mockCredentials,
mockErrorHandler,
mockServices,
@@ -31,20 +27,9 @@ import {
import { NotificationSendOptions } from '@backstage/plugin-notifications-node';
import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils';
-function createDatabase(): PluginDatabaseManager {
- return DatabaseManager.fromConfig(
- new ConfigReader({
- backend: {
- database: {
- client: 'better-sqlite3',
- connection: ':memory:',
- },
- },
- }),
- ).forPlugin('notifications');
-}
-
describe('createRouter', () => {
+ const databases = TestDatabases.create();
+
let app: express.Express;
const signalService: jest.Mocked = {
@@ -62,9 +47,10 @@ describe('createRouter', () => {
const catalog = catalogServiceMock();
beforeAll(async () => {
+ const knex = await databases.init('SQLITE_3');
const router = await createRouter({
logger: mockServices.logger.mock(),
- database: createDatabase(),
+ database: { getClient: async () => knex },
signals: signalService,
userInfo,
config,
diff --git a/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.test.ts b/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.test.ts
index 32a6f8b701..d4c77c617d 100644
--- a/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.test.ts
+++ b/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.test.ts
@@ -14,17 +14,13 @@
* limitations under the License.
*/
-import { registerMswTestHooks } from '@backstage/backend-test-utils';
+import { mockServices } from '@backstage/backend-test-utils';
import { Entity } from '@backstage/catalog-model';
import { ConfigReader } from '@backstage/config';
+import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils';
import { TestPipeline } from '@backstage/plugin-search-backend-node';
-import { rest } from 'msw';
-import { setupServer } from 'msw/node';
import { Readable } from 'stream';
import { DefaultCatalogCollatorFactory } from './DefaultCatalogCollatorFactory';
-import { DiscoveryService } from '@backstage/backend-plugin-api';
-
-const server = setupServer();
const expectedEntities: Entity[] = [
{
@@ -57,44 +53,21 @@ const expectedEntities: Entity[] = [
];
describe('DefaultCatalogCollatorFactory', () => {
- const config = new ConfigReader({});
- const mockDiscoveryApi: jest.Mocked = {
- getBaseUrl: jest.fn().mockResolvedValue('http://localhost:7007'),
- getExternalBaseUrl: jest.fn(),
- };
-
- const options = {
- discovery: mockDiscoveryApi,
- };
-
- registerMswTestHooks(server);
-
- beforeEach(() => {
- server.use(
- rest.get('http://localhost:7007/entities', (req, res, ctx) => {
- if (req.url.searchParams.has('filter')) {
- const filter = req.url.searchParams.get('filter');
- if (filter === 'kind=Foo,kind=Bar') {
- // When filtering on the 'Foo,Bar' kinds we simply return no items, to simulate a filter
- return res(ctx.json([]));
- }
- throw new Error('Unexpected filter parameter');
- }
-
- // Imitate offset/limit pagination.
- const offset = parseInt(req.url.searchParams.get('offset') || '0', 10);
- const limit = parseInt(req.url.searchParams.get('limit') || '500', 10);
- return res(ctx.json(expectedEntities.slice(offset, limit + offset)));
- }),
- );
+ const config = mockServices.rootConfig();
+ const discovery = mockServices.discovery.mock({
+ getBaseUrl: async () => 'http://localhost:7007',
});
+ const catalog = catalogServiceMock({ entities: expectedEntities });
describe('getCollator', () => {
let factory: DefaultCatalogCollatorFactory;
let collator: Readable;
beforeEach(async () => {
- factory = DefaultCatalogCollatorFactory.fromConfig(config, options);
+ factory = DefaultCatalogCollatorFactory.fromConfig(config, {
+ discovery,
+ catalogClient: catalog,
+ });
collator = await factory.getCollator();
});
@@ -105,7 +78,6 @@ describe('DefaultCatalogCollatorFactory', () => {
it('fetches from the configured catalog service', async () => {
const pipeline = TestPipeline.fromCollator(collator);
const { documents } = await pipeline.execute();
- expect(mockDiscoveryApi.getBaseUrl).toHaveBeenCalledWith('catalog');
expect(documents).toHaveLength(expectedEntities.length);
});
@@ -145,7 +117,8 @@ describe('DefaultCatalogCollatorFactory', () => {
it('maps a returned entity to an expected CatalogEntityDocument with custom transformer', async () => {
const customFactory = DefaultCatalogCollatorFactory.fromConfig(config, {
- ...options,
+ discovery,
+ catalogClient: catalog,
entityTransformer: entity => ({
title: `custom-title-${
entity.metadata.title ?? entity.metadata.name
@@ -201,7 +174,8 @@ describe('DefaultCatalogCollatorFactory', () => {
it('maps a returned entity with a custom locationTemplate', async () => {
// Provide an alternate location template.
factory = DefaultCatalogCollatorFactory.fromConfig(new ConfigReader({}), {
- discovery: mockDiscoveryApi,
+ discovery: discovery,
+ catalogClient: catalog,
locationTemplate: '/software/:name',
});
collator = await factory.getCollator();
@@ -216,7 +190,8 @@ describe('DefaultCatalogCollatorFactory', () => {
it('allows filtering of the retrieved catalog entities', async () => {
// Provide a custom filter.
factory = DefaultCatalogCollatorFactory.fromConfig(new ConfigReader({}), {
- discovery: mockDiscoveryApi,
+ discovery: discovery,
+ catalogClient: catalog,
filter: {
kind: ['Foo', 'Bar'],
},
@@ -232,7 +207,8 @@ describe('DefaultCatalogCollatorFactory', () => {
it('paginates through catalog entities using batchSize', async () => {
factory = DefaultCatalogCollatorFactory.fromConfig(config, {
- ...options,
+ discovery,
+ catalogClient: catalog,
batchSize: 1,
});
collator = await factory.getCollator();
diff --git a/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.ts b/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.ts
index 11d72c156b..ff3e81843b 100644
--- a/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.ts
+++ b/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.ts
@@ -18,6 +18,7 @@ import {
TokenManager,
createLegacyAuthAdapters,
} from '@backstage/backend-common';
+import { AuthService, DiscoveryService } from '@backstage/backend-plugin-api';
import {
CatalogApi,
CatalogClient,
@@ -33,7 +34,6 @@ import { Readable } from 'stream';
import { CatalogCollatorEntityTransformer } from './CatalogCollatorEntityTransformer';
import { readCollatorConfigOptions } from './config';
import { defaultCatalogCollatorEntityTransformer } from './defaultCatalogCollatorEntityTransformer';
-import { AuthService, DiscoveryService } from '@backstage/backend-plugin-api';
/**
* @public
@@ -55,6 +55,7 @@ export type DefaultCatalogCollatorFactoryOptions = {
* @deprecated Use the config key `search.collators.catalog.batchSize` instead.
*/
batchSize?: number;
+ // TODO(freben): Change to required CatalogService instead when fully migrated to the new backend system.
catalogClient?: CatalogApi;
/**
* Allows you to customize how entities are shaped into documents.
@@ -137,32 +138,25 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory {
private async *execute(): AsyncGenerator {
let entitiesRetrieved = 0;
- let moreEntitiesToGet = true;
+ let cursor: string | undefined = undefined;
- // Offset/limit pagination is used on the Catalog Client in order to
- // limit (and allow some control over) memory used by the search backend
- // at index-time.
- while (moreEntitiesToGet) {
+ do {
const { token } = await this.auth.getPluginRequestToken({
onBehalfOf: await this.auth.getOwnServiceCredentials(),
targetPluginId: 'catalog',
});
- const entities = (
- await this.catalogClient.getEntities(
- {
- filter: this.filter,
- limit: this.batchSize,
- offset: entitiesRetrieved,
- },
- { token },
- )
- ).items;
+ const response = await this.catalogClient.queryEntities(
+ {
+ filter: this.filter,
+ limit: this.batchSize,
+ ...(cursor ? { cursor } : {}),
+ },
+ { token },
+ );
+ cursor = response.pageInfo.nextCursor;
+ entitiesRetrieved += response.items.length;
- // Control looping through entity batches.
- moreEntitiesToGet = entities.length === this.batchSize;
- entitiesRetrieved += entities.length;
-
- for (const entity of entities) {
+ for (const entity of response.items) {
yield {
...this.entityTransformer(entity),
authorization: {
@@ -175,7 +169,7 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory {
}),
};
}
- }
+ } while (cursor);
}
private applyArgsToFormat(
diff --git a/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.test.ts b/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.test.ts
index 92f75df91f..b8d915636a 100644
--- a/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.test.ts
+++ b/plugins/search-backend-module-explore/src/collators/ToolDocumentCollatorFactory.test.ts
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { ConfigReader } from '@backstage/config';
+
import { TestPipeline } from '@backstage/plugin-search-backend-node';
import {
mockServices,
@@ -23,7 +23,6 @@ import { rest } from 'msw';
import { setupServer } from 'msw/node';
import { Readable } from 'stream';
import { ToolDocumentCollatorFactory } from './ToolDocumentCollatorFactory';
-import { DiscoveryService } from '@backstage/backend-plugin-api';
const logger = mockServices.logger.mock();
@@ -54,11 +53,10 @@ const mockTools = {
};
describe('ToolDocumentCollatorFactory', () => {
- const config = new ConfigReader({});
- const mockDiscoveryApi: jest.Mocked = {
- getBaseUrl: jest.fn().mockResolvedValue('http://test-backend/api/explore'),
- getExternalBaseUrl: jest.fn(),
- };
+ const config = mockServices.rootConfig();
+ const mockDiscoveryApi = mockServices.discovery.mock({
+ getBaseUrl: async () => 'http://test-backend/api/explore',
+ });
const options = {
discovery: mockDiscoveryApi,
diff --git a/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.test.ts b/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.test.ts
index 4adb42cf1e..2b8ec17b0d 100644
--- a/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.test.ts
+++ b/plugins/search-backend-module-techdocs/src/collators/DefaultTechDocsCollatorFactory.test.ts
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import { Entity } from '@backstage/catalog-model';
import { ConfigReader } from '@backstage/config';
import { TestPipeline } from '@backstage/plugin-search-backend-node';
@@ -25,7 +26,6 @@ import { setupServer } from 'msw/node';
import { Readable } from 'stream';
import { DefaultTechDocsCollatorFactory } from './DefaultTechDocsCollatorFactory';
import { TechDocsCollatorEntityTransformer } from './TechDocsCollatorEntityTransformer';
-import { DiscoveryService } from '@backstage/backend-plugin-api';
import {
MkSearchIndexDoc,
TechDocsCollatorDocumentTransformer,
@@ -81,11 +81,10 @@ const expectedEntities: Entity[] = [
];
describe('DefaultTechDocsCollatorFactory', () => {
- const config = new ConfigReader({});
- const mockDiscoveryApi: jest.Mocked = {
- getBaseUrl: jest.fn().mockResolvedValue('http://test-backend'),
- getExternalBaseUrl: jest.fn(),
- };
+ const config = mockServices.rootConfig.mock();
+ const mockDiscoveryApi = mockServices.discovery.mock({
+ getBaseUrl: async () => 'http://test-backend',
+ });
const options = {
logger,
discovery: mockDiscoveryApi,
diff --git a/plugins/signals-backend/src/service/router.test.ts b/plugins/signals-backend/src/service/router.test.ts
index 8584a06dea..acc49739b8 100644
--- a/plugins/signals-backend/src/service/router.test.ts
+++ b/plugins/signals-backend/src/service/router.test.ts
@@ -18,27 +18,14 @@ import express from 'express';
import request from 'supertest';
import { createRouter } from './router';
-import { EventsService } from '@backstage/plugin-events-node';
-import {
- DiscoveryService,
- UserInfoService,
-} from '@backstage/backend-plugin-api';
import { ConfigReader } from '@backstage/config';
import { mockErrorHandler, mockServices } from '@backstage/backend-test-utils';
-const eventsServiceMock: jest.Mocked = {
- subscribe: jest.fn(),
- publish: jest.fn(),
-};
-
-const discovery: jest.Mocked = {
- getBaseUrl: jest.fn().mockResolvedValue('/api/signals'),
- getExternalBaseUrl: jest.fn(),
-};
-
-const userInfo: jest.Mocked = {
- getUserInfo: jest.fn(),
-};
+const eventsServiceMock = mockServices.events.mock();
+const discovery = mockServices.discovery.mock({
+ getBaseUrl: async () => '/api/signals',
+});
+const userInfo = mockServices.userInfo.mock();
describe('createRouter', () => {
let app: express.Express;
diff --git a/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts b/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts
index 1cdd0174b5..6bc849e30d 100644
--- a/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts
+++ b/plugins/techdocs-backend/src/cache/TechDocsCache.test.ts
@@ -17,7 +17,6 @@
import { ConfigReader } from '@backstage/config';
import { CacheInvalidationError, TechDocsCache } from './TechDocsCache';
import { mockServices } from '@backstage/backend-test-utils';
-import { CacheService } from '@backstage/backend-plugin-api';
const cached = (str: string): string => {
return Buffer.from(str).toString('base64');
@@ -25,17 +24,12 @@ const cached = (str: string): string => {
describe('TechDocsCache', () => {
let CacheUnderTest: TechDocsCache;
- let MockClient: jest.Mocked;
+ const cache = mockServices.cache.mock();
beforeEach(() => {
- MockClient = {
- get: jest.fn(),
- set: jest.fn(),
- delete: jest.fn(),
- withOptions: jest.fn(),
- };
+ jest.clearAllMocks();
CacheUnderTest = TechDocsCache.fromConfig(new ConfigReader({}), {
- cache: MockClient,
+ cache: cache,
logger: mockServices.logger.mock(),
});
});
@@ -43,16 +37,16 @@ describe('TechDocsCache', () => {
describe('get', () => {
it('returns undefined if no response', async () => {
const expectedPath = 'some/index.html';
- MockClient.get.mockResolvedValueOnce(undefined);
+ cache.get.mockResolvedValueOnce(undefined);
const actual = await CacheUnderTest.get(expectedPath);
- expect(MockClient.get).toHaveBeenCalledWith(expectedPath);
+ expect(cache.get).toHaveBeenCalledWith(expectedPath);
expect(actual).toBe(undefined);
});
it('returns undefined if cache get throws', async () => {
const expectedPath = 'some/index.html';
- MockClient.get.mockRejectedValueOnce(new Error());
+ cache.get.mockRejectedValueOnce(new Error());
const actual = await CacheUnderTest.get(expectedPath);
expect(actual).toBe(undefined);
@@ -60,7 +54,7 @@ describe('TechDocsCache', () => {
it('returns undefined if no response after 1s by default', async () => {
const expectedPath = 'some/index.html';
- MockClient.get.mockImplementationOnce(() => {
+ cache.get.mockImplementationOnce(() => {
return new Promise(resolve => {
setTimeout(() => resolve(cached('value')), 1500);
});
@@ -71,7 +65,7 @@ describe('TechDocsCache', () => {
it('returns undefined if no response after configured readTimeout', async () => {
const expectedPath = 'some/index.html';
- MockClient.get.mockImplementationOnce(() => {
+ cache.get.mockImplementationOnce(() => {
return new Promise(resolve => {
setTimeout(() => resolve(cached('value')), 20);
});
@@ -82,7 +76,7 @@ describe('TechDocsCache', () => {
techdocs: { cache: { readTimeout: 10 } },
}),
{
- cache: MockClient,
+ cache: cache,
logger: mockServices.logger.mock(),
},
);
@@ -93,7 +87,7 @@ describe('TechDocsCache', () => {
it('returns data if cache get returns it', async () => {
const expectedPath = 'some/index.html';
- MockClient.get.mockResolvedValueOnce(cached('expected value'));
+ cache.get.mockResolvedValueOnce(cached('expected value'));
const actual = await CacheUnderTest.get(expectedPath);
expect(actual?.toString()).toBe('expected value');
@@ -103,17 +97,14 @@ describe('TechDocsCache', () => {
describe('set', () => {
it('sets a base64-encoded string', async () => {
const expectedPath = 'some/index.html';
- MockClient.set.mockResolvedValueOnce(undefined);
+ cache.set.mockResolvedValueOnce(undefined);
await CacheUnderTest.set(expectedPath, Buffer.from('some data'));
- expect(MockClient.set).toHaveBeenCalledWith(
- expectedPath,
- cached('some data'),
- );
+ expect(cache.set).toHaveBeenCalledWith(expectedPath, cached('some data'));
});
it('does not throw if client throws', () => {
- MockClient.set.mockRejectedValueOnce(new Error());
+ cache.set.mockRejectedValueOnce(new Error());
expect(() => CacheUnderTest.set('i.html', Buffer.from(''))).not.toThrow();
});
});
@@ -121,26 +112,26 @@ describe('TechDocsCache', () => {
describe('invalidate', () => {
it('calls delete on client', async () => {
const expectedPath = 'some/index.html';
- MockClient.delete.mockResolvedValueOnce(undefined);
+ cache.delete.mockResolvedValueOnce(undefined);
await CacheUnderTest.invalidate(expectedPath);
- expect(MockClient.delete).toHaveBeenCalledWith(expectedPath);
+ expect(cache.delete).toHaveBeenCalledWith(expectedPath);
});
});
describe('invalidateMultiple', () => {
it('calls delete once per given path', async () => {
const expectedPaths = ['one/index.html', 'two/index.html'];
- MockClient.delete.mockResolvedValue(undefined);
+ cache.delete.mockResolvedValue(undefined);
await CacheUnderTest.invalidateMultiple(expectedPaths);
- expect(MockClient.delete).toHaveBeenNthCalledWith(1, expectedPaths[0]);
- expect(MockClient.delete).toHaveBeenNthCalledWith(2, expectedPaths[1]);
+ expect(cache.delete).toHaveBeenNthCalledWith(1, expectedPaths[0]);
+ expect(cache.delete).toHaveBeenNthCalledWith(2, expectedPaths[1]);
});
it('returns an array of as many paths provided', async () => {
const expectedPaths = ['one/index.html', 'two/index.html'];
- MockClient.delete.mockResolvedValue(undefined);
+ cache.delete.mockResolvedValue(undefined);
const actual = await CacheUnderTest.invalidateMultiple(expectedPaths);
expect(actual.length).toBe(2);
@@ -148,19 +139,19 @@ describe('TechDocsCache', () => {
it('calls delete on all paths even if the first rejects', async () => {
const expectedPaths = ['one/index.html', 'two/index.html'];
- MockClient.delete.mockRejectedValueOnce(new Error());
- MockClient.delete.mockResolvedValueOnce(undefined);
+ cache.delete.mockRejectedValueOnce(new Error());
+ cache.delete.mockResolvedValueOnce(undefined);
await expect(
CacheUnderTest.invalidateMultiple(expectedPaths),
).rejects.toThrow(CacheInvalidationError);
- expect(MockClient.delete).toHaveBeenCalledTimes(2);
+ expect(cache.delete).toHaveBeenCalledTimes(2);
});
it('rejects with invalidations error response', async () => {
const expectedPaths = ['one/index.html', 'two/index.html'];
- MockClient.delete.mockResolvedValueOnce(undefined);
- MockClient.delete.mockRejectedValueOnce(new Error());
+ cache.delete.mockResolvedValueOnce(undefined);
+ cache.delete.mockRejectedValueOnce(new Error());
await expect(
CacheUnderTest.invalidateMultiple.bind(CacheUnderTest, expectedPaths),
diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts
index c825f0dbb7..8ff949cff8 100644
--- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts
+++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollator.test.ts
@@ -25,7 +25,6 @@ import { setupServer } from 'msw/node';
import { http, HttpResponse } from 'msw';
import { ConfigReader } from '@backstage/config';
import { TECHDOCS_ANNOTATION } from '@backstage/plugin-techdocs-common';
-import { DiscoveryService } from '@backstage/backend-plugin-api';
const logger = loggerToWinstonLogger(mockServices.logger.mock());
@@ -80,15 +79,14 @@ describe('TechDocs Collator', () => {
registerMswTestHooks(worker);
describe('DefaultTechDocsCollator with legacyPathCasing configuration', () => {
- let mockDiscoveryApi: jest.Mocked;
+ const mockDiscoveryApi = mockServices.discovery.mock({
+ getBaseUrl: async () => 'http://test-backend',
+ });
let mockTokenManager: jest.Mocked;
let collator: DefaultTechDocsCollator;
beforeEach(() => {
- mockDiscoveryApi = {
- getBaseUrl: jest.fn().mockResolvedValue('http://test-backend'),
- getExternalBaseUrl: jest.fn(),
- };
+ jest.clearAllMocks();
mockTokenManager = {
getToken: jest.fn().mockResolvedValue({ token: '' }),
authenticate: jest.fn(),
@@ -144,15 +142,13 @@ describe('TechDocs Collator', () => {
});
describe('DefaultTechDocsCollator', () => {
- let mockDiscoveryApi: jest.Mocked;
+ const mockDiscoveryApi = mockServices.discovery.mock({
+ getBaseUrl: async () => 'http://test-backend',
+ });
let mockTokenManager: jest.Mocked;
let collator: DefaultTechDocsCollator;
beforeEach(() => {
- mockDiscoveryApi = {
- getBaseUrl: jest.fn().mockResolvedValue('http://test-backend'),
- getExternalBaseUrl: jest.fn(),
- };
mockTokenManager = {
getToken: jest.fn().mockResolvedValue({ token: '' }),
authenticate: jest.fn(),
diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts
index bef5a9c433..5248ca6dad 100644
--- a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts
+++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts
@@ -31,7 +31,6 @@ import {
mockServices,
registerMswTestHooks,
} from '@backstage/backend-test-utils';
-import { DiscoveryService } from '@backstage/backend-plugin-api';
import { http, HttpResponse } from 'msw';
import { setupServer } from 'msw/node';
@@ -59,10 +58,7 @@ describe('DocsSynchronizer', () => {
hasDocsBeenGenerated: jest.fn(),
publish: jest.fn(),
};
- const discovery: jest.Mocked = {
- getBaseUrl: jest.fn(),
- getExternalBaseUrl: jest.fn(),
- };
+ const discovery = mockServices.discovery.mock();
const cache: jest.Mocked = {
get: jest.fn(),
set: jest.fn(),
diff --git a/plugins/techdocs-backend/src/service/router.test.ts b/plugins/techdocs-backend/src/service/router.test.ts
index 631efe06ea..c74167552d 100644
--- a/plugins/techdocs-backend/src/service/router.test.ts
+++ b/plugins/techdocs-backend/src/service/router.test.ts
@@ -32,7 +32,6 @@ import { CachedEntityLoader } from './CachedEntityLoader';
import { createEventStream, createRouter, RouterOptions } from './router';
import { TechDocsCache } from '../cache';
import { mockErrorHandler, mockServices } from '@backstage/backend-test-utils';
-import { DiscoveryService } from '@backstage/backend-plugin-api';
jest.mock('@backstage/catalog-client');
jest.mock('@backstage/config');
@@ -111,10 +110,7 @@ describe('createRouter', () => {
hasDocsBeenGenerated: jest.fn(),
publish: jest.fn(),
};
- const discovery: jest.Mocked = {
- getBaseUrl: jest.fn(),
- getExternalBaseUrl: jest.fn(),
- };
+ const discovery = mockServices.discovery.mock();
const cache: jest.Mocked = {
getClient: jest.fn(),
};
diff --git a/plugins/techdocs-node/src/stages/prepare/dir.test.ts b/plugins/techdocs-node/src/stages/prepare/dir.test.ts
index 2dadfa6ece..7b61db222d 100644
--- a/plugins/techdocs-node/src/stages/prepare/dir.test.ts
+++ b/plugins/techdocs-node/src/stages/prepare/dir.test.ts
@@ -13,11 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import { TECHDOCS_ANNOTATION } from '@backstage/plugin-techdocs-common';
-import { ConfigReader } from '@backstage/config';
import { DirectoryPreparer } from './dir';
import { mockServices } from '@backstage/backend-test-utils';
-import { UrlReaderService } from '@backstage/backend-plugin-api';
function normalizePath(path: string) {
return path
@@ -45,12 +44,8 @@ const createMockEntity = (annotations: {}) => {
};
};
-const mockConfig = new ConfigReader({});
-const mockUrlReader: jest.Mocked = {
- readUrl: jest.fn(),
- readTree: jest.fn(),
- search: jest.fn(),
-};
+const mockConfig = mockServices.rootConfig();
+const mockUrlReader = mockServices.urlReader.mock();
describe('directory preparer', () => {
it('should merge managed-by-location and techdocs-ref when techdocs-ref is relative', async () => {
diff --git a/plugins/techdocs-node/src/stages/publish/local.test.ts b/plugins/techdocs-node/src/stages/publish/local.test.ts
index a6dc9c09c4..be6f3b2fa8 100644
--- a/plugins/techdocs-node/src/stages/publish/local.test.ts
+++ b/plugins/techdocs-node/src/stages/publish/local.test.ts
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import { overridePackagePathResolution } from '@backstage/backend-plugin-api/testUtils';
import { ConfigReader } from '@backstage/config';
import express from 'express';
@@ -24,7 +25,6 @@ import {
createMockDirectory,
mockServices,
} from '@backstage/backend-test-utils';
-import { DiscoveryService } from '@backstage/backend-plugin-api';
const createMockEntity = (annotations = {}, lowerCase = false) => {
return {
@@ -39,10 +39,9 @@ const createMockEntity = (annotations = {}, lowerCase = false) => {
};
};
-const testDiscovery: jest.Mocked = {
- getBaseUrl: jest.fn().mockResolvedValue('http://localhost:7007/api/techdocs'),
- getExternalBaseUrl: jest.fn(),
-};
+const testDiscovery = mockServices.discovery.mock({
+ getBaseUrl: async () => 'http://localhost:7007/api/techdocs',
+});
const mockPublishDir = createMockDirectory();
diff --git a/plugins/techdocs-node/src/stages/publish/publish.test.ts b/plugins/techdocs-node/src/stages/publish/publish.test.ts
index 408a171fe0..9885337db8 100644
--- a/plugins/techdocs-node/src/stages/publish/publish.test.ts
+++ b/plugins/techdocs-node/src/stages/publish/publish.test.ts
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import { ConfigReader } from '@backstage/config';
import { Publisher } from './publish';
import { LocalPublish } from './local';
@@ -22,13 +23,11 @@ import { AzureBlobStoragePublish } from './azureBlobStorage';
import { OpenStackSwiftPublish } from './openStackSwift';
import { mockServices } from '@backstage/backend-test-utils';
import { PublisherBase } from './types';
-import { DiscoveryService } from '@backstage/backend-plugin-api';
const logger = mockServices.logger.mock();
-const discovery: jest.Mocked = {
- getBaseUrl: jest.fn().mockResolvedValueOnce('http://localhost:7007'),
- getExternalBaseUrl: jest.fn(),
-};
+const discovery = mockServices.discovery.mock({
+ getBaseUrl: async () => 'http://localhost:7007',
+});
jest.mock('@azure/identity', () => ({
__esModule: true,
diff --git a/storybook/yarn.lock b/storybook/yarn.lock
index 80d4a3e7fd..be21a0fead 100644
--- a/storybook/yarn.lock
+++ b/storybook/yarn.lock
@@ -581,27 +581,29 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/config-array@npm:^0.18.0":
- version: 0.18.0
- resolution: "@eslint/config-array@npm:0.18.0"
+"@eslint/config-array@npm:^0.19.0":
+ version: 0.19.1
+ resolution: "@eslint/config-array@npm:0.19.1"
dependencies:
- "@eslint/object-schema": ^2.1.4
+ "@eslint/object-schema": ^2.1.5
debug: ^4.3.1
minimatch: ^3.1.2
- checksum: 5ff748e1788745bfb3160c3b3151d62a7c054e336e9fe8069e86cfa6106f3abbd59b24f1253122268295f98c66803e9a7b23d7f947a8c00f62d2060cc44bc7fc
+ checksum: 421aad712a5ef1a3d118b5e0857f79c080f9dd619a76ce19d20105d381521583786f7abb1195744af9e62a5124e6657066eb6780e920f4001846bd91c1a665f0
languageName: node
linkType: hard
-"@eslint/core@npm:^0.7.0":
- version: 0.7.0
- resolution: "@eslint/core@npm:0.7.0"
- checksum: 91d4aa2805f356fb0bba693411deab91590472666e22c9c03304ba03b288b74403a5e120db16d0926ea94281e15563a8d4d519cd1e565d514e2d5015a84b8575
+"@eslint/core@npm:^0.9.0":
+ version: 0.9.1
+ resolution: "@eslint/core@npm:0.9.1"
+ dependencies:
+ "@types/json-schema": ^7.0.15
+ checksum: 33c8159842cc3a646caa267c008cb567ca60e0220bcdcf6e426128409953b8f6a9b142246db616c71d06331edf769c192d7e2792b3f19c2a6b8179e491512d89
languageName: node
linkType: hard
-"@eslint/eslintrc@npm:^3.1.0":
- version: 3.1.0
- resolution: "@eslint/eslintrc@npm:3.1.0"
+"@eslint/eslintrc@npm:^3.2.0":
+ version: 3.2.0
+ resolution: "@eslint/eslintrc@npm:3.2.0"
dependencies:
ajv: ^6.12.4
debug: ^4.3.2
@@ -612,30 +614,30 @@ __metadata:
js-yaml: ^4.1.0
minimatch: ^3.1.2
strip-json-comments: ^3.1.1
- checksum: b0a9bbd98c8b9e0f4d975b042ff9b874dde722b20834ea2ff46551c3de740d4f10f56c449b790ef34d7f82147cbddfc22b004a43cc885dbc2664bb134766b5e4
+ checksum: c898e4d12f4c9a79a61ee3c91e38eea5627a04e021cb749191e8537445858bfe32f810eca0cb2dc9902b8ad8b65ca07ef7221dc4bad52afe60cbbf50ec56c236
languageName: node
linkType: hard
-"@eslint/js@npm:9.14.0":
- version: 9.14.0
- resolution: "@eslint/js@npm:9.14.0"
- checksum: 727767d3c80bf88e08565af10cc3732ca0d272c729bbd39043722a203eea289ec6149ab42d977d2d28a81d99329dceeed091b70db37b868e6659913a0840e17b
+"@eslint/js@npm:9.17.0":
+ version: 9.17.0
+ resolution: "@eslint/js@npm:9.17.0"
+ checksum: b68a14ff518ffa12e3b85fa9c72b818faeff092285acfbf02da2d0fb12a681b76651638881e98845f2df2ed346ed0d33faeb1d9caac163daf232c223b7efe89c
languageName: node
linkType: hard
-"@eslint/object-schema@npm:^2.1.4":
- version: 2.1.4
- resolution: "@eslint/object-schema@npm:2.1.4"
- checksum: 5a03094115bcdab7991dbbc5d17a9713f394cebb4b44d3eaf990d7487b9b8e1877b817997334ab40be52e299a0384595c6f6ba91b389901e5e1d21efda779271
+"@eslint/object-schema@npm:^2.1.5":
+ version: 2.1.5
+ resolution: "@eslint/object-schema@npm:2.1.5"
+ checksum: 5facffc832bae93c510f4d38f0f1cbfebd3d7ec772ece6b801bd09bf2dce52e781f4dea500aa133d02257e04ed6a3958fa18cbaed1f9623974a804ee60a8ca54
languageName: node
linkType: hard
-"@eslint/plugin-kit@npm:^0.2.0":
- version: 0.2.3
- resolution: "@eslint/plugin-kit@npm:0.2.3"
+"@eslint/plugin-kit@npm:^0.2.3":
+ version: 0.2.4
+ resolution: "@eslint/plugin-kit@npm:0.2.4"
dependencies:
levn: ^0.4.1
- checksum: b93b9c3f5b1722d09cc4e609abd4510130f659f70f6417b68ac7c4ad9fbf9e3d4f0ef5b6f2bad106eb8c1c1b2146bd0391e0a1c00ddeae46c917f175b8c0da4b
+ checksum: 5693465dca5fc6f27b090f987b51bc738f48c6a6b5678dcc1791522921834206388b462578edd362d458e8de6dcd21cce1a2e8cff47d1512411ba0389112c231
languageName: node
linkType: hard
@@ -670,10 +672,10 @@ __metadata:
languageName: node
linkType: hard
-"@humanwhocodes/retry@npm:^0.4.0":
- version: 0.4.0
- resolution: "@humanwhocodes/retry@npm:0.4.0"
- checksum: a1ea6ba7deff692f08770bea159eb53f280d6b56e6a340c238679752c3d2956797e31431a19a0e1cd303cfb130200024d3dc6bec36c7d98edd4789006d19dfd1
+"@humanwhocodes/retry@npm:^0.4.1":
+ version: 0.4.1
+ resolution: "@humanwhocodes/retry@npm:0.4.1"
+ checksum: f11167c28e8266faba470fd273cbaafe2827523492bc18c5623015adb7ed66f46b2e542e3d756fed9ca614300249267814220c2f5f03a59e07fdfa64fc14ad52
languageName: node
linkType: hard
@@ -2304,14 +2306,14 @@ __metadata:
languageName: node
linkType: hard
-"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2":
- version: 7.0.5
- resolution: "cross-spawn@npm:7.0.5"
+"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.6":
+ version: 7.0.6
+ resolution: "cross-spawn@npm:7.0.6"
dependencies:
path-key: ^3.1.0
shebang-command: ^2.0.0
which: ^2.0.1
- checksum: 55c50004cb6bbea3649784caac6e7b8ddd03fa8c1e14dbd5a1f15896708378006eb7526a52a0f48770c768c9b8aed48a5888eb8e785ff59ff7749e74f66cd96b
+ checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b
languageName: node
linkType: hard
@@ -2687,15 +2689,15 @@ __metadata:
linkType: hard
"eslint-plugin-storybook@npm:^0.11.0":
- version: 0.11.0
- resolution: "eslint-plugin-storybook@npm:0.11.0"
+ version: 0.11.1
+ resolution: "eslint-plugin-storybook@npm:0.11.1"
dependencies:
"@storybook/csf": ^0.1.11
"@typescript-eslint/utils": ^8.8.1
ts-dedent: ^2.2.0
peerDependencies:
eslint: ">=6"
- checksum: 52baa35ed4f49bc46bd323784ac2a48a615f0fd929b66dfec11bb2cbceded1a9978b68cbb1165aa36f078190651f93243f871ead368bb2f1ee131c7d00e265e9
+ checksum: 8b8eb30b598f3c44c2bbf921e318215338f1159c1fba2d2f6cd5bc0b2ec14515655cf1760b5e11355baddabc2ac8446d4dc18ee6df6d2252555b126ff649a421
languageName: node
linkType: hard
@@ -2734,24 +2736,24 @@ __metadata:
linkType: hard
"eslint@npm:^9.11.1":
- version: 9.14.0
- resolution: "eslint@npm:9.14.0"
+ version: 9.17.0
+ resolution: "eslint@npm:9.17.0"
dependencies:
"@eslint-community/eslint-utils": ^4.2.0
"@eslint-community/regexpp": ^4.12.1
- "@eslint/config-array": ^0.18.0
- "@eslint/core": ^0.7.0
- "@eslint/eslintrc": ^3.1.0
- "@eslint/js": 9.14.0
- "@eslint/plugin-kit": ^0.2.0
+ "@eslint/config-array": ^0.19.0
+ "@eslint/core": ^0.9.0
+ "@eslint/eslintrc": ^3.2.0
+ "@eslint/js": 9.17.0
+ "@eslint/plugin-kit": ^0.2.3
"@humanfs/node": ^0.16.6
"@humanwhocodes/module-importer": ^1.0.1
- "@humanwhocodes/retry": ^0.4.0
+ "@humanwhocodes/retry": ^0.4.1
"@types/estree": ^1.0.6
"@types/json-schema": ^7.0.15
ajv: ^6.12.4
chalk: ^4.0.0
- cross-spawn: ^7.0.2
+ cross-spawn: ^7.0.6
debug: ^4.3.2
escape-string-regexp: ^4.0.0
eslint-scope: ^8.2.0
@@ -2771,7 +2773,6 @@ __metadata:
minimatch: ^3.1.2
natural-compare: ^1.4.0
optionator: ^0.9.3
- text-table: ^0.2.0
peerDependencies:
jiti: "*"
peerDependenciesMeta:
@@ -2779,7 +2780,7 @@ __metadata:
optional: true
bin:
eslint: bin/eslint.js
- checksum: 1b54112da245f4175fbcf31ea5f71da38dda1bb8f5d645f3b2420035a4310949fda57af14ca7f7992e36374da8c06b94bf20ec8bda64a09409d818aefd0bf09c
+ checksum: 0caae58c53bf4dc9b4893d75e62339e4c40fe5589652a3cb63f30a15bad1f34f8f784ca4fca471bbffedabee516a9f9620ebc33818b55e1b715e8f000865c851
languageName: node
linkType: hard
@@ -4622,13 +4623,6 @@ __metadata:
languageName: node
linkType: hard
-"text-table@npm:^0.2.0":
- version: 0.2.0
- resolution: "text-table@npm:0.2.0"
- checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a
- languageName: node
- linkType: hard
-
"tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3":
version: 1.3.3
resolution: "tiny-invariant@npm:1.3.3"
diff --git a/yarn.lock b/yarn.lock
index 6f107b08a6..03a24c3a27 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1872,7 +1872,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.19.6, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.7, @babel/core@npm:^7.26.0":
+"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.19.6, @babel/core@npm:^7.24.7, @babel/core@npm:^7.26.0":
version: 7.26.0
resolution: "@babel/core@npm:7.26.0"
dependencies:
@@ -2434,7 +2434,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2":
+"@babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2":
version: 7.25.9
resolution: "@babel/plugin-syntax-typescript@npm:7.25.9"
dependencies:
@@ -3823,9 +3823,6 @@ __metadata:
"@testing-library/jest-dom": ^6.0.0
"@types/react": ^18.0.0
"@types/react-dom": ^18.0.0
- "@vanilla-extract/rollup-plugin": ^1.3.10
- "@vanilla-extract/sprinkles": ^1.6.3
- "@vanilla-extract/webpack-plugin": ^2.3.14
clsx: ^2.1.1
eslint-plugin-storybook: ^0.11.1
globals: ^15.11.0
@@ -3834,7 +3831,6 @@ __metadata:
react-dom: ^18.0.2
react-router-dom: ^6.3.0
storybook: ^8.4.7
- webpack-merge: ^6.0.1
peerDependencies:
"@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0
react: ^16.13.1 || ^17.0.0 || ^18.0.0
@@ -6717,7 +6713,6 @@ __metadata:
version: 0.0.0-use.local
resolution: "@backstage/plugin-notifications-backend@workspace:plugins/notifications-backend"
dependencies:
- "@backstage/backend-common": ^0.25.0
"@backstage/backend-defaults": "workspace:^"
"@backstage/backend-plugin-api": "workspace:^"
"@backstage/backend-test-utils": "workspace:^"
@@ -8556,11 +8551,11 @@ __metadata:
languageName: node
linkType: hard
-"@changesets/apply-release-plan@npm:^7.0.6":
- version: 7.0.6
- resolution: "@changesets/apply-release-plan@npm:7.0.6"
+"@changesets/apply-release-plan@npm:^7.0.7":
+ version: 7.0.7
+ resolution: "@changesets/apply-release-plan@npm:7.0.7"
dependencies:
- "@changesets/config": ^3.0.4
+ "@changesets/config": ^3.0.5
"@changesets/get-version-range-type": ^0.4.0
"@changesets/git": ^3.0.2
"@changesets/should-skip-package": ^0.1.1
@@ -8573,7 +8568,7 @@ __metadata:
prettier: ^2.7.1
resolve-from: ^5.0.0
semver: ^7.5.3
- checksum: d84049b0874fe86db35a18b3959eee5ccb0e1be095a4d4718495e47e1123580c219bbaf4522190394ce3c40380c03b4e83d00e15070f0df77887b15c69fab14c
+ checksum: 775e8f86ab8b82ebdb44471dfbdf14e669144e63b6c972bc8502d608247ef909baca63973f71b8d15acd4fff8740a61802256bc261de12b956e4c2b8fd34d929
languageName: node
linkType: hard
@@ -8601,16 +8596,16 @@ __metadata:
linkType: hard
"@changesets/cli@npm:^2.14.0":
- version: 2.27.10
- resolution: "@changesets/cli@npm:2.27.10"
+ version: 2.27.11
+ resolution: "@changesets/cli@npm:2.27.11"
dependencies:
- "@changesets/apply-release-plan": ^7.0.6
+ "@changesets/apply-release-plan": ^7.0.7
"@changesets/assemble-release-plan": ^6.0.5
"@changesets/changelog-git": ^0.2.0
- "@changesets/config": ^3.0.4
+ "@changesets/config": ^3.0.5
"@changesets/errors": ^0.2.0
"@changesets/get-dependents-graph": ^2.1.2
- "@changesets/get-release-plan": ^4.0.5
+ "@changesets/get-release-plan": ^4.0.6
"@changesets/git": ^3.0.2
"@changesets/logger": ^0.1.1
"@changesets/pre": ^2.0.1
@@ -8621,7 +8616,7 @@ __metadata:
"@manypkg/get-packages": ^1.1.3
ansi-colors: ^4.1.3
ci-info: ^3.7.0
- enquirer: ^2.3.0
+ enquirer: ^2.4.1
external-editor: ^3.1.0
fs-extra: ^7.0.1
mri: ^1.2.0
@@ -8634,13 +8629,13 @@ __metadata:
term-size: ^2.1.0
bin:
changeset: bin.js
- checksum: 9927bd57299d8b26c49ed48b2380cd19eb7b8a4fafd6babd5ec0d92d3b68cc7a54305201ce63142723de48bc5a9e75f611dd747d5a7c6ac80a934a3c4a83399b
+ checksum: 0c9d1f03ad113494ad3091caa7eca1ee167761af8257911f74c64bff670fb8a542fe9f84921b1e7e29c584b2f5883b8a6287c4f42afe59007369f4fd1cc94cec
languageName: node
linkType: hard
-"@changesets/config@npm:^3.0.4":
- version: 3.0.4
- resolution: "@changesets/config@npm:3.0.4"
+"@changesets/config@npm:^3.0.5":
+ version: 3.0.5
+ resolution: "@changesets/config@npm:3.0.5"
dependencies:
"@changesets/errors": ^0.2.0
"@changesets/get-dependents-graph": ^2.1.2
@@ -8649,7 +8644,7 @@ __metadata:
"@manypkg/get-packages": ^1.1.3
fs-extra: ^7.0.1
micromatch: ^4.0.8
- checksum: 43763d930e7fc4f24f9bb7b974708cc72f13d1a3dca10ace21d63135b7ff47dbfa3461cc9842171ae0564e37b17da2cc2e6e3f69a3f180a28efce2389eceb7de
+ checksum: 75cdb5c4965656935277c69591336dd3aa825eef91d971c1d3e37777d181b6e3c1f1d78bf7ec826bbae9d70841af28c4a9cb1ea477808b3d9101413bd9f04fcf
languageName: node
linkType: hard
@@ -8674,17 +8669,17 @@ __metadata:
languageName: node
linkType: hard
-"@changesets/get-release-plan@npm:^4.0.5":
- version: 4.0.5
- resolution: "@changesets/get-release-plan@npm:4.0.5"
+"@changesets/get-release-plan@npm:^4.0.6":
+ version: 4.0.6
+ resolution: "@changesets/get-release-plan@npm:4.0.6"
dependencies:
"@changesets/assemble-release-plan": ^6.0.5
- "@changesets/config": ^3.0.4
+ "@changesets/config": ^3.0.5
"@changesets/pre": ^2.0.1
"@changesets/read": ^0.6.2
"@changesets/types": ^6.0.0
"@manypkg/get-packages": ^1.1.3
- checksum: 3e06ea36b814e9a36aaac3ab46102c01802d2cd262e9ec2705a63c461f43af44be48bd55bb6d86e6753b51aaac81d7c6e2a13bc2e8a86d60fe6bce481dbd2e27
+ checksum: 1aabe351e39ce0b0a057f96eb3ac4183907ad0458cffe1a7e0b5651ae1ef3aefb22cc6021df5114d646a2b5dc2a665bc670f9b705a85dca0bd31f7792b22403c
languageName: node
linkType: hard
@@ -8835,8 +8830,8 @@ __metadata:
linkType: hard
"@codemirror/language@npm:^6.0.0":
- version: 6.10.6
- resolution: "@codemirror/language@npm:6.10.6"
+ version: 6.10.7
+ resolution: "@codemirror/language@npm:6.10.7"
dependencies:
"@codemirror/state": ^6.0.0
"@codemirror/view": ^6.23.0
@@ -8844,7 +8839,7 @@ __metadata:
"@lezer/highlight": ^1.0.0
"@lezer/lr": ^1.0.0
style-mod: ^4.0.0
- checksum: 0bd5e4da0c714b4d2aad2e2ad19bb803d9992e5f0d56da3fb2534e63b03b8a562bd8b9ac4439509c687b589e3eaa5a33339eda13d91e54a5d5a99e032d1be981
+ checksum: c9b71e2df8559bc677edae293a825a0dd196c98d49a6e20a98cc6bea51a01c67d268b07b5a761d7ac15b1d65415e17af1f644d5629ab4207268804e71cd48d7c
languageName: node
linkType: hard
@@ -8901,13 +8896,13 @@ __metadata:
linkType: hard
"@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.23.0":
- version: 6.35.3
- resolution: "@codemirror/view@npm:6.35.3"
+ version: 6.36.0
+ resolution: "@codemirror/view@npm:6.36.0"
dependencies:
"@codemirror/state": ^6.5.0
style-mod: ^4.1.0
w3c-keyname: ^2.2.4
- checksum: 09c2685c9345b23ea69d28f323f29d6e73a269e9ffa29ffbf6443c139b2c97fd1a87eced1c59553a3416a08aed3246e30dd5eb70d516159ac352ae422ff4394d
+ checksum: 646ac34bbb2a29a6018e611de898e17ae8634bb63509463751114699316e561e803ede6ae70a930e5b9d4953f333b52b7853480c8776c77e685a012b00bd06fe
languageName: node
linkType: hard
@@ -9010,7 +9005,7 @@ __metadata:
languageName: node
linkType: hard
-"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.13.5":
+"@emotion/cache@npm:^11.13.5":
version: 11.13.5
resolution: "@emotion/cache@npm:11.13.5"
dependencies:
@@ -9030,7 +9025,7 @@ __metadata:
languageName: node
linkType: hard
-"@emotion/hash@npm:^0.9.0, @emotion/hash@npm:^0.9.1, @emotion/hash@npm:^0.9.2":
+"@emotion/hash@npm:^0.9.1, @emotion/hash@npm:^0.9.2":
version: 0.9.2
resolution: "@emotion/hash@npm:0.9.2"
checksum: 379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387
@@ -9181,13 +9176,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/aix-ppc64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/aix-ppc64@npm:0.23.1"
- conditions: os=aix & cpu=ppc64
- languageName: node
- linkType: hard
-
"@esbuild/aix-ppc64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/aix-ppc64@npm:0.24.0"
@@ -9202,13 +9190,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/android-arm64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/android-arm64@npm:0.23.1"
- conditions: os=android & cpu=arm64
- languageName: node
- linkType: hard
-
"@esbuild/android-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/android-arm64@npm:0.24.0"
@@ -9223,13 +9204,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/android-arm@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/android-arm@npm:0.23.1"
- conditions: os=android & cpu=arm
- languageName: node
- linkType: hard
-
"@esbuild/android-arm@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/android-arm@npm:0.24.0"
@@ -9244,13 +9218,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/android-x64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/android-x64@npm:0.23.1"
- conditions: os=android & cpu=x64
- languageName: node
- linkType: hard
-
"@esbuild/android-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/android-x64@npm:0.24.0"
@@ -9265,13 +9232,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/darwin-arm64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/darwin-arm64@npm:0.23.1"
- conditions: os=darwin & cpu=arm64
- languageName: node
- linkType: hard
-
"@esbuild/darwin-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/darwin-arm64@npm:0.24.0"
@@ -9286,13 +9246,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/darwin-x64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/darwin-x64@npm:0.23.1"
- conditions: os=darwin & cpu=x64
- languageName: node
- linkType: hard
-
"@esbuild/darwin-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/darwin-x64@npm:0.24.0"
@@ -9307,13 +9260,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/freebsd-arm64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/freebsd-arm64@npm:0.23.1"
- conditions: os=freebsd & cpu=arm64
- languageName: node
- linkType: hard
-
"@esbuild/freebsd-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/freebsd-arm64@npm:0.24.0"
@@ -9328,13 +9274,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/freebsd-x64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/freebsd-x64@npm:0.23.1"
- conditions: os=freebsd & cpu=x64
- languageName: node
- linkType: hard
-
"@esbuild/freebsd-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/freebsd-x64@npm:0.24.0"
@@ -9349,13 +9288,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-arm64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-arm64@npm:0.23.1"
- conditions: os=linux & cpu=arm64
- languageName: node
- linkType: hard
-
"@esbuild/linux-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-arm64@npm:0.24.0"
@@ -9370,13 +9302,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-arm@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-arm@npm:0.23.1"
- conditions: os=linux & cpu=arm
- languageName: node
- linkType: hard
-
"@esbuild/linux-arm@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-arm@npm:0.24.0"
@@ -9391,13 +9316,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-ia32@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-ia32@npm:0.23.1"
- conditions: os=linux & cpu=ia32
- languageName: node
- linkType: hard
-
"@esbuild/linux-ia32@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-ia32@npm:0.24.0"
@@ -9412,13 +9330,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-loong64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-loong64@npm:0.23.1"
- conditions: os=linux & cpu=loong64
- languageName: node
- linkType: hard
-
"@esbuild/linux-loong64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-loong64@npm:0.24.0"
@@ -9433,13 +9344,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-mips64el@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-mips64el@npm:0.23.1"
- conditions: os=linux & cpu=mips64el
- languageName: node
- linkType: hard
-
"@esbuild/linux-mips64el@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-mips64el@npm:0.24.0"
@@ -9454,13 +9358,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-ppc64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-ppc64@npm:0.23.1"
- conditions: os=linux & cpu=ppc64
- languageName: node
- linkType: hard
-
"@esbuild/linux-ppc64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-ppc64@npm:0.24.0"
@@ -9475,13 +9372,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-riscv64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-riscv64@npm:0.23.1"
- conditions: os=linux & cpu=riscv64
- languageName: node
- linkType: hard
-
"@esbuild/linux-riscv64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-riscv64@npm:0.24.0"
@@ -9496,13 +9386,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-s390x@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-s390x@npm:0.23.1"
- conditions: os=linux & cpu=s390x
- languageName: node
- linkType: hard
-
"@esbuild/linux-s390x@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-s390x@npm:0.24.0"
@@ -9517,13 +9400,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-x64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/linux-x64@npm:0.23.1"
- conditions: os=linux & cpu=x64
- languageName: node
- linkType: hard
-
"@esbuild/linux-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/linux-x64@npm:0.24.0"
@@ -9538,13 +9414,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/netbsd-x64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/netbsd-x64@npm:0.23.1"
- conditions: os=netbsd & cpu=x64
- languageName: node
- linkType: hard
-
"@esbuild/netbsd-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/netbsd-x64@npm:0.24.0"
@@ -9552,13 +9421,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/openbsd-arm64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/openbsd-arm64@npm:0.23.1"
- conditions: os=openbsd & cpu=arm64
- languageName: node
- linkType: hard
-
"@esbuild/openbsd-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/openbsd-arm64@npm:0.24.0"
@@ -9573,13 +9435,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/openbsd-x64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/openbsd-x64@npm:0.23.1"
- conditions: os=openbsd & cpu=x64
- languageName: node
- linkType: hard
-
"@esbuild/openbsd-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/openbsd-x64@npm:0.24.0"
@@ -9594,13 +9449,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/sunos-x64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/sunos-x64@npm:0.23.1"
- conditions: os=sunos & cpu=x64
- languageName: node
- linkType: hard
-
"@esbuild/sunos-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/sunos-x64@npm:0.24.0"
@@ -9615,13 +9463,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/win32-arm64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/win32-arm64@npm:0.23.1"
- conditions: os=win32 & cpu=arm64
- languageName: node
- linkType: hard
-
"@esbuild/win32-arm64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/win32-arm64@npm:0.24.0"
@@ -9636,13 +9477,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/win32-ia32@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/win32-ia32@npm:0.23.1"
- conditions: os=win32 & cpu=ia32
- languageName: node
- linkType: hard
-
"@esbuild/win32-ia32@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/win32-ia32@npm:0.24.0"
@@ -9657,13 +9491,6 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/win32-x64@npm:0.23.1":
- version: 0.23.1
- resolution: "@esbuild/win32-x64@npm:0.23.1"
- conditions: os=win32 & cpu=x64
- languageName: node
- linkType: hard
-
"@esbuild/win32-x64@npm:0.24.0":
version: 0.24.0
resolution: "@esbuild/win32-x64@npm:0.24.0"
@@ -9891,14 +9718,14 @@ __metadata:
linkType: hard
"@google-cloud/cloud-sql-connector@npm:^1.4.0":
- version: 1.4.0
- resolution: "@google-cloud/cloud-sql-connector@npm:1.4.0"
+ version: 1.5.0
+ resolution: "@google-cloud/cloud-sql-connector@npm:1.5.0"
dependencies:
"@googleapis/sqladmin": ^24.0.0
gaxios: ^6.1.1
google-auth-library: ^9.2.0
- p-throttle: ^5.1.0
- checksum: c4ac2cc8cc24cc5966f146fe5686493fdb0bb4fc43a27ec086bd116f5ce475ca88f5e5e5fb79d17e6c31fb1a752d2f7e94433db17eea787696556c45415a31a1
+ p-throttle: ^7.0.0
+ checksum: c228f726af580c3592bfdb04dc47657b5a823c44b7411b7eb73c5c05c06ae9780e7fd0abcfe5881ff7524b24dd41a9946947bc4072fba18bab1227e4694fc871
languageName: node
linkType: hard
@@ -10954,7 +10781,7 @@ __metadata:
languageName: node
linkType: hard
-"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9":
+"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9":
version: 0.3.25
resolution: "@jridgewell/trace-mapping@npm:0.3.25"
dependencies:
@@ -11043,16 +10870,17 @@ __metadata:
linkType: hard
"@keyv/redis@npm:^4.0.1":
- version: 4.0.2
- resolution: "@keyv/redis@npm:4.0.2"
+ version: 4.1.0
+ resolution: "@keyv/redis@npm:4.1.0"
dependencies:
- keyv: "*"
+ cluster-key-slot: ^1.1.2
+ keyv: ^5.2.1
redis: ^4.7.0
- checksum: 356dcf125072b35be45649fcf5af5e5400b0227b25013d2f7494176a920654a1de63cb95e2a4a661b7db4c1cef8b7553d6e33603ace03d5fbe0a7e22955c9f2b
+ checksum: 71508c7a51f1c6eddd2a103e1f8271de8ab7fbd3c10a0163dabeebd4621632a9b04c158529d08518350e21def55ff931cf96cc20efd0855c75a18e2a10c52b7f
languageName: node
linkType: hard
-"@keyv/serialize@npm:*":
+"@keyv/serialize@npm:*, @keyv/serialize@npm:^1.0.1":
version: 1.0.1
resolution: "@keyv/serialize@npm:1.0.1"
dependencies:
@@ -11549,39 +11377,39 @@ __metadata:
languageName: node
linkType: hard
-"@module-federation/bridge-react-webpack-plugin@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/bridge-react-webpack-plugin@npm:0.8.1"
+"@module-federation/bridge-react-webpack-plugin@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/bridge-react-webpack-plugin@npm:0.8.5"
dependencies:
- "@module-federation/sdk": 0.8.1
+ "@module-federation/sdk": 0.8.5
"@types/semver": 7.5.8
semver: 7.6.3
- checksum: d8c68cd1ddd387e9ef6fba688aec68ef0fe59ec5138f3fc897d033227c0ddd04c4307b52c352a42e85c4b9ad5bc759cd811280960166f752f217df7aeb27a55b
+ checksum: 013cb97ae9ab445e7fc828512106c090d63d973828e9ad3c37e38b92c42190a64cf5181df734095ccf163b2ff921cf3cd56108fa7a3a6f49a8b2162bb5041454
languageName: node
linkType: hard
-"@module-federation/data-prefetch@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/data-prefetch@npm:0.8.1"
+"@module-federation/data-prefetch@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/data-prefetch@npm:0.8.5"
dependencies:
- "@module-federation/runtime": 0.8.1
- "@module-federation/sdk": 0.8.1
+ "@module-federation/runtime": 0.8.5
+ "@module-federation/sdk": 0.8.5
fs-extra: 9.1.0
peerDependencies:
react: ">=16.9.0"
react-dom: ">=16.9.0"
- checksum: 25a67256c1900d3989c2f393aca50a0f38faeb9aa1023327ce0716585fb4e19593efb147f20eac883d4eeae619400a95ec41e64f8b10a780b2e3a6e22495440c
+ checksum: 0714fded76e33603999f500edb729691ad5d04415b48ff80f0ca824fa215cc1620bf93db6be063256b2d8b0d774dbcc95c4067c11231e68faa50dec4f50acaa7
languageName: node
linkType: hard
-"@module-federation/dts-plugin@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/dts-plugin@npm:0.8.1"
+"@module-federation/dts-plugin@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/dts-plugin@npm:0.8.5"
dependencies:
- "@module-federation/error-codes": 0.8.1
- "@module-federation/managers": 0.8.1
- "@module-federation/sdk": 0.8.1
- "@module-federation/third-party-dts-extractor": 0.8.1
+ "@module-federation/error-codes": 0.8.5
+ "@module-federation/managers": 0.8.5
+ "@module-federation/sdk": 0.8.5
+ "@module-federation/third-party-dts-extractor": 0.8.5
adm-zip: ^0.5.10
ansi-colors: ^4.1.3
axios: ^1.7.4
@@ -11600,22 +11428,22 @@ __metadata:
peerDependenciesMeta:
vue-tsc:
optional: true
- checksum: 7f3f6b000f2427b3ba06c14a3cf7332bec1a4f843d46d11fd267d041f0916ebe4458187284d640524187bae3c871714df29c817d136a45f0a59ae915cc8d77f2
+ checksum: 93e73cd84a33f4026bf9fcfc9311ace6886b2f4a87f0aaa2d62a85d6e7d48486de4a6b3595250589300deb582d08f9e237ff5a3bbf98fbca471b8e396a953030
languageName: node
linkType: hard
"@module-federation/enhanced@npm:^0.8.0":
- version: 0.8.1
- resolution: "@module-federation/enhanced@npm:0.8.1"
+ version: 0.8.5
+ resolution: "@module-federation/enhanced@npm:0.8.5"
dependencies:
- "@module-federation/bridge-react-webpack-plugin": 0.8.1
- "@module-federation/data-prefetch": 0.8.1
- "@module-federation/dts-plugin": 0.8.1
- "@module-federation/managers": 0.8.1
- "@module-federation/manifest": 0.8.1
- "@module-federation/rspack": 0.8.1
- "@module-federation/runtime-tools": 0.8.1
- "@module-federation/sdk": 0.8.1
+ "@module-federation/bridge-react-webpack-plugin": 0.8.5
+ "@module-federation/data-prefetch": 0.8.5
+ "@module-federation/dts-plugin": 0.8.5
+ "@module-federation/managers": 0.8.5
+ "@module-federation/manifest": 0.8.5
+ "@module-federation/rspack": 0.8.5
+ "@module-federation/runtime-tools": 0.8.5
+ "@module-federation/sdk": 0.8.5
btoa: ^1.2.1
upath: 2.0.1
peerDependencies:
@@ -11629,51 +11457,51 @@ __metadata:
optional: true
webpack:
optional: true
- checksum: a4902eff5e6379c70638efd1cd80daa156dee8e3eded0bdf431535dd89abc1fbf14c0bd858905595ea9963639f2b72a404f4c8ddc2c8b45d7bc760fc3b2a361b
+ checksum: 5f69db44f86c7a16f5fd1c3820d09f48859c77253361c05d0e91e96c2df1a6e36287e79776f1e3dd05f3eeb23b487bd41f3be4ed9927250eb0b7a2e3bc60713d
languageName: node
linkType: hard
-"@module-federation/error-codes@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/error-codes@npm:0.8.1"
- checksum: 36d899d2d3e00904c8aa74f1611edfceb88937ee56cc5cf2302f30e010752c68c0486cf5251ee83c1f3c2471bcea1e1ea0e8047173e92e4f10bad83125b1721d
+"@module-federation/error-codes@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/error-codes@npm:0.8.5"
+ checksum: 1c7ff728adbdefdfb65030b460675be882e59d71abc11df2dcf42e0f56316549a03295b80fbc28a3e1c1aa042616c3937900b17e5b064cb07be8c86df85a40f6
languageName: node
linkType: hard
-"@module-federation/managers@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/managers@npm:0.8.1"
+"@module-federation/managers@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/managers@npm:0.8.5"
dependencies:
- "@module-federation/sdk": 0.8.1
+ "@module-federation/sdk": 0.8.5
find-pkg: 2.0.0
fs-extra: 9.1.0
- checksum: 9f608960e5353934d85c99d68e41a156d79ca592ec52bb81ce869084cb7428d821165b17600ffd440b4640205d11fdd463165df35d6b9163250b64815c20e48b
+ checksum: 5c181b890620a218d3f3c08b7aa1357a5b4184e57dfa686117045d6715e0f37d437ee96db1411cd5d74d79dfe9c879c5ecb924a7b935fd06ac4dab846bd65a85
languageName: node
linkType: hard
-"@module-federation/manifest@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/manifest@npm:0.8.1"
+"@module-federation/manifest@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/manifest@npm:0.8.5"
dependencies:
- "@module-federation/dts-plugin": 0.8.1
- "@module-federation/managers": 0.8.1
- "@module-federation/sdk": 0.8.1
+ "@module-federation/dts-plugin": 0.8.5
+ "@module-federation/managers": 0.8.5
+ "@module-federation/sdk": 0.8.5
chalk: 3.0.0
find-pkg: 2.0.0
- checksum: 570eeb5fb36ecaac45ff150475cf09b69cf7fd2f7544527510732be65238957ef8f71faeebbeaf4d5fdfc2df2b3c88617982dcdbc93110a6766424306b8744cc
+ checksum: 5bae6a4e485bcbd5bc4a29a0e6b918745180384b38b4a26b1ef453fb3b722e607955b43045746a4c1ee69202a3498b820132ec4e36c685f379dbe72fbadbb2ce
languageName: node
linkType: hard
-"@module-federation/rspack@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/rspack@npm:0.8.1"
+"@module-federation/rspack@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/rspack@npm:0.8.5"
dependencies:
- "@module-federation/bridge-react-webpack-plugin": 0.8.1
- "@module-federation/dts-plugin": 0.8.1
- "@module-federation/managers": 0.8.1
- "@module-federation/manifest": 0.8.1
- "@module-federation/runtime-tools": 0.8.1
- "@module-federation/sdk": 0.8.1
+ "@module-federation/bridge-react-webpack-plugin": 0.8.5
+ "@module-federation/dts-plugin": 0.8.5
+ "@module-federation/managers": 0.8.5
+ "@module-federation/manifest": 0.8.5
+ "@module-federation/runtime-tools": 0.8.5
+ "@module-federation/sdk": 0.8.5
peerDependencies:
"@rspack/core": ">=0.7"
typescript: ^4.9.0 || ^5.0.0
@@ -11683,7 +11511,7 @@ __metadata:
optional: true
vue-tsc:
optional: true
- checksum: a03ef54111d16fcf388acac7e1a8b4c6f2cb0af7a907d6e8d14aca2e321864997fa343902170f455e456aea978e6330a9050f070ff0a3503047c0bbed4ef08bb
+ checksum: bc22b333d83f589aad96b91387478fb259888763efe69f2c7d0bb4d45ad529986bc445aed99b600373d8fd9ebd199a04c6e1aa6b839c48a385d785d0bedd5cc5
languageName: node
linkType: hard
@@ -11697,13 +11525,13 @@ __metadata:
languageName: node
linkType: hard
-"@module-federation/runtime-tools@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/runtime-tools@npm:0.8.1"
+"@module-federation/runtime-tools@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/runtime-tools@npm:0.8.5"
dependencies:
- "@module-federation/runtime": 0.8.1
- "@module-federation/webpack-bundler-runtime": 0.8.1
- checksum: b10eca911e0a8611a7337f653c0efbd308805b561c22b27a3695092f674a95b349bbf7048659f53bddc558de82b3ffd3bda1757934edfcc298c60a779bfea319
+ "@module-federation/runtime": 0.8.5
+ "@module-federation/webpack-bundler-runtime": 0.8.5
+ checksum: fd1c4fb22e9e9115174f8715f2fcf1b68009e88f4e0597132ef22ebb4882dc1e8518fd4f14eaf02a748671c1277f7eb4f1fecfb24be21d935b1c8537eb5c8e42
languageName: node
linkType: hard
@@ -11716,13 +11544,13 @@ __metadata:
languageName: node
linkType: hard
-"@module-federation/runtime@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/runtime@npm:0.8.1"
+"@module-federation/runtime@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/runtime@npm:0.8.5"
dependencies:
- "@module-federation/error-codes": 0.8.1
- "@module-federation/sdk": 0.8.1
- checksum: 31b4b23237ea105f85d316036819df1cab8d79e845e70b7a0365640f5cfb02850876c3b9fe1eb680aea8ae56454e58e6dfaa49a58c473d82c929307d6000c1f6
+ "@module-federation/error-codes": 0.8.5
+ "@module-federation/sdk": 0.8.5
+ checksum: dbba03c4e28d67eff2780329854a6519cec5b01bda2451aff737eb3149602fbcbe70e89f1c94d27014fd2baea72f53d0e21415ddad00ff31f1015170cdacadee
languageName: node
linkType: hard
@@ -11733,23 +11561,23 @@ __metadata:
languageName: node
linkType: hard
-"@module-federation/sdk@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/sdk@npm:0.8.1"
+"@module-federation/sdk@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/sdk@npm:0.8.5"
dependencies:
isomorphic-rslog: 0.0.6
- checksum: 41858b512cba814ea4a483a03043c3fda7c50796be5ef9b360b73fc1a2903f1edc58194663efbbcb36cb8035d088db8fe94369f08735761c88fa342bf4d569d8
+ checksum: aad2745d1260566c9f3d41e686a29472c11f9bf064f588d74e4bd1715fa0a78b36c3b167f46b2f5ecb33c48bca813e5b64f152ac1b4e6b7d3810f0ce1a799f44
languageName: node
linkType: hard
-"@module-federation/third-party-dts-extractor@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/third-party-dts-extractor@npm:0.8.1"
+"@module-federation/third-party-dts-extractor@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/third-party-dts-extractor@npm:0.8.5"
dependencies:
find-pkg: 2.0.0
fs-extra: 9.1.0
resolve: 1.22.8
- checksum: fcf0eb87296f8a393db77adb74423af174bc5f0018201471af129d831e4c1c6cf9ab9ea4ae66b91785964a4b421fcfc2dc2079aeb687ad2c6ce891022c8d3adf
+ checksum: c967d0a892b9b28a64860e4446001a8310cbad26215ec5c45eea1e3871aca31667aadb60508fcddaf91e4262cf2f202033cfd4546a60171334b74994ed94a990
languageName: node
linkType: hard
@@ -11763,13 +11591,13 @@ __metadata:
languageName: node
linkType: hard
-"@module-federation/webpack-bundler-runtime@npm:0.8.1":
- version: 0.8.1
- resolution: "@module-federation/webpack-bundler-runtime@npm:0.8.1"
+"@module-federation/webpack-bundler-runtime@npm:0.8.5":
+ version: 0.8.5
+ resolution: "@module-federation/webpack-bundler-runtime@npm:0.8.5"
dependencies:
- "@module-federation/runtime": 0.8.1
- "@module-federation/sdk": 0.8.1
- checksum: 512ce759214bb82abaf51a2bcdb1eb6db524a819890822689f3be31d189b169827894195f6a5ad53e5afaacb1f08772123f37bce0b7b1dcc72545344e2c4fa31
+ "@module-federation/runtime": 0.8.5
+ "@module-federation/sdk": 0.8.5
+ checksum: e2f1dcdd4558991f62d62756f3525fb3c1f3d545efcbbcfe000e85fcc69b193e2ac7be8348f274ef1bdb284689940e2aa24e2f0ba501927fdbf19111f95190cd
languageName: node
linkType: hard
@@ -11891,28 +11719,28 @@ __metadata:
languageName: node
linkType: hard
-"@mui/core-downloads-tracker@npm:^5.16.9":
- version: 5.16.9
- resolution: "@mui/core-downloads-tracker@npm:5.16.9"
- checksum: 25e7cf746627e12671e2bae4ea8f81967fbb7e05188c268052104d05f249eea1baa3f3d97f66d1242112afa944a7b025a331527392797d620acbcc1dde23a3df
+"@mui/core-downloads-tracker@npm:^5.16.12":
+ version: 5.16.12
+ resolution: "@mui/core-downloads-tracker@npm:5.16.12"
+ checksum: ade13080e61da63394556e8e3da5c8d20147b1b51f73487f8972bbf25812efa90e1a757d83145e55b215f7e1c08a2e4b65a081e0f25ce2992e076f35aa17ba94
languageName: node
linkType: hard
"@mui/material@npm:^5.12.2":
- version: 5.16.9
- resolution: "@mui/material@npm:5.16.9"
+ version: 5.16.12
+ resolution: "@mui/material@npm:5.16.12"
dependencies:
"@babel/runtime": ^7.23.9
- "@mui/core-downloads-tracker": ^5.16.9
- "@mui/system": ^5.16.8
+ "@mui/core-downloads-tracker": ^5.16.12
+ "@mui/system": ^5.16.12
"@mui/types": ^7.2.15
- "@mui/utils": ^5.16.8
+ "@mui/utils": ^5.16.12
"@popperjs/core": ^2.11.8
"@types/react-transition-group": ^4.4.10
clsx: ^2.1.0
csstype: ^3.1.3
prop-types: ^15.8.1
- react-is: ^18.3.1
+ react-is: ^19.0.0
react-transition-group: ^4.4.5
peerDependencies:
"@emotion/react": ^11.5.0
@@ -11927,16 +11755,16 @@ __metadata:
optional: true
"@types/react":
optional: true
- checksum: e3692ba08add0a4b959d7e5f754cf5bf934d30798a9256d1eb5bbf37021f81cf6cc0b86a3cb065815af7f2112c6a359e463a6641618d07559f93516e1374669e
+ checksum: a29677300bb38fddf2e4455cf497233676a6a4ee982b1d4ff4c5b520ce608da526ba934d6670747e207bea354725e68854a4e5671c0980f70dba0f9cf20178c8
languageName: node
linkType: hard
-"@mui/private-theming@npm:^5.16.8":
- version: 5.16.8
- resolution: "@mui/private-theming@npm:5.16.8"
+"@mui/private-theming@npm:^5.16.12":
+ version: 5.16.12
+ resolution: "@mui/private-theming@npm:5.16.12"
dependencies:
"@babel/runtime": ^7.23.9
- "@mui/utils": ^5.16.8
+ "@mui/utils": ^5.16.12
prop-types: ^15.8.1
peerDependencies:
"@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -11944,16 +11772,16 @@ __metadata:
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: 576cf19188c236482a8a698978d3061c7e8d76ba9d891d323ce96d92d6b80d88e1aa2a67fe4698d76b8a43221ef0f8ed21be74971fc684ce1279dc73fd34316b
+ checksum: a51ddd672545be389528d501fe591c3fd03d1317373760eb942e6bd489e56a9bd0da7add01c9420a1007b113902caef2fadf7c9cb4f9b17ea9b2e0007979cb71
languageName: node
linkType: hard
-"@mui/styled-engine@npm:^5.16.8":
- version: 5.16.8
- resolution: "@mui/styled-engine@npm:5.16.8"
+"@mui/styled-engine@npm:^5.16.12":
+ version: 5.16.12
+ resolution: "@mui/styled-engine@npm:5.16.12"
dependencies:
"@babel/runtime": ^7.23.9
- "@emotion/cache": ^11.11.0
+ "@emotion/cache": ^11.13.5
csstype: ^3.1.3
prop-types: ^15.8.1
peerDependencies:
@@ -11965,19 +11793,19 @@ __metadata:
optional: true
"@emotion/styled":
optional: true
- checksum: 8eab246e985bbe2707af4620a3193166bacefb029df65ac846cfc0ac5d7996fcb72c50327241f60913538f58a2ad9aa6de3ef12b72eb7750c71f8d3c284a420b
+ checksum: fa762742ef0a41077dfa0c12c5e3441e32d357192f32fc16b29ee7897ce92a4665cd644b09655dea02fe402da4fc83649901bd34822af784ed359bcc6572ee39
languageName: node
linkType: hard
"@mui/styles@npm:^5.14.18":
- version: 5.16.10
- resolution: "@mui/styles@npm:5.16.10"
+ version: 5.16.12
+ resolution: "@mui/styles@npm:5.16.12"
dependencies:
"@babel/runtime": ^7.23.9
"@emotion/hash": ^0.9.1
- "@mui/private-theming": ^5.16.8
+ "@mui/private-theming": ^5.16.12
"@mui/types": ^7.2.15
- "@mui/utils": ^5.16.8
+ "@mui/utils": ^5.16.12
clsx: ^2.1.0
csstype: ^3.1.3
hoist-non-react-statics: ^3.3.2
@@ -11996,19 +11824,19 @@ __metadata:
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: 7e85e030993f9e2d93f2f32c4c6f65febd882c8f8d324a1d9476845c8bf8e26fce588fb1336caeb7eea19453454eead92ee8493caa36fed5ce51089899c8ca1b
+ checksum: 5e33fbafe7ef24e1a19e52ec9b336235d3ef1b77b94711eb53cf9380e143d6f6b9115d83751fceb92c5fa20fe76bd9d6d813831183355aea82f441641e369841
languageName: node
linkType: hard
-"@mui/system@npm:^5.16.8":
- version: 5.16.8
- resolution: "@mui/system@npm:5.16.8"
+"@mui/system@npm:^5.16.12":
+ version: 5.16.12
+ resolution: "@mui/system@npm:5.16.12"
dependencies:
"@babel/runtime": ^7.23.9
- "@mui/private-theming": ^5.16.8
- "@mui/styled-engine": ^5.16.8
+ "@mui/private-theming": ^5.16.12
+ "@mui/styled-engine": ^5.16.12
"@mui/types": ^7.2.15
- "@mui/utils": ^5.16.8
+ "@mui/utils": ^5.16.12
clsx: ^2.1.0
csstype: ^3.1.3
prop-types: ^15.8.1
@@ -12024,7 +11852,7 @@ __metadata:
optional: true
"@types/react":
optional: true
- checksum: 8082b176009fa907cdb0391db59db6cd3589659ad92497caec998c01e1683978ab2eda4ece4d12e523d233b062aa5946d4a438d9a22bf172f0568be1db773e9c
+ checksum: 261fbf349e6ef1462f46d92221697efe0aefcde33975eeb214dd2fa97b77ca76236cae0c221bc9e30e84775b8d3ebd9a4dd779666e833f671cf7b3a11a50a39d
languageName: node
linkType: hard
@@ -12040,23 +11868,23 @@ __metadata:
languageName: node
linkType: hard
-"@mui/utils@npm:^5.14.15, @mui/utils@npm:^5.16.8":
- version: 5.16.8
- resolution: "@mui/utils@npm:5.16.8"
+"@mui/utils@npm:^5.14.15, @mui/utils@npm:^5.16.12":
+ version: 5.16.12
+ resolution: "@mui/utils@npm:5.16.12"
dependencies:
"@babel/runtime": ^7.23.9
"@mui/types": ^7.2.15
"@types/prop-types": ^15.7.12
clsx: ^2.1.1
prop-types: ^15.8.1
- react-is: ^18.3.1
+ react-is: ^19.0.0
peerDependencies:
"@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: ed714c6aa583bdf17af9f523c9b9ba3789a47677aa6408bc2afd842fa9eaa6d111361c1309435d481ea03b8c695e22ead98c43dc13239c63a3da481c95e5ad72
+ checksum: 0f6df27d39d9c7c5dcd041fc8a2e40bd222180aaa140c7c4f7f7a79e79edbd2f15ffcd407ab27ec58142a2cb9858f078cf20f0ccb0d854ec7a426475bf0dabce
languageName: node
linkType: hard
@@ -15335,11 +15163,11 @@ __metadata:
linkType: hard
"@remixicon/react@npm:^4.5.0":
- version: 4.5.0
- resolution: "@remixicon/react@npm:4.5.0"
+ version: 4.6.0
+ resolution: "@remixicon/react@npm:4.6.0"
peerDependencies:
react: ">=18.2.0"
- checksum: e37b61090954954601d35367a740b7be30c105a49f67eaa5a697db16d4668d71d9fd94b339da6d449a254736d5af3b567d3694021b79d3c82fe28afb818830bc
+ checksum: 81127617eff78fb97aff01dc392ebbafb69fbfe835270b4db8ee68844d02d8c47a42d312d72104708f7266d8ad005405ea1245a536e35b66305d00d56f20b9eb
languageName: node
linkType: hard
@@ -15458,8 +15286,8 @@ __metadata:
linkType: hard
"@rollup/plugin-node-resolve@npm:^15.0.0":
- version: 15.3.0
- resolution: "@rollup/plugin-node-resolve@npm:15.3.0"
+ version: 15.3.1
+ resolution: "@rollup/plugin-node-resolve@npm:15.3.1"
dependencies:
"@rollup/pluginutils": ^5.0.1
"@types/resolve": 1.20.2
@@ -15471,7 +15299,7 @@ __metadata:
peerDependenciesMeta:
rollup:
optional: true
- checksum: 90e4e94b173e7edd57e374ac0cc0a69cc6f1b4507e83731132ac6fa1747d96a5648a48441e4452728429b6db5e67561439b7b2f4d2c6a941a33d38be56d871b4
+ checksum: 2973db4da0e7ed97c35a8dd8878ed6b6781bcb03d72039f064d878f711b0290446348c5268aa1359d064787adc0d5cc35f662d35ea5a4fa9b0b3f9f17c678f41
languageName: node
linkType: hard
@@ -15643,82 +15471,82 @@ __metadata:
languageName: node
linkType: hard
-"@rspack/binding-darwin-arm64@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-darwin-arm64@npm:1.1.5"
+"@rspack/binding-darwin-arm64@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-darwin-arm64@npm:1.1.8"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@rspack/binding-darwin-x64@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-darwin-x64@npm:1.1.5"
+"@rspack/binding-darwin-x64@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-darwin-x64@npm:1.1.8"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@rspack/binding-linux-arm64-gnu@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-linux-arm64-gnu@npm:1.1.5"
+"@rspack/binding-linux-arm64-gnu@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-linux-arm64-gnu@npm:1.1.8"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@rspack/binding-linux-arm64-musl@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-linux-arm64-musl@npm:1.1.5"
+"@rspack/binding-linux-arm64-musl@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-linux-arm64-musl@npm:1.1.8"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@rspack/binding-linux-x64-gnu@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-linux-x64-gnu@npm:1.1.5"
+"@rspack/binding-linux-x64-gnu@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-linux-x64-gnu@npm:1.1.8"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@rspack/binding-linux-x64-musl@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-linux-x64-musl@npm:1.1.5"
+"@rspack/binding-linux-x64-musl@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-linux-x64-musl@npm:1.1.8"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@rspack/binding-win32-arm64-msvc@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-win32-arm64-msvc@npm:1.1.5"
+"@rspack/binding-win32-arm64-msvc@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-win32-arm64-msvc@npm:1.1.8"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@rspack/binding-win32-ia32-msvc@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-win32-ia32-msvc@npm:1.1.5"
+"@rspack/binding-win32-ia32-msvc@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-win32-ia32-msvc@npm:1.1.8"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@rspack/binding-win32-x64-msvc@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding-win32-x64-msvc@npm:1.1.5"
+"@rspack/binding-win32-x64-msvc@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding-win32-x64-msvc@npm:1.1.8"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
-"@rspack/binding@npm:1.1.5":
- version: 1.1.5
- resolution: "@rspack/binding@npm:1.1.5"
+"@rspack/binding@npm:1.1.8":
+ version: 1.1.8
+ resolution: "@rspack/binding@npm:1.1.8"
dependencies:
- "@rspack/binding-darwin-arm64": 1.1.5
- "@rspack/binding-darwin-x64": 1.1.5
- "@rspack/binding-linux-arm64-gnu": 1.1.5
- "@rspack/binding-linux-arm64-musl": 1.1.5
- "@rspack/binding-linux-x64-gnu": 1.1.5
- "@rspack/binding-linux-x64-musl": 1.1.5
- "@rspack/binding-win32-arm64-msvc": 1.1.5
- "@rspack/binding-win32-ia32-msvc": 1.1.5
- "@rspack/binding-win32-x64-msvc": 1.1.5
+ "@rspack/binding-darwin-arm64": 1.1.8
+ "@rspack/binding-darwin-x64": 1.1.8
+ "@rspack/binding-linux-arm64-gnu": 1.1.8
+ "@rspack/binding-linux-arm64-musl": 1.1.8
+ "@rspack/binding-linux-x64-gnu": 1.1.8
+ "@rspack/binding-linux-x64-musl": 1.1.8
+ "@rspack/binding-win32-arm64-msvc": 1.1.8
+ "@rspack/binding-win32-ia32-msvc": 1.1.8
+ "@rspack/binding-win32-x64-msvc": 1.1.8
dependenciesMeta:
"@rspack/binding-darwin-arm64":
optional: true
@@ -15738,16 +15566,16 @@ __metadata:
optional: true
"@rspack/binding-win32-x64-msvc":
optional: true
- checksum: 6fe7d4cd04613c8c25d1e5eabf97abd82c721ec68f787150eab3026ef01830043e9c062851a286618106cadca759fc55929ec39b85b12e21025cffd39655dfc6
+ checksum: 5cd8334d20bd02ccc269a72e960ff01722eb6cc38e0b5b000c9a5d97e6ea7fcf599d8367a08fa7bfc1ddb2745630b0459ef53bc450b66f930e25df2d9b90d5b2
languageName: node
linkType: hard
"@rspack/core@npm:^1.0.10":
- version: 1.1.5
- resolution: "@rspack/core@npm:1.1.5"
+ version: 1.1.8
+ resolution: "@rspack/core@npm:1.1.8"
dependencies:
"@module-federation/runtime-tools": 0.5.1
- "@rspack/binding": 1.1.5
+ "@rspack/binding": 1.1.8
"@rspack/lite-tapable": 1.0.1
caniuse-lite: ^1.0.30001616
peerDependencies:
@@ -15755,7 +15583,7 @@ __metadata:
peerDependenciesMeta:
"@swc/helpers":
optional: true
- checksum: 795da019b01555f7f3035ee1c80f39d808ddd1a6043aa2ab8caa3c42e3f73f966fb581bcb9c959852fd31d52ea8f89e2a135c8fa29c31cb7effa7d237a854520
+ checksum: be6a4fcb887bc5fb3b9723d9600d295ea322cd8201c1ddd105a8574b4633fe5c504fb7d7841173a5bebddd2e88f87a09944e1b515c62fd9ec8496bcad4d23e1c
languageName: node
linkType: hard
@@ -16102,13 +15930,13 @@ __metadata:
languageName: node
linkType: hard
-"@smithy/abort-controller@npm:^3.1.2, @smithy/abort-controller@npm:^3.1.8":
- version: 3.1.8
- resolution: "@smithy/abort-controller@npm:3.1.8"
+"@smithy/abort-controller@npm:^3.1.2, @smithy/abort-controller@npm:^3.1.9":
+ version: 3.1.9
+ resolution: "@smithy/abort-controller@npm:3.1.9"
dependencies:
- "@smithy/types": ^3.7.1
+ "@smithy/types": ^3.7.2
tslib: ^2.6.2
- checksum: edfe448be34e33120dfb11a564e87362288ed76d69eaae3449d5f1ee806def1fc844c35421caf2cf579e3bc45df97340e74e36927ec439c8c8aca5c5edf8fb85
+ checksum: 0d15ce236a14cc5193b76e6990a224957926404dd683c23000b9370a230d9331b36a4cb805521b0d713aec80b2ea78b22e0c44b03d52aa77c8d998915aafd2ac
languageName: node
linkType: hard
@@ -16393,15 +16221,15 @@ __metadata:
linkType: hard
"@smithy/node-http-handler@npm:^3.0.0, @smithy/node-http-handler@npm:^3.2.0":
- version: 3.3.1
- resolution: "@smithy/node-http-handler@npm:3.3.1"
+ version: 3.3.2
+ resolution: "@smithy/node-http-handler@npm:3.3.2"
dependencies:
- "@smithy/abort-controller": ^3.1.8
- "@smithy/protocol-http": ^4.1.7
- "@smithy/querystring-builder": ^3.0.10
- "@smithy/types": ^3.7.1
+ "@smithy/abort-controller": ^3.1.9
+ "@smithy/protocol-http": ^4.1.8
+ "@smithy/querystring-builder": ^3.0.11
+ "@smithy/types": ^3.7.2
tslib: ^2.6.2
- checksum: 483766a6f7d9625b254a1e88f54c0bd89e83bb0c3a3518d3b298dcd9bbc2160bca2e867a859654c483aed78e8578e0c3c65ae4e0c4aa6e5e50bc04cdb7af1b37
+ checksum: f4d70ca9ba6d62ae9c3257c069a42ff9c0d3bce28625e7ebab34bc3196eb5a2a1cb2c20d3409b8d1a9c24f0a5d0b3d0809904ceea8d87c4fb991474fd0d9fd31
languageName: node
linkType: hard
@@ -16415,24 +16243,24 @@ __metadata:
languageName: node
linkType: hard
-"@smithy/protocol-http@npm:^4.1.1, @smithy/protocol-http@npm:^4.1.7":
- version: 4.1.7
- resolution: "@smithy/protocol-http@npm:4.1.7"
+"@smithy/protocol-http@npm:^4.1.1, @smithy/protocol-http@npm:^4.1.8":
+ version: 4.1.8
+ resolution: "@smithy/protocol-http@npm:4.1.8"
dependencies:
- "@smithy/types": ^3.7.1
+ "@smithy/types": ^3.7.2
tslib: ^2.6.2
- checksum: 3d78a52558edb712e7b399535fcb9de5960610dc4b81ce15f1b52c7ac3ea96f47c53132974ce9e1108378dc1c5ee90333828dfa1a071dff7b49cf7b687537452
+ checksum: 43cdc163137f09dc5f2419ab75c9f31ca7c1da9210023c027be5fa29455543bdc10ab886449dc1399d7ea21ab4b83ba828714f31d06c1638999fa17d5bba0626
languageName: node
linkType: hard
-"@smithy/querystring-builder@npm:^3.0.10, @smithy/querystring-builder@npm:^3.0.4":
- version: 3.0.10
- resolution: "@smithy/querystring-builder@npm:3.0.10"
+"@smithy/querystring-builder@npm:^3.0.11, @smithy/querystring-builder@npm:^3.0.4":
+ version: 3.0.11
+ resolution: "@smithy/querystring-builder@npm:3.0.11"
dependencies:
- "@smithy/types": ^3.7.1
+ "@smithy/types": ^3.7.2
"@smithy/util-uri-escape": ^3.0.0
tslib: ^2.6.2
- checksum: a789b6f43392247880d71a4d88a89309d2da0c66e2c0f1708c9befd19db66151b8653e6ba3a13cb9aae2a9ed3889245ad394ecdb1076c25b447296b0a4d83877
+ checksum: 168f3104b2db0b704f211e18a318dffdbaaa9675b62ca44c892267c7825295e10041c1c82086cdcd1a7a05f1db95c0a1c74540d8b6d9c9504b13bb89387186fd
languageName: node
linkType: hard
@@ -16504,12 +16332,12 @@ __metadata:
languageName: node
linkType: hard
-"@smithy/types@npm:^3.4.0, @smithy/types@npm:^3.7.1":
- version: 3.7.1
- resolution: "@smithy/types@npm:3.7.1"
+"@smithy/types@npm:^3.4.0, @smithy/types@npm:^3.7.2":
+ version: 3.7.2
+ resolution: "@smithy/types@npm:3.7.2"
dependencies:
tslib: ^2.6.2
- checksum: 8db4393211db97aec515cc06748fa23acfc0c26a19c5ed6d009add623e1b1b7a470603a71f55b9de31a15696a2918e4a0913cb3531bfc7951b80bc7872f594f0
+ checksum: f3ae277d2f81eeb67c12e651b2e999225cda115dff8fab257a77fbe3739d32c515dbd19218590dd2c33d203259b00c80c9fc6027f8484c50725390a8fc0f1e3e
languageName: node
linkType: hard
@@ -18474,22 +18302,22 @@ __metadata:
linkType: hard
"@testing-library/react@npm:^16.0.0":
- version: 16.0.1
- resolution: "@testing-library/react@npm:16.0.1"
+ version: 16.1.0
+ resolution: "@testing-library/react@npm:16.1.0"
dependencies:
"@babel/runtime": ^7.12.5
peerDependencies:
"@testing-library/dom": ^10.0.0
- "@types/react": ^18.0.0
- "@types/react-dom": ^18.0.0
- react: ^18.0.0
- react-dom: ^18.0.0
+ "@types/react": ^18.0.0 || ^19.0.0
+ "@types/react-dom": ^18.0.0 || ^19.0.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
peerDependenciesMeta:
"@types/react":
optional: true
"@types/react-dom":
optional: true
- checksum: 1837db473ea018cf2b5d0cbfffb7a30d0d759e5a7f23aad431441c77bcc3d2533250cd003a61878fd908267df47404cedcb5914f12d79e413002c659652b37fd
+ checksum: 5dc8e7abda23d108c29f43cdacd43fad750e981ee87ee8902fb349a2683f2f774ef1136f2d3ef3d9efb87e8b04426c43d7b46e95511cd7c9d37b10c3bdd3e9e2
languageName: node
linkType: hard
@@ -20718,9 +20546,9 @@ __metadata:
languageName: node
linkType: hard
-"@uiw/codemirror-extensions-basic-setup@npm:4.23.6":
- version: 4.23.6
- resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.23.6"
+"@uiw/codemirror-extensions-basic-setup@npm:4.23.7":
+ version: 4.23.7
+ resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.23.7"
dependencies:
"@codemirror/autocomplete": ^6.0.0
"@codemirror/commands": ^6.0.0
@@ -20737,19 +20565,19 @@ __metadata:
"@codemirror/search": ">=6.0.0"
"@codemirror/state": ">=6.0.0"
"@codemirror/view": ">=6.0.0"
- checksum: dc5a845d80c0659883f5299150034145d9b0d1879a926d5f6a9c21d839351715ea9b5dba0272cfb869e9139d40d49e86c5df12e504874cebc8cf6e9824ec4b98
+ checksum: 656c5f78db4c6216a9a7eeb65455f52b002b7a5426bb1b05f11b896d5dba9887c7b9ee5aee9fe369d6c7b3c69128ee842cb5c8fe029cd07c2e48ec9358039a30
languageName: node
linkType: hard
"@uiw/react-codemirror@npm:^4.9.3":
- version: 4.23.6
- resolution: "@uiw/react-codemirror@npm:4.23.6"
+ version: 4.23.7
+ resolution: "@uiw/react-codemirror@npm:4.23.7"
dependencies:
"@babel/runtime": ^7.18.6
"@codemirror/commands": ^6.1.0
"@codemirror/state": ^6.1.1
"@codemirror/theme-one-dark": ^6.0.0
- "@uiw/codemirror-extensions-basic-setup": 4.23.6
+ "@uiw/codemirror-extensions-basic-setup": 4.23.7
codemirror: ^6.0.0
peerDependencies:
"@babel/runtime": ">=7.11.0"
@@ -20759,7 +20587,7 @@ __metadata:
codemirror: ">=6.0.0"
react: ">=16.8.0"
react-dom: ">=16.8.0"
- checksum: 83ff09c6e5df919b3fef181798b138803a987efab4bebdaad09daae1701167cb4a734fa0b18adcc043d5a2fbd3a997bbda461d1a60972bfccdbbca21803e33fe
+ checksum: 5f6318b290f479c4718129578bdccbbdf64e3b588fdd79e3d80224779219eae7e249d40e4f88c864ed6ae40ea93036042313e983a022349563698593a2bf2e6c
languageName: node
linkType: hard
@@ -20983,96 +20811,6 @@ __metadata:
languageName: node
linkType: hard
-"@vanilla-extract/babel-plugin-debug-ids@npm:^1.1.0":
- version: 1.1.0
- resolution: "@vanilla-extract/babel-plugin-debug-ids@npm:1.1.0"
- dependencies:
- "@babel/core": ^7.23.9
- checksum: b2feec9016ba2dd6740c2ce002d814123f38bf8fc01a6d771eff74ed8108abefdc9d6507e2045587d2a73d8a538ece867e4bfef8c5ccc2b13095a2c825160e7a
- languageName: node
- linkType: hard
-
-"@vanilla-extract/css@npm:^1.16.1":
- version: 1.16.1
- resolution: "@vanilla-extract/css@npm:1.16.1"
- dependencies:
- "@emotion/hash": ^0.9.0
- "@vanilla-extract/private": ^1.0.6
- css-what: ^6.1.0
- cssesc: ^3.0.0
- csstype: ^3.0.7
- dedent: ^1.5.3
- deep-object-diff: ^1.1.9
- deepmerge: ^4.2.2
- lru-cache: ^10.4.3
- media-query-parser: ^2.0.2
- modern-ahocorasick: ^1.0.0
- picocolors: ^1.0.0
- checksum: ff58f32778cbc15458aff951ad771ba46f772d78633ff99f849f590b83a22ce67e017af28351c68c32edcdaae4454146dd90f369842a627ee79dc9c3ab434e1e
- languageName: node
- linkType: hard
-
-"@vanilla-extract/integration@npm:^7.1.11":
- version: 7.1.11
- resolution: "@vanilla-extract/integration@npm:7.1.11"
- dependencies:
- "@babel/core": ^7.23.9
- "@babel/plugin-syntax-typescript": ^7.23.3
- "@vanilla-extract/babel-plugin-debug-ids": ^1.1.0
- "@vanilla-extract/css": ^1.16.1
- dedent: ^1.5.3
- esbuild: "npm:esbuild@>=0.17.6 <0.24.0"
- eval: 0.1.8
- find-up: ^5.0.0
- javascript-stringify: ^2.0.1
- mlly: ^1.4.2
- vite: ^5.0.11
- vite-node: ^1.2.0
- checksum: 23196f388045c0cdaa35bf26cf484ca4423e336026770b743017056aed7704c74c2134b425571eee9c6859ed1a1553a435e4d0c502ff5a78f8dc2c02db00707a
- languageName: node
- linkType: hard
-
-"@vanilla-extract/private@npm:^1.0.6":
- version: 1.0.6
- resolution: "@vanilla-extract/private@npm:1.0.6"
- checksum: 2265b02af29d8cd40f6ddeeed197fb2df1a7695f5a9821d5e3597677179be8b83bcd8fe4df4a6178544f89123d745a3c6a13599d4fe4e5873b065a8ad329f690
- languageName: node
- linkType: hard
-
-"@vanilla-extract/rollup-plugin@npm:^1.3.10":
- version: 1.3.11
- resolution: "@vanilla-extract/rollup-plugin@npm:1.3.11"
- dependencies:
- "@vanilla-extract/integration": ^7.1.11
- peerDependencies:
- rollup: ^2.0.0 || ^3.0.0 || ^4.0.0
- checksum: 2e38981d156f8db962dedfc64131adbe8bd5ec9236686dccec92f3418d43d658f2f3a5797456f67eeb43ce75dcc84f9593e4f073e0e42c6df31d4e3ba6a59785
- languageName: node
- linkType: hard
-
-"@vanilla-extract/sprinkles@npm:^1.6.3":
- version: 1.6.3
- resolution: "@vanilla-extract/sprinkles@npm:1.6.3"
- peerDependencies:
- "@vanilla-extract/css": ^1.0.0
- checksum: 7eb4fe0f1a6048bf5ffb5ffab964c2d127ff95244da79dca2e448af380b591c7af3b4f63ab243584baa8a42c7694d8fe9eeb366587a2da381a481fe1a9e02af8
- languageName: node
- linkType: hard
-
-"@vanilla-extract/webpack-plugin@npm:^2.3.14":
- version: 2.3.15
- resolution: "@vanilla-extract/webpack-plugin@npm:2.3.15"
- dependencies:
- "@vanilla-extract/integration": ^7.1.11
- debug: ^4.3.1
- loader-utils: ^2.0.0
- picocolors: ^1.0.0
- peerDependencies:
- webpack: ^4.30.0 || ^5.20.2
- checksum: 105540377d0eb19f8dafcd2cc2cf893471494d4b82012574d4b70c32351ef78b6107ffaecf188a7a6edc10e70bd2963c4fd13ff16954f8063bb785aab98070dd
- languageName: node
- linkType: hard
-
"@vitejs/plugin-react@npm:^4.3.1":
version: 4.3.4
resolution: "@vitejs/plugin-react@npm:4.3.4"
@@ -23431,13 +23169,13 @@ __metadata:
linkType: hard
"better-sqlite3@npm:^11.0.0":
- version: 11.6.0
- resolution: "better-sqlite3@npm:11.6.0"
+ version: 11.7.0
+ resolution: "better-sqlite3@npm:11.7.0"
dependencies:
bindings: ^1.5.0
node-gyp: latest
prebuild-install: ^7.1.1
- checksum: 4570559e8b62da295060b086cfe7902648670863790993be1a43e73867f3d9767598aa52fb8332cf3eb16aa30f3037c3705ce5a195db59c076006067e43eea98
+ checksum: 7977bdb0452e096471a5e66ab20b490ddb84d7036856e85896afd9e723415518bbde3e0394c3d00928f04b791d69066a4aaf389b5414fc6abf24815b7ae368fa
languageName: node
linkType: hard
@@ -23952,13 +23690,6 @@ __metadata:
languageName: node
linkType: hard
-"cac@npm:^6.7.14":
- version: 6.7.14
- resolution: "cac@npm:6.7.14"
- checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a
- languageName: node
- linkType: hard
-
"cacache@npm:^15.0.3, cacache@npm:^15.0.5, cacache@npm:^15.2.0":
version: 15.3.0
resolution: "cacache@npm:15.3.0"
@@ -24711,7 +24442,7 @@ __metadata:
languageName: node
linkType: hard
-"cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0":
+"cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0, cluster-key-slot@npm:^1.1.2":
version: 1.1.2
resolution: "cluster-key-slot@npm:1.1.2"
checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681
@@ -25175,13 +24906,6 @@ __metadata:
languageName: node
linkType: hard
-"confbox@npm:^0.1.8":
- version: 0.1.8
- resolution: "confbox@npm:0.1.8"
- checksum: 5c7718ab22cf9e35a31c21ef124156076ae8c9dc65e6463d54961caf5a1d529284485a0fdf83fd23b27329f3b75b0c8c07d2e36c699f5151a2efe903343f976a
- languageName: node
- linkType: hard
-
"configstore@npm:^5.0.1":
version: 5.0.1
resolution: "configstore@npm:5.0.1"
@@ -25592,21 +25316,21 @@ __metadata:
linkType: hard
"cron@npm:^3.0.0":
- version: 3.2.1
- resolution: "cron@npm:3.2.1"
+ version: 3.3.1
+ resolution: "cron@npm:3.3.1"
dependencies:
"@types/luxon": ~3.4.0
luxon: ~3.5.0
- checksum: 349419d702385e9a6ad08d2b571d544df97009be37cde6a4c4e5b31118ca806d9501d784d74e84236a49233c7469e322c3d2c14867009a7a3b2e644b7ade0a0e
+ checksum: 069e521afd492a7d19234fc3478be32075a1c89fca729f2a3d2f9b7158880c0951e7e1515c8398c36f5ea04155d18186220c980e75623848e80bcee63218f5bc
languageName: node
linkType: hard
"cronstrue@npm:^2.2.0, cronstrue@npm:^2.32.0":
- version: 2.51.0
- resolution: "cronstrue@npm:2.51.0"
+ version: 2.52.0
+ resolution: "cronstrue@npm:2.52.0"
bin:
cronstrue: bin/cli.js
- checksum: 7487eeb7bdb9bc8882ede5d3f1cadf73dec44f1da8d29b8ebb0312f85413cd300842ce0c6c49beb66e549917d48f699dfd8b9585d00050c5571c3f8cbf091ac6
+ checksum: bfe4d8a58d74ba4a987ea6fe65917529451c648e2abe072d22a6ad4c750f4a7ae9d01321c999594b59cb138990ca43537505e759c23811bbffa606956fff5c55
languageName: node
linkType: hard
@@ -25969,7 +25693,7 @@ __metadata:
languageName: node
linkType: hard
-"csstype@npm:^3.0.2, csstype@npm:^3.0.7, csstype@npm:^3.1.2, csstype@npm:^3.1.3":
+"csstype@npm:^3.0.2, csstype@npm:^3.1.2, csstype@npm:^3.1.3":
version: 3.0.9
resolution: "csstype@npm:3.0.9"
checksum: 199f9af7e673f9f188525c3102a329d637ff46c52f6385a4427ff5cb17adcb736189150170a7af7c5701d18d7704bdad130273f4aa7e44c6c4f9967e6115dc93
@@ -26335,7 +26059,7 @@ __metadata:
languageName: node
linkType: hard
-"dedent@npm:^1.0.0, dedent@npm:^1.5.3":
+"dedent@npm:^1.0.0":
version: 1.5.3
resolution: "dedent@npm:1.5.3"
peerDependencies:
@@ -26375,13 +26099,6 @@ __metadata:
languageName: node
linkType: hard
-"deep-object-diff@npm:^1.1.9":
- version: 1.1.9
- resolution: "deep-object-diff@npm:1.1.9"
- checksum: ecd42455e4773f653595d28070295e7aaa8402db5f8ab21d0bec115a7cb4de5e207a5665514767da5f025c96597f1d3a0a4888aeb4dd49e03c996871a3aa05ef
- languageName: node
- linkType: hard
-
"deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1, deepmerge@npm:~4.3.0":
version: 4.3.1
resolution: "deepmerge@npm:4.3.1"
@@ -27275,7 +26992,7 @@ __metadata:
languageName: node
linkType: hard
-"enquirer@npm:^2.3.0, enquirer@npm:^2.3.6":
+"enquirer@npm:^2.3.6, enquirer@npm:^2.4.1":
version: 2.4.1
resolution: "enquirer@npm:2.4.1"
dependencies:
@@ -27755,89 +27472,6 @@ __metadata:
languageName: node
linkType: hard
-"esbuild@npm:esbuild@>=0.17.6 <0.24.0":
- version: 0.23.1
- resolution: "esbuild@npm:0.23.1"
- dependencies:
- "@esbuild/aix-ppc64": 0.23.1
- "@esbuild/android-arm": 0.23.1
- "@esbuild/android-arm64": 0.23.1
- "@esbuild/android-x64": 0.23.1
- "@esbuild/darwin-arm64": 0.23.1
- "@esbuild/darwin-x64": 0.23.1
- "@esbuild/freebsd-arm64": 0.23.1
- "@esbuild/freebsd-x64": 0.23.1
- "@esbuild/linux-arm": 0.23.1
- "@esbuild/linux-arm64": 0.23.1
- "@esbuild/linux-ia32": 0.23.1
- "@esbuild/linux-loong64": 0.23.1
- "@esbuild/linux-mips64el": 0.23.1
- "@esbuild/linux-ppc64": 0.23.1
- "@esbuild/linux-riscv64": 0.23.1
- "@esbuild/linux-s390x": 0.23.1
- "@esbuild/linux-x64": 0.23.1
- "@esbuild/netbsd-x64": 0.23.1
- "@esbuild/openbsd-arm64": 0.23.1
- "@esbuild/openbsd-x64": 0.23.1
- "@esbuild/sunos-x64": 0.23.1
- "@esbuild/win32-arm64": 0.23.1
- "@esbuild/win32-ia32": 0.23.1
- "@esbuild/win32-x64": 0.23.1
- dependenciesMeta:
- "@esbuild/aix-ppc64":
- optional: true
- "@esbuild/android-arm":
- optional: true
- "@esbuild/android-arm64":
- optional: true
- "@esbuild/android-x64":
- optional: true
- "@esbuild/darwin-arm64":
- optional: true
- "@esbuild/darwin-x64":
- optional: true
- "@esbuild/freebsd-arm64":
- optional: true
- "@esbuild/freebsd-x64":
- optional: true
- "@esbuild/linux-arm":
- optional: true
- "@esbuild/linux-arm64":
- optional: true
- "@esbuild/linux-ia32":
- optional: true
- "@esbuild/linux-loong64":
- optional: true
- "@esbuild/linux-mips64el":
- optional: true
- "@esbuild/linux-ppc64":
- optional: true
- "@esbuild/linux-riscv64":
- optional: true
- "@esbuild/linux-s390x":
- optional: true
- "@esbuild/linux-x64":
- optional: true
- "@esbuild/netbsd-x64":
- optional: true
- "@esbuild/openbsd-arm64":
- optional: true
- "@esbuild/openbsd-x64":
- optional: true
- "@esbuild/sunos-x64":
- optional: true
- "@esbuild/win32-arm64":
- optional: true
- "@esbuild/win32-ia32":
- optional: true
- "@esbuild/win32-x64":
- optional: true
- bin:
- esbuild: bin/esbuild
- checksum: 0413c3b9257327fb598427688b7186ea335bf1693746fe5713cc93c95854d6388b8ed4ad643fddf5b5ace093f7dcd9038dd58e087bf2da1f04dfb4c5571660af
- languageName: node
- linkType: hard
-
"escalade@npm:^3.1.1, escalade@npm:^3.2.0":
version: 3.2.0
resolution: "escalade@npm:3.2.0"
@@ -28370,16 +28004,6 @@ __metadata:
languageName: node
linkType: hard
-"eval@npm:0.1.8":
- version: 0.1.8
- resolution: "eval@npm:0.1.8"
- dependencies:
- "@types/node": "*"
- require-like: ">= 0.1.1"
- checksum: d005567f394cfbe60948e34982e4637d2665030f9aa7dcac581ea6f9ec6eceb87133ed3dc0ae21764aa362485c242a731dbb6371f1f1a86807c58676431e9d1a
- languageName: node
- linkType: hard
-
"event-emitter@npm:^0.3.5":
version: 0.3.5
resolution: "event-emitter@npm:0.3.5"
@@ -29457,15 +29081,6 @@ __metadata:
languageName: node
linkType: hard
-"flat@npm:^5.0.2":
- version: 5.0.2
- resolution: "flat@npm:5.0.2"
- bin:
- flat: cli.js
- checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d
- languageName: node
- linkType: hard
-
"flatstr@npm:^1.0.12":
version: 1.0.12
resolution: "flatstr@npm:1.0.12"
@@ -30680,9 +30295,9 @@ __metadata:
linkType: hard
"graphql@npm:^16.0.0, graphql@npm:^16.8.1":
- version: 16.9.0
- resolution: "graphql@npm:16.9.0"
- checksum: 8cb3d54100e9227310383ce7f791ca48d12f15ed9f2021f23f8735f1121aafe4e5e611a853081dd935ce221724ea1ae4638faef5d2921fb1ad7c26b5f46611e9
+ version: 16.10.0
+ resolution: "graphql@npm:16.10.0"
+ checksum: 969c2d1061d69ad6fe08a7fe642428212b0b8485a2f9b5d8650203eb6c3221479e81ec6a757708f849d84b85afcb3ebc5a8ff2f71778bb66c5e4850f051c170e
languageName: node
linkType: hard
@@ -32618,12 +32233,12 @@ __metadata:
linkType: hard
"isolated-vm@npm:^5.0.1":
- version: 5.0.2
- resolution: "isolated-vm@npm:5.0.2"
+ version: 5.0.3
+ resolution: "isolated-vm@npm:5.0.3"
dependencies:
node-gyp: latest
prebuild-install: ^7.1.2
- checksum: 065f19ecb2e43393e6833321105bfa5911d82d0165e25beeb779bb6a262e1401dd387c900bcc3ad706eb7e73f5c5d57ca16ef7e2ee710e62e86b2a5ef39ce76b
+ checksum: 71ec0c45fe00ed5e48b598281682e46bea7b478177d303326a0ba0602a3186059164d89935820b6648d3ea68aa73d23cd47378752189a7a6877bdfcec140985a
languageName: node
linkType: hard
@@ -32827,13 +32442,6 @@ __metadata:
languageName: node
linkType: hard
-"javascript-stringify@npm:^2.0.1":
- version: 2.1.0
- resolution: "javascript-stringify@npm:2.1.0"
- checksum: 009981ec84299da88795fc764221ed213e3d52251cc93a396430a7a02ae09f1163a9be36a36808689681a8e6113cf00fe97ec2eea2552df48111f79be59e9358
- languageName: node
- linkType: hard
-
"jest-changed-files@npm:^29.7.0":
version: 29.7.0
resolution: "jest-changed-files@npm:29.7.0"
@@ -34125,11 +33733,11 @@ __metadata:
linkType: hard
"keyv@npm:*, keyv@npm:^5.2.1":
- version: 5.2.1
- resolution: "keyv@npm:5.2.1"
+ version: 5.2.2
+ resolution: "keyv@npm:5.2.2"
dependencies:
- "@keyv/serialize": "*"
- checksum: 92f02ce8a61d3f832c72bc305a0a3408ab3ba322702175c8f23ddb7b317cdef6525fa084135ca4218f40afe17397f2b5b0f38fb1f0758fb47e8cd5d2699963d2
+ "@keyv/serialize": ^1.0.1
+ checksum: d5476d8dd674c55c1754bcd05da118dc71eb4609f38677d891da799600fdc532f2015b1ffd3d8e03c0891b3ca88e4b50a34e1eac7787844f6af9cfb2f72c946c
languageName: node
linkType: hard
@@ -34212,8 +33820,8 @@ __metadata:
linkType: hard
"knip@npm:^5.0.0":
- version: 5.39.4
- resolution: "knip@npm:5.39.4"
+ version: 5.41.1
+ resolution: "knip@npm:5.41.1"
dependencies:
"@nodelib/fs.walk": 1.2.8
"@snyk/github-codeowners": 1.1.0
@@ -34237,7 +33845,7 @@ __metadata:
bin:
knip: bin/knip.js
knip-bun: bin/knip-bun.js
- checksum: 0a67865d11e015e324097616caec95f2bec15081daf1a969efcabd0f183020a6c6460326d2ea8cfc1c60b3ecf285710420c328c3ff4093018aec1d077b5815d7
+ checksum: d8b1d072493e624abc3ed08d855940a4877c86c7c0b9211e69d930e597c683badd035c1bfb1dc3f9c53c4223507fa0556b413cef63c2e732190275c553587cad
languageName: node
linkType: hard
@@ -35013,7 +34621,7 @@ __metadata:
languageName: node
linkType: hard
-"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3":
+"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
version: 10.4.3
resolution: "lru-cache@npm:10.4.3"
checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a
@@ -35524,15 +35132,6 @@ __metadata:
languageName: node
linkType: hard
-"media-query-parser@npm:^2.0.2":
- version: 2.0.2
- resolution: "media-query-parser@npm:2.0.2"
- dependencies:
- "@babel/runtime": ^7.12.5
- checksum: 8ef956d9e63fe6f4041988beda69843b3a6bb48228ea2923a066f6e7c8f7c5dba75fae357318c48a97ed5beae840b8425cb7e727fc1bb77acc65f2005f8945ab
- languageName: node
- linkType: hard
-
"media-typer@npm:0.3.0":
version: 0.3.0
resolution: "media-typer@npm:0.3.0"
@@ -36479,18 +36078,6 @@ __metadata:
languageName: node
linkType: hard
-"mlly@npm:^1.4.2, mlly@npm:^1.7.2":
- version: 1.7.3
- resolution: "mlly@npm:1.7.3"
- dependencies:
- acorn: ^8.14.0
- pathe: ^1.1.2
- pkg-types: ^1.2.1
- ufo: ^1.5.4
- checksum: 60d309c7ce2ac162224a087fcd683a891260511f57011b2f436b54dfef146b8aae7473013958a58d5b6039f2a8692c32a2599c8390c5b307d1119ad0d917b414
- languageName: node
- linkType: hard
-
"mock-socket@npm:^9.3.0":
version: 9.3.1
resolution: "mock-socket@npm:9.3.1"
@@ -36599,13 +36186,6 @@ __metadata:
languageName: node
linkType: hard
-"modern-ahocorasick@npm:^1.0.0":
- version: 1.1.0
- resolution: "modern-ahocorasick@npm:1.1.0"
- checksum: 78b99840c9af086c1e36a594ee85bebd8c19d48e2ef31a67d1bad0e673ac12fc931e5961abb5b16daaf820af4923e700f76b1793b7413e18782230162866a0af
- languageName: node
- linkType: hard
-
"module-details-from-path@npm:^1.0.3":
version: 1.0.3
resolution: "module-details-from-path@npm:1.0.3"
@@ -36703,8 +36283,8 @@ __metadata:
linkType: hard
"msw@npm:^2.0.0, msw@npm:^2.0.8":
- version: 2.6.9
- resolution: "msw@npm:2.6.9"
+ version: 2.7.0
+ resolution: "msw@npm:2.7.0"
dependencies:
"@bundled-es-modules/cookie": ^2.0.1
"@bundled-es-modules/statuses": ^1.0.1
@@ -36715,12 +36295,12 @@ __metadata:
"@open-draft/until": ^2.1.0
"@types/cookie": ^0.6.0
"@types/statuses": ^2.0.4
- chalk: ^4.1.2
graphql: ^16.8.1
headers-polyfill: ^4.0.2
is-node-process: ^1.2.0
outvariant: ^1.4.3
path-to-regexp: ^6.3.0
+ picocolors: ^1.1.1
strict-event-emitter: ^0.5.1
type-fest: ^4.26.1
yargs: ^17.7.2
@@ -36731,7 +36311,7 @@ __metadata:
optional: true
bin:
msw: cli/index.js
- checksum: 959d42bbc164fd6a2458398c0aa91d3ff605ec7492884ec6b39c2e72dd4064dc0d7d1083656cc676048d57d8d69348c8cb97952459b8157021269404ceee542b
+ checksum: d8851ced7a7b6a8ca11d2cd1cb7a21082ed2543ebe93afa047b0ed5a9fb4708bcf230fe888f3b88b8c73f4432d3dc858ac4943f2d1e09fc3380c1f28ccbb53e5
languageName: node
linkType: hard
@@ -38250,10 +37830,10 @@ __metadata:
languageName: node
linkType: hard
-"p-throttle@npm:^5.1.0":
- version: 5.1.0
- resolution: "p-throttle@npm:5.1.0"
- checksum: c412429cbb759a0772a083200a556e5866d4a7cb5383a9cc85880f47f07f4b1787fc33d2c824ab659fff0fc4a34a56e1d0712e88808f0c0ae0ffbe93b54f46c1
+"p-throttle@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "p-throttle@npm:7.0.0"
+ checksum: ede8b1444bcb9200ebb95415c5eb2fba301ab12de4a9cffe3b8f383ca640e6d52aed417ee0df6705217a8e5aa8faadc5169fc56be7e99d32d34b9a74727d1d4d
languageName: node
linkType: hard
@@ -38791,13 +38371,6 @@ __metadata:
languageName: node
linkType: hard
-"pathe@npm:^1.1.1, pathe@npm:^1.1.2":
- version: 1.1.2
- resolution: "pathe@npm:1.1.2"
- checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134
- languageName: node
- linkType: hard
-
"pathval@npm:^2.0.0":
version: 2.0.0
resolution: "pathval@npm:2.0.0"
@@ -39132,17 +38705,6 @@ __metadata:
languageName: node
linkType: hard
-"pkg-types@npm:^1.2.1":
- version: 1.2.1
- resolution: "pkg-types@npm:1.2.1"
- dependencies:
- confbox: ^0.1.8
- mlly: ^1.7.2
- pathe: ^1.1.2
- checksum: d2e3ad7aef36cc92b17403e61c04db521bf0beb175ccb4d432c284239f00ec32ff37feb072a260613e9ff727911cff1127a083fd52f91b9bec6b62970f385702
- languageName: node
- linkType: hard
-
"pkg-up@npm:^3.1.0":
version: 3.1.0
resolution: "pkg-up@npm:3.1.0"
@@ -40815,13 +40377,20 @@ __metadata:
languageName: node
linkType: hard
-"react-is@npm:^18.0.0, react-is@npm:^18.2.0, react-is@npm:^18.3.1":
+"react-is@npm:^18.0.0, react-is@npm:^18.2.0":
version: 18.3.1
resolution: "react-is@npm:18.3.1"
checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21
languageName: node
linkType: hard
+"react-is@npm:^19.0.0":
+ version: 19.0.0
+ resolution: "react-is@npm:19.0.0"
+ checksum: fbb3060bcb6b3e8e525b17f0872d1cf62a40b73fa7c5de02419069e2edd3e01cf1e8e86c8888f0733cff006175ee76ae927b40b6f0c4332bdda21020505ac90b
+ languageName: node
+ linkType: hard
+
"react-json-view@npm:^1.21.3":
version: 1.21.3
resolution: "react-json-view@npm:1.21.3"
@@ -41204,25 +40773,25 @@ __metadata:
linkType: hard
"react-virtualized-auto-sizer@npm:^1.0.11":
- version: 1.0.24
- resolution: "react-virtualized-auto-sizer@npm:1.0.24"
+ version: 1.0.25
+ resolution: "react-virtualized-auto-sizer@npm:1.0.25"
peerDependencies:
- react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0
- react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0
- checksum: e7d98563735dabbd1c58727c9d3e9f08f6a60a9964d25507cf4ef08f8964b6e421491c892ee0a99e47630118fdca42f1c60cef15ebda3659face58025dba3e98
+ react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0
+ checksum: 1d325db5bf78fd4a6a8df90fccc9a50b29c648d899d2ce779159903c7eaba2a98254e6436ca6d366b89c44c8b2de7042425dd36d17874d2b51a2455557423c3a
languageName: node
linkType: hard
"react-window@npm:^1.8.10, react-window@npm:^1.8.6":
- version: 1.8.10
- resolution: "react-window@npm:1.8.10"
+ version: 1.8.11
+ resolution: "react-window@npm:1.8.11"
dependencies:
"@babel/runtime": ^7.0.0
memoize-one: ">=3.1.1 <6"
peerDependencies:
- react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
- react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
- checksum: e8830f32e3ad4bf91af9cdc5cead84148c7694ce6abd9fdb447fb609da6cd4bbd0bbc75ff985f78828f4bbbd3ba4cbc98235cc9c056b5e5787578518f7fafbb9
+ react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ checksum: 04f0835869fbc1dc69637416e91bd7dfd462dcb9bf33ed2db4b4a515116c7a1c1ded3ca5e6df8d9a9ea3ec4f34e8e05f642d50f969bb495a9e11906d6a8cc418
languageName: node
linkType: hard
@@ -41773,13 +41342,6 @@ __metadata:
languageName: node
linkType: hard
-"require-like@npm:>= 0.1.1":
- version: 0.1.2
- resolution: "require-like@npm:0.1.2"
- checksum: edb8331f05fd807381a75b76f6cca9f0ce8acaa2e910b7e116541799aa970bfbc64fde5fd6adb3a6917dba346f8386ebbddb81614c24e8dad1b4290c7af9535e
- languageName: node
- linkType: hard
-
"requires-port@npm:^1.0.0":
version: 1.0.0
resolution: "requires-port@npm:1.0.0"
@@ -42531,15 +42093,15 @@ __metadata:
languageName: node
linkType: hard
-"schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0":
- version: 4.2.0
- resolution: "schema-utils@npm:4.2.0"
+"schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0, schema-utils@npm:^4.3.0":
+ version: 4.3.0
+ resolution: "schema-utils@npm:4.3.0"
dependencies:
"@types/json-schema": ^7.0.9
ajv: ^8.9.0
ajv-formats: ^2.1.1
ajv-keywords: ^5.1.0
- checksum: 26a0463d47683258106e6652e9aeb0823bf0b85843039e068b57da1892f7ae6b6b1094d48e9ed5ba5cbe9f7166469d880858b9d91abe8bd249421eb813850cde
+ checksum: 3dbd9056727c871818eaf3cabeeb5c9e173ae2b17bbf2a9c7a2e49c220fa1a580e44df651c876aea3b4926cecf080730a39e28202cb63f2b68d99872b49cd37a
languageName: node
linkType: hard
@@ -42697,7 +42259,7 @@ __metadata:
languageName: node
linkType: hard
-"serialize-javascript@npm:^6.0.1":
+"serialize-javascript@npm:^6.0.2":
version: 6.0.2
resolution: "serialize-javascript@npm:6.0.2"
dependencies:
@@ -44598,14 +44160,14 @@ __metadata:
linkType: hard
"terser-webpack-plugin@npm:*, terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10":
- version: 5.3.10
- resolution: "terser-webpack-plugin@npm:5.3.10"
+ version: 5.3.11
+ resolution: "terser-webpack-plugin@npm:5.3.11"
dependencies:
- "@jridgewell/trace-mapping": ^0.3.20
+ "@jridgewell/trace-mapping": ^0.3.25
jest-worker: ^27.4.5
- schema-utils: ^3.1.1
- serialize-javascript: ^6.0.1
- terser: ^5.26.0
+ schema-utils: ^4.3.0
+ serialize-javascript: ^6.0.2
+ terser: ^5.31.1
peerDependencies:
webpack: ^5.1.0
peerDependenciesMeta:
@@ -44615,13 +44177,13 @@ __metadata:
optional: true
uglify-js:
optional: true
- checksum: bd6e7596cf815f3353e2a53e79cbdec959a1b0276f5e5d4e63e9d7c3c5bb5306df567729da287d1c7b39d79093e56863c569c42c6c24cc34c76aa313bd2cbcea
+ checksum: c84c005d4041ad2e2eed0c9059b52a50ffd27f1e2afca7d34864a2b4b2bb1295405bc7578eeb25bae732e358339954d8cb6fbf6d83df52e8aa9333e8bf409ebe
languageName: node
linkType: hard
-"terser@npm:^5.10.0, terser@npm:^5.26.0":
- version: 5.26.0
- resolution: "terser@npm:5.26.0"
+"terser@npm:^5.10.0, terser@npm:^5.31.1":
+ version: 5.37.0
+ resolution: "terser@npm:5.37.0"
dependencies:
"@jridgewell/source-map": ^0.3.3
acorn: ^8.8.2
@@ -44629,7 +44191,7 @@ __metadata:
source-map-support: ~0.5.20
bin:
terser: bin/terser
- checksum: 02a9bb896f04df828025af8f0eced36c315d25d310b6c2418e7dad2bed19ddeb34a9cea9b34e7c24789830fa51e1b6a9be26679980987a9c817a7e6d9cd4154b
+ checksum: 70c06a8ce1288ff4370a7e481beb6fc8b22fc4995371479f49df1552aa9cf8e794ace66e1da6e87057eda1745644311213f5043bda9a06cf55421eff68b3ac06
languageName: node
linkType: hard
@@ -45620,13 +45182,6 @@ __metadata:
languageName: node
linkType: hard
-"ufo@npm:^1.5.4":
- version: 1.5.4
- resolution: "ufo@npm:1.5.4"
- checksum: f244703b7d4f9f0df4f9af23921241ab73410b591f4e5b39c23e3147f3159b139a4b1fb5903189c306129f7a16b55995dac0008e0fbae88a37c3e58cbc34d833
- languageName: node
- linkType: hard
-
"uglify-js@npm:^3.1.4":
version: 3.17.0
resolution: "uglify-js@npm:3.17.0"
@@ -46526,21 +46081,6 @@ __metadata:
languageName: node
linkType: hard
-"vite-node@npm:^1.2.0":
- version: 1.6.0
- resolution: "vite-node@npm:1.6.0"
- dependencies:
- cac: ^6.7.14
- debug: ^4.3.4
- pathe: ^1.1.1
- picocolors: ^1.0.0
- vite: ^5.0.0
- bin:
- vite-node: vite-node.mjs
- checksum: ce111c5c7a4cf65b722baa15cbc065b7bfdbf1b65576dd6372995f6a72b2b93773ec5df59f6c5f08cfe1284806597b44b832efcea50d5971102428159ff4379f
- languageName: node
- linkType: hard
-
"vite-plugin-html@npm:^3.2.2":
version: 3.2.2
resolution: "vite-plugin-html@npm:3.2.2"
@@ -46575,7 +46115,7 @@ __metadata:
languageName: node
linkType: hard
-"vite@npm:^5.0.0, vite@npm:^5.0.11":
+"vite@npm:^5.0.0":
version: 5.4.11
resolution: "vite@npm:5.4.11"
dependencies:
@@ -46905,17 +46445,6 @@ __metadata:
languageName: node
linkType: hard
-"webpack-merge@npm:^6.0.1":
- version: 6.0.1
- resolution: "webpack-merge@npm:6.0.1"
- dependencies:
- clone-deep: ^4.0.1
- flat: ^5.0.2
- wildcard: ^2.0.1
- checksum: e8a604c686b944605a1c57cc7b75e886ab902dc5ffdd15259a092c5c2dd5f58868fe39f995ea4bad4f189e38843b061c4ae1eb22822d7169813f4adab571dc3d
- languageName: node
- linkType: hard
-
"webpack-sources@npm:^1.4.3":
version: 1.4.3
resolution: "webpack-sources@npm:1.4.3"
@@ -47186,13 +46715,6 @@ __metadata:
languageName: node
linkType: hard
-"wildcard@npm:^2.0.1":
- version: 2.0.1
- resolution: "wildcard@npm:2.0.1"
- checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c
- languageName: node
- linkType: hard
-
"winston-transport@npm:^4.5.0, winston-transport@npm:^4.7.0":
version: 4.8.0
resolution: "winston-transport@npm:4.8.0"