diff --git a/.changeset/add-sitemap-options.md b/.changeset/add-sitemap-options.md deleted file mode 100644 index 02e9118bd..000000000 --- a/.changeset/add-sitemap-options.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@onruntime/next-sitemap": minor ---- - -Add new configuration options for sitemap generation: - -- `exclude`: Filter out routes using glob patterns or a function -- `priority`: Automatic depth-based priority calculation (or custom function) -- `changeFreq`: Set change frequency per route -- `additionalSitemaps`: Include custom sitemaps in the sitemap index diff --git a/.gitignore b/.gitignore index f2bfad233..b8c5cf507 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,5 @@ next-env.d.ts # claude .claude-files/ + +temp/ \ No newline at end of file diff --git a/apps/web/package.json b/apps/web/package.json index f6d23aff5..c14d55456 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -19,18 +19,17 @@ "@next/mdx": "^16.1.1", "@onruntime/next-sitemap": "workspace:*", "@onruntime/translations": "workspace:*", - "@radix-ui/react-accordion": "^1.2.3", - "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-accordion": "^1.2.12", + "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-navigation-menu": "^1.2.3", - "@radix-ui/react-slot": "^1.1.1", - "@radix-ui/react-tabs": "^1.1.2", - "@radix-ui/react-toast": "^1.2.6", + "@radix-ui/react-navigation-menu": "^1.2.14", + "@radix-ui/react-slot": "^1.2.4", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-toast": "^1.2.15", "@t3-oss/env-nextjs": "^0.13.0", "@types/mdx": "^2.0.13", "@vercel/og": "^0.8.0", "@vercel/speed-insights": "^1.1.0", - "autoprefixer": "^10.4.20", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.562.0", @@ -46,13 +45,14 @@ "reflect-metadata": "^0.2.2", "resend": "^4.1.2", "server-only": "^0.0.1", - "tailwind-merge": "^3.0.0", - "tailwindcss-animate": "^1.0.7", + "tailwind-merge": "^3.4.0", + "tw-animate-css": "^1.4.0", "usehooks-ts": "^3.1.1", "zod": "^3.24.2" }, "devDependencies": { "@ai-sdk/openai": "^3.0.2", + "@tailwindcss/postcss": "^4.1.18", "@types/node": "^22.0.0", "@types/react": "^19", "@types/react-dom": "^19", @@ -60,7 +60,7 @@ "dotenv-flow": "^4.1.0", "gray-matter": "^4.0.3", "postcss": "^8.5.1", - "tailwindcss": "^3.4.17", + "tailwindcss": "^4.1.18", "tsx": "^4.21.0", "typescript": "^5" } diff --git a/apps/web/postcss.config.mjs b/apps/web/postcss.config.mjs index 2ef30fcf4..5d6d8457f 100644 --- a/apps/web/postcss.config.mjs +++ b/apps/web/postcss.config.mjs @@ -1,8 +1,7 @@ /** @type {import('postcss-load-config').Config} */ const config = { plugins: { - tailwindcss: {}, - autoprefixer: {}, + '@tailwindcss/postcss': {}, }, }; diff --git a/apps/web/src/app/[locale]/agency/[city]/page.tsx b/apps/web/src/app/[locale]/agency/[city]/page.tsx index 924dda604..04917f503 100644 --- a/apps/web/src/app/[locale]/agency/[city]/page.tsx +++ b/apps/web/src/app/[locale]/agency/[city]/page.tsx @@ -153,7 +153,7 @@ export default async function CityPage({ params }: AgencyPageProps) { return (
{Icon && ( -
+
)} diff --git a/apps/web/src/app/[locale]/agency/page.tsx b/apps/web/src/app/[locale]/agency/page.tsx index 8e8258a57..471669d3b 100644 --- a/apps/web/src/app/[locale]/agency/page.tsx +++ b/apps/web/src/app/[locale]/agency/page.tsx @@ -64,7 +64,7 @@ export default async function AgencyLandingPage() { height={30} className={cn( "absolute z-[-1] top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />
@@ -236,7 +236,7 @@ export default async function AgencyLandingPage() {
-
+

{t('cta.title')} diff --git a/apps/web/src/app/[locale]/glossary/page.tsx b/apps/web/src/app/[locale]/glossary/page.tsx index 976ff4bc9..f44a7078f 100644 --- a/apps/web/src/app/[locale]/glossary/page.tsx +++ b/apps/web/src/app/[locale]/glossary/page.tsx @@ -56,7 +56,7 @@ export default async function GlossaryPage() { height={30} className={cn( "z-[-1]", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />

@@ -93,7 +93,7 @@ export default async function GlossaryPage() {

{letter}

-
+
diff --git a/apps/web/src/components/marketing/agency/contact-cta.tsx b/apps/web/src/components/marketing/agency/contact-cta.tsx index b84eb1246..1f2d44fa6 100644 --- a/apps/web/src/components/marketing/agency/contact-cta.tsx +++ b/apps/web/src/components/marketing/agency/contact-cta.tsx @@ -39,7 +39,7 @@ const ContactCTA = async ({ agency }: ContactCTAProps) => { {t('features.calendar')}
- + {t('features.expertise', { city: agency.name, region: agency.region })} diff --git a/apps/web/src/components/marketing/agency/local-portfolio.tsx b/apps/web/src/components/marketing/agency/local-portfolio.tsx index ce14f599e..08cec4636 100644 --- a/apps/web/src/components/marketing/agency/local-portfolio.tsx +++ b/apps/web/src/components/marketing/agency/local-portfolio.tsx @@ -63,7 +63,7 @@ const LocalPortfolioProject = async ({ fill />
-
+

{project.name}

{tProject("description")}

diff --git a/apps/web/src/components/marketing/landing/customer/featured/index.tsx b/apps/web/src/components/marketing/landing/customer/featured/index.tsx index 4ae9ff009..72f03098e 100644 --- a/apps/web/src/components/marketing/landing/customer/featured/index.tsx +++ b/apps/web/src/components/marketing/landing/customer/featured/index.tsx @@ -12,7 +12,7 @@ const Featured: React.FC = async () => { const { t } = await getTranslation("components/marketing/landing/customer/featured"); return ( -
+

@@ -45,7 +45,7 @@ const Featured: React.FC = async () => { height={30} className={cn( "z-[-1]", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />

diff --git a/apps/web/src/components/marketing/landing/page-switcher/index.tsx b/apps/web/src/components/marketing/landing/page-switcher/index.tsx index 7e4a14b31..c222d44bc 100644 --- a/apps/web/src/components/marketing/landing/page-switcher/index.tsx +++ b/apps/web/src/components/marketing/landing/page-switcher/index.tsx @@ -17,7 +17,7 @@ const PageSwitcher: React.FC = () => { value={pathname} className="w-fit mx-auto" > - + {t("customer")} diff --git a/apps/web/src/components/marketing/landing/visitor/featured/index.tsx b/apps/web/src/components/marketing/landing/visitor/featured/index.tsx index a0b623d4e..96139e314 100644 --- a/apps/web/src/components/marketing/landing/visitor/featured/index.tsx +++ b/apps/web/src/components/marketing/landing/visitor/featured/index.tsx @@ -14,7 +14,7 @@ const Featured: React.FC = async () => { const { t } = await getTranslation("components/marketing/landing/visitor/featured"); return ( -
+

@@ -48,7 +48,7 @@ const Featured: React.FC = async () => { height={30} className={cn( "z-[-1]", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />

@@ -64,7 +64,7 @@ const Featured: React.FC = async () => { sizes="100vw" /> -
+
= ({ })}
-
+

{project.name}

{tProject("short-description")} diff --git a/apps/web/src/components/marketing/landing/visitor/team/grid/card/index.tsx b/apps/web/src/components/marketing/landing/visitor/team/grid/card/index.tsx index 81f099945..ee7351cae 100644 --- a/apps/web/src/components/marketing/landing/visitor/team/grid/card/index.tsx +++ b/apps/web/src/components/marketing/landing/visitor/team/grid/card/index.tsx @@ -24,7 +24,7 @@ const TeamMemberCard: React.FC = ({ const { t } = useTranslation("components/marketing/landing/visitor/team"); return ( -

+
= async ({ height={30} className={cn( "z-[-1]", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />
diff --git a/apps/web/src/components/marketing/navbar/index.tsx b/apps/web/src/components/marketing/navbar/index.tsx index 5ba9b4888..603bcfaa7 100644 --- a/apps/web/src/components/marketing/navbar/index.tsx +++ b/apps/web/src/components/marketing/navbar/index.tsx @@ -201,7 +201,7 @@ const Navbar: React.FC = () => { >
diff --git a/apps/web/src/components/marketing/navbar/navigation/agencies/index.tsx b/apps/web/src/components/marketing/navbar/navigation/agencies/index.tsx index d4733e6fa..eaf8f1da6 100644 --- a/apps/web/src/components/marketing/navbar/navigation/agencies/index.tsx +++ b/apps/web/src/components/marketing/navbar/navigation/agencies/index.tsx @@ -40,7 +40,7 @@ const NavigationAgencies: React.FC = () => {
diff --git a/apps/web/src/components/marketing/navbar/navigation/projects/index.tsx b/apps/web/src/components/marketing/navbar/navigation/projects/index.tsx index 0d91809ec..8eb0b6553 100644 --- a/apps/web/src/components/marketing/navbar/navigation/projects/index.tsx +++ b/apps/web/src/components/marketing/navbar/navigation/projects/index.tsx @@ -23,7 +23,7 @@ const FeaturedProjectCard: React.FC<{ project: Project }> = ({ project }) => {
= ({ project }) => {
@@ -98,7 +98,7 @@ const NavigationProjects: React.FC = () => {
diff --git a/apps/web/src/components/marketing/navbar/navigation/services/index.tsx b/apps/web/src/components/marketing/navbar/navigation/services/index.tsx index f3a126c8d..0ea32430a 100644 --- a/apps/web/src/components/marketing/navbar/navigation/services/index.tsx +++ b/apps/web/src/components/marketing/navbar/navigation/services/index.tsx @@ -51,7 +51,7 @@ const ServiceCategoryCard: React.FC<{ service: ServiceCategoryData }> = ({ servi
@@ -94,7 +94,7 @@ const NavigationServices: React.FC = () => {
diff --git a/apps/web/src/components/marketing/npo/donations/index.tsx b/apps/web/src/components/marketing/npo/donations/index.tsx index 79e69efa9..8f753b617 100644 --- a/apps/web/src/components/marketing/npo/donations/index.tsx +++ b/apps/web/src/components/marketing/npo/donations/index.tsx @@ -94,7 +94,7 @@ const Donations: React.FC = () => { setSelectedAmount(null); }} placeholder={t("custom-amount.placeholder")} - className="w-full px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-onruntime-blue" + className="w-full px-3 py-2 border rounded-md focus:outline-hidden focus:ring-2 focus:ring-onruntime-blue" min="1" /> diff --git a/apps/web/src/components/marketing/services/feature-section.tsx b/apps/web/src/components/marketing/services/feature-section.tsx index a663e2514..49b4f7511 100644 --- a/apps/web/src/components/marketing/services/feature-section.tsx +++ b/apps/web/src/components/marketing/services/feature-section.tsx @@ -27,7 +27,13 @@ const FeatureItem: React.FC = ({ return (
{FeatureIcon && ( -
+
)} @@ -60,7 +66,13 @@ const FeatureCard: React.FC = ({ return (
{FeatureIcon && ( -
+
)} @@ -91,7 +103,13 @@ const FeatureMinimal: React.FC = ({ return (
{FeatureIcon && ( -
+
)} @@ -126,7 +144,6 @@ const FeatureSection: React.FC = ({ accentColor = "onruntime-blue", variant = 'default' }) => { - // Look up features from Services constant const categoryData = Services.find(s => s.id === categoryId); const subService = categoryData?.subServices.find(s => s.id === serviceId); @@ -205,16 +222,25 @@ const FeatureSection: React.FC = ({ {renderFeatures()}
-
-
-
-
+
+
+
+
{firstFeatureIcon && React.createElement( firstFeatureIcon, - { className: `w-32 h-32 text-${accentColor} opacity-10` } + { + className: "size-32 opacity-10", + style: { color: `var(--${accentColor})` } + } )}
diff --git a/apps/web/src/components/marketing/services/sections/index.tsx b/apps/web/src/components/marketing/services/sections/index.tsx index 312a2f30c..a1a447008 100644 --- a/apps/web/src/components/marketing/services/sections/index.tsx +++ b/apps/web/src/components/marketing/services/sections/index.tsx @@ -103,9 +103,9 @@ export const TechnologiesSection = () => (
-
+
-
+
{" "} @@ -151,7 +151,7 @@ export const ConsultingSection = () => (
-
+
); @@ -217,7 +217,7 @@ export const ExpertiseSection = () => ( key={partner.name} className="flex items-center gap-6 p-4 rounded-lg border bg-background hover:bg-accent/50 transition-colors" > -
+
{partner.name} = ({
-
-
-
+
+
+
-
+
@@ -69,7 +69,7 @@ const ServiceLayout: React.FC = ({

{t("cards.custom.description")}

-
+
@@ -77,7 +77,7 @@ const ServiceLayout: React.FC = ({

{t("cards.support.description")}

-
+
@@ -85,7 +85,7 @@ const ServiceLayout: React.FC = ({

{t("cards.technologies.description")}

-
+
@@ -106,7 +106,7 @@ const ServiceLayout: React.FC = ({ height={30} className={cn( "absolute inset-0 z-0", - "[mask-image:radial-gradient(ellipse_at_center,transparent_20%,black_100%)]" + "mask-[radial-gradient(ellipse_at_center,transparent_20%,black_100%)]" )} />
@@ -132,7 +132,7 @@ const ServiceLayout: React.FC = ({
-
+
diff --git a/apps/web/src/components/marketing/services/service-overview.tsx b/apps/web/src/components/marketing/services/service-overview.tsx index c45f6d3b1..a6ecbbf38 100644 --- a/apps/web/src/components/marketing/services/service-overview.tsx +++ b/apps/web/src/components/marketing/services/service-overview.tsx @@ -99,7 +99,7 @@ const SubServiceBubble: React.FC = ({ categoryId, subServ return (
{subService.icon && React.createElement( @@ -165,7 +165,7 @@ const ServiceOverviewPage: React.FC = ({
-
+
{ServiceIcon && }
@@ -203,7 +203,7 @@ const ServiceOverviewPage: React.FC = ({ height={30} className={cn( "absolute inset-0 z-0", - "[mask-image:radial-gradient(ellipse_at_center,transparent_20%,black_100%)]" + "mask-[radial-gradient(ellipse_at_center,transparent_20%,black_100%)]" )} />
@@ -267,7 +267,7 @@ const ServiceOverviewPage: React.FC = ({ height={30} className={cn( "absolute inset-0 -z-10", - "[mask-image:radial-gradient(white,transparent)]" + "mask-[radial-gradient(white,transparent)]" )} />
@@ -344,7 +344,7 @@ const ServiceOverviewPage: React.FC = ({
-
+
= ({ height={30} className={cn( "absolute inset-0 z-0", - "[mask-image:radial-gradient(ellipse_at_bottom_right,black_30%,transparent_70%)]" + "mask-[radial-gradient(ellipse_at_bottom_right,black_30%,transparent_70%)]" )} />
diff --git a/apps/web/src/components/ui/animated-shiny-text.tsx b/apps/web/src/components/ui/animated-shiny-text.tsx index 9176a8aa9..ff5c892dc 100644 --- a/apps/web/src/components/ui/animated-shiny-text.tsx +++ b/apps/web/src/components/ui/animated-shiny-text.tsx @@ -23,9 +23,9 @@ const AnimatedShinyText: FC = ({ className={cn( "mx-auto max-w-md text-neutral-600/70 dark:text-neutral-400/70", - "animate-shiny-text bg-clip-text bg-no-repeat [background-position:0_0] [background-size:var(--shiny-width)_100%] [transition:background-position_1s_cubic-bezier(.6,.6,0,1)_infinite]", + "animate-shiny-text bg-clip-text bg-no-repeat bg-position-[0_0] bg-size-[var(--shiny-width)_100%] [transition:background-position_1s_cubic-bezier(.6,.6,0,1)_infinite]", - "bg-gradient-to-r from-transparent via-black/80 via-50% to-transparent dark:via-white/80", + "bg-linear-to-r from-transparent via-black/80 via-50% to-transparent dark:via-white/80", className, )} diff --git a/apps/web/src/components/ui/badge.tsx b/apps/web/src/components/ui/badge.tsx index 3f76c8d47..92f9f06ba 100644 --- a/apps/web/src/components/ui/badge.tsx +++ b/apps/web/src/components/ui/badge.tsx @@ -4,12 +4,12 @@ import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" const badgeVariants = cva( - "inline-flex items-center rounded-md border w-fit px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + "inline-flex items-center rounded-md border w-fit px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2", { variants: { variant: { default: - "border-transparent bg-primary text-primary-foreground shadow", + "border-transparent bg-primary text-primary-foreground shadow-sm", secondary: "border-transparent bg-secondary text-secondary-foreground", outline: "text-foreground", diff --git a/apps/web/src/components/ui/button.tsx b/apps/web/src/components/ui/button.tsx index 8fe9734af..1f7ab481a 100644 --- a/apps/web/src/components/ui/button.tsx +++ b/apps/web/src/components/ui/button.tsx @@ -4,16 +4,16 @@ import { cva, type VariantProps } from "class-variance-authority"; import { cn } from "@/lib/utils/cn"; const buttonVariants = cva( - "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-regular transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-regular transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer", { variants: { variant: { default: - "bg-primary text-primary-foreground shadow hover:bg-primary/90", + "bg-primary text-primary-foreground shadow-sm hover:bg-primary/90", outline: - "border border-solid border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + "border border-solid border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground", secondary: - "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground", link: "text-primary underline-offset-4 hover:underline", }, diff --git a/apps/web/src/components/ui/dropdown-menu.tsx b/apps/web/src/components/ui/dropdown-menu.tsx index 7f71b7724..09418a103 100644 --- a/apps/web/src/components/ui/dropdown-menu.tsx +++ b/apps/web/src/components/ui/dropdown-menu.tsx @@ -27,7 +27,7 @@ const DropdownMenuSubTrigger = React.forwardRef< svg]:size-4 [&>svg]:shrink-0", + "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0", inset && "pl-8", className )} @@ -100,7 +100,7 @@ const DropdownMenuCheckboxItem = React.forwardRef< = ({ content, className = "" }) => { [&_blockquote]:border-l-4 [&_blockquote]:border-primary [&_blockquote]:pl-4 [&_blockquote]:italic [&_blockquote]:my-4 [&_blockquote]:text-muted-foreground [&_code]:bg-muted [&_code]:text-foreground [&_code]:px-1 [&_code]:py-0.5 [&_code]:rounded [&_code]:font-mono [&_code]:text-sm [&_hr]:border-border [&_hr]:my-8 - [&_a]:text-primary [&_a]:hover:underline + [&_a]:text-primary hover:[&_a]:underline ${className} `} dangerouslySetInnerHTML={{ __html: content }} diff --git a/apps/web/src/components/ui/navigation-menu.tsx b/apps/web/src/components/ui/navigation-menu.tsx index 25a6fc46b..cf60e31e5 100644 --- a/apps/web/src/components/ui/navigation-menu.tsx +++ b/apps/web/src/components/ui/navigation-menu.tsx @@ -40,7 +40,7 @@ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName; const NavigationMenuItem = NavigationMenuPrimitive.Item; const navigationMenuTriggerStyle = cva( - "group inline-flex h-9 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-normal transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50" + "group inline-flex h-9 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-normal transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-active:bg-accent/50 data-[state=open]:bg-accent/50 cursor-pointer" ); const NavigationMenuTrigger = React.forwardRef< @@ -54,7 +54,7 @@ const NavigationMenuTrigger = React.forwardRef< > {children}{" "}
-
+
diff --git a/apps/web/src/screens/marketing/careers/job-details.tsx b/apps/web/src/screens/marketing/careers/job-details.tsx index c5f637b2b..37d88f35c 100644 --- a/apps/web/src/screens/marketing/careers/job-details.tsx +++ b/apps/web/src/screens/marketing/careers/job-details.tsx @@ -141,7 +141,7 @@ const JobDetailPage: React.FC = ({ job }) => { height={30} className={cn( "absolute z-[-1] top-0 right-0 w-1/3 h-full", - "[mask-image:linear-gradient(to_left,white,transparent)]", + "mask-[linear-gradient(to_left,white,transparent)]", )} />
@@ -189,7 +189,7 @@ const JobDetailPage: React.FC = ({ job }) => {
{job.department && (
- +

{t("details.department")} @@ -202,7 +202,7 @@ const JobDetailPage: React.FC = ({ job }) => { )}

- +

{t("details.location")} @@ -215,7 +215,7 @@ const JobDetailPage: React.FC = ({ job }) => { {job.employmentType && (

- +

{t("details.contract")} @@ -229,7 +229,7 @@ const JobDetailPage: React.FC = ({ job }) => { {job.workplaceType && (

- +

{t("details.workplace")} @@ -243,7 +243,7 @@ const JobDetailPage: React.FC = ({ job }) => { {job.salary && formatSalary(job.salary) && (

- +

{t("details.salary")} diff --git a/apps/web/src/screens/marketing/careers/job-list.tsx b/apps/web/src/screens/marketing/careers/job-list.tsx index 0e80fd94b..6b77d5ec5 100644 --- a/apps/web/src/screens/marketing/careers/job-list.tsx +++ b/apps/web/src/screens/marketing/careers/job-list.tsx @@ -135,7 +135,7 @@ const JobList: React.FC = ({ jobs, isLoading, error }) => { )}

-
+
diff --git a/apps/web/src/screens/marketing/contact/index.tsx b/apps/web/src/screens/marketing/contact/index.tsx index 34b532a9b..830f3a4ed 100644 --- a/apps/web/src/screens/marketing/contact/index.tsx +++ b/apps/web/src/screens/marketing/contact/index.tsx @@ -81,7 +81,7 @@ const ContactPage = () => { height={30} className={cn( "z-[-1]", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />
diff --git a/apps/web/src/screens/marketing/npo/index.tsx b/apps/web/src/screens/marketing/npo/index.tsx index 7bb2bfdae..505ad0088 100644 --- a/apps/web/src/screens/marketing/npo/index.tsx +++ b/apps/web/src/screens/marketing/npo/index.tsx @@ -75,7 +75,7 @@ const NPOPage: React.FC = async () => { height={30} className={cn( "z-[-1]", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />
@@ -278,37 +278,37 @@ const NPOPage: React.FC = async () => {
- +

{t("membership.annual.benefits.hours")}

- +

{t("membership.annual.benefits.projects")}

- +

{t("membership.annual.benefits.discord")}

- +

{t("membership.annual.benefits.mentoring")}

- +

{t("membership.annual.benefits.resources")}

- +

{t("membership.annual.benefits.autonomy")}

@@ -432,7 +432,7 @@ const NPOPage: React.FC = async () => {
-
+
diff --git a/apps/web/src/screens/marketing/projects/details/index.tsx b/apps/web/src/screens/marketing/projects/details/index.tsx index 5ea97dac6..6eac5f169 100644 --- a/apps/web/src/screens/marketing/projects/details/index.tsx +++ b/apps/web/src/screens/marketing/projects/details/index.tsx @@ -118,7 +118,7 @@ const ProjectPage: React.FC = async ({ project }) => { height={30} className={cn( "absolute z-[-1] inset-0", - "[mask-image:radial-gradient(400px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(400px_circle_at_center,white,transparent)]" )} />
@@ -178,7 +178,7 @@ const ProjectPage: React.FC = async ({ project }) => { height={30} className={cn( "absolute z-[-1] inset-0", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />
@@ -267,7 +267,7 @@ const ProjectPage: React.FC = async ({ project }) => {
-
+
)} @@ -515,7 +515,7 @@ const ProjectPage: React.FC = async ({ project }) => {
-
+
diff --git a/apps/web/src/screens/marketing/projects/index.tsx b/apps/web/src/screens/marketing/projects/index.tsx index 6ce76ec27..ac53b714a 100644 --- a/apps/web/src/screens/marketing/projects/index.tsx +++ b/apps/web/src/screens/marketing/projects/index.tsx @@ -47,7 +47,7 @@ const ProjectsPage = () => { height={30} className={cn( "z-[-1]", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />
@@ -220,7 +220,7 @@ const ProjectsPage = () => {
- +

{t("why-us.items.expertise.title")} @@ -231,7 +231,7 @@ const ProjectsPage = () => {

- +

{t("why-us.items.custom.title")} @@ -242,7 +242,7 @@ const ProjectsPage = () => {

- +

{t("why-us.items.support.title")} diff --git a/apps/web/src/screens/marketing/services/index.tsx b/apps/web/src/screens/marketing/services/index.tsx index b0cecf42f..ef76f7fdb 100644 --- a/apps/web/src/screens/marketing/services/index.tsx +++ b/apps/web/src/screens/marketing/services/index.tsx @@ -100,7 +100,7 @@ const ServicesPage: React.FC = () => { height={30} className={cn( "z-[-1]", - "[mask-image:radial-gradient(300px_circle_at_center,white,transparent)]" + "mask-[radial-gradient(300px_circle_at_center,white,transparent)]" )} />

diff --git a/apps/web/src/styles/globals.css b/apps/web/src/styles/globals.css index d844adc15..beb455bcf 100644 --- a/apps/web/src/styles/globals.css +++ b/apps/web/src/styles/globals.css @@ -1,65 +1,137 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; +@import "tw-animate-css"; -@layer base { - :root { - --onruntime-blue: 209 100% 57%; - --onruntime-magenta: 274 100% 61%; - --background: 0 0% 100%; - --foreground: 0, 0%, 7%; - --card: 0 0% 100%; - --card-foreground: 0, 0%, 7%; - --popover: 0 0% 100%; - --popover-foreground: 0, 0%, 7%; - --primary: 0 0% 9%; - --primary-foreground: 0 0% 98%; - --secondary: 0 0% 96.1%; - --secondary-foreground: 0 0% 9%; - --muted: 0 0% 96.1%; - --muted-foreground: 0 0% 45.1%; - --accent: 0 0% 96.1%; - --accent-foreground: 0 0% 9%; - --border: 220, 24%, 85%, 1; - --input: 220, 24%, 85%, 1; - --ring: 0, 0%, 7%; - --chart-1: 12 76% 61%; - --chart-2: 173 58% 39%; - --chart-3: 197 37% 24%; - --chart-4: 43 74% 66%; - --chart-5: 27 87% 67%; - --radius: 0.75rem; - } +/* Custom variant for dark mode with class strategy */ +@variant dark (&:where(.dark, .dark *)); + +/* CSS Variables - outside of @layer base per shadcn recommendation */ +:root { + /* Tailwind internal variables fallback (for browsers without @property support) */ + --tw-leading: initial; + --tw-tracking: initial; + --tw-font-weight: initial; + + --onruntime-blue: hsl(209 100% 57%); + --onruntime-magenta: hsl(274 100% 61%); + --background: hsl(0 0% 100%); + --foreground: hsl(0 0% 7%); + --card: hsl(0 0% 100%); + --card-foreground: hsl(0 0% 7%); + --popover: hsl(0 0% 100%); + --popover-foreground: hsl(0 0% 7%); + --primary: hsl(0 0% 9%); + --primary-foreground: hsl(0 0% 98%); + --secondary: hsl(0 0% 96.1%); + --secondary-foreground: hsl(0 0% 9%); + --muted: hsl(0 0% 96.1%); + --muted-foreground: hsl(0 0% 45.1%); + --accent: hsl(0 0% 96.1%); + --accent-foreground: hsl(0 0% 9%); + --border: hsl(220 24% 85%); + --input: hsl(220 24% 85%); + --ring: hsl(0 0% 7%); + --chart-1: hsl(12 76% 61%); + --chart-2: hsl(173 58% 39%); + --chart-3: hsl(197 37% 24%); + --chart-4: hsl(43 74% 66%); + --chart-5: hsl(27 87% 67%); + --radius: 0.75rem; +} + +.dark { + --background: hsl(0 0% 7%); + --foreground: hsl(0 0% 98%); + --card: hsl(0 0% 7%); + --card-foreground: hsl(0 0% 98%); + --popover: hsl(0 0% 7%); + --popover-foreground: hsl(0 0% 98%); + --primary: hsl(0 0% 98%); + --primary-foreground: hsl(0 0% 9%); + --secondary: hsl(0 0% 14.9%); + --secondary-foreground: hsl(0 0% 98%); + --muted: hsl(0 0% 14.9%); + --muted-foreground: hsl(0 0% 63.9%); + --accent: hsl(0 0% 14.9%); + --accent-foreground: hsl(0 0% 98%); + --border: hsl(0 0% 14.9%); + --input: hsl(0 0% 14.9%); + --ring: hsl(0 0% 83.1%); + --chart-1: hsl(220 70% 50%); + --chart-2: hsl(160 60% 45%); + --chart-3: hsl(30 80% 55%); + --chart-4: hsl(280 65% 60%); + --chart-5: hsl(340 75% 55%); +} + +/* Theme configuration with inline option */ +@theme inline { + /* Breakpoints */ + --breakpoint-xs: 480px; + + /* Font families */ + --font-sans: var(--font-figtree); + --font-heading: "Cal Sans", var(--font-figtree); + + /* Custom colors - no hsl wrapper needed with inline */ + --color-onruntime-blue: var(--onruntime-blue); + --color-onruntime-magenta: var(--onruntime-magenta); + + /* Semantic colors */ + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-text: var(--foreground); + + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); - .dark { - --background: 0, 0%, 7%; - --foreground: 0 0% 98%; - --card: 0, 0%, 7%; - --card-foreground: 0 0% 98%; - --popover: 0, 0%, 7%; - --popover-foreground: 0 0% 98%; - --primary: 0 0% 98%; - --primary-foreground: 0 0% 9%; - --secondary: 0 0% 14.9%; - --secondary-foreground: 0 0% 98%; - --muted: 0 0% 14.9%; - --muted-foreground: 0 0% 63.9%; - --accent: 0 0% 14.9%; - --accent-foreground: 0 0% 98%; - --border: 0 0% 14.9%; - --input: 0 0% 14.9%; - --ring: 0 0% 83.1%; - --chart-1: 220 70% 50%; - --chart-2: 160 60% 45%; - --chart-3: 30 80% 55%; - --chart-4: 280 65% 60%; - --chart-5: 340 75% 55%; + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + + /* Chart colors */ + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + + /* Border radius */ + --radius-lg: var(--radius); + --radius-md: calc(var(--radius) - 2px); + --radius-sm: calc(var(--radius) - 4px); + + /* Custom animation */ + --animate-shiny-text: shiny-text 8s infinite; + + @keyframes shiny-text { + 0%, 90%, 100% { + background-position: calc(-100% - var(--shiny-width)) 0; + } + 30%, 60% { + background-position: calc(100% + var(--shiny-width)) 0; + } } } +/* Base styles */ @layer base { * { - @apply border-border; + @apply border-border outline-ring/50; } body { @@ -67,21 +139,17 @@ } h1, h2, h3, h4, h5, h6 { - @apply font-heading !font-normal; + @apply font-heading font-normal!; } p { @apply text-muted-foreground; } -} - - -@layer base { - * { - @apply border-border outline-ring/50; + /* Restore cursor pointer for interactive elements (Tailwind v4 uses default) */ + button, + [role="button"], + a { + cursor: pointer; } - body { - @apply bg-background text-foreground; - } -} \ No newline at end of file +} diff --git a/apps/web/tailwind.config.ts b/apps/web/tailwind.config.ts deleted file mode 100644 index 71eb9d2a6..000000000 --- a/apps/web/tailwind.config.ts +++ /dev/null @@ -1,97 +0,0 @@ -import type { Config } from "tailwindcss"; -import { default as tailwindcssAnimatePlugin } from "tailwindcss-animate"; - -export default { - darkMode: ["class"], - content: [ - "./src/components/**/*.{js,ts,jsx,tsx,mdx}", - "./src/screens/**/*.{js,ts,jsx,tsx,mdx}", - "./src/app/**/*.{js,ts,jsx,tsx,mdx}", - ], - safelist: [ - { - pattern: /bg-onruntime-(blue|magenta)\/(5|10|15|20)/, - }, - { - pattern: /border-onruntime-(blue|magenta)\/(10|20|30|40)/, - }, - { - pattern: /text-onruntime-(blue|magenta)/, - }, - "bg-onruntime-blue", - "bg-onruntime-magenta", - ], - theme: { - extend: { - screens: { - 'xs': '480px' - }, - fontFamily: { - sans: ["var(--font-figtree)"], - heading: ["Cal Sans", "var(--font-figtree)"], - }, - colors: { - onruntime: { - blue: "hsl(var(--onruntime-blue))", - magenta: "hsl(var(--onruntime-magenta))", - }, - background: "hsl(var(--background))", - foreground: "hsl(var(--foreground))", - text: "hsl(var(--text))", - card: { - DEFAULT: "hsl(var(--card))", - foreground: "hsl(var(--card-foreground))", - }, - popover: { - DEFAULT: "hsl(var(--popover))", - foreground: "hsl(var(--popover-foreground))", - }, - primary: { - DEFAULT: "hsl(var(--primary))", - foreground: "hsl(var(--primary-foreground))", - }, - secondary: { - DEFAULT: "hsl(var(--secondary))", - foreground: "hsl(var(--secondary-foreground))", - }, - muted: { - DEFAULT: "hsl(var(--muted))", - foreground: "hsl(var(--muted-foreground))", - }, - accent: { - DEFAULT: "hsl(var(--accent))", - foreground: "hsl(var(--accent-foreground))", - }, - border: "hsl(var(--border))", - input: "hsl(var(--input))", - ring: "hsl(var(--ring))", - chart: { - "1": "hsl(var(--chart-1))", - "2": "hsl(var(--chart-2))", - "3": "hsl(var(--chart-3))", - "4": "hsl(var(--chart-4))", - "5": "hsl(var(--chart-5))", - }, - }, - borderRadius: { - lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)", - }, - animation: { - "shiny-text": "shiny-text 8s infinite", - }, - keyframes: { - "shiny-text": { - "0%, 90%, 100%": { - "background-position": "calc(-100% - var(--shiny-width)) 0", - }, - "30%, 60%": { - "background-position": "calc(100% + var(--shiny-width)) 0", - }, - }, - }, - }, - }, - plugins: [tailwindcssAnimatePlugin], -} satisfies Config; diff --git a/examples/next-sitemap/app/CHANGELOG.md b/examples/next-sitemap/app/CHANGELOG.md new file mode 100644 index 000000000..304af4cfb --- /dev/null +++ b/examples/next-sitemap/app/CHANGELOG.md @@ -0,0 +1,8 @@ +# @onruntime/next-sitemap-example-app + +## 0.1.1 + +### Patch Changes + +- Updated dependencies [94b0075] + - @onruntime/next-sitemap@0.2.0 diff --git a/examples/next-sitemap/app/package.json b/examples/next-sitemap/app/package.json index ef9e948c2..dd2badca2 100644 --- a/examples/next-sitemap/app/package.json +++ b/examples/next-sitemap/app/package.json @@ -1,6 +1,6 @@ { "name": "@onruntime/next-sitemap-example-app", - "version": "0.1.0", + "version": "0.1.1", "private": true, "scripts": { "dev": "next dev --port 3002", diff --git a/examples/translations/next-app/CHANGELOG.md b/examples/translations/next-app/CHANGELOG.md new file mode 100644 index 000000000..6feffd26b --- /dev/null +++ b/examples/translations/next-app/CHANGELOG.md @@ -0,0 +1,8 @@ +# @onruntime/translations-example-next-app + +## 0.1.1 + +### Patch Changes + +- Updated dependencies + - @onruntime/translations@0.1.1 diff --git a/examples/translations/next-app/package.json b/examples/translations/next-app/package.json index ef3f2e7c7..fa4c6f5d7 100644 --- a/examples/translations/next-app/package.json +++ b/examples/translations/next-app/package.json @@ -1,6 +1,6 @@ { "name": "@onruntime/translations-example-next-app", - "version": "0.1.0", + "version": "0.1.1", "private": true, "scripts": { "dev": "next dev --port 3001", diff --git a/examples/translations/next-pages/CHANGELOG.md b/examples/translations/next-pages/CHANGELOG.md new file mode 100644 index 000000000..ac700613a --- /dev/null +++ b/examples/translations/next-pages/CHANGELOG.md @@ -0,0 +1,8 @@ +# @onruntime/translations-example-next-pages + +## 0.1.1 + +### Patch Changes + +- Updated dependencies + - @onruntime/translations@0.1.1 diff --git a/examples/translations/next-pages/package.json b/examples/translations/next-pages/package.json index 1de87f626..96aeaffc5 100644 --- a/examples/translations/next-pages/package.json +++ b/examples/translations/next-pages/package.json @@ -1,6 +1,6 @@ { "name": "@onruntime/translations-example-next-pages", - "version": "0.1.0", + "version": "0.1.1", "private": true, "scripts": { "dev": "next dev -p 3001", diff --git a/examples/translations/react/CHANGELOG.md b/examples/translations/react/CHANGELOG.md new file mode 100644 index 000000000..c7e2ce2fd --- /dev/null +++ b/examples/translations/react/CHANGELOG.md @@ -0,0 +1,8 @@ +# @onruntime/translations-example-react + +## 0.1.1 + +### Patch Changes + +- Updated dependencies + - @onruntime/translations@0.1.1 diff --git a/examples/translations/react/package.json b/examples/translations/react/package.json index 332652b8c..c111b981e 100644 --- a/examples/translations/react/package.json +++ b/examples/translations/react/package.json @@ -1,6 +1,6 @@ { "name": "@onruntime/translations-example-react", - "version": "0.1.0", + "version": "0.1.1", "private": true, "type": "module", "scripts": { diff --git a/packages/next-sitemap/CHANGELOG.md b/packages/next-sitemap/CHANGELOG.md new file mode 100644 index 000000000..d70c6e10d --- /dev/null +++ b/packages/next-sitemap/CHANGELOG.md @@ -0,0 +1,12 @@ +# @onruntime/next-sitemap + +## 0.2.0 + +### Minor Changes + +- 94b0075: Add new configuration options for sitemap generation: + + - `exclude`: Filter out routes using glob patterns or a function + - `priority`: Automatic depth-based priority calculation (or custom function) + - `changeFreq`: Set change frequency per route + - `additionalSitemaps`: Include custom sitemaps in the sitemap index diff --git a/packages/next-sitemap/package.json b/packages/next-sitemap/package.json index f1513d1fd..9a9ee6bbd 100644 --- a/packages/next-sitemap/package.json +++ b/packages/next-sitemap/package.json @@ -1,6 +1,6 @@ { "name": "@onruntime/next-sitemap", - "version": "0.1.0", + "version": "0.2.0", "description": "Dynamic sitemap generation for Next.js with automatic route discovery", "author": "onRuntime Studio ", "repository": { diff --git a/packages/translations/CHANGELOG.md b/packages/translations/CHANGELOG.md new file mode 100644 index 000000000..6ba4e5c87 --- /dev/null +++ b/packages/translations/CHANGELOG.md @@ -0,0 +1,7 @@ +# @onruntime/translations + +## 0.1.1 + +### Patch Changes + +- Fix Link component to support protocol-based URLs (mailto:, tel:, sms:, etc.) without adding locale prefix diff --git a/packages/translations/package.json b/packages/translations/package.json index 08a306adf..a959dd930 100644 --- a/packages/translations/package.json +++ b/packages/translations/package.json @@ -1,6 +1,6 @@ { "name": "@onruntime/translations", - "version": "0.1.0", + "version": "0.1.1", "description": "Lightweight i18n library for React, Next.js, and React Native", "author": "onRuntime Studio ", "repository": { diff --git a/packages/translations/src/next/components/link.tsx b/packages/translations/src/next/components/link.tsx index 88162b563..884829511 100644 --- a/packages/translations/src/next/components/link.tsx +++ b/packages/translations/src/next/components/link.tsx @@ -18,8 +18,12 @@ export const Link = ({ href, locale, ...props }: LinkProps) => { // Handle string href if (typeof href === "string") { - // If href is external, use as-is - if (href.startsWith("http") || href.startsWith("//")) { + // If href is external or a protocol link (mailto:, tel:, etc.), use as-is + if ( + href.startsWith("http") || + href.startsWith("//") || + /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(href) + ) { return ; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e064b12b..bdbceb05f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,25 +39,25 @@ importers: specifier: workspace:* version: link:../../packages/translations '@radix-ui/react-accordion': - specifier: ^1.2.3 + specifier: ^1.2.12 version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-dialog': - specifier: ^1.1.6 + specifier: ^1.1.15 version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-dropdown-menu': specifier: ^2.1.16 version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-navigation-menu': - specifier: ^1.2.3 + specifier: ^1.2.14 version: 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-slot': - specifier: ^1.1.1 + specifier: ^1.2.4 version: 1.2.4(@types/react@19.2.7)(react@19.2.3) '@radix-ui/react-tabs': - specifier: ^1.1.2 + specifier: ^1.1.13 version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-toast': - specifier: ^1.2.6 + specifier: ^1.2.15 version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@t3-oss/env-nextjs': specifier: ^0.13.0 @@ -71,9 +71,6 @@ importers: '@vercel/speed-insights': specifier: ^1.1.0 version: 1.3.1(next@16.1.1(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) - autoprefixer: - specifier: ^10.4.20 - version: 10.4.23(postcss@8.5.6) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -120,11 +117,11 @@ importers: specifier: ^0.0.1 version: 0.0.1 tailwind-merge: - specifier: ^3.0.0 + specifier: ^3.4.0 version: 3.4.0 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)) + tw-animate-css: + specifier: ^1.4.0 + version: 1.4.0 usehooks-ts: specifier: ^3.1.1 version: 3.1.1(react@19.2.3) @@ -135,6 +132,9 @@ importers: '@ai-sdk/openai': specifier: ^3.0.2 version: 3.0.2(zod@3.25.76) + '@tailwindcss/postcss': + specifier: ^4.1.18 + version: 4.1.18 '@types/node': specifier: ^22.0.0 version: 22.19.3 @@ -157,8 +157,8 @@ importers: specifier: ^8.5.1 version: 8.5.6 tailwindcss: - specifier: ^3.4.17 - version: 3.4.19(tsx@4.21.0)(yaml@2.8.2) + specifier: ^4.1.18 + version: 4.1.18 tsx: specifier: ^4.21.0 version: 4.21.0 @@ -267,13 +267,13 @@ importers: version: 19.2.3(@types/react@19.2.7) '@vitejs/plugin-react': specifier: ^4.3.0 - version: 4.7.0(vite@6.4.1(@types/node@25.0.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.7.0(vite@6.4.1(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2)) typescript: specifier: ^5 version: 5.9.3 vite: specifier: ^6.0.0 - version: 6.4.1(@types/node@25.0.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2) + version: 6.4.1(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2) packages/next-sitemap: devDependencies: @@ -285,7 +285,7 @@ importers: version: 16.1.1(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) tsup: specifier: ^8 - version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) typescript: specifier: ^5 version: 5.9.3 @@ -306,7 +306,7 @@ importers: version: 19.2.3 tsup: specifier: ^8 - version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) typescript: specifier: ^5 version: 5.9.3 @@ -1632,6 +1632,94 @@ packages: zod: optional: true + '@tailwindcss/node@4.1.18': + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} + + '@tailwindcss/oxide-android-arm64@4.1.18': + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.18': + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.18': + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.18': + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.18': + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.18': + resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -1755,13 +1843,6 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -1780,13 +1861,6 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - autoprefixer@10.4.23: - resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -1802,10 +1876,6 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1825,10 +1895,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} @@ -1853,10 +1919,6 @@ packages: chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -1919,11 +1981,6 @@ packages: css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -1961,16 +2018,10 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -1999,6 +2050,10 @@ packages: resolution: {integrity: sha512-1QFuh8l7LqUcKe24LsPUNzjrzJQ7pgRwp1QMcZ5MX6mFplk2zQ08NVCM84++1cveaUUYtcCYHmeFEuNg16sU4g==} engines: {node: '>=10.0.0'} + enhanced-resolve@5.18.4: + resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -2103,9 +2158,6 @@ packages: fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - fraction.js@5.3.4: - resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - framer-motion@12.23.26: resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==} peerDependencies: @@ -2133,9 +2185,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2151,10 +2200,6 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -2166,10 +2211,6 @@ packages: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - hast-util-to-estree@3.1.3: resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} @@ -2211,14 +2252,6 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -2256,8 +2289,8 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true joycon@3.1.1: @@ -2298,6 +2331,76 @@ packages: leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + lightningcss-android-arm64@1.30.2: + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.30.2: + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.2: + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.2: + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.2: + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.2: + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.2: + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.2: + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.2: + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.2: + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.2: + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.2: + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -2541,18 +2644,10 @@ packages: node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -2599,9 +2694,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2623,10 +2715,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -2638,18 +2726,6 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.1.0: - resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -2668,16 +2744,6 @@ packages: yaml: optional: true - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -2765,17 +2831,10 @@ packages: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -2825,11 +2884,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} - engines: {node: '>= 0.4'} - hasBin: true - reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2954,22 +3008,15 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - tailwind-merge@3.4.0: resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} - tailwindcss-animate@1.0.7: - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders' + tailwindcss@4.1.18: + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} - tailwindcss@3.4.19: - resolution: {integrity: sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==} - engines: {node: '>=14.0.0'} - hasBin: true + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} @@ -3070,6 +3117,9 @@ packages: resolution: {integrity: sha512-5JIA5aYBAJSAhrhbyag1ZuMSgUZnHtI+Sq3H8D3an4fL8PeF+L1yYvbEJg47akP1PFfATMf5ehkqFnxfkmuwZQ==} hasBin: true + tw-animate-css@1.4.0: + resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} + type-fest@4.41.0: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} @@ -3160,9 +3210,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vfile-matter@5.0.1: resolution: {integrity: sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==} @@ -4417,6 +4464,75 @@ snapshots: typescript: 5.9.3 zod: 3.25.76 + '@tailwindcss/node@4.1.18': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.4 + jiti: 2.6.1 + lightningcss: 1.30.2 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.18 + + '@tailwindcss/oxide-android-arm64@4.1.18': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.18': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.18': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + optional: true + + '@tailwindcss/oxide@4.1.18': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-x64': 4.1.18 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 + + '@tailwindcss/postcss@4.1.18': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.18 + '@tailwindcss/oxide': 4.1.18 + postcss: 8.5.6 + tailwindcss: 4.1.18 + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.5 @@ -4496,7 +4612,7 @@ snapshots: next: 16.1.1(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 - '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@25.0.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -4504,7 +4620,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.4.1(@types/node@25.0.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -4528,13 +4644,6 @@ snapshots: any-promise@1.3.0: {} - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -4549,15 +4658,6 @@ snapshots: astring@1.9.0: {} - autoprefixer@10.4.23(postcss@8.5.6): - dependencies: - browserslist: 4.28.1 - caniuse-lite: 1.0.30001761 - fraction.js: 5.3.4 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - bail@2.0.2: {} base64-js@0.0.8: {} @@ -4568,8 +4668,6 @@ snapshots: dependencies: is-windows: 1.0.2 - binary-extensions@2.3.0: {} - braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -4589,8 +4687,6 @@ snapshots: cac@6.7.14: {} - camelcase-css@2.0.1: {} - camelize@1.0.1: {} caniuse-lite@1.0.30001761: {} @@ -4607,18 +4703,6 @@ snapshots: chardet@2.1.1: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -4667,8 +4751,6 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 - cssesc@3.0.0: {} - csstype@3.2.3: {} debug@4.4.3: @@ -4685,8 +4767,7 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} detect-node-es@1.1.0: {} @@ -4694,14 +4775,10 @@ snapshots: dependencies: dequal: 2.0.3 - didyoumean@1.2.2: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dlv@1.1.3: {} - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -4730,6 +4807,11 @@ snapshots: emoji-regex-xs@2.0.1: {} + enhanced-resolve@5.18.4: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -4893,8 +4975,6 @@ snapshots: mlly: 1.8.0 rollup: 4.54.0 - fraction.js@5.3.4: {} - framer-motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: motion-dom: 12.23.23 @@ -4919,8 +4999,6 @@ snapshots: fsevents@2.3.3: optional: true - function-bind@1.1.2: {} - gensync@1.0.0-beta.2: {} get-nonce@1.0.1: {} @@ -4933,10 +5011,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - globby@11.1.0: dependencies: array-union: 2.1.0 @@ -4955,10 +5029,6 @@ snapshots: section-matter: 1.0.0 strip-bom-string: 1.0.0 - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - hast-util-to-estree@3.1.3: dependencies: '@types/estree': 1.0.8 @@ -5038,14 +5108,6 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - is-decimal@2.0.1: {} is-extendable@0.1.1: {} @@ -5070,7 +5132,7 @@ snapshots: isexe@2.0.0: {} - jiti@1.21.7: {} + jiti@2.6.1: {} joycon@3.1.1: {} @@ -5099,6 +5161,55 @@ snapshots: leac@0.6.0: {} + lightningcss-android-arm64@1.30.2: + optional: true + + lightningcss-darwin-arm64@1.30.2: + optional: true + + lightningcss-darwin-x64@1.30.2: + optional: true + + lightningcss-freebsd-x64@1.30.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.2: + optional: true + + lightningcss-linux-arm64-gnu@1.30.2: + optional: true + + lightningcss-linux-arm64-musl@1.30.2: + optional: true + + lightningcss-linux-x64-gnu@1.30.2: + optional: true + + lightningcss-linux-x64-musl@1.30.2: + optional: true + + lightningcss-win32-arm64-msvc@1.30.2: + optional: true + + lightningcss-win32-x64-msvc@1.30.2: + optional: true + + lightningcss@1.30.2: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.30.2 + lightningcss-darwin-arm64: 1.30.2 + lightningcss-darwin-x64: 1.30.2 + lightningcss-freebsd-x64: 1.30.2 + lightningcss-linux-arm-gnueabihf: 1.30.2 + lightningcss-linux-arm64-gnu: 1.30.2 + lightningcss-linux-arm64-musl: 1.30.2 + lightningcss-linux-x64-gnu: 1.30.2 + lightningcss-linux-x64-musl: 1.30.2 + lightningcss-win32-arm64-msvc: 1.30.2 + lightningcss-win32-x64-msvc: 1.30.2 + lilconfig@3.1.3: {} linebreak@1.1.0: @@ -5541,12 +5652,8 @@ snapshots: node-releases@2.0.27: {} - normalize-path@3.0.0: {} - object-assign@4.1.1: {} - object-hash@3.0.0: {} - outdent@0.5.0: {} p-filter@2.1.0: @@ -5595,8 +5702,6 @@ snapshots: path-key@3.1.1: {} - path-parse@1.0.7: {} - path-type@4.0.0: {} pathe@2.0.3: {} @@ -5609,8 +5714,6 @@ snapshots: picomatch@4.0.3: {} - pify@2.3.0: {} - pify@4.0.1: {} pirates@4.0.7: {} @@ -5621,37 +5724,15 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 - postcss-import@15.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.11 - - postcss-js@4.1.0(postcss@8.5.6): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.5.6 - - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2): + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 optionalDependencies: - jiti: 1.21.7 + jiti: 2.6.1 postcss: 8.5.6 tsx: 4.21.0 yaml: 2.8.2 - postcss-nested@6.2.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-value-parser@4.2.0: {} postcss@8.4.31: @@ -5724,10 +5805,6 @@ snapshots: react@19.2.3: {} - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -5735,10 +5812,6 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - readdirp@4.1.2: {} recma-build-jsx@1.0.0: @@ -5824,12 +5897,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.11: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - reusify@1.1.0: {} rollup@4.54.0: @@ -5994,41 +6061,11 @@ snapshots: tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 - supports-preserve-symlinks-flag@1.0.0: {} - tailwind-merge@3.4.0: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)): - dependencies: - tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.2) + tailwindcss@4.1.18: {} - tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2): - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.6 - postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2) - postcss-nested: 6.2.0(postcss@8.5.6) - postcss-selector-parser: 6.1.2 - resolve: 1.22.11 - sucrase: 3.35.1 - transitivePeerDependencies: - - tsx - - yaml + tapable@2.3.0: {} term-size@2.2.1: {} @@ -6063,7 +6100,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): + tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): dependencies: bundle-require: 5.1.0(esbuild@0.27.2) cac: 6.7.14 @@ -6074,7 +6111,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2) resolve-from: 5.0.0 rollup: 4.54.0 source-map: 0.7.6 @@ -6125,6 +6162,8 @@ snapshots: turbo-windows-64: 2.7.2 turbo-windows-arm64: 2.7.2 + tw-animate-css@1.4.0: {} + type-fest@4.41.0: {} typescript@5.9.3: {} @@ -6226,8 +6265,6 @@ snapshots: lodash.debounce: 4.0.8 react: 19.2.3 - util-deprecate@1.0.2: {} - vfile-matter@5.0.1: dependencies: vfile: 6.0.3 @@ -6243,7 +6280,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@6.4.1(@types/node@25.0.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2): + vite@6.4.1(@types/node@25.0.3)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -6254,7 +6291,8 @@ snapshots: optionalDependencies: '@types/node': 25.0.3 fsevents: 2.3.3 - jiti: 1.21.7 + jiti: 2.6.1 + lightningcss: 1.30.2 tsx: 4.21.0 yaml: 2.8.2