@shapesos/clay 0.1.0
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/LICENSE +21 -0
- package/README.md +170 -0
- package/dist/chat.cjs +1117 -0
- package/dist/chat.cjs.map +1 -0
- package/dist/chat.d.cts +46 -0
- package/dist/chat.d.ts +46 -0
- package/dist/chat.js +11 -0
- package/dist/chat.js.map +1 -0
- package/dist/chunk-2GFOESHR.js +613 -0
- package/dist/chunk-2GFOESHR.js.map +1 -0
- package/dist/chunk-5WRI5ZAA.js +31 -0
- package/dist/chunk-5WRI5ZAA.js.map +1 -0
- package/dist/chunk-6HNZQ2BF.js +91 -0
- package/dist/chunk-6HNZQ2BF.js.map +1 -0
- package/dist/chunk-7AJSQJQ5.js +1 -0
- package/dist/chunk-7AJSQJQ5.js.map +1 -0
- package/dist/chunk-A6DKIFWS.js +292 -0
- package/dist/chunk-A6DKIFWS.js.map +1 -0
- package/dist/chunk-C77QMQNT.js +1 -0
- package/dist/chunk-C77QMQNT.js.map +1 -0
- package/dist/chunk-P7NISN4V.js +115 -0
- package/dist/chunk-P7NISN4V.js.map +1 -0
- package/dist/chunk-XY2OM47L.js +16511 -0
- package/dist/chunk-XY2OM47L.js.map +1 -0
- package/dist/icon.cjs +237 -0
- package/dist/icon.cjs.map +1 -0
- package/dist/icon.d.cts +27 -0
- package/dist/icon.d.ts +27 -0
- package/dist/icon.js +12 -0
- package/dist/icon.js.map +1 -0
- package/dist/index.cjs +17634 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/lottie.cjs +16545 -0
- package/dist/lottie.cjs.map +1 -0
- package/dist/lottie.d.cts +38 -0
- package/dist/lottie.d.ts +38 -0
- package/dist/lottie.js +8 -0
- package/dist/lottie.js.map +1 -0
- package/dist/tokens.cjs +410 -0
- package/dist/tokens.cjs.map +1 -0
- package/dist/tokens.d.cts +121 -0
- package/dist/tokens.d.ts +121 -0
- package/dist/tokens.js +19 -0
- package/dist/tokens.js.map +1 -0
- package/package.json +110 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/chat/chat-root/chat-root.tsx","../src/chat/chat-context/chat-context.ts","../src/chat/chat-root/chat-root-styles.ts","../src/chat/chat-message-content/chat-message-content.tsx","../src/chat/chat-message-content/chat-message-content-styles.ts","../src/chat/chat-message-actions/chat-message-actions.tsx","../node_modules/@tabler/icons-react/src/defaultAttributes.ts","../node_modules/@tabler/icons-react/src/createReactComponent.ts","../node_modules/@tabler/icons-react/src/icons/IconArrowUp.ts","../node_modules/@tabler/icons-react/src/icons/IconCheck.ts","../node_modules/@tabler/icons-react/src/icons/IconCopy.ts","../node_modules/@tabler/icons-react/src/icons/IconThumbDown.ts","../node_modules/@tabler/icons-react/src/icons/IconThumbUp.ts","../node_modules/@tabler/icons-react/src/icons/IconPlayerStopFilled.ts","../src/chat/hooks/use-copy-to-clipboard.ts","../src/utils/clipboard.ts","../src/chat/chat-message-actions/chat-message-actions-styles.ts","../src/chat/chat-message/chat-message-styles.ts","../src/chat/chat-message/chat-message.tsx","../src/chat/hooks/use-auto-scroll.ts","../src/chat/chat-message-list/chat-message-list-styles.ts","../src/chat/chat-message-list/chat-message-list.tsx","../src/chat/chat-composer/chat-composer.tsx","../src/chat/chat-composer/chat-composer-styles.ts","../src/chat/chat-namespace.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ChatMessage, ChatContextValue } from \"../types\";\nimport { ChatContext } from \"../chat-context/chat-context\";\nimport { RootContainer } from \"./chat-root-styles\";\n\nexport interface ChatRootProps {\n messages: ChatMessage[];\n onSendMessage: (content: string) => void;\n isLoading?: boolean;\n onStop?: () => void;\n onCopyMessage?: (messageId: string) => void;\n onThumbUpClick?: (messageId: string, isHelpful: boolean | null) => void;\n onThumbDownClick?: (messageId: string, isHelpful: boolean | null) => void;\n children: ReactNode;\n}\n\nexport function ChatRoot({\n messages,\n onSendMessage,\n isLoading = false,\n onStop,\n onCopyMessage,\n onThumbUpClick,\n onThumbDownClick,\n children,\n}: ChatRootProps) {\n const contextValue = useMemo<ChatContextValue>(\n () => ({ messages, onSendMessage, isLoading, onStop, onCopyMessage, onThumbUpClick, onThumbDownClick }),\n [messages, onSendMessage, isLoading, onStop, onCopyMessage, onThumbUpClick, onThumbDownClick]\n );\n\n return (\n <ChatContext.Provider value={contextValue}>\n <RootContainer>{children}</RootContainer>\n </ChatContext.Provider>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { ChatContextValue } from \"../types\";\n\nexport const ChatContext = createContext<ChatContextValue | null>(null);\n\nexport function useChatContext(): ChatContextValue {\n const context = useContext(ChatContext);\n if (!context) {\n throw new Error(\"useChatContext must be used within a Chat.Root component\");\n }\n return context;\n}\n","import styled from \"styled-components\";\n\nexport const RootContainer = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n`;\n","import ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nimport { ContentWrapper } from \"./chat-message-content-styles\";\n\ninterface ChatMessageContentProps {\n content: string;\n}\n\nexport function ChatMessageContent({ content }: ChatMessageContentProps) {\n return (\n <ContentWrapper>\n <ReactMarkdown remarkPlugins={[remarkGfm]}>{content}</ReactMarkdown>\n </ContentWrapper>\n );\n}\n","import styled from \"styled-components\";\n\nimport { colors } from \"../../tokens/colors\";\nimport { typographyMixin, typographyTypes } from \"../../tokens/typography\";\n\nexport const ContentWrapper = styled.div`\n ${typographyMixin(typographyTypes.GEIST_BODY_XS_MEDIUM)};\n color: ${colors[\"brown-100\"]};\n word-break: break-word;\n\n & p {\n margin: 0;\n }\n\n & p + p {\n margin-top: 8px;\n }\n\n & ul,\n & ol {\n margin: 4px 0;\n padding-left: 20px;\n }\n\n & a {\n color: ${colors[\"brown-100\"]};\n text-decoration: underline;\n }\n\n & pre {\n overflow-x: auto;\n padding: 8px;\n margin: 4px 0;\n background: ${colors[\"brown-10\"]};\n border: 1px solid ${colors[\"brown-alpha-12\"]};\n border-radius: 8px;\n }\n\n & pre code {\n padding: 0;\n background: none;\n border-radius: 0;\n }\n\n & code {\n padding: 2px 4px;\n background: ${colors[\"brown-10\"]};\n border-radius: 4px;\n }\n\n & table {\n border-collapse: collapse;\n margin: 8px 0;\n width: 100%;\n }\n\n & th,\n & td {\n border: 1px solid ${colors[\"brown-alpha-12\"]};\n padding: 6px 12px;\n text-align: left;\n }\n\n & th {\n background: ${colors[\"brown-10\"]};\n font-weight: 600;\n }\n\n & blockquote {\n margin: 4px 0;\n padding-left: 12px;\n border-left: 3px solid ${colors[\"brown-30\"]};\n color: ${colors[\"brown-70\"]};\n }\n`;\n","import { useCallback } from \"react\";\nimport { IconCopy, IconCheck, IconThumbUp, IconThumbDown } from \"@tabler/icons-react\";\n\nimport { IconButton } from \"../../icon-button/icon-button\";\nimport { useChatContext } from \"../chat-context/chat-context\";\nimport { useCopyToClipboard } from \"../hooks/use-copy-to-clipboard\";\nimport type { MessageRole } from \"../types\";\nimport { ActionsContainer } from \"./chat-message-actions-styles\";\n\ninterface ChatMessageActionsProps {\n messageId: string;\n content: string;\n role: MessageRole;\n isHelpful?: boolean | null;\n}\n\nexport function ChatMessageActions({ messageId, content, role, isHelpful }: ChatMessageActionsProps) {\n const { onCopyMessage, onThumbUpClick, onThumbDownClick } = useChatContext();\n const { isCopied, copy } = useCopyToClipboard();\n\n const handleCopy = useCallback(() => {\n copy(content);\n onCopyMessage?.(messageId);\n }, [content, messageId, copy, onCopyMessage]);\n\n const handleThumbUp = useCallback(() => {\n onThumbUpClick?.(messageId, isHelpful === true ? null : true);\n }, [messageId, isHelpful, onThumbUpClick]);\n\n const handleThumbDown = useCallback(() => {\n onThumbDownClick?.(messageId, isHelpful === false ? null : false);\n }, [messageId, isHelpful, onThumbDownClick]);\n\n const isAssistant = role === \"assistant\";\n const hasFeedback = isAssistant && (onThumbUpClick || onThumbDownClick);\n\n return (\n <ActionsContainer>\n <IconButton\n icon={isCopied ? IconCheck : IconCopy}\n onClick={handleCopy}\n aria-label={isCopied ? \"Copied\" : \"Copy message\"}\n />\n\n {hasFeedback && (\n <IconButton\n icon={IconThumbUp}\n onClick={handleThumbUp}\n isSelected={isHelpful === true}\n aria-label=\"Good response\"\n />\n )}\n\n {hasFeedback && (\n <IconButton\n icon={IconThumbDown}\n onClick={handleThumbDown}\n isSelected={isHelpful === false}\n aria-label=\"Bad response\"\n />\n )}\n </ActionsContainer>\n );\n}\n","export default {\n outline: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n },\n filled: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n stroke: 'none',\n },\n};\n","import { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport type { IconNode, IconProps, Icon } from './types';\n\nconst createReactComponent = (\n type: 'outline' | 'filled',\n iconName: string,\n iconNamePascal: string,\n iconNode: IconNode,\n) => {\n const Component = forwardRef<SVGSVGElement, IconProps>(\n (\n { color = 'currentColor', size = 24, stroke = 2, title, className, children, ...rest }: IconProps,\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes[type],\n width: size,\n height: size,\n className: [`tabler-icon`, `tabler-icon-${iconName}`, className].join(' '),\n ...(type === 'filled'\n ? {\n fill: color,\n }\n : {\n strokeWidth: stroke,\n stroke: color,\n }),\n ...rest,\n },\n [\n title && createElement('title', { key: 'svg-title' }, title),\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n );\n\n Component.displayName = `${iconNamePascal}`;\n\n return Component;\n};\n\nexport default createReactComponent;\n","import createReactComponent from '../createReactComponent';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [[\"path\",{\"d\":\"M12 5l0 14\",\"key\":\"svg-0\"}],[\"path\",{\"d\":\"M18 11l-6 -6\",\"key\":\"svg-1\"}],[\"path\",{\"d\":\"M6 11l6 -6\",\"key\":\"svg-2\"}]]\n\nconst IconArrowUp = createReactComponent('outline', 'arrow-up', 'ArrowUp', __iconNode);\n\nexport default IconArrowUp;","import createReactComponent from '../createReactComponent';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [[\"path\",{\"d\":\"M5 12l5 5l10 -10\",\"key\":\"svg-0\"}]]\n\nconst IconCheck = createReactComponent('outline', 'check', 'Check', __iconNode);\n\nexport default IconCheck;","import createReactComponent from '../createReactComponent';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [[\"path\",{\"d\":\"M7 9.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666\",\"key\":\"svg-0\"}],[\"path\",{\"d\":\"M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1\",\"key\":\"svg-1\"}]]\n\nconst IconCopy = createReactComponent('outline', 'copy', 'Copy', __iconNode);\n\nexport default IconCopy;","import createReactComponent from '../createReactComponent';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [[\"path\",{\"d\":\"M7 13v-8a1 1 0 0 0 -1 -1h-2a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h3a4 4 0 0 1 4 4v1a2 2 0 0 0 4 0v-5h3a2 2 0 0 0 2 -2l-1 -5a2 3 0 0 0 -2 -2h-7a3 3 0 0 0 -3 3\",\"key\":\"svg-0\"}]]\n\nconst IconThumbDown = createReactComponent('outline', 'thumb-down', 'ThumbDown', __iconNode);\n\nexport default IconThumbDown;","import createReactComponent from '../createReactComponent';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [[\"path\",{\"d\":\"M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3\",\"key\":\"svg-0\"}]]\n\nconst IconThumbUp = createReactComponent('outline', 'thumb-up', 'ThumbUp', __iconNode);\n\nexport default IconThumbUp;","import createReactComponent from '../createReactComponent';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [[\"path\",{\"d\":\"M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z\",\"key\":\"svg-0\"}]]\n\nconst IconPlayerStopFilled = createReactComponent('filled', 'player-stop-filled', 'PlayerStopFilled', __iconNode);\n\nexport default IconPlayerStopFilled;","import { useState, useCallback, useRef, useEffect } from \"react\";\n\nimport { copyToClipboard } from \"../../utils/clipboard\";\n\nconst RESET_DELAY_MS = 2000;\n\ninterface UseCopyToClipboardResult {\n isCopied: boolean;\n copy: (text: string) => void;\n}\n\nexport function useCopyToClipboard(): UseCopyToClipboardResult {\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n };\n }, []);\n\n const copy = useCallback((text: string) => {\n copyToClipboard(text, {\n onSuccess: () => {\n setIsCopied(true);\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n setIsCopied(false);\n timeoutRef.current = null;\n }, RESET_DELAY_MS);\n },\n });\n }, []);\n\n return { isCopied, copy };\n}\n","interface CopyToClipboardOptions {\n onSuccess?: () => void;\n onFailure?: (error: unknown) => void;\n}\n\nexport function copyToClipboard(text: string, options?: CopyToClipboardOptions): void {\n navigator.clipboard.writeText(text).then(\n () => options?.onSuccess?.(),\n (error) => options?.onFailure?.(error)\n );\n}\n","import styled from \"styled-components\";\n\nexport const ActionsContainer = styled.div`\n display: flex;\n gap: 2px;\n margin-top: 4px;\n opacity: 0;\n pointer-events: none;\n transition: opacity 150ms ease;\n`;\n","import styled from \"styled-components\";\n\nimport { colors } from \"../../tokens/colors\";\nimport { typographyMixin, typographyTypes } from \"../../tokens/typography\";\nimport { ActionsContainer } from \"../chat-message-actions/chat-message-actions-styles\";\nimport type { MessageRole } from \"../types\";\n\nexport const MessageRow = styled.div<{ $role: MessageRole }>`\n display: flex;\n justify-content: ${({ $role }) => ($role === \"user\" ? \"flex-end\" : \"flex-start\")};\n`;\n\nexport const MessageContainer = styled.div<{ $role: MessageRole }>`\n display: flex;\n flex-direction: column;\n align-items: ${({ $role }) => ($role === \"user\" ? \"flex-end\" : \"flex-start\")};\n max-width: 90%;\n\n &:hover ${ActionsContainer} {\n opacity: 1;\n pointer-events: auto;\n }\n`;\n\nexport const MessageBubble = styled.div<{ $role: MessageRole }>`\n ${typographyMixin(typographyTypes.GEIST_BODY_XS_MEDIUM)};\n color: ${colors[\"brown-100\"]};\n background: ${({ $role }) => ($role === \"user\" ? colors.white : \"transparent\")};\n padding: ${({ $role }) => ($role === \"user\" ? \"12px 16px\" : \"0\")};\n border-radius: ${({ $role }) => ($role === \"user\" ? \"16px\" : \"0\")};\n`;\n","import type { ChatMessage as ChatMessageType } from \"../types\";\nimport { ChatMessageContent } from \"../chat-message-content/chat-message-content\";\nimport { ChatMessageActions } from \"../chat-message-actions/chat-message-actions\";\nimport { MessageRow, MessageBubble, MessageContainer } from \"./chat-message-styles\";\n\ninterface ChatMessageProps {\n message: ChatMessageType;\n}\n\nexport function ChatMessage({ message }: ChatMessageProps) {\n return (\n <MessageRow $role={message.role}>\n <MessageContainer $role={message.role}>\n <MessageBubble $role={message.role}>\n <ChatMessageContent content={message.content} />\n </MessageBubble>\n <ChatMessageActions\n messageId={message.id}\n content={message.content}\n role={message.role}\n isHelpful={message.isHelpful}\n />\n </MessageContainer>\n </MessageRow>\n );\n}\n","import { useRef, useState, useEffect, useLayoutEffect, useCallback } from \"react\";\n\ninterface UseAutoScrollResult {\n scrollContainerRef: React.RefObject<HTMLDivElement | null>;\n sentinelRef: React.RefObject<HTMLDivElement | null>;\n isAtBottom: boolean;\n scrollToBottom: () => void;\n}\n\nexport function useAutoScroll(messageCount: number): UseAutoScrollResult {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const sentinelRef = useRef<HTMLDivElement>(null);\n const [isAtBottom, setIsAtBottom] = useState(true);\n const prevMessageCountRef = useRef(messageCount);\n const hasInitializedRef = useRef(false);\n\n // Phase 1: snap before paint — gets close but styled-components CSS\n // for the sentinel may not be injected yet, so scrollHeight can be short.\n useLayoutEffect(() => {\n const el = scrollContainerRef.current;\n if (el) {\n el.scrollTop = el.scrollHeight;\n }\n }, []);\n\n // Phase 2: snap after paint + rAF — styles are fully computed,\n // scrollHeight now includes the sentinel's height.\n useEffect(() => {\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n requestAnimationFrame(() => {\n const el = scrollContainerRef.current;\n if (el) {\n el.scrollTop = el.scrollHeight;\n }\n });\n }\n }, []);\n\n // Track sentinel visibility for isAtBottom state\n useEffect(() => {\n const sentinel = sentinelRef.current;\n const scrollContainer = scrollContainerRef.current;\n if (!sentinel || !scrollContainer) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n setIsAtBottom(entry.isIntersecting);\n },\n { root: scrollContainer, threshold: 0 }\n );\n\n observer.observe(sentinel);\n return () => observer.disconnect();\n }, []);\n\n // Smooth scroll to bottom when new messages are added\n useEffect(() => {\n if (!hasInitializedRef.current) return;\n\n if (messageCount > prevMessageCountRef.current) {\n requestAnimationFrame(() => {\n const el = scrollContainerRef.current;\n if (el) {\n el.scrollTo({ top: el.scrollHeight, behavior: \"smooth\" });\n }\n });\n }\n prevMessageCountRef.current = messageCount;\n }, [messageCount]);\n\n const scrollToBottom = useCallback(() => {\n const el = scrollContainerRef.current;\n if (el) {\n el.scrollTo({ top: el.scrollHeight, behavior: \"smooth\" });\n }\n }, []);\n\n return { scrollContainerRef, sentinelRef, isAtBottom, scrollToBottom };\n}\n","import styled from \"styled-components\";\n\nimport { colors } from \"../../tokens/colors\";\n\nexport const ListContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n\n &::-webkit-scrollbar {\n width: 6px;\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${colors[\"brown-30\"]};\n border-radius: 3px;\n }\n`;\n\nexport const MessagesList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 40px;\n padding: 0 16px 32px 16px;\n`;\n\nexport const ScrollSentinel = styled.div`\n flex-shrink: 0;\n height: 16px;\n`;\n","import { useChatContext } from \"../chat-context/chat-context\";\nimport { ChatMessage } from \"../chat-message/chat-message\";\nimport { useAutoScroll } from \"../hooks/use-auto-scroll\";\nimport { ListContainer, MessagesList, ScrollSentinel } from \"./chat-message-list-styles\";\n\nexport function ChatMessageList() {\n const { messages } = useChatContext();\n const { scrollContainerRef, sentinelRef } = useAutoScroll(messages.length);\n\n return (\n <ListContainer ref={scrollContainerRef} data-testid=\"chat-list-container\">\n <MessagesList>\n {messages.map((message) => (\n <ChatMessage key={message.id} message={message} />\n ))}\n </MessagesList>\n <ScrollSentinel ref={sentinelRef} data-testid=\"chat-scroll-sentinel\" />\n </ListContainer>\n );\n}\n","import { useState, useCallback, useRef, useEffect } from \"react\";\nimport type { KeyboardEvent, ChangeEvent } from \"react\";\nimport { IconArrowUp, IconPlayerStopFilled } from \"@tabler/icons-react\";\n\nimport { Icon } from \"../../icon/icon\";\nimport { useChatContext } from \"../chat-context/chat-context\";\nimport { ComposerContainer, TextArea, SendButton } from \"./chat-composer-styles\";\n\nexport interface ChatComposerProps {\n placeholder?: string;\n}\n\nexport function ChatComposer({ placeholder = \"Type a message...\" }: ChatComposerProps) {\n const { onSendMessage, isLoading, onStop } = useChatContext();\n const [value, setValue] = useState(\"\");\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n\n const isEmpty = value.trim().length === 0;\n\n const resizeTextArea = useCallback(() => {\n const el = textAreaRef.current;\n if (!el) return;\n el.style.height = \"auto\";\n el.style.height = `${el.scrollHeight}px`;\n }, []);\n\n useEffect(() => {\n resizeTextArea();\n }, [value, resizeTextArea]);\n\n useEffect(() => {\n textAreaRef.current?.focus();\n }, []);\n\n const handleSend = useCallback(() => {\n const trimmed = value.trim();\n if (!trimmed) return;\n onSendMessage(trimmed);\n setValue(\"\");\n requestAnimationFrame(() => textAreaRef.current?.focus());\n }, [value, onSendMessage]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n },\n [handleSend]\n );\n\n const handleChange = useCallback((e: ChangeEvent<HTMLTextAreaElement>) => {\n setValue(e.target.value);\n }, []);\n\n const handleButtonClick = useCallback(() => {\n if (isLoading && onStop) {\n onStop();\n } else {\n handleSend();\n }\n }, [isLoading, onStop, handleSend]);\n\n return (\n <ComposerContainer>\n <TextArea\n ref={textAreaRef}\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={1}\n />\n <SendButton\n onClick={handleButtonClick}\n disabled={!isLoading && isEmpty}\n aria-label={isLoading ? \"Stop generating\" : \"Send message\"}\n >\n {isLoading ? <Icon icon={IconPlayerStopFilled} size={16} /> : <Icon icon={IconArrowUp} size={16} />}\n </SendButton>\n </ComposerContainer>\n );\n}\n","import styled from \"styled-components\";\n\nimport { colors } from \"../../tokens/colors\";\nimport { typographyMixin, typographyTypes } from \"../../tokens/typography\";\n\nexport const ComposerContainer = styled.div`\n position: relative;\n background: ${colors.white};\n border-radius: 12px;\n box-shadow: 0 0 4px 0 ${colors[\"brown-alpha-12\"]};\n padding: 8px 0;\n`;\n\nexport const TextArea = styled.textarea`\n display: block;\n width: 100%;\n resize: none;\n border: none;\n background: transparent;\n ${typographyMixin(typographyTypes.GEIST_BODY_XS_MEDIUM)};\n color: ${colors[\"brown-90\"]};\n padding: 4px 46px 4px 16px;\n min-height: 20px;\n max-height: 200px;\n overflow-y: auto;\n box-sizing: border-box;\n\n &::placeholder {\n color: ${colors[\"brown-60\"]};\n }\n\n &:focus {\n outline: none;\n }\n`;\n\nexport const SendButton = styled.button`\n position: absolute;\n bottom: 8px;\n right: 8px;\n width: 30px;\n height: 30px;\n border: none;\n border-radius: 12px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${colors[\"brown-100\"]};\n color: ${colors.white};\n transition: background-color 75ms;\n padding: 0;\n\n &:disabled {\n background: ${colors[\"brown-50\"]};\n cursor: default;\n }\n`;\n","import { ChatRoot } from \"./chat-root/chat-root\";\nimport { ChatMessageList } from \"./chat-message-list/chat-message-list\";\nimport { ChatComposer } from \"./chat-composer/chat-composer\";\n\nexport const Chat = {\n Root: ChatRoot,\n MessageList: ChatMessageList,\n Composer: ChatComposer,\n};\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAS,eAAe;;;ACAxB,SAAS,eAAe,kBAAkB;AAGnC,IAAM,cAAc,cAAuC,IAAI;AAE/D,SAAS,iBAAmC;AACjD,QAAM,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AACA,SAAO;AACT;;;ACXA,OAAO,YAAY;AAEZ,IAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;;;AFiC9B;AAjBC,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAkB;AAChB,QAAM,eAAe;AAAA,IACnB,OAAO,EAAE,UAAU,eAAe,WAAW,QAAQ,eAAe,gBAAgB,iBAAiB;AAAA,IACrG,CAAC,UAAU,eAAe,WAAW,QAAQ,eAAe,gBAAgB,gBAAgB;AAAA,EAC9F;AAEA,SACE,oBAAC,YAAY,UAAZ,EAAqB,OAAO,cAC3B,8BAAC,iBAAe,UAAS,GAC3B;AAEJ;;;AGtCA,OAAO,mBAAmB;AAC1B,OAAO,eAAe;;;ACDtB,OAAOA,aAAY;AAKZ,IAAM,iBAAiBC,QAAO;AAAA,IACjC,gBAAgB,gBAAgB,oBAAoB,CAAC;AAAA,WAC9C,OAAO,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAkBjB,OAAO,WAAW,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAQd,OAAO,UAAU,CAAC;AAAA,wBACZ,OAAO,gBAAgB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAY9B,OAAO,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAYZ,OAAO,gBAAgB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAM9B,OAAO,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAOP,OAAO,UAAU,CAAC;AAAA,aAClC,OAAO,UAAU,CAAC;AAAA;AAAA;;;AD5DzB,gBAAAC,YAAA;AAHC,SAAS,mBAAmB,EAAE,QAAQ,GAA4B;AACvE,SACE,gBAAAA,KAAC,kBACC,0BAAAA,KAAC,iBAAc,eAAe,CAAC,SAAS,GAAI,mBAAQ,GACtD;AAEJ;;;AEfA,SAAS,eAAAC,oBAAmB;A;;;;;ACA5B,IAAA,oBAAe;EACb,SAAS;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,MAAM;IACN,QAAQ;IACR,aAAa;IACb,eAAe;IACf,gBAAgB;EAAA;EAElB,QAAQ;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,MAAM;IACN,QAAQ;EAAA;AAEZ;;;AChBA,IAAM,uBAAuB,CAC3B,MACA,UACA,gBACA,aACG;AACH,QAAM,YAAY;IAChB,CACE,EAAE,QAAQ,gBAAgB,OAAO,IAAI,SAAS,GAAG,OAAO,WAAW,UAAU,GAAG,KAAA,GAChF,QAEA;MACE;MACA;QACE;QACA,GAAG,kBAAkB,IAAI;QACzB,OAAO;QACP,QAAQ;QACR,WAAW,CAAC,eAAe,eAAe,QAAQ,IAAI,SAAS,EAAE,KAAK,GAAG;QACzE,GAAI,SAAS,WACT;UACE,MAAM;QAAA,IAER;UACE,aAAa;UACb,QAAQ;QAAA;QAEd,GAAG;MAAA;MAEL;QACE,SAAS,cAAc,SAAS,EAAE,KAAK,YAAA,GAAe,KAAK;QAC3D,GAAG,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,cAAc,KAAK,KAAK,CAAC;QAC3D,GAAI,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;MAAA;IACpD;EACF;AAGJ,YAAU,cAAc,GAAG,cAAc;AAEzC,SAAO;AACT;;;ACzCO,IAAM,aAAuB,CAAC,CAAC,QAAO,EAAC,KAAI,cAAa,OAAM,QAAA,CAAQ,GAAE,CAAC,QAAO,EAAC,KAAI,gBAAe,OAAM,QAAA,CAAQ,GAAE,CAAC,QAAO,EAAC,KAAI,cAAa,OAAM,QAAA,CAAQ,CAAC;AAEpK,IAAM,cAAc,qBAAqB,WAAW,YAAY,WAAW,UAAU;;;ACF9E,IAAMC,cAAuB,CAAC,CAAC,QAAO,EAAC,KAAI,oBAAmB,OAAM,QAAA,CAAQ,CAAC;AAEpF,IAAM,YAAY,qBAAqB,WAAW,SAAS,SAASA,WAAU;;;ACFvE,IAAMC,cAAuB,CAAC,CAAC,QAAO,EAAC,KAAI,oKAAmK,OAAM,QAAA,CAAQ,GAAE,CAAC,QAAO,EAAC,KAAI,iGAAgG,OAAM,QAAA,CAAQ,CAAC;AAEjW,IAAM,WAAW,qBAAqB,WAAW,QAAQ,QAAQA,WAAU;;;ACFpE,IAAMC,cAAuB,CAAC,CAAC,QAAO,EAAC,KAAI,0JAAyJ,OAAM,QAAA,CAAQ,CAAC;AAE1N,IAAM,gBAAgB,qBAAqB,WAAW,cAAc,aAAaA,WAAU;;;ACFpF,IAAMC,cAAuB,CAAC,CAAC,QAAO,EAAC,KAAI,0JAAyJ,OAAM,QAAA,CAAQ,CAAC;AAE1N,IAAM,cAAc,qBAAqB,WAAW,YAAY,WAAWA,WAAU;;;ACF9E,IAAMC,cAAuB,CAAC,CAAC,QAAO,EAAC,KAAI,oFAAmF,OAAM,QAAA,CAAQ,CAAC;AAEpJ,IAAM,uBAAuB,qBAAqB,UAAU,sBAAsB,oBAAoBA,WAAU;;;ACLhH,SAAS,UAAU,aAAa,QAAQ,iBAAiB;;;ACKlD,SAAS,gBAAgB,MAAc,SAAwC;AACpF,YAAU,UAAU,UAAU,IAAI,EAAE;AAAA,IAClC,MAAM,SAAS,YAAY;AAAA,IAC3B,CAAC,UAAU,SAAS,YAAY,KAAK;AAAA,EACvC;AACF;;;ADNA,IAAM,iBAAiB;AAOhB,SAAS,qBAA+C;AAC7D,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,aAAa,OAA6C,IAAI;AAEpE,YAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,WAAW,QAAS,cAAa,WAAW,OAAO;AAAA,IACzD;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,OAAO,YAAY,CAAC,SAAiB;AACzC,oBAAgB,MAAM;AAAA,MACpB,WAAW,MAAM;AACf,oBAAY,IAAI;AAChB,YAAI,WAAW,QAAS,cAAa,WAAW,OAAO;AACvD,mBAAW,UAAU,WAAW,MAAM;AACpC,sBAAY,KAAK;AACjB,qBAAW,UAAU;AAAA,QACvB,GAAG,cAAc;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,UAAU,KAAK;AAC1B;;;AEnCA,OAAOC,aAAY;AAEZ,IAAM,mBAAmBA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AXmCnC,SACE,OAAAC,MADF;AArBG,SAAS,mBAAmB,EAAE,WAAW,SAAS,MAAM,UAAU,GAA4B;AACnG,QAAM,EAAE,eAAe,gBAAgB,iBAAiB,IAAI,eAAe;AAC3E,QAAM,EAAE,UAAU,KAAK,IAAI,mBAAmB;AAE9C,QAAM,aAAaC,aAAY,MAAM;AACnC,SAAK,OAAO;AACZ,oBAAgB,SAAS;AAAA,EAC3B,GAAG,CAAC,SAAS,WAAW,MAAM,aAAa,CAAC;AAE5C,QAAM,gBAAgBA,aAAY,MAAM;AACtC,qBAAiB,WAAW,cAAc,OAAO,OAAO,IAAI;AAAA,EAC9D,GAAG,CAAC,WAAW,WAAW,cAAc,CAAC;AAEzC,QAAM,kBAAkBA,aAAY,MAAM;AACxC,uBAAmB,WAAW,cAAc,QAAQ,OAAO,KAAK;AAAA,EAClE,GAAG,CAAC,WAAW,WAAW,gBAAgB,CAAC;AAE3C,QAAM,cAAc,SAAS;AAC7B,QAAM,cAAc,gBAAgB,kBAAkB;AAEtD,SACE,qBAAC,oBACC;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,WAAW,YAAY;AAAA,QAC7B,SAAS;AAAA,QACT,cAAY,WAAW,WAAW;AAAA;AAAA,IACpC;AAAA,IAEC,eACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,YAAY,cAAc;AAAA,QAC1B,cAAW;AAAA;AAAA,IACb;AAAA,IAGD,eACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,YAAY,cAAc;AAAA,QAC1B,cAAW;AAAA;AAAA,IACb;AAAA,KAEJ;AAEJ;;;AY/DA,OAAOE,aAAY;AAOZ,IAAM,aAAaC,QAAO;AAAA;AAAA,qBAEZ,CAAC,EAAE,MAAM,MAAO,UAAU,SAAS,aAAa,YAAa;AAAA;AAG3E,IAAM,mBAAmBA,QAAO;AAAA;AAAA;AAAA,iBAGtB,CAAC,EAAE,MAAM,MAAO,UAAU,SAAS,aAAa,YAAa;AAAA;AAAA;AAAA,YAGlE,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAMrB,IAAM,gBAAgBA,QAAO;AAAA,IAChC,gBAAgB,gBAAgB,oBAAoB,CAAC;AAAA,WAC9C,OAAO,WAAW,CAAC;AAAA,gBACd,CAAC,EAAE,MAAM,MAAO,UAAU,SAAS,OAAO,QAAQ,aAAc;AAAA,aACnE,CAAC,EAAE,MAAM,MAAO,UAAU,SAAS,cAAc,GAAI;AAAA,mBAC/C,CAAC,EAAE,MAAM,MAAO,UAAU,SAAS,SAAS,GAAI;AAAA;;;ACjB7D,SAEI,OAAAC,MAFJ,QAAAC,aAAA;AAHC,SAAS,YAAY,EAAE,QAAQ,GAAqB;AACzD,SACE,gBAAAD,KAAC,cAAW,OAAO,QAAQ,MACzB,0BAAAC,MAAC,oBAAiB,OAAO,QAAQ,MAC/B;AAAA,oBAAAD,KAAC,iBAAc,OAAO,QAAQ,MAC5B,0BAAAA,KAAC,sBAAmB,SAAS,QAAQ,SAAS,GAChD;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,QAAQ;AAAA,QACnB,SAAS,QAAQ;AAAA,QACjB,MAAM,QAAQ;AAAA,QACd,WAAW,QAAQ;AAAA;AAAA,IACrB;AAAA,KACF,GACF;AAEJ;;;ACzBA,SAAS,UAAAE,SAAQ,YAAAC,WAAU,aAAAC,YAAW,iBAAiB,eAAAC,oBAAmB;AASnE,SAAS,cAAc,cAA2C;AACvE,QAAM,qBAAqBH,QAAuB,IAAI;AACtD,QAAM,cAAcA,QAAuB,IAAI;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAIC,UAAS,IAAI;AACjD,QAAM,sBAAsBD,QAAO,YAAY;AAC/C,QAAM,oBAAoBA,QAAO,KAAK;AAItC,kBAAgB,MAAM;AACpB,UAAM,KAAK,mBAAmB;AAC9B,QAAI,IAAI;AACN,SAAG,YAAY,GAAG;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAIL,EAAAE,WAAU,MAAM;AACd,QAAI,CAAC,kBAAkB,SAAS;AAC9B,wBAAkB,UAAU;AAC5B,4BAAsB,MAAM;AAC1B,cAAM,KAAK,mBAAmB;AAC9B,YAAI,IAAI;AACN,aAAG,YAAY,GAAG;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,CAAC;AAGL,EAAAA,WAAU,MAAM;AACd,UAAM,WAAW,YAAY;AAC7B,UAAM,kBAAkB,mBAAmB;AAC3C,QAAI,CAAC,YAAY,CAAC,gBAAiB;AAEnC,UAAM,WAAW,IAAI;AAAA,MACnB,CAAC,CAAC,KAAK,MAAM;AACX,sBAAc,MAAM,cAAc;AAAA,MACpC;AAAA,MACA,EAAE,MAAM,iBAAiB,WAAW,EAAE;AAAA,IACxC;AAEA,aAAS,QAAQ,QAAQ;AACzB,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,CAAC;AAGL,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,kBAAkB,QAAS;AAEhC,QAAI,eAAe,oBAAoB,SAAS;AAC9C,4BAAsB,MAAM;AAC1B,cAAM,KAAK,mBAAmB;AAC9B,YAAI,IAAI;AACN,aAAG,SAAS,EAAE,KAAK,GAAG,cAAc,UAAU,SAAS,CAAC;AAAA,QAC1D;AAAA,MACF,CAAC;AAAA,IACH;AACA,wBAAoB,UAAU;AAAA,EAChC,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,iBAAiBC,aAAY,MAAM;AACvC,UAAM,KAAK,mBAAmB;AAC9B,QAAI,IAAI;AACN,SAAG,SAAS,EAAE,KAAK,GAAG,cAAc,UAAU,SAAS,CAAC;AAAA,IAC1D;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,oBAAoB,aAAa,YAAY,eAAe;AACvE;;;AC/EA,OAAOC,aAAY;AAIZ,IAAM,gBAAgBC,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAelB,OAAO,UAAU,CAAC;AAAA;AAAA;AAAA;AAK7B,IAAM,eAAeA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAO5B,IAAM,iBAAiBA,QAAO;AAAA;AAAA;AAAA;;;ACrBjC,SAGM,OAAAC,MAHN,QAAAC,aAAA;AALG,SAAS,kBAAkB;AAChC,QAAM,EAAE,SAAS,IAAI,eAAe;AACpC,QAAM,EAAE,oBAAoB,YAAY,IAAI,cAAc,SAAS,MAAM;AAEzE,SACE,gBAAAA,MAAC,iBAAc,KAAK,oBAAoB,eAAY,uBAClD;AAAA,oBAAAD,KAAC,gBACE,mBAAS,IAAI,CAAC,YACb,gBAAAA,KAAC,eAA6B,WAAZ,QAAQ,EAAsB,CACjD,GACH;AAAA,IACA,gBAAAA,KAAC,kBAAe,KAAK,aAAa,eAAY,wBAAuB;AAAA,KACvE;AAEJ;;;ACnBA,SAAS,YAAAE,WAAU,eAAAC,cAAa,UAAAC,SAAQ,aAAAC,kBAAiB;;;ACAzD,OAAOC,aAAY;AAKZ,IAAM,oBAAoBC,QAAO;AAAA;AAAA,gBAExB,OAAO,KAAK;AAAA;AAAA,0BAEF,OAAO,gBAAgB,CAAC;AAAA;AAAA;AAI3C,IAAM,WAAWA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM3B,gBAAgB,gBAAgB,oBAAoB,CAAC;AAAA,WAC9C,OAAO,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQhB,OAAO,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQxB,IAAM,aAAaA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAYjB,OAAO,WAAW,CAAC;AAAA,WACxB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKL,OAAO,UAAU,CAAC;AAAA;AAAA;AAAA;;;ADWhC,SACE,OAAAC,MADF,QAAAC,aAAA;AArDG,SAAS,aAAa,EAAE,cAAc,oBAAoB,GAAsB;AACrF,QAAM,EAAE,eAAe,WAAW,OAAO,IAAI,eAAe;AAC5D,QAAM,CAAC,OAAO,QAAQ,IAAIC,UAAS,EAAE;AACrC,QAAM,cAAcC,QAA4B,IAAI;AAEpD,QAAM,UAAU,MAAM,KAAK,EAAE,WAAW;AAExC,QAAM,iBAAiBC,aAAY,MAAM;AACvC,UAAM,KAAK,YAAY;AACvB,QAAI,CAAC,GAAI;AACT,OAAG,MAAM,SAAS;AAClB,OAAG,MAAM,SAAS,GAAG,GAAG,YAAY;AAAA,EACtC,GAAG,CAAC,CAAC;AAEL,EAAAC,WAAU,MAAM;AACd,mBAAe;AAAA,EACjB,GAAG,CAAC,OAAO,cAAc,CAAC;AAE1B,EAAAA,WAAU,MAAM;AACd,gBAAY,SAAS,MAAM;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,aAAaD,aAAY,MAAM;AACnC,UAAM,UAAU,MAAM,KAAK;AAC3B,QAAI,CAAC,QAAS;AACd,kBAAc,OAAO;AACrB,aAAS,EAAE;AACX,0BAAsB,MAAM,YAAY,SAAS,MAAM,CAAC;AAAA,EAC1D,GAAG,CAAC,OAAO,aAAa,CAAC;AAEzB,QAAM,gBAAgBA;AAAA,IACpB,CAAC,MAA0C;AACzC,UAAI,EAAE,QAAQ,WAAW,CAAC,EAAE,UAAU;AACpC,UAAE,eAAe;AACjB,mBAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,eAAeA,aAAY,CAAC,MAAwC;AACxE,aAAS,EAAE,OAAO,KAAK;AAAA,EACzB,GAAG,CAAC,CAAC;AAEL,QAAM,oBAAoBA,aAAY,MAAM;AAC1C,QAAI,aAAa,QAAQ;AACvB,aAAO;AAAA,IACT,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF,GAAG,CAAC,WAAW,QAAQ,UAAU,CAAC;AAElC,SACE,gBAAAH,MAAC,qBACC;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL;AAAA,QACA,UAAU;AAAA,QACV,WAAW;AAAA,QACX;AAAA,QACA,MAAM;AAAA;AAAA,IACR;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,UAAU,CAAC,aAAa;AAAA,QACxB,cAAY,YAAY,oBAAoB;AAAA,QAE3C,sBAAY,gBAAAA,KAAC,QAAK,MAAM,sBAAsB,MAAM,IAAI,IAAK,gBAAAA,KAAC,QAAK,MAAM,aAAa,MAAM,IAAI;AAAA;AAAA,IACnG;AAAA,KACF;AAEJ;;;AE/EO,IAAM,OAAO;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AACZ;","names":["styled","styled","jsx","useCallback","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","styled","jsx","useCallback","styled","styled","jsx","jsxs","useRef","useState","useEffect","useCallback","styled","styled","jsx","jsxs","useState","useCallback","useRef","useEffect","styled","styled","jsx","jsxs","useState","useRef","useCallback","useEffect"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
19
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
20
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
21
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
22
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
23
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
24
|
+
mod
|
|
25
|
+
));
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
__commonJS,
|
|
29
|
+
__toESM
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=chunk-5WRI5ZAA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// src/tokens/colors.ts
|
|
2
|
+
var colors = {
|
|
3
|
+
// White
|
|
4
|
+
white: "#FFFFFF",
|
|
5
|
+
"white-alpha-85": "rgba(255, 255, 255, 0.85)",
|
|
6
|
+
// Brown
|
|
7
|
+
"brown-10": "#FAF9F8",
|
|
8
|
+
"brown-20": "#F5F3F0",
|
|
9
|
+
"brown-30": "#EEEBE5",
|
|
10
|
+
"brown-40": "#E6E2DA",
|
|
11
|
+
"brown-50": "#CFCBC4",
|
|
12
|
+
"brown-60": "#A19E99",
|
|
13
|
+
"brown-70": "#73716D",
|
|
14
|
+
"brown-80": "#5C5A57",
|
|
15
|
+
"brown-90": "#2E2D2C",
|
|
16
|
+
"brown-100": "#171716",
|
|
17
|
+
"brown-alpha-12": "rgba(23, 23, 22, 0.12)",
|
|
18
|
+
"brown-alpha-20": "rgba(23, 23, 22, 0.20)",
|
|
19
|
+
"brown-alpha-55": "rgba(23, 23, 22, 0.55)",
|
|
20
|
+
"brown-alpha-70": "rgba(23, 23, 22, 0.70)",
|
|
21
|
+
"brown-alpha-80": "rgba(23, 23, 22, 0.80)",
|
|
22
|
+
"brown-alpha-90": "rgba(23, 23, 22, 0.90)",
|
|
23
|
+
// Fuchsia
|
|
24
|
+
"fuchsia-50": "#FAF5FF",
|
|
25
|
+
"fuchsia-300": "#F0ABFC",
|
|
26
|
+
"fuchsia-500": "#D946EF",
|
|
27
|
+
"fuchsia-600": "#C026D3",
|
|
28
|
+
"fuchsia-800": "#86198F",
|
|
29
|
+
// Pink
|
|
30
|
+
"pink-50": "#FDF2F8",
|
|
31
|
+
"pink-400": "#F472B6",
|
|
32
|
+
"pink-600": "#DB2777",
|
|
33
|
+
"pink-800": "#9D174D",
|
|
34
|
+
// Violet
|
|
35
|
+
"violet-50": "#F5F3FF",
|
|
36
|
+
"violet-400": "#A78BFA",
|
|
37
|
+
"violet-600": "#7C3AED",
|
|
38
|
+
"violet-800": "#5B21B6",
|
|
39
|
+
// Indigo
|
|
40
|
+
"indigo-50": "#EEF2FF",
|
|
41
|
+
"indigo-400": "#818CF8",
|
|
42
|
+
"indigo-500": "#6366F1",
|
|
43
|
+
"indigo-600": "#4F46E5",
|
|
44
|
+
"indigo-800": "#3730A3",
|
|
45
|
+
// Cyan
|
|
46
|
+
"cyan-50": "#E7FEFF",
|
|
47
|
+
"cyan-300": "#67E8F9",
|
|
48
|
+
"cyan-600": "#0891B2",
|
|
49
|
+
"cyan-900": "#164E63",
|
|
50
|
+
// Teal
|
|
51
|
+
"teal-50": "#EBFDF9",
|
|
52
|
+
"teal-300": "#5EEAD4",
|
|
53
|
+
"teal-600": "#0D9488",
|
|
54
|
+
// Rose
|
|
55
|
+
"rose-400": "#FB7185",
|
|
56
|
+
// Purple
|
|
57
|
+
"purple-400": "#C084FC",
|
|
58
|
+
// Blue
|
|
59
|
+
"blue-50": "#EFF6FF",
|
|
60
|
+
"blue-100": "#DBEAFE",
|
|
61
|
+
"blue-300": "#93C5FD",
|
|
62
|
+
"blue-400": "#60A5FA",
|
|
63
|
+
"blue-600": "#2563EB",
|
|
64
|
+
"blue-800": "#1E40AF",
|
|
65
|
+
// Sky
|
|
66
|
+
"sky-300": "#7DD3FC",
|
|
67
|
+
// Green
|
|
68
|
+
"green-50": "#ECF9F0",
|
|
69
|
+
"green-100": "#D4F1D9",
|
|
70
|
+
"green-400": "#3DC269",
|
|
71
|
+
"green-700": "#277C43",
|
|
72
|
+
"green-800": "#1C5930",
|
|
73
|
+
// Orange
|
|
74
|
+
"orange-50": "#FFF7ED",
|
|
75
|
+
"orange-100": "#FFEDD5",
|
|
76
|
+
"orange-200": "#FED7AA",
|
|
77
|
+
"orange-500": "#F97316",
|
|
78
|
+
"orange-600": "#EA580C",
|
|
79
|
+
// Red
|
|
80
|
+
"red-50": "#FEF2F2",
|
|
81
|
+
"red-100": "#FEE2E2",
|
|
82
|
+
"red-200": "#FECACA",
|
|
83
|
+
"red-400": "#F7776C",
|
|
84
|
+
"red-500": "#EF4444",
|
|
85
|
+
"red-600": "#DC2626"
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export {
|
|
89
|
+
colors
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=chunk-6HNZQ2BF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/colors.ts"],"sourcesContent":["export const colors = {\n // White\n white: \"#FFFFFF\",\n \"white-alpha-85\": \"rgba(255, 255, 255, 0.85)\",\n\n // Brown\n \"brown-10\": \"#FAF9F8\",\n \"brown-20\": \"#F5F3F0\",\n \"brown-30\": \"#EEEBE5\",\n \"brown-40\": \"#E6E2DA\",\n \"brown-50\": \"#CFCBC4\",\n \"brown-60\": \"#A19E99\",\n \"brown-70\": \"#73716D\",\n \"brown-80\": \"#5C5A57\",\n \"brown-90\": \"#2E2D2C\",\n \"brown-100\": \"#171716\",\n \"brown-alpha-12\": \"rgba(23, 23, 22, 0.12)\",\n \"brown-alpha-20\": \"rgba(23, 23, 22, 0.20)\",\n \"brown-alpha-55\": \"rgba(23, 23, 22, 0.55)\",\n \"brown-alpha-70\": \"rgba(23, 23, 22, 0.70)\",\n \"brown-alpha-80\": \"rgba(23, 23, 22, 0.80)\",\n \"brown-alpha-90\": \"rgba(23, 23, 22, 0.90)\",\n\n // Fuchsia\n \"fuchsia-50\": \"#FAF5FF\",\n \"fuchsia-300\": \"#F0ABFC\",\n \"fuchsia-500\": \"#D946EF\",\n \"fuchsia-600\": \"#C026D3\",\n \"fuchsia-800\": \"#86198F\",\n\n // Pink\n \"pink-50\": \"#FDF2F8\",\n \"pink-400\": \"#F472B6\",\n \"pink-600\": \"#DB2777\",\n \"pink-800\": \"#9D174D\",\n\n // Violet\n \"violet-50\": \"#F5F3FF\",\n \"violet-400\": \"#A78BFA\",\n \"violet-600\": \"#7C3AED\",\n \"violet-800\": \"#5B21B6\",\n\n // Indigo\n \"indigo-50\": \"#EEF2FF\",\n \"indigo-400\": \"#818CF8\",\n \"indigo-500\": \"#6366F1\",\n \"indigo-600\": \"#4F46E5\",\n \"indigo-800\": \"#3730A3\",\n\n // Cyan\n \"cyan-50\": \"#E7FEFF\",\n \"cyan-300\": \"#67E8F9\",\n \"cyan-600\": \"#0891B2\",\n \"cyan-900\": \"#164E63\",\n\n // Teal\n \"teal-50\": \"#EBFDF9\",\n \"teal-300\": \"#5EEAD4\",\n \"teal-600\": \"#0D9488\",\n\n // Rose\n \"rose-400\": \"#FB7185\",\n\n // Purple\n \"purple-400\": \"#C084FC\",\n\n // Blue\n \"blue-50\": \"#EFF6FF\",\n \"blue-100\": \"#DBEAFE\",\n \"blue-300\": \"#93C5FD\",\n \"blue-400\": \"#60A5FA\",\n \"blue-600\": \"#2563EB\",\n \"blue-800\": \"#1E40AF\",\n\n // Sky\n \"sky-300\": \"#7DD3FC\",\n\n // Green\n \"green-50\": \"#ECF9F0\",\n \"green-100\": \"#D4F1D9\",\n \"green-400\": \"#3DC269\",\n \"green-700\": \"#277C43\",\n \"green-800\": \"#1C5930\",\n\n // Orange\n \"orange-50\": \"#FFF7ED\",\n \"orange-100\": \"#FFEDD5\",\n \"orange-200\": \"#FED7AA\",\n \"orange-500\": \"#F97316\",\n \"orange-600\": \"#EA580C\",\n\n // Red\n \"red-50\": \"#FEF2F2\",\n \"red-100\": \"#FEE2E2\",\n \"red-200\": \"#FECACA\",\n \"red-400\": \"#F7776C\",\n \"red-500\": \"#EF4444\",\n \"red-600\": \"#DC2626\",\n} as const;\n\nexport type ColorToken = keyof typeof colors;\n"],"mappings":";AAAO,IAAM,SAAS;AAAA;AAAA,EAEpB,OAAO;AAAA,EACP,kBAAkB;AAAA;AAAA,EAGlB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA;AAAA,EAGlB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA;AAAA,EAGf,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA,EAGZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA;AAAA,EAGd,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA;AAAA,EAGd,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA,EAGZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA,EAGZ,YAAY;AAAA;AAAA,EAGZ,cAAc;AAAA;AAAA,EAGd,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA;AAAA,EAGZ,WAAW;AAAA;AAAA,EAGX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA;AAAA,EAGb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA;AAAA,EAGd,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AACb;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-7AJSQJQ5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
// src/tokens/typography.ts
|
|
2
|
+
var fontFamilies = {
|
|
3
|
+
GEIST: "Geist",
|
|
4
|
+
CRIMSON_PRO: "Crimson Pro"
|
|
5
|
+
};
|
|
6
|
+
var typographyTypes = {
|
|
7
|
+
// Geist Label Caption (12px)
|
|
8
|
+
GEIST_LABEL_CAPTION_REGULAR: "GEIST_LABEL_CAPTION_REGULAR",
|
|
9
|
+
GEIST_LABEL_CAPTION_MEDIUM: "GEIST_LABEL_CAPTION_MEDIUM",
|
|
10
|
+
GEIST_LABEL_CAPTION_SEMI_BOLD: "GEIST_LABEL_CAPTION_SEMI_BOLD",
|
|
11
|
+
// Geist Body Extra Small (14px)
|
|
12
|
+
GEIST_BODY_XS_REGULAR: "GEIST_BODY_XS_REGULAR",
|
|
13
|
+
GEIST_BODY_XS_MEDIUM: "GEIST_BODY_XS_MEDIUM",
|
|
14
|
+
GEIST_BODY_XS_BOLD: "GEIST_BODY_XS_BOLD",
|
|
15
|
+
// Geist Body Small (16px)
|
|
16
|
+
GEIST_BODY_S_REGULAR: "GEIST_BODY_S_REGULAR",
|
|
17
|
+
GEIST_BODY_S_MEDIUM: "GEIST_BODY_S_MEDIUM",
|
|
18
|
+
GEIST_BODY_S_SEMI_BOLD: "GEIST_BODY_S_SEMI_BOLD",
|
|
19
|
+
// Geist Body Medium (18px)
|
|
20
|
+
GEIST_BODY_M_LIGHT: "GEIST_BODY_M_LIGHT",
|
|
21
|
+
GEIST_BODY_M_REGULAR: "GEIST_BODY_M_REGULAR",
|
|
22
|
+
GEIST_BODY_M_MEDIUM: "GEIST_BODY_M_MEDIUM",
|
|
23
|
+
GEIST_BODY_M_SEMI_BOLD: "GEIST_BODY_M_SEMI_BOLD",
|
|
24
|
+
// Geist Body Large (20px)
|
|
25
|
+
GEIST_BODY_L_REGULAR: "GEIST_BODY_L_REGULAR",
|
|
26
|
+
GEIST_BODY_L_MEDIUM: "GEIST_BODY_L_MEDIUM",
|
|
27
|
+
GEIST_BODY_L_SEMI_BOLD: "GEIST_BODY_L_SEMI_BOLD",
|
|
28
|
+
GEIST_BODY_L_BOLD: "GEIST_BODY_L_BOLD",
|
|
29
|
+
// Geist Heading Small (24px)
|
|
30
|
+
GEIST_HEADING_S_REGULAR: "GEIST_HEADING_S_REGULAR",
|
|
31
|
+
GEIST_HEADING_S_MEDIUM: "GEIST_HEADING_S_MEDIUM",
|
|
32
|
+
GEIST_HEADING_S_BOLD: "GEIST_HEADING_S_BOLD",
|
|
33
|
+
// Geist Heading Medium (28px)
|
|
34
|
+
GEIST_HEADING_M_BOLD: "GEIST_HEADING_M_BOLD",
|
|
35
|
+
// Geist Heading Large (32px)
|
|
36
|
+
GEIST_HEADING_L_REGULAR: "GEIST_HEADING_L_REGULAR",
|
|
37
|
+
GEIST_HEADING_L_MEDIUM: "GEIST_HEADING_L_MEDIUM",
|
|
38
|
+
GEIST_HEADING_L_SEMI_BOLD: "GEIST_HEADING_L_SEMI_BOLD",
|
|
39
|
+
GEIST_HEADING_L_BOLD: "GEIST_HEADING_L_BOLD",
|
|
40
|
+
// Geist Display Large (36px)
|
|
41
|
+
GEIST_DISPLAY_L_MEDIUM: "GEIST_DISPLAY_L_MEDIUM",
|
|
42
|
+
// Crimson Pro Body Small (16px)
|
|
43
|
+
CRIMSON_PRO_BODY_S_LIGHT: "CRIMSON_PRO_BODY_S_LIGHT",
|
|
44
|
+
// Crimson Pro Body Medium (18px)
|
|
45
|
+
CRIMSON_PRO_BODY_M_LIGHT: "CRIMSON_PRO_BODY_M_LIGHT",
|
|
46
|
+
// Crimson Pro Heading Medium (24px)
|
|
47
|
+
CRIMSON_PRO_HEADING_M_MEDIUM: "CRIMSON_PRO_HEADING_M_MEDIUM",
|
|
48
|
+
// Crimson Pro Display Extra Large (46px)
|
|
49
|
+
CRIMSON_PRO_DISPLAY_XL_REGULAR: "CRIMSON_PRO_DISPLAY_XL_REGULAR"
|
|
50
|
+
};
|
|
51
|
+
var typographyStyles = {
|
|
52
|
+
// Geist Label Caption (12px)
|
|
53
|
+
[typographyTypes.GEIST_LABEL_CAPTION_REGULAR]: {
|
|
54
|
+
fontFamily: fontFamilies.GEIST,
|
|
55
|
+
fontSize: 12,
|
|
56
|
+
fontWeight: 400,
|
|
57
|
+
lineHeight: 16
|
|
58
|
+
},
|
|
59
|
+
[typographyTypes.GEIST_LABEL_CAPTION_MEDIUM]: {
|
|
60
|
+
fontFamily: fontFamilies.GEIST,
|
|
61
|
+
fontSize: 12,
|
|
62
|
+
fontWeight: 500,
|
|
63
|
+
lineHeight: 16
|
|
64
|
+
},
|
|
65
|
+
[typographyTypes.GEIST_LABEL_CAPTION_SEMI_BOLD]: {
|
|
66
|
+
fontFamily: fontFamilies.GEIST,
|
|
67
|
+
fontSize: 12,
|
|
68
|
+
fontWeight: 600,
|
|
69
|
+
lineHeight: 16
|
|
70
|
+
},
|
|
71
|
+
// Geist Body Extra Small (14px)
|
|
72
|
+
[typographyTypes.GEIST_BODY_XS_REGULAR]: {
|
|
73
|
+
fontFamily: fontFamilies.GEIST,
|
|
74
|
+
fontSize: 14,
|
|
75
|
+
fontWeight: 400,
|
|
76
|
+
lineHeight: 20
|
|
77
|
+
},
|
|
78
|
+
[typographyTypes.GEIST_BODY_XS_MEDIUM]: {
|
|
79
|
+
fontFamily: fontFamilies.GEIST,
|
|
80
|
+
fontSize: 14,
|
|
81
|
+
fontWeight: 500,
|
|
82
|
+
lineHeight: 20
|
|
83
|
+
},
|
|
84
|
+
[typographyTypes.GEIST_BODY_XS_BOLD]: {
|
|
85
|
+
fontFamily: fontFamilies.GEIST,
|
|
86
|
+
fontSize: 14,
|
|
87
|
+
fontWeight: 600,
|
|
88
|
+
lineHeight: 20
|
|
89
|
+
},
|
|
90
|
+
// Geist Body Small (16px)
|
|
91
|
+
[typographyTypes.GEIST_BODY_S_REGULAR]: {
|
|
92
|
+
fontFamily: fontFamilies.GEIST,
|
|
93
|
+
fontSize: 16,
|
|
94
|
+
fontWeight: 400,
|
|
95
|
+
lineHeight: 24,
|
|
96
|
+
letterSpacing: -0.08
|
|
97
|
+
},
|
|
98
|
+
[typographyTypes.GEIST_BODY_S_MEDIUM]: {
|
|
99
|
+
fontFamily: fontFamilies.GEIST,
|
|
100
|
+
fontSize: 16,
|
|
101
|
+
fontWeight: 500,
|
|
102
|
+
lineHeight: 24,
|
|
103
|
+
letterSpacing: -0.08
|
|
104
|
+
},
|
|
105
|
+
[typographyTypes.GEIST_BODY_S_SEMI_BOLD]: {
|
|
106
|
+
fontFamily: fontFamilies.GEIST,
|
|
107
|
+
fontSize: 16,
|
|
108
|
+
fontWeight: 600,
|
|
109
|
+
lineHeight: 24,
|
|
110
|
+
letterSpacing: -0.08
|
|
111
|
+
},
|
|
112
|
+
// Geist Body Medium (18px)
|
|
113
|
+
[typographyTypes.GEIST_BODY_M_LIGHT]: {
|
|
114
|
+
fontFamily: fontFamilies.GEIST,
|
|
115
|
+
fontSize: 18,
|
|
116
|
+
fontWeight: 300,
|
|
117
|
+
lineHeight: 28,
|
|
118
|
+
letterSpacing: -0.09
|
|
119
|
+
},
|
|
120
|
+
[typographyTypes.GEIST_BODY_M_REGULAR]: {
|
|
121
|
+
fontFamily: fontFamilies.GEIST,
|
|
122
|
+
fontSize: 18,
|
|
123
|
+
fontWeight: 400,
|
|
124
|
+
lineHeight: 28,
|
|
125
|
+
letterSpacing: -0.09
|
|
126
|
+
},
|
|
127
|
+
[typographyTypes.GEIST_BODY_M_MEDIUM]: {
|
|
128
|
+
fontFamily: fontFamilies.GEIST,
|
|
129
|
+
fontSize: 18,
|
|
130
|
+
fontWeight: 500,
|
|
131
|
+
lineHeight: 28,
|
|
132
|
+
letterSpacing: -0.09
|
|
133
|
+
},
|
|
134
|
+
[typographyTypes.GEIST_BODY_M_SEMI_BOLD]: {
|
|
135
|
+
fontFamily: fontFamilies.GEIST,
|
|
136
|
+
fontSize: 18,
|
|
137
|
+
fontWeight: 600,
|
|
138
|
+
lineHeight: 28,
|
|
139
|
+
letterSpacing: -0.09
|
|
140
|
+
},
|
|
141
|
+
// Geist Body Large (20px)
|
|
142
|
+
[typographyTypes.GEIST_BODY_L_REGULAR]: {
|
|
143
|
+
fontFamily: fontFamilies.GEIST,
|
|
144
|
+
fontSize: 20,
|
|
145
|
+
fontWeight: 400,
|
|
146
|
+
lineHeight: 30,
|
|
147
|
+
letterSpacing: -0.2
|
|
148
|
+
},
|
|
149
|
+
[typographyTypes.GEIST_BODY_L_MEDIUM]: {
|
|
150
|
+
fontFamily: fontFamilies.GEIST,
|
|
151
|
+
fontSize: 20,
|
|
152
|
+
fontWeight: 500,
|
|
153
|
+
lineHeight: 30,
|
|
154
|
+
letterSpacing: -0.2
|
|
155
|
+
},
|
|
156
|
+
[typographyTypes.GEIST_BODY_L_SEMI_BOLD]: {
|
|
157
|
+
fontFamily: fontFamilies.GEIST,
|
|
158
|
+
fontSize: 20,
|
|
159
|
+
fontWeight: 600,
|
|
160
|
+
lineHeight: 30,
|
|
161
|
+
letterSpacing: -0.2
|
|
162
|
+
},
|
|
163
|
+
[typographyTypes.GEIST_BODY_L_BOLD]: {
|
|
164
|
+
fontFamily: fontFamilies.GEIST,
|
|
165
|
+
fontSize: 20,
|
|
166
|
+
fontWeight: 700,
|
|
167
|
+
lineHeight: 30,
|
|
168
|
+
letterSpacing: -0.2
|
|
169
|
+
},
|
|
170
|
+
// Geist Heading Small (24px)
|
|
171
|
+
[typographyTypes.GEIST_HEADING_S_REGULAR]: {
|
|
172
|
+
fontFamily: fontFamilies.GEIST,
|
|
173
|
+
fontSize: 24,
|
|
174
|
+
fontWeight: 400,
|
|
175
|
+
lineHeight: 32,
|
|
176
|
+
letterSpacing: -0.48
|
|
177
|
+
},
|
|
178
|
+
[typographyTypes.GEIST_HEADING_S_MEDIUM]: {
|
|
179
|
+
fontFamily: fontFamilies.GEIST,
|
|
180
|
+
fontSize: 24,
|
|
181
|
+
fontWeight: 500,
|
|
182
|
+
lineHeight: 32,
|
|
183
|
+
letterSpacing: -0.48
|
|
184
|
+
},
|
|
185
|
+
[typographyTypes.GEIST_HEADING_S_BOLD]: {
|
|
186
|
+
fontFamily: fontFamilies.GEIST,
|
|
187
|
+
fontSize: 24,
|
|
188
|
+
fontWeight: 700,
|
|
189
|
+
lineHeight: 32,
|
|
190
|
+
letterSpacing: -0.48
|
|
191
|
+
},
|
|
192
|
+
// Geist Heading Medium (28px)
|
|
193
|
+
[typographyTypes.GEIST_HEADING_M_BOLD]: {
|
|
194
|
+
fontFamily: fontFamilies.GEIST,
|
|
195
|
+
fontSize: 28,
|
|
196
|
+
fontWeight: 700,
|
|
197
|
+
lineHeight: 36,
|
|
198
|
+
letterSpacing: -0.6
|
|
199
|
+
},
|
|
200
|
+
// Geist Heading Large (32px)
|
|
201
|
+
[typographyTypes.GEIST_HEADING_L_REGULAR]: {
|
|
202
|
+
fontFamily: fontFamilies.GEIST,
|
|
203
|
+
fontSize: 32,
|
|
204
|
+
fontWeight: 400,
|
|
205
|
+
lineHeight: 40,
|
|
206
|
+
letterSpacing: -0.64
|
|
207
|
+
},
|
|
208
|
+
[typographyTypes.GEIST_HEADING_L_MEDIUM]: {
|
|
209
|
+
fontFamily: fontFamilies.GEIST,
|
|
210
|
+
fontSize: 32,
|
|
211
|
+
fontWeight: 500,
|
|
212
|
+
lineHeight: 40,
|
|
213
|
+
letterSpacing: -0.64
|
|
214
|
+
},
|
|
215
|
+
[typographyTypes.GEIST_HEADING_L_SEMI_BOLD]: {
|
|
216
|
+
fontFamily: fontFamilies.GEIST,
|
|
217
|
+
fontSize: 32,
|
|
218
|
+
fontWeight: 600,
|
|
219
|
+
lineHeight: 40,
|
|
220
|
+
letterSpacing: -0.64
|
|
221
|
+
},
|
|
222
|
+
[typographyTypes.GEIST_HEADING_L_BOLD]: {
|
|
223
|
+
fontFamily: fontFamilies.GEIST,
|
|
224
|
+
fontSize: 32,
|
|
225
|
+
fontWeight: 700,
|
|
226
|
+
lineHeight: 40,
|
|
227
|
+
letterSpacing: -0.64
|
|
228
|
+
},
|
|
229
|
+
// Geist Display Large (36px)
|
|
230
|
+
[typographyTypes.GEIST_DISPLAY_L_MEDIUM]: {
|
|
231
|
+
fontFamily: fontFamilies.GEIST,
|
|
232
|
+
fontSize: 36,
|
|
233
|
+
fontWeight: 500,
|
|
234
|
+
lineHeight: 44,
|
|
235
|
+
letterSpacing: -0.72
|
|
236
|
+
},
|
|
237
|
+
// Crimson Pro Body Small (16px)
|
|
238
|
+
[typographyTypes.CRIMSON_PRO_BODY_S_LIGHT]: {
|
|
239
|
+
fontFamily: fontFamilies.CRIMSON_PRO,
|
|
240
|
+
fontSize: 16,
|
|
241
|
+
fontWeight: 300,
|
|
242
|
+
lineHeight: 20,
|
|
243
|
+
letterSpacing: -0.32,
|
|
244
|
+
fontStyle: "italic"
|
|
245
|
+
},
|
|
246
|
+
// Crimson Pro Body Medium (18px)
|
|
247
|
+
[typographyTypes.CRIMSON_PRO_BODY_M_LIGHT]: {
|
|
248
|
+
fontFamily: fontFamilies.CRIMSON_PRO,
|
|
249
|
+
fontSize: 18,
|
|
250
|
+
fontWeight: 300,
|
|
251
|
+
lineHeight: 28,
|
|
252
|
+
letterSpacing: 0,
|
|
253
|
+
fontStyle: "italic"
|
|
254
|
+
},
|
|
255
|
+
// Crimson Pro Heading Medium (24px)
|
|
256
|
+
[typographyTypes.CRIMSON_PRO_HEADING_M_MEDIUM]: {
|
|
257
|
+
fontFamily: fontFamilies.CRIMSON_PRO,
|
|
258
|
+
fontSize: 24,
|
|
259
|
+
fontWeight: 400,
|
|
260
|
+
lineHeight: 32,
|
|
261
|
+
letterSpacing: -0.48,
|
|
262
|
+
fontStyle: "italic"
|
|
263
|
+
},
|
|
264
|
+
// Crimson Pro Display Extra Large (46px)
|
|
265
|
+
[typographyTypes.CRIMSON_PRO_DISPLAY_XL_REGULAR]: {
|
|
266
|
+
fontFamily: fontFamilies.CRIMSON_PRO,
|
|
267
|
+
fontSize: 46,
|
|
268
|
+
fontWeight: 400,
|
|
269
|
+
lineHeight: 54,
|
|
270
|
+
letterSpacing: -1.38,
|
|
271
|
+
fontStyle: "italic"
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
function typographyMixin(type) {
|
|
275
|
+
const style = typographyStyles[type];
|
|
276
|
+
return [
|
|
277
|
+
`font-family: "${style.fontFamily}", sans-serif`,
|
|
278
|
+
`font-size: ${style.fontSize}px`,
|
|
279
|
+
`font-weight: ${style.fontWeight}`,
|
|
280
|
+
`line-height: ${style.lineHeight}px`,
|
|
281
|
+
`letter-spacing: ${style.letterSpacing != null ? `${style.letterSpacing}px` : "inherit"}`,
|
|
282
|
+
`font-style: ${style.fontStyle ?? "normal"}`
|
|
283
|
+
].join(";\n ");
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export {
|
|
287
|
+
fontFamilies,
|
|
288
|
+
typographyTypes,
|
|
289
|
+
typographyStyles,
|
|
290
|
+
typographyMixin
|
|
291
|
+
};
|
|
292
|
+
//# sourceMappingURL=chunk-A6DKIFWS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tokens/typography.ts"],"sourcesContent":["export const fontFamilies = {\n GEIST: \"Geist\",\n CRIMSON_PRO: \"Crimson Pro\",\n} as const;\n\nexport const typographyTypes = {\n // Geist Label Caption (12px)\n GEIST_LABEL_CAPTION_REGULAR: \"GEIST_LABEL_CAPTION_REGULAR\",\n GEIST_LABEL_CAPTION_MEDIUM: \"GEIST_LABEL_CAPTION_MEDIUM\",\n GEIST_LABEL_CAPTION_SEMI_BOLD: \"GEIST_LABEL_CAPTION_SEMI_BOLD\",\n\n // Geist Body Extra Small (14px)\n GEIST_BODY_XS_REGULAR: \"GEIST_BODY_XS_REGULAR\",\n GEIST_BODY_XS_MEDIUM: \"GEIST_BODY_XS_MEDIUM\",\n GEIST_BODY_XS_BOLD: \"GEIST_BODY_XS_BOLD\",\n\n // Geist Body Small (16px)\n GEIST_BODY_S_REGULAR: \"GEIST_BODY_S_REGULAR\",\n GEIST_BODY_S_MEDIUM: \"GEIST_BODY_S_MEDIUM\",\n GEIST_BODY_S_SEMI_BOLD: \"GEIST_BODY_S_SEMI_BOLD\",\n\n // Geist Body Medium (18px)\n GEIST_BODY_M_LIGHT: \"GEIST_BODY_M_LIGHT\",\n GEIST_BODY_M_REGULAR: \"GEIST_BODY_M_REGULAR\",\n GEIST_BODY_M_MEDIUM: \"GEIST_BODY_M_MEDIUM\",\n GEIST_BODY_M_SEMI_BOLD: \"GEIST_BODY_M_SEMI_BOLD\",\n\n // Geist Body Large (20px)\n GEIST_BODY_L_REGULAR: \"GEIST_BODY_L_REGULAR\",\n GEIST_BODY_L_MEDIUM: \"GEIST_BODY_L_MEDIUM\",\n GEIST_BODY_L_SEMI_BOLD: \"GEIST_BODY_L_SEMI_BOLD\",\n GEIST_BODY_L_BOLD: \"GEIST_BODY_L_BOLD\",\n\n // Geist Heading Small (24px)\n GEIST_HEADING_S_REGULAR: \"GEIST_HEADING_S_REGULAR\",\n GEIST_HEADING_S_MEDIUM: \"GEIST_HEADING_S_MEDIUM\",\n GEIST_HEADING_S_BOLD: \"GEIST_HEADING_S_BOLD\",\n\n // Geist Heading Medium (28px)\n GEIST_HEADING_M_BOLD: \"GEIST_HEADING_M_BOLD\",\n\n // Geist Heading Large (32px)\n GEIST_HEADING_L_REGULAR: \"GEIST_HEADING_L_REGULAR\",\n GEIST_HEADING_L_MEDIUM: \"GEIST_HEADING_L_MEDIUM\",\n GEIST_HEADING_L_SEMI_BOLD: \"GEIST_HEADING_L_SEMI_BOLD\",\n GEIST_HEADING_L_BOLD: \"GEIST_HEADING_L_BOLD\",\n\n // Geist Display Large (36px)\n GEIST_DISPLAY_L_MEDIUM: \"GEIST_DISPLAY_L_MEDIUM\",\n\n // Crimson Pro Body Small (16px)\n CRIMSON_PRO_BODY_S_LIGHT: \"CRIMSON_PRO_BODY_S_LIGHT\",\n\n // Crimson Pro Body Medium (18px)\n CRIMSON_PRO_BODY_M_LIGHT: \"CRIMSON_PRO_BODY_M_LIGHT\",\n\n // Crimson Pro Heading Medium (24px)\n CRIMSON_PRO_HEADING_M_MEDIUM: \"CRIMSON_PRO_HEADING_M_MEDIUM\",\n\n // Crimson Pro Display Extra Large (46px)\n CRIMSON_PRO_DISPLAY_XL_REGULAR: \"CRIMSON_PRO_DISPLAY_XL_REGULAR\",\n} as const;\n\nexport type TypographyType = (typeof typographyTypes)[keyof typeof typographyTypes];\n\nexport interface TypographyStyle {\n fontFamily: string;\n fontSize: number;\n fontWeight: number;\n lineHeight: number;\n letterSpacing?: number;\n fontStyle?: string;\n}\n\nexport const typographyStyles: Record<TypographyType, TypographyStyle> = {\n // Geist Label Caption (12px)\n [typographyTypes.GEIST_LABEL_CAPTION_REGULAR]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 12,\n fontWeight: 400,\n lineHeight: 16,\n },\n [typographyTypes.GEIST_LABEL_CAPTION_MEDIUM]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 12,\n fontWeight: 500,\n lineHeight: 16,\n },\n [typographyTypes.GEIST_LABEL_CAPTION_SEMI_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 12,\n fontWeight: 600,\n lineHeight: 16,\n },\n\n // Geist Body Extra Small (14px)\n [typographyTypes.GEIST_BODY_XS_REGULAR]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 14,\n fontWeight: 400,\n lineHeight: 20,\n },\n [typographyTypes.GEIST_BODY_XS_MEDIUM]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 20,\n },\n [typographyTypes.GEIST_BODY_XS_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 14,\n fontWeight: 600,\n lineHeight: 20,\n },\n\n // Geist Body Small (16px)\n [typographyTypes.GEIST_BODY_S_REGULAR]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 16,\n fontWeight: 400,\n lineHeight: 24,\n letterSpacing: -0.08,\n },\n [typographyTypes.GEIST_BODY_S_MEDIUM]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 16,\n fontWeight: 500,\n lineHeight: 24,\n letterSpacing: -0.08,\n },\n [typographyTypes.GEIST_BODY_S_SEMI_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 16,\n fontWeight: 600,\n lineHeight: 24,\n letterSpacing: -0.08,\n },\n\n // Geist Body Medium (18px)\n [typographyTypes.GEIST_BODY_M_LIGHT]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 18,\n fontWeight: 300,\n lineHeight: 28,\n letterSpacing: -0.09,\n },\n [typographyTypes.GEIST_BODY_M_REGULAR]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 18,\n fontWeight: 400,\n lineHeight: 28,\n letterSpacing: -0.09,\n },\n [typographyTypes.GEIST_BODY_M_MEDIUM]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 18,\n fontWeight: 500,\n lineHeight: 28,\n letterSpacing: -0.09,\n },\n [typographyTypes.GEIST_BODY_M_SEMI_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 18,\n fontWeight: 600,\n lineHeight: 28,\n letterSpacing: -0.09,\n },\n\n // Geist Body Large (20px)\n [typographyTypes.GEIST_BODY_L_REGULAR]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 20,\n fontWeight: 400,\n lineHeight: 30,\n letterSpacing: -0.2,\n },\n [typographyTypes.GEIST_BODY_L_MEDIUM]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 20,\n fontWeight: 500,\n lineHeight: 30,\n letterSpacing: -0.2,\n },\n [typographyTypes.GEIST_BODY_L_SEMI_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 20,\n fontWeight: 600,\n lineHeight: 30,\n letterSpacing: -0.2,\n },\n [typographyTypes.GEIST_BODY_L_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 20,\n fontWeight: 700,\n lineHeight: 30,\n letterSpacing: -0.2,\n },\n\n // Geist Heading Small (24px)\n [typographyTypes.GEIST_HEADING_S_REGULAR]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 24,\n fontWeight: 400,\n lineHeight: 32,\n letterSpacing: -0.48,\n },\n [typographyTypes.GEIST_HEADING_S_MEDIUM]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 24,\n fontWeight: 500,\n lineHeight: 32,\n letterSpacing: -0.48,\n },\n [typographyTypes.GEIST_HEADING_S_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 24,\n fontWeight: 700,\n lineHeight: 32,\n letterSpacing: -0.48,\n },\n\n // Geist Heading Medium (28px)\n [typographyTypes.GEIST_HEADING_M_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 28,\n fontWeight: 700,\n lineHeight: 36,\n letterSpacing: -0.6,\n },\n\n // Geist Heading Large (32px)\n [typographyTypes.GEIST_HEADING_L_REGULAR]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 32,\n fontWeight: 400,\n lineHeight: 40,\n letterSpacing: -0.64,\n },\n [typographyTypes.GEIST_HEADING_L_MEDIUM]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 32,\n fontWeight: 500,\n lineHeight: 40,\n letterSpacing: -0.64,\n },\n [typographyTypes.GEIST_HEADING_L_SEMI_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 32,\n fontWeight: 600,\n lineHeight: 40,\n letterSpacing: -0.64,\n },\n [typographyTypes.GEIST_HEADING_L_BOLD]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 32,\n fontWeight: 700,\n lineHeight: 40,\n letterSpacing: -0.64,\n },\n\n // Geist Display Large (36px)\n [typographyTypes.GEIST_DISPLAY_L_MEDIUM]: {\n fontFamily: fontFamilies.GEIST,\n fontSize: 36,\n fontWeight: 500,\n lineHeight: 44,\n letterSpacing: -0.72,\n },\n\n // Crimson Pro Body Small (16px)\n [typographyTypes.CRIMSON_PRO_BODY_S_LIGHT]: {\n fontFamily: fontFamilies.CRIMSON_PRO,\n fontSize: 16,\n fontWeight: 300,\n lineHeight: 20,\n letterSpacing: -0.32,\n fontStyle: \"italic\",\n },\n\n // Crimson Pro Body Medium (18px)\n [typographyTypes.CRIMSON_PRO_BODY_M_LIGHT]: {\n fontFamily: fontFamilies.CRIMSON_PRO,\n fontSize: 18,\n fontWeight: 300,\n lineHeight: 28,\n letterSpacing: 0,\n fontStyle: \"italic\",\n },\n\n // Crimson Pro Heading Medium (24px)\n [typographyTypes.CRIMSON_PRO_HEADING_M_MEDIUM]: {\n fontFamily: fontFamilies.CRIMSON_PRO,\n fontSize: 24,\n fontWeight: 400,\n lineHeight: 32,\n letterSpacing: -0.48,\n fontStyle: \"italic\",\n },\n\n // Crimson Pro Display Extra Large (46px)\n [typographyTypes.CRIMSON_PRO_DISPLAY_XL_REGULAR]: {\n fontFamily: fontFamilies.CRIMSON_PRO,\n fontSize: 46,\n fontWeight: 400,\n lineHeight: 54,\n letterSpacing: -1.38,\n fontStyle: \"italic\",\n },\n};\n\nexport function typographyMixin(type: TypographyType): string {\n const style = typographyStyles[type];\n return [\n `font-family: \"${style.fontFamily}\", sans-serif`,\n `font-size: ${style.fontSize}px`,\n `font-weight: ${style.fontWeight}`,\n `line-height: ${style.lineHeight}px`,\n `letter-spacing: ${style.letterSpacing != null ? `${style.letterSpacing}px` : \"inherit\"}`,\n `font-style: ${style.fontStyle ?? \"normal\"}`,\n ].join(\";\\n \");\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-C77QMQNT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|