Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
6 changes: 3 additions & 3 deletions packages/discovery-index/worker-configuration.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<import("./src/worker").DiscoveryIndexContainer>;
DISCOVERY_INDEX_RATE_LIMITER: DurableObjectNamespace<import("./src/worker").DiscoveryIndexRateLimiter>;
DISCOVERY_INDEX_CONTAINER: DurableObjectNamespace<import("./src/worker.js").DiscoveryIndexContainer>;
DISCOVERY_INDEX_RATE_LIMITER: DurableObjectNamespace<import("./src/worker.js").DiscoveryIndexRateLimiter>;
}
declare namespace Cloudflare {
interface GlobalProps {
mainModule: typeof import("./src/worker");
mainModule: typeof import("./src/worker.js");
durableNamespaces: "DiscoveryIndexContainer" | "DiscoveryIndexRateLimiter";
}
interface Env extends __BaseEnv_Env {}
Expand Down
24 changes: 12 additions & 12 deletions packages/loopover-engine/src/signals/engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,28 +23,28 @@ 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";
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";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/accordion.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
4 changes: 2 additions & 2 deletions packages/loopover-ui-kit/src/components/alert-dialog.tsx
Original file line number Diff line number Diff line change
@@ -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;

Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/alert.tsx
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/avatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof AvatarPrimitive.Root>,
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/badge.tsx
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/breadcrumb.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
4 changes: 2 additions & 2 deletions packages/loopover-ui-kit/src/components/calendar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/card.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";

import { cn } from "../utils";
import { cn } from "../utils.js";

const Card = React.forwardRef<
HTMLDivElement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
4 changes: 2 additions & 2 deletions packages/loopover-ui-kit/src/components/carousel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof useEmblaCarousel>;
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/chart.tsx
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/checkbox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof CheckboxPrimitive.Root>,
Expand Down
4 changes: 2 additions & 2 deletions packages/loopover-ui-kit/src/components/command.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof CommandPrimitive>,
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/context-menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/dialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/drawer.tsx
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions packages/loopover-ui-kit/src/components/form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/hover-card.tsx
Original file line number Diff line number Diff line change
@@ -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;

Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/input-otp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof OTPInput>,
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/input.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";

import { cn } from "../utils";
import { cn } from "../utils.js";

const Input = React.forwardRef<HTMLInputElement, React.ComponentProps<"input">>(
({ className, type, ...props }, ref) => {
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/label.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/menubar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof NavigationMenuPrimitive.Root>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <a>,
// which has no native disabled attribute — a consumer-supplied aria-disabled must produce a real
Expand Down
4 changes: 2 additions & 2 deletions packages/loopover-ui-kit/src/components/pagination.tsx
Original file line number Diff line number Diff line change
@@ -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">) => (
<nav
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/popover.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";
import * as PopoverPrimitive from "@radix-ui/react-popover";

import { cn } from "../utils";
import { cn } from "../utils.js";

const Popover = PopoverPrimitive.Root;

Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/progress.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import * as React from "react";
import * as ProgressPrimitive from "@radix-ui/react-progress";

import { cn } from "../utils";
import { cn } from "../utils.js";

const Progress = React.forwardRef<
React.ElementRef<typeof ProgressPrimitive.Root>,
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/radio-group.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as React from "react";
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
import { Circle } from "lucide-react";

import { cn } from "../utils";
import { cn } from "../utils.js";

const RadioGroup = React.forwardRef<
React.ElementRef<typeof RadioGroupPrimitive.Root>,
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/resizable.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { GripVertical } from "lucide-react";
import { Group, Panel, Separator } from "react-resizable-panels";

import { cn } from "../utils";
import { cn } from "../utils.js";

const ResizablePanelGroup = ({
className,
Expand Down
2 changes: 1 addition & 1 deletion packages/loopover-ui-kit/src/components/scroll-area.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from "react";
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";

import { cn } from "../utils";
import { cn } from "../utils.js";

type ScrollAreaProps = React.ComponentPropsWithoutRef<
typeof ScrollAreaPrimitive.Root
Expand Down
Loading
Loading