diff --git a/package.json b/package.json index b4d2207b45..29ecc43d07 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ "ui:version-audit:sync": "node --experimental-strip-types scripts/check-ui-mcp-version-copy.ts --write", "docs:drift-check": "node --experimental-strip-types scripts/check-docs-drift.ts", "coverage-boltons:check": "node --experimental-strip-types scripts/check-coverage-bolt-on-filenames.ts", + "import-specifiers:check": "node --experimental-strip-types scripts/check-import-specifiers.ts", "roadmap:drift-check": "node --experimental-strip-types scripts/check-roadmap-issue-drift.ts", "branding-drift:check": "node --experimental-strip-types scripts/check-branding-drift.ts", "branding-drift:update": "node --experimental-strip-types scripts/check-branding-drift.ts --update", @@ -108,7 +109,7 @@ "test:smoke:browser:install": "playwright install chromium", "test:smoke:browser": "node --experimental-strip-types scripts/smoke-ui-browser.ts", "pretest:ci": "npm run check-node-version", - "test:ci": "git diff --check && npm run actionlint && npm run lint:composite-actions && npm run db:migrations:check && npm run db:schema-drift:check && npm run selfhost:env-reference:check && npm run miner:env-reference:check && npm run selfhost:validate-observability && npm run cf-typegen:check && npm run build --workspace @loopover/engine && npm run build --workspace @loopover/discovery-index && npm run build:mcp && npm run build:miner && npm run build --workspace @loopover/ui-kit && npm run typecheck && npm run test:coverage && npm run test:engine-parity && npm run test:live-gate-parity && npm run test:driver-parity && npm run test --workspace @loopover/engine && npm run test:workers && npm run test:mcp-pack && npm run test:miner-pack && npm run test:engine-pack && npm run test:ui-kit-pack && npm run test:miner-deployment-docs-audit && npm run rees:test && npm run ui:openapi:check && npm run ui:openapi:settings-parity && npm run ui:version-audit && npm run docs:drift-check && npm run coverage-boltons:check && npm run branding-drift:check && npm run manifest:drift-check && npm run engine-parity:drift-check && npm run engines-nvmrc:check && npm run release-manifest:sync:check && npm run command-reference:check && npm run ui:lint && npm run ui:typecheck && npm run ui:test && npm run ui:build", + "test:ci": "git diff --check && npm run actionlint && npm run lint:composite-actions && npm run db:migrations:check && npm run db:schema-drift:check && npm run selfhost:env-reference:check && npm run miner:env-reference:check && npm run selfhost:validate-observability && npm run cf-typegen:check && npm run build --workspace @loopover/engine && npm run build --workspace @loopover/discovery-index && npm run build:mcp && npm run build:miner && npm run build --workspace @loopover/ui-kit && npm run typecheck && npm run test:coverage && npm run test:engine-parity && npm run test:live-gate-parity && npm run test:driver-parity && npm run test --workspace @loopover/engine && npm run test:workers && npm run test:mcp-pack && npm run test:miner-pack && npm run test:engine-pack && npm run test:ui-kit-pack && npm run test:miner-deployment-docs-audit && npm run rees:test && npm run ui:openapi:check && npm run ui:openapi:settings-parity && npm run ui:version-audit && npm run docs:drift-check && npm run coverage-boltons:check && npm run import-specifiers:check && npm run branding-drift:check && npm run manifest:drift-check && npm run engine-parity:drift-check && npm run engines-nvmrc:check && npm run release-manifest:sync:check && npm run command-reference:check && npm run ui:lint && npm run ui:typecheck && npm run ui:test && npm run ui:build", "test:release": "npm run test:ci && npm run changelog:check", "test:release:mcp": "npm run test:ci", "test:watch": "vitest", diff --git a/packages/discovery-index/worker-configuration.d.ts b/packages/discovery-index/worker-configuration.d.ts index af8640063f..5c28ae6855 100644 --- a/packages/discovery-index/worker-configuration.d.ts +++ b/packages/discovery-index/worker-configuration.d.ts @@ -2,12 +2,12 @@ // Generated by Wrangler by running `wrangler types` (hash: d2eeff9c442143d238b1256f3c987930) // Runtime types generated with workerd@1.20260714.1 2026-07-21 interface __BaseEnv_Env { - DISCOVERY_INDEX_CONTAINER: DurableObjectNamespace; - DISCOVERY_INDEX_RATE_LIMITER: DurableObjectNamespace; + DISCOVERY_INDEX_CONTAINER: DurableObjectNamespace; + DISCOVERY_INDEX_RATE_LIMITER: DurableObjectNamespace; } declare namespace Cloudflare { interface GlobalProps { - mainModule: typeof import("./src/worker"); + mainModule: typeof import("./src/worker.js"); durableNamespaces: "DiscoveryIndexContainer" | "DiscoveryIndexRateLimiter"; } interface Env extends __BaseEnv_Env {} diff --git a/packages/loopover-engine/src/signals/engine.ts b/packages/loopover-engine/src/signals/engine.ts index aee31fdd67..8ca9e59324 100644 --- a/packages/loopover-engine/src/signals/engine.ts +++ b/packages/loopover-engine/src/signals/engine.ts @@ -23,14 +23,14 @@ import type { RepositoryRecord, RepositorySettings, ScoringModelSnapshotRecord, -} from "../../../../src/types"; -import type { PublicContributorProfile } from "../../../../src/github/public"; -import { commandReferenceUrl, loopoverFooter, gittensorRepoEarnUrl, type LoopOverFooterEnv } from "../../../../src/github/footer"; -import type { FocusManifestReviewConfig, ReviewFieldKey } from "../../../../src/signals/focus-manifest"; -import type { GittensorContributorSnapshot } from "../../../../src/gittensor/api"; +} from "../../../../src/types.js"; +import type { PublicContributorProfile } from "../../../../src/github/public.js"; +import { commandReferenceUrl, loopoverFooter, gittensorRepoEarnUrl, type LoopOverFooterEnv } from "../../../../src/github/footer.js"; +import type { FocusManifestReviewConfig, ReviewFieldKey } from "../../../../src/signals/focus-manifest.js"; +import type { GittensorContributorSnapshot } from "../../../../src/gittensor/api.js"; import { nowIso } from "../utils/json.js"; -import { extractLinkedIssueNumbers } from "../../../../src/db/repositories"; -import { sanitizePublicComment } from "../../../../src/queue-intelligence"; +import { extractLinkedIssueNumbers } from "../../../../src/db/repositories.js"; +import { sanitizePublicComment } from "../../../../src/queue-intelligence.js"; import { labelMatchesPattern, projectLinkedIssueMultiplierForPlannedSolve, type LinkedIssueMultiplierStatus } from "../scoring/preview.js"; import { isSuspiciousConfiguredLabel } from "../scoring/label-match.js"; import { hasLocalTestEvidence, hasValidationNote, isTestPath } from "./test-evidence.js"; @@ -38,13 +38,13 @@ import { isCodeFile, isTestFile } from "./path-matchers.js"; import { isFailingCheckSummary } from "./check-summary.js"; import { isDuplicateClusterWinnerByClaim } from "./duplicate-winner.js"; import { PREFLIGHT_LIMITS } from "./preflight-limits.js"; -import type { UnifiedCollapsible } from "../../../../src/review/unified-comment"; -import { splitAiReviewNits } from "../../../../src/review/ai-notes"; -import { LOOPOVER_GATE_CHECK_NAME, shouldPublishReviewCheck } from "../../../../src/review/check-names"; +import type { UnifiedCollapsible } from "../../../../src/review/unified-comment.js"; +import { splitAiReviewNits } from "../../../../src/review/ai-notes.js"; +import { LOOPOVER_GATE_CHECK_NAME, shouldPublishReviewCheck } from "../../../../src/review/check-names.js"; import { isAgentConfigured } from "../settings/autonomy.js"; import { diffFilePriority } from "../review/diff-file-priority.js"; -import type { ImprovementBand, StructuralImprovementAssessment } from "../../../../src/signals/improvement"; -import type { ImprovementMagnitude } from "../../../../src/services/ai-review"; +import type { ImprovementBand, StructuralImprovementAssessment } from "../../../../src/signals/improvement.js"; +import type { ImprovementMagnitude } from "../../../../src/services/ai-review.js"; import type { SlopBand } from "./slop.js"; export type ParticipationLane = "direct_pr" | "issue_discovery" | "split" | "inactive" | "unknown"; diff --git a/packages/loopover-ui-kit/src/components/accordion.test.tsx b/packages/loopover-ui-kit/src/components/accordion.test.tsx index f9feee9786..207c8adb05 100644 --- a/packages/loopover-ui-kit/src/components/accordion.test.tsx +++ b/packages/loopover-ui-kit/src/components/accordion.test.tsx @@ -6,7 +6,7 @@ import { AccordionContent, AccordionItem, AccordionTrigger, -} from "./accordion"; +} from "./accordion.js"; // Regression for #8303: the Radix content/transition components in @loopover/ui-kit must pair their // animate-* utilities with motion-reduce:animate-none, matching skeleton.tsx / state-views.tsx, so a user diff --git a/packages/loopover-ui-kit/src/components/accordion.tsx b/packages/loopover-ui-kit/src/components/accordion.tsx index b17199a2a7..b930ebdb0a 100644 --- a/packages/loopover-ui-kit/src/components/accordion.tsx +++ b/packages/loopover-ui-kit/src/components/accordion.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as AccordionPrimitive from "@radix-ui/react-accordion"; import { ChevronDown } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Accordion = AccordionPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/alert-dialog.tsx b/packages/loopover-ui-kit/src/components/alert-dialog.tsx index 5427c29ef6..2bd51c8d5a 100644 --- a/packages/loopover-ui-kit/src/components/alert-dialog.tsx +++ b/packages/loopover-ui-kit/src/components/alert-dialog.tsx @@ -1,8 +1,8 @@ import * as React from "react"; import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"; -import { cn } from "../utils"; -import { buttonVariants } from "./button"; +import { cn } from "../utils.js"; +import { buttonVariants } from "./button.js"; const AlertDialog = AlertDialogPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/alert.tsx b/packages/loopover-ui-kit/src/components/alert.tsx index 8150f279f1..b639001693 100644 --- a/packages/loopover-ui-kit/src/components/alert.tsx +++ b/packages/loopover-ui-kit/src/components/alert.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const alertVariants = cva( "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7", diff --git a/packages/loopover-ui-kit/src/components/avatar.tsx b/packages/loopover-ui-kit/src/components/avatar.tsx index dbe93d9714..603ef2a122 100644 --- a/packages/loopover-ui-kit/src/components/avatar.tsx +++ b/packages/loopover-ui-kit/src/components/avatar.tsx @@ -3,7 +3,7 @@ import * as React from "react"; import * as AvatarPrimitive from "@radix-ui/react-avatar"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Avatar = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/badge.tsx b/packages/loopover-ui-kit/src/components/badge.tsx index 7f412ea2d9..496d01ed1a 100644 --- a/packages/loopover-ui-kit/src/components/badge.tsx +++ b/packages/loopover-ui-kit/src/components/badge.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const badgeVariants = cva( "inline-flex items-center rounded-token border-hairline px-2.5 py-0.5 text-token-2xs font-semibold uppercase tracking-wider font-mono transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", diff --git a/packages/loopover-ui-kit/src/components/breadcrumb.tsx b/packages/loopover-ui-kit/src/components/breadcrumb.tsx index 6fb495ca73..889a2066ae 100644 --- a/packages/loopover-ui-kit/src/components/breadcrumb.tsx +++ b/packages/loopover-ui-kit/src/components/breadcrumb.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { ChevronRight, MoreHorizontal } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Breadcrumb = React.forwardRef< HTMLElement, diff --git a/packages/loopover-ui-kit/src/components/button.tsx b/packages/loopover-ui-kit/src/components/button.tsx index dd890c081f..beb86b94cc 100644 --- a/packages/loopover-ui-kit/src/components/button.tsx +++ b/packages/loopover-ui-kit/src/components/button.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const buttonVariants = cva( "inline-flex min-w-0 items-center justify-center gap-2 whitespace-normal break-words rounded-token text-center text-token-sm font-medium leading-token-snug cursor-pointer transition-all duration-150 motion-reduce:transition-none motion-reduce:active:scale-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background active:scale-[0.99] disabled:pointer-events-none disabled:opacity-60 disabled:cursor-not-allowed [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", diff --git a/packages/loopover-ui-kit/src/components/calendar.tsx b/packages/loopover-ui-kit/src/components/calendar.tsx index 31a7e88988..e4b9b5d405 100644 --- a/packages/loopover-ui-kit/src/components/calendar.tsx +++ b/packages/loopover-ui-kit/src/components/calendar.tsx @@ -8,8 +8,8 @@ import { } from "lucide-react"; import { DayButton, DayPicker, getDefaultClassNames } from "react-day-picker"; -import { cn } from "../utils"; -import { Button, buttonVariants } from "./button"; +import { cn } from "../utils.js"; +import { Button, buttonVariants } from "./button.js"; function Calendar({ className, diff --git a/packages/loopover-ui-kit/src/components/card.tsx b/packages/loopover-ui-kit/src/components/card.tsx index 6240bd61b3..98ffcf9caf 100644 --- a/packages/loopover-ui-kit/src/components/card.tsx +++ b/packages/loopover-ui-kit/src/components/card.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Card = React.forwardRef< HTMLDivElement, diff --git a/packages/loopover-ui-kit/src/components/carousel.test.tsx b/packages/loopover-ui-kit/src/components/carousel.test.tsx index f45f4381ad..83e953877a 100644 --- a/packages/loopover-ui-kit/src/components/carousel.test.tsx +++ b/packages/loopover-ui-kit/src/components/carousel.test.tsx @@ -18,7 +18,7 @@ vi.mock("embla-carousel-react", () => ({ default: () => [() => {}, mockApi], })); -import { Carousel, CarouselContent, CarouselItem } from "./carousel"; +import { Carousel, CarouselContent, CarouselItem } from "./carousel.js"; function renderCarousel(orientation: "horizontal" | "vertical") { return render( diff --git a/packages/loopover-ui-kit/src/components/carousel.tsx b/packages/loopover-ui-kit/src/components/carousel.tsx index 154986c3d3..cf81d34426 100644 --- a/packages/loopover-ui-kit/src/components/carousel.tsx +++ b/packages/loopover-ui-kit/src/components/carousel.tsx @@ -4,8 +4,8 @@ import useEmblaCarousel, { } from "embla-carousel-react"; import { ArrowLeft, ArrowRight } from "lucide-react"; -import { cn } from "../utils"; -import { Button } from "./button"; +import { cn } from "../utils.js"; +import { Button } from "./button.js"; type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters = Parameters; diff --git a/packages/loopover-ui-kit/src/components/chart.tsx b/packages/loopover-ui-kit/src/components/chart.tsx index 9d654f30a3..031ccf764d 100644 --- a/packages/loopover-ui-kit/src/components/chart.tsx +++ b/packages/loopover-ui-kit/src/components/chart.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import * as RechartsPrimitive from "recharts"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; // Format: { THEME_NAME: CSS_SELECTOR } const THEMES = { light: "", dark: ".dark" } as const; diff --git a/packages/loopover-ui-kit/src/components/checkbox.tsx b/packages/loopover-ui-kit/src/components/checkbox.tsx index c0aeed66f2..0eeade8440 100644 --- a/packages/loopover-ui-kit/src/components/checkbox.tsx +++ b/packages/loopover-ui-kit/src/components/checkbox.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; import { Check } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Checkbox = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/command.tsx b/packages/loopover-ui-kit/src/components/command.tsx index 1c48d9d4dd..841436977f 100644 --- a/packages/loopover-ui-kit/src/components/command.tsx +++ b/packages/loopover-ui-kit/src/components/command.tsx @@ -5,8 +5,8 @@ import { type DialogProps } from "@radix-ui/react-dialog"; import { Command as CommandPrimitive } from "cmdk"; import { Search } from "lucide-react"; -import { cn } from "../utils"; -import { Dialog, DialogContent } from "./dialog"; +import { cn } from "../utils.js"; +import { Dialog, DialogContent } from "./dialog.js"; const Command = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/context-menu.tsx b/packages/loopover-ui-kit/src/components/context-menu.tsx index 91bf31eaee..fad59a0e7d 100644 --- a/packages/loopover-ui-kit/src/components/context-menu.tsx +++ b/packages/loopover-ui-kit/src/components/context-menu.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"; import { Check, ChevronRight, Circle } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const ContextMenu = ContextMenuPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/dialog.tsx b/packages/loopover-ui-kit/src/components/dialog.tsx index 638a7ed94f..cbf6ed899f 100644 --- a/packages/loopover-ui-kit/src/components/dialog.tsx +++ b/packages/loopover-ui-kit/src/components/dialog.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { X } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Dialog = DialogPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/drawer.tsx b/packages/loopover-ui-kit/src/components/drawer.tsx index cadea6056a..d4e891a2c7 100644 --- a/packages/loopover-ui-kit/src/components/drawer.tsx +++ b/packages/loopover-ui-kit/src/components/drawer.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import { Drawer as DrawerPrimitive } from "vaul"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Drawer = ({ shouldScaleBackground = true, diff --git a/packages/loopover-ui-kit/src/components/dropdown-menu.tsx b/packages/loopover-ui-kit/src/components/dropdown-menu.tsx index d7aaad0cd1..3bc4556679 100644 --- a/packages/loopover-ui-kit/src/components/dropdown-menu.tsx +++ b/packages/loopover-ui-kit/src/components/dropdown-menu.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; import { Check, ChevronRight, Circle } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const DropdownMenu = DropdownMenuPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/focus-visible-convention.test.tsx b/packages/loopover-ui-kit/src/components/focus-visible-convention.test.tsx index e57d1c7874..7a9ceaea4e 100644 --- a/packages/loopover-ui-kit/src/components/focus-visible-convention.test.tsx +++ b/packages/loopover-ui-kit/src/components/focus-visible-convention.test.tsx @@ -1,8 +1,8 @@ import { render } from "@testing-library/react"; import { describe, expect, it } from "vitest"; -import { navigationMenuTriggerStyle } from "./navigation-menu"; -import { Select, SelectTrigger, SelectValue } from "./select"; +import { navigationMenuTriggerStyle } from "./navigation-menu.js"; +import { Select, SelectTrigger, SelectValue } from "./select.js"; // Regression for #8304: SelectTrigger, the Dialog/Sheet close buttons, and NavigationMenuTrigger must // apply their focus ring/highlight via `focus-visible:` (keyboard/programmatic focus only), matching diff --git a/packages/loopover-ui-kit/src/components/form.tsx b/packages/loopover-ui-kit/src/components/form.tsx index 3b81544d33..bfdff39dac 100644 --- a/packages/loopover-ui-kit/src/components/form.tsx +++ b/packages/loopover-ui-kit/src/components/form.tsx @@ -10,8 +10,8 @@ import { type FieldValues, } from "react-hook-form"; -import { cn } from "../utils"; -import { Label } from "./label"; +import { cn } from "../utils.js"; +import { Label } from "./label.js"; const Form = FormProvider; diff --git a/packages/loopover-ui-kit/src/components/hover-card.tsx b/packages/loopover-ui-kit/src/components/hover-card.tsx index 61c051b0ed..718e1b6224 100644 --- a/packages/loopover-ui-kit/src/components/hover-card.tsx +++ b/packages/loopover-ui-kit/src/components/hover-card.tsx @@ -1,7 +1,7 @@ import * as React from "react"; import * as HoverCardPrimitive from "@radix-ui/react-hover-card"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const HoverCard = HoverCardPrimitive.Root; diff --git a/packages/loopover-ui-kit/src/components/input-otp.tsx b/packages/loopover-ui-kit/src/components/input-otp.tsx index b1e149016a..8181e0e412 100644 --- a/packages/loopover-ui-kit/src/components/input-otp.tsx +++ b/packages/loopover-ui-kit/src/components/input-otp.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import { OTPInput, OTPInputContext } from "input-otp"; import { Minus } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const InputOTP = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/input.tsx b/packages/loopover-ui-kit/src/components/input.tsx index 9ce270b1cf..7168a4a7f2 100644 --- a/packages/loopover-ui-kit/src/components/input.tsx +++ b/packages/loopover-ui-kit/src/components/input.tsx @@ -1,6 +1,6 @@ import * as React from "react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const Input = React.forwardRef>( ({ className, type, ...props }, ref) => { diff --git a/packages/loopover-ui-kit/src/components/label.tsx b/packages/loopover-ui-kit/src/components/label.tsx index 37d5d68be1..defe237fdd 100644 --- a/packages/loopover-ui-kit/src/components/label.tsx +++ b/packages/loopover-ui-kit/src/components/label.tsx @@ -4,7 +4,7 @@ import * as React from "react"; import * as LabelPrimitive from "@radix-ui/react-label"; import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const labelVariants = cva( "text-token-xs font-medium leading-token-tight peer-disabled:cursor-not-allowed peer-disabled:opacity-70", diff --git a/packages/loopover-ui-kit/src/components/menubar.tsx b/packages/loopover-ui-kit/src/components/menubar.tsx index e977fd2d72..5e7321bb6f 100644 --- a/packages/loopover-ui-kit/src/components/menubar.tsx +++ b/packages/loopover-ui-kit/src/components/menubar.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as MenubarPrimitive from "@radix-ui/react-menubar"; import { Check, ChevronRight, Circle } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; function MenubarMenu({ ...props diff --git a/packages/loopover-ui-kit/src/components/navigation-menu.tsx b/packages/loopover-ui-kit/src/components/navigation-menu.tsx index eed9c88640..3f8b714f6b 100644 --- a/packages/loopover-ui-kit/src/components/navigation-menu.tsx +++ b/packages/loopover-ui-kit/src/components/navigation-menu.tsx @@ -3,7 +3,7 @@ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"; import { cva } from "class-variance-authority"; import { ChevronDown } from "lucide-react"; -import { cn } from "../utils"; +import { cn } from "../utils.js"; const NavigationMenu = React.forwardRef< React.ElementRef, diff --git a/packages/loopover-ui-kit/src/components/pagination.test.tsx b/packages/loopover-ui-kit/src/components/pagination.test.tsx index 83c7873e3e..85df673256 100644 --- a/packages/loopover-ui-kit/src/components/pagination.test.tsx +++ b/packages/loopover-ui-kit/src/components/pagination.test.tsx @@ -5,7 +5,7 @@ import { PaginationLink, PaginationNext, PaginationPrevious, -} from "./pagination"; +} from "./pagination.js"; // Regression for #8307: PaginationLink (and PaginationPrevious/PaginationNext built on it) render an , // which has no native disabled attribute — a consumer-supplied aria-disabled must produce a real diff --git a/packages/loopover-ui-kit/src/components/pagination.tsx b/packages/loopover-ui-kit/src/components/pagination.tsx index cae9d498c2..4255db33ac 100644 --- a/packages/loopover-ui-kit/src/components/pagination.tsx +++ b/packages/loopover-ui-kit/src/components/pagination.tsx @@ -1,8 +1,8 @@ import * as React from "react"; import { ChevronLeft, ChevronRight, MoreHorizontal } from "lucide-react"; -import { cn } from "../utils"; -import { ButtonProps, buttonVariants } from "./button"; +import { cn } from "../utils.js"; +import { ButtonProps, buttonVariants } from "./button.js"; const Pagination = ({ className, ...props }: React.ComponentProps<"nav">) => (