@loafmarkets/ui 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +240 -31
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +240 -31
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/cn.ts","../src/components/button.tsx","../src/components/badge.tsx","../src/components/card.tsx","../src/components/portfolio-summary.tsx","../src/components/house-position-slider.tsx","../src/components/house-position-slider-mobile.tsx","../../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../../node_modules/.pnpm/@emotion+memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../../node_modules/.pnpm/@emotion+is-prop-valid@1.4.0/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Enum.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Utility.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Tokenizer.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Parser.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Prefixer.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Serializer.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Middleware.js","../../../../node_modules/.pnpm/@emotion+unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constants.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/checkDynamicCreation.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/empties.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/determineTheme.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/domElements.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/escape.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/generateAlphabeticName.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/hash.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/generateComponentId.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/getComponentName.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isTag.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/hoist.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isFunction.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isStyledComponent.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/joinStrings.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isPlainObject.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/mixinDeep.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/setToString.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/errors.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/error.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/GroupedTag.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/GroupIDAllocator.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/Rehydration.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/nonce.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/dom.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/Tag.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/Sheet.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/stylis.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/StyleSheetManager.tsx","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/Keyframes.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/addUnitIfNeeded.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/hyphenateStyleName.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/flatten.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isStatelessFunction.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isStaticRules.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/ComponentStyle.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/ThemeProvider.tsx","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/StyledComponent.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/generateDisplayName.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/createWarnTooManyClasses.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/interleave.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constructors/css.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constructors/constructWithOptions.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constructors/styled.tsx","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constructors/keyframes.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/base.ts","../src/components/loaf-liquidity-badge.tsx","../src/components/orderbook.tsx","../src/components/property-tour.tsx","../src/components/property-news-updates.tsx","../src/components/property-compare-bar.tsx","../src/components/your-orders.tsx","../src/components/price-chart.tsx","../src/components/property-hero-header.tsx","../src/components/property-subheader.tsx","../src/components/mobile-trade-nav.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","React3","React4","formatCurrency","formatPercent","jsxs","v","a","b","React5","o","y","next","clamp","fmt0","React6","__assign","p","from","l","length","position","character","characters","j","k","x","z","_","c","d","f","SC_ATTR","process","env","REACT_APP_SC_ATTR","SC_ATTR_ACTIVE","SC_ATTR_VERSION","SC_VERSION","SPLITTER","IS_BROWSER","window","document","IS_RSC","createContext","DISABLE_SPEEDY","Boolean","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","NODE_ENV","invalidHookCallRe","seen","Set","checkDynamicCreation","displayName","componentId","parsedIdString","concat","message_1","originalConsoleError_1","console","error","didNotCallInvalidHook_1","consoleErrorMessage","consoleErrorArgs","_i","arguments","test","delete","apply","__spreadArray","useState","has","warn","add","message","EMPTY_ARRAY","Object","freeze","EMPTY_OBJECT","determineTheme","props","providedTheme","defaultProps","theme","domElements","escapeRegex","dashesAtEnds","escape","str","replace","AD_REPLACER_R","getAlphabeticChar","code","String","fromCharCode","generateAlphabeticName","name","Math","abs","phash","h","i","charCodeAt","hash","generateComponentId","getComponentName","target","isTag","charAt","toLowerCase","hasSymbol","Symbol","for","REACT_MEMO_TYPE","REACT_FORWARD_REF_TYPE","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","prototype","caller","callee","arity","MEMO_STATICS","$$typeof","compare","TYPE_STATICS","_a","render","getStatics","component","object","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","excludelist","inheritedComponent","keys","targetStatics","sourceStatics","key","descriptor","e","isFunction","isStyledComponent","joinStrings","joinStringArray","arr","sep","result","isPlainObject","constructor","mixinRecursively","source","forceMerge","Array","isArray","setToString","toStringFn","value","ERRORS","format","args","len","push","forEach","throwStyledComponentsError","interpolations","Error","join","trim","DefaultGroupedTag","tag","this","groupSizes","Uint32Array","indexOfGroup","group","index","insertRules","rules","oldBuffer","oldSize","newSize","styledError","set","ruleIndex","insertRule","clearGroup","length_1","startIndex","endIndex","deleteRule","getGroup","css","getRule","MAX_SMI","groupIDRegister","Map","reverseRegister","nextFreeGroup","getGroupForId","id","get","setGroupForId","SELECTOR","MARKER_RE","RegExp","rehydrateNamesFromContent","sheet","content","names","split","registerName","rehydrateSheetFromTag","style","parts","textContent","part","marker","match","parseInt","getTag","rehydrateSheet","nodes","querySelectorAll","node","getAttribute","parentNode","removeChild","getNonce","__webpack_nonce__","makeStyleTag","head","parent","createElement","prevStyle","nextSibling","setAttribute","nonce","insertBefore","CSSOMTag","element","appendChild","createTextNode","styleSheets","ownerNode","rule","_error","cssRules","cssText","TextTag","childNodes","VirtualTag","_target","splice","SHOULD_REHYDRATE","defaultOptions","isServer","useCSSOMInjection","StyleSheet","options","globalStyles","_this","gs","server","r","size","selector","registerId","rehydrate","reconstructWithOptions","withNames","undefined","allocateGSInstance","hasNameForId","groupNames","clearNames","clear","clearRules","clearTag","AMP_REGEX","SLASH","hasUnbalancedBraces","indexOf","depth","inString","inComment","recursivelySetNamepace","compiled","namespace","map","replaceAll","prop","children","createStylisInstance","_componentId","_selector","_selectorRegexp","_b","_c","_d","plugins","selfReferenceReplacer","offset","string","startsWith","endsWith","middlewares","slice","RULESET","includes","prefix","prefixer","stringify","stringifyRules","flatCSS","declStart","braceDepth","skipEnd","skipCode","substring","remaining","start","urlDepth","compile","stack","serialize","middleware","rulesheet","reduce","acc","plugin","throwStyledError","toString","mainSheet","mainStylis","defaultContextValue","shouldForwardProp","styleSheet","stylis","StyleSheetContext","Provider","Consumer","useStyleSheetContext","useContext","Keyframes","inject","stylisInstance","resolvedName","getName","addUnitIfNeeded","unitless","isUpper","hyphenateStyleName","output","isFalsish","chunk","objToCssArray","obj","val","hasOwnProperty","isCss","hyphenate","flatten","executionContext","styledComponentId","isReactComponent","chunklet","isStaticRules","SEED","ComponentStyle","baseStyle","staticRulesId","isStatic","baseHash","generateAndInjectStyles","className","cssStatic","name_1","generateName","cssStaticFormatted","dynamicHash","partRule","partString","name_2","cssFormatted","ThemeContext","identifiers","seenUnknownProps","createStyledComponent","isTargetStyledComp","styledComponentTarget","isCompositeComponent","attrs","parentComponentId","finalAttrs","filter","shouldForwardPropFn_1","passedShouldForwardPropFn_1","elementToBeCreated","componentStyle","forwardRefRender","ref","forwardedComponent","forwardedRef","componentAttrs","foldedComponentIds","contextTheme","ssc","useDebugValue","context","attrDef","resolvedAttrDef","as","propsForElement","forwardedAs","isPropValid","resolvedAttrs","generatedClassName","warnTooManyClasses","classString","Fragment","precedence","href","WrappedStyledComponent","forwardRef","_foldedDefaultProps","sources","sources_1","generatedClasses","warningSeen","hoist","interleave","strings","addTag","arg","assign","styles","styleStringArray","constructWithOptions","componentConstructor","templateFunction","initialStyles","withConfig","config","baseStyled","styled","domElement","keyframes","navigator","product","windowGlobalKey","React7","React8","React9","React10","prev","Newspaper","React11","React12","LightweightCharts","React13","formatPrice","React14","PriceBlock","BedDouble","Bath","CarFront","React15","React16"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center font-semibold transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n primary: \"bg-teal-500 text-slate-950 hover:bg-teal-400 focus-visible:ring-teal-200\",\n accent:\n \"bg-[var(--color-accent,#e6c87e)] text-black hover:bg-[var(--color-accent-hover,#f8d12f)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n accentOutline:\n \"border border-[var(--color-accent,#e6c87e)] bg-transparent text-[var(--color-accent,#e6c87e)] hover:bg-[rgba(230,200,126,0.10)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n media:\n \"border border-white/10 bg-transparent text-white/90 hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n outline:\n \"border border-slate-800/20 bg-white text-slate-900 hover:border-slate-800/40 focus-visible:ring-slate-200\",\n ghost:\n \"bg-transparent text-slate-900 hover:bg-slate-900/5 focus-visible:ring-slate-200\",\n danger: \"bg-rose-500 text-white hover:bg-rose-400 focus-visible:ring-rose-200\",\n },\n size: {\n sm: \"h-9 px-4 text-sm\",\n md: \"h-11 px-6 text-base\",\n lg: \"h-12 px-7 text-lg\",\n icon: \"h-10 w-10\",\n },\n radius: {\n pill: \"rounded-full\",\n md: \"rounded\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"pill\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, radius, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size, radius }), className)}\n {...props}\n />\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nexport const badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-3 py-1 text-xs font-semibold uppercase tracking-wide transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-slate-900 text-white focus-visible:ring-slate-300\",\n muted:\n \"border-transparent bg-slate-100 text-slate-600 focus-visible:ring-slate-200\",\n outline: \"border-slate-200 bg-white text-slate-600 focus-visible:ring-slate-200\",\n success:\n \"border-transparent bg-teal-500/15 text-teal-600 focus-visible:ring-teal-200\",\n active:\n \"border-transparent bg-[rgba(14,203,129,0.25)] text-[#0ecb81] focus-visible:ring-[rgba(14,203,129,0.35)]\",\n pending:\n \"border-transparent bg-white/10 text-white/60 focus-visible:ring-white/20\",\n rejected:\n \"border-transparent bg-[rgba(246,70,93,0.20)] text-[#f6465d] focus-visible:ring-[rgba(246,70,93,0.30)]\",\n },\n size: {\n sm: \"px-2.5 py-0.5 text-[11px]\",\n md: \"px-3 py-1 text-xs\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant, size }), className)} {...props} />\n )\n);\n\nBadge.displayName = \"Badge\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-3xl border border-slate-200 bg-white shadow-sm transition hover:shadow-md\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-xl font-semibold tracking-tight text-slate-900\", className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-slate-500\", className)} {...props} />\n )\n);\nCardDescription.displayName = \"CardDescription\";\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-6 pb-6 pt-2 text-sm text-slate-600\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center border-t border-slate-100 px-6 py-4\", className)} {...props} />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"./card\";\n\nconst defaultFormatCurrency = (value: number) =>\n new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(value);\n\nconst defaultFormatPercent = (value: number) => {\n const sign = value >= 0 ? \"+\" : \"-\";\n return `${sign}${Math.abs(value).toFixed(2)}%`;\n};\n\nconst defaultFormatSignedCurrency = (value: number) => {\n const sign = value >= 0 ? \"+\" : \"-\";\n return `${sign}${defaultFormatCurrency(Math.abs(value))}`;\n};\n\nexport interface PortfolioSummaryProps extends React.HTMLAttributes<HTMLDivElement> {\n availableCash: number;\n portfolioValue: number;\n totalReturnPercent: number;\n unrealizedPnl: number;\n onResetAccount?: () => void;\n positionsHeading?: string;\n emptyPositionsText?: string;\n formatCurrency?: (value: number) => string;\n formatPercent?: (value: number) => string;\n formatSignedCurrency?: (value: number) => string;\n children?: React.ReactNode;\n}\n\nexport const PortfolioSummary = React.forwardRef<HTMLDivElement, PortfolioSummaryProps>(\n (\n {\n availableCash,\n portfolioValue,\n totalReturnPercent,\n unrealizedPnl,\n onResetAccount,\n positionsHeading = \"Current Positions\",\n emptyPositionsText = \"No positions yet. Start trading to build your portfolio!\",\n formatCurrency = defaultFormatCurrency,\n formatPercent = defaultFormatPercent,\n formatSignedCurrency = defaultFormatSignedCurrency,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const totalReturnClassName = totalReturnPercent >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n\n const pnlClassName = unrealizedPnl >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[560px] rounded-[12px] border border-white/10 bg-black/30 p-6 text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"p-0 pb-4\">\n <div className=\"flex items-center justify-between gap-4\">\n <CardTitle className=\"m-0 text-[1.1rem] font-semibold text-white\">Portfolio Summary</CardTitle>\n {onResetAccount ? (\n <button\n type=\"button\"\n onClick={onResetAccount}\n className=\"cursor-pointer rounded-[6px] border border-white/20 bg-white/10 px-[0.7rem] py-[0.35rem] text-xs text-[#888] transition-all duration-150 hover:border-white/30 hover:bg-white/[0.15] hover:text-white\"\n >\n Reset Account\n </button>\n ) : null}\n </div>\n <div className=\"mt-3 h-px w-full bg-white/10\" />\n </CardHeader>\n\n <CardContent className=\"p-0 pt-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Available Cash</p>\n <p className=\"mt-1 text-[1.25rem] font-semibold text-white\">{formatCurrency(availableCash)}</p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Portfolio Value</p>\n <p className=\"mt-1 text-[1.25rem] font-semibold text-white\">{formatCurrency(portfolioValue)}</p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Total Return</p>\n <p className={cn(\"mt-1 text-[1.25rem] font-semibold\", totalReturnClassName)}>\n {formatPercent(totalReturnPercent)}\n </p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Unrealized P&L</p>\n <p className={cn(\"mt-1 text-[1.25rem] font-semibold\", pnlClassName)}>\n {formatSignedCurrency(unrealizedPnl)}\n </p>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <p className=\"m-0 text-[0.9rem] font-medium text-white/70\">{positionsHeading}</p>\n <div className=\"mt-3\">\n {children ? (\n children\n ) : (\n <p className=\"py-4 text-center text-[0.85rem] text-white/40\">{emptyPositionsText}</p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n }\n);\n\nPortfolioSummary.displayName = \"PortfolioSummary\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { type OrderbookLevel } from \"./orderbook\";\n\nexport type HousePositionPendingOrder = {\n type: \"buy\" | \"sell\";\n tokens: number;\n value: number;\n price: number;\n};\n\nexport type HousePositionSliderOrderPayload = {\n side: \"buy\" | \"sell\";\n orderType: \"market\" | \"limit\";\n tokenId: string;\n tokenSymbol: string;\n price: number;\n deltaTokens: number;\n deltaValue: number;\n targetOwnership: number;\n targetTokens: number;\n targetValue: number;\n};\n\nexport type HousePositionOrderbook = {\n bids?: OrderbookLevel[];\n asks?: OrderbookLevel[];\n};\n\nexport interface HousePositionSliderProps extends React.HTMLAttributes<HTMLDivElement> {\n tokenId: string;\n tokenSymbol: string;\n totalTokens: number;\n currentPrice: number;\n availableCash: number;\n tokensHeld: number;\n pendingOrders?: HousePositionPendingOrder[];\n defaultOrderType?: \"market\" | \"limit\";\n orderbook?: HousePositionOrderbook;\n ownershipPercentOverride?: number;\n onConfirmOrder?: (payload: HousePositionSliderOrderPayload) => void;\n}\n\nconst clamp = (v: number, min: number, max: number) => Math.min(max, Math.max(min, v));\nconst fmt0 = (v: number) => Math.abs(v).toLocaleString(undefined, { maximumFractionDigits: 0 });\n\ntype MarketFillResult = {\n tokens: number;\n value: number;\n avgPrice: number | null;\n};\n\nconst normalizeLevels = (levels: OrderbookLevel[] = []) =>\n levels.filter((level) => Number.isFinite(level.price) && level.price > 0 && Number.isFinite(level.amount) && level.amount > 0);\n\nconst estimateMarketBuyFromUsd = (levels: OrderbookLevel[] = [], usdAmount: number): MarketFillResult => {\n if (!Number.isFinite(usdAmount) || usdAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const asks = normalizeLevels(levels).sort((a, b) => a.price - b.price);\n let remainingUsd = usdAmount;\n let tokensFilled = 0;\n let spent = 0;\n\n for (const level of asks) {\n if (remainingUsd <= 0) break;\n const levelValueCapacity = level.amount * level.price;\n const usdToSpend = Math.min(remainingUsd, levelValueCapacity);\n const tokensFromLevel = usdToSpend / level.price;\n tokensFilled += tokensFromLevel;\n spent += usdToSpend;\n remainingUsd -= usdToSpend;\n }\n\n return {\n tokens: tokensFilled,\n value: spent,\n avgPrice: tokensFilled > 0 ? spent / tokensFilled : null,\n };\n};\n\nconst estimateMarketBuyFromTokens = (levels: OrderbookLevel[] = [], tokenAmount: number): MarketFillResult => {\n if (!Number.isFinite(tokenAmount) || tokenAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const asks = normalizeLevels(levels).sort((a, b) => a.price - b.price);\n let remainingTokens = tokenAmount;\n let tokensFilled = 0;\n let spent = 0;\n\n for (const level of asks) {\n if (remainingTokens <= 0) break;\n const tokensFromLevel = Math.min(remainingTokens, level.amount);\n spent += tokensFromLevel * level.price;\n tokensFilled += tokensFromLevel;\n remainingTokens -= tokensFromLevel;\n }\n\n return {\n tokens: tokensFilled,\n value: spent,\n avgPrice: tokensFilled > 0 ? spent / tokensFilled : null,\n };\n};\n\nconst estimateMarketSellFromTokens = (levels: OrderbookLevel[] = [], tokenAmount: number): MarketFillResult => {\n if (!Number.isFinite(tokenAmount) || tokenAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const bids = normalizeLevels(levels).sort((a, b) => b.price - a.price);\n let remainingTokens = tokenAmount;\n let tokensFilled = 0;\n let received = 0;\n\n for (const level of bids) {\n if (remainingTokens <= 0) break;\n const tokensFromLevel = Math.min(remainingTokens, level.amount);\n received += tokensFromLevel * level.price;\n tokensFilled += tokensFromLevel;\n remainingTokens -= tokensFromLevel;\n }\n\n return {\n tokens: tokensFilled,\n value: received,\n avgPrice: tokensFilled > 0 ? received / tokensFilled : null,\n };\n};\n\nexport function HousePositionSlider({\n tokenId,\n tokenSymbol,\n totalTokens,\n currentPrice,\n availableCash,\n tokensHeld,\n pendingOrders = [],\n defaultOrderType = \"market\",\n orderbook,\n ownershipPercentOverride,\n onConfirmOrder,\n className,\n ...props\n}: HousePositionSliderProps) {\n const [orderMode, setOrderMode] = React.useState<\"none\" | \"buy\" | \"sell\">(\"none\");\n const [buyTrackingMode, setBuyTrackingMode] = React.useState<\"dollars\" | \"tokens\">(\"dollars\");\n const [deltaDollars, setDeltaDollars] = React.useState(0);\n const [deltaTokensBuy, setDeltaTokensBuy] = React.useState(0);\n const [deltaTokensSell, setDeltaTokensSell] = React.useState(0);\n const [isDragging, setIsDragging] = React.useState(false);\n const [visualTargetPct, setVisualTargetPct] = React.useState<number | null>(null);\n\n const [orderType, setOrderType] = React.useState<\"market\" | \"limit\">(defaultOrderType);\n const [limitPrice, setLimitPrice] = React.useState(currentPrice);\n const [limitPriceInput, setLimitPriceInput] = React.useState(currentPrice.toFixed(2));\n const [limitPriceDirty, setLimitPriceDirty] = React.useState(false);\n\n const [ownershipInput, setOwnershipInput] = React.useState(\"\");\n const [tokenAmountInput, setTokenAmountInput] = React.useState(\"\");\n\n const houseRef = React.useRef<HTMLDivElement | null>(null);\n\n const asks = orderbook?.asks ?? [];\n const bids = orderbook?.bids ?? [];\n\n React.useEffect(() => {\n if (orderType !== \"limit\") return;\n if (limitPriceDirty) return;\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n }, [currentPrice, limitPriceDirty, orderType]);\n\n const effectivePrice = orderType === \"limit\" ? limitPrice : currentPrice;\n const pendingBuyValue = pendingOrders.filter((o) => o.type === \"buy\").reduce((s, o) => s + o.value, 0);\n const pendingSellTokens = pendingOrders.filter((o) => o.type === \"sell\").reduce((s, o) => s + Math.abs(o.tokens), 0);\n\n const effectiveAvailableCash = Math.max(0, availableCash - pendingBuyValue);\n const effectiveTokensHeld = Math.max(0, tokensHeld - pendingSellTokens);\n\n const holdingsValue = tokensHeld * effectivePrice;\n const safeTotalTokens = totalTokens > 0 ? totalTokens : 1;\n const baselineOwnershipActual = clamp((effectiveTokensHeld / safeTotalTokens) * 100, 0, 100);\n\n let deltaTokens = 0;\n let deltaValue = 0;\n let marketAvgPrice: number | null = null;\n let targetTokens = tokensHeld;\n let targetValue = holdingsValue;\n\n const limitPriceSafe = limitPrice > 0 ? limitPrice : currentPrice || 1;\n\n if (orderMode === \"buy\") {\n if (orderType === \"market\") {\n if (buyTrackingMode === \"tokens\") {\n const desiredTokens = Math.max(0, deltaTokensBuy);\n const result = estimateMarketBuyFromTokens(asks, desiredTokens);\n deltaTokens = result.tokens;\n deltaValue = result.value;\n marketAvgPrice = result.avgPrice;\n } else {\n const notional = Math.min(Math.max(0, deltaDollars), effectiveAvailableCash);\n const result = estimateMarketBuyFromUsd(asks, notional);\n deltaTokens = result.tokens;\n deltaValue = result.value;\n marketAvgPrice = result.avgPrice;\n }\n } else {\n if (buyTrackingMode === \"tokens\") {\n deltaTokens = deltaTokensBuy;\n deltaValue = deltaTokensBuy * limitPriceSafe;\n } else {\n const notional = Math.min(Math.max(0, deltaDollars), effectiveAvailableCash);\n deltaValue = notional;\n deltaTokens = notional / limitPriceSafe;\n }\n }\n } else if (orderMode === \"sell\") {\n if (orderType === \"market\") {\n const tokensToSell = Math.abs(deltaTokensSell);\n const result = estimateMarketSellFromTokens(bids, tokensToSell);\n deltaTokens = -result.tokens;\n deltaValue = -result.value;\n marketAvgPrice = result.avgPrice;\n } else {\n deltaTokens = deltaTokensSell;\n deltaValue = deltaTokensSell * limitPriceSafe;\n }\n }\n\n targetTokens = tokensHeld + deltaTokens;\n targetValue = targetTokens * effectivePrice;\n\n const sliderTargetTokens = clamp(effectiveTokensHeld + deltaTokens, 0, safeTotalTokens);\n const normalizedTargetPct = (sliderTargetTokens / safeTotalTokens) * 100;\n\n const isIncrease = orderMode === \"buy\";\n const hasChange = orderMode !== \"none\" && (Math.abs(deltaTokens) > 0.001 || Math.abs(deltaValue) > 0.01);\n\n const currentOwnership = totalTokens <= 0 ? 0 : clamp((tokensHeld / totalTokens) * 100, 0, 100);\n const targetOwnership = totalTokens <= 0 ? 0 : clamp((targetTokens / totalTokens) * 100, 0, 100);\n\n const ownershipOverrideValue =\n typeof ownershipPercentOverride === \"number\" && Number.isFinite(ownershipPercentOverride)\n ? clamp(ownershipPercentOverride, 0, 100)\n : null;\n const ownershipShift = ownershipOverrideValue != null ? ownershipOverrideValue - baselineOwnershipActual : 0;\n const baselinePct = clamp(ownershipOverrideValue ?? baselineOwnershipActual, 0, 100);\n const impliedTargetPct = clamp(normalizedTargetPct + ownershipShift, 0, 100);\n const displayTargetPct = visualTargetPct ?? impliedTargetPct;\n const targetPct = displayTargetPct;\n const displayCurrentOwnership = clamp(ownershipOverrideValue ?? currentOwnership, 0, 100);\n const impliedDisplayTargetOwnership = clamp(targetOwnership + ownershipShift, 0, 100);\n const displayTargetOwnership = visualTargetPct ?? impliedDisplayTargetOwnership;\n\n const estFeeTokens = (Math.abs(deltaValue) * 0.005) / (effectivePrice || 1);\n\n const resetOrder = React.useCallback(() => {\n setOrderMode(\"none\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n setVisualTargetPct(null);\n }, []);\n\n const updateOrderFromTargetValue = React.useCallback(\n (newTargetValue: number) => {\n const newDeltaValue = newTargetValue - holdingsValue;\n\n if (newDeltaValue > 0) {\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(Math.min(newDeltaValue, effectiveAvailableCash));\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n return;\n }\n\n if (newDeltaValue < 0) {\n const newDeltaTokens = newTargetValue / (effectivePrice || 1) - tokensHeld;\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(Math.max(newDeltaTokens, -effectiveTokensHeld));\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n return;\n }\n\n resetOrder();\n },\n [effectiveAvailableCash, effectivePrice, effectiveTokensHeld, holdingsValue, resetOrder, tokensHeld]\n );\n\n const updateOrderFromOwnership = React.useCallback(\n (newOwnershipPercent: number) => {\n const nextOwnership = clamp(newOwnershipPercent, 0, 100);\n const newTargetTokens = (nextOwnership / 100) * totalTokens;\n updateOrderFromTargetValue(newTargetTokens * effectivePrice);\n setVisualTargetPct(nextOwnership);\n },\n [effectivePrice, totalTokens, updateOrderFromTargetValue]\n );\n\n const updateOrderFromTokenAmount = React.useCallback(\n (tokenAmountSigned: number) => {\n if (tokenAmountSigned > 0) {\n const maxTokens = effectiveAvailableCash / (effectivePrice || 1);\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"tokens\");\n setDeltaTokensBuy(Math.min(tokenAmountSigned, maxTokens));\n setDeltaDollars(0);\n setDeltaTokensSell(0);\n return;\n }\n\n if (tokenAmountSigned < 0) {\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(Math.max(tokenAmountSigned, -effectiveTokensHeld));\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n return;\n }\n\n resetOrder();\n },\n [effectiveAvailableCash, effectivePrice, effectiveTokensHeld, resetOrder]\n );\n\n const updateOrderFromSlider = React.useCallback(\n (pct: number) => {\n const normalized = (pct - 50) / 50;\n const magnitude = Math.min(Math.abs(normalized), 1);\n if (magnitude < 0.02) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n if (normalized > 0) {\n const notional = clamp(magnitude * effectiveAvailableCash, 0, effectiveAvailableCash);\n if (notional <= 0) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(notional);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n setVisualTargetPct(clamp(pct, 0, 100));\n return;\n }\n if (normalized < 0) {\n const tokensToSell = clamp(magnitude * effectiveTokensHeld, 0, effectiveTokensHeld);\n if (tokensToSell <= 0) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(-tokensToSell);\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setVisualTargetPct(clamp(pct, 0, 100));\n return;\n }\n resetOrder();\n setVisualTargetPct(null);\n },\n [effectiveAvailableCash, effectiveTokensHeld, resetOrder]\n );\n\n const handleDragAtClientY = React.useCallback(\n (clientY: number) => {\n if (!houseRef.current) return;\n const rect = houseRef.current.getBoundingClientRect();\n const y = clientY - rect.top;\n const pct = clamp(100 - (y / rect.height) * 100, 0, 100);\n updateOrderFromSlider(pct);\n },\n [updateOrderFromSlider]\n );\n\n const onMouseDown = (e: React.MouseEvent) => {\n e.preventDefault();\n setIsDragging(true);\n\n const onMove = (ev: MouseEvent) => handleDragAtClientY(ev.clientY);\n const onUp = () => {\n setIsDragging(false);\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n };\n\n const onTouchStart = () => {\n setIsDragging(true);\n\n const onMove = (ev: TouchEvent) => {\n const touch = ev.touches[0];\n if (!touch) return;\n handleDragAtClientY(touch.clientY);\n };\n const onEnd = () => {\n setIsDragging(false);\n document.removeEventListener(\"touchmove\", onMove);\n document.removeEventListener(\"touchend\", onEnd);\n };\n\n document.addEventListener(\"touchmove\", onMove);\n document.addEventListener(\"touchend\", onEnd);\n };\n\n const handleCancel = () => {\n resetOrder();\n };\n\n const handleOrderTypeSelection = (next: \"market\" | \"limit\") => {\n setOrderType(next);\n if (next === \"limit\") {\n setLimitPriceDirty(false);\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n } else {\n setLimitPriceDirty(false);\n }\n };\n\n const handleConfirm = () => {\n if (!hasChange) return;\n const priceToUse = orderType === \"market\" ? marketAvgPrice ?? currentPrice : limitPrice;\n onConfirmOrder?.({\n side: isIncrease ? \"buy\" : \"sell\",\n orderType,\n tokenId,\n tokenSymbol,\n price: priceToUse,\n deltaTokens,\n deltaValue,\n targetOwnership,\n targetTokens,\n targetValue,\n });\n handleCancel();\n };\n\n const rectTop = 10;\n const rectBottom = 150;\n const totalFillableHeight = rectBottom - rectTop;\n const baselineFillHeight = (baselinePct / 100) * totalFillableHeight;\n const targetFillHeight = (targetPct / 100) * totalFillableHeight;\n const baselineFillY = rectBottom - baselineFillHeight;\n const targetFillY = rectBottom - targetFillHeight;\n\n const showIncrease = targetPct > baselinePct;\n const showDecrease = targetPct < baselinePct;\n\n const valueLabel = orderType === \"limit\" ? `${tokenSymbol} Owned at Limit` : `${tokenSymbol} Owned`;\n const deltaSign = deltaValue > 0 ? \"+\" : deltaValue < 0 ? \"-\" : \"\";\n const percentMarkers = [100, 50, 25, 0];\n\n return (\n <div className={cn(\"relative flex w-full flex-col items-center gap-6 rounded-[12px] bg-black/20 px-8 pb-6 pt-12\", className)} {...props}>\n <div className=\"absolute left-4 top-4 text-[1.1rem] font-semibold tracking-[0.5px] text-white\">Place Order</div>\n\n {hasChange ? (\n <button\n type=\"button\"\n onClick={handleCancel}\n className=\"absolute right-3 top-3 rounded-[6px] border border-white/20 bg-white/10 px-2.5 py-1.5 text-[0.7rem] text-[#888] transition-all duration-150 hover:border-white/30 hover:bg-white/[0.15] hover:text-white\"\n >\n ✕ Cancel\n </button>\n ) : null}\n\n <div className=\"text-center\">\n <div className=\"mb-2 text-xs uppercase tracking-[1px] text-[#888]\">{valueLabel}</div>\n <div className=\"flex items-baseline justify-center gap-3\">\n <span\n className={cn(\n \"text-[2.2rem] font-semibold\",\n deltaValue >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n {deltaSign}${fmt0(deltaValue)}\n </span>\n <span className=\"text-lg font-semibold text-white/60\">${fmt0(targetValue)}</span>\n </div>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <div className=\"flex h-[200px] flex-col justify-between text-xs text-white/40\">\n {percentMarkers.map((marker) => (\n <span key={marker}>{marker}%</span>\n ))}\n </div>\n <div\n ref={houseRef}\n className=\"h-[200px] w-[160px] select-none touch-none\"\n style={{ cursor: \"ns-resize\" }}\n onMouseDown={onMouseDown}\n onTouchStart={onTouchStart}\n >\n <svg viewBox=\"0 0 120 160\" className=\"h-full w-full overflow-visible\">\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" fill=\"rgba(255,255,255,0.04)\" stroke=\"rgba(255,255,255,0.10)\" />\n <clipPath id=\"loaf-clip\">\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" />\n </clipPath>\n <g clipPath=\"url(#loaf-clip)\">\n <rect x=\"10\" y={showDecrease ? targetFillY : baselineFillY} width=\"100\" height={showDecrease ? targetFillHeight : baselineFillHeight} fill=\"rgba(220,175,120,0.7)\" />\n {showIncrease ? (\n <rect x=\"10\" y={targetFillY} width=\"100\" height={targetFillHeight - baselineFillHeight} fill=\"rgba(14,203,129,0.35)\" />\n ) : null}\n {showDecrease ? (\n <rect x=\"10\" y={baselineFillY} width=\"100\" height={baselineFillHeight - targetFillHeight} fill=\"rgba(246,70,93,0.35)\" />\n ) : null}\n <line x1=\"12\" y1={targetFillY} x2=\"108\" y2={targetFillY} stroke={showIncrease ? \"#0ecb81\" : showDecrease ? \"#f6465d\" : \"rgba(234,217,162,1)\"} strokeWidth=\"2\" strokeLinecap=\"round\" />\n </g>\n </svg>\n </div>\n </div>\n\n <button\n type=\"button\"\n disabled={!hasChange}\n onClick={handleConfirm}\n className={cn(\n \"w-full rounded-[10px] px-4 py-4 text-base font-semibold transition\",\n !hasChange\n ? \"cursor-not-allowed bg-white/10 text-white/30\"\n : isIncrease\n ? \"bg-[#0ecb81] text-white hover:-translate-y-[1px] hover:shadow-[0_4px_12px_rgba(14,203,129,0.3)]\"\n : \"bg-[#f6465d] text-white hover:-translate-y-[1px] hover:shadow-[0_4px_12px_rgba(246,70,93,0.3)]\"\n )}\n >\n {!hasChange ? \"Adjust Position\" : isIncrease ? `Buy $${fmt0(deltaValue)}` : `Sell $${fmt0(deltaValue)}`}\n </button>\n\n <div className=\"w-full border-t border-white/10 py-4 text-[0.85rem]\">\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">{tokenSymbol} Ownership</span>\n <span className=\"text-white\">\n {displayCurrentOwnership.toFixed(2)}%\n <span className=\"mx-1.5 text-white/50\">→</span>\n <input\n type=\"text\"\n value={ownershipInput || displayTargetOwnership.toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setOwnershipInput(val);\n }}\n onFocus={() => setOwnershipInput(displayTargetOwnership.toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(ownershipInput);\n if (Number.isFinite(num)) updateOrderFromOwnership(num);\n setOwnershipInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n className={cn(\n \"w-[70px] rounded-[4px] border bg-white/10 px-2 py-1 text-right font-semibold outline-none\",\n displayTargetOwnership >= displayCurrentOwnership\n ? \"border-[rgba(14,203,129,0.3)] text-[#0ecb81] focus:border-[#0ecb81]\"\n : \"border-[rgba(246,70,93,0.3)] text-[#f6465d] focus:border-[#f6465d]\"\n )}\n />\n </span>\n </div>\n\n {orderType === \"market\" ? null : (\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">{isIncrease ? \"Buying\" : \"Selling\"}</span>\n <span className=\"inline-flex items-center gap-1\">\n {orderMode === \"buy\" && buyTrackingMode === \"dollars\" ? <span className=\"mr-1 text-[#0ecb81]\">~</span> : null}\n <input\n type=\"text\"\n value={tokenAmountInput || Math.abs(deltaTokens).toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setTokenAmountInput(val);\n }}\n onFocus={() => setTokenAmountInput(Math.abs(deltaTokens).toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(tokenAmountInput);\n if (Number.isFinite(num) && num >= 0) {\n const signed = isIncrease || orderMode === \"none\" ? num : -num;\n updateOrderFromTokenAmount(signed);\n }\n setTokenAmountInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n className={cn(\n \"w-[90px] rounded-[4px] border bg-white/10 px-2 py-1 text-right font-semibold outline-none\",\n isIncrease\n ? \"border-[rgba(14,203,129,0.3)] text-[#0ecb81] focus:border-[#0ecb81]\"\n : \"border-[rgba(246,70,93,0.3)] text-[#f6465d] focus:border-[#f6465d]\"\n )}\n />\n <span className={cn(\"font-semibold\", isIncrease ? \"text-[#0ecb81]\" : \"text-[#f6465d]\")}>tokens</span>\n </span>\n </div>\n )}\n\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">Est. Fee</span>\n <span className=\"text-white\">{estFeeTokens.toFixed(6)} {tokenSymbol}</span>\n </div>\n </div>\n\n <div className=\"w-full\">\n <div className=\"mb-4 flex w-full rounded-[8px] bg-white/5 p-[3px]\">\n <button\n type=\"button\"\n onClick={() => handleOrderTypeSelection(\"market\")}\n className={cn(\n \"flex-1 rounded-[6px] px-3 py-2 text-[0.8rem] font-medium transition\",\n orderType === \"market\" ? \"bg-[rgba(201,162,39,0.2)] text-[#C9A227]\" : \"text-white/50 hover:bg-white/5\"\n )}\n >\n Market\n </button>\n <button\n type=\"button\"\n onClick={() => handleOrderTypeSelection(\"limit\")}\n className={cn(\n \"flex-1 rounded-[6px] px-3 py-2 text-[0.8rem] font-medium transition\",\n orderType === \"limit\" ? \"bg-[rgba(201,162,39,0.2)] text-[#C9A227]\" : \"text-white/50 hover:bg-white/5\"\n )}\n >\n Limit\n </button>\n </div>\n\n {orderType === \"limit\" ? (\n <div className=\"relative mb-4\">\n <input\n type=\"text\"\n value={limitPriceInput}\n onChange={(e) => {\n const input = e.target.value;\n if (input === \"\" || /^[0-9]*\\.?[0-9]*$/.test(input)) {\n setLimitPriceDirty(true);\n setLimitPriceInput(input);\n const num = Number.parseFloat(input);\n if (Number.isFinite(num) && num > 0) setLimitPrice(num);\n }\n }}\n onBlur={() => {\n const num = Number.parseFloat(limitPriceInput);\n if (Number.isFinite(num) && num > 0) {\n setLimitPriceInput(num.toFixed(2));\n setLimitPrice(num);\n } else {\n setLimitPriceInput(limitPrice.toFixed(2));\n }\n }}\n placeholder=\"Price\"\n className=\"w-full rounded-[8px] border border-white/10 bg-black/30 px-4 py-3 pr-14 text-[0.95rem] text-white outline-none focus:border-[#f0b90b]\"\n />\n <span className=\"absolute right-4 top-1/2 -translate-y-1/2 text-[0.8rem] text-white/50\">USD</span>\n </div>\n ) : null}\n\n <div className=\"flex items-center justify-between text-xs text-white/50\">\n <span>Available: ${availableCash.toLocaleString()}</span>\n <button type=\"button\" className=\"text-[#f0b90b] hover:underline\">\n Add Funds\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { type OrderbookLevel } from \"./orderbook\";\n\nexport type HousePositionSliderMobileOrderPayload = {\n side: \"buy\" | \"sell\";\n orderType: \"market\" | \"limit\";\n tokenId: string;\n tokenSymbol: string;\n price: number;\n deltaTokens: number;\n deltaValue: number;\n targetOwnership: number;\n targetTokens: number;\n targetValue: number;\n};\n\nexport type HousePositionSliderMobileOrderbook = {\n bids?: OrderbookLevel[];\n asks?: OrderbookLevel[];\n};\n\nexport interface HousePositionSliderMobileProps extends React.HTMLAttributes<HTMLDivElement> {\n tokenId: string;\n tokenSymbol: string;\n totalTokens: number;\n currentPrice: number;\n availableCash: number;\n tokensHeld: number;\n defaultOrderType?: \"market\" | \"limit\";\n orderbook?: HousePositionSliderMobileOrderbook;\n ownershipPercentOverride?: number;\n onConfirmOrder?: (payload: HousePositionSliderMobileOrderPayload) => void;\n}\n\nconst clamp = (v: number, min: number, max: number) => Math.min(max, Math.max(min, v));\nconst fmt0 = (v: number) => Math.abs(v).toLocaleString(undefined, { maximumFractionDigits: 0 });\n\n// Styles copied exactly from loaf-demo/src/components/HousePositionSlider/HousePositionSlider.jsx\nconst styles = {\n // SliderContainer @media (max-width: 1024px)\n sliderContainer: {\n display: \"flex\",\n flexDirection: \"column\" as const,\n alignItems: \"center\",\n padding: \"1.5rem 1rem 0.75rem\",\n background: \"#111111\",\n borderRadius: \"12px\",\n gap: \"0.4rem\",\n position: \"relative\" as const,\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n },\n // ValueDisplay @media (max-width: 1024px)\n valueDisplay: {\n textAlign: \"center\" as const,\n marginBottom: \"0.2rem\",\n },\n // ValueLabel @media (max-width: 1024px)\n valueLabel: {\n fontSize: \"0.65rem\",\n color: \"#C9A227\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"1px\",\n marginBottom: \"0.2rem\",\n },\n // ValueAmount @media (max-width: 1024px)\n valueAmount: {\n fontSize: \"1.1rem\",\n fontWeight: 700,\n color: \"#fff\",\n display: \"inline-flex\",\n alignItems: \"baseline\",\n gap: \"0.3rem\",\n },\n // HouseWrapper @media (max-width: 1024px)\n houseWrapper: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"0.75rem\",\n margin: \"0.25rem 0\",\n width: \"100%\",\n },\n // HouseContainer @media (max-width: 1024px)\n houseContainer: {\n position: \"relative\" as const,\n width: \"100px\",\n height: \"130px\",\n cursor: \"ns-resize\",\n touchAction: \"none\" as const,\n userSelect: \"none\" as const,\n },\n // MobilePercentButtons @media (max-width: 1024px)\n mobilePercentButtons: {\n display: \"flex\",\n flexDirection: \"column\" as const,\n justifyContent: \"space-between\",\n height: \"130px\",\n position: \"absolute\" as const,\n left: \"-38px\",\n top: 0,\n },\n // MobilePercentBtn\n mobilePercentBtn: {\n background: \"rgba(255, 255, 255, 0.05)\",\n border: \"1px solid rgba(255, 255, 255, 0.2)\",\n borderRadius: \"4px\",\n color: \"rgba(255, 255, 255, 0.6)\",\n fontSize: \"0.55rem\",\n padding: \"0.25rem 0.35rem\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n textAlign: \"center\" as const,\n minWidth: \"32px\",\n outline: \"none\",\n WebkitTapHighlightColor: \"transparent\",\n },\n // ConfirmButton @media (max-width: 1024px)\n confirmButton: {\n width: \"100%\",\n padding: \"0.65rem\",\n fontSize: \"0.85rem\",\n fontWeight: 600,\n border: \"none\",\n borderRadius: \"8px\",\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n },\n // SummarySection @media (max-width: 1024px)\n summarySection: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\" as const,\n gap: \"0.4rem\",\n padding: \"0.6rem\",\n background: \"rgba(0, 0, 0, 0.2)\",\n borderRadius: \"8px\",\n marginTop: 0,\n },\n // BoxedSummaryRow @media (max-width: 1024px)\n boxedSummaryRow: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n background: \"transparent\",\n borderRadius: \"6px\",\n padding: \"0.35rem 0.5rem\",\n cursor: \"text\",\n flexWrap: \"nowrap\" as const,\n fontSize: \"0.75rem\",\n },\n // SummaryLabel @media (max-width: 1024px)\n summaryLabel: {\n color: \"rgba(255, 255, 255, 0.6)\",\n fontSize: \"0.7rem\",\n whiteSpace: \"nowrap\" as const,\n },\n // SummaryValue @media (max-width: 1024px)\n summaryValue: {\n color: \"#fff\",\n fontWeight: 500,\n fontSize: \"0.8rem\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.25rem\",\n overflow: \"hidden\",\n flexShrink: 1,\n minWidth: 0,\n },\n // BoxedInput @media (max-width: 1024px)\n boxedInput: {\n background: \"transparent\",\n border: \"none\",\n fontWeight: 600,\n fontSize: \"0.8rem\",\n width: \"50px\",\n textAlign: \"right\" as const,\n outline: \"none\",\n padding: 0,\n flexShrink: 0,\n },\n // InputSuffix @media (max-width: 1024px)\n inputSuffix: {\n fontWeight: 600,\n fontSize: \"0.65rem\",\n marginLeft: \"0.2rem\",\n display: \"inline-flex\",\n alignItems: \"center\",\n lineHeight: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\" as const,\n whiteSpace: \"nowrap\" as const,\n maxWidth: \"80px\",\n },\n // SummaryRow @media (max-width: 1024px)\n summaryRow: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"0.8rem\",\n },\n // OrderTypeToggle @media (max-width: 1024px)\n orderTypeToggle: {\n display: \"flex\",\n backgroundColor: \"rgba(255, 255, 255, 0.05)\",\n borderRadius: \"6px\",\n padding: \"2px\",\n marginBottom: 0,\n width: \"100%\",\n },\n // OrderTypeButton @media (max-width: 1024px)\n orderTypeButton: {\n flex: 1,\n padding: \"0.35rem\",\n fontSize: \"0.7rem\",\n fontWeight: 500,\n border: \"none\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n },\n // AvailableFunds\n availableFunds: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"0.75rem\",\n color: \"rgba(255, 255, 255, 0.5)\",\n },\n // AddFundsButton\n addFundsButton: {\n background: \"none\",\n border: \"none\",\n color: \"#f0b90b\",\n fontSize: \"0.75rem\",\n cursor: \"pointer\",\n padding: 0,\n },\n};\n\nexport function HousePositionSliderMobile({\n tokenId,\n tokenSymbol,\n totalTokens,\n currentPrice,\n availableCash,\n tokensHeld,\n defaultOrderType = \"market\",\n orderbook,\n ownershipPercentOverride,\n onConfirmOrder,\n className,\n ...props\n}: HousePositionSliderMobileProps) {\n const [orderMode, setOrderMode] = React.useState<\"none\" | \"buy\" | \"sell\">(\"none\");\n const [deltaDollars, setDeltaDollars] = React.useState(0);\n const [deltaTokensSell, setDeltaTokensSell] = React.useState(0);\n const [deltaTokensBuy, setDeltaTokensBuy] = React.useState(0);\n const [buyTrackingMode, setBuyTrackingMode] = React.useState<\"dollars\" | \"tokens\">(\"dollars\");\n\n const [orderType, setOrderType] = React.useState<\"market\" | \"limit\">(defaultOrderType);\n const [limitPrice, setLimitPrice] = React.useState(currentPrice);\n const [limitPriceInput, setLimitPriceInput] = React.useState(currentPrice.toFixed(2));\n const [limitPriceDirty, setLimitPriceDirty] = React.useState(false);\n\n const [tokenAmountInput, setTokenAmountInput] = React.useState(\"\");\n\n const houseRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (orderType !== \"limit\") return;\n if (limitPriceDirty) return;\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n }, [orderType, currentPrice, limitPriceDirty]);\n\n const effectivePrice = orderType === \"limit\" ? limitPrice : currentPrice;\n const holdingsValue = tokensHeld * effectivePrice;\n const totalCapacity = holdingsValue + availableCash;\n const baselinePct = totalCapacity > 0 ? (holdingsValue / totalCapacity) * 100 : 0;\n\n let deltaTokens: number;\n let deltaValue: number;\n let targetTokens: number;\n let targetValue: number;\n\n if (orderMode === \"buy\") {\n if (buyTrackingMode === \"tokens\") {\n deltaTokens = deltaTokensBuy;\n deltaValue = deltaTokensBuy * effectivePrice;\n targetTokens = tokensHeld + deltaTokensBuy;\n targetValue = targetTokens * effectivePrice;\n } else {\n deltaValue = deltaDollars;\n deltaTokens = effectivePrice > 0 ? deltaDollars / effectivePrice : 0;\n targetTokens = tokensHeld + deltaTokens;\n targetValue = targetTokens * effectivePrice;\n }\n } else if (orderMode === \"sell\") {\n deltaTokens = deltaTokensSell;\n deltaValue = deltaTokensSell * effectivePrice;\n targetTokens = tokensHeld + deltaTokensSell;\n targetValue = targetTokens * effectivePrice;\n } else {\n deltaTokens = 0;\n deltaValue = 0;\n targetTokens = tokensHeld;\n targetValue = holdingsValue;\n }\n\n const targetPct = totalCapacity > 0 ? (targetValue / totalCapacity) * 100 : 0;\n const isIncrease = orderMode === \"buy\";\n const hasChange = orderMode !== \"none\" && (Math.abs(deltaTokens) > 0.001 || Math.abs(deltaValue) > 0.01);\n const targetOwnership = totalTokens > 0 ? (targetTokens / totalTokens) * 100 : 0;\n const estFeeTokens = effectivePrice > 0 ? (Math.abs(deltaValue) * 0.005) / effectivePrice : 0;\n\n const updateOrderFromTargetValue = React.useCallback(\n (newTargetValue: number) => {\n const newDeltaValue = newTargetValue - holdingsValue;\n if (newDeltaValue > 0.01) {\n const capped = Math.min(newDeltaValue, availableCash);\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(capped);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n } else if (newDeltaValue < -0.01) {\n const newDeltaTokens = effectivePrice > 0 ? newTargetValue / effectivePrice - tokensHeld : 0;\n const capped = Math.max(newDeltaTokens, -tokensHeld);\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(capped);\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n } else {\n setOrderMode(\"none\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n }\n },\n [holdingsValue, availableCash, effectivePrice, tokensHeld]\n );\n\n const updateOrderFromTokenAmount = React.useCallback(\n (tokenAmount: number) => {\n if (tokenAmount > 0) {\n const maxTokens = effectivePrice > 0 ? availableCash / effectivePrice : 0;\n const capped = Math.min(tokenAmount, maxTokens);\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"tokens\");\n setDeltaTokensBuy(capped);\n setDeltaDollars(0);\n setDeltaTokensSell(0);\n } else if (tokenAmount < 0) {\n const capped = Math.max(tokenAmount, -tokensHeld);\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(capped);\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n } else {\n setOrderMode(\"none\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n }\n },\n [effectivePrice, availableCash, tokensHeld]\n );\n\n const handleMarkerClick = React.useCallback(\n (pct: number) => {\n const newTargetValue = (pct / 100) * totalCapacity;\n updateOrderFromTargetValue(newTargetValue);\n },\n [totalCapacity, updateOrderFromTargetValue]\n );\n\n const onMouseDown = React.useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n const move = (ev: MouseEvent) => {\n if (!houseRef.current) return;\n const rect = houseRef.current.getBoundingClientRect();\n const y = ev.clientY - rect.top;\n const pct = clamp(100 - (y / rect.height) * 100, 0, 100);\n const newTargetValue = (pct / 100) * totalCapacity;\n updateOrderFromTargetValue(newTargetValue);\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n },\n [totalCapacity, updateOrderFromTargetValue]\n );\n\n const onTouchStart = React.useCallback(\n (e: React.TouchEvent) => {\n e.preventDefault();\n e.stopPropagation();\n const move = (ev: TouchEvent) => {\n ev.preventDefault();\n ev.stopPropagation();\n if (!houseRef.current) return;\n const rect = houseRef.current.getBoundingClientRect();\n const touch = ev.touches[0];\n const y = touch.clientY - rect.top;\n const pct = clamp(100 - (y / rect.height) * 100, 0, 100);\n const newTargetValue = (pct / 100) * totalCapacity;\n updateOrderFromTargetValue(newTargetValue);\n };\n const up = () => {\n document.removeEventListener(\"touchmove\", move);\n document.removeEventListener(\"touchend\", up);\n };\n document.addEventListener(\"touchmove\", move, { passive: false });\n document.addEventListener(\"touchend\", up);\n },\n [totalCapacity, updateOrderFromTargetValue]\n );\n\n const handleConfirm = () => {\n if (!hasChange || !onConfirmOrder) return;\n onConfirmOrder({\n side: isIncrease ? \"buy\" : \"sell\",\n orderType,\n tokenId,\n tokenSymbol,\n price: effectivePrice,\n deltaTokens: Math.abs(deltaTokens),\n deltaValue: Math.abs(deltaValue),\n targetOwnership,\n targetTokens,\n targetValue,\n });\n setOrderMode(\"none\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n };\n\n // SVG fill calculations\n const rectTop = 10;\n const rectBottom = 150;\n const totalFillableHeight = rectBottom - rectTop;\n const baselineFillHeight = (baselinePct / 100) * totalFillableHeight;\n const targetFillHeight = (targetPct / 100) * totalFillableHeight;\n const baselineFillY = rectBottom - baselineFillHeight;\n const targetFillY = rectBottom - targetFillHeight;\n\n const showIncrease = targetPct > baselinePct;\n const showDecrease = targetPct < baselinePct;\n\n const valueLabel = `${tokenSymbol} OWNED`;\n\n // Border color for boxed rows\n const getBorderColor = () => {\n if (!hasChange) return \"rgba(201, 162, 39, 0.5)\";\n return isIncrease ? \"rgba(14, 203, 129, 0.3)\" : \"rgba(246, 70, 93, 0.3)\";\n };\n\n // Text color for values\n const getValueColor = () => {\n if (!hasChange) return \"#fff\";\n return isIncrease ? \"#0ecb81\" : \"#f6465d\";\n };\n\n return (\n <div\n style={styles.sliderContainer}\n className={className}\n {...props}\n >\n {/* Value Display */}\n <div style={styles.valueDisplay}>\n <div style={styles.valueLabel}>{valueLabel}</div>\n <div style={styles.valueAmount}>\n ${fmt0(targetValue)}\n </div>\n </div>\n\n {/* House Wrapper */}\n <div style={styles.houseWrapper}>\n {/* House Container with Mobile Percent Buttons inside */}\n <div\n ref={houseRef}\n style={styles.houseContainer}\n onMouseDown={onMouseDown}\n onTouchStart={onTouchStart}\n >\n {/* SVG House */}\n <svg viewBox=\"0 0 120 160\" style={{ width: \"100%\", height: \"100%\", overflow: \"visible\" }}>\n <defs>\n <clipPath id=\"mobile-clip\">\n <rect x=\"12\" y=\"12\" width=\"96\" height=\"136\" rx=\"6\" />\n </clipPath>\n <linearGradient id=\"mobileGoldFill\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"rgba(220, 175, 120, 0.7)\" />\n <stop offset=\"100%\" stopColor=\"rgba(220, 175, 120, 0.7)\" />\n </linearGradient>\n <linearGradient id=\"mobileGreenFill\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"rgba(14, 203, 129, 0.5)\" />\n <stop offset=\"100%\" stopColor=\"rgba(14, 203, 129, 0.2)\" />\n </linearGradient>\n <linearGradient id=\"mobileRedFill\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"rgba(246, 70, 93, 0.15)\" />\n <stop offset=\"100%\" stopColor=\"rgba(246, 70, 93, 0.5)\" />\n </linearGradient>\n <filter id=\"mobileGoldGlow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"6\" result=\"blur\" />\n <feFlood floodColor=\"rgba(234, 217, 162, 0.6)\" result=\"color\" />\n <feComposite in=\"color\" in2=\"blur\" operator=\"in\" result=\"glow\" />\n <feMerge>\n <feMergeNode in=\"glow\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n <filter id=\"mobileGreenGlow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"6\" result=\"blur\" />\n <feFlood floodColor=\"rgba(14, 203, 129, 0.6)\" result=\"color\" />\n <feComposite in=\"color\" in2=\"blur\" operator=\"in\" result=\"glow\" />\n <feMerge>\n <feMergeNode in=\"glow\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n <filter id=\"mobileRedGlow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"6\" result=\"blur\" />\n <feFlood floodColor=\"rgba(246, 70, 93, 0.6)\" result=\"color\" />\n <feComposite in=\"color\" in2=\"blur\" operator=\"in\" result=\"glow\" />\n <feMerge>\n <feMergeNode in=\"glow\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n </defs>\n\n {/* Glass background */}\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" fill=\"rgba(255,255,255,0.04)\" />\n\n {/* Fills */}\n <g clipPath=\"url(#mobile-clip)\">\n <rect\n x=\"10\"\n y={showDecrease ? targetFillY : baselineFillY}\n width=\"100\"\n height={showDecrease ? targetFillHeight : baselineFillHeight}\n fill=\"url(#mobileGoldFill)\"\n />\n {showIncrease && (\n <rect\n x=\"10\"\n y={targetFillY}\n width=\"100\"\n height={targetFillHeight - baselineFillHeight}\n fill=\"url(#mobileGreenFill)\"\n />\n )}\n {showDecrease && (\n <rect\n x=\"10\"\n y={baselineFillY}\n width=\"100\"\n height={baselineFillHeight - targetFillHeight}\n fill=\"url(#mobileRedFill)\"\n />\n )}\n <line\n x1=\"12\"\n y1={targetFillY}\n x2=\"108\"\n y2={targetFillY}\n stroke={showIncrease ? \"rgba(14, 203, 129, 1)\" : showDecrease ? \"rgba(246, 70, 93, 1)\" : \"rgba(234, 217, 162, 1)\"}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n filter={showIncrease ? \"url(#mobileGreenGlow)\" : showDecrease ? \"url(#mobileRedGlow)\" : \"url(#mobileGoldGlow)\"}\n />\n </g>\n\n {/* Border with glow */}\n <rect\n x=\"10\"\n y=\"10\"\n width=\"100\"\n height=\"140\"\n rx=\"8\"\n fill=\"none\"\n stroke={showIncrease ? \"rgba(14, 203, 129, 0.6)\" : showDecrease ? \"rgba(246, 70, 93, 0.6)\" : \"rgba(234, 217, 162, 0.6)\"}\n strokeWidth=\"2\"\n filter={showIncrease ? \"url(#mobileGreenGlow)\" : showDecrease ? \"url(#mobileRedGlow)\" : \"url(#mobileGoldGlow)\"}\n />\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" fill=\"none\" stroke=\"rgba(255, 255, 255, 0.1)\" strokeWidth=\"1\" />\n </svg>\n\n {/* Mobile percentage buttons - positioned absolutely inside HouseContainer */}\n <div\n style={styles.mobilePercentButtons}\n onMouseDown={(e) => e.stopPropagation()}\n onTouchStart={(e) => e.stopPropagation()}\n >\n {[100, 50, 25, 0].map((pct) => (\n <button\n key={pct}\n type=\"button\"\n style={styles.mobilePercentBtn}\n onClick={(e) => {\n e.stopPropagation();\n handleMarkerClick(pct);\n }}\n >\n {pct}%\n </button>\n ))}\n </div>\n </div>\n </div>\n\n {/* Confirm Button */}\n <button\n type=\"button\"\n disabled={!hasChange}\n onClick={handleConfirm}\n style={{\n ...styles.confirmButton,\n backgroundColor: !hasChange\n ? \"rgba(255, 255, 255, 0.1)\"\n : isIncrease\n ? \"#0ecb81\"\n : \"#f6465d\",\n color: !hasChange ? \"rgba(255, 255, 255, 0.3)\" : \"#fff\",\n cursor: !hasChange ? \"not-allowed\" : \"pointer\",\n }}\n >\n {!hasChange ? \"Adjust Position\" : isIncrease ? `Buy $${fmt0(deltaValue)}` : `Sell $${fmt0(deltaValue)}`}\n </button>\n\n {/* Summary Section */}\n <div style={styles.summarySection}>\n {/* Est. Buy/Sell row */}\n <div\n style={{\n ...styles.boxedSummaryRow,\n border: `1px solid ${getBorderColor()}`,\n }}\n onClick={(e) => {\n const input = (e.currentTarget as HTMLElement).querySelector(\"input\");\n if (input && e.target !== input) {\n input.focus();\n const len = input.value.length;\n input.setSelectionRange(len, len);\n }\n }}\n >\n <span style={styles.summaryLabel}>{isIncrease ? \"Est. Buy\" : \"Est. Sell\"}</span>\n <span style={styles.summaryValue}>\n <input\n type=\"text\"\n value={tokenAmountInput || Math.abs(deltaTokens).toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setTokenAmountInput(val);\n }}\n onFocus={() => setTokenAmountInput(Math.abs(deltaTokens).toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(tokenAmountInput);\n if (Number.isFinite(num) && num >= 0) {\n const signed = isIncrease || orderMode === \"none\" ? num : -num;\n updateOrderFromTokenAmount(signed);\n }\n setTokenAmountInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n style={{\n ...styles.boxedInput,\n color: getValueColor(),\n }}\n />\n <span style={{ ...styles.inputSuffix, color: getValueColor() }}>{tokenSymbol}</span>\n </span>\n </div>\n\n {/* Price row */}\n <div\n style={{\n ...styles.boxedSummaryRow,\n border: `1px solid ${getBorderColor()}`,\n }}\n onClick={(e) => {\n if (orderType === \"limit\") {\n const input = (e.currentTarget as HTMLElement).querySelector(\"input\");\n if (input && e.target !== input) {\n input.focus();\n const len = input.value.length;\n input.setSelectionRange(len, len);\n }\n }\n }}\n >\n <span style={styles.summaryLabel}>{orderType === \"market\" ? \"Price\" : \"Limit Price\"}</span>\n {orderType === \"market\" ? (\n <span style={{ fontWeight: 600, color: \"rgba(255, 255, 255, 0.6)\", fontSize: \"0.8rem\" }}>Market</span>\n ) : (\n <span style={styles.summaryValue}>\n <input\n type=\"text\"\n value={limitPriceInput}\n onChange={(e) => {\n const input = e.target.value;\n if (input === \"\" || /^[0-9]*\\.?[0-9]*$/.test(input)) {\n setLimitPriceDirty(true);\n setLimitPriceInput(input);\n const num = Number.parseFloat(input);\n if (Number.isFinite(num) && num > 0) setLimitPrice(num);\n }\n }}\n onBlur={() => {\n const num = Number.parseFloat(limitPriceInput);\n if (Number.isFinite(num) && num > 0) {\n setLimitPriceInput(num.toFixed(2));\n setLimitPrice(num);\n } else {\n setLimitPriceInput(limitPrice.toFixed(2));\n }\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n style={{\n ...styles.boxedInput,\n color: getValueColor(),\n }}\n />\n <span style={{ ...styles.inputSuffix, color: getValueColor() }}>USD</span>\n </span>\n )}\n </div>\n\n {/* Est. Fee row */}\n <div style={styles.summaryRow}>\n <span style={styles.summaryLabel}>Est. Fee</span>\n <span style={{ color: \"#fff\", fontWeight: 500, fontSize: \"0.8rem\" }}>\n {estFeeTokens.toFixed(6)} {tokenSymbol}\n </span>\n </div>\n </div>\n\n {/* Order Type Toggle */}\n <div style={styles.orderTypeToggle}>\n <button\n type=\"button\"\n onClick={() => setOrderType(\"market\")}\n style={{\n ...styles.orderTypeButton,\n backgroundColor: orderType === \"market\" ? \"rgba(201, 162, 39, 0.2)\" : \"transparent\",\n color: orderType === \"market\" ? \"#C9A227\" : \"rgba(255, 255, 255, 0.5)\",\n }}\n >\n Market\n </button>\n <button\n type=\"button\"\n onClick={() => setOrderType(\"limit\")}\n style={{\n ...styles.orderTypeButton,\n backgroundColor: orderType === \"limit\" ? \"rgba(201, 162, 39, 0.2)\" : \"transparent\",\n color: orderType === \"limit\" ? \"#C9A227\" : \"rgba(255, 255, 255, 0.5)\",\n }}\n >\n Limit\n </button>\n </div>\n\n {/* Available Funds */}\n <div style={styles.availableFunds}>\n <span>Cash: ${availableCash.toLocaleString()}</span>\n <button type=\"button\" style={styles.addFundsButton}>\n Add Funds\n </button>\n </div>\n </div>\n );\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, token, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tif ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters) && substr(characters, -1, void 0) !== ' ') characters += ' '\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length || (variable === 0 && previous === 47)))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// c(ontainer)\n\t\t\t\t\t\t\t\t\tcase 99:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 3) === 110) break\n\t\t\t\t\t\t\t\t\t// l(ayer)\n\t\t\t\t\t\t\t\t\tcase 108:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 2) === 97) break\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\toffset = 0\n\t\t\t\t\t\t\t\t\t// d(ocument) m(edia) s(upports)\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset) parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\telse parse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599:\n\t\t\treturn WEBKIT + value + value\n\t\t// mask-composite\n\t\tcase 4855:\n\t\t\treturn WEBKIT + value.replace('add', 'source-over').replace('substract', 'source-out').replace('intersect', 'source-in').replace('exclude', 'xor') + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /space-between/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span', 0) ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span', 0) ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch', 0) ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES, NAMESPACE} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case NAMESPACE: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","declare let SC_DISABLE_SPEEDY: boolean | null | undefined;\ndeclare let __VERSION__: string;\n\nimport React from 'react';\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Detect if we're running in a React Server Component environment.\n * RSC environments lack createContext, making this a reliable indicator.\n */\nexport const IS_RSC = typeof React.createContext === 'undefined';\n\nexport const DISABLE_SPEEDY = Boolean(\n typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","import React from 'react';\nimport { IS_RSC } from '../constants';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string | undefined) => {\n if (process.env.NODE_ENV !== 'production') {\n // Skip check in RSC environments where:\n // 1. Components are always module-level (can't be in render functions)\n // 2. Hook detection is unreliable due to different module evaluation context\n if (IS_RSC) {\n return;\n }\n\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n const message =\n `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n \"You may see this warning because you've called styled inside another component.\\n\" +\n 'To resolve this only create new StyledComponents outside of any render method and function component.\\n' +\n 'See https://styled-components.com/docs/basics#define-styled-components-outside-of-the-render-method for more info.\\n';\n\n // If a hook is called outside of a component:\n // React 17 and earlier throw an error\n // React 18 and above use console.error\n\n const originalConsoleError = console.error;\n try {\n let didNotCallInvalidHook = true;\n console.error = (consoleErrorMessage, ...consoleErrorArgs) => {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(consoleErrorMessage)) {\n didNotCallInvalidHook = false;\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n } else {\n originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n }\n };\n // We purposefully call a hook outside of a component and expect it to throw\n // If it doesn't, then we're inside another component.\n // Use useState instead of useRef to avoid importing useRef\n if (typeof React.useState === 'function') {\n React.useState(null);\n }\n\n if (didNotCallInvalidHook && !seen.has(message)) {\n console.warn(message);\n seen.add(message);\n }\n } catch (error) {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test((error as Error).message)) {\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n }\n } finally {\n console.error = originalConsoleError;\n }\n }\n};\n","import { Dict } from '../types';\n\nexport const EMPTY_ARRAY = Object.freeze([]) as Readonly<any[]>;\nexport const EMPTY_OBJECT = Object.freeze({}) as Readonly<Dict<any>>;\n","import { DefaultTheme, ExecutionProps } from '../types';\nimport { EMPTY_OBJECT } from './empties';\n\nexport default function determineTheme(\n props: ExecutionProps,\n providedTheme?: DefaultTheme | undefined,\n defaultProps: { theme?: DefaultTheme | undefined } = EMPTY_OBJECT\n): DefaultTheme | undefined {\n return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n}\n","const elements = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'menu',\n 'meter',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'slot',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'filter',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'switch',\n 'symbol',\n 'text',\n 'textPath',\n 'tspan',\n 'use',\n] as const;\n\nexport default new Set(elements);\nexport type SupportedHTMLElements = (typeof elements)[number];\n","// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string) {\n return str // Replace all possible CSS selectors\n .replace(escapeRegex, '-') // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '');\n}\n","const AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number) => String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number) {\n let name = '';\n let x;\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","export const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string) => {\n let i = x.length;\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i);\n }\n\n return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string) => {\n return phash(SEED, x);\n};\n","import generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default function generateComponentId(str: string) {\n return generateAlphabeticName(hash(str) >>> 0);\n}\n","import { StyledTarget } from '../types';\n\nexport default function getComponentName(target: StyledTarget<any>) {\n return (\n (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n (target as Exclude<StyledTarget<any>, string>).displayName ||\n (target as Function).name ||\n 'Component'\n );\n}\n","import { StyledTarget } from '../types';\n\nexport default function isTag(target: StyledTarget<'web'>): target is string {\n return (\n typeof target === 'string' &&\n (process.env.NODE_ENV !== 'production'\n ? target.charAt(0) === target.charAt(0).toLowerCase()\n : true)\n );\n}\n","import React from 'react';\nimport { AnyComponent } from '../types';\n\nconst hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\n// copied from react-is\nconst REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nconst REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n\n/**\n * Adapted from hoist-non-react-statics to avoid the react-is dependency.\n */\nconst REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true,\n};\n\nconst KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true,\n};\n\nconst FORWARD_REF_STATICS = {\n $$typeof: true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n};\n\nconst MEMO_STATICS = {\n $$typeof: true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true,\n};\n\nconst TYPE_STATICS = {\n [REACT_FORWARD_REF_TYPE]: FORWARD_REF_STATICS,\n [REACT_MEMO_TYPE]: MEMO_STATICS,\n};\n\ntype OmniComponent = AnyComponent;\n\n// adapted from react-is\nfunction isMemo(\n object: OmniComponent | React.MemoExoticComponent<any>\n): object is React.MemoExoticComponent<any> {\n const $$typeofType = 'type' in object && object.type.$$typeof;\n\n return $$typeofType === REACT_MEMO_TYPE;\n}\n\nfunction getStatics(component: OmniComponent) {\n // React v16.11 and below\n if (isMemo(component)) {\n return MEMO_STATICS;\n }\n\n // React v16.12 and above\n return '$$typeof' in component\n ? TYPE_STATICS[component['$$typeof'] as unknown as string]\n : REACT_STATICS;\n}\n\nconst defineProperty = Object.defineProperty;\nconst getOwnPropertyNames = Object.getOwnPropertyNames;\nconst getOwnPropertySymbols = Object.getOwnPropertySymbols;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectPrototype = Object.prototype;\n\ntype ExcludeList = {\n [key: string]: true;\n};\n\nexport type NonReactStatics<S extends OmniComponent, C extends ExcludeList = {}> = {\n [key in Exclude<\n keyof S,\n S extends React.MemoExoticComponent<any>\n ? keyof typeof MEMO_STATICS | keyof C\n : S extends React.ForwardRefExoticComponent<any>\n ? keyof typeof FORWARD_REF_STATICS | keyof C\n : keyof typeof REACT_STATICS | keyof typeof KNOWN_STATICS | keyof C\n >]: S[key];\n};\n\nexport default function hoistNonReactStatics<\n T extends OmniComponent,\n S extends OmniComponent,\n C extends ExcludeList = {},\n>(targetComponent: T, sourceComponent: S, excludelist?: C | undefined) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, excludelist);\n }\n }\n\n let keys: (String | Symbol)[] = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n const targetStatics = getStatics(targetComponent);\n const sourceStatics = getStatics(sourceComponent);\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i] as unknown as string;\n if (\n !(key in KNOWN_STATICS) &&\n !(excludelist && excludelist[key]) &&\n !(sourceStatics && key in sourceStatics) &&\n !(targetStatics && key in targetStatics)\n ) {\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor!);\n } catch (e) {\n /* ignore */\n }\n }\n }\n }\n\n return targetComponent as T & NonReactStatics<S, C>;\n}\n","export default function isFunction(test: any): test is Function {\n return typeof test === 'function';\n}\n","import { StyledComponentBrand } from '../types';\n\nexport default function isStyledComponent(target: any): target is StyledComponentBrand {\n return typeof target === 'object' && 'styledComponentId' in target;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport function joinStrings(a?: string | undefined, b?: string | undefined): string {\n return a && b ? `${a} ${b}` : a || b || '';\n}\n\nexport function joinStringArray(arr: string[], sep?: string | undefined): string {\n if (arr.length === 0) {\n return '';\n }\n\n let result = arr[0];\n for (let i = 1; i < arr.length; i++) {\n result += sep ? sep + arr[i] : arr[i];\n }\n return result;\n}\n","export default function isPlainObject(x: any): x is Record<any, any> {\n return (\n x !== null &&\n typeof x === 'object' &&\n x.constructor.name === Object.name &&\n /* check for reasonable markers that the object isn't an element for react & preact/compat */\n !('props' in x && x.$$typeof)\n );\n}\n","import isPlainObject from './isPlainObject';\n\nfunction mixinRecursively(target: any, source: any, forceMerge = false) {\n /* only merge into POJOs, Arrays, but for top level objects only\n * allow to merge into anything by passing forceMerge = true */\n if (!forceMerge && !isPlainObject(target) && !Array.isArray(target)) {\n return source;\n }\n\n if (Array.isArray(source)) {\n for (let key = 0; key < source.length; key++) {\n target[key] = mixinRecursively(target[key], source[key]);\n }\n } else if (isPlainObject(source)) {\n for (const key in source) {\n target[key] = mixinRecursively(target[key], source[key]);\n }\n }\n\n return target;\n}\n\n/**\n * Arrays & POJOs merged recursively, other objects and value types are overridden\n * If target is not a POJO or an Array, it will get source properties injected via shallow merge\n * Source objects applied left to right. Mutates & returns target. Similar to lodash merge.\n */\nexport default function mixinDeep(target: any, ...sources: any[]) {\n for (const source of sources) {\n mixinRecursively(target, source, true);\n }\n\n return target;\n}\n","/**\n * If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n * cannot have the property changed using a \"=\" assignment operator. If using strict mode, attempting that will cause an error. If not using\n * strict mode, attempting that will be silently ignored.\n *\n * If the Object prototype is frozen, inherited non-writable properties can still be shadowed using one of two mechanisms:\n *\n * 1. ES6 class methods: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#methods\n * 2. Using the `Object.defineProperty()` static method:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n *\n * However, this project uses Babel to transpile ES6 classes, and transforms ES6 class methods to use the assignment operator instead:\n * https://babeljs.io/docs/babel-plugin-transform-class-properties#options\n *\n * Therefore, the most compatible way to shadow the prototype's \"toString\" property is to define a new \"toString\" property on this object.\n */\nexport function setToString(object: object, toStringFn: () => string) {\n Object.defineProperty(object, 'toString', { value: toStringFn });\n}\n","export default {\n '1': 'Cannot create styled-component for component: %s.\\n\\n',\n '2': \"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n- Are you trying to reuse it across renders?\\n- Are you accidentally calling collectStyles twice?\\n\\n\",\n '3': 'Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n',\n '4': 'The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n- Does this error occur on the client and is your target falsy?\\n- Does this error occur on the server and is the sheet falsy?\\n\\n',\n '5': 'The clone method cannot be used on the client!\\n\\n- Are you running in a client-like environment on the server?\\n- Are you trying to run SSR on the client?\\n\\n',\n '6': \"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n- Are you using a custom target that isn't mounted?\\n- Does your document not have a valid head element?\\n- Have you accidentally removed a style tag manually?\\n\\n\",\n '7': 'ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n',\n '8': 'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',\n '9': 'Missing document `<head>`\\n\\n',\n '10': 'Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n',\n '11': '_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n',\n '12': 'It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n',\n '13': '%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n',\n '14': 'ThemeProvider: \"theme\" prop is required.\\n\\n',\n '15': \"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to `<StyleSheetManager stylisPlugins={[]}>`, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",\n '16': \"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",\n '17': \"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\",\n '18': 'ThemeProvider: Please make sure your useTheme hook is within a `<ThemeProvider>`',\n};\n","import { Dict } from '../types';\nimport errorMap from './errors';\n\nconst ERRORS: Dict<any> = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args: [string, ...any]) {\n let a = args[0];\n const b = [];\n\n for (let c = 1, len = args.length; c < len; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(d => {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n code: string | number,\n ...interpolations: any[]\n) {\n if (process.env.NODE_ENV === 'production') {\n return new Error(\n `An error occurred. See https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#${code} for more information.${\n interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n }`\n );\n } else {\n return new Error(format(ERRORS[code], ...interpolations).trim());\n }\n}\n","import { SPLITTER } from '../constants';\nimport styledError from '../utils/error';\nimport { GroupedTag, Tag } from './types';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag) => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nconst DefaultGroupedTag = class DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n length: number;\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number) {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]) {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throw styledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number) {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number) {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n};\n","import styledError from '../utils/error';\n\nconst MAX_SMI = 1 << (31 - 1);\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return groupIDRegister.get(id) as any;\n }\n\n while (reverseRegister.has(nextFreeGroup)) {\n nextFreeGroup++;\n }\n\n const group = nextFreeGroup++;\n\n if (process.env.NODE_ENV !== 'production' && ((group | 0) < 0 || group > MAX_SMI)) {\n throw styledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n // move pointer\n nextFreeGroup = group + 1;\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION, SPLITTER } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n const tag = sheet.getTag();\n const { length } = tag;\n\n let css = '';\n for (let group = 0; group < length; group++) {\n const id = getIdForGroup(group);\n if (id === undefined) continue;\n\n const names = sheet.names.get(id);\n const rules = tag.getGroup(group);\n if (names === undefined || !names.size || rules.length === 0) continue;\n\n const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n let content = '';\n if (names !== undefined) {\n names.forEach(name => {\n if (name.length > 0) {\n content += `${name},`;\n }\n });\n }\n\n // NOTE: It's easier to collect rules and have the marker\n // after the actual rules to simplify the rehydration\n css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n }\n\n return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n const names = content.split(',');\n let name;\n\n for (let i = 0, l = names.length; i < l; i++) {\n if ((name = names[i])) {\n sheet.registerName(id, name);\n }\n }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n const parts = (style.textContent ?? '').split(SPLITTER);\n const rules: string[] = [];\n\n for (let i = 0, l = parts.length; i < l; i++) {\n const part = parts[i].trim();\n if (!part) continue;\n\n const marker = part.match(MARKER_RE);\n\n if (marker) {\n const group = parseInt(marker[1], 10) | 0;\n const id = marker[2];\n\n if (group !== 0) {\n // Rehydrate componentId to group index mapping\n setGroupForId(id, group);\n // Rehydrate names and rules\n // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n rehydrateNamesFromContent(sheet, id, marker[3]);\n sheet.getTag().insertRules(group, rules);\n }\n\n rules.length = 0;\n } else {\n rules.push(part);\n }\n }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n const nodes = document.querySelectorAll(SELECTOR);\n\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = nodes[i] as any as HTMLStyleElement;\n if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n rehydrateSheetFromTag(sheet, node);\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n }\n};\n","declare let __webpack_nonce__: string;\n\nexport default function getNonce() {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n}\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { InsertionTarget } from '../types';\nimport styledError from '../utils/error';\nimport getNonce from '../utils/nonce';\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: InsertionTarget): void | HTMLStyleElement => {\n const arr = Array.from(target.querySelectorAll<HTMLStyleElement>(`style[${SC_ATTR}]`));\n\n return arr[arr.length - 1];\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: InsertionTarget | undefined): HTMLStyleElement => {\n const head = document.head;\n const parent = target || head;\n const style = document.createElement('style');\n const prevStyle = findLastStyleTag(parent);\n const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n const nonce = getNonce();\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n parent.insertBefore(style, nextSibling);\n\n return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n if (tag.sheet) {\n return tag.sheet as any as CSSStyleSheet;\n }\n\n // Avoid Firefox quirk where the style element might not have a sheet property\n const { styleSheets } = document;\n for (let i = 0, l = styleSheets.length; i < l; i++) {\n const sheet = styleSheets[i];\n if (sheet.ownerNode === tag) {\n return sheet as any as CSSStyleSheet;\n }\n }\n\n throw styledError(17);\n};\n","import { InsertionTarget } from '../types';\nimport { getSheet, makeStyleTag } from './dom';\nimport { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions) => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport const CSSOMTag = class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: InsertionTarget | undefined) {\n this.element = makeStyleTag(target);\n\n // Avoid Edge bug where empty style elements don't create sheets\n this.element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(this.element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule && rule.cssText) {\n return rule.cssText;\n } else {\n return '';\n }\n }\n};\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport const TextTag = class TextTag implements Tag {\n element: HTMLStyleElement;\n nodes: NodeListOf<Node>;\n length: number;\n\n constructor(target?: InsertionTarget | undefined) {\n this.element = makeStyleTag(target);\n this.nodes = this.element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string) {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number) {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number) {\n if (index < this.length) {\n return this.nodes[index].textContent as string;\n } else {\n return '';\n }\n }\n};\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport const VirtualTag = class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: InsertionTarget | undefined) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string) {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number) {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number) {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n};\n","import { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { InsertionTarget } from '../types';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { setToString } from '../utils/setToString';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean;\n useCSSOMInjection?: boolean;\n target?: InsertionTarget | undefined;\n};\n\ntype GlobalStylesAllocationMap = {\n [key: string]: number;\n};\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n names: NamesAllocationMap;\n options: SheetOptions;\n server: boolean;\n tag?: GroupedTag | undefined;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT as Object,\n globalStyles: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap | undefined\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names as NamesAllocationMap);\n this.server = !!options.isServer;\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n\n setToString(this, () => outputSheet(this));\n }\n\n rehydrate(): void {\n if (!this.server && IS_BROWSER) {\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag() {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id) as any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set<string>();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id) as any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string | string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id) as any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n}\n","import * as stylis from 'stylis';\nimport { Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { SEED, phash } from './hash';\n\nconst AMP_REGEX = /&/g;\n\n// Character codes for fast comparison\nconst DOUBLE_QUOTE = 34; // \"\nconst SINGLE_QUOTE = 39; // '\nconst SLASH = 47; // /\nconst ASTERISK = 42; // *\nconst BACKSLASH = 92; // \\\nconst OPEN_BRACE = 123; // {\nconst CLOSE_BRACE = 125; // }\nconst SEMICOLON = 59; // ;\nconst NEWLINE = 10; // \\n\nconst OPEN_PAREN = 40; // (\nconst CLOSE_PAREN = 41; // )\n\n/**\n * Strips JS-style line comments (//) from CSS, handling comments anywhere\n * in the line while preserving strings, url() contents, and valid CSS.\n * Optimized with early bail and charCodeAt for performance.\n */\nfunction stripLineComments(css: string): string {\n // Fast path: no // means no line comments\n if (css.indexOf('//') === -1) return css;\n\n const len = css.length;\n const parts: string[] = [];\n let start = 0;\n let i = 0;\n let inString = 0; // 0 = none, DOUBLE_QUOTE or SINGLE_QUOTE when in string\n let urlDepth = 0; // Track nesting depth inside url()\n\n while (i < len) {\n const code = css.charCodeAt(i);\n\n // Track string state\n if (\n (code === DOUBLE_QUOTE || code === SINGLE_QUOTE) &&\n (i === 0 || css.charCodeAt(i - 1) !== BACKSLASH)\n ) {\n if (inString === 0) {\n inString = code;\n } else if (inString === code) {\n inString = 0;\n }\n i++;\n continue;\n }\n\n // Skip string content\n if (inString !== 0) {\n i++;\n continue;\n }\n\n // Track url() context - check for 'url(' (case insensitive via | 32)\n if (\n code === OPEN_PAREN &&\n i >= 3 &&\n (css.charCodeAt(i - 1) | 32) === 108 && // l\n (css.charCodeAt(i - 2) | 32) === 114 && // r\n (css.charCodeAt(i - 3) | 32) === 117 // u\n ) {\n urlDepth = 1;\n i++;\n continue;\n }\n\n // Track nested parentheses inside url()\n if (urlDepth > 0) {\n if (code === CLOSE_PAREN) urlDepth--;\n else if (code === OPEN_PAREN) urlDepth++;\n i++;\n continue;\n }\n\n // Check for line comment (only when not in url())\n if (code === SLASH && i + 1 < len && css.charCodeAt(i + 1) === SLASH) {\n if (i > start) parts.push(css.substring(start, i));\n // Skip to end of line\n while (i < len && css.charCodeAt(i) !== NEWLINE) {\n i++;\n }\n start = i;\n continue;\n }\n\n i++;\n }\n\n // No comments found after indexOf check means // was in a string or url()\n if (start === 0) return css;\n if (start < len) parts.push(css.substring(start));\n return parts.join('');\n}\n\n/**\n * Checks if CSS has unbalanced closing braces that would cause stylis\n * to prematurely close rule blocks.\n * Optimized with early bail and charCodeAt for performance.\n */\nfunction hasUnbalancedBraces(css: string): boolean {\n // Fast path: no closing brace means can't have unbalanced braces\n if (css.indexOf('}') === -1) return false;\n\n const len = css.length;\n let depth = 0;\n let inString = 0; // 0 = none, char code when in string\n let inComment = false;\n\n for (let i = 0; i < len; i++) {\n const code = css.charCodeAt(i);\n\n // Handle CSS comments\n if (inString === 0 && !inComment && code === SLASH && css.charCodeAt(i + 1) === ASTERISK) {\n inComment = true;\n i++;\n continue;\n }\n if (inComment) {\n if (code === ASTERISK && css.charCodeAt(i + 1) === SLASH) {\n inComment = false;\n i++;\n }\n continue;\n }\n\n // Track string state\n if (\n (code === DOUBLE_QUOTE || code === SINGLE_QUOTE) &&\n (i === 0 || css.charCodeAt(i - 1) !== BACKSLASH)\n ) {\n if (inString === 0) {\n inString = code;\n } else if (inString === code) {\n inString = 0;\n }\n continue;\n }\n if (inString !== 0) continue;\n\n // Track brace depth\n if (code === OPEN_BRACE) {\n depth++;\n } else if (code === CLOSE_BRACE) {\n depth--;\n if (depth < 0) return true;\n }\n }\n\n return depth !== 0 || inString !== 0;\n}\n\n/**\n * Sanitizes CSS by removing declarations with unbalanced braces.\n * This contains invalid syntax to just the affected declaration.\n * Optimized with charCodeAt for performance.\n */\nfunction sanitizeCSS(css: string): string {\n // Fast path: valid CSS passes through unchanged\n if (!hasUnbalancedBraces(css)) {\n return css;\n }\n\n const len = css.length;\n let result = '';\n let declStart = 0;\n let braceDepth = 0;\n let inString = 0;\n let inComment = false;\n\n for (let i = 0; i < len; i++) {\n const code = css.charCodeAt(i);\n\n // Handle CSS comments\n if (inString === 0 && !inComment && code === SLASH && css.charCodeAt(i + 1) === ASTERISK) {\n inComment = true;\n i++;\n continue;\n }\n if (inComment) {\n if (code === ASTERISK && css.charCodeAt(i + 1) === SLASH) {\n inComment = false;\n i++;\n }\n continue;\n }\n\n // Track string state\n if (\n (code === DOUBLE_QUOTE || code === SINGLE_QUOTE) &&\n (i === 0 || css.charCodeAt(i - 1) !== BACKSLASH)\n ) {\n if (inString === 0) {\n inString = code;\n } else if (inString === code) {\n inString = 0;\n }\n continue;\n }\n if (inString !== 0) continue;\n\n if (code === OPEN_BRACE) {\n braceDepth++;\n } else if (code === CLOSE_BRACE) {\n braceDepth--;\n\n if (braceDepth < 0) {\n // Extra closing brace - skip to next semicolon or newline\n let skipEnd = i + 1;\n while (skipEnd < len) {\n const skipCode = css.charCodeAt(skipEnd);\n if (skipCode === SEMICOLON || skipCode === NEWLINE) break;\n skipEnd++;\n }\n if (skipEnd < len && css.charCodeAt(skipEnd) === SEMICOLON) skipEnd++;\n\n braceDepth = 0;\n i = skipEnd - 1;\n declStart = skipEnd;\n continue;\n }\n\n if (braceDepth === 0) {\n result += css.substring(declStart, i + 1);\n declStart = i + 1;\n }\n } else if (code === SEMICOLON && braceDepth === 0) {\n result += css.substring(declStart, i + 1);\n declStart = i + 1;\n }\n }\n\n // Add remaining valid content\n if (declStart < len) {\n const remaining = css.substring(declStart);\n if (!hasUnbalancedBraces(remaining)) {\n result += remaining;\n }\n }\n\n return result;\n}\n\nexport type ICreateStylisInstance = {\n options?: { namespace?: string | undefined; prefix?: boolean | undefined } | undefined;\n plugins?: stylis.Middleware[] | undefined;\n};\n\n/**\n * Takes an element and recurses through it's rules added the namespace to the start of each selector.\n * Takes into account media queries by recursing through child rules if they are present.\n */\nfunction recursivelySetNamepace(compiled: stylis.Element[], namespace: String): stylis.Element[] {\n return compiled.map(rule => {\n if (rule.type === 'rule') {\n // add the namespace to the start\n rule.value = `${namespace} ${rule.value}`;\n // add the namespace after each comma for subsequent selectors.\n rule.value = rule.value.replaceAll(',', `,${namespace} `);\n rule.props = (rule.props as string[]).map(prop => {\n return `${namespace} ${prop}`;\n });\n }\n\n if (Array.isArray(rule.children) && rule.type !== '@keyframes') {\n rule.children = recursivelySetNamepace(rule.children, namespace);\n }\n return rule;\n });\n}\n\nexport default function createStylisInstance(\n {\n options = EMPTY_OBJECT as object,\n plugins = EMPTY_ARRAY as unknown as stylis.Middleware[],\n }: ICreateStylisInstance = EMPTY_OBJECT as object\n) {\n let _componentId: string;\n let _selector: string;\n let _selectorRegexp: RegExp;\n\n const selfReferenceReplacer = (match: string, offset: number, string: string) => {\n if (\n /**\n * We only want to refer to the static class directly if the selector is part of a\n * self-reference selector `& + & { color: red; }`\n */\n string.startsWith(_selector) &&\n string.endsWith(_selector) &&\n string.replaceAll(_selector, '').length > 0\n ) {\n return `.${_componentId}`;\n }\n\n return match;\n };\n\n /**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n *\n * https://github.com/thysultan/stylis.js/tree/v4.0.2#abstract-syntax-structure\n */\n const selfReferenceReplacementPlugin: stylis.Middleware = element => {\n if (element.type === stylis.RULESET && element.value.includes('&')) {\n (element.props as string[])[0] = element.props[0]\n // catch any hanging references that stylis missed\n .replace(AMP_REGEX, _selector)\n .replace(_selectorRegexp, selfReferenceReplacer);\n }\n };\n\n const middlewares = plugins.slice();\n\n middlewares.push(selfReferenceReplacementPlugin);\n\n /**\n * Enables automatic vendor-prefixing for styles.\n */\n if (options.prefix) {\n middlewares.push(stylis.prefixer);\n }\n\n middlewares.push(stylis.stringify);\n\n const stringifyRules: Stringifier = (\n css: string,\n selector = '',\n /**\n * This \"prefix\" referes to a _selector_ prefix.\n */\n prefix = '',\n componentId = '&'\n ) => {\n // stylis has no concept of state to be passed to plugins\n // but since JS is single-threaded, we can rely on that to ensure\n // these properties stay in sync with the current stylis run\n _componentId = componentId;\n _selector = selector;\n _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n\n const flatCSS = sanitizeCSS(stripLineComments(css));\n let compiled = stylis.compile(\n prefix || selector ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS\n );\n\n if (options.namespace) {\n compiled = recursivelySetNamepace(compiled, options.namespace);\n }\n\n const stack: string[] = [];\n\n stylis.serialize(\n compiled,\n stylis.middleware(middlewares.concat(stylis.rulesheet(value => stack.push(value))))\n );\n\n return stack;\n };\n\n stringifyRules.hash = plugins.length\n ? plugins\n .reduce((acc, plugin) => {\n if (!plugin.name) {\n throwStyledError(15);\n }\n\n return phash(acc, plugin.name);\n }, SEED)\n .toString()\n : '';\n\n return stringifyRules;\n}\n","import React from 'react';\nimport type stylis from 'stylis';\nimport { IS_RSC } from '../constants';\nimport StyleSheet from '../sheet';\nimport { InsertionTarget, ShouldForwardProp, Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\nexport const mainSheet: StyleSheet = new StyleSheet();\nexport const mainStylis: Stringifier = createStylisInstance();\n\nexport type IStyleSheetContext = {\n shouldForwardProp?: ShouldForwardProp<'web'> | undefined;\n styleSheet: StyleSheet;\n stylis: Stringifier;\n};\n\nconst defaultContextValue: IStyleSheetContext = {\n shouldForwardProp: undefined,\n styleSheet: mainSheet,\n stylis: mainStylis,\n};\n\n// Create context only if createContext is available, otherwise create a fallback\nexport const StyleSheetContext = !IS_RSC\n ? React.createContext<IStyleSheetContext>(defaultContextValue)\n : ({\n Provider: ({ children }: { children: React.ReactNode; value?: IStyleSheetContext }) =>\n children,\n Consumer: ({ children }: { children: (value: IStyleSheetContext) => React.ReactNode }) =>\n children(defaultContextValue),\n } as React.Context<IStyleSheetContext>);\n\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\n\nexport type IStylisContext = Stringifier | void;\nexport const StylisContext = !IS_RSC\n ? React.createContext<IStylisContext>(undefined)\n : ({\n Provider: ({ children }: { children: React.ReactNode; value?: IStylisContext }) => children,\n Consumer: ({ children }: { children: (value: IStylisContext) => React.ReactNode }) =>\n children(undefined),\n } as React.Context<IStylisContext>);\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport function useStyleSheetContext() {\n // Skip useContext if we're in an RSC environment without context support\n return !IS_RSC && React.useContext ? React.useContext(StyleSheetContext) : defaultContextValue;\n}\n\nexport type IStyleSheetManager = React.PropsWithChildren<{\n /**\n * If desired, you can pass this prop to disable \"speedy\" insertion mode, which\n * uses the browser [CSSOM APIs](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet).\n * When disabled, rules are inserted as simple text into style blocks.\n */\n disableCSSOMInjection?: undefined | boolean;\n /**\n * If you are working exclusively with modern browsers, vendor prefixes can often be omitted\n * to reduce the weight of CSS on the page.\n */\n enableVendorPrefixes?: undefined | boolean;\n /**\n * Provide an optional selector to be prepended to all generated style rules.\n */\n namespace?: undefined | string;\n /**\n * Create and provide your own `StyleSheet` if necessary for advanced SSR scenarios.\n */\n sheet?: undefined | StyleSheet;\n /**\n * Starting in v6, styled-components no longer does its own prop validation\n * and recommends use of transient props \"$prop\" to pass style-only props to\n * components. If for some reason you are not able to use transient props, a\n * prop validation function can be provided via `StyleSheetManager`, such as\n * `@emotion/is-prop-valid`.\n *\n * When the return value is `true`, props will be forwarded to the DOM/underlying\n * component. If return value is `false`, the prop will be discarded after styles\n * are calculated.\n *\n * Manually composing `styled.{element}.withConfig({shouldForwardProp})` will\n * override this default.\n */\n shouldForwardProp?: undefined | IStyleSheetContext['shouldForwardProp'];\n /**\n * An array of plugins to be run by stylis (style processor) during compilation.\n * Check out [what's available on npm*](https://www.npmjs.com/search?q=keywords%3Astylis).\n *\n * \\* The plugin(s) must be compatible with stylis v4 or above.\n */\n stylisPlugins?: undefined | stylis.Middleware[];\n /**\n * Provide an alternate DOM node to host generated styles; useful for iframes.\n */\n target?: undefined | InsertionTarget;\n}>;\n\nexport function StyleSheetManager(props: IStyleSheetManager): React.JSX.Element {\n // In RSC environments without context support, StyleSheetManager becomes a no-op\n if (IS_RSC || !React.useMemo) {\n return props.children as React.JSX.Element;\n }\n\n const { styleSheet } = useStyleSheetContext();\n\n const resolvedStyleSheet = React.useMemo(() => {\n let sheet = styleSheet;\n\n if (props.sheet) {\n sheet = props.sheet;\n } else if (props.target) {\n sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n }\n\n if (props.disableCSSOMInjection) {\n sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n }\n\n return sheet;\n }, [props.disableCSSOMInjection, props.sheet, props.target, styleSheet]);\n\n const stylis = React.useMemo(\n () =>\n createStylisInstance({\n options: { namespace: props.namespace, prefix: props.enableVendorPrefixes },\n plugins: props.stylisPlugins,\n }),\n [props.enableVendorPrefixes, props.namespace, props.stylisPlugins]\n );\n\n const styleSheetContextValue = React.useMemo(\n () => ({\n shouldForwardProp: props.shouldForwardProp,\n styleSheet: resolvedStyleSheet,\n stylis,\n }),\n [props.shouldForwardProp, resolvedStyleSheet, stylis]\n );\n\n return (\n <StyleSheetContext.Provider value={styleSheetContextValue}>\n <StylisContext.Provider value={stylis}>{props.children}</StylisContext.Provider>\n </StyleSheetContext.Provider>\n );\n}\n","import StyleSheet from '../sheet';\nimport { Keyframes as KeyframesType, Stringifier } from '../types';\nimport styledError from '../utils/error';\nimport { setToString } from '../utils/setToString';\nimport { mainStylis } from './StyleSheetManager';\n\nexport default class Keyframes implements KeyframesType {\n id: string;\n name: string;\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n\n setToString(this, () => {\n throw styledError(12, String(this.name));\n });\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = mainStylis): void => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n getName(stylisInstance: Stringifier = mainStylis): string {\n return this.name + stylisInstance.hash;\n }\n}\n","import unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any) {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n }\n\n return String(value).trim();\n}\n","const isUpper = (c: string) => c >= 'A' && c <= 'Z';\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\nexport default function hyphenateStyleName(string: string): string {\n let output = '';\n\n for (let i = 0; i < string.length; i++) {\n const c = string[i];\n // Check for CSS variable prefix\n if (i === 1 && c === '-' && string[0] === '-') {\n return string;\n }\n\n if (isUpper(c)) {\n output += '-' + c.toLowerCase();\n } else {\n output += c;\n }\n }\n\n return output.startsWith('ms-') ? '-' + output : output;\n}\n","import Keyframes from '../models/Keyframes';\nimport StyleSheet from '../sheet';\nimport {\n AnyComponent,\n Dict,\n ExecutionContext,\n Interpolation,\n IStyledComponent,\n RuleSet,\n Stringifier,\n StyledObject,\n} from '../types';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { EMPTY_ARRAY } from './empties';\nimport getComponentName from './getComponentName';\nimport hyphenate from './hyphenateStyleName';\nimport isFunction from './isFunction';\nimport isPlainObject from './isPlainObject';\nimport isStatelessFunction from './isStatelessFunction';\nimport isStyledComponent from './isStyledComponent';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = (chunk: any): chunk is undefined | null | false | '' =>\n chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Dict<any>): string[] => {\n const rules = [];\n\n for (const key in obj) {\n const val = obj[key];\n if (!obj.hasOwnProperty(key) || isFalsish(val)) continue;\n\n // @ts-expect-error Property 'isCss' does not exist on type 'any[]'\n if ((Array.isArray(val) && val.isCss) || isFunction(val)) {\n rules.push(`${hyphenate(key)}:`, val, ';');\n } else if (isPlainObject(val)) {\n rules.push(`${key} {`, ...objToCssArray(val), '}');\n } else {\n rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, val)};`);\n }\n }\n\n return rules;\n};\n\nexport default function flatten<Props extends object>(\n chunk: Interpolation<object>,\n executionContext?: (ExecutionContext & Props) | undefined,\n styleSheet?: StyleSheet | undefined,\n stylisInstance?: Stringifier | undefined\n): RuleSet<Props> {\n if (isFalsish(chunk)) {\n return [];\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return [`.${(chunk as unknown as IStyledComponent<'web', any>).styledComponentId}`];\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n const result = chunk(executionContext);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof result === 'object' &&\n !Array.isArray(result) &&\n !(result instanceof Keyframes) &&\n !isPlainObject(result) &&\n result !== null\n ) {\n console.error(\n `${getComponentName(\n chunk as AnyComponent\n )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n );\n }\n\n return flatten<Props>(result, executionContext, styleSheet, stylisInstance);\n } else {\n return [chunk as unknown as IStyledComponent<'web'>];\n }\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet, stylisInstance);\n return [chunk.getName(stylisInstance)];\n } else {\n return [chunk];\n }\n }\n\n /* Handle objects */\n if (isPlainObject(chunk)) {\n return objToCssArray(chunk as StyledObject<Props>);\n }\n\n if (!Array.isArray(chunk)) {\n return [chunk.toString()];\n }\n\n return flatMap(chunk, chunklet =>\n flatten<Props>(chunklet, executionContext, styleSheet, stylisInstance)\n );\n}\n\nfunction flatMap<T, U>(array: T[], transform: (value: T, index: number, array: T[]) => U[]): U[] {\n return Array.prototype.concat.apply(EMPTY_ARRAY, array.map(transform));\n}\n","import isFunction from './isFunction';\n\nexport default function isStatelessFunction(test: any): test is Function {\n return isFunction(test) && !(test.prototype && test.prototype.isReactComponent);\n}\n","import { RuleSet } from '../types';\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\n\nexport default function isStaticRules<Props extends object>(rules: RuleSet<Props>) {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","import { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport { getGroupForId } from '../sheet/GroupIDAllocator';\nimport { ExecutionContext, RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\nimport { joinStringArray, joinStrings } from '../utils/joinStrings';\n\ndeclare const __SERVER__: boolean;\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n baseStyle: ComponentStyle | null | undefined;\n componentId: string;\n isStatic: boolean;\n rules: RuleSet<any>;\n staticRulesId: string;\n\n constructor(rules: RuleSet<any>, componentId: string, baseStyle?: ComponentStyle | undefined) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic =\n process.env.NODE_ENV === 'production' &&\n (baseStyle === undefined || baseStyle.isStatic) &&\n isStaticRules(rules);\n this.componentId = componentId;\n this.baseHash = phash(SEED, componentId);\n this.baseStyle = baseStyle;\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n generateAndInjectStyles(\n executionContext: ExecutionContext,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ): { className: string; css: string } {\n let names = this.baseStyle\n ? this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis).className\n : '';\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(this.componentId, this.staticRulesId)) {\n names = joinStrings(names, this.staticRulesId);\n } else {\n const cssStatic = joinStringArray(\n flatten(this.rules, executionContext, styleSheet, stylis) as string[]\n );\n const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n if (!styleSheet.hasNameForId(this.componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, this.componentId);\n styleSheet.insertRules(this.componentId, name, cssStaticFormatted);\n }\n\n names = joinStrings(names, name);\n this.staticRulesId = name;\n }\n } else {\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < this.rules.length; i++) {\n const partRule = this.rules[i];\n\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule);\n } else if (partRule) {\n const partString = joinStringArray(\n flatten(partRule, executionContext, styleSheet, stylis) as string[]\n );\n // The same value can switch positions in the array, so we include \"i\" in the hash.\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n if (css) {\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(this.componentId, name)) {\n const cssFormatted = stylis(css, `.${name}`, undefined, this.componentId);\n styleSheet.insertRules(this.componentId, name, cssFormatted);\n }\n\n names = joinStrings(names, name);\n }\n }\n\n // Retrieve CSS from Tag for RSC rendering\n const generatedCSS =\n typeof window === 'undefined'\n ? styleSheet.getTag().getGroup(getGroupForId(this.componentId))\n : '';\n\n return { className: names, css: generatedCSS };\n }\n}\n","import React from 'react';\nimport { IS_RSC } from '../constants';\nimport styledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\n// Helper type for the `DefaultTheme` interface that enforces an object type & exclusively allows\n// for typed keys.\ntype DefaultThemeAsObject<T = object> = Record<keyof T, any>;\n\n/**\n * Override DefaultTheme to get accurate typings for your project.\n *\n * ```\n * // create styled-components.d.ts in your project source\n * // if it isn't being picked up, check tsconfig compilerOptions.types\n * import type { CSSProp } from \"styled-components\";\n * import Theme from './theme';\n *\n * type ThemeType = typeof Theme;\n *\n * declare module \"styled-components\" {\n * export interface DefaultTheme extends ThemeType {}\n * }\n *\n * declare module \"react\" {\n * interface DOMAttributes<T> {\n * css?: CSSProp;\n * }\n * }\n * ```\n */\nexport interface DefaultTheme extends DefaultThemeAsObject {}\n\ntype ThemeFn = (outerTheme?: DefaultTheme | undefined) => DefaultTheme;\ntype ThemeArgument = DefaultTheme | ThemeFn;\n\ntype Props = {\n children?: React.ReactNode;\n theme: ThemeArgument;\n};\n\n// Create context only if createContext is available, otherwise create a fallback\nexport const ThemeContext = !IS_RSC\n ? React.createContext<DefaultTheme | undefined>(undefined)\n : ({\n Provider: ({ children }: { children: React.ReactNode; value?: DefaultTheme }) => children,\n Consumer: ({ children }: { children: (theme?: DefaultTheme) => React.ReactNode }) =>\n children(undefined),\n } as React.Context<DefaultTheme | undefined>);\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: DefaultTheme | undefined): DefaultTheme {\n if (!theme) {\n throw styledError(14);\n }\n\n if (isFunction(theme)) {\n const themeFn = theme as ThemeFn;\n const mergedTheme = themeFn(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n throw styledError(7);\n }\n\n return mergedTheme;\n }\n\n if (Array.isArray(theme) || typeof theme !== 'object') {\n throw styledError(8);\n }\n\n return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Returns the current theme (as provided by the closest ancestor `ThemeProvider`.)\n *\n * If no `ThemeProvider` is found, the function will error. If you need access to the theme in an\n * uncertain composition scenario, `React.useContext(ThemeContext)` will not emit an error if there\n * is no `ThemeProvider` ancestor.\n */\nexport function useTheme(): DefaultTheme {\n // Skip useContext if we're in an RSC environment without context support\n const theme = !IS_RSC && React.useContext ? React.useContext(ThemeContext) : undefined;\n\n if (!theme) {\n throw styledError(18);\n }\n\n return theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props): React.JSX.Element | null {\n // In RSC environments without context support, ThemeProvider becomes a no-op\n if (IS_RSC || !React.useContext || !React.useMemo) {\n return props.children as React.JSX.Element | null;\n }\n\n const outerTheme = React.useContext(ThemeContext);\n const themeContext = React.useMemo(\n () => mergeTheme(props.theme, outerTheme),\n [props.theme, outerTheme]\n );\n\n if (!props.children) {\n return null;\n }\n\n return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","import isPropValid from '@emotion/is-prop-valid';\nimport React, { createElement, PropsWithoutRef, Ref } from 'react';\nimport { IS_RSC, SC_VERSION } from '../constants';\nimport type {\n AnyComponent,\n Attrs,\n BaseObject,\n Dict,\n ExecutionContext,\n ExecutionProps,\n IStyledComponent,\n IStyledComponentFactory,\n IStyledStatics,\n OmitNever,\n RuleSet,\n StyledOptions,\n WebTarget,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport domElements from '../utils/domElements';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport hoist from '../utils/hoist';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport { joinStrings } from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport { setToString } from '../utils/setToString';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheetContext } from './StyleSheetManager';\nimport { DefaultTheme, ThemeContext } from './ThemeProvider';\n\nconst identifiers: { [key: string]: number } = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(\n displayName?: string | undefined,\n parentComponentId?: string | undefined\n): string {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useInjectedStyle<T extends ExecutionContext>(\n componentStyle: ComponentStyle,\n resolvedAttrs: T\n): { className: string; css: string } {\n const ssc = useStyleSheetContext();\n\n const result = componentStyle.generateAndInjectStyles(resolvedAttrs, ssc.styleSheet, ssc.stylis);\n\n if (process.env.NODE_ENV !== 'production' && React.useDebugValue) {\n React.useDebugValue(result.className);\n }\n\n return result;\n}\n\nfunction resolveContext<Props extends BaseObject>(\n attrs: Attrs<React.HTMLAttributes<Element> & Props>[],\n props: ExecutionProps & Props,\n theme: DefaultTheme\n): React.HTMLAttributes<Element> & ExecutionContext & Props {\n const context: React.HTMLAttributes<Element> & ExecutionContext & Props = {\n ...props,\n // unset, add `props.className` back at the end so props always \"wins\"\n className: undefined,\n theme,\n } as React.HTMLAttributes<Element> & ExecutionContext & Props;\n\n let attrDef;\n\n for (let i = 0; i < attrs.length; i += 1) {\n attrDef = attrs[i];\n const resolvedAttrDef = isFunction(attrDef) ? attrDef(context) : attrDef;\n\n for (const key in resolvedAttrDef) {\n if (key === 'className') {\n context.className = joinStrings(context.className, resolvedAttrDef[key] as string);\n } else if (key === 'style') {\n context.style = { ...context.style, ...(resolvedAttrDef[key] as React.CSSProperties) };\n } else {\n // @ts-expect-error attrs can dynamically add arbitrary properties\n context[key] = resolvedAttrDef[key];\n }\n }\n }\n\n if ('className' in props && typeof props.className === 'string') {\n context.className = joinStrings(context.className, props.className);\n }\n\n return context;\n}\n\nlet seenUnknownProps = new Set();\n\nfunction useStyledComponentImpl<Props extends BaseObject>(\n forwardedComponent: IStyledComponent<'web', Props>,\n props: ExecutionProps & Props,\n forwardedRef: Ref<Element>\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n const contextTheme = React.useContext ? React.useContext(ThemeContext) : undefined;\n const ssc = useStyleSheetContext();\n const shouldForwardProp = forwardedComponent.shouldForwardProp || ssc.shouldForwardProp;\n\n if (process.env.NODE_ENV !== 'production' && React.useDebugValue) {\n React.useDebugValue(styledComponentId);\n }\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, contextTheme, defaultProps) || EMPTY_OBJECT;\n\n const context = resolveContext<Props>(componentAttrs, props, theme);\n const elementToBeCreated: WebTarget = context.as || target;\n const propsForElement: Dict<any> = {};\n\n for (const key in context) {\n // @ts-expect-error context may have arbitrary properties from attrs\n if (context[key] === undefined) {\n // Omit undefined values from props passed to wrapped element.\n // This enables using .attrs() to remove props, for example.\n } else if (key[0] === '$' || key === 'as' || (key === 'theme' && context.theme === theme)) {\n // Omit transient props and execution props.\n } else if (key === 'forwardedAs') {\n propsForElement.as = context.forwardedAs;\n } else if (!shouldForwardProp || shouldForwardProp(key, elementToBeCreated)) {\n // @ts-expect-error context may have arbitrary properties from attrs\n propsForElement[key] = context[key];\n\n if (\n !shouldForwardProp &&\n process.env.NODE_ENV === 'development' &&\n !isPropValid(key) &&\n !seenUnknownProps.has(key) &&\n // Only warn on DOM Element.\n domElements.has(elementToBeCreated as any)\n ) {\n seenUnknownProps.add(key);\n console.warn(\n `styled-components: it looks like an unknown prop \"${key}\" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via \\`<StyleSheetManager shouldForwardProp={...}>\\` (connect an API like \\`@emotion/is-prop-valid\\`) or consider using transient props (\\`$\\` prefix for automatic filtering.)`\n );\n }\n }\n }\n\n const { className: generatedClassName, css } = useInjectedStyle(componentStyle, context);\n\n if (process.env.NODE_ENV !== 'production' && forwardedComponent.warnTooManyClasses) {\n forwardedComponent.warnTooManyClasses(generatedClassName);\n }\n\n let classString = joinStrings(foldedComponentIds, styledComponentId);\n if (generatedClassName) {\n classString += ' ' + generatedClassName;\n }\n if (context.className) {\n classString += ' ' + context.className;\n }\n\n propsForElement[\n // handle custom elements which React doesn't properly alias\n isTag(elementToBeCreated) &&\n !domElements.has(elementToBeCreated as Extract<typeof domElements, string>)\n ? 'class'\n : 'className'\n ] = classString;\n\n // forwardedRef is coming from React.forwardRef.\n // But it might not exist. Since React 19 handles `ref` like a prop, it only define it if there is a value.\n // We don't want to inject an empty ref.\n if (forwardedRef) {\n propsForElement.ref = forwardedRef;\n }\n\n const element = createElement(elementToBeCreated, propsForElement);\n\n // RSC mode: output style tag alongside element\n // React 19's style hoisting will deduplicate by href and move to <head>\n if (IS_RSC && css) {\n return React.createElement(\n React.Fragment,\n null,\n React.createElement('style', {\n precedence: 'styled-components',\n href: `sc-${styledComponentId}-${generatedClassName}`,\n children: css,\n }),\n element\n );\n }\n\n return element;\n}\n\nfunction createStyledComponent<\n Target extends WebTarget,\n OuterProps extends BaseObject,\n Statics extends BaseObject = BaseObject,\n>(\n target: Target,\n options: StyledOptions<'web', OuterProps>,\n rules: RuleSet<OuterProps>\n): ReturnType<IStyledComponentFactory<'web', Target, OuterProps, Statics>> {\n const isTargetStyledComp = isStyledComponent(target);\n const styledComponentTarget = target as IStyledComponent<'web', OuterProps>;\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && styledComponentTarget.attrs\n ? styledComponentTarget.attrs.concat(attrs as unknown as Attrs<OuterProps>[]).filter(Boolean)\n : (attrs as Attrs<OuterProps>[]);\n\n let { shouldForwardProp } = options;\n\n if (isTargetStyledComp && styledComponentTarget.shouldForwardProp) {\n const shouldForwardPropFn = styledComponentTarget.shouldForwardProp;\n\n if (options.shouldForwardProp) {\n const passedShouldForwardPropFn = options.shouldForwardProp;\n\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, elementToBeCreated) =>\n shouldForwardPropFn(prop, elementToBeCreated) &&\n passedShouldForwardPropFn(prop, elementToBeCreated);\n } else {\n shouldForwardProp = shouldForwardPropFn;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? (styledComponentTarget.componentStyle as ComponentStyle) : undefined\n );\n\n function forwardRefRender(\n props: PropsWithoutRef<ExecutionProps & OuterProps>,\n ref: Ref<Element>\n ) {\n return useStyledComponentImpl<OuterProps>(\n WrappedStyledComponent,\n props as ExecutionProps & OuterProps,\n ref\n );\n }\n\n forwardRefRender.displayName = displayName;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent = React.forwardRef(forwardRefRender) as unknown as IStyledComponent<\n 'web',\n any\n > &\n Statics;\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? joinStrings(styledComponentTarget.foldedComponentIds, styledComponentTarget.styledComponentId)\n : '';\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp ? styledComponentTarget.target : target;\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, styledComponentTarget.defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n setToString(WrappedStyledComponent, () => `.${WrappedStyledComponent.styledComponentId}`);\n\n if (isCompositeComponent) {\n const compositeComponentTarget = target as AnyComponent;\n\n hoist<typeof WrappedStyledComponent, typeof compositeComponentTarget>(\n WrappedStyledComponent,\n compositeComponentTarget,\n {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n } as { [key in keyof OmitNever<IStyledStatics<'web', OuterProps>>]: true }\n );\n }\n\n return WrappedStyledComponent;\n}\n\nexport default createStyledComponent;\n","import { StyledTarget } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(target: StyledTarget<any>) {\n return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","import { Dict } from '../types';\n\nexport const LIMIT = 200;\n\nexport default (displayName: string, componentId: string) => {\n let generatedClasses: Dict<any> = {};\n let warningSeen = false;\n\n return (className: string) => {\n if (!warningSeen) {\n generatedClasses[className] = true;\n if (Object.keys(generatedClasses).length >= LIMIT) {\n // Unable to find latestRule in test environment.\n\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n\n console.warn(\n `Over ${LIMIT} classes were generated for component ${displayName}${parsedIdString}.\\n` +\n 'Consider using the attrs method, together with a style object for frequently changed styles.\\n' +\n 'Example:\\n' +\n ' const Component = styled.div.attrs(props => ({\\n' +\n ' style: {\\n' +\n ' background: props.background,\\n' +\n ' },\\n' +\n ' }))`width: 100%;`\\n\\n' +\n ' <Component />'\n );\n warningSeen = true;\n generatedClasses = {};\n }\n }\n };\n};\n","import { Interpolation } from '../types';\n\nexport default function interleave<Props extends object>(\n strings: readonly string[],\n interpolations: Interpolation<Props>[]\n): Interpolation<Props>[] {\n const result: Interpolation<Props>[] = [strings[0]];\n\n for (let i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n}\n","import {\n BaseObject,\n Interpolation,\n NoInfer,\n RuleSet,\n StyledObject,\n StyleFunction,\n Styles,\n} from '../types';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport flatten from '../utils/flatten';\nimport interleave from '../utils/interleave';\nimport isFunction from '../utils/isFunction';\nimport isPlainObject from '../utils/isPlainObject';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = <T extends RuleSet<any>>(arg: T): T & { isCss: true } =>\n Object.assign(arg, { isCss: true } as const);\n\nfunction css(styles: Styles<object>, ...interpolations: Interpolation<object>[]): RuleSet<object>;\nfunction css<Props extends object>(\n styles: Styles<NoInfer<Props>>,\n ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>>;\nfunction css<Props extends object = BaseObject>(\n styles: Styles<NoInfer<Props>>,\n ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>> {\n if (isFunction(styles) || isPlainObject(styles)) {\n const styleFunctionOrObject = styles as StyleFunction<Props> | StyledObject<Props>;\n\n return addTag(\n flatten<Props>(\n interleave<Props>(EMPTY_ARRAY, [\n styleFunctionOrObject,\n ...interpolations,\n ]) as Interpolation<object>\n )\n );\n }\n\n const styleStringArray = styles as TemplateStringsArray;\n\n if (\n interpolations.length === 0 &&\n styleStringArray.length === 1 &&\n typeof styleStringArray[0] === 'string'\n ) {\n return flatten<Props>(styleStringArray);\n }\n\n return addTag(\n flatten<Props>(interleave<Props>(styleStringArray, interpolations) as Interpolation<object>)\n );\n}\n\nexport default css;\n","import {\n Attrs,\n BaseObject,\n ExecutionProps,\n Interpolation,\n IStyledComponent,\n IStyledComponentFactory,\n KnownTarget,\n NoInfer,\n Runtime,\n StyledOptions,\n StyledTarget,\n Styles,\n Substitute,\n} from '../types';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport styledError from '../utils/error';\nimport css from './css';\n\ntype AttrsResult<T extends Attrs<any>> = T extends (...args: any) => infer P\n ? P extends object\n ? P\n : never\n : T extends object\n ? T\n : never;\n\n/**\n * Based on Attrs being a simple object or function that returns\n * a prop object, inspect the attrs result and attempt to extract\n * any \"as\" prop usage to modify the runtime target.\n */\ntype AttrsTarget<\n R extends Runtime,\n T extends Attrs<any>,\n FallbackTarget extends StyledTarget<R>,\n Result extends ExecutionProps = AttrsResult<T>,\n> = Result extends { as: infer RuntimeTarget }\n ? RuntimeTarget extends KnownTarget\n ? RuntimeTarget\n : FallbackTarget\n : FallbackTarget;\n\nexport interface Styled<\n R extends Runtime,\n Target extends StyledTarget<R>,\n OuterProps extends object,\n OuterStatics extends object = BaseObject,\n> {\n <Props extends object = BaseObject, Statics extends object = BaseObject>(\n initialStyles: Styles<Substitute<OuterProps, NoInfer<Props>>>,\n ...interpolations: Interpolation<Substitute<OuterProps, NoInfer<Props>>>[]\n ): IStyledComponent<R, Substitute<OuterProps, Props>> &\n OuterStatics &\n Statics &\n (R extends 'web'\n ? Target extends string\n ? {}\n : Omit<Target, keyof React.Component<any>>\n : {});\n\n attrs: <\n Props extends object = BaseObject,\n PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n >(\n attrs: PrivateAttrsArg\n ) => Styled<\n R,\n PrivateResolvedTarget,\n PrivateResolvedTarget extends KnownTarget\n ? Substitute<\n Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n Props\n >\n : PrivateMergedProps,\n OuterStatics\n >;\n\n withConfig: (config: StyledOptions<R, OuterProps>) => Styled<R, Target, OuterProps, OuterStatics>;\n}\n\nexport default function constructWithOptions<\n R extends Runtime,\n Target extends StyledTarget<R>,\n OuterProps extends object = Target extends KnownTarget\n ? React.ComponentPropsWithRef<Target>\n : BaseObject,\n OuterStatics extends object = BaseObject,\n>(\n componentConstructor: IStyledComponentFactory<R, StyledTarget<R>, object, any>,\n tag: StyledTarget<R>,\n options: StyledOptions<R, OuterProps> = EMPTY_OBJECT\n): Styled<R, Target, OuterProps, OuterStatics> {\n /**\n * We trust that the tag is a valid component as long as it isn't\n * falsish. Typically the tag here is a string or function (i.e.\n * class or pure function component), however a component may also be\n * an object if it uses another utility, e.g. React.memo. React will\n * output an appropriate warning however if the `tag` isn't valid.\n */\n if (!tag) {\n throw styledError(1, tag);\n }\n\n /* This is callable directly as a template function */\n const templateFunction = <Props extends object = BaseObject, Statics extends object = BaseObject>(\n initialStyles: Styles<Substitute<OuterProps, Props>>,\n ...interpolations: Interpolation<Substitute<OuterProps, Props>>[]\n ) =>\n componentConstructor<Substitute<OuterProps, Props>, Statics>(\n tag,\n options as StyledOptions<R, Substitute<OuterProps, Props>>,\n css<Substitute<OuterProps, Props>>(initialStyles, ...interpolations)\n );\n\n /**\n * Attrs allows for accomplishing two goals:\n *\n * 1. Backfilling props at runtime more expressively than defaultProps\n * 2. Amending the prop interface of a wrapped styled component\n */\n templateFunction.attrs = <\n Props extends object = BaseObject,\n PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n >(\n attrs: PrivateAttrsArg\n ) =>\n constructWithOptions<\n R,\n PrivateResolvedTarget,\n PrivateResolvedTarget extends KnownTarget\n ? Substitute<\n Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n Props\n >\n : PrivateMergedProps,\n OuterStatics\n >(componentConstructor, tag, {\n ...options,\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n });\n\n /**\n * If config methods are called, wrap up a new template function\n * and merge options.\n */\n templateFunction.withConfig = (config: StyledOptions<R, OuterProps>) =>\n constructWithOptions<R, Target, OuterProps, OuterStatics>(componentConstructor, tag, {\n ...options,\n ...config,\n });\n\n return templateFunction;\n}\n","import * as React from 'react';\nimport createStyledComponent from '../models/StyledComponent';\nimport { BaseObject, KnownTarget, WebTarget } from '../types';\nimport domElements, { SupportedHTMLElements } from '../utils/domElements';\nimport constructWithOptions, { Styled as StyledInstance } from './constructWithOptions';\n\nconst baseStyled = <Target extends WebTarget, InjectedProps extends object = BaseObject>(\n tag: Target\n) =>\n constructWithOptions<\n 'web',\n Target,\n Target extends KnownTarget ? React.ComponentPropsWithRef<Target> & InjectedProps : InjectedProps\n >(createStyledComponent, tag);\n\nconst styled = baseStyled as typeof baseStyled & {\n [E in SupportedHTMLElements]: StyledInstance<'web', E, React.JSX.IntrinsicElements[E]>;\n};\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n // @ts-expect-error some react typing bs\n styled[domElement] = baseStyled<typeof domElement>(domElement);\n});\n\nexport default styled;\nexport { StyledInstance };\n\n/**\n * This is the type of the `styled` HOC.\n */\nexport type Styled = typeof styled;\n\n/**\n * Use this higher-order type for scenarios where you are wrapping `styled`\n * and providing extra props as a third-party library.\n */\nexport type LibraryStyled<LibraryProps extends object = BaseObject> = <Target extends WebTarget>(\n tag: Target\n) => typeof baseStyled<Target, LibraryProps>;\n","import Keyframes from '../models/Keyframes';\nimport { Interpolation, Styles } from '../types';\nimport generateComponentId from '../utils/generateComponentId';\nimport { joinStringArray } from '../utils/joinStrings';\nimport css from './css';\n\nexport default function keyframes<Props extends object = {}>(\n strings: Styles<Props>,\n ...interpolations: Array<Interpolation<Props>>\n): Keyframes {\n /* Warning if you've used keyframes on React Native */\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n ) {\n console.warn(\n '`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.'\n );\n }\n\n const rules = joinStringArray(css<Props>(strings, ...interpolations) as string[]);\n const name = generateComponentId(rules);\n return new Keyframes(name, rules);\n}\n","/* Import singletons */\nimport { SC_ATTR, SC_VERSION } from './constants';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport css from './constructors/css';\nimport keyframes from './constructors/keyframes';\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n/* Import hooks */\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport {\n IStyleSheetContext,\n IStyleSheetManager,\n IStylisContext,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n} from './models/StyleSheetManager';\n/* Import components */\nimport ThemeProvider, { ThemeConsumer, ThemeContext, useTheme } from './models/ThemeProvider';\nimport isStyledComponent from './utils/isStyledComponent';\n\n/* Warning if you've imported this file on React Native */\nif (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n) {\n console.warn(\n `It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native`\n );\n}\n\nconst windowGlobalKey = `__sc-${SC_ATTR}__`;\n\n/* Warning if there are several instances of styled-components */\nif (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined'\n) {\n // @ts-expect-error dynamic key not in window object\n window[windowGlobalKey] ||= 0;\n\n // @ts-expect-error dynamic key not in window object\n if (window[windowGlobalKey] === 1) {\n console.warn(\n `It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://styled-components.com/docs/faqs#why-am-i-getting-a-warning-about-several-instances-of-module-on-the-page for more info.`\n );\n }\n\n // @ts-expect-error dynamic key not in window object\n window[windowGlobalKey] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport { Attrs, DefaultTheme, ShouldForwardProp } from './types';\nexport {\n IStyleSheetContext,\n IStyleSheetManager,\n IStylisContext,\n ServerStyleSheet,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n ThemeConsumer,\n ThemeContext,\n ThemeProvider,\n createGlobalStyle,\n css,\n isStyledComponent,\n keyframes,\n useTheme,\n SC_VERSION as version,\n withTheme,\n};\n","import * as React from \"react\";\nimport styled, { keyframes, css } from \"styled-components\";\n\nconst pulse = keyframes`\n 0%, 100% {\n opacity: 0.45;\n transform: scale(1);\n }\n 50% {\n opacity: 0.7;\n transform: scale(1.08);\n }\n`;\n\nconst shimmer = keyframes`\n 0% {\n background-position: -100% 0;\n }\n 100% {\n background-position: 200% 0;\n }\n`;\n\nconst LogoContainer = styled.span<{ $isGlowing?: boolean }>`\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.35rem 0.6rem;\n background: linear-gradient(\n 135deg,\n rgba(240, 185, 11, 0.05) 0%,\n rgba(240, 185, 11, 0.1) 50%,\n rgba(240, 185, 11, 0.05) 100%\n );\n border: 1px solid rgba(240, 185, 11, 0.3);\n border-radius: 5px;\n position: relative;\n overflow: visible;\n cursor: pointer;\n transition: all 0.3s ease;\n line-height: 1.4;\n\n ${({ $isGlowing }) =>\n $isGlowing\n ? css`\n border-color: rgba(240, 185, 11, 1);\n box-shadow:\n 0 0 25px rgba(240, 185, 11, 0.8),\n 0 0 40px rgba(240, 185, 11, 0.5),\n inset 0 0 20px rgba(240, 185, 11, 0.3);\n background: linear-gradient(\n 135deg,\n rgba(240, 185, 11, 0.2) 0%,\n rgba(240, 185, 11, 0.3) 50%,\n rgba(240, 185, 11, 0.2) 100%\n );\n animation: quickPulse 0.35s ease-out;\n\n @keyframes quickPulse {\n 0% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.05);\n }\n 100% {\n transform: scale(1);\n }\n }\n `\n : null}\n\n @media (max-width: 768px) {\n padding: 0.3rem 0.4rem 0.3rem 0.25rem;\n gap: 0.25rem;\n border-radius: 4px;\n transition: none;\n }\n\n @media (max-width: 480px) {\n padding: 0.2rem 0.3rem 0.2rem 0.2rem;\n gap: 0.2rem;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n border-color: rgba(240, 185, 11, 0.6);\n background: linear-gradient(\n 135deg,\n rgba(240, 185, 11, 0.1) 0%,\n rgba(240, 185, 11, 0.15) 50%,\n rgba(240, 185, 11, 0.1) 100%\n );\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(240, 185, 11, 0.2);\n }\n }\n\n &::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(90deg, transparent, rgba(240, 185, 11, 0.1), transparent);\n background-size: 200% 100%;\n animation: ${shimmer} 3s infinite;\n pointer-events: none;\n }\n`;\n\nconst IconWrapper = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 16px;\n height: 16px;\n\n @media (max-width: 480px) {\n width: 14px;\n height: 14px;\n }\n`;\n\nconst IconCircle = styled.span<{ size: number; color: string; duration: number; delay: number }>`\n position: absolute;\n width: ${({ size }) => size}px;\n height: ${({ size }) => size}px;\n border: 2px solid ${({ color }) => color};\n border-radius: 50%;\n animation: ${pulse} ${({ duration }) => duration}s infinite cubic-bezier(0.4, 0, 0.6, 1);\n animation-delay: ${({ delay }) => delay}s;\n transform-origin: center;\n will-change: transform, opacity;\n`;\n\nconst IconCore = styled.span`\n width: 5px;\n height: 5px;\n background: linear-gradient(135deg, #0ecb81 0%, #2ecc71 100%);\n border-radius: 50%;\n box-shadow: 0 0 6px rgba(14, 203, 129, 0.6);\n position: relative;\n z-index: 1;\n`;\n\nconst LogoText = styled.span`\n display: inline-flex;\n align-items: center;\n gap: 0.2rem;\n position: relative;\n z-index: 1;\n`;\n\nconst LoafLogoImage = styled.img`\n height: 20px;\n position: relative;\n z-index: 1;\n\n @media (max-width: 480px) {\n height: 18px;\n }\n`;\n\nconst LiquidityText = styled.span`\n font-size: 0.65rem;\n font-weight: 400;\n background: linear-gradient(135deg, #f0b90b 0%, #ffd700 50%, #f0b90b 100%);\n background-size: 200% auto;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n letter-spacing: 0.3px;\n opacity: 0.75;\n line-height: 1;\n\n @media (max-width: 480px) {\n font-size: 0.55rem;\n letter-spacing: 0.1px;\n }\n`;\n\nexport interface LoafLiquidityBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n isGlowing?: boolean;\n}\n\nexport const LoafLiquidityBadge = React.forwardRef<HTMLSpanElement, LoafLiquidityBadgeProps>(\n ({ className, isGlowing, onClick, children, ...props }, ref) => {\n return (\n <LogoContainer\n ref={ref}\n onClick={onClick}\n $isGlowing={isGlowing}\n className={className}\n role={onClick ? \"button\" : undefined}\n {...props}\n >\n <LogoText>\n <LoafLogoImage src=\"/Loaf-logo-Banner.png\" alt=\"Loaf\" />\n <LiquidityText>{children ?? \"Liquidity\"}</LiquidityText>\n </LogoText>\n <IconWrapper>\n <IconCore />\n <IconCircle size={10} color=\"rgba(14, 203, 129, 0.5)\" duration={4} delay={0} />\n <IconCircle size={13} color=\"rgba(14, 203, 129, 0.35)\" duration={5.2} delay={0.7} />\n <IconCircle size={16} color=\"rgba(14, 203, 129, 0.25)\" duration={6.3} delay={1.3} />\n </IconWrapper>\n </LogoContainer>\n );\n }\n);\n\nLoafLiquidityBadge.displayName = \"LoafLiquidityBadge\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\nimport { LoafLiquidityBadge } from \"./loaf-liquidity-badge\";\n\nexport type OrderbookSide = \"ask\" | \"bid\";\n\nexport type OrderbookLevel = {\n price: number;\n amount: number;\n depth?: number;\n};\n\nexport type OrderbookTrade = {\n type: \"buy\" | \"sell\";\n price: number;\n amount: number;\n time?: string;\n tradeId?: number;\n};\n\nexport interface OrderbookProps extends React.HTMLAttributes<HTMLDivElement> {\n asks: OrderbookLevel[];\n bids: OrderbookLevel[];\n midPrice: number;\n midChangePercent?: number;\n trades?: OrderbookTrade[];\n priceLabel?: string;\n amountLabel?: string;\n precision?: number;\n amountPrecision?: number;\n defaultTab?: \"orderbook\" | \"trades\";\n onTabChange?: (tab: \"orderbook\" | \"trades\") => void;\n rightHeader?: React.ReactNode;\n variant?: \"auto\" | \"default\" | \"compact\";\n}\n\nfunction useViewportCompact(breakpoint: number) {\n const [isCompact, setIsCompact] = React.useState(false);\n\n React.useEffect(() => {\n if (typeof window === \"undefined\") return;\n const check = () => setIsCompact(window.innerWidth <= breakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [breakpoint]);\n\n return isCompact;\n}\n\nconst formatNumber = (value: number, precision: number) => value.toFixed(precision);\n\nfunction DepthRow({\n side,\n price,\n amount,\n depthPct,\n precision,\n amountPrecision,\n}: {\n side: OrderbookSide;\n price: number;\n amount: number;\n depthPct: number;\n precision: number;\n amountPrecision: number;\n}) {\n const isAsk = side === \"ask\";\n\n return (\n <div className=\"relative grid grid-cols-2 items-center gap-3 px-3 py-1.5\">\n <div\n className={cn(\n \"absolute inset-y-0 right-0\",\n isAsk ? \"bg-rose-900/30\" : \"bg-emerald-900/30\"\n )}\n style={{ width: `${clamp(depthPct, 0, 100)}%` }}\n />\n\n <div className={cn(\"relative z-[1] tabular-nums\", isAsk ? \"text-[#f6465d]\" : \"text-[#0ecb81]\")}\n >\n ${formatNumber(price, precision)}\n </div>\n <div className=\"relative z-[1] text-right tabular-nums text-white/90\">{formatNumber(amount, amountPrecision)}</div>\n </div>\n );\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\nconst LEVEL_ROWS_VISIBLE = 6;\nconst DEPTH_ROW_HEIGHT_PX = 34;\nconst COMPACT_ROWS_VISIBLE = 5;\nconst COMPACT_ROW_HEIGHT_PX = 30;\nconst COMPACT_BREAKPOINT_PX = 1024;\n\nexport const Orderbook = React.forwardRef<HTMLDivElement, OrderbookProps>(\n (\n {\n asks,\n bids,\n midPrice,\n midChangePercent,\n trades = [],\n priceLabel = \"Price (USD)\",\n amountLabel = \"Amount\",\n precision = 2,\n amountPrecision = 2,\n defaultTab = \"orderbook\",\n onTabChange,\n rightHeader = <LoafLiquidityBadge className=\"text-[0.6rem]\" />,\n variant = \"auto\",\n className,\n ...props\n },\n ref\n ) => {\n const [tab, setTab] = React.useState<\"orderbook\" | \"trades\">(defaultTab);\n const [tradeFilter, setTradeFilter] = React.useState<\"all\" | \"buy\" | \"sell\">(\"all\");\n const viewportCompact = useViewportCompact(COMPACT_BREAKPOINT_PX);\n\n React.useEffect(() => {\n setTab(defaultTab);\n }, [defaultTab]);\n\n const handleTab = (next: \"orderbook\" | \"trades\") => {\n setTab(next);\n onTabChange?.(next);\n };\n\n const isCompact = variant === \"compact\" || (variant === \"auto\" && viewportCompact);\n const sectionHeight = isCompact\n ? COMPACT_ROWS_VISIBLE * COMPACT_ROW_HEIGHT_PX\n : LEVEL_ROWS_VISIBLE * DEPTH_ROW_HEIGHT_PX;\n\n const maxAskDepth = Math.max(1, ...asks.map((l) => l.depth ?? l.amount));\n const maxBidDepth = Math.max(1, ...bids.map((l) => l.depth ?? l.amount));\n\n const midClass =\n midChangePercent == null\n ? \"text-white\"\n : midChangePercent >= 0\n ? \"text-[#0ecb81]\"\n : \"text-[#f6465d]\";\n\n const tradeFiltered = trades.filter((t) => tradeFilter === \"all\" || t.type === tradeFilter);\n\n const layoutProps: OrderbookLayoutProps = {\n tab,\n handleTab,\n tradeFilter,\n setTradeFilter,\n rightHeader,\n priceLabel,\n amountLabel,\n tradeFiltered,\n precision,\n amountPrecision,\n asks,\n bids,\n maxAskDepth,\n maxBidDepth,\n midPrice,\n midChangePercent,\n midClass,\n sectionHeight,\n };\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[520px] overflow-hidden rounded-[12px] border border-white/10 bg-[#111111] text-white shadow-md\",\n isCompact && \"max-w-none\",\n className\n )}\n {...props}\n >\n {isCompact ? (\n <MobileOrderbookLayout {...layoutProps} />\n ) : (\n <DesktopOrderbookLayout {...layoutProps} />\n )}\n </Card>\n );\n }\n);\n\nOrderbook.displayName = \"Orderbook\";\n\ntype OrderbookLayoutProps = {\n tab: \"orderbook\" | \"trades\";\n handleTab: (tab: \"orderbook\" | \"trades\") => void;\n tradeFilter: \"all\" | \"buy\" | \"sell\";\n setTradeFilter: React.Dispatch<React.SetStateAction<\"all\" | \"buy\" | \"sell\">>;\n rightHeader: React.ReactNode;\n priceLabel: string;\n amountLabel: string;\n tradeFiltered: OrderbookTrade[];\n precision: number;\n amountPrecision: number;\n asks: OrderbookLevel[];\n bids: OrderbookLevel[];\n maxAskDepth: number;\n maxBidDepth: number;\n midPrice: number;\n midChangePercent?: number;\n midClass: string;\n sectionHeight: number;\n};\n\nfunction DesktopOrderbookLayout({\n tab,\n handleTab,\n tradeFilter,\n setTradeFilter,\n rightHeader,\n priceLabel,\n amountLabel,\n tradeFiltered,\n precision,\n amountPrecision,\n asks,\n bids,\n maxAskDepth,\n maxBidDepth,\n midPrice,\n midChangePercent,\n midClass,\n sectionHeight,\n}: OrderbookLayoutProps) {\n return (\n <>\n <div className=\"flex items-center justify-between px-4 pt-4\">\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={() => handleTab(\"orderbook\")}\n className={cn(\n \"relative pb-2 text-sm font-semibold\",\n tab === \"orderbook\" ? \"text-white\" : \"text-white/60\"\n )}\n >\n Orderbook\n {tab === \"orderbook\" ? (\n <span className=\"absolute -bottom-px left-0 h-[2px] w-full bg-[#C9A227]\" />\n ) : null}\n </button>\n <button\n type=\"button\"\n onClick={() => handleTab(\"trades\")}\n className={cn(\n \"relative pb-2 text-sm font-medium\",\n tab === \"trades\" ? \"text-white\" : \"text-white/60\"\n )}\n >\n Trades\n {tab === \"trades\" ? (\n <span className=\"absolute -bottom-px left-0 h-[2px] w-full bg-[#C9A227]\" />\n ) : null}\n </button>\n </div>\n\n {tab === \"trades\" ? (\n <div className=\"flex items-center gap-1 text-xs\">\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"all\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"all\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n All\n </button>\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"buy\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"buy\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n Buy\n </button>\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"sell\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"sell\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n Sell\n </button>\n </div>\n ) : (\n <div className=\"flex items-center gap-3\">{rightHeader}</div>\n )}\n </div>\n\n <div className=\"px-4 pb-3 pt-2\">\n <div className=\"grid grid-cols-2 gap-3 px-3 py-2 text-xs text-white/60\">\n <div>{priceLabel}</div>\n <div className=\"text-right\">{amountLabel}</div>\n </div>\n\n {tab === \"trades\" ? (\n <div\n className=\"max-h-[380px] overflow-y-auto overflow-x-hidden\"\n style={{ scrollbarGutter: \"stable\" }}\n >\n {tradeFiltered.length === 0 ? (\n <div className=\"px-3 py-10 text-center text-sm text-white/50\">No trades</div>\n ) : (\n <div className=\"divide-y divide-white/5\">\n {tradeFiltered.map((trade, i) => (\n <div\n key={`${trade.type}-${trade.price}-${trade.amount}-${trade.time ?? i}`}\n className=\"grid grid-cols-2 items-center gap-3 px-3 py-1.5\"\n >\n <div\n className={cn(\n \"tabular-nums\",\n trade.type === \"buy\" ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n ${formatNumber(trade.price, precision)}\n </div>\n <div className=\"text-right tabular-nums text-white/90\">\n {formatNumber(trade.amount, amountPrecision)}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n ) : (\n <>\n <div\n className=\"divide-y divide-white/5 overflow-y-auto\"\n style={{ height: `${sectionHeight}px`, scrollbarGutter: \"stable\" }}\n >\n {asks.map((l, idx) => (\n <DepthRow\n key={`ask-${idx}-${l.price}-${l.amount}`}\n side=\"ask\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxAskDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n\n <div className=\"mt-2 grid grid-cols-2 items-center gap-3 bg-[#0b1a24] px-3 py-2\">\n <div className={cn(\"text-lg font-semibold tabular-nums\", midClass)}>\n ${formatNumber(midPrice, precision)}\n {midChangePercent == null ? null : (\n <span className=\"ml-2 text-sm font-semibold\">\n {midChangePercent >= 0 ? \"+\" : \"\"}\n {midChangePercent.toFixed(2)}%\n </span>\n )}\n </div>\n <div />\n </div>\n\n <div\n className=\"divide-y divide-white/5 overflow-y-auto\"\n style={{ height: `${sectionHeight}px`, scrollbarGutter: \"stable\" }}\n >\n {bids.map((l, idx) => (\n <DepthRow\n key={`bid-${idx}-${l.price}-${l.amount}`}\n side=\"bid\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxBidDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n </>\n )}\n </div>\n </>\n );\n}\n\nfunction MobileOrderbookLayout({\n tab,\n handleTab,\n tradeFilter,\n setTradeFilter,\n rightHeader,\n priceLabel,\n amountLabel,\n tradeFiltered,\n precision,\n amountPrecision,\n asks,\n bids,\n maxAskDepth,\n maxBidDepth,\n midPrice,\n midChangePercent,\n midClass,\n sectionHeight,\n}: OrderbookLayoutProps) {\n const visibleAsks = React.useMemo(() => asks.slice(0, COMPACT_ROWS_VISIBLE), [asks]);\n const visibleBids = React.useMemo(() => bids.slice(0, COMPACT_ROWS_VISIBLE), [bids]);\n\n return (\n <>\n <div className=\"px-3 pt-2\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <span\n onClick={() => handleTab(\"orderbook\")}\n style={{\n cursor: \"pointer\",\n fontSize: \"0.8rem\",\n fontWeight: tab === \"orderbook\" ? 600 : 400,\n color: tab === \"orderbook\" ? \"#fff\" : \"rgba(255,255,255,0.6)\",\n borderBottom: tab === \"orderbook\" ? \"2px solid #C9A227\" : \"none\",\n paddingBottom: \"0.25rem\",\n }}\n >\n Orderbook\n </span>\n <span\n onClick={() => handleTab(\"trades\")}\n style={{\n cursor: \"pointer\",\n fontSize: \"0.8rem\",\n fontWeight: tab === \"trades\" ? 600 : 400,\n color: tab === \"trades\" ? \"#fff\" : \"rgba(255,255,255,0.6)\",\n borderBottom: tab === \"trades\" ? \"2px solid #C9A227\" : \"none\",\n paddingBottom: \"0.25rem\",\n }}\n >\n Trades\n </span>\n </div>\n\n {tab === \"trades\" ? (\n <div className=\"flex items-center gap-1 text-[0.6rem] text-white/70\">\n {([\"all\", \"buy\", \"sell\"] as const).map((filter) => (\n <button\n key={filter}\n type=\"button\"\n onClick={() => setTradeFilter(filter)}\n className={cn(\n \"rounded-md border border-white/15 px-2 py-1\",\n tradeFilter === filter ? \"bg-white/15 text-white\" : \"hover:bg-white/10\"\n )}\n >\n {filter === \"all\" ? \"All\" : filter === \"buy\" ? \"Buy\" : \"Sell\"}\n </button>\n ))}\n </div>\n ) : (\n <div className=\"hidden text-xs text-white/70 sm:flex\">{rightHeader}</div>\n )}\n </div>\n </div>\n\n {tab === \"orderbook\" ? (\n <div className=\"flex flex-1 flex-col overflow-hidden px-3 pb-2\">\n <div\n className=\"inline-flex sm:hidden\"\n style={{ padding: \"0.5rem 0\", marginBottom: \"0.5rem\", transform: \"scale(0.85)\", transformOrigin: \"left center\" }}\n >\n {rightHeader}\n </div>\n\n <div\n className=\"grid text-white/60\"\n style={{ gridTemplateColumns: \"1.2fr 0.8fr\", padding: \"0.3rem 0 0.2rem 0\", fontSize: \"0.75rem\", fontWeight: 500 }}\n >\n <div>{priceLabel}</div>\n <div style={{ textAlign: \"right\", paddingRight: \"0.5rem\" }}>{amountLabel}</div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {visibleAsks.map((l, idx) => (\n <MobileDepthRow\n key={`mobile-ask-${idx}-${l.price}-${l.amount}`}\n side=\"ask\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxAskDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n\n <div\n className=\"grid\"\n style={{\n gridTemplateColumns: \"1.2fr 0.8fr\",\n padding: \"0.3rem 0\",\n fontSize: \"0.8rem\",\n backgroundColor: \"rgba(0, 123, 255, 0.05)\",\n borderTop: \"1px solid rgba(255,255,255,0.1)\",\n borderBottom: \"1px solid rgba(255,255,255,0.1)\",\n }}\n >\n <div style={{ fontWeight: \"bold\", display: \"flex\", alignItems: \"center\", gap: \"8px\" }} className={midClass}>\n ${formatNumber(midPrice, precision)}\n {midChangePercent != null && (\n <span style={{ fontSize: \"0.8rem\" }} className={midClass}>\n {midChangePercent >= 0 ? \"+\" : \"\"}{midChangePercent.toFixed(2)}%\n </span>\n )}\n </div>\n <div />\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {visibleBids.map((l, idx) => (\n <MobileDepthRow\n key={`mobile-bid-${idx}-${l.price}-${l.amount}`}\n side=\"bid\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxBidDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n </div>\n ) : (\n <div className=\"flex flex-1 flex-col overflow-hidden px-3 pb-2\">\n <div\n className=\"grid text-white/60\"\n style={{ gridTemplateColumns: \"1.2fr 0.8fr\", padding: \"0.3rem 0 0.2rem 0\", fontSize: \"0.75rem\", fontWeight: 500 }}\n >\n <div>{priceLabel}</div>\n <div style={{ textAlign: \"right\", paddingRight: \"0.5rem\" }}>{amountLabel}</div>\n </div>\n\n <div style={{ flex: 1, overflowY: \"auto\", minHeight: 0 }}>\n {tradeFiltered.length === 0 ? (\n <div className=\"py-6 text-center text-[0.7rem] text-white/50\">No trades</div>\n ) : (\n tradeFiltered.map((trade, i) => (\n <div\n key={`${trade.type}-${trade.price}-${trade.amount}-${trade.time ?? i}`}\n className=\"grid\"\n style={{ gridTemplateColumns: \"1.2fr 0.8fr\", padding: \"0.2rem 0\", fontSize: \"0.8rem\" }}\n >\n <div\n style={{ color: trade.type === \"buy\" ? \"#0ecb81\" : \"#f6465d\", fontWeight: 500 }}\n >\n ${formatNumber(trade.price, precision)}\n </div>\n <div style={{ textAlign: \"right\", paddingRight: \"0.5rem\" }}>\n {formatNumber(trade.amount, amountPrecision)}\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n )}\n </>\n );\n}\n\nfunction MobileDepthRow({\n side,\n price,\n amount,\n depthPct,\n precision,\n amountPrecision,\n}: {\n side: OrderbookSide;\n price: number;\n amount: number;\n depthPct: number;\n precision: number;\n amountPrecision: number;\n}) {\n const isAsk = side === \"ask\";\n\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"1.2fr 0.8fr\",\n padding: \"0.2rem 0\",\n fontSize: \"0.8rem\",\n position: \"relative\",\n }}\n >\n <div style={{ position: \"relative\", zIndex: 1, color: isAsk ? \"#f6465d\" : \"#0ecb81\" }}>\n ${formatNumber(price, precision)}\n </div>\n <div style={{ textAlign: \"right\", paddingRight: \"0.5rem\", position: \"relative\", zIndex: 1 }}>\n {formatNumber(amount, amountPrecision)}\n </div>\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n width: `${clamp(depthPct, 0, 100)}%`,\n backgroundColor: isAsk ? \"#f6465d\" : \"#0ecb81\",\n opacity: 0.1,\n zIndex: 0,\n }}\n />\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardHeader, CardTitle } from \"./card\";\n\nexport type PropertyTourProps = Omit<React.ComponentPropsWithoutRef<typeof Card>, \"title\"> & {\n title: string;\n src: string;\n poster?: string;\n autoPlay?: boolean;\n muted?: boolean;\n loop?: boolean;\n controls?: boolean;\n playsInline?: boolean;\n};\n\ntype FullscreenDocument = Document & {\n webkitFullscreenElement?: Element | null;\n mozFullScreenElement?: Element | null;\n msFullscreenElement?: Element | null;\n};\n\nexport const PropertyTour = React.forwardRef<HTMLDivElement, PropertyTourProps>(\n (\n {\n className,\n title,\n src,\n poster,\n autoPlay = true,\n muted = true,\n loop = true,\n controls = true,\n playsInline = true,\n ...props\n },\n ref\n ) => {\n const videoRef = React.useRef<HTMLVideoElement | null>(null);\n\n React.useEffect(() => {\n const video = videoRef.current;\n if (!video) return;\n\n const handleFullscreenChange = () => {\n const d = document as FullscreenDocument;\n const isFullscreen = !!(\n d.fullscreenElement ||\n d.webkitFullscreenElement ||\n d.mozFullScreenElement ||\n d.msFullscreenElement\n );\n\n if (isFullscreen) {\n video.style.objectFit = \"contain\";\n video.style.width = \"100vw\";\n video.style.height = \"100vh\";\n video.style.position = \"fixed\";\n video.style.top = \"0\";\n video.style.left = \"0\";\n video.style.transform = \"none\";\n video.style.zIndex = \"9999\";\n } else {\n video.style.objectFit = \"cover\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.position = \"absolute\";\n video.style.top = \"0\";\n video.style.left = \"0\";\n video.style.transform = \"none\";\n video.style.zIndex = \"auto\";\n }\n };\n\n video.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n return () => {\n video.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n document.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n };\n }, []);\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[820px] rounded-[12px] border border-white/10 bg-[#111111] text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"px-6 pb-0 pt-6\">\n <CardTitle className=\"m-0 text-lg font-semibold text-white\">{title}</CardTitle>\n </CardHeader>\n\n <div className=\"px-6 pb-6 pt-5\">\n <div className=\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\">\n <video\n ref={videoRef}\n className=\"absolute inset-0 h-full w-full object-cover object-center\"\n controls={controls}\n loop={loop}\n autoPlay={autoPlay}\n muted={muted}\n playsInline={playsInline}\n poster={poster}\n >\n <source src={src} />\n Your browser does not support the video tag.\n </video>\n </div>\n </div>\n </Card>\n );\n }\n);\n\nPropertyTour.displayName = \"PropertyTour\";\n","import * as React from \"react\";\n\nimport { Newspaper } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertyNewsType = \"property\" | \"market\" | (string & {});\n\nexport type PropertyNewsItem = {\n id?: string;\n title: string;\n date: string | Date;\n type?: PropertyNewsType;\n displayId?: string;\n isNew?: boolean;\n};\n\nexport interface PropertyNewsUpdatesProps extends React.HTMLAttributes<HTMLDivElement> {\n items: PropertyNewsItem[];\n heading?: string;\n subheading?: string;\n emptyState?: React.ReactNode;\n highlightFirst?: boolean;\n}\n\nconst ITEMS_PER_PAGE = 4;\nconst ROW_HEIGHT_PX = 86;\n\nconst ensureAnimationsInjected = () => {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(\"property-news-updates-animations\")) return;\n const style = document.createElement(\"style\");\n style.id = \"property-news-updates-animations\";\n style.textContent = `\n @keyframes propertyNewsPulse {\n 0% { opacity: 0.6; transform: scale(0.9); }\n 50% { opacity: 1; transform: scale(1); }\n 100% { opacity: 0.6; transform: scale(0.9); }\n }\n\n @keyframes propertyNewsSlideIn {\n from { transform: translateY(-6px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n};\n\nconst categoryStyles = {\n property: {\n label: \"Property Update\",\n backgroundColor: \"rgba(14, 203, 129, 0.15)\",\n borderColor: \"rgba(14, 203, 129, 0.45)\",\n color: \"#0ecb81\",\n },\n market: {\n label: \"Market News\",\n backgroundColor: \"rgba(248, 209, 47, 0.15)\",\n borderColor: \"rgba(248, 209, 47, 0.45)\",\n color: \"#f8d12f\",\n },\n} as const;\n\nconst formatDate = (value: string | Date) => {\n if (typeof value === \"string\") return value;\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) return \"\";\n return value.toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n};\n\nexport const PropertyNewsUpdates = React.forwardRef<HTMLDivElement, PropertyNewsUpdatesProps>(\n (\n {\n className,\n heading = \"Property News & Headlines\",\n subheading,\n items,\n emptyState,\n highlightFirst = true,\n ...props\n },\n ref\n ) => {\n const [page, setPage] = React.useState(0);\n\n React.useEffect(() => {\n ensureAnimationsInjected();\n }, []);\n\n const hasItems = Array.isArray(items) && items.length > 0;\n const totalPages = React.useMemo(() => (hasItems ? Math.max(1, Math.ceil(items.length / ITEMS_PER_PAGE)) : 1), [hasItems, items.length]);\n\n React.useEffect(() => {\n setPage((prev) => Math.min(prev, totalPages - 1));\n }, [totalPages]);\n\n const paginatedItems = hasItems\n ? items.slice(page * ITEMS_PER_PAGE, page * ITEMS_PER_PAGE + ITEMS_PER_PAGE)\n : [];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-[840px] rounded-2xl border border-white/10 bg-[#0b0e10] p-5 text-white shadow-[0_20px_40px_rgba(0,0,0,0.35)]\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-lg font-semibold text-white\">{heading}</p>\n {subheading ? <p className=\"text-sm text-white/60\">{subheading}</p> : null}\n </div>\n <div\n className=\"inline-flex items-center font-semibold uppercase text-emerald-300\"\n style={{ gap: \"0.35rem\", fontSize: \"0.8rem\", letterSpacing: \"0.15em\" }}\n >\n <span\n style={{\n display: \"inline-block\",\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"50%\",\n backgroundColor: \"#34d399\",\n animation: \"propertyNewsPulse 2s infinite\",\n }}\n />\n LIVE\n </div>\n </div>\n\n <div\n className=\"mt-4 flex flex-col gap-3\"\n style={{ minHeight: `${ITEMS_PER_PAGE * ROW_HEIGHT_PX}px` }}\n >\n {hasItems\n ? paginatedItems.map((item, index) => {\n const absoluteIndex = page * ITEMS_PER_PAGE + index;\n const key = item.displayId ?? item.id ?? `${item.title}-${absoluteIndex}`;\n const styles =\n categoryStyles[item.type as keyof typeof categoryStyles] ?? categoryStyles.market;\n const dateLabel =\n (item.isNew ?? (highlightFirst && absoluteIndex === 0))\n ? \"Just now\"\n : typeof item.date === \"string\" && item.date.trim().length > 0\n ? item.date\n : formatDate(item.date);\n const isHighlighted = item.isNew ?? (highlightFirst && absoluteIndex === 0);\n\n return (\n <div\n key={key}\n style={{\n padding: \"0.75rem\",\n borderRadius: \"6px\",\n backgroundColor: isHighlighted ? \"rgba(14, 203, 129, 0.1)\" : \"transparent\",\n border: \"1px solid transparent\",\n transition: \"background-color 0.2s\",\n animation: item.isNew ? \"propertyNewsSlideIn 0.5s ease-out\" : undefined,\n }}\n >\n <p style={{ fontSize: \"0.9375rem\", fontWeight: 500, marginBottom: \"0.35rem\" }}>\n {item.title}\n </p>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"0.75rem\",\n color: \"#b5b8c5\",\n }}\n >\n <span style={{ color: isHighlighted ? \"#0ecb81\" : \"inherit\" }}>{dateLabel}</span>\n <span\n style={{\n padding: \"0.25rem 0.6rem\",\n borderRadius: \"4px\",\n border: `1px solid ${styles.borderColor}`,\n backgroundColor: styles.backgroundColor,\n color: styles.color,\n fontSize: \"0.68rem\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n }}\n >\n {item.type === \"property\" ? styles.label : \"Market News\"}\n </span>\n </div>\n </div>\n );\n })\n : emptyState ?? (\n <div className=\"flex flex-col items-center justify-center rounded-2xl border border-dashed border-white/20 px-6 py-10 text-center text-sm text-white/60\">\n <Newspaper className=\"mb-3 h-8 w-8 text-white/40\" />\n No property news yet. Updates will land here as soon as we receive new intelligence.\n </div>\n )}\n </div>\n\n {hasItems && totalPages > 1 ? (\n <div className=\"mt-4 flex items-center justify-between text-xs text-white/60\">\n <button\n type=\"button\"\n onClick={() => setPage((prev) => Math.max(0, prev - 1))}\n disabled={page === 0}\n className={cn(\n \"rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]\",\n page === 0 ? \"opacity-40 cursor-not-allowed\" : \"hover:border-white/40\"\n )}\n >\n Prev\n </button>\n <span className=\"font-medium text-white/70\">\n Page {page + 1} / {totalPages}\n </span>\n <button\n type=\"button\"\n onClick={() => setPage((prev) => Math.min(totalPages - 1, prev + 1))}\n disabled={page >= totalPages - 1}\n className={cn(\n \"rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]\",\n page >= totalPages - 1 ? \"opacity-40 cursor-not-allowed\" : \"hover:border-white/40\"\n )}\n >\n Next\n </button>\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nPropertyNewsUpdates.displayName = \"PropertyNewsUpdates\";\n","import * as React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nexport type PropertyAddressOption = {\n id: string;\n label: string;\n};\n\nexport type PropertyValueSummary = {\n value: number;\n change?: number;\n label?: string;\n currencySymbol?: string;\n formatOptions?: Intl.NumberFormatOptions;\n};\n\nexport type PropertyPriceSummary = {\n value: number;\n change?: number;\n changePercent?: number;\n currencySymbol?: string;\n formatOptions?: Intl.NumberFormatOptions;\n percentFormatOptions?: Intl.NumberFormatOptions;\n};\n\nexport type PropertyCompareBarProps = React.HTMLAttributes<HTMLDivElement> & {\n addresses: (PropertyAddressOption | string)[];\n selectedAddressId?: string;\n onSelectAddress?: (addressId: string) => void;\n propertyValue?: PropertyValueSummary;\n propertyValueVariant?: \"classic\" | \"card\" | \"pill\";\n price?: PropertyPriceSummary;\n};\n\nexport const PropertyCompareBar = React.forwardRef<HTMLDivElement, PropertyCompareBarProps>(\n (\n {\n className,\n addresses,\n selectedAddressId,\n onSelectAddress,\n propertyValue,\n propertyValueVariant = \"classic\",\n price,\n ...props\n },\n ref\n ) => {\n const normalizedAddresses = React.useMemo<PropertyAddressOption[]>(() => {\n return addresses.map((option) =>\n typeof option === \"string\" ? { id: option, label: option } : option\n );\n }, [addresses]);\n\n const hasAddresses = normalizedAddresses.length > 0;\n const firstAddressId = normalizedAddresses[0]?.id;\n\n const isControlled = selectedAddressId !== undefined;\n\n const [internalSelectedId, setInternalSelectedId] = React.useState<string | undefined>(() =>\n isControlled ? undefined : firstAddressId\n );\n\n const resolvedSelectedId = isControlled ? selectedAddressId : internalSelectedId;\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalSelectedId((current) => {\n if (current != null && normalizedAddresses.some((option) => option.id === current)) {\n return current;\n }\n\n return firstAddressId;\n });\n }\n }, [firstAddressId, isControlled, normalizedAddresses]);\n\n const selectedOption =\n normalizedAddresses.find((option) => option.id === resolvedSelectedId) ?? normalizedAddresses[0];\n\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n\n const dropdownRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (!isDropdownOpen) return;\n\n const handleClick = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsDropdownOpen(false);\n }\n };\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsDropdownOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClick);\n document.addEventListener(\"keydown\", handleKey);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n document.removeEventListener(\"keydown\", handleKey);\n };\n }, [isDropdownOpen]);\n\n const handleAddressSelect = (addressId: string) => {\n if (!isControlled) {\n setInternalSelectedId(addressId);\n }\n onSelectAddress?.(addressId);\n setIsDropdownOpen(false);\n };\n\n const propertyValueLabel = propertyValue?.label ?? \"Property Value\";\n const propertyValueCurrency = propertyValue?.currencySymbol ?? \"$\";\n const propertyValueFormat =\n propertyValue?.formatOptions ?? ({\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n } satisfies Intl.NumberFormatOptions);\n const formattedPropertyValue =\n propertyValue == null\n ? null\n : `${propertyValueCurrency}${propertyValue.value.toLocaleString(\n undefined,\n propertyValueFormat\n )}`;\n const formattedPropertyChange =\n propertyValue?.change == null\n ? null\n : `${propertyValue.change >= 0 ? \"+\" : \"-\"}${propertyValueCurrency}${Math.abs(\n propertyValue.change\n ).toLocaleString(undefined, propertyValueFormat)}`;\n const priceCurrency = price?.currencySymbol ?? \"$\";\n const priceFormat =\n price?.formatOptions ?? ({ minimumFractionDigits: 2, maximumFractionDigits: 2 } satisfies Intl.NumberFormatOptions);\n const pricePercentFormat =\n price?.percentFormatOptions ?? ({ minimumFractionDigits: 2, maximumFractionDigits: 2 } satisfies Intl.NumberFormatOptions);\n const formattedPriceValue =\n price == null\n ? null\n : `${priceCurrency}${price.value.toLocaleString(undefined, priceFormat)}`;\n const formattedPriceChange =\n price?.change == null\n ? null\n : `${price.change >= 0 ? \"+\" : \"-\"}${priceCurrency}${Math.abs(price.change).toLocaleString(\n undefined,\n priceFormat\n )}`;\n const formattedPricePercent =\n price?.changePercent == null\n ? null\n : `${price.changePercent >= 0 ? \"+\" : \"-\"}${Math.abs(price.changePercent).toLocaleString(\n undefined,\n pricePercentFormat\n )}%`;\n const priceContent =\n formattedPriceValue && propertyValueVariant === \"pill\" ? (\n <PriceBlock $variant={propertyValueVariant}>\n <PriceAmount>{formattedPriceValue}</PriceAmount>\n {formattedPriceChange || formattedPricePercent ? (\n <PriceChange\n $isPositive={\n price?.change != null\n ? price.change >= 0\n : price?.changePercent != null\n ? price.changePercent >= 0\n : undefined\n }\n >\n {formattedPriceChange ? <span>{formattedPriceChange}</span> : null}\n {formattedPricePercent ? <span>{formattedPricePercent}</span> : null}\n </PriceChange>\n ) : null}\n </PriceBlock>\n ) : null;\n\n const propertyValueContent = formattedPropertyValue ? (\n <PropertyValueBlock $variant={propertyValueVariant}>\n <PropertyValueLabel>{propertyValueLabel}</PropertyValueLabel>\n <PropertyValueAmount>{formattedPropertyValue}</PropertyValueAmount>\n {formattedPropertyChange ? (\n <PropertyValueChange $isPositive={propertyValue?.change != null ? propertyValue.change >= 0 : undefined}>\n {formattedPropertyChange}\n </PropertyValueChange>\n ) : null}\n </PropertyValueBlock>\n ) : null;\n\n return (\n <PropertySelectorContainer ref={ref} className={className} $variant={propertyValueVariant} {...props}>\n <PropertySelector ref={dropdownRef} onClick={() => hasAddresses && setIsDropdownOpen((prev) => !prev)}>\n <PropertyAddress>\n {selectedOption ? selectedOption.label : hasAddresses ? \"Select address\" : \"No addresses available\"}\n <svg\n className=\"dropdown-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n style={{ transform: isDropdownOpen ? \"rotate(180deg)\" : undefined }}\n >\n <path d=\"M7 10l5 5 5-5H7z\" />\n </svg>\n </PropertyAddress>\n\n <PropertySelectorDropdown $isOpen={isDropdownOpen && hasAddresses}>\n {normalizedAddresses.map((option) => (\n <PropertySelectorOption\n key={option.id}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n handleAddressSelect(option.id);\n }}\n >\n <PropertySelectorName>{option.label}</PropertySelectorName>\n </PropertySelectorOption>\n ))}\n </PropertySelectorDropdown>\n </PropertySelector>\n\n {propertyValueVariant === \"pill\" ? (\n <>\n {priceContent}\n {propertyValueContent}\n </>\n ) : (\n propertyValueContent\n )}\n </PropertySelectorContainer>\n );\n }\n);\n\nPropertyCompareBar.displayName = \"PropertyCompareBar\";\n\nconst PropertySelectorContainer = styled.div<{ $variant: \"classic\" | \"card\" | \"pill\" }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.5rem;\n background-color: ${({ $variant }) => ($variant === \"pill\" ? \"#0f0f0f\" : \"rgba(30, 32, 38, 0.95)\")};\n border: ${({ $variant }) => ($variant === \"pill\" ? \"1px solid rgba(255, 255, 255, 0.15)\" : \"none\")};\n border-radius: 8px;\n margin-bottom: 1.5rem;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n color: var(--color-text, #f8f9fa);\n font-family: var(--font-family, \"Inter\", sans-serif);\n\n @media (max-width: 1024px) {\n padding: 0.75rem 1rem;\n margin-bottom: 0.75rem;\n }\n\n @media (max-width: 768px) {\n border-radius: 0;\n margin-top: 0;\n padding-top: 0.5rem;\n }\n\n @media (max-width: 600px) {\n width: 100%;\n\n ${({ $variant }) =>\n $variant === \"pill\"\n ? css`\n display: grid;\n grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr) minmax(0, 1fr);\n gap: 0.35rem;\n align-items: center;\n\n > *:nth-child(1) {\n width: 100%;\n }\n\n > *:nth-child(2) {\n justify-self: center;\n width: 100%;\n }\n\n > *:nth-child(3) {\n justify-self: end;\n text-align: right;\n }\n `\n : css`\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n `};\n }\n`;\n\nconst PropertySelector = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: 0.5rem 0;\n flex: 1;\n\n &:hover {\n .dropdown-icon {\n transform: translateY(2px);\n }\n }\n`;\n\nconst PropertyAddress = styled.div`\n font-size: 1.125rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: inherit;\n\n svg {\n transition: transform 0.2s;\n }\n\n @media (max-width: 600px) {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.2rem;\n font-size: 1rem;\n line-height: 1.2;\n white-space: normal;\n }\n`;\n\nconst PropertySelectorDropdown = styled.div<{ $isOpen: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n max-width: 400px;\n background-color: var(--color-card, #1f232b);\n border-radius: 8px;\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);\n z-index: 100;\n overflow: hidden;\n display: ${(props) => (props.$isOpen ? \"block\" : \"none\")};\n`;\n\nconst PropertySelectorOption = styled.div`\n padding: 0.75rem 1rem;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n cursor: pointer;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: rgba(255, 255, 255, 0.05);\n }\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\nconst PropertySelectorName = styled.div`\n font-weight: 600;\n`;\n\nconst PropertyValueBlock = styled.div<{ $variant: \"classic\" | \"card\" | \"pill\" }>`\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-left: 1rem;\n white-space: nowrap;\n\n ${({ $variant }) =>\n $variant === \"card\" &&\n css`\n margin-left: auto;\n flex-direction: row;\n align-items: center;\n min-width: 220px;\n border: none;\n background: rgba(30, 32, 38, 0.95);\n border-radius: 14px;\n padding: 0.9rem 1.25rem;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);\n gap: 0.85rem;\n justify-content: flex-end;\n\n @media (max-width: 600px) {\n margin: 0;\n width: auto;\n min-width: 0;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.125rem;\n padding: 0;\n background: transparent;\n border-radius: 0;\n box-shadow: none;\n }\n `}\n\n ${({ $variant }) =>\n $variant === \"pill\" &&\n css`\n margin-left: auto;\n margin-right: 1rem;\n background: #191919;\n border-radius: 8px;\n border: 1px solid rgba(255, 255, 255, 0.05);\n padding: 0.5rem 1rem;\n gap: 1rem;\n align-items: center;\n\n @media (max-width: 600px) {\n margin: 0;\n width: 100%;\n min-width: 0;\n flex-direction: column;\n align-items: flex-end;\n text-align: right;\n gap: 0.2rem;\n padding: 0;\n background: transparent;\n border-radius: 0;\n border: none;\n white-space: normal;\n }\n `}\n\n @media (max-width: 600px) {\n margin: 0;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.2rem;\n white-space: normal;\n }\n`;\n\nconst PropertyValueLabel = styled.span`\n font-size: 0.7rem;\n color: var(--color-text-secondary, rgba(255, 255, 255, 0.6));\n text-transform: uppercase;\n letter-spacing: 0.5px;\n\n @media (max-width: 600px) {\n font-size: 0.6rem;\n letter-spacing: 0.4px;\n }\n`;\n\nconst PropertyValueAmount = styled.span`\n font-size: 1.1rem;\n font-weight: 600;\n color: #fff;\n\n @media (max-width: 600px) {\n font-size: 0.95rem;\n }\n`;\n\nconst PropertyValueChange = styled.span<{ $isPositive?: boolean }>`\n font-size: 0.75rem;\n font-weight: 500;\n color: ${(props) =>\n props.$isPositive == null\n ? \"var(--color-text-secondary, rgba(255, 255, 255, 0.6))\"\n : props.$isPositive\n ? \"var(--color-positive, #0ecb81)\"\n : \"var(--color-negative, #f6465d)\"};\n\n @media (max-width: 600px) {\n font-size: 0.65rem;\n }\n`;\n\nconst PriceBlock = styled.div<{ $variant: \"classic\" | \"card\" | \"pill\" }>`\n display: none;\n\n ${({ $variant }) =>\n $variant === \"pill\" &&\n css`\n @media (max-width: 600px) {\n display: flex;\n flex: none;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.15rem;\n width: 100%;\n }\n `}\n`;\n\nconst PriceAmount = styled.span`\n font-size: 1.6rem;\n font-weight: 600;\n color: #fff;\n letter-spacing: 0.2px;\n`;\n\nconst PriceChange = styled.span<{ $isPositive?: boolean }>`\n font-size: 0.85rem;\n font-weight: 500;\n display: inline-flex;\n gap: 0.35rem;\n color: ${(props) =>\n props.$isPositive == null\n ? \"var(--color-text-secondary, rgba(255, 255, 255, 0.6))\"\n : props.$isPositive\n ? \"var(--color-positive, #0ecb81)\"\n : \"var(--color-negative, #f6465d)\"};\n`;\n","import * as React from \"react\";\n\nexport type YourOrderSide = \"buy\" | \"sell\";\n\nexport type YourOrder = {\n id: string;\n asset: string;\n side?: YourOrderSide;\n date?: string;\n price: number;\n amount: number;\n total: number;\n filledPercent?: number;\n status?: string;\n propertyPercent?: number;\n portfolioSharePercent?: number;\n avgEntryPrice?: number;\n pnlValue?: number;\n pnlPercent?: number;\n holdingLabel?: string;\n value?: number;\n currentPrice?: number;\n priceChangePercent?: number;\n priceChangePositive?: boolean;\n};\n\nexport type YourOrdersTab = {\n id: string;\n label: string;\n title?: string;\n orders: YourOrder[];\n emptyState?: string;\n enableCancel?: boolean;\n};\n\nexport type YourOrdersProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: string;\n orders?: YourOrder[];\n tabs?: YourOrdersTab[];\n activeTabId?: string;\n onTabChange?: (tabId: string) => void;\n renderOrderActions?: (order: YourOrder) => React.ReactNode;\n};\n\nconst DEFAULT_TABS = [\n { id: \"portfolio\", label: \"Portfolio\" },\n { id: \"openOrders\", label: \"Open Orders\" },\n { id: \"tradeHistory\", label: \"Trade History\" },\n { id: \"orderHistory\", label: \"Order History\" },\n] as const;\n\nconst panelStyle: React.CSSProperties = {\n width: \"100%\",\n borderRadius: \"16px\",\n backgroundColor: \"#0b0e10\",\n border: \"1px solid rgba(255,255,255,0.08)\",\n color: \"#ffffff\",\n display: \"flex\",\n flexDirection: \"column\",\n};\n\nconst headerStyle: React.CSSProperties = {\n padding: \"1.25rem 1.5rem 0.5rem\",\n};\n\nconst titleStyle: React.CSSProperties = {\n margin: 0,\n fontSize: \"1.1rem\",\n fontWeight: 600,\n};\n\nconst tabsRowStyle: React.CSSProperties = {\n display: \"flex\",\n gap: \"0.5rem\",\n padding: \"0 1.5rem\",\n borderBottom: \"1px solid rgba(255,255,255,0.08)\",\n};\n\nconst tabButtonBase: React.CSSProperties = {\n background: \"none\",\n border: \"none\",\n color: \"rgba(255,255,255,0.5)\",\n fontSize: \"0.9rem\",\n fontWeight: 400,\n padding: \"0.75rem 1rem\",\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"color 0.2s ease\",\n};\n\nconst tabContentWrapper: React.CSSProperties = {\n padding: \"1.25rem 1.5rem 1.5rem\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.75rem\",\n flex: 1,\n};\n\nconst tableHeaderStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\",\n gap: \"0.5rem\",\n paddingBottom: \"0.75rem\",\n borderBottom: \"1px solid rgba(255,255,255,0.1)\",\n minWidth: \"700px\",\n};\n\nconst tableHeaderCell: React.CSSProperties = {\n fontSize: \"0.7rem\",\n fontWeight: 700,\n color: \"#ffffff\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.3px\",\n};\n\nconst emptyStateStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n color: \"rgba(255,255,255,0.6)\",\n fontSize: \"0.95rem\",\n border: \"1px dashed rgba(255,255,255,0.12)\",\n borderRadius: \"8px\",\n minHeight: \"220px\",\n};\n\nconst rowStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\",\n gap: \"0.5rem\",\n alignItems: \"center\",\n minWidth: \"700px\",\n padding: \"0.75rem 0\",\n borderBottom: \"1px solid rgba(255,255,255,0.08)\",\n};\n\nconst formatCurrency = (value?: number) => {\n if (value == null || Number.isNaN(value)) return \"—\";\n return `$${value.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n};\n\nconst formatPercent = (value?: number, fractionDigits = 2) => {\n if (value == null || Number.isNaN(value)) return \"—\";\n return `${value.toFixed(fractionDigits)}%`;\n};\n\nexport const YourOrders = React.forwardRef<HTMLDivElement, YourOrdersProps>(\n ({ className, title, orders, tabs, activeTabId, onTabChange, renderOrderActions, ...props }, ref) => {\n const [internalActiveTab, setInternalActiveTab] = React.useState<string>(tabs?.[0]?.id ?? \"portfolio\");\n \n const effectiveActiveTabId = activeTabId ?? internalActiveTab;\n const handleTabChange = (tabId: string) => {\n if (onTabChange) {\n onTabChange(tabId);\n } else {\n setInternalActiveTab(tabId);\n }\n };\n \n const resolvedTabs: YourOrdersTab[] = tabs ?? DEFAULT_TABS.map(t => ({ ...t, orders: orders ?? [], emptyState: `No ${t.label.toLowerCase()} data available.` }));\n const activeTab = resolvedTabs.find(t => t.id === effectiveActiveTabId) ?? resolvedTabs[0];\n const activeOrders = activeTab?.orders ?? orders ?? [];\n const displayTitle = title ?? activeTab?.title ?? activeTab?.label ?? \"Portfolio Holdings\";\n\n console.log('[YourOrders] tabs:', tabs?.map(t => ({ id: t.id, ordersCount: t.orders?.length })));\n console.log('[YourOrders] activeTabId prop:', activeTabId);\n console.log('[YourOrders] effectiveActiveTabId:', effectiveActiveTabId);\n console.log('[YourOrders] activeTab:', activeTab?.id, 'orders count:', activeOrders?.length);\n\n const hasOrders = Array.isArray(activeOrders) && activeOrders.length > 0;\n const emptyMessage = activeTab?.emptyState ?? \"No holdings yet. Start trading to build your portfolio.\";\n\n const renderOrders = () => {\n if (!hasOrders) {\n return <div style={emptyStateStyle}>{emptyMessage}</div>;\n }\n\n return (\n <>\n <div style={tableHeaderStyle}>\n <div style={tableHeaderCell}>Property</div>\n <div style={tableHeaderCell}>Value</div>\n <div style={tableHeaderCell}>Holding</div>\n <div style={tableHeaderCell}>% of Property</div>\n <div style={tableHeaderCell}>Avg Price</div>\n <div style={tableHeaderCell}>P&L</div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.65rem\" }}>\n {activeOrders.map((order) => {\n const propertyName = order.asset;\n const holding =\n order.holdingLabel ??\n `${order.amount.toLocaleString(undefined, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n })} ${propertyName}`;\n const value = order.value ?? order.total;\n const portfolioShare =\n order.portfolioSharePercent != null\n ? `${order.portfolioSharePercent.toFixed(1)}% of portfolio`\n : undefined;\n const propertyPercent = order.propertyPercent;\n const avgPrice = order.avgEntryPrice ?? order.price;\n const pnlValue = order.pnlValue;\n const pnlPercent = order.pnlPercent;\n const pnlPositive = pnlValue != null ? pnlValue >= 0 : (pnlPercent ?? 0) >= 0;\n const currentPrice = order.currentPrice ?? order.price;\n const priceChangePercent = order.priceChangePercent ?? order.pnlPercent;\n const priceChangePositive =\n order.priceChangePositive ?? (priceChangePercent != null ? priceChangePercent >= 0 : undefined);\n\n return (\n <div key={order.id} style={{ ...rowStyle, gridTemplateColumns: renderOrderActions ? \"1.8fr 0.8fr 0.7fr 0.8fr 0.8fr 0.9fr 0.8fr\" : \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\" }}>\n <div style={{ display: \"flex\", gap: \"1rem\", alignItems: \"center\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.15rem\" }}>\n <div style={{ fontSize: \"0.9rem\", fontWeight: 500 }}>{propertyName}</div>\n {portfolioShare ? (\n <div style={{ fontSize: \"0.72rem\", color: \"rgba(255,255,255,0.5)\" }}>{portfolioShare}</div>\n ) : null}\n </div>\n {currentPrice != null ? (\n <div>\n <div\n style={{\n fontSize: \"0.9rem\",\n color: \"var(--color-text, #ffffff)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.25rem\",\n }}\n >\n {priceChangePositive != null ? (\n <span\n style={{\n color: priceChangePositive ? \"#0ecb81\" : \"#f6465d\",\n fontSize: \"0.7em\",\n }}\n >\n {priceChangePositive ? \"▲\" : \"▼\"}\n </span>\n ) : null}\n {formatCurrency(currentPrice)}\n </div>\n {priceChangePercent != null ? (\n <div\n style={{\n fontSize: \"0.7rem\",\n color: priceChangePositive ? \"#0ecb81\" : \"#f6465d\",\n }}\n >\n ({priceChangePositive ? \"+\" : \"\"}\n {priceChangePercent.toFixed(2)}%)\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n <div style={{ fontSize: \"0.9rem\", fontWeight: 500, color: \"#D4AF37\" }}>{formatCurrency(value)}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.92)\" }}>{holding}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.8)\" }}>{formatPercent(propertyPercent, 3)}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.9)\" }}>{formatCurrency(avgPrice)}</div>\n <div\n style={{\n fontSize: \"0.9rem\",\n fontWeight: 500,\n color: pnlPositive ? \"#0ecb81\" : \"#f6465d\",\n }}\n >\n {pnlValue != null ? `${pnlPositive ? \"+\" : \"-\"}${formatCurrency(Math.abs(pnlValue))}` : formatCurrency(pnlValue)}\n {pnlPercent != null ? (\n <span style={{ marginLeft: \"0.35rem\", fontSize: \"0.75rem\", color: \"rgba(255,255,255,0.6)\" }}>\n ({pnlPositive ? \"+\" : \"\"}\n {pnlPercent.toFixed(1)}%)\n </span>\n ) : null}\n </div>\n {renderOrderActions ? <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>{renderOrderActions(order)}</div> : null}\n </div>\n );\n })}\n </div>\n </>\n );\n };\n\n const tabContent = renderOrders();\n\n return (\n <div\n ref={ref}\n style={{ ...panelStyle, ...(props.style ?? {}) }}\n className={className}\n {...props}\n >\n <div style={headerStyle}>\n <h3 style={titleStyle}>{displayTitle}</h3>\n </div>\n\n {resolvedTabs.length > 1 && (\n <div style={tabsRowStyle}>\n {resolvedTabs.map((tab) => {\n const isActive = effectiveActiveTabId === tab.id;\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => handleTabChange(tab.id)}\n style={{\n ...tabButtonBase,\n color: isActive ? \"#ffffff\" : \"rgba(255,255,255,0.55)\",\n fontWeight: isActive ? 600 : 400,\n }}\n >\n {tab.label}\n {isActive ? (\n <div\n style={{\n position: \"absolute\",\n bottom: \"-1px\",\n left: 0,\n right: 0,\n height: \"2px\",\n background: \"#f0b90b\",\n }}\n />\n ) : null}\n </button>\n );\n })}\n </div>\n )}\n\n <div style={tabContentWrapper}>{tabContent}</div>\n </div>\n );\n }\n);\n\nYourOrders.displayName = \"YourOrders\";\n","import * as React from \"react\";\nimport * as LightweightCharts from \"lightweight-charts\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardHeader, CardTitle } from \"./card\";\n\nexport type PriceChartRange = \"1D\" | \"1W\" | \"1M\" | \"3M\" | \"1Y\";\n\nexport type PriceChartCandle = {\n time: LightweightCharts.Time;\n open: number;\n high: number;\n low: number;\n close: number;\n};\n\nexport type PriceChartProps = Omit<React.ComponentPropsWithoutRef<typeof Card>, \"title\"> & {\n title?: string;\n ranges?: PriceChartRange[];\n selectedRange?: PriceChartRange;\n onRangeChange?: (range: PriceChartRange) => void;\n data: PriceChartCandle[];\n price?: number;\n changePercent?: number;\n currencySymbol?: string;\n height?: number;\n};\n\nconst defaultRanges: PriceChartRange[] = [\"1D\", \"1W\", \"1M\", \"3M\", \"1Y\"];\n\nconst formatPrice = (value: number, currencySymbol: string) => {\n return `${currencySymbol}${value.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n};\n\ntype ChartApiWithSeries = LightweightCharts.IChartApi & {\n addSeries?: (\n seriesCtor: unknown,\n options?: LightweightCharts.DeepPartial<LightweightCharts.SeriesOptionsMap[\"Candlestick\"]>,\n ) => LightweightCharts.ISeriesApi<\"Candlestick\">;\n};\n\nfunction createCandlestickSeries(\n chart: LightweightCharts.IChartApi,\n options: LightweightCharts.DeepPartial<LightweightCharts.SeriesOptionsMap[\"Candlestick\"]>,\n): LightweightCharts.ISeriesApi<\"Candlestick\"> {\n const chartWithSeries = chart as ChartApiWithSeries;\n if (typeof chartWithSeries.addCandlestickSeries === \"function\") {\n return chartWithSeries.addCandlestickSeries(options);\n }\n\n const candlestickCtor = (LightweightCharts as unknown as { CandlestickSeries?: unknown }).CandlestickSeries;\n if (typeof chartWithSeries.addSeries === \"function\" && candlestickCtor) {\n return chartWithSeries.addSeries(candlestickCtor, options);\n }\n\n throw new Error(\"Candlestick series API is not available in the current lightweight-charts version.\");\n}\n\nexport const PriceChart = React.forwardRef<HTMLDivElement, PriceChartProps>(\n (\n {\n className,\n title = \"Price Chart\",\n ranges = defaultRanges,\n selectedRange,\n onRangeChange,\n data,\n price,\n changePercent,\n currencySymbol = \"$\",\n height = 301.52,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const chartRef = React.useRef<LightweightCharts.IChartApi | null>(null);\n const seriesRef = React.useRef<LightweightCharts.ISeriesApi<\"Candlestick\"> | null>(null);\n const priceLineRef = React.useRef<LightweightCharts.IPriceLine | null>(null);\n const [hoveredRange, setHoveredRange] = React.useState<PriceChartRange | null>(null);\n\n const resolvedPrice = React.useMemo(() => {\n if (price != null) return price;\n const last = data.at(-1);\n return last?.close;\n }, [data, price]);\n\n const inferredChangePercent = React.useMemo(() => {\n if (changePercent != null) return changePercent;\n const first = data[0]?.open;\n const last = data.at(-1)?.close;\n if (first == null || last == null || first === 0) return undefined;\n return ((last - first) / first) * 100;\n }, [changePercent, data]);\n\n const dollarChange = React.useMemo(() => {\n const first = data[0]?.open;\n const last = data.at(-1)?.close;\n if (first == null || last == null) return undefined;\n return last - first;\n }, [data]);\n\n React.useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const chart = LightweightCharts.createChart(el, {\n autoSize: true,\n layout: {\n background: { color: \"transparent\" },\n textColor: \"rgba(255,255,255,0.55)\",\n fontFamily: \"inherit\",\n },\n grid: {\n vertLines: { color: \"rgba(255,255,255,0.06)\" },\n horzLines: { color: \"rgba(255,255,255,0.06)\" },\n },\n rightPriceScale: {\n borderColor: \"rgba(230, 200, 126, 0.25)\",\n textColor: \"rgba(230, 200, 126, 0.7)\",\n },\n timeScale: {\n borderColor: \"rgba(255,255,255,0.06)\",\n timeVisible: true,\n secondsVisible: false,\n },\n crosshair: {\n vertLine: { color: \"rgba(255,255,255,0.12)\" },\n horzLine: { color: \"rgba(255,255,255,0.12)\" },\n },\n });\n\n const series = createCandlestickSeries(chart, {\n upColor: \"#0ecb81\",\n downColor: \"#f6465d\",\n borderVisible: false,\n wickUpColor: \"#0ecb81\",\n wickDownColor: \"#f6465d\",\n });\n\n chartRef.current = chart;\n seriesRef.current = series;\n\n return () => {\n chartRef.current = null;\n seriesRef.current = null;\n chart.remove();\n };\n }, []);\n\n React.useEffect(() => {\n const chart = chartRef.current;\n const series = seriesRef.current;\n if (!chart || !series) return;\n\n series.setData(data);\n\n if (priceLineRef.current) {\n series.removePriceLine(priceLineRef.current);\n priceLineRef.current = null;\n }\n\n if (resolvedPrice != null) {\n const priceLineColor = \"rgba(230, 200, 126, 0.9)\";\n\n priceLineRef.current = series.createPriceLine({\n price: resolvedPrice,\n color: priceLineColor,\n lineWidth: 1,\n lineStyle: 2,\n axisLabelVisible: true,\n title: resolvedPrice.toFixed(2),\n });\n }\n\n chart.timeScale().fitContent();\n }, [data, resolvedPrice]);\n\n const sign = inferredChangePercent == null ? null : inferredChangePercent >= 0 ? \"+\" : \"\";\n const changeClass =\n inferredChangePercent == null ? \"\" : inferredChangePercent >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n const badgeClass =\n inferredChangePercent == null\n ? \"\"\n : inferredChangePercent >= 0\n ? \"bg-[#0ecb81]/15 text-[#0ecb81]\"\n : \"bg-[#f6465d]/15 text-[#f6465d]\";\n\n const btnBaseStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-card-dark, rgba(255, 255, 255, 0.05))\",\n borderColor: \"var(--color-border, rgba(255, 255, 255, 0.12))\",\n color: \"var(--color-text-secondary, rgba(255, 255, 255, 0.7))\",\n };\n\n const btnHoverStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-accent-dark, rgba(230, 200, 126, 0.15))\",\n color: \"var(--color-text, #ffffff)\",\n };\n\n const btnActiveStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-accent, #e6c87e)\",\n borderColor: \"var(--color-accent, #e6c87e)\",\n color: \"#000000\",\n };\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full min-h-[360px] rounded-lg border border-white/10 bg-black/30 text-white backdrop-blur-md sm:min-h-[450px]\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"flex flex-col gap-4 px-4 pb-2 pt-5 md:flex-row md:items-start md:justify-between md:px-6 md:pt-6\">\n <div className=\"flex w-full flex-col gap-3 md:w-auto\">\n <CardTitle className=\"m-0 text-[1.1rem] font-semibold text-white\">{title}</CardTitle>\n\n <div className=\"flex flex-wrap gap-2\">\n {ranges.map((r) => {\n const active = r === selectedRange;\n const hovered = hoveredRange === r;\n const style: React.CSSProperties = {\n ...btnBaseStyle,\n ...(hovered ? btnHoverStyle : null),\n ...(active ? btnActiveStyle : null),\n };\n return (\n <button\n key={r}\n type=\"button\"\n onClick={() => onRangeChange?.(r)}\n onMouseEnter={() => setHoveredRange(r)}\n onMouseLeave={() => setHoveredRange((prev) => (prev === r ? null : prev))}\n style={style}\n className={cn(\n \"rounded border px-3 py-1 text-[0.85rem] font-medium transition-all duration-200\"\n )}\n >\n {r}\n </button>\n );\n })}\n </div>\n </div>\n\n {resolvedPrice == null && inferredChangePercent == null ? null : (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {resolvedPrice == null ? null : (\n <div \n className={cn(\"text-xl font-semibold tabular-nums\", changeClass)}\n style={{ marginRight: '1rem' }}\n >\n {formatPrice(resolvedPrice, currencySymbol)}\n </div>\n )}\n {dollarChange != null ? (\n <span \n className={cn(\"text-base font-medium tabular-nums\", changeClass)}\n style={{ marginRight: '0.5rem' }}\n >\n {dollarChange >= 0 ? \"+\" : \"\"}{dollarChange.toFixed(2)}\n </span>\n ) : null}\n {inferredChangePercent == null ? null : (\n <div\n className={cn(\n \"rounded-md px-2 py-1 text-xs font-semibold tabular-nums\",\n badgeClass\n )}\n >\n {sign}\n {inferredChangePercent?.toFixed(2)}%\n </div>\n )}\n </div>\n )}\n </CardHeader>\n\n <div className=\"px-4 pb-5 pt-2 md:px-6 md:pb-6\">\n <div\n ref={containerRef}\n className=\"w-full overflow-hidden rounded-lg\"\n style={{ height }}\n />\n </div>\n </Card>\n );\n }\n);\n\nPriceChart.displayName = \"PriceChart\";\n","import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { BedDouble, Bath, CarFront } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertyHeroHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n imageUrl: string;\n imageAlt?: string;\n name: string;\n location: string;\n price?: number;\n currencySymbol?: string;\n changePercent?: number;\n beds?: number;\n baths?: number;\n cars?: number;\n propertyTypeLabel?: string;\n onTrade?: () => void;\n onMakeOffer?: () => void;\n};\n\nconst formatPrice = (value: number, currencySymbol: string) => {\n return `${currencySymbol}${value.toLocaleString(undefined, {\n minimumFractionDigits: 3,\n maximumFractionDigits: 3,\n })}`;\n};\n\nexport const PropertyHeroHeader = React.forwardRef<HTMLDivElement, PropertyHeroHeaderProps>(\n (\n {\n className,\n imageUrl,\n imageAlt,\n name,\n location,\n price,\n currencySymbol = \"$\",\n changePercent,\n beds,\n baths,\n cars,\n propertyTypeLabel,\n onTrade,\n onMakeOffer,\n ...props\n },\n ref\n ) => {\n const isPositive = changePercent == null ? undefined : changePercent >= 0;\n const accentColor = \"#e6c87e\";\n const tradeHoverColor = \"#f5dd9a\";\n const [isTradeInteracting, setIsTradeInteracting] = React.useState(false);\n const [isOfferInteracting, setIsOfferInteracting] = React.useState(false);\n const hasAmenities = beds != null || baths != null || cars != null || propertyTypeLabel != null;\n\n const headingStyle: React.CSSProperties = {\n fontSize: \"clamp(1.6rem, 4vw, 2.5rem)\",\n marginBottom: \"0.5rem\",\n color: \"#ffffff\",\n textShadow: \"0 2px 4px rgba(0, 0, 0, 0.3)\",\n fontWeight: 600,\n lineHeight: 1.2,\n };\n return (\n <OuterWrapper ref={ref} className={cn(className)} {...props}>\n <HeroContainer>\n <HeroImage\n src={imageUrl}\n alt={imageAlt ?? name}\n />\n\n <HeroGradient aria-hidden=\"true\" />\n\n <div className=\"absolute bottom-0 left-0 right-0 z-10 flex w-full flex-wrap items-end justify-between gap-4 p-8 max-[768px]:gap-4 max-[640px]:gap-3 max-[768px]:p-6 max-[480px]:p-4\">\n <InfoCard>\n <div className=\"min-w-0 space-y-2\">\n <h1 style={headingStyle} className=\"break-words\">\n {name}\n </h1>\n\n <InfoRow className=\"mb-3 max-[768px]:mb-[0.6rem] max-[480px]:mb-[0.5rem]\">\n <LocationText>{location}</LocationText>\n {price == null ? null : (\n <PriceBlock>\n {formatPrice(price, currencySymbol)}\n {changePercent == null ? null : (\n <span\n className={cn(\n \"ml-2 flex items-center text-[0.875rem] font-medium\",\n isPositive ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"mr-[0.15rem]\"\n >\n <path d={isPositive ? \"M7 14l5-5 5 5H7z\" : \"M7 10l5 5 5-5H7z\"} />\n </svg>\n {Math.abs(changePercent).toFixed(2)}%\n </span>\n )}\n </PriceBlock>\n )}\n </InfoRow>\n </div>\n <div className=\"flex items-center gap-6 text-[0.95rem] text-white/90 max-[768px]:hidden\">\n {beds == null ? null : (\n <div className=\"flex items-center\">\n <BedDouble className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{beds} Beds</span>\n </div>\n )}\n {baths == null ? null : (\n <div className=\"flex items-center\">\n <Bath className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{baths} Baths</span>\n </div>\n )}\n {cars == null ? null : (\n <div className=\"flex items-center\">\n <CarFront className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{cars} Cars</span>\n </div>\n )}\n {propertyTypeLabel == null ? null : <div>{propertyTypeLabel}</div>}\n </div>\n </InfoCard>\n\n <ActionButtons>\n <button\n type=\"button\"\n onClick={onTrade}\n className=\"flex items-center justify-center rounded border font-semibold transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_4px_8px_rgba(0,0,0,0.2)] active:translate-y-0 active:shadow-[0_2px_4px_rgba(0,0,0,0.1)] text-[0.95rem] max-[480px]:text-[0.9rem]\"\n style={{\n backgroundColor: isTradeInteracting ? tradeHoverColor : accentColor,\n color: \"black\",\n width: \"88.06px\",\n height: \"43px\",\n minWidth: \"88.06px\",\n borderColor: isTradeInteracting ? accentColor : \"transparent\",\n boxShadow: isTradeInteracting ? `0 0 0 2px rgba(0,0,0,0.4), 0 0 0 4px ${accentColor}` : \"none\",\n }}\n onMouseEnter={() => setIsTradeInteracting(true)}\n onMouseLeave={() => setIsTradeInteracting(false)}\n onMouseDown={() => setIsTradeInteracting(true)}\n onMouseUp={() => setIsTradeInteracting(false)}\n onFocus={() => setIsTradeInteracting(true)}\n onBlur={() => setIsTradeInteracting(false)}\n onTouchStart={() => setIsTradeInteracting(true)}\n onTouchEnd={() => setIsTradeInteracting(false)}\n >\n Trade\n </button>\n\n <button\n type=\"button\"\n onClick={onMakeOffer}\n className=\"flex items-center justify-center rounded border font-semibold transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_4px_8px_rgba(0,0,0,0.2)] active:translate-y-0 active:shadow-[0_2px_4px_rgba(0,0,0,0.1)] text-[0.95rem] max-[480px]:text-[0.9rem]\"\n style={{\n backgroundColor: isOfferInteracting ? accentColor : \"transparent\",\n borderColor: accentColor,\n color: isOfferInteracting ? \"black\" : accentColor,\n width: \"127.14px\",\n height: \"43px\",\n minWidth: \"127.14px\",\n boxShadow: isOfferInteracting ? `0 0 0 2px rgba(0,0,0,0.4), 0 0 0 4px ${accentColor}` : \"none\",\n }}\n onMouseEnter={() => setIsOfferInteracting(true)}\n onMouseLeave={() => setIsOfferInteracting(false)}\n onMouseDown={() => setIsOfferInteracting(true)}\n onMouseUp={() => setIsOfferInteracting(false)}\n onFocus={() => setIsOfferInteracting(true)}\n onBlur={() => setIsOfferInteracting(false)}\n onTouchStart={() => setIsOfferInteracting(true)}\n onTouchEnd={() => setIsOfferInteracting(false)}\n >\n Make Offer\n </button>\n </ActionButtons>\n </div>\n </HeroContainer>\n\n {hasAmenities ? (\n <MobileAmenities>\n {beds == null ? null : (\n <MobileAmenity>\n <BedDouble className=\"h-4 w-4\" />\n <span>{beds} Beds</span>\n </MobileAmenity>\n )}\n {baths == null ? null : (\n <MobileAmenity>\n <Bath className=\"h-4 w-4\" />\n <span>{baths} Baths</span>\n </MobileAmenity>\n )}\n {cars == null ? null : (\n <MobileAmenity>\n <CarFront className=\"h-4 w-4\" />\n <span>{cars} Cars</span>\n </MobileAmenity>\n )}\n {propertyTypeLabel == null ? null : <MobileAmenity>{propertyTypeLabel}</MobileAmenity>}\n </MobileAmenities>\n ) : null}\n </OuterWrapper>\n );\n }\n);\n\nPropertyHeroHeader.displayName = \"PropertyHeroHeader\";\n\nconst OuterWrapper = styled.div`\n width: 100%;\n max-width: 1200px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n`;\n\nconst HeroContainer = styled.div`\n position: relative;\n width: 100%;\n height: 500px;\n border-radius: 12px;\n overflow: hidden;\n background-color: #000;\n\n @media (max-width: 1024px) {\n height: 420px;\n }\n\n @media (max-width: 768px) {\n height: 320px;\n }\n\n @media (max-width: 640px) {\n height: 280px;\n }\n\n @media (max-width: 540px) {\n height: 250px;\n }\n\n @media (max-width: 420px) {\n height: 220px;\n }\n\n @media (max-width: 360px) {\n height: 200px;\n }\n`;\n\nconst MobileAmenities = styled.div`\n display: none;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n background: rgba(8, 8, 12, 0.85);\n border-radius: 12px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.85);\n font-size: 0.85rem;\n\n @media (max-width: 768px) {\n display: flex;\n flex-wrap: wrap;\n }\n`;\n\nconst MobileAmenity = styled.span`\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.35rem 0.5rem;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.08);\n font-weight: 500;\n`;\n\nconst HeroImage = styled.img`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n transform: scale(1.15);\n transform-origin: center;\n min-width: 110%;\n transition: transform 0.5s ease-out;\n`;\n\nconst HeroGradient = styled.div`\n position: absolute;\n inset: 0;\n z-index: 1;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0.25) 45%, rgba(0, 0, 0, 0.75) 100%);\n`;\n\nconst ActionButtons = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.75rem;\n justify-content: flex-start;\n\n @media (max-width: 768px) {\n gap: 0.5rem;\n }\n\n @media (max-width: 640px) {\n display: none;\n }\n`;\n\nconst InfoCard = styled.div`\n display: inline-block;\n width: fit-content;\n max-width: 70%;\n border-radius: 12px;\n background: rgba(0, 0, 0, 0.12);\n padding: 0.75rem 1rem;\n color: #fff;\n backdrop-filter: blur(6px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);\n border: 1px solid rgba(255, 255, 255, 0.12);\n min-width: 0;\n\n @media (max-width: 768px) {\n max-width: 85%;\n }\n\n @media (max-width: 640px) {\n max-width: 92%;\n }\n\n @media (max-width: 480px) {\n max-width: 95%;\n }\n`;\n\nconst InfoRow = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n\n @media (max-width: 640px) {\n gap: 0.5rem;\n }\n`;\n\nconst LocationText = styled.span`\n font-size: clamp(1rem, 2.6vw, 1.25rem);\n color: rgba(255, 255, 255, 0.9);\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst PriceBlock = styled.span`\n display: flex;\n align-items: center;\n font-size: clamp(1rem, 2.2vw, 1.25rem);\n font-weight: 600;\n color: var(--color-accent, #f0b90b);\n padding-left: 1rem;\n border-left: 1px solid rgba(255, 255, 255, 0.25);\n min-height: 1.5rem;\n`;\n\n\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertySubheaderTab = {\n id: string;\n label: string;\n hasNotification?: boolean;\n notificationColor?: string;\n};\n\nexport type PropertySubheaderAction = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n};\n\nexport type PropertySubheaderProps = React.HTMLAttributes<HTMLDivElement> & {\n tabs: PropertySubheaderTab[];\n activeTabId: string;\n onTabChange?: (tabId: string) => void;\n actions?: PropertySubheaderAction[];\n};\n\nexport const PropertySubheader = React.forwardRef<HTMLDivElement, PropertySubheaderProps>(\n ({ className, tabs, activeTabId, onTabChange, actions, ...props }, ref) => {\n const tabsContainerRef = React.useRef<HTMLDivElement>(null);\n\n // Force scrollbar to be always visible on mobile\n React.useEffect(() => {\n const container = tabsContainerRef.current;\n if (!container) return;\n\n // Only apply on mobile where scrollbar is hidden by default\n const isMobile = window.innerWidth <= 768;\n if (!isMobile) return;\n\n // Force scrollbar to appear by slightly scrolling and resetting\n const forceScrollbar = () => {\n if (container.scrollWidth > container.clientWidth) {\n // Element is scrollable, force scrollbar visibility\n container.scrollTop = 1; // Triggers scrollbar in some browsers\n container.scrollTop = 0;\n container.scrollLeft = 1;\n container.scrollLeft = 0;\n }\n };\n\n // Initial check\n setTimeout(forceScrollbar, 100);\n\n // Also check on resize in case orientation changes\n window.addEventListener('resize', forceScrollbar);\n return () => window.removeEventListener('resize', forceScrollbar);\n }, [tabs]);\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full font-normal\",\n \"flex flex-col-reverse gap-3\",\n \"md:flex-row md:items-center md:justify-between\",\n className\n )}\n {...props}\n >\n <div\n ref={tabsContainerRef}\n className={cn(\n \"flex items-center border-b border-white/10\",\n \"overflow-x-auto md:overflow-visible\",\n \"[-webkit-overflow-scrolling:touch]\",\n \"[scroll-behavior:smooth]\",\n \"[touch-action:pan-x]\",\n \"md:border-b-0\"\n )}\n style={{ WebkitTapHighlightColor: \"transparent\" }}\n >\n <div className=\"flex min-w-max\">\n {tabs.map((tab) => {\n const active = tab.id === activeTabId;\n\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => onTabChange?.(tab.id)}\n className={cn(\n \"relative whitespace-nowrap\",\n \"px-6 py-4\",\n \"font-normal\",\n \"transition-colors\",\n \"max-[768px]:px-[1.2rem] max-[768px]:py-[0.8rem]\",\n \"max-[480px]:px-4 max-[480px]:py-[0.7rem] max-[480px]:text-[0.9rem]\",\n active\n ? \"font-semibold text-[var(--color-accent,#e6c87e)]\"\n : \"text-white/60 hover:text-white\"\n )}\n style={{\n borderBottom: active ? \"2px solid var(--color-accent, #e6c87e)\" : \"2px solid transparent\",\n minWidth: \"80px\",\n touchAction: \"manipulation\",\n }}\n >\n {tab.label}\n\n {tab.hasNotification ? (\n <span\n className=\"absolute right-[10px] top-[10px] h-2 w-2 rounded-full animate-pulse\"\n style={{\n backgroundColor: tab.notificationColor ?? \"#f6465d\",\n boxShadow: \"0 0 0 0 rgba(246, 70, 93, 0.7)\",\n }}\n />\n ) : null}\n </button>\n );\n })}\n </div>\n </div>\n\n {actions != null && actions.length > 0 ? (\n <div\n className={cn(\n \"flex items-center gap-[10px]\",\n \"overflow-x-auto md:overflow-visible\",\n \"[scrollbar-width:none]\",\n \"md:justify-end\",\n \"max-[768px]:w-full max-[768px]:justify-center max-[768px]:pb-2 max-[768px]:mb-4\"\n )}\n >\n {actions.map((action) => (\n <button\n key={action.id}\n type=\"button\"\n onClick={action.onClick}\n className={cn(\n \"flex shrink-0 items-center gap-[5px] whitespace-nowrap\",\n \"rounded\",\n \"border border-white/10\",\n \"bg-transparent\",\n \"px-3 py-1.5 text-[14px] font-normal\",\n \"transition-all\",\n \"max-[768px]:px-2.5 max-[768px]:py-[5px] max-[768px]:text-[13px]\",\n \"hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)]\"\n )}\n >\n {action.icon}\n {action.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nPropertySubheader.displayName = \"PropertySubheader\";\n","import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type MobileTradeNavItem = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n};\n\nexport type MobileTradeNavProps = React.HTMLAttributes<HTMLDivElement> & {\n items: MobileTradeNavItem[];\n activeId: string;\n onChange?: (itemId: string) => void;\n};\n\nconst MobileToggleContainer = styled.div`\n display: none;\n \n @media (max-width: 1024px) {\n display: flex;\n gap: 0.5rem;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: var(--color-card-darker, #111);\n padding: 0.75rem 1rem;\n padding-bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));\n border-top: 1px solid var(--color-border);\n z-index: 100;\n box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.3);\n }\n`;\n\nconst MobileToggleButton = styled.button<{ active: boolean }>`\n flex: 1;\n padding: 0.75rem;\n background-color: ${(props) => (props.active ? \"var(--color-accent)\" : \"transparent\")};\n color: ${(props) => (props.active ? \"#000\" : \"var(--color-text-secondary)\")};\n border: ${(props) =>\n props.active ? \"1px solid var(--color-accent)\" : \"1px solid rgba(255, 255, 255, 0.2)\"};\n border-radius: 6px;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n \n &:hover {\n background-color: ${(props) =>\n props.active ? \"var(--color-accent-hover)\" : \"rgba(255, 255, 255, 0.05)\"};\n border-color: ${(props) =>\n props.active ? \"var(--color-accent)\" : \"rgba(255, 255, 255, 0.3)\"};\n }\n \n @media (max-width: 480px) {\n font-size: 0.85rem;\n padding: 0.6rem 0.5rem;\n }\n`;\n\nexport const MobileTradeNav = React.forwardRef<HTMLDivElement, MobileTradeNavProps>(\n ({ className, items, activeId, onChange, ...props }, ref) => {\n return (\n <MobileToggleContainer ref={ref} className={cn(className)} {...props}>\n {items.map((item) => (\n <MobileToggleButton\n key={item.id}\n type=\"button\"\n active={item.id === activeId}\n onClick={() => onChange?.(item.id)}\n >\n {item.icon}\n {item.label}\n </MobileToggleButton>\n ))}\n </MobileToggleContainer>\n );\n }\n);\n\nMobileTradeNav.displayName = \"MobileTradeNav\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/cn.ts","../src/components/button.tsx","../src/components/badge.tsx","../src/components/card.tsx","../src/components/portfolio-summary.tsx","../src/components/house-position-slider.tsx","../src/components/house-position-slider-mobile.tsx","../../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../../node_modules/.pnpm/@emotion+memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../../node_modules/.pnpm/@emotion+is-prop-valid@1.4.0/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Enum.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Utility.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Tokenizer.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Parser.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Prefixer.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Serializer.js","../../../../node_modules/.pnpm/stylis@4.3.6/node_modules/stylis/src/Middleware.js","../../../../node_modules/.pnpm/@emotion+unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constants.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/checkDynamicCreation.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/empties.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/determineTheme.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/domElements.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/escape.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/generateAlphabeticName.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/hash.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/generateComponentId.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/getComponentName.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isTag.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/hoist.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isFunction.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isStyledComponent.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/joinStrings.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isPlainObject.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/mixinDeep.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/setToString.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/errors.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/error.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/GroupedTag.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/GroupIDAllocator.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/Rehydration.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/nonce.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/dom.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/Tag.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/sheet/Sheet.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/stylis.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/StyleSheetManager.tsx","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/Keyframes.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/addUnitIfNeeded.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/hyphenateStyleName.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/flatten.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isStatelessFunction.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/isStaticRules.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/ComponentStyle.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/ThemeProvider.tsx","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/models/StyledComponent.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/generateDisplayName.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/createWarnTooManyClasses.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/utils/interleave.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constructors/css.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constructors/constructWithOptions.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constructors/styled.tsx","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/constructors/keyframes.ts","../../../../node_modules/.pnpm/styled-components@6.3.6_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/styled-components/src/base.ts","../src/components/loaf-liquidity-badge.tsx","../src/components/orderbook.tsx","../src/components/property-tour.tsx","../src/components/property-news-updates.tsx","../src/components/property-compare-bar.tsx","../src/components/your-orders.tsx","../src/components/price-chart.tsx","../src/components/property-hero-header.tsx","../src/components/property-subheader.tsx","../src/components/mobile-trade-nav.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","React3","React4","formatCurrency","formatPercent","jsxs","v","a","b","React5","o","y","next","clamp","fmt0","React6","__assign","p","from","l","length","position","character","characters","j","k","x","z","_","c","d","f","SC_ATTR","process","env","REACT_APP_SC_ATTR","SC_ATTR_ACTIVE","SC_ATTR_VERSION","SC_VERSION","SPLITTER","IS_BROWSER","window","document","IS_RSC","createContext","DISABLE_SPEEDY","Boolean","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","NODE_ENV","invalidHookCallRe","seen","Set","checkDynamicCreation","displayName","componentId","parsedIdString","concat","message_1","originalConsoleError_1","console","error","didNotCallInvalidHook_1","consoleErrorMessage","consoleErrorArgs","_i","arguments","test","delete","apply","__spreadArray","useState","has","warn","add","message","EMPTY_ARRAY","Object","freeze","EMPTY_OBJECT","determineTheme","props","providedTheme","defaultProps","theme","domElements","escapeRegex","dashesAtEnds","escape","str","replace","AD_REPLACER_R","getAlphabeticChar","code","String","fromCharCode","generateAlphabeticName","name","Math","abs","phash","h","i","charCodeAt","hash","generateComponentId","getComponentName","target","isTag","charAt","toLowerCase","hasSymbol","Symbol","for","REACT_MEMO_TYPE","REACT_FORWARD_REF_TYPE","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","prototype","caller","callee","arity","MEMO_STATICS","$$typeof","compare","TYPE_STATICS","_a","render","getStatics","component","object","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","excludelist","inheritedComponent","keys","targetStatics","sourceStatics","key","descriptor","e","isFunction","isStyledComponent","joinStrings","joinStringArray","arr","sep","result","isPlainObject","constructor","mixinRecursively","source","forceMerge","Array","isArray","setToString","toStringFn","value","ERRORS","format","args","len","push","forEach","throwStyledComponentsError","interpolations","Error","join","trim","DefaultGroupedTag","tag","this","groupSizes","Uint32Array","indexOfGroup","group","index","insertRules","rules","oldBuffer","oldSize","newSize","styledError","set","ruleIndex","insertRule","clearGroup","length_1","startIndex","endIndex","deleteRule","getGroup","css","getRule","MAX_SMI","groupIDRegister","Map","reverseRegister","nextFreeGroup","getGroupForId","id","get","setGroupForId","SELECTOR","MARKER_RE","RegExp","rehydrateNamesFromContent","sheet","content","names","split","registerName","rehydrateSheetFromTag","style","parts","textContent","part","marker","match","parseInt","getTag","rehydrateSheet","nodes","querySelectorAll","node","getAttribute","parentNode","removeChild","getNonce","__webpack_nonce__","makeStyleTag","head","parent","createElement","prevStyle","nextSibling","setAttribute","nonce","insertBefore","CSSOMTag","element","appendChild","createTextNode","styleSheets","ownerNode","rule","_error","cssRules","cssText","TextTag","childNodes","VirtualTag","_target","splice","SHOULD_REHYDRATE","defaultOptions","isServer","useCSSOMInjection","StyleSheet","options","globalStyles","_this","gs","server","r","size","selector","registerId","rehydrate","reconstructWithOptions","withNames","undefined","allocateGSInstance","hasNameForId","groupNames","clearNames","clear","clearRules","clearTag","AMP_REGEX","SLASH","hasUnbalancedBraces","indexOf","depth","inString","inComment","recursivelySetNamepace","compiled","namespace","map","replaceAll","prop","children","createStylisInstance","_componentId","_selector","_selectorRegexp","_b","_c","_d","plugins","selfReferenceReplacer","offset","string","startsWith","endsWith","middlewares","slice","RULESET","includes","prefix","prefixer","stringify","stringifyRules","flatCSS","declStart","braceDepth","skipEnd","skipCode","substring","remaining","start","urlDepth","compile","stack","serialize","middleware","rulesheet","reduce","acc","plugin","throwStyledError","toString","mainSheet","mainStylis","defaultContextValue","shouldForwardProp","styleSheet","stylis","StyleSheetContext","Provider","Consumer","useStyleSheetContext","useContext","Keyframes","inject","stylisInstance","resolvedName","getName","addUnitIfNeeded","unitless","isUpper","hyphenateStyleName","output","isFalsish","chunk","objToCssArray","obj","val","hasOwnProperty","isCss","hyphenate","flatten","executionContext","styledComponentId","isReactComponent","chunklet","isStaticRules","SEED","ComponentStyle","baseStyle","staticRulesId","isStatic","baseHash","generateAndInjectStyles","className","cssStatic","name_1","generateName","cssStaticFormatted","dynamicHash","partRule","partString","name_2","cssFormatted","ThemeContext","identifiers","seenUnknownProps","createStyledComponent","isTargetStyledComp","styledComponentTarget","isCompositeComponent","attrs","parentComponentId","finalAttrs","filter","shouldForwardPropFn_1","passedShouldForwardPropFn_1","elementToBeCreated","componentStyle","forwardRefRender","ref","forwardedComponent","forwardedRef","componentAttrs","foldedComponentIds","contextTheme","ssc","useDebugValue","context","attrDef","resolvedAttrDef","as","propsForElement","forwardedAs","isPropValid","resolvedAttrs","generatedClassName","warnTooManyClasses","classString","Fragment","precedence","href","WrappedStyledComponent","forwardRef","_foldedDefaultProps","sources","sources_1","generatedClasses","warningSeen","hoist","interleave","strings","addTag","arg","assign","styles","styleStringArray","constructWithOptions","componentConstructor","templateFunction","initialStyles","withConfig","config","baseStyled","styled","domElement","keyframes","navigator","product","windowGlobalKey","React7","React8","React9","React10","prev","Newspaper","React11","React12","LightweightCharts","React13","timeScale","formatPrice","React14","PriceBlock","BedDouble","Bath","CarFront","React15","React16"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center font-semibold transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n primary: \"bg-teal-500 text-slate-950 hover:bg-teal-400 focus-visible:ring-teal-200\",\n accent:\n \"bg-[var(--color-accent,#e6c87e)] text-black hover:bg-[var(--color-accent-hover,#f8d12f)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n accentOutline:\n \"border border-[var(--color-accent,#e6c87e)] bg-transparent text-[var(--color-accent,#e6c87e)] hover:bg-[rgba(230,200,126,0.10)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n media:\n \"border border-white/10 bg-transparent text-white/90 hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n outline:\n \"border border-slate-800/20 bg-white text-slate-900 hover:border-slate-800/40 focus-visible:ring-slate-200\",\n ghost:\n \"bg-transparent text-slate-900 hover:bg-slate-900/5 focus-visible:ring-slate-200\",\n danger: \"bg-rose-500 text-white hover:bg-rose-400 focus-visible:ring-rose-200\",\n },\n size: {\n sm: \"h-9 px-4 text-sm\",\n md: \"h-11 px-6 text-base\",\n lg: \"h-12 px-7 text-lg\",\n icon: \"h-10 w-10\",\n },\n radius: {\n pill: \"rounded-full\",\n md: \"rounded\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"pill\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, radius, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size, radius }), className)}\n {...props}\n />\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nexport const badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-3 py-1 text-xs font-semibold uppercase tracking-wide transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-slate-900 text-white focus-visible:ring-slate-300\",\n muted:\n \"border-transparent bg-slate-100 text-slate-600 focus-visible:ring-slate-200\",\n outline: \"border-slate-200 bg-white text-slate-600 focus-visible:ring-slate-200\",\n success:\n \"border-transparent bg-teal-500/15 text-teal-600 focus-visible:ring-teal-200\",\n active:\n \"border-transparent bg-[rgba(14,203,129,0.25)] text-[#0ecb81] focus-visible:ring-[rgba(14,203,129,0.35)]\",\n pending:\n \"border-transparent bg-white/10 text-white/60 focus-visible:ring-white/20\",\n rejected:\n \"border-transparent bg-[rgba(246,70,93,0.20)] text-[#f6465d] focus-visible:ring-[rgba(246,70,93,0.30)]\",\n },\n size: {\n sm: \"px-2.5 py-0.5 text-[11px]\",\n md: \"px-3 py-1 text-xs\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant, size }), className)} {...props} />\n )\n);\n\nBadge.displayName = \"Badge\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-3xl border border-slate-200 bg-white shadow-sm transition hover:shadow-md\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-xl font-semibold tracking-tight text-slate-900\", className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-slate-500\", className)} {...props} />\n )\n);\nCardDescription.displayName = \"CardDescription\";\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-6 pb-6 pt-2 text-sm text-slate-600\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center border-t border-slate-100 px-6 py-4\", className)} {...props} />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"./card\";\n\nconst defaultFormatCurrency = (value: number) =>\n new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(value);\n\nconst defaultFormatPercent = (value: number) => {\n const sign = value >= 0 ? \"+\" : \"-\";\n return `${sign}${Math.abs(value).toFixed(2)}%`;\n};\n\nconst defaultFormatSignedCurrency = (value: number) => {\n const sign = value >= 0 ? \"+\" : \"-\";\n return `${sign}${defaultFormatCurrency(Math.abs(value))}`;\n};\n\nexport interface PortfolioSummaryProps extends React.HTMLAttributes<HTMLDivElement> {\n availableCash: number;\n portfolioValue: number;\n totalReturnPercent: number;\n unrealizedPnl: number;\n onResetAccount?: () => void;\n positionsHeading?: string;\n emptyPositionsText?: string;\n formatCurrency?: (value: number) => string;\n formatPercent?: (value: number) => string;\n formatSignedCurrency?: (value: number) => string;\n children?: React.ReactNode;\n}\n\nexport const PortfolioSummary = React.forwardRef<HTMLDivElement, PortfolioSummaryProps>(\n (\n {\n availableCash,\n portfolioValue,\n totalReturnPercent,\n unrealizedPnl,\n onResetAccount,\n positionsHeading = \"Current Positions\",\n emptyPositionsText = \"No positions yet. Start trading to build your portfolio!\",\n formatCurrency = defaultFormatCurrency,\n formatPercent = defaultFormatPercent,\n formatSignedCurrency = defaultFormatSignedCurrency,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const totalReturnClassName = totalReturnPercent >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n\n const pnlClassName = unrealizedPnl >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[560px] rounded-[12px] border border-white/10 bg-black/30 p-6 text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"p-0 pb-4\">\n <div className=\"flex items-center justify-between gap-4\">\n <CardTitle className=\"m-0 text-[1.1rem] font-semibold text-white\">Portfolio Summary</CardTitle>\n {onResetAccount ? (\n <button\n type=\"button\"\n onClick={onResetAccount}\n className=\"cursor-pointer rounded-[6px] border border-white/20 bg-white/10 px-[0.7rem] py-[0.35rem] text-xs text-[#888] transition-all duration-150 hover:border-white/30 hover:bg-white/[0.15] hover:text-white\"\n >\n Reset Account\n </button>\n ) : null}\n </div>\n <div className=\"mt-3 h-px w-full bg-white/10\" />\n </CardHeader>\n\n <CardContent className=\"p-0 pt-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Available Cash</p>\n <p className=\"mt-1 text-[1.25rem] font-semibold text-white\">{formatCurrency(availableCash)}</p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Portfolio Value</p>\n <p className=\"mt-1 text-[1.25rem] font-semibold text-white\">{formatCurrency(portfolioValue)}</p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Total Return</p>\n <p className={cn(\"mt-1 text-[1.25rem] font-semibold\", totalReturnClassName)}>\n {formatPercent(totalReturnPercent)}\n </p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Unrealized P&L</p>\n <p className={cn(\"mt-1 text-[1.25rem] font-semibold\", pnlClassName)}>\n {formatSignedCurrency(unrealizedPnl)}\n </p>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <p className=\"m-0 text-[0.9rem] font-medium text-white/70\">{positionsHeading}</p>\n <div className=\"mt-3\">\n {children ? (\n children\n ) : (\n <p className=\"py-4 text-center text-[0.85rem] text-white/40\">{emptyPositionsText}</p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n }\n);\n\nPortfolioSummary.displayName = \"PortfolioSummary\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { type OrderbookLevel } from \"./orderbook\";\n\nexport type HousePositionPendingOrder = {\n type: \"buy\" | \"sell\";\n tokens: number;\n value: number;\n price: number;\n};\n\nexport type HousePositionSliderOrderPayload = {\n side: \"buy\" | \"sell\";\n orderType: \"market\" | \"limit\";\n tokenId: string;\n tokenSymbol: string;\n price: number;\n deltaTokens: number;\n deltaValue: number;\n targetOwnership: number;\n targetTokens: number;\n targetValue: number;\n};\n\nexport type HousePositionOrderbook = {\n bids?: OrderbookLevel[];\n asks?: OrderbookLevel[];\n};\n\nexport interface HousePositionSliderProps extends React.HTMLAttributes<HTMLDivElement> {\n tokenId: string;\n tokenSymbol: string;\n totalTokens: number;\n currentPrice: number;\n availableCash: number;\n tokensHeld: number;\n pendingOrders?: HousePositionPendingOrder[];\n defaultOrderType?: \"market\" | \"limit\";\n orderbook?: HousePositionOrderbook;\n ownershipPercentOverride?: number;\n onConfirmOrder?: (payload: HousePositionSliderOrderPayload) => void;\n}\n\nconst clamp = (v: number, min: number, max: number) => Math.min(max, Math.max(min, v));\nconst fmt0 = (v: number) => Math.abs(v).toLocaleString(undefined, { maximumFractionDigits: 0 });\n\ntype MarketFillResult = {\n tokens: number;\n value: number;\n avgPrice: number | null;\n};\n\nconst normalizeLevels = (levels: OrderbookLevel[] = []) =>\n levels.filter((level) => Number.isFinite(level.price) && level.price > 0 && Number.isFinite(level.amount) && level.amount > 0);\n\nconst estimateMarketBuyFromUsd = (levels: OrderbookLevel[] = [], usdAmount: number): MarketFillResult => {\n if (!Number.isFinite(usdAmount) || usdAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const asks = normalizeLevels(levels).sort((a, b) => a.price - b.price);\n let remainingUsd = usdAmount;\n let tokensFilled = 0;\n let spent = 0;\n\n for (const level of asks) {\n if (remainingUsd <= 0) break;\n const levelValueCapacity = level.amount * level.price;\n const usdToSpend = Math.min(remainingUsd, levelValueCapacity);\n const tokensFromLevel = usdToSpend / level.price;\n tokensFilled += tokensFromLevel;\n spent += usdToSpend;\n remainingUsd -= usdToSpend;\n }\n\n return {\n tokens: tokensFilled,\n value: spent,\n avgPrice: tokensFilled > 0 ? spent / tokensFilled : null,\n };\n};\n\nconst estimateMarketBuyFromTokens = (levels: OrderbookLevel[] = [], tokenAmount: number): MarketFillResult => {\n if (!Number.isFinite(tokenAmount) || tokenAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const asks = normalizeLevels(levels).sort((a, b) => a.price - b.price);\n let remainingTokens = tokenAmount;\n let tokensFilled = 0;\n let spent = 0;\n\n for (const level of asks) {\n if (remainingTokens <= 0) break;\n const tokensFromLevel = Math.min(remainingTokens, level.amount);\n spent += tokensFromLevel * level.price;\n tokensFilled += tokensFromLevel;\n remainingTokens -= tokensFromLevel;\n }\n\n return {\n tokens: tokensFilled,\n value: spent,\n avgPrice: tokensFilled > 0 ? spent / tokensFilled : null,\n };\n};\n\nconst estimateMarketSellFromTokens = (levels: OrderbookLevel[] = [], tokenAmount: number): MarketFillResult => {\n if (!Number.isFinite(tokenAmount) || tokenAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const bids = normalizeLevels(levels).sort((a, b) => b.price - a.price);\n let remainingTokens = tokenAmount;\n let tokensFilled = 0;\n let received = 0;\n\n for (const level of bids) {\n if (remainingTokens <= 0) break;\n const tokensFromLevel = Math.min(remainingTokens, level.amount);\n received += tokensFromLevel * level.price;\n tokensFilled += tokensFromLevel;\n remainingTokens -= tokensFromLevel;\n }\n\n return {\n tokens: tokensFilled,\n value: received,\n avgPrice: tokensFilled > 0 ? received / tokensFilled : null,\n };\n};\n\nexport function HousePositionSlider({\n tokenId,\n tokenSymbol,\n totalTokens,\n currentPrice,\n availableCash,\n tokensHeld,\n pendingOrders = [],\n defaultOrderType = \"market\",\n orderbook,\n ownershipPercentOverride,\n onConfirmOrder,\n className,\n ...props\n}: HousePositionSliderProps) {\n const [orderMode, setOrderMode] = React.useState<\"none\" | \"buy\" | \"sell\">(\"none\");\n const [buyTrackingMode, setBuyTrackingMode] = React.useState<\"dollars\" | \"tokens\">(\"dollars\");\n const [deltaDollars, setDeltaDollars] = React.useState(0);\n const [deltaTokensBuy, setDeltaTokensBuy] = React.useState(0);\n const [deltaTokensSell, setDeltaTokensSell] = React.useState(0);\n const [isDragging, setIsDragging] = React.useState(false);\n const [visualTargetPct, setVisualTargetPct] = React.useState<number | null>(null);\n\n const [orderType, setOrderType] = React.useState<\"market\" | \"limit\">(defaultOrderType);\n const [limitPrice, setLimitPrice] = React.useState(currentPrice);\n const [limitPriceInput, setLimitPriceInput] = React.useState(currentPrice.toFixed(2));\n const [limitPriceDirty, setLimitPriceDirty] = React.useState(false);\n\n const [ownershipInput, setOwnershipInput] = React.useState(\"\");\n const [tokenAmountInput, setTokenAmountInput] = React.useState(\"\");\n\n const houseRef = React.useRef<HTMLDivElement | null>(null);\n\n const asks = orderbook?.asks ?? [];\n const bids = orderbook?.bids ?? [];\n\n React.useEffect(() => {\n if (orderType !== \"limit\") return;\n if (limitPriceDirty) return;\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n }, [currentPrice, limitPriceDirty, orderType]);\n\n const effectivePrice = orderType === \"limit\" ? limitPrice : currentPrice;\n const pendingBuyValue = pendingOrders.filter((o) => o.type === \"buy\").reduce((s, o) => s + o.value, 0);\n const pendingSellTokens = pendingOrders.filter((o) => o.type === \"sell\").reduce((s, o) => s + Math.abs(o.tokens), 0);\n\n const effectiveAvailableCash = Math.max(0, availableCash - pendingBuyValue);\n const effectiveTokensHeld = Math.max(0, tokensHeld - pendingSellTokens);\n\n const holdingsValue = tokensHeld * effectivePrice;\n const safeTotalTokens = totalTokens > 0 ? totalTokens : 1;\n const baselineOwnershipActual = clamp((effectiveTokensHeld / safeTotalTokens) * 100, 0, 100);\n\n let deltaTokens = 0;\n let deltaValue = 0;\n let marketAvgPrice: number | null = null;\n let targetTokens = tokensHeld;\n let targetValue = holdingsValue;\n\n const limitPriceSafe = limitPrice > 0 ? limitPrice : currentPrice || 1;\n\n if (orderMode === \"buy\") {\n if (orderType === \"market\") {\n if (buyTrackingMode === \"tokens\") {\n const desiredTokens = Math.max(0, deltaTokensBuy);\n const result = estimateMarketBuyFromTokens(asks, desiredTokens);\n deltaTokens = result.tokens;\n deltaValue = result.value;\n marketAvgPrice = result.avgPrice;\n } else {\n const notional = Math.min(Math.max(0, deltaDollars), effectiveAvailableCash);\n const result = estimateMarketBuyFromUsd(asks, notional);\n deltaTokens = result.tokens;\n deltaValue = result.value;\n marketAvgPrice = result.avgPrice;\n }\n } else {\n if (buyTrackingMode === \"tokens\") {\n deltaTokens = deltaTokensBuy;\n deltaValue = deltaTokensBuy * limitPriceSafe;\n } else {\n const notional = Math.min(Math.max(0, deltaDollars), effectiveAvailableCash);\n deltaValue = notional;\n deltaTokens = notional / limitPriceSafe;\n }\n }\n } else if (orderMode === \"sell\") {\n if (orderType === \"market\") {\n const tokensToSell = Math.abs(deltaTokensSell);\n const result = estimateMarketSellFromTokens(bids, tokensToSell);\n deltaTokens = -result.tokens;\n deltaValue = -result.value;\n marketAvgPrice = result.avgPrice;\n } else {\n deltaTokens = deltaTokensSell;\n deltaValue = deltaTokensSell * limitPriceSafe;\n }\n }\n\n targetTokens = tokensHeld + deltaTokens;\n targetValue = targetTokens * effectivePrice;\n\n const sliderTargetTokens = clamp(effectiveTokensHeld + deltaTokens, 0, safeTotalTokens);\n const normalizedTargetPct = (sliderTargetTokens / safeTotalTokens) * 100;\n\n const isIncrease = orderMode === \"buy\";\n const hasChange = orderMode !== \"none\" && (Math.abs(deltaTokens) > 0.001 || Math.abs(deltaValue) > 0.01);\n\n const currentOwnership = totalTokens <= 0 ? 0 : clamp((tokensHeld / totalTokens) * 100, 0, 100);\n const targetOwnership = totalTokens <= 0 ? 0 : clamp((targetTokens / totalTokens) * 100, 0, 100);\n\n const ownershipOverrideValue =\n typeof ownershipPercentOverride === \"number\" && Number.isFinite(ownershipPercentOverride)\n ? clamp(ownershipPercentOverride, 0, 100)\n : null;\n const ownershipShift = ownershipOverrideValue != null ? ownershipOverrideValue - baselineOwnershipActual : 0;\n const baselinePct = clamp(ownershipOverrideValue ?? baselineOwnershipActual, 0, 100);\n const impliedTargetPct = clamp(normalizedTargetPct + ownershipShift, 0, 100);\n const displayTargetPct = visualTargetPct ?? impliedTargetPct;\n const targetPct = displayTargetPct;\n const displayCurrentOwnership = clamp(ownershipOverrideValue ?? currentOwnership, 0, 100);\n const impliedDisplayTargetOwnership = clamp(targetOwnership + ownershipShift, 0, 100);\n const displayTargetOwnership = visualTargetPct ?? impliedDisplayTargetOwnership;\n\n const estFeeTokens = (Math.abs(deltaValue) * 0.005) / (effectivePrice || 1);\n\n const resetOrder = React.useCallback(() => {\n setOrderMode(\"none\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n setVisualTargetPct(null);\n }, []);\n\n const updateOrderFromTargetValue = React.useCallback(\n (newTargetValue: number) => {\n const newDeltaValue = newTargetValue - holdingsValue;\n\n if (newDeltaValue > 0) {\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(Math.min(newDeltaValue, effectiveAvailableCash));\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n return;\n }\n\n if (newDeltaValue < 0) {\n const newDeltaTokens = newTargetValue / (effectivePrice || 1) - tokensHeld;\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(Math.max(newDeltaTokens, -effectiveTokensHeld));\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n return;\n }\n\n resetOrder();\n },\n [effectiveAvailableCash, effectivePrice, effectiveTokensHeld, holdingsValue, resetOrder, tokensHeld]\n );\n\n const updateOrderFromOwnership = React.useCallback(\n (newOwnershipPercent: number) => {\n const nextOwnership = clamp(newOwnershipPercent, 0, 100);\n const newTargetTokens = (nextOwnership / 100) * totalTokens;\n updateOrderFromTargetValue(newTargetTokens * effectivePrice);\n setVisualTargetPct(nextOwnership);\n },\n [effectivePrice, totalTokens, updateOrderFromTargetValue]\n );\n\n const updateOrderFromTokenAmount = React.useCallback(\n (tokenAmountSigned: number) => {\n if (tokenAmountSigned > 0) {\n const maxTokens = effectiveAvailableCash / (effectivePrice || 1);\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"tokens\");\n setDeltaTokensBuy(Math.min(tokenAmountSigned, maxTokens));\n setDeltaDollars(0);\n setDeltaTokensSell(0);\n return;\n }\n\n if (tokenAmountSigned < 0) {\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(Math.max(tokenAmountSigned, -effectiveTokensHeld));\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n return;\n }\n\n resetOrder();\n },\n [effectiveAvailableCash, effectivePrice, effectiveTokensHeld, resetOrder]\n );\n\n const updateOrderFromSlider = React.useCallback(\n (pct: number) => {\n const normalized = (pct - 50) / 50;\n const magnitude = Math.min(Math.abs(normalized), 1);\n if (magnitude < 0.02) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n if (normalized > 0) {\n const notional = clamp(magnitude * effectiveAvailableCash, 0, effectiveAvailableCash);\n if (notional <= 0) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(notional);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n setVisualTargetPct(clamp(pct, 0, 100));\n return;\n }\n if (normalized < 0) {\n const tokensToSell = clamp(magnitude * effectiveTokensHeld, 0, effectiveTokensHeld);\n if (tokensToSell <= 0) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(-tokensToSell);\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setVisualTargetPct(clamp(pct, 0, 100));\n return;\n }\n resetOrder();\n setVisualTargetPct(null);\n },\n [effectiveAvailableCash, effectiveTokensHeld, resetOrder]\n );\n\n const handleDragAtClientY = React.useCallback(\n (clientY: number) => {\n if (!houseRef.current) return;\n const rect = houseRef.current.getBoundingClientRect();\n const y = clientY - rect.top;\n const pct = clamp(100 - (y / rect.height) * 100, 0, 100);\n updateOrderFromSlider(pct);\n },\n [updateOrderFromSlider]\n );\n\n const onMouseDown = (e: React.MouseEvent) => {\n e.preventDefault();\n setIsDragging(true);\n\n const onMove = (ev: MouseEvent) => handleDragAtClientY(ev.clientY);\n const onUp = () => {\n setIsDragging(false);\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n };\n\n const onTouchStart = () => {\n setIsDragging(true);\n\n const onMove = (ev: TouchEvent) => {\n const touch = ev.touches[0];\n if (!touch) return;\n handleDragAtClientY(touch.clientY);\n };\n const onEnd = () => {\n setIsDragging(false);\n document.removeEventListener(\"touchmove\", onMove);\n document.removeEventListener(\"touchend\", onEnd);\n };\n\n document.addEventListener(\"touchmove\", onMove);\n document.addEventListener(\"touchend\", onEnd);\n };\n\n const handleCancel = () => {\n resetOrder();\n };\n\n const handleOrderTypeSelection = (next: \"market\" | \"limit\") => {\n setOrderType(next);\n if (next === \"limit\") {\n setLimitPriceDirty(false);\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n } else {\n setLimitPriceDirty(false);\n }\n };\n\n const handleConfirm = () => {\n if (!hasChange) return;\n const priceToUse = orderType === \"market\" ? marketAvgPrice ?? currentPrice : limitPrice;\n onConfirmOrder?.({\n side: isIncrease ? \"buy\" : \"sell\",\n orderType,\n tokenId,\n tokenSymbol,\n price: priceToUse,\n deltaTokens,\n deltaValue,\n targetOwnership,\n targetTokens,\n targetValue,\n });\n handleCancel();\n };\n\n const rectTop = 10;\n const rectBottom = 150;\n const totalFillableHeight = rectBottom - rectTop;\n const baselineFillHeight = (baselinePct / 100) * totalFillableHeight;\n const targetFillHeight = (targetPct / 100) * totalFillableHeight;\n const baselineFillY = rectBottom - baselineFillHeight;\n const targetFillY = rectBottom - targetFillHeight;\n\n const showIncrease = targetPct > baselinePct;\n const showDecrease = targetPct < baselinePct;\n\n const valueLabel = orderType === \"limit\" ? `${tokenSymbol} Owned at Limit` : `${tokenSymbol} Owned`;\n const deltaSign = deltaValue > 0 ? \"+\" : deltaValue < 0 ? \"-\" : \"\";\n const percentMarkers = [100, 50, 25, 0];\n\n return (\n <div className={cn(\"relative flex w-full flex-col items-center gap-6 rounded-[12px] bg-black/20 px-8 pb-6 pt-12\", className)} {...props}>\n <div className=\"absolute left-4 top-4 text-[1.1rem] font-semibold tracking-[0.5px] text-white\">Place Order</div>\n\n {hasChange ? (\n <button\n type=\"button\"\n onClick={handleCancel}\n className=\"absolute right-3 top-3 rounded-[6px] border border-white/20 bg-white/10 px-2.5 py-1.5 text-[0.7rem] text-[#888] transition-all duration-150 hover:border-white/30 hover:bg-white/[0.15] hover:text-white\"\n >\n ✕ Cancel\n </button>\n ) : null}\n\n <div className=\"text-center\">\n <div className=\"mb-2 text-xs uppercase tracking-[1px] text-[#888]\">{valueLabel}</div>\n <div className=\"flex items-baseline justify-center gap-3\">\n <span\n className={cn(\n \"text-[2.2rem] font-semibold\",\n deltaValue >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n {deltaSign}${fmt0(deltaValue)}\n </span>\n <span className=\"text-lg font-semibold text-white/60\">${fmt0(targetValue)}</span>\n </div>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <div className=\"flex h-[200px] flex-col justify-between text-xs text-white/40\">\n {percentMarkers.map((marker) => (\n <span key={marker}>{marker}%</span>\n ))}\n </div>\n <div\n ref={houseRef}\n className=\"h-[200px] w-[160px] select-none touch-none\"\n style={{ cursor: \"ns-resize\" }}\n onMouseDown={onMouseDown}\n onTouchStart={onTouchStart}\n >\n <svg viewBox=\"0 0 120 160\" className=\"h-full w-full overflow-visible\">\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" fill=\"rgba(255,255,255,0.04)\" stroke=\"rgba(255,255,255,0.10)\" />\n <clipPath id=\"loaf-clip\">\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" />\n </clipPath>\n <g clipPath=\"url(#loaf-clip)\">\n <rect x=\"10\" y={showDecrease ? targetFillY : baselineFillY} width=\"100\" height={showDecrease ? targetFillHeight : baselineFillHeight} fill=\"rgba(220,175,120,0.7)\" />\n {showIncrease ? (\n <rect x=\"10\" y={targetFillY} width=\"100\" height={targetFillHeight - baselineFillHeight} fill=\"rgba(14,203,129,0.35)\" />\n ) : null}\n {showDecrease ? (\n <rect x=\"10\" y={baselineFillY} width=\"100\" height={baselineFillHeight - targetFillHeight} fill=\"rgba(246,70,93,0.35)\" />\n ) : null}\n <line x1=\"12\" y1={targetFillY} x2=\"108\" y2={targetFillY} stroke={showIncrease ? \"#0ecb81\" : showDecrease ? \"#f6465d\" : \"rgba(234,217,162,1)\"} strokeWidth=\"2\" strokeLinecap=\"round\" />\n </g>\n </svg>\n </div>\n </div>\n\n <button\n type=\"button\"\n disabled={!hasChange}\n onClick={handleConfirm}\n className={cn(\n \"w-full rounded-[10px] px-4 py-4 text-base font-semibold transition\",\n !hasChange\n ? \"cursor-not-allowed bg-white/10 text-white/30\"\n : isIncrease\n ? \"bg-[#0ecb81] text-white hover:-translate-y-[1px] hover:shadow-[0_4px_12px_rgba(14,203,129,0.3)]\"\n : \"bg-[#f6465d] text-white hover:-translate-y-[1px] hover:shadow-[0_4px_12px_rgba(246,70,93,0.3)]\"\n )}\n >\n {!hasChange ? \"Adjust Position\" : isIncrease ? `Buy $${fmt0(deltaValue)}` : `Sell $${fmt0(deltaValue)}`}\n </button>\n\n <div className=\"w-full border-t border-white/10 py-4 text-[0.85rem]\">\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">{tokenSymbol} Ownership</span>\n <span className=\"text-white\">\n {displayCurrentOwnership.toFixed(2)}%\n <span className=\"mx-1.5 text-white/50\">→</span>\n <input\n type=\"text\"\n value={ownershipInput || displayTargetOwnership.toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setOwnershipInput(val);\n }}\n onFocus={() => setOwnershipInput(displayTargetOwnership.toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(ownershipInput);\n if (Number.isFinite(num)) updateOrderFromOwnership(num);\n setOwnershipInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n className={cn(\n \"w-[70px] rounded-[4px] border bg-white/10 px-2 py-1 text-right font-semibold outline-none\",\n displayTargetOwnership >= displayCurrentOwnership\n ? \"border-[rgba(14,203,129,0.3)] text-[#0ecb81] focus:border-[#0ecb81]\"\n : \"border-[rgba(246,70,93,0.3)] text-[#f6465d] focus:border-[#f6465d]\"\n )}\n />\n </span>\n </div>\n\n {orderType === \"market\" ? null : (\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">{isIncrease ? \"Buying\" : \"Selling\"}</span>\n <span className=\"inline-flex items-center gap-1\">\n {orderMode === \"buy\" && buyTrackingMode === \"dollars\" ? <span className=\"mr-1 text-[#0ecb81]\">~</span> : null}\n <input\n type=\"text\"\n value={tokenAmountInput || Math.abs(deltaTokens).toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setTokenAmountInput(val);\n }}\n onFocus={() => setTokenAmountInput(Math.abs(deltaTokens).toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(tokenAmountInput);\n if (Number.isFinite(num) && num >= 0) {\n const signed = isIncrease || orderMode === \"none\" ? num : -num;\n updateOrderFromTokenAmount(signed);\n }\n setTokenAmountInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n className={cn(\n \"w-[90px] rounded-[4px] border bg-white/10 px-2 py-1 text-right font-semibold outline-none\",\n isIncrease\n ? \"border-[rgba(14,203,129,0.3)] text-[#0ecb81] focus:border-[#0ecb81]\"\n : \"border-[rgba(246,70,93,0.3)] text-[#f6465d] focus:border-[#f6465d]\"\n )}\n />\n <span className={cn(\"font-semibold\", isIncrease ? \"text-[#0ecb81]\" : \"text-[#f6465d]\")}>tokens</span>\n </span>\n </div>\n )}\n\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">Est. Fee</span>\n <span className=\"text-white\">{estFeeTokens.toFixed(6)} {tokenSymbol}</span>\n </div>\n </div>\n\n <div className=\"w-full\">\n <div className=\"mb-4 flex w-full rounded-[8px] bg-white/5 p-[3px]\">\n <button\n type=\"button\"\n onClick={() => handleOrderTypeSelection(\"market\")}\n className={cn(\n \"flex-1 rounded-[6px] px-3 py-2 text-[0.8rem] font-medium transition\",\n orderType === \"market\" ? \"bg-[rgba(201,162,39,0.2)] text-[#C9A227]\" : \"text-white/50 hover:bg-white/5\"\n )}\n >\n Market\n </button>\n <button\n type=\"button\"\n onClick={() => handleOrderTypeSelection(\"limit\")}\n className={cn(\n \"flex-1 rounded-[6px] px-3 py-2 text-[0.8rem] font-medium transition\",\n orderType === \"limit\" ? \"bg-[rgba(201,162,39,0.2)] text-[#C9A227]\" : \"text-white/50 hover:bg-white/5\"\n )}\n >\n Limit\n </button>\n </div>\n\n {orderType === \"limit\" ? (\n <div className=\"relative mb-4\">\n <input\n type=\"text\"\n value={limitPriceInput}\n onChange={(e) => {\n const input = e.target.value;\n if (input === \"\" || /^[0-9]*\\.?[0-9]*$/.test(input)) {\n setLimitPriceDirty(true);\n setLimitPriceInput(input);\n const num = Number.parseFloat(input);\n if (Number.isFinite(num) && num > 0) setLimitPrice(num);\n }\n }}\n onBlur={() => {\n const num = Number.parseFloat(limitPriceInput);\n if (Number.isFinite(num) && num > 0) {\n setLimitPriceInput(num.toFixed(2));\n setLimitPrice(num);\n } else {\n setLimitPriceInput(limitPrice.toFixed(2));\n }\n }}\n placeholder=\"Price\"\n className=\"w-full rounded-[8px] border border-white/10 bg-black/30 px-4 py-3 pr-14 text-[0.95rem] text-white outline-none focus:border-[#f0b90b]\"\n />\n <span className=\"absolute right-4 top-1/2 -translate-y-1/2 text-[0.8rem] text-white/50\">USD</span>\n </div>\n ) : null}\n\n <div className=\"flex items-center justify-between text-xs text-white/50\">\n <span>Available: ${availableCash.toLocaleString()}</span>\n <button type=\"button\" className=\"text-[#f0b90b] hover:underline\">\n Add Funds\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { type OrderbookLevel } from \"./orderbook\";\n\nexport type HousePositionSliderMobileOrderPayload = {\n side: \"buy\" | \"sell\";\n orderType: \"market\" | \"limit\";\n tokenId: string;\n tokenSymbol: string;\n price: number;\n deltaTokens: number;\n deltaValue: number;\n targetOwnership: number;\n targetTokens: number;\n targetValue: number;\n};\n\nexport type HousePositionSliderMobileOrderbook = {\n bids?: OrderbookLevel[];\n asks?: OrderbookLevel[];\n};\n\nexport interface HousePositionSliderMobileProps extends React.HTMLAttributes<HTMLDivElement> {\n tokenId: string;\n tokenSymbol: string;\n totalTokens: number;\n currentPrice: number;\n availableCash: number;\n tokensHeld: number;\n defaultOrderType?: \"market\" | \"limit\";\n orderbook?: HousePositionSliderMobileOrderbook;\n ownershipPercentOverride?: number;\n onConfirmOrder?: (payload: HousePositionSliderMobileOrderPayload) => void;\n}\n\nconst clamp = (v: number, min: number, max: number) => Math.min(max, Math.max(min, v));\nconst fmt0 = (v: number) => Math.abs(v).toLocaleString(undefined, { maximumFractionDigits: 0 });\n\n// Styles copied exactly from loaf-demo/src/components/HousePositionSlider/HousePositionSlider.jsx\nconst styles = {\n // SliderContainer @media (max-width: 1024px)\n sliderContainer: {\n display: \"flex\",\n flexDirection: \"column\" as const,\n alignItems: \"center\",\n padding: \"1.5rem 1rem 0.75rem\",\n background: \"#111111\",\n borderRadius: \"12px\",\n gap: \"0.4rem\",\n position: \"relative\" as const,\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n },\n // ValueDisplay @media (max-width: 1024px)\n valueDisplay: {\n textAlign: \"center\" as const,\n marginBottom: \"0.2rem\",\n },\n // ValueLabel @media (max-width: 1024px)\n valueLabel: {\n fontSize: \"0.65rem\",\n color: \"#C9A227\",\n textTransform: \"uppercase\" as const,\n letterSpacing: \"1px\",\n marginBottom: \"0.2rem\",\n },\n // ValueAmount @media (max-width: 1024px)\n valueAmount: {\n fontSize: \"1.1rem\",\n fontWeight: 700,\n color: \"#fff\",\n display: \"inline-flex\",\n alignItems: \"baseline\",\n gap: \"0.3rem\",\n },\n // HouseWrapper @media (max-width: 1024px)\n houseWrapper: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"0.75rem\",\n margin: \"0.25rem 0\",\n width: \"100%\",\n },\n // HouseContainer @media (max-width: 1024px)\n houseContainer: {\n position: \"relative\" as const,\n width: \"100px\",\n height: \"130px\",\n cursor: \"ns-resize\",\n touchAction: \"none\" as const,\n userSelect: \"none\" as const,\n },\n // MobilePercentButtons @media (max-width: 1024px)\n mobilePercentButtons: {\n display: \"flex\",\n flexDirection: \"column\" as const,\n justifyContent: \"space-between\",\n height: \"130px\",\n position: \"absolute\" as const,\n left: \"-38px\",\n top: 0,\n },\n // MobilePercentBtn\n mobilePercentBtn: {\n background: \"rgba(255, 255, 255, 0.05)\",\n border: \"1px solid rgba(255, 255, 255, 0.2)\",\n borderRadius: \"4px\",\n color: \"rgba(255, 255, 255, 0.6)\",\n fontSize: \"0.55rem\",\n padding: \"0.25rem 0.35rem\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n textAlign: \"center\" as const,\n minWidth: \"32px\",\n outline: \"none\",\n WebkitTapHighlightColor: \"transparent\",\n },\n // ConfirmButton @media (max-width: 1024px)\n confirmButton: {\n width: \"100%\",\n padding: \"0.65rem\",\n fontSize: \"0.85rem\",\n fontWeight: 600,\n border: \"none\",\n borderRadius: \"8px\",\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n },\n // SummarySection @media (max-width: 1024px)\n summarySection: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\" as const,\n gap: \"0.4rem\",\n padding: \"0.6rem\",\n background: \"rgba(0, 0, 0, 0.2)\",\n borderRadius: \"8px\",\n marginTop: 0,\n },\n // BoxedSummaryRow @media (max-width: 1024px)\n boxedSummaryRow: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n background: \"transparent\",\n borderRadius: \"6px\",\n padding: \"0.35rem 0.5rem\",\n cursor: \"text\",\n flexWrap: \"nowrap\" as const,\n fontSize: \"0.75rem\",\n },\n // SummaryLabel @media (max-width: 1024px)\n summaryLabel: {\n color: \"rgba(255, 255, 255, 0.6)\",\n fontSize: \"0.7rem\",\n whiteSpace: \"nowrap\" as const,\n },\n // SummaryValue @media (max-width: 1024px)\n summaryValue: {\n color: \"#fff\",\n fontWeight: 500,\n fontSize: \"0.8rem\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.25rem\",\n overflow: \"hidden\",\n flexShrink: 1,\n minWidth: 0,\n },\n // BoxedInput @media (max-width: 1024px)\n boxedInput: {\n background: \"transparent\",\n border: \"none\",\n fontWeight: 600,\n fontSize: \"0.8rem\",\n width: \"50px\",\n textAlign: \"right\" as const,\n outline: \"none\",\n padding: 0,\n flexShrink: 0,\n },\n // InputSuffix @media (max-width: 1024px)\n inputSuffix: {\n fontWeight: 600,\n fontSize: \"0.65rem\",\n marginLeft: \"0.2rem\",\n display: \"inline-flex\",\n alignItems: \"center\",\n lineHeight: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\" as const,\n whiteSpace: \"nowrap\" as const,\n maxWidth: \"80px\",\n },\n // SummaryRow @media (max-width: 1024px)\n summaryRow: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"0.8rem\",\n },\n // OrderTypeToggle @media (max-width: 1024px)\n orderTypeToggle: {\n display: \"flex\",\n backgroundColor: \"rgba(255, 255, 255, 0.05)\",\n borderRadius: \"6px\",\n padding: \"2px\",\n marginBottom: 0,\n width: \"100%\",\n },\n // OrderTypeButton @media (max-width: 1024px)\n orderTypeButton: {\n flex: 1,\n padding: \"0.35rem\",\n fontSize: \"0.7rem\",\n fontWeight: 500,\n border: \"none\",\n borderRadius: \"4px\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n },\n // AvailableFunds\n availableFunds: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"0.75rem\",\n color: \"rgba(255, 255, 255, 0.5)\",\n },\n // AddFundsButton\n addFundsButton: {\n background: \"none\",\n border: \"none\",\n color: \"#f0b90b\",\n fontSize: \"0.75rem\",\n cursor: \"pointer\",\n padding: 0,\n },\n};\n\nexport function HousePositionSliderMobile({\n tokenId,\n tokenSymbol,\n totalTokens,\n currentPrice,\n availableCash,\n tokensHeld,\n defaultOrderType = \"market\",\n orderbook,\n ownershipPercentOverride,\n onConfirmOrder,\n className,\n ...props\n}: HousePositionSliderMobileProps) {\n const [orderMode, setOrderMode] = React.useState<\"none\" | \"buy\" | \"sell\">(\"none\");\n const [deltaDollars, setDeltaDollars] = React.useState(0);\n const [deltaTokensSell, setDeltaTokensSell] = React.useState(0);\n const [deltaTokensBuy, setDeltaTokensBuy] = React.useState(0);\n const [buyTrackingMode, setBuyTrackingMode] = React.useState<\"dollars\" | \"tokens\">(\"dollars\");\n\n const [orderType, setOrderType] = React.useState<\"market\" | \"limit\">(defaultOrderType);\n const [limitPrice, setLimitPrice] = React.useState(currentPrice);\n const [limitPriceInput, setLimitPriceInput] = React.useState(currentPrice.toFixed(2));\n const [limitPriceDirty, setLimitPriceDirty] = React.useState(false);\n\n const [tokenAmountInput, setTokenAmountInput] = React.useState(\"\");\n\n const houseRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (orderType !== \"limit\") return;\n if (limitPriceDirty) return;\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n }, [orderType, currentPrice, limitPriceDirty]);\n\n const effectivePrice = orderType === \"limit\" ? limitPrice : currentPrice;\n const holdingsValue = tokensHeld * effectivePrice;\n const totalCapacity = holdingsValue + availableCash;\n const baselinePct = totalCapacity > 0 ? (holdingsValue / totalCapacity) * 100 : 0;\n\n let deltaTokens: number;\n let deltaValue: number;\n let targetTokens: number;\n let targetValue: number;\n\n if (orderMode === \"buy\") {\n if (buyTrackingMode === \"tokens\") {\n deltaTokens = deltaTokensBuy;\n deltaValue = deltaTokensBuy * effectivePrice;\n targetTokens = tokensHeld + deltaTokensBuy;\n targetValue = targetTokens * effectivePrice;\n } else {\n deltaValue = deltaDollars;\n deltaTokens = effectivePrice > 0 ? deltaDollars / effectivePrice : 0;\n targetTokens = tokensHeld + deltaTokens;\n targetValue = targetTokens * effectivePrice;\n }\n } else if (orderMode === \"sell\") {\n deltaTokens = deltaTokensSell;\n deltaValue = deltaTokensSell * effectivePrice;\n targetTokens = tokensHeld + deltaTokensSell;\n targetValue = targetTokens * effectivePrice;\n } else {\n deltaTokens = 0;\n deltaValue = 0;\n targetTokens = tokensHeld;\n targetValue = holdingsValue;\n }\n\n const targetPct = totalCapacity > 0 ? (targetValue / totalCapacity) * 100 : 0;\n const isIncrease = orderMode === \"buy\";\n const hasChange = orderMode !== \"none\" && (Math.abs(deltaTokens) > 0.001 || Math.abs(deltaValue) > 0.01);\n const targetOwnership = totalTokens > 0 ? (targetTokens / totalTokens) * 100 : 0;\n const estFeeTokens = effectivePrice > 0 ? (Math.abs(deltaValue) * 0.005) / effectivePrice : 0;\n\n const updateOrderFromTargetValue = React.useCallback(\n (newTargetValue: number) => {\n const newDeltaValue = newTargetValue - holdingsValue;\n if (newDeltaValue > 0.01) {\n const capped = Math.min(newDeltaValue, availableCash);\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(capped);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n } else if (newDeltaValue < -0.01) {\n const newDeltaTokens = effectivePrice > 0 ? newTargetValue / effectivePrice - tokensHeld : 0;\n const capped = Math.max(newDeltaTokens, -tokensHeld);\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(capped);\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n } else {\n setOrderMode(\"none\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n }\n },\n [holdingsValue, availableCash, effectivePrice, tokensHeld]\n );\n\n const updateOrderFromTokenAmount = React.useCallback(\n (tokenAmount: number) => {\n if (tokenAmount > 0) {\n const maxTokens = effectivePrice > 0 ? availableCash / effectivePrice : 0;\n const capped = Math.min(tokenAmount, maxTokens);\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"tokens\");\n setDeltaTokensBuy(capped);\n setDeltaDollars(0);\n setDeltaTokensSell(0);\n } else if (tokenAmount < 0) {\n const capped = Math.max(tokenAmount, -tokensHeld);\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(capped);\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n } else {\n setOrderMode(\"none\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n }\n },\n [effectivePrice, availableCash, tokensHeld]\n );\n\n const handleMarkerClick = React.useCallback(\n (pct: number) => {\n const newTargetValue = (pct / 100) * totalCapacity;\n updateOrderFromTargetValue(newTargetValue);\n },\n [totalCapacity, updateOrderFromTargetValue]\n );\n\n const onMouseDown = React.useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n const move = (ev: MouseEvent) => {\n if (!houseRef.current) return;\n const rect = houseRef.current.getBoundingClientRect();\n const y = ev.clientY - rect.top;\n const pct = clamp(100 - (y / rect.height) * 100, 0, 100);\n const newTargetValue = (pct / 100) * totalCapacity;\n updateOrderFromTargetValue(newTargetValue);\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n },\n [totalCapacity, updateOrderFromTargetValue]\n );\n\n const onTouchStart = React.useCallback(\n (e: React.TouchEvent) => {\n e.preventDefault();\n e.stopPropagation();\n const move = (ev: TouchEvent) => {\n ev.preventDefault();\n ev.stopPropagation();\n if (!houseRef.current) return;\n const rect = houseRef.current.getBoundingClientRect();\n const touch = ev.touches[0];\n const y = touch.clientY - rect.top;\n const pct = clamp(100 - (y / rect.height) * 100, 0, 100);\n const newTargetValue = (pct / 100) * totalCapacity;\n updateOrderFromTargetValue(newTargetValue);\n };\n const up = () => {\n document.removeEventListener(\"touchmove\", move);\n document.removeEventListener(\"touchend\", up);\n };\n document.addEventListener(\"touchmove\", move, { passive: false });\n document.addEventListener(\"touchend\", up);\n },\n [totalCapacity, updateOrderFromTargetValue]\n );\n\n const handleConfirm = () => {\n if (!hasChange || !onConfirmOrder) return;\n onConfirmOrder({\n side: isIncrease ? \"buy\" : \"sell\",\n orderType,\n tokenId,\n tokenSymbol,\n price: effectivePrice,\n deltaTokens: Math.abs(deltaTokens),\n deltaValue: Math.abs(deltaValue),\n targetOwnership,\n targetTokens,\n targetValue,\n });\n setOrderMode(\"none\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n };\n\n // SVG fill calculations\n const rectTop = 10;\n const rectBottom = 150;\n const totalFillableHeight = rectBottom - rectTop;\n const baselineFillHeight = (baselinePct / 100) * totalFillableHeight;\n const targetFillHeight = (targetPct / 100) * totalFillableHeight;\n const baselineFillY = rectBottom - baselineFillHeight;\n const targetFillY = rectBottom - targetFillHeight;\n\n const showIncrease = targetPct > baselinePct;\n const showDecrease = targetPct < baselinePct;\n\n const valueLabel = `${tokenSymbol} OWNED`;\n\n // Border color for boxed rows\n const getBorderColor = () => {\n if (!hasChange) return \"rgba(201, 162, 39, 0.5)\";\n return isIncrease ? \"rgba(14, 203, 129, 0.3)\" : \"rgba(246, 70, 93, 0.3)\";\n };\n\n // Text color for values\n const getValueColor = () => {\n if (!hasChange) return \"#fff\";\n return isIncrease ? \"#0ecb81\" : \"#f6465d\";\n };\n\n return (\n <div\n style={styles.sliderContainer}\n className={className}\n {...props}\n >\n {/* Value Display */}\n <div style={styles.valueDisplay}>\n <div style={styles.valueLabel}>{valueLabel}</div>\n <div style={styles.valueAmount}>\n ${fmt0(targetValue)}\n </div>\n </div>\n\n {/* House Wrapper */}\n <div style={styles.houseWrapper}>\n {/* House Container with Mobile Percent Buttons inside */}\n <div\n ref={houseRef}\n style={styles.houseContainer}\n onMouseDown={onMouseDown}\n onTouchStart={onTouchStart}\n >\n {/* SVG House */}\n <svg viewBox=\"0 0 120 160\" style={{ width: \"100%\", height: \"100%\", overflow: \"visible\" }}>\n <defs>\n <clipPath id=\"mobile-clip\">\n <rect x=\"12\" y=\"12\" width=\"96\" height=\"136\" rx=\"6\" />\n </clipPath>\n <linearGradient id=\"mobileGoldFill\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"rgba(220, 175, 120, 0.7)\" />\n <stop offset=\"100%\" stopColor=\"rgba(220, 175, 120, 0.7)\" />\n </linearGradient>\n <linearGradient id=\"mobileGreenFill\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"rgba(14, 203, 129, 0.5)\" />\n <stop offset=\"100%\" stopColor=\"rgba(14, 203, 129, 0.2)\" />\n </linearGradient>\n <linearGradient id=\"mobileRedFill\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"rgba(246, 70, 93, 0.15)\" />\n <stop offset=\"100%\" stopColor=\"rgba(246, 70, 93, 0.5)\" />\n </linearGradient>\n <filter id=\"mobileGoldGlow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"6\" result=\"blur\" />\n <feFlood floodColor=\"rgba(234, 217, 162, 0.6)\" result=\"color\" />\n <feComposite in=\"color\" in2=\"blur\" operator=\"in\" result=\"glow\" />\n <feMerge>\n <feMergeNode in=\"glow\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n <filter id=\"mobileGreenGlow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"6\" result=\"blur\" />\n <feFlood floodColor=\"rgba(14, 203, 129, 0.6)\" result=\"color\" />\n <feComposite in=\"color\" in2=\"blur\" operator=\"in\" result=\"glow\" />\n <feMerge>\n <feMergeNode in=\"glow\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n <filter id=\"mobileRedGlow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"6\" result=\"blur\" />\n <feFlood floodColor=\"rgba(246, 70, 93, 0.6)\" result=\"color\" />\n <feComposite in=\"color\" in2=\"blur\" operator=\"in\" result=\"glow\" />\n <feMerge>\n <feMergeNode in=\"glow\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n </defs>\n\n {/* Glass background */}\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" fill=\"rgba(255,255,255,0.04)\" />\n\n {/* Fills */}\n <g clipPath=\"url(#mobile-clip)\">\n <rect\n x=\"10\"\n y={showDecrease ? targetFillY : baselineFillY}\n width=\"100\"\n height={showDecrease ? targetFillHeight : baselineFillHeight}\n fill=\"url(#mobileGoldFill)\"\n />\n {showIncrease && (\n <rect\n x=\"10\"\n y={targetFillY}\n width=\"100\"\n height={targetFillHeight - baselineFillHeight}\n fill=\"url(#mobileGreenFill)\"\n />\n )}\n {showDecrease && (\n <rect\n x=\"10\"\n y={baselineFillY}\n width=\"100\"\n height={baselineFillHeight - targetFillHeight}\n fill=\"url(#mobileRedFill)\"\n />\n )}\n <line\n x1=\"12\"\n y1={targetFillY}\n x2=\"108\"\n y2={targetFillY}\n stroke={showIncrease ? \"rgba(14, 203, 129, 1)\" : showDecrease ? \"rgba(246, 70, 93, 1)\" : \"rgba(234, 217, 162, 1)\"}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n filter={showIncrease ? \"url(#mobileGreenGlow)\" : showDecrease ? \"url(#mobileRedGlow)\" : \"url(#mobileGoldGlow)\"}\n />\n </g>\n\n {/* Border with glow */}\n <rect\n x=\"10\"\n y=\"10\"\n width=\"100\"\n height=\"140\"\n rx=\"8\"\n fill=\"none\"\n stroke={showIncrease ? \"rgba(14, 203, 129, 0.6)\" : showDecrease ? \"rgba(246, 70, 93, 0.6)\" : \"rgba(234, 217, 162, 0.6)\"}\n strokeWidth=\"2\"\n filter={showIncrease ? \"url(#mobileGreenGlow)\" : showDecrease ? \"url(#mobileRedGlow)\" : \"url(#mobileGoldGlow)\"}\n />\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" fill=\"none\" stroke=\"rgba(255, 255, 255, 0.1)\" strokeWidth=\"1\" />\n </svg>\n\n {/* Mobile percentage buttons - positioned absolutely inside HouseContainer */}\n <div\n style={styles.mobilePercentButtons}\n onMouseDown={(e) => e.stopPropagation()}\n onTouchStart={(e) => e.stopPropagation()}\n >\n {[100, 50, 25, 0].map((pct) => (\n <button\n key={pct}\n type=\"button\"\n style={styles.mobilePercentBtn}\n onClick={(e) => {\n e.stopPropagation();\n handleMarkerClick(pct);\n }}\n >\n {pct}%\n </button>\n ))}\n </div>\n </div>\n </div>\n\n {/* Confirm Button */}\n <button\n type=\"button\"\n disabled={!hasChange}\n onClick={handleConfirm}\n style={{\n ...styles.confirmButton,\n backgroundColor: !hasChange\n ? \"rgba(255, 255, 255, 0.1)\"\n : isIncrease\n ? \"#0ecb81\"\n : \"#f6465d\",\n color: !hasChange ? \"rgba(255, 255, 255, 0.3)\" : \"#fff\",\n cursor: !hasChange ? \"not-allowed\" : \"pointer\",\n }}\n >\n {!hasChange ? \"Adjust Position\" : isIncrease ? `Buy $${fmt0(deltaValue)}` : `Sell $${fmt0(deltaValue)}`}\n </button>\n\n {/* Summary Section */}\n <div style={styles.summarySection}>\n {/* Est. Buy/Sell row */}\n <div\n style={{\n ...styles.boxedSummaryRow,\n border: `1px solid ${getBorderColor()}`,\n }}\n onClick={(e) => {\n const input = (e.currentTarget as HTMLElement).querySelector(\"input\");\n if (input && e.target !== input) {\n input.focus();\n const len = input.value.length;\n input.setSelectionRange(len, len);\n }\n }}\n >\n <span style={styles.summaryLabel}>{isIncrease ? \"Est. Buy\" : \"Est. Sell\"}</span>\n <span style={styles.summaryValue}>\n <input\n type=\"text\"\n value={tokenAmountInput || Math.abs(deltaTokens).toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setTokenAmountInput(val);\n }}\n onFocus={() => setTokenAmountInput(Math.abs(deltaTokens).toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(tokenAmountInput);\n if (Number.isFinite(num) && num >= 0) {\n const signed = isIncrease || orderMode === \"none\" ? num : -num;\n updateOrderFromTokenAmount(signed);\n }\n setTokenAmountInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n style={{\n ...styles.boxedInput,\n color: getValueColor(),\n }}\n />\n <span style={{ ...styles.inputSuffix, color: getValueColor() }}>{tokenSymbol}</span>\n </span>\n </div>\n\n {/* Price row */}\n <div\n style={{\n ...styles.boxedSummaryRow,\n border: `1px solid ${getBorderColor()}`,\n }}\n onClick={(e) => {\n if (orderType === \"limit\") {\n const input = (e.currentTarget as HTMLElement).querySelector(\"input\");\n if (input && e.target !== input) {\n input.focus();\n const len = input.value.length;\n input.setSelectionRange(len, len);\n }\n }\n }}\n >\n <span style={styles.summaryLabel}>{orderType === \"market\" ? \"Price\" : \"Limit Price\"}</span>\n {orderType === \"market\" ? (\n <span style={{ fontWeight: 600, color: \"rgba(255, 255, 255, 0.6)\", fontSize: \"0.8rem\" }}>Market</span>\n ) : (\n <span style={styles.summaryValue}>\n <input\n type=\"text\"\n value={limitPriceInput}\n onChange={(e) => {\n const input = e.target.value;\n if (input === \"\" || /^[0-9]*\\.?[0-9]*$/.test(input)) {\n setLimitPriceDirty(true);\n setLimitPriceInput(input);\n const num = Number.parseFloat(input);\n if (Number.isFinite(num) && num > 0) setLimitPrice(num);\n }\n }}\n onBlur={() => {\n const num = Number.parseFloat(limitPriceInput);\n if (Number.isFinite(num) && num > 0) {\n setLimitPriceInput(num.toFixed(2));\n setLimitPrice(num);\n } else {\n setLimitPriceInput(limitPrice.toFixed(2));\n }\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n style={{\n ...styles.boxedInput,\n color: getValueColor(),\n }}\n />\n <span style={{ ...styles.inputSuffix, color: getValueColor() }}>USD</span>\n </span>\n )}\n </div>\n\n {/* Est. Fee row */}\n <div style={styles.summaryRow}>\n <span style={styles.summaryLabel}>Est. Fee</span>\n <span style={{ color: \"#fff\", fontWeight: 500, fontSize: \"0.8rem\" }}>\n {estFeeTokens.toFixed(6)} {tokenSymbol}\n </span>\n </div>\n </div>\n\n {/* Order Type Toggle */}\n <div style={styles.orderTypeToggle}>\n <button\n type=\"button\"\n onClick={() => setOrderType(\"market\")}\n style={{\n ...styles.orderTypeButton,\n backgroundColor: orderType === \"market\" ? \"rgba(201, 162, 39, 0.2)\" : \"transparent\",\n color: orderType === \"market\" ? \"#C9A227\" : \"rgba(255, 255, 255, 0.5)\",\n }}\n >\n Market\n </button>\n <button\n type=\"button\"\n onClick={() => setOrderType(\"limit\")}\n style={{\n ...styles.orderTypeButton,\n backgroundColor: orderType === \"limit\" ? \"rgba(201, 162, 39, 0.2)\" : \"transparent\",\n color: orderType === \"limit\" ? \"#C9A227\" : \"rgba(255, 255, 255, 0.5)\",\n }}\n >\n Limit\n </button>\n </div>\n\n {/* Available Funds */}\n <div style={styles.availableFunds}>\n <span>Cash: ${availableCash.toLocaleString()}</span>\n <button type=\"button\" style={styles.addFundsButton}>\n Add Funds\n </button>\n </div>\n </div>\n );\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, token, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tif ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters) && substr(characters, -1, void 0) !== ' ') characters += ' '\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length || (variable === 0 && previous === 47)))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// c(ontainer)\n\t\t\t\t\t\t\t\t\tcase 99:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 3) === 110) break\n\t\t\t\t\t\t\t\t\t// l(ayer)\n\t\t\t\t\t\t\t\t\tcase 108:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 2) === 97) break\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\toffset = 0\n\t\t\t\t\t\t\t\t\t// d(ocument) m(edia) s(upports)\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset) parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\telse parse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599:\n\t\t\treturn WEBKIT + value + value\n\t\t// mask-composite\n\t\tcase 4855:\n\t\t\treturn WEBKIT + value.replace('add', 'source-over').replace('substract', 'source-out').replace('intersect', 'source-in').replace('exclude', 'xor') + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /space-between/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span', 0) ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span', 0) ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch', 0) ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES, NAMESPACE} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case NAMESPACE: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","declare let SC_DISABLE_SPEEDY: boolean | null | undefined;\ndeclare let __VERSION__: string;\n\nimport React from 'react';\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Detect if we're running in a React Server Component environment.\n * RSC environments lack createContext, making this a reliable indicator.\n */\nexport const IS_RSC = typeof React.createContext === 'undefined';\n\nexport const DISABLE_SPEEDY = Boolean(\n typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","import React from 'react';\nimport { IS_RSC } from '../constants';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string | undefined) => {\n if (process.env.NODE_ENV !== 'production') {\n // Skip check in RSC environments where:\n // 1. Components are always module-level (can't be in render functions)\n // 2. Hook detection is unreliable due to different module evaluation context\n if (IS_RSC) {\n return;\n }\n\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n const message =\n `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n \"You may see this warning because you've called styled inside another component.\\n\" +\n 'To resolve this only create new StyledComponents outside of any render method and function component.\\n' +\n 'See https://styled-components.com/docs/basics#define-styled-components-outside-of-the-render-method for more info.\\n';\n\n // If a hook is called outside of a component:\n // React 17 and earlier throw an error\n // React 18 and above use console.error\n\n const originalConsoleError = console.error;\n try {\n let didNotCallInvalidHook = true;\n console.error = (consoleErrorMessage, ...consoleErrorArgs) => {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(consoleErrorMessage)) {\n didNotCallInvalidHook = false;\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n } else {\n originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n }\n };\n // We purposefully call a hook outside of a component and expect it to throw\n // If it doesn't, then we're inside another component.\n // Use useState instead of useRef to avoid importing useRef\n if (typeof React.useState === 'function') {\n React.useState(null);\n }\n\n if (didNotCallInvalidHook && !seen.has(message)) {\n console.warn(message);\n seen.add(message);\n }\n } catch (error) {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test((error as Error).message)) {\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n }\n } finally {\n console.error = originalConsoleError;\n }\n }\n};\n","import { Dict } from '../types';\n\nexport const EMPTY_ARRAY = Object.freeze([]) as Readonly<any[]>;\nexport const EMPTY_OBJECT = Object.freeze({}) as Readonly<Dict<any>>;\n","import { DefaultTheme, ExecutionProps } from '../types';\nimport { EMPTY_OBJECT } from './empties';\n\nexport default function determineTheme(\n props: ExecutionProps,\n providedTheme?: DefaultTheme | undefined,\n defaultProps: { theme?: DefaultTheme | undefined } = EMPTY_OBJECT\n): DefaultTheme | undefined {\n return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n}\n","const elements = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'menu',\n 'meter',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'slot',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'filter',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'switch',\n 'symbol',\n 'text',\n 'textPath',\n 'tspan',\n 'use',\n] as const;\n\nexport default new Set(elements);\nexport type SupportedHTMLElements = (typeof elements)[number];\n","// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string) {\n return str // Replace all possible CSS selectors\n .replace(escapeRegex, '-') // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '');\n}\n","const AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number) => String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number) {\n let name = '';\n let x;\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","export const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string) => {\n let i = x.length;\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i);\n }\n\n return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string) => {\n return phash(SEED, x);\n};\n","import generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default function generateComponentId(str: string) {\n return generateAlphabeticName(hash(str) >>> 0);\n}\n","import { StyledTarget } from '../types';\n\nexport default function getComponentName(target: StyledTarget<any>) {\n return (\n (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n (target as Exclude<StyledTarget<any>, string>).displayName ||\n (target as Function).name ||\n 'Component'\n );\n}\n","import { StyledTarget } from '../types';\n\nexport default function isTag(target: StyledTarget<'web'>): target is string {\n return (\n typeof target === 'string' &&\n (process.env.NODE_ENV !== 'production'\n ? target.charAt(0) === target.charAt(0).toLowerCase()\n : true)\n );\n}\n","import React from 'react';\nimport { AnyComponent } from '../types';\n\nconst hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\n// copied from react-is\nconst REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nconst REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n\n/**\n * Adapted from hoist-non-react-statics to avoid the react-is dependency.\n */\nconst REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true,\n};\n\nconst KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true,\n};\n\nconst FORWARD_REF_STATICS = {\n $$typeof: true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n};\n\nconst MEMO_STATICS = {\n $$typeof: true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true,\n};\n\nconst TYPE_STATICS = {\n [REACT_FORWARD_REF_TYPE]: FORWARD_REF_STATICS,\n [REACT_MEMO_TYPE]: MEMO_STATICS,\n};\n\ntype OmniComponent = AnyComponent;\n\n// adapted from react-is\nfunction isMemo(\n object: OmniComponent | React.MemoExoticComponent<any>\n): object is React.MemoExoticComponent<any> {\n const $$typeofType = 'type' in object && object.type.$$typeof;\n\n return $$typeofType === REACT_MEMO_TYPE;\n}\n\nfunction getStatics(component: OmniComponent) {\n // React v16.11 and below\n if (isMemo(component)) {\n return MEMO_STATICS;\n }\n\n // React v16.12 and above\n return '$$typeof' in component\n ? TYPE_STATICS[component['$$typeof'] as unknown as string]\n : REACT_STATICS;\n}\n\nconst defineProperty = Object.defineProperty;\nconst getOwnPropertyNames = Object.getOwnPropertyNames;\nconst getOwnPropertySymbols = Object.getOwnPropertySymbols;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectPrototype = Object.prototype;\n\ntype ExcludeList = {\n [key: string]: true;\n};\n\nexport type NonReactStatics<S extends OmniComponent, C extends ExcludeList = {}> = {\n [key in Exclude<\n keyof S,\n S extends React.MemoExoticComponent<any>\n ? keyof typeof MEMO_STATICS | keyof C\n : S extends React.ForwardRefExoticComponent<any>\n ? keyof typeof FORWARD_REF_STATICS | keyof C\n : keyof typeof REACT_STATICS | keyof typeof KNOWN_STATICS | keyof C\n >]: S[key];\n};\n\nexport default function hoistNonReactStatics<\n T extends OmniComponent,\n S extends OmniComponent,\n C extends ExcludeList = {},\n>(targetComponent: T, sourceComponent: S, excludelist?: C | undefined) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, excludelist);\n }\n }\n\n let keys: (String | Symbol)[] = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n const targetStatics = getStatics(targetComponent);\n const sourceStatics = getStatics(sourceComponent);\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i] as unknown as string;\n if (\n !(key in KNOWN_STATICS) &&\n !(excludelist && excludelist[key]) &&\n !(sourceStatics && key in sourceStatics) &&\n !(targetStatics && key in targetStatics)\n ) {\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor!);\n } catch (e) {\n /* ignore */\n }\n }\n }\n }\n\n return targetComponent as T & NonReactStatics<S, C>;\n}\n","export default function isFunction(test: any): test is Function {\n return typeof test === 'function';\n}\n","import { StyledComponentBrand } from '../types';\n\nexport default function isStyledComponent(target: any): target is StyledComponentBrand {\n return typeof target === 'object' && 'styledComponentId' in target;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport function joinStrings(a?: string | undefined, b?: string | undefined): string {\n return a && b ? `${a} ${b}` : a || b || '';\n}\n\nexport function joinStringArray(arr: string[], sep?: string | undefined): string {\n if (arr.length === 0) {\n return '';\n }\n\n let result = arr[0];\n for (let i = 1; i < arr.length; i++) {\n result += sep ? sep + arr[i] : arr[i];\n }\n return result;\n}\n","export default function isPlainObject(x: any): x is Record<any, any> {\n return (\n x !== null &&\n typeof x === 'object' &&\n x.constructor.name === Object.name &&\n /* check for reasonable markers that the object isn't an element for react & preact/compat */\n !('props' in x && x.$$typeof)\n );\n}\n","import isPlainObject from './isPlainObject';\n\nfunction mixinRecursively(target: any, source: any, forceMerge = false) {\n /* only merge into POJOs, Arrays, but for top level objects only\n * allow to merge into anything by passing forceMerge = true */\n if (!forceMerge && !isPlainObject(target) && !Array.isArray(target)) {\n return source;\n }\n\n if (Array.isArray(source)) {\n for (let key = 0; key < source.length; key++) {\n target[key] = mixinRecursively(target[key], source[key]);\n }\n } else if (isPlainObject(source)) {\n for (const key in source) {\n target[key] = mixinRecursively(target[key], source[key]);\n }\n }\n\n return target;\n}\n\n/**\n * Arrays & POJOs merged recursively, other objects and value types are overridden\n * If target is not a POJO or an Array, it will get source properties injected via shallow merge\n * Source objects applied left to right. Mutates & returns target. Similar to lodash merge.\n */\nexport default function mixinDeep(target: any, ...sources: any[]) {\n for (const source of sources) {\n mixinRecursively(target, source, true);\n }\n\n return target;\n}\n","/**\n * If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n * cannot have the property changed using a \"=\" assignment operator. If using strict mode, attempting that will cause an error. If not using\n * strict mode, attempting that will be silently ignored.\n *\n * If the Object prototype is frozen, inherited non-writable properties can still be shadowed using one of two mechanisms:\n *\n * 1. ES6 class methods: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#methods\n * 2. Using the `Object.defineProperty()` static method:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n *\n * However, this project uses Babel to transpile ES6 classes, and transforms ES6 class methods to use the assignment operator instead:\n * https://babeljs.io/docs/babel-plugin-transform-class-properties#options\n *\n * Therefore, the most compatible way to shadow the prototype's \"toString\" property is to define a new \"toString\" property on this object.\n */\nexport function setToString(object: object, toStringFn: () => string) {\n Object.defineProperty(object, 'toString', { value: toStringFn });\n}\n","export default {\n '1': 'Cannot create styled-component for component: %s.\\n\\n',\n '2': \"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n- Are you trying to reuse it across renders?\\n- Are you accidentally calling collectStyles twice?\\n\\n\",\n '3': 'Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n',\n '4': 'The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n- Does this error occur on the client and is your target falsy?\\n- Does this error occur on the server and is the sheet falsy?\\n\\n',\n '5': 'The clone method cannot be used on the client!\\n\\n- Are you running in a client-like environment on the server?\\n- Are you trying to run SSR on the client?\\n\\n',\n '6': \"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n- Are you using a custom target that isn't mounted?\\n- Does your document not have a valid head element?\\n- Have you accidentally removed a style tag manually?\\n\\n\",\n '7': 'ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n',\n '8': 'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',\n '9': 'Missing document `<head>`\\n\\n',\n '10': 'Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n',\n '11': '_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n',\n '12': 'It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n',\n '13': '%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n',\n '14': 'ThemeProvider: \"theme\" prop is required.\\n\\n',\n '15': \"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to `<StyleSheetManager stylisPlugins={[]}>`, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",\n '16': \"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",\n '17': \"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\",\n '18': 'ThemeProvider: Please make sure your useTheme hook is within a `<ThemeProvider>`',\n};\n","import { Dict } from '../types';\nimport errorMap from './errors';\n\nconst ERRORS: Dict<any> = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args: [string, ...any]) {\n let a = args[0];\n const b = [];\n\n for (let c = 1, len = args.length; c < len; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(d => {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n code: string | number,\n ...interpolations: any[]\n) {\n if (process.env.NODE_ENV === 'production') {\n return new Error(\n `An error occurred. See https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#${code} for more information.${\n interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n }`\n );\n } else {\n return new Error(format(ERRORS[code], ...interpolations).trim());\n }\n}\n","import { SPLITTER } from '../constants';\nimport styledError from '../utils/error';\nimport { GroupedTag, Tag } from './types';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag) => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nconst DefaultGroupedTag = class DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n length: number;\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number) {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]) {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throw styledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number) {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number) {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n};\n","import styledError from '../utils/error';\n\nconst MAX_SMI = 1 << (31 - 1);\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return groupIDRegister.get(id) as any;\n }\n\n while (reverseRegister.has(nextFreeGroup)) {\n nextFreeGroup++;\n }\n\n const group = nextFreeGroup++;\n\n if (process.env.NODE_ENV !== 'production' && ((group | 0) < 0 || group > MAX_SMI)) {\n throw styledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n // move pointer\n nextFreeGroup = group + 1;\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION, SPLITTER } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n const tag = sheet.getTag();\n const { length } = tag;\n\n let css = '';\n for (let group = 0; group < length; group++) {\n const id = getIdForGroup(group);\n if (id === undefined) continue;\n\n const names = sheet.names.get(id);\n const rules = tag.getGroup(group);\n if (names === undefined || !names.size || rules.length === 0) continue;\n\n const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n let content = '';\n if (names !== undefined) {\n names.forEach(name => {\n if (name.length > 0) {\n content += `${name},`;\n }\n });\n }\n\n // NOTE: It's easier to collect rules and have the marker\n // after the actual rules to simplify the rehydration\n css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n }\n\n return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n const names = content.split(',');\n let name;\n\n for (let i = 0, l = names.length; i < l; i++) {\n if ((name = names[i])) {\n sheet.registerName(id, name);\n }\n }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n const parts = (style.textContent ?? '').split(SPLITTER);\n const rules: string[] = [];\n\n for (let i = 0, l = parts.length; i < l; i++) {\n const part = parts[i].trim();\n if (!part) continue;\n\n const marker = part.match(MARKER_RE);\n\n if (marker) {\n const group = parseInt(marker[1], 10) | 0;\n const id = marker[2];\n\n if (group !== 0) {\n // Rehydrate componentId to group index mapping\n setGroupForId(id, group);\n // Rehydrate names and rules\n // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n rehydrateNamesFromContent(sheet, id, marker[3]);\n sheet.getTag().insertRules(group, rules);\n }\n\n rules.length = 0;\n } else {\n rules.push(part);\n }\n }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n const nodes = document.querySelectorAll(SELECTOR);\n\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = nodes[i] as any as HTMLStyleElement;\n if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n rehydrateSheetFromTag(sheet, node);\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n }\n};\n","declare let __webpack_nonce__: string;\n\nexport default function getNonce() {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n}\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { InsertionTarget } from '../types';\nimport styledError from '../utils/error';\nimport getNonce from '../utils/nonce';\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: InsertionTarget): void | HTMLStyleElement => {\n const arr = Array.from(target.querySelectorAll<HTMLStyleElement>(`style[${SC_ATTR}]`));\n\n return arr[arr.length - 1];\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: InsertionTarget | undefined): HTMLStyleElement => {\n const head = document.head;\n const parent = target || head;\n const style = document.createElement('style');\n const prevStyle = findLastStyleTag(parent);\n const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n const nonce = getNonce();\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n parent.insertBefore(style, nextSibling);\n\n return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n if (tag.sheet) {\n return tag.sheet as any as CSSStyleSheet;\n }\n\n // Avoid Firefox quirk where the style element might not have a sheet property\n const { styleSheets } = document;\n for (let i = 0, l = styleSheets.length; i < l; i++) {\n const sheet = styleSheets[i];\n if (sheet.ownerNode === tag) {\n return sheet as any as CSSStyleSheet;\n }\n }\n\n throw styledError(17);\n};\n","import { InsertionTarget } from '../types';\nimport { getSheet, makeStyleTag } from './dom';\nimport { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions) => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport const CSSOMTag = class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: InsertionTarget | undefined) {\n this.element = makeStyleTag(target);\n\n // Avoid Edge bug where empty style elements don't create sheets\n this.element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(this.element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule && rule.cssText) {\n return rule.cssText;\n } else {\n return '';\n }\n }\n};\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport const TextTag = class TextTag implements Tag {\n element: HTMLStyleElement;\n nodes: NodeListOf<Node>;\n length: number;\n\n constructor(target?: InsertionTarget | undefined) {\n this.element = makeStyleTag(target);\n this.nodes = this.element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string) {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number) {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number) {\n if (index < this.length) {\n return this.nodes[index].textContent as string;\n } else {\n return '';\n }\n }\n};\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport const VirtualTag = class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: InsertionTarget | undefined) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string) {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number) {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number) {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n};\n","import { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { InsertionTarget } from '../types';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { setToString } from '../utils/setToString';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean;\n useCSSOMInjection?: boolean;\n target?: InsertionTarget | undefined;\n};\n\ntype GlobalStylesAllocationMap = {\n [key: string]: number;\n};\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n names: NamesAllocationMap;\n options: SheetOptions;\n server: boolean;\n tag?: GroupedTag | undefined;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT as Object,\n globalStyles: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap | undefined\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names as NamesAllocationMap);\n this.server = !!options.isServer;\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n\n setToString(this, () => outputSheet(this));\n }\n\n rehydrate(): void {\n if (!this.server && IS_BROWSER) {\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag() {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id) as any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set<string>();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id) as any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string | string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id) as any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n}\n","import * as stylis from 'stylis';\nimport { Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { SEED, phash } from './hash';\n\nconst AMP_REGEX = /&/g;\n\n// Character codes for fast comparison\nconst DOUBLE_QUOTE = 34; // \"\nconst SINGLE_QUOTE = 39; // '\nconst SLASH = 47; // /\nconst ASTERISK = 42; // *\nconst BACKSLASH = 92; // \\\nconst OPEN_BRACE = 123; // {\nconst CLOSE_BRACE = 125; // }\nconst SEMICOLON = 59; // ;\nconst NEWLINE = 10; // \\n\nconst OPEN_PAREN = 40; // (\nconst CLOSE_PAREN = 41; // )\n\n/**\n * Strips JS-style line comments (//) from CSS, handling comments anywhere\n * in the line while preserving strings, url() contents, and valid CSS.\n * Optimized with early bail and charCodeAt for performance.\n */\nfunction stripLineComments(css: string): string {\n // Fast path: no // means no line comments\n if (css.indexOf('//') === -1) return css;\n\n const len = css.length;\n const parts: string[] = [];\n let start = 0;\n let i = 0;\n let inString = 0; // 0 = none, DOUBLE_QUOTE or SINGLE_QUOTE when in string\n let urlDepth = 0; // Track nesting depth inside url()\n\n while (i < len) {\n const code = css.charCodeAt(i);\n\n // Track string state\n if (\n (code === DOUBLE_QUOTE || code === SINGLE_QUOTE) &&\n (i === 0 || css.charCodeAt(i - 1) !== BACKSLASH)\n ) {\n if (inString === 0) {\n inString = code;\n } else if (inString === code) {\n inString = 0;\n }\n i++;\n continue;\n }\n\n // Skip string content\n if (inString !== 0) {\n i++;\n continue;\n }\n\n // Track url() context - check for 'url(' (case insensitive via | 32)\n if (\n code === OPEN_PAREN &&\n i >= 3 &&\n (css.charCodeAt(i - 1) | 32) === 108 && // l\n (css.charCodeAt(i - 2) | 32) === 114 && // r\n (css.charCodeAt(i - 3) | 32) === 117 // u\n ) {\n urlDepth = 1;\n i++;\n continue;\n }\n\n // Track nested parentheses inside url()\n if (urlDepth > 0) {\n if (code === CLOSE_PAREN) urlDepth--;\n else if (code === OPEN_PAREN) urlDepth++;\n i++;\n continue;\n }\n\n // Check for line comment (only when not in url())\n if (code === SLASH && i + 1 < len && css.charCodeAt(i + 1) === SLASH) {\n if (i > start) parts.push(css.substring(start, i));\n // Skip to end of line\n while (i < len && css.charCodeAt(i) !== NEWLINE) {\n i++;\n }\n start = i;\n continue;\n }\n\n i++;\n }\n\n // No comments found after indexOf check means // was in a string or url()\n if (start === 0) return css;\n if (start < len) parts.push(css.substring(start));\n return parts.join('');\n}\n\n/**\n * Checks if CSS has unbalanced closing braces that would cause stylis\n * to prematurely close rule blocks.\n * Optimized with early bail and charCodeAt for performance.\n */\nfunction hasUnbalancedBraces(css: string): boolean {\n // Fast path: no closing brace means can't have unbalanced braces\n if (css.indexOf('}') === -1) return false;\n\n const len = css.length;\n let depth = 0;\n let inString = 0; // 0 = none, char code when in string\n let inComment = false;\n\n for (let i = 0; i < len; i++) {\n const code = css.charCodeAt(i);\n\n // Handle CSS comments\n if (inString === 0 && !inComment && code === SLASH && css.charCodeAt(i + 1) === ASTERISK) {\n inComment = true;\n i++;\n continue;\n }\n if (inComment) {\n if (code === ASTERISK && css.charCodeAt(i + 1) === SLASH) {\n inComment = false;\n i++;\n }\n continue;\n }\n\n // Track string state\n if (\n (code === DOUBLE_QUOTE || code === SINGLE_QUOTE) &&\n (i === 0 || css.charCodeAt(i - 1) !== BACKSLASH)\n ) {\n if (inString === 0) {\n inString = code;\n } else if (inString === code) {\n inString = 0;\n }\n continue;\n }\n if (inString !== 0) continue;\n\n // Track brace depth\n if (code === OPEN_BRACE) {\n depth++;\n } else if (code === CLOSE_BRACE) {\n depth--;\n if (depth < 0) return true;\n }\n }\n\n return depth !== 0 || inString !== 0;\n}\n\n/**\n * Sanitizes CSS by removing declarations with unbalanced braces.\n * This contains invalid syntax to just the affected declaration.\n * Optimized with charCodeAt for performance.\n */\nfunction sanitizeCSS(css: string): string {\n // Fast path: valid CSS passes through unchanged\n if (!hasUnbalancedBraces(css)) {\n return css;\n }\n\n const len = css.length;\n let result = '';\n let declStart = 0;\n let braceDepth = 0;\n let inString = 0;\n let inComment = false;\n\n for (let i = 0; i < len; i++) {\n const code = css.charCodeAt(i);\n\n // Handle CSS comments\n if (inString === 0 && !inComment && code === SLASH && css.charCodeAt(i + 1) === ASTERISK) {\n inComment = true;\n i++;\n continue;\n }\n if (inComment) {\n if (code === ASTERISK && css.charCodeAt(i + 1) === SLASH) {\n inComment = false;\n i++;\n }\n continue;\n }\n\n // Track string state\n if (\n (code === DOUBLE_QUOTE || code === SINGLE_QUOTE) &&\n (i === 0 || css.charCodeAt(i - 1) !== BACKSLASH)\n ) {\n if (inString === 0) {\n inString = code;\n } else if (inString === code) {\n inString = 0;\n }\n continue;\n }\n if (inString !== 0) continue;\n\n if (code === OPEN_BRACE) {\n braceDepth++;\n } else if (code === CLOSE_BRACE) {\n braceDepth--;\n\n if (braceDepth < 0) {\n // Extra closing brace - skip to next semicolon or newline\n let skipEnd = i + 1;\n while (skipEnd < len) {\n const skipCode = css.charCodeAt(skipEnd);\n if (skipCode === SEMICOLON || skipCode === NEWLINE) break;\n skipEnd++;\n }\n if (skipEnd < len && css.charCodeAt(skipEnd) === SEMICOLON) skipEnd++;\n\n braceDepth = 0;\n i = skipEnd - 1;\n declStart = skipEnd;\n continue;\n }\n\n if (braceDepth === 0) {\n result += css.substring(declStart, i + 1);\n declStart = i + 1;\n }\n } else if (code === SEMICOLON && braceDepth === 0) {\n result += css.substring(declStart, i + 1);\n declStart = i + 1;\n }\n }\n\n // Add remaining valid content\n if (declStart < len) {\n const remaining = css.substring(declStart);\n if (!hasUnbalancedBraces(remaining)) {\n result += remaining;\n }\n }\n\n return result;\n}\n\nexport type ICreateStylisInstance = {\n options?: { namespace?: string | undefined; prefix?: boolean | undefined } | undefined;\n plugins?: stylis.Middleware[] | undefined;\n};\n\n/**\n * Takes an element and recurses through it's rules added the namespace to the start of each selector.\n * Takes into account media queries by recursing through child rules if they are present.\n */\nfunction recursivelySetNamepace(compiled: stylis.Element[], namespace: String): stylis.Element[] {\n return compiled.map(rule => {\n if (rule.type === 'rule') {\n // add the namespace to the start\n rule.value = `${namespace} ${rule.value}`;\n // add the namespace after each comma for subsequent selectors.\n rule.value = rule.value.replaceAll(',', `,${namespace} `);\n rule.props = (rule.props as string[]).map(prop => {\n return `${namespace} ${prop}`;\n });\n }\n\n if (Array.isArray(rule.children) && rule.type !== '@keyframes') {\n rule.children = recursivelySetNamepace(rule.children, namespace);\n }\n return rule;\n });\n}\n\nexport default function createStylisInstance(\n {\n options = EMPTY_OBJECT as object,\n plugins = EMPTY_ARRAY as unknown as stylis.Middleware[],\n }: ICreateStylisInstance = EMPTY_OBJECT as object\n) {\n let _componentId: string;\n let _selector: string;\n let _selectorRegexp: RegExp;\n\n const selfReferenceReplacer = (match: string, offset: number, string: string) => {\n if (\n /**\n * We only want to refer to the static class directly if the selector is part of a\n * self-reference selector `& + & { color: red; }`\n */\n string.startsWith(_selector) &&\n string.endsWith(_selector) &&\n string.replaceAll(_selector, '').length > 0\n ) {\n return `.${_componentId}`;\n }\n\n return match;\n };\n\n /**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n *\n * https://github.com/thysultan/stylis.js/tree/v4.0.2#abstract-syntax-structure\n */\n const selfReferenceReplacementPlugin: stylis.Middleware = element => {\n if (element.type === stylis.RULESET && element.value.includes('&')) {\n (element.props as string[])[0] = element.props[0]\n // catch any hanging references that stylis missed\n .replace(AMP_REGEX, _selector)\n .replace(_selectorRegexp, selfReferenceReplacer);\n }\n };\n\n const middlewares = plugins.slice();\n\n middlewares.push(selfReferenceReplacementPlugin);\n\n /**\n * Enables automatic vendor-prefixing for styles.\n */\n if (options.prefix) {\n middlewares.push(stylis.prefixer);\n }\n\n middlewares.push(stylis.stringify);\n\n const stringifyRules: Stringifier = (\n css: string,\n selector = '',\n /**\n * This \"prefix\" referes to a _selector_ prefix.\n */\n prefix = '',\n componentId = '&'\n ) => {\n // stylis has no concept of state to be passed to plugins\n // but since JS is single-threaded, we can rely on that to ensure\n // these properties stay in sync with the current stylis run\n _componentId = componentId;\n _selector = selector;\n _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n\n const flatCSS = sanitizeCSS(stripLineComments(css));\n let compiled = stylis.compile(\n prefix || selector ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS\n );\n\n if (options.namespace) {\n compiled = recursivelySetNamepace(compiled, options.namespace);\n }\n\n const stack: string[] = [];\n\n stylis.serialize(\n compiled,\n stylis.middleware(middlewares.concat(stylis.rulesheet(value => stack.push(value))))\n );\n\n return stack;\n };\n\n stringifyRules.hash = plugins.length\n ? plugins\n .reduce((acc, plugin) => {\n if (!plugin.name) {\n throwStyledError(15);\n }\n\n return phash(acc, plugin.name);\n }, SEED)\n .toString()\n : '';\n\n return stringifyRules;\n}\n","import React from 'react';\nimport type stylis from 'stylis';\nimport { IS_RSC } from '../constants';\nimport StyleSheet from '../sheet';\nimport { InsertionTarget, ShouldForwardProp, Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\nexport const mainSheet: StyleSheet = new StyleSheet();\nexport const mainStylis: Stringifier = createStylisInstance();\n\nexport type IStyleSheetContext = {\n shouldForwardProp?: ShouldForwardProp<'web'> | undefined;\n styleSheet: StyleSheet;\n stylis: Stringifier;\n};\n\nconst defaultContextValue: IStyleSheetContext = {\n shouldForwardProp: undefined,\n styleSheet: mainSheet,\n stylis: mainStylis,\n};\n\n// Create context only if createContext is available, otherwise create a fallback\nexport const StyleSheetContext = !IS_RSC\n ? React.createContext<IStyleSheetContext>(defaultContextValue)\n : ({\n Provider: ({ children }: { children: React.ReactNode; value?: IStyleSheetContext }) =>\n children,\n Consumer: ({ children }: { children: (value: IStyleSheetContext) => React.ReactNode }) =>\n children(defaultContextValue),\n } as React.Context<IStyleSheetContext>);\n\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\n\nexport type IStylisContext = Stringifier | void;\nexport const StylisContext = !IS_RSC\n ? React.createContext<IStylisContext>(undefined)\n : ({\n Provider: ({ children }: { children: React.ReactNode; value?: IStylisContext }) => children,\n Consumer: ({ children }: { children: (value: IStylisContext) => React.ReactNode }) =>\n children(undefined),\n } as React.Context<IStylisContext>);\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport function useStyleSheetContext() {\n // Skip useContext if we're in an RSC environment without context support\n return !IS_RSC && React.useContext ? React.useContext(StyleSheetContext) : defaultContextValue;\n}\n\nexport type IStyleSheetManager = React.PropsWithChildren<{\n /**\n * If desired, you can pass this prop to disable \"speedy\" insertion mode, which\n * uses the browser [CSSOM APIs](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet).\n * When disabled, rules are inserted as simple text into style blocks.\n */\n disableCSSOMInjection?: undefined | boolean;\n /**\n * If you are working exclusively with modern browsers, vendor prefixes can often be omitted\n * to reduce the weight of CSS on the page.\n */\n enableVendorPrefixes?: undefined | boolean;\n /**\n * Provide an optional selector to be prepended to all generated style rules.\n */\n namespace?: undefined | string;\n /**\n * Create and provide your own `StyleSheet` if necessary for advanced SSR scenarios.\n */\n sheet?: undefined | StyleSheet;\n /**\n * Starting in v6, styled-components no longer does its own prop validation\n * and recommends use of transient props \"$prop\" to pass style-only props to\n * components. If for some reason you are not able to use transient props, a\n * prop validation function can be provided via `StyleSheetManager`, such as\n * `@emotion/is-prop-valid`.\n *\n * When the return value is `true`, props will be forwarded to the DOM/underlying\n * component. If return value is `false`, the prop will be discarded after styles\n * are calculated.\n *\n * Manually composing `styled.{element}.withConfig({shouldForwardProp})` will\n * override this default.\n */\n shouldForwardProp?: undefined | IStyleSheetContext['shouldForwardProp'];\n /**\n * An array of plugins to be run by stylis (style processor) during compilation.\n * Check out [what's available on npm*](https://www.npmjs.com/search?q=keywords%3Astylis).\n *\n * \\* The plugin(s) must be compatible with stylis v4 or above.\n */\n stylisPlugins?: undefined | stylis.Middleware[];\n /**\n * Provide an alternate DOM node to host generated styles; useful for iframes.\n */\n target?: undefined | InsertionTarget;\n}>;\n\nexport function StyleSheetManager(props: IStyleSheetManager): React.JSX.Element {\n // In RSC environments without context support, StyleSheetManager becomes a no-op\n if (IS_RSC || !React.useMemo) {\n return props.children as React.JSX.Element;\n }\n\n const { styleSheet } = useStyleSheetContext();\n\n const resolvedStyleSheet = React.useMemo(() => {\n let sheet = styleSheet;\n\n if (props.sheet) {\n sheet = props.sheet;\n } else if (props.target) {\n sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n }\n\n if (props.disableCSSOMInjection) {\n sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n }\n\n return sheet;\n }, [props.disableCSSOMInjection, props.sheet, props.target, styleSheet]);\n\n const stylis = React.useMemo(\n () =>\n createStylisInstance({\n options: { namespace: props.namespace, prefix: props.enableVendorPrefixes },\n plugins: props.stylisPlugins,\n }),\n [props.enableVendorPrefixes, props.namespace, props.stylisPlugins]\n );\n\n const styleSheetContextValue = React.useMemo(\n () => ({\n shouldForwardProp: props.shouldForwardProp,\n styleSheet: resolvedStyleSheet,\n stylis,\n }),\n [props.shouldForwardProp, resolvedStyleSheet, stylis]\n );\n\n return (\n <StyleSheetContext.Provider value={styleSheetContextValue}>\n <StylisContext.Provider value={stylis}>{props.children}</StylisContext.Provider>\n </StyleSheetContext.Provider>\n );\n}\n","import StyleSheet from '../sheet';\nimport { Keyframes as KeyframesType, Stringifier } from '../types';\nimport styledError from '../utils/error';\nimport { setToString } from '../utils/setToString';\nimport { mainStylis } from './StyleSheetManager';\n\nexport default class Keyframes implements KeyframesType {\n id: string;\n name: string;\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n\n setToString(this, () => {\n throw styledError(12, String(this.name));\n });\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = mainStylis): void => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n getName(stylisInstance: Stringifier = mainStylis): string {\n return this.name + stylisInstance.hash;\n }\n}\n","import unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any) {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n }\n\n return String(value).trim();\n}\n","const isUpper = (c: string) => c >= 'A' && c <= 'Z';\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\nexport default function hyphenateStyleName(string: string): string {\n let output = '';\n\n for (let i = 0; i < string.length; i++) {\n const c = string[i];\n // Check for CSS variable prefix\n if (i === 1 && c === '-' && string[0] === '-') {\n return string;\n }\n\n if (isUpper(c)) {\n output += '-' + c.toLowerCase();\n } else {\n output += c;\n }\n }\n\n return output.startsWith('ms-') ? '-' + output : output;\n}\n","import Keyframes from '../models/Keyframes';\nimport StyleSheet from '../sheet';\nimport {\n AnyComponent,\n Dict,\n ExecutionContext,\n Interpolation,\n IStyledComponent,\n RuleSet,\n Stringifier,\n StyledObject,\n} from '../types';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { EMPTY_ARRAY } from './empties';\nimport getComponentName from './getComponentName';\nimport hyphenate from './hyphenateStyleName';\nimport isFunction from './isFunction';\nimport isPlainObject from './isPlainObject';\nimport isStatelessFunction from './isStatelessFunction';\nimport isStyledComponent from './isStyledComponent';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = (chunk: any): chunk is undefined | null | false | '' =>\n chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Dict<any>): string[] => {\n const rules = [];\n\n for (const key in obj) {\n const val = obj[key];\n if (!obj.hasOwnProperty(key) || isFalsish(val)) continue;\n\n // @ts-expect-error Property 'isCss' does not exist on type 'any[]'\n if ((Array.isArray(val) && val.isCss) || isFunction(val)) {\n rules.push(`${hyphenate(key)}:`, val, ';');\n } else if (isPlainObject(val)) {\n rules.push(`${key} {`, ...objToCssArray(val), '}');\n } else {\n rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, val)};`);\n }\n }\n\n return rules;\n};\n\nexport default function flatten<Props extends object>(\n chunk: Interpolation<object>,\n executionContext?: (ExecutionContext & Props) | undefined,\n styleSheet?: StyleSheet | undefined,\n stylisInstance?: Stringifier | undefined\n): RuleSet<Props> {\n if (isFalsish(chunk)) {\n return [];\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return [`.${(chunk as unknown as IStyledComponent<'web', any>).styledComponentId}`];\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n const result = chunk(executionContext);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof result === 'object' &&\n !Array.isArray(result) &&\n !(result instanceof Keyframes) &&\n !isPlainObject(result) &&\n result !== null\n ) {\n console.error(\n `${getComponentName(\n chunk as AnyComponent\n )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n );\n }\n\n return flatten<Props>(result, executionContext, styleSheet, stylisInstance);\n } else {\n return [chunk as unknown as IStyledComponent<'web'>];\n }\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet, stylisInstance);\n return [chunk.getName(stylisInstance)];\n } else {\n return [chunk];\n }\n }\n\n /* Handle objects */\n if (isPlainObject(chunk)) {\n return objToCssArray(chunk as StyledObject<Props>);\n }\n\n if (!Array.isArray(chunk)) {\n return [chunk.toString()];\n }\n\n return flatMap(chunk, chunklet =>\n flatten<Props>(chunklet, executionContext, styleSheet, stylisInstance)\n );\n}\n\nfunction flatMap<T, U>(array: T[], transform: (value: T, index: number, array: T[]) => U[]): U[] {\n return Array.prototype.concat.apply(EMPTY_ARRAY, array.map(transform));\n}\n","import isFunction from './isFunction';\n\nexport default function isStatelessFunction(test: any): test is Function {\n return isFunction(test) && !(test.prototype && test.prototype.isReactComponent);\n}\n","import { RuleSet } from '../types';\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\n\nexport default function isStaticRules<Props extends object>(rules: RuleSet<Props>) {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","import { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport { getGroupForId } from '../sheet/GroupIDAllocator';\nimport { ExecutionContext, RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\nimport { joinStringArray, joinStrings } from '../utils/joinStrings';\n\ndeclare const __SERVER__: boolean;\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n baseStyle: ComponentStyle | null | undefined;\n componentId: string;\n isStatic: boolean;\n rules: RuleSet<any>;\n staticRulesId: string;\n\n constructor(rules: RuleSet<any>, componentId: string, baseStyle?: ComponentStyle | undefined) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic =\n process.env.NODE_ENV === 'production' &&\n (baseStyle === undefined || baseStyle.isStatic) &&\n isStaticRules(rules);\n this.componentId = componentId;\n this.baseHash = phash(SEED, componentId);\n this.baseStyle = baseStyle;\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n generateAndInjectStyles(\n executionContext: ExecutionContext,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ): { className: string; css: string } {\n let names = this.baseStyle\n ? this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis).className\n : '';\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(this.componentId, this.staticRulesId)) {\n names = joinStrings(names, this.staticRulesId);\n } else {\n const cssStatic = joinStringArray(\n flatten(this.rules, executionContext, styleSheet, stylis) as string[]\n );\n const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n if (!styleSheet.hasNameForId(this.componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, this.componentId);\n styleSheet.insertRules(this.componentId, name, cssStaticFormatted);\n }\n\n names = joinStrings(names, name);\n this.staticRulesId = name;\n }\n } else {\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < this.rules.length; i++) {\n const partRule = this.rules[i];\n\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule);\n } else if (partRule) {\n const partString = joinStringArray(\n flatten(partRule, executionContext, styleSheet, stylis) as string[]\n );\n // The same value can switch positions in the array, so we include \"i\" in the hash.\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n if (css) {\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(this.componentId, name)) {\n const cssFormatted = stylis(css, `.${name}`, undefined, this.componentId);\n styleSheet.insertRules(this.componentId, name, cssFormatted);\n }\n\n names = joinStrings(names, name);\n }\n }\n\n // Retrieve CSS from Tag for RSC rendering\n const generatedCSS =\n typeof window === 'undefined'\n ? styleSheet.getTag().getGroup(getGroupForId(this.componentId))\n : '';\n\n return { className: names, css: generatedCSS };\n }\n}\n","import React from 'react';\nimport { IS_RSC } from '../constants';\nimport styledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\n// Helper type for the `DefaultTheme` interface that enforces an object type & exclusively allows\n// for typed keys.\ntype DefaultThemeAsObject<T = object> = Record<keyof T, any>;\n\n/**\n * Override DefaultTheme to get accurate typings for your project.\n *\n * ```\n * // create styled-components.d.ts in your project source\n * // if it isn't being picked up, check tsconfig compilerOptions.types\n * import type { CSSProp } from \"styled-components\";\n * import Theme from './theme';\n *\n * type ThemeType = typeof Theme;\n *\n * declare module \"styled-components\" {\n * export interface DefaultTheme extends ThemeType {}\n * }\n *\n * declare module \"react\" {\n * interface DOMAttributes<T> {\n * css?: CSSProp;\n * }\n * }\n * ```\n */\nexport interface DefaultTheme extends DefaultThemeAsObject {}\n\ntype ThemeFn = (outerTheme?: DefaultTheme | undefined) => DefaultTheme;\ntype ThemeArgument = DefaultTheme | ThemeFn;\n\ntype Props = {\n children?: React.ReactNode;\n theme: ThemeArgument;\n};\n\n// Create context only if createContext is available, otherwise create a fallback\nexport const ThemeContext = !IS_RSC\n ? React.createContext<DefaultTheme | undefined>(undefined)\n : ({\n Provider: ({ children }: { children: React.ReactNode; value?: DefaultTheme }) => children,\n Consumer: ({ children }: { children: (theme?: DefaultTheme) => React.ReactNode }) =>\n children(undefined),\n } as React.Context<DefaultTheme | undefined>);\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: DefaultTheme | undefined): DefaultTheme {\n if (!theme) {\n throw styledError(14);\n }\n\n if (isFunction(theme)) {\n const themeFn = theme as ThemeFn;\n const mergedTheme = themeFn(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n throw styledError(7);\n }\n\n return mergedTheme;\n }\n\n if (Array.isArray(theme) || typeof theme !== 'object') {\n throw styledError(8);\n }\n\n return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Returns the current theme (as provided by the closest ancestor `ThemeProvider`.)\n *\n * If no `ThemeProvider` is found, the function will error. If you need access to the theme in an\n * uncertain composition scenario, `React.useContext(ThemeContext)` will not emit an error if there\n * is no `ThemeProvider` ancestor.\n */\nexport function useTheme(): DefaultTheme {\n // Skip useContext if we're in an RSC environment without context support\n const theme = !IS_RSC && React.useContext ? React.useContext(ThemeContext) : undefined;\n\n if (!theme) {\n throw styledError(18);\n }\n\n return theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props): React.JSX.Element | null {\n // In RSC environments without context support, ThemeProvider becomes a no-op\n if (IS_RSC || !React.useContext || !React.useMemo) {\n return props.children as React.JSX.Element | null;\n }\n\n const outerTheme = React.useContext(ThemeContext);\n const themeContext = React.useMemo(\n () => mergeTheme(props.theme, outerTheme),\n [props.theme, outerTheme]\n );\n\n if (!props.children) {\n return null;\n }\n\n return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","import isPropValid from '@emotion/is-prop-valid';\nimport React, { createElement, PropsWithoutRef, Ref } from 'react';\nimport { IS_RSC, SC_VERSION } from '../constants';\nimport type {\n AnyComponent,\n Attrs,\n BaseObject,\n Dict,\n ExecutionContext,\n ExecutionProps,\n IStyledComponent,\n IStyledComponentFactory,\n IStyledStatics,\n OmitNever,\n RuleSet,\n StyledOptions,\n WebTarget,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport domElements from '../utils/domElements';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport hoist from '../utils/hoist';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport { joinStrings } from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport { setToString } from '../utils/setToString';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheetContext } from './StyleSheetManager';\nimport { DefaultTheme, ThemeContext } from './ThemeProvider';\n\nconst identifiers: { [key: string]: number } = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(\n displayName?: string | undefined,\n parentComponentId?: string | undefined\n): string {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useInjectedStyle<T extends ExecutionContext>(\n componentStyle: ComponentStyle,\n resolvedAttrs: T\n): { className: string; css: string } {\n const ssc = useStyleSheetContext();\n\n const result = componentStyle.generateAndInjectStyles(resolvedAttrs, ssc.styleSheet, ssc.stylis);\n\n if (process.env.NODE_ENV !== 'production' && React.useDebugValue) {\n React.useDebugValue(result.className);\n }\n\n return result;\n}\n\nfunction resolveContext<Props extends BaseObject>(\n attrs: Attrs<React.HTMLAttributes<Element> & Props>[],\n props: ExecutionProps & Props,\n theme: DefaultTheme\n): React.HTMLAttributes<Element> & ExecutionContext & Props {\n const context: React.HTMLAttributes<Element> & ExecutionContext & Props = {\n ...props,\n // unset, add `props.className` back at the end so props always \"wins\"\n className: undefined,\n theme,\n } as React.HTMLAttributes<Element> & ExecutionContext & Props;\n\n let attrDef;\n\n for (let i = 0; i < attrs.length; i += 1) {\n attrDef = attrs[i];\n const resolvedAttrDef = isFunction(attrDef) ? attrDef(context) : attrDef;\n\n for (const key in resolvedAttrDef) {\n if (key === 'className') {\n context.className = joinStrings(context.className, resolvedAttrDef[key] as string);\n } else if (key === 'style') {\n context.style = { ...context.style, ...(resolvedAttrDef[key] as React.CSSProperties) };\n } else {\n // @ts-expect-error attrs can dynamically add arbitrary properties\n context[key] = resolvedAttrDef[key];\n }\n }\n }\n\n if ('className' in props && typeof props.className === 'string') {\n context.className = joinStrings(context.className, props.className);\n }\n\n return context;\n}\n\nlet seenUnknownProps = new Set();\n\nfunction useStyledComponentImpl<Props extends BaseObject>(\n forwardedComponent: IStyledComponent<'web', Props>,\n props: ExecutionProps & Props,\n forwardedRef: Ref<Element>\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n const contextTheme = React.useContext ? React.useContext(ThemeContext) : undefined;\n const ssc = useStyleSheetContext();\n const shouldForwardProp = forwardedComponent.shouldForwardProp || ssc.shouldForwardProp;\n\n if (process.env.NODE_ENV !== 'production' && React.useDebugValue) {\n React.useDebugValue(styledComponentId);\n }\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, contextTheme, defaultProps) || EMPTY_OBJECT;\n\n const context = resolveContext<Props>(componentAttrs, props, theme);\n const elementToBeCreated: WebTarget = context.as || target;\n const propsForElement: Dict<any> = {};\n\n for (const key in context) {\n // @ts-expect-error context may have arbitrary properties from attrs\n if (context[key] === undefined) {\n // Omit undefined values from props passed to wrapped element.\n // This enables using .attrs() to remove props, for example.\n } else if (key[0] === '$' || key === 'as' || (key === 'theme' && context.theme === theme)) {\n // Omit transient props and execution props.\n } else if (key === 'forwardedAs') {\n propsForElement.as = context.forwardedAs;\n } else if (!shouldForwardProp || shouldForwardProp(key, elementToBeCreated)) {\n // @ts-expect-error context may have arbitrary properties from attrs\n propsForElement[key] = context[key];\n\n if (\n !shouldForwardProp &&\n process.env.NODE_ENV === 'development' &&\n !isPropValid(key) &&\n !seenUnknownProps.has(key) &&\n // Only warn on DOM Element.\n domElements.has(elementToBeCreated as any)\n ) {\n seenUnknownProps.add(key);\n console.warn(\n `styled-components: it looks like an unknown prop \"${key}\" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via \\`<StyleSheetManager shouldForwardProp={...}>\\` (connect an API like \\`@emotion/is-prop-valid\\`) or consider using transient props (\\`$\\` prefix for automatic filtering.)`\n );\n }\n }\n }\n\n const { className: generatedClassName, css } = useInjectedStyle(componentStyle, context);\n\n if (process.env.NODE_ENV !== 'production' && forwardedComponent.warnTooManyClasses) {\n forwardedComponent.warnTooManyClasses(generatedClassName);\n }\n\n let classString = joinStrings(foldedComponentIds, styledComponentId);\n if (generatedClassName) {\n classString += ' ' + generatedClassName;\n }\n if (context.className) {\n classString += ' ' + context.className;\n }\n\n propsForElement[\n // handle custom elements which React doesn't properly alias\n isTag(elementToBeCreated) &&\n !domElements.has(elementToBeCreated as Extract<typeof domElements, string>)\n ? 'class'\n : 'className'\n ] = classString;\n\n // forwardedRef is coming from React.forwardRef.\n // But it might not exist. Since React 19 handles `ref` like a prop, it only define it if there is a value.\n // We don't want to inject an empty ref.\n if (forwardedRef) {\n propsForElement.ref = forwardedRef;\n }\n\n const element = createElement(elementToBeCreated, propsForElement);\n\n // RSC mode: output style tag alongside element\n // React 19's style hoisting will deduplicate by href and move to <head>\n if (IS_RSC && css) {\n return React.createElement(\n React.Fragment,\n null,\n React.createElement('style', {\n precedence: 'styled-components',\n href: `sc-${styledComponentId}-${generatedClassName}`,\n children: css,\n }),\n element\n );\n }\n\n return element;\n}\n\nfunction createStyledComponent<\n Target extends WebTarget,\n OuterProps extends BaseObject,\n Statics extends BaseObject = BaseObject,\n>(\n target: Target,\n options: StyledOptions<'web', OuterProps>,\n rules: RuleSet<OuterProps>\n): ReturnType<IStyledComponentFactory<'web', Target, OuterProps, Statics>> {\n const isTargetStyledComp = isStyledComponent(target);\n const styledComponentTarget = target as IStyledComponent<'web', OuterProps>;\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && styledComponentTarget.attrs\n ? styledComponentTarget.attrs.concat(attrs as unknown as Attrs<OuterProps>[]).filter(Boolean)\n : (attrs as Attrs<OuterProps>[]);\n\n let { shouldForwardProp } = options;\n\n if (isTargetStyledComp && styledComponentTarget.shouldForwardProp) {\n const shouldForwardPropFn = styledComponentTarget.shouldForwardProp;\n\n if (options.shouldForwardProp) {\n const passedShouldForwardPropFn = options.shouldForwardProp;\n\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, elementToBeCreated) =>\n shouldForwardPropFn(prop, elementToBeCreated) &&\n passedShouldForwardPropFn(prop, elementToBeCreated);\n } else {\n shouldForwardProp = shouldForwardPropFn;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? (styledComponentTarget.componentStyle as ComponentStyle) : undefined\n );\n\n function forwardRefRender(\n props: PropsWithoutRef<ExecutionProps & OuterProps>,\n ref: Ref<Element>\n ) {\n return useStyledComponentImpl<OuterProps>(\n WrappedStyledComponent,\n props as ExecutionProps & OuterProps,\n ref\n );\n }\n\n forwardRefRender.displayName = displayName;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent = React.forwardRef(forwardRefRender) as unknown as IStyledComponent<\n 'web',\n any\n > &\n Statics;\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? joinStrings(styledComponentTarget.foldedComponentIds, styledComponentTarget.styledComponentId)\n : '';\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp ? styledComponentTarget.target : target;\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, styledComponentTarget.defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n setToString(WrappedStyledComponent, () => `.${WrappedStyledComponent.styledComponentId}`);\n\n if (isCompositeComponent) {\n const compositeComponentTarget = target as AnyComponent;\n\n hoist<typeof WrappedStyledComponent, typeof compositeComponentTarget>(\n WrappedStyledComponent,\n compositeComponentTarget,\n {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n } as { [key in keyof OmitNever<IStyledStatics<'web', OuterProps>>]: true }\n );\n }\n\n return WrappedStyledComponent;\n}\n\nexport default createStyledComponent;\n","import { StyledTarget } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(target: StyledTarget<any>) {\n return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","import { Dict } from '../types';\n\nexport const LIMIT = 200;\n\nexport default (displayName: string, componentId: string) => {\n let generatedClasses: Dict<any> = {};\n let warningSeen = false;\n\n return (className: string) => {\n if (!warningSeen) {\n generatedClasses[className] = true;\n if (Object.keys(generatedClasses).length >= LIMIT) {\n // Unable to find latestRule in test environment.\n\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n\n console.warn(\n `Over ${LIMIT} classes were generated for component ${displayName}${parsedIdString}.\\n` +\n 'Consider using the attrs method, together with a style object for frequently changed styles.\\n' +\n 'Example:\\n' +\n ' const Component = styled.div.attrs(props => ({\\n' +\n ' style: {\\n' +\n ' background: props.background,\\n' +\n ' },\\n' +\n ' }))`width: 100%;`\\n\\n' +\n ' <Component />'\n );\n warningSeen = true;\n generatedClasses = {};\n }\n }\n };\n};\n","import { Interpolation } from '../types';\n\nexport default function interleave<Props extends object>(\n strings: readonly string[],\n interpolations: Interpolation<Props>[]\n): Interpolation<Props>[] {\n const result: Interpolation<Props>[] = [strings[0]];\n\n for (let i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n}\n","import {\n BaseObject,\n Interpolation,\n NoInfer,\n RuleSet,\n StyledObject,\n StyleFunction,\n Styles,\n} from '../types';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport flatten from '../utils/flatten';\nimport interleave from '../utils/interleave';\nimport isFunction from '../utils/isFunction';\nimport isPlainObject from '../utils/isPlainObject';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = <T extends RuleSet<any>>(arg: T): T & { isCss: true } =>\n Object.assign(arg, { isCss: true } as const);\n\nfunction css(styles: Styles<object>, ...interpolations: Interpolation<object>[]): RuleSet<object>;\nfunction css<Props extends object>(\n styles: Styles<NoInfer<Props>>,\n ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>>;\nfunction css<Props extends object = BaseObject>(\n styles: Styles<NoInfer<Props>>,\n ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>> {\n if (isFunction(styles) || isPlainObject(styles)) {\n const styleFunctionOrObject = styles as StyleFunction<Props> | StyledObject<Props>;\n\n return addTag(\n flatten<Props>(\n interleave<Props>(EMPTY_ARRAY, [\n styleFunctionOrObject,\n ...interpolations,\n ]) as Interpolation<object>\n )\n );\n }\n\n const styleStringArray = styles as TemplateStringsArray;\n\n if (\n interpolations.length === 0 &&\n styleStringArray.length === 1 &&\n typeof styleStringArray[0] === 'string'\n ) {\n return flatten<Props>(styleStringArray);\n }\n\n return addTag(\n flatten<Props>(interleave<Props>(styleStringArray, interpolations) as Interpolation<object>)\n );\n}\n\nexport default css;\n","import {\n Attrs,\n BaseObject,\n ExecutionProps,\n Interpolation,\n IStyledComponent,\n IStyledComponentFactory,\n KnownTarget,\n NoInfer,\n Runtime,\n StyledOptions,\n StyledTarget,\n Styles,\n Substitute,\n} from '../types';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport styledError from '../utils/error';\nimport css from './css';\n\ntype AttrsResult<T extends Attrs<any>> = T extends (...args: any) => infer P\n ? P extends object\n ? P\n : never\n : T extends object\n ? T\n : never;\n\n/**\n * Based on Attrs being a simple object or function that returns\n * a prop object, inspect the attrs result and attempt to extract\n * any \"as\" prop usage to modify the runtime target.\n */\ntype AttrsTarget<\n R extends Runtime,\n T extends Attrs<any>,\n FallbackTarget extends StyledTarget<R>,\n Result extends ExecutionProps = AttrsResult<T>,\n> = Result extends { as: infer RuntimeTarget }\n ? RuntimeTarget extends KnownTarget\n ? RuntimeTarget\n : FallbackTarget\n : FallbackTarget;\n\nexport interface Styled<\n R extends Runtime,\n Target extends StyledTarget<R>,\n OuterProps extends object,\n OuterStatics extends object = BaseObject,\n> {\n <Props extends object = BaseObject, Statics extends object = BaseObject>(\n initialStyles: Styles<Substitute<OuterProps, NoInfer<Props>>>,\n ...interpolations: Interpolation<Substitute<OuterProps, NoInfer<Props>>>[]\n ): IStyledComponent<R, Substitute<OuterProps, Props>> &\n OuterStatics &\n Statics &\n (R extends 'web'\n ? Target extends string\n ? {}\n : Omit<Target, keyof React.Component<any>>\n : {});\n\n attrs: <\n Props extends object = BaseObject,\n PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n >(\n attrs: PrivateAttrsArg\n ) => Styled<\n R,\n PrivateResolvedTarget,\n PrivateResolvedTarget extends KnownTarget\n ? Substitute<\n Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n Props\n >\n : PrivateMergedProps,\n OuterStatics\n >;\n\n withConfig: (config: StyledOptions<R, OuterProps>) => Styled<R, Target, OuterProps, OuterStatics>;\n}\n\nexport default function constructWithOptions<\n R extends Runtime,\n Target extends StyledTarget<R>,\n OuterProps extends object = Target extends KnownTarget\n ? React.ComponentPropsWithRef<Target>\n : BaseObject,\n OuterStatics extends object = BaseObject,\n>(\n componentConstructor: IStyledComponentFactory<R, StyledTarget<R>, object, any>,\n tag: StyledTarget<R>,\n options: StyledOptions<R, OuterProps> = EMPTY_OBJECT\n): Styled<R, Target, OuterProps, OuterStatics> {\n /**\n * We trust that the tag is a valid component as long as it isn't\n * falsish. Typically the tag here is a string or function (i.e.\n * class or pure function component), however a component may also be\n * an object if it uses another utility, e.g. React.memo. React will\n * output an appropriate warning however if the `tag` isn't valid.\n */\n if (!tag) {\n throw styledError(1, tag);\n }\n\n /* This is callable directly as a template function */\n const templateFunction = <Props extends object = BaseObject, Statics extends object = BaseObject>(\n initialStyles: Styles<Substitute<OuterProps, Props>>,\n ...interpolations: Interpolation<Substitute<OuterProps, Props>>[]\n ) =>\n componentConstructor<Substitute<OuterProps, Props>, Statics>(\n tag,\n options as StyledOptions<R, Substitute<OuterProps, Props>>,\n css<Substitute<OuterProps, Props>>(initialStyles, ...interpolations)\n );\n\n /**\n * Attrs allows for accomplishing two goals:\n *\n * 1. Backfilling props at runtime more expressively than defaultProps\n * 2. Amending the prop interface of a wrapped styled component\n */\n templateFunction.attrs = <\n Props extends object = BaseObject,\n PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n >(\n attrs: PrivateAttrsArg\n ) =>\n constructWithOptions<\n R,\n PrivateResolvedTarget,\n PrivateResolvedTarget extends KnownTarget\n ? Substitute<\n Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n Props\n >\n : PrivateMergedProps,\n OuterStatics\n >(componentConstructor, tag, {\n ...options,\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n });\n\n /**\n * If config methods are called, wrap up a new template function\n * and merge options.\n */\n templateFunction.withConfig = (config: StyledOptions<R, OuterProps>) =>\n constructWithOptions<R, Target, OuterProps, OuterStatics>(componentConstructor, tag, {\n ...options,\n ...config,\n });\n\n return templateFunction;\n}\n","import * as React from 'react';\nimport createStyledComponent from '../models/StyledComponent';\nimport { BaseObject, KnownTarget, WebTarget } from '../types';\nimport domElements, { SupportedHTMLElements } from '../utils/domElements';\nimport constructWithOptions, { Styled as StyledInstance } from './constructWithOptions';\n\nconst baseStyled = <Target extends WebTarget, InjectedProps extends object = BaseObject>(\n tag: Target\n) =>\n constructWithOptions<\n 'web',\n Target,\n Target extends KnownTarget ? React.ComponentPropsWithRef<Target> & InjectedProps : InjectedProps\n >(createStyledComponent, tag);\n\nconst styled = baseStyled as typeof baseStyled & {\n [E in SupportedHTMLElements]: StyledInstance<'web', E, React.JSX.IntrinsicElements[E]>;\n};\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n // @ts-expect-error some react typing bs\n styled[domElement] = baseStyled<typeof domElement>(domElement);\n});\n\nexport default styled;\nexport { StyledInstance };\n\n/**\n * This is the type of the `styled` HOC.\n */\nexport type Styled = typeof styled;\n\n/**\n * Use this higher-order type for scenarios where you are wrapping `styled`\n * and providing extra props as a third-party library.\n */\nexport type LibraryStyled<LibraryProps extends object = BaseObject> = <Target extends WebTarget>(\n tag: Target\n) => typeof baseStyled<Target, LibraryProps>;\n","import Keyframes from '../models/Keyframes';\nimport { Interpolation, Styles } from '../types';\nimport generateComponentId from '../utils/generateComponentId';\nimport { joinStringArray } from '../utils/joinStrings';\nimport css from './css';\n\nexport default function keyframes<Props extends object = {}>(\n strings: Styles<Props>,\n ...interpolations: Array<Interpolation<Props>>\n): Keyframes {\n /* Warning if you've used keyframes on React Native */\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n ) {\n console.warn(\n '`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.'\n );\n }\n\n const rules = joinStringArray(css<Props>(strings, ...interpolations) as string[]);\n const name = generateComponentId(rules);\n return new Keyframes(name, rules);\n}\n","/* Import singletons */\nimport { SC_ATTR, SC_VERSION } from './constants';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport css from './constructors/css';\nimport keyframes from './constructors/keyframes';\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n/* Import hooks */\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport {\n IStyleSheetContext,\n IStyleSheetManager,\n IStylisContext,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n} from './models/StyleSheetManager';\n/* Import components */\nimport ThemeProvider, { ThemeConsumer, ThemeContext, useTheme } from './models/ThemeProvider';\nimport isStyledComponent from './utils/isStyledComponent';\n\n/* Warning if you've imported this file on React Native */\nif (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n) {\n console.warn(\n `It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native`\n );\n}\n\nconst windowGlobalKey = `__sc-${SC_ATTR}__`;\n\n/* Warning if there are several instances of styled-components */\nif (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined'\n) {\n // @ts-expect-error dynamic key not in window object\n window[windowGlobalKey] ||= 0;\n\n // @ts-expect-error dynamic key not in window object\n if (window[windowGlobalKey] === 1) {\n console.warn(\n `It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://styled-components.com/docs/faqs#why-am-i-getting-a-warning-about-several-instances-of-module-on-the-page for more info.`\n );\n }\n\n // @ts-expect-error dynamic key not in window object\n window[windowGlobalKey] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport { Attrs, DefaultTheme, ShouldForwardProp } from './types';\nexport {\n IStyleSheetContext,\n IStyleSheetManager,\n IStylisContext,\n ServerStyleSheet,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n ThemeConsumer,\n ThemeContext,\n ThemeProvider,\n createGlobalStyle,\n css,\n isStyledComponent,\n keyframes,\n useTheme,\n SC_VERSION as version,\n withTheme,\n};\n","import * as React from \"react\";\nimport styled, { keyframes, css } from \"styled-components\";\n\nconst pulse = keyframes`\n 0%, 100% {\n opacity: 0.45;\n transform: scale(1);\n }\n 50% {\n opacity: 0.7;\n transform: scale(1.08);\n }\n`;\n\nconst shimmer = keyframes`\n 0% {\n background-position: -100% 0;\n }\n 100% {\n background-position: 200% 0;\n }\n`;\n\nconst LogoContainer = styled.span<{ $isGlowing?: boolean }>`\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.35rem 0.6rem;\n background: linear-gradient(\n 135deg,\n rgba(240, 185, 11, 0.05) 0%,\n rgba(240, 185, 11, 0.1) 50%,\n rgba(240, 185, 11, 0.05) 100%\n );\n border: 1px solid rgba(240, 185, 11, 0.3);\n border-radius: 5px;\n position: relative;\n overflow: visible;\n cursor: pointer;\n transition: all 0.3s ease;\n line-height: 1.4;\n\n ${({ $isGlowing }) =>\n $isGlowing\n ? css`\n border-color: rgba(240, 185, 11, 1);\n box-shadow:\n 0 0 25px rgba(240, 185, 11, 0.8),\n 0 0 40px rgba(240, 185, 11, 0.5),\n inset 0 0 20px rgba(240, 185, 11, 0.3);\n background: linear-gradient(\n 135deg,\n rgba(240, 185, 11, 0.2) 0%,\n rgba(240, 185, 11, 0.3) 50%,\n rgba(240, 185, 11, 0.2) 100%\n );\n animation: quickPulse 0.35s ease-out;\n\n @keyframes quickPulse {\n 0% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.05);\n }\n 100% {\n transform: scale(1);\n }\n }\n `\n : null}\n\n @media (max-width: 768px) {\n padding: 0.3rem 0.4rem 0.3rem 0.25rem;\n gap: 0.25rem;\n border-radius: 4px;\n transition: none;\n }\n\n @media (max-width: 480px) {\n padding: 0.2rem 0.3rem 0.2rem 0.2rem;\n gap: 0.2rem;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n border-color: rgba(240, 185, 11, 0.6);\n background: linear-gradient(\n 135deg,\n rgba(240, 185, 11, 0.1) 0%,\n rgba(240, 185, 11, 0.15) 50%,\n rgba(240, 185, 11, 0.1) 100%\n );\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(240, 185, 11, 0.2);\n }\n }\n\n &::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(90deg, transparent, rgba(240, 185, 11, 0.1), transparent);\n background-size: 200% 100%;\n animation: ${shimmer} 3s infinite;\n pointer-events: none;\n }\n`;\n\nconst IconWrapper = styled.span`\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: 16px;\n height: 16px;\n\n @media (max-width: 480px) {\n width: 14px;\n height: 14px;\n }\n`;\n\nconst IconCircle = styled.span<{ size: number; color: string; duration: number; delay: number }>`\n position: absolute;\n width: ${({ size }) => size}px;\n height: ${({ size }) => size}px;\n border: 2px solid ${({ color }) => color};\n border-radius: 50%;\n animation: ${pulse} ${({ duration }) => duration}s infinite cubic-bezier(0.4, 0, 0.6, 1);\n animation-delay: ${({ delay }) => delay}s;\n transform-origin: center;\n will-change: transform, opacity;\n`;\n\nconst IconCore = styled.span`\n width: 5px;\n height: 5px;\n background: linear-gradient(135deg, #0ecb81 0%, #2ecc71 100%);\n border-radius: 50%;\n box-shadow: 0 0 6px rgba(14, 203, 129, 0.6);\n position: relative;\n z-index: 1;\n`;\n\nconst LogoText = styled.span`\n display: inline-flex;\n align-items: center;\n gap: 0.2rem;\n position: relative;\n z-index: 1;\n`;\n\nconst LoafLogoImage = styled.img`\n height: 20px;\n position: relative;\n z-index: 1;\n\n @media (max-width: 480px) {\n height: 18px;\n }\n`;\n\nconst LiquidityText = styled.span`\n font-size: 0.65rem;\n font-weight: 400;\n background: linear-gradient(135deg, #f0b90b 0%, #ffd700 50%, #f0b90b 100%);\n background-size: 200% auto;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n letter-spacing: 0.3px;\n opacity: 0.75;\n line-height: 1;\n\n @media (max-width: 480px) {\n font-size: 0.55rem;\n letter-spacing: 0.1px;\n }\n`;\n\nexport interface LoafLiquidityBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n isGlowing?: boolean;\n}\n\nexport const LoafLiquidityBadge = React.forwardRef<HTMLSpanElement, LoafLiquidityBadgeProps>(\n ({ className, isGlowing, onClick, children, ...props }, ref) => {\n return (\n <LogoContainer\n ref={ref}\n onClick={onClick}\n $isGlowing={isGlowing}\n className={className}\n role={onClick ? \"button\" : undefined}\n {...props}\n >\n <LogoText>\n <LoafLogoImage src=\"/Loaf-logo-Banner.png\" alt=\"Loaf\" />\n <LiquidityText>{children ?? \"Liquidity\"}</LiquidityText>\n </LogoText>\n <IconWrapper>\n <IconCore />\n <IconCircle size={10} color=\"rgba(14, 203, 129, 0.5)\" duration={4} delay={0} />\n <IconCircle size={13} color=\"rgba(14, 203, 129, 0.35)\" duration={5.2} delay={0.7} />\n <IconCircle size={16} color=\"rgba(14, 203, 129, 0.25)\" duration={6.3} delay={1.3} />\n </IconWrapper>\n </LogoContainer>\n );\n }\n);\n\nLoafLiquidityBadge.displayName = \"LoafLiquidityBadge\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\nimport { LoafLiquidityBadge } from \"./loaf-liquidity-badge\";\n\nexport type OrderbookSide = \"ask\" | \"bid\";\n\nexport type OrderbookLevel = {\n price: number;\n amount: number;\n depth?: number;\n};\n\nexport type OrderbookTrade = {\n type: \"buy\" | \"sell\";\n price: number;\n amount: number;\n time?: string;\n tradeId?: number;\n};\n\nexport interface OrderbookProps extends React.HTMLAttributes<HTMLDivElement> {\n asks: OrderbookLevel[];\n bids: OrderbookLevel[];\n midPrice: number;\n midChangePercent?: number;\n trades?: OrderbookTrade[];\n priceLabel?: string;\n amountLabel?: string;\n precision?: number;\n amountPrecision?: number;\n defaultTab?: \"orderbook\" | \"trades\";\n onTabChange?: (tab: \"orderbook\" | \"trades\") => void;\n rightHeader?: React.ReactNode;\n variant?: \"auto\" | \"default\" | \"compact\";\n}\n\nfunction useViewportCompact(breakpoint: number) {\n const [isCompact, setIsCompact] = React.useState(false);\n\n React.useEffect(() => {\n if (typeof window === \"undefined\") return;\n const check = () => setIsCompact(window.innerWidth <= breakpoint);\n check();\n window.addEventListener(\"resize\", check);\n return () => window.removeEventListener(\"resize\", check);\n }, [breakpoint]);\n\n return isCompact;\n}\n\nconst formatNumber = (value: number, precision: number) => value.toFixed(precision);\n\nfunction DepthRow({\n side,\n price,\n amount,\n depthPct,\n precision,\n amountPrecision,\n}: {\n side: OrderbookSide;\n price: number;\n amount: number;\n depthPct: number;\n precision: number;\n amountPrecision: number;\n}) {\n const isAsk = side === \"ask\";\n\n return (\n <div className=\"relative grid grid-cols-2 items-center gap-3 px-3 py-1.5\">\n <div\n className={cn(\n \"absolute inset-y-0 right-0\",\n isAsk ? \"bg-rose-900/30\" : \"bg-emerald-900/30\"\n )}\n style={{ width: `${clamp(depthPct, 0, 100)}%` }}\n />\n\n <div className={cn(\"relative z-[1] tabular-nums\", isAsk ? \"text-[#f6465d]\" : \"text-[#0ecb81]\")}\n >\n ${formatNumber(price, precision)}\n </div>\n <div className=\"relative z-[1] text-right tabular-nums text-white/90\">{formatNumber(amount, amountPrecision)}</div>\n </div>\n );\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\nconst LEVEL_ROWS_VISIBLE = 6;\nconst DEPTH_ROW_HEIGHT_PX = 34;\nconst COMPACT_ROWS_VISIBLE = 5;\nconst COMPACT_ROW_HEIGHT_PX = 30;\nconst COMPACT_BREAKPOINT_PX = 1024;\n\nexport const Orderbook = React.forwardRef<HTMLDivElement, OrderbookProps>(\n (\n {\n asks,\n bids,\n midPrice,\n midChangePercent,\n trades = [],\n priceLabel = \"Price (USD)\",\n amountLabel = \"Amount\",\n precision = 2,\n amountPrecision = 2,\n defaultTab = \"orderbook\",\n onTabChange,\n rightHeader = <LoafLiquidityBadge className=\"text-[0.6rem]\" />,\n variant = \"auto\",\n className,\n ...props\n },\n ref\n ) => {\n const [tab, setTab] = React.useState<\"orderbook\" | \"trades\">(defaultTab);\n const [tradeFilter, setTradeFilter] = React.useState<\"all\" | \"buy\" | \"sell\">(\"all\");\n const viewportCompact = useViewportCompact(COMPACT_BREAKPOINT_PX);\n\n React.useEffect(() => {\n setTab(defaultTab);\n }, [defaultTab]);\n\n const handleTab = (next: \"orderbook\" | \"trades\") => {\n setTab(next);\n onTabChange?.(next);\n };\n\n const isCompact = variant === \"compact\" || (variant === \"auto\" && viewportCompact);\n const sectionHeight = isCompact\n ? COMPACT_ROWS_VISIBLE * COMPACT_ROW_HEIGHT_PX\n : LEVEL_ROWS_VISIBLE * DEPTH_ROW_HEIGHT_PX;\n\n const maxAskDepth = Math.max(1, ...asks.map((l) => l.depth ?? l.amount));\n const maxBidDepth = Math.max(1, ...bids.map((l) => l.depth ?? l.amount));\n\n const midClass =\n midChangePercent == null\n ? \"text-white\"\n : midChangePercent >= 0\n ? \"text-[#0ecb81]\"\n : \"text-[#f6465d]\";\n\n const tradeFiltered = trades.filter((t) => tradeFilter === \"all\" || t.type === tradeFilter);\n\n const layoutProps: OrderbookLayoutProps = {\n tab,\n handleTab,\n tradeFilter,\n setTradeFilter,\n rightHeader,\n priceLabel,\n amountLabel,\n tradeFiltered,\n precision,\n amountPrecision,\n asks,\n bids,\n maxAskDepth,\n maxBidDepth,\n midPrice,\n midChangePercent,\n midClass,\n sectionHeight,\n };\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[520px] overflow-hidden rounded-[12px] border border-white/10 bg-[#111111] text-white shadow-md\",\n isCompact && \"max-w-none\",\n className\n )}\n {...props}\n >\n {isCompact ? (\n <MobileOrderbookLayout {...layoutProps} />\n ) : (\n <DesktopOrderbookLayout {...layoutProps} />\n )}\n </Card>\n );\n }\n);\n\nOrderbook.displayName = \"Orderbook\";\n\ntype OrderbookLayoutProps = {\n tab: \"orderbook\" | \"trades\";\n handleTab: (tab: \"orderbook\" | \"trades\") => void;\n tradeFilter: \"all\" | \"buy\" | \"sell\";\n setTradeFilter: React.Dispatch<React.SetStateAction<\"all\" | \"buy\" | \"sell\">>;\n rightHeader: React.ReactNode;\n priceLabel: string;\n amountLabel: string;\n tradeFiltered: OrderbookTrade[];\n precision: number;\n amountPrecision: number;\n asks: OrderbookLevel[];\n bids: OrderbookLevel[];\n maxAskDepth: number;\n maxBidDepth: number;\n midPrice: number;\n midChangePercent?: number;\n midClass: string;\n sectionHeight: number;\n};\n\nfunction DesktopOrderbookLayout({\n tab,\n handleTab,\n tradeFilter,\n setTradeFilter,\n rightHeader,\n priceLabel,\n amountLabel,\n tradeFiltered,\n precision,\n amountPrecision,\n asks,\n bids,\n maxAskDepth,\n maxBidDepth,\n midPrice,\n midChangePercent,\n midClass,\n sectionHeight,\n}: OrderbookLayoutProps) {\n return (\n <>\n <div className=\"flex items-center justify-between px-4 pt-4\">\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={() => handleTab(\"orderbook\")}\n className={cn(\n \"relative pb-2 text-sm font-semibold\",\n tab === \"orderbook\" ? \"text-white\" : \"text-white/60\"\n )}\n >\n Orderbook\n {tab === \"orderbook\" ? (\n <span className=\"absolute -bottom-px left-0 h-[2px] w-full bg-[#C9A227]\" />\n ) : null}\n </button>\n <button\n type=\"button\"\n onClick={() => handleTab(\"trades\")}\n className={cn(\n \"relative pb-2 text-sm font-medium\",\n tab === \"trades\" ? \"text-white\" : \"text-white/60\"\n )}\n >\n Trades\n {tab === \"trades\" ? (\n <span className=\"absolute -bottom-px left-0 h-[2px] w-full bg-[#C9A227]\" />\n ) : null}\n </button>\n </div>\n\n {tab === \"trades\" ? (\n <div className=\"flex items-center gap-1 text-xs\">\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"all\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"all\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n All\n </button>\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"buy\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"buy\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n Buy\n </button>\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"sell\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"sell\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n Sell\n </button>\n </div>\n ) : (\n <div className=\"flex items-center gap-3\">{rightHeader}</div>\n )}\n </div>\n\n <div className=\"px-4 pt-2\">\n <div className=\"grid grid-cols-2 gap-3 px-3 py-2 text-xs text-white/60\">\n <div>{priceLabel}</div>\n <div className=\"text-right\">{amountLabel}</div>\n </div>\n\n {tab === \"trades\" ? (\n <div\n className=\"max-h-[380px] overflow-y-auto overflow-x-hidden\"\n style={{ scrollbarGutter: \"stable\" }}\n >\n {tradeFiltered.length === 0 ? (\n <div className=\"px-3 py-10 text-center text-sm text-white/50\">No trades</div>\n ) : (\n <div className=\"divide-y divide-white/5\">\n {tradeFiltered.map((trade, i) => (\n <div\n key={`${trade.type}-${trade.price}-${trade.amount}-${trade.time ?? i}`}\n className=\"grid grid-cols-2 items-center gap-3 px-3 py-1.5\"\n >\n <div\n className={cn(\n \"tabular-nums\",\n trade.type === \"buy\" ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n ${formatNumber(trade.price, precision)}\n </div>\n <div className=\"text-right tabular-nums text-white/90\">\n {formatNumber(trade.amount, amountPrecision)}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n ) : (\n <>\n <div\n className=\"divide-y divide-white/5 overflow-y-auto\"\n style={{ height: `${sectionHeight}px`, scrollbarGutter: \"stable\" }}\n >\n {asks.map((l, idx) => (\n <DepthRow\n key={`ask-${idx}-${l.price}-${l.amount}`}\n side=\"ask\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxAskDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n\n <div className=\"grid grid-cols-2 items-center gap-3 bg-[#0b1a24] px-3 py-2\">\n <div className={cn(\"text-lg font-semibold tabular-nums\", midClass)}>\n ${formatNumber(midPrice, precision)}\n {midChangePercent == null ? null : (\n <span className=\"ml-2 text-sm font-semibold\">\n {midChangePercent >= 0 ? \"+\" : \"\"}\n {midChangePercent.toFixed(2)}%\n </span>\n )}\n </div>\n <div />\n </div>\n\n <div\n className=\"divide-y divide-white/5 overflow-y-auto\"\n style={{ height: `${sectionHeight}px`, scrollbarGutter: \"stable\" }}\n >\n {bids.map((l, idx) => (\n <DepthRow\n key={`bid-${idx}-${l.price}-${l.amount}`}\n side=\"bid\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxBidDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n </>\n )}\n </div>\n </>\n );\n}\n\nfunction MobileOrderbookLayout({\n tab,\n handleTab,\n tradeFilter,\n setTradeFilter,\n rightHeader,\n priceLabel,\n amountLabel,\n tradeFiltered,\n precision,\n amountPrecision,\n asks,\n bids,\n maxAskDepth,\n maxBidDepth,\n midPrice,\n midChangePercent,\n midClass,\n sectionHeight,\n}: OrderbookLayoutProps) {\n const visibleAsks = React.useMemo(() => asks.slice(0, COMPACT_ROWS_VISIBLE), [asks]);\n const visibleBids = React.useMemo(() => bids.slice(0, COMPACT_ROWS_VISIBLE), [bids]);\n\n return (\n <>\n <div className=\"px-3 pt-2\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <span\n onClick={() => handleTab(\"orderbook\")}\n style={{\n cursor: \"pointer\",\n fontSize: \"0.8rem\",\n fontWeight: tab === \"orderbook\" ? 600 : 400,\n color: tab === \"orderbook\" ? \"#fff\" : \"rgba(255,255,255,0.6)\",\n borderBottom: tab === \"orderbook\" ? \"2px solid #C9A227\" : \"none\",\n paddingBottom: \"0.25rem\",\n }}\n >\n Orderbook\n </span>\n <span\n onClick={() => handleTab(\"trades\")}\n style={{\n cursor: \"pointer\",\n fontSize: \"0.8rem\",\n fontWeight: tab === \"trades\" ? 600 : 400,\n color: tab === \"trades\" ? \"#fff\" : \"rgba(255,255,255,0.6)\",\n borderBottom: tab === \"trades\" ? \"2px solid #C9A227\" : \"none\",\n paddingBottom: \"0.25rem\",\n }}\n >\n Trades\n </span>\n </div>\n\n {tab === \"trades\" ? (\n <div className=\"flex items-center gap-1 text-[0.6rem] text-white/70\">\n {([\"all\", \"buy\", \"sell\"] as const).map((filter) => (\n <button\n key={filter}\n type=\"button\"\n onClick={() => setTradeFilter(filter)}\n className={cn(\n \"rounded-md border border-white/15 px-2 py-1\",\n tradeFilter === filter ? \"bg-white/15 text-white\" : \"hover:bg-white/10\"\n )}\n >\n {filter === \"all\" ? \"All\" : filter === \"buy\" ? \"Buy\" : \"Sell\"}\n </button>\n ))}\n </div>\n ) : (\n <div className=\"hidden text-xs text-white/70 sm:flex\">{rightHeader}</div>\n )}\n </div>\n </div>\n\n {tab === \"orderbook\" ? (\n <div className=\"flex flex-1 flex-col overflow-hidden px-3 pb-2\">\n <div\n className=\"inline-flex sm:hidden\"\n style={{ padding: \"0.5rem 0\", marginBottom: \"0.5rem\", transform: \"scale(0.85)\", transformOrigin: \"left center\" }}\n >\n {rightHeader}\n </div>\n\n <div\n className=\"grid text-white/60\"\n style={{ gridTemplateColumns: \"1.2fr 0.8fr\", padding: \"0.3rem 0 0.2rem 0\", fontSize: \"0.75rem\", fontWeight: 500 }}\n >\n <div>{priceLabel}</div>\n <div style={{ textAlign: \"right\", paddingRight: \"0.5rem\" }}>{amountLabel}</div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {visibleAsks.map((l, idx) => (\n <MobileDepthRow\n key={`mobile-ask-${idx}-${l.price}-${l.amount}`}\n side=\"ask\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxAskDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n\n <div\n className=\"grid\"\n style={{\n gridTemplateColumns: \"1.2fr 0.8fr\",\n padding: \"0.3rem 0\",\n fontSize: \"0.8rem\",\n backgroundColor: \"rgba(0, 123, 255, 0.05)\",\n borderTop: \"1px solid rgba(255,255,255,0.1)\",\n borderBottom: \"1px solid rgba(255,255,255,0.1)\",\n }}\n >\n <div style={{ fontWeight: \"bold\", display: \"flex\", alignItems: \"center\", gap: \"8px\" }} className={midClass}>\n ${formatNumber(midPrice, precision)}\n {midChangePercent != null && (\n <span style={{ fontSize: \"0.8rem\" }} className={midClass}>\n {midChangePercent >= 0 ? \"+\" : \"\"}{midChangePercent.toFixed(2)}%\n </span>\n )}\n </div>\n <div />\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n {visibleBids.map((l, idx) => (\n <MobileDepthRow\n key={`mobile-bid-${idx}-${l.price}-${l.amount}`}\n side=\"bid\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxBidDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n </div>\n ) : (\n <div className=\"flex flex-1 flex-col overflow-hidden px-3 pb-2\">\n <div\n className=\"grid text-white/60\"\n style={{ gridTemplateColumns: \"1.2fr 0.8fr\", padding: \"0.3rem 0 0.2rem 0\", fontSize: \"0.75rem\", fontWeight: 500 }}\n >\n <div>{priceLabel}</div>\n <div style={{ textAlign: \"right\", paddingRight: \"0.5rem\" }}>{amountLabel}</div>\n </div>\n\n <div style={{ flex: 1, overflowY: \"auto\", minHeight: 0 }}>\n {tradeFiltered.length === 0 ? (\n <div className=\"py-6 text-center text-[0.7rem] text-white/50\">No trades</div>\n ) : (\n tradeFiltered.map((trade, i) => (\n <div\n key={`${trade.type}-${trade.price}-${trade.amount}-${trade.time ?? i}`}\n className=\"grid\"\n style={{ gridTemplateColumns: \"1.2fr 0.8fr\", padding: \"0.2rem 0\", fontSize: \"0.8rem\" }}\n >\n <div\n style={{ color: trade.type === \"buy\" ? \"#0ecb81\" : \"#f6465d\", fontWeight: 500 }}\n >\n ${formatNumber(trade.price, precision)}\n </div>\n <div style={{ textAlign: \"right\", paddingRight: \"0.5rem\" }}>\n {formatNumber(trade.amount, amountPrecision)}\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n )}\n </>\n );\n}\n\nfunction MobileDepthRow({\n side,\n price,\n amount,\n depthPct,\n precision,\n amountPrecision,\n}: {\n side: OrderbookSide;\n price: number;\n amount: number;\n depthPct: number;\n precision: number;\n amountPrecision: number;\n}) {\n const isAsk = side === \"ask\";\n\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"1.2fr 0.8fr\",\n padding: \"0.2rem 0\",\n fontSize: \"0.8rem\",\n position: \"relative\",\n }}\n >\n <div style={{ position: \"relative\", zIndex: 1, color: isAsk ? \"#f6465d\" : \"#0ecb81\" }}>\n ${formatNumber(price, precision)}\n </div>\n <div style={{ textAlign: \"right\", paddingRight: \"0.5rem\", position: \"relative\", zIndex: 1 }}>\n {formatNumber(amount, amountPrecision)}\n </div>\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: 0,\n bottom: 0,\n width: `${clamp(depthPct, 0, 100)}%`,\n backgroundColor: isAsk ? \"#f6465d\" : \"#0ecb81\",\n opacity: 0.1,\n zIndex: 0,\n }}\n />\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardHeader, CardTitle } from \"./card\";\n\nexport type PropertyTourProps = Omit<React.ComponentPropsWithoutRef<typeof Card>, \"title\"> & {\n title: string;\n src: string;\n poster?: string;\n autoPlay?: boolean;\n muted?: boolean;\n loop?: boolean;\n controls?: boolean;\n playsInline?: boolean;\n};\n\ntype FullscreenDocument = Document & {\n webkitFullscreenElement?: Element | null;\n mozFullScreenElement?: Element | null;\n msFullscreenElement?: Element | null;\n};\n\nexport const PropertyTour = React.forwardRef<HTMLDivElement, PropertyTourProps>(\n (\n {\n className,\n title,\n src,\n poster,\n autoPlay = true,\n muted = true,\n loop = true,\n controls = true,\n playsInline = true,\n ...props\n },\n ref\n ) => {\n const videoRef = React.useRef<HTMLVideoElement | null>(null);\n\n React.useEffect(() => {\n const video = videoRef.current;\n if (!video) return;\n\n const handleFullscreenChange = () => {\n const d = document as FullscreenDocument;\n const isFullscreen = !!(\n d.fullscreenElement ||\n d.webkitFullscreenElement ||\n d.mozFullScreenElement ||\n d.msFullscreenElement\n );\n\n if (isFullscreen) {\n video.style.objectFit = \"contain\";\n video.style.width = \"100vw\";\n video.style.height = \"100vh\";\n video.style.position = \"fixed\";\n video.style.top = \"0\";\n video.style.left = \"0\";\n video.style.transform = \"none\";\n video.style.zIndex = \"9999\";\n } else {\n video.style.objectFit = \"cover\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.position = \"absolute\";\n video.style.top = \"0\";\n video.style.left = \"0\";\n video.style.transform = \"none\";\n video.style.zIndex = \"auto\";\n }\n };\n\n video.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n return () => {\n video.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n document.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n };\n }, []);\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[820px] rounded-[12px] border border-white/10 bg-[#111111] text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"px-6 pb-0 pt-6\">\n <CardTitle className=\"m-0 text-lg font-semibold text-white\">{title}</CardTitle>\n </CardHeader>\n\n <div className=\"px-6 pb-6 pt-5\">\n <div className=\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\">\n <video\n ref={videoRef}\n className=\"absolute inset-0 h-full w-full object-cover object-center\"\n controls={controls}\n loop={loop}\n autoPlay={autoPlay}\n muted={muted}\n playsInline={playsInline}\n poster={poster}\n >\n <source src={src} />\n Your browser does not support the video tag.\n </video>\n </div>\n </div>\n </Card>\n );\n }\n);\n\nPropertyTour.displayName = \"PropertyTour\";\n","import * as React from \"react\";\n\nimport { Newspaper } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertyNewsType = \"property\" | \"market\" | (string & {});\n\nexport type PropertyNewsItem = {\n id?: string;\n title: string;\n date: string | Date;\n type?: PropertyNewsType;\n displayId?: string;\n isNew?: boolean;\n};\n\nexport interface PropertyNewsUpdatesProps extends React.HTMLAttributes<HTMLDivElement> {\n items: PropertyNewsItem[];\n heading?: string;\n subheading?: string;\n emptyState?: React.ReactNode;\n highlightFirst?: boolean;\n}\n\nconst ITEMS_PER_PAGE = 4;\nconst ROW_HEIGHT_PX = 86;\n\nconst ensureAnimationsInjected = () => {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(\"property-news-updates-animations\")) return;\n const style = document.createElement(\"style\");\n style.id = \"property-news-updates-animations\";\n style.textContent = `\n @keyframes propertyNewsPulse {\n 0% { opacity: 0.6; transform: scale(0.9); }\n 50% { opacity: 1; transform: scale(1); }\n 100% { opacity: 0.6; transform: scale(0.9); }\n }\n\n @keyframes propertyNewsSlideIn {\n from { transform: translateY(-6px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n};\n\nconst categoryStyles = {\n property: {\n label: \"Property Update\",\n backgroundColor: \"rgba(14, 203, 129, 0.15)\",\n borderColor: \"rgba(14, 203, 129, 0.45)\",\n color: \"#0ecb81\",\n },\n market: {\n label: \"Market News\",\n backgroundColor: \"rgba(248, 209, 47, 0.15)\",\n borderColor: \"rgba(248, 209, 47, 0.45)\",\n color: \"#f8d12f\",\n },\n} as const;\n\nconst formatDate = (value: string | Date) => {\n if (typeof value === \"string\") return value;\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) return \"\";\n return value.toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n};\n\nexport const PropertyNewsUpdates = React.forwardRef<HTMLDivElement, PropertyNewsUpdatesProps>(\n (\n {\n className,\n heading = \"Property News & Headlines\",\n subheading,\n items,\n emptyState,\n highlightFirst = true,\n ...props\n },\n ref\n ) => {\n const [page, setPage] = React.useState(0);\n\n React.useEffect(() => {\n ensureAnimationsInjected();\n }, []);\n\n const hasItems = Array.isArray(items) && items.length > 0;\n const totalPages = React.useMemo(() => (hasItems ? Math.max(1, Math.ceil(items.length / ITEMS_PER_PAGE)) : 1), [hasItems, items.length]);\n\n React.useEffect(() => {\n setPage((prev) => Math.min(prev, totalPages - 1));\n }, [totalPages]);\n\n const paginatedItems = hasItems\n ? items.slice(page * ITEMS_PER_PAGE, page * ITEMS_PER_PAGE + ITEMS_PER_PAGE)\n : [];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-[840px] rounded-2xl border border-white/10 bg-[#0b0e10] p-5 text-white shadow-[0_20px_40px_rgba(0,0,0,0.35)]\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-lg font-semibold text-white\">{heading}</p>\n {subheading ? <p className=\"text-sm text-white/60\">{subheading}</p> : null}\n </div>\n <div\n className=\"inline-flex items-center font-semibold uppercase text-emerald-300\"\n style={{ gap: \"0.35rem\", fontSize: \"0.8rem\", letterSpacing: \"0.15em\" }}\n >\n <span\n style={{\n display: \"inline-block\",\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"50%\",\n backgroundColor: \"#34d399\",\n animation: \"propertyNewsPulse 2s infinite\",\n }}\n />\n LIVE\n </div>\n </div>\n\n <div\n className=\"mt-4 flex flex-col gap-3\"\n style={{ minHeight: `${ITEMS_PER_PAGE * ROW_HEIGHT_PX}px` }}\n >\n {hasItems\n ? paginatedItems.map((item, index) => {\n const absoluteIndex = page * ITEMS_PER_PAGE + index;\n const key = item.displayId ?? item.id ?? `${item.title}-${absoluteIndex}`;\n const styles =\n categoryStyles[item.type as keyof typeof categoryStyles] ?? categoryStyles.market;\n const dateLabel =\n (item.isNew ?? (highlightFirst && absoluteIndex === 0))\n ? \"Just now\"\n : typeof item.date === \"string\" && item.date.trim().length > 0\n ? item.date\n : formatDate(item.date);\n const isHighlighted = item.isNew ?? (highlightFirst && absoluteIndex === 0);\n\n return (\n <div\n key={key}\n style={{\n padding: \"0.75rem\",\n borderRadius: \"6px\",\n backgroundColor: isHighlighted ? \"rgba(14, 203, 129, 0.1)\" : \"transparent\",\n border: \"1px solid transparent\",\n transition: \"background-color 0.2s\",\n animation: item.isNew ? \"propertyNewsSlideIn 0.5s ease-out\" : undefined,\n }}\n >\n <p style={{ fontSize: \"0.9375rem\", fontWeight: 500, marginBottom: \"0.35rem\" }}>\n {item.title}\n </p>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"0.75rem\",\n color: \"#b5b8c5\",\n }}\n >\n <span style={{ color: isHighlighted ? \"#0ecb81\" : \"inherit\" }}>{dateLabel}</span>\n <span\n style={{\n padding: \"0.25rem 0.6rem\",\n borderRadius: \"4px\",\n border: `1px solid ${styles.borderColor}`,\n backgroundColor: styles.backgroundColor,\n color: styles.color,\n fontSize: \"0.68rem\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n }}\n >\n {item.type === \"property\" ? styles.label : \"Market News\"}\n </span>\n </div>\n </div>\n );\n })\n : emptyState ?? (\n <div className=\"flex flex-col items-center justify-center rounded-2xl border border-dashed border-white/20 px-6 py-10 text-center text-sm text-white/60\">\n <Newspaper className=\"mb-3 h-8 w-8 text-white/40\" />\n No property news yet. Updates will land here as soon as we receive new intelligence.\n </div>\n )}\n </div>\n\n {hasItems && totalPages > 1 ? (\n <div className=\"mt-4 flex items-center justify-between text-xs text-white/60\">\n <button\n type=\"button\"\n onClick={() => setPage((prev) => Math.max(0, prev - 1))}\n disabled={page === 0}\n className={cn(\n \"rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]\",\n page === 0 ? \"opacity-40 cursor-not-allowed\" : \"hover:border-white/40\"\n )}\n >\n Prev\n </button>\n <span className=\"font-medium text-white/70\">\n Page {page + 1} / {totalPages}\n </span>\n <button\n type=\"button\"\n onClick={() => setPage((prev) => Math.min(totalPages - 1, prev + 1))}\n disabled={page >= totalPages - 1}\n className={cn(\n \"rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]\",\n page >= totalPages - 1 ? \"opacity-40 cursor-not-allowed\" : \"hover:border-white/40\"\n )}\n >\n Next\n </button>\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nPropertyNewsUpdates.displayName = \"PropertyNewsUpdates\";\n","import * as React from \"react\";\nimport styled, { css } from \"styled-components\";\n\nexport type PropertyAddressOption = {\n id: string;\n label: string;\n};\n\nexport type PropertyValueSummary = {\n value: number;\n change?: number;\n label?: string;\n currencySymbol?: string;\n formatOptions?: Intl.NumberFormatOptions;\n};\n\nexport type PropertyPriceSummary = {\n value: number;\n change?: number;\n changePercent?: number;\n currencySymbol?: string;\n formatOptions?: Intl.NumberFormatOptions;\n percentFormatOptions?: Intl.NumberFormatOptions;\n};\n\nexport type PropertyCompareBarProps = React.HTMLAttributes<HTMLDivElement> & {\n addresses: (PropertyAddressOption | string)[];\n selectedAddressId?: string;\n onSelectAddress?: (addressId: string) => void;\n propertyValue?: PropertyValueSummary;\n propertyValueVariant?: \"classic\" | \"card\" | \"pill\";\n price?: PropertyPriceSummary;\n};\n\nexport const PropertyCompareBar = React.forwardRef<HTMLDivElement, PropertyCompareBarProps>(\n (\n {\n className,\n addresses,\n selectedAddressId,\n onSelectAddress,\n propertyValue,\n propertyValueVariant = \"classic\",\n price,\n ...props\n },\n ref\n ) => {\n const normalizedAddresses = React.useMemo<PropertyAddressOption[]>(() => {\n return addresses.map((option) =>\n typeof option === \"string\" ? { id: option, label: option } : option\n );\n }, [addresses]);\n\n const hasAddresses = normalizedAddresses.length > 0;\n const firstAddressId = normalizedAddresses[0]?.id;\n\n const isControlled = selectedAddressId !== undefined;\n\n const [internalSelectedId, setInternalSelectedId] = React.useState<string | undefined>(() =>\n isControlled ? undefined : firstAddressId\n );\n\n const resolvedSelectedId = isControlled ? selectedAddressId : internalSelectedId;\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalSelectedId((current) => {\n if (current != null && normalizedAddresses.some((option) => option.id === current)) {\n return current;\n }\n\n return firstAddressId;\n });\n }\n }, [firstAddressId, isControlled, normalizedAddresses]);\n\n const selectedOption =\n normalizedAddresses.find((option) => option.id === resolvedSelectedId) ?? normalizedAddresses[0];\n\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n\n const dropdownRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (!isDropdownOpen) return;\n\n const handleClick = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsDropdownOpen(false);\n }\n };\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsDropdownOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClick);\n document.addEventListener(\"keydown\", handleKey);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n document.removeEventListener(\"keydown\", handleKey);\n };\n }, [isDropdownOpen]);\n\n const handleAddressSelect = (addressId: string) => {\n if (!isControlled) {\n setInternalSelectedId(addressId);\n }\n onSelectAddress?.(addressId);\n setIsDropdownOpen(false);\n };\n\n const propertyValueLabel = propertyValue?.label ?? \"Property Value\";\n const propertyValueCurrency = propertyValue?.currencySymbol ?? \"$\";\n const propertyValueFormat =\n propertyValue?.formatOptions ?? ({\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n } satisfies Intl.NumberFormatOptions);\n const formattedPropertyValue =\n propertyValue == null\n ? null\n : `${propertyValueCurrency}${propertyValue.value.toLocaleString(\n undefined,\n propertyValueFormat\n )}`;\n const formattedPropertyChange =\n propertyValue?.change == null\n ? null\n : `${propertyValue.change >= 0 ? \"+\" : \"-\"}${propertyValueCurrency}${Math.abs(\n propertyValue.change\n ).toLocaleString(undefined, propertyValueFormat)}`;\n const priceCurrency = price?.currencySymbol ?? \"$\";\n const priceFormat =\n price?.formatOptions ?? ({ minimumFractionDigits: 2, maximumFractionDigits: 2 } satisfies Intl.NumberFormatOptions);\n const pricePercentFormat =\n price?.percentFormatOptions ?? ({ minimumFractionDigits: 2, maximumFractionDigits: 2 } satisfies Intl.NumberFormatOptions);\n const formattedPriceValue =\n price == null\n ? null\n : `${priceCurrency}${price.value.toLocaleString(undefined, priceFormat)}`;\n const formattedPriceChange =\n price?.change == null\n ? null\n : `${price.change >= 0 ? \"+\" : \"-\"}${priceCurrency}${Math.abs(price.change).toLocaleString(\n undefined,\n priceFormat\n )}`;\n const formattedPricePercent =\n price?.changePercent == null\n ? null\n : `${price.changePercent >= 0 ? \"+\" : \"-\"}${Math.abs(price.changePercent).toLocaleString(\n undefined,\n pricePercentFormat\n )}%`;\n const priceContent =\n formattedPriceValue && propertyValueVariant === \"pill\" ? (\n <PriceBlock $variant={propertyValueVariant}>\n <PriceAmount>{formattedPriceValue}</PriceAmount>\n {formattedPriceChange || formattedPricePercent ? (\n <PriceChange\n $isPositive={\n price?.change != null\n ? price.change >= 0\n : price?.changePercent != null\n ? price.changePercent >= 0\n : undefined\n }\n >\n {formattedPriceChange ? <span>{formattedPriceChange}</span> : null}\n {formattedPricePercent ? <span>{formattedPricePercent}</span> : null}\n </PriceChange>\n ) : null}\n </PriceBlock>\n ) : null;\n\n const propertyValueContent = formattedPropertyValue ? (\n <PropertyValueBlock $variant={propertyValueVariant}>\n <PropertyValueLabel>{propertyValueLabel}</PropertyValueLabel>\n <PropertyValueAmount>{formattedPropertyValue}</PropertyValueAmount>\n {formattedPropertyChange ? (\n <PropertyValueChange $isPositive={propertyValue?.change != null ? propertyValue.change >= 0 : undefined}>\n {formattedPropertyChange}\n </PropertyValueChange>\n ) : null}\n </PropertyValueBlock>\n ) : null;\n\n return (\n <PropertySelectorContainer ref={ref} className={className} $variant={propertyValueVariant} {...props}>\n <PropertySelector ref={dropdownRef} onClick={() => hasAddresses && setIsDropdownOpen((prev) => !prev)}>\n <PropertyAddress>\n {selectedOption ? selectedOption.label : hasAddresses ? \"Select address\" : \"No addresses available\"}\n <svg\n className=\"dropdown-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n style={{ transform: isDropdownOpen ? \"rotate(180deg)\" : undefined }}\n >\n <path d=\"M7 10l5 5 5-5H7z\" />\n </svg>\n </PropertyAddress>\n\n <PropertySelectorDropdown $isOpen={isDropdownOpen && hasAddresses}>\n {normalizedAddresses.map((option) => (\n <PropertySelectorOption\n key={option.id}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n handleAddressSelect(option.id);\n }}\n >\n <PropertySelectorName>{option.label}</PropertySelectorName>\n </PropertySelectorOption>\n ))}\n </PropertySelectorDropdown>\n </PropertySelector>\n\n {propertyValueVariant === \"pill\" ? (\n <>\n {priceContent}\n {propertyValueContent}\n </>\n ) : (\n propertyValueContent\n )}\n </PropertySelectorContainer>\n );\n }\n);\n\nPropertyCompareBar.displayName = \"PropertyCompareBar\";\n\nconst PropertySelectorContainer = styled.div<{ $variant: \"classic\" | \"card\" | \"pill\" }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.5rem;\n background-color: ${({ $variant }) => ($variant === \"pill\" ? \"#0f0f0f\" : \"rgba(30, 32, 38, 0.95)\")};\n border: ${({ $variant }) => ($variant === \"pill\" ? \"1px solid rgba(255, 255, 255, 0.15)\" : \"none\")};\n border-radius: 8px;\n margin-bottom: 1.5rem;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n color: var(--color-text, #f8f9fa);\n font-family: var(--font-family, \"Inter\", sans-serif);\n\n @media (max-width: 1024px) {\n padding: 0.75rem 1rem;\n margin-bottom: 0.75rem;\n }\n\n @media (max-width: 768px) {\n border-radius: 0;\n margin-top: 0;\n padding-top: 0.5rem;\n }\n\n @media (max-width: 600px) {\n width: 100%;\n\n ${({ $variant }) =>\n $variant === \"pill\"\n ? css`\n display: grid;\n grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr) minmax(0, 1fr);\n gap: 0.35rem;\n align-items: center;\n\n > *:nth-child(1) {\n width: 100%;\n }\n\n > *:nth-child(2) {\n justify-self: center;\n width: 100%;\n }\n\n > *:nth-child(3) {\n justify-self: end;\n text-align: right;\n }\n `\n : css`\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n `};\n }\n`;\n\nconst PropertySelector = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: 0.5rem 0;\n flex: 1;\n\n &:hover {\n .dropdown-icon {\n transform: translateY(2px);\n }\n }\n`;\n\nconst PropertyAddress = styled.div`\n font-size: 1.125rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: inherit;\n\n svg {\n transition: transform 0.2s;\n }\n\n @media (max-width: 600px) {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.2rem;\n font-size: 1rem;\n line-height: 1.2;\n white-space: normal;\n }\n`;\n\nconst PropertySelectorDropdown = styled.div<{ $isOpen: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n max-width: 400px;\n background-color: var(--color-card, #1f232b);\n border-radius: 8px;\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);\n z-index: 100;\n overflow: hidden;\n display: ${(props) => (props.$isOpen ? \"block\" : \"none\")};\n`;\n\nconst PropertySelectorOption = styled.div`\n padding: 0.75rem 1rem;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n cursor: pointer;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: rgba(255, 255, 255, 0.05);\n }\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\nconst PropertySelectorName = styled.div`\n font-weight: 600;\n`;\n\nconst PropertyValueBlock = styled.div<{ $variant: \"classic\" | \"card\" | \"pill\" }>`\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-left: 1rem;\n white-space: nowrap;\n\n ${({ $variant }) =>\n $variant === \"card\" &&\n css`\n margin-left: auto;\n flex-direction: row;\n align-items: center;\n min-width: 220px;\n border: none;\n background: rgba(30, 32, 38, 0.95);\n border-radius: 14px;\n padding: 0.9rem 1.25rem;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);\n gap: 0.85rem;\n justify-content: flex-end;\n\n @media (max-width: 600px) {\n margin: 0;\n width: auto;\n min-width: 0;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.125rem;\n padding: 0;\n background: transparent;\n border-radius: 0;\n box-shadow: none;\n }\n `}\n\n ${({ $variant }) =>\n $variant === \"pill\" &&\n css`\n margin-left: auto;\n margin-right: 1rem;\n background: #191919;\n border-radius: 8px;\n border: 1px solid rgba(255, 255, 255, 0.05);\n padding: 0.5rem 1rem;\n gap: 1rem;\n align-items: center;\n\n @media (max-width: 600px) {\n margin: 0;\n width: 100%;\n min-width: 0;\n flex-direction: column;\n align-items: flex-end;\n text-align: right;\n gap: 0.2rem;\n padding: 0;\n background: transparent;\n border-radius: 0;\n border: none;\n white-space: normal;\n }\n `}\n\n @media (max-width: 600px) {\n margin: 0;\n flex-direction: column;\n align-items: flex-end;\n gap: 0.2rem;\n white-space: normal;\n }\n`;\n\nconst PropertyValueLabel = styled.span`\n font-size: 0.7rem;\n color: var(--color-text-secondary, rgba(255, 255, 255, 0.6));\n text-transform: uppercase;\n letter-spacing: 0.5px;\n\n @media (max-width: 600px) {\n font-size: 0.6rem;\n letter-spacing: 0.4px;\n }\n`;\n\nconst PropertyValueAmount = styled.span`\n font-size: 1.1rem;\n font-weight: 600;\n color: #fff;\n\n @media (max-width: 600px) {\n font-size: 0.95rem;\n }\n`;\n\nconst PropertyValueChange = styled.span<{ $isPositive?: boolean }>`\n font-size: 0.75rem;\n font-weight: 500;\n color: ${(props) =>\n props.$isPositive == null\n ? \"var(--color-text-secondary, rgba(255, 255, 255, 0.6))\"\n : props.$isPositive\n ? \"var(--color-positive, #0ecb81)\"\n : \"var(--color-negative, #f6465d)\"};\n\n @media (max-width: 600px) {\n font-size: 0.65rem;\n }\n`;\n\nconst PriceBlock = styled.div<{ $variant: \"classic\" | \"card\" | \"pill\" }>`\n display: none;\n\n ${({ $variant }) =>\n $variant === \"pill\" &&\n css`\n @media (max-width: 600px) {\n display: flex;\n flex: none;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.15rem;\n width: 100%;\n }\n `}\n`;\n\nconst PriceAmount = styled.span`\n font-size: 1.6rem;\n font-weight: 600;\n color: #fff;\n letter-spacing: 0.2px;\n`;\n\nconst PriceChange = styled.span<{ $isPositive?: boolean }>`\n font-size: 0.85rem;\n font-weight: 500;\n display: inline-flex;\n gap: 0.35rem;\n color: ${(props) =>\n props.$isPositive == null\n ? \"var(--color-text-secondary, rgba(255, 255, 255, 0.6))\"\n : props.$isPositive\n ? \"var(--color-positive, #0ecb81)\"\n : \"var(--color-negative, #f6465d)\"};\n`;\n","import * as React from \"react\";\n\nexport type YourOrderSide = \"buy\" | \"sell\";\n\nexport type YourOrder = {\n id: string;\n asset: string;\n side?: YourOrderSide;\n date?: string;\n price: number;\n amount: number;\n total: number;\n filledPercent?: number;\n status?: string;\n propertyPercent?: number;\n portfolioSharePercent?: number;\n avgEntryPrice?: number;\n pnlValue?: number;\n pnlPercent?: number;\n holdingLabel?: string;\n value?: number;\n currentPrice?: number;\n priceChangePercent?: number;\n priceChangePositive?: boolean;\n};\n\nexport type YourOrdersTab = {\n id: string;\n label: string;\n title?: string;\n orders: YourOrder[];\n emptyState?: string;\n enableCancel?: boolean;\n};\n\nexport type YourOrdersProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: string;\n orders?: YourOrder[];\n tabs?: YourOrdersTab[];\n activeTabId?: string;\n onTabChange?: (tabId: string) => void;\n renderOrderActions?: (order: YourOrder) => React.ReactNode;\n};\n\nconst DEFAULT_TABS = [\n { id: \"portfolio\", label: \"Portfolio\" },\n { id: \"openOrders\", label: \"Open Orders\" },\n { id: \"tradeHistory\", label: \"Trade History\" },\n { id: \"orderHistory\", label: \"Order History\" },\n] as const;\n\nconst panelStyle: React.CSSProperties = {\n width: \"100%\",\n borderRadius: \"16px\",\n backgroundColor: \"#0b0e10\",\n border: \"1px solid rgba(255,255,255,0.08)\",\n color: \"#ffffff\",\n display: \"flex\",\n flexDirection: \"column\",\n};\n\nconst headerStyle: React.CSSProperties = {\n padding: \"1.25rem 1.5rem 0.5rem\",\n};\n\nconst titleStyle: React.CSSProperties = {\n margin: 0,\n fontSize: \"1.1rem\",\n fontWeight: 600,\n};\n\nconst tabsRowStyle: React.CSSProperties = {\n display: \"flex\",\n gap: \"0.5rem\",\n padding: \"0 1.5rem\",\n borderBottom: \"1px solid rgba(255,255,255,0.08)\",\n};\n\nconst tabButtonBase: React.CSSProperties = {\n background: \"none\",\n border: \"none\",\n color: \"rgba(255,255,255,0.5)\",\n fontSize: \"0.9rem\",\n fontWeight: 400,\n padding: \"0.75rem 1rem\",\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"color 0.2s ease\",\n};\n\nconst tabContentWrapper: React.CSSProperties = {\n padding: \"1.25rem 1.5rem 1.5rem\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.75rem\",\n flex: 1,\n};\n\nconst tableHeaderStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\",\n gap: \"0.5rem\",\n paddingBottom: \"0.75rem\",\n borderBottom: \"1px solid rgba(255,255,255,0.1)\",\n minWidth: \"700px\",\n};\n\nconst tableHeaderCell: React.CSSProperties = {\n fontSize: \"0.7rem\",\n fontWeight: 700,\n color: \"#ffffff\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.3px\",\n};\n\nconst emptyStateStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n color: \"rgba(255,255,255,0.6)\",\n fontSize: \"0.95rem\",\n border: \"1px dashed rgba(255,255,255,0.12)\",\n borderRadius: \"8px\",\n minHeight: \"220px\",\n};\n\nconst rowStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\",\n gap: \"0.5rem\",\n alignItems: \"center\",\n minWidth: \"700px\",\n padding: \"0.75rem 0\",\n borderBottom: \"1px solid rgba(255,255,255,0.08)\",\n};\n\nconst formatCurrency = (value?: number) => {\n if (value == null || Number.isNaN(value)) return \"—\";\n return `$${value.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n};\n\nconst formatPercent = (value?: number, fractionDigits = 2) => {\n if (value == null || Number.isNaN(value)) return \"—\";\n return `${value.toFixed(fractionDigits)}%`;\n};\n\nexport const YourOrders = React.forwardRef<HTMLDivElement, YourOrdersProps>(\n ({ className, title, orders, tabs, activeTabId, onTabChange, renderOrderActions, ...props }, ref) => {\n const [internalActiveTab, setInternalActiveTab] = React.useState<string>(tabs?.[0]?.id ?? \"portfolio\");\n \n const effectiveActiveTabId = activeTabId ?? internalActiveTab;\n const handleTabChange = (tabId: string) => {\n if (onTabChange) {\n onTabChange(tabId);\n } else {\n setInternalActiveTab(tabId);\n }\n };\n \n const resolvedTabs: YourOrdersTab[] = tabs ?? DEFAULT_TABS.map(t => ({ ...t, orders: orders ?? [], emptyState: `No ${t.label.toLowerCase()} data available.` }));\n const activeTab = resolvedTabs.find(t => t.id === effectiveActiveTabId) ?? resolvedTabs[0];\n const activeOrders = activeTab?.orders ?? orders ?? [];\n const displayTitle = title ?? activeTab?.title ?? activeTab?.label ?? \"Portfolio Holdings\";\n\n console.log('[YourOrders] tabs:', tabs?.map(t => ({ id: t.id, ordersCount: t.orders?.length })));\n console.log('[YourOrders] activeTabId prop:', activeTabId);\n console.log('[YourOrders] effectiveActiveTabId:', effectiveActiveTabId);\n console.log('[YourOrders] activeTab:', activeTab?.id, 'orders count:', activeOrders?.length);\n\n const hasOrders = Array.isArray(activeOrders) && activeOrders.length > 0;\n const emptyMessage = activeTab?.emptyState ?? \"No holdings yet. Start trading to build your portfolio.\";\n\n const renderOrders = () => {\n if (!hasOrders) {\n return <div style={emptyStateStyle}>{emptyMessage}</div>;\n }\n\n return (\n <>\n <div style={tableHeaderStyle}>\n <div style={tableHeaderCell}>Property</div>\n <div style={tableHeaderCell}>Value</div>\n <div style={tableHeaderCell}>Holding</div>\n <div style={tableHeaderCell}>% of Property</div>\n <div style={tableHeaderCell}>Avg Price</div>\n <div style={tableHeaderCell}>P&L</div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.65rem\" }}>\n {activeOrders.map((order) => {\n const propertyName = order.asset;\n const holding =\n order.holdingLabel ??\n `${order.amount.toLocaleString(undefined, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n })} ${propertyName}`;\n const value = order.value ?? order.total;\n const portfolioShare =\n order.portfolioSharePercent != null\n ? `${order.portfolioSharePercent.toFixed(1)}% of portfolio`\n : undefined;\n const propertyPercent = order.propertyPercent;\n const avgPrice = order.avgEntryPrice ?? order.price;\n const pnlValue = order.pnlValue;\n const pnlPercent = order.pnlPercent;\n const pnlPositive = pnlValue != null ? pnlValue >= 0 : (pnlPercent ?? 0) >= 0;\n const currentPrice = order.currentPrice ?? order.price;\n const priceChangePercent = order.priceChangePercent ?? order.pnlPercent;\n const priceChangePositive =\n order.priceChangePositive ?? (priceChangePercent != null ? priceChangePercent >= 0 : undefined);\n\n return (\n <div key={order.id} style={{ ...rowStyle, gridTemplateColumns: renderOrderActions ? \"1.8fr 0.8fr 0.7fr 0.8fr 0.8fr 0.9fr 0.8fr\" : \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\" }}>\n <div style={{ display: \"flex\", gap: \"1rem\", alignItems: \"center\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.15rem\" }}>\n <div style={{ fontSize: \"0.9rem\", fontWeight: 500 }}>{propertyName}</div>\n {portfolioShare ? (\n <div style={{ fontSize: \"0.72rem\", color: \"rgba(255,255,255,0.5)\" }}>{portfolioShare}</div>\n ) : null}\n </div>\n {currentPrice != null ? (\n <div>\n <div\n style={{\n fontSize: \"0.9rem\",\n color: \"var(--color-text, #ffffff)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.25rem\",\n }}\n >\n {priceChangePositive != null ? (\n <span\n style={{\n color: priceChangePositive ? \"#0ecb81\" : \"#f6465d\",\n fontSize: \"0.7em\",\n }}\n >\n {priceChangePositive ? \"▲\" : \"▼\"}\n </span>\n ) : null}\n {formatCurrency(currentPrice)}\n </div>\n {priceChangePercent != null ? (\n <div\n style={{\n fontSize: \"0.7rem\",\n color: priceChangePositive ? \"#0ecb81\" : \"#f6465d\",\n }}\n >\n ({priceChangePositive ? \"+\" : \"\"}\n {priceChangePercent.toFixed(2)}%)\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n <div style={{ fontSize: \"0.9rem\", fontWeight: 500, color: \"#D4AF37\" }}>{formatCurrency(value)}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.92)\" }}>{holding}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.8)\" }}>{formatPercent(propertyPercent, 3)}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.9)\" }}>{formatCurrency(avgPrice)}</div>\n <div\n style={{\n fontSize: \"0.9rem\",\n fontWeight: 500,\n color: pnlPositive ? \"#0ecb81\" : \"#f6465d\",\n }}\n >\n {pnlValue != null ? `${pnlPositive ? \"+\" : \"-\"}${formatCurrency(Math.abs(pnlValue))}` : formatCurrency(pnlValue)}\n {pnlPercent != null ? (\n <span style={{ marginLeft: \"0.35rem\", fontSize: \"0.75rem\", color: \"rgba(255,255,255,0.6)\" }}>\n ({pnlPositive ? \"+\" : \"\"}\n {pnlPercent.toFixed(1)}%)\n </span>\n ) : null}\n </div>\n {renderOrderActions ? <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>{renderOrderActions(order)}</div> : null}\n </div>\n );\n })}\n </div>\n </>\n );\n };\n\n const tabContent = renderOrders();\n\n return (\n <div\n ref={ref}\n style={{ ...panelStyle, ...(props.style ?? {}) }}\n className={className}\n {...props}\n >\n <div style={headerStyle}>\n <h3 style={titleStyle}>{displayTitle}</h3>\n </div>\n\n {resolvedTabs.length > 1 && (\n <div style={tabsRowStyle}>\n {resolvedTabs.map((tab) => {\n const isActive = effectiveActiveTabId === tab.id;\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => handleTabChange(tab.id)}\n style={{\n ...tabButtonBase,\n color: isActive ? \"#ffffff\" : \"rgba(255,255,255,0.55)\",\n fontWeight: isActive ? 600 : 400,\n }}\n >\n {tab.label}\n {isActive ? (\n <div\n style={{\n position: \"absolute\",\n bottom: \"-1px\",\n left: 0,\n right: 0,\n height: \"2px\",\n background: \"#f0b90b\",\n }}\n />\n ) : null}\n </button>\n );\n })}\n </div>\n )}\n\n <div style={tabContentWrapper}>{tabContent}</div>\n </div>\n );\n }\n);\n\nYourOrders.displayName = \"YourOrders\";\n","import * as React from \"react\";\nimport * as LightweightCharts from \"lightweight-charts\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardHeader, CardTitle } from \"./card\";\n\nexport type PriceChartRange = \"30s\" | \"1m\" | \"5m\" | \"15m\" | \"1h\" | \"4h\" | \"24h\" | \"1W\" | \"1M\";\n\nexport type PriceChartCandle = {\n time: LightweightCharts.Time;\n open: number;\n high: number;\n low: number;\n close: number;\n};\n\nexport type PriceChartProps = Omit<React.ComponentPropsWithoutRef<typeof Card>, \"title\"> & {\n title?: string;\n ranges?: PriceChartRange[];\n selectedRange?: PriceChartRange;\n onRangeChange?: (range: PriceChartRange) => void;\n data: PriceChartCandle[];\n price?: number;\n changePercent?: number;\n currencySymbol?: string;\n height?: number;\n};\n\nconst timeToDate = (time: LightweightCharts.Time): Date | null => {\n if (typeof time === \"number\") {\n return new Date(time * 1000);\n }\n if (typeof time === \"object\" && time !== null && \"year\" in time && \"month\" in time && \"day\" in time) {\n const { year, month, day } = time as { year: number; month: number; day: number };\n return new Date(Date.UTC(year, month - 1, day));\n }\n return null;\n};\n\nconst createTickFormatter = (formatOptions: Intl.DateTimeFormatOptions) => {\n return (time: LightweightCharts.Time, _tickMarkType?: LightweightCharts.TickMarkType, locale?: string) => {\n const date = timeToDate(time);\n if (!date) return \"\";\n return date.toLocaleString(locale || undefined, formatOptions);\n };\n};\n\nconst getTimeScaleOptions = (\n range: PriceChartRange,\n): LightweightCharts.DeepPartial<LightweightCharts.TimeScaleOptions> => {\n switch (range) {\n case \"30s\":\n return {\n timeVisible: true,\n secondsVisible: true,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" }),\n };\n case \"1m\":\n return {\n timeVisible: true,\n secondsVisible: true,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" }),\n };\n case \"5m\":\n return {\n timeVisible: true,\n secondsVisible: false,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ hour: \"2-digit\", minute: \"2-digit\" }),\n };\n case \"15m\":\n return {\n timeVisible: true,\n secondsVisible: false,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ hour: \"2-digit\", minute: \"2-digit\" }),\n };\n case \"1h\":\n return {\n timeVisible: true,\n secondsVisible: false,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ hour: \"2-digit\", minute: \"2-digit\" }),\n };\n case \"4h\":\n return {\n timeVisible: true,\n secondsVisible: false,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ weekday: \"short\", hour: \"2-digit\" }),\n };\n case \"24h\":\n return {\n timeVisible: true,\n secondsVisible: false,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ month: \"short\", day: \"numeric\" }),\n };\n case \"1W\":\n return {\n timeVisible: true,\n secondsVisible: false,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ month: \"short\", day: \"numeric\" }),\n };\n case \"1M\":\n return {\n timeVisible: true,\n secondsVisible: false,\n borderColor: \"rgba(255,255,255,0.06)\",\n tickMarkFormatter: createTickFormatter({ month: \"short\", year: \"2-digit\" }),\n };\n default:\n return {\n timeVisible: true,\n secondsVisible: false,\n borderColor: \"rgba(255,255,255,0.06)\",\n };\n }\n};\n\nconst getPriceScaleOptions = (data: PriceChartCandle[]): LightweightCharts.DeepPartial<LightweightCharts.PriceScaleOptions> => {\n if (!data.length) return {\n borderColor: \"rgba(230, 200, 126, 0.25)\",\n textColor: \"rgba(230, 200, 126, 0.7)\",\n };\n \n const prices = data.flatMap(d => [d.open, d.high, d.low, d.close]);\n const minPrice = Math.min(...prices);\n const maxPrice = Math.max(...prices);\n const priceRange = maxPrice - minPrice;\n \n // Adjust scale formatting based on price range\n let scaleMargins = { top: 0.1, bottom: 0.1 };\n \n if (priceRange < 1) {\n // For small price ranges, give more margin\n scaleMargins = { top: 0.2, bottom: 0.2 };\n } else if (priceRange > 1000) {\n // For large price ranges, reduce margin\n scaleMargins = { top: 0.05, bottom: 0.05 };\n }\n \n return {\n borderColor: \"rgba(230, 200, 126, 0.25)\",\n textColor: \"rgba(230, 200, 126, 0.7)\",\n scaleMargins,\n };\n};\n\nconst defaultRanges: PriceChartRange[] = [\"30s\", \"1m\", \"5m\", \"15m\", \"1h\", \"4h\", \"24h\", \"1W\", \"1M\"];\nconst VISIBLE_RANGE_COUNT = 4;\n\nconst formatPrice = (value: number, currencySymbol: string) => {\n return `${currencySymbol}${value.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n};\n\ntype ChartApiWithSeries = LightweightCharts.IChartApi & {\n addSeries?: (\n seriesCtor: unknown,\n options?: LightweightCharts.DeepPartial<LightweightCharts.SeriesOptionsMap[\"Candlestick\"]>,\n ) => LightweightCharts.ISeriesApi<\"Candlestick\">;\n};\n\nfunction createCandlestickSeries(\n chart: LightweightCharts.IChartApi,\n options: LightweightCharts.DeepPartial<LightweightCharts.SeriesOptionsMap[\"Candlestick\"]>,\n): LightweightCharts.ISeriesApi<\"Candlestick\"> {\n const chartWithSeries = chart as ChartApiWithSeries;\n if (typeof chartWithSeries.addCandlestickSeries === \"function\") {\n return chartWithSeries.addCandlestickSeries(options);\n }\n\n const candlestickCtor = (LightweightCharts as unknown as { CandlestickSeries?: unknown }).CandlestickSeries;\n if (typeof chartWithSeries.addSeries === \"function\" && candlestickCtor) {\n return chartWithSeries.addSeries(candlestickCtor, options);\n }\n\n throw new Error(\"Candlestick series API is not available in the current lightweight-charts version.\");\n}\n\nexport const PriceChart = React.forwardRef<HTMLDivElement, PriceChartProps>(\n (\n {\n className,\n title = \"Price Chart\",\n ranges = defaultRanges,\n selectedRange,\n onRangeChange,\n data,\n price,\n changePercent,\n currencySymbol = \"$\",\n height = 301.52,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const chartRef = React.useRef<LightweightCharts.IChartApi | null>(null);\n const seriesRef = React.useRef<LightweightCharts.ISeriesApi<\"Candlestick\"> | null>(null);\n const priceLineRef = React.useRef<LightweightCharts.IPriceLine | null>(null);\n const [hoveredRange, setHoveredRange] = React.useState<PriceChartRange | null>(null);\n const [dropdownOpen, setDropdownOpen] = React.useState(false);\n const dropdownRef = React.useRef<HTMLDivElement | null>(null);\n const isAutoScrollRef = React.useRef(true);\n\n const visibleRanges = ranges.slice(0, VISIBLE_RANGE_COUNT);\n const dropdownRanges = ranges.slice(VISIBLE_RANGE_COUNT);\n const selectedInDropdown = dropdownRanges.includes(selectedRange as PriceChartRange);\n\n React.useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\n setDropdownOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n const resolvedPrice = React.useMemo(() => {\n if (price != null) return price;\n const last = data.at(-1);\n return last?.close;\n }, [data, price]);\n\n const inferredChangePercent = React.useMemo(() => {\n if (changePercent != null) return changePercent;\n const first = data[0]?.open;\n const last = data.at(-1)?.close;\n if (first == null || last == null || first === 0) return undefined;\n return ((last - first) / first) * 100;\n }, [changePercent, data]);\n\n const dollarChange = React.useMemo(() => {\n const first = data[0]?.open;\n const last = data.at(-1)?.close;\n if (first == null || last == null) return undefined;\n return last - first;\n }, [data]);\n\n React.useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const chart = LightweightCharts.createChart(el, {\n autoSize: true,\n layout: {\n background: { color: \"transparent\" },\n textColor: \"rgba(255,255,255,0.55)\",\n fontFamily: \"inherit\",\n },\n grid: {\n vertLines: { color: \"rgba(255,255,255,0.06)\" },\n horzLines: { color: \"rgba(255,255,255,0.06)\" },\n },\n rightPriceScale: getPriceScaleOptions(data),\n timeScale: getTimeScaleOptions(selectedRange || defaultRanges[0]),\n crosshair: {\n vertLine: { color: \"rgba(255,255,255,0.12)\" },\n horzLine: { color: \"rgba(255,255,255,0.12)\" },\n },\n });\n\n const series = createCandlestickSeries(chart, {\n upColor: \"#0ecb81\",\n downColor: \"#f6465d\",\n borderVisible: false,\n wickUpColor: \"#0ecb81\",\n wickDownColor: \"#f6465d\",\n });\n\n chartRef.current = chart;\n seriesRef.current = series;\n\n const handleVisibleRangeChange = () => {\n const timeScale = chart.timeScale();\n const position = timeScale.scrollPosition();\n const atRightEdge = position <= 0.01;\n isAutoScrollRef.current = atRightEdge;\n };\n const timeScale = chart.timeScale();\n timeScale.subscribeVisibleLogicalRangeChange(handleVisibleRangeChange);\n\n return () => {\n chartRef.current = null;\n seriesRef.current = null;\n timeScale.unsubscribeVisibleLogicalRangeChange(handleVisibleRangeChange);\n chart.remove();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n const chart = chartRef.current;\n if (!chart) return;\n const effectiveRange = selectedRange ?? ranges?.[0] ?? \"1D\";\n chart.applyOptions({\n timeScale: getTimeScaleOptions(effectiveRange),\n });\n }, [selectedRange, ranges]);\n\n React.useEffect(() => {\n const chart = chartRef.current;\n const series = seriesRef.current;\n if (!chart || !series) return;\n\n series.setData(data);\n\n chart.applyOptions({\n rightPriceScale: getPriceScaleOptions(data),\n });\n\n if (priceLineRef.current) {\n series.removePriceLine(priceLineRef.current);\n priceLineRef.current = null;\n }\n\n if (resolvedPrice != null) {\n const priceLineColor = \"rgba(230, 200, 126, 0.9)\";\n\n priceLineRef.current = series.createPriceLine({\n price: resolvedPrice,\n color: priceLineColor,\n lineWidth: 1,\n lineStyle: 2,\n axisLabelVisible: true,\n title: resolvedPrice.toFixed(2),\n });\n }\n\n if (isAutoScrollRef.current) {\n chart.timeScale().scrollToPosition(0, true);\n }\n }, [data, resolvedPrice]);\n\n const sign = inferredChangePercent == null ? null : inferredChangePercent >= 0 ? \"+\" : \"\";\n const changeClass =\n inferredChangePercent == null ? \"\" : inferredChangePercent >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n const badgeClass =\n inferredChangePercent == null\n ? \"\"\n : inferredChangePercent >= 0\n ? \"bg-[#0ecb81]/15 text-[#0ecb81]\"\n : \"bg-[#f6465d]/15 text-[#f6465d]\";\n\n const btnBaseStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-card-dark, rgba(255, 255, 255, 0.05))\",\n borderColor: \"var(--color-border, rgba(255, 255, 255, 0.12))\",\n color: \"var(--color-text-secondary, rgba(255, 255, 255, 0.7))\",\n };\n\n const btnHoverStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-accent-dark, rgba(230, 200, 126, 0.15))\",\n color: \"var(--color-text, #ffffff)\",\n };\n\n const btnActiveStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-accent, #e6c87e)\",\n borderColor: \"var(--color-accent, #e6c87e)\",\n color: \"#000000\",\n };\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full min-h-[360px] rounded-lg border border-white/10 bg-black/30 text-white backdrop-blur-md sm:min-h-[450px]\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"flex flex-col gap-4 px-4 pb-2 pt-5 md:flex-row md:items-start md:justify-between md:px-6 md:pt-6\">\n <div className=\"flex w-full flex-col gap-3 md:w-auto\">\n <CardTitle className=\"m-0 text-[1.1rem] font-semibold text-white\">{title}</CardTitle>\n\n <div className=\"flex flex-wrap items-center gap-2\">\n {visibleRanges.map((r) => {\n const active = r === selectedRange;\n const hovered = hoveredRange === r;\n const style: React.CSSProperties = {\n ...btnBaseStyle,\n ...(hovered ? btnHoverStyle : null),\n ...(active ? btnActiveStyle : null),\n };\n return (\n <button\n key={r}\n type=\"button\"\n onClick={() => onRangeChange?.(r)}\n onMouseEnter={() => setHoveredRange(r)}\n onMouseLeave={() => setHoveredRange((prev) => (prev === r ? null : prev))}\n style={style}\n className={cn(\n \"rounded border px-3 py-1 text-[0.85rem] font-medium transition-all duration-200\"\n )}\n >\n {r}\n </button>\n );\n })}\n {selectedInDropdown && selectedRange ? (\n <button\n type=\"button\"\n style={{\n ...btnBaseStyle,\n ...btnActiveStyle,\n }}\n className={cn(\n \"rounded border px-3 py-1 text-[0.85rem] font-medium transition-all duration-200\"\n )}\n disabled\n >\n {selectedRange}\n </button>\n ) : null}\n\n {dropdownRanges.length > 0 && (\n <div className=\"relative\" ref={dropdownRef}>\n <button\n type=\"button\"\n onClick={() => setDropdownOpen((prev) => !prev)}\n onMouseEnter={() => setHoveredRange(\"__dropdown__\" as PriceChartRange)}\n onMouseLeave={() => setHoveredRange((prev) => (prev === (\"__dropdown__\" as PriceChartRange) ? null : prev))}\n style={{\n ...btnBaseStyle,\n ...(hoveredRange === (\"__dropdown__\" as PriceChartRange) ? btnHoverStyle : null),\n }}\n className={cn(\n \"flex items-center gap-1 rounded border px-3 py-1 text-[0.85rem] font-medium transition-all duration-200\"\n )}\n >\n {\"More\"}\n <svg\n className={cn(\"h-3 w-3 transition-transform\", dropdownOpen && \"rotate-180\")}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n {dropdownOpen && (\n <div className=\"absolute left-0 top-full z-50 mt-1 min-w-[80px] rounded border border-white/10 bg-black/90 py-1 backdrop-blur-md\">\n {dropdownRanges.map((r) => {\n const active = r === selectedRange;\n return (\n <button\n key={r}\n type=\"button\"\n onClick={() => {\n onRangeChange?.(r);\n setDropdownOpen(false);\n }}\n className={cn(\n \"block w-full px-3 py-1.5 text-left text-[0.85rem] font-medium transition-colors hover:bg-white/10\",\n active ? \"bg-[#e6c87e]/20 text-[#e6c87e]\" : \"text-white/70\"\n )}\n >\n {r}\n </button>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n\n {resolvedPrice == null && inferredChangePercent == null ? null : (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {resolvedPrice == null ? null : (\n <div \n className={cn(\"text-xl font-semibold tabular-nums\", changeClass)}\n style={{ marginRight: '1rem' }}\n >\n {formatPrice(resolvedPrice, currencySymbol)}\n </div>\n )}\n {dollarChange != null ? (\n <span \n className={cn(\"text-base font-medium tabular-nums\", changeClass)}\n style={{ marginRight: '0.5rem' }}\n >\n {dollarChange >= 0 ? \"+\" : \"\"}{dollarChange.toFixed(2)}\n </span>\n ) : null}\n {inferredChangePercent == null ? null : (\n <div\n className={cn(\n \"rounded-md px-2 py-1 text-xs font-semibold tabular-nums\",\n badgeClass\n )}\n >\n {sign}\n {inferredChangePercent?.toFixed(2)}%\n </div>\n )}\n </div>\n )}\n </CardHeader>\n\n <div className=\"px-4 pb-5 pt-2 md:px-6 md:pb-6\">\n <div\n ref={containerRef}\n className=\"w-full overflow-hidden rounded-lg\"\n style={{ height }}\n />\n </div>\n </Card>\n );\n }\n);\n\nPriceChart.displayName = \"PriceChart\";\n","import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { BedDouble, Bath, CarFront } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertyHeroHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n imageUrl: string;\n imageAlt?: string;\n name: string;\n location: string;\n price?: number;\n currencySymbol?: string;\n changePercent?: number;\n beds?: number;\n baths?: number;\n cars?: number;\n propertyTypeLabel?: string;\n onTrade?: () => void;\n onMakeOffer?: () => void;\n};\n\nconst formatPrice = (value: number, currencySymbol: string) => {\n return `${currencySymbol}${value.toLocaleString(undefined, {\n minimumFractionDigits: 3,\n maximumFractionDigits: 3,\n })}`;\n};\n\nexport const PropertyHeroHeader = React.forwardRef<HTMLDivElement, PropertyHeroHeaderProps>(\n (\n {\n className,\n imageUrl,\n imageAlt,\n name,\n location,\n price,\n currencySymbol = \"$\",\n changePercent,\n beds,\n baths,\n cars,\n propertyTypeLabel,\n onTrade,\n onMakeOffer,\n ...props\n },\n ref\n ) => {\n const isPositive = changePercent == null ? undefined : changePercent >= 0;\n const accentColor = \"#e6c87e\";\n const tradeHoverColor = \"#f5dd9a\";\n const [isTradeInteracting, setIsTradeInteracting] = React.useState(false);\n const [isOfferInteracting, setIsOfferInteracting] = React.useState(false);\n const hasAmenities = beds != null || baths != null || cars != null || propertyTypeLabel != null;\n\n const headingStyle: React.CSSProperties = {\n fontSize: \"clamp(1.6rem, 4vw, 2.5rem)\",\n marginBottom: \"0.5rem\",\n color: \"#ffffff\",\n textShadow: \"0 2px 4px rgba(0, 0, 0, 0.3)\",\n fontWeight: 600,\n lineHeight: 1.2,\n };\n return (\n <OuterWrapper ref={ref} className={cn(className)} {...props}>\n <HeroContainer>\n <HeroImage\n src={imageUrl}\n alt={imageAlt ?? name}\n />\n\n <HeroGradient aria-hidden=\"true\" />\n\n <div className=\"absolute bottom-0 left-0 right-0 z-10 flex w-full flex-wrap items-end justify-between gap-4 p-8 max-[768px]:gap-4 max-[640px]:gap-3 max-[768px]:p-6 max-[480px]:p-4\">\n <InfoCard>\n <div className=\"min-w-0 space-y-2\">\n <h1 style={headingStyle} className=\"break-words\">\n {name}\n </h1>\n\n <InfoRow className=\"mb-3 max-[768px]:mb-[0.6rem] max-[480px]:mb-[0.5rem]\">\n <LocationText>{location}</LocationText>\n {price == null ? null : (\n <PriceBlock>\n {formatPrice(price, currencySymbol)}\n {changePercent == null ? null : (\n <span\n className={cn(\n \"ml-2 flex items-center text-[0.875rem] font-medium\",\n isPositive ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"mr-[0.15rem]\"\n >\n <path d={isPositive ? \"M7 14l5-5 5 5H7z\" : \"M7 10l5 5 5-5H7z\"} />\n </svg>\n {Math.abs(changePercent).toFixed(2)}%\n </span>\n )}\n </PriceBlock>\n )}\n </InfoRow>\n </div>\n <div className=\"flex items-center gap-6 text-[0.95rem] text-white/90 max-[768px]:hidden\">\n {beds == null ? null : (\n <div className=\"flex items-center\">\n <BedDouble className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{beds} Beds</span>\n </div>\n )}\n {baths == null ? null : (\n <div className=\"flex items-center\">\n <Bath className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{baths} Baths</span>\n </div>\n )}\n {cars == null ? null : (\n <div className=\"flex items-center\">\n <CarFront className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{cars} Cars</span>\n </div>\n )}\n {propertyTypeLabel == null ? null : <div>{propertyTypeLabel}</div>}\n </div>\n </InfoCard>\n\n <ActionButtons>\n <button\n type=\"button\"\n onClick={onTrade}\n className=\"flex items-center justify-center rounded border font-semibold transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_4px_8px_rgba(0,0,0,0.2)] active:translate-y-0 active:shadow-[0_2px_4px_rgba(0,0,0,0.1)] text-[0.95rem] max-[480px]:text-[0.9rem]\"\n style={{\n backgroundColor: isTradeInteracting ? tradeHoverColor : accentColor,\n color: \"black\",\n width: \"88.06px\",\n height: \"43px\",\n minWidth: \"88.06px\",\n borderColor: isTradeInteracting ? accentColor : \"transparent\",\n boxShadow: isTradeInteracting ? `0 0 0 2px rgba(0,0,0,0.4), 0 0 0 4px ${accentColor}` : \"none\",\n }}\n onMouseEnter={() => setIsTradeInteracting(true)}\n onMouseLeave={() => setIsTradeInteracting(false)}\n onMouseDown={() => setIsTradeInteracting(true)}\n onMouseUp={() => setIsTradeInteracting(false)}\n onFocus={() => setIsTradeInteracting(true)}\n onBlur={() => setIsTradeInteracting(false)}\n onTouchStart={() => setIsTradeInteracting(true)}\n onTouchEnd={() => setIsTradeInteracting(false)}\n >\n Trade\n </button>\n\n <button\n type=\"button\"\n onClick={onMakeOffer}\n className=\"flex items-center justify-center rounded border font-semibold transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_4px_8px_rgba(0,0,0,0.2)] active:translate-y-0 active:shadow-[0_2px_4px_rgba(0,0,0,0.1)] text-[0.95rem] max-[480px]:text-[0.9rem]\"\n style={{\n backgroundColor: isOfferInteracting ? accentColor : \"transparent\",\n borderColor: accentColor,\n color: isOfferInteracting ? \"black\" : accentColor,\n width: \"127.14px\",\n height: \"43px\",\n minWidth: \"127.14px\",\n boxShadow: isOfferInteracting ? `0 0 0 2px rgba(0,0,0,0.4), 0 0 0 4px ${accentColor}` : \"none\",\n }}\n onMouseEnter={() => setIsOfferInteracting(true)}\n onMouseLeave={() => setIsOfferInteracting(false)}\n onMouseDown={() => setIsOfferInteracting(true)}\n onMouseUp={() => setIsOfferInteracting(false)}\n onFocus={() => setIsOfferInteracting(true)}\n onBlur={() => setIsOfferInteracting(false)}\n onTouchStart={() => setIsOfferInteracting(true)}\n onTouchEnd={() => setIsOfferInteracting(false)}\n >\n Make Offer\n </button>\n </ActionButtons>\n </div>\n </HeroContainer>\n\n {hasAmenities ? (\n <MobileAmenities>\n {beds == null ? null : (\n <MobileAmenity>\n <BedDouble className=\"h-4 w-4\" />\n <span>{beds} Beds</span>\n </MobileAmenity>\n )}\n {baths == null ? null : (\n <MobileAmenity>\n <Bath className=\"h-4 w-4\" />\n <span>{baths} Baths</span>\n </MobileAmenity>\n )}\n {cars == null ? null : (\n <MobileAmenity>\n <CarFront className=\"h-4 w-4\" />\n <span>{cars} Cars</span>\n </MobileAmenity>\n )}\n {propertyTypeLabel == null ? null : <MobileAmenity>{propertyTypeLabel}</MobileAmenity>}\n </MobileAmenities>\n ) : null}\n </OuterWrapper>\n );\n }\n);\n\nPropertyHeroHeader.displayName = \"PropertyHeroHeader\";\n\nconst OuterWrapper = styled.div`\n width: 100%;\n max-width: 1200px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n`;\n\nconst HeroContainer = styled.div`\n position: relative;\n width: 100%;\n height: 500px;\n border-radius: 12px;\n overflow: hidden;\n background-color: #000;\n\n @media (max-width: 1024px) {\n height: 420px;\n }\n\n @media (max-width: 768px) {\n height: 320px;\n }\n\n @media (max-width: 640px) {\n height: 280px;\n }\n\n @media (max-width: 540px) {\n height: 250px;\n }\n\n @media (max-width: 420px) {\n height: 220px;\n }\n\n @media (max-width: 360px) {\n height: 200px;\n }\n`;\n\nconst MobileAmenities = styled.div`\n display: none;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n background: rgba(8, 8, 12, 0.85);\n border-radius: 12px;\n border: 1px solid rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.85);\n font-size: 0.85rem;\n\n @media (max-width: 768px) {\n display: flex;\n flex-wrap: wrap;\n }\n`;\n\nconst MobileAmenity = styled.span`\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.35rem 0.5rem;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.08);\n font-weight: 500;\n`;\n\nconst HeroImage = styled.img`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n transform: scale(1.15);\n transform-origin: center;\n min-width: 110%;\n transition: transform 0.5s ease-out;\n`;\n\nconst HeroGradient = styled.div`\n position: absolute;\n inset: 0;\n z-index: 1;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0.25) 45%, rgba(0, 0, 0, 0.75) 100%);\n`;\n\nconst ActionButtons = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.75rem;\n justify-content: flex-start;\n\n @media (max-width: 768px) {\n gap: 0.5rem;\n }\n\n @media (max-width: 640px) {\n display: none;\n }\n`;\n\nconst InfoCard = styled.div`\n display: inline-block;\n width: fit-content;\n max-width: 70%;\n border-radius: 12px;\n background: rgba(0, 0, 0, 0.12);\n padding: 0.75rem 1rem;\n color: #fff;\n backdrop-filter: blur(6px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);\n border: 1px solid rgba(255, 255, 255, 0.12);\n min-width: 0;\n\n @media (max-width: 768px) {\n max-width: 85%;\n }\n\n @media (max-width: 640px) {\n max-width: 92%;\n }\n\n @media (max-width: 480px) {\n max-width: 95%;\n }\n`;\n\nconst InfoRow = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 0.75rem;\n width: 100%;\n\n @media (max-width: 640px) {\n gap: 0.5rem;\n }\n`;\n\nconst LocationText = styled.span`\n font-size: clamp(1rem, 2.6vw, 1.25rem);\n color: rgba(255, 255, 255, 0.9);\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst PriceBlock = styled.span`\n display: flex;\n align-items: center;\n font-size: clamp(1rem, 2.2vw, 1.25rem);\n font-weight: 600;\n color: var(--color-accent, #f0b90b);\n padding-left: 1rem;\n border-left: 1px solid rgba(255, 255, 255, 0.25);\n min-height: 1.5rem;\n`;\n\n\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertySubheaderTab = {\n id: string;\n label: string;\n hasNotification?: boolean;\n notificationColor?: string;\n};\n\nexport type PropertySubheaderAction = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n};\n\nexport type PropertySubheaderProps = React.HTMLAttributes<HTMLDivElement> & {\n tabs: PropertySubheaderTab[];\n activeTabId: string;\n onTabChange?: (tabId: string) => void;\n actions?: PropertySubheaderAction[];\n};\n\nexport const PropertySubheader = React.forwardRef<HTMLDivElement, PropertySubheaderProps>(\n ({ className, tabs, activeTabId, onTabChange, actions, ...props }, ref) => {\n const tabsContainerRef = React.useRef<HTMLDivElement>(null);\n\n // Force scrollbar to be always visible on mobile\n React.useEffect(() => {\n const container = tabsContainerRef.current;\n if (!container) return;\n\n // Only apply on mobile where scrollbar is hidden by default\n const isMobile = window.innerWidth <= 768;\n if (!isMobile) return;\n\n // Force scrollbar to appear by slightly scrolling and resetting\n const forceScrollbar = () => {\n if (container.scrollWidth > container.clientWidth) {\n // Element is scrollable, force scrollbar visibility\n container.scrollTop = 1; // Triggers scrollbar in some browsers\n container.scrollTop = 0;\n container.scrollLeft = 1;\n container.scrollLeft = 0;\n }\n };\n\n // Initial check\n setTimeout(forceScrollbar, 100);\n\n // Also check on resize in case orientation changes\n window.addEventListener('resize', forceScrollbar);\n return () => window.removeEventListener('resize', forceScrollbar);\n }, [tabs]);\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full font-normal\",\n \"flex flex-col-reverse gap-3\",\n \"md:flex-row md:items-center md:justify-between\",\n className\n )}\n {...props}\n >\n <div\n ref={tabsContainerRef}\n className={cn(\n \"flex items-center border-b border-white/10\",\n \"overflow-x-auto md:overflow-visible\",\n \"[-webkit-overflow-scrolling:touch]\",\n \"[scroll-behavior:smooth]\",\n \"[touch-action:pan-x]\",\n \"md:border-b-0\"\n )}\n style={{ WebkitTapHighlightColor: \"transparent\" }}\n >\n <div className=\"flex min-w-max\">\n {tabs.map((tab) => {\n const active = tab.id === activeTabId;\n\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => onTabChange?.(tab.id)}\n className={cn(\n \"relative whitespace-nowrap\",\n \"px-6 py-4\",\n \"font-normal\",\n \"transition-colors\",\n \"max-[768px]:px-[1.2rem] max-[768px]:py-[0.8rem]\",\n \"max-[480px]:px-4 max-[480px]:py-[0.7rem] max-[480px]:text-[0.9rem]\",\n active\n ? \"font-semibold text-[var(--color-accent,#e6c87e)]\"\n : \"text-white/60 hover:text-white\"\n )}\n style={{\n borderBottom: active ? \"2px solid var(--color-accent, #e6c87e)\" : \"2px solid transparent\",\n minWidth: \"80px\",\n touchAction: \"manipulation\",\n }}\n >\n {tab.label}\n\n {tab.hasNotification ? (\n <span\n className=\"absolute right-[10px] top-[10px] h-2 w-2 rounded-full animate-pulse\"\n style={{\n backgroundColor: tab.notificationColor ?? \"#f6465d\",\n boxShadow: \"0 0 0 0 rgba(246, 70, 93, 0.7)\",\n }}\n />\n ) : null}\n </button>\n );\n })}\n </div>\n </div>\n\n {actions != null && actions.length > 0 ? (\n <div\n className={cn(\n \"flex items-center gap-[10px]\",\n \"overflow-x-auto md:overflow-visible\",\n \"[scrollbar-width:none]\",\n \"md:justify-end\",\n \"max-[768px]:w-full max-[768px]:justify-center max-[768px]:pb-2 max-[768px]:mb-4\"\n )}\n >\n {actions.map((action) => (\n <button\n key={action.id}\n type=\"button\"\n onClick={action.onClick}\n className={cn(\n \"flex shrink-0 items-center gap-[5px] whitespace-nowrap\",\n \"rounded\",\n \"border border-white/10\",\n \"bg-transparent\",\n \"px-3 py-1.5 text-[14px] font-normal\",\n \"transition-all\",\n \"max-[768px]:px-2.5 max-[768px]:py-[5px] max-[768px]:text-[13px]\",\n \"hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)]\"\n )}\n >\n {action.icon}\n {action.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nPropertySubheader.displayName = \"PropertySubheader\";\n","import * as React from \"react\";\nimport styled from \"styled-components\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type MobileTradeNavItem = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n};\n\nexport type MobileTradeNavProps = React.HTMLAttributes<HTMLDivElement> & {\n items: MobileTradeNavItem[];\n activeId: string;\n onChange?: (itemId: string) => void;\n};\n\nconst MobileToggleContainer = styled.div`\n display: none;\n \n @media (max-width: 1024px) {\n display: flex;\n gap: 0.5rem;\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: var(--color-card-darker, #111);\n padding: 0.75rem 1rem;\n padding-bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));\n border-top: 1px solid var(--color-border);\n z-index: 100;\n box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.3);\n }\n`;\n\nconst MobileToggleButton = styled.button<{ active: boolean }>`\n flex: 1;\n padding: 0.75rem;\n background-color: ${(props) => (props.active ? \"var(--color-accent)\" : \"transparent\")};\n color: ${(props) => (props.active ? \"#000\" : \"var(--color-text-secondary)\")};\n border: ${(props) =>\n props.active ? \"1px solid var(--color-accent)\" : \"1px solid rgba(255, 255, 255, 0.2)\"};\n border-radius: 6px;\n font-size: 0.9rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n \n &:hover {\n background-color: ${(props) =>\n props.active ? \"var(--color-accent-hover)\" : \"rgba(255, 255, 255, 0.05)\"};\n border-color: ${(props) =>\n props.active ? \"var(--color-accent)\" : \"rgba(255, 255, 255, 0.3)\"};\n }\n \n @media (max-width: 480px) {\n font-size: 0.85rem;\n padding: 0.6rem 0.5rem;\n }\n`;\n\nexport const MobileTradeNav = React.forwardRef<HTMLDivElement, MobileTradeNavProps>(\n ({ className, items, activeId, onChange, ...props }, ref) => {\n return (\n <MobileToggleContainer ref={ref} className={cn(className)} {...props}>\n {items.map((item) => (\n <MobileToggleButton\n key={item.id}\n type=\"button\"\n active={item.id === activeId}\n onClick={() => onChange?.(item.id)}\n >\n {item.icon}\n {item.label}\n </MobileToggleButton>\n ))}\n </MobileToggleContainer>\n );\n }\n);\n\nMobileTradeNav.displayName = \"MobileTradeNav\";\n"]}
|