@deckai/deck-ui 0.0.12 → 0.0.13
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/README.md +127 -1
- package/dist/components/AboutCard.cjs +2 -2
- package/dist/components/AboutCard.cjs.map +1 -1
- package/dist/components/AboutCard.js +2 -2
- package/dist/components/AboutCard.js.map +1 -1
- package/dist/components/Breadcrumbs.cjs +1 -1
- package/dist/components/Breadcrumbs.cjs.map +1 -1
- package/dist/components/Breadcrumbs.js +1 -1
- package/dist/components/Breadcrumbs.js.map +1 -1
- package/dist/components/Combobox.cjs +1 -1
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.cts +7 -1
- package/dist/components/Combobox.d.ts +7 -1
- package/dist/components/Combobox.js +1 -1
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ContactItem.cjs +1 -1
- package/dist/components/ContactItem.cjs.map +1 -1
- package/dist/components/ContactItem.js +1 -1
- package/dist/components/ContactItem.js.map +1 -1
- package/dist/components/Icon.d.cts +1 -1
- package/dist/components/Icon.d.ts +1 -1
- package/dist/components/Input.cjs +1 -1
- package/dist/components/Input.cjs.map +1 -1
- package/dist/components/Input.d.cts +6 -2
- package/dist/components/Input.d.ts +6 -2
- package/dist/components/Input.js +1 -1
- package/dist/components/Input.js.map +1 -1
- package/dist/components/Link.cjs +1 -1
- package/dist/components/Link.cjs.map +1 -1
- package/dist/components/Link.d.cts +1 -1
- package/dist/components/Link.d.ts +1 -1
- package/dist/components/Link.js +1 -1
- package/dist/components/Link.js.map +1 -1
- package/dist/components/MultiSelectCombobox.cjs +2 -0
- package/dist/components/MultiSelectCombobox.cjs.map +1 -0
- package/dist/components/MultiSelectCombobox.d.cts +21 -0
- package/dist/components/MultiSelectCombobox.d.ts +21 -0
- package/dist/components/MultiSelectCombobox.js +2 -0
- package/dist/components/MultiSelectCombobox.js.map +1 -0
- package/dist/components/Navbar.cjs +2 -2
- package/dist/components/Navbar.cjs.map +1 -1
- package/dist/components/Navbar.d.cts +1 -1
- package/dist/components/Navbar.d.ts +1 -1
- package/dist/components/Navbar.js +2 -2
- package/dist/components/Navbar.js.map +1 -1
- package/dist/components/NavbarItem.d.cts +1 -1
- package/dist/components/NavbarItem.d.ts +1 -1
- package/dist/components/ProfileCard.cjs +2 -2
- package/dist/components/ProfileCard.cjs.map +1 -1
- package/dist/components/ProfileCard.js +2 -2
- package/dist/components/ProfileCard.js.map +1 -1
- package/dist/components/Sidebar.cjs +2 -0
- package/dist/components/Sidebar.cjs.map +1 -0
- package/dist/components/Sidebar.d.cts +37 -0
- package/dist/components/Sidebar.d.ts +37 -0
- package/dist/components/Sidebar.js +2 -0
- package/dist/components/Sidebar.js.map +1 -0
- package/dist/components/Tag.cjs +1 -1
- package/dist/components/Tag.cjs.map +1 -1
- package/dist/components/Tag.d.cts +2 -1
- package/dist/components/Tag.d.ts +2 -1
- package/dist/components/Tag.js +1 -1
- package/dist/components/Tag.js.map +1 -1
- package/dist/components/Text.d.cts +2 -2
- package/dist/components/Text.d.ts +2 -2
- package/dist/components/TextArea.cjs +2 -0
- package/dist/components/TextArea.cjs.map +1 -0
- package/dist/components/TextArea.d.cts +19 -0
- package/dist/components/TextArea.d.ts +19 -0
- package/dist/components/TextArea.js +2 -0
- package/dist/components/TextArea.js.map +1 -0
- package/dist/components/WorkCard.cjs +1 -1
- package/dist/components/WorkCard.cjs.map +1 -1
- package/dist/components/WorkCard.js +1 -1
- package/dist/components/WorkCard.js.map +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +78 -23
- package/dist/index.d.ts +78 -23
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/styles/styles.css +1 -1
- package/dist/{tailwind-BKauZ5Yx.d.cts → tailwind-CIZ10fKA.d.cts} +1 -0
- package/dist/{tailwind-BKauZ5Yx.d.ts → tailwind-CIZ10fKA.d.ts} +1 -0
- package/package.json +3 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/tailwind.ts","../src/components/Pressable.tsx","../src/components/Avatar.tsx","../src/utils/index.ts","../src/components/Icon.tsx","../src/components/Input.tsx","../src/components/Option.tsx","../src/components/Combobox.tsx","../src/components/Logo.tsx","../src/components/NavbarItem.tsx","../src/components/Navbar.tsx","../src/components/Text.tsx","../src/components/Link.tsx","../src/components/Tabs.tsx","../src/components/Tag.tsx","../src/components/WorkCard.tsx","../src/components/Button.tsx","../src/components/EditButton.tsx","../src/components/Illustration.tsx","../src/components/Breadcrumbs.tsx","../src/components/Tooltip.tsx","../src/components/SocialCard.tsx","../src/components/IconRenderer.tsx","../src/components/Switch.tsx","../src/components/Badge.tsx","../src/components/ProfileCard.tsx","../src/components/ContactItem.tsx","../src/components/Collapsible.tsx","../src/components/AboutCard.tsx","../../../node_modules/class-variance-authority/dist/index.mjs","../src/components/Spinner.tsx","../tailwind.config.ts"],"names":["generateSafelist","colors","typography","colorNames","utilities","colorName","shade","utility","family","sizes","size","breakpoints","typographyClasses","category","responsiveTypographyClasses","className","breakpoint","focusRingStyles","focusRingStylesCoerced","Pressable","children","type","disabled","props","React","BREAKPOINT_MAP","processSizes","sizeArray","mediaQueries","baseSize","valueStr","value","acc","query","Avatar","src","onClick","sizeStyles","content","cn","inputs","twMerge","clsx","COLOR_MAP","Icon","name","color","title","style","ref","IconComponent","IconMap","Input","end","iconName","O","Option","label","onChange","selected","Combobox","options","placeholder","open","setOpen","useState","inputValue","setInputValue","selectedOption","useMemo","option","filteredItems","handleOptionChange","useCallback","S","e","optionValue","index","Logo","NavbarItem","hasNotification","Navbar","searchOptions","onSearchChange","navbarItems","onLogoClick","onProfileClick","avatarImage","HEADING_ELEMENT_MAP","getElementFromVariant","variant","fontWeight","processVariants","variants","typographyClass","Text","as","weight","colorClasses","suggestedElement","baseVariant","Link","href","Tabs","items","defaultValue","H","item","Tag","pressableProps","WorkCard","socialIconName","tags","caption","playCount","backgroundImage","tag","filled","outlined","Button","Z","isLoading","EditButton","Illustration","profileIllustration","DefaultSeparator","Breadcrumbs","SeparatorComponent","onHomeClick","renderSeparator","isLastItem","Tooltip","side","align","delayDuration","I","b","SocialCard","icon","followers","engagement","IconRenderer","sanitizedSvg","svg","viewBox","Switch","L","description","K","stringToVariant","str","variantKeys","hash","char","selectedVariant","Badge","$","finalVariant","MAX_INTERESTS","MAX_BADGES","ProfileCard","profileImage","location","memberSince","interests","badges","isEditMode","onEditClick","randomId","useId","visibleInterests","visibleBadges","hasMoreInterests","hasMoreBadges","remainingInterests","remainingBadges","interest","idx","badge","ContactItem","linkProps","Collapsible","maxHeight","contentRef","useRef","contentHeight","setContentHeight","useLayoutEffect","resizeObserver","entries","entry","shouldShowTrigger","U","AboutCard","contactItems","contactProps","falsyToString","cx","cva","base","config","_config_compoundVariants","defaultVariants","getVariantClassNames","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","param","key","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","spinnerVariants","Spinner","R","customSize","styles","typeConfig","tailwindAnimate","tailwind_config_default"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Colors, Typography } from \"../types/tailwind\";\n\n// Generate safelist patterns for all color utilities so you can use any theme color variable in your code\nexport const generateSafelist = (colors: Colors, typography: Typography) => {\n const colorNames = Object.keys(colors) as (keyof Colors)[];\n const utilities = [\"bg\", \"text\", \"border\", \"ring\", \"divide\", \"outline\"];\n const variants = [\"hover:\", \"focus:\", \"active:\", \"disabled:\"];\n\n const safelist: string[] = [];\n\n colorNames.forEach((colorName) => {\n if (typeof colors[colorName] === \"object\") {\n // Handle nested color objects (with number keys)\n Object.keys(colors[colorName]).forEach((shade) => {\n utilities.forEach((utility) => {\n // Base utility\n safelist.push(`${utility}-${colorName}-${shade}`);\n\n // Variant utilities\n variants.forEach((variant) => {\n safelist.push(`${variant}${utility}-${colorName}-${shade}`);\n });\n });\n });\n } else {\n // Handle direct color values\n utilities.forEach((utility) => {\n safelist.push(`${utility}-${colorName}`);\n\n variants.forEach((variant) => {\n safelist.push(`${variant}${utility}-${colorName}`);\n });\n });\n }\n });\n\n // Generate typography classes\n Object.entries(typography).forEach(([family, sizes]) => {\n Object.keys(sizes).forEach((size) => {\n // Base typography classes\n safelist.push(`text-${family}-${size}`);\n\n // Add variants\n variants.forEach((variant) => {\n safelist.push(`${variant}text-${family}-${size}`);\n });\n });\n });\n\n const breakpoints = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"];\n const typographyClasses = Object.entries(typography).flatMap(\n ([category, sizes]) =>\n Object.keys(sizes).map((size) => `text-${category}-${size}`)\n );\n\n // Generate responsive variants\n const responsiveTypographyClasses = typographyClasses.flatMap((className) =>\n breakpoints.map((breakpoint) => `${breakpoint}:${className}`)\n );\n\n return [\n ...typographyClasses,\n ...responsiveTypographyClasses\n // ... rest of your safelist\n ];\n};\n\nexport const focusRingStyles =\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\";\n\nexport const focusRingStylesCoerced = \"ring-2 ring-ring ring-offset-2\";\n","import React, { ButtonHTMLAttributes } from \"react\";\nimport { focusRingStyles } from \"../utils/tailwind\";\n\nexport type PressableProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const Pressable: React.FC<PressableProps> = ({\n children,\n type = \"button\",\n className,\n disabled,\n ...props\n}) => (\n <button\n // eslint-disable-next-line react/butt on-has-type\n type={type}\n disabled={disabled}\n className={`appearance-none hover:opacity-80 transition-all active:scale-95 ${focusRingStyles} ${className} ${disabled ? \"opacity-50 cursor-not-allowed\" : \"\"}`}\n {...props}\n >\n {children}\n </button>\n);\n","import React from \"react\";\nimport { Pressable } from \"./Pressable\";\n\ntype Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\ntype ResponsiveSize = number | `${Breakpoint}:${number}`;\n\nconst BREAKPOINT_MAP: Record<Breakpoint, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\"\n};\n\nexport type AvatarProps = {\n src?: string;\n size?: ResponsiveSize | ResponsiveSize[];\n} & Pick<React.ComponentProps<typeof Pressable>, \"onClick\">;\n\nconst processSizes = (\n sizes: ResponsiveSize | ResponsiveSize[] | undefined\n): React.CSSProperties => {\n if (!sizes) return { width: \"48px\", height: \"48px\" };\n\n const sizeArray = Array.isArray(sizes) ? sizes : [sizes];\n const mediaQueries: Record<string, string> = {};\n let baseSize: string | undefined;\n\n // Process each size\n sizeArray.forEach((size) => {\n if (typeof size === \"number\") {\n baseSize = `${size}px`;\n } else {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n mediaQueries[`@media (minWidth: ${BREAKPOINT_MAP[breakpoint]})`] =\n `${value}px`;\n }\n });\n\n // Create the style object with the correct structure\n return {\n width: baseSize || \"48px\",\n height: baseSize || \"48px\",\n ...Object.entries(mediaQueries).reduce(\n (acc, [query, size]) => ({\n ...acc,\n [query]: {\n width: size,\n height: size\n }\n }),\n {}\n )\n };\n};\n\nexport const Avatar = ({ src, size = 48, onClick, ...props }: AvatarProps) => {\n const sizeStyles = processSizes(size);\n\n const content = src ? (\n <img\n src={src}\n alt=\"avatar\"\n className=\"rounded-full\"\n style={sizeStyles}\n {...props}\n />\n ) : (\n <div style={sizeStyles} className=\"rounded-full bg-gray-200\" />\n );\n\n return onClick ? <Pressable onClick={onClick}>{content}</Pressable> : content;\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const noopFn = () => {};\n","import React, { SVGProps } from \"react\";\nimport { IconName, IconMap } from \"@deckai/icons\";\nimport { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\n\ntype Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\ntype ResponsiveSize = number | `${Breakpoint}:${number}`;\n\nexport type IconProps = {\n name: IconName;\n /** @default 24 */\n size?: ResponsiveSize | ResponsiveSize[];\n /** @default primary */\n color?: IconColors;\n title?: string;\n className?: string;\n style?: React.CSSProperties;\n} & Omit<SVGProps<SVGSVGElement>, \"aria-hidden\" | \"aria-label\">;\n\nconst COLOR_MAP: Record<IconColors, string> = {\n primary: \"#080808\",\n secondary: \"#666666\",\n white: \"#ffffff\",\n primaryBlue: \"#089CCB\"\n};\n\nconst BREAKPOINT_MAP: Record<Breakpoint, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\"\n};\n\nconst processSizes = (\n sizes: ResponsiveSize | ResponsiveSize[] | undefined\n): React.CSSProperties => {\n if (!sizes) return { width: \"24px\", height: \"24px\" };\n\n const sizeArray = Array.isArray(sizes) ? sizes : [sizes];\n const mediaQueries: Record<string, string> = {};\n let baseSize: string | undefined;\n\n // Process each size\n sizeArray.forEach((size) => {\n if (typeof size === \"number\") {\n baseSize = `${size}px`;\n } else {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n mediaQueries[`@media (min-width: ${BREAKPOINT_MAP[breakpoint]})`] =\n `${value}px`;\n }\n });\n\n // Create the style object with the correct structure\n return {\n width: baseSize || \"24px\",\n height: baseSize || \"24px\",\n ...Object.entries(mediaQueries).reduce(\n (acc, [query, size]) => ({\n ...acc,\n [query]: {\n width: size,\n height: size\n }\n }),\n {}\n )\n };\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n name,\n size = 24,\n color = \"primary\",\n title,\n className,\n style = {},\n ...props\n },\n ref\n ) => {\n const IconComponent = IconMap[name];\n const sizeStyles = processSizes(size);\n\n return (\n <div\n className={cn(\"flex justify-center items-center\", className)}\n style={{\n ...sizeStyles,\n [\"--icon-stroke\" as string]: COLOR_MAP[color],\n ...style\n }}\n >\n <IconComponent\n ref={ref}\n aria-hidden={!title}\n aria-label={title}\n stroke={name.includes(\"filled\") ? undefined : COLOR_MAP[color]}\n {...props}\n />\n </div>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { IconName } from \"@deckai/icons\";\nimport { Icon, IconProps } from \"./Icon\";\n\nexport type InputProps = {\n className?: string;\n end?: React.ReactNode;\n /** renders an icon in the end slot */\n iconName?: IconName;\n} & React.InputHTMLAttributes<HTMLInputElement> &\n Pick<IconProps, \"color\" | \"size\" | \"title\">;\n\nexport const Input = ({\n className,\n end,\n iconName,\n color,\n size,\n title,\n ...props\n}: InputProps) => (\n <div className=\"relative\">\n <input\n className={cn(\n `font-sans lg:text-body-default text-xs flex w-full rounded-lg border border-secondary-50 bg-background-0 px-3 md:py-3 py-2 text-secondary ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-secondary text-text-primary ${focusRingStyles} disabled:cursor-not-allowed disabled:opacity-50 md:text-md`,\n end && \"pr-10\",\n className\n )}\n {...props}\n />\n {end && (\n <div className=\"absolute inset-y-0 right-0 flex items-center pr-3\">\n {iconName ? (\n <Icon name={iconName} color={color} size={size} title={title} />\n ) : (\n end\n )}\n </div>\n )}\n </div>\n);\n","import React from \"react\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\n\nexport type OptionProps = {\n label: string;\n value: string;\n onChange?: (value: string) => void;\n selected?: boolean;\n};\n\nexport const Option = ({ value, label, onChange, selected }: OptionProps) => (\n <button\n type=\"button\"\n className={cn(\n \"relative w-full h-full text-left px-2 py-1.5 text-sm cursor-pointer hover:bg-gray-100 rounded\",\n selected && \"bg-gray-100\"\n )}\n onClick={() => {\n onChange?.(value);\n }}\n >\n {label}\n </button>\n);\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { Input } from \"./Input\";\nimport { OptionProps, Option } from \"./Option\";\nimport { focusRingStylesCoerced } from \"../utils/tailwind\";\n\nexport type ComboboxProps = {\n options: OptionProps[];\n placeholder?: string;\n value?: string;\n onChange: (value: string) => void;\n end?: React.ReactNode;\n className?: string;\n};\n\nexport const Combobox = ({\n options,\n placeholder = \"Select an item...\",\n value,\n onChange,\n end,\n className\n}: ComboboxProps) => {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState<string | undefined>(value);\n\n const selectedOption: OptionProps | undefined = useMemo(\n () => options.find((option) => option.value === inputValue),\n [inputValue, options]\n );\n\n const filteredItems = options.filter((option) =>\n inputValue\n ? option.label.toLowerCase().includes(inputValue.toLowerCase())\n : options\n );\n\n const handleOptionChange = useCallback(\n (option: string) => {\n onChange(option);\n setOpen(false);\n setInputValue(selectedOption?.label);\n },\n [onChange, selectedOption?.label]\n );\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div\n className={`relative w-full font-sans text-text-secondary ${className}`}\n >\n <Popover.Trigger asChild>\n <div className=\"flex\">\n <div className=\"relative flex-1\">\n <Input\n placeholder={placeholder}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n end={end}\n className={`flex-1 ${open && focusRingStylesCoerced}`}\n />\n </div>\n </div>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n className=\"w-[--radix-popover-trigger-width] p-1 bg-white rounded-md shadow-lg border mt-1 z-20\"\n sideOffset={5}\n >\n <div className=\"max-h-60 overflow-auto flex flex-col items-start\">\n {filteredItems.length > 0 ? (\n filteredItems.map(({ label, value: optionValue }, index) => (\n <Option\n onChange={handleOptionChange}\n value={optionValue}\n key={index}\n label={label}\n />\n ))\n ) : (\n <div className=\"px-2 py-1.5 text-sm text-gray-500\">\n No results found\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type LogoProps = {\n className?: string;\n};\n\nexport const Logo = ({ className }: LogoProps) => (\n <div className={cn(\"lg:w-[76px] lg:h-[25px] w-[58px] h-[19px]\", className)}>\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 76 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.8 15.584C0.8 13.9413 1.12 12.4693 1.76 11.168C2.4 9.84533 3.27467 8.8 4.384 8.032C5.49333 7.264 6.77333 6.88 8.224 6.88C9.39733 6.88 10.464 7.168 11.424 7.744C12.384 8.29867 13.1093 9.03467 13.6 9.952V0.639999H18.72V18.304C18.72 18.816 18.8053 19.1787 18.976 19.392C19.1467 19.584 19.424 19.7013 19.808 19.744V24C18.912 24.1707 18.1867 24.256 17.632 24.256C16.7573 24.256 16.0427 24.064 15.488 23.68C14.9547 23.296 14.624 22.7627 14.496 22.08L14.4 21.216C13.8027 22.2613 12.992 23.04 11.968 23.552C10.944 24.064 9.86667 24.32 8.736 24.32C7.584 24.32 6.51733 24.1067 5.536 23.68C4.576 23.232 3.73333 22.6133 3.008 21.824C2.304 21.0347 1.76 20.1067 1.376 19.04C0.992 17.9733 0.8 16.8213 0.8 15.584ZM13.632 17.664V14.144C13.4187 13.568 13.1093 13.0667 12.704 12.64C12.32 12.2133 11.872 11.872 11.36 11.616C10.8693 11.36 10.368 11.232 9.856 11.232C9.30133 11.232 8.78933 11.3493 8.32 11.584C7.872 11.8187 7.47733 12.1493 7.136 12.576C6.79467 12.9813 6.528 13.4507 6.336 13.984C6.16533 14.5173 6.08 15.0827 6.08 15.68C6.08 16.2987 6.176 16.8747 6.368 17.408C6.58133 17.92 6.86933 18.3787 7.232 18.784C7.59467 19.168 8.02133 19.4667 8.512 19.68C9.00267 19.8933 9.536 20 10.112 20C10.4747 20 10.8267 19.9467 11.168 19.84C11.5093 19.712 11.8293 19.552 12.128 19.36C12.448 19.168 12.736 18.9227 12.992 18.624C13.248 18.3253 13.4613 18.0053 13.632 17.664ZM30.0895 24.32C28.6602 24.32 27.3908 24.096 26.2815 23.648C25.1722 23.1787 24.2228 22.5493 23.4335 21.76C22.6655 20.9707 22.0788 20.064 21.6735 19.04C21.2682 17.9947 21.0655 16.9067 21.0655 15.776C21.0655 14.1547 21.4175 12.6827 22.1215 11.36C22.8468 10.016 23.8815 8.93867 25.2255 8.128C26.5695 7.296 28.1908 6.88 30.0895 6.88C31.9882 6.88 33.5988 7.28533 34.9215 8.096C36.2655 8.90667 37.2895 9.97333 37.9935 11.296C38.6975 12.5973 39.0495 14.016 39.0495 15.552C39.0495 15.8507 39.0282 16.1493 38.9855 16.448C38.9642 16.7253 38.9428 16.9707 38.9215 17.184H26.5055C26.5695 17.9307 26.7722 18.56 27.1135 19.072C27.4762 19.584 27.9348 19.9787 28.4895 20.256C29.0442 20.512 29.6308 20.64 30.2495 20.64C31.0175 20.64 31.7322 20.4587 32.3935 20.096C33.0762 19.7333 33.5455 19.2427 33.8015 18.624L38.1535 19.84C37.7268 20.7147 37.1188 21.4933 36.3295 22.176C35.5615 22.8373 34.6442 23.36 33.5775 23.744C32.5322 24.128 31.3695 24.32 30.0895 24.32ZM26.3775 14.048H33.6735C33.5882 13.344 33.3855 12.736 33.0655 12.224C32.7455 11.6907 32.3188 11.2853 31.7855 11.008C31.2522 10.7093 30.6655 10.56 30.0255 10.56C29.3642 10.56 28.7668 10.7093 28.2335 11.008C27.7215 11.2853 27.3055 11.6907 26.9855 12.224C26.6655 12.736 26.4628 13.344 26.3775 14.048ZM48.762 24.32C47.3327 24.32 46.0633 24.0853 44.954 23.616C43.8447 23.1467 42.8953 22.5067 42.106 21.696C41.338 20.8853 40.7513 19.9573 40.346 18.912C39.9407 17.8667 39.738 16.7573 39.738 15.584C39.738 14.048 40.09 12.6187 40.794 11.296C41.5193 9.97333 42.554 8.90667 43.898 8.096C45.242 7.28533 46.8633 6.88 48.762 6.88C50.682 6.88 52.3033 7.296 53.626 8.128C54.97 8.93867 55.9727 10.0053 56.634 11.328L51.642 12.832C51.322 12.32 50.906 11.9253 50.394 11.648C49.9033 11.3707 49.3487 11.232 48.73 11.232C48.026 11.232 47.386 11.4133 46.81 11.776C46.2553 12.1387 45.8073 12.64 45.466 13.28C45.146 13.92 44.986 14.688 44.986 15.584C44.986 16.4587 45.1567 17.2267 45.498 17.888C45.8393 18.5493 46.2873 19.072 46.842 19.456C47.3967 19.8187 48.026 20 48.73 20C49.1567 20 49.5513 19.936 49.914 19.808C50.298 19.6587 50.6393 19.456 50.938 19.2C51.258 18.944 51.5033 18.656 51.674 18.336L56.666 19.872C56.2607 20.7253 55.674 21.4933 54.906 22.176C54.1593 22.8373 53.274 23.36 52.25 23.744C51.226 24.128 50.0633 24.32 48.762 24.32ZM69.636 24L65.252 17.28L63.46 19.104V24H58.34V0.639999H63.46V14.144L69.156 7.2H74.564L68.516 14.432L75.076 24H69.636Z\"\n fill=\"#080808\"\n />\n </svg>\n </div>\n);\n","import React from \"react\";\nimport { IconName } from \"@deckai/icons\";\nimport { Icon, IconProps } from \"./Icon\";\nimport { Pressable, PressableProps } from \"./Pressable\";\n\nexport type NavbarItemProps = {\n iconName: IconName;\n hasNotification?: boolean;\n} & Pick<IconProps, \"color\" | \"title\"> &\n PressableProps;\n\nexport const NavbarItem = ({\n iconName,\n hasNotification,\n color,\n title,\n ...props\n}: NavbarItemProps) => {\n console.log({ hasNotification });\n return (\n <Pressable className=\"relative lg:px-7 md:px-5 py-3\" {...props}>\n <Icon name={iconName} color={color} title={title} />\n {hasNotification && (\n <div className=\"w-3 h-3 bg-red-500 rounded-full absolute top-3 right-5\" />\n )}\n </Pressable>\n );\n};\n","import React from \"react\";\nimport { Avatar } from \"./Avatar\";\nimport { Combobox } from \"./Combobox\";\nimport { Icon } from \"./Icon\";\nimport { Logo } from \"./Logo\";\nimport { Pressable } from \"./Pressable\";\nimport { OptionProps } from \"./Option\";\nimport { NavbarItem, NavbarItemProps } from \"./NavbarItem\";\n\nexport type NavbarProps = {\n searchOptions: OptionProps[];\n onSearchChange: (value: string) => void;\n navbarItems: NavbarItemProps[];\n onLogoClick?: () => void;\n onProfileClick?: () => void;\n avatarImage: string;\n};\n\nexport const Navbar = ({\n searchOptions,\n onSearchChange,\n navbarItems,\n onLogoClick,\n onProfileClick,\n avatarImage\n}: NavbarProps) => (\n <div className=\"flex py-6 lg:px-10 md:px-5 px-6 justify-between md:gap-6 gap-3 sm:relative sticky top-0\">\n <div className=\"flex flex-1 md:gap-6 gap-3 items-center\">\n <Pressable onClick={onLogoClick} title=\"Deck AI\">\n <Logo />\n </Pressable>\n <Combobox\n options={searchOptions}\n placeholder=\"Search for a creator, type of content, or platform...\"\n end={<Icon name=\"search-normal\" size={[\"lg:24\", 18]} />}\n onChange={onSearchChange}\n className=\"flex-1 max-w-lg\"\n />\n </div>\n <div className=\"flex gap-4\">\n <div className=\"md:flex hidden gap-2 border-b-2 border-stroke items-center\">\n {navbarItems.map(({ iconName, title, onClick }) => (\n <NavbarItem\n key={title}\n iconName={iconName}\n title={title}\n onClick={onClick}\n />\n ))}\n </div>\n <div className=\"flex\">\n <Avatar\n onClick={onProfileClick}\n src={avatarImage}\n size={[\"sm:48\", 40]}\n />\n </div>\n </div>\n </div>\n);\n","import React from \"react\";\nimport {\n Colors,\n TextColorVariant,\n PrimaryShades,\n SecondaryShades,\n TertiaryShades,\n Typography\n} from \"../types/tailwind\";\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"strong\"\n | \"em\"\n | \"blockquote\"\n | \"pre\"\n | \"code\"\n | \"small\"\n | \"label\"\n | \"a\";\n\n// HTML element mapping type\ntype HTMLElementByTag = {\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n h1: HTMLHeadingElement;\n h2: HTMLHeadingElement;\n h3: HTMLHeadingElement;\n h4: HTMLHeadingElement;\n h5: HTMLHeadingElement;\n h6: HTMLHeadingElement;\n strong: HTMLElement;\n em: HTMLElement;\n blockquote: HTMLQuoteElement;\n pre: HTMLPreElement;\n code: HTMLElement;\n small: HTMLElement;\n label: HTMLLabelElement;\n a: HTMLAnchorElement;\n};\n\n// HTML props mapping type\ntype HTMLPropsMap = {\n p: React.HTMLAttributes<HTMLParagraphElement>;\n span: React.HTMLAttributes<HTMLSpanElement>;\n h1: React.HTMLAttributes<HTMLHeadingElement>;\n h2: React.HTMLAttributes<HTMLHeadingElement>;\n h3: React.HTMLAttributes<HTMLHeadingElement>;\n h4: React.HTMLAttributes<HTMLHeadingElement>;\n h5: React.HTMLAttributes<HTMLHeadingElement>;\n h6: React.HTMLAttributes<HTMLHeadingElement>;\n strong: React.HTMLAttributes<HTMLElement>;\n em: React.HTMLAttributes<HTMLElement>;\n blockquote: React.HTMLAttributes<HTMLQuoteElement>;\n pre: React.HTMLAttributes<HTMLPreElement>;\n code: React.HTMLAttributes<HTMLElement>;\n small: React.HTMLAttributes<HTMLElement>;\n label: React.LabelHTMLAttributes<HTMLLabelElement>;\n a: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\">;\n};\n\ntype ColorCategory = keyof Omit<Colors, \"stroke\" | \"background\">;\ntype ColorValue<T extends ColorCategory> = T extends \"text\"\n ? TextColorVariant\n : T extends \"primary\"\n ? keyof PrimaryShades\n : T extends \"secondary\"\n ? keyof SecondaryShades\n : T extends \"tertiary\"\n ? keyof TertiaryShades\n : never;\n\ntype ColorKey = {\n [T in ColorCategory]: `${T}-${ColorValue<T>}`;\n}[ColorCategory];\n\ntype TypographyCategory = keyof Typography;\ntype TypographyValue<T extends TypographyCategory> = Extract<\n keyof Typography[T],\n string | number | bigint | boolean | null | undefined\n>;\ntype TypographyKey = {\n [T in TypographyCategory]: `${T}-${TypographyValue<T>}`;\n}[TypographyCategory];\n\nconst HEADING_ELEMENT_MAP: Record<string, TextElement> = {\n xl: \"h1\",\n lg: \"h1\",\n md: \"h2\",\n sm: \"h3\",\n xs: \"h4\"\n};\n\nconst getElementFromVariant = (variant: TypographyKey): TextElement => {\n const [category, size] = variant.split(\"-\");\n\n if (category === \"heading\") {\n return HEADING_ELEMENT_MAP[size] || \"p\";\n }\n\n if (category === \"label\") {\n return \"label\";\n }\n\n return \"p\";\n};\n\ntype Weight = \"light\" | \"regular\" | \"semibold\" | \"bold\";\n\nconst fontWeight: Record<Weight, string> = {\n light: \"font-light\",\n regular: \"font-regular\",\n semibold: \"font-semibold\",\n bold: \"font-bold\"\n};\n\n// Add breakpoint types\ntype Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\ntype ResponsiveVariant = TypographyKey | `${Breakpoint}:${TypographyKey}`;\n\n// Update TextProps to use ResponsiveVariant\nexport type TextProps<T extends TextElement = \"p\"> = {\n variant?: ResponsiveVariant | ResponsiveVariant[];\n color?: ColorKey | \"inherit\";\n as?: T;\n className?: string;\n children: React.ReactNode;\n weight?: Weight;\n} & HTMLPropsMap[T];\n\n// Add helper function to process variants\nconst processVariants = (\n variants: ResponsiveVariant | ResponsiveVariant[] | undefined\n): string => {\n if (!variants) return \"text-body-default\";\n\n const variantArray = Array.isArray(variants) ? variants : [variants];\n\n return variantArray\n .map((variant) => {\n if (variant.includes(\":\")) {\n const [breakpoint, typographyClass] = variant.split(\":\");\n return `${breakpoint}:text-${typographyClass}`;\n }\n return `text-${variant}`;\n })\n .join(\" \");\n};\n\nexport const Text = React.forwardRef(\n <T extends TextElement = \"p\">(\n {\n variant = \"body-default\",\n color = \"text-primary\",\n as,\n className,\n children,\n weight,\n ...props\n }: TextProps<T>,\n ref: React.ForwardedRef<HTMLElementByTag[T]>\n ) => {\n // Process typography classes with breakpoints\n const typographyClasses = processVariants(variant);\n\n // Get color styles\n const colorClasses =\n color && color === \"inherit\" ? \"inherit\" : color ? `text-${color}` : \"\";\n\n const suggestedElement = React.useMemo(() => {\n const baseVariant =\n typeof variant === \"string\"\n ? variant.split(\":\").pop()!\n : Array.isArray(variant)\n ? variant[0].split(\":\").pop()!\n : \"body-default\";\n return getElementFromVariant(baseVariant as TypographyKey);\n }, [variant]);\n\n const Component = (as || suggestedElement) as T;\n\n return (\n // @ts-expect-error TODO: figure this out\n <Component\n ref={ref}\n className={`font-sans antialiased ${typographyClasses} ${colorClasses} ${\n weight ? `!${fontWeight[weight]}` : \"\"\n } ${className ?? \"\"}`}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nText.displayName = \"Text\";\n","import React from \"react\";\nimport { Text, TextProps } from \"./Text\";\nimport { cn } from \"../utils\";\nimport { focusRingStyles } from \"../utils/tailwind\";\n\nexport type LinkProps = {\n href: string;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n} & Pick<TextProps, \"variant\" | \"color\"> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const Link = ({\n children,\n color = \"text-primary\",\n variant = \"body-default-semibold\",\n href,\n className,\n ...props\n}: LinkProps) => (\n <Text variant={variant} color={color}>\n <a\n href={href}\n className={cn(\n \"hover:opacity-80 transition-all active:scale-95\",\n focusRingStyles,\n className\n )}\n {...props}\n >\n {children}\n </a>\n </Text>\n);\n","import React from \"react\";\nimport * as RadixTabs from \"@radix-ui/react-tabs\";\nimport { Text } from \"./Text\";\n\nexport type TabItem = {\n value: string;\n label: string;\n content: React.ReactNode;\n};\n\nexport type TabsProps = {\n items: TabItem[];\n defaultValue?: string;\n className?: string;\n onChange?: (value: string) => void;\n};\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n ({ items, defaultValue, className = \"\", onChange }, ref) => {\n return (\n <RadixTabs.Root\n defaultValue={defaultValue || items[0]?.value}\n onValueChange={onChange}\n className={className}\n >\n <RadixTabs.List\n ref={ref}\n className=\"flex gap-8 border-b border-stroke mb-8\"\n >\n {items.map((item) => (\n <RadixTabs.Trigger\n key={item.value}\n value={item.value}\n className=\"group pb-4 relative flex-1\"\n >\n <Text\n variant={[\"sm:body-lg-semibold\", \"body-default-semibold\"]}\n color=\"text-secondary\"\n className=\"group-data-[state=active]:text-text-primary transition-colors sm:text-inherit\"\n >\n {item.label}\n </Text>\n <div className=\"absolute bottom-0 left-0 right-0 h-1 bg-primary-100 scale-x-0 group-data-[state=active]:scale-x-100 transition-transform\" />\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n\n {items.map((item) => (\n <RadixTabs.Content key={item.value} value={item.value}>\n {item.content}\n </RadixTabs.Content>\n ))}\n </RadixTabs.Root>\n );\n }\n);\n\nTabs.displayName = \"Tabs\";\n","import React, { HTMLAttributes } from \"react\";\nimport { Text } from \"./Text\";\nimport { Pressable, PressableProps } from \"./Pressable\";\nimport { cn } from \"../utils\";\n\nexport type TagProps = {\n children: React.ReactNode;\n padded?: boolean;\n color?: \"primary\" | \"text\";\n} & HTMLAttributes<HTMLDivElement> &\n PressableProps;\n\nexport const Tag = ({\n children,\n color = \"primary\",\n className,\n ...pressableProps\n}: TagProps) => (\n <Pressable\n className={cn(\n \"hover:bg-primary-100 rounded bg-secondary-400 px-2 py-1 sm:px-3 sm:py-1.5 h-min hover:text-white\",\n color === \"primary\" ? \"text-primary-100\" : \"text-primary\",\n className\n )}\n {...pressableProps}\n >\n {typeof children === \"string\" ? (\n <Text\n color=\"inherit\"\n variant={[\"md:body-default-medium\", \"body-xxs-medium\"]}\n className=\"truncate\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </Pressable>\n);\n","import React from \"react\";\nimport { Icon } from \"./Icon\";\nimport { Tag } from \"./Tag\";\nimport { Text } from \"./Text\";\n\nexport type WorkCardProps = {\n socialIconName: \"instagram-filled\" | \"tiktok-filled\" | \"youtube-filled\";\n tags: string[];\n caption: string;\n /** play count should already be formatted with k or m */\n playCount: string;\n backgroundImage: string;\n};\n\nexport const WorkCard = ({\n socialIconName,\n tags,\n caption,\n playCount,\n backgroundImage\n}: WorkCardProps) => {\n return (\n <div\n className={`flex flex-col justify-between p-4 sm:w-[292px] sm:h-[403px] w-[240px] h-[350px] rounded-2xl relative overflow-hidden`}\n style={{\n backgroundColor: \"#e7e7e7\",\n backgroundImage: `url(${backgroundImage})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\"\n }}\n >\n <div className=\"flex justify-between items-center\">\n <div className=\"flex items-center justify-center bg-overlay h-10 w-10 rounded-full\">\n <Icon name={socialIconName} size={20} color=\"white\" />\n </div>\n <div className=\"flex gap-2 items-center\">\n {tags.map((tag, index) => (\n <Tag key={index} color=\"text\">\n {tag}\n </Tag>\n ))}\n </div>\n </div>\n <div className=\"flex flex-col gap-1 p-2 rounded-lg bg-overlay\">\n <Text variant=\"body-default-medium\" className=\"text-white\">\n {caption}\n </Text>\n <div className=\"flex gap-2\">\n <Icon name=\"play\" size={16} color=\"white\" />\n <Text variant=\"body-xs-medium\" className=\"text-white\">\n {playCount}\n </Text>\n </div>\n </div>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { Text } from \"./Text\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { cn } from \"../utils\";\n\nexport type ButtonProps = {\n /** @default filled */\n variant?: \"filled\" | \"outlined\";\n /** @default primary */\n color?: \"black\" | \"accent\" | \"secondary\";\n isLoading?: boolean;\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n start?: React.ReactNode;\n end?: React.ReactNode;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const filled = {\n black: \"bg-text-primary text-white\",\n // fade it slightly\n accent: \"bg-primary-100 text-white\",\n secondary: \"bg-secondary-100 text-secondary\"\n};\n\nexport const outlined = {\n black: \"border border-text-primary text-text-primary\",\n accent: \"border border-primary-100 text-primary-100\",\n secondary: \"border border-text-secondary text-secondary\"\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"filled\",\n color = \"black\",\n isLoading = false,\n children,\n disabled,\n ...props\n },\n ref\n ) => (\n <button\n ref={ref}\n className={cn(\n `\n sm:px-7 px-4\n py-2\n inline-flex items-center justify-center\n rounded-lg \n transition-colors duration-200\n disabled:opacity-50 disabled:pointer-events-none\n hover:opacity-80 active:scale-95 \n truncate`,\n focusRingStyles,\n variant === \"filled\" ? filled[color] : outlined[color],\n className\n )}\n disabled={disabled || isLoading}\n type=\"button\"\n {...props}\n >\n {typeof children === \"string\" ? (\n <Text\n variant={[\"sm:body-default-bold\", \"body-xxs-semibold\"]}\n color=\"inherit\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </button>\n )\n);\n\nButton.displayName = \"Button\";\n","import React from \"react\";\nimport { cn } from \"../utils\";\nimport { outlined } from \"./Button\";\nimport { Icon } from \"./Icon\";\nimport { Pressable } from \"./Pressable\";\n\nexport type EditButtonProps = {\n className?: string;\n onClick?: () => void;\n};\n\nexport const EditButton = ({ className, onClick }: EditButtonProps) => {\n return (\n <Pressable\n className={cn(\n \"absolute lg:top-10 md:top-8 top-4 lg:right-10 md:right-8 right-4 lg:px-2 lg:py-2 px-1 py-1 rounded-lg\",\n outlined.black,\n className\n )}\n onClick={onClick}\n >\n <Icon color=\"primary\" name=\"edit-2\" />\n </Pressable>\n );\n};\n\nEditButton.displayName = \"EditButton\";\n","import React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type IllustrationProps = {\n className?: string;\n /** svg string */\n src?: string;\n};\n\nexport const Illustration = ({\n className,\n src = profileIllustration\n}: IllustrationProps) => (\n <div\n className={cn(\n \"lg:w-[150px] lg:h-[150px] md:w-[100px] md:h-[100px] w-[150px] h-[150px]\",\n className\n )}\n >\n {src}\n </div>\n);\n\nconst profileIllustration = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"150\" viewBox=\"0 0 150 150\" fill=\"none\">\n <path d=\"M13.5135 116.732C13.994 107.975 20.208 100.58 28.605 98.665C36.5925 96.8435 44.9885 100.338 49.436 107.38C50.9125 102.507 53.3995 99.942 54.9625 98.665C62.411 92.579 75.7885 93.725 87.6965 102.279C88.5765 101.658 93.658 98.202 100.45 99.5155C107.749 100.928 111.217 106.726 111.715 107.592C118.282 105.741 124.23 107.743 126.169 111.631C126.534 112.362 127.288 114.224 126.594 117.157C88.901 117.015 51.2075 116.873 13.5135 116.732Z\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M25.417 114.963C25.417 114.963 9.04999 111.569 12.026 88.432C27.6845 94.2725 29.456 114.963 29.456 114.963\" fill=\"white\"/>\n <path d=\"M25.417 114.963C25.417 114.963 9.04999 111.569 12.026 88.432C27.6845 94.2725 29.456 114.963 29.456 114.963\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M22.866 82.6535C22.639 82.484 19.1815 110.219 29.668 115.601L33.3525 116.094C33.3525 116.094 33.7775 90.801 22.866 82.6535Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M22.866 82.6536C22.866 82.6536 28.109 112.977 31.7225 115.173\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M41.9965 92.9969C41.9965 92.9969 30.4475 98.033 31.156 114.963C35.478 116.093 37.2495 116.093 37.2495 116.093C37.2495 116.093 45.8225 102.774 41.9965 92.9969Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M41.9965 92.9969C41.9965 92.9969 37.6745 109.717 33.636 115.172\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M58.3101 88.432H83.0836V114.859H58.3101V88.432Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M55.5341 88.432H80.3076V114.859H55.5341V88.432Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M146.174 114.869H5.88503C5.88503 114.869 -8.59247 126.721 39.233 124.383C50.711 133.522 111.929 138.181 114.267 122.355C122.769 126.083 145.985 128.736 146.174 114.869ZM129.371 103.539C129.371 103.539 130.965 107.645 132.086 106.998C133.207 106.351 139.748 102.146 139.748 102.146C139.748 102.146 139.17 100.604 137.717 100.561C136.263 100.517 131.804 101.002 131.804 101.002C131.804 101.002 129.737 102.197 129.371 103.539Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M130.391 100.469C130.412 100.689 130.303 100.909 130.237 101.041C129.967 101.742 129.55 102.443 128.972 102.954L129.458 103.22C130.287 102.861 130.896 102.151 131.488 101.414L130.391 100.469Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M130.237 101.041C130.303 100.909 130.412 100.689 130.391 100.469L129.229 99.468L126.571 101.641L128.972 102.953C129.55 102.443 129.967 101.742 130.237 101.041Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M90.3895 118.016C90.3895 118.016 89.8095 122.382 91.1035 122.355C92.3975 122.328 100.155 121.792 100.155 121.792C100.155 121.792 100.39 120.162 99.138 119.423C97.885 118.685 93.743 116.964 93.743 116.964C93.743 116.964 91.3565 117.016 90.3895 118.016Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M89.5551 115.6L90.7096 118.019C91.6426 117.746 92.7896 117.84 93.6601 117.469L93.1456 114.859C92.0151 115.398 90.8306 115.788 89.5551 115.6Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M93.1454 114.859L92.7744 112.976L88.8774 114.181L89.5549 115.6C90.8304 115.787 92.0149 115.398 93.1454 114.859Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M81.013 44.033C81.013 44.033 93.436 65.437 94.853 69.9715L89.716 70.9635C89.716 70.9635 84.8995 64.254 83.4455 60.5135C80.4185 52.727 79.5235 44.3835 81.013 44.033Z\" fill=\"#089CCB\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M81.17 44.2764C76.2185 36.4604 71.306 41.2549 70.2905 42.7654C69.275 44.2764 61.233 69.1724 65.059 72.3349C68.885 75.4974 87.1295 70.9864 87.1295 70.9864C87.1295 70.9864 86.1255 63.8054 84.574 56.4564\" fill=\"#089CCB\"/>\n <path d=\"M81.17 44.2764C76.2185 36.4604 71.306 41.2549 70.2905 42.7654C69.275 44.2764 61.233 69.1724 65.059 72.3349C68.885 75.4974 87.1295 70.9864 87.1295 70.9864C87.1295 70.9864 86.1255 63.8054 84.574 56.4564\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M84.2955 70.5031C84.2955 70.5031 100.556 66.9416 105.87 72.3356C111.184 77.7296 129.889 99.6216 129.889 99.6216C129.889 99.6216 129.783 102.279 127.87 102.172C123.087 102.172 99.387 85.8061 98.1115 81.6616C93.01 84.6371 85.1455 87.7191 80.894 85.1686\" fill=\"white\"/>\n <path d=\"M84.2955 70.5031C84.2955 70.5031 100.556 66.9416 105.87 72.3356C111.184 77.7296 129.889 99.6216 129.889 99.6216C129.889 99.6216 129.783 102.279 127.87 102.172C123.087 102.172 99.387 85.8061 98.1115 81.6616C93.01 84.6371 85.1455 87.7191 80.894 85.1686\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M75.3825 83.043C75.3825 83.043 82.595 104.935 88.334 114.712C90.247 115.775 93.8605 113.118 93.8605 113.118C93.8605 113.118 91.31 76.6665 86.308 69.06C81.306 61.4535 71.198 71.5655 71.198 71.5655L65.0585 72.335C65.0585 72.335 58.2565 81.7795 64.6335 86.29C71.0105 90.8005 76.7295 86.9925 76.7295 86.9925M87.8385 44.4425C87.8385 44.4425 90.153 39.0815 91.074 37.83C91.995 36.5785 93.8845 37.1295 94.215 38.578C94.5455 40.0265 93.1285 42.3215 93.176 42.4255C93.223 42.5295 94.0025 42.4825 94.026 43.309C94.0495 44.1355 92.5145 43.805 91.7585 44.4425C91.0025 45.08 90.2235 45.954 90.2235 45.954C90.2235 45.954 87.744 45.3215 87.8385 44.4425Z\" fill=\"white\"/>\n <path d=\"M75.3825 83.043C75.3825 83.043 82.595 104.935 88.334 114.712C90.247 115.775 93.8605 113.118 93.8605 113.118C93.8605 113.118 91.31 76.6665 86.308 69.06C81.306 61.4535 71.198 71.5655 71.198 71.5655L65.0585 72.335C65.0585 72.335 58.2565 81.7795 64.6335 86.29C71.0105 90.8005 76.7295 86.9925 76.7295 86.9925M87.8385 44.4425C87.8385 44.4425 90.153 39.0815 91.074 37.83C91.995 36.5785 93.8845 37.1295 94.215 38.578C94.5455 40.0265 93.1285 42.3215 93.176 42.4255C93.223 42.5295 94.0025 42.4825 94.026 43.309C94.0495 44.1355 92.5145 43.805 91.7585 44.4425C91.0025 45.08 90.2235 45.954 90.2235 45.954C90.2235 45.954 87.744 45.3215 87.8385 44.4425Z\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M74.0931 42.426C75.4621 42.361 80.8951 55.377 80.8951 55.377C80.8951 55.377 83.8711 48.5045 87.4846 43.616C89.1141 43.191 91.1691 45.458 91.1691 45.458C91.1691 45.458 87.0596 66.429 81.5196 66.237C75.9796 66.045 70.3386 51.622 70.3386 51.622\" fill=\"#089CCB\"/>\n <path d=\"M74.0931 42.426C75.4621 42.361 80.8951 55.377 80.8951 55.377C80.8951 55.377 83.8711 48.5045 87.4846 43.616C89.1141 43.191 91.1691 45.458 91.1691 45.458C91.1691 45.458 87.0596 66.429 81.5196 66.237C75.9796 66.045 70.3386 51.622 70.3386 51.622\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M77.6826 42.388V38.1845C77.6826 38.1845 83.5871 39.1765 82.3116 35.209C81.0361 31.2415 76.1711 25.5265 74.2816 26.046C72.3921 26.5655 69.7216 30.4385 71.0566 33.603C72.3916 36.7675 73.1006 37.1455 73.1476 38.1845C73.1946 39.2235 73.5726 40.8295 73.5726 40.8295C73.5726 40.8295 75.3496 42.7135 77.6826 42.388Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M71.873 37.1925C71.873 37.1925 74.4 36.9325 74.3765 35.4215C74.353 33.91 73.1485 32.8 74.046 32.304C74.9435 31.808 75.5575 33.461 76.0535 33.485C76.5495 33.5085 76.595 33.0125 76.595 33.0125C76.595 33.0125 74.92 30.509 75.3215 30.037C75.723 29.565 79.3365 28.124 78.2975 26.4C77.2585 24.676 74.117 23.7785 73.1015 24.676C72.086 25.5735 71.8735 27.368 71.8735 27.368C71.8735 27.368 69.2045 26.494 69.063 28.832C68.9215 31.17 69.6535 31.0045 69.6535 31.0045C69.6535 31.0045 67.646 33.9565 69.252 34.594C70.858 35.2315 71.401 35.1845 71.401 35.1845C71.401 35.1845 70.6685 37.1215 71.873 37.1925Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M133.231 100.182C133.292 100.454 133.169 100.73 133.114 101.004C133.059 101.278 133.117 101.628 133.379 101.725C133.564 101.794 133.78 101.693 133.897 101.533C134.013 101.373 134.048 101.168 134.055 100.97C134.062 100.772 134.044 100.573 134.073 100.377C134.093 100.241 134.151 100.091 134.279 100.042C134.461 99.9724 134.649 100.155 134.696 100.343C134.762 100.603 134.672 100.875 134.673 101.143C134.674 101.411 134.838 101.727 135.106 101.716C135.343 101.707 135.491 101.439 135.495 101.202C135.499 100.965 135.411 100.735 135.402 100.498C135.397 100.385 135.421 100.255 135.517 100.194C135.677 100.093 135.882 100.277 135.911 100.464C135.94 100.651 135.874 100.842 135.897 101.03C135.913 101.159 135.98 101.291 136.099 101.343C136.294 101.429 136.523 101.251 136.572 101.043C136.621 100.836 136.546 100.621 136.473 100.421M95.0655 116.766C95.0655 116.766 93.3295 118.537 94.2155 118.821C95.101 119.104 95.2785 116.979 96.0225 117.298C96.7665 117.617 94.4285 118.679 95.739 119.175C97.05 119.671 96.554 117.227 97.4395 117.652C98.325 118.077 96.6245 119.246 97.4395 119.494\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M139.065 115.811C142.43 115.811 145.158 113.083 145.158 109.718C145.158 106.352 142.43 103.625 139.065 103.625C135.7 103.625 132.971 106.352 132.971 109.718C132.971 113.083 135.7 115.811 139.065 115.811Z\" fill=\"#089CCB\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M14.3635 93.493C14.3635 93.493 23.4325 113.341 28.8885 114.859\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M47.4245 72.2056C47.4495 71.2236 47.4505 71.1736 47.476 70.1906L45.0085 69.1431C44.777 68.6281 44.637 68.3176 44.4045 67.8021L45.255 65.2611L43.7109 63.9641L41.3545 65.2401C40.8065 65.1001 40.477 65.0166 39.929 64.8766L38.472 62.6276C37.508 62.8216 37.459 62.8321 36.4955 63.0256L36.0234 65.6636C35.5729 66.0046 35.302 66.2096 34.8505 66.5511L32.1835 66.2881L31.263 68.0811L33.0315 70.0956C33.017 70.6601 33.008 71.0006 32.9935 71.5651L31.1245 73.4861C31.5285 74.3821 31.5495 74.4281 31.9525 75.3241L34.63 75.1976C35.0629 75.5611 35.3235 75.7801 35.7565 76.1436L36.0935 78.8016C37.046 79.0456 37.0945 79.0576 38.047 79.3006L39.6165 77.1296C40.171 77.0176 40.5045 76.9501 41.059 76.8386L43.348 78.2326C44.1315 77.6396 44.171 77.6101 44.9555 77.0171L44.2365 74.4346C44.495 73.9316 44.65 73.6296 44.9085 73.1266L47.4245 72.2056ZM39.3 74.9711C37.087 74.9711 35.293 73.1766 35.293 70.9636C35.293 68.7506 37.087 66.9561 39.3 66.9561C41.514 66.9561 43.308 68.7506 43.308 70.9636C43.308 73.1766 41.514 74.9711 39.3 74.9711Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M52.694 62.5094L50.336 54.1874C49.111 53.6454 48.242 53.7804 47.8285 54.7829L49.979 64.6904C50.2285 64.3274 50.51 63.9829 50.8305 63.6629C51.344 63.1174 51.988 62.7419 52.694 62.5094Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M62.0066 95.374L52.6941 62.5095C51.9881 62.742 51.3441 63.1175 50.8306 63.663C50.5101 63.9835 50.2286 64.3275 49.9791 64.6905L57.0941 97.471C58.4936 96.296 60.2136 95.679 62.0066 95.374Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M62.366 96.644L62.006 95.374C60.213 95.679 58.493 96.296 57.094 97.4715L57.321 98.5175C58.4155 97.14 60.404 96.8095 62.366 96.644Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M58.238 99.1225C59.719 98.6595 61.173 98.0615 62.6635 97.694L62.366 96.6445C60.4035 96.81 58.415 97.1405 57.321 98.5175L57.5675 99.6525C57.7605 99.436 57.9745 99.254 58.238 99.1225Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M62.6636 97.694C61.1731 98.0615 59.7191 98.66 58.2381 99.1225C57.9746 99.2545 57.7606 99.4365 57.5676 99.6525L57.8921 101.147C59.5046 100.269 61.2631 99.4245 63.0736 99.1415L62.6636 97.694Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M63.0735 99.141C61.263 99.424 59.504 100.269 57.892 101.146L59.092 106.675L62.9905 113.022C63.6915 113.052 64.393 113.052 65.094 112.833C65.2135 112.799 65.3175 112.753 65.41 112.698L64.7595 105.088L63.0735 99.141Z\" fill=\"#089CCB\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M65.41 112.699C65.3109 112.757 65.2047 112.802 65.094 112.833C64.393 113.052 63.6915 113.052 62.9905 113.022L65.8335 117.651L65.41 112.699Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M127.255 65.845H107.109C106.161 65.845 105.392 65.0765 105.392 64.128V18.96C105.392 18.012 106.161 17.243 107.109 17.243H127.255C128.203 17.243 128.972 18.0115 128.972 18.96V64.128C128.972 65.0765 128.203 65.845 127.255 65.845Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M109.366 20.7321C109.816 20.7321 110.181 20.3672 110.181 19.9171C110.181 19.4669 109.816 19.1021 109.366 19.1021C108.916 19.1021 108.551 19.4669 108.551 19.9171C108.551 20.3672 108.916 20.7321 109.366 20.7321Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M113.712 20.7321C114.162 20.7321 114.527 20.3672 114.527 19.9171C114.527 19.4669 114.162 19.1021 113.712 19.1021C113.261 19.1021 112.897 19.4669 112.897 19.9171C112.897 20.3672 113.261 20.7321 113.712 20.7321Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M118.057 20.7321C118.507 20.7321 118.872 20.3672 118.872 19.9171C118.872 19.4669 118.507 19.1021 118.057 19.1021C117.607 19.1021 117.242 19.4669 117.242 19.9171C117.242 20.3672 117.607 20.7321 118.057 20.7321Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M107.805 26.593H126.669V31.254H107.805V26.593Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M107.805 36.1066H126.669V40.7676H107.805V36.1066Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M107.805 45.6205H126.669V50.2815H107.805V45.6205Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M107.805 55.134H126.669V59.795H107.805V55.134Z\" fill=\"#089CCB\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M64.5945 73.0401C64.5945 73.0401 70.7295 72.3605 71.199 71.5656L65.0595 72.335L64.5945 73.0401ZM77.6825 38.1845L75.5815 37.9355C75.5815 37.9355 77.278 38.923 77.6825 38.878V38.1845Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`;\n","import React from \"react\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\nimport { Link } from \"./Link\";\n\ntype BreadcrumbItem = {\n label: string;\n href?: string;\n};\n\nexport type BreadcrumbsProps = {\n items: BreadcrumbItem[];\n className?: string;\n SeparatorComponent?: React.ReactElement;\n onHomeClick: () => void;\n};\n\nconst DefaultSeparator = () => (\n <Text variant={[\"sm:body-lg\", \"body-xs\"]} color=\"text-primary\">\n /\n </Text>\n);\n\nexport const Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n { items, className, SeparatorComponent = DefaultSeparator, onHomeClick },\n ref\n ) => {\n const renderSeparator = () =>\n typeof SeparatorComponent === \"function\" ? (\n <SeparatorComponent />\n ) : (\n React.cloneElement(SeparatorComponent)\n );\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\n \"sm:relative sticky top-0 sm:border-none border-secondary-50 border-b-[1px] pb-2\",\n className\n )}\n >\n <ol className=\"flex flex-wrap items-center gap-2\">\n <Icon\n onClick={onHomeClick}\n name=\"home\"\n size={[\"sm:20\", 16]}\n color=\"secondary\"\n className=\"pb-0.5\"\n />\n {renderSeparator()}\n {items.map((item, index) => {\n const isLastItem = index === items.length - 1;\n\n return isLastItem || !item.href ? (\n <Text\n variant={\n isLastItem\n ? [\"body-xs-medium\", \"md:body-default-semibold\"]\n : [\"body-xs\", \"md:body-default\"]\n }\n color={isLastItem ? \"text-primary\" : \"text-secondary\"}\n aria-current={isLastItem ? \"page\" : undefined}\n key={item.label}\n >\n {item.label}\n </Text>\n ) : (\n <>\n <Link href={item.href} key={item.label}>\n {item.label}\n </Link>\n {renderSeparator()}\n </>\n );\n })}\n </ol>\n </nav>\n );\n }\n);\n\nBreadcrumbs.displayName = \"Breadcrumbs\";\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../utils\";\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n delayDuration?: number;\n}\n\nexport const Tooltip = ({\n content,\n children,\n side = \"bottom\",\n align = \"center\",\n className,\n delayDuration = 200\n}: TooltipProps) => (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <span tabIndex={0}>{children}</span>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 overflow-hidden rounded-lg\",\n \"bg-text-primary px-3 py-1.5\",\n \"text-xs text-white\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"select-none\",\n \"max-w-60\",\n className\n )}\n >\n {content}\n <TooltipPrimitive.Arrow\n className=\"fill-text-primary\"\n width={10}\n height={5}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n);\n","import React from \"react\";\nimport { Pressable, PressableProps } from \"./Pressable\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\nimport { IconName } from \"@deckai/icons\";\n\nexport type SocialCardProps = {\n icon: IconName;\n followers: string;\n engagement: string;\n} & PressableProps;\n\nexport const SocialCard = ({\n icon,\n followers,\n engagement,\n ...pressableProps\n}: SocialCardProps) => (\n <Pressable\n className=\"sm:w-max w-full hover:bg-secondary-400\"\n {...pressableProps}\n >\n <div className=\"flex sm:flex-row flex-col items-center sm:gap-4 gap-1 sm:px-6 sm:py-4 p-2 border border-secondary rounded-lg\">\n <Icon name={icon} size={[\"lg:40\", 32]} color=\"primaryBlue\" />\n <div className=\"flex items-center sm:pt-0 pt-3\">\n <Icon name=\"profile\" size={[\"sm:20\", 16]} />\n <Text variant={[\"body-default-medium\", \"md:body-xs-medium\"]}>\n {followers}\n </Text>\n </div>\n <div className=\"flex items-center\">\n <Icon name=\"like-1\" size={[\"sm:20\", 16]} />\n <Text variant={[\"body-default-medium\", \"md:body-xs-medium\"]}>\n {engagement}\n </Text>\n </div>\n </div>\n </Pressable>\n);\n","import React, { useMemo } from \"react\";\n\nexport type IconRendererProps = {\n icon: string;\n size?: number;\n className?: string;\n};\n\nexport const IconRenderer = ({\n icon,\n size = 40,\n className\n}: IconRendererProps) => {\n const sanitizedSvg = useMemo(() => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(icon, \"image/svg+xml\");\n const svg = doc.querySelector(\"svg\");\n\n if (!svg) return null;\n\n // Set size attributes but preserve aspect ratio\n svg.setAttribute(\"width\", \"100%\");\n svg.setAttribute(\"height\", \"100%\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\n\n // Get the original viewBox or use the default\n const viewBox = svg.getAttribute(\"viewBox\") || \"0 0 40 40\";\n svg.setAttribute(\"viewBox\", viewBox);\n\n return svg.outerHTML;\n }, [icon]);\n\n if (!sanitizedSvg) return null;\n\n return (\n <div\n style={{\n width: size,\n height: size,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n className={className}\n dangerouslySetInnerHTML={{ __html: sanitizedSvg }}\n />\n );\n};\n\nIconRenderer.displayName = \"IconRenderer\";\n","import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"../utils\";\nimport { focusRingStyles } from \"../utils/tailwind\";\n\nexport type SwitchProps = React.ComponentPropsWithoutRef<\n typeof SwitchPrimitive.Root\n> & {\n label?: string;\n description?: string;\n};\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, label, description, ...props }, ref) => (\n <div className=\"flex items-center gap-2\">\n <SwitchPrimitive.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer\",\n \"items-center rounded-full border-2 border-transparent\",\n \"transition-colors focus-visible:outline-none\",\n focusRingStyles,\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-primary-50 data-[state=unchecked]:bg-secondary-50\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5\",\n \"rounded-full bg-white shadow-lg ring-0\",\n \"transition-transform\",\n \"data-[state=checked]:translate-x-5\",\n \"data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n className=\"text-sm font-medium text-text-primary\"\n htmlFor={props.id}\n >\n {label}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-text-secondary\">{description}</span>\n )}\n </div>\n )}\n </div>\n));\n\nSwitch.displayName = \"Switch\";\n","import * as React from \"react\";\nimport { IconName } from \"@deckai/icons\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type BadgeProps = {\n variant?: \"pink\" | \"orange\" | \"green\" | \"purple\";\n iconName?: IconName;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst variants = {\n pink: \"bg-tertiary-5\",\n orange: \"bg-tertiary-15\",\n green: \"bg-tertiary-25\",\n purple: \"bg-secondary-300\"\n};\n\nconst stringToVariant = (str: string): keyof typeof variants => {\n const variantKeys = Object.keys(variants) as Array<keyof typeof variants>;\n // Let's log some values to understand what's happening\n const hash = str\n .split(\"\")\n .reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0);\n\n const index = Math.abs(hash) % variantKeys.length;\n const selectedVariant = variantKeys[index];\n\n console.log({\n input: str,\n hash,\n variantKeys,\n index,\n selectedVariant\n });\n\n return selectedVariant;\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, iconName, children, ...props }, ref) => {\n const finalVariant =\n variant ||\n (typeof children === \"string\" ? stringToVariant(children) : \"pink\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-2\",\n \"rounded-lg px-2 py-1\",\n \"text-sm font-medium\",\n variants[finalVariant],\n className\n )}\n {...props}\n >\n {iconName && <Icon size={16} name={iconName} />}\n <Text variant=\"body-xxs-medium\">{children}</Text>\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import React, { useId, useMemo } from \"react\";\nimport { Badge, BadgeProps } from \"./Badge\";\nimport { Button } from \"./Button\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\nimport { Tooltip } from \"./Tooltip\";\nimport { Switch } from \"./Switch\";\nimport { Tag } from \"./Tag\";\nimport { EditButton } from \"./EditButton\";\n\nexport type ProfileCardProps = {\n profileImage: string;\n name: string;\n location: string;\n memberSince?: string;\n interests?: string[];\n badges?: BadgeProps[];\n isEditMode?: boolean;\n onEditClick?: () => void;\n};\n\nconst MAX_INTERESTS = 4;\nconst MAX_BADGES = 3;\n\nexport const ProfileCard = ({\n profileImage,\n name,\n location,\n memberSince,\n interests,\n badges,\n isEditMode = false,\n onEditClick\n}: ProfileCardProps) => {\n const randomId = useId();\n\n const visibleInterests = useMemo(\n () => interests?.slice(0, MAX_INTERESTS) || [],\n [interests]\n );\n\n const visibleBadges = useMemo(\n () => badges?.slice(0, MAX_BADGES) || [],\n [badges]\n );\n\n const hasMoreInterests = interests && interests.length > MAX_INTERESTS;\n const hasMoreBadges = badges && badges.length > MAX_BADGES;\n const remainingInterests = interests ? interests.length - MAX_INTERESTS : 0;\n const remainingBadges = badges ? badges.length - MAX_BADGES : 0;\n\n return (\n <div className=\"lg:p-10 md:p-8 p-4 rounded-xl border border-stroke relative flex gap-6 md:flex-row flex-col\">\n {isEditMode && <EditButton onClick={onEditClick} />}\n <div className=\"flex md:flex-row flex-col gap-6\">\n <div className=\"flex flex-col gap-4 md:items-start items-center\">\n <div className=\"flex items-center justify-center xl:w-[206px] lg:w-[164px] w-[147px]\">\n <img\n src={profileImage}\n alt={`Profile for ${name}`}\n className=\"object-cover rounded-lg w-full h-full\"\n />\n </div>\n {isEditMode && <Button variant=\"filled\">Preview Profile</Button>}\n {/* Desktop only */}\n {isEditMode && (\n <div className=\"hidden sm:flex sm:flex-col gap-1 w-full\">\n <div className=\"flex flex-row justify-between\">\n <div>\n <Text\n as=\"label\"\n htmlFor={randomId}\n variant=\"body-default-semibold\"\n >\n Private Mode\n </Text>\n <div className=\"flex items-center gap-1\">\n <Text variant=\"body-default\" color=\"text-secondary\">\n What is this?\n </Text>\n <Tooltip content=\"Turning this on makes you not appear in searches. People who follow you will still be able to view your profile. Go to your settings to make changes to Private Mode.\">\n <Icon\n name=\"message-question\"\n color=\"secondary\"\n size={16}\n />\n </Tooltip>\n </div>\n </div>\n <Switch id={randomId} />\n </div>\n </div>\n )}\n </div>\n <div className=\"flex flex-col gap-2\">\n <Text\n as=\"h1\"\n variant={[\"lg:heading-lg\", \"md:heading-md\", \"heading-sm\"]}\n className=\"text-wrap text-center md:text-left\"\n >\n {name}\n </Text>\n <div className=\"flex gap-2 items-center sm:justify-start justify-center\">\n <Icon name=\"location\" color=\"secondary\" />\n <Tooltip content={location}>\n <Text\n variant={[\"lg:body-lg\", \"md:body-default\", \"body-xs\"]}\n color=\"text-secondary\"\n className=\"sm:text-left text-center truncate max-w-[300px]\"\n >\n {location}\n </Text>\n </Tooltip>\n </div>\n <div className=\"flex gap-2 items-center sm:justify-start justify-center\">\n <Icon name=\"profile\" color=\"secondary\" />\n <Tooltip content={`Member Since ${memberSince}`}>\n <Text\n variant={[\"lg:body-lg\", \"md:body-default\", \"body-xs\"]}\n color=\"text-secondary\"\n className=\"sm:text-left text-center truncate max-w-[300px]\"\n >\n Member Since{\" \"}\n <Text\n as=\"span\"\n variant={[\n \"lg:body-lg-semibold\",\n \"md:body-default-bold\",\n \"body-xs-bold\"\n ]}\n >\n {memberSince}\n </Text>\n </Text>\n </Tooltip>\n </div>\n {interests && (\n <div className=\"flex flex-col gap-2 pt-4\">\n <Text\n variant={[\"sm:heading-xs\", \"body-default-bold\"]}\n className=\"sm:text-left text-center\"\n >\n Interests\n </Text>\n <div className=\"flex flex-wrap gap-2 sm:justify-start justify-center items-center\">\n {visibleInterests.map((interest, idx) => (\n <Tag key={idx}>{interest}</Tag>\n ))}\n {hasMoreInterests && (\n <Tooltip content={interests.slice(MAX_INTERESTS).join(\", \")}>\n <Text variant=\"label-default\">\n +{remainingInterests} more\n </Text>\n </Tooltip>\n )}\n </div>\n </div>\n )}\n {badges && (\n <div className=\"flex gap-2 flex-wrap py-4 sm:justify-start justify-center items-center\">\n {visibleBadges.map((badge, idx) => (\n <Badge key={idx} {...badge} />\n ))}\n {hasMoreBadges && (\n <Tooltip\n content={badges\n .slice(MAX_BADGES)\n .map((b) => b.children)\n .join(\", \")}\n >\n <Text variant=\"label-default\">+{remainingBadges} more</Text>\n </Tooltip>\n )}\n </div>\n )}\n {/* mobile only */}\n {isEditMode && (\n <div className=\"sm:hidden flex justify-between border-t-[1px] border-secondary-50 pt-4\">\n <div>\n <Text\n as=\"label\"\n htmlFor={randomId}\n variant=\"body-default-semibold\"\n >\n Private Mode\n </Text>\n <div className=\"flex items-center gap-1\">\n <Text variant=\"body-default\" color=\"text-secondary\">\n What is this?\n </Text>\n <Tooltip content=\"Turning this on makes you not appear in searches. People who follow you will still be able to view your profile. Go to your settings to make changes to Private Mode.\">\n <Icon name=\"message-question\" color=\"secondary\" size={16} />\n </Tooltip>\n </div>\n </div>\n <Switch id={randomId} />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React, { HTMLAttributes } from \"react\";\nimport { Text } from \"./Text\";\nimport { IconRenderer } from \"./IconRenderer\";\n\nexport type ContactItemProps = {\n // TODO: figure out how to get filled icons to work correctly\n icon: string;\n children: React.ReactNode;\n href: string;\n} & Omit<HTMLAttributes<HTMLAnchorElement>, \"color\">;\n\nexport const ContactItem = ({\n icon,\n children,\n href,\n ...linkProps\n}: ContactItemProps) => (\n <div className=\"row gap-2 flex items-center\">\n <div className=\"bg-secondary-400 rounded-full p-2.5 items-center justify-center\">\n <IconRenderer icon={icon} size={24} className=\"text-primary\" />\n </div>\n <Text\n className=\"hover:underline\"\n as=\"a\"\n href={href}\n {...linkProps}\n variant={[\"body-default-semibold\", \"md:body-default-medium\"]}\n >\n {children}\n </Text>\n </div>\n);\n","import React, { useRef, useLayoutEffect, useState } from \"react\";\nimport * as RadixCollapsible from \"@radix-ui/react-collapsible\";\nimport { Pressable } from \"./Pressable\";\nimport { Text } from \"./Text\";\nimport { cn } from \"../utils\";\n\nexport type CollapsibleProps = {\n children: React.ReactNode;\n maxHeight?: number;\n};\n\nexport const Collapsible = ({\n children,\n maxHeight = 100\n}: CollapsibleProps) => {\n const [open, setOpen] = React.useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const [contentHeight, setContentHeight] = useState<number>(maxHeight);\n\n // Measure content height on mount and resize\n useLayoutEffect(() => {\n if (!contentRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContentHeight(entry.target.scrollHeight);\n }\n });\n\n resizeObserver.observe(contentRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const shouldShowTrigger = contentHeight > maxHeight;\n\n return (\n <RadixCollapsible.Root open={open} onOpenChange={setOpen}>\n <div className=\"relative\">\n <div\n className=\"overflow-hidden transition-[height] duration-300 ease-in-out\"\n style={{\n height: open ? `${contentHeight}px` : `${maxHeight}px`\n }}\n >\n <div ref={contentRef} className=\"w-full\">\n {children}\n </div>\n </div>\n\n {shouldShowTrigger && (\n <RadixCollapsible.Trigger asChild>\n <Pressable\n className={cn(\n \"absolute -bottom-8 left-0 right-0\",\n \"flex items-end justify-center\",\n \"h-16 pt-8 pb-2\",\n !open && \"bg-gradient-to-b from-transparent via-white to-white\",\n \"hover:opacity-100 transition-opacity\"\n )}\n >\n <Text variant=\"label-default\" color=\"text-secondary\">\n {open ? \"See less\" : \"See more\"}\n </Text>\n </Pressable>\n </RadixCollapsible.Trigger>\n )}\n </div>\n </RadixCollapsible.Root>\n );\n};\n\nCollapsible.displayName = \"Collapsible\";\n","import React from \"react\";\nimport { Text } from \"./Text\";\nimport { ContactItem, ContactItemProps } from \"./ContactItem\";\nimport { EditButton } from \"./EditButton\";\nimport { Collapsible } from \"./Collapsible\";\n\nexport type AboutCardProps = {\n interests: string[];\n contactItems: ContactItemProps[];\n description: string;\n isEditMode?: boolean;\n onEditClick?: () => void;\n};\n\nexport const AboutCard = ({\n interests,\n contactItems,\n description,\n isEditMode = false,\n onEditClick,\n ...props\n}: AboutCardProps) => (\n <div\n className=\"border border-secondary rounded-2xl sm:p-10 p-4 relative flex sm:flex-row flex-col pt-8 sm:pt-4\"\n {...props}\n >\n {isEditMode && <EditButton onClick={onEditClick} />}\n <div className=\"flex sm:basis-1/2 basis-full flex-col gap-2 sm:pr-10 pb-6 sm:pb-0\">\n <Collapsible maxHeight={120}>\n <Text variant=\"body-default\">{description}</Text>\n </Collapsible>\n </div>\n {/* vertical divider for desktop */}\n <span className=\"hidden sm:block absolute bg-secondary-50 w-[1px] inset-x-1/2 inset-y-10\" />\n {/* horizontal divider for mobile */}\n <span className=\"block sm:hidden bg-secondary-50 w-full h-[1px] inset-x-10\" />\n <div className=\"flex flex-col gap-4 sm:pl-10 pt-6 sm:pt-8\">\n {contactItems.map((contactProps) => (\n <ContactItem key={contactProps.title} {...contactProps} />\n ))}\n </div>\n </div>\n);\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst spinnerVariants = cva(\n \"animate-spin rounded-full border-current border-t-transparent\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4 border-4\",\n md: \"h-6 w-6 border-4\",\n lg: \"h-8 w-8 border-8\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n }\n);\n\nexport type SpinnerProps = {\n className?: string;\n customSize?: number;\n} & VariantProps<typeof spinnerVariants>;\n\nexport const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ size, className, customSize, ...props }, ref) => {\n const styles = customSize\n ? {\n width: customSize,\n height: customSize,\n borderWidth: Math.max(2, Math.floor(customSize / 16))\n }\n : {};\n\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n ref={ref}\n className={cn(spinnerVariants({ size }), \"text-primary-100\", className)}\n style={styles}\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n }\n);\n\nSpinner.displayName = \"Spinner\";\n","/* eslint-disable prettier/prettier */\nimport type { Config } from \"tailwindcss\";\nimport tailwindAnimate from \"tailwindcss-animate\";\nimport { Colors, Typography } from \"./src/types/tailwind\";\nimport { generateSafelist } from \"./src/utils/tailwind\";\n\nconst colors: Colors = {\n background: {\n 0: \"#FFFFFF\",\n 50: \"#F6F6F6\",\n 100: \"#F7F7F5\"\n },\n primary: {\n 50: \"#5B3DE3\",\n 100: \"#089CCB\"\n },\n secondary: {\n 50: \"#D9D9D9\",\n 100: \"#F6F5FF\",\n 200: \"#EBE8FC\",\n 300: \"#BDAEFF\",\n 400: \"#E7F7FC\",\n 500: \"#DAF6FF\",\n 600: \"#B3EDFF\"\n },\n tertiary: {\n 5: \"#E33D6550\",\n 10: \"#E33D65\",\n 15: \"#F59E0B50\",\n 20: \"#F59E0B\",\n 25: \"#10B98150\",\n 30: \"#10B981\"\n },\n stroke: \"#ECECEC\",\n text: {\n primary: \"#080808\",\n secondary: \"#666666\",\n white: \"#FFFFFF\",\n \"primary-blue\": \"#F7F7F5\"\n },\n overlay: \"rgba(26, 26, 28, 0.8)\"\n};\n\nconst typography: Typography = {\n heading: {\n xl: {\n fontSize: \"56px\",\n letterSpacing: \"-1.12px\",\n fontWeight: \"700\" // Bold\n },\n lg: {\n fontSize: \"40px\",\n letterSpacing: \"-0.8px\",\n fontWeight: \"700\" // Bold\n },\n md: {\n fontSize: \"32px\",\n letterSpacing: \"-0.64px\",\n fontWeight: \"700\" // Bold\n },\n sm: {\n fontSize: \"24px\",\n letterSpacing: \"-0.48px\",\n fontWeight: \"700\" // Bold\n },\n xs: {\n fontSize: \"20px\",\n letterSpacing: \"0.4px\",\n fontWeight: \"700\" // Bold\n }\n },\n body: {\n lg: {\n fontSize: \"20px\",\n letterSpacing: \"-0.4px\",\n fontWeight: \"500\",\n lineHeight: \"150%\"\n },\n \"lg-semibold\": {\n fontSize: \"20px\",\n letterSpacing: \"-0.4px\",\n fontWeight: \"600\", // Semibold\n lineHeight: \"150%\"\n },\n md: {\n fontSize: \"18px\",\n letterSpacing: \"0.36px\",\n fontWeight: \"600\" // Semibold\n },\n default: {\n fontSize: \"16px\",\n letterSpacing: \"0%\",\n fontWeight: \"400\", // Regular\n lineHeight: \"150%\"\n },\n \"default-medium\": {\n fontSize: \"16px\",\n letterSpacing: \"0%\",\n fontWeight: \"500\" // Medium\n },\n \"default-semibold\": {\n fontSize: \"16px\",\n letterSpacing: \"0%\",\n fontWeight: \"600\" // Semibold\n },\n \"default-bold\": {\n fontSize: \"16px\",\n letterSpacing: \"0%\",\n fontWeight: \"700\" // Bold\n },\n xs: {\n fontSize: \"14px\",\n letterSpacing: \"0%\",\n fontWeight: \"400\" // Regular\n },\n \"xs-medium\": {\n fontSize: \"14px\",\n letterSpacing: \"0%\",\n fontWeight: \"500\" // Medium\n },\n \"xs-bold\": {\n fontSize: \"14px\",\n letterSpacing: \"0%\",\n fontWeight: \"700\" // Bold\n },\n xxs: {\n fontSize: \"13px\",\n letterSpacing: \"0%\",\n fontWeight: \"400\" // Regular\n },\n \"xxs-medium\": {\n fontSize: \"13px\",\n letterSpacing: \"0%\",\n fontWeight: \"500\" // Medium\n },\n \"xxs-semibold\": {\n fontSize: \"13px\",\n letterSpacing: \"0%\",\n fontWeight: \"600\" // Semibold\n }\n },\n label: {\n default: {\n fontSize: \"13px\",\n lineHeight: \"24px\",\n letterSpacing: \"0%\",\n fontWeight: \"400\", // Regular\n textTransform: \"uppercase\"\n }\n }\n};\n\nconst config = {\n content: [\"./src/**/*.{ts,tsx}\"],\n theme: {\n extend: {\n colors,\n fontSize: {\n // Convert typography config to Tailwind's fontSize format\n ...Object.entries(typography).reduce(\n (acc, [family, sizes]) => {\n Object.entries(sizes).forEach(([size, typeConfig]) => {\n acc[`${family}-${size}`] = [\n typeConfig.fontSize,\n {\n lineHeight: typeConfig.lineHeight || \"normal\",\n letterSpacing: typeConfig.letterSpacing || \"normal\",\n fontWeight: typeConfig.fontWeight\n }\n ];\n });\n return acc;\n },\n {} as Record<string, [string, object]>\n )\n },\n fontFamily: {\n sans: [\"Gilroy\", \"sans-serif\"]\n },\n fontWeight: {\n light: \"400\", // Gilroy-Light.ttf\n regular: \"500\", // Gilroy-Regular.ttf\n normal: \"500\", // Gilroy-Regular.ttf\n semibold: \"600\", // Gilroy-Medium.ttf\n bold: \"700\" // Gilroy-Bold.ttf\n },\n animation: {\n spin: \"spin 1s linear infinite\"\n },\n keyframes: {\n spin: {\n \"0%\": { transform: \"rotate(0deg)\" },\n \"100%\": { transform: \"rotate(360deg)\" }\n }\n },\n borderWidth: {\n \"3\": \"3px\"\n },\n \"fade-in\": {\n from: { opacity: \"0\" },\n to: { opacity: \"1\" }\n },\n \"fade-out\": {\n from: { opacity: \"1\" },\n to: { opacity: \"0\" }\n }\n }\n },\n plugins: [tailwindAnimate],\n safelist: [...generateSafelist(colors, typography)],\n animation: {\n \"fade-in\": \"fade-in 200ms ease-out\",\n \"fade-out\": \"fade-out 200ms ease-in\"\n }\n} satisfies Config;\n\nexport default config;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/tailwind.ts","../src/components/Pressable.tsx","../src/components/Avatar.tsx","../src/utils/index.ts","../src/components/Icon.tsx","../src/components/Input.tsx","../src/components/Option.tsx","../src/components/Combobox.tsx","../src/components/Logo.tsx","../src/components/NavbarItem.tsx","../src/components/Navbar.tsx","../src/components/Text.tsx","../src/components/Link.tsx","../src/components/Tag.tsx","../../../node_modules/class-variance-authority/dist/index.mjs","../src/components/Spinner.tsx","../src/components/MultiSelectCombobox.tsx","../src/components/Tabs.tsx","../src/components/WorkCard.tsx","../src/components/Button.tsx","../src/components/EditButton.tsx","../src/components/Illustration.tsx","../src/components/Breadcrumbs.tsx","../src/components/Tooltip.tsx","../src/components/SocialCard.tsx","../src/components/IconRenderer.tsx","../src/components/Switch.tsx","../src/components/ProfileCard.tsx","../src/components/Badge.tsx","../src/components/ContactItem.tsx","../src/components/Collapsible.tsx","../src/components/AboutCard.tsx","../src/hooks/useMediaQuery.ts","../src/components/Sidebar.tsx","../src/components/TextArea.tsx","../tailwind.config.ts"],"names":["generateSafelist","colors","typography","colorNames","utilities","variants","colorName","shade","utility","family","sizes","size","breakpoints","typographyClasses","category","responsiveTypographyClasses","className","breakpoint","focusRingStyles","focusRingStylesCoerced","Pressable","children","type","disabled","props","React","BREAKPOINT_MAP","processSizes","sizeArray","mediaQueries","baseSize","valueStr","value","acc","query","Avatar","src","onClick","sizeStyles","content","cn","inputs","twMerge","clsx","COLOR_MAP","Icon","name","color","title","style","ref","IconComponent","IconMap","Input","end","iconName","label","labelClassName","id","W","Option","onChange","selected","Combobox","options","placeholder","open","setOpen","useState","inputValue","setInputValue","selectedOption","useMemo","option","filteredItems","handleOptionChange","useCallback","$","e","optionLabel","optionValue","index","Logo","NavbarItem","hasNotification","Navbar","searchOptions","onSearchChange","navbarItems","onLogoClick","onProfileClick","avatarImage","HEADING_ELEMENT_MAP","getElementFromVariant","variant","fontWeight","processVariants","typographyClass","Text","as","weight","colorClasses","suggestedElement","baseVariant","Link","href","Tag","onClose","pressableProps","isHovered","setIsHovered","handleMouseEnter","handleMouseLeave","falsyToString","cx","cva","base","config","_config_compoundVariants","defaultVariants","getVariantClassNames","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","param","key","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","spinnerVariants","Spinner","U","customSize","styles","MultiSelectCombobox","selectedValues","onSelectionChange","maxSelections","noOptionsMessage","loading","errorMessage","selectedOptions","filteredOptions","handleOptionSelect","handleRemoveTag","valueToRemove","z","Tabs","items","defaultValue","O","item","WorkCard","socialIconName","tags","caption","playCount","backgroundImage","tag","filled","outlined","Button","Y","isLoading","EditButton","Illustration","profileIllustration","DefaultSeparator","Breadcrumbs","SeparatorComponent","onHomeClick","renderSeparator","isLastItem","Tooltip","side","align","delayDuration","V","T","SocialCard","icon","followers","engagement","IconRenderer","sanitizedSvg","svg","viewBox","Switch","B","description","ne","stringToVariant","str","variantKeys","hash","char","selectedVariant","Badge","G","finalVariant","MAX_INTERESTS","MAX_BADGES","ProfileCard","profileImage","location","memberSince","interests","badges","isEditMode","onEditClick","randomId","useId","visibleInterests","visibleBadges","hasMoreInterests","hasMoreBadges","remainingInterests","remainingBadges","interest","idx","badge","b","ContactItem","linkProps","Collapsible","maxHeight","contentRef","useRef","contentHeight","setContentHeight","useLayoutEffect","resizeObserver","entries","entry","shouldShowTrigger","de","AboutCard","contactItems","contactProps","useIsomorphicLayoutEffect","useEffect","useMediaQuery","matches","setMatches","getMatches","mediaQuery","handleChange","Sidebar","width","footer","position","isMobile","handleEscapeKey","event","positionClasses","P","TextArea","helperText","showCharacterCount","maxLength","textValue","setTextValue","w","newValue","characterCount","showCount","typeConfig","tailwindAnimate","tailwind_config_default"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Colors, Typography } from \"../types/tailwind\";\n\n// Generate safelist patterns for all color utilities so you can use any theme color variable in your code\nexport const generateSafelist = (colors: Colors, typography: Typography) => {\n const colorNames = Object.keys(colors) as (keyof Colors)[];\n const utilities = [\"bg\", \"text\", \"border\", \"ring\", \"divide\", \"outline\"];\n const variants = [\"hover:\", \"focus:\", \"active:\", \"disabled:\"];\n\n const safelist: string[] = [];\n\n colorNames.forEach((colorName) => {\n if (typeof colors[colorName] === \"object\") {\n // Handle nested color objects (with number keys)\n Object.keys(colors[colorName]).forEach((shade) => {\n utilities.forEach((utility) => {\n // Base utility\n safelist.push(`${utility}-${colorName}-${shade}`);\n\n // Variant utilities\n variants.forEach((variant) => {\n safelist.push(`${variant}${utility}-${colorName}-${shade}`);\n });\n });\n });\n } else {\n // Handle direct color values\n utilities.forEach((utility) => {\n safelist.push(`${utility}-${colorName}`);\n\n variants.forEach((variant) => {\n safelist.push(`${variant}${utility}-${colorName}`);\n });\n });\n }\n });\n\n // Generate typography classes\n Object.entries(typography).forEach(([family, sizes]) => {\n Object.keys(sizes).forEach((size) => {\n // Base typography classes\n safelist.push(`text-${family}-${size}`);\n\n // Add variants\n variants.forEach((variant) => {\n safelist.push(`${variant}text-${family}-${size}`);\n });\n });\n });\n\n const breakpoints = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"];\n const typographyClasses = Object.entries(typography).flatMap(\n ([category, sizes]) =>\n Object.keys(sizes).map((size) => `text-${category}-${size}`)\n );\n\n // Generate responsive variants\n const responsiveTypographyClasses = typographyClasses.flatMap((className) =>\n breakpoints.map((breakpoint) => `${breakpoint}:${className}`)\n );\n\n return [\n ...typographyClasses,\n ...responsiveTypographyClasses\n // ... rest of your safelist\n ];\n};\n\nexport const focusRingStyles =\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\";\n\nexport const focusRingStylesCoerced = \"ring-2 ring-ring ring-offset-2\";\n","import React, { ButtonHTMLAttributes } from \"react\";\nimport { focusRingStyles } from \"../utils/tailwind\";\n\nexport type PressableProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const Pressable: React.FC<PressableProps> = ({\n children,\n type = \"button\",\n className,\n disabled,\n ...props\n}) => (\n <button\n // eslint-disable-next-line react/butt on-has-type\n type={type}\n disabled={disabled}\n className={`appearance-none hover:opacity-80 transition-all active:scale-95 ${focusRingStyles} ${className} ${disabled ? \"opacity-50 cursor-not-allowed\" : \"\"}`}\n {...props}\n >\n {children}\n </button>\n);\n","import React from \"react\";\nimport { Pressable } from \"./Pressable\";\n\ntype Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\ntype ResponsiveSize = number | `${Breakpoint}:${number}`;\n\nconst BREAKPOINT_MAP: Record<Breakpoint, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\"\n};\n\nexport type AvatarProps = {\n src?: string;\n size?: ResponsiveSize | ResponsiveSize[];\n} & Pick<React.ComponentProps<typeof Pressable>, \"onClick\">;\n\nconst processSizes = (\n sizes: ResponsiveSize | ResponsiveSize[] | undefined\n): React.CSSProperties => {\n if (!sizes) return { width: \"48px\", height: \"48px\" };\n\n const sizeArray = Array.isArray(sizes) ? sizes : [sizes];\n const mediaQueries: Record<string, string> = {};\n let baseSize: string | undefined;\n\n // Process each size\n sizeArray.forEach((size) => {\n if (typeof size === \"number\") {\n baseSize = `${size}px`;\n } else {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n mediaQueries[`@media (minWidth: ${BREAKPOINT_MAP[breakpoint]})`] =\n `${value}px`;\n }\n });\n\n // Create the style object with the correct structure\n return {\n width: baseSize || \"48px\",\n height: baseSize || \"48px\",\n ...Object.entries(mediaQueries).reduce(\n (acc, [query, size]) => ({\n ...acc,\n [query]: {\n width: size,\n height: size\n }\n }),\n {}\n )\n };\n};\n\nexport const Avatar = ({ src, size = 48, onClick, ...props }: AvatarProps) => {\n const sizeStyles = processSizes(size);\n\n const content = src ? (\n <img\n src={src}\n alt=\"avatar\"\n className=\"rounded-full\"\n style={sizeStyles}\n {...props}\n />\n ) : (\n <div style={sizeStyles} className=\"rounded-full bg-gray-200\" />\n );\n\n return onClick ? <Pressable onClick={onClick}>{content}</Pressable> : content;\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const noopFn = () => {};\n","import React, { SVGProps } from \"react\";\nimport { IconName, IconMap } from \"@deckai/icons\";\nimport { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\n\ntype Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\ntype ResponsiveSize = number | `${Breakpoint}:${number}`;\n\nexport type IconProps = {\n name: IconName;\n /** @default 24 */\n size?: ResponsiveSize | ResponsiveSize[];\n /** @default primary */\n color?: IconColors;\n title?: string;\n className?: string;\n style?: React.CSSProperties;\n} & Omit<SVGProps<SVGSVGElement>, \"aria-hidden\" | \"aria-label\">;\n\nconst COLOR_MAP: Record<IconColors, string> = {\n primary: \"#080808\",\n secondary: \"#666666\",\n white: \"#ffffff\",\n primaryBlue: \"#089CCB\"\n};\n\nconst BREAKPOINT_MAP: Record<Breakpoint, string> = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\"\n};\n\nconst processSizes = (\n sizes: ResponsiveSize | ResponsiveSize[] | undefined\n): React.CSSProperties => {\n if (!sizes) return { width: \"24px\", height: \"24px\" };\n\n const sizeArray = Array.isArray(sizes) ? sizes : [sizes];\n const mediaQueries: Record<string, string> = {};\n let baseSize: string | undefined;\n\n // Process each size\n sizeArray.forEach((size) => {\n if (typeof size === \"number\") {\n baseSize = `${size}px`;\n } else {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n mediaQueries[`@media (min-width: ${BREAKPOINT_MAP[breakpoint]})`] =\n `${value}px`;\n }\n });\n\n // Create the style object with the correct structure\n return {\n width: baseSize || \"24px\",\n height: baseSize || \"24px\",\n ...Object.entries(mediaQueries).reduce(\n (acc, [query, size]) => ({\n ...acc,\n [query]: {\n width: size,\n height: size\n }\n }),\n {}\n )\n };\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n name,\n size = 24,\n color = \"primary\",\n title,\n className,\n style = {},\n ...props\n },\n ref\n ) => {\n const IconComponent = IconMap[name];\n const sizeStyles = processSizes(size);\n\n return (\n <div\n className={cn(\"flex justify-center items-center\", className)}\n style={{\n ...sizeStyles,\n [\"--icon-stroke\" as string]: COLOR_MAP[color],\n ...style\n }}\n >\n <IconComponent\n ref={ref}\n aria-hidden={!title}\n aria-label={title}\n stroke={name.includes(\"filled\") ? undefined : COLOR_MAP[color]}\n {...props}\n />\n </div>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { IconName } from \"@deckai/icons\";\nimport { Icon, IconProps } from \"./Icon\";\n\nexport type InputProps = {\n className?: string;\n end?: React.ReactNode;\n /** renders an icon in the end slot */\n iconName?: IconName;\n /** Label text for the input */\n label?: string;\n /** Additional classes for the label */\n labelClassName?: string;\n} & React.InputHTMLAttributes<HTMLInputElement> &\n Pick<IconProps, \"color\" | \"size\" | \"title\">;\n\nexport const Input = ({\n className,\n end,\n iconName,\n color,\n size,\n title,\n label,\n labelClassName,\n id,\n ...props\n}: InputProps) => (\n <div className=\"space-y-2\">\n {label && (\n <label\n htmlFor={id}\n className={cn(\n \"block text-sm font-medium text-text-primary\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n <div className=\"relative\">\n <input\n id={id}\n className={cn(\n `font-sans lg:text-body-default text-xs flex w-full rounded-lg border border-secondary-50 bg-background-0 px-3 md:py-3 py-2 text-secondary ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-secondary text-text-primary ${focusRingStyles} disabled:cursor-not-allowed disabled:opacity-50 md:text-md`,\n end && \"pr-10\",\n className\n )}\n {...props}\n />\n {end && (\n <div className=\"absolute inset-y-0 right-0 flex items-center pr-3\">\n {iconName ? (\n <Icon name={iconName} color={color} size={size} title={title} />\n ) : (\n end\n )}\n </div>\n )}\n </div>\n </div>\n);\n","import React from \"react\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\n\nexport type OptionProps = {\n label: string;\n value: string;\n onChange?: (value: string) => void;\n selected?: boolean;\n};\n\nexport const Option = ({ value, label, onChange, selected }: OptionProps) => (\n <button\n type=\"button\"\n className={cn(\n \"relative w-full h-full text-left px-2 py-1.5 text-sm cursor-pointer hover:bg-gray-100 rounded\",\n selected && \"bg-gray-100\"\n )}\n onClick={() => {\n onChange?.(value);\n }}\n >\n {label}\n </button>\n);\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { Input } from \"./Input\";\nimport { OptionProps, Option } from \"./Option\";\nimport { focusRingStylesCoerced } from \"../utils/tailwind\";\n\nexport type ComboboxProps = {\n options: OptionProps[];\n placeholder?: string;\n value?: string;\n onChange: (value: string) => void;\n end?: React.ReactNode;\n className?: string;\n /** Label text for the combobox */\n label?: string;\n /** Additional classes for the label */\n labelClassName?: string;\n /** ID for accessibility */\n id?: string;\n};\n\nexport const Combobox = ({\n options,\n placeholder = \"Select an item...\",\n value,\n onChange,\n end,\n className,\n label,\n labelClassName,\n id\n}: ComboboxProps) => {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState<string | undefined>(value);\n\n const selectedOption: OptionProps | undefined = useMemo(\n () => options.find((option) => option.value === inputValue),\n [inputValue, options]\n );\n\n const filteredItems = options.filter((option) =>\n inputValue\n ? option.label.toLowerCase().includes(inputValue.toLowerCase())\n : options\n );\n\n const handleOptionChange = useCallback(\n (option: string) => {\n onChange(option);\n setOpen(false);\n setInputValue(selectedOption?.label);\n },\n [onChange, selectedOption?.label]\n );\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div\n className={`relative w-full font-sans text-text-secondary ${className}`}\n >\n <Popover.Trigger asChild>\n <div className=\"flex\">\n <div className=\"relative flex-1\">\n <Input\n id={id}\n label={label}\n labelClassName={labelClassName}\n placeholder={placeholder}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n end={end}\n className={`flex-1 ${open && focusRingStylesCoerced}`}\n />\n </div>\n </div>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n className=\"w-[--radix-popover-trigger-width] p-1 bg-white rounded-md shadow-lg border mt-1 z-20\"\n sideOffset={5}\n >\n <div className=\"max-h-60 overflow-auto flex flex-col items-start\">\n {filteredItems.length > 0 ? (\n filteredItems.map(\n ({ label: optionLabel, value: optionValue }, index) => (\n <Option\n onChange={handleOptionChange}\n value={optionValue}\n key={index}\n label={optionLabel}\n />\n )\n )\n ) : (\n <div className=\"px-2 py-1.5 text-sm text-gray-500\">\n No results found\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type LogoProps = {\n className?: string;\n};\n\nexport const Logo = ({ className }: LogoProps) => (\n <div className={cn(\"lg:w-[76px] lg:h-[25px] w-[58px] h-[19px]\", className)}>\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 76 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.8 15.584C0.8 13.9413 1.12 12.4693 1.76 11.168C2.4 9.84533 3.27467 8.8 4.384 8.032C5.49333 7.264 6.77333 6.88 8.224 6.88C9.39733 6.88 10.464 7.168 11.424 7.744C12.384 8.29867 13.1093 9.03467 13.6 9.952V0.639999H18.72V18.304C18.72 18.816 18.8053 19.1787 18.976 19.392C19.1467 19.584 19.424 19.7013 19.808 19.744V24C18.912 24.1707 18.1867 24.256 17.632 24.256C16.7573 24.256 16.0427 24.064 15.488 23.68C14.9547 23.296 14.624 22.7627 14.496 22.08L14.4 21.216C13.8027 22.2613 12.992 23.04 11.968 23.552C10.944 24.064 9.86667 24.32 8.736 24.32C7.584 24.32 6.51733 24.1067 5.536 23.68C4.576 23.232 3.73333 22.6133 3.008 21.824C2.304 21.0347 1.76 20.1067 1.376 19.04C0.992 17.9733 0.8 16.8213 0.8 15.584ZM13.632 17.664V14.144C13.4187 13.568 13.1093 13.0667 12.704 12.64C12.32 12.2133 11.872 11.872 11.36 11.616C10.8693 11.36 10.368 11.232 9.856 11.232C9.30133 11.232 8.78933 11.3493 8.32 11.584C7.872 11.8187 7.47733 12.1493 7.136 12.576C6.79467 12.9813 6.528 13.4507 6.336 13.984C6.16533 14.5173 6.08 15.0827 6.08 15.68C6.08 16.2987 6.176 16.8747 6.368 17.408C6.58133 17.92 6.86933 18.3787 7.232 18.784C7.59467 19.168 8.02133 19.4667 8.512 19.68C9.00267 19.8933 9.536 20 10.112 20C10.4747 20 10.8267 19.9467 11.168 19.84C11.5093 19.712 11.8293 19.552 12.128 19.36C12.448 19.168 12.736 18.9227 12.992 18.624C13.248 18.3253 13.4613 18.0053 13.632 17.664ZM30.0895 24.32C28.6602 24.32 27.3908 24.096 26.2815 23.648C25.1722 23.1787 24.2228 22.5493 23.4335 21.76C22.6655 20.9707 22.0788 20.064 21.6735 19.04C21.2682 17.9947 21.0655 16.9067 21.0655 15.776C21.0655 14.1547 21.4175 12.6827 22.1215 11.36C22.8468 10.016 23.8815 8.93867 25.2255 8.128C26.5695 7.296 28.1908 6.88 30.0895 6.88C31.9882 6.88 33.5988 7.28533 34.9215 8.096C36.2655 8.90667 37.2895 9.97333 37.9935 11.296C38.6975 12.5973 39.0495 14.016 39.0495 15.552C39.0495 15.8507 39.0282 16.1493 38.9855 16.448C38.9642 16.7253 38.9428 16.9707 38.9215 17.184H26.5055C26.5695 17.9307 26.7722 18.56 27.1135 19.072C27.4762 19.584 27.9348 19.9787 28.4895 20.256C29.0442 20.512 29.6308 20.64 30.2495 20.64C31.0175 20.64 31.7322 20.4587 32.3935 20.096C33.0762 19.7333 33.5455 19.2427 33.8015 18.624L38.1535 19.84C37.7268 20.7147 37.1188 21.4933 36.3295 22.176C35.5615 22.8373 34.6442 23.36 33.5775 23.744C32.5322 24.128 31.3695 24.32 30.0895 24.32ZM26.3775 14.048H33.6735C33.5882 13.344 33.3855 12.736 33.0655 12.224C32.7455 11.6907 32.3188 11.2853 31.7855 11.008C31.2522 10.7093 30.6655 10.56 30.0255 10.56C29.3642 10.56 28.7668 10.7093 28.2335 11.008C27.7215 11.2853 27.3055 11.6907 26.9855 12.224C26.6655 12.736 26.4628 13.344 26.3775 14.048ZM48.762 24.32C47.3327 24.32 46.0633 24.0853 44.954 23.616C43.8447 23.1467 42.8953 22.5067 42.106 21.696C41.338 20.8853 40.7513 19.9573 40.346 18.912C39.9407 17.8667 39.738 16.7573 39.738 15.584C39.738 14.048 40.09 12.6187 40.794 11.296C41.5193 9.97333 42.554 8.90667 43.898 8.096C45.242 7.28533 46.8633 6.88 48.762 6.88C50.682 6.88 52.3033 7.296 53.626 8.128C54.97 8.93867 55.9727 10.0053 56.634 11.328L51.642 12.832C51.322 12.32 50.906 11.9253 50.394 11.648C49.9033 11.3707 49.3487 11.232 48.73 11.232C48.026 11.232 47.386 11.4133 46.81 11.776C46.2553 12.1387 45.8073 12.64 45.466 13.28C45.146 13.92 44.986 14.688 44.986 15.584C44.986 16.4587 45.1567 17.2267 45.498 17.888C45.8393 18.5493 46.2873 19.072 46.842 19.456C47.3967 19.8187 48.026 20 48.73 20C49.1567 20 49.5513 19.936 49.914 19.808C50.298 19.6587 50.6393 19.456 50.938 19.2C51.258 18.944 51.5033 18.656 51.674 18.336L56.666 19.872C56.2607 20.7253 55.674 21.4933 54.906 22.176C54.1593 22.8373 53.274 23.36 52.25 23.744C51.226 24.128 50.0633 24.32 48.762 24.32ZM69.636 24L65.252 17.28L63.46 19.104V24H58.34V0.639999H63.46V14.144L69.156 7.2H74.564L68.516 14.432L75.076 24H69.636Z\"\n fill=\"#080808\"\n />\n </svg>\n </div>\n);\n","import React from \"react\";\nimport { IconName } from \"@deckai/icons\";\nimport { Icon, IconProps } from \"./Icon\";\nimport { Pressable, PressableProps } from \"./Pressable\";\n\nexport type NavbarItemProps = {\n iconName: IconName;\n hasNotification?: boolean;\n} & Pick<IconProps, \"color\" | \"title\"> &\n PressableProps;\n\nexport const NavbarItem = ({\n iconName,\n hasNotification,\n color,\n title,\n ...props\n}: NavbarItemProps) => {\n console.log({ hasNotification });\n return (\n <Pressable className=\"relative lg:px-7 md:px-5 py-3\" {...props}>\n <Icon name={iconName} color={color} title={title} />\n {hasNotification && (\n <div className=\"w-3 h-3 bg-red-500 rounded-full absolute top-3 right-5\" />\n )}\n </Pressable>\n );\n};\n","import React from \"react\";\nimport { Avatar } from \"./Avatar\";\nimport { Combobox } from \"./Combobox\";\nimport { Icon } from \"./Icon\";\nimport { Logo } from \"./Logo\";\nimport { Pressable } from \"./Pressable\";\nimport { OptionProps } from \"./Option\";\nimport { NavbarItem, NavbarItemProps } from \"./NavbarItem\";\n\nexport type NavbarProps = {\n searchOptions: OptionProps[];\n onSearchChange: (value: string) => void;\n navbarItems: NavbarItemProps[];\n onLogoClick?: () => void;\n onProfileClick?: () => void;\n avatarImage: string;\n};\n\nexport const Navbar = ({\n searchOptions,\n onSearchChange,\n navbarItems,\n onLogoClick,\n onProfileClick,\n avatarImage\n}: NavbarProps) => (\n <div className=\"flex py-6 lg:px-10 md:px-5 px-6 justify-between md:gap-6 gap-3 sm:relative sticky top-0\">\n <div className=\"flex flex-1 md:gap-6 gap-3 items-center\">\n <Pressable onClick={onLogoClick} title=\"Deck AI\">\n <Logo />\n </Pressable>\n <Combobox\n options={searchOptions}\n placeholder=\"Search for a creator, type of content, or platform...\"\n end={<Icon name=\"search-normal\" size={[\"lg:24\", 18]} />}\n onChange={onSearchChange}\n className=\"flex-1 max-w-lg\"\n />\n </div>\n <div className=\"flex gap-4\">\n <div className=\"md:flex hidden gap-2 border-b-2 border-stroke items-center\">\n {navbarItems.map(({ iconName, title, onClick }) => (\n <NavbarItem\n key={title}\n iconName={iconName}\n title={title}\n onClick={onClick}\n />\n ))}\n </div>\n <div className=\"flex\">\n <Avatar\n onClick={onProfileClick}\n src={avatarImage}\n size={[\"sm:48\", 40]}\n />\n </div>\n </div>\n </div>\n);\n","import React from \"react\";\nimport {\n Colors,\n TextColorVariant,\n PrimaryShades,\n SecondaryShades,\n TertiaryShades,\n Typography\n} from \"../types/tailwind\";\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"strong\"\n | \"em\"\n | \"blockquote\"\n | \"pre\"\n | \"code\"\n | \"small\"\n | \"label\"\n | \"a\";\n\n// HTML element mapping type\ntype HTMLElementByTag = {\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n h1: HTMLHeadingElement;\n h2: HTMLHeadingElement;\n h3: HTMLHeadingElement;\n h4: HTMLHeadingElement;\n h5: HTMLHeadingElement;\n h6: HTMLHeadingElement;\n strong: HTMLElement;\n em: HTMLElement;\n blockquote: HTMLQuoteElement;\n pre: HTMLPreElement;\n code: HTMLElement;\n small: HTMLElement;\n label: HTMLLabelElement;\n a: HTMLAnchorElement;\n};\n\n// HTML props mapping type\ntype HTMLPropsMap = {\n p: React.HTMLAttributes<HTMLParagraphElement>;\n span: React.HTMLAttributes<HTMLSpanElement>;\n h1: React.HTMLAttributes<HTMLHeadingElement>;\n h2: React.HTMLAttributes<HTMLHeadingElement>;\n h3: React.HTMLAttributes<HTMLHeadingElement>;\n h4: React.HTMLAttributes<HTMLHeadingElement>;\n h5: React.HTMLAttributes<HTMLHeadingElement>;\n h6: React.HTMLAttributes<HTMLHeadingElement>;\n strong: React.HTMLAttributes<HTMLElement>;\n em: React.HTMLAttributes<HTMLElement>;\n blockquote: React.HTMLAttributes<HTMLQuoteElement>;\n pre: React.HTMLAttributes<HTMLPreElement>;\n code: React.HTMLAttributes<HTMLElement>;\n small: React.HTMLAttributes<HTMLElement>;\n label: React.LabelHTMLAttributes<HTMLLabelElement>;\n a: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\">;\n};\n\ntype ColorCategory = keyof Omit<Colors, \"stroke\" | \"background\">;\ntype ColorValue<T extends ColorCategory> = T extends \"text\"\n ? TextColorVariant\n : T extends \"primary\"\n ? keyof PrimaryShades\n : T extends \"secondary\"\n ? keyof SecondaryShades\n : T extends \"tertiary\"\n ? keyof TertiaryShades\n : never;\n\ntype ColorKey = {\n [T in ColorCategory]: `${T}-${ColorValue<T>}`;\n}[ColorCategory];\n\ntype TypographyCategory = keyof Typography;\ntype TypographyValue<T extends TypographyCategory> = Extract<\n keyof Typography[T],\n string | number | bigint | boolean | null | undefined\n>;\ntype TypographyKey = {\n [T in TypographyCategory]: `${T}-${TypographyValue<T>}`;\n}[TypographyCategory];\n\nconst HEADING_ELEMENT_MAP: Record<string, TextElement> = {\n xl: \"h1\",\n lg: \"h1\",\n md: \"h2\",\n sm: \"h3\",\n xs: \"h4\"\n};\n\nconst getElementFromVariant = (variant: TypographyKey): TextElement => {\n const [category, size] = variant.split(\"-\");\n\n if (category === \"heading\") {\n return HEADING_ELEMENT_MAP[size] || \"p\";\n }\n\n if (category === \"label\") {\n return \"label\";\n }\n\n return \"p\";\n};\n\ntype Weight = \"light\" | \"regular\" | \"semibold\" | \"bold\";\n\nconst fontWeight: Record<Weight, string> = {\n light: \"font-light\",\n regular: \"font-regular\",\n semibold: \"font-semibold\",\n bold: \"font-bold\"\n};\n\n// Add breakpoint types\ntype Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\ntype ResponsiveVariant = TypographyKey | `${Breakpoint}:${TypographyKey}`;\n\n// Update TextProps to use ResponsiveVariant\nexport type TextProps<T extends TextElement = \"p\"> = {\n variant?: ResponsiveVariant | ResponsiveVariant[];\n color?: ColorKey | \"inherit\";\n as?: T;\n className?: string;\n children: React.ReactNode;\n weight?: Weight;\n} & HTMLPropsMap[T];\n\n// Add helper function to process variants\nconst processVariants = (\n variants: ResponsiveVariant | ResponsiveVariant[] | undefined\n): string => {\n if (!variants) return \"text-body-default\";\n\n const variantArray = Array.isArray(variants) ? variants : [variants];\n\n return variantArray\n .map((variant) => {\n if (variant.includes(\":\")) {\n const [breakpoint, typographyClass] = variant.split(\":\");\n return `${breakpoint}:text-${typographyClass}`;\n }\n return `text-${variant}`;\n })\n .join(\" \");\n};\n\nexport const Text = React.forwardRef(\n <T extends TextElement = \"p\">(\n {\n variant = \"body-default\",\n color = \"text-primary\",\n as,\n className,\n children,\n weight,\n ...props\n }: TextProps<T>,\n ref: React.ForwardedRef<HTMLElementByTag[T]>\n ) => {\n // Process typography classes with breakpoints\n const typographyClasses = processVariants(variant);\n\n // Get color styles\n const colorClasses =\n color && color === \"inherit\" ? \"inherit\" : color ? `text-${color}` : \"\";\n\n const suggestedElement = React.useMemo(() => {\n const baseVariant =\n typeof variant === \"string\"\n ? variant.split(\":\").pop()!\n : Array.isArray(variant)\n ? variant[0].split(\":\").pop()!\n : \"body-default\";\n return getElementFromVariant(baseVariant as TypographyKey);\n }, [variant]);\n\n const Component = (as || suggestedElement) as T;\n\n return (\n // @ts-expect-error TODO: figure this out\n <Component\n ref={ref}\n className={`font-sans antialiased ${typographyClasses} ${colorClasses} ${\n weight ? `!${fontWeight[weight]}` : \"\"\n } ${className ?? \"\"}`}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nText.displayName = \"Text\";\n","import React from \"react\";\nimport { Text, TextProps } from \"./Text\";\nimport { cn } from \"../utils\";\nimport { focusRingStyles } from \"../utils/tailwind\";\n\nexport type LinkProps = {\n href: string;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n} & Pick<TextProps, \"variant\" | \"color\"> &\n React.AnchorHTMLAttributes<HTMLAnchorElement>;\n\nexport const Link = ({\n children,\n color = \"text-primary\",\n variant = \"body-default-semibold\",\n href,\n className,\n ...props\n}: LinkProps) => (\n <Text variant={variant} color={color}>\n <a\n href={href}\n className={cn(\n \"hover:opacity-80 transition-all active:scale-95 hover:underline\",\n focusRingStyles,\n className\n )}\n {...props}\n >\n {children}\n </a>\n </Text>\n);\n","import React, { useState, useCallback, HTMLAttributes } from \"react\";\nimport { Text } from \"./Text\";\nimport { Pressable, PressableProps } from \"./Pressable\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\n\nexport type TagProps = {\n children: React.ReactNode;\n padded?: boolean;\n color?: \"primary\" | \"text\";\n onClose?: () => void;\n} & HTMLAttributes<HTMLDivElement> &\n PressableProps;\n\nexport const Tag = ({\n children,\n color = \"primary\",\n className,\n onClose,\n ...pressableProps\n}: TagProps) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n }, []);\n\n const content = (\n <div\n className={cn(\n \"flex gap-2\",\n onClose\n ? \"justify-between items-center\"\n : \"items-center justify-center\",\n \"hover:bg-primary-100 rounded bg-secondary-400 px-2 py-1 sm:px-3 sm:py-1.5 h-min hover:text-white\",\n color === \"primary\" ? \"text-primary-100\" : \"text-primary\",\n className\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {typeof children === \"string\" ? (\n <Text\n color=\"inherit\"\n variant={[\"md:body-default-medium\", \"body-xxs-medium\"]}\n className=\"truncate pt-0.5\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n {onClose && (\n <Pressable\n {...pressableProps}\n onClick={onClose}\n className=\"flex items-center justify-center\"\n >\n <Icon\n name=\"close\"\n size={10}\n color={isHovered ? \"white\" : \"primaryBlue\"}\n />\n </Pressable>\n )}\n </div>\n );\n\n return onClose ? (\n content\n ) : (\n <Pressable {...pressableProps}>{content}</Pressable>\n );\n};\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../utils\";\n\nconst spinnerVariants = cva(\n \"animate-spin rounded-full border-current border-t-transparent\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4 border-4\",\n md: \"h-6 w-6 border-4\",\n lg: \"h-8 w-8 border-8\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n }\n);\n\nexport type SpinnerProps = {\n className?: string;\n customSize?: number;\n} & VariantProps<typeof spinnerVariants>;\n\nexport const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ size, className, customSize, ...props }, ref) => {\n const styles = customSize\n ? {\n width: customSize,\n height: customSize,\n borderWidth: Math.max(2, Math.floor(customSize / 16))\n }\n : {};\n\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n ref={ref}\n className={cn(spinnerVariants({ size }), \"text-primary-100\", className)}\n style={styles}\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n }\n);\n\nSpinner.displayName = \"Spinner\";\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { focusRingStylesCoerced } from \"../utils/tailwind\";\nimport { Input } from \"./Input\";\nimport { OptionProps, Option } from \"./Option\";\nimport { Tag } from \"./Tag\";\nimport { Text } from \"./Text\";\nimport { Icon } from \"./Icon\";\nimport { Spinner } from \"./Spinner\";\n\nexport type MultiSelectComboboxProps = {\n options: OptionProps[];\n selectedValues: string[];\n onSelectionChange: (values: string[]) => void;\n placeholder?: string;\n className?: string;\n label?: string;\n disabled?: boolean;\n labelClassName?: string;\n id?: string;\n maxSelections?: number;\n noOptionsMessage?: string;\n loading?: boolean;\n errorMessage?: string;\n};\n\nexport const MultiSelectCombobox = ({\n options,\n selectedValues,\n onSelectionChange,\n placeholder = \"Select items...\",\n className,\n label,\n labelClassName,\n id,\n maxSelections,\n disabled,\n noOptionsMessage,\n loading,\n errorMessage\n}: MultiSelectComboboxProps) => {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n\n const selectedOptions = useMemo(\n () => options.filter((option) => selectedValues.includes(option.value)),\n [options, selectedValues]\n );\n\n const filteredOptions = useMemo(\n () =>\n options.filter(\n (option) =>\n !selectedValues.includes(option.value) &&\n option.label.toLowerCase().includes(inputValue.toLowerCase())\n ),\n [options, selectedValues, inputValue]\n );\n\n const handleOptionSelect = useCallback(\n (value: string) => {\n onSelectionChange([...selectedValues, value]);\n setInputValue(\"\");\n setOpen(false);\n },\n [maxSelections, onSelectionChange, selectedValues]\n );\n\n const handleRemoveTag = useCallback(\n (valueToRemove: string) => {\n onSelectionChange(\n selectedValues.filter((value) => value !== valueToRemove)\n );\n },\n [onSelectionChange, selectedValues]\n );\n\n return (\n <div className=\"py-2\">\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div\n className={`relative w-full font-sans text-text-secondary ${className}`}\n >\n <Popover.Trigger asChild>\n <div className=\"relative flex-1\">\n <Input\n id={id}\n label={label}\n labelClassName={labelClassName}\n placeholder={\n maxSelections && selectedValues.length >= maxSelections\n ? `Maximum ${maxSelections} items selected`\n : placeholder\n }\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n className={`flex-1 ${open && focusRingStylesCoerced}`}\n disabled={\n disabled ||\n (!!maxSelections && selectedValues.length >= maxSelections)\n }\n end={\n loading ? (\n <Spinner size=\"sm\" />\n ) : (\n <Icon name=\"search-normal\" size={[\"lg:24\", 18]} />\n )\n }\n />\n </div>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n className=\"w-[--radix-popover-trigger-width] p-1 bg-white rounded-md shadow-lg border z-20\"\n sideOffset={5}\n >\n <div className=\"max-h-60 overflow-auto flex flex-col items-start\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map(({ label, value }) => (\n <Option\n key={value}\n label={label}\n value={value}\n onChange={handleOptionSelect}\n />\n ))\n ) : (\n <Text variant=\"label-default\" className=\"text-text-secondary\">\n {noOptionsMessage || \"No results found\"}\n </Text>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n <div className=\"flex flex-col gap-1 pt-2\">\n {errorMessage && (\n <Text variant=\"label-default\" color=\"tertiary-20\">\n {errorMessage}\n </Text>\n )}\n <div className=\"flex flex-wrap gap-2\">\n {selectedOptions.map((option) => (\n <Tag\n key={option.value}\n onClose={() => handleRemoveTag(option.value)}\n >\n {option.label}\n </Tag>\n ))}\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport * as RadixTabs from \"@radix-ui/react-tabs\";\nimport { Text } from \"./Text\";\n\nexport type TabItem = {\n value: string;\n label: string;\n content: React.ReactNode;\n};\n\nexport type TabsProps = {\n items: TabItem[];\n defaultValue?: string;\n className?: string;\n onChange?: (value: string) => void;\n};\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n ({ items, defaultValue, className = \"\", onChange }, ref) => {\n return (\n <RadixTabs.Root\n defaultValue={defaultValue || items[0]?.value}\n onValueChange={onChange}\n className={className}\n >\n <RadixTabs.List\n ref={ref}\n className=\"flex gap-8 border-b border-stroke mb-8\"\n >\n {items.map((item) => (\n <RadixTabs.Trigger\n key={item.value}\n value={item.value}\n className=\"group pb-4 relative flex-1\"\n >\n <Text\n variant={[\"sm:body-lg-semibold\", \"body-default-semibold\"]}\n color=\"text-secondary\"\n className=\"group-data-[state=active]:text-text-primary transition-colors sm:text-inherit\"\n >\n {item.label}\n </Text>\n <div className=\"absolute bottom-0 left-0 right-0 h-1 bg-primary-100 scale-x-0 group-data-[state=active]:scale-x-100 transition-transform\" />\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n\n {items.map((item) => (\n <RadixTabs.Content key={item.value} value={item.value}>\n {item.content}\n </RadixTabs.Content>\n ))}\n </RadixTabs.Root>\n );\n }\n);\n\nTabs.displayName = \"Tabs\";\n","import React from \"react\";\nimport { Icon } from \"./Icon\";\nimport { Tag } from \"./Tag\";\nimport { Text } from \"./Text\";\n\nexport type WorkCardProps = {\n socialIconName: \"instagram-filled\" | \"tiktok-filled\" | \"youtube-filled\";\n tags: string[];\n caption: string;\n /** play count should already be formatted with k or m */\n playCount: string;\n backgroundImage: string;\n};\n\nexport const WorkCard = ({\n socialIconName,\n tags,\n caption,\n playCount,\n backgroundImage\n}: WorkCardProps) => {\n return (\n <div\n className={`flex flex-col justify-between p-4 sm:w-[292px] sm:h-[403px] w-[240px] h-[350px] rounded-2xl relative overflow-hidden`}\n style={{\n backgroundColor: \"#e7e7e7\",\n backgroundImage: `url(${backgroundImage})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\"\n }}\n >\n <div className=\"flex justify-between items-center\">\n <div className=\"flex items-center justify-center bg-overlay h-10 w-10 rounded-full\">\n <Icon name={socialIconName} size={20} color=\"white\" />\n </div>\n <div className=\"flex gap-2 items-center\">\n {tags.map((tag, index) => (\n <Tag key={index} color=\"text\">\n {tag}\n </Tag>\n ))}\n </div>\n </div>\n <div className=\"flex flex-col gap-1 p-2 rounded-lg bg-overlay\">\n <Text variant=\"body-default-medium\" className=\"text-white\">\n {caption}\n </Text>\n <div className=\"flex gap-2\">\n <Icon name=\"play\" size={16} color=\"white\" />\n <Text variant=\"body-xs-medium\" className=\"text-white\">\n {playCount}\n </Text>\n </div>\n </div>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { Text } from \"./Text\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { cn } from \"../utils\";\n\nexport type ButtonProps = {\n /** @default filled */\n variant?: \"filled\" | \"outlined\";\n /** @default primary */\n color?: \"black\" | \"accent\" | \"secondary\";\n isLoading?: boolean;\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n start?: React.ReactNode;\n end?: React.ReactNode;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const filled = {\n black: \"bg-text-primary text-white\",\n // fade it slightly\n accent: \"bg-primary-100 text-white\",\n secondary: \"bg-secondary-100 text-secondary\"\n};\n\nexport const outlined = {\n black: \"border border-text-primary text-text-primary\",\n accent: \"border border-primary-100 text-primary-100\",\n secondary: \"border border-text-secondary text-secondary\"\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"filled\",\n color = \"black\",\n isLoading = false,\n children,\n disabled,\n ...props\n },\n ref\n ) => (\n <button\n ref={ref}\n className={cn(\n `\n sm:px-7 px-4\n py-2\n inline-flex items-center justify-center\n rounded-lg \n transition-colors duration-200\n disabled:opacity-50 disabled:pointer-events-none\n hover:opacity-80 active:scale-95 \n truncate`,\n focusRingStyles,\n variant === \"filled\" ? filled[color] : outlined[color],\n className\n )}\n disabled={disabled || isLoading}\n type=\"button\"\n {...props}\n >\n {typeof children === \"string\" ? (\n <Text\n variant={[\"sm:body-default-bold\", \"body-xxs-semibold\"]}\n color=\"inherit\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n </button>\n )\n);\n\nButton.displayName = \"Button\";\n","import React from \"react\";\nimport { cn } from \"../utils\";\nimport { outlined } from \"./Button\";\nimport { Icon } from \"./Icon\";\nimport { Pressable } from \"./Pressable\";\n\nexport type EditButtonProps = {\n className?: string;\n onClick?: () => void;\n};\n\nexport const EditButton = ({ className, onClick }: EditButtonProps) => {\n return (\n <Pressable\n className={cn(\n \"absolute lg:top-10 md:top-8 top-4 lg:right-10 md:right-8 right-4 lg:px-2 lg:py-2 px-1 py-1 rounded-lg\",\n outlined.black,\n className\n )}\n onClick={onClick}\n >\n <Icon color=\"primary\" name=\"edit-2\" />\n </Pressable>\n );\n};\n\nEditButton.displayName = \"EditButton\";\n","import React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type IllustrationProps = {\n className?: string;\n /** svg string */\n src?: string;\n};\n\nexport const Illustration = ({\n className,\n src = profileIllustration\n}: IllustrationProps) => (\n <div\n className={cn(\n \"lg:w-[150px] lg:h-[150px] md:w-[100px] md:h-[100px] w-[150px] h-[150px]\",\n className\n )}\n >\n {src}\n </div>\n);\n\nconst profileIllustration = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"150\" viewBox=\"0 0 150 150\" fill=\"none\">\n <path d=\"M13.5135 116.732C13.994 107.975 20.208 100.58 28.605 98.665C36.5925 96.8435 44.9885 100.338 49.436 107.38C50.9125 102.507 53.3995 99.942 54.9625 98.665C62.411 92.579 75.7885 93.725 87.6965 102.279C88.5765 101.658 93.658 98.202 100.45 99.5155C107.749 100.928 111.217 106.726 111.715 107.592C118.282 105.741 124.23 107.743 126.169 111.631C126.534 112.362 127.288 114.224 126.594 117.157C88.901 117.015 51.2075 116.873 13.5135 116.732Z\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M25.417 114.963C25.417 114.963 9.04999 111.569 12.026 88.432C27.6845 94.2725 29.456 114.963 29.456 114.963\" fill=\"white\"/>\n <path d=\"M25.417 114.963C25.417 114.963 9.04999 111.569 12.026 88.432C27.6845 94.2725 29.456 114.963 29.456 114.963\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M22.866 82.6535C22.639 82.484 19.1815 110.219 29.668 115.601L33.3525 116.094C33.3525 116.094 33.7775 90.801 22.866 82.6535Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M22.866 82.6536C22.866 82.6536 28.109 112.977 31.7225 115.173\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M41.9965 92.9969C41.9965 92.9969 30.4475 98.033 31.156 114.963C35.478 116.093 37.2495 116.093 37.2495 116.093C37.2495 116.093 45.8225 102.774 41.9965 92.9969Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M41.9965 92.9969C41.9965 92.9969 37.6745 109.717 33.636 115.172\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M58.3101 88.432H83.0836V114.859H58.3101V88.432Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M55.5341 88.432H80.3076V114.859H55.5341V88.432Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M146.174 114.869H5.88503C5.88503 114.869 -8.59247 126.721 39.233 124.383C50.711 133.522 111.929 138.181 114.267 122.355C122.769 126.083 145.985 128.736 146.174 114.869ZM129.371 103.539C129.371 103.539 130.965 107.645 132.086 106.998C133.207 106.351 139.748 102.146 139.748 102.146C139.748 102.146 139.17 100.604 137.717 100.561C136.263 100.517 131.804 101.002 131.804 101.002C131.804 101.002 129.737 102.197 129.371 103.539Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M130.391 100.469C130.412 100.689 130.303 100.909 130.237 101.041C129.967 101.742 129.55 102.443 128.972 102.954L129.458 103.22C130.287 102.861 130.896 102.151 131.488 101.414L130.391 100.469Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M130.237 101.041C130.303 100.909 130.412 100.689 130.391 100.469L129.229 99.468L126.571 101.641L128.972 102.953C129.55 102.443 129.967 101.742 130.237 101.041Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M90.3895 118.016C90.3895 118.016 89.8095 122.382 91.1035 122.355C92.3975 122.328 100.155 121.792 100.155 121.792C100.155 121.792 100.39 120.162 99.138 119.423C97.885 118.685 93.743 116.964 93.743 116.964C93.743 116.964 91.3565 117.016 90.3895 118.016Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M89.5551 115.6L90.7096 118.019C91.6426 117.746 92.7896 117.84 93.6601 117.469L93.1456 114.859C92.0151 115.398 90.8306 115.788 89.5551 115.6Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M93.1454 114.859L92.7744 112.976L88.8774 114.181L89.5549 115.6C90.8304 115.787 92.0149 115.398 93.1454 114.859Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M81.013 44.033C81.013 44.033 93.436 65.437 94.853 69.9715L89.716 70.9635C89.716 70.9635 84.8995 64.254 83.4455 60.5135C80.4185 52.727 79.5235 44.3835 81.013 44.033Z\" fill=\"#089CCB\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M81.17 44.2764C76.2185 36.4604 71.306 41.2549 70.2905 42.7654C69.275 44.2764 61.233 69.1724 65.059 72.3349C68.885 75.4974 87.1295 70.9864 87.1295 70.9864C87.1295 70.9864 86.1255 63.8054 84.574 56.4564\" fill=\"#089CCB\"/>\n <path d=\"M81.17 44.2764C76.2185 36.4604 71.306 41.2549 70.2905 42.7654C69.275 44.2764 61.233 69.1724 65.059 72.3349C68.885 75.4974 87.1295 70.9864 87.1295 70.9864C87.1295 70.9864 86.1255 63.8054 84.574 56.4564\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M84.2955 70.5031C84.2955 70.5031 100.556 66.9416 105.87 72.3356C111.184 77.7296 129.889 99.6216 129.889 99.6216C129.889 99.6216 129.783 102.279 127.87 102.172C123.087 102.172 99.387 85.8061 98.1115 81.6616C93.01 84.6371 85.1455 87.7191 80.894 85.1686\" fill=\"white\"/>\n <path d=\"M84.2955 70.5031C84.2955 70.5031 100.556 66.9416 105.87 72.3356C111.184 77.7296 129.889 99.6216 129.889 99.6216C129.889 99.6216 129.783 102.279 127.87 102.172C123.087 102.172 99.387 85.8061 98.1115 81.6616C93.01 84.6371 85.1455 87.7191 80.894 85.1686\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M75.3825 83.043C75.3825 83.043 82.595 104.935 88.334 114.712C90.247 115.775 93.8605 113.118 93.8605 113.118C93.8605 113.118 91.31 76.6665 86.308 69.06C81.306 61.4535 71.198 71.5655 71.198 71.5655L65.0585 72.335C65.0585 72.335 58.2565 81.7795 64.6335 86.29C71.0105 90.8005 76.7295 86.9925 76.7295 86.9925M87.8385 44.4425C87.8385 44.4425 90.153 39.0815 91.074 37.83C91.995 36.5785 93.8845 37.1295 94.215 38.578C94.5455 40.0265 93.1285 42.3215 93.176 42.4255C93.223 42.5295 94.0025 42.4825 94.026 43.309C94.0495 44.1355 92.5145 43.805 91.7585 44.4425C91.0025 45.08 90.2235 45.954 90.2235 45.954C90.2235 45.954 87.744 45.3215 87.8385 44.4425Z\" fill=\"white\"/>\n <path d=\"M75.3825 83.043C75.3825 83.043 82.595 104.935 88.334 114.712C90.247 115.775 93.8605 113.118 93.8605 113.118C93.8605 113.118 91.31 76.6665 86.308 69.06C81.306 61.4535 71.198 71.5655 71.198 71.5655L65.0585 72.335C65.0585 72.335 58.2565 81.7795 64.6335 86.29C71.0105 90.8005 76.7295 86.9925 76.7295 86.9925M87.8385 44.4425C87.8385 44.4425 90.153 39.0815 91.074 37.83C91.995 36.5785 93.8845 37.1295 94.215 38.578C94.5455 40.0265 93.1285 42.3215 93.176 42.4255C93.223 42.5295 94.0025 42.4825 94.026 43.309C94.0495 44.1355 92.5145 43.805 91.7585 44.4425C91.0025 45.08 90.2235 45.954 90.2235 45.954C90.2235 45.954 87.744 45.3215 87.8385 44.4425Z\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M74.0931 42.426C75.4621 42.361 80.8951 55.377 80.8951 55.377C80.8951 55.377 83.8711 48.5045 87.4846 43.616C89.1141 43.191 91.1691 45.458 91.1691 45.458C91.1691 45.458 87.0596 66.429 81.5196 66.237C75.9796 66.045 70.3386 51.622 70.3386 51.622\" fill=\"#089CCB\"/>\n <path d=\"M74.0931 42.426C75.4621 42.361 80.8951 55.377 80.8951 55.377C80.8951 55.377 83.8711 48.5045 87.4846 43.616C89.1141 43.191 91.1691 45.458 91.1691 45.458C91.1691 45.458 87.0596 66.429 81.5196 66.237C75.9796 66.045 70.3386 51.622 70.3386 51.622\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M77.6826 42.388V38.1845C77.6826 38.1845 83.5871 39.1765 82.3116 35.209C81.0361 31.2415 76.1711 25.5265 74.2816 26.046C72.3921 26.5655 69.7216 30.4385 71.0566 33.603C72.3916 36.7675 73.1006 37.1455 73.1476 38.1845C73.1946 39.2235 73.5726 40.8295 73.5726 40.8295C73.5726 40.8295 75.3496 42.7135 77.6826 42.388Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M71.873 37.1925C71.873 37.1925 74.4 36.9325 74.3765 35.4215C74.353 33.91 73.1485 32.8 74.046 32.304C74.9435 31.808 75.5575 33.461 76.0535 33.485C76.5495 33.5085 76.595 33.0125 76.595 33.0125C76.595 33.0125 74.92 30.509 75.3215 30.037C75.723 29.565 79.3365 28.124 78.2975 26.4C77.2585 24.676 74.117 23.7785 73.1015 24.676C72.086 25.5735 71.8735 27.368 71.8735 27.368C71.8735 27.368 69.2045 26.494 69.063 28.832C68.9215 31.17 69.6535 31.0045 69.6535 31.0045C69.6535 31.0045 67.646 33.9565 69.252 34.594C70.858 35.2315 71.401 35.1845 71.401 35.1845C71.401 35.1845 70.6685 37.1215 71.873 37.1925Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M133.231 100.182C133.292 100.454 133.169 100.73 133.114 101.004C133.059 101.278 133.117 101.628 133.379 101.725C133.564 101.794 133.78 101.693 133.897 101.533C134.013 101.373 134.048 101.168 134.055 100.97C134.062 100.772 134.044 100.573 134.073 100.377C134.093 100.241 134.151 100.091 134.279 100.042C134.461 99.9724 134.649 100.155 134.696 100.343C134.762 100.603 134.672 100.875 134.673 101.143C134.674 101.411 134.838 101.727 135.106 101.716C135.343 101.707 135.491 101.439 135.495 101.202C135.499 100.965 135.411 100.735 135.402 100.498C135.397 100.385 135.421 100.255 135.517 100.194C135.677 100.093 135.882 100.277 135.911 100.464C135.94 100.651 135.874 100.842 135.897 101.03C135.913 101.159 135.98 101.291 136.099 101.343C136.294 101.429 136.523 101.251 136.572 101.043C136.621 100.836 136.546 100.621 136.473 100.421M95.0655 116.766C95.0655 116.766 93.3295 118.537 94.2155 118.821C95.101 119.104 95.2785 116.979 96.0225 117.298C96.7665 117.617 94.4285 118.679 95.739 119.175C97.05 119.671 96.554 117.227 97.4395 117.652C98.325 118.077 96.6245 119.246 97.4395 119.494\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M139.065 115.811C142.43 115.811 145.158 113.083 145.158 109.718C145.158 106.352 142.43 103.625 139.065 103.625C135.7 103.625 132.971 106.352 132.971 109.718C132.971 113.083 135.7 115.811 139.065 115.811Z\" fill=\"#089CCB\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M14.3635 93.493C14.3635 93.493 23.4325 113.341 28.8885 114.859\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M47.4245 72.2056C47.4495 71.2236 47.4505 71.1736 47.476 70.1906L45.0085 69.1431C44.777 68.6281 44.637 68.3176 44.4045 67.8021L45.255 65.2611L43.7109 63.9641L41.3545 65.2401C40.8065 65.1001 40.477 65.0166 39.929 64.8766L38.472 62.6276C37.508 62.8216 37.459 62.8321 36.4955 63.0256L36.0234 65.6636C35.5729 66.0046 35.302 66.2096 34.8505 66.5511L32.1835 66.2881L31.263 68.0811L33.0315 70.0956C33.017 70.6601 33.008 71.0006 32.9935 71.5651L31.1245 73.4861C31.5285 74.3821 31.5495 74.4281 31.9525 75.3241L34.63 75.1976C35.0629 75.5611 35.3235 75.7801 35.7565 76.1436L36.0935 78.8016C37.046 79.0456 37.0945 79.0576 38.047 79.3006L39.6165 77.1296C40.171 77.0176 40.5045 76.9501 41.059 76.8386L43.348 78.2326C44.1315 77.6396 44.171 77.6101 44.9555 77.0171L44.2365 74.4346C44.495 73.9316 44.65 73.6296 44.9085 73.1266L47.4245 72.2056ZM39.3 74.9711C37.087 74.9711 35.293 73.1766 35.293 70.9636C35.293 68.7506 37.087 66.9561 39.3 66.9561C41.514 66.9561 43.308 68.7506 43.308 70.9636C43.308 73.1766 41.514 74.9711 39.3 74.9711Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M52.694 62.5094L50.336 54.1874C49.111 53.6454 48.242 53.7804 47.8285 54.7829L49.979 64.6904C50.2285 64.3274 50.51 63.9829 50.8305 63.6629C51.344 63.1174 51.988 62.7419 52.694 62.5094Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M62.0066 95.374L52.6941 62.5095C51.9881 62.742 51.3441 63.1175 50.8306 63.663C50.5101 63.9835 50.2286 64.3275 49.9791 64.6905L57.0941 97.471C58.4936 96.296 60.2136 95.679 62.0066 95.374Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M62.366 96.644L62.006 95.374C60.213 95.679 58.493 96.296 57.094 97.4715L57.321 98.5175C58.4155 97.14 60.404 96.8095 62.366 96.644Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M58.238 99.1225C59.719 98.6595 61.173 98.0615 62.6635 97.694L62.366 96.6445C60.4035 96.81 58.415 97.1405 57.321 98.5175L57.5675 99.6525C57.7605 99.436 57.9745 99.254 58.238 99.1225Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M62.6636 97.694C61.1731 98.0615 59.7191 98.66 58.2381 99.1225C57.9746 99.2545 57.7606 99.4365 57.5676 99.6525L57.8921 101.147C59.5046 100.269 61.2631 99.4245 63.0736 99.1415L62.6636 97.694Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M63.0735 99.141C61.263 99.424 59.504 100.269 57.892 101.146L59.092 106.675L62.9905 113.022C63.6915 113.052 64.393 113.052 65.094 112.833C65.2135 112.799 65.3175 112.753 65.41 112.698L64.7595 105.088L63.0735 99.141Z\" fill=\"#089CCB\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M65.41 112.699C65.3109 112.757 65.2047 112.802 65.094 112.833C64.393 113.052 63.6915 113.052 62.9905 113.022L65.8335 117.651L65.41 112.699Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M127.255 65.845H107.109C106.161 65.845 105.392 65.0765 105.392 64.128V18.96C105.392 18.012 106.161 17.243 107.109 17.243H127.255C128.203 17.243 128.972 18.0115 128.972 18.96V64.128C128.972 65.0765 128.203 65.845 127.255 65.845Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M109.366 20.7321C109.816 20.7321 110.181 20.3672 110.181 19.9171C110.181 19.4669 109.816 19.1021 109.366 19.1021C108.916 19.1021 108.551 19.4669 108.551 19.9171C108.551 20.3672 108.916 20.7321 109.366 20.7321Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M113.712 20.7321C114.162 20.7321 114.527 20.3672 114.527 19.9171C114.527 19.4669 114.162 19.1021 113.712 19.1021C113.261 19.1021 112.897 19.4669 112.897 19.9171C112.897 20.3672 113.261 20.7321 113.712 20.7321Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M118.057 20.7321C118.507 20.7321 118.872 20.3672 118.872 19.9171C118.872 19.4669 118.507 19.1021 118.057 19.1021C117.607 19.1021 117.242 19.4669 117.242 19.9171C117.242 20.3672 117.607 20.7321 118.057 20.7321Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M107.805 26.593H126.669V31.254H107.805V26.593Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M107.805 36.1066H126.669V40.7676H107.805V36.1066Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M107.805 45.6205H126.669V50.2815H107.805V45.6205Z\" fill=\"white\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M107.805 55.134H126.669V59.795H107.805V55.134Z\" fill=\"#089CCB\" stroke=\"#080808\" stroke-width=\"0.1\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M64.5945 73.0401C64.5945 73.0401 70.7295 72.3605 71.199 71.5656L65.0595 72.335L64.5945 73.0401ZM77.6825 38.1845L75.5815 37.9355C75.5815 37.9355 77.278 38.923 77.6825 38.878V38.1845Z\" fill=\"#080808\" stroke=\"#080808\" stroke-width=\"0.05\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`;\n","import React from \"react\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\nimport { Link } from \"./Link\";\n\ntype BreadcrumbItem = {\n label: string;\n href?: string;\n};\n\nexport type BreadcrumbsProps = {\n items: BreadcrumbItem[];\n className?: string;\n SeparatorComponent?: React.ReactElement;\n onHomeClick: () => void;\n};\n\nconst DefaultSeparator = () => (\n <Text variant={[\"sm:body-lg\", \"body-xs\"]} color=\"text-primary\">\n /\n </Text>\n);\n\nexport const Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n (\n { items, className, SeparatorComponent = DefaultSeparator, onHomeClick },\n ref\n ) => {\n const renderSeparator = () =>\n typeof SeparatorComponent === \"function\" ? (\n <SeparatorComponent />\n ) : (\n React.cloneElement(SeparatorComponent)\n );\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(\n \"sm:relative sticky top-0 sm:border-none border-secondary-50 border-b-[1px] pb-2\",\n className\n )}\n >\n <ol className=\"flex flex-wrap items-center gap-2\">\n <Icon\n onClick={onHomeClick}\n name=\"home\"\n size={[\"sm:20\", 16]}\n color=\"secondary\"\n className=\"pb-0.5\"\n />\n {renderSeparator()}\n {items.map((item, index) => {\n const isLastItem = index === items.length - 1;\n\n return isLastItem || !item.href ? (\n <Text\n variant={\n isLastItem\n ? [\"body-xs-medium\", \"md:body-default-semibold\"]\n : [\"body-xs\", \"md:body-default\"]\n }\n color={isLastItem ? \"text-primary\" : \"text-secondary\"}\n aria-current={isLastItem ? \"page\" : undefined}\n key={item.label}\n >\n {item.label}\n </Text>\n ) : (\n <>\n <Link href={item.href} key={item.label}>\n {item.label}\n </Link>\n {renderSeparator()}\n </>\n );\n })}\n </ol>\n </nav>\n );\n }\n);\n\nBreadcrumbs.displayName = \"Breadcrumbs\";\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../utils\";\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n delayDuration?: number;\n}\n\nexport const Tooltip = ({\n content,\n children,\n side = \"bottom\",\n align = \"center\",\n className,\n delayDuration = 200\n}: TooltipProps) => (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root>\n <TooltipPrimitive.Trigger asChild>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n <span tabIndex={0}>{children}</span>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 overflow-hidden rounded-lg\",\n \"bg-text-primary px-3 py-1.5\",\n \"text-xs text-white\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"select-none\",\n \"max-w-60\",\n className\n )}\n >\n {content}\n <TooltipPrimitive.Arrow\n className=\"fill-text-primary\"\n width={10}\n height={5}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n);\n","import React from \"react\";\nimport { Pressable, PressableProps } from \"./Pressable\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\nimport { IconName } from \"@deckai/icons\";\n\nexport type SocialCardProps = {\n icon: IconName;\n followers: string;\n engagement: string;\n} & PressableProps;\n\nexport const SocialCard = ({\n icon,\n followers,\n engagement,\n ...pressableProps\n}: SocialCardProps) => (\n <Pressable\n className=\"sm:w-max w-full hover:bg-secondary-400\"\n {...pressableProps}\n >\n <div className=\"flex sm:flex-row flex-col items-center sm:gap-4 gap-1 sm:px-6 sm:py-4 p-2 border border-secondary rounded-lg\">\n <Icon name={icon} size={[\"lg:40\", 32]} color=\"primaryBlue\" />\n <div className=\"flex items-center sm:pt-0 pt-3\">\n <Icon name=\"profile\" size={[\"sm:20\", 16]} />\n <Text variant={[\"body-default-medium\", \"md:body-xs-medium\"]}>\n {followers}\n </Text>\n </div>\n <div className=\"flex items-center\">\n <Icon name=\"like-1\" size={[\"sm:20\", 16]} />\n <Text variant={[\"body-default-medium\", \"md:body-xs-medium\"]}>\n {engagement}\n </Text>\n </div>\n </div>\n </Pressable>\n);\n","import React, { useMemo } from \"react\";\n\nexport type IconRendererProps = {\n icon: string;\n size?: number;\n className?: string;\n};\n\nexport const IconRenderer = ({\n icon,\n size = 40,\n className\n}: IconRendererProps) => {\n const sanitizedSvg = useMemo(() => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(icon, \"image/svg+xml\");\n const svg = doc.querySelector(\"svg\");\n\n if (!svg) return null;\n\n // Set size attributes but preserve aspect ratio\n svg.setAttribute(\"width\", \"100%\");\n svg.setAttribute(\"height\", \"100%\");\n svg.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\n\n // Get the original viewBox or use the default\n const viewBox = svg.getAttribute(\"viewBox\") || \"0 0 40 40\";\n svg.setAttribute(\"viewBox\", viewBox);\n\n return svg.outerHTML;\n }, [icon]);\n\n if (!sanitizedSvg) return null;\n\n return (\n <div\n style={{\n width: size,\n height: size,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n className={className}\n dangerouslySetInnerHTML={{ __html: sanitizedSvg }}\n />\n );\n};\n\nIconRenderer.displayName = \"IconRenderer\";\n","import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"../utils\";\nimport { focusRingStyles } from \"../utils/tailwind\";\n\nexport type SwitchProps = React.ComponentPropsWithoutRef<\n typeof SwitchPrimitive.Root\n> & {\n label?: string;\n description?: string;\n};\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, label, description, ...props }, ref) => (\n <div className=\"flex items-center gap-2\">\n <SwitchPrimitive.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer\",\n \"items-center rounded-full border-2 border-transparent\",\n \"transition-colors focus-visible:outline-none\",\n focusRingStyles,\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-primary-50 data-[state=unchecked]:bg-secondary-50\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5\",\n \"rounded-full bg-white shadow-lg ring-0\",\n \"transition-transform\",\n \"data-[state=checked]:translate-x-5\",\n \"data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n className=\"text-sm font-medium text-text-primary\"\n htmlFor={props.id}\n >\n {label}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-text-secondary\">{description}</span>\n )}\n </div>\n )}\n </div>\n));\n\nSwitch.displayName = \"Switch\";\n","import React, { useId, useMemo } from \"react\";\nimport { Badge, BadgeProps } from \"./Badge\";\nimport { Button } from \"./Button\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\nimport { Tooltip } from \"./Tooltip\";\nimport { Switch } from \"./Switch\";\nimport { Tag } from \"./Tag\";\nimport { EditButton } from \"./EditButton\";\n\nexport type ProfileCardProps = {\n profileImage: string;\n name: string;\n location: string;\n memberSince?: string;\n interests?: string[];\n badges?: BadgeProps[];\n isEditMode?: boolean;\n onEditClick?: () => void;\n};\n\nconst MAX_INTERESTS = 4;\nconst MAX_BADGES = 3;\n\nexport const ProfileCard = ({\n profileImage,\n name,\n location,\n memberSince,\n interests,\n badges,\n isEditMode = false,\n onEditClick\n}: ProfileCardProps) => {\n const randomId = useId();\n\n const visibleInterests = useMemo(\n () => interests?.slice(0, MAX_INTERESTS) || [],\n [interests]\n );\n\n const visibleBadges = useMemo(\n () => badges?.slice(0, MAX_BADGES) || [],\n [badges]\n );\n\n const hasMoreInterests = interests && interests.length > MAX_INTERESTS;\n const hasMoreBadges = badges && badges.length > MAX_BADGES;\n const remainingInterests = interests ? interests.length - MAX_INTERESTS : 0;\n const remainingBadges = badges ? badges.length - MAX_BADGES : 0;\n\n return (\n <div className=\"lg:p-10 md:p-8 p-4 rounded-xl border border-stroke relative flex gap-6 md:flex-row flex-col\">\n {isEditMode && <EditButton onClick={onEditClick} />}\n <div className=\"flex md:flex-row flex-col gap-6\">\n <div className=\"flex flex-col gap-4 md:items-start items-center\">\n <div className=\"flex items-center justify-center xl:w-[206px] lg:w-[164px] w-[147px]\">\n <img\n src={profileImage}\n alt={`Profile for ${name}`}\n className=\"object-cover rounded-lg w-full h-full\"\n />\n </div>\n {isEditMode && <Button variant=\"filled\">Preview Profile</Button>}\n {/* Desktop only */}\n {isEditMode && (\n <div className=\"hidden sm:flex sm:flex-col gap-1 w-full\">\n <div className=\"flex flex-row justify-between\">\n <div>\n <Text\n as=\"label\"\n htmlFor={randomId}\n variant=\"body-default-semibold\"\n >\n Private Mode\n </Text>\n <div className=\"flex items-center gap-1\">\n <Text variant=\"body-default\" color=\"text-secondary\">\n What is this?\n </Text>\n <Tooltip content=\"Turning this on makes you not appear in searches. People who follow you will still be able to view your profile. Go to your settings to make changes to Private Mode.\">\n <Icon\n name=\"message-question\"\n color=\"secondary\"\n size={16}\n />\n </Tooltip>\n </div>\n </div>\n <Switch id={randomId} />\n </div>\n </div>\n )}\n </div>\n <div className=\"flex flex-col gap-2\">\n <Text\n as=\"h1\"\n variant={[\"lg:heading-lg\", \"md:heading-md\", \"heading-sm\"]}\n className=\"text-wrap text-center md:text-left\"\n >\n {name}\n </Text>\n <div className=\"flex gap-2 items-center sm:justify-start justify-center\">\n <Icon name=\"location\" color=\"secondary\" />\n <Tooltip content={location}>\n <Text\n variant={[\"lg:body-lg\", \"md:body-default\", \"body-xs\"]}\n color=\"text-secondary\"\n className=\"sm:text-left text-center truncate max-w-[300px]\"\n >\n {location}\n </Text>\n </Tooltip>\n </div>\n <div className=\"flex gap-2 items-center sm:justify-start justify-center\">\n <Icon name=\"profile\" color=\"secondary\" />\n <Tooltip content={`Member Since ${memberSince}`}>\n <Text\n variant={[\"lg:body-lg\", \"md:body-default\", \"body-xs\"]}\n color=\"text-secondary\"\n className=\"sm:text-left text-center truncate max-w-[300px]\"\n >\n Member Since{\" \"}\n <Text\n as=\"span\"\n variant={[\n \"lg:body-lg-semibold\",\n \"md:body-default-bold\",\n \"body-xs-bold\"\n ]}\n >\n {memberSince}\n </Text>\n </Text>\n </Tooltip>\n </div>\n {interests && (\n <div className=\"flex flex-col gap-2 pt-4\">\n <Text\n variant={[\"sm:heading-xs\", \"body-default-bold\"]}\n className=\"sm:text-left text-center\"\n >\n Interests\n </Text>\n <div className=\"flex flex-wrap gap-2 sm:justify-start justify-center items-center\">\n {visibleInterests.map((interest, idx) => (\n <Tag key={idx}>{interest}</Tag>\n ))}\n {hasMoreInterests && (\n <Tooltip content={interests.slice(MAX_INTERESTS).join(\", \")}>\n <Text variant=\"label-default\">\n +{remainingInterests} more\n </Text>\n </Tooltip>\n )}\n </div>\n </div>\n )}\n {badges && (\n <div className=\"flex gap-2 flex-wrap py-4 sm:justify-start justify-center items-center\">\n {visibleBadges.map((badge, idx) => (\n <Badge key={idx} {...badge} />\n ))}\n {hasMoreBadges && (\n <Tooltip\n content={badges\n .slice(MAX_BADGES)\n .map((b) => b.children)\n .join(\", \")}\n >\n <Text variant=\"label-default\">+{remainingBadges} more</Text>\n </Tooltip>\n )}\n </div>\n )}\n {/* mobile only */}\n {isEditMode && (\n <div className=\"sm:hidden flex justify-between border-t-[1px] border-secondary-50 pt-4\">\n <div>\n <Text\n as=\"label\"\n htmlFor={randomId}\n variant=\"body-default-semibold\"\n >\n Private Mode\n </Text>\n <div className=\"flex items-center gap-1\">\n <Text variant=\"body-default\" color=\"text-secondary\">\n What is this?\n </Text>\n <Tooltip content=\"Turning this on makes you not appear in searches. People who follow you will still be able to view your profile. Go to your settings to make changes to Private Mode.\">\n <Icon name=\"message-question\" color=\"secondary\" size={16} />\n </Tooltip>\n </div>\n </div>\n <Switch id={randomId} />\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { IconName } from \"@deckai/icons\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type BadgeProps = {\n variant?: \"pink\" | \"orange\" | \"green\" | \"purple\";\n iconName?: IconName;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst variants = {\n pink: \"bg-tertiary-5\",\n orange: \"bg-tertiary-15\",\n green: \"bg-tertiary-25\",\n purple: \"bg-secondary-300\"\n};\n\nconst stringToVariant = (str: string): keyof typeof variants => {\n const variantKeys = Object.keys(variants) as Array<keyof typeof variants>;\n // Let's log some values to understand what's happening\n const hash = str\n .split(\"\")\n .reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0);\n\n const index = Math.abs(hash) % variantKeys.length;\n const selectedVariant = variantKeys[index];\n\n console.log({\n input: str,\n hash,\n variantKeys,\n index,\n selectedVariant\n });\n\n return selectedVariant;\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, iconName, children, ...props }, ref) => {\n const finalVariant =\n variant ||\n (typeof children === \"string\" ? stringToVariant(children) : \"pink\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-2\",\n \"rounded-lg px-2 py-1\",\n \"text-sm font-medium\",\n variants[finalVariant],\n className\n )}\n {...props}\n >\n {iconName && <Icon size={16} name={iconName} />}\n <Text variant=\"body-xxs-medium\">{children}</Text>\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import React, { HTMLAttributes } from \"react\";\nimport { IconRenderer } from \"./IconRenderer\";\nimport { Link } from \"./Link\";\n\nexport type ContactItemProps = {\n // TODO: figure out how to get filled icons to work correctly\n icon: string;\n children: React.ReactNode;\n href: string;\n} & Omit<HTMLAttributes<HTMLAnchorElement>, \"color\">;\n\nexport const ContactItem = ({\n icon,\n children,\n href,\n ...linkProps\n}: ContactItemProps) => (\n <div className=\"row gap-2 flex items-center\">\n <div className=\"bg-secondary-400 rounded-full p-2.5 items-center justify-center\">\n <IconRenderer icon={icon} size={24} className=\"text-primary\" />\n </div>\n <Link\n className=\"hover:underline\"\n href={href}\n {...linkProps}\n variant={[\"body-default-semibold\", \"md:body-default-medium\"]}\n >\n {children}\n </Link>\n </div>\n);\n","import React, { useRef, useLayoutEffect, useState } from \"react\";\nimport * as RadixCollapsible from \"@radix-ui/react-collapsible\";\nimport { Pressable } from \"./Pressable\";\nimport { Text } from \"./Text\";\nimport { cn } from \"../utils\";\n\nexport type CollapsibleProps = {\n children: React.ReactNode;\n maxHeight?: number;\n};\n\nexport const Collapsible = ({\n children,\n maxHeight = 100\n}: CollapsibleProps) => {\n const [open, setOpen] = React.useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const [contentHeight, setContentHeight] = useState<number>(maxHeight);\n\n // Measure content height on mount and resize\n useLayoutEffect(() => {\n if (!contentRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContentHeight(entry.target.scrollHeight);\n }\n });\n\n resizeObserver.observe(contentRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const shouldShowTrigger = contentHeight > maxHeight;\n\n return (\n <RadixCollapsible.Root open={open} onOpenChange={setOpen}>\n <div className=\"relative\">\n <div\n className=\"overflow-hidden transition-[height] duration-300 ease-in-out\"\n style={{\n height: open ? `${contentHeight}px` : `${maxHeight}px`\n }}\n >\n <div ref={contentRef} className=\"w-full\">\n {children}\n </div>\n </div>\n\n {shouldShowTrigger && (\n <RadixCollapsible.Trigger asChild>\n <Pressable\n className={cn(\n \"absolute -bottom-8 left-0 right-0\",\n \"flex items-end justify-center\",\n \"h-16 pt-8 pb-2\",\n !open && \"bg-gradient-to-b from-transparent via-white to-white\",\n \"hover:opacity-100 transition-opacity\"\n )}\n >\n <Text variant=\"label-default\" color=\"text-secondary\">\n {open ? \"See less\" : \"See more\"}\n </Text>\n </Pressable>\n </RadixCollapsible.Trigger>\n )}\n </div>\n </RadixCollapsible.Root>\n );\n};\n\nCollapsible.displayName = \"Collapsible\";\n","import React from \"react\";\nimport { Text } from \"./Text\";\nimport { ContactItem, ContactItemProps } from \"./ContactItem\";\nimport { EditButton } from \"./EditButton\";\nimport { Collapsible } from \"./Collapsible\";\n\nexport type AboutCardProps = {\n interests: string[];\n contactItems: ContactItemProps[];\n description: string;\n isEditMode?: boolean;\n onEditClick?: () => void;\n};\n\nexport const AboutCard = ({\n interests,\n contactItems,\n description,\n isEditMode = false,\n onEditClick,\n ...props\n}: AboutCardProps) => (\n <div\n className=\"border border-secondary rounded-2xl sm:p-10 p-4 relative flex sm:flex-row flex-col pt-8 sm:pt-4\"\n {...props}\n >\n {isEditMode && <EditButton onClick={onEditClick} />}\n <div className=\"flex sm:basis-1/2 basis-full flex-col gap-2 sm:pr-10 pb-6 sm:pb-0\">\n <Collapsible maxHeight={120}>\n <Text variant=\"body-default\">{description}</Text>\n </Collapsible>\n </div>\n {/* vertical divider for desktop */}\n <span className=\"hidden sm:block absolute bg-secondary-50 w-[1px] inset-x-1/2 inset-y-10\" />\n {/* horizontal divider for mobile */}\n <span className=\"block sm:hidden bg-secondary-50 w-full h-[1px] inset-x-10\" />\n <div className=\"flex flex-col gap-4 sm:pl-10 pt-6 sm:pt-8\">\n {contactItems.map((contactProps) => (\n <ContactItem key={contactProps.title} {...contactProps} />\n ))}\n </div>\n </div>\n);\n","import { useCallback, useEffect, useState } from \"react\";\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useEffect : () => {};\n\nexport const useMediaQuery = (query: string): boolean => {\n // Initialize with null to prevent hydration mismatch\n const [matches, setMatches] = useState<boolean | null>(null);\n\n const getMatches = useCallback((query: string): boolean => {\n if (typeof window !== \"undefined\") {\n return window.matchMedia(query).matches;\n }\n return false;\n }, []);\n\n // Update matches after mount to prevent hydration mismatch\n useIsomorphicLayoutEffect(() => {\n setMatches(getMatches(query));\n }, [query, getMatches]);\n\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const mediaQuery = window.matchMedia(query);\n\n const handleChange = () => {\n setMatches(getMatches(query));\n };\n\n mediaQuery.addEventListener(\"change\", handleChange);\n\n return () => {\n mediaQuery.removeEventListener(\"change\", handleChange);\n };\n }\n }, [query, getMatches]);\n\n // Return false during SSR, actual value after hydration\n return matches ?? false;\n};\n","import React, { useCallback, useEffect, useMemo, type ReactNode } from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { useMediaQuery } from \"../hooks/useMediaQuery\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Pressable } from \"./Pressable\";\n\nexport type SidebarProps = {\n /**\n * The content to be rendered inside the sidebar\n */\n children: ReactNode;\n /**\n * Whether the sidebar is open\n */\n open: boolean;\n /**\n * Callback fired when the sidebar is closed\n */\n onClose: () => void;\n /** @default left */\n position?: \"left\" | \"right\";\n /**\n * The width of the sidebar on desktop. Defaults to 480px.\n */\n width?: number;\n /**\n * Additional class names to be applied to the sidebar\n */\n className?: string;\n /**\n * The title to display in the header\n */\n title?: string;\n /**\n * Optional footer content\n */\n footer?: ReactNode;\n};\n\nexport const Sidebar = ({\n children,\n open,\n onClose,\n width = 480,\n className,\n title,\n footer,\n position = \"left\"\n}: SidebarProps) => {\n const isMobile = useMediaQuery(\"(max-width: 834px)\");\n\n // Handle escape key press\n const handleEscapeKey = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n }\n },\n [onClose]\n );\n\n useEffect(() => {\n if (open) {\n document.addEventListener(\"keydown\", handleEscapeKey);\n // Prevent body scroll when sidebar is open\n document.body.style.overflow = \"hidden\";\n } else {\n // Ensure we clean up when sidebar is closed\n document.removeEventListener(\"keydown\", handleEscapeKey);\n document.body.style.overflow = \"unset\";\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscapeKey);\n document.body.style.overflow = \"unset\";\n };\n }, [open, handleEscapeKey]);\n\n const positionClasses = useMemo(\n () =>\n position === \"right\"\n ? {\n position: \"right-0\",\n enter: \"data-[state=open]:animate-slide-in-from-right\",\n exit: \"data-[state=closed]:animate-slide-out-to-right\",\n transform: \"translate-x-full\"\n }\n : {\n position: \"left-0\",\n enter: \"data-[state=open]:animate-slide-in-from-left\",\n exit: \"data-[state=closed]:animate-slide-out-to-left\",\n transform: \"-translate-x-full\"\n },\n [position]\n );\n\n return (\n <Dialog.Root open={open} onOpenChange={onClose}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-sidebarOverlay backdrop-blur-[2px]\",\n \"data-[state=open]:animate-overlay-show\",\n \"data-[state=closed]:animate-overlay-hide\"\n )}\n />\n <Dialog.Content\n className={cn(\n \"fixed top-0 z-50 flex h-full flex-col bg-white\",\n positionClasses.position,\n positionClasses.enter,\n positionClasses.exit,\n // During SSR, default to desktop layout\n typeof window === \"undefined\" || !isMobile\n ? position === \"right\"\n ? \"border-l\"\n : \"border-r\"\n : \"w-full\",\n \"border-stroke\",\n className\n )}\n style={{\n width: typeof window === \"undefined\" || !isMobile ? width : \"100%\"\n }}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between border-b border-secondary-50 px-8 py-6\">\n <Dialog.Title className=\"text-heading-xs text-center w-full\">\n {title}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Pressable\n className=\"inline-flex items-center justify-center text-text-secondary hover:bg-secondary-100 rounded-lg\"\n aria-label=\"Close\"\n >\n <Icon name=\"close\" size={12} />\n </Pressable>\n </Dialog.Close>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto p-6\">{children}</div>\n\n {/* Footer */}\n {footer && <div className=\"px-6 pb-6\">{footer}</div>}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { Text } from \"./Text\";\n\nexport type TextAreaProps = {\n /** Additional classes for the container */\n className?: string;\n /** Label text for the textarea */\n label?: string;\n /** Additional classes for the label */\n labelClassName?: string;\n /** Helper text displayed below the textarea */\n helperText?: string;\n /** Character count display */\n showCharacterCount?: boolean;\n /** Maximum number of characters */\n maxLength?: number;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextArea = ({\n className,\n label,\n labelClassName,\n helperText,\n showCharacterCount,\n maxLength,\n id,\n value = \"\",\n defaultValue,\n ...props\n}: TextAreaProps) => {\n const [textValue, setTextValue] = React.useState(\n value?.toString() || defaultValue?.toString() || \"\"\n );\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setTextValue(newValue);\n props.onChange?.(e);\n };\n\n const characterCount = textValue.length;\n const showCount = showCharacterCount || !!maxLength;\n\n return (\n <>\n {label && (\n <Text\n variant=\"label-default\"\n htmlFor={id}\n as=\"label\"\n className={cn(labelClassName)}\n >\n {label}\n </Text>\n )}\n <div className=\"relative\">\n <textarea\n id={id}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n onChange={handleChange}\n className={cn(\n `min-h-[80px] w-full resize-y rounded-lg border border-secondary-50 bg-background-0 px-3 py-2 font-sans text-text-primary placeholder:text-secondary ${focusRingStyles} disabled:cursor-not-allowed disabled:opacity-50`,\n className\n )}\n {...props}\n />\n <div className=\"flex justify-between gap-2\">\n {helperText && (\n <Text variant=\"label-default\" color=\"tertiary-10\">\n {helperText}\n </Text>\n )}\n {showCount && (\n <Text\n variant=\"label-default\"\n color=\"text-secondary\"\n className=\"text-right self-end\"\n >\n {characterCount}\n {maxLength && `/${maxLength}`} characters\n </Text>\n )}\n </div>\n </div>\n </>\n );\n};\n","/* eslint-disable prettier/prettier */\nimport type { Config } from \"tailwindcss\";\nimport tailwindAnimate from \"tailwindcss-animate\";\nimport { Colors, Typography } from \"./src/types/tailwind\";\nimport { generateSafelist } from \"./src/utils/tailwind\";\n\nconst colors: Colors = {\n background: {\n 0: \"#FFFFFF\",\n 50: \"#F6F6F6\",\n 100: \"#F7F7F5\"\n },\n primary: {\n 50: \"#5B3DE3\",\n 100: \"#089CCB\"\n },\n secondary: {\n 50: \"#D9D9D9\",\n 100: \"#F6F5FF\",\n 200: \"#EBE8FC\",\n 300: \"#BDAEFF\",\n 400: \"#E7F7FC\",\n 500: \"#DAF6FF\",\n 600: \"#B3EDFF\"\n },\n tertiary: {\n 5: \"#E33D6550\",\n 10: \"#E33D65\", //red error\n 15: \"#F59E0B50\",\n 20: \"#F59E0B\", //yellow warning\n 25: \"#10B98150\",\n 30: \"#10B981\" //green success\n },\n stroke: \"#ECECEC\",\n text: {\n primary: \"#080808\",\n secondary: \"#666666\",\n white: \"#FFFFFF\",\n \"primary-blue\": \"#F7F7F5\"\n },\n overlay: \"rgba(26, 26, 28, 0.8)\",\n sidebarOverlay: \"rgba(0, 0, 0, 0.60)\"\n};\n\nconst typography: Typography = {\n heading: {\n xl: {\n fontSize: \"56px\",\n letterSpacing: \"-1.12px\",\n fontWeight: \"700\" // Bold\n },\n lg: {\n fontSize: \"40px\",\n letterSpacing: \"-0.8px\",\n fontWeight: \"700\" // Bold\n },\n md: {\n fontSize: \"32px\",\n letterSpacing: \"-0.64px\",\n fontWeight: \"700\" // Bold\n },\n sm: {\n fontSize: \"24px\",\n letterSpacing: \"-0.48px\",\n fontWeight: \"700\" // Bold\n },\n xs: {\n fontSize: \"20px\",\n letterSpacing: \"0.4px\",\n fontWeight: \"700\" // Bold\n }\n },\n body: {\n lg: {\n fontSize: \"20px\",\n letterSpacing: \"-0.4px\",\n fontWeight: \"500\",\n lineHeight: \"150%\"\n },\n \"lg-semibold\": {\n fontSize: \"20px\",\n letterSpacing: \"-0.4px\",\n fontWeight: \"600\", // Semibold\n lineHeight: \"150%\"\n },\n md: {\n fontSize: \"18px\",\n letterSpacing: \"0.36px\",\n fontWeight: \"600\" // Semibold\n },\n default: {\n fontSize: \"16px\",\n letterSpacing: \"0%\",\n fontWeight: \"400\", // Regular\n lineHeight: \"150%\"\n },\n \"default-medium\": {\n fontSize: \"16px\",\n letterSpacing: \"0%\",\n fontWeight: \"500\" // Medium\n },\n \"default-semibold\": {\n fontSize: \"16px\",\n letterSpacing: \"0%\",\n fontWeight: \"600\" // Semibold\n },\n \"default-bold\": {\n fontSize: \"16px\",\n letterSpacing: \"0%\",\n fontWeight: \"700\" // Bold\n },\n xs: {\n fontSize: \"14px\",\n letterSpacing: \"0%\",\n fontWeight: \"400\" // Regular\n },\n \"xs-medium\": {\n fontSize: \"14px\",\n letterSpacing: \"0%\",\n fontWeight: \"500\" // Medium\n },\n \"xs-bold\": {\n fontSize: \"14px\",\n letterSpacing: \"0%\",\n fontWeight: \"700\" // Bold\n },\n xxs: {\n fontSize: \"13px\",\n letterSpacing: \"0%\",\n fontWeight: \"400\" // Regular\n },\n \"xxs-medium\": {\n fontSize: \"13px\",\n letterSpacing: \"0%\",\n fontWeight: \"500\" // Medium\n },\n \"xxs-semibold\": {\n fontSize: \"13px\",\n letterSpacing: \"0%\",\n fontWeight: \"600\" // Semibold\n }\n },\n label: {\n default: {\n fontSize: \"13px\",\n lineHeight: \"24px\",\n letterSpacing: \"0%\",\n fontWeight: \"400\", // Regular\n textTransform: \"uppercase\"\n }\n }\n};\n\nconst config = {\n content: [\"./src/**/*.{ts,tsx}\"],\n theme: {\n extend: {\n colors,\n fontSize: {\n // Convert typography config to Tailwind's fontSize format\n ...Object.entries(typography).reduce(\n (acc, [family, sizes]) => {\n Object.entries(sizes).forEach(([size, typeConfig]) => {\n acc[`${family}-${size}`] = [\n typeConfig.fontSize,\n {\n lineHeight: typeConfig.lineHeight || \"normal\",\n letterSpacing: typeConfig.letterSpacing || \"normal\",\n fontWeight: typeConfig.fontWeight\n }\n ];\n });\n return acc;\n },\n {} as Record<string, [string, object]>\n )\n },\n fontFamily: {\n sans: [\"Gilroy\", \"sans-serif\"]\n },\n fontWeight: {\n light: \"400\",\n regular: \"500\",\n normal: \"500\",\n semibold: \"600\",\n bold: \"700\"\n },\n keyframes: {\n spin: {\n \"0%\": { transform: \"rotate(0deg)\" },\n \"100%\": { transform: \"rotate(360deg)\" }\n },\n \"slide-in-from-right\": {\n \"0%\": { transform: \"translateX(100%)\" },\n \"100%\": { transform: \"translateX(0)\" }\n },\n \"slide-out-to-right\": {\n \"0%\": { transform: \"translateX(0)\" },\n \"100%\": { transform: \"translateX(100%)\" }\n },\n \"slide-in-from-left\": {\n \"0%\": { transform: \"translateX(-100%)\" },\n \"100%\": { transform: \"translateX(0)\" }\n },\n \"slide-out-to-left\": {\n \"0%\": { transform: \"translateX(0)\" },\n \"100%\": { transform: \"translateX(-100%)\" }\n },\n \"fade-in\": {\n from: { opacity: \"0\" },\n to: { opacity: \"1\" }\n },\n \"fade-out\": {\n from: { opacity: \"1\" },\n to: { opacity: \"0\" }\n },\n \"overlay-show\": {\n from: { opacity: \"0\" },\n to: { opacity: \"1\" }\n },\n \"overlay-hide\": {\n from: { opacity: \"1\" },\n to: { opacity: \"0\" }\n }\n },\n animation: {\n spin: \"spin 1s linear infinite\",\n \"slide-in-from-right\":\n \"slide-in-from-right 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n \"slide-out-to-right\": \"slide-out-to-right 0.2s ease-out\",\n \"slide-in-from-left\":\n \"slide-in-from-left 0.3s cubic-bezier(0.16, 1, 0.3, 1)\",\n \"slide-out-to-left\": \"slide-out-to-left 0.2s ease-out\",\n \"fade-in\": \"fade-in 200ms ease-out\",\n \"fade-out\": \"fade-out 150ms ease-in\",\n \"overlay-show\": \"overlay-show 200ms cubic-bezier(0.16, 1, 0.3, 1)\",\n \"overlay-hide\": \"overlay-hide 200ms cubic-bezier(0.16, 1, 0.3, 1)\"\n },\n borderWidth: {\n \"3\": \"3px\"\n }\n }\n },\n plugins: [tailwindAnimate],\n safelist: [...generateSafelist(colors, typography)]\n} satisfies Config;\n\nexport default config;\n"]}
|