From 093ed08af1ef4be45b6c8d0985c2bb16506a2140 Mon Sep 17 00:00:00 2001 From: Kevin Nagurski Date: Thu, 19 Dec 2024 20:34:19 +0000 Subject: [PATCH] pick feat: [XD-47]: Initial effort for component library docs --- apps/design-system/package.json | 4 +- apps/design-system/src/App.tsx | 14 +- .../docs-layout/docs-layout.module.css | 10 + .../components/docs-layout/docs-layout.tsx | 22 + .../docs-navbar/docs-navbar.module.css | 9 + .../components/docs-navbar/docs-navbar.tsx | 56 ++ .../docs-page/component-example.tsx | 17 + .../src/components/docs-page/docs-page.tsx | 13 + .../docs-page/example-layout.module.css | 7 + .../components/docs-page/example-layout.tsx | 7 + .../components/docs-page/example.module.css | 48 ++ .../src/components/docs-page/example.tsx | 141 +++++ .../src/components/docs-page/root.module.css | 13 + .../src/components/docs-page/root.tsx | 11 + .../src/components/docs-page/section.tsx | 20 + .../src/components/docs-page/summary.tsx | 18 + apps/design-system/src/main.tsx | 2 +- .../src/pages/component-page.tsx | 14 + .../view-preview/repo-files-view-wrapper.tsx | 6 +- .../repo-settings-view-wrapper.tsx | 4 +- .../pages/view-preview/repo-view-wrapper.tsx | 5 +- .../pages/view-preview/root-view-wrapper.tsx | 4 +- .../src/pages/view-preview/view-preview.tsx | 32 +- .../view-switcher/view-switcher.module.css | 10 - .../view-switcher/view-switcher.tsx | 38 -- .../src/subjects/components/alert.tsx | 29 + .../src/subjects/components/badge.tsx | 24 + .../src/subjects/components/button.tsx | 158 ++++++ .../src/subjects/components/componentPages.ts | 17 + .../execution-list/execution-list.store.ts | 4 +- .../views/execution-list/execution-list.tsx | 5 +- .../pipeline-list/pipeline-list.store.ts | 4 +- .../views/pipeline-list/pipeline-list.tsx | 5 +- .../pull-request-compare.tsx | 7 +- .../pull-request-compare/repo-branch-store.ts | 4 +- .../pull-request-compare/repo-commit-store.ts | 2 +- .../pull-request-list-store.ts | 2 +- .../pull-request-list/pull-request-list.tsx | 5 +- .../views/repo-commits/index.tsx | 3 +- .../views/repo-commits/repo-commits-store.ts | 0 .../components/repo-file-content-viewer.tsx | 5 +- .../repo-files/components/repo-file-edit.tsx | 7 +- .../repo-files/components/repo-files-store.ts | 0 .../components/repo-files-wrapper.tsx | 3 +- .../context/exit-confirm-context.tsx | 0 .../repo-files}/hooks/use-exit-confirm.ts | 0 .../{ => subjects}/views/repo-files/index.ts | 2 +- .../views/repo-files/repo-files-edit-view.tsx | 0 .../views/repo-files/repo-files-json-view.tsx | 0 .../views/repo-files/repo-files-list.tsx | 0 .../repo-files/repo-files-markdown-view.tsx | 0 .../views/repo-files}/theme/monaco-theme.ts | 0 .../views/repo-list/repo-list-store.json | 0 .../views/repo-list/repo-list.tsx | 3 +- .../repo-summary/repo-summary-props.json | 0 .../views/repo-summary/repo-summary.tsx | 3 +- .../repo-webhooks-list.tsx | 3 +- .../repo-webhooks-list-store.ts | 6 +- .../repo-webhooks-list/repo-webhooks-list.tsx | 3 +- .../src/{utils.ts => utils/viewUtils.ts} | 1 + apps/design-system/tsconfig.app.json | 9 +- apps/design-system/tsconfig.json | 5 +- apps/design-system/vite.config.ts | 3 +- packages/ui/locales/en/views.json | 2 +- packages/ui/locales/es/views.json | 2 +- packages/ui/locales/fr/views.json | 2 +- packages/ui/package.json | 2 +- packages/ui/src/components/index.ts | 1 + packages/ui/src/components/more-submenu.tsx | 3 +- .../components/navbar-skeleton/content.tsx | 11 + .../src/components/navbar-skeleton/footer.tsx | 7 + .../src/components/navbar-skeleton/group.tsx | 31 ++ .../src/components/navbar-skeleton/header.tsx | 5 + .../src/components/navbar-skeleton/index.ts | 15 + .../src/components/navbar-skeleton/item.tsx | 99 ++++ .../{navbar => }/navbar-skeleton/noise.png | Bin .../src/components/navbar-skeleton/root.tsx | 61 ++ .../components/navbar/navbar-item/index.tsx | 2 +- .../navbar/navbar-skeleton/index.tsx | 202 ------- packages/ui/src/components/navbar/navbar.tsx | 7 +- packages/ui/src/components/settings-menu.tsx | 3 +- packages/ui/src/components/text.tsx | 2 +- .../repo-settings/components/repo-sidebar.tsx | 2 +- pnpm-lock.yaml | 525 ++++++++++++------ 84 files changed, 1322 insertions(+), 509 deletions(-) create mode 100644 apps/design-system/src/components/docs-layout/docs-layout.module.css create mode 100644 apps/design-system/src/components/docs-layout/docs-layout.tsx create mode 100644 apps/design-system/src/components/docs-navbar/docs-navbar.module.css create mode 100644 apps/design-system/src/components/docs-navbar/docs-navbar.tsx create mode 100644 apps/design-system/src/components/docs-page/component-example.tsx create mode 100644 apps/design-system/src/components/docs-page/docs-page.tsx create mode 100644 apps/design-system/src/components/docs-page/example-layout.module.css create mode 100644 apps/design-system/src/components/docs-page/example-layout.tsx create mode 100644 apps/design-system/src/components/docs-page/example.module.css create mode 100644 apps/design-system/src/components/docs-page/example.tsx create mode 100644 apps/design-system/src/components/docs-page/root.module.css create mode 100644 apps/design-system/src/components/docs-page/root.tsx create mode 100644 apps/design-system/src/components/docs-page/section.tsx create mode 100644 apps/design-system/src/components/docs-page/summary.tsx create mode 100644 apps/design-system/src/pages/component-page.tsx delete mode 100644 apps/design-system/src/pages/view-preview/view-switcher/view-switcher.module.css delete mode 100644 apps/design-system/src/pages/view-preview/view-switcher/view-switcher.tsx create mode 100644 apps/design-system/src/subjects/components/alert.tsx create mode 100644 apps/design-system/src/subjects/components/badge.tsx create mode 100644 apps/design-system/src/subjects/components/button.tsx create mode 100644 apps/design-system/src/subjects/components/componentPages.ts rename apps/design-system/src/{ => subjects}/views/execution-list/execution-list.store.ts (96%) rename apps/design-system/src/{ => subjects}/views/execution-list/execution-list.tsx (83%) rename apps/design-system/src/{ => subjects}/views/pipeline-list/pipeline-list.store.ts (97%) rename apps/design-system/src/{ => subjects}/views/pipeline-list/pipeline-list.tsx (91%) rename apps/design-system/src/{ => subjects}/views/pull-request-compare/pull-request-compare.tsx (91%) rename apps/design-system/src/{ => subjects}/views/pull-request-compare/repo-branch-store.ts (96%) rename apps/design-system/src/{ => subjects}/views/pull-request-compare/repo-commit-store.ts (96%) rename apps/design-system/src/{ => subjects}/views/pull-request-list/pull-request-list-store.ts (92%) rename apps/design-system/src/{ => subjects}/views/pull-request-list/pull-request-list.tsx (82%) rename apps/design-system/src/{ => subjects}/views/repo-commits/index.tsx (95%) rename apps/design-system/src/{ => subjects}/views/repo-commits/repo-commits-store.ts (100%) rename apps/design-system/src/{ => subjects}/views/repo-files/components/repo-file-content-viewer.tsx (96%) rename apps/design-system/src/{ => subjects}/views/repo-files/components/repo-file-edit.tsx (93%) rename apps/design-system/src/{ => subjects}/views/repo-files/components/repo-files-store.ts (100%) rename apps/design-system/src/{ => subjects}/views/repo-files/components/repo-files-wrapper.tsx (96%) rename apps/design-system/src/{ => subjects/views/repo-files}/context/exit-confirm-context.tsx (100%) rename apps/design-system/src/{ => subjects/views/repo-files}/hooks/use-exit-confirm.ts (100%) rename apps/design-system/src/{ => subjects}/views/repo-files/index.ts (72%) rename apps/design-system/src/{ => subjects}/views/repo-files/repo-files-edit-view.tsx (100%) rename apps/design-system/src/{ => subjects}/views/repo-files/repo-files-json-view.tsx (100%) rename apps/design-system/src/{ => subjects}/views/repo-files/repo-files-list.tsx (100%) rename apps/design-system/src/{ => subjects}/views/repo-files/repo-files-markdown-view.tsx (100%) rename apps/design-system/src/{ => subjects/views/repo-files}/theme/monaco-theme.ts (100%) rename apps/design-system/src/{ => subjects}/views/repo-list/repo-list-store.json (100%) rename apps/design-system/src/{ => subjects}/views/repo-list/repo-list.tsx (91%) rename apps/design-system/src/{ => subjects}/views/repo-summary/repo-summary-props.json (100%) rename apps/design-system/src/{ => subjects}/views/repo-summary/repo-summary.tsx (96%) rename apps/design-system/src/{ => subjects}/views/repo-webhooks-create/repo-webhooks-list.tsx (88%) rename apps/design-system/src/{ => subjects}/views/repo-webhooks-list/repo-webhooks-list-store.ts (91%) rename apps/design-system/src/{ => subjects}/views/repo-webhooks-list/repo-webhooks-list.tsx (94%) rename apps/design-system/src/{utils.ts => utils/viewUtils.ts} (89%) create mode 100644 packages/ui/src/components/navbar-skeleton/content.tsx create mode 100644 packages/ui/src/components/navbar-skeleton/footer.tsx create mode 100644 packages/ui/src/components/navbar-skeleton/group.tsx create mode 100644 packages/ui/src/components/navbar-skeleton/header.tsx create mode 100644 packages/ui/src/components/navbar-skeleton/index.ts create mode 100644 packages/ui/src/components/navbar-skeleton/item.tsx rename packages/ui/src/components/{navbar => }/navbar-skeleton/noise.png (100%) create mode 100644 packages/ui/src/components/navbar-skeleton/root.tsx delete mode 100644 packages/ui/src/components/navbar/navbar-skeleton/index.tsx diff --git a/apps/design-system/package.json b/apps/design-system/package.json index 7ccd7bb44..a11f1fc20 100644 --- a/apps/design-system/package.json +++ b/apps/design-system/package.json @@ -15,8 +15,10 @@ "@harnessio/ui": "workspace:*", "@harnessio/yaml-editor": "workspace:*", "clsx": "^2.1.1", + "monaco-editor": "0.50.0", "react": "^18.3.1", "react-dom": "^18.3.1", + "react-live": "^4.1.8", "react-router-dom": "^6.26.0" }, "devDependencies": { @@ -30,7 +32,7 @@ "typescript": "~5.6.2", "typescript-eslint": "^8.15.0", "vite": "^6.0.3", - "monaco-editor": "0.50.0" + "vite-tsconfig-paths": "^5.1.4" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ diff --git a/apps/design-system/src/App.tsx b/apps/design-system/src/App.tsx index 7dfa3e1aa..45a547862 100644 --- a/apps/design-system/src/App.tsx +++ b/apps/design-system/src/App.tsx @@ -1,20 +1,18 @@ import { FC } from 'react' import { createBrowserRouter, Navigate, RouterProvider } from 'react-router-dom' -import { ExitConfirmProvider } from './context/exit-confirm-context.tsx' -import ViewPreview from './pages/view-preview/view-preview.tsx' +import ComponentPage from '@/pages/component-page' +import ViewPreview from '@/pages/view-preview/view-preview' +import DocsLayout from '@components/docs-layout/docs-layout' const router = createBrowserRouter([ { path: '/view-preview/*', element: }, - { path: '/*', element: } // temp redirect to view preview + { path: '/docs/*', element: , children: [{ path: 'components/*', element: }] }, + { path: '/*', element: } ]) const App: FC = () => { - return ( - - - - ) + return } export default App diff --git a/apps/design-system/src/components/docs-layout/docs-layout.module.css b/apps/design-system/src/components/docs-layout/docs-layout.module.css new file mode 100644 index 000000000..5e38d481b --- /dev/null +++ b/apps/design-system/src/components/docs-layout/docs-layout.module.css @@ -0,0 +1,10 @@ +.layout { + display: grid; + grid-template-columns: auto 1fr; +} + +.navbar { + position: sticky; + top: 0; + left: 0; +} diff --git a/apps/design-system/src/components/docs-layout/docs-layout.tsx b/apps/design-system/src/components/docs-layout/docs-layout.tsx new file mode 100644 index 000000000..720b32955 --- /dev/null +++ b/apps/design-system/src/components/docs-layout/docs-layout.tsx @@ -0,0 +1,22 @@ +import { FC, useEffect } from 'react' +import { Outlet } from 'react-router-dom' + +import '@harnessio/ui/styles.css' + +import DocsNavbar from '@components/docs-navbar/docs-navbar' + +import css from './docs-layout.module.css' + +const DocsLayout: FC = () => { + // TODO: expose this via a UI element to switch between light-std-std and dark-std-std + useEffect(() => document.body.classList.add('light-std-std'), []) + + return ( +
+ + +
+ ) +} + +export default DocsLayout diff --git a/apps/design-system/src/components/docs-navbar/docs-navbar.module.css b/apps/design-system/src/components/docs-navbar/docs-navbar.module.css new file mode 100644 index 000000000..bc49ede76 --- /dev/null +++ b/apps/design-system/src/components/docs-navbar/docs-navbar.module.css @@ -0,0 +1,9 @@ +.content { + overflow: hidden; +} + +.viewLink { + display: flex; + align-items: baseline; + gap: 0.5rem; +} diff --git a/apps/design-system/src/components/docs-navbar/docs-navbar.tsx b/apps/design-system/src/components/docs-navbar/docs-navbar.tsx new file mode 100644 index 000000000..beeb10b6a --- /dev/null +++ b/apps/design-system/src/components/docs-navbar/docs-navbar.tsx @@ -0,0 +1,56 @@ +import { FC } from 'react' +import { Link, useLocation } from 'react-router-dom' + +import { viewPreviews } from '@/pages/view-preview/view-preview' +import { componentPages } from '@subjects/components/componentPages' + +import { Icon, NavbarSkeleton, ScrollArea } from '@harnessio/ui/components' + +import css from './docs-navbar.module.css' + +export interface DocsNavbarProps { + className?: string +} + +const DocsNavbar: FC = ({ className }) => { + const location = useLocation() + + return ( + + + + + + + + + + + + {componentPages.map(({ name, path }) => ( + + + + ))} + + + {Object.keys(viewPreviews).map(path => ( + + + + + ))} + + + + + + + + + + + ) +} + +export default DocsNavbar diff --git a/apps/design-system/src/components/docs-page/component-example.tsx b/apps/design-system/src/components/docs-page/component-example.tsx new file mode 100644 index 000000000..0836579c3 --- /dev/null +++ b/apps/design-system/src/components/docs-page/component-example.tsx @@ -0,0 +1,17 @@ +import { FC, useMemo } from 'react' + +import Example, { ExampleProps } from '@components/docs-page/example' + +import * as components from '@harnessio/ui/components' + +export type ComponentExampleProps = Omit & { + scope?: ExampleProps['scope'] +} + +const ComponentExample: FC = ({ code, scope }) => { + const combinedScope = useMemo(() => ({ ...components, ...scope }), [scope]) + + return +} + +export default ComponentExample diff --git a/apps/design-system/src/components/docs-page/docs-page.tsx b/apps/design-system/src/components/docs-page/docs-page.tsx new file mode 100644 index 000000000..42fd1bddc --- /dev/null +++ b/apps/design-system/src/components/docs-page/docs-page.tsx @@ -0,0 +1,13 @@ +import ComponentExample from './component-example' +import Example from './example' +import Root from './root' +import Section from './section' +import Summary from './summary' + +export const DocsPage = { + Root, + Summary, + Section, + Example, + ComponentExample +} diff --git a/apps/design-system/src/components/docs-page/example-layout.module.css b/apps/design-system/src/components/docs-page/example-layout.module.css new file mode 100644 index 000000000..a98ab7e96 --- /dev/null +++ b/apps/design-system/src/components/docs-page/example-layout.module.css @@ -0,0 +1,7 @@ +.layout { + display: flex; + flex-direction: column; + gap: 0.5rem; + justify-content: center; + align-items: center; +} diff --git a/apps/design-system/src/components/docs-page/example-layout.tsx b/apps/design-system/src/components/docs-page/example-layout.tsx new file mode 100644 index 000000000..3115851d4 --- /dev/null +++ b/apps/design-system/src/components/docs-page/example-layout.tsx @@ -0,0 +1,7 @@ +import { FC, PropsWithChildren } from 'react' + +import css from './example-layout.module.css' + +const ExampleLayout: FC = ({ children }) =>
{children}
+ +export default ExampleLayout diff --git a/apps/design-system/src/components/docs-page/example.module.css b/apps/design-system/src/components/docs-page/example.module.css new file mode 100644 index 000000000..a2f3e5446 --- /dev/null +++ b/apps/design-system/src/components/docs-page/example.module.css @@ -0,0 +1,48 @@ +.root { + border: 1px solid var(--preview-border, #eaeaea); + border-radius: 6px; + margin-top: 20px; + margin-bottom: 20px; + overflow: hidden; +} + +.preview { + padding: 24px; +} + +.editor { + background: var(--preview-background, #f7f7f7); + border-top: 1px solid var(--preview-border, #eaeaea); + list-style-type: none; + + summary { + padding: 6px 24px; + color: var(--preview-text, #666); + cursor: pointer; + user-select: none; + list-style-type: none; + line-height: 24px; + display: flex; + align-items: center; + } + + summary:before { + content: ''; + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM2NjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS11bmZvbGQtdmVydGljYWwiPjxwYXRoIGQ9Ik0xMiAyMnYtNiIvPjxwYXRoIGQ9Ik0xMiA4VjIiLz48cGF0aCBkPSJNNCAxMkgyIi8+PHBhdGggZD0iTTEwIDEySDgiLz48cGF0aCBkPSJNMTYgMTJoLTIiLz48cGF0aCBkPSJNMjIgMTJoLTIiLz48cGF0aCBkPSJtMTUgMTktMyAzLTMtMyIvPjxwYXRoIGQ9Im0xNSA1LTMtMy0zIDMiLz48L3N2Zz4=); + width: 16px; + height: 16px; + display: inline-flex; + margin-right: 6px; + } + + &[open] summary:before { + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM2NjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1mb2xkLXZlcnRpY2FsIj48cGF0aCBkPSJNMTIgMjJ2LTYiLz48cGF0aCBkPSJNMTIgOFYyIi8+PHBhdGggZD0iTTQgMTJIMiIvPjxwYXRoIGQ9Ik0xMCAxMkg4Ii8+PHBhdGggZD0iTTE2IDEyaC0yIi8+PHBhdGggZD0iTTIyIDEyaC0yIi8+PHBhdGggZD0ibTE1IDE5LTMtMy0zIDMiLz48cGF0aCBkPSJtMTUgNS0zIDMtMy0zIi8+PC9zdmc+); + } +} + +body[theme='dark'] { + --preview-border: #2f2e30; + --preview-background: #202023; + --preview-text: #a1a1aa; + --preview-text: #666666; +} diff --git a/apps/design-system/src/components/docs-page/example.tsx b/apps/design-system/src/components/docs-page/example.tsx new file mode 100644 index 000000000..427e13229 --- /dev/null +++ b/apps/design-system/src/components/docs-page/example.tsx @@ -0,0 +1,141 @@ +import { ComponentProps, FC, useMemo } from 'react' +import { LiveEditor, LiveError, LivePreview, LiveProvider } from 'react-live' + +import ExampleLayout from '@components/docs-page/example-layout' + +import css from './example.module.css' + +type LiveProviderProps = ComponentProps + +export type ExampleProps = Pick + +const Example: FC = ({ code, scope }) => { + const scopeWithLayout = useMemo(() => ({ ...scope, ExampleLayout }), [scope]) + + return ( +
+ ${code}`} scope={scopeWithLayout} theme={theme}> +
+ + +
+
+ Code Editor + +
+
+
+ ) +} + +export default Example + +const theme: LiveProviderProps['theme'] = { + plain: { + backgroundColor: '#fff', + color: '#1f2937', // ? + fontWeight: '400', + fontStyle: 'normal', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + fontFamily: 'Roboto Mono, JetBrains Mono, monospace', + fontSize: '13px', + textRendering: 'geometricPrecision' + }, + styles: [ + { + types: ['comment', 'prolog', 'doctype', 'cdata', 'punctuation'], + style: { + color: '#374151' + } + }, + { + types: ['namespace'], + style: { + opacity: 1 + } + }, + { + types: ['tag', 'operator', 'number'], + style: { + color: '#1d4ed8', + fontWeight: '500' + } + }, + { + types: ['property', 'function'], + style: { + color: '#a21caf' + } + }, + { + types: ['tag-id', 'selector', 'atrule-id'], + style: { + color: '#eeebff' + } + }, + { + types: ['attr-name'], + style: { + color: '#a21caf' + } + }, + { + types: [ + 'boolean', + 'string', + 'entity', + 'url', + 'attr-value', + 'keyword', + 'control', + 'directive', + 'unit', + 'statement', + 'regex', + 'at-rule', + 'placeholder', + 'variable' + ], + style: { + color: '#06b6d4' + } + }, + { + types: ['deleted'], + style: { + textDecorationLine: 'line-through' + } + }, + { + types: ['language-javascript', 'script'], + style: { + color: '#1d4ed8' + } + }, + { + types: ['inserted'], + style: { + textDecorationLine: 'underline' + } + }, + { + types: ['italic'], + style: { + fontStyle: 'italic' + } + }, + { + types: ['important', 'bold'], + style: { + fontWeight: 'bold' + } + }, + { + types: ['important'], + style: { + color: '#c4b9fe' + } + } + ] +} diff --git a/apps/design-system/src/components/docs-page/root.module.css b/apps/design-system/src/components/docs-page/root.module.css new file mode 100644 index 000000000..f995e727b --- /dev/null +++ b/apps/design-system/src/components/docs-page/root.module.css @@ -0,0 +1,13 @@ +.root { + padding: 4rem; + display: flex; + justify-content: center; +} + +.content { + width: 100%; + max-width: 960px; + display: flex; + flex-direction: column; + gap: 2rem; +} diff --git a/apps/design-system/src/components/docs-page/root.tsx b/apps/design-system/src/components/docs-page/root.tsx new file mode 100644 index 000000000..593e7157b --- /dev/null +++ b/apps/design-system/src/components/docs-page/root.tsx @@ -0,0 +1,11 @@ +import { FC, PropsWithChildren } from 'react' + +import css from './root.module.css' + +const Root: FC = ({ children }) => ( +
+
{children}
+
+) + +export default Root diff --git a/apps/design-system/src/components/docs-page/section.tsx b/apps/design-system/src/components/docs-page/section.tsx new file mode 100644 index 000000000..395cdc7b7 --- /dev/null +++ b/apps/design-system/src/components/docs-page/section.tsx @@ -0,0 +1,20 @@ +import { FC, PropsWithChildren, ReactNode } from 'react' + +import { Text } from '@harnessio/ui/components' + +export interface SectionProps extends PropsWithChildren { + title: string + description?: ReactNode +} + +const Section: FC = ({ title, description, children }) => ( +
+ + {title} + + {description} + {children} +
+) + +export default Section diff --git a/apps/design-system/src/components/docs-page/summary.tsx b/apps/design-system/src/components/docs-page/summary.tsx new file mode 100644 index 000000000..625b74e98 --- /dev/null +++ b/apps/design-system/src/components/docs-page/summary.tsx @@ -0,0 +1,18 @@ +import { FC, PropsWithChildren } from 'react' + +import { Text } from '@harnessio/ui/components' + +export interface SummaryProps extends PropsWithChildren { + title: string +} + +const Summary: FC = ({ title, children }) => ( +
+ + {title} + + {children} +
+) + +export default Summary diff --git a/apps/design-system/src/main.tsx b/apps/design-system/src/main.tsx index 4add73d72..4d7c5fa10 100644 --- a/apps/design-system/src/main.tsx +++ b/apps/design-system/src/main.tsx @@ -1,7 +1,7 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' -import App from './App.tsx' +import App from './App' createRoot(document.getElementById('root')!).render( diff --git a/apps/design-system/src/pages/component-page.tsx b/apps/design-system/src/pages/component-page.tsx new file mode 100644 index 000000000..2e84c0037 --- /dev/null +++ b/apps/design-system/src/pages/component-page.tsx @@ -0,0 +1,14 @@ +import { FC } from 'react' +import { Route, Routes } from 'react-router-dom' + +import { componentPages } from '@subjects/components/componentPages' + +const ComponentPage: FC = () => ( + + {componentPages.map(props => ( + + ))} + +) + +export default ComponentPage diff --git a/apps/design-system/src/pages/view-preview/repo-files-view-wrapper.tsx b/apps/design-system/src/pages/view-preview/repo-files-view-wrapper.tsx index f621e820b..ec3acf891 100644 --- a/apps/design-system/src/pages/view-preview/repo-files-view-wrapper.tsx +++ b/apps/design-system/src/pages/view-preview/repo-files-view-wrapper.tsx @@ -1,11 +1,11 @@ import { FC, PropsWithChildren, useCallback } from 'react' +import { OpenapiContentInfo, repoFilesStore } from '@subjects/views/repo-files/components/repo-files-store' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { FileExplorer } from '@harnessio/ui/components' import { BranchSelectorTab, IBranchSelectorStore, RepoSidebar as RepoSidebarView } from '@harnessio/ui/views' -import { noop, useTranslationsStore } from '../../utils.ts' -import { OpenapiContentInfo, repoFilesStore } from '../../views/repo-files/components/repo-files-store' - const sortEntriesByType = (entries: OpenapiContentInfo[]): OpenapiContentInfo[] => { return entries.sort((a, b) => { if (a.type === 'dir' && b.type === 'file') { diff --git a/apps/design-system/src/pages/view-preview/repo-settings-view-wrapper.tsx b/apps/design-system/src/pages/view-preview/repo-settings-view-wrapper.tsx index c7fc3a92b..1047b1da2 100644 --- a/apps/design-system/src/pages/view-preview/repo-settings-view-wrapper.tsx +++ b/apps/design-system/src/pages/view-preview/repo-settings-view-wrapper.tsx @@ -1,8 +1,8 @@ import { FC, PropsWithChildren } from 'react' -import { SandboxLayout, SettingsSidebar } from '@harnessio/ui/views' +import { useTranslationsStore } from '@utils/viewUtils' -import { useTranslationsStore } from '../../utils.ts' +import { SandboxLayout, SettingsSidebar } from '@harnessio/ui/views' export const RepoSettingsViewWrapper: FC = ({ children }) => { const { t } = useTranslationsStore() diff --git a/apps/design-system/src/pages/view-preview/repo-view-wrapper.tsx b/apps/design-system/src/pages/view-preview/repo-view-wrapper.tsx index 206ebbdab..e89c43a62 100644 --- a/apps/design-system/src/pages/view-preview/repo-view-wrapper.tsx +++ b/apps/design-system/src/pages/view-preview/repo-view-wrapper.tsx @@ -1,10 +1,11 @@ import { FC, PropsWithChildren } from 'react' import { Route } from 'react-router-dom' +import { useTranslationsStore } from '@utils/viewUtils' + import { RepoLayout } from '@harnessio/ui/views' -import { useTranslationsStore } from '../../utils.ts' -import RootViewWrapper from './root-view-wrapper.tsx' +import RootViewWrapper from './root-view-wrapper' const RepoViewWrapper: FC> = ({ children }) => ( diff --git a/apps/design-system/src/pages/view-preview/root-view-wrapper.tsx b/apps/design-system/src/pages/view-preview/root-view-wrapper.tsx index 04f3941b2..ec208d54c 100644 --- a/apps/design-system/src/pages/view-preview/root-view-wrapper.tsx +++ b/apps/design-system/src/pages/view-preview/root-view-wrapper.tsx @@ -1,11 +1,11 @@ import { FC, PropsWithChildren, useCallback, useState } from 'react' import { Route, Routes } from 'react-router-dom' +import { noop, useThemeStore, useTranslationsStore } from '@utils/viewUtils' + import { NavbarItemType, NavState } from '@harnessio/ui/components' import { SandboxRoot } from '@harnessio/ui/views' -import { noop, useThemeStore, useTranslationsStore } from '../../utils.ts' - const RootViewWrapper: FC> = ({ children, asChild = false }) => { const [pinnedMenu, setPinnedMenu] = useState([]) const [recentMenu, setRecentMenu] = useState([]) diff --git a/apps/design-system/src/pages/view-preview/view-preview.tsx b/apps/design-system/src/pages/view-preview/view-preview.tsx index 3a00845fc..a262a3c33 100644 --- a/apps/design-system/src/pages/view-preview/view-preview.tsx +++ b/apps/design-system/src/pages/view-preview/view-preview.tsx @@ -4,23 +4,27 @@ import '@harnessio/ui/styles.css' import { Navigate, Route, Routes } from 'react-router-dom' -import ExecutionListWrapper from '../../views/execution-list/execution-list' -import PipelineListWrapper from '../../views/pipeline-list/pipeline-list' -import PullRequestCompareWrapper from '../../views/pull-request-compare/pull-request-compare' -import PullRequestListWrapper from '../../views/pull-request-list/pull-request-list' -import { RepoCommitsView } from '../../views/repo-commits' -import { RepoFilesEditView, RepoFilesJsonView, RepoFilesList, RepoFilesMarkdownView } from '../../views/repo-files' -import RepoListWrapper from '../../views/repo-list/repo-list' -import RepoSummaryViewWrapper from '../../views/repo-summary/repo-summary' -import { RepoWebhooksCreate } from '../../views/repo-webhooks-create/repo-webhooks-list.tsx' -import { RepoWebhooksList } from '../../views/repo-webhooks-list/repo-webhooks-list' +import { RepoSettingsViewWrapper } from '@/pages/view-preview/repo-settings-view-wrapper' +import ExecutionListWrapper from '@subjects/views/execution-list/execution-list' +import PipelineListWrapper from '@subjects/views/pipeline-list/pipeline-list' +import PullRequestCompareWrapper from '@subjects/views/pull-request-compare/pull-request-compare' +import PullRequestListWrapper from '@subjects/views/pull-request-list/pull-request-list' +import { RepoCommitsView } from '@subjects/views/repo-commits' +import { RepoFilesEditView } from '@subjects/views/repo-files/repo-files-edit-view' +import { RepoFilesJsonView } from '@subjects/views/repo-files/repo-files-json-view' +import { RepoFilesList } from '@subjects/views/repo-files/repo-files-list' +import { RepoFilesMarkdownView } from '@subjects/views/repo-files/repo-files-markdown-view' +import RepoListWrapper from '@subjects/views/repo-list/repo-list' +import RepoSummaryViewWrapper from '@subjects/views/repo-summary/repo-summary' +import { RepoWebhooksCreate } from '@subjects/views/repo-webhooks-create/repo-webhooks-list' +import { RepoWebhooksList } from '@subjects/views/repo-webhooks-list/repo-webhooks-list' + import { RepoFilesViewWrapper } from './repo-files-view-wrapper' -import { RepoSettingsViewWrapper } from './repo-settings-view-wrapper' import RepoViewWrapper from './repo-view-wrapper' import RootViewWrapper from './root-view-wrapper' import ViewSettings from './view-settings' -const views: Record = { +export const viewPreviews: Record = { 'repo-summary': ( @@ -100,8 +104,8 @@ const views: Record = { ) } -const routeEntries = Object.entries(views) -const routeKeys = Object.keys(views) +const routeEntries = Object.entries(viewPreviews) +const routeKeys = Object.keys(viewPreviews) const ViewPreview: FC = () => { return ( diff --git a/apps/design-system/src/pages/view-preview/view-switcher/view-switcher.module.css b/apps/design-system/src/pages/view-preview/view-switcher/view-switcher.module.css deleted file mode 100644 index 62b0cd045..000000000 --- a/apps/design-system/src/pages/view-preview/view-switcher/view-switcher.module.css +++ /dev/null @@ -1,10 +0,0 @@ -.select { - z-index: 1000; - position: fixed; - bottom: 1rem; - right: 1rem; - color: darkslategrey; - font-size: 1rem; - padding: 1rem; - border-radius: 0.5em; -} diff --git a/apps/design-system/src/pages/view-preview/view-switcher/view-switcher.tsx b/apps/design-system/src/pages/view-preview/view-switcher/view-switcher.tsx deleted file mode 100644 index da77bac0d..000000000 --- a/apps/design-system/src/pages/view-preview/view-switcher/view-switcher.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { FC, useMemo } from 'react' -import { useLocation, useNavigate } from 'react-router-dom' - -import css from './view-switcher.module.css' - -export interface ViewSwitcherProps { - routes: string[] -} - -const ViewSwitcher: FC = ({ routes }) => { - const navigate = useNavigate() - const { pathname } = useLocation() - - const currentView = useMemo( - () => pathname.match(/view-preview\/([^/]+)/)?.[1] || routes[0], - [pathname, routes] - ) - - if (routes.length < 2) return null - - return ( - - ) -} - -export default ViewSwitcher diff --git a/apps/design-system/src/subjects/components/alert.tsx b/apps/design-system/src/subjects/components/alert.tsx new file mode 100644 index 000000000..5a2079460 --- /dev/null +++ b/apps/design-system/src/subjects/components/alert.tsx @@ -0,0 +1,29 @@ +import { FC } from 'react' + +import { DocsPage } from '@components/docs-page/docs-page' + +import { Text } from '@harnessio/ui/components' + +const AlertComponent: FC = () => ( + + + A warning message showing that attention is required. + + + + This is an alert + An alert has happened and someone should look into that. + +`} + /> + + + The Alert.Container component is a thing + This is a test`} /> + + +) + +export default AlertComponent diff --git a/apps/design-system/src/subjects/components/badge.tsx b/apps/design-system/src/subjects/components/badge.tsx new file mode 100644 index 000000000..788f59e79 --- /dev/null +++ b/apps/design-system/src/subjects/components/badge.tsx @@ -0,0 +1,24 @@ +import { FC } from 'react' + +import { DocsPage } from '@components/docs-page/docs-page' + +import { Text } from '@harnessio/ui/components' + +const BadgeComponent: FC = () => ( + + + + A label that shows the status of an object, emphasizes an element that requires attention, or helps categorize + with other similar elements. + + + + Label`} /> + + + Label`} /> + + +) + +export default BadgeComponent diff --git a/apps/design-system/src/subjects/components/button.tsx b/apps/design-system/src/subjects/components/button.tsx new file mode 100644 index 000000000..0481f8989 --- /dev/null +++ b/apps/design-system/src/subjects/components/button.tsx @@ -0,0 +1,158 @@ +import { FC } from 'react' + +import { DocsPage } from '@components/docs-page/docs-page' + +import { Text } from '@harnessio/ui/components' + +const dropdown = ` + + + + + + + Item 1 + Item 2 + + + +` + +const onClick = () => alert('Button clicked') +const scope = { onClick } + +const ButtonComponent: FC = () => ( + + + It is a button + + + I am a button`} /> + + The `Button` component supports a number of variants using the `variant` prop.} + > + Default variant + + + + + + + + + + + `} + /> + + + The `Button` component supports a number of sizes using the `size` prop.} + > + Default size + + + + + + + + +`} + /> + + + The `Button` component supports a number of border radii using the `borderRadius` prop. + } + > + Default border radius + + +`} + /> + + + The `Button` component supports a number of themes using the `theme` prop.} + > + Default theme + + + + + +`} + /> + + + The `Button` component supports a number of padding options using the `padding` prop. + } + > + Default padding + +`} + /> + + + The `Button` component supports a number of gradient options using the `gradient` prop. + } + > + Default gradient +`} + /> + + +) + +export default ButtonComponent diff --git a/apps/design-system/src/subjects/components/componentPages.ts b/apps/design-system/src/subjects/components/componentPages.ts new file mode 100644 index 000000000..e145a7e8e --- /dev/null +++ b/apps/design-system/src/subjects/components/componentPages.ts @@ -0,0 +1,17 @@ +import type { RouteProps } from 'react-router-dom' + +import AlertComponent from '@subjects/components/alert' +import BadgeComponent from '@subjects/components/badge' +import ButtonComponent from '@subjects/components/button' + +interface ComponentPage { + name: string + path: string + Component: RouteProps['Component'] +} + +export const componentPages: ComponentPage[] = [ + { name: 'Alert', path: 'alert', Component: AlertComponent }, + { name: 'Badge', path: 'badge', Component: BadgeComponent }, + { name: 'Button', path: 'button', Component: ButtonComponent } +] diff --git a/apps/design-system/src/views/execution-list/execution-list.store.ts b/apps/design-system/src/subjects/views/execution-list/execution-list.store.ts similarity index 96% rename from apps/design-system/src/views/execution-list/execution-list.store.ts rename to apps/design-system/src/subjects/views/execution-list/execution-list.store.ts index 58a60a565..e3f78b836 100644 --- a/apps/design-system/src/views/execution-list/execution-list.store.ts +++ b/apps/design-system/src/subjects/views/execution-list/execution-list.store.ts @@ -1,6 +1,6 @@ -import { IExecution, IExecutionListStore, PipelineExecutionStatus } from '@harnessio/ui/views' +import { noop } from '@utils/viewUtils' -import { noop } from '../../utils' +import { IExecution, IExecutionListStore, PipelineExecutionStatus } from '@harnessio/ui/views' const executions: IExecution[] = [ { diff --git a/apps/design-system/src/views/execution-list/execution-list.tsx b/apps/design-system/src/subjects/views/execution-list/execution-list.tsx similarity index 83% rename from apps/design-system/src/views/execution-list/execution-list.tsx rename to apps/design-system/src/subjects/views/execution-list/execution-list.tsx index 8ae898360..2f12063b3 100644 --- a/apps/design-system/src/views/execution-list/execution-list.tsx +++ b/apps/design-system/src/subjects/views/execution-list/execution-list.tsx @@ -1,10 +1,11 @@ import { FC } from 'react' import { Link } from 'react-router-dom' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { ExecutionListPage, RepoSummaryViewProps, TLinkComponent } from '@harnessio/ui/views' -import { noop, useTranslationsStore } from '../../utils.ts' -import { useExecutionListStore } from './execution-list.store.ts' +import { useExecutionListStore } from './execution-list.store' const LinkComponent: TLinkComponent = ({ to, children }) => {children} diff --git a/apps/design-system/src/views/pipeline-list/pipeline-list.store.ts b/apps/design-system/src/subjects/views/pipeline-list/pipeline-list.store.ts similarity index 97% rename from apps/design-system/src/views/pipeline-list/pipeline-list.store.ts rename to apps/design-system/src/subjects/views/pipeline-list/pipeline-list.store.ts index fabc71b94..7d36d283b 100644 --- a/apps/design-system/src/views/pipeline-list/pipeline-list.store.ts +++ b/apps/design-system/src/subjects/views/pipeline-list/pipeline-list.store.ts @@ -1,8 +1,8 @@ +import { noop } from '@utils/viewUtils' + import { MeterState } from '@harnessio/ui/components' import { IPipeline, IPipelineListStore, PipelineExecutionStatus } from '@harnessio/ui/views' -import { noop } from '../../utils' - const pipelines: IPipeline[] = [ { id: '1', diff --git a/apps/design-system/src/views/pipeline-list/pipeline-list.tsx b/apps/design-system/src/subjects/views/pipeline-list/pipeline-list.tsx similarity index 91% rename from apps/design-system/src/views/pipeline-list/pipeline-list.tsx rename to apps/design-system/src/subjects/views/pipeline-list/pipeline-list.tsx index 86a789a68..dcd8382cd 100644 --- a/apps/design-system/src/views/pipeline-list/pipeline-list.tsx +++ b/apps/design-system/src/subjects/views/pipeline-list/pipeline-list.tsx @@ -1,10 +1,11 @@ import { FC, useState } from 'react' import { Link } from 'react-router-dom' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { CreatePipelineDialog, PipelineListPage, RepoSummaryViewProps, TLinkComponent } from '@harnessio/ui/views' -import { noop, useTranslationsStore } from '../../utils.ts' -import { usePipelineListStore } from './pipeline-list.store.ts' +import { usePipelineListStore } from './pipeline-list.store' const LinkComponent: TLinkComponent = ({ to, children }) => {children} diff --git a/apps/design-system/src/views/pull-request-compare/pull-request-compare.tsx b/apps/design-system/src/subjects/views/pull-request-compare/pull-request-compare.tsx similarity index 91% rename from apps/design-system/src/views/pull-request-compare/pull-request-compare.tsx rename to apps/design-system/src/subjects/views/pull-request-compare/pull-request-compare.tsx index 05da975a3..9a5ada617 100644 --- a/apps/design-system/src/views/pull-request-compare/pull-request-compare.tsx +++ b/apps/design-system/src/subjects/views/pull-request-compare/pull-request-compare.tsx @@ -1,10 +1,11 @@ import { FC, useCallback } from 'react' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { PullRequestComparePage, PullRequestComparePageProps } from '@harnessio/ui/views' -import { noop, useTranslationsStore } from '../../utils.ts' -import { repoBranchListStore } from './repo-branch-store.ts' -import { repoCommitStore } from './repo-commit-store.ts' +import { repoBranchListStore } from './repo-branch-store' +import { repoCommitStore } from './repo-commit-store' const PullRequestCompareWrapper: FC> = props => { const useRepoBranchListStore = useCallback( diff --git a/apps/design-system/src/views/pull-request-compare/repo-branch-store.ts b/apps/design-system/src/subjects/views/pull-request-compare/repo-branch-store.ts similarity index 96% rename from apps/design-system/src/views/pull-request-compare/repo-branch-store.ts rename to apps/design-system/src/subjects/views/pull-request-compare/repo-branch-store.ts index 60bb78fa2..b0bbac442 100644 --- a/apps/design-system/src/views/pull-request-compare/repo-branch-store.ts +++ b/apps/design-system/src/subjects/views/pull-request-compare/repo-branch-store.ts @@ -1,6 +1,6 @@ -import { BranchSelectorTab } from '@harnessio/ui/views' +import { noop } from '@utils/viewUtils' -import { noop } from '../../utils' +import { BranchSelectorTab } from '@harnessio/ui/views' export const repoBranchListStore = { selectedBranchTag: { name: 'main', sha: '1d0e5a9461b340ebb3d7e092a2d35ff6d0d5c952', default: true }, diff --git a/apps/design-system/src/views/pull-request-compare/repo-commit-store.ts b/apps/design-system/src/subjects/views/pull-request-compare/repo-commit-store.ts similarity index 96% rename from apps/design-system/src/views/pull-request-compare/repo-commit-store.ts rename to apps/design-system/src/subjects/views/pull-request-compare/repo-commit-store.ts index 7f2c6d8f6..cb27afa31 100644 --- a/apps/design-system/src/views/pull-request-compare/repo-commit-store.ts +++ b/apps/design-system/src/subjects/views/pull-request-compare/repo-commit-store.ts @@ -1,4 +1,4 @@ -import { noop } from '../../utils' +import { noop } from '@utils/viewUtils' export const repoCommitStore = { setPage: noop, diff --git a/apps/design-system/src/views/pull-request-list/pull-request-list-store.ts b/apps/design-system/src/subjects/views/pull-request-list/pull-request-list-store.ts similarity index 92% rename from apps/design-system/src/views/pull-request-list/pull-request-list-store.ts rename to apps/design-system/src/subjects/views/pull-request-list/pull-request-list-store.ts index ef67bf158..b9cd67366 100644 --- a/apps/design-system/src/views/pull-request-list/pull-request-list-store.ts +++ b/apps/design-system/src/subjects/views/pull-request-list/pull-request-list-store.ts @@ -1,4 +1,4 @@ -import { noop } from '../../utils' +import { noop } from '@utils/viewUtils' export const pullRequestListStore = { pullRequests: [ diff --git a/apps/design-system/src/views/pull-request-list/pull-request-list.tsx b/apps/design-system/src/subjects/views/pull-request-list/pull-request-list.tsx similarity index 82% rename from apps/design-system/src/views/pull-request-list/pull-request-list.tsx rename to apps/design-system/src/subjects/views/pull-request-list/pull-request-list.tsx index a1c841ae7..974c8f126 100644 --- a/apps/design-system/src/views/pull-request-list/pull-request-list.tsx +++ b/apps/design-system/src/subjects/views/pull-request-list/pull-request-list.tsx @@ -1,9 +1,10 @@ import { FC, useCallback } from 'react' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { PullRequestList, PullRequestPageProps } from '@harnessio/ui/views' -import { noop, useTranslationsStore } from '../../utils.ts' -import { pullRequestListStore } from './pull-request-list-store.ts' +import { pullRequestListStore } from './pull-request-list-store' const PullRequestListWrapper: FC> = props => { const usePullRequestListStore = useCallback( diff --git a/apps/design-system/src/views/repo-commits/index.tsx b/apps/design-system/src/subjects/views/repo-commits/index.tsx similarity index 95% rename from apps/design-system/src/views/repo-commits/index.tsx rename to apps/design-system/src/subjects/views/repo-commits/index.tsx index 622bae432..6616eb7fe 100644 --- a/apps/design-system/src/views/repo-commits/index.tsx +++ b/apps/design-system/src/subjects/views/repo-commits/index.tsx @@ -1,8 +1,9 @@ import { useCallback, useState } from 'react' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { BranchSelectorTab, IBranchSelectorStore, RepoCommitsView as RepoCommitsUiView } from '@harnessio/ui/views' -import { noop, useTranslationsStore } from '../../utils' import { repoFilesStore } from '../repo-files/components/repo-files-store' import { repoCommitsStore } from './repo-commits-store' diff --git a/apps/design-system/src/views/repo-commits/repo-commits-store.ts b/apps/design-system/src/subjects/views/repo-commits/repo-commits-store.ts similarity index 100% rename from apps/design-system/src/views/repo-commits/repo-commits-store.ts rename to apps/design-system/src/subjects/views/repo-commits/repo-commits-store.ts diff --git a/apps/design-system/src/views/repo-files/components/repo-file-content-viewer.tsx b/apps/design-system/src/subjects/views/repo-files/components/repo-file-content-viewer.tsx similarity index 96% rename from apps/design-system/src/views/repo-files/components/repo-file-content-viewer.tsx rename to apps/design-system/src/subjects/views/repo-files/components/repo-file-content-viewer.tsx index 3b5a26045..af05934f3 100644 --- a/apps/design-system/src/views/repo-files/components/repo-file-content-viewer.tsx +++ b/apps/design-system/src/subjects/views/repo-files/components/repo-file-content-viewer.tsx @@ -1,5 +1,7 @@ import { useState } from 'react' +import { noop } from '@utils/viewUtils' + import { FileViewerControlBar, GitCommitDialog, @@ -9,8 +11,7 @@ import { } from '@harnessio/ui/components' import { BlameEditor, CodeEditor } from '@harnessio/yaml-editor' -import { themes } from '../../../theme/monaco-theme' -import { noop } from '../../../utils' +import { themes } from '../theme/monaco-theme' import { repoFilesStore } from './repo-files-store' export const RepoFileContentViewer = ({ isMarkdown = false }: { isMarkdown?: boolean }) => { diff --git a/apps/design-system/src/views/repo-files/components/repo-file-edit.tsx b/apps/design-system/src/subjects/views/repo-files/components/repo-file-edit.tsx similarity index 93% rename from apps/design-system/src/views/repo-files/components/repo-file-edit.tsx rename to apps/design-system/src/subjects/views/repo-files/components/repo-file-edit.tsx index a9eb1bf29..edb4afc88 100644 --- a/apps/design-system/src/views/repo-files/components/repo-file-edit.tsx +++ b/apps/design-system/src/subjects/views/repo-files/components/repo-file-edit.tsx @@ -1,12 +1,13 @@ import { useCallback, useState } from 'react' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { EditViewTypeValue, FileEditorControlBar, GitCommitDialog, GitCommitFormType } from '@harnessio/ui/components' import { CodeModes, PathActionBar } from '@harnessio/ui/views' import { CodeDiffEditor, CodeEditor } from '@harnessio/yaml-editor' -import { useExitConfirm } from '../../../hooks/use-exit-confirm' -import { themes } from '../../../theme/monaco-theme' -import { noop, useTranslationsStore } from '../../../utils' +import { useExitConfirm } from '../hooks/use-exit-confirm' +import { themes } from '../theme/monaco-theme' import { repoFilesStore } from './repo-files-store' export const RepoFileEdit = () => { diff --git a/apps/design-system/src/views/repo-files/components/repo-files-store.ts b/apps/design-system/src/subjects/views/repo-files/components/repo-files-store.ts similarity index 100% rename from apps/design-system/src/views/repo-files/components/repo-files-store.ts rename to apps/design-system/src/subjects/views/repo-files/components/repo-files-store.ts diff --git a/apps/design-system/src/views/repo-files/components/repo-files-wrapper.tsx b/apps/design-system/src/subjects/views/repo-files/components/repo-files-wrapper.tsx similarity index 96% rename from apps/design-system/src/views/repo-files/components/repo-files-wrapper.tsx rename to apps/design-system/src/subjects/views/repo-files/components/repo-files-wrapper.tsx index 80eac7767..6cd95dc17 100644 --- a/apps/design-system/src/views/repo-files/components/repo-files-wrapper.tsx +++ b/apps/design-system/src/subjects/views/repo-files/components/repo-files-wrapper.tsx @@ -1,8 +1,9 @@ import { FC, useCallback, useMemo } from 'react' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { BranchSelectorTab, CodeModes, IBranchSelectorStore, RepoFiles } from '@harnessio/ui/views' -import { noop, useTranslationsStore } from '../../../utils' import { RepoFileContentViewer } from './repo-file-content-viewer' import { RepoFileEdit } from './repo-file-edit' import { repoFilesStore } from './repo-files-store' diff --git a/apps/design-system/src/context/exit-confirm-context.tsx b/apps/design-system/src/subjects/views/repo-files/context/exit-confirm-context.tsx similarity index 100% rename from apps/design-system/src/context/exit-confirm-context.tsx rename to apps/design-system/src/subjects/views/repo-files/context/exit-confirm-context.tsx diff --git a/apps/design-system/src/hooks/use-exit-confirm.ts b/apps/design-system/src/subjects/views/repo-files/hooks/use-exit-confirm.ts similarity index 100% rename from apps/design-system/src/hooks/use-exit-confirm.ts rename to apps/design-system/src/subjects/views/repo-files/hooks/use-exit-confirm.ts diff --git a/apps/design-system/src/views/repo-files/index.ts b/apps/design-system/src/subjects/views/repo-files/index.ts similarity index 72% rename from apps/design-system/src/views/repo-files/index.ts rename to apps/design-system/src/subjects/views/repo-files/index.ts index 382edea54..36aa177f5 100644 --- a/apps/design-system/src/views/repo-files/index.ts +++ b/apps/design-system/src/subjects/views/repo-files/index.ts @@ -1,4 +1,4 @@ export * from './repo-files-json-view' export * from './repo-files-list' export * from './repo-files-markdown-view' -export * from './repo-files-edit-view.tsx' +export * from './repo-files-edit-view' diff --git a/apps/design-system/src/views/repo-files/repo-files-edit-view.tsx b/apps/design-system/src/subjects/views/repo-files/repo-files-edit-view.tsx similarity index 100% rename from apps/design-system/src/views/repo-files/repo-files-edit-view.tsx rename to apps/design-system/src/subjects/views/repo-files/repo-files-edit-view.tsx diff --git a/apps/design-system/src/views/repo-files/repo-files-json-view.tsx b/apps/design-system/src/subjects/views/repo-files/repo-files-json-view.tsx similarity index 100% rename from apps/design-system/src/views/repo-files/repo-files-json-view.tsx rename to apps/design-system/src/subjects/views/repo-files/repo-files-json-view.tsx diff --git a/apps/design-system/src/views/repo-files/repo-files-list.tsx b/apps/design-system/src/subjects/views/repo-files/repo-files-list.tsx similarity index 100% rename from apps/design-system/src/views/repo-files/repo-files-list.tsx rename to apps/design-system/src/subjects/views/repo-files/repo-files-list.tsx diff --git a/apps/design-system/src/views/repo-files/repo-files-markdown-view.tsx b/apps/design-system/src/subjects/views/repo-files/repo-files-markdown-view.tsx similarity index 100% rename from apps/design-system/src/views/repo-files/repo-files-markdown-view.tsx rename to apps/design-system/src/subjects/views/repo-files/repo-files-markdown-view.tsx diff --git a/apps/design-system/src/theme/monaco-theme.ts b/apps/design-system/src/subjects/views/repo-files/theme/monaco-theme.ts similarity index 100% rename from apps/design-system/src/theme/monaco-theme.ts rename to apps/design-system/src/subjects/views/repo-files/theme/monaco-theme.ts diff --git a/apps/design-system/src/views/repo-list/repo-list-store.json b/apps/design-system/src/subjects/views/repo-list/repo-list-store.json similarity index 100% rename from apps/design-system/src/views/repo-list/repo-list-store.json rename to apps/design-system/src/subjects/views/repo-list/repo-list-store.json diff --git a/apps/design-system/src/views/repo-list/repo-list.tsx b/apps/design-system/src/subjects/views/repo-list/repo-list.tsx similarity index 91% rename from apps/design-system/src/views/repo-list/repo-list.tsx rename to apps/design-system/src/subjects/views/repo-list/repo-list.tsx index 7ca6a4cb1..c8ffebcfe 100644 --- a/apps/design-system/src/views/repo-list/repo-list.tsx +++ b/apps/design-system/src/subjects/views/repo-list/repo-list.tsx @@ -1,8 +1,9 @@ import { FC, useCallback } from 'react' +import { noop, useTranslationsStore } from '@utils/viewUtils' + import { RepoListProps, SandboxRepoListPage } from '@harnessio/ui/views' -import { noop, useTranslationsStore } from '../../utils.ts' import repoListStore from './repo-list-store.json' const RepoListWrapper: FC> = props => { diff --git a/apps/design-system/src/views/repo-summary/repo-summary-props.json b/apps/design-system/src/subjects/views/repo-summary/repo-summary-props.json similarity index 100% rename from apps/design-system/src/views/repo-summary/repo-summary-props.json rename to apps/design-system/src/subjects/views/repo-summary/repo-summary-props.json diff --git a/apps/design-system/src/views/repo-summary/repo-summary.tsx b/apps/design-system/src/subjects/views/repo-summary/repo-summary.tsx similarity index 96% rename from apps/design-system/src/views/repo-summary/repo-summary.tsx rename to apps/design-system/src/subjects/views/repo-summary/repo-summary.tsx index 2e576197e..50507bc92 100644 --- a/apps/design-system/src/views/repo-summary/repo-summary.tsx +++ b/apps/design-system/src/subjects/views/repo-summary/repo-summary.tsx @@ -1,8 +1,9 @@ import { FC, useCallback, useMemo } from 'react' +import { useTranslationsStore } from '@utils/viewUtils' + import { BranchSelectorTab, IBranchSelectorStore, RepoSummaryView, RepoSummaryViewProps } from '@harnessio/ui/views' -import { useTranslationsStore } from '../../utils.ts' import repoSummaryProps from './repo-summary-props.json' const noop = () => void 0 diff --git a/apps/design-system/src/views/repo-webhooks-create/repo-webhooks-list.tsx b/apps/design-system/src/subjects/views/repo-webhooks-create/repo-webhooks-list.tsx similarity index 88% rename from apps/design-system/src/views/repo-webhooks-create/repo-webhooks-list.tsx rename to apps/design-system/src/subjects/views/repo-webhooks-create/repo-webhooks-list.tsx index 25680871f..c21dbca44 100644 --- a/apps/design-system/src/views/repo-webhooks-create/repo-webhooks-list.tsx +++ b/apps/design-system/src/subjects/views/repo-webhooks-create/repo-webhooks-list.tsx @@ -1,6 +1,7 @@ +import { useTranslationsStore } from '@utils/viewUtils.ts' + import { RepoWebhooksCreatePage } from '@harnessio/ui/views' -import { useTranslationsStore } from '../../utils' import { repoWebhooksListStore } from '../repo-webhooks-list/repo-webhooks-list-store' export const RepoWebhooksCreate = () => { diff --git a/apps/design-system/src/views/repo-webhooks-list/repo-webhooks-list-store.ts b/apps/design-system/src/subjects/views/repo-webhooks-list/repo-webhooks-list-store.ts similarity index 91% rename from apps/design-system/src/views/repo-webhooks-list/repo-webhooks-list-store.ts rename to apps/design-system/src/subjects/views/repo-webhooks-list/repo-webhooks-list-store.ts index edd5752a6..f0eaf831b 100644 --- a/apps/design-system/src/views/repo-webhooks-list/repo-webhooks-list-store.ts +++ b/apps/design-system/src/subjects/views/repo-webhooks-list/repo-webhooks-list-store.ts @@ -1,6 +1,6 @@ -import { CreateWebhookFormFields, ListRepoWebhooksOkResponse, WebhookStore } from '@harnessio/ui/views' +import { noop } from '@utils/viewUtils' -import { noop } from '../../utils.ts' +import { CreateWebhookFormFields, ListRepoWebhooksOkResponse, WebhookStore } from '@harnessio/ui/views' interface RepoWebhooksListStore { useWebhookStore: () => WebhookStore @@ -27,7 +27,7 @@ export const repoWebhooksListStore: RepoWebhooksListStore = { } ], error: undefined, - setError: noop() as unknown as (error?: string) => void, + setError: noop, totalPages: 20, webhookLoading: false, setWebhookLoading: (_: boolean) => {}, diff --git a/apps/design-system/src/views/repo-webhooks-list/repo-webhooks-list.tsx b/apps/design-system/src/subjects/views/repo-webhooks-list/repo-webhooks-list.tsx similarity index 94% rename from apps/design-system/src/views/repo-webhooks-list/repo-webhooks-list.tsx rename to apps/design-system/src/subjects/views/repo-webhooks-list/repo-webhooks-list.tsx index 5a9bb9898..cc67339f6 100644 --- a/apps/design-system/src/views/repo-webhooks-list/repo-webhooks-list.tsx +++ b/apps/design-system/src/subjects/views/repo-webhooks-list/repo-webhooks-list.tsx @@ -1,9 +1,10 @@ import { useCallback, useState } from 'react' +import { useTranslationsStore } from '@utils/viewUtils.ts' + import { DeleteAlertDialog } from '@harnessio/ui/components' import { RepoWebhookListPage } from '@harnessio/ui/views' -import { useTranslationsStore } from '../../utils' import { repoWebhooksListStore } from './repo-webhooks-list-store' export const RepoWebhooksList = () => { diff --git a/apps/design-system/src/utils.ts b/apps/design-system/src/utils/viewUtils.ts similarity index 89% rename from apps/design-system/src/utils.ts rename to apps/design-system/src/utils/viewUtils.ts index 88e14429b..d4da9c858 100644 --- a/apps/design-system/src/utils.ts +++ b/apps/design-system/src/utils/viewUtils.ts @@ -12,5 +12,6 @@ export const mockT = (key: string, options?: { [key: string]: any }) => { return key } +// eslint-disable-next-line @typescript-eslint/no-explicit-any export const useTranslationsStore = () => ({ t: mockT as any, changeLanguage: noop, i18n: {} as any }) export const useThemeStore = () => ({ theme: 'dark-std-std' as any, setTheme: noop }) diff --git a/apps/design-system/tsconfig.app.json b/apps/design-system/tsconfig.app.json index 358ca9ba9..9b565d611 100644 --- a/apps/design-system/tsconfig.app.json +++ b/apps/design-system/tsconfig.app.json @@ -20,7 +20,14 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true + "noUncheckedSideEffectImports": true, + + "paths": { + "@utils/*": ["./src/utils/*"], + "@components/*": ["./src/components/*"], + "@subjects/*": ["./src/subjects/*"], + "@/*": ["./src/*"] + } }, "include": ["src"] } diff --git a/apps/design-system/tsconfig.json b/apps/design-system/tsconfig.json index 1ffef600d..d32ff6820 100644 --- a/apps/design-system/tsconfig.json +++ b/apps/design-system/tsconfig.json @@ -1,7 +1,4 @@ { "files": [], - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] + "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }] } diff --git a/apps/design-system/vite.config.ts b/apps/design-system/vite.config.ts index 957640a07..3cdbc8b96 100644 --- a/apps/design-system/vite.config.ts +++ b/apps/design-system/vite.config.ts @@ -1,7 +1,8 @@ import react from '@vitejs/plugin-react-swc' import { defineConfig } from 'vite' +import tsConfigPaths from 'vite-tsconfig-paths' // https://vite.dev/config/ export default defineConfig({ - plugins: [react()] + plugins: [react(), tsConfigPaths()] }) diff --git a/packages/ui/locales/en/views.json b/packages/ui/locales/en/views.json index 7c96e8d17..53a81abfe 100644 --- a/packages/ui/locales/en/views.json +++ b/packages/ui/locales/en/views.json @@ -138,8 +138,8 @@ "evenTriggerLabel": "Which events would you like to use to trigger this webhook?", "evenTriggerAllLabel": "Send me everything", "eventTriggerIndividualLabel": "Let me select individual events", - "createWebhookTitle": "Create a webhook", "editWebhookTitle": "Webhook details", + "createWebhookTitle": "Create a webhook", "updatingWebhook": "Updating webhook...", "creatingWebhook": "Creating webhook...", "updateWebhook": "Update webhook", diff --git a/packages/ui/locales/es/views.json b/packages/ui/locales/es/views.json index 9e5449ae4..feef36ccc 100644 --- a/packages/ui/locales/es/views.json +++ b/packages/ui/locales/es/views.json @@ -138,8 +138,8 @@ "evenTriggerLabel": "Which events would you like to use to trigger this webhook?", "evenTriggerAllLabel": "Send me everything", "eventTriggerIndividualLabel": "Let me select individual events", - "createWebhookTitle": "Create a webhook", "editWebhookTitle": "Webhook details", + "createWebhookTitle": "Create a webhook", "updatingWebhook": "Updating webhook...", "creatingWebhook": "Creating webhook...", "updateWebhook": "Update webhook", diff --git a/packages/ui/locales/fr/views.json b/packages/ui/locales/fr/views.json index 833d15e69..1a454e021 100644 --- a/packages/ui/locales/fr/views.json +++ b/packages/ui/locales/fr/views.json @@ -138,8 +138,8 @@ "evenTriggerLabel": "Quels événements souhaitez-vous utiliser pour déclencher ce webhook ?", "evenTriggerAllLabel": "Envoyez-moi tout", "eventTriggerIndividualLabel": "Permettez-moi de sélectionner des événements individuels", - "createWebhookTitle": "Créer un webhook", "editWebhookTitle": "Webhook details", + "createWebhookTitle": "Créer un webhook", "updatingWebhook": "Updating webhook...", "creatingWebhook": "Creating webhook...", "updateWebhook": "Update webhook", diff --git a/packages/ui/package.json b/packages/ui/package.json index 133ce7592..6794b7615 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -131,7 +131,7 @@ "jsdom": "^25.0.1", "lint-staged": "^15.2.9", "tailwindcss": "^3.4.14", - "typescript": "^5.5.3", + "typescript": "~5.6.2", "vite": "^6.0.3", "vite-bundle-analyzer": "^0.15.2", "vite-plugin-dts": "^4.3.0", diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index 45800858b..dd5e585c5 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -16,6 +16,7 @@ export * from './alert-dialog' export * from './popover' export * from './avatar' export * from './navbar' +export * from './navbar-skeleton' export * from './theme-selector' export * from './theme-selector/types' export * from './theme-selector/utils' diff --git a/packages/ui/src/components/more-submenu.tsx b/packages/ui/src/components/more-submenu.tsx index 11cf7f9b4..50b9f5ab4 100644 --- a/packages/ui/src/components/more-submenu.tsx +++ b/packages/ui/src/components/more-submenu.tsx @@ -1,7 +1,6 @@ import { NavLink } from 'react-router-dom' -import { Icon, ScrollArea, Sheet, SheetContent, SheetTitle, Spacer } from '@/components' -import NavbarSkeleton from '@/components/navbar/navbar-skeleton' +import { Icon, NavbarSkeleton, ScrollArea, Sheet, SheetContent, SheetTitle, Spacer } from '@/components' import { MenuGroupType } from '@components/navbar/types' interface MoreSubmenuProps { diff --git a/packages/ui/src/components/navbar-skeleton/content.tsx b/packages/ui/src/components/navbar-skeleton/content.tsx new file mode 100644 index 000000000..9d319523e --- /dev/null +++ b/packages/ui/src/components/navbar-skeleton/content.tsx @@ -0,0 +1,11 @@ +import { PropsWithChildren } from 'react' + +import { cn } from '@utils/cn' + +export interface ContentProps extends PropsWithChildren { + className?: string +} + +export function Content({ children, className }: ContentProps) { + return
{children}
+} diff --git a/packages/ui/src/components/navbar-skeleton/footer.tsx b/packages/ui/src/components/navbar-skeleton/footer.tsx new file mode 100644 index 000000000..e1bb0cacf --- /dev/null +++ b/packages/ui/src/components/navbar-skeleton/footer.tsx @@ -0,0 +1,7 @@ +import { PropsWithChildren } from 'react' + +export function Footer({ children }: PropsWithChildren) { + return ( +
{children}
+ ) +} diff --git a/packages/ui/src/components/navbar-skeleton/group.tsx b/packages/ui/src/components/navbar-skeleton/group.tsx new file mode 100644 index 000000000..33c3fe567 --- /dev/null +++ b/packages/ui/src/components/navbar-skeleton/group.tsx @@ -0,0 +1,31 @@ +import { PropsWithChildren } from 'react' + +import { cn } from '@utils/cn' + +export interface GroupProps extends PropsWithChildren { + title?: string + topBorder?: boolean + isSubMenu?: boolean + titleClassName?: string + className?: string +} + +export function Group({ children, title, topBorder, isSubMenu = false, titleClassName, className }: GroupProps) { + return ( +
+ {title && ( +
+

{title}

+
+ )} + {children} +
+ ) +} diff --git a/packages/ui/src/components/navbar-skeleton/header.tsx b/packages/ui/src/components/navbar-skeleton/header.tsx new file mode 100644 index 000000000..1a64066a2 --- /dev/null +++ b/packages/ui/src/components/navbar-skeleton/header.tsx @@ -0,0 +1,5 @@ +import { PropsWithChildren } from 'react' + +export function Header({ children }: PropsWithChildren) { + return
{children}
+} diff --git a/packages/ui/src/components/navbar-skeleton/index.ts b/packages/ui/src/components/navbar-skeleton/index.ts new file mode 100644 index 000000000..a7b3609b8 --- /dev/null +++ b/packages/ui/src/components/navbar-skeleton/index.ts @@ -0,0 +1,15 @@ +import { Content } from './content' +import { Footer } from './footer' +import { Group } from './group' +import { Header } from './header' +import { Item } from './item' +import { Root } from './root' + +export const NavbarSkeleton = { + Content, + Footer, + Group, + Header, + Item, + Root +} diff --git a/packages/ui/src/components/navbar-skeleton/item.tsx b/packages/ui/src/components/navbar-skeleton/item.tsx new file mode 100644 index 000000000..3bead9470 --- /dev/null +++ b/packages/ui/src/components/navbar-skeleton/item.tsx @@ -0,0 +1,99 @@ +import { ReactElement } from 'react' + +import { Icon, Text } from '@/components' +import { cn } from '@utils/cn' + +export interface ItemProps { + icon?: ReactElement + text: string + description?: string + active?: boolean + className?: string + submenuItem?: boolean + onClick?: () => void +} + +export function Item({ icon, text, description, active, submenuItem, className }: ItemProps) { + if (submenuItem) { + return ( +
+
+
+ {icon ? ( +
+ + {icon} +
+ ) : ( +
+ )} +
+
+ + {text} + + {!!description && ( + + {description} + + )} +
+
+ ) + } + + return ( +
+ {icon && ( +
+ {active && ( + + )} + {icon} +
+ )} + + {text} + +
+ ) +} diff --git a/packages/ui/src/components/navbar/navbar-skeleton/noise.png b/packages/ui/src/components/navbar-skeleton/noise.png similarity index 100% rename from packages/ui/src/components/navbar/navbar-skeleton/noise.png rename to packages/ui/src/components/navbar-skeleton/noise.png diff --git a/packages/ui/src/components/navbar-skeleton/root.tsx b/packages/ui/src/components/navbar-skeleton/root.tsx new file mode 100644 index 000000000..d41c3ff1b --- /dev/null +++ b/packages/ui/src/components/navbar-skeleton/root.tsx @@ -0,0 +1,61 @@ +import { PropsWithChildren } from 'react' + +import { cn } from '@utils/cn' +import { isSafari } from '@utils/isSafari' + +import noiseBg from './noise.png' + +export interface RootProps extends PropsWithChildren { + className?: string + isSubMenu?: boolean +} + +export function Root({ className, children, isSubMenu = false }: RootProps) { + return ( +
+ {!isSubMenu && ( + <> +
+
+
+
+
+ + )} + {children} +
+ ) +} diff --git a/packages/ui/src/components/navbar/navbar-item/index.tsx b/packages/ui/src/components/navbar/navbar-item/index.tsx index e47836de2..ec5c1f8db 100644 --- a/packages/ui/src/components/navbar/navbar-item/index.tsx +++ b/packages/ui/src/components/navbar/navbar-item/index.tsx @@ -10,9 +10,9 @@ import { IconProps, Text } from '@/components' +import { NavbarSkeleton } from '@components/navbar-skeleton' import { TFunction } from 'i18next' -import NavbarSkeleton from '../navbar-skeleton' import { NavbarItemType } from '../types' interface NavbarItemProps { diff --git a/packages/ui/src/components/navbar/navbar-skeleton/index.tsx b/packages/ui/src/components/navbar/navbar-skeleton/index.tsx deleted file mode 100644 index 85694374d..000000000 --- a/packages/ui/src/components/navbar/navbar-skeleton/index.tsx +++ /dev/null @@ -1,202 +0,0 @@ -import { Icon, Text } from '@/components' -import { cn } from '@utils/cn' -import { isSafari } from '@utils/isSafari' - -import noiseBg from './noise.png' - -interface NavbarRootProps { - className?: string - children: React.ReactNode - isSubMenu?: boolean -} - -function Root({ className, children, isSubMenu = false }: NavbarRootProps) { - return ( -
- {!isSubMenu && ( - <> -
-
-
-
-
- - )} - {children} -
- ) -} - -function Header({ children }: { children: React.ReactNode }) { - return
{children}
-} - -function Content({ children, className }: { children: React.ReactNode; className?: string }) { - return
{children}
-} - -interface GroupProps { - children: React.ReactNode - title?: string - topBorder?: boolean - isSubMenu?: boolean - titleClassName?: string - className?: string -} - -function Group({ children, title, topBorder, isSubMenu = false, titleClassName, className }: GroupProps) { - return ( -
- {title && ( -
-

{title}

-
- )} - {children} -
- ) -} - -interface ItemProps { - icon?: React.ReactElement - text: string - description?: string - active?: boolean - className?: string - submenuItem?: boolean - onClick?: () => void -} - -function Item({ icon, text, description, active, submenuItem, className }: ItemProps) { - if (submenuItem) { - return ( -
-
-
- {icon ? ( -
- - {icon} -
- ) : ( -
- )} -
-
- - {text} - - {!!description && ( - - {description} - - )} -
-
- ) - } - - return ( -
- {icon && ( -
- {active && ( - - )} - {icon} -
- )} - - {text} - -
- ) -} - -function Footer({ children }: { children: React.ReactNode }) { - return ( -
{children}
- ) -} - -const NavbarSkeleton = { Root, Header, Content, Group, Item, Footer } -export default NavbarSkeleton diff --git a/packages/ui/src/components/navbar/navbar.tsx b/packages/ui/src/components/navbar/navbar.tsx index 81ce681d0..0f19e9b31 100644 --- a/packages/ui/src/components/navbar/navbar.tsx +++ b/packages/ui/src/components/navbar/navbar.tsx @@ -1,14 +1,13 @@ import { useMemo } from 'react' import { Link, useLocation, useNavigate } from 'react-router-dom' -import { Button, Icon, IThemeStore, NavbarProjectChooser, ScrollArea, Spacer } from '@/components' +import { Button, Icon, IThemeStore, NavbarProjectChooser, NavbarSkeleton, ScrollArea, Spacer } from '@/components' import { TypesUser } from '@/types' -import { TranslationStore } from '@views/index' +import { TranslationStore } from '@/views' import { isEmpty } from 'lodash-es' import { getAdminMenuItem } from './data' import { NavbarItem } from './navbar-item' -import NavbarSkeleton from './navbar-skeleton' import { NavbarUser } from './navbar-user' import { NavbarItemType } from './types' @@ -62,7 +61,7 @@ export const Navbar = ({ logo={ - + } /> diff --git a/packages/ui/src/components/settings-menu.tsx b/packages/ui/src/components/settings-menu.tsx index 5bc85556d..8324de7e9 100644 --- a/packages/ui/src/components/settings-menu.tsx +++ b/packages/ui/src/components/settings-menu.tsx @@ -1,7 +1,6 @@ import { NavLink } from 'react-router-dom' -import { Icon, ScrollArea, Sheet, SheetContent, SheetTitle, Spacer } from '@/components' -import NavbarSkeleton from '@/components/navbar/navbar-skeleton' +import { Icon, NavbarSkeleton, ScrollArea, Sheet, SheetContent, SheetTitle, Spacer } from '@/components' import { MenuGroupType } from '@components/navbar/types' interface SystemAdminMenuProps { diff --git a/packages/ui/src/components/text.tsx b/packages/ui/src/components/text.tsx index 049fc0533..94e427749 100644 --- a/packages/ui/src/components/text.tsx +++ b/packages/ui/src/components/text.tsx @@ -64,7 +64,7 @@ interface TextProps extends React.ComponentProps<'span'> { * Shorthand for changing the default rendered element * into a semantically appropriate alternative. */ - as?: 'span' | 'div' | 'label' | 'p' + as?: 'span' | 'div' | 'label' | 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' /** * Change the default rendered element for the one diff --git a/packages/ui/src/views/repo/repo-settings/components/repo-sidebar.tsx b/packages/ui/src/views/repo/repo-settings/components/repo-sidebar.tsx index 8248de15d..316e72876 100644 --- a/packages/ui/src/views/repo/repo-settings/components/repo-sidebar.tsx +++ b/packages/ui/src/views/repo/repo-settings/components/repo-sidebar.tsx @@ -1,6 +1,6 @@ import { NavLink } from 'react-router-dom' -import NavbarSkeleton from '@/components/navbar/navbar-skeleton' +import { NavbarSkeleton } from '@components/navbar-skeleton' import { MenuGroupType } from '@components/navbar/types' interface RepoSidebarProps { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ac78c4fa..92dd2f5db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: version: 5.0.0(eslint@8.57.1) eslint-plugin-tailwindcss: specifier: ^3.17.5 - version: 3.17.5(tailwindcss@3.4.15(ts-node@10.9.2(typescript@5.7.2))) + version: 3.17.5(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.7.2))) husky: specifier: ^9.1.4 version: 9.1.5 @@ -77,12 +77,18 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + monaco-editor: + specifier: 0.50.0 + version: 0.50.0 react: specifier: ^18.3.1 version: 18.3.1 react-dom: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) + react-live: + specifier: ^4.1.8 + version: 4.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-router-dom: specifier: ^6.26.0 version: 6.26.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -108,9 +114,6 @@ importers: lint-staged: specifier: ^15.2.9 version: 15.2.9 - monaco-editor: - specifier: 0.50.0 - version: 0.50.0 typescript: specifier: ~5.6.2 version: 5.6.3 @@ -120,6 +123,9 @@ importers: vite: specifier: ^6.0.3 version: 6.0.3(@types/node@22.10.2)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.6.1) + vite-tsconfig-paths: + specifier: ^5.1.4 + version: 5.1.4(typescript@5.6.3)(vite@6.0.3(@types/node@22.10.2)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.6.1)) apps/gitness: dependencies: @@ -246,7 +252,7 @@ importers: version: 3.7.2(@swc/helpers@0.5.2)(vite@6.0.3(@types/node@22.10.2)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.5.0)) '@vitest/coverage-istanbul': specifier: ^2.1.8 - version: 2.1.8(vitest@2.1.8(@types/node@22.10.2)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.77.8)(terser@5.31.3)) + version: 2.1.8(vitest@2.1.8) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -270,7 +276,7 @@ importers: version: 3.3.3 tailwindcss: specifier: ^3.4.4 - version: 3.4.4(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3)) + version: 3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3)) typescript: specifier: ^5.5.3 version: 5.5.3 @@ -423,7 +429,7 @@ importers: version: 2.3.0 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2))) + version: 1.0.7(tailwindcss@3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2))) vaul: specifier: ^0.9.1 version: 0.9.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -454,7 +460,7 @@ importers: version: 3.7.2(@swc/helpers@0.5.2)(vite@6.0.3(@types/node@20.14.9)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.6.1)) autoprefixer: specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.44) + version: 10.4.19(postcss@8.4.49) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -469,7 +475,7 @@ importers: version: 15.8.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + version: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -481,7 +487,7 @@ importers: version: 15.8.1 tailwindcss: specifier: ^3.4.4 - version: 3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + version: 3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) vite: specifier: ^6.0.3 version: 6.0.3(@types/node@20.14.9)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.6.1) @@ -560,7 +566,7 @@ importers: version: 8.57.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + version: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) lint-staged: specifier: ^15.2.9 version: 15.2.9 @@ -569,7 +575,7 @@ importers: version: 4.1.5 ts-jest: specifier: ^29.1.2 - version: 29.2.5(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)))(typescript@5.5.3) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)))(typescript@5.5.3) typescript: specifier: ^5.3.3 version: 5.5.3 @@ -732,7 +738,7 @@ importers: version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tailwindcss/typography': specifier: ^0.5.15 - version: 0.5.15(tailwindcss@3.4.15(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3))) + version: 0.5.15(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3))) '@uiw/react-markdown-preview': specifier: ^5.1.1 version: 5.1.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -819,7 +825,7 @@ importers: version: 2.3.0 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.15(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3))) + version: 1.0.7(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3))) zod: specifier: ^3.23.8 version: 3.23.8 @@ -844,7 +850,7 @@ importers: version: 3.7.2(@swc/helpers@0.5.2)(vite@6.0.3(@types/node@22.9.1)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.6.1)) '@vitest/coverage-istanbul': specifier: ^2.1.8 - version: 2.1.8(vitest@2.1.8(@types/node@22.9.1)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.77.8)(terser@5.31.3)) + version: 2.1.8(vitest@2.1.8) '@vitest/ui': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) @@ -871,9 +877,9 @@ importers: version: 15.2.9 tailwindcss: specifier: ^3.4.14 - version: 3.4.15(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3)) + version: 3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3)) typescript: - specifier: ^5.5.3 + specifier: ~5.6.2 version: 5.6.3 vite: specifier: ^6.0.3 @@ -922,7 +928,7 @@ importers: version: 11.11.4(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tailwindcss: specifier: ^3.4.4 - version: 3.4.4(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.3)) + version: 3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.2.0)(typescript@5.5.3)) web-worker: specifier: ^1.0.0 version: 1.3.0 @@ -1098,7 +1104,7 @@ importers: devDependencies: '@tailwindcss/typography': specifier: ^0.5.15 - version: 0.5.15(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3))) + version: 0.5.15(tailwindcss@3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3))) '@types/lodash-es': specifier: ^4.17.9 version: 4.17.12 @@ -1140,7 +1146,7 @@ importers: version: 3.3.3 tailwindcss: specifier: ^3.4.4 - version: 3.4.4(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3)) + version: 3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3)) typescript: specifier: ^5.2.2 version: 5.5.3 @@ -1213,7 +1219,7 @@ importers: version: 3.7.0(@swc/helpers@0.5.2)(vite@4.4.9(@types/node@16.18.104)(sass@1.77.8)(terser@5.31.3)) babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.24.9)(webpack@5.93.0(webpack-cli@5.1.4)) + version: 9.1.3(@babel/core@7.24.9)(webpack@5.93.0) babel-plugin-syntax-dynamic-import: specifier: ^6.18.0 version: 6.18.0 @@ -1225,37 +1231,37 @@ importers: version: 6.26.2 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.93.0(webpack-cli@5.1.4)) + version: 7.1.2(webpack@5.93.0) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.93.0(webpack-cli@5.1.4)) + version: 6.2.0(webpack@5.93.0) html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(webpack@5.93.0(webpack-cli@5.1.4)) + version: 5.6.0(webpack@5.93.0) lint-staged: specifier: ^15.2.9 version: 15.2.9 mini-css-extract-plugin: specifier: ^2.9.0 - version: 2.9.0(webpack@5.93.0(webpack-cli@5.1.4)) + version: 2.9.0(webpack@5.93.0) monaco-editor-webpack-plugin: specifier: ^7.1.0 - version: 7.1.0(monaco-editor@0.50.0)(webpack@5.93.0(webpack-cli@5.1.4)) + version: 7.1.0(monaco-editor@0.50.0)(webpack@5.93.0) sass-loader: specifier: ^14.2.1 - version: 14.2.1(sass@1.77.8)(webpack@5.93.0(webpack-cli@5.1.4)) + version: 14.2.1(sass@1.77.8)(webpack@5.93.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.93.0(webpack-cli@5.1.4)) + version: 4.0.0(webpack@5.93.0) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@4.9.5)(webpack@5.93.0(webpack-cli@5.1.4)) + version: 9.5.1(typescript@4.9.5)(webpack@5.93.0) typescript: specifier: ^4.9.5 version: 4.9.5 url-loader: specifier: ^4.1.1 - version: 4.1.1(file-loader@6.2.0(webpack@5.93.0(webpack-cli@5.1.4)))(webpack@5.93.0(webpack-cli@5.1.4)) + version: 4.1.1(file-loader@6.2.0(webpack@5.93.0))(webpack@5.93.0) vite: specifier: ^4.4.9 version: 4.4.9(@types/node@16.18.104)(sass@1.77.8)(terser@5.31.3) @@ -1270,7 +1276,7 @@ importers: version: 1.0.2 webpack: specifier: ^5.92.1 - version: 5.93.0(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) @@ -1300,7 +1306,7 @@ importers: version: 18.3.1(react@18.3.1) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@4.9.5)(webpack@5.93.0(webpack-cli@5.1.4)) + version: 9.5.1(typescript@4.9.5)(webpack@5.93.0) typescript: specifier: ^4.9.5 version: 4.9.5 @@ -1340,7 +1346,7 @@ importers: version: 18.3.0 babel-loader: specifier: ^9.1.3 - version: 9.1.3(@babel/core@7.24.9)(webpack@5.93.0(webpack-cli@5.1.4)) + version: 9.1.3(@babel/core@7.24.9)(webpack@5.93.0) babel-plugin-syntax-dynamic-import: specifier: ^6.18.0 version: 6.18.0 @@ -1352,34 +1358,34 @@ importers: version: 6.26.2 css-loader: specifier: ^7.1.2 - version: 7.1.2(webpack@5.93.0(webpack-cli@5.1.4)) + version: 7.1.2(webpack@5.93.0) file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.93.0(webpack-cli@5.1.4)) + version: 6.2.0(webpack@5.93.0) html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(webpack@5.93.0(webpack-cli@5.1.4)) + version: 5.6.0(webpack@5.93.0) lint-staged: specifier: ^15.2.9 version: 15.2.9 mini-css-extract-plugin: specifier: ^2.9.0 - version: 2.9.0(webpack@5.93.0(webpack-cli@5.1.4)) + version: 2.9.0(webpack@5.93.0) monaco-editor-webpack-plugin: specifier: ^7.1.0 - version: 7.1.0(monaco-editor@0.50.0)(webpack@5.93.0(webpack-cli@5.1.4)) + version: 7.1.0(monaco-editor@0.50.0)(webpack@5.93.0) sass-loader: specifier: ^14.2.1 - version: 14.2.1(sass@1.77.8)(webpack@5.93.0(webpack-cli@5.1.4)) + version: 14.2.1(sass@1.77.8)(webpack@5.93.0) style-loader: specifier: ^4.0.0 - version: 4.0.0(webpack@5.93.0(webpack-cli@5.1.4)) + version: 4.0.0(webpack@5.93.0) url-loader: specifier: ^4.1.1 - version: 4.1.1(file-loader@6.2.0(webpack@5.93.0(webpack-cli@5.1.4)))(webpack@5.93.0(webpack-cli@5.1.4)) + version: 4.1.1(file-loader@6.2.0(webpack@5.93.0))(webpack@5.93.0) webpack: specifier: ^5.92.1 - version: 5.93.0(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) @@ -8952,6 +8958,11 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + prism-react-renderer@2.4.1: + resolution: {integrity: sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==} + peerDependencies: + react: '>=16.0.0' + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -9052,6 +9063,13 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + react-live@4.1.8: + resolution: {integrity: sha512-B2SgNqwPuS2ekqj4lcxi5TibEcjWkdVyYykBEUBshPAPDQ527x2zPEZg560n8egNtAjUpwXFQm7pcXV65aAYmg==} + engines: {node: '>= 0.12.0', npm: '>= 2.0.0'} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + react-markdown@9.0.1: resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: @@ -10279,6 +10297,11 @@ packages: '@types/react': optional: true + use-editable@2.3.3: + resolution: {integrity: sha512-7wVD2JbfAFJ3DK0vITvXBdpd9JAz5BcKAAolsnLBuBn6UDDwBGuCIAGvR3yA2BNKm578vAMVHFCWaOcA+BhhiA==} + peerDependencies: + react: '>= 16.8.0' + use-sidecar@1.1.2: resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -11155,16 +11178,34 @@ snapshots: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 @@ -11195,11 +11236,23 @@ snapshots: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 @@ -11210,31 +11263,67 @@ snapshots: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 @@ -11245,6 +11334,12 @@ snapshots: '@babel/core': 7.24.9 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + optional: true + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.9)': dependencies: '@babel/core': 7.24.9 @@ -12292,7 +12387,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -12306,7 +12401,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.10.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + jest-config: 29.7.0(@types/node@22.10.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -12327,7 +12422,7 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -12341,7 +12436,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.10.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + jest-config: 29.7.0(@types/node@22.10.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -14893,21 +14988,21 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tailwindcss/typography@0.5.15(tailwindcss@3.4.15(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3)))': + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3)))': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.15(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3)) + tailwindcss: 3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3)) - '@tailwindcss/typography@0.5.15(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3)))': + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3)))': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3)) + tailwindcss: 3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3)) '@tanstack/query-core@4.36.1': {} @@ -15846,7 +15941,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-istanbul@2.1.8(vitest@2.1.8(@types/node@22.10.2)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.77.8)(terser@5.31.3))': + '@vitest/coverage-istanbul@2.1.8(vitest@2.1.8)': dependencies: '@istanbuljs/schema': 0.1.3 debug: 4.3.7 @@ -15862,22 +15957,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-istanbul@2.1.8(vitest@2.1.8(@types/node@22.9.1)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.77.8)(terser@5.31.3))': - dependencies: - '@istanbuljs/schema': 0.1.3 - debug: 4.3.7 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magicast: 0.3.5 - test-exclude: 7.0.1 - tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.9.1)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.77.8)(terser@5.31.3) - transitivePeerDependencies: - - supports-color - '@vitest/expect@2.1.8': dependencies: '@vitest/spy': 2.1.8 @@ -15929,7 +16008,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.9.1)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.77.8)(terser@5.31.3) + vitest: 2.1.8(@types/node@22.10.2)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.77.8)(terser@5.31.3) '@vitest/utils@2.1.8': dependencies: @@ -16123,19 +16202,19 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.93.0)': dependencies: - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.93.0)': dependencies: - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.0.4)(webpack@5.93.0)': dependencies: - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) @@ -16362,14 +16441,14 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.19(postcss@8.4.44): + autoprefixer@10.4.19(postcss@8.4.49): dependencies: browserslist: 4.23.1 caniuse-lite: 1.0.30001638 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.44 + postcss: 8.4.49 postcss-value-parser: 4.2.0 autoprefixer@10.4.20(postcss@8.4.49): @@ -16424,12 +16503,26 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.24.9)(webpack@5.93.0(webpack-cli@5.1.4)): + babel-jest@29.7.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.26.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + optional: true + + babel-loader@9.1.3(@babel/core@7.24.9)(webpack@5.93.0): dependencies: '@babel/core': 7.24.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) babel-messages@6.23.0: dependencies: @@ -16526,12 +16619,36 @@ snapshots: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.9) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.9) + babel-preset-current-node-syntax@1.0.1(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + optional: true + babel-preset-jest@29.6.3(@babel/core@7.24.9): dependencies: '@babel/core': 7.24.9 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.9) + babel-preset-jest@29.6.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.26.0) + optional: true + babel-runtime@6.26.0: dependencies: core-js: 2.6.12 @@ -17033,13 +17150,13 @@ snapshots: optionalDependencies: typescript: 5.7.2 - create-jest@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)): + create-jest@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + jest-config: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -17048,13 +17165,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)): + create-jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + jest-config: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -17080,7 +17197,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.93.0(webpack-cli@5.1.4)): + css-loader@7.1.2(webpack@5.93.0): dependencies: icss-utils: 5.1.0(postcss@8.4.44) postcss: 8.4.44 @@ -17091,7 +17208,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.6.2 optionalDependencies: - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) css-modules-loader-core@1.1.0: dependencies: @@ -17793,7 +17910,7 @@ snapshots: debug: 4.3.7 enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 @@ -17806,7 +17923,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -17828,7 +17945,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.5.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -17913,11 +18030,11 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.15(ts-node@10.9.2(typescript@5.7.2))): + eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.7.2))): dependencies: fast-glob: 3.3.2 postcss: 8.4.44 - tailwindcss: 3.4.15(ts-node@10.9.2(typescript@5.7.2)) + tailwindcss: 3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.7.2)) eslint-scope@5.1.1: dependencies: @@ -18140,11 +18257,11 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-loader@6.2.0(webpack@5.93.0(webpack-cli@5.1.4)): + file-loader@6.2.0(webpack@5.93.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) filelist@1.0.4: dependencies: @@ -18658,7 +18775,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.0(webpack@5.93.0(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(webpack@5.93.0): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -18666,7 +18783,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -19137,16 +19254,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)): + jest-cli@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + create-jest: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + jest-config: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -19156,16 +19273,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)): + jest-cli@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + create-jest: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + jest-config: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -19175,7 +19292,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)): + jest-config@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)): dependencies: '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 @@ -19201,12 +19318,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 16.18.104 - ts-node: 10.9.2(@types/node@16.18.104)(typescript@5.5.3) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)): + jest-config@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)): dependencies: '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 @@ -19232,12 +19349,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.14.9 - ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.7.2) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.10.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)): + jest-config@29.7.0(@types/node@22.10.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)): dependencies: '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 @@ -19263,12 +19380,12 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.10.2 - ts-node: 10.9.2(@types/node@16.18.104)(typescript@5.5.3) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.10.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)): + jest-config@29.7.0(@types/node@22.10.2)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)): dependencies: '@babel/core': 7.24.9 '@jest/test-sequencer': 29.7.0 @@ -19294,7 +19411,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.10.2 - ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.7.2) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -19536,24 +19653,24 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)): + jest@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + jest-cli: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)): + jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + jest-cli: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -20256,11 +20373,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.0(webpack@5.93.0(webpack-cli@5.1.4)): + mini-css-extract-plugin@2.9.0(webpack@5.93.0): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} @@ -20303,11 +20420,11 @@ snapshots: moment@2.30.1: {} - monaco-editor-webpack-plugin@7.1.0(monaco-editor@0.50.0)(webpack@5.93.0(webpack-cli@5.1.4)): + monaco-editor-webpack-plugin@7.1.0(monaco-editor@0.50.0)(webpack@5.93.0): dependencies: loader-utils: 2.0.4 monaco-editor: 0.50.0 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) monaco-editor@0.50.0: {} @@ -20737,45 +20854,45 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.49 - postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)): + postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)): dependencies: lilconfig: 3.1.2 yaml: 2.6.1 optionalDependencies: postcss: 8.4.44 - ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.7.2) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2) - postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3)): + postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3)): dependencies: lilconfig: 3.1.2 yaml: 2.6.1 optionalDependencies: postcss: 8.4.44 - ts-node: 10.9.2(@types/node@22.10.2)(typescript@5.5.3) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3) - postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.3)): + postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.2.0)(typescript@5.5.3)): dependencies: lilconfig: 3.1.2 yaml: 2.6.1 optionalDependencies: postcss: 8.4.44 - ts-node: 10.9.2(@types/node@22.2.0)(typescript@5.5.3) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.2.0)(typescript@5.5.3) - postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3)): + postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.7.2)): dependencies: lilconfig: 3.1.2 yaml: 2.6.1 optionalDependencies: postcss: 8.4.49 - ts-node: 10.9.2(@types/node@22.9.1)(typescript@5.6.3) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.7.2) - postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(typescript@5.7.2)): + postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3)): dependencies: lilconfig: 3.1.2 yaml: 2.6.1 optionalDependencies: postcss: 8.4.49 - ts-node: 10.9.2(@types/node@20.14.9)(typescript@5.7.2) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3) postcss-modules-extract-imports@1.1.0: dependencies: @@ -20895,6 +21012,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 + prism-react-renderer@2.4.1(react@18.3.1): + dependencies: + '@types/prismjs': 1.26.0 + clsx: 2.1.1 + react: 18.3.1 + process-nextick-args@2.0.1: {} promise-map-series@0.3.0: {} @@ -20994,6 +21117,14 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + react-live@4.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + prism-react-renderer: 2.4.1(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + sucrase: 3.35.0 + use-editable: 2.3.3(react@18.3.1) + react-markdown@9.0.1(@types/react@18.3.3)(react@18.3.1): dependencies: '@types/hast': 3.0.4 @@ -21486,12 +21617,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@14.2.1(sass@1.77.8)(webpack@5.93.0(webpack-cli@5.1.4)): + sass-loader@14.2.1(sass@1.77.8)(webpack@5.93.0): dependencies: neo-async: 2.6.2 optionalDependencies: sass: 1.77.8 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) sass@1.77.8: dependencies: @@ -21904,9 +22035,9 @@ snapshots: strip-json-comments@3.1.1: {} - style-loader@4.0.0(webpack@5.93.0(webpack-cli@5.1.4)): + style-loader@4.0.0(webpack@5.93.0): dependencies: - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) style-to-object@1.0.8: dependencies: @@ -21959,15 +22090,15 @@ snapshots: dependencies: '@babel/runtime': 7.24.7 - tailwindcss-animate@1.0.7(tailwindcss@3.4.15(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3))): dependencies: - tailwindcss: 3.4.15(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3)) + tailwindcss: 3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3)) - tailwindcss-animate@1.0.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2))): dependencies: - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + tailwindcss: 3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) - tailwindcss@3.4.15(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3)): + tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.7.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -21986,7 +22117,7 @@ snapshots: postcss: 8.4.49 postcss-import: 15.1.0(postcss@8.4.49) postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3)) + postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.7.2)) postcss-nested: 6.2.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -21994,7 +22125,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.15(ts-node@10.9.2(typescript@5.7.2)): + tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -22013,7 +22144,7 @@ snapshots: postcss: 8.4.49 postcss-import: 15.1.0(postcss@8.4.49) postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(typescript@5.7.2)) + postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3)) postcss-nested: 6.2.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -22021,7 +22152,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)): + tailwindcss@3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -22040,7 +22171,7 @@ snapshots: postcss: 8.4.44 postcss-import: 15.1.0(postcss@8.4.44) postcss-js: 4.0.1(postcss@8.4.44) - postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2)) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2)) postcss-nested: 6.2.0(postcss@8.4.44) postcss-selector-parser: 6.1.0 resolve: 1.22.8 @@ -22048,7 +22179,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.4(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3)): + tailwindcss@3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -22067,7 +22198,7 @@ snapshots: postcss: 8.4.44 postcss-import: 15.1.0(postcss@8.4.44) postcss-js: 4.0.1(postcss@8.4.44) - postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3)) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3)) postcss-nested: 6.2.0(postcss@8.4.44) postcss-selector-parser: 6.1.0 resolve: 1.22.8 @@ -22075,7 +22206,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.4(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.3)): + tailwindcss@3.4.4(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.2.0)(typescript@5.5.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -22094,7 +22225,7 @@ snapshots: postcss: 8.4.44 postcss-import: 15.1.0(postcss@8.4.44) postcss-js: 4.0.1(postcss@8.4.44) - postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.3)) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.2.0)(typescript@5.5.3)) postcss-nested: 6.2.0(postcss@8.4.44) postcss-selector-parser: 6.1.0 resolve: 1.22.8 @@ -22108,14 +22239,16 @@ snapshots: dependencies: streamx: 2.20.2 - terser-webpack-plugin@5.3.10(webpack@5.93.0(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack@5.93.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.3 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.2) terser@5.31.3: dependencies: @@ -22232,12 +22365,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.24.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.9))(jest@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)))(typescript@5.5.3): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)))(typescript@5.5.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3)) + jest: 29.7.0(@types/node@16.18.104)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -22246,12 +22379,12 @@ snapshots: typescript: 5.5.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.24.9 + '@babel/core': 7.26.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.9) + babel-jest: 29.7.0(@babel/core@7.26.0) - ts-loader@9.5.1(typescript@4.9.5)(webpack@5.93.0(webpack-cli@5.1.4)): + ts-loader@9.5.1(typescript@4.9.5)(webpack@5.93.0): dependencies: chalk: 4.1.2 enhanced-resolve: 5.17.1 @@ -22259,9 +22392,9 @@ snapshots: semver: 7.6.2 source-map: 0.7.4 typescript: 4.9.5 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) - ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.3): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@16.18.104)(typescript@5.5.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -22278,9 +22411,11 @@ snapshots: typescript: 5.5.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.2) optional: true - ts-node@10.9.2(@types/node@20.14.9)(typescript@5.7.2): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@20.14.9)(typescript@5.7.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -22297,9 +22432,11 @@ snapshots: typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.2) optional: true - ts-node@10.9.2(@types/node@22.10.2)(typescript@5.5.3): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.5.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -22316,9 +22453,32 @@ snapshots: typescript: 5.5.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.2) optional: true - ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.3): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.10.2)(typescript@5.7.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.10.2 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.7.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.2) + optional: true + + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.2.0)(typescript@5.5.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -22335,9 +22495,11 @@ snapshots: typescript: 5.5.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.2) optional: true - ts-node@10.9.2(@types/node@22.9.1)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.2))(@types/node@22.9.1)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -22354,6 +22516,8 @@ snapshots: typescript: 5.6.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.9.2(@swc/helpers@0.5.2) optional: true tsconfck@3.1.4(typescript@5.6.3): @@ -22579,14 +22743,14 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.93.0(webpack-cli@5.1.4)))(webpack@5.93.0(webpack-cli@5.1.4)): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.93.0))(webpack@5.93.0): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) optionalDependencies: - file-loader: 6.2.0(webpack@5.93.0(webpack-cli@5.1.4)) + file-loader: 6.2.0(webpack@5.93.0) use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): dependencies: @@ -22595,6 +22759,10 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 + use-editable@2.3.3(react@18.3.1): + dependencies: + react: 18.3.1 + use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): dependencies: detect-node-es: 1.1.0 @@ -22934,6 +23102,17 @@ snapshots: - supports-color - typescript + vite-tsconfig-paths@5.1.4(typescript@5.6.3)(vite@6.0.3(@types/node@22.10.2)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.6.1)): + dependencies: + debug: 4.3.7 + globrex: 0.1.2 + tsconfck: 3.1.4(typescript@5.6.3) + optionalDependencies: + vite: 6.0.3(@types/node@22.10.2)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.6.1) + transitivePeerDependencies: + - supports-color + - typescript + vite-tsconfig-paths@5.1.4(typescript@5.6.3)(vite@6.0.3(@types/node@22.9.1)(jiti@1.21.6)(sass@1.77.8)(terser@5.31.3)(yaml@2.6.1)): dependencies: debug: 4.3.7 @@ -23195,9 +23374,9 @@ snapshots: webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack@5.93.0(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0))(webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0))(webpack@5.93.0(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.93.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.93.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.0.4)(webpack@5.93.0) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -23206,12 +23385,12 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) - webpack-dev-middleware@7.3.0(webpack@5.93.0(webpack-cli@5.1.4)): + webpack-dev-middleware@7.3.0(webpack@5.93.0): dependencies: colorette: 2.0.20 memfs: 4.11.0 @@ -23220,7 +23399,7 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.2.0 optionalDependencies: - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0): dependencies: @@ -23252,10 +23431,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.3.0(webpack@5.93.0(webpack-cli@5.1.4)) + webpack-dev-middleware: 7.3.0(webpack@5.93.0) ws: 8.18.0 optionalDependencies: - webpack: 5.93.0(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.93.0) transitivePeerDependencies: - bufferutil @@ -23271,7 +23450,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.93.0(webpack-cli@5.1.4): + webpack@5.93.0(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -23294,7 +23473,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.93.0(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.2(@swc/helpers@0.5.2))(webpack@5.93.0) watchpack: 2.4.1 webpack-sources: 3.2.3 optionalDependencies: