SYMBOL INDEX (737 symbols across 151 files) FILE: apps/browser-extension/scripts/vite-plugin-to-utf8.ts method generateBundle (line 15) | generateBundle(options, bundle) { FILE: apps/browser-extension/src/components/app.tsx function App (line 9) | function App() { constant FLOATING_MOTION (line 78) | const FLOATING_MOTION = { function FloatingCopyButton (line 85) | function FloatingCopyButton({ FILE: apps/browser-extension/src/components/context-menu.tsx type ContextMenuProps (line 4) | interface ContextMenuProps { constant FONT_STACK (line 11) | const FONT_STACK = constant MOTION (line 14) | const MOTION = { function FullIcon (line 25) | function FullIcon() { function UserIcon (line 43) | function UserIcon() { function CodeIcon (line 61) | function CodeIcon() { function CompactIcon (line 79) | function CompactIcon() { constant FORMAT_OPTIONS (line 99) | const FORMAT_OPTIONS: { function useIsDark (line 110) | function useIsDark(): boolean { function ContextMenu (line 127) | function ContextMenu({ x, y, onSelect, onClose }: ContextMenuProps) { FILE: apps/browser-extension/src/components/copy-button.tsx constant MOTION (line 10) | const MOTION = { type CopyButtonProps (line 21) | interface CopyButtonProps { function CopyButton (line 30) | function CopyButton({ onToast }: CopyButtonProps) { function iconColor (line 164) | function iconColor(state: CopyState): string { function IconForState (line 175) | function IconForState({ FILE: apps/browser-extension/src/components/list-copy-icon.tsx constant MOTION (line 10) | const MOTION = { type IconState (line 20) | type IconState = "idle" | "loading" | "success" | "error"; type ListCopyIconProps (line 22) | interface ListCopyIconProps { function ListCopyIcon (line 32) | function ListCopyIcon({ conversationId, onToast }: ListCopyIconProps) { function iconColor (line 186) | function iconColor(state: IconState): string { function SmallIcon (line 197) | function SmallIcon({ FILE: apps/browser-extension/src/components/toast.tsx type ToastData (line 3) | interface ToastData { type ToastProps (line 10) | interface ToastProps { constant MOTION (line 17) | const MOTION = { constant COLORS (line 31) | const COLORS = { constant FONT_STACK (line 52) | const FONT_STACK = function useIsDark (line 57) | function useIsDark(): boolean { function detectDark (line 68) | function detectDark(): boolean { function SuccessIcon (line 78) | function SuccessIcon() { function ErrorIcon (line 99) | function ErrorIcon() { type Phase (line 132) | type Phase = "entering" | "visible" | "exiting"; function Toast (line 134) | function Toast({ data, onDismiss }: ToastProps) { FILE: apps/browser-extension/src/constants/extension-runtime.ts constant CTXPORT_COMPONENT_NAME (line 3) | const CTXPORT_COMPONENT_NAME = "ctxport-root"; constant EXTENSION_RUNTIME_MESSAGE (line 5) | const EXTENSION_RUNTIME_MESSAGE = { constant EXTENSION_WINDOW_EVENT (line 9) | const EXTENSION_WINDOW_EVENT = { type ExtensionRuntimeMessageType (line 16) | type ExtensionRuntimeMessageType = function isSupportedTabUrl (line 19) | function isSupportedTabUrl(url?: string): boolean { FILE: apps/browser-extension/src/entrypoints/background.ts function sendMessageToTab (line 10) | async function sendMessageToTab( function getActiveTab (line 21) | async function getActiveTab() { FILE: apps/browser-extension/src/entrypoints/content.tsx method main (line 20) | async main(ctx) { FILE: apps/browser-extension/src/entrypoints/popup/main.tsx constant FONT_STACK (line 12) | const FONT_STACK = constant MOTION (line 15) | const MOTION = { function useIsDark (line 21) | function useIsDark(): boolean { type TabState (line 34) | type TabState = function useActiveTab (line 39) | function useActiveTab(): TabState { function ClipboardIcon (line 77) | function ClipboardIcon() { function LogoIcon (line 95) | function LogoIcon() { function Popup (line 141) | function Popup() { constant FOOTER_LINKS (line 276) | const FOOTER_LINKS = [ function FooterLink (line 283) | function FooterLink({ function PopupFooter (line 313) | function PopupFooter({ dark }: { dark: boolean }) { function UnsupportedState (line 361) | function UnsupportedState({ dark }: { dark: boolean }) { FILE: apps/browser-extension/src/hooks/use-copy-conversation.ts type CopyState (line 9) | type CopyState = "idle" | "loading" | "success" | "error"; type CopyResult (line 11) | interface CopyResult { function useCopyConversation (line 16) | function useCopyConversation() { FILE: apps/browser-extension/src/hooks/use-extension-url.ts function useExtensionUrl (line 4) | function useExtensionUrl() { FILE: apps/browser-extension/src/lib/utils.ts function cn (line 3) | function cn(...inputs: ClassValue[]) { function writeToClipboard (line 7) | async function writeToClipboard(text: string): Promise { FILE: apps/web/mdx-components.tsx function useMDXComponents (line 5) | function useMDXComponents( FILE: apps/web/middleware.ts constant PUBLIC_FILE (line 4) | const PUBLIC_FILE = /\.(?:\w+)$/; function isLocaleLike (line 10) | function isLocaleLike(segment: string) { function isPublicPath (line 14) | function isPublicPath(pathname: string) { function getSegments (line 22) | function getSegments(pathname: string) { function buildRedirectPath (line 26) | function buildRedirectPath(pathname: string) { function middleware (line 34) | function middleware(request: NextRequest) { FILE: apps/web/next.config.mjs method webpack (line 78) | webpack(config) { FILE: apps/web/src/app/[locale]/docs/[[...mdxPath]]/page.tsx type PageProps (line 6) | type PageProps = { function normalizeMdxPath (line 15) | function normalizeMdxPath(mdxPath?: string[] | string) { function generateStaticParams (line 21) | async function generateStaticParams() { function generateMetadata (line 33) | async function generateMetadata(props: PageProps): Promise { function Page (line 42) | async function Page(props: PageProps) { FILE: apps/web/src/app/[locale]/docs/layout-client.tsx type SocialLinkKey (line 25) | type SocialLinkKey = keyof typeof socialLinksConfig; type SocialIcon (line 26) | type SocialIcon = ComponentType<{ className?: string }>; type DocsLayoutClientProps (line 49) | type DocsLayoutClientProps = { function DocsLayoutClient (line 55) | function DocsLayoutClient({ FILE: apps/web/src/app/[locale]/docs/layout.tsx type LayoutProps (line 5) | type LayoutProps = { function DocsLayout (line 12) | async function DocsLayout({ children, params }: LayoutProps) { FILE: apps/web/src/app/[locale]/layout.tsx function generateStaticParams (line 4) | async function generateStaticParams() { function LocaleLayout (line 8) | function LocaleLayout({ children }: { children: ReactNode }) { FILE: apps/web/src/app/[locale]/page.tsx function HomePage (line 5) | function HomePage() { FILE: apps/web/src/app/error.tsx function Error (line 5) | function Error({ FILE: apps/web/src/app/global-error.tsx function GlobalError (line 5) | function GlobalError({ FILE: apps/web/src/app/layout-client.tsx function RootLayoutClient (line 50) | function RootLayoutClient({ children }: { children: React.ReactNode }) { function LayoutFrame (line 90) | function LayoutFrame({ FILE: apps/web/src/app/layout.tsx function RootLayout (line 73) | function RootLayout({ FILE: apps/web/src/app/page.tsx function RootRedirect (line 4) | function RootRedirect() { FILE: apps/web/src/app/sitemap.ts constant BASE_URL (line 3) | const BASE_URL = "https://ctxport.xiaominglab.com"; function sitemap (line 16) | function sitemap(): MetadataRoute.Sitemap { FILE: apps/web/src/components/home/landing-page.tsx constant GITHUB_REPO (line 27) | const GITHUB_REPO = "https://github.com/nicepkg/ctxport"; constant GITHUB_RELEASES (line 28) | const GITHUB_RELEASES = "https://github.com/nicepkg/ctxport/releases"; constant PLATFORMS (line 40) | const PLATFORMS = [ function Section (line 51) | function Section({ function SectionTitle (line 74) | function SectionTitle({ function HeroSection (line 92) | function HeroSection() { function ProblemSection (line 144) | function ProblemSection() { function CompareSection (line 193) | function CompareSection() { function TrustSection (line 257) | function TrustSection() { function HowSection (line 317) | function HowSection() { function FeaturesSection (line 374) | function FeaturesSection() { constant BUNDLE_EXAMPLE (line 431) | const BUNDLE_EXAMPLE = `--- function BundleSection (line 458) | function BundleSection() { function FormatsSection (line 481) | function FormatsSection() { function InstallSection (line 555) | function InstallSection() { function PlatformsSection (line 602) | function PlatformsSection() { function CtaSection (line 657) | function CtaSection() { function LandingPage (line 684) | function LandingPage() { FILE: apps/web/src/components/logo.tsx function Logo (line 10) | function Logo(props: Omit) { FILE: apps/web/src/components/structured-data.tsx function StructuredData (line 31) | function StructuredData() { FILE: apps/web/src/components/theme-provider.tsx function ThemeProvider (line 6) | function ThemeProvider({ children }: { children: React.ReactNode }) { FILE: apps/web/src/lib/site-info.ts method url (line 14) | get url() { method docsBase (line 17) | get docsBase() { method issuesUrl (line 20) | get issuesUrl() { FILE: packages/core-markdown/src/__tests__/formats.test.ts function makeNodes (line 10) | function makeNodes(): ContentNode[] { FILE: packages/core-markdown/src/__tests__/serializer.test.ts function makeBundle (line 5) | function makeBundle(overrides: Partial = {}): ContentBund... FILE: packages/core-markdown/src/formats.ts type BundleFormatType (line 3) | type BundleFormatType = "full" | "user-only" | "code-only" | "compact"; constant CHAT_ROLES (line 5) | const CHAT_ROLES = new Set(["user", "assistant", "system"]); function filterNodes (line 7) | function filterNodes( function chatRoleLabel (line 34) | function chatRoleLabel(role: string): string { function formatFull (line 40) | function formatFull( function formatUserOnly (line 53) | function formatUserOnly( function formatCodeOnly (line 67) | function formatCodeOnly( function formatCompact (line 84) | function formatCompact( FILE: packages/core-markdown/src/serializer.ts type SerializeOptions (line 5) | interface SerializeOptions { type SerializeResult (line 10) | interface SerializeResult { function buildFrontmatter (line 16) | function buildFrontmatter(meta: Record): string { function serializeConversation (line 34) | function serializeConversation( function serializeBundle (line 80) | function serializeBundle( FILE: packages/core-markdown/src/token-estimator.ts function estimateTokens (line 3) | function estimateTokens(text: string): number { function formatTokenCount (line 9) | function formatTokenCount(tokens: number): string { FILE: packages/core-plugins/src/index.ts constant EXTENSION_HOST_PERMISSIONS (line 42) | const EXTENSION_HOST_PERMISSIONS = [ FILE: packages/core-plugins/src/plugins/chatgpt/constants.ts type ContentTypeValue (line 12) | type ContentTypeValue = (typeof ContentType)[keyof typeof ContentType]; type MessageRoleValue (line 21) | type MessageRoleValue = (typeof MessageRole)[keyof typeof MessageRole]; FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/code-flattener.ts class CodeFlattener (line 5) | class CodeFlattener implements ContentFlattener { method canHandle (line 8) | canHandle(content: MessageContent): boolean { method flatten (line 12) | async flatten( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/fallback-flattener.ts class FallbackFlattener (line 5) | class FallbackFlattener implements ContentFlattener { method canHandle (line 8) | canHandle(_content: MessageContent): boolean { method flatten (line 12) | async flatten( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/index.ts function registerContentFlattener (line 20) | function registerContentFlattener(flattener: ContentFlattener): void { function flattenMessageContent (line 32) | async function flattenMessageContent( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/model-editable-context-flattener.ts class ModelEditableContextFlattener (line 5) | class ModelEditableContextFlattener implements ContentFlattener { method canHandle (line 8) | canHandle(content: MessageContent): boolean { method flatten (line 12) | async flatten( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/multimodal-text-flattener.ts function isImageAssetPointer (line 6) | function isImageAssetPointer(part: unknown): part is ImageAssetPointer { class MultimodalTextFlattener (line 16) | class MultimodalTextFlattener implements ContentFlattener { method canHandle (line 19) | canHandle(content: MessageContent): boolean { method flatten (line 23) | async flatten( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/reasoning-recap-flattener.ts class ReasoningRecapFlattener (line 5) | class ReasoningRecapFlattener implements ContentFlattener { method canHandle (line 8) | canHandle(content: MessageContent): boolean { method flatten (line 12) | async flatten( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/text-flattener.ts class TextFlattener (line 6) | class TextFlattener implements ContentFlattener { method canHandle (line 9) | canHandle(content: MessageContent): boolean { method flatten (line 13) | async flatten( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/thoughts-flattener.ts class ThoughtsFlattener (line 5) | class ThoughtsFlattener implements ContentFlattener { method canHandle (line 8) | canHandle(content: MessageContent): boolean { method flatten (line 12) | async flatten( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/tool-response-flattener.ts class ToolResponseFlattener (line 6) | class ToolResponseFlattener implements ContentFlattener { method canHandle (line 9) | canHandle(content: MessageContent): boolean { method flatten (line 13) | async flatten( FILE: packages/core-plugins/src/plugins/chatgpt/content-flatteners/types.ts type FlattenContext (line 3) | interface FlattenContext { type ContentFlattener (line 8) | interface ContentFlattener { type ContentFlattenerRegistry (line 14) | type ContentFlattenerRegistry = Map; FILE: packages/core-plugins/src/plugins/chatgpt/plugin.ts constant HOST_PATTERN (line 11) | const HOST_PATTERN = /^https:\/\/(?:chatgpt\.com|chat\.openai\.com)\//i; constant CONVERSATION_PATTERN (line 12) | const CONVERSATION_PATTERN = constant SESSION_ENDPOINT (line 15) | const SESSION_ENDPOINT = "https://chatgpt.com/api/auth/session"; constant API_ENDPOINT (line 16) | const API_ENDPOINT = "https://chatgpt.com/backend-api/conversation"; constant TOKEN_EXPIRY_SKEW_MS (line 17) | const TOKEN_EXPIRY_SKEW_MS = 60_000; constant DEFAULT_TOKEN_TTL_MS (line 18) | const DEFAULT_TOKEN_TTL_MS = 10 * 60_000; method extract (line 30) | async extract(ctx: PluginContext): Promise { method fetchById (line 39) | async fetchById(conversationId: string): Promise { function extractConversationId (line 77) | function extractConversationId(url: string): string | null { type AccessTokenCache (line 84) | interface AccessTokenCache { function fetchAndCacheAccessToken (line 92) | async function fetchAndCacheAccessToken(): Promise { function getAccessToken (line 128) | async function getAccessToken(forceRefresh = false): Promise { class ChatGPTApiError (line 146) | class ChatGPTApiError extends Error { method constructor (line 147) | constructor(readonly status: number) { function fetchConversation (line 152) | async function fetchConversation( function fetchConversationWithTokenRetry (line 173) | async function fetchConversationWithTokenRetry( function shouldSkipMessage (line 193) | function shouldSkipMessage(node: MessageNode): boolean { function parseConversation (line 206) | async function parseConversation( FILE: packages/core-plugins/src/plugins/chatgpt/text-processor.ts constant PRIVATE_USE_PATTERN (line 1) | const PRIVATE_USE_PATTERN = /[\uE000-\uF8FF]/g; constant CITATION_TOKEN_PATTERN (line 3) | const CITATION_TOKEN_PATTERN = function stripPrivateUse (line 6) | function stripPrivateUse(text: string): string { function stripCitationTokens (line 10) | function stripCitationTokens(text: string): string { FILE: packages/core-plugins/src/plugins/chatgpt/tree-linearizer.ts function buildLinearConversation (line 8) | function buildLinearConversation( FILE: packages/core-plugins/src/plugins/chatgpt/types.ts type JsonValue (line 1) | type JsonValue = type MessageAuthor (line 9) | interface MessageAuthor { type ImageAssetPointer (line 14) | interface ImageAssetPointer { type MessageContent (line 33) | interface MessageContent { type MessageNode (line 41) | interface MessageNode { type ChatGPTConversationResponse (line 63) | interface ChatGPTConversationResponse { FILE: packages/core-plugins/src/plugins/claude/message-converter.ts function normalizeArtifactToCodeBlock (line 3) | function normalizeArtifactToCodeBlock(text: string): string { function extractClaudeMessageText (line 16) | function extractClaudeMessageText(message: ClaudeMessage): string { FILE: packages/core-plugins/src/plugins/claude/plugin.ts constant HOST_PATTERN (line 9) | const HOST_PATTERN = /^https:\/\/claude\.ai\//i; constant CONVERSATION_PATTERN (line 10) | const CONVERSATION_PATTERN = /^https?:\/\/claude\.ai\/chat\/([a-zA-Z0-9-... constant API_BASE (line 11) | const API_BASE = "https://claude.ai/api/organizations"; method extract (line 23) | async extract(ctx: PluginContext): Promise { method fetchById (line 36) | async fetchById(conversationId: string): Promise { function extractConversationId (line 76) | function extractConversationId(url: string): string | null { function extractOrgId (line 83) | function extractOrgId(cookie: string): string | null { function fetchConversation (line 91) | async function fetchConversation( function getSortValue (line 120) | function getSortValue(message: ClaudeMessage): number { function parseConversation (line 128) | function parseConversation( FILE: packages/core-plugins/src/plugins/claude/types.ts type ClaudeConversationResponse (line 1) | interface ClaudeConversationResponse { type ClaudeMessage (line 20) | interface ClaudeMessage { type ClaudeMessageContent (line 37) | interface ClaudeMessageContent { FILE: packages/core-plugins/src/plugins/deepseek/plugin.ts constant HOST_PATTERN (line 8) | const HOST_PATTERN = /^https:\/\/chat\.deepseek\.com\//i; constant CONVERSATION_PATTERN (line 9) | const CONVERSATION_PATTERN = constant API_BASE (line 11) | const API_BASE = "https://chat.deepseek.com/api/v0"; method extract (line 23) | async extract(ctx: PluginContext): Promise { method fetchById (line 36) | async fetchById(sessionId: string): Promise { function extractSessionId (line 78) | function extractSessionId(url: string): string | null { function extractAuthToken (line 85) | function extractAuthToken(): string | null { function fetchHistory (line 101) | async function fetchHistory( function normalizeRole (line 133) | function normalizeRole(role: string): "user" | "assistant" | null { function parseConversation (line 140) | function parseConversation( FILE: packages/core-plugins/src/plugins/deepseek/types.ts type DeepSeekHistoryResponse (line 2) | interface DeepSeekHistoryResponse { type DeepSeekMessage (line 17) | interface DeepSeekMessage { FILE: packages/core-plugins/src/plugins/doubao/plugin.ts constant HOST_PATTERN (line 12) | const HOST_PATTERN = /^https:\/\/www\.doubao\.com\//i; constant CONVERSATION_PATTERN (line 13) | const CONVERSATION_PATTERN = constant API_BASE (line 16) | const API_BASE = "https://www.doubao.com"; constant API_PARAMS (line 17) | const API_PARAMS = constant FETCH_LIMIT (line 20) | const FETCH_LIMIT = 20; constant MAX_PAGINATION_PAGES (line 21) | const MAX_PAGINATION_PAGES = 100; method extract (line 33) | async extract(ctx: PluginContext): Promise { method fetchById (line 41) | async fetchById(conversationId: string): Promise { function extractConversationId (line 77) | function extractConversationId(url: string): string | null { function fetchAndParse (line 82) | async function fetchAndParse( function fetchConversationTitle (line 96) | async function fetchConversationTitle( function fetchAllMessages (line 140) | async function fetchAllMessages( function extractMessageText (line 210) | function extractMessageText(message: DoubaoMessage): string { function parseConversation (line 233) | function parseConversation( FILE: packages/core-plugins/src/plugins/doubao/types.ts type DoubaoChainResponse (line 2) | interface DoubaoChainResponse { type DoubaoConversationInfoResponse (line 14) | interface DoubaoConversationInfoResponse { type DoubaoMessage (line 30) | interface DoubaoMessage { type DoubaoContentBlock (line 49) | interface DoubaoContentBlock { FILE: packages/core-plugins/src/plugins/gemini/parser.ts constant BATCH_EXECUTE_BASE (line 4) | const BATCH_EXECUTE_BASE = "https://gemini.google.com"; constant GEMINI_IMAGE_URL_PATTERN (line 6) | const GEMINI_IMAGE_URL_PATTERN = function fetchConversationPayload (line 11) | async function fetchConversationPayload( function findRpcPayload (line 86) | function findRpcPayload(node: unknown, rpcId: string): string | null { function extractPayloadFromResponse (line 110) | function extractPayloadFromResponse( type ParsedMessage (line 137) | interface ParsedMessage { function normalizeText (line 142) | function normalizeText(content: string): string { function findAllStrings (line 149) | function findAllStrings(root: unknown): string[] { function extractGeminiImageUrls (line 179) | function extractGeminiImageUrls(node: unknown): string[] { function isLikelyMessageText (line 194) | function isLikelyMessageText(content: string): boolean { function findFirstString (line 205) | function findFirstString(node: unknown): string | null { function tryExtractUserMessage (line 235) | function tryExtractUserMessage(node: unknown[]): string | null { function tryExtractAssistantMessage (line 251) | function tryExtractAssistantMessage(node: unknown[]): string | null { function dedupeMessages (line 284) | function dedupeMessages(messages: ParsedMessage[]): ParsedMessage[] { function extractMessagesFromPayload (line 302) | function extractMessagesFromPayload(payload: unknown): ParsedMessage[] { FILE: packages/core-plugins/src/plugins/gemini/plugin.ts constant HOST_PATTERN (line 10) | const HOST_PATTERN = /^https:\/\/gemini\.google\.com\//i; constant CONVERSATION_PATTERN (line 11) | const CONVERSATION_PATTERN = method extract (line 24) | async extract(ctx: PluginContext): Promise { method fetchById (line 40) | async fetchById(conversationId: string): Promise { function extractConversationId (line 83) | function extractConversationId(url: string): string | null { function extractPathPrefix (line 88) | function extractPathPrefix(url: string): string { function resolveRuntimeParams (line 93) | async function resolveRuntimeParams( function buildContentBundle (line 118) | function buildContentBundle(payload: unknown, url: string): ContentBundle { FILE: packages/core-plugins/src/plugins/gemini/runtime.ts function extractWithPatterns (line 3) | function extractWithPatterns( function extractRuntimeParamsFromHtml (line 17) | function extractRuntimeParamsFromHtml( function getPreferredLanguage (line 41) | function getPreferredLanguage(doc?: Document): string { FILE: packages/core-plugins/src/plugins/gemini/types.ts type GeminiRuntimeParams (line 1) | interface GeminiRuntimeParams { FILE: packages/core-plugins/src/plugins/github/graphql.ts function getCsrfToken (line 5) | function getCsrfToken(): string | null { function isUserLoggedIn (line 12) | function isUserLoggedIn(): boolean { function githubGraphQL (line 21) | async function githubGraphQL( constant ISSUE_QUERY (line 62) | const ISSUE_QUERY = ` constant PR_QUERY (line 87) | const PR_QUERY = ` type GQLActor (line 131) | interface GQLActor { type GQLLabel (line 135) | interface GQLLabel { type GQLComment (line 139) | interface GQLComment { type GQLReviewComment (line 145) | interface GQLReviewComment { type GQLReview (line 153) | interface GQLReview { type GQLIssueData (line 160) | interface GQLIssueData { type GQLPullRequestData (line 175) | interface GQLPullRequestData { FILE: packages/core-plugins/src/plugins/github/plugin.ts constant ISSUE_PATTERN (line 25) | const ISSUE_PATTERN = constant PR_PATTERN (line 27) | const PR_PATTERN = /^https?:\/\/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d... constant API_BASE (line 29) | const API_BASE = "https://api.github.com"; method extract (line 41) | async extract(ctx: PluginContext): Promise { method fetchById (line 58) | async fetchById(id: string): Promise { type ParsedGitHub (line 94) | interface ParsedGitHub { function parseGitHubUrl (line 101) | function parseGitHubUrl(url: string): ParsedGitHub | null { function parseGitHubId (line 123) | function parseGitHubId(id: string): ParsedGitHub | null { function fetchAndBuild (line 147) | async function fetchAndBuild( function fetchAndBuildGraphQL (line 172) | async function fetchAndBuildGraphQL( function gqlLogin (line 196) | function gqlLogin(author: { login: string } | null): string { function buildIssueBundleFromGQL (line 200) | function buildIssueBundleFromGQL( function buildPRBundleFromGQL (line 252) | function buildPRBundleFromGQL( function fetchAndBuildREST (line 348) | async function fetchAndBuildREST( function githubFetch (line 375) | async function githubFetch(path: string): Promise { function fetchAllPages (line 399) | async function fetchAllPages(path: string): Promise { function buildIssueBundle (line 437) | function buildIssueBundle( function buildPRBundle (line 488) | function buildPRBundle( function addParticipant (line 575) | function addParticipant( FILE: packages/core-plugins/src/plugins/github/types.ts type GitHubUser (line 3) | interface GitHubUser { type GitHubLabel (line 8) | interface GitHubLabel { type GitHubIssue (line 12) | interface GitHubIssue { type GitHubComment (line 23) | interface GitHubComment { type GitHubPullRequest (line 30) | interface GitHubPullRequest { type GitHubReviewComment (line 41) | interface GitHubReviewComment { type GitHubContentType (line 50) | type GitHubContentType = "issue" | "pull-request"; FILE: packages/core-plugins/src/plugins/grok/plugin.ts constant HOST_PATTERN (line 16) | const HOST_PATTERN = /^https:\/\/grok\.com\//i; constant CONVERSATION_PATTERN (line 17) | const CONVERSATION_PATTERN = /^https?:\/\/grok\.com\/c\/([a-zA-Z0-9-]+)/; constant API_BASE (line 18) | const API_BASE = "https://grok.com/rest/app-chat/conversations"; constant CTXPORT_ATTR (line 20) | const CTXPORT_ATTR = "data-ctxport-injected"; constant INJECTION_DELAY_MS (line 21) | const INJECTION_DELAY_MS = 2000; constant COPY_BTN_CLASS (line 22) | const COPY_BTN_CLASS = "ctxport-grok-copy-btn"; constant LIST_ICON_CLASS (line 23) | const LIST_ICON_CLASS = "ctxport-grok-list-icon"; constant FLOATING_BTN_ID (line 24) | const FLOATING_BTN_ID = "ctxport-grok-floating-copy"; method extract (line 36) | async extract(ctx: PluginContext): Promise { method fetchById (line 46) | async fetchById(conversationId: string): Promise { function createGrokInjector (line 72) | function createGrokInjector(): PluginInjector { function extractConversationId (line 215) | function extractConversationId(url: string): string | null { function fetchConversation (line 222) | async function fetchConversation( function sortByTree (line 279) | function sortByTree( function buildBundle (line 312) | function buildBundle( FILE: packages/core-plugins/src/plugins/grok/types.ts type GrokResponseNode (line 2) | interface GrokResponseNode { type GrokResponseNodeResponse (line 9) | interface GrokResponseNodeResponse { type GrokLoadedResponse (line 15) | interface GrokLoadedResponse { type GrokLoadResponsesResponse (line 27) | interface GrokLoadResponsesResponse { FILE: packages/core-plugins/src/plugins/index.ts function registerBuiltinPlugins (line 10) | function registerBuiltinPlugins(): void { FILE: packages/core-plugins/src/plugins/shared/chat-injector.ts type ChatInjectorConfig (line 8) | interface ChatInjectorConfig { constant CTXPORT_ATTR (line 18) | const CTXPORT_ATTR = "data-ctxport-injected"; constant INJECTION_DELAY_MS (line 19) | const INJECTION_DELAY_MS = 2000; function markInjected (line 21) | function markInjected(el: HTMLElement, type: string): void { function isInjected (line 25) | function isInjected(el: HTMLElement, type: string): boolean { function createContainer (line 29) | function createContainer(id: string): HTMLElement { function removeAllByClass (line 37) | function removeAllByClass(className: string): void { function debouncedObserverCallback (line 41) | function debouncedObserverCallback(fn: () => void): () => void { function createChatInjector (line 67) | function createChatInjector(config: ChatInjectorConfig): PluginInjector { FILE: packages/core-plugins/src/registry.ts function registerPlugin (line 5) | function registerPlugin(plugin: Plugin): void { function findPlugin (line 13) | function findPlugin(url: string): Plugin | null { function getAllPlugins (line 20) | function getAllPlugins(): Plugin[] { function getAllHostPermissions (line 24) | function getAllHostPermissions(): string[] { function clearPlugins (line 28) | function clearPlugins(): void { FILE: packages/core-plugins/src/types.ts type PluginContext (line 4) | interface PluginContext { type InjectorCallbacks (line 12) | interface InjectorCallbacks { type PluginInjector (line 20) | interface PluginInjector { type ThemeConfig (line 28) | interface ThemeConfig { type Plugin (line 44) | interface Plugin { FILE: packages/core-plugins/src/utils.ts function generateId (line 3) | function generateId(): string { FILE: packages/core-plugins/tsup.config.ts method esbuildOptions (line 23) | esbuildOptions(options) { FILE: packages/core-schema/src/content-bundle.ts type Participant (line 2) | interface Participant { type ContentNode (line 13) | interface ContentNode { type SourceMeta (line 32) | interface SourceMeta { type ContentBundle (line 42) | interface ContentBundle { FILE: packages/core-schema/src/errors.ts type ParseErrorCode (line 10) | type ParseErrorCode = z.infer; type BundleErrorCode (line 17) | type BundleErrorCode = z.infer; type ErrorCode (line 20) | type ErrorCode = z.infer; type AppError (line 30) | type AppError = z.infer; constant ERROR_MESSAGES (line 32) | const ERROR_MESSAGES: Record = { function createAppError (line 43) | function createAppError(code: ErrorCode, detail?: string): AppError { function isParseError (line 52) | function isParseError(error: AppError): boolean { function isBundleError (line 56) | function isBundleError(error: AppError): boolean { FILE: packages/shared-ui/src/components/common/logo.tsx type LogoProps (line 5) | interface LogoProps extends React.SVGProps { function Logo (line 13) | function Logo({ FILE: packages/shared-ui/src/components/common/social-icons.tsx function GitHubIcon (line 3) | function GitHubIcon(props: SVGProps) { function BilibiliIcon (line 16) | function BilibiliIcon(props: SVGProps) { function DouyinIcon (line 29) | function DouyinIcon(props: SVGProps) { function XIcon (line 42) | function XIcon(props: SVGProps) { FILE: packages/shared-ui/src/components/layout/locale-toggle.tsx type LocaleToggleProps (line 15) | interface LocaleToggleProps { function LocaleToggle (line 20) | function LocaleToggle({ className, onLocaleChange }: LocaleToggleProps) { FILE: packages/shared-ui/src/components/layout/mobile-nav.tsx type NavItem (line 15) | interface NavItem { type MobileNavProps (line 22) | interface MobileNavProps { function MobileNav (line 31) | function MobileNav({ FILE: packages/shared-ui/src/components/layout/site-footer.tsx type FooterLink (line 7) | interface FooterLink { type FooterSection (line 13) | interface FooterSection { type SocialLink (line 18) | interface SocialLink { type SiteFooterProps (line 24) | interface SiteFooterProps { function SiteFooter (line 41) | function SiteFooter({ FILE: packages/shared-ui/src/components/layout/site-header.tsx type SiteHeaderProps (line 13) | interface SiteHeaderProps { function SiteHeader (line 24) | function SiteHeader({ FILE: packages/shared-ui/src/components/layout/theme-toggle.tsx type ThemeToggleProps (line 9) | interface ThemeToggleProps { function ThemeToggle (line 13) | function ThemeToggle({ className }: ThemeToggleProps) { FILE: packages/shared-ui/src/components/renderer/markdown-renderer.tsx type MarkdownRendererProps (line 11) | interface MarkdownRendererProps { type ShikiCodeBlockProps (line 188) | interface ShikiCodeBlockProps { FILE: packages/shared-ui/src/components/renderer/mermaid-block.tsx function initMermaid (line 10) | function initMermaid() { type MermaidBlockProps (line 20) | interface MermaidBlockProps { FILE: packages/shared-ui/src/components/ui/accordion.tsx function Accordion (line 8) | function Accordion({ function AccordionItem (line 14) | function AccordionItem({ function AccordionTrigger (line 27) | function AccordionTrigger({ function AccordionContent (line 49) | function AccordionContent({ FILE: packages/shared-ui/src/components/ui/alert-dialog.tsx function AlertDialog (line 8) | function AlertDialog({ function AlertDialogTrigger (line 14) | function AlertDialogTrigger({ function AlertDialogPortal (line 22) | function AlertDialogPortal({ function AlertDialogOverlay (line 30) | function AlertDialogOverlay({ function AlertDialogContent (line 46) | function AlertDialogContent({ function AlertDialogHeader (line 65) | function AlertDialogHeader({ function AlertDialogFooter (line 78) | function AlertDialogFooter({ function AlertDialogTitle (line 94) | function AlertDialogTitle({ function AlertDialogDescription (line 107) | function AlertDialogDescription({ function AlertDialogAction (line 120) | function AlertDialogAction({ function AlertDialogCancel (line 132) | function AlertDialogCancel({ FILE: packages/shared-ui/src/components/ui/alert.tsx function Alert (line 21) | function Alert({ function AlertTitle (line 36) | function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { function AlertDescription (line 49) | function AlertDescription({ FILE: packages/shared-ui/src/components/ui/aspect-ratio.tsx function AspectRatio (line 5) | function AspectRatio({ FILE: packages/shared-ui/src/components/ui/avatar.tsx function Avatar (line 7) | function Avatar({ function AvatarImage (line 23) | function AvatarImage({ function AvatarFallback (line 36) | function AvatarFallback({ FILE: packages/shared-ui/src/components/ui/badge.tsx function Badge (line 27) | function Badge({ FILE: packages/shared-ui/src/components/ui/breadcrumb.tsx function Breadcrumb (line 6) | function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { function BreadcrumbList (line 10) | function BreadcrumbList({ className, ...props }: React.ComponentProps<"o... function BreadcrumbItem (line 23) | function BreadcrumbItem({ className, ...props }: React.ComponentProps<"l... function BreadcrumbLink (line 33) | function BreadcrumbLink({ function BreadcrumbPage (line 51) | function BreadcrumbPage({ className, ...props }: React.ComponentProps<"s... function BreadcrumbSeparator (line 64) | function BreadcrumbSeparator({ function BreadcrumbEllipsis (line 82) | function BreadcrumbEllipsis({ FILE: packages/shared-ui/src/components/ui/button-group.tsx function ButtonGroup (line 23) | function ButtonGroup({ function ButtonGroupText (line 39) | function ButtonGroupText({ function ButtonGroupSeparator (line 59) | function ButtonGroupSeparator({ FILE: packages/shared-ui/src/components/ui/button.tsx function Button (line 38) | function Button({ FILE: packages/shared-ui/src/components/ui/calendar.tsx function Calendar (line 17) | function Calendar({ function CalendarDayButton (line 181) | function CalendarDayButton({ FILE: packages/shared-ui/src/components/ui/card.tsx function Card (line 4) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 17) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 30) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 40) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 50) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 63) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 73) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: packages/shared-ui/src/components/ui/carousel.tsx type CarouselApi (line 11) | type CarouselApi = UseEmblaCarouselType[1]; type UseCarouselParameters (line 12) | type UseCarouselParameters = Parameters; type CarouselOptions (line 13) | type CarouselOptions = UseCarouselParameters[0]; type CarouselPlugin (line 14) | type CarouselPlugin = UseCarouselParameters[1]; type CarouselProps (line 16) | interface CarouselProps { type CarouselContextProps (line 23) | type CarouselContextProps = { function useCarousel (line 34) | function useCarousel() { function Carousel (line 44) | function Carousel({ function CarouselContent (line 134) | function CarouselContent({ className, ...props }: React.ComponentProps<"... function CarouselItem (line 155) | function CarouselItem({ className, ...props }: React.ComponentProps<"div... function CarouselPrevious (line 173) | function CarouselPrevious({ function CarouselNext (line 203) | function CarouselNext({ FILE: packages/shared-ui/src/components/ui/chart.tsx constant THEMES (line 14) | const THEMES = { light: "", dark: ".dark" } as const; type TooltipPayload (line 16) | type TooltipPayload = Omit< type LegendPayload (line 23) | type LegendPayload = Omit & { type ChartConfig (line 28) | type ChartConfig = Record< type ChartContextProps (line 39) | interface ChartContextProps { function useChart (line 45) | function useChart() { function ChartContainer (line 55) | function ChartContainer({ type ChartTooltipProps (line 125) | type ChartTooltipProps = Omit< function ChartTooltipContent (line 132) | function ChartTooltipContent({ function ChartLegendContent (line 295) | function ChartLegendContent({ function getPayloadConfigFromPayload (line 363) | function getPayloadConfigFromPayload( FILE: packages/shared-ui/src/components/ui/checkbox.tsx function Checkbox (line 8) | function Checkbox({ FILE: packages/shared-ui/src/components/ui/collapsible.tsx function Collapsible (line 5) | function Collapsible({ function CollapsibleTrigger (line 11) | function CollapsibleTrigger({ function CollapsibleContent (line 22) | function CollapsibleContent({ FILE: packages/shared-ui/src/components/ui/command.tsx function Command (line 16) | function Command({ function CommandDialog (line 32) | function CommandDialog({ function CommandInput (line 67) | function CommandInput({ function CommandList (line 89) | function CommandList({ function CommandEmpty (line 105) | function CommandEmpty({ function CommandGroup (line 117) | function CommandGroup({ function CommandSeparator (line 133) | function CommandSeparator({ function CommandItem (line 146) | function CommandItem({ function CommandShortcut (line 162) | function CommandShortcut({ FILE: packages/shared-ui/src/components/ui/context-menu.tsx function ContextMenu (line 8) | function ContextMenu({ function ContextMenuTrigger (line 14) | function ContextMenuTrigger({ function ContextMenuGroup (line 22) | function ContextMenuGroup({ function ContextMenuPortal (line 30) | function ContextMenuPortal({ function ContextMenuSub (line 38) | function ContextMenuSub({ function ContextMenuRadioGroup (line 44) | function ContextMenuRadioGroup({ function ContextMenuSubTrigger (line 55) | function ContextMenuSubTrigger({ function ContextMenuSubContent (line 79) | function ContextMenuSubContent({ function ContextMenuContent (line 95) | function ContextMenuContent({ function ContextMenuItem (line 113) | function ContextMenuItem({ function ContextMenuCheckboxItem (line 136) | function ContextMenuCheckboxItem({ function ContextMenuRadioItem (line 162) | function ContextMenuRadioItem({ function ContextMenuLabel (line 186) | function ContextMenuLabel({ function ContextMenuSeparator (line 206) | function ContextMenuSeparator({ function ContextMenuShortcut (line 219) | function ContextMenuShortcut({ FILE: packages/shared-ui/src/components/ui/dialog.tsx function Dialog (line 8) | function Dialog({ function DialogTrigger (line 14) | function DialogTrigger({ function DialogPortal (line 20) | function DialogPortal({ function DialogClose (line 26) | function DialogClose({ function DialogOverlay (line 32) | function DialogOverlay({ function DialogContent (line 48) | function DialogContent({ function DialogHeader (line 86) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 96) | function DialogFooter({ className, ...props }: React.ComponentProps<"div... function DialogTitle (line 109) | function DialogTitle({ function DialogDescription (line 122) | function DialogDescription({ FILE: packages/shared-ui/src/components/ui/drawer.tsx function Drawer (line 7) | function Drawer({ function DrawerTrigger (line 13) | function DrawerTrigger({ function DrawerPortal (line 19) | function DrawerPortal({ function DrawerClose (line 25) | function DrawerClose({ function DrawerOverlay (line 31) | function DrawerOverlay({ function DrawerContent (line 47) | function DrawerContent({ function DrawerHeader (line 77) | function DrawerHeader({ className, ...props }: React.ComponentProps<"div... function DrawerFooter (line 90) | function DrawerFooter({ className, ...props }: React.ComponentProps<"div... function DrawerTitle (line 100) | function DrawerTitle({ function DrawerDescription (line 113) | function DrawerDescription({ FILE: packages/shared-ui/src/components/ui/dropdown-menu.tsx function DropdownMenu (line 8) | function DropdownMenu({ function DropdownMenuPortal (line 14) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 22) | function DropdownMenuTrigger({ function DropdownMenuContent (line 33) | function DropdownMenuContent({ function DropdownMenuGroup (line 53) | function DropdownMenuGroup({ function DropdownMenuItem (line 61) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 84) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 110) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 121) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 145) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 165) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 178) | function DropdownMenuShortcut({ function DropdownMenuSub (line 194) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 200) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 224) | function DropdownMenuSubContent({ FILE: packages/shared-ui/src/components/ui/empty.tsx function Empty (line 4) | function Empty({ className, ...props }: React.ComponentProps<"div">) { function EmptyHeader (line 17) | function EmptyHeader({ className, ...props }: React.ComponentProps<"div"... function EmptyMedia (line 45) | function EmptyMedia({ function EmptyTitle (line 60) | function EmptyTitle({ className, ...props }: React.ComponentProps<"div">) { function EmptyDescription (line 70) | function EmptyDescription({ className, ...props }: React.ComponentProps<... function EmptyContent (line 83) | function EmptyContent({ className, ...props }: React.ComponentProps<"div... FILE: packages/shared-ui/src/components/ui/field.tsx function FieldSet (line 9) | function FieldSet({ className, ...props }: React.ComponentProps<"fieldse... function FieldLegend (line 23) | function FieldLegend({ function FieldGroup (line 43) | function FieldGroup({ className, ...props }: React.ComponentProps<"div">) { function Field (line 80) | function Field({ function FieldContent (line 96) | function FieldContent({ className, ...props }: React.ComponentProps<"div... function FieldLabel (line 109) | function FieldLabel({ function FieldTitle (line 127) | function FieldTitle({ className, ...props }: React.ComponentProps<"div">) { function FieldDescription (line 140) | function FieldDescription({ className, ...props }: React.ComponentProps<... function FieldSeparator (line 155) | function FieldSeparator({ function FieldError (line 185) | function FieldError({ FILE: packages/shared-ui/src/components/ui/form.tsx type FormFieldContextValue (line 20) | interface FormFieldContextValue< type FormItemContextValue (line 67) | interface FormItemContextValue { function FormItem (line 75) | function FormItem({ className, ...props }: React.ComponentProps<"div">) { function FormLabel (line 89) | function FormLabel({ function FormControl (line 106) | function FormControl({ ...props }: React.ComponentProps) { function FormDescription (line 125) | function FormDescription({ className, ...props }: React.ComponentProps<"... function FormMessage (line 138) | function FormMessage({ className, ...props }: React.ComponentProps<"p">) { FILE: packages/shared-ui/src/components/ui/hover-card.tsx function HoverCard (line 7) | function HoverCard({ function HoverCardTrigger (line 13) | function HoverCardTrigger({ function HoverCardContent (line 21) | function HoverCardContent({ FILE: packages/shared-ui/src/components/ui/input-group.tsx function InputGroup (line 10) | function InputGroup({ className, ...props }: React.ComponentProps<"div">) { function InputGroupAddon (line 59) | function InputGroupAddon({ function InputGroupButton (line 99) | function InputGroupButton({ function InputGroupText (line 118) | function InputGroupText({ className, ...props }: React.ComponentProps<"s... function InputGroupInput (line 130) | function InputGroupInput({ function InputGroupTextarea (line 146) | function InputGroupTextarea({ FILE: packages/shared-ui/src/components/ui/input-otp.tsx function InputOTP (line 8) | function InputOTP({ function InputOTPGroup (line 28) | function InputOTPGroup({ className, ...props }: React.ComponentProps<"di... function InputOTPSlot (line 38) | function InputOTPSlot({ function InputOTPSeparator (line 68) | function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) { FILE: packages/shared-ui/src/components/ui/input.tsx function Input (line 4) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: packages/shared-ui/src/components/ui/item.tsx function ItemGroup (line 7) | function ItemGroup({ className, ...props }: React.ComponentProps<"div">) { function ItemSeparator (line 18) | function ItemSeparator({ function Item (line 53) | function Item({ function ItemMedia (line 90) | function ItemMedia({ function ItemContent (line 105) | function ItemContent({ className, ...props }: React.ComponentProps<"div"... function ItemTitle (line 118) | function ItemTitle({ className, ...props }: React.ComponentProps<"div">) { function ItemDescription (line 131) | function ItemDescription({ className, ...props }: React.ComponentProps<"... function ItemActions (line 145) | function ItemActions({ className, ...props }: React.ComponentProps<"div"... function ItemHeader (line 155) | function ItemHeader({ className, ...props }: React.ComponentProps<"div">) { function ItemFooter (line 168) | function ItemFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: packages/shared-ui/src/components/ui/kbd.tsx function Kbd (line 3) | function Kbd({ className, ...props }: React.ComponentProps<"kbd">) { function KbdGroup (line 18) | function KbdGroup({ className, ...props }: React.ComponentProps<"div">) { FILE: packages/shared-ui/src/components/ui/label.tsx function Label (line 7) | function Label({ FILE: packages/shared-ui/src/components/ui/menubar.tsx function Menubar (line 8) | function Menubar({ function MenubarMenu (line 24) | function MenubarMenu({ function MenubarGroup (line 30) | function MenubarGroup({ function MenubarPortal (line 36) | function MenubarPortal({ function MenubarRadioGroup (line 42) | function MenubarRadioGroup({ function MenubarTrigger (line 50) | function MenubarTrigger({ function MenubarContent (line 66) | function MenubarContent({ function MenubarItem (line 90) | function MenubarItem({ function MenubarCheckboxItem (line 113) | function MenubarCheckboxItem({ function MenubarRadioItem (line 139) | function MenubarRadioItem({ function MenubarLabel (line 163) | function MenubarLabel({ function MenubarSeparator (line 183) | function MenubarSeparator({ function MenubarShortcut (line 196) | function MenubarShortcut({ function MenubarSub (line 212) | function MenubarSub({ function MenubarSubTrigger (line 218) | function MenubarSubTrigger({ function MenubarSubContent (line 242) | function MenubarSubContent({ FILE: packages/shared-ui/src/components/ui/navigation-menu.tsx function NavigationMenu (line 7) | function NavigationMenu({ function NavigationMenuList (line 31) | function NavigationMenuList({ function NavigationMenuItem (line 47) | function NavigationMenuItem({ function NavigationMenuTrigger (line 64) | function NavigationMenuTrigger({ function NavigationMenuContent (line 84) | function NavigationMenuContent({ function NavigationMenuViewport (line 101) | function NavigationMenuViewport({ function NavigationMenuLink (line 123) | function NavigationMenuLink({ function NavigationMenuIndicator (line 139) | function NavigationMenuIndicator({ FILE: packages/shared-ui/src/components/ui/pagination.tsx function Pagination (line 10) | function Pagination({ className, ...props }: React.ComponentProps<"nav">) { function PaginationContent (line 22) | function PaginationContent({ function PaginationItem (line 35) | function PaginationItem({ ...props }: React.ComponentProps<"li">) { type PaginationLinkProps (line 39) | type PaginationLinkProps = { function PaginationLink (line 44) | function PaginationLink({ function PaginationPrevious (line 67) | function PaginationPrevious({ function PaginationNext (line 84) | function PaginationNext({ function PaginationEllipsis (line 101) | function PaginationEllipsis({ FILE: packages/shared-ui/src/components/ui/popover.tsx function Popover (line 7) | function Popover({ function PopoverTrigger (line 13) | function PopoverTrigger({ function PopoverContent (line 19) | function PopoverContent({ function PopoverAnchor (line 41) | function PopoverAnchor({ FILE: packages/shared-ui/src/components/ui/progress.tsx function Progress (line 7) | function Progress({ FILE: packages/shared-ui/src/components/ui/radio-group.tsx function RadioGroup (line 8) | function RadioGroup({ function RadioGroupItem (line 21) | function RadioGroupItem({ FILE: packages/shared-ui/src/components/ui/resizable.tsx function ResizablePanelGroup (line 8) | function ResizablePanelGroup({ function ResizablePanel (line 24) | function ResizablePanel({ function ResizableHandle (line 30) | function ResizableHandle({ FILE: packages/shared-ui/src/components/ui/scroll-area.tsx function ScrollArea (line 7) | function ScrollArea({ function ScrollBar (line 30) | function ScrollBar({ FILE: packages/shared-ui/src/components/ui/select.tsx function Select (line 8) | function Select({ function SelectGroup (line 14) | function SelectGroup({ function SelectValue (line 20) | function SelectValue({ function SelectTrigger (line 26) | function SelectTrigger({ function SelectContent (line 52) | function SelectContent({ function SelectLabel (line 89) | function SelectLabel({ function SelectItem (line 102) | function SelectItem({ function SelectSeparator (line 129) | function SelectSeparator({ function SelectScrollUpButton (line 142) | function SelectScrollUpButton({ function SelectScrollDownButton (line 160) | function SelectScrollDownButton({ FILE: packages/shared-ui/src/components/ui/separator.tsx function Separator (line 7) | function Separator({ FILE: packages/shared-ui/src/components/ui/sheet.tsx function Sheet (line 8) | function Sheet({ ...props }: React.ComponentProps) { function SidebarMenuItem (line 464) | function SidebarMenuItem({ className, ...props }: React.ComponentProps<"... function SidebarMenuButton (line 497) | function SidebarMenuButton({ function SidebarMenuAction (line 547) | function SidebarMenuAction({ function SidebarMenuBadge (line 579) | function SidebarMenuBadge({ function SidebarMenuSkeleton (line 601) | function SidebarMenuSkeleton({ function SidebarMenuSub (line 639) | function SidebarMenuSub({ className, ...props }: React.ComponentProps<"u... function SidebarMenuSubItem (line 654) | function SidebarMenuSubItem({ function SidebarMenuSubButton (line 668) | function SidebarMenuSubButton({ FILE: packages/shared-ui/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<"div">) { FILE: packages/shared-ui/src/components/ui/slider.tsx function Slider (line 7) | function Slider({ FILE: packages/shared-ui/src/components/ui/spinner.tsx function Spinner (line 4) | function Spinner({ className, ...props }: React.ComponentProps<"svg">) { FILE: packages/shared-ui/src/components/ui/switch.tsx function Switch (line 7) | function Switch({ FILE: packages/shared-ui/src/components/ui/table.tsx function Table (line 6) | function Table({ className, ...props }: React.ComponentProps<"table">) { function TableHeader (line 21) | function TableHeader({ className, ...props }: React.ComponentProps<"thea... function TableBody (line 31) | function TableBody({ className, ...props }: React.ComponentProps<"tbody"... function TableFooter (line 41) | function TableFooter({ className, ...props }: React.ComponentProps<"tfoo... function TableRow (line 54) | function TableRow({ className, ...props }: React.ComponentProps<"tr">) { function TableHead (line 67) | function TableHead({ className, ...props }: React.ComponentProps<"th">) { function TableCell (line 80) | function TableCell({ className, ...props }: React.ComponentProps<"td">) { function TableCaption (line 93) | function TableCaption({ FILE: packages/shared-ui/src/components/ui/tabs.tsx function Tabs (line 7) | function Tabs({ function TabsList (line 20) | function TabsList({ function TabsTrigger (line 36) | function TabsTrigger({ function TabsContent (line 52) | function TabsContent({ FILE: packages/shared-ui/src/components/ui/textarea.tsx function Textarea (line 4) | function Textarea({ className, ...props }: React.ComponentProps<"textare... FILE: packages/shared-ui/src/components/ui/toggle-group.tsx function ToggleGroup (line 19) | function ToggleGroup({ function ToggleGroupItem (line 50) | function ToggleGroupItem({ FILE: packages/shared-ui/src/components/ui/toggle.tsx function Toggle (line 30) | function Toggle({ FILE: packages/shared-ui/src/components/ui/tooltip.tsx function TooltipProvider (line 7) | function TooltipProvider({ function Tooltip (line 20) | function Tooltip({ function TooltipTrigger (line 30) | function TooltipTrigger({ function TooltipContent (line 36) | function TooltipContent({ FILE: packages/shared-ui/src/hooks/use-breakpoint.ts type Breakpoint (line 5) | type Breakpoint = "sm" | "md" | "lg" | "xl" | "2xl"; constant BREAKPOINTS (line 7) | const BREAKPOINTS = { function useBreakpoint (line 15) | function useBreakpoint(): Breakpoint { function useIsBreakpoint (line 42) | function useIsBreakpoint(target: Breakpoint): boolean { function useIsDesktop (line 48) | function useIsDesktop(): boolean { function useIsTablet (line 53) | function useIsTablet(): boolean { FILE: packages/shared-ui/src/hooks/use-mobile.ts constant MOBILE_BREAKPOINT (line 5) | const MOBILE_BREAKPOINT = 768; function useIsMobile (line 7) | function useIsMobile() { FILE: packages/shared-ui/src/i18n/core.ts function isLocale (line 30) | function isLocale(value?: string): value is Locale { function normalizeLocale (line 34) | function normalizeLocale(value?: string): Locale { function getLocaleFromPath (line 38) | function getLocaleFromPath(pathname: string): Locale | null { function stripLocaleFromPath (line 43) | function stripLocaleFromPath(pathname: string): string { function getLocaleFromNavigator (line 47) | function getLocaleFromNavigator( function formatMessage (line 61) | function formatMessage( function getMessage (line 72) | function getMessage( function createTranslator (line 84) | function createTranslator(locale?: string) { FILE: packages/shared-ui/src/i18n/react.tsx type I18nContextValue (line 11) | interface I18nContextValue { type I18nProviderProps (line 21) | interface I18nProviderProps { function I18nProvider (line 26) | function I18nProvider({ function useI18n (line 34) | function useI18n() { FILE: packages/shared-ui/src/i18n/types.ts type Locale (line 4) | type Locale = (typeof locales)[number]; type MessageKey (line 7) | type MessageKey = keyof typeof en; type LocaleMessages (line 8) | type LocaleMessages = Record; type LocaleDictionary (line 9) | type LocaleDictionary = Record; FILE: packages/shared-ui/src/utils/common.ts function cn (line 7) | function cn(...inputs: ClassValue[]) { FILE: packages/shared-ui/src/utils/date.ts function nowISO (line 4) | function nowISO(): string { function formatDateShort (line 11) | function formatDateShort(date: Date | string): string { function formatDateTime (line 23) | function formatDateTime(date: Date | string): string { function formatDateForFilename (line 37) | function formatDateForFilename(date: Date = new Date()): string { FILE: packages/shared-ui/src/utils/filename.ts type ExportFilenameOptions (line 6) | interface ExportFilenameOptions { function generateExportFilename (line 22) | function generateExportFilename( function generateZipFilename (line 48) | function generateZipFilename(prefix = "ctxport"): string { function sanitizeFilename (line 56) | function sanitizeFilename(name: string): string { FILE: packages/shared-ui/src/utils/format.ts function formatFileSize (line 4) | function formatFileSize(bytes: number): string { function truncate (line 15) | function truncate(text: string, maxLength: number): string { function sleep (line 23) | function sleep(ms: number): Promise { FILE: packages/shared-ui/src/utils/shiki.ts constant CACHE_SIZE (line 12) | const CACHE_SIZE = 100; function simpleHash (line 19) | function simpleHash(str: string): number { function getCacheKey (line 32) | function getCacheKey(code: string, lang: string, theme: string): string { constant COMMON_LANGUAGES (line 39) | const COMMON_LANGUAGES: BundledLanguage[] = [ constant DEFAULT_THEMES (line 68) | const DEFAULT_THEMES: BundledTheme[] = ["github-dark", "github-light"]; function initHighlighter (line 73) | async function initHighlighter(): Promise { function getHighlighter (line 94) | function getHighlighter(): Highlighter | null { function highlightCode (line 101) | async function highlightCode( function addToCache (line 141) | function addToCache(key: string, html: string): void { function highlightCodeSync (line 154) | function highlightCodeSync( function normalizeLanguage (line 176) | function normalizeLanguage(lang: string): string { function escapeHtml (line 202) | function escapeHtml(str: string): string { function sanitizeShikiHtml (line 215) | function sanitizeShikiHtml(html: string): string { FILE: packages/shared-ui/src/utils/uuid.ts function generateUUID (line 5) | function generateUUID(): string { function isValidUUID (line 21) | function isValidUUID(str: string): boolean { FILE: packages/shared-ui/tsup.config.ts method esbuildOptions (line 43) | esbuildOptions(options) { method onSuccess (line 47) | async onSuccess() { FILE: scripts/sync-manifest-version.mjs constant ROOT_DIR (line 12) | const ROOT_DIR = resolve(__dirname, ".."); constant MANIFEST_PATH (line 14) | const MANIFEST_PATH = resolve( function syncVersion (line 19) | function syncVersion(version) {