From 21f0884a4d6a1d6867deabb0a6e3fe2bf6ab5b12 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Mon, 18 Nov 2024 10:32:45 +0000 Subject: [PATCH 01/29] Setting up Canon Signed-off-by: Charles de Dreuille --- packages/canon/.eslintrc.js | 4 + packages/canon/.storybook/main.ts | 41 + packages/canon/.storybook/preview.tsx | 46 + packages/canon/README.md | 12 + packages/canon/catalog-info.yaml | 9 + packages/canon/package.json | 86 + packages/canon/src/components/box/box.css.ts | 20 + packages/canon/src/components/box/box.mdx | 117 + .../canon/src/components/box/box.stories.tsx | 151 + packages/canon/src/components/box/box.tsx | 52 + .../canon/src/components/box/sprinkles.css.ts | 83 + .../canon/src/components/button/button.css.ts | 74 + .../src/components/button/button.stories.tsx | 93 + .../canon/src/components/button/button.tsx | 46 + .../canon/src/components/button/styles.css | 41 + packages/canon/src/docs/Home.mdx | 46 + packages/canon/src/docs/Theme.mdx | 100 + packages/canon/src/index.ts | 19 + packages/canon/src/storybook/chip/chip.css.ts | 29 + packages/canon/src/storybook/chip/index.tsx | 21 + .../src/storybook/columns/columns.css.ts | 23 + .../canon/src/storybook/columns/index.tsx | 31 + .../component-status/component-status.css.ts | 66 + .../src/storybook/component-status/index.tsx | 46 + .../canon/src/storybook/props-table/index.tsx | 74 + .../storybook/props-table/props-table.css.ts | 70 + packages/canon/src/storybook/table/index.tsx | 55 + .../canon/src/storybook/table/table.css.ts | 76 + packages/canon/src/storybook/text/index.tsx | 31 + packages/canon/src/storybook/text/text.css.ts | 33 + packages/canon/src/storybook/title/index.tsx | 38 + .../canon/src/storybook/title/title.css.ts | 47 + packages/canon/src/theme/styles.css | 19 + packages/canon/src/theme/theme.css | 33 + packages/canon/static/header.png | Bin 0 -> 49933 bytes packages/canon/tsconfig.json | 9 + packages/canon/tsconfig.node.json | 10 + yarn.lock | 2701 ++++++++++++++++- 38 files changed, 4334 insertions(+), 118 deletions(-) create mode 100644 packages/canon/.eslintrc.js create mode 100644 packages/canon/.storybook/main.ts create mode 100644 packages/canon/.storybook/preview.tsx create mode 100644 packages/canon/README.md create mode 100644 packages/canon/catalog-info.yaml create mode 100644 packages/canon/package.json create mode 100644 packages/canon/src/components/box/box.css.ts create mode 100644 packages/canon/src/components/box/box.mdx create mode 100644 packages/canon/src/components/box/box.stories.tsx create mode 100644 packages/canon/src/components/box/box.tsx create mode 100644 packages/canon/src/components/box/sprinkles.css.ts create mode 100644 packages/canon/src/components/button/button.css.ts create mode 100644 packages/canon/src/components/button/button.stories.tsx create mode 100644 packages/canon/src/components/button/button.tsx create mode 100644 packages/canon/src/components/button/styles.css create mode 100644 packages/canon/src/docs/Home.mdx create mode 100644 packages/canon/src/docs/Theme.mdx create mode 100644 packages/canon/src/index.ts create mode 100644 packages/canon/src/storybook/chip/chip.css.ts create mode 100644 packages/canon/src/storybook/chip/index.tsx create mode 100644 packages/canon/src/storybook/columns/columns.css.ts create mode 100644 packages/canon/src/storybook/columns/index.tsx create mode 100644 packages/canon/src/storybook/component-status/component-status.css.ts create mode 100644 packages/canon/src/storybook/component-status/index.tsx create mode 100644 packages/canon/src/storybook/props-table/index.tsx create mode 100644 packages/canon/src/storybook/props-table/props-table.css.ts create mode 100644 packages/canon/src/storybook/table/index.tsx create mode 100644 packages/canon/src/storybook/table/table.css.ts create mode 100644 packages/canon/src/storybook/text/index.tsx create mode 100644 packages/canon/src/storybook/text/text.css.ts create mode 100644 packages/canon/src/storybook/title/index.tsx create mode 100644 packages/canon/src/storybook/title/title.css.ts create mode 100644 packages/canon/src/theme/styles.css create mode 100644 packages/canon/src/theme/theme.css create mode 100644 packages/canon/static/header.png create mode 100644 packages/canon/tsconfig.json create mode 100644 packages/canon/tsconfig.node.json diff --git a/packages/canon/.eslintrc.js b/packages/canon/.eslintrc.js new file mode 100644 index 0000000000..85e103c8f1 --- /dev/null +++ b/packages/canon/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname), { + extends: ['plugin:storybook/recommended'], +}; + diff --git a/packages/canon/.storybook/main.ts b/packages/canon/.storybook/main.ts new file mode 100644 index 0000000000..b1e87159a3 --- /dev/null +++ b/packages/canon/.storybook/main.ts @@ -0,0 +1,41 @@ +import type { StorybookConfig } from '@storybook/react-webpack5'; +const { VanillaExtractPlugin } = require('@vanilla-extract/webpack-plugin'); +import { merge } from 'webpack-merge'; + +import { join, dirname } from 'path'; + +/** + * This function is used to resolve the absolute path of a package. + * It is needed in projects that use Yarn PnP or are set up within a monorepo. + */ +function getAbsolutePath(value: string): any { + return dirname(require.resolve(join(value, 'package.json'))); +} +const config: StorybookConfig = { + stories: [ + '../src/docs/**/*.mdx', + '../src/components/**/*.mdx', + '../src/components/**/*.stories.@(js|jsx|mjs|ts|tsx)', + ], + staticDirs: ['../static'], + addons: [ + getAbsolutePath('@storybook/addon-webpack5-compiler-swc'), + getAbsolutePath('@storybook/addon-onboarding'), + getAbsolutePath('@storybook/addon-essentials'), + getAbsolutePath('@chromatic-com/storybook'), + getAbsolutePath('@storybook/addon-interactions'), + // getAbsolutePath("@storybook/addon-styling-webpack") + ], + framework: { + name: getAbsolutePath('@storybook/react-webpack5'), + options: { + plugins: [new VanillaExtractPlugin()], + }, + }, + webpackFinal: config => { + return merge(config, { + plugins: [new VanillaExtractPlugin()], + }); + }, +}; +export default config; diff --git a/packages/canon/.storybook/preview.tsx b/packages/canon/.storybook/preview.tsx new file mode 100644 index 0000000000..05eea4b8ec --- /dev/null +++ b/packages/canon/.storybook/preview.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import type { Preview, ReactRenderer } from '@storybook/react'; +import { + withThemeByClassName, + withThemeByDataAttribute, +} from '@storybook/addon-themes'; + +import '../src/theme/styles.css'; + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + backgrounds: { + disable: true, + }, + }, + decorators: [ + withThemeByDataAttribute({ + themes: { + light: 'light', + dark: 'dark', + }, + defaultTheme: 'light', + }), + (Story, context) => { + const theme = context.globals.theme || 'light'; + const backgroundColor = theme === 'light' ? '#ffffff' : '#000000'; + + document.body.style.backgroundColor = backgroundColor; + + const docsStoryElements = document.getElementsByClassName('docs-story'); + Array.from(docsStoryElements).forEach(element => { + (element as HTMLElement).style.backgroundColor = backgroundColor; + }); + + return ; + }, + ], +}; + +export default preview; diff --git a/packages/canon/README.md b/packages/canon/README.md new file mode 100644 index 0000000000..a8bf36d7be --- /dev/null +++ b/packages/canon/README.md @@ -0,0 +1,12 @@ +# @backstage/canon + +_This package was created through the Backstage CLI_. + +## Installation + +Install the package via Yarn: + +```sh +cd # if within a monorepo +yarn add @backstage/canon +``` diff --git a/packages/canon/catalog-info.yaml b/packages/canon/catalog-info.yaml new file mode 100644 index 0000000000..37aa7b1caf --- /dev/null +++ b/packages/canon/catalog-info.yaml @@ -0,0 +1,9 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: backstage-canon + title: '@backstage/canon' +spec: + lifecycle: experimental + type: backstage-web-library + owner: maintainers diff --git a/packages/canon/package.json b/packages/canon/package.json new file mode 100644 index 0000000000..95fb5f0373 --- /dev/null +++ b/packages/canon/package.json @@ -0,0 +1,86 @@ +{ + "name": "@backstage/canon", + "version": "0.0.0", + "backstage": { + "role": "web-library" + }, + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "keywords": [ + "backstage" + ], + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/canon" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "src/index.ts", + "types": "src/index.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "test": "backstage-cli package test", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build" + }, + "dependencies": { + "@base_ui/react": "^1.0.0-alpha.3", + "@vanilla-extract/css": "^1.16.0", + "@vanilla-extract/dynamic": "^2.1.2", + "@vanilla-extract/recipes": "^0.5.5", + "@vanilla-extract/sprinkles": "^1.6.3" + }, + "devDependencies": { + "@backstage/cli": "workspace:^", + "@chromatic-com/storybook": "^3.2.2", + "@eslint/js": "^9.13.0", + "@storybook/addon-essentials": "^8.4.4", + "@storybook/addon-interactions": "^8.4.4", + "@storybook/addon-onboarding": "^8.4.4", + "@storybook/addon-styling-webpack": "^1.0.1", + "@storybook/addon-themes": "^8.4.4", + "@storybook/addon-webpack5-compiler-swc": "^1.0.5", + "@storybook/blocks": "^8.4.4", + "@storybook/react": "^8.4.4", + "@storybook/react-webpack5": "^8.4.4", + "@storybook/test": "^8.4.4", + "@testing-library/jest-dom": "^6.0.0", + "@types/react": "^18.3.11", + "@types/react-dom": "^18.3.1", + "@vanilla-extract/rollup-plugin": "^1.3.10", + "@vanilla-extract/webpack-plugin": "^2.3.14", + "eslint": "^9.13.0", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.13", + "eslint-plugin-storybook": "^0.11.0", + "globals": "^15.11.0", + "mini-css-extract-plugin": "^2.9.2", + "storybook": "^8.4.4", + "typescript": "~5.6.2", + "typescript-eslint": "^8.10.0", + "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", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", + "react-router-dom": "6.0.0-beta.0 || ^6.3.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } +} diff --git a/packages/canon/src/components/box/box.css.ts b/packages/canon/src/components/box/box.css.ts new file mode 100644 index 0000000000..f6642df0a4 --- /dev/null +++ b/packages/canon/src/components/box/box.css.ts @@ -0,0 +1,20 @@ +/* + * 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 { style } from '@vanilla-extract/css'; + +export const base = style({ + fontFamily: 'var(--canon-font-sans)', +}); diff --git a/packages/canon/src/components/box/box.mdx b/packages/canon/src/components/box/box.mdx new file mode 100644 index 0000000000..6b2264db6f --- /dev/null +++ b/packages/canon/src/components/box/box.mdx @@ -0,0 +1,117 @@ +import { Canvas, Meta, Unstyled } from '@storybook/blocks'; +import * as BoxStories from './box.stories'; +import { PropsTable } from '../../storybook/props-table'; +import { Chip } from '../../storybook/chip'; +import * as Table from '../../storybook/table'; + + + +# Box + +Box is the lowest-level component in Canon. We use it internally to build all of our components. + + + + + + + + + Prop + Type + Default + Description + + + + + + background + + + string + + + transparent + + The background color of the box. + + + + display + + + block + flex + inline-block + inline-flex + + + block + + The display property of the box. + + + + padding + + + number + + + 0 + + The padding of the box. + + + + paddingX + + + number + + + 0 + + The horizontal padding of the box. + + + + paddingY + + + number + + + 0 + + The vertical padding of the box. + + + + paddingLeft + + + number + + + 0 + + The left padding of the box. + + + + paddingRight + + + number + + + 0 + + The right padding of the box. + + + + + diff --git a/packages/canon/src/components/box/box.stories.tsx b/packages/canon/src/components/box/box.stories.tsx new file mode 100644 index 0000000000..6de85ca178 --- /dev/null +++ b/packages/canon/src/components/box/box.stories.tsx @@ -0,0 +1,151 @@ +/* + * 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 React from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { Box } from './box'; + +const meta = { + title: 'Components/Box', + component: Box, + parameters: { + layout: 'centered', + }, + // tags: ['autodocs'], +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Basic: Story = { + render: () => ( + + Basic Box + + ), +}; + +export const Responsive: Story = { + render: () => ( + + Responsive Box + + ), +}; + +export const FlexContainer: Story = { + render: () => ( + + + Item 1 + + + Item 2 + + + Item 3 + + + ), +}; + +export const Nested: Story = { + render: () => ( + + + Header + + + + Sidebar + + + Main Content + + + + Footer + + + ), +}; + +export const Alignment: Story = { + render: () => ( + + + Centered Content + + + ), +}; + +// Example showing different spacing combinations +export const Spacing: Story = { + render: () => ( + + + Small Padding + + + Medium Padding + + + Large Padding + + + Mixed Padding + + + ), +}; + +// Example showing different display values +export const DisplayVariants: Story = { + render: () => ( + + + Display Block + + + Display Flex + + + Display Inline + + + ), +}; diff --git a/packages/canon/src/components/box/box.tsx b/packages/canon/src/components/box/box.tsx new file mode 100644 index 0000000000..561bf2c0f1 --- /dev/null +++ b/packages/canon/src/components/box/box.tsx @@ -0,0 +1,52 @@ +/* + * 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 { createElement } from 'react'; +import { sprinkles, Sprinkles } from './sprinkles.css'; +import { base } from './box.css'; + +type HTMLProperties = Omit< + React.AllHTMLAttributes, + keyof Sprinkles +>; + +type BoxProps = Sprinkles & + HTMLProperties & { + as?: keyof JSX.IntrinsicElements; + }; + +export const Box = ({ as = 'div', className, style, ...props }: BoxProps) => { + const sprinklesProps: Record = {}; + const nativeProps: Record = {}; + + // Split props between sprinkles and native HTML props + Object.entries(props).forEach(([key, value]) => { + if (value === undefined) return; + + if (sprinkles.properties.has(key as keyof Sprinkles)) { + sprinklesProps[key] = value; + } else { + nativeProps[key] = value; + } + }); + + const sprinklesClassName = sprinkles(sprinklesProps); + + return createElement(as, { + className: [base, sprinklesClassName, className].filter(Boolean).join(' '), + style, + ...nativeProps, + }); +}; diff --git a/packages/canon/src/components/box/sprinkles.css.ts b/packages/canon/src/components/box/sprinkles.css.ts new file mode 100644 index 0000000000..30ce3e0cdf --- /dev/null +++ b/packages/canon/src/components/box/sprinkles.css.ts @@ -0,0 +1,83 @@ +/* + * 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'; + +const space = { + none: 0, + small: '4px', + medium: '8px', + large: '16px', + // etc. +}; + +const colors = { + background: '#eff6ff', +}; + +const responsiveProperties = defineProperties({ + conditions: { + 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)' }, + }, + defaultCondition: 'xs', + properties: { + display: ['none', 'flex', 'block', 'inline'], + flexDirection: ['row', 'column'], + justifyContent: [ + 'stretch', + 'flex-start', + 'center', + 'flex-end', + 'space-around', + 'space-between', + ], + alignItems: ['stretch', 'flex-start', 'center', 'flex-end'], + paddingTop: space, + paddingBottom: space, + paddingLeft: space, + paddingRight: space, + // fontFamily: font, + gap: space, + // etc. + }, + shorthands: { + padding: ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'], + paddingX: ['paddingLeft', 'paddingRight'], + paddingY: ['paddingTop', 'paddingBottom'], + placeItems: ['justifyContent', 'alignItems'], + }, +}); + +const colorProperties = defineProperties({ + conditions: { + lightMode: {}, + darkMode: { '@media': '(prefers-color-scheme: dark)' }, + }, + defaultCondition: 'lightMode', + properties: { + color: colors, + background: colors, + }, +}); + +export const sprinkles = createSprinkles(responsiveProperties, colorProperties); + +// It's a good idea to export the Sprinkles type too +export type Sprinkles = Parameters[0]; diff --git a/packages/canon/src/components/button/button.css.ts b/packages/canon/src/components/button/button.css.ts new file mode 100644 index 0000000000..8ab3b663ae --- /dev/null +++ b/packages/canon/src/components/button/button.css.ts @@ -0,0 +1,74 @@ +/* + * 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 { recipe } from '@vanilla-extract/recipes'; +// import { vars } from '../../theme/themes.css'; + +export const button = recipe({ + base: { + all: 'unset', + display: 'inline-block', + userSelect: 'none', + fontFamily: 'var(--canon-font-sans)', + fontWeight: 600, + fontSize: '0.875rem', + lineHeight: '1.5', + padding: 0, + transition: 'all 150ms ease', + cursor: 'pointer', + }, + variants: { + variant: { + primary: { + backgroundColor: 'var(--button-primary-background-color)', + color: 'var(--button-primary-text-color)', + borderRadius: 'var(--button-primary-border-radius)', + border: `1px solid var(--button-primary-border-color)`, + '&:hover': { + backgroundColor: 'var(--button-primary-background-color-hover)', + borderColor: 'var(--button-primary-border-color-hover)', + }, + }, + secondary: { + backgroundColor: 'transparent', + color: 'var(--button-secondary-text-color)', + borderRadius: 'var(--button-secondary-border-radius)', + border: `1px solid var(--button-secondary-border-color)`, + '&:hover': { + backgroundColor: 'var(--button-secondary-background-color-hover)', + borderColor: 'var(--button-secondary-border-color-hover)', + }, + }, + }, + size: { + small: { + paddingLeft: '16px', + paddingRight: '16px', + height: 'var(--button-size-small)', + }, + medium: { + paddingLeft: '32px', + paddingRight: '32px', + height: 'var(--button-size-medium)', + }, + }, + disabled: { + true: { + opacity: 0.3, + cursor: 'not-allowed', + }, + }, + }, +}); diff --git a/packages/canon/src/components/button/button.stories.tsx b/packages/canon/src/components/button/button.stories.tsx new file mode 100644 index 0000000000..8a9d7f3845 --- /dev/null +++ b/packages/canon/src/components/button/button.stories.tsx @@ -0,0 +1,93 @@ +/* + * 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 React from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { Button } from './button'; + +const meta = { + title: 'Components/Button', + component: Button, + parameters: { + layout: 'centered', + }, + tags: ['autodocs'], + argTypes: { + size: { + control: 'select', + options: ['small', 'medium'], + }, + }, + args: { + size: 'medium', + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Primary: Story = { + args: { + children: 'Primary button', + }, +}; + +export const Secondary: Story = { + args: { + children: 'Secondary button', + variant: 'secondary', + }, +}; + +export const Sizes: Story = { + args: { + children: 'Button', + }, + render: args => ( +
+
+ ), +}; + +export const Disabled: Story = { + args: { + children: 'Button', + disabled: true, + }, +}; + +export const CustomTheme: Story = { + args: { + children: 'Custom Button', + }, + decorators: [ + Story => ( +
+ +
+ ), + ], +}; diff --git a/packages/canon/src/components/button/button.tsx b/packages/canon/src/components/button/button.tsx new file mode 100644 index 0000000000..1f8ccd0d11 --- /dev/null +++ b/packages/canon/src/components/button/button.tsx @@ -0,0 +1,46 @@ +/* + * 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 React from 'react'; +import { button } from './button.css'; +import { Box } from '../box/box'; + +export interface ButtonProps { + size?: 'small' | 'medium'; + variant?: 'primary' | 'secondary'; + children: React.ReactNode; + disabled?: boolean; +} + +export const Button = ({ + size = 'medium', + variant = 'primary', + children, + disabled, + ...props +}: ButtonProps) => { + return ( + + {children} + + ); +}; + +export default Button; diff --git a/packages/canon/src/components/button/styles.css b/packages/canon/src/components/button/styles.css new file mode 100644 index 0000000000..c308af07cb --- /dev/null +++ b/packages/canon/src/components/button/styles.css @@ -0,0 +1,41 @@ +:root { + --button-primary-background-color: #1ed760; + --button-primary-background-color-hover: #3be477; + --button-primary-background-color-active: #1abc54; + --button-primary-border-color: #1ed760; + --button-primary-border-color-hover: #3be477; + --button-primary-border-color-active: #1abc54; + --button-primary-text-color: #000; + --button-primary-border-radius: 9999px; + --button-secondary-background-color: transparent; + --button-secondary-background-color-hover: transparent; + --button-secondary-background-color-active: rgba(0, 0, 0, 0.03); + --button-secondary-border-color: #000; + --button-secondary-border-color-hover: #000; + --button-secondary-border-color-active: #000; + --button-secondary-text-color: #000; + --button-secondary-border-radius: 9999px; + --button-size-small: 32px; + --button-size-medium: 48px; +} + +[data-theme='dark'] { + --button-primary-background-color: #1ed760; + --button-primary-background-color-hover: #3be477; + --button-primary-background-color-active: #1abc54; + --button-primary-border-color: #1ed760; + --button-primary-border-color-hover: #3be477; + --button-primary-border-color-active: #1abc54; + --button-primary-text-color: #000; + --button-primary-border-radius: 9999px; + --button-secondary-background-color: transparent; + --button-secondary-background-color-hover: transparent; + --button-secondary-background-color-active: rgba(255, 255, 255, 0.1); + --button-secondary-border-color: #fff; + --button-secondary-border-color-hover: #fff; + --button-secondary-border-color-active: #fff; + --button-secondary-text-color: #fff; + --button-secondary-border-radius: 9999px; + --button-size-small: 32px; + --button-size-medium: 48px; +} diff --git a/packages/canon/src/docs/Home.mdx b/packages/canon/src/docs/Home.mdx new file mode 100644 index 0000000000..5e64c83ff7 --- /dev/null +++ b/packages/canon/src/docs/Home.mdx @@ -0,0 +1,46 @@ +import { Unstyled } from '@storybook/blocks'; +import { Text } from '../storybook/text'; +import { ComponentStatus } from '../storybook/component-status'; +import { Columns } from '../storybook/columns'; + +![Canon Header](header.png) + + + + + Welcome to the Canon, the new library for building Backstage plugins. This + project is still under active development but we will make sure to document + the API as we go. We are aiming to improve the general UI of Backstage and + plugins across Backstage. This new library will take time to build but we are + building it incrementally with not conflict with the existing theming system. + + + + + + + + + + + + + + + + + + + diff --git a/packages/canon/src/docs/Theme.mdx b/packages/canon/src/docs/Theme.mdx new file mode 100644 index 0000000000..ad25eb924e --- /dev/null +++ b/packages/canon/src/docs/Theme.mdx @@ -0,0 +1,100 @@ +import { Unstyled, Source } from '@storybook/blocks'; +import { Title } from '../storybook/title'; +import { Text } from '../storybook/text'; +import { Chip } from '../storybook/chip'; +import * as Table from '../storybook/table'; + + + +Theming + + Backstage ships with a default theme with a light and dark mode variant. The + themes are provided as a part of the{' '} + @backstage/canon package, + which also includes utilities for customizing the default theme, or creating + completely new themes. + + +Light & Dark modes + + By default we are supporting both light and dark modes. Each user can opt to + choose what theme they want to use or to use their system decide what theme to + use. If you want to create your own theme, you will have to set both light and + dark themes following the instructions below. If you only set one of them, the + other mode will fallback to the default theme. + + +How to create your own theme + + To create your own theme, you will have to define the variables below. To do + that, create a theme.css file and import it in your application. Here's an + example below on how to set your light and dark mode. + + + +Colors + + + + Prop + Description + + + + + + --canon-accent + + The accent color for the theme. + + + + --canon-bg + + The background color for the theme. + + + + +Typography + + Our theming is system is still a work in progress. We will be adding more + features and documentation over time. + + + diff --git a/packages/canon/src/index.ts b/packages/canon/src/index.ts new file mode 100644 index 0000000000..6c879078e1 --- /dev/null +++ b/packages/canon/src/index.ts @@ -0,0 +1,19 @@ +/* + * 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. + */ + +// Components +export { Button } from './components/button/button'; +export { Box } from './components/box/box'; diff --git a/packages/canon/src/storybook/chip/chip.css.ts b/packages/canon/src/storybook/chip/chip.css.ts new file mode 100644 index 0000000000..8b1e5ff134 --- /dev/null +++ b/packages/canon/src/storybook/chip/chip.css.ts @@ -0,0 +1,29 @@ +/* + * 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 { style } from '@vanilla-extract/css'; + +export const chipStyles = style({ + display: 'inline-flex', + alignItems: 'center', + fontFamily: 'Geist Mono, monospace', + fontSize: '13px', + borderRadius: '6px', + padding: '0px 8px', + height: '24px', + backgroundColor: '#eaf2fd', + color: '#2563eb', + marginRight: '4px', +}); diff --git a/packages/canon/src/storybook/chip/index.tsx b/packages/canon/src/storybook/chip/index.tsx new file mode 100644 index 0000000000..64589dd27c --- /dev/null +++ b/packages/canon/src/storybook/chip/index.tsx @@ -0,0 +1,21 @@ +/* + * 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 React from 'react'; +import { chipStyles } from './chip.css'; + +export const Chip = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; diff --git a/packages/canon/src/storybook/columns/columns.css.ts b/packages/canon/src/storybook/columns/columns.css.ts new file mode 100644 index 0000000000..09aa562568 --- /dev/null +++ b/packages/canon/src/storybook/columns/columns.css.ts @@ -0,0 +1,23 @@ +/* + * 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 { style } from '@vanilla-extract/css'; + +export const styles = style({ + display: 'grid', + gridTemplateColumns: 'repeat(2, 1fr)', + rowGap: '20px', + columnGap: '80px', +}); diff --git a/packages/canon/src/storybook/columns/index.tsx b/packages/canon/src/storybook/columns/index.tsx new file mode 100644 index 0000000000..07ff311821 --- /dev/null +++ b/packages/canon/src/storybook/columns/index.tsx @@ -0,0 +1,31 @@ +/* + * 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 React from 'react'; +import { styles } from './columns.css'; + +export const Columns = ({ + children, + style, +}: { + children: React.ReactNode; + style?: React.CSSProperties; +}) => { + return ( +
+ {children} +
+ ); +}; diff --git a/packages/canon/src/storybook/component-status/component-status.css.ts b/packages/canon/src/storybook/component-status/component-status.css.ts new file mode 100644 index 0000000000..56f553a132 --- /dev/null +++ b/packages/canon/src/storybook/component-status/component-status.css.ts @@ -0,0 +1,66 @@ +/* + * 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 { style } from '@vanilla-extract/css'; +import { recipe } from '@vanilla-extract/recipes'; + +export const container = style({ + display: 'flex', + justifyContent: 'space-between', +}); + +export const title = style({ + color: '#3b59ff', + fontFamily: '"Geist", sans-serif', + fontSize: '16px', + fontWeight: '400', + textDecoration: 'none', +}); + +export const pill = recipe({ + base: { + fontFamily: '"Geist", sans-serif', + display: 'inline-flex', + alignItems: 'center', + color: '#000', + borderRadius: '40px', + padding: '0px 8px', + height: '24px', + fontSize: '12px', + fontWeight: '600', + borderStyle: 'solid', + borderWidth: '1px', + marginLeft: '8px', + }, + variants: { + status: { + notStarted: { + backgroundColor: '#F2F2F2', + borderColor: '#CDCDCD', + color: '#888888', + }, + inProgress: { + backgroundColor: '#FFF2B9', + borderColor: '#FFD000', + color: '#D79927', + }, + done: { + backgroundColor: '#D7F9D7', + borderColor: '#4ED14A', + color: '#3A9837', + }, + }, + }, +}); diff --git a/packages/canon/src/storybook/component-status/index.tsx b/packages/canon/src/storybook/component-status/index.tsx new file mode 100644 index 0000000000..93d53341d9 --- /dev/null +++ b/packages/canon/src/storybook/component-status/index.tsx @@ -0,0 +1,46 @@ +/* + * 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 React from 'react'; +import { container, pill, title } from './component-status.css'; + +export const ComponentStatus = ({ + name, + status = 'notStarted', + style, + link, +}: { + name: string; + status: 'notStarted' | 'inProgress' | 'done'; + style?: React.CSSProperties; + link?: string; +}) => { + return ( +
+ {link ? ( + + {name} + + ) : ( + {name} + )} + + {status === 'notStarted' && 'Not Started'} + {status === 'inProgress' && 'In Progress'} + {status === 'done' && 'Done'} + +
+ ); +}; diff --git a/packages/canon/src/storybook/props-table/index.tsx b/packages/canon/src/storybook/props-table/index.tsx new file mode 100644 index 0000000000..96411aec0e --- /dev/null +++ b/packages/canon/src/storybook/props-table/index.tsx @@ -0,0 +1,74 @@ +/* + * 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 React from 'react'; +import { + tableStyles, + cellStyles, + headerCellStyles, + rowStyles, + wrapperStyles, + chipStyles, + headerRowStyles, + typeStyles, +} from './props-table.css'; + +type PropsTableData = { + prop: string; + type: string | string[]; + default: string; + description: string; +}; + +export const PropsTable = ({ data }: { data: PropsTableData[] }) => { + return ( +
+ + + + + + + + + + + {data.map(item => ( + + + + + + + ))} + +
PropTypeDefaultDescription
+ {item.prop} + +
+ {Array.isArray(item.type) ? ( + item.type.map(type => ( + {type} + )) + ) : ( + {item.type} + )} +
+
+ {item.default} + {item.description}
+
+ ); +}; diff --git a/packages/canon/src/storybook/props-table/props-table.css.ts b/packages/canon/src/storybook/props-table/props-table.css.ts new file mode 100644 index 0000000000..183081eb9d --- /dev/null +++ b/packages/canon/src/storybook/props-table/props-table.css.ts @@ -0,0 +1,70 @@ +/* + * 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 { style } from '@vanilla-extract/css'; + +export const wrapperStyles = style({ + border: '1px solid #e7e7e7', + borderRadius: '4px', + overflow: 'hidden', +}); + +export const tableStyles = style({ + width: '100%', + margin: '0 !important', + padding: '0 !important', +}); + +export const cellStyles = style({ + padding: '12px 16px !important', + border: 'none !important', + textAlign: 'left', + backgroundColor: 'white !important', +}); + +export const headerCellStyles = style({ + backgroundColor: '#f5f5f5 !important', + fontWeight: 'bold', +}); + +export const rowStyles = style({ + border: 'none !important', + borderBottom: '1px solid #e7e7e7 !important', + selectors: { + '&:last-child': { + borderBottom: 'none !important', + }, + }, +}); + +export const chipStyles = style({ + display: 'inline-block', + fontSize: '14px !important', + border: '1px solid #e7e7e7', + borderRadius: '6px', + padding: '0px 6px', + height: '24px', +}); + +export const headerRowStyles = style({ + borderBottom: '1px solid #e7e7e7 !important', +}); + +export const typeStyles = style({ + display: 'flex', + flexWrap: 'wrap', + flexDirection: 'row', + gap: '8px', +}); diff --git a/packages/canon/src/storybook/table/index.tsx b/packages/canon/src/storybook/table/index.tsx new file mode 100644 index 0000000000..1aaa3814cf --- /dev/null +++ b/packages/canon/src/storybook/table/index.tsx @@ -0,0 +1,55 @@ +/* + * 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 React from 'react'; +import { + cellStyles, + headerCellStyles, + tableStyles, + wrapperStyles, + rowStyles, +} from './table.css'; + +export const Root = ({ children }: { children: React.ReactNode }) => { + return ( +
+ {children}
+
+ ); +}; + +export const Header = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const Body = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const HeaderRow = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const HeaderCell = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const Row = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const Cell = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; diff --git a/packages/canon/src/storybook/table/table.css.ts b/packages/canon/src/storybook/table/table.css.ts new file mode 100644 index 0000000000..58b388e2a2 --- /dev/null +++ b/packages/canon/src/storybook/table/table.css.ts @@ -0,0 +1,76 @@ +/* + * 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 { style } from '@vanilla-extract/css'; + +export const wrapperStyles = style({ + border: '1px solid #e7e7e7', + borderRadius: '4px', + overflow: 'hidden', +}); + +export const tableStyles = style({ + width: '100%', + margin: '0 !important', + padding: '0 !important', + borderSpacing: '0px', + borderCollapse: 'collapse', +}); + +export const cellStyles = style({ + padding: '12px 16px !important', + border: 'none !important', + textAlign: 'left', + backgroundColor: 'white !important', + fontFamily: '"Geist", sans-serif', + fontSize: '16px', + fontWeight: '300', +}); + +export const headerRowStyles = style({ + borderBottom: '1px solid #e7e7e7', +}); + +export const headerCellStyles = style({ + backgroundColor: '#f5f5f5 !important', + borderBottom: '1px solid #e7e7e7 !important', + fontWeight: '500', +}); + +export const rowStyles = style({ + border: 'none', + borderBottom: '1px solid #e7e7e7', + selectors: { + '&:last-child': { + borderBottom: 'none', + }, + }, +}); + +export const chipStyles = style({ + display: 'inline-block', + fontSize: '14px !important', + border: '1px solid #e7e7e7', + borderRadius: '6px', + padding: '0px 6px', + height: '24px', +}); + +export const typeStyles = style({ + display: 'flex', + flexWrap: 'wrap', + flexDirection: 'row', + gap: '8px', +}); diff --git a/packages/canon/src/storybook/text/index.tsx b/packages/canon/src/storybook/text/index.tsx new file mode 100644 index 0000000000..875608a9ae --- /dev/null +++ b/packages/canon/src/storybook/text/index.tsx @@ -0,0 +1,31 @@ +/* + * 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 React from 'react'; +import { textStyles } from './text.css'; + +export const Text = ({ + children, + style, +}: { + children: React.ReactNode; + style?: React.CSSProperties; +}) => { + return ( +
+ {children} +
+ ); +}; diff --git a/packages/canon/src/storybook/text/text.css.ts b/packages/canon/src/storybook/text/text.css.ts new file mode 100644 index 0000000000..fb6f648655 --- /dev/null +++ b/packages/canon/src/storybook/text/text.css.ts @@ -0,0 +1,33 @@ +/* + * 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 { globalStyle, style } from '@vanilla-extract/css'; + +export const textStyles = style({ + fontFamily: '"Geist", sans-serif', + fontSize: '18px', + lineHeight: '28px', + margin: '0', + fontWeight: '300', + paddingBottom: '16px', +}); + +globalStyle(`${textStyles} p`, { + fontFamily: '"Geist", sans-serif', + fontSize: '18px', + lineHeight: '28px', + margin: '0', + fontWeight: '300', +}); diff --git a/packages/canon/src/storybook/title/index.tsx b/packages/canon/src/storybook/title/index.tsx new file mode 100644 index 0000000000..8c43293990 --- /dev/null +++ b/packages/canon/src/storybook/title/index.tsx @@ -0,0 +1,38 @@ +/* + * 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 React from 'react'; +import { titleStyles } from './title.css'; + +export const Title = ({ + children, + style, + type = 'h1', +}: { + children: React.ReactNode; + style?: React.CSSProperties; + type?: 'h1' | 'h2' | 'h3'; +}) => { + let Component = 'h1'; + if (type === 'h1') Component = 'h1'; + if (type === 'h2') Component = 'h2'; + if (type === 'h3') Component = 'h3'; + + return React.createElement(Component, { + className: titleStyles({ type }), + style, + children, + }); +}; diff --git a/packages/canon/src/storybook/title/title.css.ts b/packages/canon/src/storybook/title/title.css.ts new file mode 100644 index 0000000000..7c49825206 --- /dev/null +++ b/packages/canon/src/storybook/title/title.css.ts @@ -0,0 +1,47 @@ +/* + * 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 { recipe } from '@vanilla-extract/recipes'; + +export const titleStyles = recipe({ + base: { + fontFamily: '"Geist", sans-serif', + margin: '0', + fontWeight: '500', + border: 'none', + }, + variants: { + type: { + h1: { + fontSize: '40px', + lineHeight: '48px', + marginBottom: '32px', + marginTop: '0px', + }, + h2: { + fontSize: '24px', + lineHeight: '32px', + marginBottom: '12px', + marginTop: '52px', + }, + h3: { + fontSize: '20px', + lineHeight: '28px', + marginBottom: '12px', + marginTop: '52px', + }, + }, + }, +}); diff --git a/packages/canon/src/theme/styles.css b/packages/canon/src/theme/styles.css new file mode 100644 index 0000000000..784fda6440 --- /dev/null +++ b/packages/canon/src/theme/styles.css @@ -0,0 +1,19 @@ +/* + * 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 + */ + +/* Geist font */ +@import url('https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&family=Geist:wght@100..900&display=swap'); + +/* Theme */ +@import './theme.css'; + +/* Components */ +@import '../components/button/styles.css'; diff --git a/packages/canon/src/theme/theme.css b/packages/canon/src/theme/theme.css new file mode 100644 index 0000000000..9b82fbaf87 --- /dev/null +++ b/packages/canon/src/theme/theme.css @@ -0,0 +1,33 @@ +/* Light theme */ +:root { + --canon-accent: #1ed760; + --canon-bg: #fff; + --canon-surface-1: #f5f5f5; + --canon-surface-2: #000; + --canon-outline: #666; + --canon-outline-focus: #ccc; + --canon-text-primary: #f0f0f0; + --canon-text-secondary: #666; + + --canon-font-sans: 'Geist', serif; + --canon-font-monospace: 'Monospace', monospace; + --canon-font-emoji: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; +} + +/* Dark theme */ +[data-theme='dark'] { + --canon-accent: #1ed760; + --canon-bg: #fff; + --canon-surface-1: #f5f5f5; + --canon-surface-2: #000; + --canon-outline: #666; + --canon-outline-focus: #ccc; + --canon-text-primary: #f0f0f0; + --canon-text-secondary: #666; + + --canon-font-sans: 'Geist', serif; + --canon-font-monospace: 'Monospace', monospace; + --canon-font-emoji: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; +} diff --git a/packages/canon/static/header.png b/packages/canon/static/header.png new file mode 100644 index 0000000000000000000000000000000000000000..45aadcf5b4c25b3a9a3741c625ce450ed34d6fc0 GIT binary patch literal 49933 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 V9XT{XLjkyt`ZMjPl`7Ei{|CaJ_DcW& literal 0 HcmV?d00001 diff --git a/packages/canon/tsconfig.json b/packages/canon/tsconfig.json new file mode 100644 index 0000000000..5ae9aeb62d --- /dev/null +++ b/packages/canon/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@backstage/cli/config/tsconfig.json", + "include": ["src"], + "exclude": ["node_modules"], + "compilerOptions": { + "outDir": "dist-types", + "rootDir": "." + } +} diff --git a/packages/canon/tsconfig.node.json b/packages/canon/tsconfig.node.json new file mode 100644 index 0000000000..f3cd7b7295 --- /dev/null +++ b/packages/canon/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + } +} diff --git a/yarn.lock b/yarn.lock index 7173f0462b..f18b26cae8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,6 +1,3 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - __metadata: version: 6 cacheKey: 8 @@ -1864,6 +1861,24 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": ^7.25.9 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.25.2": + version: 7.25.4 + resolution: "@babel/compat-data@npm:7.25.4" + checksum: b12a91d27c3731a4b0bdc9312a50b1911f41f7f728aaf0d4b32486e2257fd2cb2d3ea1a295e98449600c48f2c7883a3196ca77cda1cef7d97a10c2e83d037974 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.25.9": version: 7.26.2 resolution: "@babel/compat-data@npm:7.26.2" @@ -1871,6 +1886,36 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.25.9": + version: 7.26.2 + resolution: "@babel/compat-data@npm:7.26.2" + checksum: d52fae9b0dc59b409d6005ae6b172e89329f46d68136130065ebe923a156fc633e0f1c8600b3e319b9e0f99fd948f64991a5419e2e9431d00d9d235d5f7a7618 + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.19.6, @babel/core@npm:^7.24.7, @babel/core@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.26.0 + "@babel/generator": ^7.26.0 + "@babel/helper-compilation-targets": ^7.25.9 + "@babel/helper-module-transforms": ^7.26.0 + "@babel/helpers": ^7.26.0 + "@babel/parser": ^7.26.0 + "@babel/template": ^7.25.9 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.26.0 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: b296084cfd818bed8079526af93b5dfa0ba70282532d2132caf71d4060ab190ba26d3184832a45accd82c3c54016985a4109ab9118674347a7e5e9bc464894e6 + languageName: node + linkType: hard + "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @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" @@ -1894,6 +1939,55 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.18.9, @babel/core@npm:^7.23.9": + version: 7.26.0 + resolution: "@babel/core@npm:7.26.0" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.26.0 + "@babel/generator": ^7.26.0 + "@babel/helper-compilation-targets": ^7.25.9 + "@babel/helper-module-transforms": ^7.26.0 + "@babel/helpers": ^7.26.0 + "@babel/parser": ^7.26.0 + "@babel/template": ^7.25.9 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.26.0 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: b296084cfd818bed8079526af93b5dfa0ba70282532d2132caf71d4060ab190ba26d3184832a45accd82c3c54016985a4109ab9118674347a7e5e9bc464894e6 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.4, @babel/generator@npm:^7.7.2": + version: 7.25.5 + resolution: "@babel/generator@npm:7.25.5" + dependencies: + "@babel/parser": ^7.26.2 + "@babel/types": ^7.26.0 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^3.0.2 + checksum: 6ff850b7d6082619f8c2f518d993cf7254cfbaa20b026282cbef5c9b2197686d076a432b18e36c4d1a42721c016df4f77a8f62c67600775d9683621d534b91b4 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": + version: 7.26.2 + resolution: "@babel/generator@npm:7.26.2" + dependencies: + "@babel/parser": ^7.26.2 + "@babel/types": ^7.26.0 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^3.0.2 + checksum: 6ff850b7d6082619f8c2f518d993cf7254cfbaa20b026282cbef5c9b2197686d076a432b18e36c4d1a42721c016df4f77a8f62c67600775d9683621d534b91b4 + languageName: node + linkType: hard + "@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.7.2": version: 7.26.2 resolution: "@babel/generator@npm:7.26.2" @@ -1938,6 +2032,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-compilation-targets@npm:7.25.9" + dependencies: + "@babel/compat-data": ^7.25.9 + "@babel/helper-validator-option": ^7.25.9 + browserslist: ^4.24.0 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: 3af536e2db358b38f968abdf7d512d425d1018fef2f485d6f131a57a7bcaed32c606b4e148bb230e1508fa42b5b2ac281855a68eb78270f54698c48a83201b9b + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.25.0, @babel/helper-create-class-features-plugin@npm:^7.25.4": version: 7.25.4 resolution: "@babel/helper-create-class-features-plugin@npm:7.25.4" @@ -2031,6 +2138,29 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" + dependencies: + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 1b411ce4ca825422ef7065dffae7d8acef52023e51ad096351e3e2c05837e9bf9fca2af9ca7f28dc26d596a588863d0fedd40711a88e350b736c619a80e704e6 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" + dependencies: + "@babel/helper-module-imports": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + "@babel/traverse": ^7.25.9 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 942eee3adf2b387443c247a2c190c17c4fd45ba92a23087abab4c804f40541790d51ad5277e4b5b1ed8d5ba5b62de73857446b7742f835c18ebd350384e63917 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.26.0": version: 7.26.0 resolution: "@babel/helper-module-transforms@npm:7.26.0" @@ -2044,6 +2174,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" + dependencies: + "@babel/helper-module-imports": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + "@babel/traverse": ^7.25.9 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 942eee3adf2b387443c247a2c190c17c4fd45ba92a23087abab4c804f40541790d51ad5277e4b5b1ed8d5ba5b62de73857446b7742f835c18ebd350384e63917 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.22.5, @babel/helper-optimise-call-expression@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" @@ -2060,6 +2203,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-plugin-utils@npm:7.25.9" + checksum: e19ec8acf0b696756e6d84531f532c5fe508dce57aa68c75572a77798bd04587a844a9a6c8ea7d62d673e21fdc174d091c9097fb29aea1c1b49f9c6eaa80f022 + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.22.5, @babel/helper-remap-async-to-generator@npm:^7.22.9": version: 7.22.9 resolution: "@babel/helper-remap-async-to-generator@npm:7.22.9" @@ -2122,6 +2272,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.22.5, @babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.22.5, @babel/helper-validator-identifier@npm:^7.24.7, @babel/helper-validator-identifier@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-validator-identifier@npm:7.25.9" @@ -2129,6 +2286,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 5b85918cb1a92a7f3f508ea02699e8d2422fe17ea8e82acd445006c0ef7520fbf48e3dbcdaf7b0a1d571fc3a2715a29719e5226636cb6042e15fe6ed2a590944 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.22.5, @babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.22.5, @babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-validator-option@npm:7.25.9" @@ -2136,6 +2307,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.22.9": version: 7.22.10 resolution: "@babel/helper-wrap-function@npm:7.22.10" @@ -2169,6 +2347,18 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.0.0, @babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": ^7.24.7 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": version: 7.26.2 resolution: "@babel/parser@npm:7.26.2" @@ -2180,6 +2370,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/parser@npm:7.26.2" + dependencies: + "@babel/types": ^7.26.0 + bin: + parser: ./bin/babel-parser.js + checksum: c88b5ea0adf357ef909cdc2c31e284a154943edc59f63f6e8a4c20bf773a1b2f3d8c2205e59c09ca7cdad91e7466300114548876529277a80651b6436a48d5d9 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" @@ -2433,6 +2634,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.23.3": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": ^7.25.9 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0e9821e8ba7d660c36c919654e4144a70546942ae184e85b8102f2322451eae102cbfadbcadd52ce077a2b44b400ee52394c616feab7b5b9f791b910e933fd33 + languageName: node + linkType: hard + "@babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.25.4 resolution: "@babel/plugin-syntax-typescript@npm:7.25.4" @@ -3333,6 +3545,26 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.25.6, @babel/runtime@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/runtime@npm:7.26.0" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: c8e2c0504ab271b3467a261a8f119bf2603eb857a0d71e37791f4e3fae00f681365073cc79f141ddaa90c6077c60ba56448004ad5429d07ac73532be9f7cf28a + languageName: node + linkType: hard + +"@babel/template@npm:^7.22.5, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.3.3": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 103641fea19c7f4e82dc913aa6b6ac157112a96d7c724d513288f538b84bae04fb87b1f1e495ac1736367b1bc30e10f058b30208fb25f66038e1f1eb4e426472 + languageName: node + linkType: hard + "@babel/template@npm:^7.22.5, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": version: 7.25.9 resolution: "@babel/template@npm:7.25.9" @@ -3344,6 +3576,47 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" + dependencies: + "@babel/code-frame": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 103641fea19c7f4e82dc913aa6b6ac157112a96d7c724d513288f538b84bae04fb87b1f1e495ac1736367b1bc30e10f058b30208fb25f66038e1f1eb4e426472 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/traverse@npm:7.25.9" + dependencies: + "@babel/code-frame": ^7.25.9 + "@babel/generator": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/template": ^7.25.9 + "@babel/types": ^7.25.9 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 901d325662ff1dd9bc51de00862e01055fa6bc374f5297d7e3731f2f0e268bbb1d2141f53fa82860aa308ee44afdcf186a948f16c83153927925804b95a9594d + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.4, @babel/traverse@npm:^7.4.5": + version: 7.25.4 + resolution: "@babel/traverse@npm:7.25.4" + dependencies: + "@babel/code-frame": ^7.25.9 + "@babel/generator": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/template": ^7.25.9 + "@babel/types": ^7.25.9 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 901d325662ff1dd9bc51de00862e01055fa6bc374f5297d7e3731f2f0e268bbb1d2141f53fa82860aa308ee44afdcf186a948f16c83153927925804b95a9594d + languageName: node + linkType: hard + "@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.4, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.4.5": version: 7.25.9 resolution: "@babel/traverse@npm:7.25.9" @@ -3369,6 +3642,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.18.9, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" + dependencies: + "@babel/helper-string-parser": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + checksum: a3dd37dabac693018872da96edb8c1843a605c1bfacde6c3f504fba79b972426a6f24df70aa646356c0c1b19bdd2c722c623c684a996c002381071680602280d + languageName: node + linkType: hard + "@backstage-community/plugin-explore-common@npm:^0.0.7": version: 0.0.7 resolution: "@backstage-community/plugin-explore-common@npm:0.0.7" @@ -3816,6 +4099,54 @@ __metadata: languageName: unknown linkType: soft +"@backstage/canon@workspace:packages/canon": + version: 0.0.0-use.local + resolution: "@backstage/canon@workspace:packages/canon" + dependencies: + "@backstage/cli": "workspace:^" + "@base_ui/react": ^1.0.0-alpha.3 + "@chromatic-com/storybook": ^3.2.2 + "@eslint/js": ^9.13.0 + "@storybook/addon-essentials": ^8.4.4 + "@storybook/addon-interactions": ^8.4.4 + "@storybook/addon-onboarding": ^8.4.4 + "@storybook/addon-styling-webpack": ^1.0.1 + "@storybook/addon-themes": ^8.4.4 + "@storybook/addon-webpack5-compiler-swc": ^1.0.5 + "@storybook/blocks": ^8.4.4 + "@storybook/react": ^8.4.4 + "@storybook/react-webpack5": ^8.4.4 + "@storybook/test": ^8.4.4 + "@testing-library/jest-dom": ^6.0.0 + "@types/react": ^18.3.11 + "@types/react-dom": ^18.3.1 + "@vanilla-extract/css": ^1.16.0 + "@vanilla-extract/dynamic": ^2.1.2 + "@vanilla-extract/recipes": ^0.5.5 + "@vanilla-extract/rollup-plugin": ^1.3.10 + "@vanilla-extract/sprinkles": ^1.6.3 + "@vanilla-extract/webpack-plugin": ^2.3.14 + eslint: ^9.13.0 + eslint-plugin-react-hooks: ^5.0.0 + eslint-plugin-react-refresh: ^0.4.13 + eslint-plugin-storybook: ^0.11.0 + globals: ^15.11.0 + mini-css-extract-plugin: ^2.9.2 + storybook: ^8.4.4 + typescript: ~5.6.2 + typescript-eslint: ^8.10.0 + 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 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + peerDependenciesMeta: + "@types/react": + optional: true + languageName: unknown + linkType: soft + "@backstage/catalog-client@npm:^1.8.0": version: 1.8.0 resolution: "@backstage/catalog-client@npm:1.8.0" @@ -8894,6 +9225,30 @@ __metadata: languageName: node linkType: hard +"@base_ui/react@npm:^1.0.0-alpha.3": + version: 1.0.0-alpha.3 + resolution: "@base_ui/react@npm:1.0.0-alpha.3" + dependencies: + "@babel/runtime": ^7.25.6 + "@floating-ui/react": ^0.26.24 + "@floating-ui/react-dom": ^2.1.2 + "@floating-ui/utils": ^0.2.8 + "@mui/types": ^7.2.17 + "@mui/utils": ^6.1.1 + clsx: ^2.1.1 + prop-types: ^15.8.1 + use-sync-external-store: ^1.2.2 + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: c725386d8a6cb351742751a115dc3f06d6bf910470912457bb184646dc3890e3a3a971a1364ca2219192524a9cfbb96adc57339c2d54b931342ce705ce5ac220 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -9170,6 +9525,21 @@ __metadata: languageName: node linkType: hard +"@chromatic-com/storybook@npm:^3.2.2": + version: 3.2.2 + resolution: "@chromatic-com/storybook@npm:3.2.2" + dependencies: + chromatic: ^11.15.0 + filesize: ^10.0.12 + jsonfile: ^6.1.0 + react-confetti: ^6.1.0 + strip-ansi: ^7.1.0 + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 8f1d03b32e131d391d41913b346d3898e5f2661c54dbe057f05fb1bce2d9b94581942bc5f90efe599b819d1f05d92c50a9be1e0cba2962be797f9a9551b568da + languageName: node + linkType: hard + "@codemirror/autocomplete@npm:^6.0.0": version: 6.3.0 resolution: "@codemirror/autocomplete@npm:6.3.0" @@ -9393,7 +9763,7 @@ __metadata: languageName: node linkType: hard -"@emotion/hash@npm:^0.9.1, @emotion/hash@npm:^0.9.2": +"@emotion/hash@npm:^0.9.0, @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 @@ -9544,6 +9914,13 @@ __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" @@ -9558,6 +9935,13 @@ __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" @@ -9572,6 +9956,13 @@ __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" @@ -9586,6 +9977,13 @@ __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" @@ -9600,6 +9998,13 @@ __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" @@ -9614,6 +10019,13 @@ __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" @@ -9628,6 +10040,13 @@ __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" @@ -9642,6 +10061,13 @@ __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" @@ -9656,6 +10082,13 @@ __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" @@ -9670,6 +10103,13 @@ __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" @@ -9684,6 +10124,13 @@ __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" @@ -9698,6 +10145,13 @@ __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" @@ -9712,6 +10166,13 @@ __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" @@ -9726,6 +10187,13 @@ __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" @@ -9740,6 +10208,13 @@ __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" @@ -9754,6 +10229,13 @@ __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" @@ -9768,6 +10250,13 @@ __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" @@ -9782,6 +10271,13 @@ __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" @@ -9789,6 +10285,13 @@ __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" @@ -9803,6 +10306,13 @@ __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" @@ -9817,6 +10327,13 @@ __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" @@ -9831,6 +10348,13 @@ __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" @@ -9845,6 +10369,13 @@ __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" @@ -9859,6 +10390,13 @@ __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" @@ -9877,6 +10415,13 @@ __metadata: languageName: node linkType: hard +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 + languageName: node + linkType: hard + "@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": version: 4.8.1 resolution: "@eslint-community/regexpp@npm:4.8.1" @@ -9884,6 +10429,24 @@ __metadata: languageName: node linkType: hard +"@eslint/config-array@npm:^0.19.0": + version: 0.19.0 + resolution: "@eslint/config-array@npm:0.19.0" + dependencies: + "@eslint/object-schema": ^2.1.4 + debug: ^4.3.1 + minimatch: ^3.1.2 + checksum: ceeddd3733316cbc7f1e61fc2906fedeaefdf1b3cf363726714dea0e9dece378a2b233cb6429d7d87534707a1dd2e5efb0197749553834ee30aee817820a71aa + languageName: node + linkType: hard + +"@eslint/core@npm:^0.9.0": + version: 0.9.0 + resolution: "@eslint/core@npm:0.9.0" + checksum: ea8ded3eba82d9451eca7e989c4ebf1dca95bc705e70cd2f3e55cc576e851183778344632de410d8cd9f85e862fd88fb8fda510aad00698765aec3110533af82 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^2.1.4": version: 2.1.4 resolution: "@eslint/eslintrc@npm:2.1.4" @@ -9901,6 +10464,23 @@ __metadata: languageName: node linkType: hard +"@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 + espree: ^10.0.1 + globals: ^14.0.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: c898e4d12f4c9a79a61ee3c91e38eea5627a04e021cb749191e8537445858bfe32f810eca0cb2dc9902b8ad8b65ca07ef7221dc4bad52afe60cbbf50ec56c236 + languageName: node + linkType: hard + "@eslint/js@npm:8.57.1": version: 8.57.1 resolution: "@eslint/js@npm:8.57.1" @@ -9908,6 +10488,29 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:9.15.0, @eslint/js@npm:^9.13.0": + version: 9.15.0 + resolution: "@eslint/js@npm:9.15.0" + checksum: 8b2aa35b62c1969c5e3aa5e33b4e072cc450b95ee9bc08b5a84aa5cbed10a01a9a8f0463b8bb3768ceeb5abfaa82abfb95650061338c3b467835757b62ffc4ba + 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 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.3": + version: 0.2.3 + resolution: "@eslint/plugin-kit@npm:0.2.3" + dependencies: + levn: ^0.4.1 + checksum: b93b9c3f5b1722d09cc4e609abd4510130f659f70f6417b68ac7c4ad9fbf9e3d4f0ef5b6f2bad106eb8c1c1b2146bd0391e0a1c00ddeae46c917f175b8c0da4b + languageName: node + linkType: hard + "@faker-js/faker@npm:5.5.3": version: 5.5.3 resolution: "@faker-js/faker@npm:5.5.3" @@ -9931,6 +10534,25 @@ __metadata: languageName: node linkType: hard +"@floating-ui/core@npm:^1.6.0": + version: 1.6.8 + resolution: "@floating-ui/core@npm:1.6.8" + dependencies: + "@floating-ui/utils": ^0.2.8 + checksum: 82faa6ea9d57e466779324e51308d6d49c098fb9d184a08d9bb7f4fad83f08cc070fc491f8d56f0cad44a16215fb43f9f829524288413e6c33afcb17303698de + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.0.0": + version: 1.6.12 + resolution: "@floating-ui/dom@npm:1.6.12" + dependencies: + "@floating-ui/core": ^1.6.0 + "@floating-ui/utils": ^0.2.8 + checksum: 956514ed100c0c853e73ace9e3c877b7e535444d7c31326f687a7690d49cb1e59ef457e9c93b76141aea0d280e83ed5a983bb852718b62eea581f755454660f6 + languageName: node + linkType: hard + "@floating-ui/dom@npm:^1.6.1": version: 1.6.3 resolution: "@floating-ui/dom@npm:1.6.3" @@ -9953,6 +10575,32 @@ __metadata: languageName: node linkType: hard +"@floating-ui/react-dom@npm:^2.1.2": + version: 2.1.2 + resolution: "@floating-ui/react-dom@npm:2.1.2" + dependencies: + "@floating-ui/dom": ^1.0.0 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 25bb031686e23062ed4222a8946e76b3f9021d40a48437bd747233c4964a766204b8a55f34fa8b259839af96e60db7c6e3714d81f1de06914294f90e86ffbc48 + languageName: node + linkType: hard + +"@floating-ui/react@npm:^0.26.24": + version: 0.26.28 + resolution: "@floating-ui/react@npm:0.26.28" + dependencies: + "@floating-ui/react-dom": ^2.1.2 + "@floating-ui/utils": ^0.2.8 + tabbable: ^6.0.0 + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 1bfcccdb1f388ceb0075dc3e46934f4f04ef10bff2f971e1bf79067391c8729b366025caca0a42f5ca80854820a621a9edecbacdc046c33eb428f508fd6ce1f3 + languageName: node + linkType: hard + "@floating-ui/utils@npm:^0.2.0, @floating-ui/utils@npm:^0.2.1": version: 0.2.1 resolution: "@floating-ui/utils@npm:0.2.1" @@ -9960,6 +10608,13 @@ __metadata: languageName: node linkType: hard +"@floating-ui/utils@npm:^0.2.8": + version: 0.2.8 + resolution: "@floating-ui/utils@npm:0.2.8" + checksum: deb98bba017c4e073c7ad5740d4dec33a4d3e0942d412e677ac0504f3dade15a68fc6fd164d43c93c0bb0bcc5dc5015c1f4080dfb1a6161140fe660624f7c875 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -10570,6 +11225,23 @@ __metadata: languageName: node linkType: hard +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 611e0545146f55ddfdd5c20239cfb7911f9d0e28258787c4fc1a1f6214250830c9367aaaeace0096ed90b6739bee1e9c52ad5ba8adaf74ab8b449119303babfe + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" + dependencies: + "@humanfs/core": ^0.19.1 + "@humanwhocodes/retry": ^0.3.0 + checksum: f9cb52bb235f8b9c6fcff43a7e500669a38f8d6ce26593404a9b56365a1644e0ed60c720dc65ff6a696b1f85f3563ab055bb554ec8674f2559085ba840e47710 + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.13.0": version: 0.13.0 resolution: "@humanwhocodes/config-array@npm:0.13.0" @@ -10595,6 +11267,20 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 7e5517bb51dbea3e02ab6cacef59a8f4b0ca023fc4b0b8cbc40de0ad29f46edd50b897c6e7fba79366a0217e3f48e2da8975056f6c35cfe19d9cc48f1d03c1dd + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.1": + version: 0.4.1 + resolution: "@humanwhocodes/retry@npm:0.4.1" + checksum: f11167c28e8266faba470fd273cbaafe2827523492bc18c5623015adb7ed66f46b2e542e3d756fed9ca614300249267814220c2f5f03a59e07fdfa64fc14ad52 + languageName: node + linkType: hard + "@improbable-eng/grpc-web@npm:^0.14.0": version: 0.14.1 resolution: "@improbable-eng/grpc-web@npm:0.14.1" @@ -11104,6 +11790,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -11606,6 +12299,18 @@ __metadata: languageName: node linkType: hard +"@mdx-js/react@npm:^3.0.0": + version: 3.1.0 + resolution: "@mdx-js/react@npm:3.1.0" + dependencies: + "@types/mdx": ^2.0.0 + peerDependencies: + "@types/react": ">=16" + react: ">=16" + checksum: c5a9c495f43f498ece24a768762a1743abe2be33d050d7eab731beb754e631700547f039198c6262c998d9a443906bd78811c3fa38bc2fb37659848161dac331 + languageName: node + linkType: hard + "@microsoft/api-documenter@npm:^7.25.7": version: 7.25.14 resolution: "@microsoft/api-documenter@npm:7.25.14" @@ -12180,6 +12885,18 @@ __metadata: languageName: node linkType: hard +"@mui/types@npm:^7.2.17, @mui/types@npm:^7.2.19": + version: 7.2.19 + resolution: "@mui/types@npm:7.2.19" + peerDependencies: + "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: c3b5723e6f0861d47df834c57878f19347aefecdaf948cf9a25a64b73fbc75791430693d0f540b2bdc01bdfc605dc32bf4ba738113ec415aa9eaf002ce38f064 + languageName: node + linkType: hard + "@mui/utils@npm:^5.14.15, @mui/utils@npm:^5.16.6": version: 5.16.6 resolution: "@mui/utils@npm:5.16.6" @@ -12200,6 +12917,26 @@ __metadata: languageName: node linkType: hard +"@mui/utils@npm:^6.1.1": + version: 6.1.7 + resolution: "@mui/utils@npm:6.1.7" + dependencies: + "@babel/runtime": ^7.26.0 + "@mui/types": ^7.2.19 + "@types/prop-types": ^15.7.13 + clsx: ^2.1.1 + prop-types: ^15.8.1 + react-is: ^18.3.1 + 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: bfbbac129b9ff6626a21f1e74b390ea943c92c5756ab708c96f215083be3c5227d59ebea29b320c4b1bbde280160ebeb676b1fb996110197bd374765526f51a4 + languageName: node + linkType: hard + "@n1ru4l/push-pull-async-iterable-iterator@npm:^3.1.0": version: 3.1.0 resolution: "@n1ru4l/push-pull-async-iterable-iterator@npm:3.1.0" @@ -16853,6 +17590,504 @@ __metadata: languageName: node linkType: hard +"@storybook/addon-actions@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-actions@npm:8.4.4" + dependencies: + "@storybook/global": ^5.0.0 + "@types/uuid": ^9.0.1 + dequal: ^2.0.2 + polished: ^4.2.2 + uuid: ^9.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: 1d9df025ec0012e8ce8e529f877d1b0df21bae35fb3d9bb442d544826641710ee800a57699f0847e7b7f561b2c5f638cfbf0c7959e5b4e28a8e36dbf8031307f + languageName: node + linkType: hard + +"@storybook/addon-backgrounds@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-backgrounds@npm:8.4.4" + dependencies: + "@storybook/global": ^5.0.0 + memoizerific: ^1.11.3 + ts-dedent: ^2.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: ed094a4b62a5a0a68b11b88544969a3aa5ed9ea47b3e369c8f84d5b53ce0f88008912a790a3a8783a39b9698c5ca7d8089028a019b47d6f82fe43741151297fc + languageName: node + linkType: hard + +"@storybook/addon-controls@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-controls@npm:8.4.4" + dependencies: + "@storybook/global": ^5.0.0 + dequal: ^2.0.2 + ts-dedent: ^2.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: 46abe5cbd484c70fe757d99535157a07e75493a76b2c4a3aa08f48bb3e547330059d24ef978cd85933dd3b5602b9abc2836a12baef61ea521636d1cfa6585be3 + languageName: node + linkType: hard + +"@storybook/addon-docs@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-docs@npm:8.4.4" + dependencies: + "@mdx-js/react": ^3.0.0 + "@storybook/blocks": 8.4.4 + "@storybook/csf-plugin": 8.4.4 + "@storybook/react-dom-shim": 8.4.4 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + ts-dedent: ^2.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: 10154624ca94018b0a51b19915b05cde7953f22d84739e263360072fcd7e46dab94d041575e040148c8250fc4f78a0b46962eb317d7d4d256da27b1bdb513eee + languageName: node + linkType: hard + +"@storybook/addon-essentials@npm:^8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-essentials@npm:8.4.4" + dependencies: + "@storybook/addon-actions": 8.4.4 + "@storybook/addon-backgrounds": 8.4.4 + "@storybook/addon-controls": 8.4.4 + "@storybook/addon-docs": 8.4.4 + "@storybook/addon-highlight": 8.4.4 + "@storybook/addon-measure": 8.4.4 + "@storybook/addon-outline": 8.4.4 + "@storybook/addon-toolbars": 8.4.4 + "@storybook/addon-viewport": 8.4.4 + ts-dedent: ^2.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: c8dfe7be1eac6280e4ae801a33a02f99f47e0430920d22505b80fe8684eaabaa9c977a34f90c3265185f11ded930c5b29cdc11fbaa715eec57cab95ad4343750 + languageName: node + linkType: hard + +"@storybook/addon-highlight@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-highlight@npm:8.4.4" + dependencies: + "@storybook/global": ^5.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: d465e096de2cf5850b29a15dafd1e18f5f82905a164eef483aa40bfd6423aa6746dde1a01d25d71b711eed9cd24eed059874512fae174b758442c6060f1f667f + languageName: node + linkType: hard + +"@storybook/addon-interactions@npm:^8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-interactions@npm:8.4.4" + dependencies: + "@storybook/global": ^5.0.0 + "@storybook/instrumenter": 8.4.4 + "@storybook/test": 8.4.4 + polished: ^4.2.2 + ts-dedent: ^2.2.0 + peerDependencies: + storybook: ^8.4.4 + checksum: edd0086f06bef702bc13bfd6700dd771312f01a2f07c5019171865a24cdda44d154bf8ec5e8e57b317a281e2d2fed83ad483a6f08c138e2954e1939f4cc7fe87 + languageName: node + linkType: hard + +"@storybook/addon-measure@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-measure@npm:8.4.4" + dependencies: + "@storybook/global": ^5.0.0 + tiny-invariant: ^1.3.1 + peerDependencies: + storybook: ^8.4.4 + checksum: 2b47ac51d35365776f527ed316aad028b88b6e75471614dc17adb8f5efa5a6d2cf0718f6ab166f86fea4b1483db5871142a3e68130995fc422c787548dceed00 + languageName: node + linkType: hard + +"@storybook/addon-onboarding@npm:^8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-onboarding@npm:8.4.4" + dependencies: + react-confetti: ^6.1.0 + peerDependencies: + storybook: ^8.4.4 + checksum: 182ecbe65830132adbc4f87cde2c4dc562e0cd2417d60064d50f47e37e5b0259b3928c78f46cfe083bd485b51a27bdddaaa036bbfe8eb38ebe0f236e620923c1 + languageName: node + linkType: hard + +"@storybook/addon-outline@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-outline@npm:8.4.4" + dependencies: + "@storybook/global": ^5.0.0 + ts-dedent: ^2.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: 41fcccfa5d97271d014073a75d84aa04b8c626bd7f5403b50fa9d2782ae0c6f85a9ed5821f34f9c551db6e580a1e5d079a3c9c2698cf6a7e5dc909177da25299 + languageName: node + linkType: hard + +"@storybook/addon-styling-webpack@npm:^1.0.1": + version: 1.0.1 + resolution: "@storybook/addon-styling-webpack@npm:1.0.1" + dependencies: + "@storybook/node-logger": ^8.0.0-alpha.10 + peerDependencies: + webpack: ^5.0.0 + checksum: 3a507f9e944d1b23f97c201a59169c62e5d3fe7a750226a1fd13a2941d96a92543b87b1bcda3deb780831505fa75956b1ebd1838a7445495831c9a63f9b192b9 + languageName: node + linkType: hard + +"@storybook/addon-themes@npm:^8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-themes@npm:8.4.4" + dependencies: + ts-dedent: ^2.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: b7961e1b78cd7374b47b920dbbd475d3f626f5fa98a8c43e7dadf286ba8007f194e573375dc3e6dafbc952d749134d7e6f8db0ea28f361d5986ea2f34eb8a93b + languageName: node + linkType: hard + +"@storybook/addon-toolbars@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-toolbars@npm:8.4.4" + peerDependencies: + storybook: ^8.4.4 + checksum: fd18dd42833304dad2a87c27f8013187da2ebaaa219bec1bae0a269ae5c8e5696584ad5d49d8f3938dee8f29906c87b8b3db21a23aae7caacab4e878b579794f + languageName: node + linkType: hard + +"@storybook/addon-viewport@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/addon-viewport@npm:8.4.4" + dependencies: + memoizerific: ^1.11.3 + peerDependencies: + storybook: ^8.4.4 + checksum: da66546f70c437c2a0da184c76c587a526ee325931849e706518a06d598fb272ecf5838b9db52066e0548de5738efde54bd9c024a5ac626c5ca95ad1ec42bc42 + languageName: node + linkType: hard + +"@storybook/addon-webpack5-compiler-swc@npm:^1.0.5": + version: 1.0.5 + resolution: "@storybook/addon-webpack5-compiler-swc@npm:1.0.5" + dependencies: + "@swc/core": ^1.7.3 + swc-loader: ^0.2.3 + checksum: ed3177427f528cb1842bc57c9bc32501140c9a5bdf14926959cba024d38e5d6a24bccb6c977666e3a0a58dc7890feb92c616ec1f43bed33e691cbb1c5a575bd0 + languageName: node + linkType: hard + +"@storybook/blocks@npm:8.4.4, @storybook/blocks@npm:^8.4.4": + version: 8.4.4 + resolution: "@storybook/blocks@npm:8.4.4" + dependencies: + "@storybook/csf": ^0.1.11 + "@storybook/icons": ^1.2.12 + ts-dedent: ^2.0.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.4 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: 65a68772c0a43a3b82b4b3fce10c6e0e324482a26020d48d1906517a9e94fcee53b63b93dbba8a796969ca957bc6b1855ea09fc440734867922f6be546fee801 + languageName: node + linkType: hard + +"@storybook/builder-webpack5@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/builder-webpack5@npm:8.4.4" + dependencies: + "@storybook/core-webpack": 8.4.4 + "@types/node": ^22.0.0 + "@types/semver": ^7.3.4 + browser-assert: ^1.2.1 + case-sensitive-paths-webpack-plugin: ^2.4.0 + cjs-module-lexer: ^1.2.3 + constants-browserify: ^1.0.0 + css-loader: ^6.7.1 + es-module-lexer: ^1.5.0 + fork-ts-checker-webpack-plugin: ^8.0.0 + html-webpack-plugin: ^5.5.0 + magic-string: ^0.30.5 + path-browserify: ^1.0.1 + process: ^0.11.10 + semver: ^7.3.7 + style-loader: ^3.3.1 + terser-webpack-plugin: ^5.3.1 + ts-dedent: ^2.0.0 + url: ^0.11.0 + util: ^0.12.4 + util-deprecate: ^1.0.2 + webpack: 5 + webpack-dev-middleware: ^6.1.2 + webpack-hot-middleware: ^2.25.1 + webpack-virtual-modules: ^0.6.0 + peerDependencies: + storybook: ^8.4.4 + peerDependenciesMeta: + typescript: + optional: true + checksum: 5682f34de0fb6eb3179c773773b82407d3f23b8647a31628c51678f928f178286db1c81f9a01b8e357b11ddd8c1d59e50bd147c5dca059994eb6f9a0f204cb4d + languageName: node + linkType: hard + +"@storybook/components@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/components@npm:8.4.4" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: ca60bd5911669112af8d59e1b424e564a681e37c3f6ac59bceea69a08adddb478b965a7207f266591ec0daca74c8f674fdf3e21fdba5c794b80f13331667913a + languageName: node + linkType: hard + +"@storybook/core-webpack@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/core-webpack@npm:8.4.4" + dependencies: + "@types/node": ^22.0.0 + ts-dedent: ^2.0.0 + peerDependencies: + storybook: ^8.4.4 + checksum: 0e1c130af8893d3e1d76d212ca534e93f948e2a7e57ffa0cb7879eb49b9cf3a9a3306d690c0831bc9e9fe4ead3c9b3127eb9a01a229db18d811c7cb0b7356f7f + languageName: node + linkType: hard + +"@storybook/core@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/core@npm:8.4.4" + dependencies: + "@storybook/csf": ^0.1.11 + better-opn: ^3.0.2 + browser-assert: ^1.2.1 + esbuild: ^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 + esbuild-register: ^3.5.0 + jsdoc-type-pratt-parser: ^4.0.0 + process: ^0.11.10 + recast: ^0.23.5 + semver: ^7.6.2 + util: ^0.12.5 + ws: ^8.2.3 + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + checksum: c31995bca74d8c364046bc3f6bbe891331f8e779adaf4b113f57fd9f0c5007f23fa6bb338ffc7cb72ee39e8eec16001cd267de347f90b9aeeb42d6e712d6605e + languageName: node + linkType: hard + +"@storybook/csf-plugin@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/csf-plugin@npm:8.4.4" + dependencies: + unplugin: ^1.3.1 + peerDependencies: + storybook: ^8.4.4 + checksum: 109c54af8aabaa64c2eeb8b0b6f1379b3588b8c1c3d4da828e0a0c8f6479960d64adc4635e911484915ac651061aa15e218cde1dd7be27562ce8e6ba79be7cae + languageName: node + linkType: hard + +"@storybook/csf@npm:^0.1.11": + version: 0.1.11 + resolution: "@storybook/csf@npm:0.1.11" + dependencies: + type-fest: ^2.19.0 + checksum: ba2a265f62ad82a2853b069f77e974efe31bed263a640ca1dd8e6d7e194022018a67ad4a2587ae928f33ae45aaf6ffedd5925ba3fcf3fe5b7996667a918e22eb + languageName: node + linkType: hard + +"@storybook/global@npm:^5.0.0": + version: 5.0.0 + resolution: "@storybook/global@npm:5.0.0" + checksum: ede0ad35ec411fe31c61150dbd118fef344d1d0e72bf5d3502368e35cf68126f6b7ae4a0ab5e2ffe2f0baa3b4286f03ad069ba3e098e1725449ef08b7e154ba8 + languageName: node + linkType: hard + +"@storybook/icons@npm:^1.2.12": + version: 1.2.12 + resolution: "@storybook/icons@npm:1.2.12" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: a4c87cbfadfa1369680c4acc9d5ef90b9ff23e2ad603b6c0aba0dafe89780e5643c567160eb0544fe33f3b9f157adda2621ae45b4036ac001139a34926e00102 + languageName: node + linkType: hard + +"@storybook/instrumenter@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/instrumenter@npm:8.4.4" + dependencies: + "@storybook/global": ^5.0.0 + "@vitest/utils": ^2.1.1 + peerDependencies: + storybook: ^8.4.4 + checksum: ec76f93b04471536b76134de083483369f44e5414d766a7d183b50e588a846461d5bae59fb3f6a72621c65ee9b907b43c1fb47fcbe5e56040cdf7d8c33a9050a + languageName: node + linkType: hard + +"@storybook/manager-api@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/manager-api@npm:8.4.4" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 9eac4488f55e1860940e0e850a48f4278a7b6e6325c7381007447626715a8f8e52d6f876f6caaa2597787fb19c40a33f96d34b56558190f7be4772cac7805ebc + languageName: node + linkType: hard + +"@storybook/node-logger@npm:^8.0.0-alpha.10": + version: 8.4.4 + resolution: "@storybook/node-logger@npm:8.4.4" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 87b6a8cac7e49c0ae4f2bc4c545ed38520a0dcdff7bd6ca5cd3d6241ae13a9f00b6c9cdaf8c362bad7917ca0e36eb24c6a2441a606287f956223fa0061c8b34f + languageName: node + linkType: hard + +"@storybook/preset-react-webpack@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/preset-react-webpack@npm:8.4.4" + dependencies: + "@storybook/core-webpack": 8.4.4 + "@storybook/react": 8.4.4 + "@storybook/react-docgen-typescript-plugin": 1.0.6--canary.9.0c3f3b7.0 + "@types/node": ^22.0.0 + "@types/semver": ^7.3.4 + find-up: ^5.0.0 + magic-string: ^0.30.5 + react-docgen: ^7.0.0 + resolve: ^1.22.8 + semver: ^7.3.7 + tsconfig-paths: ^4.2.0 + webpack: 5 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.4 + peerDependenciesMeta: + typescript: + optional: true + checksum: 9fd0eb36925decb1625d2075ecb92deb35faf56b9de02da1a98e26036c021d11b13b0b991496f797042b03a292476bdeaac9fdfa2aa9d869b41ebf4912eb592d + languageName: node + linkType: hard + +"@storybook/preview-api@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/preview-api@npm:8.4.4" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: ad95ce132d598e8b13da70a319ffdfaf41e5f8629cfb4552a577f3624a92d4a168e1de5220fe7c735babbd5945dd2182448a910b246a458cddde2afe7378461e + languageName: node + linkType: hard + +"@storybook/react-docgen-typescript-plugin@npm:1.0.6--canary.9.0c3f3b7.0": + version: 1.0.6--canary.9.0c3f3b7.0 + resolution: "@storybook/react-docgen-typescript-plugin@npm:1.0.6--canary.9.0c3f3b7.0" + dependencies: + debug: ^4.1.1 + endent: ^2.0.1 + find-cache-dir: ^3.3.1 + flat-cache: ^3.0.4 + micromatch: ^4.0.2 + react-docgen-typescript: ^2.2.2 + tslib: ^2.0.0 + peerDependencies: + typescript: ">= 4.x" + webpack: ">= 4" + checksum: 38c59c1dd7f9cdf5533e5ffe1991034f563f8d33c59e3cd33fa86719c72f5fe922276fde50315dd24f23f225d1ad5f3a261ecf4c70e82522805d09782272faff + languageName: node + linkType: hard + +"@storybook/react-dom-shim@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/react-dom-shim@npm:8.4.4" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.4 + checksum: a1d556058ba1cb047113c60b7d0f44f00681635442ecf65cf9784907c735e44196f8daf77b5292de16f4e9a5f8c0f0342ceaf182081003945af08f721648308d + languageName: node + linkType: hard + +"@storybook/react-webpack5@npm:^8.4.4": + version: 8.4.4 + resolution: "@storybook/react-webpack5@npm:8.4.4" + dependencies: + "@storybook/builder-webpack5": 8.4.4 + "@storybook/preset-react-webpack": 8.4.4 + "@storybook/react": 8.4.4 + "@types/node": ^22.0.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.4 + typescript: ">= 4.2.x" + peerDependenciesMeta: + typescript: + optional: true + checksum: 9961fa3d3c49496a25e1b208882896cdd8b586f146ba246e7d95c4ac074d9f7a3fca47b30e15c5b0414e2662463055f79f51e5fbc7128914fecb0b5afe548193 + languageName: node + linkType: hard + +"@storybook/react@npm:8.4.4, @storybook/react@npm:^8.4.4": + version: 8.4.4 + resolution: "@storybook/react@npm:8.4.4" + dependencies: + "@storybook/components": 8.4.4 + "@storybook/global": ^5.0.0 + "@storybook/manager-api": 8.4.4 + "@storybook/preview-api": 8.4.4 + "@storybook/react-dom-shim": 8.4.4 + "@storybook/theming": 8.4.4 + peerDependencies: + "@storybook/test": 8.4.4 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.4 + typescript: ">= 4.2.x" + peerDependenciesMeta: + "@storybook/test": + optional: true + typescript: + optional: true + checksum: b155747739dcae8951b76f83938c032ab6a2e793e434dc738dd3d9e547e3d806efe76cecb2c4d0a1716bf83e54953f3f0a920dc501b687356457f522924cd943 + languageName: node + linkType: hard + +"@storybook/test@npm:8.4.4, @storybook/test@npm:^8.4.4": + version: 8.4.4 + resolution: "@storybook/test@npm:8.4.4" + dependencies: + "@storybook/csf": ^0.1.11 + "@storybook/global": ^5.0.0 + "@storybook/instrumenter": 8.4.4 + "@testing-library/dom": 10.4.0 + "@testing-library/jest-dom": 6.5.0 + "@testing-library/user-event": 14.5.2 + "@vitest/expect": 2.0.5 + "@vitest/spy": 2.0.5 + peerDependencies: + storybook: ^8.4.4 + checksum: 28cd3e1b26f5b2b411988f5f55d7bcb0d2e15909c0ed425d099a45d47ecd9cdb9104577083f00e5129283e0ea1a73916c3bb98d748651a9c586dd29eb3c0787c + languageName: node + linkType: hard + +"@storybook/theming@npm:8.4.4": + version: 8.4.4 + resolution: "@storybook/theming@npm:8.4.4" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 8a39c0c0c519a98491de3c8f29d3c9ab2d2bb5ee616933dd07aaed276cd46635e1b3019902b40dc073e7ee0679b5760234c920e455817a13e8d1d753811553ee + languageName: node + linkType: hard + "@sucrase/webpack-loader@npm:^2.0.0": version: 2.0.0 resolution: "@sucrase/webpack-loader@npm:2.0.0" @@ -17601,7 +18836,7 @@ __metadata: languageName: node linkType: hard -"@swc/core@npm:^1.3.46": +"@swc/core@npm:^1.3.46, @swc/core@npm:^1.7.3": version: 1.9.2 resolution: "@swc/core@npm:1.9.2" dependencies: @@ -17734,7 +18969,7 @@ __metadata: languageName: unknown linkType: soft -"@testing-library/dom@npm:^10.0.0": +"@testing-library/dom@npm:10.4.0, @testing-library/dom@npm:^10.0.0": version: 10.4.0 resolution: "@testing-library/dom@npm:10.4.0" dependencies: @@ -17750,6 +18985,21 @@ __metadata: languageName: node linkType: hard +"@testing-library/jest-dom@npm:6.5.0": + version: 6.5.0 + resolution: "@testing-library/jest-dom@npm:6.5.0" + dependencies: + "@adobe/css-tools": ^4.4.0 + aria-query: ^5.0.0 + chalk: ^3.0.0 + css.escape: ^1.5.1 + dom-accessibility-api: ^0.6.3 + lodash: ^4.17.21 + redent: ^3.0.0 + checksum: c2d14103ebe3358852ec527ff7512f64207a39932b2f7b6dff7e73ba91296b01a71bad9a9584b6ee010681380a906c1740af50470adc6db660e1c7585d012ebf + languageName: node + linkType: hard + "@testing-library/jest-dom@npm:^6.0.0": version: 6.6.3 resolution: "@testing-library/jest-dom@npm:6.6.3" @@ -17807,7 +19057,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/user-event@npm:^14.0.0": +"@testing-library/user-event@npm:14.5.2, @testing-library/user-event@npm:^14.0.0": version: 14.5.2 resolution: "@testing-library/user-event@npm:14.5.2" peerDependencies: @@ -17950,7 +19200,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.5": +"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.18.0, @types/babel__core@npm:^7.20.5": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -17991,6 +19241,15 @@ __metadata: languageName: node linkType: hard +"@types/babel__traverse@npm:^7.18.0": + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" + dependencies: + "@babel/types": ^7.20.7 + checksum: 2bdc65eb62232c2d5c1086adeb0c31e7980e6fd7e50a3483b4a724a1a1029c84d9cb59749cf8de612f9afa2bc14c85b8f50e64e21f8a4398fa77eb9059a4283c + languageName: node + linkType: hard + "@types/base64-stream@npm:^1.0.2": version: 1.0.5 resolution: "@types/base64-stream@npm:1.0.5" @@ -18291,6 +19550,13 @@ __metadata: languageName: node linkType: hard +"@types/doctrine@npm:^0.0.9": + version: 0.0.9 + resolution: "@types/doctrine@npm:0.0.9" + checksum: 3909eaca42e7386b2ab866f082b78da3e00718d2fa323597e254feb0556c678b41f2c490729067433630083ac9c806ec6ae1e146754f7f8ba7d3e43ed68d6500 + languageName: node + linkType: hard + "@types/dompurify@npm:^3.0.0, @types/dompurify@npm:^3.0.5": version: 3.0.5 resolution: "@types/dompurify@npm:3.0.5" @@ -18323,6 +19589,26 @@ __metadata: languageName: node linkType: hard +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "*" + "@types/estree": "*" + checksum: e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: c286e79707ab604b577cf8ce51d9bbb9780e3d6a68b38a83febe13fa05b8012c92de17c28532fac2b03d3c460123f5055d603a579685325246ca1c86828223e0 + languageName: node + linkType: hard + "@types/eslint@npm:^8.56.10": version: 8.56.12 resolution: "@types/eslint@npm:8.56.12" @@ -18333,7 +19619,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5, @types/estree@npm:^1.0.6": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 @@ -18752,6 +20038,13 @@ __metadata: languageName: node linkType: hard +"@types/mdx@npm:^2.0.0": + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 195137b548e75a85f0558bb1ca5088aff1c01ae0fc64454da06085b7513a043356d0bb51ed559d3cbc7ad724ccd8cef2a7d07d014b89a47a74dff8875ceb3b15 + languageName: node + linkType: hard + "@types/memcached@npm:^2.2.6": version: 2.2.10 resolution: "@types/memcached@npm:2.2.10" @@ -19095,7 +20388,7 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0, @types/prop-types@npm:^15.7.12, @types/prop-types@npm:^15.7.3": +"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0, @types/prop-types@npm:^15.7.12, @types/prop-types@npm:^15.7.13, @types/prop-types@npm:^15.7.3": version: 15.7.13 resolution: "@types/prop-types@npm:15.7.13" checksum: 8935cad87c683c665d09a055919d617fe951cb3b2d5c00544e3a913f861a2bd8d2145b51c9aa6d2457d19f3107ab40784c40205e757232f6a80cc8b1c815513c @@ -19283,6 +20576,13 @@ __metadata: languageName: node linkType: hard +"@types/resolve@npm:^1.20.2": + version: 1.20.6 + resolution: "@types/resolve@npm:1.20.6" + checksum: dc35f5517606b6687cd971c0281ac58bdee2c50c051b030f04647d3991688be2259c304ee97e5b5d4b9936072c36767eb5933b54611a407d6557972bb6fea4f6 + languageName: node + linkType: hard + "@types/responselike@npm:*, @types/responselike@npm:^1.0.0": version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" @@ -19331,7 +20631,7 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:7.5.8, @types/semver@npm:^7.1.0, @types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": +"@types/semver@npm:7.5.8, @types/semver@npm:^7.1.0, @types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4, @types/semver@npm:^7.5.0": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 @@ -19624,6 +20924,13 @@ __metadata: languageName: node linkType: hard +"@types/uuid@npm:^9.0.1": + version: 9.0.8 + resolution: "@types/uuid@npm:9.0.8" + checksum: b8c60b7ba8250356b5088302583d1704a4e1a13558d143c549c408bf8920535602ffc12394ede77f8a8083511b023704bc66d1345792714002bfa261b17c5275 + languageName: node + linkType: hard + "@types/vinyl@npm:^2.0.4": version: 2.0.6 resolution: "@types/vinyl@npm:2.0.6" @@ -19745,6 +21052,29 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.14.0" + dependencies: + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.14.0 + "@typescript-eslint/type-utils": 8.14.0 + "@typescript-eslint/utils": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + graphemer: ^1.4.0 + ignore: ^5.3.1 + natural-compare: ^1.4.0 + ts-api-utils: ^1.3.0 + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 5ba1dc4eef2fcf8edfe878a5f254ff2dde882f996cfc66312ccd66c54da701a7f3b79c27e3935569b428f1b397c5b3475cd9202ce253bc30aa343a70bfea2c03 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^6.12.0": version: 6.21.0 resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" @@ -19770,6 +21100,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/parser@npm:8.14.0" + dependencies: + "@typescript-eslint/scope-manager": 8.14.0 + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/typescript-estree": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 11a2c52efc5813e615c60d13a548e5c13d75a54ab359f64fa7a8d1739b3179ff98f716c6f7789efa293b24e7a1906db1a7331f8a32d8f6405115d50f557af7ea + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^6.7.2": version: 6.21.0 resolution: "@typescript-eslint/parser@npm:6.21.0" @@ -19808,6 +21156,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/scope-manager@npm:8.14.0" + dependencies: + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + checksum: 9c4011771e6795d00328ebfb70b1cdfc706139f0803244adf4bdf46bea5033f1508a0e19136f1d3743eb2c6b5b23d3af6de2b79db8317147c300f61a3335788e + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:8.5.0": version: 8.5.0 resolution: "@typescript-eslint/scope-manager@npm:8.5.0" @@ -19835,6 +21193,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/type-utils@npm:8.14.0" + dependencies: + "@typescript-eslint/typescript-estree": 8.14.0 + "@typescript-eslint/utils": 8.14.0 + debug: ^4.3.4 + ts-api-utils: ^1.3.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 5717b26ddf285be0f1caf7877592c58bff6dfe2ba184bb28cd9e8f1546f68557d5a5d8719cd402cfb5f228666a6c24f0713b06a102b05ebeb00fb82c7c4582ee + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -19849,6 +21222,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/types@npm:8.14.0" + checksum: 032f1adb483a7e306ba31042afbfc219ff8471458f33529e2a1124feb7b6bfad6c7feac5c4ff07320eda5d1019ac4aa634036716f16cf6e25d4fdf0f755764e1 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:8.5.0": version: 8.5.0 resolution: "@typescript-eslint/types@npm:8.5.0" @@ -19893,6 +21273,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.14.0" + dependencies: + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + debug: ^4.3.4 + fast-glob: ^3.3.2 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^1.3.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 9412bd801fb45dd3a778f030afd871e2c5010bbd7d4bf54cb2f6e2fecaabb7e2d94960e306737b8ad48a9a0a04297e43aee03741977ecceb3a713560f5927e5a + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.5.0": version: 8.5.0 resolution: "@typescript-eslint/typescript-estree@npm:8.5.0" @@ -19929,6 +21328,20 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.14.0, @typescript-eslint/utils@npm:^8.8.1": + version: 8.14.0 + resolution: "@typescript-eslint/utils@npm:8.14.0" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@typescript-eslint/scope-manager": 8.14.0 + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/typescript-estree": 8.14.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + checksum: 7c432f2e29f94e6d4a3303bf841f6e3fbbf708c697df4506c9037d0be6379090b0a6d1a077dda43a27850a6bd2bfd5cb523b15450e3025b301ce24ef41b19251 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:^5.62.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0" @@ -19981,6 +21394,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.14.0" + dependencies: + "@typescript-eslint/types": 8.14.0 + eslint-visitor-keys: ^3.4.3 + checksum: 5f1279bf7cd830ed96a2769b3f27d6102bce630fc4f72c03fee92d06c599ce4e35b9648d0643d7bc9f2613d6587104731c97126bb23805548717bf99854f1094 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:8.5.0": version: 8.5.0 resolution: "@typescript-eslint/visitor-keys@npm:8.5.0" @@ -20256,6 +21679,114 @@ __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.0": + version: 1.16.0 + resolution: "@vanilla-extract/css@npm:1.16.0" + 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: 2a0c32105be0a7de62d9271e91dcf53e937b0d72ac0f9f7d6ee6144dc07abe00758ffeafb8f5de21e45cd9ed8e94eb1d0463f6679fdc9385043fa821b81cf574 + languageName: node + linkType: hard + +"@vanilla-extract/dynamic@npm:^2.1.2": + version: 2.1.2 + resolution: "@vanilla-extract/dynamic@npm:2.1.2" + dependencies: + "@vanilla-extract/private": ^1.0.6 + checksum: ec6ec9b02c7ec8a9d60aebf63225fd3f930c06ad824321f03f683f1948eb6d4e554d934303da140b3230b4af2fa15bab494c6da2a3b9a172e4118c245b4f942a + languageName: node + linkType: hard + +"@vanilla-extract/integration@npm:^7.1.10": + version: 7.1.10 + resolution: "@vanilla-extract/integration@npm:7.1.10" + 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.0 + 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: cbf3cc21b59057f2528bf47f1d0c3ec23cdbc3c84c92debb9f39557f9db0f9c1dea269dbc3cff54456084d55fe9fd6ee184fd203d7d8b83f4e276aff7c1b29dd + 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/recipes@npm:^0.5.5": + version: 0.5.5 + resolution: "@vanilla-extract/recipes@npm:0.5.5" + peerDependencies: + "@vanilla-extract/css": ^1.0.0 + checksum: 8d2b4f8163369424226ec9a47e754002b8a095bcf86c1a60a91b2183f59508519bd31ed41baefc950ad7ca225d75b3184c3b84d3c741c5c60d91618dd70452aa + languageName: node + linkType: hard + +"@vanilla-extract/rollup-plugin@npm:^1.3.10": + version: 1.3.10 + resolution: "@vanilla-extract/rollup-plugin@npm:1.3.10" + dependencies: + "@vanilla-extract/integration": ^7.1.10 + peerDependencies: + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + checksum: 0e7a80a34d089c04bdbde59ae80c11b517558d0be559000eda4459b5d1c2e43e86bea39efeaccca07fad9f76c2b5bfa895af167302b06038d7a859b11b1543b4 + 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.14 + resolution: "@vanilla-extract/webpack-plugin@npm:2.3.14" + dependencies: + "@vanilla-extract/integration": ^7.1.10 + debug: ^4.3.1 + loader-utils: ^2.0.0 + picocolors: ^1.0.0 + peerDependencies: + webpack: ^4.30.0 || ^5.20.2 + checksum: fce78d63e7859456cb877642313a9680f69bedf0f1250bbd2f0d9472a938a1c8e6886959c630646dc89e6fb322d23c5491f705814b766046324d744ad0d5cfe1 + languageName: node + linkType: hard + "@vitejs/plugin-react@npm:^4.3.1": version: 4.3.4 resolution: "@vitejs/plugin-react@npm:4.3.4" @@ -20271,6 +21802,18 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/expect@npm:2.0.5" + dependencies: + "@vitest/spy": 2.0.5 + "@vitest/utils": 2.0.5 + chai: ^5.1.1 + tinyrainbow: ^1.2.0 + checksum: 0c65eb24c2fd9ef5735d1e65dc8fee59936e6cab1d6ab24a95e014b8337be5598242fceae4e8ec2974e2ae70a30c1906ad41208bf6de6cdf2043594cdb65e627 + languageName: node + linkType: hard + "@vitest/expect@npm:>1.6.0": version: 2.1.3 resolution: "@vitest/expect@npm:2.1.3" @@ -20283,6 +21826,15 @@ __metadata: languageName: node linkType: hard +"@vitest/pretty-format@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/pretty-format@npm:2.0.5" + dependencies: + tinyrainbow: ^1.2.0 + checksum: d60346001180e5bb3c53be4b4d0b6d9352648b066641d5aba7b97d7c97a8e252dc934204d58818330262a65f07127455fc5f3b5f7e3647c60f6ff302a725733b + languageName: node + linkType: hard + "@vitest/pretty-format@npm:2.1.3": version: 2.1.3 resolution: "@vitest/pretty-format@npm:2.1.3" @@ -20292,6 +21844,24 @@ __metadata: languageName: node linkType: hard +"@vitest/pretty-format@npm:2.1.5": + version: 2.1.5 + resolution: "@vitest/pretty-format@npm:2.1.5" + dependencies: + tinyrainbow: ^1.2.0 + checksum: 0d470aabe0b27825c19da9e922bd2da073da5a7bdf0db7b101107c83f3071d728d98633b465d73b90c3fd68926f750fbf50d322140853fb30bad51389c766074 + languageName: node + linkType: hard + +"@vitest/spy@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/spy@npm:2.0.5" + dependencies: + tinyspy: ^3.0.0 + checksum: a010dec99146832a2586c639fccf533b194482f6f25ffb2d64367598a4e77d094aedd3d82cdb55fc1a3971649577a039513ccf8dc1571492e5982482c530c7b9 + languageName: node + linkType: hard + "@vitest/spy@npm:2.1.3": version: 2.1.3 resolution: "@vitest/spy@npm:2.1.3" @@ -20301,6 +21871,18 @@ __metadata: languageName: node linkType: hard +"@vitest/utils@npm:2.0.5": + version: 2.0.5 + resolution: "@vitest/utils@npm:2.0.5" + dependencies: + "@vitest/pretty-format": 2.0.5 + estree-walker: ^3.0.3 + loupe: ^3.1.1 + tinyrainbow: ^1.2.0 + checksum: 6867556dd7e376437e454b96c7e596ec16e141fb00b002b6ce435611ab3d9d1e3f38ebf48b1fc49f4c97f9754ed37abb602de8bf122f4ac0de621a4dbe0a314e + languageName: node + linkType: hard + "@vitest/utils@npm:2.1.3": version: 2.1.3 resolution: "@vitest/utils@npm:2.1.3" @@ -20312,6 +21894,17 @@ __metadata: languageName: node linkType: hard +"@vitest/utils@npm:^2.1.1": + version: 2.1.5 + resolution: "@vitest/utils@npm:2.1.5" + dependencies: + "@vitest/pretty-format": 2.1.5 + loupe: ^3.1.2 + tinyrainbow: ^1.2.0 + checksum: f12f6d95d058b537afd9e0b0af1075a80bf77789f32b75bf6a110a2bbf5afd08930ee71a0bd53bfb42bc923e4706d5e26c41df0e1c2854db1a668a011d6c010a + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/ast@npm:1.12.1" @@ -21224,6 +22817,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.14.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 8755074ba55fff94e84e81c72f1013c2d9c78e973c31231c8ae505a5f966859baf654bddd75046bffd73ce816b149298977fff5077a3033dedba0ae2aad152d4 + languageName: node + linkType: hard + "acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.11.3 resolution: "acorn@npm:8.11.3" @@ -21490,7 +23092,7 @@ __metadata: languageName: node linkType: hard -"ansi-html-community@npm:^0.0.8": +"ansi-html-community@npm:0.0.8, ansi-html-community@npm:^0.0.8": version: 0.0.8 resolution: "ansi-html-community@npm:0.0.8" bin: @@ -22535,6 +24137,15 @@ __metadata: languageName: node linkType: hard +"better-opn@npm:^3.0.2": + version: 3.0.2 + resolution: "better-opn@npm:3.0.2" + dependencies: + open: ^8.0.4 + checksum: 1471552fa7f733561e7f49e812be074b421153006ca744de985fb6d38939807959fc5fe9cb819cf09f864782e294704fd3b31711ea14c115baf3330a2f1135de + languageName: node + linkType: hard + "better-path-resolve@npm:1.0.0": version: 1.0.0 resolution: "better-path-resolve@npm:1.0.0" @@ -22788,6 +24399,13 @@ __metadata: languageName: node linkType: hard +"browser-assert@npm:^1.2.1": + version: 1.2.1 + resolution: "browser-assert@npm:1.2.1" + checksum: 8b2407cd04c1ed592cf892dec35942b7d72635829221e0788c9a16c4d2afa8b7156bc9705b1c4b32c30d88136c576fda3cbcb8f494d6f865264c706ea8798d92 + languageName: node + linkType: hard + "browser-headers@npm:^0.4.1": version: 0.4.1 resolution: "browser-headers@npm:0.4.1" @@ -22898,6 +24516,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.24.0": + version: 4.24.2 + resolution: "browserslist@npm:4.24.2" + dependencies: + caniuse-lite: ^1.0.30001669 + electron-to-chromium: ^1.5.41 + node-releases: ^2.0.18 + update-browserslist-db: ^1.1.1 + bin: + browserslist: cli.js + checksum: cf64085f12132d38638f38937a255edb82c7551b164a98577b055dd79719187a816112f7b97b9739e400c4954cd66479c0d7a843cb816e346f4795dc24fd5d97 + languageName: node + linkType: hard + "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -23059,6 +24691,13 @@ __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" @@ -23284,6 +24923,20 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001669": + version: 1.0.30001680 + resolution: "caniuse-lite@npm:1.0.30001680" + checksum: 2641d2b18c5ab0a6663cb350c5adc81e5ede1a7677d1c7518a8053ada87bf6f206419e1820a2608f76fa5e4f7bea327cbe47df423783e571569a88c0ea645270 + languageName: node + linkType: hard + +"case-sensitive-paths-webpack-plugin@npm:^2.4.0": + version: 2.4.0 + resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" + checksum: bcf469446eeee9ac0046e30860074ebb9aa4803aab9140e6bb72b600b23b1d70635690754be4504ce35cd99cdf05226bee8d894ba362a3f5485d5f6310fc6d02 + languageName: node + linkType: hard + "caseless@npm:~0.12.0": version: 0.12.0 resolution: "caseless@npm:0.12.0" @@ -23466,6 +25119,25 @@ __metadata: languageName: node linkType: hard +"chromatic@npm:^11.15.0": + version: 11.18.1 + resolution: "chromatic@npm:11.18.1" + peerDependencies: + "@chromatic-com/cypress": ^0.*.* || ^1.0.0 + "@chromatic-com/playwright": ^0.*.* || ^1.0.0 + peerDependenciesMeta: + "@chromatic-com/cypress": + optional: true + "@chromatic-com/playwright": + optional: true + bin: + chroma: dist/bin.js + chromatic: dist/bin.js + chromatic-cli: dist/bin.js + checksum: c55e34915599acf223bd14b82ce2269adcfe8c4b377ed51ccc0f8cb48290263683617cd15eabb0591d221442cd629ff2326807d294b234e06bcbb8f7f3c158ee + languageName: node + linkType: hard + "chrome-trace-event@npm:^1.0.2": version: 1.0.2 resolution: "chrome-trace-event@npm:1.0.2" @@ -23522,6 +25194,13 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^1.2.3": + version: 1.4.1 + resolution: "cjs-module-lexer@npm:1.4.1" + checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 + languageName: node + linkType: hard + "classnames@npm:*, classnames@npm:^2.2.6, classnames@npm:^2.3.1, classnames@npm:^2.5.1": version: 2.5.1 resolution: "classnames@npm:2.5.1" @@ -24229,6 +25908,13 @@ __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" @@ -24721,8 +26407,8 @@ __metadata: linkType: hard "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.5": - version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6" + version: 7.0.5 + resolution: "cross-spawn@npm:7.0.5" dependencies: path-key: ^3.1.0 shebang-command: ^2.0.0 @@ -24802,6 +26488,30 @@ __metadata: languageName: node linkType: hard +"css-loader@npm:^6.7.1": + version: 6.11.0 + resolution: "css-loader@npm:6.11.0" + dependencies: + icss-utils: ^5.1.0 + postcss: ^8.4.33 + postcss-modules-extract-imports: ^3.1.0 + postcss-modules-local-by-default: ^4.0.5 + postcss-modules-scope: ^3.2.0 + postcss-modules-values: ^4.0.0 + postcss-value-parser: ^4.2.0 + semver: ^7.5.4 + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 5c8d35975a7121334905394e88e28f05df72f037dbed2fb8fec4be5f0b313ae73a13894ba791867d4a4190c35896da84a7fd0c54fb426db55d85ba5e714edbe3 + languageName: node + linkType: hard + "css-loader@npm:^7.0.0": version: 7.1.2 resolution: "css-loader@npm:7.1.2" @@ -25023,6 +26733,13 @@ __metadata: languageName: node linkType: hard +"csstype@npm:^3.0.7": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 + languageName: node + linkType: hard + "ctrlc-windows@npm:^2.1.0": version: 2.1.0 resolution: "ctrlc-windows@npm:2.1.0" @@ -25375,6 +27092,13 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 + languageName: node + linkType: hard + "dedent@npm:^1.0.0": version: 1.5.1 resolution: "dedent@npm:1.5.1" @@ -25387,6 +27111,18 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^1.5.3": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a + languageName: node + linkType: hard + "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -25415,6 +27151,13 @@ __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" @@ -25588,7 +27331,7 @@ __metadata: languageName: node linkType: hard -"dequal@npm:^2.0.0, dequal@npm:^2.0.3": +"dequal@npm:^2.0.0, dequal@npm:^2.0.2, dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 @@ -26192,9 +27935,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.41": - version: 1.5.65 - resolution: "electron-to-chromium@npm:1.5.65" - checksum: 4a112a038771c415f77e88fb3e3d929ceac4600b4612c55eb5d955a37c24842725f00c14f0f6838fd46edd832351c702b24c592c544d2e1e630d084f9df9f275 + version: 1.5.62 + resolution: "electron-to-chromium@npm:1.5.62" + checksum: 5b378e7967495faebb27e8d9c7db5ea1477bfdfe13c21bf79eb812df81f0f25ee9acbcbd09eaa17b38287e2b3bc18a762fa654ac40095b23bf0cb71c108a284f languageName: node linkType: hard @@ -26287,6 +28030,17 @@ __metadata: languageName: node linkType: hard +"endent@npm:^2.0.1": + version: 2.1.0 + resolution: "endent@npm:2.1.0" + dependencies: + dedent: ^0.7.0 + fast-json-parse: ^1.0.3 + objectorarray: ^1.0.5 + checksum: c352831088fce745a39ddbd5f87a17e073ea6556e7e96e9010d945a3f3020f836b9a84657123fa01e897db9216f4b080d950b5ded9bf3a8227f14a34efaaaf7c + languageName: node + linkType: hard + "enhanced-resolve@npm:^5.17.1": version: 5.17.1 resolution: "enhanced-resolve@npm:5.17.1" @@ -26488,6 +28242,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.5.0": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f + languageName: node + linkType: hard + "es-object-atoms@npm:^1.0.0": version: 1.0.0 resolution: "es-object-atoms@npm:1.0.0" @@ -26594,87 +28355,18 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.21.0, esbuild@npm:^0.21.3": - version: 0.21.5 - resolution: "esbuild@npm:0.21.5" +"esbuild-register@npm:^3.5.0": + version: 3.6.0 + resolution: "esbuild-register@npm:3.6.0" dependencies: - "@esbuild/aix-ppc64": 0.21.5 - "@esbuild/android-arm": 0.21.5 - "@esbuild/android-arm64": 0.21.5 - "@esbuild/android-x64": 0.21.5 - "@esbuild/darwin-arm64": 0.21.5 - "@esbuild/darwin-x64": 0.21.5 - "@esbuild/freebsd-arm64": 0.21.5 - "@esbuild/freebsd-x64": 0.21.5 - "@esbuild/linux-arm": 0.21.5 - "@esbuild/linux-arm64": 0.21.5 - "@esbuild/linux-ia32": 0.21.5 - "@esbuild/linux-loong64": 0.21.5 - "@esbuild/linux-mips64el": 0.21.5 - "@esbuild/linux-ppc64": 0.21.5 - "@esbuild/linux-riscv64": 0.21.5 - "@esbuild/linux-s390x": 0.21.5 - "@esbuild/linux-x64": 0.21.5 - "@esbuild/netbsd-x64": 0.21.5 - "@esbuild/openbsd-x64": 0.21.5 - "@esbuild/sunos-x64": 0.21.5 - "@esbuild/win32-arm64": 0.21.5 - "@esbuild/win32-ia32": 0.21.5 - "@esbuild/win32-x64": 0.21.5 - 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-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: 2911c7b50b23a9df59a7d6d4cdd3a4f85855787f374dce751148dbb13305e0ce7e880dde1608c2ab7a927fc6cec3587b80995f7fc87a64b455f8b70b55fd8ec1 + debug: ^4.3.4 + peerDependencies: + esbuild: ">=0.12 <1" + checksum: 9221e26dde3366398a43183b600d8e9252b8003516cd766983a06c321eb07cf1b6b236948a21e4d1728c17a341c0fa52b49409c951d89fc7bf65d07d43c31a05 languageName: node linkType: hard -"esbuild@npm:^0.24.0": +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0, esbuild@npm:^0.24.0": version: 0.24.0 resolution: "esbuild@npm:0.24.0" dependencies: @@ -26757,6 +28449,86 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.21.0, esbuild@npm:^0.21.3": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": 0.21.5 + "@esbuild/android-arm": 0.21.5 + "@esbuild/android-arm64": 0.21.5 + "@esbuild/android-x64": 0.21.5 + "@esbuild/darwin-arm64": 0.21.5 + "@esbuild/darwin-x64": 0.21.5 + "@esbuild/freebsd-arm64": 0.21.5 + "@esbuild/freebsd-x64": 0.21.5 + "@esbuild/linux-arm": 0.21.5 + "@esbuild/linux-arm64": 0.21.5 + "@esbuild/linux-ia32": 0.21.5 + "@esbuild/linux-loong64": 0.21.5 + "@esbuild/linux-mips64el": 0.21.5 + "@esbuild/linux-ppc64": 0.21.5 + "@esbuild/linux-riscv64": 0.21.5 + "@esbuild/linux-s390x": 0.21.5 + "@esbuild/linux-x64": 0.21.5 + "@esbuild/netbsd-x64": 0.21.5 + "@esbuild/openbsd-x64": 0.21.5 + "@esbuild/sunos-x64": 0.21.5 + "@esbuild/win32-arm64": 0.21.5 + "@esbuild/win32-ia32": 0.21.5 + "@esbuild/win32-x64": 0.21.5 + 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-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: 2911c7b50b23a9df59a7d6d4cdd3a4f85855787f374dce751148dbb13305e0ce7e880dde1608c2ab7a927fc6cec3587b80995f7fc87a64b455f8b70b55fd8ec1 + languageName: node + linkType: hard + "esbuild@npm:esbuild-wasm@^0.15.15": version: 0.15.18 resolution: "esbuild-wasm@npm:0.15.18" @@ -26766,6 +28538,96 @@ __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.1.2": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 1ec0977aa2772075493002bdbd549d595ff6e9393b1cb0d7d6fcaf78c750da0c158f180938365486f75cb69fba20294351caddfce1b46552a7b6c3cde52eaa02 + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -26773,6 +28635,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e + languageName: node + linkType: hard + "escape-goat@npm:^2.0.0": version: 2.1.1 resolution: "escape-goat@npm:2.1.1" @@ -27007,6 +28876,24 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-react-hooks@npm:^5.0.0": + version: 5.0.0 + resolution: "eslint-plugin-react-hooks@npm:5.0.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + checksum: eddd514a8796e8f805aa0c712d5fe6120fa6db778e3ad2949459b208f8a4bed6a48c152edfa9613f137c7527b00b42d489b5f94363d01d3a509e1f31630674dd + languageName: node + linkType: hard + +"eslint-plugin-react-refresh@npm:^0.4.13": + version: 0.4.14 + resolution: "eslint-plugin-react-refresh@npm:0.4.14" + peerDependencies: + eslint: ">=7" + checksum: 55a7fea190454f33edff6a86739767af21bee8797cd6132466cf2b69a9c75aefd76b03c29b39d0e8ea826af314bde1583d7046f21088afa7fac511f8af4eb714 + languageName: node + linkType: hard + "eslint-plugin-react@npm:^7.28.0": version: 7.37.2 resolution: "eslint-plugin-react@npm:7.37.2" @@ -27035,6 +28922,19 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-storybook@npm:^0.11.0": + version: 0.11.0 + resolution: "eslint-plugin-storybook@npm:0.11.0" + dependencies: + "@storybook/csf": ^0.1.11 + "@typescript-eslint/utils": ^8.8.1 + ts-dedent: ^2.2.0 + peerDependencies: + eslint: ">=6" + checksum: 52baa35ed4f49bc46bd323784ac2a48a615f0fd929b66dfec11bb2cbceded1a9978b68cbb1165aa36f078190651f93243f871ead368bb2f1ee131c7d00e265e9 + languageName: node + linkType: hard + "eslint-plugin-testing-library@npm:^6.0.0": version: 6.4.0 resolution: "eslint-plugin-testing-library@npm:6.4.0" @@ -27088,6 +28988,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^8.2.0": + version: 8.2.0 + resolution: "eslint-scope@npm:8.2.0" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: 750eff4672ca2bf274ec0d1bbeae08aadd53c1907d5c6aff5564d8e047a5f49afa8ae6eee333cab637fd3ebcab2141659d8f2f040f6fdc982b0f61f8bf03136f + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" @@ -27095,6 +29005,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 779c604672b570bb4da84cef32f6abb085ac78379779c1122d7879eade8bb38ae715645324597cf23232d03cef06032c9844d25c73625bc282a5bfd30247e5b5 + languageName: node + linkType: hard + "eslint-webpack-plugin@npm:^4.0.0": version: 4.2.0 resolution: "eslint-webpack-plugin@npm:4.2.0" @@ -27159,6 +29076,55 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^9.13.0": + version: 9.15.0 + resolution: "eslint@npm:9.15.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.12.1 + "@eslint/config-array": ^0.19.0 + "@eslint/core": ^0.9.0 + "@eslint/eslintrc": ^3.2.0 + "@eslint/js": 9.15.0 + "@eslint/plugin-kit": ^0.2.3 + "@humanfs/node": ^0.16.6 + "@humanwhocodes/module-importer": ^1.0.1 + "@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.5 + debug: ^4.3.2 + escape-string-regexp: ^4.0.0 + eslint-scope: ^8.2.0 + eslint-visitor-keys: ^4.2.0 + espree: ^10.3.0 + esquery: ^1.5.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^8.0.0 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + json-stable-stringify-without-jsonify: ^1.0.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 50b7e1c4cb49662a54916877d47aeded2aac0cae428c8258ec9d181160ca893681a32c69df359404bfb81a9693480896adbcd8a18fa5acafd1c933dc1030f32e + languageName: node + linkType: hard + "esm@npm:^3.2.25": version: 3.2.25 resolution: "esm@npm:3.2.25" @@ -27178,6 +29144,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" + dependencies: + acorn: ^8.14.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^4.2.0 + checksum: 63e8030ff5a98cea7f8b3e3a1487c998665e28d674af08b9b3100ed991670eb3cbb0e308c4548c79e03762753838fbe530c783f17309450d6b47a889fee72bef + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -27218,6 +29195,15 @@ __metadata: languageName: node linkType: hard +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: ^5.1.0 + checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + languageName: node + linkType: hard + "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" @@ -27255,6 +29241,15 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": ^1.0.0 + checksum: a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af + languageName: node + linkType: hard + "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" @@ -27269,6 +29264,16 @@ __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" @@ -28112,6 +30117,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: ^4.0.0 + checksum: f67802d3334809048c69b3d458f672e1b6d26daefda701761c81f203b80149c35dea04d78ea4238969dd617678e530876722a0634c43031a0957f10cc3ed190f + languageName: node + linkType: hard + "file-type@npm:3.9.0": version: 3.9.0 resolution: "file-type@npm:3.9.0" @@ -28146,6 +30160,13 @@ __metadata: languageName: node linkType: hard +"filesize@npm:^10.0.12": + version: 10.1.6 + resolution: "filesize@npm:10.1.6" + checksum: a797a9d41c8f27a9ae334d23f99fc5d903eac5d03c82190dc163901205435b56626fe1260c779ba3e87a2a34d426f19ff264c3f7d956e00f2d3ac69760b52e33 + languageName: node + linkType: hard + "filesize@npm:^8.0.6": version: 8.0.6 resolution: "filesize@npm:8.0.6" @@ -28210,6 +30231,17 @@ __metadata: languageName: node linkType: hard +"find-cache-dir@npm:^3.3.1": + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" + dependencies: + commondir: ^1.0.1 + make-dir: ^3.0.2 + pkg-dir: ^4.1.0 + checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 + languageName: node + linkType: hard + "find-file-up@npm:^2.0.1": version: 2.0.1 resolution: "find-file-up@npm:2.0.1" @@ -28329,6 +30361,25 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.4 + checksum: 899fc86bf6df093547d76e7bfaeb900824b869d7d457d02e9b8aae24836f0a99fbad79328cfd6415ee8908f180699bf259dc7614f793447cb14f707caf5996f6 + 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" @@ -28336,7 +30387,7 @@ __metadata: languageName: node linkType: hard -"flatted@npm:3.3.1, flatted@npm:^3.1.0, flatted@npm:^3.2.7": +"flatted@npm:3.3.1, flatted@npm:^3.1.0, flatted@npm:^3.2.7, flatted@npm:^3.2.9": version: 3.3.1 resolution: "flatted@npm:3.3.1" checksum: 85ae7181650bb728c221e7644cbc9f4bf28bc556f2fc89bb21266962bdf0ce1029cc7acc44bb646cd469d9baac7c317f64e841c4c4c00516afa97320cdac7f94 @@ -28443,6 +30494,29 @@ __metadata: languageName: node linkType: hard +"fork-ts-checker-webpack-plugin@npm:^8.0.0": + version: 8.0.0 + resolution: "fork-ts-checker-webpack-plugin@npm:8.0.0" + dependencies: + "@babel/code-frame": ^7.16.7 + chalk: ^4.1.2 + chokidar: ^3.5.3 + cosmiconfig: ^7.0.1 + deepmerge: ^4.2.2 + fs-extra: ^10.0.0 + memfs: ^3.4.1 + minimatch: ^3.0.4 + node-abort-controller: ^3.0.1 + schema-utils: ^3.1.1 + semver: ^7.3.5 + tapable: ^2.2.1 + peerDependencies: + typescript: ">3.6.0" + webpack: ^5.11.0 + checksum: aad4cbc5b802e6281a2700a379837697c93ad95288468f9595219d91d9c26674736d37852bb4c4341e9122f26181e9e05fc1a362e8d029fdd88e99de7816037b + languageName: node + linkType: hard + "fork-ts-checker-webpack-plugin@npm:^9.0.0": version: 9.0.2 resolution: "fork-ts-checker-webpack-plugin@npm:9.0.2" @@ -29215,6 +31289,20 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac + languageName: node + linkType: hard + +"globals@npm:^15.11.0": + version: 15.12.0 + resolution: "globals@npm:15.12.0" + checksum: 2a134cc876dd73192489561e3c85be348dc1408fef043ebef605cdc437f64cd2fc922268db02e3348683d05d06bed10fb1c3653b3d4399a204a7ecd59e742a07 + languageName: node + linkType: hard + "globalthis@npm:^1.0.1, globalthis@npm:^1.0.3, globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -29926,7 +32014,7 @@ __metadata: languageName: node linkType: hard -"html-webpack-plugin@npm:^5.6.3": +"html-webpack-plugin@npm:^5.5.0, html-webpack-plugin@npm:^5.6.3": version: 5.6.3 resolution: "html-webpack-plugin@npm:5.6.3" dependencies: @@ -30343,6 +32431,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^5.3.1": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be + languageName: node + linkType: hard + "immediate@npm:~3.0.5": version: 3.0.6 resolution: "immediate@npm:3.0.6" @@ -31658,6 +33753,13 @@ __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" @@ -32363,6 +34465,13 @@ __metadata: languageName: node linkType: hard +"jsdoc-type-pratt-parser@npm:^4.0.0": + version: 4.1.0 + resolution: "jsdoc-type-pratt-parser@npm:4.1.0" + checksum: e7642a508b090b1bdf17775383000ed71013c38e1231c1e576e5374636e8baf7c3fae8bf0252f5e1d3397d95efd56e8c8a5dd1a0de76d05d1499cbcb3c325bc3 + languageName: node + linkType: hard + "jsdom@npm:^20.0.0": version: 20.0.0 resolution: "jsdom@npm:20.0.0" @@ -32627,7 +34736,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.3": +"json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -32662,7 +34771,7 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^6.0.1": +"jsonfile@npm:^6.0.1, jsonfile@npm:^6.1.0": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" dependencies: @@ -32959,7 +35068,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.0.0, keyv@npm:^4.5.2": +"keyv@npm:^4.0.0, keyv@npm:^4.5.2, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -33783,7 +35892,7 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.1": +"loupe@npm:^3.1.0, loupe@npm:^3.1.1, loupe@npm:^3.1.2": version: 3.1.2 resolution: "loupe@npm:3.1.2" checksum: 4a75bbe8877a1ced3603e08b1095cd6f4c987c50fe63719fdc3009029560f91e07a915e7f6eff1322bb62bfb2a2beeef06b13ccb3c12f81bda9f3674434dcab9 @@ -33830,7 +35939,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.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a @@ -33926,6 +36035,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.5": + version: 0.30.12 + resolution: "magic-string@npm:0.30.12" + dependencies: + "@jridgewell/sourcemap-codec": ^1.5.0 + checksum: 3f0d23b74371765f0e6cad4284eebba0ac029c7a55e39292de5aa92281afb827138cb2323d24d2924f6b31f138c3783596c5ccaa98653fe9cf122e1f81325b59 + languageName: node + linkType: hard + "make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -33936,7 +36054,7 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0": +"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -34037,6 +36155,13 @@ __metadata: languageName: node linkType: hard +"map-or-similar@npm:^1.5.0": + version: 1.5.0 + resolution: "map-or-similar@npm:1.5.0" + checksum: f65c0d420e272d0fce4e24db35f6a08109218480bca1d61eaa442cbe6cf46270b840218d3b5e94e4bfcc2595f1d0a1fa5885df750b52aac9ab1d437b29dcce38 + languageName: node + linkType: hard + "markdown-escape@npm:^2.0.0": version: 2.0.0 resolution: "markdown-escape@npm:2.0.0" @@ -34315,6 +36440,15 @@ __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" @@ -34364,7 +36498,7 @@ __metadata: languageName: node linkType: hard -"memfs@npm:^3.1.2, memfs@npm:^3.4.1": +"memfs@npm:^3.1.2, memfs@npm:^3.4.1, memfs@npm:^3.4.12": version: 3.5.3 resolution: "memfs@npm:3.5.3" dependencies: @@ -34412,6 +36546,15 @@ __metadata: languageName: node linkType: hard +"memoizerific@npm:^1.11.3": + version: 1.11.3 + resolution: "memoizerific@npm:1.11.3" + dependencies: + map-or-similar: ^1.5.0 + checksum: d51bdc3ed8c39b4b73845c90eb62d243ddf21899914352d0c303f5e1d477abcb192f4c605e008caa4a31d823225eeb22a99ba5ee825fb88d0c33382db3aee95a + languageName: node + linkType: hard + "merge-descriptors@npm:1.0.3, merge-descriptors@npm:^1.0.1": version: 1.0.3 resolution: "merge-descriptors@npm:1.0.3" @@ -34919,14 +37062,14 @@ __metadata: languageName: node linkType: hard -"min-indent@npm:^1.0.0": +"min-indent@npm:^1.0.0, min-indent@npm:^1.0.1": version: 1.0.1 resolution: "min-indent@npm:1.0.1" checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 languageName: node linkType: hard -"mini-css-extract-plugin@npm:^2.4.2": +"mini-css-extract-plugin@npm:^2.4.2, mini-css-extract-plugin@npm:^2.9.2": version: 2.9.2 resolution: "mini-css-extract-plugin@npm:2.9.2" dependencies: @@ -35228,6 +37371,18 @@ __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" @@ -35336,6 +37491,13 @@ __metadata: languageName: node linkType: hard +"modern-ahocorasick@npm:^1.0.0": + version: 1.0.1 + resolution: "modern-ahocorasick@npm:1.0.1" + checksum: ec83479f406511f37a966d66ce1c2b1701bb4a2cc2aabbbc257001178c9fbc48ce748c88eb10dfe72ba8b7f991a0bc7f1fa14683f444685edd1a9eeb32ecbc1e + 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" @@ -36464,6 +38626,13 @@ __metadata: languageName: node linkType: hard +"objectorarray@npm:^1.0.5": + version: 1.0.5 + resolution: "objectorarray@npm:1.0.5" + checksum: 8fd776aa495d113e217837f4adc1d53e63f656498237094d25f84c3e2c038b34b71d6fd85c4b60c7ae5f558790e5042426a400fae3eac35f297e11be12643a78 + languageName: node + linkType: hard + "obuf@npm:^1.0.0, obuf@npm:^1.1.2, obuf@npm:~1.1.2": version: 1.1.2 resolution: "obuf@npm:1.1.2" @@ -36603,7 +38772,7 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.0.0, open@npm:^8.4.0": +"open@npm:^8.0.0, open@npm:^8.0.4, open@npm:^8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: @@ -37469,6 +39638,13 @@ __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" @@ -37785,7 +39961,7 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^4.2.0": +"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" dependencies: @@ -37803,6 +39979,17 @@ __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" @@ -37857,6 +40044,15 @@ __metadata: languageName: node linkType: hard +"polished@npm:^4.2.2": + version: 4.3.1 + resolution: "polished@npm:4.3.1" + dependencies: + "@babel/runtime": ^7.17.8 + checksum: a6f863c23f1d2f3f5cda3427b5885c9fb9e83b036d681e24820b143c7df40d2685bebb01c0939767120a28e1183671ae17c93db82ac30b3c20942180bb153bc7 + languageName: node + linkType: hard + "pony-cause@npm:^1.1.1": version: 1.1.1 resolution: "pony-cause@npm:1.1.1" @@ -39158,6 +41354,17 @@ __metadata: languageName: node linkType: hard +"react-confetti@npm:^6.1.0": + version: 6.1.0 + resolution: "react-confetti@npm:6.1.0" + dependencies: + tween-functions: ^1.2.0 + peerDependencies: + react: ^16.3.0 || ^17.0.1 || ^18.0.0 + checksum: 24b6975df144d2bf09d8e1c95ddc49e547775f911efaa8d96b49e522659d931539e9d9e48cc0db3a01f3a671be7e3824e6e728db85096f5527db5d1c69ebb153 + languageName: node + linkType: hard + "react-copy-to-clipboard@npm:5.1.0, react-copy-to-clipboard@npm:^5.0.4": version: 5.1.0 resolution: "react-copy-to-clipboard@npm:5.1.0" @@ -39224,6 +41431,33 @@ __metadata: languageName: node linkType: hard +"react-docgen-typescript@npm:^2.2.2": + version: 2.2.2 + resolution: "react-docgen-typescript@npm:2.2.2" + peerDependencies: + typescript: ">= 4.3.x" + checksum: a9826459ea44e818f21402728dd47f5cae60bd936574cefd4f90ad101ff3eebacd67b6e017b793309734ce62c037aa3072dbc855d2b0e29bad1a38cbf5bac115 + languageName: node + linkType: hard + +"react-docgen@npm:^7.0.0": + version: 7.1.0 + resolution: "react-docgen@npm:7.1.0" + dependencies: + "@babel/core": ^7.18.9 + "@babel/traverse": ^7.18.9 + "@babel/types": ^7.18.9 + "@types/babel__core": ^7.18.0 + "@types/babel__traverse": ^7.18.0 + "@types/doctrine": ^0.0.9 + "@types/resolve": ^1.20.2 + doctrine: ^3.0.0 + resolve: ^1.22.1 + strip-indent: ^4.0.0 + checksum: dfdec82a4d695e8b1e31b77eef4ceac0f60e00f13725f0a18886d2737595531e58a54f4dde5db4657276d194597bd5e67a1792ca52eb42a59b67943105f24893 + languageName: node + linkType: hard + "react-dom@npm:^16.13.1": version: 16.14.0 resolution: "react-dom@npm:16.14.0" @@ -39238,7 +41472,7 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^18.0.2": +"react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0, react-dom@npm:^18.0.2": version: 18.3.1 resolution: "react-dom@npm:18.3.1" dependencies: @@ -39823,7 +42057,7 @@ __metadata: languageName: node linkType: hard -"react@npm:^18.0.2": +"react@npm:^16.8.0 || ^17.0.0 || ^18.0.0, react@npm:^18.0.2": version: 18.3.1 resolution: "react@npm:18.3.1" dependencies: @@ -39967,7 +42201,7 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.23.9": +"recast@npm:^0.23.5, recast@npm:^0.23.9": version: 0.23.9 resolution: "recast@npm:0.23.9" dependencies: @@ -40359,6 +42593,13 @@ __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" @@ -40434,7 +42675,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:1.22.8, resolve@npm:^1.1.6, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:~1.22.1, resolve@npm:~1.22.2": +"resolve@npm:1.22.8, resolve@npm:^1.1.6, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:^1.22.8, resolve@npm:~1.22.1, resolve@npm:~1.22.2": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -40460,7 +42701,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@1.22.8#~builtin, resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.4#~builtin, resolve@patch:resolve@~1.22.1#~builtin, resolve@patch:resolve@~1.22.2#~builtin": +"resolve@patch:resolve@1.22.8#~builtin, resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.4#~builtin, resolve@patch:resolve@^1.22.8#~builtin, resolve@patch:resolve@~1.22.1#~builtin, resolve@patch:resolve@~1.22.2#~builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -41203,7 +43444,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.6.3, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": +"semver@npm:7.6.3, semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -42172,6 +44413,24 @@ __metadata: languageName: node linkType: hard +"storybook@npm:^8.4.4": + version: 8.4.4 + resolution: "storybook@npm:8.4.4" + dependencies: + "@storybook/core": 8.4.4 + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + bin: + getstorybook: ./bin/index.cjs + sb: ./bin/index.cjs + storybook: ./bin/index.cjs + checksum: 5e307e0e3af9f1f687388b9040a4a5d040fc48a7af346d19bd0eaf26e22bad49f5048e18a60d2e6122c613a1d40413114a39b908f670daf3f3a9cce1e4cc95cb + languageName: node + linkType: hard + "stream-browserify@npm:3.0.0, stream-browserify@npm:^3.0.0": version: 3.0.0 resolution: "stream-browserify@npm:3.0.0" @@ -42574,6 +44833,15 @@ __metadata: languageName: node linkType: hard +"strip-indent@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-indent@npm:4.0.0" + dependencies: + min-indent: ^1.0.1 + checksum: 06cbcd93da721c46bc13caeb1c00af93a9b18146a1c95927672d2decab6a25ad83662772417cea9317a2507fb143253ecc23c4415b64f5828cef9b638a744598 + languageName: node + linkType: hard + "strip-json-comments@npm:5.0.1": version: 5.0.1 resolution: "strip-json-comments@npm:5.0.1" @@ -42937,6 +45205,13 @@ __metadata: languageName: node linkType: hard +"tabbable@npm:^6.0.0": + version: 6.2.0 + resolution: "tabbable@npm:6.2.0" + checksum: f8440277d223949272c74bb627a3371be21735ca9ad34c2570f7e1752bd646ccfc23a9d8b1ee65d6561243f4134f5fbbf1ad6b39ac3c4b586554accaff4a1300 + languageName: node + linkType: hard + "tapable@npm:^1.0.0": version: 1.1.3 resolution: "tapable@npm:1.1.3" @@ -43140,7 +45415,7 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:*, terser-webpack-plugin@npm:^5.1.3, terser-webpack-plugin@npm:^5.3.10": +"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" dependencies: @@ -43336,7 +45611,7 @@ __metadata: languageName: node linkType: hard -"tiny-invariant@npm:^1.0.6, tiny-invariant@npm:^1.3.3": +"tiny-invariant@npm:^1.0.6, tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": version: 1.3.3 resolution: "tiny-invariant@npm:1.3.3" checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe @@ -43650,6 +45925,13 @@ __metadata: languageName: node linkType: hard +"ts-dedent@npm:^2.0.0, ts-dedent@npm:^2.2.0": + version: 2.2.0 + resolution: "ts-dedent@npm:2.2.0" + checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af + languageName: node + linkType: hard + "ts-easing@npm:^0.2.0": version: 0.2.0 resolution: "ts-easing@npm:0.2.0" @@ -43761,6 +46043,17 @@ __metadata: languageName: node linkType: hard +"tsconfig-paths@npm:^4.2.0": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: ^2.2.2 + minimist: ^1.2.6 + strip-bom: ^3.0.0 + checksum: 28c5f7bbbcabc9dabd4117e8fdc61483f6872a1c6b02a4b1c4d68c5b79d06896c3cc9547610c4c3ba64658531caa2de13ead1ea1bf321c7b53e969c4752b98c7 + languageName: node + linkType: hard + "tslib@npm:2.7.0": version: 2.7.0 resolution: "tslib@npm:2.7.0" @@ -43830,6 +46123,13 @@ __metadata: languageName: node linkType: hard +"tween-functions@npm:^1.2.0": + version: 1.2.0 + resolution: "tween-functions@npm:1.2.0" + checksum: 880708d680eff5c347ddcb9f922ad121703a91c78ce308ed309073e73a794b633eb0b80589a839365803f150515ad34c9646809ae8a0e90f09e62686eefb1ab6 + languageName: node + linkType: hard + "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" @@ -44039,6 +46339,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.10.0": + version: 8.14.0 + resolution: "typescript-eslint@npm:8.14.0" + dependencies: + "@typescript-eslint/eslint-plugin": 8.14.0 + "@typescript-eslint/parser": 8.14.0 + "@typescript-eslint/utils": 8.14.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: b9192c567126d0800b4e8a9b106360d14b0ecd562203e636e594c5629e8a57ced7a342b3a793a7862ab7f85700e737584c686d0021a10db5bb81dba61be81cd7 + languageName: node + linkType: hard + "typescript-json-schema@npm:^0.65.0": version: 0.65.1 resolution: "typescript-json-schema@npm:0.65.1" @@ -44087,6 +46401,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:~5.6.2": + version: 5.6.3 + resolution: "typescript@npm:5.6.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: ba302f8822777ebefb28b554105f3e074466b671e7444ec6b75dadc008a62f46f373d9e57ceced1c433756d06c8b7dc569a7eefdf3a9573122a49205ff99021a + languageName: node + linkType: hard + "typescript@patch:typescript@5.4.2#~builtin": version: 5.4.2 resolution: "typescript@patch:typescript@npm%3A5.4.2#~builtin::version=5.4.2&hash=5adc0c" @@ -44117,6 +46441,16 @@ __metadata: languageName: node linkType: hard +"typescript@patch:typescript@~5.6.2#~builtin": + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#~builtin::version=5.6.3&hash=5adc0c" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: ade87bce2363ee963eed0e4ca8a312ea02c81873ebd53609bc3f6dc0a57f6e61ad7e3fb8cbb7f7ab8b5081cbee801b023f7c4823ee70b1c447eae050e6c7622b + languageName: node + linkType: hard + "ua-parser-js@npm:^0.7.30": version: 0.7.33 resolution: "ua-parser-js@npm:0.7.33" @@ -44138,6 +46472,13 @@ __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" @@ -44484,6 +46825,16 @@ __metadata: languageName: node linkType: hard +"unplugin@npm:^1.3.1": + version: 1.16.0 + resolution: "unplugin@npm:1.16.0" + dependencies: + acorn: ^8.14.0 + webpack-virtual-modules: ^0.6.2 + checksum: 84bff88dd8fd6ba88bd21dad1b170fea2a91f7ff8ddcfadf826297cf77dfe305f3428f1612c0637f30d7ac10d668491f15fdf8f378dd56def370fdbc16edd85e + languageName: node + linkType: hard + "unraw@npm:^3.0.0": version: 3.0.0 resolution: "unraw@npm:3.0.0" @@ -44729,6 +47080,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:^1.2.2": + version: 1.2.2 + resolution: "use-sync-external-store@npm:1.2.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: fe07c071c4da3645f112c38c0e57beb479a8838616ff4e92598256ecce527f2888c08febc7f9b2f0ce2f0e18540ba3cde41eb2035e4fafcb4f52955037098a81 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -45002,6 +47362,21 @@ __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" @@ -45036,7 +47411,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0": +"vite@npm:^5.0.0, vite@npm:^5.0.11": version: 5.4.11 resolution: "vite@npm:5.4.11" dependencies: @@ -45226,6 +47601,24 @@ __metadata: languageName: node linkType: hard +"webpack-dev-middleware@npm:^6.1.2": + version: 6.1.3 + resolution: "webpack-dev-middleware@npm:6.1.3" + dependencies: + colorette: ^2.0.10 + memfs: ^3.4.12 + mime-types: ^2.1.31 + range-parser: ^1.2.1 + schema-utils: ^4.0.0 + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + checksum: ddedaa913cc39d7ac7f971d902f181ecc5c4ab0b91f9eda5923f0ea513ecf458f71046f2ed423cb4fc657c2177fe279186453e395bd1051f0949e265c3124665 + languageName: node + linkType: hard + "webpack-dev-middleware@npm:^7.1.0, webpack-dev-middleware@npm:^7.4.2": version: 7.4.2 resolution: "webpack-dev-middleware@npm:7.4.2" @@ -45337,6 +47730,28 @@ __metadata: languageName: node linkType: hard +"webpack-hot-middleware@npm:^2.25.1": + version: 2.26.1 + resolution: "webpack-hot-middleware@npm:2.26.1" + dependencies: + ansi-html-community: 0.0.8 + html-entities: ^2.1.0 + strip-ansi: ^6.0.0 + checksum: 78513d8d5770c59c3039ce094c49b2e2772b3f1d4ec5c124a7aabe6124a0e08429993b81129649087dc300f496822257e39135bf8b891b51aea197c1b554072a + 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" @@ -45354,6 +47769,49 @@ __metadata: languageName: node linkType: hard +"webpack-virtual-modules@npm:^0.6.0, webpack-virtual-modules@npm:^0.6.2": + version: 0.6.2 + resolution: "webpack-virtual-modules@npm:0.6.2" + checksum: 7e8e1d63f35864c815420cc2f27da8561a1e028255040698a352717de0ba46d3b3faf16f06c1a1965217054c4c2894eb9af53a85451870e919b5707ce9c5822d + languageName: node + linkType: hard + +"webpack@npm:5": + version: 5.96.1 + resolution: "webpack@npm:5.96.1" + dependencies: + "@types/eslint-scope": ^3.7.7 + "@types/estree": ^1.0.6 + "@webassemblyjs/ast": ^1.12.1 + "@webassemblyjs/wasm-edit": ^1.12.1 + "@webassemblyjs/wasm-parser": ^1.12.1 + acorn: ^8.14.0 + browserslist: ^4.24.0 + chrome-trace-event: ^1.0.2 + enhanced-resolve: ^5.17.1 + es-module-lexer: ^1.2.1 + eslint-scope: 5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.11 + json-parse-even-better-errors: ^2.3.1 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.2.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.3.10 + watchpack: ^2.4.1 + webpack-sources: ^3.2.3 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: ec3662f64895fae408440a997f87299e374c9d9f911f77b880bab46402f52221c7836bdf101fc2556338d07fc7cb86da50661f944eb1d1041a8361a5b9247876 + languageName: node + linkType: hard + "webpack@npm:^5, webpack@npm:^5.94.0": version: 5.95.0 resolution: "webpack@npm:5.95.0" @@ -45589,6 +48047,13 @@ __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" @@ -45716,7 +48181,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:*, ws@npm:8.18.0, ws@npm:^8.11.0, ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.16.0, ws@npm:^8.17.1, ws@npm:^8.18.0, ws@npm:^8.8.0": +"ws@npm:*, ws@npm:8.18.0, ws@npm:^8.11.0, ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.16.0, ws@npm:^8.17.1, ws@npm:^8.18.0, ws@npm:^8.2.3, ws@npm:^8.8.0": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: From 8e03e86b1f2260a5c8fe518168338ce34fc5b1bf Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Mon, 18 Nov 2024 18:14:56 +0000 Subject: [PATCH 02/29] Add first version of our Icon component Signed-off-by: Charles de Dreuille --- packages/canon/package.json | 3 +- .../canon/src/components/icon/context.tsx | 40 ++++++++++ .../canon/src/components/icon/custom-icon.tsx | 7 ++ .../src/components/icon/icon.stories.tsx | 66 ++++++++++++++++ packages/canon/src/components/icon/icon.tsx | 15 ++++ packages/canon/src/components/icon/index.tsx | 2 + packages/canon/src/docs/Theme.mdx | 75 +++++++++++++++++-- packages/canon/src/index.ts | 5 +- packages/canon/src/storybook/text/text.css.ts | 4 +- .../canon/src/storybook/title/title.css.ts | 4 +- yarn.lock | 10 +++ 11 files changed, 218 insertions(+), 13 deletions(-) create mode 100644 packages/canon/src/components/icon/context.tsx create mode 100644 packages/canon/src/components/icon/custom-icon.tsx create mode 100644 packages/canon/src/components/icon/icon.stories.tsx create mode 100644 packages/canon/src/components/icon/icon.tsx create mode 100644 packages/canon/src/components/icon/index.tsx diff --git a/packages/canon/package.json b/packages/canon/package.json index 95fb5f0373..cf818a230d 100644 --- a/packages/canon/package.json +++ b/packages/canon/package.json @@ -40,7 +40,8 @@ "@vanilla-extract/css": "^1.16.0", "@vanilla-extract/dynamic": "^2.1.2", "@vanilla-extract/recipes": "^0.5.5", - "@vanilla-extract/sprinkles": "^1.6.3" + "@vanilla-extract/sprinkles": "^1.6.3", + "lucide-react": "^0.460.0" }, "devDependencies": { "@backstage/cli": "workspace:^", diff --git a/packages/canon/src/components/icon/context.tsx b/packages/canon/src/components/icon/context.tsx new file mode 100644 index 0000000000..9246642bab --- /dev/null +++ b/packages/canon/src/components/icon/context.tsx @@ -0,0 +1,40 @@ +import React, { createContext, useContext, ReactNode } from 'react'; +import { MoveUp, MoveDown } from 'lucide-react'; +import { CustomIcon } from './custom-icon'; + +// List of icons available that can also be overridden. +export type IconNames = 'MoveDown' | 'MoveUp' | 'CustomIcon'; + +type IconMap = Partial>; + +interface IconContextProps { + icons: IconMap; +} + +// Create a default icon map with only the necessary icons +const defaultIcons: IconMap = { + MoveUp, + MoveDown, + CustomIcon, +}; + +const IconContext = createContext({ icons: defaultIcons }); + +export const IconProvider = ({ + children, + overrides, +}: { + children: ReactNode; + overrides: IconMap; +}) => { + // Merge provided overrides with default icons + const combinedIcons = { ...defaultIcons, ...overrides }; + + return ( + + {children} + + ); +}; + +export const useIcons = () => useContext(IconContext); diff --git a/packages/canon/src/components/icon/custom-icon.tsx b/packages/canon/src/components/icon/custom-icon.tsx new file mode 100644 index 0000000000..2b190b6ade --- /dev/null +++ b/packages/canon/src/components/icon/custom-icon.tsx @@ -0,0 +1,7 @@ +import React from 'react'; + +export const CustomIcon = () => ( + + + +); diff --git a/packages/canon/src/components/icon/icon.stories.tsx b/packages/canon/src/components/icon/icon.stories.tsx new file mode 100644 index 0000000000..e04b6caaf7 --- /dev/null +++ b/packages/canon/src/components/icon/icon.stories.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { Meta, StoryObj } from '@storybook/react'; +import { Icon } from './icon'; +import { IconProvider } from './context'; +import * as LucideIcons from 'lucide-react'; + +const meta = { + title: 'Components/Icon', + component: Icon, + parameters: { + layout: 'centered', + }, + tags: ['autodocs'], + argTypes: { + name: { + control: 'select', + options: Object.keys(LucideIcons), + }, + }, + args: { + name: 'MoveDown', + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Primary: Story = { + args: { + name: 'MoveDown', + }, +}; + +export const CustomIcon: Story = { + args: { + name: 'CustomIcon', + }, +}; + +export const WithCustomIcon: Story = { + args: { + name: 'MoveDown', + }, + decorators: [ + Story => ( +
Custom Icon
}}> + +
+ ), + ], +}; + +export const WithCustomIconOverride: Story = { + args: { + name: 'CustomIcon', + }, + decorators: [ + Story => ( +
Custom Super Icon
}} + > + +
+ ), + ], +}; diff --git a/packages/canon/src/components/icon/icon.tsx b/packages/canon/src/components/icon/icon.tsx new file mode 100644 index 0000000000..2a6ca449ca --- /dev/null +++ b/packages/canon/src/components/icon/icon.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { useIcons, IconNames } from './context'; + +export const Icon = ({ name }: { name: IconNames }) => { + const { icons } = useIcons(); + + const LucideIcon = icons[name]; + + if (!LucideIcon) { + console.error(`Icon "${name}" not found.`); + return ; // Return default icon perhaps? + } + + return ; +}; diff --git a/packages/canon/src/components/icon/index.tsx b/packages/canon/src/components/icon/index.tsx new file mode 100644 index 0000000000..7ae853ecbf --- /dev/null +++ b/packages/canon/src/components/icon/index.tsx @@ -0,0 +1,2 @@ +export * from './icon'; +export * from './context'; diff --git a/packages/canon/src/docs/Theme.mdx b/packages/canon/src/docs/Theme.mdx index ad25eb924e..05407c9f3c 100644 --- a/packages/canon/src/docs/Theme.mdx +++ b/packages/canon/src/docs/Theme.mdx @@ -42,8 +42,7 @@ import * as Table from '../storybook/table'; --canon-text-primary: #f0f0f0; --canon-text-secondary: #666; --canon-font-sans: 'Geist', serif; - --canon-font-monospace: 'Monospace', monospace; - --canon-font-emoji: 'Apple Color Emoji', 'Segoe UI Emoji'; + --canon-font-mono: 'Monospace', monospace; /* ... other values */ } @@ -58,8 +57,7 @@ import * as Table from '../storybook/table'; --canon-text-primary: #fff; --canon-text-secondary: #666; --canon-font-sans: 'Geist', serif; - --canon-font-monospace: 'Monospace', monospace; - --canon-font-emoji: 'Apple Color Emoji', 'Segoe UI Emoji'; + --canon-font-mono: 'Monospace', monospace; /* ... other values */ } `} @@ -68,6 +66,11 @@ import * as Table from '../storybook/table'; /> Colors + + We provide a set of generic colours tokens that we use across Canon. By + changing these colours you can easily change the look and feel of your + application to match your brand. + @@ -88,13 +91,73 @@ import * as Table from '../storybook/table'; The background color for the theme. + + + --canon-surface-1 + + The first surface color for the theme. + + + + --canon-surface-2 + + The second surface color for the theme. + + + + --canon-outline + + The outline color for the theme. + + + + --canon-outline-focus + + The outline focus color for the theme. + + + + --canon-text-primary + + The primary text color for the theme. + + + + --canon-text-secondary + + The secondary text color for the theme. + Typography - Our theming is system is still a work in progress. We will be adding more - features and documentation over time. + We have two fonts that we use across Canon. The first one is the sans-serif + font that we use for the body of the application. The second one is the + monospace font that we use for code blocks and tables. + + + + Prop + Description + + + + + + --canon-font-sans + + The sans-serif font for the theme. + + + + --canon-font-mono + + The monospace font for the theme. + + + + diff --git a/packages/canon/src/index.ts b/packages/canon/src/index.ts index 6c879078e1..00637cb154 100644 --- a/packages/canon/src/index.ts +++ b/packages/canon/src/index.ts @@ -15,5 +15,6 @@ */ // Components -export { Button } from './components/button/button'; -export { Box } from './components/box/box'; +export * from './components/button/button'; +export * from './components/box/box'; +export * from './components/icon'; diff --git a/packages/canon/src/storybook/text/text.css.ts b/packages/canon/src/storybook/text/text.css.ts index fb6f648655..405f89a0de 100644 --- a/packages/canon/src/storybook/text/text.css.ts +++ b/packages/canon/src/storybook/text/text.css.ts @@ -17,7 +17,7 @@ import { globalStyle, style } from '@vanilla-extract/css'; export const textStyles = style({ fontFamily: '"Geist", sans-serif', - fontSize: '18px', + fontSize: '16px', lineHeight: '28px', margin: '0', fontWeight: '300', @@ -26,7 +26,7 @@ export const textStyles = style({ globalStyle(`${textStyles} p`, { fontFamily: '"Geist", sans-serif', - fontSize: '18px', + fontSize: '16px', lineHeight: '28px', margin: '0', fontWeight: '300', diff --git a/packages/canon/src/storybook/title/title.css.ts b/packages/canon/src/storybook/title/title.css.ts index 7c49825206..b8d9ad2796 100644 --- a/packages/canon/src/storybook/title/title.css.ts +++ b/packages/canon/src/storybook/title/title.css.ts @@ -25,8 +25,8 @@ export const titleStyles = recipe({ variants: { type: { h1: { - fontSize: '40px', - lineHeight: '48px', + fontSize: '36px', + lineHeight: '44px', marginBottom: '32px', marginTop: '0px', }, diff --git a/yarn.lock b/yarn.lock index f18b26cae8..8257257f38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4131,6 +4131,7 @@ __metadata: eslint-plugin-react-refresh: ^0.4.13 eslint-plugin-storybook: ^0.11.0 globals: ^15.11.0 + lucide-react: ^0.460.0 mini-css-extract-plugin: ^2.9.2 storybook: ^8.4.4 typescript: ~5.6.2 @@ -35994,6 +35995,15 @@ __metadata: languageName: node linkType: hard +"lucide-react@npm:^0.460.0": + version: 0.460.0 + resolution: "lucide-react@npm:0.460.0" + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + checksum: 6106dc16dd7ce7928d6136e81c9e84e87e1b6b0910a0c78777a387c795c0512755e8bf4c602ab8f09518919999a494ed86ba7190863e8e7aec6c82665147ead3 + languageName: node + linkType: hard + "lunr@npm:^2.3.9": version: 2.3.9 resolution: "lunr@npm:2.3.9" From a524f7cf163d87e9be96dad7b0c66c2b1a4b98c0 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 19 Nov 2024 08:07:12 +0000 Subject: [PATCH 03/29] Fix lock file duplicates Signed-off-by: Charles de Dreuille --- yarn.lock | 342 +++++++++--------------------------------------------- 1 file changed, 55 insertions(+), 287 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8257257f38..774e1de2c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1893,6 +1893,29 @@ __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.25.2": + version: 7.26.0 + resolution: "@babel/core@npm:7.26.0" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.26.0 + "@babel/generator": ^7.26.0 + "@babel/helper-compilation-targets": ^7.25.9 + "@babel/helper-module-transforms": ^7.26.0 + "@babel/helpers": ^7.26.0 + "@babel/parser": ^7.26.0 + "@babel/template": ^7.25.9 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.26.0 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: b296084cfd818bed8079526af93b5dfa0ba70282532d2132caf71d4060ab190ba26d3184832a45accd82c3c54016985a4109ab9118674347a7e5e9bc464894e6 + languageName: node + linkType: hard + "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.19.6, @babel/core@npm:^7.24.7, @babel/core@npm:^7.25.2": version: 7.25.2 resolution: "@babel/core@npm:7.25.2" @@ -2634,7 +2657,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.23.3": +"@babel/plugin-syntax-typescript@npm:^7.23.3, @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: @@ -2645,17 +2668,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.4 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.4" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9b89b8930cd5983f64251d75c9fcdc17a8dc73837d6de12220ff972888ecff4054a6467cf0c423cad242aa96c0f0564a39a0823073728cc02239b80d13f02230 - languageName: node - linkType: hard - "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -3536,16 +3548,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.24.4 - resolution: "@babel/runtime@npm:7.24.4" - dependencies: - regenerator-runtime: ^0.14.0 - checksum: 2f27d4c0ffac7ae7999ac0385e1106f2a06992a8bdcbf3da06adcac7413863cd08c198c2e4e970041bbea849e17f02e1df18875539b6afba76c781b6b59a07c3 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.25.6, @babel/runtime@npm:^7.26.0": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.25.6, @babel/runtime@npm:^7.26.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.26.0 resolution: "@babel/runtime@npm:7.26.0" dependencies: @@ -3587,7 +3590,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.25.9": +"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.4, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.4.5": version: 7.25.9 resolution: "@babel/traverse@npm:7.25.9" dependencies: @@ -3632,6 +3635,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" + dependencies: + "@babel/helper-string-parser": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + checksum: a3dd37dabac693018872da96edb8c1843a605c1bfacde6c3f504fba79b972426a6f24df70aa646356c0c1b19bdd2c722c623c684a996c002381071680602280d + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.26.0 resolution: "@babel/types@npm:7.26.0" @@ -10416,20 +10429,13 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.8.1 - resolution: "@eslint-community/regexpp@npm:4.8.1" - checksum: 82d62c845ef42b810f268cfdc84d803a2da01735fb52e902fd34bdc09f92464a094fd8e4802839874b000b2f73f67c972859e813ba705233515d3e954f234bf2 - languageName: node - linkType: hard - "@eslint/config-array@npm:^0.19.0": version: 0.19.0 resolution: "@eslint/config-array@npm:0.19.0" @@ -10526,15 +10532,6 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.0.0": - version: 1.6.0 - resolution: "@floating-ui/core@npm:1.6.0" - dependencies: - "@floating-ui/utils": ^0.2.1 - checksum: 2e25c53b0c124c5c9577972f8ae21d081f2f7895e6695836a53074463e8c65b47722744d6d2b5a993164936da006a268bcfe87fe68fd24dc235b1cb86bed3127 - languageName: node - linkType: hard - "@floating-ui/core@npm:^1.6.0": version: 1.6.8 resolution: "@floating-ui/core@npm:1.6.8" @@ -10554,29 +10551,7 @@ __metadata: languageName: node linkType: hard -"@floating-ui/dom@npm:^1.6.1": - version: 1.6.3 - resolution: "@floating-ui/dom@npm:1.6.3" - dependencies: - "@floating-ui/core": ^1.0.0 - "@floating-ui/utils": ^0.2.0 - checksum: 81cbb18ece3afc37992f436e469e7fabab2e433248e46fff4302d12493a175b0c64310f8a971e6e1eda7218df28ace6b70237b0f3c22fe12a21bba05b5579555 - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^2.0.0": - version: 2.0.8 - resolution: "@floating-ui/react-dom@npm:2.0.8" - dependencies: - "@floating-ui/dom": ^1.6.1 - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 5da7f13a69281e38859a3203a608fe9de1d850b332b355c10c0c2427c7b7209a0374c10f6295b6577c1a70237af8b678340bd4cc0a4b1c66436a94755d81e526 - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^2.1.2": +"@floating-ui/react-dom@npm:^2.0.0, @floating-ui/react-dom@npm:^2.1.2": version: 2.1.2 resolution: "@floating-ui/react-dom@npm:2.1.2" dependencies: @@ -10602,13 +10577,6 @@ __metadata: languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.0, @floating-ui/utils@npm:^0.2.1": - version: 0.2.1 - resolution: "@floating-ui/utils@npm:0.2.1" - checksum: 9ed4380653c7c217cd6f66ae51f20fdce433730dbc77f95b5abfb5a808f5fdb029c6ae249b4e0490a816f2453aa6e586d9a873cd157fdba4690f65628efc6e06 - languageName: node - linkType: hard - "@floating-ui/utils@npm:^0.2.8": version: 0.2.8 resolution: "@floating-ui/utils@npm:0.2.8" @@ -11784,14 +11752,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0": version: 1.5.0 resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec @@ -12874,19 +12835,7 @@ __metadata: languageName: node linkType: hard -"@mui/types@npm:^7.2.15": - version: 7.2.16 - resolution: "@mui/types@npm:7.2.16" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 7bb86487be8e55a4e138a6a5878ab272caee71546a7a2368223274afae65229f673334e59b8e3f7717ea7ea8d44af5f068b2eb4c212cddb98fefecfa873b868a - languageName: node - linkType: hard - -"@mui/types@npm:^7.2.17, @mui/types@npm:^7.2.19": +"@mui/types@npm:^7.2.15, @mui/types@npm:^7.2.17, @mui/types@npm:^7.2.19": version: 7.2.19 resolution: "@mui/types@npm:7.2.19" peerDependencies: @@ -19233,16 +19182,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.0.15 - resolution: "@types/babel__traverse@npm:7.0.15" - dependencies: - "@babel/types": ^7.3.0 - checksum: 6a45519ebf58e6b1197a0177211099fc3ed613d2a435cf9470c39217af35f29013f7984e1f8c2e160a93b588767cfbbcf0d7f77eae399dfcca18d5257f04cbc2 - languageName: node - linkType: hard - -"@types/babel__traverse@npm:^7.18.0": +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6, @types/babel__traverse@npm:^7.18.0": version: 7.20.6 resolution: "@types/babel__traverse@npm:7.20.6" dependencies: @@ -21167,16 +21107,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.5.0": - version: 8.5.0 - resolution: "@typescript-eslint/scope-manager@npm:8.5.0" - dependencies: - "@typescript-eslint/types": 8.5.0 - "@typescript-eslint/visitor-keys": 8.5.0 - checksum: ee210599652cd21df39467c2b0eeecf97fceb13cf3402e2c11eb47ee4fe1ec9caacba7dedc0917a62febd607bd3517c6ff3a179074c7d2ac4db412d3ea7f392c - languageName: node - linkType: hard - "@typescript-eslint/type-utils@npm:6.21.0": version: 6.21.0 resolution: "@typescript-eslint/type-utils@npm:6.21.0" @@ -21230,13 +21160,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.5.0": - version: 8.5.0 - resolution: "@typescript-eslint/types@npm:8.5.0" - checksum: 74a7ec57f867f02e1c957763a0db3f0f29d41293abb0fc1e067f4de404c0c4e07d7126fff7a10a4e1ccb9ebd45351dd7709dad42367a9defaa9a411ed1b8e29d - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" @@ -21293,25 +21216,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.5.0": - version: 8.5.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.5.0" - dependencies: - "@typescript-eslint/types": 8.5.0 - "@typescript-eslint/visitor-keys": 8.5.0 - debug: ^4.3.4 - fast-glob: ^3.3.2 - is-glob: ^4.0.3 - minimatch: ^9.0.4 - semver: ^7.6.0 - ts-api-utils: ^1.3.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: e8a4d2fc560ab9084c4cafa7933ce17ca9906c88610282507a54c509dea4c03c00182880e34396cfb3b643264d032620dfe14ceba7cc03022ad0fd4213c5548d - languageName: node - linkType: hard - "@typescript-eslint/utils@npm:6.21.0, @typescript-eslint/utils@npm:^6.0.0": version: 6.21.0 resolution: "@typescript-eslint/utils@npm:6.21.0" @@ -21329,7 +21233,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.14.0, @typescript-eslint/utils@npm:^8.8.1": +"@typescript-eslint/utils@npm:8.14.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.8.1": version: 8.14.0 resolution: "@typescript-eslint/utils@npm:8.14.0" dependencies: @@ -21361,20 +21265,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0": - version: 8.5.0 - resolution: "@typescript-eslint/utils@npm:8.5.0" - dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 8.5.0 - "@typescript-eslint/types": 8.5.0 - "@typescript-eslint/typescript-estree": 8.5.0 - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - checksum: d91d4f29aa3275e35734dbf84dfdb2e0e5557c2ed4181e760b3d9319379f19295a79d223b06f5f3583e4de80938dfe47814a11b7fd66a737b5ca6bbe6a555632 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" @@ -21405,16 +21295,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.5.0": - version: 8.5.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.5.0" - dependencies: - "@typescript-eslint/types": 8.5.0 - eslint-visitor-keys: ^3.4.3 - checksum: dbba7071e9723d0e525d8b350834d95699037e9e7ba9cf2b3b4fb6cf3fd47072869874f665daca54bc084c910a4ae0acfd5670625a4cc62a173662b09f92e79e - 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" @@ -22818,7 +22698,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.14.0": +"acorn@npm:^8.14.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.14.0 resolution: "acorn@npm:8.14.0" bin: @@ -22827,15 +22707,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.11.3 - resolution: "acorn@npm:8.11.3" - bin: - acorn: bin/acorn - checksum: 76d8e7d559512566b43ab4aadc374f11f563f0a9e21626dd59cb2888444e9445923ae9f3699972767f18af61df89cd89f5eaaf772d1327b055b45cb829b4a88c - languageName: node - linkType: hard - "address@npm:^1.0.1, address@npm:^1.1.2": version: 1.1.2 resolution: "address@npm:1.1.2" @@ -24918,9 +24789,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001616, caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001684 - resolution: "caniuse-lite@npm:1.0.30001684" - checksum: 5ee7aca9c29067d2e4c88cd05cbc062599d86389cd99e26e4d4bf84de8fad3f9ed2be9d3d909dfb65f50e77a17192175cb132eca7f0988ab0f3e8c4aa0dccd38 + version: 1.0.30001680 + resolution: "caniuse-lite@npm:1.0.30001680" + checksum: 2641d2b18c5ab0a6663cb350c5adc81e5ede1a7677d1c7518a8053ada87bf6f206419e1820a2608f76fa5e4f7bea327cbe47df423783e571569a88c0ea645270 languageName: node linkType: hard @@ -25188,14 +25059,7 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.2": - version: 1.3.1 - resolution: "cjs-module-lexer@npm:1.3.1" - checksum: 75f20ac264a397ea5c63f9c2343a51ab878043666468f275e94862f7180ec1d764a400ec0c09085dcf0db3193c74a8b571519abd2bf4be0d2be510d1377c8d4b - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^1.2.3": +"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.2, cjs-module-lexer@npm:^1.2.3": version: 1.4.1 resolution: "cjs-module-lexer@npm:1.4.1" checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 @@ -26727,14 +26591,7 @@ __metadata: languageName: node linkType: hard -"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 - languageName: node - linkType: hard - -"csstype@npm:^3.0.7": +"csstype@npm:^3.0.2, csstype@npm:^3.0.7, csstype@npm:^3.1.2, csstype@npm:^3.1.3": version: 3.1.3 resolution: "csstype@npm:3.1.3" checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 @@ -27100,19 +26957,7 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": - version: 1.5.1 - resolution: "dedent@npm:1.5.1" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a - languageName: node - linkType: hard - -"dedent@npm:^1.5.3": +"dedent@npm:^1.0.0, dedent@npm:^1.5.3": version: 1.5.3 resolution: "dedent@npm:1.5.3" peerDependencies: @@ -28236,14 +28081,7 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.3.1": - version: 1.4.1 - resolution: "es-module-lexer@npm:1.4.1" - checksum: a11b5a256d4e8e9c7d94c2fd87415ccd1591617b6edd847e064503f8eaece2d25e2e9078a02c5ce3ed5e83bb748f5b4820efbe78072c8beb07ac619c2edec35d - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.5.0": +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.3.1, es-module-lexer@npm:^1.5.0": version: 1.5.4 resolution: "es-module-lexer@npm:1.5.4" checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f @@ -29187,16 +29025,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" - dependencies: - estraverse: ^5.1.0 - checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 - languageName: node - linkType: hard - -"esquery@npm:^1.5.0": +"esquery@npm:^1.4.2, esquery@npm:^1.5.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -32425,14 +32254,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.4, ignore@npm:^5.1.8, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.3.1 - resolution: "ignore@npm:5.3.1" - checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 - languageName: node - linkType: hard - -"ignore@npm:^5.3.1": +"ignore@npm:^5.1.4, ignore@npm:^5.1.8, ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be @@ -36036,16 +35858,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.10, magic-string@npm:^0.30.3": - version: 0.30.10 - resolution: "magic-string@npm:0.30.10" - dependencies: - "@jridgewell/sourcemap-codec": ^1.4.15 - checksum: 456fd47c39b296c47dff967e1965121ace35417eab7f45a99e681e725b8661b48e1573c366ee67a27715025b3740773c46b088f115421c7365ea4ea6fa10d399 - languageName: node - linkType: hard - -"magic-string@npm:^0.30.5": +"magic-string@npm:^0.30.10, magic-string@npm:^0.30.3, magic-string@npm:^0.30.5": version: 0.30.12 resolution: "magic-string@npm:0.30.12" dependencies: @@ -47081,16 +46894,7 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.0.0, use-sync-external-store@npm:^1.2.0": - version: 1.2.0 - resolution: "use-sync-external-store@npm:1.2.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a - languageName: node - linkType: hard - -"use-sync-external-store@npm:^1.2.2": +"use-sync-external-store@npm:^1.0.0, use-sync-external-store@npm:^1.2.0, use-sync-external-store@npm:^1.2.2": version: 1.2.2 resolution: "use-sync-external-store@npm:1.2.2" peerDependencies: @@ -47786,7 +47590,7 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5": +"webpack@npm:5, webpack@npm:^5, webpack@npm:^5.94.0": version: 5.96.1 resolution: "webpack@npm:5.96.1" dependencies: @@ -47822,42 +47626,6 @@ __metadata: languageName: node linkType: hard -"webpack@npm:^5, webpack@npm:^5.94.0": - version: 5.95.0 - resolution: "webpack@npm:5.95.0" - dependencies: - "@types/estree": ^1.0.5 - "@webassemblyjs/ast": ^1.12.1 - "@webassemblyjs/wasm-edit": ^1.12.1 - "@webassemblyjs/wasm-parser": ^1.12.1 - acorn: ^8.7.1 - acorn-import-attributes: ^1.9.5 - browserslist: ^4.21.10 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.17.1 - es-module-lexer: ^1.2.1 - eslint-scope: 5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.11 - json-parse-even-better-errors: ^2.3.1 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.2.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.3.10 - watchpack: ^2.4.1 - webpack-sources: ^3.2.3 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 0c3dfe288de4d62f8f3dc25478a618894883cab739121330763b7847e43304630ea2815ae2351a5f8ff6ab7c9642caf530d503d89bda261fe2cd220e524dd5d1 - languageName: node - linkType: hard - "websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": version: 0.7.4 resolution: "websocket-driver@npm:0.7.4" From cc7a706683a1f222e6d2561dc4cdd1a7e2985cf6 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Sat, 23 Nov 2024 13:30:17 +0000 Subject: [PATCH 04/29] Improve layout components Signed-off-by: Charles de Dreuille --- packages/canon/.storybook/main.ts | 5 +- packages/canon/.storybook/preview.tsx | 5 +- packages/canon/package.json | 19 +- packages/canon/src/components/box/box.mdx | 285 ++++++++++++-- .../canon/src/components/box/box.stories.tsx | 10 +- packages/canon/src/components/box/box.tsx | 2 +- .../canon/src/components/box/properties.ts | 64 ++++ .../canon/src/components/box/sprinkles.css.ts | 99 +++-- .../canon/src/components/button/button.css.ts | 3 +- .../src/components/button/button.stories.tsx | 27 ++ .../canon/src/components/button/button.tsx | 8 + .../canon/src/components/icon/context.tsx | 17 +- .../src/components/icon/icon.stories.tsx | 8 +- .../src/components/stack/sprinkles.css.ts | 37 ++ .../canon/src/components/stack/stack.css.ts | 21 + .../src/components/stack/stack.stories.tsx | 62 +++ packages/canon/src/components/stack/stack.tsx | 59 +++ packages/canon/src/docs/Home.mdx | 4 +- packages/canon/src/docs/Theme.mdx | 4 +- packages/canon/src/storybook/chip/chip.css.ts | 36 +- packages/canon/src/storybook/chip/index.tsx | 10 +- packages/canon/src/storybook/index.ts | 4 + .../canon/src/storybook/props-table/index.tsx | 74 ---- .../storybook/props-table/props-table.css.ts | 70 ---- .../canon/src/storybook/table/table.css.ts | 1 + packages/canon/src/theme/theme.css | 18 +- yarn.lock | 362 +++++++++--------- 27 files changed, 862 insertions(+), 452 deletions(-) create mode 100644 packages/canon/src/components/box/properties.ts create mode 100644 packages/canon/src/components/stack/sprinkles.css.ts create mode 100644 packages/canon/src/components/stack/stack.css.ts create mode 100644 packages/canon/src/components/stack/stack.stories.tsx create mode 100644 packages/canon/src/components/stack/stack.tsx create mode 100644 packages/canon/src/storybook/index.ts delete mode 100644 packages/canon/src/storybook/props-table/index.tsx delete mode 100644 packages/canon/src/storybook/props-table/props-table.css.ts diff --git a/packages/canon/.storybook/main.ts b/packages/canon/.storybook/main.ts index b1e87159a3..86dc3ec87f 100644 --- a/packages/canon/.storybook/main.ts +++ b/packages/canon/.storybook/main.ts @@ -1,5 +1,5 @@ import type { StorybookConfig } from '@storybook/react-webpack5'; -const { VanillaExtractPlugin } = require('@vanilla-extract/webpack-plugin'); +import { VanillaExtractPlugin } from '@vanilla-extract/webpack-plugin'; import { merge } from 'webpack-merge'; import { join, dirname } from 'path'; @@ -20,11 +20,10 @@ const config: StorybookConfig = { staticDirs: ['../static'], addons: [ getAbsolutePath('@storybook/addon-webpack5-compiler-swc'), - getAbsolutePath('@storybook/addon-onboarding'), getAbsolutePath('@storybook/addon-essentials'), getAbsolutePath('@chromatic-com/storybook'), getAbsolutePath('@storybook/addon-interactions'), - // getAbsolutePath("@storybook/addon-styling-webpack") + getAbsolutePath('@storybook/addon-themes'), ], framework: { name: getAbsolutePath('@storybook/react-webpack5'), diff --git a/packages/canon/.storybook/preview.tsx b/packages/canon/.storybook/preview.tsx index 05eea4b8ec..4e82cbb8a0 100644 --- a/packages/canon/.storybook/preview.tsx +++ b/packages/canon/.storybook/preview.tsx @@ -1,9 +1,6 @@ import React from 'react'; import type { Preview, ReactRenderer } from '@storybook/react'; -import { - withThemeByClassName, - withThemeByDataAttribute, -} from '@storybook/addon-themes'; +import { withThemeByDataAttribute } from '@storybook/addon-themes'; import '../src/theme/styles.css'; diff --git a/packages/canon/package.json b/packages/canon/package.json index cf818a230d..eafd752a83 100644 --- a/packages/canon/package.json +++ b/packages/canon/package.json @@ -47,16 +47,15 @@ "@backstage/cli": "workspace:^", "@chromatic-com/storybook": "^3.2.2", "@eslint/js": "^9.13.0", - "@storybook/addon-essentials": "^8.4.4", - "@storybook/addon-interactions": "^8.4.4", - "@storybook/addon-onboarding": "^8.4.4", + "@storybook/addon-essentials": "^8.4.5", + "@storybook/addon-interactions": "^8.4.5", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.4.4", + "@storybook/addon-themes": "^8.4.5", "@storybook/addon-webpack5-compiler-swc": "^1.0.5", - "@storybook/blocks": "^8.4.4", - "@storybook/react": "^8.4.4", - "@storybook/react-webpack5": "^8.4.4", - "@storybook/test": "^8.4.4", + "@storybook/blocks": "^8.4.5", + "@storybook/react": "^8.4.5", + "@storybook/react-webpack5": "^8.4.5", + "@storybook/test": "^8.4.5", "@testing-library/jest-dom": "^6.0.0", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.1", @@ -65,10 +64,10 @@ "eslint": "^9.13.0", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.13", - "eslint-plugin-storybook": "^0.11.0", + "eslint-plugin-storybook": "^0.11.1", "globals": "^15.11.0", "mini-css-extract-plugin": "^2.9.2", - "storybook": "^8.4.4", + "storybook": "^8.4.5", "typescript": "~5.6.2", "typescript-eslint": "^8.10.0", "webpack-merge": "^6.0.1" diff --git a/packages/canon/src/components/box/box.mdx b/packages/canon/src/components/box/box.mdx index 6b2264db6f..e827d8fcfd 100644 --- a/packages/canon/src/components/box/box.mdx +++ b/packages/canon/src/components/box/box.mdx @@ -1,59 +1,231 @@ import { Canvas, Meta, Unstyled } from '@storybook/blocks'; import * as BoxStories from './box.stories'; -import { PropsTable } from '../../storybook/props-table'; import { Chip } from '../../storybook/chip'; import * as Table from '../../storybook/table'; +import { Box } from './box'; +import { Stack } from '../stack/stack'; +import { Title, Text } from '../../storybook'; +import { + alignItems, + backgroundColors, + boxShadows, + borderRadius, + display, +} from './properties'; -# Box - -Box is the lowest-level component in Canon. We use it internally to build all of our components. - - - +Box + + Box is the lowest-level component in Canon. We use it internally to build all + of our components. + + + + + + + padding + + + + + paddingX + + + + + paddingY + + + + + + + paddingTop + + + + + paddingBottom + + + + + paddingLeft + + + + + paddingRight + + + + + Prop Type Default - Description - background + alignItems - string + {alignItems.map(n => ( + {n} + ))} + + + stretch + + + + + background + + + {Object.keys(backgroundColors).map(n => ( + {n} + ))} transparent - The background color of the box. - display + borderRadius - block - flex - inline-block - inline-flex + {Object.keys(borderRadius).map(n => ( + {n} + ))} + + + none + + + + + boxShadow + + + {Object.keys(boxShadows).map(n => ( + {n} + ))} + + + + + display + + + {display.map(n => ( + {n} + ))} block - The display property of the box. - padding + padding + p number @@ -61,11 +233,11 @@ Box is the lowest-level component in Canon. We use it internally to build all of 0 - The padding of the box. - paddingX + paddingX + px number @@ -73,11 +245,11 @@ Box is the lowest-level component in Canon. We use it internally to build all of 0 - The horizontal padding of the box. - paddingY + paddingY + py number @@ -85,11 +257,11 @@ Box is the lowest-level component in Canon. We use it internally to build all of 0 - The vertical padding of the box. - paddingLeft + paddingLeft + pl number @@ -97,11 +269,71 @@ Box is the lowest-level component in Canon. We use it internally to build all of 0 - The left padding of the box. - paddingRight + paddingRight + pr + + + number + + + 0 + + + + + margin + m + + + number + + + 0 + + + + + marginX + mx + + + number + + + 0 + + + + + marginY + my + + + number + + + 0 + + + + + marginLeft + ml + + + number + + + 0 + + + + + marginRight + mr number @@ -109,7 +341,6 @@ Box is the lowest-level component in Canon. We use it internally to build all of 0 - The right padding of the box. diff --git a/packages/canon/src/components/box/box.stories.tsx b/packages/canon/src/components/box/box.stories.tsx index 6de85ca178..fa78813a73 100644 --- a/packages/canon/src/components/box/box.stories.tsx +++ b/packages/canon/src/components/box/box.stories.tsx @@ -18,7 +18,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Box } from './box'; const meta = { - title: 'Components/Box', + title: 'Layout/Box', component: Box, parameters: { layout: 'centered', @@ -31,7 +31,13 @@ type Story = StoryObj; export const Basic: Story = { render: () => ( - + Basic Box ), diff --git a/packages/canon/src/components/box/box.tsx b/packages/canon/src/components/box/box.tsx index 561bf2c0f1..1dd722d3ad 100644 --- a/packages/canon/src/components/box/box.tsx +++ b/packages/canon/src/components/box/box.tsx @@ -22,7 +22,7 @@ type HTMLProperties = Omit< keyof Sprinkles >; -type BoxProps = Sprinkles & +export type BoxProps = Sprinkles & HTMLProperties & { as?: keyof JSX.IntrinsicElements; }; diff --git a/packages/canon/src/components/box/properties.ts b/packages/canon/src/components/box/properties.ts new file mode 100644 index 0000000000..5d4e851a0e --- /dev/null +++ b/packages/canon/src/components/box/properties.ts @@ -0,0 +1,64 @@ +export const alignItems = ['stretch', 'flex-start', 'center', 'flex-end']; + +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)' }, +}; + +export const borderRadius = { + none: 0, + small: '4px', + medium: '8px', + full: '9999px', +}; + +export const backgroundColors = { + background: 'var(--canon-color-background)', + elevation1: 'var(--canon-color-elevation1)', + elevation2: 'var(--canon-color-elevation2)', + transparent: 'transparent', +}; + +export const border = { + none: 'none', + thin: '1px solid var(--canon-outline)', + error: '1px solid var(--canon-error)', +}; + +export const boxShadows = { + small: 'var(--canon-box-shadow-small)', + medium: 'var(--canon-box-shadow-medium)', + large: 'var(--canon-box-shadow-large)', +}; + +export const colors = { + background: '#eff6ff', +}; + +export const display = ['none', 'flex', 'block', 'inline']; + +export const flexDirection = ['row', 'column'] as const; + +export const justifyContent = [ + 'stretch', + 'flex-start', + 'center', + 'flex-end', + 'space-around', + 'space-between', +]; + +export const space = { + none: 0, + xxs: 'var(--space-xxs)', + xs: 'var(--space-xs)', + sm: 'var(--space-sm)', + md: 'var(--space-md)', + lg: 'var(--space-lg)', + xl: 'var(--space-xl)', + xxl: 'var(--space-xxl)', +}; diff --git a/packages/canon/src/components/box/sprinkles.css.ts b/packages/canon/src/components/box/sprinkles.css.ts index 30ce3e0cdf..e8e912fef4 100644 --- a/packages/canon/src/components/box/sprinkles.css.ts +++ b/packages/canon/src/components/box/sprinkles.css.ts @@ -14,66 +14,83 @@ * limitations under the License. */ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; +import { + alignItems, + borderRadius, + breakpoints, + colors, + backgroundColors, + display, + flexDirection, + justifyContent, + space, + boxShadows, + border, +} from './properties'; -const space = { - none: 0, - small: '4px', - medium: '8px', - large: '16px', - // etc. +export const commonProperties = { + flexDirection, + justifyContent, + alignItems, + borderRadius, + boxShadow: boxShadows, + border, + paddingTop: space, + paddingBottom: space, + paddingLeft: space, + paddingRight: space, + marginTop: space, + marginBottom: space, + marginLeft: space, + marginRight: space, + gap: space, }; -const colors = { - background: '#eff6ff', +export const boxShorthands: Record = { + padding: ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'], + paddingX: ['paddingLeft', 'paddingRight'], + paddingY: ['paddingTop', 'paddingBottom'], + p: ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'], + pt: ['paddingTop'], + pr: ['paddingRight'], + pb: ['paddingBottom'], + pl: ['paddingLeft'], + px: ['paddingLeft', 'paddingRight'], + py: ['paddingTop', 'paddingBottom'], + margin: ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'], + marginX: ['marginLeft', 'marginRight'], + marginY: ['marginTop', 'marginBottom'], + m: ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'], + mt: ['marginTop'], + mr: ['marginRight'], + mb: ['marginBottom'], + ml: ['marginLeft'], + mx: ['marginLeft', 'marginRight'], + my: ['marginTop', 'marginBottom'], }; const responsiveProperties = defineProperties({ - conditions: { - 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)' }, - }, + conditions: breakpoints, defaultCondition: 'xs', properties: { - display: ['none', 'flex', 'block', 'inline'], - flexDirection: ['row', 'column'], - justifyContent: [ - 'stretch', - 'flex-start', - 'center', - 'flex-end', - 'space-around', - 'space-between', - ], - alignItems: ['stretch', 'flex-start', 'center', 'flex-end'], - paddingTop: space, - paddingBottom: space, - paddingLeft: space, - paddingRight: space, - // fontFamily: font, - gap: space, - // etc. + ...commonProperties, + display, }, shorthands: { - padding: ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'], - paddingX: ['paddingLeft', 'paddingRight'], - paddingY: ['paddingTop', 'paddingBottom'], + ...boxShorthands, placeItems: ['justifyContent', 'alignItems'], }, }); const colorProperties = defineProperties({ conditions: { - lightMode: {}, - darkMode: { '@media': '(prefers-color-scheme: dark)' }, + light: { selector: '[data-theme="light"] &' }, + dark: { selector: '[data-theme="dark"] &' }, }, - defaultCondition: 'lightMode', + defaultCondition: ['light', 'dark'], properties: { color: colors, - background: colors, + background: backgroundColors, }, }); diff --git a/packages/canon/src/components/button/button.css.ts b/packages/canon/src/components/button/button.css.ts index 8ab3b663ae..e3882831f6 100644 --- a/packages/canon/src/components/button/button.css.ts +++ b/packages/canon/src/components/button/button.css.ts @@ -19,7 +19,8 @@ import { recipe } from '@vanilla-extract/recipes'; export const button = recipe({ base: { all: 'unset', - display: 'inline-block', + display: 'inline-flex', + alignItems: 'center', userSelect: 'none', fontFamily: 'var(--canon-font-sans)', fontWeight: 600, diff --git a/packages/canon/src/components/button/button.stories.tsx b/packages/canon/src/components/button/button.stories.tsx index 8a9d7f3845..b979b92022 100644 --- a/packages/canon/src/components/button/button.stories.tsx +++ b/packages/canon/src/components/button/button.stories.tsx @@ -16,6 +16,7 @@ import React from 'react'; import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './button'; +import { Box } from '../box/box'; const meta = { title: 'Components/Button', @@ -63,6 +64,32 @@ export const Sizes: Story = { ), }; +export const WithIcons: Story = { + args: { + children: 'Button', + }, + render: args => ( +
+
+ ), +}; + +export const FullWidth: Story = { + args: { + children: 'Button', + }, + render: args => ( + +