diff --git a/Dockerfile b/Dockerfile index 6710c467d..49cc3221c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,39 +1,45 @@ FROM node:alpine AS base +RUN ["npm", "install", "-g", "turbo@latest"] # backend FROM base AS backend-builder WORKDIR /backend COPY . . -RUN npx turbo prune backend --docker +RUN ["turbo", "prune", "backend", "--docker"] FROM base AS backend-dev WORKDIR /backend COPY --from=backend-builder /backend/out/json/ . COPY --from=backend-builder /backend/out/package-lock.json ./package-lock.json -RUN npm install +RUN ["npm", "install"] COPY --from=backend-builder /backend/out/full/ . -ENTRYPOINT npx turbo run dev --filter=backend +ENTRYPOINT ["turbo", "run", "dev", "--filter=backend"] FROM backend-dev AS backend-prod -ENTRYPOINT npx turbo run start --filter=backend --env-mode=loose +ENTRYPOINT ["turbo", "run", "start", "--filter=backend", "--env-mode=loose"] # frontend FROM base AS frontend-builder WORKDIR /frontend COPY . . -RUN npx turbo prune frontend --docker +RUN ["turbo", "prune", "frontend", "--docker"] FROM base AS frontend-dev WORKDIR /frontend COPY --from=frontend-builder /frontend/out/json/ . COPY --from=frontend-builder /frontend/out/package-lock.json ./package-lock.json -RUN npm install +RUN ["npm", "install"] COPY --from=frontend-builder /frontend/out/full/ . -ENTRYPOINT npx turbo run dev --filter=frontend +ENTRYPOINT ["turbo", "run", "dev", "--filter=frontend"] FROM frontend-dev AS frontend-prod -ENTRYPOINT npx turbo run start --filter=frontend --env-mode=loose +WORKDIR /frontend + +RUN ["turbo", "run", "build", "--filter=frontend", "--env-mode=loose"] + +COPY /apps/frontend/dist ./apps/frontend/dist +ENTRYPOINT ["turbo", "run", "start", "--filter=frontend"] diff --git a/apps/frontend/src/App.tsx b/apps/frontend/src/App.tsx index b3d13b190..332291831 100644 --- a/apps/frontend/src/App.tsx +++ b/apps/frontend/src/App.tsx @@ -1,8 +1,6 @@ import { lazy } from "react"; import { ApolloClient, ApolloProvider, InMemoryCache } from "@apollo/client"; -import * as Tooltip from "@radix-ui/react-tooltip"; -import { IconoirProvider } from "iconoir-react"; import { RouterProvider, createBrowserRouter } from "react-router-dom"; import Catalog from "@/app/Catalog"; @@ -10,6 +8,7 @@ import Enrollment from "@/app/Enrollment"; import Grades from "@/app/Grades"; import Landing from "@/app/Landing"; import Layout from "@/components/Layout"; +import ThemeProvider from "@/components/ThemeProvider"; const About = lazy(() => import("@/app/About")); const CatalogEnrollment = lazy(() => import("@/components/Class/Enrollment")); @@ -128,17 +127,9 @@ const client = new ApolloClient({ export default function App() { return ( - - - - - + + + ); } diff --git a/apps/frontend/src/components/Button/Button.module.scss b/apps/frontend/src/components/Button/Button.module.scss index 3dec9fb22..ba6ca9835 100644 --- a/apps/frontend/src/components/Button/Button.module.scss +++ b/apps/frontend/src/components/Button/Button.module.scss @@ -2,31 +2,39 @@ height: 32px; border-radius: 4px; padding: 0 12px; - display: flex; + display: inline-flex; flex-shrink: 0; align-items: center; font-size: 14px; font-weight: 500; line-height: 1; cursor: pointer; - transition: all 100ms ease-in-out; gap: 8px; user-select: none; + transition: + border-color 100ms ease-in-out, + background-color 100ms ease-in-out, + color 100ms ease-in-out; - &.solid { + &[data-disabled] { + pointer-events: none; + opacity: 0.5; + } + + &[data-variant="solid"] { background-color: var(--blue-500); color: white; &:hover { background-color: var(--blue-600); } - + &:active { background-color: var(--blue-700); } } - &.outline { + &[data-variant="outline"] { border: 1px solid var(--border-color); color: var(--paragraph-color); @@ -39,4 +47,4 @@ background-color: var(--button-active-color); } } -} \ No newline at end of file +} diff --git a/apps/frontend/src/components/Button/index.tsx b/apps/frontend/src/components/Button/index.tsx index c55fd0a73..f5f0641d8 100644 --- a/apps/frontend/src/components/Button/index.tsx +++ b/apps/frontend/src/components/Button/index.tsx @@ -11,6 +11,7 @@ import styles from "./Button.module.scss"; interface Props { variant?: "solid" | "outline"; + disabled?: boolean; } type ButtonProps = PolymorphicComponentPropsWithRef< @@ -24,6 +25,7 @@ const Button = forwardRef( active, children, className, + disabled, variant = "solid", ...props }: ButtonProps, @@ -32,14 +34,9 @@ const Button = forwardRef( return ( - + {feedback && ( +
+ +
+ )} ); } diff --git a/apps/frontend/src/components/MenuItem/index.tsx b/apps/frontend/src/components/MenuItem/index.tsx index 779cde714..531e4cfa7 100644 --- a/apps/frontend/src/components/MenuItem/index.tsx +++ b/apps/frontend/src/components/MenuItem/index.tsx @@ -1,4 +1,4 @@ -import { ElementType, ReactElement, ReactNode, forwardRef } from "react"; +import { ElementType, ReactNode, forwardRef } from "react"; import classNames from "classnames"; @@ -11,8 +11,7 @@ import styles from "./MenuItem.module.scss"; interface Props { active?: boolean; - children: ReactNode; - className?: string; + disabled?: boolean; } type MenuItemProps = PolymorphicComponentPropsWithRef< @@ -21,16 +20,16 @@ type MenuItemProps = PolymorphicComponentPropsWithRef< >; const MenuItem = forwardRef( - ( - { active, children, className, as, ...props }: MenuItemProps, - ref: PolymorphicRef + ( + { active, children, className, disabled, as, ...props }: MenuItemProps, + ref: PolymorphicRef ) => { - const Component = as ?? "button"; + const Component = as || "button"; return ( {children} @@ -49,4 +49,4 @@ MenuItem.displayName = "MenuItem"; export default MenuItem as ( props: MenuItemProps -) => ReactElement | null; +) => ReactNode | null; diff --git a/apps/frontend/src/components/NavigationBar/NavigationBar.module.scss b/apps/frontend/src/components/NavigationBar/NavigationBar.module.scss index b488d85e7..d42226632 100644 --- a/apps/frontend/src/components/NavigationBar/NavigationBar.module.scss +++ b/apps/frontend/src/components/NavigationBar/NavigationBar.module.scss @@ -7,7 +7,12 @@ .brand { font-size: 24px; font-weight: 580; - font-feature-settings: 'cv05' on, 'cv13' on, 'ss07' on, 'cv12' on, 'cv06' on; + font-feature-settings: + "cv05" on, + "cv13" on, + "ss07" on, + "cv12" on, + "cv06" on; color: var(--blue-500); cursor: pointer; transition: all 100ms ease-in-out; @@ -33,6 +38,10 @@ &.invert { padding: 12px 12px 0; + .icon-button { + color: var(--paragraph-color); + } + .brand { color: white; @@ -71,4 +80,4 @@ } } } -} \ No newline at end of file +} diff --git a/apps/frontend/src/components/NavigationBar/index.tsx b/apps/frontend/src/components/NavigationBar/index.tsx index ba5f00f4f..9ca9e63ab 100644 --- a/apps/frontend/src/components/NavigationBar/index.tsx +++ b/apps/frontend/src/components/NavigationBar/index.tsx @@ -30,42 +30,41 @@ export default function NavigationBar({ invert }: NavigationBarProps) { Berkeleytime {width <= 992 ? ( - + ) : ( <>
- - Discover - - - Catalog - - - Enrollment - - - Grades - - - My schedules - - - My plan - + + {({ isActive }) => ( + + Catalog + + )} + + + {({ isActive }) => ( + + My schedules + + )} + + + {({ isActive }) => ( + + About + + )} +
- {account ? ( - - ) : ( - - )} + )} diff --git a/apps/frontend/src/components/ThemeProvider/ThemeProvider.module.scss b/apps/frontend/src/components/ThemeProvider/ThemeProvider.module.scss new file mode 100644 index 000000000..0e55d527f --- /dev/null +++ b/apps/frontend/src/components/ThemeProvider/ThemeProvider.module.scss @@ -0,0 +1,363 @@ +:root { + --slate-50: #f8fafc; + --slate-100: #f1f5f9; + --slate-200: #e2e8f0; + --slate-300: #cbd5e1; + --slate-400: #94a3b8; + --slate-500: #64748b; + --slate-600: #475569; + --slate-700: #334155; + --slate-800: #1e293b; + --slate-900: #0f172a; + --slate-950: #020617; + + --gray-50: #f9fafb; + --gray-100: #f3f4f6; + --gray-200: #e5e7eb; + --gray-300: #d1d5db; + --gray-400: #9ca3af; + --gray-500: #6b7280; + --gray-600: #4b5563; + --gray-700: #374151; + --gray-800: #1f2937; + --gray-900: #111827; + --gray-950: #030712; + + --zinc-50: #fafafa; + --zinc-100: #f4f4f5; + --zinc-200: #e4e4e7; + --zinc-300: #d4d4d8; + --zinc-400: #a1a1aa; + --zinc-500: #71717a; + --zinc-600: #52525b; + --zinc-700: #3f3f46; + --zinc-800: #27272a; + --zinc-900: #18181b; + --zinc-950: #09090b; + + --neutral-50: #fafafa; + --neutral-100: #f5f5f5; + --neutral-200: #e5e5e5; + --neutral-300: #d4d4d4; + --neutral-400: #a3a3a3; + --neutral-500: #737373; + --neutral-600: #525252; + --neutral-700: #404040; + --neutral-800: #262626; + --neutral-900: #171717; + --neutral-950: #0a0a0a; + + --stone-50: #fafaf9; + --stone-100: #f5f5f4; + --stone-200: #e7e5e4; + --stone-300: #d6d3d1; + --stone-400: #a8a29e; + --stone-500: #78716c; + --stone-600: #57534e; + --stone-700: #44403c; + --stone-800: #292524; + --stone-900: #1c1917; + --stone-950: #0c0a09; + + --red-50: #fef2f2; + --red-100: #fee2e2; + --red-200: #fecaca; + --red-300: #fca5a5; + --red-400: #f87171; + --red-500: #ef4444; + --red-600: #dc2626; + --red-700: #b91c1c; + --red-800: #991b1b; + --red-900: #7f1d1d; + --red-950: #450a0a; + + --orange-50: #fff7ed; + --orange-100: #ffedd5; + --orange-200: #fed7aa; + --orange-300: #fdba74; + --orange-400: #fb923c; + --orange-500: #f97316; + --orange-600: #ea580c; + --orange-700: #c2410c; + --orange-800: #9a3412; + --orange-900: #7c2d12; + --orange-950: #431407; + + --amber-50: #fffbeb; + --amber-100: #fef3c7; + --amber-200: #fde68a; + --amber-300: #fcd34d; + --amber-400: #fbbf24; + --amber-500: #f59e0b; + --amber-600: #d97706; + --amber-700: #b45309; + --amber-800: #92400e; + --amber-900: #78350f; + --amber-950: #451a03; + + --yellow-50: #fefce8; + --yellow-100: #fef9c3; + --yellow-200: #fef08a; + --yellow-300: #fde047; + --yellow-400: #facc15; + --yellow-500: #eab308; + --yellow-600: #ca8a04; + --yellow-700: #a16207; + --yellow-800: #854d0e; + --yellow-900: #713f12; + --yellow-950: #422006; + + --lime-50: #f7fee7; + --lime-100: #ecfccb; + --lime-200: #d9f99d; + --lime-300: #bef264; + --lime-400: #a3e635; + --lime-500: #84cc16; + --lime-600: #65a30d; + --lime-700: #4d7c0f; + --lime-800: #3f6212; + --lime-900: #365314; + --lime-950: #1a2e05; + + --green-50: #f0fdf4; + --green-100: #dcfce7; + --green-200: #bbf7d0; + --green-300: #86efac; + --green-400: #4ade80; + --green-500: #22c55e; + --green-600: #16a34a; + --green-700: #15803d; + --green-800: #166534; + --green-900: #14532d; + --green-950: #052e16; + + --emerald-50: #ecfdf5; + --emerald-100: #d1fae5; + --emerald-200: #a7f3d0; + --emerald-300: #6ee7b7; + --emerald-400: #34d399; + --emerald-500: #10b981; + --emerald-600: #059669; + --emerald-700: #047857; + --emerald-800: #065f46; + --emerald-900: #064e3b; + --emerald-950: #022c22; + + --teal-50: #f0fdfa; + --teal-100: #ccfbf1; + --teal-200: #99f6e4; + --teal-300: #5eead4; + --teal-400: #2dd4bf; + --teal-500: #14b8a6; + --teal-600: #0d9488; + --teal-700: #0f766e; + --teal-800: #115e59; + --teal-900: #134e4a; + --teal-950: #042f2e; + + --cyan-50: #ecfeff; + --cyan-100: #cffafe; + --cyan-200: #a5f3fc; + --cyan-300: #67e8f9; + --cyan-400: #22d3ee; + --cyan-500: #06b6d4; + --cyan-600: #0891b2; + --cyan-700: #0e7490; + --cyan-800: #155e75; + --cyan-900: #164e63; + --cyan-950: #083344; + + --sky-50: #f0f9ff; + --sky-100: #e0f2fe; + --sky-200: #bae6fd; + --sky-300: #7dd3fc; + --sky-400: #38bdf8; + --sky-500: #0ea5e9; + --sky-600: #0284c7; + --sky-700: #0369a1; + --sky-800: #075985; + --sky-900: #0c4a6e; + --sky-950: #083344; + + --blue-50: #eff6ff; + --blue-100: #dbeafe; + --blue-200: #bfdbfe; + --blue-300: #93c5fd; + --blue-400: #60a5fa; + --blue-500: #3b82f6; + --blue-600: #2563eb; + --blue-700: #1d4ed8; + --blue-800: #1e40af; + --blue-900: #1e3a8a; + --blue-950: #172554; + + --indigo-50: #eef2ff; + --indigo-100: #e0e7ff; + --indigo-200: #c7d2fe; + --indigo-300: #a5b4fc; + --indigo-400: #818cf8; + --indigo-500: #6366f1; + --indigo-600: #4f46e5; + --indigo-700: #4338ca; + --indigo-800: #3730a3; + --indigo-900: #312e81; + --indigo-950: #1e1b4b; + + --violet-50: #f5f3ff; + --violet-100: #ede9fe; + --violet-200: #ddd6fe; + --violet-300: #c4b5fd; + --violet-400: #a78bfa; + --violet-500: #8b5cf6; + --violet-600: #7c3aed; + --violet-700: #6d28d9; + --violet-800: #5b21b6; + --violet-900: #4c1d95; + --violet-950: #2e1065; + + --purple-50: #faf5ff; + --purple-100: #f3e8ff; + --purple-200: #e9d5ff; + --purple-300: #d8b4fe; + --purple-400: #c084fc; + --purple-500: #a855f7; + --purple-600: #9333ea; + --purple-700: #7e22ce; + --purple-800: #6b21a8; + --purple-900: #581c87; + --purple-950: #3b0764; + + --fuchsia-50: #fdf4ff; + --fuchsia-100: #fae8ff; + --fuchsia-200: #f5d0fe; + --fuchsia-300: #f0abfc; + --fuchsia-400: #e879f9; + --fuchsia-500: #d946ef; + --fuchsia-600: #c026d3; + --fuchsia-700: #a21caf; + --fuchsia-800: #86198f; + --fuchsia-900: #701a75; + --fuchsia-950: #4a044e; + + --pink-50: #fdf2f8; + --pink-100: #fce7f3; + --pink-200: #fbcfe8; + --pink-300: #f9a8d4; + --pink-400: #f472b6; + --pink-500: #ec4899; + --pink-600: #db2777; + --pink-700: #be185d; + --pink-800: #9d174d; + --pink-900: #831843; + --pink-950: #500724; + + --rose-50: #fff1f2; + --rose-100: #ffe4e6; + --rose-200: #fecdd3; + --rose-300: #fda4af; + --rose-400: #fb7185; + --rose-500: #f43f5e; + --rose-600: #e11d48; + --rose-700: #be123c; + --rose-800: #9f1239; + --rose-900: #881337; + --rose-950: #4c0519; + + --light-foreground-color: white; + --light-background-color: var(--slate-50); + --light-backdrop-color: var(--slate-100); + + --light-border-color: rgb(0 0 0 / 10%); + + --light-heading-color: var(--slate-900); + --light-paragraph-color: var(--slate-500); + --light-label-color: var(--slate-400); + + // --light-button-color: white; + --light-button-hover-color: var(--slate-100); + --light-button-active-color: var(--slate-200); + + --light-tooltip-color: var(--neutral-900); + + --dark-foreground-color: var(--zinc-800); + --dark-background-color: var(--zinc-900); + --dark-backdrop-color: var(--zinc-950); + + --dark-border-color: var(--zinc-700); + + --dark-heading-color: white; + --dark-paragraph-color: var(--zinc-400); + --dark-label-color: var(--zinc-500); + + // --dark-button-color: var(--zinc-800); + --dark-button-hover-color: var(--zinc-700); + --dark-button-active-color: var(--zinc-600); + + --dark-tooltip-color: var(--zinc-950); +} + +@mixin light-theme { + --foreground-color: var(--light-foreground-color); + --background-color: var(--light-background-color); + --backdrop-color: var(--light-backdrop-color); + + --border-color: var(--light-border-color); + + --heading-color: var(--light-heading-color); + --paragraph-color: var(--light-paragraph-color); + --label-color: var(--light-label-color); + + // --button-color: var(--light-button-color); + --button-hover-color: var(--light-button-hover-color); + --button-active-color: var(--light-button-active-color); + + --tooltip-color: var(--light-tooltip-color); +} + +@mixin dark-theme { + --foreground-color: var(--dark-foreground-color); + --background-color: var(--dark-background-color); + --backdrop-color: var(--dark-backdrop-color); + + --border-color: var(--dark-border-color); + + --heading-color: var(--dark-heading-color); + --paragraph-color: var(--dark-paragraph-color); + --label-color: var(--dark-label-color); + + // --button-color: var(--dark-button-color); + --button-hover-color: var(--dark-button-hover-color); + --button-active-color: var(--dark-button-active-color); + + --tooltip-color: var(--dark-tooltip-color); +} + +.root { + display: flex; + flex-direction: column; +} + +body[data-theme="dark"] { + @include dark-theme; +} + +body[data-theme="light"] { + @include light-theme; +} + +body:not([data-theme]) { + @include light-theme; + + @media (prefers-color-scheme: dark) { + @include dark-theme; + } +} + +body { + background-color: var(--background-color); + font-family: Inter, sans-serif; + + @supports (font-variation-settings: normal) { + font-family: InterVariable, sans-serif; + } +} diff --git a/apps/frontend/src/components/ThemeProvider/index.tsx b/apps/frontend/src/components/ThemeProvider/index.tsx new file mode 100644 index 000000000..8b74d61ae --- /dev/null +++ b/apps/frontend/src/components/ThemeProvider/index.tsx @@ -0,0 +1,48 @@ +import { ReactNode, useEffect, useState } from "react"; + +import { TooltipProvider } from "@radix-ui/react-tooltip"; +import { IconoirProvider } from "iconoir-react"; + +import ThemeContext, { Theme } from "@/context/ThemeContext"; + +import styles from "./ThemeProvider.module.scss"; + +interface ThemeProviderProps { + children: ReactNode; +} + +export default function ThemeProvider({ children }: ThemeProviderProps) { + const [theme, setTheme] = useState( + () => localStorage.getItem("theme") as Theme + ); + + useEffect(() => { + if (theme) { + localStorage.setItem("theme", theme); + document.body.setAttribute("data-theme", theme); + + return; + } + + localStorage.removeItem("theme"); + document.body.removeAttribute("data-theme"); + }, [theme]); + + return ( +
+ + + + {children} + + + +
+ ); +} diff --git a/apps/frontend/src/context/ThemeContext.ts b/apps/frontend/src/context/ThemeContext.ts new file mode 100644 index 000000000..8350ce52f --- /dev/null +++ b/apps/frontend/src/context/ThemeContext.ts @@ -0,0 +1,12 @@ +import { Dispatch, SetStateAction, createContext } from "react"; + +export type Theme = "light" | "dark" | null; + +export interface ThemeContextType { + theme: Theme; + setTheme: Dispatch>; +} + +const ThemeContext = createContext(null); + +export default ThemeContext; diff --git a/apps/frontend/src/hooks/useTheme.tsx b/apps/frontend/src/hooks/useTheme.tsx new file mode 100644 index 000000000..653f28569 --- /dev/null +++ b/apps/frontend/src/hooks/useTheme.tsx @@ -0,0 +1,15 @@ +import { useContext } from "react"; + +import ThemeContext from "@/context/ThemeContext"; + +const useTheme = () => { + const themeContext = useContext(ThemeContext); + + if (!themeContext) { + throw new Error("useTheme must be used within a ThemeProvider"); + } + + return themeContext; +}; + +export default useTheme; diff --git a/apps/frontend/src/main.scss b/apps/frontend/src/main.scss index 675f35f06..e2916c3d3 100644 --- a/apps/frontend/src/main.scss +++ b/apps/frontend/src/main.scss @@ -1,8 +1,13 @@ -body, p, h1, h2, h3 { +body, +p, +h1, +h2, +h3 { margin: 0; } -input, button { +input, +button { font-family: unset; border: unset; background-color: unset; @@ -22,319 +27,8 @@ a { text-decoration: none; } -*, *::after, *::before { +*, +*::after, +*::before { box-sizing: border-box; } - -:root { - --slate-50: #f8fafc; - --slate-100: #f1f5f9; - --slate-200: #e2e8f0; - --slate-300: #cbd5e1; - --slate-400: #94a3b8; - --slate-500: #64748b; - --slate-600: #475569; - --slate-700: #334155; - --slate-800: #1e293b; - --slate-900: #0f172a; - --slate-950: #020617; - - --gray-50: #f9fafb; - --gray-100: #f3f4f6; - --gray-200: #e5e7eb; - --gray-300: #d1d5db; - --gray-400: #9ca3af; - --gray-500: #6b7280; - --gray-600: #4b5563; - --gray-700: #374151; - --gray-800: #1f2937; - --gray-900: #111827; - --gray-950: #030712; - - --zinc-50: #fafafa; - --zinc-100: #f4f4f5; - --zinc-200: #e4e4e7; - --zinc-300: #d4d4d8; - --zinc-400: #a1a1aa; - --zinc-500: #71717a; - --zinc-600: #52525b; - --zinc-700: #3f3f46; - --zinc-800: #27272a; - --zinc-900: #18181b; - --zinc-950: #09090b; - - --neutral-50: #fafafa; - --neutral-100: #f5f5f5; - --neutral-200: #e5e5e5; - --neutral-300: #d4d4d4; - --neutral-400: #a3a3a3; - --neutral-500: #737373; - --neutral-600: #525252; - --neutral-700: #404040; - --neutral-800: #262626; - --neutral-900: #171717; - --neutral-950: #0a0a0a; - - --stone-50: #fafaf9; - --stone-100: #f5f5f4; - --stone-200: #e7e5e4; - --stone-300: #d6d3d1; - --stone-400: #a8a29e; - --stone-500: #78716c; - --stone-600: #57534e; - --stone-700: #44403c; - --stone-800: #292524; - --stone-900: #1c1917; - --stone-950: #0c0a09; - - --red-50: #fef2f2; - --red-100: #fee2e2; - --red-200: #fecaca; - --red-300: #fca5a5; - --red-400: #f87171; - --red-500: #ef4444; - --red-600: #dc2626; - --red-700: #b91c1c; - --red-800: #991b1b; - --red-900: #7f1d1d; - --red-950: #450a0a; - - --orange-50: #fff7ed; - --orange-100: #ffedd5; - --orange-200: #fed7aa; - --orange-300: #fdba74; - --orange-400: #fb923c; - --orange-500: #f97316; - --orange-600: #ea580c; - --orange-700: #c2410c; - --orange-800: #9a3412; - --orange-900: #7c2d12; - --orange-950: #431407; - - --amber-50: #fffbeb; - --amber-100: #fef3c7; - --amber-200: #fde68a; - --amber-300: #fcd34d; - --amber-400: #fbbf24; - --amber-500: #f59e0b; - --amber-600: #d97706; - --amber-700: #b45309; - --amber-800: #92400e; - --amber-900: #78350f; - --amber-950: #451a03; - - --yellow-50: #fefce8; - --yellow-100: #fef9c3; - --yellow-200: #fef08a; - --yellow-300: #fde047; - --yellow-400: #facc15; - --yellow-500: #eab308; - --yellow-600: #ca8a04; - --yellow-700: #a16207; - --yellow-800: #854d0e; - --yellow-900: #713f12; - --yellow-950: #422006; - - --lime-50: #f7fee7; - --lime-100: #ecfccb; - --lime-200: #d9f99d; - --lime-300: #bef264; - --lime-400: #a3e635; - --lime-500: #84cc16; - --lime-600: #65a30d; - --lime-700: #4d7c0f; - --lime-800: #3f6212; - --lime-900: #365314; - --lime-950: #1a2e05; - - --green-50: #f0fdf4; - --green-100: #dcfce7; - --green-200: #bbf7d0; - --green-300: #86efac; - --green-400: #4ade80; - --green-500: #22c55e; - --green-600: #16a34a; - --green-700: #15803d; - --green-800: #166534; - --green-900: #14532d; - --green-950: #052e16; - - --emerald-50: #ecfdf5; - --emerald-100: #d1fae5; - --emerald-200: #a7f3d0; - --emerald-300: #6ee7b7; - --emerald-400: #34d399; - --emerald-500: #10b981; - --emerald-600: #059669; - --emerald-700: #047857; - --emerald-800: #065f46; - --emerald-900: #064e3b; - --emerald-950: #022c22; - - --teal-50: #f0fdfa; - --teal-100: #ccfbf1; - --teal-200: #99f6e4; - --teal-300: #5eead4; - --teal-400: #2dd4bf; - --teal-500: #14b8a6; - --teal-600: #0d9488; - --teal-700: #0f766e; - --teal-800: #115e59; - --teal-900: #134e4a; - --teal-950: #042f2e; - - --cyan-50: #ecfeff; - --cyan-100: #cffafe; - --cyan-200: #a5f3fc; - --cyan-300: #67e8f9; - --cyan-400: #22d3ee; - --cyan-500: #06b6d4; - --cyan-600: #0891b2; - --cyan-700: #0e7490; - --cyan-800: #155e75; - --cyan-900: #164e63; - --cyan-950: #083344; - - --sky-50: #f0f9ff; - --sky-100: #e0f2fe; - --sky-200: #bae6fd; - --sky-300: #7dd3fc; - --sky-400: #38bdf8; - --sky-500: #0ea5e9; - --sky-600: #0284c7; - --sky-700: #0369a1; - --sky-800: #075985; - --sky-900: #0c4a6e; - --sky-950: #083344; - - --blue-50: #eff6ff; - --blue-100: #dbeafe; - --blue-200: #bfdbfe; - --blue-300: #93c5fd; - --blue-400: #60a5fa; - --blue-500: #3b82f6; - --blue-600: #2563eb; - --blue-700: #1d4ed8; - --blue-800: #1e40af; - --blue-900: #1e3a8a; - --blue-950: #172554; - - --indigo-50: #eef2ff; - --indigo-100: #e0e7ff; - --indigo-200: #c7d2fe; - --indigo-300: #a5b4fc; - --indigo-400: #818cf8; - --indigo-500: #6366f1; - --indigo-600: #4f46e5; - --indigo-700: #4338ca; - --indigo-800: #3730a3; - --indigo-900: #312e81; - --indigo-950: #1e1b4b; - - --violet-50: #f5f3ff; - --violet-100: #ede9fe; - --violet-200: #ddd6fe; - --violet-300: #c4b5fd; - --violet-400: #a78bfa; - --violet-500: #8b5cf6; - --violet-600: #7c3aed; - --violet-700: #6d28d9; - --violet-800: #5b21b6; - --violet-900: #4c1d95; - --violet-950: #2e1065; - - --purple-50: #faf5ff; - --purple-100: #f3e8ff; - --purple-200: #e9d5ff; - --purple-300: #d8b4fe; - --purple-400: #c084fc; - --purple-500: #a855f7; - --purple-600: #9333ea; - --purple-700: #7e22ce; - --purple-800: #6b21a8; - --purple-900: #581c87; - --purple-950: #3b0764; - - --fuchsia-50: #fdf4ff; - --fuchsia-100: #fae8ff; - --fuchsia-200: #f5d0fe; - --fuchsia-300: #f0abfc; - --fuchsia-400: #e879f9; - --fuchsia-500: #d946ef; - --fuchsia-600: #c026d3; - --fuchsia-700: #a21caf; - --fuchsia-800: #86198f; - --fuchsia-900: #701a75; - --fuchsia-950: #4a044e; - - --pink-50: #fdf2f8; - --pink-100: #fce7f3; - --pink-200: #fbcfe8; - --pink-300: #f9a8d4; - --pink-400: #f472b6; - --pink-500: #ec4899; - --pink-600: #db2777; - --pink-700: #be185d; - --pink-800: #9d174d; - --pink-900: #831843; - --pink-950: #500724; - - --rose-50: #fff1f2; - --rose-100: #ffe4e6; - --rose-200: #fecdd3; - --rose-300: #fda4af; - --rose-400: #fb7185; - --rose-500: #f43f5e; - --rose-600: #e11d48; - --rose-700: #be123c; - --rose-800: #9f1239; - --rose-900: #881337; - --rose-950: #4c0519; - - --foreground-color: white; - --background-color: var(--slate-50); - --backdrop-color: var(--slate-100); - - --border-color: rgb(0 0 0 / 10%); - - --heading-color: var(--slate-900); - --paragraph-color: var(--slate-500); - --label-color: var(--slate-400); - - // --button-color: white; - --button-hover-color: var(--slate-100); - --button-active-color: var(--slate-200); - - --tooltip-color: var(--neutral-900); -} - -@media (prefers-color-scheme: dark) { - :root { - --foreground-color: var(--zinc-800); - --background-color: var(--zinc-900); - --backdrop-color: var(--zinc-950); - - --border-color: var(--zinc-700); - - --heading-color: white; - --paragraph-color: var(--zinc-400); - --label-color: var(--zinc-500); - - // --button-color: var(--zinc-800); - --button-hover-color: var(--zinc-700); - --button-active-color: var(--zinc-600); - - --tooltip-color: var(--zinc-950); - } -} - -body { - font-family: Inter, sans-serif; - background-color: var(--background-color); -} - -@supports (font-variation-settings: normal) { - body { - font-family: InterVariable, sans-serif; - } -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6c22cd9be..f67471f00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3698,7 +3698,8 @@ "node_modules/@exodus/schemasafe": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", - "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==" + "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", + "dev": true }, "node_modules/@floating-ui/core": { "version": "1.6.5", @@ -6372,6 +6373,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, "engines": { "node": ">=10" }, @@ -6846,7 +6848,8 @@ "node_modules/@types/swagger-schema-official": { "version": "2.0.25", "resolved": "https://registry.npmjs.org/@types/swagger-schema-official/-/swagger-schema-official-2.0.25.tgz", - "integrity": "sha512-T92Xav+Gf/Ik1uPW581nA+JftmjWPgskw/WBf4TJzxRG/SJ+DfNnNE+WuZ4mrXuzflQMqMkm1LSYjzYW7MB1Cg==" + "integrity": "sha512-T92Xav+Gf/Ik1uPW581nA+JftmjWPgskw/WBf4TJzxRG/SJ+DfNnNE+WuZ4mrXuzflQMqMkm1LSYjzYW7MB1Cg==", + "dev": true }, "node_modules/@types/unist": { "version": "2.0.10", @@ -7865,7 +7868,8 @@ "node_modules/call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true }, "node_modules/callsites": { "version": "3.1.0", @@ -8097,6 +8101,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, "engines": { "node": ">=10" } @@ -8975,7 +8980,8 @@ "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true }, "node_modules/diff": { "version": "5.0.0", @@ -9098,7 +9104,8 @@ "node_modules/emojilib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true }, "node_modules/encodeurl": { "version": "1.0.2", @@ -9112,6 +9119,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "engines": { "node": ">=6" } @@ -9158,7 +9166,8 @@ "node_modules/es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==" + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true }, "node_modules/esbuild": { "version": "0.21.5", @@ -9517,6 +9526,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "dev": true, "engines": { "node": ">=6.0.0" }, @@ -9743,7 +9753,8 @@ "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true }, "node_modules/fast-url-parser": { "version": "1.1.3", @@ -10503,7 +10514,8 @@ "node_modules/http2-client": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", - "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==" + "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", + "dev": true }, "node_modules/https-proxy-agent": { "version": "7.0.5", @@ -12842,6 +12854,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "dev": true, "dependencies": { "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", @@ -12875,6 +12888,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", + "dev": true, "dependencies": { "http2-client": "^1.2.5" }, @@ -12911,6 +12925,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", "integrity": "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==", + "dev": true, "dependencies": { "es6-promise": "^3.2.1" } @@ -13081,6 +13096,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", + "dev": true, "dependencies": { "fast-safe-stringify": "^2.0.7" } @@ -13089,6 +13105,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", + "dev": true, "dependencies": { "@exodus/schemasafe": "^1.0.0-rc.2", "should": "^13.2.1", @@ -13102,6 +13119,7 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "engines": { "node": ">= 6" } @@ -13110,6 +13128,7 @@ "version": "2.5.6", "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz", "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==", + "dev": true, "dependencies": { "node-fetch-h2": "^2.3.0", "oas-kit-common": "^1.0.8", @@ -13128,6 +13147,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -13142,6 +13162,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -13155,6 +13176,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -13165,17 +13187,20 @@ "node_modules/oas-resolver/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/oas-resolver/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/oas-resolver/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13189,6 +13214,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -13205,6 +13231,7 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "engines": { "node": ">= 6" } @@ -13213,6 +13240,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -13230,6 +13258,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "engines": { "node": ">=12" } @@ -13238,6 +13267,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", + "dev": true, "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } @@ -13246,6 +13276,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz", "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==", + "dev": true, "dependencies": { "call-me-maybe": "^1.0.1", "oas-kit-common": "^1.0.8", @@ -13264,6 +13295,7 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "engines": { "node": ">= 6" } @@ -14696,6 +14728,7 @@ "version": "1.1.9", "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==", + "dev": true, "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } @@ -15442,6 +15475,7 @@ "version": "13.2.3", "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", + "dev": true, "dependencies": { "should-equal": "^2.0.0", "should-format": "^3.0.3", @@ -15454,6 +15488,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", + "dev": true, "dependencies": { "should-type": "^1.4.0" } @@ -15462,6 +15497,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==", + "dev": true, "dependencies": { "should-type": "^1.3.0", "should-type-adaptors": "^1.0.1" @@ -15470,12 +15506,14 @@ "node_modules/should-type": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==" + "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==", + "dev": true }, "node_modules/should-type-adaptors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", + "dev": true, "dependencies": { "should-type": "^1.3.0", "should-util": "^1.0.0" @@ -15484,7 +15522,8 @@ "node_modules/should-util": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==" + "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", + "dev": true }, "node_modules/side-channel": { "version": "1.0.6", @@ -15545,6 +15584,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" }, @@ -15884,12 +15924,14 @@ "node_modules/swagger-schema-official": { "version": "2.0.0-bab6bed", "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", - "integrity": "sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==" + "integrity": "sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==", + "dev": true }, "node_modules/swagger-typescript-api": { "version": "13.0.21", "resolved": "https://registry.npmjs.org/swagger-typescript-api/-/swagger-typescript-api-13.0.21.tgz", "integrity": "sha512-zeLlk0klprtidGgF9VZyjzhYmjRpC2RnIB3tUfhOBoJTmkcXLT7CzKu+pJSl3i4DGk2/9zq/fwyV92RWxg0JdQ==", + "dev": true, "dependencies": { "@types/swagger-schema-official": "^2.0.25", "cosmiconfig": "^9.0.0", @@ -15916,6 +15958,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -15941,6 +15984,7 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, "funding": [ { "type": "github", @@ -15958,6 +16002,7 @@ "version": "7.0.8", "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz", "integrity": "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==", + "dev": true, "dependencies": { "call-me-maybe": "^1.0.1", "node-fetch": "^2.6.1", @@ -15984,6 +16029,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -15998,6 +16044,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -16011,6 +16058,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -16021,17 +16069,20 @@ "node_modules/swagger2openapi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/swagger2openapi/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/swagger2openapi/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -16045,6 +16096,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -16061,6 +16113,7 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "engines": { "node": ">= 6" } @@ -16069,6 +16122,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -16086,6 +16140,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "engines": { "node": ">=12" } @@ -16964,6 +17019,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, "engines": { "node": ">=4" } @@ -17726,11 +17782,9 @@ }, "packages/sis-api": { "name": "@repo/sis-api", - "dependencies": { - "swagger-typescript-api": "^13.0.21" - }, "devDependencies": { "@repo/typescript-config": "*", + "swagger-typescript-api": "^13.0.21", "tsx": "^4.17.0", "typescript": "^5.5.4" }