property-practice-ui 0.4.0 → 0.4.2
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/CHANGELOG.md +12 -0
- package/dist/index.cjs +9 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/molecules.cjs +2 -2
- package/dist/molecules.cjs.map +1 -1
- package/dist/molecules.js +2 -2
- package/dist/molecules.js.map +1 -1
- package/dist/organisms.cjs +25 -3
- package/dist/organisms.cjs.map +1 -1
- package/dist/organisms.js +25 -3
- package/dist/organisms.js.map +1 -1
- package/package.json +1 -1
- package/src/molecules/ContentCard/ContentCard.tsx +1 -1
- package/src/molecules/SideNav/SideNav.tsx +1 -1
- package/src/organisms/FeatureCarousel/FeatureCarousel.tsx +3 -1
- package/src/organisms/Header/Header.tsx +27 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tokens/colors.ts","../src/tokens/sizes.ts","../src/tokens/spaces.ts","../src/atoms/Label/Label.tsx","../src/atoms/ArrowButton/ArrowButton.tsx","../src/tokens/radii.ts","../src/atoms/Loader/Loader.tsx","../src/atoms/Button/Button.tsx","../src/atoms/Description/Description.tsx","../src/atoms/ExtendedButton/ExtendedButton.tsx","../src/atoms/FeatureItem/FeatureItem.tsx","../src/tokens/breakpoints.ts","../src/atoms/FormContainer/FormContainer.tsx","../src/atoms/Header/Header.tsx","../src/atoms/Input/Input.tsx","../src/atoms/Pill/Pill.tsx","../src/atoms/RadioItem/RadioItem.tsx","../src/atoms/SecondaryInput/SecondaryInput.tsx","../src/atoms/SocialButton/SocialButton.tsx","../src/atoms/TermsCheckbox/TermsCheckbox.tsx","../src/atoms/Text/Text.tsx","../src/atoms/Textarea/Textarea.tsx","../src/atoms/TextButton/TextButton.tsx","../src/atoms/ToggleButton/ToggleButton.tsx","../src/molecules/InputContainer/InputContainer.tsx","../src/molecules/Dropdown/Dropdown.tsx","../src/components/Filter/Filter.tsx","../src/components/NavMenu.tsx","../src/components/SearchBar/Search.tsx","../src/components/SortBy/SortBy.tsx","../src/components/Spinner.tsx","../src/components/Dialog/Dialog.tsx","../src/components/TableRow/TableRow.tsx","../src/components/Table/Table.tsx","../src/components/TableInner/TableInner.tsx","../src/components/TableList.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Toast.tsx","../src/components/TopMenu.tsx","../src/templates/AboutUs/AboutUs.tsx","../src/organisms/ContactForm/ContactForm.tsx","../src/molecules/AccordionContent/AccordionContent.tsx","../src/molecules/AccordionHeader/AccordionHeader.tsx","../src/molecules/Accordion/Accordion.tsx","../src/molecules/Address/Address.tsx","../src/atoms/CheckboxItem/CheckboxItem.tsx","../src/molecules/Checkbox/Checkbox.tsx","../src/molecules/ContentCard/ContentCard.tsx","../src/molecules/CTAContainer/CTAContainer.tsx","../src/molecules/FAQAccordion/FAQAccordion.tsx","../src/molecules/FeatureContainer/FeatureContainer.tsx","../src/tokens/animations.ts","../src/molecules/Modal/Modal.tsx","../src/molecules/OverviewRowItem/OverviewRowItem.tsx","../src/molecules/PageLayout/PageLayout.tsx","../src/molecules/EmptyState/EmptyState.tsx","../src/molecules/PDFPreviewer/PDFPreviewer.tsx","../src/molecules/ProductInfo/ProductInfo.tsx","../src/molecules/RadioGroup/RadioGroup.tsx","../src/molecules/RatesChart/RatesChart.tsx","../src/molecules/SideNav/SideNav.tsx","../src/molecules/SidePanel/SidePanel.tsx","../src/molecules/StepperHeaderTab/StepperHeaderTab.tsx","../src/molecules/DocumentAccordionHeader/DocumentAccordionHeader.tsx","../src/molecules/DocumentAccordionRow/DocumentAccordionRow.tsx","../src/organisms/DocumentListAccordion/DocumentListAccordion.tsx","../src/organisms/FeatureCarousel/FeatureCarousel.tsx","../src/organisms/Footer/Footer.tsx","../src/organisms/Header/Header.tsx","../src/organisms/OverviewList/OverviewList.tsx","../src/organisms/ToastProvider/ToastProvider.tsx","../src/templates/Contact/Contact.tsx","../src/templates/FAQ/FAQ.tsx","../src/templates/Features/Features.tsx","../src/templates/Hero/Hero.tsx","../src/templates/OtherProducts/OtherProducts.tsx"],"names":["styled","jsx","HiArrowUpRight","keyframes","variants","StyledButton","jsxs","Description","Container","Label","StyledInput","StyledContainer","StyledText","InnerContainer","useMemo","tv","Link","i","useState","useEffect","Fragment","Transition","DefaultDialog","DialogPanel","DialogTitle","Button","ClockIcon","HomeIcon","TrashIcon","itemContainer","useAnimation","motion","ThumbnailWrapper","ButtonWrapper","Header","AccordionHeader","HeaderWrapper","AccordionContent","HiMinus","HiPlus","ImageWrapper","ContentWrapper","useRef","HiArrowLeft","HiArrowRight","createContext","FormContainer","HeaderSection"],"mappings":"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","file":"index.cjs","sourcesContent":["const variants = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'subtle',\n 'blue',\n 'brand',\n 'light',\n 'active',\n 'hover',\n 'error',\n 'focus',\n 'success',\n] as const;\nconst tokens = ['background', 'border', 'text', 'button'] as const;\n\ntype Token = (typeof tokens)[number];\ntype Variant = (typeof variants)[number];\n\ntype TokenVariant = Record<Variant, string>;\n\nexport const colors: Record<Token, Partial<TokenVariant>> = {\n background: {\n primary: '#FFFFFF',\n secondary: '#EEF1F5',\n tertiary: '#1E4384',\n subtle: 'rgba(102, 153, 153, 1)',\n blue: '#36b8e7',\n brand: '#1D3C77',\n success: '#00ab3fff',\n error: '#F87171',\n light: '#cacbcc'\n },\n border: {\n primary: '#669999',\n secondary: 'rgba(30, 67, 132, 0.2)',\n hover: '#cacbcc',\n active: '#828282',\n error: '#F87171',\n focus: '#3B82F6',\n brand: '#1D3C77',\n light: '#f3f3f3',\n },\n text: {\n brand: '#1D3C77',\n primary: '#262626',\n secondary: '#FFFFFF',\n tertiary: '#669999',\n subtle: '#919EB0',\n light: '#b5b6b8ff',\n error: '#F87171',\n blue: '#3B82F6',\n },\n button: {\n primary: 'rgba(30, 67, 132, 0.2)',\n hover: 'rgba(30, 67, 132, 0.5)',\n active: 'rgba(30, 67, 132, 0.8)',\n secondary: 'rgba(30, 67, 132, 1)',\n },\n} as const;\n","export const sizes = {\n sm: '12px',\n md: '14px',\n lg: '18px',\n xl: '24px',\n 0: '1px',\n 0.5: '1.5px',\n} as const;\n","export const spaces: Record<number, `${number}px`> = {\n 0: '0px',\n 0.5: '2px',\n 1: '4px',\n 1.5: '6px',\n 2: '8px',\n 2.5: '10px',\n 3: '12px',\n 3.5: '14px',\n 4: '16px',\n 4.5: '18px',\n 5: '20px',\n 5.5: '22px',\n 6: '24px',\n 6.5: '28px',\n 7: '34px',\n 7.5: '38px',\n 8: '44px',\n 9: '56px',\n 20: '150px',\n} as const;\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\ntype Color = keyof typeof colors.text;\n\ninterface LabelProps {\n value: string;\n color?: Color;\n fontWeight?: string;\n}\n\nconst StyledLabel = styled.span<{ color: Color; fontWeight: string }>`\n color: ${(props) => colors.text[props?.color]};\n font-size: ${sizes.sm};\n font-weight: ${(props) => props.fontWeight};\n`;\n\nconst StyledFloatingLabel = styled(StyledLabel)`\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-left: ${spaces[3]};\n margin-bottom: -${spaces[2.5]};\n transform: translateY(-${spaces[0.5]});\n background-color: ${colors.background.primary};\n padding: 0 ${spaces[1]};\n`;\n\nexport const Label = ({\n value,\n color = 'subtle',\n fontWeight = '500',\n}: LabelProps) => {\n return (\n <StyledLabel color={color} fontWeight={fontWeight}>\n {value}\n </StyledLabel>\n );\n};\n\nexport const FloatingLabel = ({\n value,\n color = 'subtle',\n fontWeight = '500',\n}: LabelProps) => {\n return (\n <StyledFloatingLabel color={color} fontWeight={fontWeight}>\n {value}\n </StyledFloatingLabel>\n );\n};\n","import { HiArrowUpRight } from 'react-icons/hi2';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['brand', 'teal', 'blue'] as const;\ntype Variant = (typeof variants)[number];\n\nconst StyledContainer = styled.button<{\n as?: 'button' | 'div';\n variant: Variant;\n}>`\n padding: 0.75rem;\n ${props => props.as === 'button' ? `\n width: 2.5rem;\n height: 2.5rem;\n ` : ''}\n flex-shrink: 0;\n background-color: ${(props) => {\n switch (props.variant) {\n case 'brand':\n return colors.background.brand;\n case 'teal':\n return colors.background.subtle;\n case 'blue':\n return colors.background.blue;\n default:\n return colors.background.brand;\n }\n }};\n transition: all 0.2s;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover svg {\n transform: rotate(45deg);\n }\n`;\n\nconst StyledIcon = styled(HiArrowUpRight)`\n width: 1rem;\n height: 1rem;\n color: ${colors.text.secondary};\n transition: transform 0.2s;\n`;\n\ninterface ButtonProps {\n onClick?: () => void;\n asChild?: boolean;\n variant?: Variant;\n}\n\nexport const ArrowButton = ({ \n onClick, \n asChild = false,\n variant = 'brand'\n}: ButtonProps) => {\n return (\n <StyledContainer \n as={asChild ? 'div' : 'button'}\n onClick={onClick}\n variant={variant}\n >\n <StyledIcon aria-hidden />\n </StyledContainer>\n );\n};\n\nArrowButton.variants = variants;","export const radii = {\n sm: '4px',\n md: '8px',\n lg: '10px',\n xl: '16px',\n} as const;\n","import styled, { keyframes } from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\ntype LoaderProps = {\n size?: number | string;\n thickness?: number;\n speed?: string;\n};\n\nconst spin = keyframes`\n to { transform: rotate(360deg); }\n`;\n\nconst Ring = styled.span<\n Required<Pick<LoaderProps, 'size' | 'thickness' | 'speed'>>\n>`\n display: inline-block;\n width: ${({ size }) => (typeof size === 'number' ? `${size}px` : size)};\n height: ${({ size }) => (typeof size === 'number' ? `${size}px` : size)};\n border-radius: 50%;\n box-sizing: border-box;\n\n border: ${({ thickness }) => thickness}px solid ${colors.background.brand};\n\n border-top-color: ${colors.border.active};\n\n animation: ${spin} ${({ speed }) => speed} linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n border-top-color: ${colors.border.active};\n }\n`;\n\nexport const Loader = ({\n size = 32,\n thickness = 3,\n speed = '0.8s',\n}: LoaderProps) => {\n return (\n <Ring\n role=\"status\"\n aria-live=\"polite\"\n size={size}\n thickness={thickness}\n speed={speed}\n />\n );\n};\n","import { ReactElement } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { spaces } from '../../tokens/spaces';\nimport { Loader } from '../Loader/Loader';\n\nconst ButtonTypes = ['submit', 'reset', 'button'] as const;\n\ntype ButtonType = (typeof ButtonTypes)[number];\n\nconst variants = ['dark', 'light'] as const;\n\ntype Variant = (typeof variants)[number];\n\ninterface ButtonProps {\n onClick?: () => void;\n text?: string;\n type?: ButtonType;\n disabled?: boolean;\n icon?: ReactElement;\n variant?: Variant;\n isLoading?: boolean;\n}\n\nconst StyledButton = styled.button<{ variant: Variant }>`\n padding: ${spaces[2]} ${spaces[4]};\n background-color: ${(props) =>\n props.variant === 'light'\n ? colors.button.primary\n : colors.button.secondary};\n border-radius: ${radii.lg};\n color: ${(props) =>\n props.variant === 'light' ? colors.text.primary : colors.text.secondary};\n display: flex;\n align-items: center;\n justify-content: center;\n gap: ${spaces[2]};\n max-height: 34px;\n\n &:hover {\n background-color: ${colors.button.hover};\n cursor: pointer;\n }\n\n &:active {\n background-color: ${colors.button.active};\n color: ${colors.text.secondary};\n }\n\n &:disabled {\n background-color: ${colors.button.primary};\n cursor: not-allowed;\n color: ${colors.text.primary};\n }\n`;\n\nconst ButtonText = styled.span`\n font-size: 12px;\n font-weight: 700;\n`;\n\nexport const Button = ({\n onClick,\n text,\n type = 'button',\n disabled,\n icon = undefined,\n variant = 'light',\n isLoading,\n}: ButtonProps) => {\n return (\n <StyledButton\n type={type}\n onClick={onClick}\n disabled={disabled || isLoading}\n variant={variant}\n >\n {!isLoading ? (\n <>\n {typeof icon !== 'undefined' && icon}\n <ButtonText>{text}</ButtonText>\n </>\n ) : (\n <Loader size=\"20px\" />\n )}\n </StyledButton>\n );\n};\n\nButton.types = ButtonTypes;\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle', 'error'] as const;\ntype Variant = (typeof variants)[number];\n\ninterface DescriptionProps {\n children: string;\n variant?: Variant;\n}\n\nconst StyledDescription = styled.p<{ variant: Variant }>`\n margin: 0;\n font-size: 1rem;\n line-height: 1.6;\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.primary;\n case 'secondary':\n return colors.text.secondary;\n case 'subtle':\n return colors.text.subtle;\n case 'error':\n return colors.text.error;\n default:\n return colors.text.primary;\n }\n }};\n`;\n\nexport const Description = ({\n children,\n variant = 'primary',\n}: DescriptionProps) => {\n return (\n <StyledDescription variant={variant}>\n {children}\n </StyledDescription>\n );\n};\n\nDescription.variants = variants;","import styled from 'styled-components';\nimport { ArrowButton, TextButton } from \"..\";\n\nconst StyledButton = styled.button`\n display: flex;\n align-items: center;\n height: 2.5rem;\n border: none;\n cursor: pointer;\n transition: opacity 0.2s;\n padding: 0;\n background: transparent;\n\n &:hover {\n opacity: 0.9;\n }\n`;\n\ninterface ExtendedButtonProps {\n text: string;\n onClick?: () => void;\n arrowVariant?: 'brand' | 'teal' | 'blue';\n textBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n textVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const ExtendedButton = ({ \n text, \n onClick,\n arrowVariant = 'teal',\n textBgVariant = 'brand',\n textVariant = 'secondary',\n}: ExtendedButtonProps) => {\n return (\n <StyledButton onClick={onClick}>\n <ArrowButton asChild variant={arrowVariant} />\n <TextButton asChild text={text} bgVariant={textBgVariant} textVariant={textVariant} uppercase={false} />\n </StyledButton>\n );\n};","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\nconst Container = styled.div`\n display: flex;\n gap: 1rem;\n background-color: transparent;\n`;\n\nconst ThumbnailWrapper = styled.div<{ $size?: string; thumbnailBgColor: BackgroundColor }>`\n width: ${props => props.$size || '3rem'};\n height: ${props => props.$size || '3rem'};\n border-radius: 50%;\n background-color: ${props => colors.background[props.thumbnailBgColor]};\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n`;\n\nconst Content = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n`;\n\nconst Title = styled.h3<{ titleColor: TextColor }>`\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: ${props => colors.text[props.titleColor]};\n`;\n\nconst Description = styled.p<{ descriptionColor: TextColor }>`\n margin: 0;\n font-size: 0.875rem;\n line-height: 1.5;\n color: ${props => colors.text[props.descriptionColor]};\n`;\n\ninterface FeatureItemProps {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n thumbnailSize?: string;\n thumbnailBgColor?: BackgroundColor;\n titleColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const FeatureItem = ({\n thumbnail,\n title,\n description,\n thumbnailSize,\n thumbnailBgColor = 'brand',\n titleColor = 'primary',\n descriptionVariant = 'subtle',\n}: FeatureItemProps) => {\n // Map descriptionVariant to text color\n const getDescriptionColor = (): TextColor => {\n switch (descriptionVariant) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'secondary';\n case 'subtle':\n return 'subtle';\n case 'error':\n return 'error';\n default:\n return 'subtle';\n }\n };\n\n return (\n <Container>\n <ThumbnailWrapper $size={thumbnailSize} thumbnailBgColor={thumbnailBgColor}>\n {thumbnail}\n </ThumbnailWrapper>\n <Content>\n <Title titleColor={titleColor}>{title}</Title>\n <Description descriptionColor={getDescriptionColor()}>{description}</Description>\n </Content>\n </Container>\n );\n};","export const breakpoints = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n} as const;\n","import { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { breakpoints } from '../../tokens/breakpoints';\nimport { spaces } from '../../tokens/spaces';\n\ntype Space = keyof typeof spaces;\n\ninterface FormContainerProps {\n children: ReactNode;\n space?: Space;\n}\n\nconst Container = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n`;\n\nconst InnerContainer = styled.div<{ space: Space }>`\n display: flex;\n flex-direction: column;\n padding: ${spaces[4]};\n width: 100%;\n max-width: ${breakpoints.lg};\n gap: ${(props) => spaces[props.space]};\n`;\n\nexport const FormContainer = ({ children, space = 4 }: FormContainerProps) => {\n return (\n <Container>\n <InnerContainer space={space}>{children}</InnerContainer>\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = {\n h1: {\n fontSize: '24px',\n fontWeight: 700,\n letterSpacing: '0.6px',\n lineHeight: '32px',\n },\n h2: {\n fontSize: '20px',\n fontWeight: 700,\n lineHeight: '28px',\n letterSpacing: '0.4px',\n },\n h3: {\n fontSize: '18px',\n fontWeight: 600,\n lineHeight: '28px',\n letterSpacing: '0.2px',\n },\n} as const;\n\ntype Variant = keyof typeof variants;\n\ntype Color = keyof typeof colors.text;\n\ninterface HeaderProps {\n children: string;\n variant?: Variant;\n color?: Color;\n}\n\nconst StyledText = styled.h1<{ variant: Variant; color: Color }>`\n color: ${(props) => colors.text[props?.color]};\n font-size: ${(props) => variants[props.variant].fontSize};\n font-weight: ${(props) => variants[props.variant].fontWeight};\n letter-spacing: ${(props) => variants[props.variant].letterSpacing};\n line-height: ${(props) => variants[props.variant].lineHeight};\n`;\n\nexport const Header = ({\n children,\n variant = 'h1',\n color = 'primary',\n}: HeaderProps) => {\n return (\n <StyledText variant={variant} color={color}>\n {children}\n </StyledText>\n );\n};\n","import { ChangeEvent } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { InputTypes, type BaseInputProps } from '../../types';\n\ninterface InputProps extends Omit<BaseInputProps, 'label'> {\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n value?: string | number;\n min?: string | number;\n max?: string | number;\n}\n\nconst StyledInput = styled.input`\n display: block;\n height: 100%;\n width: 100%;\n outline: none;\n background-color: transparent;\n color: ${colors.text.subtle};\n font-weight: 600;\n`;\n\nexport const Input = ({ name, onChange, ...rest }: InputProps) => {\n return <StyledInput name={name} onChange={onChange} {...rest} />;\n};\n\nInput.types = InputTypes;\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle', 'error'] as const;\ntype Variant = (typeof variants)[number];\n\ninterface PillProps {\n children: string;\n variant?: Variant;\n inverse?: boolean;\n}\n\nconst StyledPill = styled.span<{ variant: Variant; $inverse: boolean }>`\n display: inline-block;\n padding: 0.5rem 1rem;\n border-radius: 9999px;\n font-size: 0.75rem;\n font-weight: 600;\n background-color: ${(props) => {\n if (props.$inverse) return 'transparent';\n \n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n case 'error':\n return colors.text.error;\n default:\n return colors.text.brand;\n }\n }};\n color: ${(props) => {\n if (props.$inverse) {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n case 'error':\n return colors.text.error;\n default:\n return colors.text.brand;\n }\n }\n return colors.text.secondary; \n }};\n border: ${(props) => {\n if (!props.$inverse) return 'none';\n \n switch (props.variant) {\n case 'primary':\n return `1px solid ${colors.text.brand}`;\n case 'secondary':\n return `1px solid ${colors.text.blue}`;\n case 'subtle':\n return `1px solid ${colors.text.subtle}`;\n case 'error':\n return `1px solid ${colors.text.error}`;\n default:\n return `1px solid ${colors.text.brand}`;\n }\n }};\n`;\n\nexport const Pill = ({\n children,\n variant = 'primary',\n inverse = false,\n}: PillProps) => {\n return (\n <StyledPill variant={variant} $inverse={inverse}>\n {children}\n </StyledPill>\n );\n};\n\nPill.variants = variants;","import { FaCheckCircle } from 'react-icons/fa';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { spaces } from '../../tokens/spaces';\n\ninterface RadioItem {\n label: string;\n isSelected: boolean;\n onClick: () => void;\n disabled?: boolean;\n}\n\nconst Container = styled.div`\n border-radius: ${radii.md};\n padding: ${spaces['3']};\n display: flex;\n flex: 1;\n gap: ${spaces[2]};\n background-color: white;\n align-items: center;\n justify-content: center;\n border-width: 1px;\n border-color: ${colors.border.active};\n transition:\n background-color 0.25s ease,\n box-shadow 0.35s ease,\n transform 0.25s ease;\n\n &:hover {\n background-color: rgba(255, 255, 255, 0.96);\n border-color: ${colors.border.hover};\n cursor: pointer;\n }\n\n &:active {\n background-color: rgba(255, 255, 255, 0.92);\n }\n`;\n\nconst Label = styled.span<Pick<RadioItem, 'isSelected'>>`\n font-size: 16px;\n font-weight: ${(props) => (props.isSelected ? '800' : '400')};\n text-align: center;\n`;\n\nexport const RadioItem = ({ label, isSelected, onClick }: RadioItem) => {\n return (\n <Container onClick={onClick}>\n {isSelected && <FaCheckCircle color={colors.background.blue} />}\n <Label isSelected={isSelected}>{label}</Label>\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { BaseInputProps } from '../../types';\n\ntype Color = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\ninterface SecondaryInputProps extends BaseInputProps {\n required?: boolean;\n isTextArea?: boolean;\n labelColor?: Color;\n inputTextColor?: Color;\n placeholderColor?: Color;\n backgroundColor?: BackgroundColor;\n borderColor?: string;\n focusRingColor?: Color;\n}\n\nconst Container = styled.div`\n width: 100%;\n`;\n\nconst Label = styled.label<{ $color?: Color }>`\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: ${props => props.$color ? colors.text[props.$color] : colors.text.primary};\n opacity: 0.8;\n margin-bottom: 0.5rem;\n`;\n\nconst StyledInput = styled.input<{ \n $textColor?: Color;\n $placeholderColor?: Color;\n $bgColor?: BackgroundColor;\n $borderColor?: string;\n $focusRingColor?: Color;\n}>`\n box-sizing: border-box;\n height: 2.75rem;\n width: 100%;\n border-radius: 6px;\n border: 1px solid ${props => props.$borderColor || '#d1d5db'};\n background-color: ${props => props.$bgColor ? colors.background[props.$bgColor] : colors.background?.secondary || '#f9fafb'};\n padding: 0 0.75rem;\n font-size: 15px;\n color: ${props => props.$textColor ? colors.text[props.$textColor] : colors.text.primary};\n outline: none;\n \n &::placeholder {\n color: ${props => props.$placeholderColor ? colors.text[props.$placeholderColor] : colors.text.secondary};\n }\n \n &:focus {\n box-shadow: 0 0 0 2px ${props => {\n const color = props.$focusRingColor ? colors.text[props.$focusRingColor] : colors.text.primary;\n return `${color}33`; // Add 33 for 20% opacity\n }};\n }\n`;\n\nconst StyledTextArea = styled.textarea<{ \n $textColor?: Color;\n $placeholderColor?: Color;\n $bgColor?: BackgroundColor;\n $borderColor?: string;\n $focusRingColor?: Color;\n}>`\n box-sizing: border-box;\n width: 100%;\n border-radius: 6px;\n border: 1px solid ${props => props.$borderColor || '#d1d5db'};\n background-color: ${props => props.$bgColor ? colors.background[props.$bgColor] : colors.background?.secondary || '#f9fafb'};\n padding: 0.75rem;\n font-size: 15px;\n color: ${props => props.$textColor ? colors.text[props.$textColor] : colors.text.primary};\n outline: none;\n \n &::placeholder {\n color: ${props => props.$placeholderColor ? colors.text[props.$placeholderColor] : colors.text.secondary};\n }\n \n &:focus {\n box-shadow: 0 0 0 2px ${props => {\n const color = props.$focusRingColor ? colors.text[props.$focusRingColor] : colors.text.primary;\n return `${color}33`; // Add 33 for 20% opacity\n }};\n }\n`;\n\nexport const SecondaryInput = ({\n label,\n isTextArea = false,\n labelColor = 'brand',\n inputTextColor = 'primary',\n placeholderColor = 'subtle',\n backgroundColor = 'secondary',\n borderColor = '#d1d5db',\n focusRingColor = 'brand',\n ...rest\n}: SecondaryInputProps) => {\n return (\n <Container>\n {typeof label === 'string' && <Label $color={labelColor}>{label}</Label>}\n {isTextArea ? (\n <StyledTextArea \n {...rest} \n rows={5}\n $textColor={inputTextColor}\n $placeholderColor={placeholderColor}\n $bgColor={backgroundColor}\n $borderColor={borderColor}\n $focusRingColor={focusRingColor}\n />\n ) : (\n <StyledInput \n {...rest}\n $textColor={inputTextColor}\n $placeholderColor={placeholderColor}\n $bgColor={backgroundColor}\n $borderColor={borderColor}\n $focusRingColor={focusRingColor}\n />\n )}\n </Container>\n );\n};","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'inverse', 'filled'] as const;\ntype Variant = (typeof variants)[number];\n\nconst StyledButton = styled.button<{ variant: Variant }>`\n width: 2.5rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n background-color: ${(props) => {\n switch (props.variant) {\n case 'filled':\n return colors.background.brand;\n case 'primary':\n case 'secondary':\n case 'inverse':\n default:\n return 'transparent';\n }\n }};\n border: 2px solid ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'inverse':\n return colors.text.secondary; \n case 'filled':\n return colors.background.brand;\n default:\n return colors.text.brand;\n }\n }};\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'inverse':\n return colors.text.secondary; \n case 'filled':\n return colors.text.secondary;\n default:\n return colors.text.brand;\n }\n }};\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover {\n opacity: 0.8;\n }\n\n svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n`;\n\ninterface SocialButtonProps {\n icon: React.ReactNode;\n onClick?: () => void;\n variant?: Variant;\n ariaLabel?: string;\n}\n\nexport const SocialButton = ({\n icon,\n onClick,\n variant = 'primary',\n ariaLabel,\n}: SocialButtonProps) => {\n return (\n <StyledButton\n onClick={onClick}\n variant={variant}\n aria-label={ariaLabel}\n >\n {icon}\n </StyledButton>\n );\n};\n\nSocialButton.variants = variants;","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle'] as const;\ntype Variant = (typeof variants)[number];\n\nconst CheckboxContainer = styled.label`\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n cursor: pointer;\n font-size: 0.875rem;\n line-height: 1.5;\n`;\n\nconst HiddenCheckbox = styled.input.attrs({ type: 'checkbox' })`\n position: absolute;\n opacity: 0;\n cursor: pointer;\n`;\n\nconst StyledCheckbox = styled.div<{ $checked: boolean; variant: Variant }>`\n width: 1.25rem;\n height: 1.25rem;\n border: 2px solid ${props => {\n if (props.$checked) {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }\n return colors.text.subtle; \n }};\n border-radius: 4px;\n background-color: ${props => {\n if (props.$checked) {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }\n return 'transparent';\n }};\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: all 0.2s;\n\n &::after {\n content: '✓';\n color: ${colors.text.secondary}; // white checkmark\n font-size: 0.875rem;\n font-weight: bold;\n display: ${props => props.$checked ? 'block' : 'none'};\n }\n`;\n\nconst Text = styled.span<{ variant: Variant }>`\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.primary;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.primary;\n }\n }};\n`;\n\nconst Link = styled.a<{ variant: Variant }>`\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }};\n font-weight: 700;\n text-decoration: underline;\n cursor: pointer;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\ninterface TermsCheckboxProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n text?: string;\n termsText?: string;\n termsUrl?: string;\n cookieText?: string;\n cookieUrl?: string;\n variant?: Variant;\n}\n\nexport const TermsCheckbox = ({\n checked,\n onChange,\n text = \"By submitting, I agree to Juta's\",\n termsText = \"Terms and Conditions\",\n termsUrl = \"/terms\",\n cookieText = \"Cookie Policy\",\n cookieUrl = \"/cookie-policy\",\n variant = 'primary',\n}: TermsCheckboxProps) => {\n return (\n <CheckboxContainer>\n <HiddenCheckbox\n checked={checked}\n onChange={(e) => onChange(e.target.checked)}\n />\n <StyledCheckbox $checked={checked} variant={variant} />\n <Text variant={variant}>\n {text}{' '}\n <Link href={termsUrl} variant={variant} target=\"_blank\" rel=\"noopener noreferrer\">\n {termsText}\n </Link>\n {' '}and{' '}\n <Link href={cookieUrl} variant={variant} target=\"_blank\" rel=\"noopener noreferrer\">\n {cookieText}\n </Link>\n </Text>\n </CheckboxContainer>\n );\n};\n\nTermsCheckbox.variants = variants;","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst sizes = ['sm', 'md', 'lg'] as const;\n\nconst variants = {\n sm: {\n fontSize: '14px',\n fontWeight: 500,\n },\n md: {\n fontSize: '16px',\n fontWeight: 500,\n },\n lg: {\n fontSize: '18px',\n fontWeight: 500,\n },\n} as const;\n\ntype Variant = keyof typeof variants;\n\ntype Color = keyof typeof colors.text;\n\ninterface TextProps {\n children: string;\n variant?: Variant;\n color?: Color;\n}\n\nconst StyledText = styled.h1<{ variant: Variant; color: Color }>`\n color: ${(props) => colors.text[props?.color]};\n font-size: ${(props) => variants[props.variant].fontSize};\n font-weight: ${(props) => variants[props.variant].fontWeight};\n`;\n\nexport const Text = ({\n children,\n color = 'primary',\n variant = 'md',\n}: TextProps) => {\n return (\n <StyledText color={color} variant={variant}>\n {children}\n </StyledText>\n );\n};\n\nText.variants = sizes;\n","import { ChangeEvent } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { InputTypes, type BaseInputProps } from '../../types';\n\ninterface TextareaProps extends Omit<BaseInputProps, 'label'> {\n onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n disabled?: boolean;\n value?: string | number;\n rows?: number;\n cols?: number;\n}\n\nconst StyledTextarea = styled.textarea`\n display: block;\n width: 100%;\n height: 100%;\n outline: none;\n background-color: transparent;\n color: ${colors.text.subtle};\n font-weight: 600;\n resize: vertical;\n`;\n\nexport const Textarea = ({\n name,\n onChange,\n rows = 3,\n ...rest\n}: TextareaProps) => {\n return (\n <StyledTextarea name={name} onChange={onChange} rows={rows} {...rest} />\n );\n};\n\nTextarea.types = InputTypes;\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst bgVariants = ['primary', 'secondary', 'tertiary', 'subtle', 'blue', 'brand', 'light', 'transparent'] as const;\nconst textVariants = ['brand', 'primary', 'secondary', 'tertiary', 'subtle', 'light', 'error', 'blue'] as const;\n\ntype BgVariant = (typeof bgVariants)[number];\ntype TextVariant = (typeof textVariants)[number];\n\nconst StyledContainer = styled.button<{ \n as?: 'button' | 'div';\n bgVariant: BgVariant;\n}>`\n padding: 0 1rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n flex-shrink:0;\n white-space: nowrap;\n background-color: ${(props) => {\n if (props.bgVariant === 'transparent') return 'transparent';\n return colors.background[props.bgVariant];\n }};\n transition: all 0.2s;\n border: none;\n cursor: pointer;\n\n &:hover {\n opacity: 0.9;\n }\n`;\n\nconst StyledText = styled.span<{ \n textVariant: TextVariant;\n $uppercase?: boolean;\n $bold?: boolean;\n}>`\n color: ${(props) => colors.text[props.textVariant]};\n font-size: 0.75rem;\n letter-spacing: 0.05em;\n text-transform: ${props => props.$uppercase ? 'uppercase' : 'none'};\n font-weight: ${props => props.$bold ? 700 : 600};\n`;\n\ninterface TextButtonProps {\n text: string;\n onClick?: () => void;\n asChild?: boolean;\n bgVariant?: BgVariant;\n textVariant?: TextVariant;\n uppercase?: boolean;\n bold?: boolean;\n}\n\nexport const TextButton = ({ \n text,\n onClick,\n asChild = false,\n bgVariant = 'brand',\n textVariant = 'secondary',\n uppercase = true,\n bold = false\n}: TextButtonProps) => {\n return (\n <StyledContainer \n as={asChild ? 'div' : 'button'}\n onClick={onClick}\n bgVariant={bgVariant}\n >\n <StyledText textVariant={textVariant} $uppercase={uppercase} $bold={bold}>\n {text}\n </StyledText>\n </StyledContainer>\n );\n};\n\nTextButton.bgVariants = bgVariants;\nTextButton.textVariants = textVariants;","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle'] as const;\ntype Variant = (typeof variants)[number];\n\nconst ToggleContainer = styled.div<{ variant: Variant }>`\n display: inline-flex;\n background-color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.background.secondary;\n case 'secondary':\n return colors.background.light;\n case 'subtle':\n return colors.background.subtle;\n default:\n return colors.background.secondary;\n }\n }};\n border-radius: 9999px;\n padding: 0.25rem;\n gap: 0.25rem;\n`;\n\nconst ToggleOption = styled.button<{ \n $isActive: boolean; \n variant: Variant;\n}>`\n padding: 0.5rem 1.5rem;\n border-radius: 9999px;\n border: none;\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n \n background-color: ${props => {\n if (!props.$isActive) return 'transparent';\n \n switch (props.variant) {\n case 'primary':\n return colors.background.brand;\n case 'secondary':\n return colors.background.blue;\n case 'subtle':\n return colors.background.subtle;\n default:\n return colors.background.brand;\n }\n }};\n \n color: ${props => {\n if (props.$isActive) {\n return colors.text.secondary; \n }\n \n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }};\n\n &:hover {\n opacity: ${props => props.$isActive ? 1 : 0.7};\n }\n`;\n\ninterface ToggleButtonProps {\n options: string[];\n activeOption: string;\n onChange: (option: string) => void;\n variant?: Variant;\n}\n\nexport const ToggleButton = ({\n options,\n activeOption,\n onChange,\n variant = 'primary',\n}: ToggleButtonProps) => {\n return (\n <ToggleContainer variant={variant}>\n {options.map((option) => (\n <ToggleOption\n key={option}\n $isActive={activeOption === option}\n variant={variant}\n onClick={() => onChange(option)}\n >\n {option}\n </ToggleOption>\n ))}\n </ToggleContainer>\n );\n};\n\nToggleButton.variants = variants;","import { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { Label } from '../../atoms';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\nconst variants = ['outline', 'none'] as const;\ninterface InputContainerProps {\n error?: string;\n children: ReactNode;\n variant?: (typeof variants)[number];\n}\n\nconst Container = styled.div`\n width: 100%;\n`;\n\nconst InnerContainer = styled.div<\n Pick<InputContainerProps, 'error' | 'variant'>\n>`\n position: relative;\n width: 100%;\n min-height: 58px;\n display: flex;\n align-items: center;\n\n border-style: solid;\n border-width: ${(props) => (props?.variant === 'outline' ? sizes[0] : '0px')};\n border-color: ${(props) =>\n props?.error ? colors.border.error : colors.border.active};\n border-radius: ${radii.lg};\n\n padding: ${spaces[3]} ${spaces[3]} ${spaces[2]};\n\n &:hover {\n border-color: ${colors.border.hover};\n cursor: text;\n }\n\n &:focus-within {\n border-color: ${colors.border.focus};\n }\n`;\n\nexport const InputContainer = ({\n error,\n children,\n variant = 'outline',\n}: InputContainerProps) => {\n return (\n <Container>\n <InnerContainer error={error} variant={variant}>\n {children}\n </InnerContainer>\n {typeof error === 'string' && <Label value={error} color=\"error\" />}\n </Container>\n );\n};\n","import { useMemo } from 'react';\nimport styled from 'styled-components';\nimport { FloatingLabel } from '../../atoms/Label/Label';\nimport { colors } from '../../tokens/colors';\nimport { Option } from '../../types';\nimport { InputContainer } from '../InputContainer/InputContainer';\n\ninterface DropdownProps<T> {\n options: Option<T>[];\n value?: T;\n onChange: (value: T) => void;\n label?: string;\n error?: string;\n name: string;\n placeholder?: string;\n disabled?: boolean;\n}\n\nconst Select = styled.select<{ isInvalid: boolean }>`\n width: 100%;\n color: ${colors.text.subtle};\n background: transparent;\n font-weight: 600;\n border: none;\n outline: none;\n padding: 0;\n margin: 0;\n\n &:focus,\n &:active,\n &:hover {\n border: none;\n outline: none;\n box-shadow: none;\n }\n\n &:invalid {\n color: ${colors.text.subtle};\n }\n`;\n\nconst OptionItem = styled.option`\n color: ${(props) =>\n props.disabled ? colors.text.light : colors.text.subtle};\n`;\n\nexport const Dropdown = <T extends string | number>({\n error,\n onChange,\n options,\n value,\n label,\n name,\n placeholder = 'Select an option',\n disabled,\n}: DropdownProps<T>) => {\n const isInvalid = useMemo(\n () => error ? typeof error === 'string' && error?.length > 0 : false,\n [error],\n );\n\n return (\n <InputContainer error={error}>\n {typeof label === 'string' && (\n <FloatingLabel\n value={label}\n color={isInvalid ? 'error' : 'subtle'}\n fontWeight=\"600\"\n />\n )}\n <Select\n name={name}\n value={value ?? ''}\n onChange={(e) => onChange(e.target.value as T)}\n isInvalid={isInvalid}\n disabled={disabled}\n >\n <OptionItem value=\"\" disabled hidden>\n {placeholder}\n </OptionItem>\n {options.map((option) => (\n <OptionItem key={option.value} value={option.value}>\n {option.label}\n </OptionItem>\n ))}\n </Select>\n </InputContainer>\n );\n};\n","'use client';\n\nimport { Dropdown } from '../../molecules/Dropdown/Dropdown';\nimport { Option } from '../../types';\n\ninterface FilterProps<T extends string | number> {\n name: string;\n label?: string;\n options: Option<T>[];\n value: T;\n onChange: (value: T) => void;\n placeholder?: string;\n}\n\nexport function Filter<T extends string | number>({\n name,\n label,\n options,\n value,\n onChange,\n placeholder = 'Filter by User',\n}: FilterProps<T>) {\n return (\n <Dropdown\n name={name}\n label={label}\n options={options}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n />\n );\n}\n","import Link from 'next/link';\nimport { tv } from 'tailwind-variants';\nimport { MenuItem, MenuSubItem } from '../types/menuItem';\n\ninterface Props {\n direction: 'horizontal' | 'vertical';\n items: MenuItem[];\n selected?: string;\n}\n\nexport default function NavMenu({ direction, items, selected = '' }: Props) {\n const containerStyle = tv({\n base: 'flex',\n variants: {\n direction: {\n vertical: 'flex-col',\n horizontal: 'flex-row',\n },\n },\n defaultVariants: {\n direction: 'horizontal',\n },\n });\n\n return (\n <ul className={containerStyle({ direction })}>\n {items.map((item: MenuItem, i: number) => (\n <li\n key={i}\n className=\"mb-2 max-h-10 hover:max-h-400 transition-all overflow-hidden duration-500\"\n >\n <Link\n href={item.link || ''}\n className={` ${item.link == selected ? 'font-bold text-gray-100' : 'font-semibold text-gray-200'} flex mb-2 py-3 px-4 items-center justify-between text-sm rounded-2xl hover:underline hover:font-bold transition duration-200`}\n >\n <div className=\"flex items-center gap-2\">\n {item.icon && item.icon}\n <span>{item.title}</span>\n </div>\n {item.items && (\n <span className=\"transform\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M15.1746 10.1204C15.3843 9.94067 15.6999 9.96495 15.8796 10.1746C16.0593 10.3843 16.0351 10.6999 15.8254 10.8796L12.3254 13.8796C12.1382 14.0401 11.8619 14.0401 11.6746 13.8796L8.17461 10.8796C7.96495 10.6999 7.94067 10.3843 8.12038 10.1746C8.30009 9.96495 8.61574 9.94067 8.8254 10.1204L12 12.8415L15.1746 10.1204Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n )}\n </Link>\n <div>\n {item.items && (\n <ul className=\"pl-8 p-4 rounded-md\">\n {item.items.map((subItem: MenuSubItem, i: number) => (\n <li key={i} className=\"mb-2\">\n <Link\n href={subItem.link || '#'}\n className=\"flex mb-2 py-3 px-4 items-center text-gray-300 font-semibold text-xs rounded-2xl hover:underline hover:font-bold hover:text-gray-800 transition duration-200\"\n >\n {subItem.icon && (\n <span\n className=\"mr-2\"\n dangerouslySetInnerHTML={{ __html: subItem.icon }}\n ></span>\n )}\n <span>{subItem.title}</span>\n </Link>\n </li>\n ))}\n </ul>\n )}\n </div>\n </li>\n ))}\n </ul>\n );\n}\n","import { ChangeEvent, useEffect, useState } from 'react';\n\ninterface SearchProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n delay?: number;\n}\n\nexport const Search = ({\n value,\n onChange,\n placeholder = 'Search...',\n delay = 1000,\n}: SearchProps) => {\n const [searchTerm, setSearchTerm] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n onChange(searchTerm);\n }, delay);\n\n return () => clearTimeout(handler);\n }, [searchTerm, delay, onChange]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setSearchTerm(e.target.value);\n };\n\n return (\n <input\n type=\"text\"\n value={searchTerm}\n onChange={handleChange}\n placeholder={placeholder}\n className=\"border border-gray-300 rounded-md px-4 py-2 w-64 text-sm text-gray-900 placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n aria-label={placeholder}\n />\n );\n};\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { OrderType } from '../../types/orderType';\n\ninterface SortByProps {\n value: OrderType;\n onChange: (value: OrderType) => void;\n}\n\nconst Options: { value: OrderType; label: string }[] = [\n {\n value: 'desc',\n label: 'Sort by: Newest',\n },\n {\n value: 'asc',\n label: 'Sort by: Oldest',\n },\n];\n\nexport const SortBy = ({ value, onChange }: SortByProps) => {\n const [selected, setSelected] = useState<OrderType>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n onChange(selected);\n });\n return () => clearTimeout(handler);\n }, [selected, onChange]);\n\n return (\n <select\n value={selected}\n onChange={(e) => setSelected(e.target.value as OrderType)}\n className=\"border border-gray-300 rounded-md px-4 py-2 w-48 text-sm text-gray-900 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n >\n {Options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n","'use client';\n\ninterface SpinnerProps {\n height?: `${number}px`;\n width?: `${number}px`;\n}\n\nexport default function Spinner(props: SpinnerProps) {\n return (\n <>\n <svg\n aria-hidden=\"true\"\n className=\"w-8 h-8 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600\"\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n fill=\"currentFill\"\n />\n </svg>\n </>\n );\n}\n","import {\n Button,\n Dialog as DefaultDialog,\n DialogPanel,\n DialogTitle,\n Transition,\n} from \"@headlessui/react\";\nimport { Fragment, ReactNode } from \"react\";\n\ninterface MyModalProps {\n open: boolean;\n onClose: () => void;\n children?: ReactNode;\n title?: string;\n buttonText?: string;\n buttonHandler?: () => void;\n secondaryText?: string;\n secondaryHandler?: () => void;\n}\n\nexport const Dialog = ({\n open,\n onClose,\n children,\n title = \"Payment successful\",\n buttonText = \"Continue\",\n buttonHandler,\n secondaryText,\n secondaryHandler,\n}: MyModalProps) => {\n return (\n <Transition appear show={open} as={Fragment}>\n <DefaultDialog\n open={open}\n as=\"div\"\n className=\"relative z-10 focus:outline-none\"\n onClose={onClose}\n __demoMode\n >\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n leave=\"ease-in duration-500\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-black/30\" />\n </Transition.Child>\n <div className=\"fixed inset-0 z-10 w-screen overflow-y-auto\">\n <div className=\"flex min-h-full items-center justify-center p-4\">\n <DialogPanel\n transition\n className=\"w-full max-w-md rounded-lg bg-white dark:bg-white/5 p-6 backdrop-blur-1xl duration-300 ease-out\"\n style={{ maxWidth: \"515px\" }}\n >\n <div className=\"flex justify-between items-center mb-2\">\n <DialogTitle\n as=\"h3\"\n className=\"text-2xl pb-3 font-bold dark:text-white text-center w-full\"\n >\n {title}\n </DialogTitle>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"text-gray-300 hover:text-gray-300 text-xl font-bold focus:outline-none px-2\"\n style={{ lineHeight: 1 }}\n >\n ×\n </button>\n </div>\n {children}\n <div\n className={`${\n secondaryHandler && secondaryText\n ? \"flex justify-center mt-4 gap-4\"\n : \"mt-4\"\n }`}\n >\n {buttonHandler && (\n <Button\n className=\"inline-flex items-center gap-2 rounded-md bg-gray-700 px-3 py-1.5 text-sm/6 font-semibold text-white shadow-inner shadow-white/10 focus:not-data-focus:outline-none data-focus:outline data-focus:outline-white data-hover:bg-gray-600 data-open:bg-gray-700\"\n onClick={buttonHandler}\n >\n {buttonText}\n </Button>\n )}\n {secondaryHandler && secondaryText && (\n <Button\n className=\"bg-gray-200 text-gray-800 px-4 py-2 w-24 rounded hover:bg-gray-300\"\n onClick={secondaryHandler}\n >\n {secondaryText}\n </Button>\n )}\n </div>\n </DialogPanel>\n </div>\n </div>\n </DefaultDialog>\n </Transition>\n );\n}\n","'use client';\n\nimport Link from 'next/link';\nimport {\n ClockIcon,\n HomeIcon,\n TrashIcon,\n} from 'property-practice-icons';\nimport { useEffect, useMemo, useState } from 'react';\nimport { tv } from 'tailwind-variants';\nimport { Dialog } from '../Dialog/Dialog';\nimport { TableHeaderConfig } from '../Table/Table';\n\ntype PaginationOptionsType = {\n perPage?: 10 | 25 | 50 | 100;\n};\n\ninterface TableRowItem {\n id: string;\n [key: string]: any;\n}\n\nexport interface TableRowProps {\n data: TableRowItem[];\n headers: TableHeaderConfig[];\n paginationOptions?: PaginationOptionsType;\n onDelete?: (id: string) => void;\n variant?: 'Primary' | 'Secondary';\n}\n\nconst itemContainer = tv({\n base: 'rounded-2xl mb-2 px-8 py-3 flex flex-wrap items-center justify-between gap-4',\n variants: {\n variant: {\n Primary: 'border border-gray-200',\n Secondary: 'border-none',\n },\n },\n defaultVariants: {\n variant: 'Primary',\n },\n});\n\nconst formatDate = (value: string | Date) => {\n const date = new Date(value);\n return date.toLocaleString('default', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour12: false,\n hour: 'numeric',\n minute: 'numeric',\n });\n};\n\nconst getStatusBadge = (status: string, transactionType?: string) => {\n const base = 'px-3 rounded-xl py-1 text-gray-400 text-xs font-bold uppercase';\n switch (status) {\n case 'DRAFT':\n return <span className={`${base} bg-purple-400`}>Draft</span>;\n case 'PENDING':\n return (\n <span className={`${base} bg-yellow-200`}>\n {transactionType?.toUpperCase() === 'LEASE'\n ? 'Awaiting Lessor Information'\n : 'Awaiting Seller Information'}\n </span>\n );\n case 'ACTIVE':\n return <span className={`${base} bg-blue-400`}>Active</span>;\n case 'FINALISED':\n return <span className={`${base} bg-green-400`}>Finalised</span>;\n case 'ARCHIVED':\n return <span className={`${base} bg-red-400`}>Archived</span>;\n default:\n return <span className={`${base} bg-gray-200`}>{status}</span>;\n }\n};\n\nconst RowCell = ({\n header,\n item,\n}: {\n header: TableHeaderConfig;\n item: TableRowItem;\n}) => (\n <div className=\"flex-1 min-w-[120px]\">\n <p className=\"font-semibold text-gray-300 text-sm tracking-wide flex items-center gap-1\">\n {header.filterAccessor === 'status' && <ClockIcon />}\n {header.heading}\n </p>\n <p className=\"text-base font-medium text-gray-400 flex items-center gap-1\">\n {header.filterAccessor === 'formattedAddress' && <HomeIcon />}\n {header.filterAccessor === 'formattedAddress' ? (\n <span className=\"break-words max-w-[200px] block\">\n {item[header.filterAccessor]}\n </span>\n ) : header.filterAccessor === 'status' ? (\n getStatusBadge(item[header.filterAccessor], item.transactionType)\n ) : header.filterAccessor === 'createdAt' ? (\n formatDate(item[header.filterAccessor])\n ) : header.filterAccessor === '-' ? (\n '-'\n ) : (\n item[header.filterAccessor]\n )}\n </p>\n </div>\n);\n\nconst DeleteDialog = ({\n open,\n onClose,\n onConfirm,\n isDeleting,\n}: {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n isDeleting: boolean;\n}) => (\n <Dialog\n open={open}\n onClose={onClose}\n title=\"Delete Transaction\"\n buttonText={isDeleting ? 'Deleting...' : 'Confirm'}\n buttonHandler={onConfirm}\n secondaryText=\"Cancel\"\n secondaryHandler={onClose}\n >\n <div className=\"flex flex-col items-center text-center\">\n <TrashIcon />\n <p className=\"text-sm text-gray-600 mb-4\">\n Are you sure you want to delete this transaction? This will remove the\n property from the list (soft delete).\n </p>\n </div>\n </Dialog>\n);\n\nexport const TableRow = ({\n data,\n headers,\n paginationOptions = {},\n onDelete,\n variant = 'Primary',\n}: TableRowProps) => {\n const [perPage, setPerPage] = useState<number>(\n paginationOptions.perPage ?? 10,\n );\n const [page, setPage] = useState(0);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [selectedTransactionId, setSelectedTransactionId] = useState<\n string | null\n >(null);\n const [isDeleting, setIsDeleting] = useState(false);\n\n const totalPages = useMemo(\n () => Math.ceil(data.length / perPage),\n [data, perPage],\n );\n const paginatedData = useMemo(\n () => data.slice(page * perPage, (page + 1) * perPage),\n [data, page, perPage],\n );\n\n useEffect(() => {\n if (paginationOptions.perPage) {\n setPerPage(paginationOptions.perPage);\n }\n setPage(0);\n }, [paginationOptions.perPage, data]);\n\n const confirmDelete = async () => {\n if (!selectedTransactionId || !onDelete) return;\n setIsDeleting(true);\n try {\n onDelete(selectedTransactionId);\n setIsDialogOpen(false);\n setSelectedTransactionId(null);\n } catch {\n alert('Failed to delete transaction. Please try again.');\n } finally {\n setIsDeleting(false);\n }\n };\n\n const handlePrevPage = () => {\n if (page > 0) setPage(page - 1);\n };\n\n const handleNextPage = () => {\n if (page < totalPages - 1) setPage(page + 1);\n };\n\n const handleRowsPerPageChange = (value: number) => {\n setPerPage(value);\n setPage(0);\n };\n\n return (\n <div className=\"flex flex-col\">\n {paginatedData.map((item, idx) => (\n <div\n key={item.id}\n className={`${itemContainer({ variant })} ${idx % 2 === 0 ? 'bg-gray-50 dark:bg-gray-600' : ''}`}\n >\n {headers.map((header) => (\n <RowCell key={header.filterAccessor} header={header} item={item} />\n ))}\n\n <div className=\"flex flex-col items-start gap-1\">\n <p className=\"font-semibold text-[#033c89] text-sm tracking-wide\">\n <Link\n href={`${item.url}`}\n className=\"text-[#033c89] hover:underline\"\n >\n View Details\n </Link>\n </p>\n {onDelete && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n setSelectedTransactionId(item.id);\n setIsDialogOpen(true);\n }}\n className=\"flex items-center gap-1 text-red-500 hover:text-red-700\"\n >\n <TrashIcon />\n <span className=\"text-sm font-medium\">Delete</span>\n </button>\n )}\n </div>\n </div>\n ))}\n\n <div className=\"flex flex-wrap items-center px-6 pt-8 border-t border-gray-400\">\n <div className=\"w-full sm:w-auto mb-4 sm:mb-0 mr-auto\">\n <div className=\"flex items-center gap-2\">\n <button\n disabled\n className=\"flex items-center justify-center h-6 w-11 bg-gray-100 dark:bg-gray-600 rounded-full\"\n >\n <div className=\"h-5 w-5 rounded-full dark:bg-gray-400 bg-gray-50\" />\n <div className=\"h-5 w-5 rounded-full bg-transparent\" />\n </button>\n <span className=\"text-sm text-gray-200 dark:text-gray-400 font-medium\">\n Dense\n </span>\n </div>\n </div>\n <div className=\"w-full sm:w-auto mb-6 sm:mb-0 sm:mr-6\">\n <div className=\"flex items-center justify-end ml-auto\">\n <div className=\"sm:mr-8 flex items-center gap-2\">\n <span className=\"text-sm text-gray-400 font-medium\">\n Rows per page\n </span>\n <select\n value={perPage}\n onChange={(e) =>\n handleRowsPerPageChange(Number(e.target.value))\n }\n className=\"text-sm text-gray-200 font-medium bg-transparent outline-none\"\n >\n {[5, 10, 20].map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n <span className=\"hidden sm:inline text-sm text-gray-400 font-medium\">\n {page * perPage + 1}-\n {Math.min((page + 1) * perPage, data.length)} of {data.length}\n </span>\n </div>\n </div>\n </div>\n <div className=\"w-full sm:w-auto mb-6 sm:mb-0\">\n <div className=\"flex items-center justify-end\">\n <a\n onClick={(e) => {\n e.preventDefault();\n handlePrevPage();\n }}\n className={`inline-flex items-center justify-center h-8 w-12 p-1 mr-3 text-xs font-semibold rounded-lg transition duration-200 ${\n page === 0\n ? 'bg-gray-600 text-gray-400 cursor-not-allowed'\n : 'text-gray-400 bg-gray-600 hover:bg-gray-700'\n }`}\n href=\"#\"\n >\n <svg\n width={6}\n height={8}\n viewBox=\"0 0 6 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.52655 3.99988L4.88655 1.63988C5.01072 1.51498 5.08041 1.34601 5.08041 1.16988C5.08041 0.993761 5.01072 0.824793 4.88655 0.699884C4.82457 0.637399 4.75084 0.587802 4.6696 0.553957C4.58836 0.520111 4.50122 0.502686 4.41321 0.502686C4.32521 0.502686 4.23807 0.520111 4.15683 0.553957C4.07559 0.587802 4.00186 0.637399 3.93988 0.699884L1.11321 3.52655C1.05073 3.58853 1.00113 3.66226 0.967287 3.7435C0.933441 3.82474 0.916016 3.91188 0.916016 3.99988C0.916016 4.08789 0.933441 4.17503 0.967287 4.25627C1.00113 4.33751 1.05073 4.41124 1.11321 4.47322L3.93988 7.33322C4.00217 7.39501 4.07605 7.44389 4.15728 7.47707C4.2385 7.51024 4.32548 7.52706 4.41321 7.52655C4.50095 7.52706 4.58793 7.51024 4.66915 7.47707C4.75038 7.44389 4.82425 7.39501 4.88655 7.33322C5.01072 7.20831 5.08041 7.03934 5.08041 6.86322C5.08041 6.68709 5.01072 6.51813 4.88655 6.39322L2.52655 3.99988Z\"\n fill=\"#919EB0\"\n />\n </svg>\n </a>\n\n <a\n onClick={(e) => {\n e.preventDefault();\n handleNextPage();\n }}\n className={`inline-flex items-center justify-center h-8 w-12 p-1 text-xs font-semibold rounded-lg transition duration-200 ${\n page >= totalPages - 1 || totalPages === 0\n ? 'bg-blue-500 text-blue-100 cursor-not-allowed'\n : 'bg-[#033c89] text-blue-50 hover:bg-blue-600'\n }`}\n href=\"#\"\n >\n <svg\n width={6}\n height={10}\n viewBox=\"0 0 6 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.36015 4.52661L1.58682 0.759943C1.52484 0.697457 1.45111 0.647861 1.36987 0.614016C1.28863 0.58017 1.20149 0.562744 1.11348 0.562744C1.02548 0.562744 0.938339 0.58017 0.8571 0.614016C0.77586 0.647861 0.702126 0.697457 0.640151 0.759943C0.515983 0.884851 0.446289 1.05382 0.446289 1.22994C0.446289 1.40607 0.515983 1.57503 0.640151 1.69994L3.94015 5.03328L0.640151 8.33328C0.515983 8.45818 0.446289 8.62715 0.446289 8.80328C0.446289 8.9794 0.515983 9.14837 0.640151 9.27328C0.701894 9.33627 0.775524 9.38638 0.856774 9.42071C0.938024 9.45504 1.02528 9.47291 1.11348 9.47328C1.20169 9.47291 1.28894 9.45504 1.37019 9.42071C1.45144 9.38638 1.52507 9.33627 1.58682 9.27328L5.36015 5.50661C5.42782 5.44418 5.48183 5.36841 5.51876 5.28408C5.5557 5.19975 5.57477 5.10868 5.57477 5.01661C5.57477 4.92454 5.5557 4.83347 5.51876 4.74914C5.48183 4.66481 5.42782 4.58904 5.36015 4.52661Z\"\n fill=\"#F4F6FF\"\n />\n </svg>\n </a>\n </div>\n </div>\n </div>\n <DeleteDialog\n open={isDialogOpen}\n onClose={() => setIsDialogOpen(false)}\n onConfirm={confirmDelete}\n isDeleting={isDeleting}\n />\n </div>\n );\n};\n","import { useMemo } from 'react';\nimport { TableRow } from '../TableRow/TableRow';\n\nexport type TableHeaderConfig = {\n heading: string;\n filterAccessor: string;\n};\n\ninterface TableProps {\n data: any;\n headers: TableHeaderConfig[];\n onDelete?: (id: string) => void;\n}\n\nexport const Table = ({ data, headers, onDelete }: TableProps) => {\n const isNotempty = useMemo(() => data?.length > 0, [data]);\n\n return (\n <div className=\"overflow-x-auto\">\n <div className=\"w-full border-collapse\">\n <TableRow data={data} headers={headers} onDelete={onDelete} />\n </div>\n </div>\n );\n};\n","'use client';\n\nimport { ReactElement, useMemo } from 'react';\nimport { Table, TableHeaderConfig } from '../Table/Table';\n\ninterface TableInnerProps {\n data?: any[];\n headers: TableHeaderConfig[];\n renderOnEmpty?: ReactElement | null;\n onDelete?: (id: string) => void;\n}\n\nexport const TableInner = ({\n data = [],\n headers = [],\n renderOnEmpty = null,\n onDelete,\n}: TableInnerProps) => {\n const isNotEmpty = useMemo(() => data.length > 0, [data]);\n\n return (\n <>\n <Table data={data} headers={headers} onDelete={onDelete} />\n {!isNotEmpty && renderOnEmpty}\n </>\n );\n};\n","import { tv } from 'tailwind-variants';\nimport type { TableListItemType } from '../types/tableListItem';\n\nconst itemContainer = tv({\n base: 'rounded-2xl mb-2 px-8 py-3 flex flex-wrap items-center justify-between gap-4',\n variants: {\n variant: {\n Primary: 'border border-gray-200',\n Secondary: 'border-none',\n },\n },\n defaultVariants: {\n variant: 'Primary',\n },\n});\n\ninterface Props {\n item: TableListItemType;\n variant?: 'Primary' | 'Secondary';\n alt?: boolean;\n selectItemHandler?: () => void;\n}\nexport default function TableListItem({\n item,\n selectItemHandler,\n variant = 'Primary',\n alt = false,\n}: Props & { variant?: 'Primary' | 'Secondary' }) {\n const dateTimeFormatter = (value: Date): string => {\n const date = new Date(value);\n return date.toLocaleString('default', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour12: false,\n hour: 'numeric',\n minute: 'numeric',\n });\n };\n\n const statusDisplay = (status: string) => {\n switch (status) {\n case 'DRAFT':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-purple-400 text-gray-400 text-xs font-bold uppercase\">\n Draft\n </span>\n );\n case 'PENDING':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-yellow-200 text-gray-400 text-xs font-bold uppercase\">\n Pending\n </span>\n );\n case 'ACTIVE':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-blue-400 text-gray-400 text-xs font-bold uppercase\">\n Active\n </span>\n );\n case 'FINALISED':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-green-400 text-gray-400 text-xs font-bold uppercase\">\n Finalised\n </span>\n );\n case 'ARCHIVED':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-red-400 text-gray-400 text-xs font-bold uppercase\">\n Archived\n </span>\n );\n default:\n return (\n <span className=\"px-3 rounded-xl py-1 bg-gray-200 text-gray-400 text-xs font-bold uppercase\">\n {status}\n </span>\n );\n }\n };\n\n return (\n <div\n className={`${itemContainer({ variant })} ${alt ? 'bg-gray-50 dark:bg-gray-600' : ''}`}\n >\n <div className=\"flex flex-col gap-2 w-52\">\n <p className=\"font-semibold text-gray-300 text-sm -tracking-widest\">\n Title\n </p>\n <div className=\"flex flex-row items-center\">\n <div className=\"p-5 mr-2 inline-flex rounded-2xl\">\n <svg\n className=\"w-4 h-4\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.5 14H3.49951C3.3669 14 3.23973 13.9473 3.14596 13.8536C3.05219 13.7598 2.99951 13.6326 2.99951 13.5V2.5C2.99951 2.36739 3.05219 2.24021 3.14596 2.14645C3.23973 2.05268 3.3669 2 3.49951 2H9.5L13 5.5V13.5C13 13.5657 12.9871 13.6307 12.9619 13.6913C12.9368 13.752 12.9 13.8071 12.8536 13.8536C12.8071 13.9 12.752 13.9368 12.6913 13.9619C12.6307 13.9871 12.5657 14 12.5 14Z\"\n stroke=\"#2796CE\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n <path\n d=\"M9.5 2V5.5H13.0005\"\n stroke=\"#2796CE\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n <path\n d=\"M6.5 9.5H9.5\"\n stroke=\"#2796CE\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n </svg>\n </div>\n <p className=\"text-gray-300 font-semibold w-xs text-sm grow\">\n {item.title}\n </p>\n </div>\n </div>\n {item.status && (\n <div className=\"flex flex-col items-end gap-2\">\n <p className=\"font-semibold text-gray-300 text-sm -tracking-widest\">\n Status\n </p>\n {statusDisplay(item.status)}\n </div>\n )}\n <div className=\"text-gray-300 text-sm\">\n {/* <p className=\"font-semibold text-gray-300 text-sm -tracking-widest\">Date</p> */}\n {dateTimeFormatter(item.date)}\n </div>\n {item.type && (\n <div className=\"text-gray-300 text-sm\">\n {/* <p className=\"font-semibold text-gray-300 text-sm -tracking-widest\">Type</p> */}\n {item.type}\n </div>\n )}\n {/* <p className=\"text-gray-300 text-sm w-28\">{item.address.city}</p>\n <a className=\"inline-block\" href=\"#\" onClick={selectItemHandler}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13.5 11.5C14.3284 11.5 15 10.8284 15 10C15 9.17157 14.3284 8.5 13.5 8.5C12.6716 8.5 12 9.17157 12 10C12 10.8284 12.6716 11.5 13.5 11.5Z\" fill=\"#7A899B\"></path>\n <path d=\"M6.5 11.5C7.32843 11.5 8 10.8284 8 10C8 9.17157 7.32843 8.5 6.5 8.5C5.67157 8.5 5 9.17157 5 10C5 10.8284 5.67157 11.5 6.5 11.5Z\" fill=\"#7A899B\"></path>\n </svg>\n </a> */}\n <a\n className=\"inline-flex h-9 p-3 mr-2 items-center cursor-pointer justify-center bg-gray-700 hover:bg-gray-700 rounded-lg transition duration-200\"\n href={item.url}\n onClick={selectItemHandler ? () => selectItemHandler() : undefined}\n >\n <svg\n width=\"14\"\n height=\"15\"\n viewBox=\"0 0 14 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.0002 7.50012C12.8234 7.50012 12.6538 7.57036 12.5288 7.69538C12.4037 7.82041 12.3335 7.98998 12.3335 8.16679V12.1668C12.3335 12.3436 12.2633 12.5132 12.1382 12.6382C12.0132 12.7632 11.8436 12.8335 11.6668 12.8335H2.3335C2.15669 12.8335 1.98712 12.7632 1.86209 12.6382C1.73707 12.5132 1.66683 12.3436 1.66683 12.1668V2.83346C1.66683 2.65664 1.73707 2.48708 1.86209 2.36205C1.98712 2.23703 2.15669 2.16679 2.3335 2.16679H6.3335C6.51031 2.16679 6.67988 2.09655 6.8049 1.97153C6.92992 1.8465 7.00016 1.67693 7.00016 1.50012C7.00016 1.32331 6.92992 1.15374 6.8049 1.02872C6.67988 0.903693 6.51031 0.833455 6.3335 0.833455H2.3335C1.80306 0.833455 1.29436 1.04417 0.919283 1.41924C0.54421 1.79431 0.333496 2.30302 0.333496 2.83346V12.1668C0.333496 12.6972 0.54421 13.2059 0.919283 13.581C1.29436 13.9561 1.80306 14.1668 2.3335 14.1668H11.6668C12.1973 14.1668 12.706 13.9561 13.081 13.581C13.4561 13.2059 13.6668 12.6972 13.6668 12.1668V8.16679C13.6668 7.98998 13.5966 7.82041 13.4716 7.69538C13.3465 7.57036 13.177 7.50012 13.0002 7.50012ZM3.00016 8.00679V10.8335C3.00016 11.0103 3.0704 11.1798 3.19543 11.3049C3.32045 11.4299 3.49002 11.5001 3.66683 11.5001H6.4935C6.58123 11.5006 6.66821 11.4838 6.74943 11.4506C6.83066 11.4175 6.90454 11.3686 6.96683 11.3068L11.5802 6.68679L13.4735 4.83346C13.536 4.77148 13.5856 4.69775 13.6194 4.61651C13.6533 4.53527 13.6707 4.44813 13.6707 4.36012C13.6707 4.27211 13.6533 4.18498 13.6194 4.10374C13.5856 4.0225 13.536 3.94876 13.4735 3.88679L10.6468 1.02679C10.5849 0.964303 10.5111 0.914707 10.4299 0.880861C10.3486 0.847015 10.2615 0.82959 10.1735 0.82959C10.0855 0.82959 9.99835 0.847015 9.91711 0.880861C9.83587 0.914707 9.76214 0.964303 9.70016 1.02679L7.82016 2.91346L3.1935 7.53346C3.13171 7.59575 3.08283 7.66963 3.04965 7.75085C3.01647 7.83208 2.99966 7.91905 3.00016 8.00679ZM10.1735 2.44012L12.0602 4.32679L11.1135 5.27346L9.22683 3.38679L10.1735 2.44012ZM4.3335 8.28012L8.28683 4.32679L10.1735 6.21346L6.22016 10.1668H4.3335V8.28012Z\"\n fill=\"#3D485B\"\n ></path>\n </svg>\n <span className=\"ml-2 text-xs text-gray-200 font-semibold\">View</span>\n </a>\n </div>\n );\n}\n\ninterface HeadersProps {\n headers: string[];\n variant?: 'Primary' | 'Secondary';\n}\nexport function TableHeader({\n headers,\n variant = 'Primary',\n}: HeadersProps & { variant?: 'Primary' | 'Secondary' }) {\n return (\n <div\n className={`${itemContainer({ variant })} bg-[#033c89] dark:bg-gray-800`}\n >\n {headers.map((item, i) => (\n <div className={`flex items-center ${i == 0 ? 'w-52' : ''}`} key={i}>\n <p className=\"text-gray-300 font-bold w-xs text-sm\">{item}</p>\n </div>\n ))}\n </div>\n );\n}\n","import { Option } from '../../types';\n\ninterface TabsProps <T>{\n value: T\n onTabChange: (tab: T) => void;\n options: Option<T>[]\n}\n\nexport const Tabs = <T extends string | number>({\n value: tabValue,\n onTabChange,\n options\n}: TabsProps<T>) => {\n\n const handleTabChange = (newTab: T) => {\n onTabChange(newTab);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <div className=\"px-4 border-b border-gray-300 bg-white\">\n <div className=\"flex gap-x-10 py-3\">\n {options.map(({label, value}) => (\n <button\n key={value}\n type=\"button\"\n onClick={() => handleTabChange(value)}\n className={`text-base font-semibold cursor-pointer px-6 py-2 rounded-t-lg border-b-4 transition-colors duration-200 ${\n tabValue === value\n ? 'border-blue-600 text-[#033c89]'\n : 'border-transparent text-gray-400 dark:text-[#033c89]'\n }`}\n >\n {label}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n};\n","import { useEffect } from 'react';\nimport { tv } from 'tailwind-variants';\nimport { ToastType } from '../types/toast';\n\ninterface Props {\n visible?: boolean;\n setVisible?: (visible: boolean) => void;\n duration?: number | null;\n type: ToastType;\n message?: string;\n onClear?: () => void;\n}\n\nconst toastVariants = tv({\n base: 'z-[100] fixed left-0 bottom-0 p-4 transition-all duration-500 transform',\n variants: {\n show: {\n true: 'translate-x-0',\n false: '-translate-x-full',\n },\n },\n});\n\nconst containerVariants = tv({\n base: 'rounded-lg shadow overflow-hidden p-2',\n variants: {\n type: {\n Default: 'bg-gray-700',\n Success: 'bg-green-700',\n Warning: 'bg-yellow-700',\n Error: 'bg-red-700',\n Message: 'bg-blue-700',\n },\n },\n});\n\nconst iconVariants = tv({\n base: 'flex-shrink-0 self-start inline-flex items-center justify-center w-10 h-10 mr-3 rounded-xl bg-opacity-20',\n variants: {\n type: {\n Success: 'bg-green-500',\n Warning: 'bg-yellow-500',\n Error: 'bg-red-500',\n Message: 'bg-blue-500',\n Default: 'bg-gray-500',\n },\n },\n});\n\nexport default function Toast({\n type,\n message,\n visible,\n setVisible,\n duration = 5000,\n onClear,\n}: Props) {\n //const [show, setShow] = useState(visible);console.log(visible, show)\n\n useEffect(() => {\n //setShow(visible)\n if (duration && visible) {\n const timer = setTimeout(() => {\n setVisible && setVisible(false);\n onClear && onClear();\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, visible]);\n\n const icon = () => {\n switch (type) {\n case 'Success':\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"#a1a1a1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0 10C0 4.47715 4.47715 0 10 0C12.6522 0 15.1957 1.05357 17.0711 2.92893C18.9464 4.8043 20 7.34784 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10ZM9.73 13.61L14.3 7.61V7.58C14.5179 7.29419 14.5668 6.91382 14.4283 6.58218C14.2897 6.25054 13.9848 6.01801 13.6283 5.97218C13.2718 5.92635 12.9179 6.07419 12.7 6.36L8.92 11.36L7.29 9.28C7.07028 8.99776 6.71668 8.85418 6.36239 8.90334C6.00811 8.9525 5.70696 9.18694 5.57239 9.51834C5.43783 9.84974 5.49028 10.2278 5.71 10.51L8.15 13.62C8.34082 13.8615 8.63222 14.0017 8.94 14C9.2495 13.9993 9.54121 13.8552 9.73 13.61Z\"\n fill=\"#54D62C\"\n ></path>\n </svg>\n );\n case 'Warning':\n return (\n <svg\n width=\"24\"\n height=\"20\"\n viewBox=\"0 0 24 21\"\n fill=\"none\"\n stroke=\"#a1a1a1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0005 15C11.8027 15 11.6093 15.0586 11.4449 15.1685C11.2804 15.2784 11.1523 15.4346 11.0766 15.6173C11.0009 15.8 10.9811 16.0011 11.0197 16.1951C11.0583 16.3891 11.1535 16.5673 11.2933 16.7071C11.4332 16.847 11.6114 16.9422 11.8054 16.9808C11.9993 17.0194 12.2004 16.9996 12.3831 16.9239C12.5659 16.8482 12.722 16.72 12.8319 16.5556C12.9418 16.3911 13.0005 16.1978 13.0005 16C13.0005 15.7348 12.8951 15.4804 12.7076 15.2929C12.52 15.1054 12.2657 15 12.0005 15ZM22.6705 16.47L14.6205 2.47C14.3603 2.00351 13.9802 1.61495 13.5196 1.34447C13.0591 1.07398 12.5346 0.931366 12.0005 0.931366C11.4663 0.931366 10.9419 1.07398 10.4813 1.34447C10.0207 1.61495 9.64065 2.00351 9.38046 2.47L1.38046 16.47C1.11125 16.924 0.966598 17.441 0.9611 17.9688C0.955602 18.4966 1.08945 19.0165 1.34914 19.476C1.60883 19.9356 1.98516 20.3185 2.44014 20.586C2.89512 20.8536 3.41264 20.9964 3.94046 21H20.0605C20.5925 21.0052 21.1164 20.8689 21.5784 20.6049C22.0403 20.3409 22.4238 19.9588 22.6894 19.4978C22.9551 19.0368 23.0933 18.5134 23.09 17.9813C23.0866 17.4493 22.9418 16.9277 22.6705 16.47ZM20.9405 18.47C20.8528 18.6259 20.7249 18.7555 20.5701 18.8452C20.4154 18.9349 20.2393 18.9815 20.0605 18.98H3.94046C3.76157 18.9815 3.58556 18.9349 3.43077 18.8452C3.27599 18.7555 3.14811 18.6259 3.06046 18.47C2.97269 18.318 2.92648 18.1455 2.92648 17.97C2.92648 17.7945 2.97269 17.622 3.06046 17.47L11.0605 3.47C11.1444 3.3062 11.2719 3.16873 11.4289 3.07274C11.5859 2.97675 11.7664 2.92596 11.9505 2.92596C12.1345 2.92596 12.315 2.97675 12.472 3.07274C12.629 3.16873 12.7565 3.3062 12.8405 3.47L20.8905 17.47C20.9897 17.6198 21.0467 17.7936 21.0555 17.9731C21.0643 18.1526 21.0245 18.3312 20.9405 18.49V18.47ZM12.0005 7C11.7352 7 11.4809 7.10535 11.2933 7.29289C11.1058 7.48043 11.0005 7.73478 11.0005 8V12C11.0005 12.2652 11.1058 12.5196 11.2933 12.7071C11.4809 12.8946 11.7352 13 12.0005 13C12.2657 13 12.52 12.8946 12.7076 12.7071C12.8951 12.5196 13.0005 12.2652 13.0005 12V8C13.0005 7.73478 12.8951 7.48043 12.7076 7.29289C12.52 7.10535 12.2657 7 12.0005 7Z\"\n fill=\"#FFC107\"\n ></path>\n </svg>\n );\n case 'Error':\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"#a1a1a1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10 12C9.75278 12 9.5111 12.0733 9.30554 12.2107C9.09998 12.348 8.93976 12.5432 8.84516 12.7716C8.75055 13.0001 8.72579 13.2514 8.77402 13.4939C8.82225 13.7363 8.94131 13.9591 9.11612 14.1339C9.29094 14.3087 9.51367 14.4277 9.75614 14.476C9.99862 14.5242 10.25 14.4995 10.4784 14.4049C10.7068 14.3102 10.902 14.15 11.0393 13.9445C11.1767 13.7389 11.25 13.4972 11.25 13.25C11.25 12.9185 11.1183 12.6005 10.8839 12.3661C10.6495 12.1317 10.3315 12 10 12ZM10 10.5C10.2652 10.5 10.5196 10.3946 10.7071 10.2071C10.8946 10.0196 11 9.76522 11 9.5V6.5C11 6.23478 10.8946 5.98043 10.7071 5.79289C10.5196 5.60536 10.2652 5.5 10 5.5C9.73479 5.5 9.48043 5.60536 9.2929 5.79289C9.10536 5.98043 9 6.23478 9 6.5V9.5C9 9.76522 9.10536 10.0196 9.2929 10.2071C9.48043 10.3946 9.73479 10.5 10 10.5ZM10 0C8.02219 0 6.08879 0.58649 4.4443 1.6853C2.79981 2.78412 1.51809 4.3459 0.761209 6.17317C0.00433284 8.00043 -0.193701 10.0111 0.192152 11.9509C0.578004 13.8907 1.53041 15.6725 2.92894 17.0711C4.32746 18.4696 6.10929 19.422 8.0491 19.8079C9.98891 20.1937 11.9996 19.9957 13.8268 19.2388C15.6541 18.4819 17.2159 17.2002 18.3147 15.5557C19.4135 13.9112 20 11.9778 20 10C19.9971 7.34874 18.9425 4.80691 17.0678 2.93219C15.1931 1.05746 12.6513 0.00294858 10 0ZM10 18C8.41775 18 6.87104 17.5308 5.55544 16.6518C4.23985 15.7727 3.21447 14.5233 2.60897 13.0615C2.00347 11.5997 1.84504 9.99113 2.15372 8.43928C2.4624 6.88743 3.22433 5.46197 4.34315 4.34315C5.46197 3.22433 6.88743 2.4624 8.43928 2.15372C9.99113 1.84504 11.5997 2.00346 13.0615 2.60896C14.5233 3.21447 15.7727 4.23984 16.6518 5.55544C17.5308 6.87103 18 8.41775 18 10C17.9976 12.121 17.1539 14.1544 15.6542 15.6542C14.1544 17.1539 12.121 17.9976 10 18Z\"\n fill=\"#FF4842\"\n ></path>\n </svg>\n );\n case 'Message':\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"#a1a1a1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20C15.5228 20 20 15.5228 20 10C20 7.34784 18.9464 4.8043 17.0711 2.92893C15.1957 1.05357 12.6522 0 10 0ZM11 14C11 14.5523 10.5523 15 10 15C9.44771 15 9 14.5523 9 14V9C9 8.44771 9.44771 8 10 8C10.5523 8 11 8.44771 11 9V14ZM9 6C9 6.55228 9.44771 7 10 7C10.5523 7 11 6.55228 11 6C11 5.44772 10.5523 5 10 5C9.44771 5 9 5.44772 9 6Z\"\n fill=\"#1890FF\"\n ></path>\n </svg>\n );\n default:\n return null;\n }\n };\n\n const toast = () => {\n switch (type) {\n case 'Default':\n return (\n <div className=\"flex flex-wrap w-full h-full items-center justify-between\">\n <div className=\"w-full sm:w-auto px-4 py-4 sm:py-0 border-b border-gray-400 sm:border-transparent\">\n <span className=\"text-sm leading-5 text-gray-200 font-semibold\">\n {message}\n </span>\n </div>\n </div>\n );\n default:\n return (\n <div className=\"flex flex-wrap w-full h-full items-center justify-between\">\n <div className=\"w-full sm:w-auto px-4 py-4 sm:py-0\">\n <div className=\"flex items-center pr-6\">\n <div className={iconVariants({ type })}>{icon()}</div>\n <span className=\"text-sm leading-5 text-gray-200\">\n {message}\n </span>\n </div>\n </div>\n <div className=\"w-20 h-16 border-l border-gray-800\">\n <button\n onClick={() => {\n setVisible && setVisible(false);\n onClear && onClear();\n }}\n className=\"flex w-full h-full items-center justify-center text-center text-lg px-2 text-gray-50\"\n >\n X\n </button>\n </div>\n </div>\n );\n }\n };\n\n return (\n <div className={toastVariants({ show: visible })}>\n <div className={containerVariants({ type })}>{toast()}</div>\n </div>\n );\n}\n","import { motion, useAnimation } from 'framer-motion';\nimport { useEffect, useState } from 'react';\nimport { tv } from 'tailwind-variants';\n\nexport const navbar = tv({\n base: 'sticky top-0 z-40 w-full transition-all duration-500',\n variants: {\n scrolled: {\n true: 'backdrop-blur-md bg-white/80 dark:bg-gray-700/80 shadow-md',\n false: 'bg-gray-200 dark:bg-gray-700',\n },\n },\n});\n\ninterface Props {\n logoUrl: string;\n children: React.ReactNode;\n}\n\nexport default function TopMenu({ logoUrl, children }: Props) {\n const [scrolled, setScrolled] = useState(false);\n const controls = useAnimation();\n\n useEffect(() => {\n const onScroll = () => {\n const hasScrolled = window.scrollY > 30;\n setScrolled(hasScrolled);\n\n controls.start({\n opacity: hasScrolled ? 1 : 0.95,\n y: hasScrolled ? 0 : 0,\n transition: { duration: 0.3 },\n });\n };\n\n onScroll(); // trigger once on load\n window.addEventListener('scroll', onScroll);\n return () => window.removeEventListener('scroll', onScroll);\n }, [controls]);\n\n return (\n <motion.nav animate={controls} className={navbar({ scrolled })}>\n <div className=\"max-w-7xl font-bold mx-auto bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 px-4 py-4 flex justify-between items-center\">\n <div className=\"flex flex-row\">\n {logoUrl && (\n <>\n <a className=\"block\" href=\"#\">\n <img src={logoUrl} className=\"h-7 mx-auto\" alt=\"\" />\n </a>\n <span className=\"text-gray-700 dark:text-gray-300 my-auto font-medium text-xl ml-4\">\n Property Practice\n </span>\n </>\n )}\n </div>\n <div className=\"space-x-4 text-sm font-medium \">{children}</div>\n </div>\n </motion.nav>\n );\n}\n","import styled from 'styled-components';\nimport { Description, ExtendedButton, Header, Pill } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst AboutUsContainer = styled.section`\n display: grid;\n grid-template-columns: 35% 65%;\n gap: 3rem;\n padding: 4rem 2rem;\n margin: 0 auto;\n align-items: start;\n background-color: ${colors.background?.secondary || '#000'};\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n }\n`;\n\nconst ImageWrapper = styled.div`\n width: 100%;\n aspect-ratio: 3 / 4;\n border-radius: 8px;\n overflow: hidden;\n \n img {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n }\n`;\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n align-items: flex-start;\n padding: 1rem 4rem 1rem 1rem;\n`;\n\ninterface AboutUsProps {\n image: string;\n pillText: string;\n headerText: string;\n description: string;\n buttonText: string;\n onButtonClick?: () => void;\n pillVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n headerColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n buttonArrowVariant?: 'brand' | 'teal' | 'blue';\n buttonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n buttonTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const AboutUs = ({\n image,\n pillText,\n headerText,\n description,\n buttonText,\n onButtonClick,\n pillVariant = 'primary',\n headerColor = 'brand',\n descriptionVariant = 'primary',\n buttonArrowVariant = 'blue',\n buttonTextBgVariant = 'transparent',\n buttonTextVariant = 'brand',\n}: AboutUsProps) => {\n return (\n <AboutUsContainer>\n <ImageWrapper>\n <img src={image} alt=\"About Us\" />\n </ImageWrapper>\n <ContentWrapper>\n <Pill variant={pillVariant} inverse={true}>\n {pillText}\n </Pill>\n <Header variant=\"h1\" color={headerColor}>\n {headerText}\n </Header>\n <Description variant={descriptionVariant}>\n {description}\n </Description>\n <ExtendedButton\n text={buttonText}\n onClick={onButtonClick}\n arrowVariant={buttonArrowVariant}\n textBgVariant={buttonTextBgVariant}\n textVariant={buttonTextVariant}\n />\n </ContentWrapper>\n </AboutUsContainer>\n );\n};","import styled from 'styled-components';\nimport { SecondaryInput as Input } from '../../atoms';\nimport { breakpoints } from '../../tokens/breakpoints';\nimport { spaces } from '../../tokens/spaces';\n\ninterface ContactFormProps {}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${spaces[4]};\n width: 100%;\n \n @media (max-width: ${breakpoints.sm}) {\n gap: ${spaces[2]};\n }\n`;\n\nconst NameContainer = styled.div`\n display: flex;\n gap: ${spaces[4]};\n flex: 1;\n min-width: 0;\n \n @media (max-width: ${breakpoints.sm}) {\n flex-direction: column;\n gap: ${spaces[2]};\n }\n \n & > * {\n flex: 1;\n min-width: 0;\n }\n`;\n\nexport const ContactForm = ({}: ContactFormProps) => {\n return (\n <Container>\n <NameContainer>\n <Input\n name=\"firstName\"\n label=\"First name\"\n required\n placeholder=\"First name\"\n />\n <Input\n name=\"lastName\"\n label=\"Last name\"\n required\n placeholder=\"Last name\"\n />\n </NameContainer>\n <Input name=\"company\" label=\"Company\" placeholder=\"Company\" />\n <Input name=\"email\" label=\"Email\" placeholder=\"Email\" required />\n <Input name=\"phone\" label=\"Phone number\" placeholder=\"Phone number\" />\n <Input\n name=\"message\"\n label=\"Message\"\n placeholder=\"Message\"\n required\n isTextArea\n />\n </Container>\n );\n};","import { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { spaces } from '../../tokens/spaces';\n\ninterface AccordionContentProps {\n children: ReactNode;\n}\n\nconst Container = styled.div`\n width: 100%;\n padding: ${spaces[4]};\n`;\n\nexport const AccordionContent = ({ children }: AccordionContentProps) => {\n return <Container>{children}</Container>;\n};\n","import { ReactElement } from 'react';\nimport { FaMinus, FaPlus } from 'react-icons/fa';\nimport { FaPlus as FaP } from 'react-icons/fa6';\nimport styled from 'styled-components';\nimport { Button, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\ninterface AccordionHeaderProps {\n title: string;\n isOpen: boolean;\n buttonText?: string;\n onButtonPress?: () => void;\n rightElement?: ReactElement;\n onAccordionPress: () => void;\n}\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`;\n\nconst HeaderContainer = styled.div`\n display: flex;\n align-items: center;\n gap: ${spaces[2]};\n\n &:hover {\n cursor: pointer;\n }\n`;\n\nexport const AccordionHeader = ({\n title,\n isOpen,\n buttonText,\n onAccordionPress,\n onButtonPress,\n rightElement,\n}: AccordionHeaderProps) => {\n return (\n <Container>\n <HeaderContainer onClick={onAccordionPress}>\n <>\n {isOpen ? (\n <FaMinus color={colors.text.primary} size={sizes.lg} />\n ) : (\n <FaPlus color={colors.text.primary} size={sizes.lg} />\n )}\n </>\n <Header variant=\"h2\">{title}</Header>\n </HeaderContainer>\n {rightElement ? (\n rightElement\n ) : (\n <Button\n text={buttonText}\n icon={<FaP fontSize=\"10px\" />}\n onClick={onButtonPress}\n />\n )}\n </Container>\n );\n};\n","import { ComponentProps, ReactElement, useState } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { spaces } from '../../tokens/spaces';\nimport { AccordionContent } from '../AccordionContent/AccordionContent';\nimport { AccordionHeader } from '../AccordionHeader/AccordionHeader';\n\ninterface AccordionProps\n extends Pick<\n ComponentProps<typeof AccordionHeader>,\n 'title' | 'onButtonPress' | 'buttonText' | 'rightElement'\n > {\n children: ReactElement;\n}\n\nconst Container = styled.div`\n border-radius: ${radii.lg};\n background-color: ${colors.background.secondary};\n padding: ${spaces[4]};\n`;\n\nexport const Accordion = ({\n buttonText,\n onButtonPress,\n title,\n children,\n rightElement,\n}: AccordionProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <Container>\n <AccordionHeader\n isOpen={isOpen}\n buttonText={buttonText}\n onButtonPress={onButtonPress}\n onAccordionPress={() => setIsOpen((previousState) => !previousState)}\n title={title}\n rightElement={rightElement}\n />\n {isOpen && <AccordionContent>{children}</AccordionContent>}\n </Container>\n );\n};\n","import { useState } from 'react';\nimport { HiMinus, HiPlus } from 'react-icons/hi2';\nimport styled from 'styled-components';\nimport { Header, TextButton } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'inverse', 'subtle'] as const;\ntype Variant = (typeof variants)[number];\n\nconst AddressContainer = styled.div`\n display: flex;\n flex-direction: column;\n background-color: transparent;\n padding: 2rem;\n \n /* Desktop: normal spacing */\n @media (min-width: 768px) {\n gap: 1rem;\n }\n \n /* Mobile: no gap, handled by collapse */\n @media (max-width: 767px) {\n padding: 1rem;\n gap: 0;\n }\n`;\n\nconst HeaderWrapper = styled.div<{ $isClickable: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n \n /* Desktop: not clickable */\n @media (min-width: 768px) {\n cursor: default;\n }\n \n /* Mobile: clickable */\n @media (max-width: 767px) {\n cursor: ${props => props.$isClickable ? 'pointer' : 'default'};\n padding: 0.5rem 0;\n user-select: none;\n }\n`;\n\nconst ToggleIcon = styled.div<{ variant: Variant }>`\n display: none;\n \n /* Only show on mobile */\n @media (max-width: 767px) {\n display: flex;\n align-items: center;\n font-size: 1.5rem;\n \n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.primary;\n case 'inverse':\n return colors.text.secondary;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.primary;\n }\n }};\n }\n`;\n\nconst CollapseContent = styled.div<{ $isOpen: boolean }>`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n \n /* Desktop: always visible */\n @media (min-width: 768px) {\n display: flex;\n }\n \n /* Mobile: collapsible */\n @media (max-width: 767px) {\n max-height: ${props => props.$isOpen ? '500px' : '0'};\n opacity: ${props => props.$isOpen ? '1' : '0'};\n overflow: hidden;\n transition: max-height 0.3s ease, opacity 0.3s ease;\n padding-top: ${props => props.$isOpen ? '1rem' : '0'};\n }\n`;\n\nconst InfoSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n`;\n\nconst InfoText = styled.p<{ variant: Variant; $bold?: boolean }>`\n margin: 0;\n font-size: 0.875rem;\n line-height: 1.6;\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.primary;\n case 'inverse':\n return colors.text.secondary; \n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.primary;\n }\n }};\n font-weight: ${props => props.$bold ? 600 : 400};\n`;\n\nconst ButtonWrapper = styled.div`\n margin-top: 0.5rem;\n`;\n\ninterface AddressProps {\n title: string;\n phone?: string;\n email?: string;\n addressLines: string[];\n directionsText?: string;\n onDirectionsClick?: () => void;\n variant?: Variant;\n}\n\nexport const Address = ({\n title,\n phone,\n email,\n addressLines,\n directionsText = 'GET DIRECTIONS',\n onDirectionsClick,\n variant = 'primary',\n}: AddressProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleDirectionsClick = () => {\n if (onDirectionsClick) {\n onDirectionsClick();\n } else {\n const fullAddress = addressLines.join(', ');\n const encodedAddress = encodeURIComponent(fullAddress);\n const mapsUrl = `https://www.google.com/maps/search/?api=1&query=${encodedAddress}`;\n window.open(mapsUrl, '_blank');\n }\n };\n\n const getHeaderVariant = () => {\n switch (variant) {\n case 'primary':\n return 'primary';\n case 'inverse':\n return 'secondary'; \n case 'subtle':\n return 'subtle';\n default:\n return 'primary';\n }\n };\n\n const getButtonBgVariant = (): 'transparent' => {\n return 'transparent';\n };\n\n const getButtonTextVariant = (): 'primary' | 'secondary' | 'subtle' => {\n switch (variant) {\n case 'primary':\n return 'primary';\n case 'inverse':\n return 'secondary';\n case 'subtle':\n return 'subtle';\n default:\n return 'primary';\n }\n };\n\n return (\n <AddressContainer>\n <HeaderWrapper \n $isClickable={true}\n onClick={() => setIsOpen(!isOpen)}\n >\n <Header variant=\"h1\" color={getHeaderVariant()}>\n {title}\n </Header>\n <ToggleIcon variant={variant}>\n {isOpen ? <HiMinus /> : <HiPlus />}\n </ToggleIcon>\n </HeaderWrapper>\n \n <CollapseContent $isOpen={isOpen}>\n <InfoSection>\n {phone && (\n <InfoText variant={variant}>{phone}</InfoText>\n )}\n {email && (\n <InfoText variant={variant} $bold>{email.toUpperCase()}</InfoText>\n )}\n {addressLines.map((line, index) => (\n <InfoText key={index} variant={variant}>\n {line}\n </InfoText>\n ))}\n </InfoSection>\n <ButtonWrapper>\n <TextButton\n text={directionsText}\n onClick={handleDirectionsClick}\n bgVariant={getButtonBgVariant()}\n textVariant={getButtonTextVariant()}\n uppercase={true}\n />\n </ButtonWrapper>\n </CollapseContent>\n </AddressContainer>\n );\n};\n\nAddress.variants = variants;","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\ninterface CheckboxItemProps<T> {\n value: T;\n label: string;\n checked: boolean;\n onClick: () => void;\n}\n\nconst CheckboxWrapper = styled.label`\n display: flex;\n align-items: center;\n gap: ${spaces[2]};\n cursor: pointer;\n font-size: 16px;\n color: ${colors.text.subtle};\n`;\n\nconst HiddenCheckbox = styled.input.attrs({ type: 'checkbox' })`\n display: none;\n`;\n\nconst StyledCheckbox = styled.span<{ checked: boolean }>`\n width: ${sizes.lg};\n height: ${sizes.lg};\n border: 1.5px solid ${colors.background.tertiary};\n border-radius: ${radii.md};\n background-color: ${({ checked }) =>\n checked ? colors.background.tertiary : 'transparent'};\n transition: all 0.2s ease-in-out;\n`;\n\nexport const CheckboxItem = <T extends string | number | boolean>({\n label,\n onClick,\n checked,\n}: CheckboxItemProps<T>) => {\n return (\n <CheckboxWrapper onClick={onClick}>\n <HiddenCheckbox checked={checked} readOnly />\n <StyledCheckbox checked={checked} />\n {label}\n </CheckboxWrapper>\n );\n};\n","import styled from 'styled-components';\nimport { Label } from '../../atoms';\nimport { CheckboxItem } from '../../atoms/CheckboxItem/CheckboxItem';\nimport { spaces } from '../../tokens/spaces';\nimport { Option } from '../../types';\n\nconst alignments = ['row', 'column'] as const;\n\ntype Align = (typeof alignments)[number];\n\ninterface CheckboxProps<T> {\n error?: string;\n label?: string;\n value: T;\n onChange: (value: T) => void;\n options: Option<T>[];\n align?: Align;\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst OptionsContainer = styled.div`\n display: flex;\n gap: ${spaces[4]};\n`;\n\nexport const Checkbox = <T extends string | number | boolean>({\n error,\n label,\n onChange,\n options,\n value,\n}: CheckboxProps<T>) => {\n return (\n <Container>\n {typeof label === 'string' && label?.length ? (\n <Label\n value={label}\n color={\n typeof error === 'string' && error?.length ? 'error' : undefined\n }\n fontWeight=\"600\"\n />\n ) : null}\n <OptionsContainer>\n {options.map((option) => (\n <CheckboxItem\n checked={value === option.value}\n label={option.label}\n onClick={() => onChange(option.value)}\n value={option.value}\n />\n ))}\n </OptionsContainer>\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { ArrowButton, Description, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n background-color: #ffffff;\n width: 284px;\n height: 482px;\n padding: 1.5rem;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n flex-shrink: 0;\n \n @media (max-width: 767px) {\n width: 70vw;\n }\n`;\n\nconst ThumbnailWrapper = styled.div<{ thumbnailBgColor: BackgroundColor }>`\n width: 180px;\n height: 180px;\n border-radius: 50%;\n background-color: ${props => colors.background[props.thumbnailBgColor]};\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n align-self: center;\n`;\n\nconst ButtonWrapper = styled.div`\n display: flex;\n justify-content: flex-start;\n margin-top: auto;\n`;\n\ninterface ContentCardProps {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n onArrowClick?: () => void;\n headerVariant?: 'h1' | 'h2' | 'h3';\n titleColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n arrowVariant?: 'brand' | 'teal' | 'blue';\n thumbnailBgColor?: BackgroundColor;\n}\n\nexport const ContentCard = ({\n thumbnail,\n title,\n description,\n onArrowClick,\n headerVariant = 'h2',\n titleColor = 'brand',\n descriptionVariant = 'subtle',\n arrowVariant = 'teal',\n thumbnailBgColor = 'brand',\n}: ContentCardProps) => {\n return (\n <Container>\n <ThumbnailWrapper thumbnailBgColor={thumbnailBgColor}>\n {thumbnail}\n </ThumbnailWrapper>\n <Header variant={headerVariant} color={titleColor}>\n {title}\n </Header>\n <Description variant={descriptionVariant}>\n {description}\n </Description>\n <ButtonWrapper>\n <ArrowButton \n onClick={onArrowClick}\n variant={arrowVariant}\n />\n </ButtonWrapper>\n </Container>\n );\n};","import styled from 'styled-components';\nimport { ExtendedButton, TextButton } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst variants = ['primary', 'secondary', 'transparent'] as const;\ntype Variant = (typeof variants)[number];\n\nconst Container = styled.div<{ variant: Variant }>`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 3rem 2rem;\n max-width: 500px;\n \n /* Mobile adjustments */\n @media (max-width: 767px) {\n padding: 2rem 1rem;\n max-width: 100%;\n }\n`;\n\nconst Header = styled.h1<{ textColor: TextColor }>`\n margin: 0;\n font-size: 2.5rem;\n font-weight: 700;\n line-height: 1.2;\n color: ${(props) => colors.text[props.textColor]};\n \n /* Responsive font size */\n @media (max-width: 767px) {\n font-size: 2rem;\n }\n \n @media (max-width: 480px) {\n font-size: 1.75rem;\n }\n`;\n\nconst Description = styled.p<{ textColor: TextColor }>`\n margin: 0;\n font-size: 1.125rem;\n line-height: 1.6;\n color: ${(props) => colors.text[props.textColor]};\n \n /* Responsive font size */\n @media (max-width: 767px) {\n font-size: 1rem;\n }\n`;\n\nconst ButtonGroup = styled.div`\n display: flex;\n gap: 1rem;\n align-items: center;\n \n /* Stack vertically on mobile */\n @media (max-width: 767px) {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n`;\n\ninterface CTAContainerProps {\n header: string;\n description: string;\n primaryButtonText: string;\n secondaryButtonText?: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n variant?: Variant;\n headerTextColor?: TextColor;\n descriptionTextColor?: TextColor;\n primaryArrowVariant?: 'brand' | 'teal' | 'blue';\n primaryTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n primaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n secondaryBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n secondaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const CTAContainer = ({\n header,\n description,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n variant = 'transparent',\n headerTextColor = 'secondary',\n descriptionTextColor = 'secondary',\n primaryArrowVariant = 'teal',\n primaryTextBgVariant = 'brand',\n primaryTextVariant = 'secondary',\n secondaryBgVariant = 'transparent',\n secondaryTextVariant = 'secondary',\n}: CTAContainerProps) => {\n return (\n <Container variant={variant}>\n <Header textColor={headerTextColor}>{header}</Header>\n <Description textColor={descriptionTextColor}>{description}</Description>\n <ButtonGroup>\n <ExtendedButton\n text={primaryButtonText}\n onClick={onPrimaryClick}\n arrowVariant={primaryArrowVariant}\n textBgVariant={primaryTextBgVariant}\n textVariant={primaryTextVariant}\n />\n {secondaryButtonText && (\n <TextButton\n text={secondaryButtonText}\n onClick={onSecondaryClick}\n bgVariant={secondaryBgVariant}\n textVariant={secondaryTextVariant}\n />\n )}\n </ButtonGroup>\n </Container>\n );\n};\n\nCTAContainer.variants = variants;","import { useState } from 'react';\nimport { HiMinus, HiPlus } from 'react-icons/hi2';\nimport styled from 'styled-components';\nimport { Description, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst AccordionContainer = styled.div`\n border-bottom: 1px solid ${colors.text.light || '#d1d5db'};\n padding: 1.5rem 0;\n`;\n\nconst AccordionHeader = styled.button`\n width: 100%;\n display: flex;\n align-items: center;\n gap: 1rem;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n padding: 0;\n`;\n\nconst NumberBadge = styled.span<{ numberColor: TextColor }>`\n font-size: 1rem;\n font-weight: 600;\n color: ${props => colors.text[props.numberColor]};\n flex-shrink: 0;\n`;\n\nconst HeaderWrapper = styled.div`\n flex-grow: 1;\n`;\n\nconst IconWrapper = styled.div<{ iconColor: TextColor }>`\n color: ${props => colors.text[props.iconColor]};\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst AccordionContent = styled.div<{ $isOpen: boolean }>`\n max-height: ${props => props.$isOpen ? '1000px' : '0'};\n overflow: hidden;\n transition: max-height 0.3s ease-in-out;\n padding-left: 2.5rem;\n margin-top: ${props => props.$isOpen ? '1rem' : '0'};\n`;\n\ninterface AccordionProps {\n number: string;\n title: string;\n content: string;\n defaultOpen?: boolean;\n headerVariant?: 'h1' | 'h2' | 'h3';\n numberColor?: TextColor;\n titleColor?: TextColor;\n iconColor?: TextColor;\n contentVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const FAQAccordion = ({\n number,\n title,\n content,\n defaultOpen = false,\n headerVariant = 'h3',\n numberColor = 'brand',\n titleColor = 'brand',\n iconColor = 'brand',\n contentVariant = 'primary',\n}: AccordionProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n return (\n <AccordionContainer>\n <AccordionHeader onClick={() => setIsOpen(!isOpen)}>\n <NumberBadge numberColor={numberColor}>{number}</NumberBadge>\n <HeaderWrapper>\n <Header variant={headerVariant} color={titleColor}>\n {title}\n </Header>\n </HeaderWrapper>\n <IconWrapper iconColor={iconColor}>\n {isOpen ? <HiMinus size={24} /> : <HiPlus size={24} />}\n </IconWrapper>\n </AccordionHeader>\n <AccordionContent $isOpen={isOpen}>\n <Description variant={contentVariant}>\n {content}\n </Description>\n </AccordionContent>\n </AccordionContainer>\n );\n};","import styled from 'styled-components';\nimport { FeatureItem } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst FeatureWrapper = styled.div`\n padding: 1rem 0;\n border-bottom: 1px solid #e5e7eb;\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\ninterface FeatureItemData {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n thumbnailSize?: string;\n}\n\ninterface FeatureContainerProps {\n items: FeatureItemData[];\n thumbnailBgColor?: BackgroundColor;\n titleColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const FeatureContainer = ({ \n items, \n thumbnailBgColor = 'brand',\n titleColor = 'primary',\n descriptionVariant = 'subtle',\n}: FeatureContainerProps) => {\n return (\n <Container>\n {items.map((item, index) => (\n <FeatureWrapper key={index}>\n <FeatureItem\n thumbnail={item.thumbnail}\n title={item.title}\n description={item.description}\n thumbnailSize={item.thumbnailSize}\n thumbnailBgColor={thumbnailBgColor}\n titleColor={titleColor}\n descriptionVariant={descriptionVariant}\n />\n </FeatureWrapper>\n ))}\n </Container>\n );\n};","import { keyframes } from 'styled-components';\n\nexport const fadeIn = keyframes`\n from { opacity: 0 }\n to { opacity: 1 }\n`;\n\nexport const popIn = keyframes`\n from { transform: translateY(8px) scale(.98); opacity: 0 }\n to { transform: translateY(0) scale(1); opacity: 1 }\n`;\n","import { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { fadeIn } from '../../tokens/animations';\nimport { breakpoints } from '../../tokens/breakpoints';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { spaces } from '../../tokens/spaces';\n\nconst positions = ['top', 'center', 'bottom'] as const;\n\ntype ContentPosition = (typeof positions)[number];\n\ninterface ModalProps {\n visible: boolean;\n onClose: () => void;\n dismissable?: boolean;\n contentPosition?: ContentPosition;\n children: ReactNode;\n}\n\nconst Overlay = styled.div<{ contentPosition: ContentPosition }>`\n height: 100vh;\n width: 100vw;\n background-color: rgba(0, 0, 0, 0.4);\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: flex;\n align-items: ${(props) =>\n props.contentPosition === 'center'\n ? 'center'\n : props.contentPosition === 'bottom'\n ? 'flex-end'\n : 'flex-start'};\n justify-content: center;\n animation: ${fadeIn} 160ms ease-out;\n`;\n\nconst ContentContainer = styled.div`\n position: relative;\n width: min(${breakpoints.sm}, 92vw);\n max-height: 86vh;\n overflow: auto;\n border-radius: ${radii.xl};\n padding: ${spaces[6]};\n background-color: ${colors.background.primary};\n`;\n\nexport const Modal = ({\n visible,\n contentPosition = 'center',\n dismissable = true,\n onClose,\n children,\n}: ModalProps) => {\n function onDismiss() {\n if (dismissable) {\n onClose();\n }\n }\n\n if (!visible) return <></>;\n\n return (\n <Overlay contentPosition={contentPosition} onClick={onDismiss}>\n <ContentContainer onClick={(e) => e.stopPropagation()}>\n {children}\n </ContentContainer>\n </Overlay>\n );\n};\n","import { FaCircleCheck, FaCircleExclamation } from \"react-icons/fa6\"\nimport styled from \"styled-components\"\nimport { Header } from \"../../atoms\"\nimport { colors } from \"../../tokens/colors\"\nimport { radii } from \"../../tokens/radii\"\nimport { spaces } from \"../../tokens/spaces\"\n\nconst Container = styled.div<{isComplete: boolean}>`\ndisplay: flex;\nalign-items: center ;\njustify-content: space-between;\npadding: ${spaces[2]} ${spaces[3]};\nbackground-color: ${props => props.isComplete ? colors.background.blue : colors.background.light};\nborder-radius: ${radii.sm};\n`\n\nconst Row = styled.div`\n display: flex;\n align-items: center;\n gap: ${spaces[2]};\n`\n\ninterface OverviewRowItemProps {\n isComplete: boolean\n title: string\n isMainHeader: boolean\n}\n\nexport const OverviewRowItem = ({isComplete, isMainHeader, title}: OverviewRowItemProps) => {\n\n return <Container isComplete={isComplete}>\n <Header variant={isMainHeader ? 'h2' : 'h3'} color={isComplete ? 'secondary' : 'primary'}>{title}</Header>\n\n <Row>\n <Header variant='h3' color={isComplete ? 'secondary' : 'primary'}>{isComplete ? 'Complete' : 'Information Outstanding'}</Header>\n {isComplete ? <FaCircleCheck color={colors.background.success}/> : <FaCircleExclamation color={colors.background.error}/>}\n </Row>\n </Container>\n}","import { ReactElement, ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { Header } from '../../atoms';\nimport Spinner from '../../components/Spinner';\nimport { colors } from '../../tokens/colors';\nimport { spaces } from '../../tokens/spaces';\n\ninterface PageLayoutProps {\n title: string;\n children: ReactNode;\n isLoading?: boolean;\n rightElement?: ReactElement\n}\n\nconst Container = styled.div`\n width: '100%';\n min-height: '100vh';\n padding-bottom: ${spaces[9]};\n`;\n\nconst HeaderContainer = styled.div`\n padding: ${spaces[4.5]} ${spaces[6]};\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n\nconst ContentContainer = styled.div`\n border-top: 1px solid ${colors.border.hover};\n`;\n\nconst SpinnerContainer = styled.div`\n display: flex;\n width: 100%;\n padding: ${spaces[6]};\n align-items: center;\n justify-content: center;\n`;\n\nexport const PageLayout = ({\n title,\n children,\n isLoading = false,\n rightElement\n}: PageLayoutProps) => {\n return (\n <Container>\n <HeaderContainer>\n <Header color=\"subtle\">{title}</Header> {rightElement && rightElement}\n </HeaderContainer>\n {isLoading ? (\n <SpinnerContainer>\n <Spinner />\n </SpinnerContainer>\n ) : (\n <ContentContainer>{children}</ContentContainer>\n )}\n </Container>\n );\n};\n","import { useMemo } from 'react';\nimport { FaHouse, FaRegFolderOpen } from 'react-icons/fa6';\nimport styled from 'styled-components';\nimport { Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\nconst variants = ['documents', 'properties'] as const;\n\ntype EmptyStateType = (typeof variants)[number];\n\ninterface EmptyStateProps {\n variant: EmptyStateType;\n message: string;\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: ${spaces[4]};\n padding: ${spaces[8]};\n`;\n\nexport const EmptyState = ({ variant, message }: EmptyStateProps) => {\n const size = sizes.xl;\n const color = colors.text.primary;\n\n const Icon = useMemo(() => {\n switch (variant) {\n case 'documents':\n return <FaRegFolderOpen size={size} color={color} />;\n case 'properties':\n return <FaHouse size={size} color={color} />;\n }\n }, [variant]);\n\n return (\n <Container>\n {Icon}\n <Header variant=\"h3\">{message}</Header>\n </Container>\n );\n};\n\nEmptyState.variants = variants;\n","import { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { EmptyState } from '../EmptyState/EmptyState';\n\ninterface PDFPreviewerProps {\n url: string;\n}\n\nconst Container = styled.div`\n width: 100%;\n height: 100%;\n`;\n\nexport const PDFPreviewer = ({ url }: PDFPreviewerProps) => {\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n setError(null);\n try {\n new URL(url);\n } catch {\n setError('Invalid preview URL');\n }\n }, [url]);\n\n if (typeof error === 'string')\n return (\n <EmptyState message=\"Failed to load this document\" variant=\"documents\" />\n );\n\n return (\n <Container>\n <iframe\n src={`${url}#view=FitH&toolbar=1&navpanes=0`}\n title=\"Document preview\"\n allow=\"clipboard-read; clipboard-write\"\n referrerPolicy=\"no-referrer\"\n style={{ width: '100%', height: '100%', border: '0' }}\n />\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { ExtendedButton, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst Container = styled.div`\n display: flex;\n gap: 1.5rem;\n align-items: center;\n max-width: 600px;\n \n /* Mobile: stack vertically */\n @media (max-width: 767px) {\n flex-direction: column;\n align-items: flex-start;\n max-width: 100%;\n }\n`;\n\nconst ImageWrapper = styled.div`\n flex-shrink: 0;\n width: 180px;\n height: 180px;\n border-radius: 8px;\n overflow: hidden;\n \n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n \n /* Mobile: full width */\n @media (max-width: 767px) {\n width: 100%;\n height: 200px;\n }\n`;\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n \n /* Mobile: full width */\n @media (max-width: 767px) {\n width: 100%;\n }\n`;\n\nconst LogoWrapper = styled.div`\n max-width: 200px;\n \n img {\n width: 100%;\n height: auto;\n }\n`;\n\ninterface ProductInfoItemProps {\n image: string;\n logoImage: string;\n title: string;\n buttonText: string;\n onButtonClick?: () => void;\n titleVariant?: 'h1' | 'h2' | 'h3';\n titleColor?: TextColor;\n buttonArrowVariant?: 'brand' | 'teal' | 'blue';\n buttonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n buttonTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const ProductInfo = ({\n image,\n logoImage,\n title,\n buttonText,\n onButtonClick,\n titleVariant = 'h2',\n titleColor = 'brand',\n buttonArrowVariant = 'teal',\n buttonTextBgVariant = 'brand',\n buttonTextVariant = 'secondary',\n}: ProductInfoItemProps) => {\n return (\n <Container>\n <ImageWrapper>\n <img src={image} alt=\"Product\" />\n </ImageWrapper>\n <ContentWrapper>\n <LogoWrapper>\n <img src={logoImage} alt=\"Logo\" />\n </LogoWrapper>\n <Header variant={titleVariant} color={titleColor}>\n {title}\n </Header>\n <ExtendedButton\n text={buttonText}\n onClick={onButtonClick}\n arrowVariant={buttonArrowVariant}\n textBgVariant={buttonTextBgVariant}\n textVariant={buttonTextVariant}\n />\n </ContentWrapper>\n </Container>\n );\n};","import styled from 'styled-components';\nimport { Label, RadioItem } from '../../atoms';\nimport { spaces } from '../../tokens/spaces';\nimport { Option } from '../../types';\n\ntype RadioGroupProps<T extends string | number> = {\n label?: string;\n options: readonly Option<T>[];\n value: T;\n onClick: (value: T) => void;\n className?: string;\n};\n\nconst Container = styled.div``;\n\nconst OptionsContainer = styled.div`\n margin-top: ${spaces[2]};\n display: flex;\n flex-direction: row;\n flex: 1;\n gap: ${spaces[2]};\n`;\n\nconst LabelContainer = styled.div`\n padding-left: ${spaces[1]};\n`;\n\nexport const RadioGroup = <T extends string | number>({\n label,\n options,\n value,\n onClick,\n className,\n}: RadioGroupProps<T>) => {\n return (\n <Container className={className}>\n {typeof label === 'string' && (\n <LabelContainer>\n <Label value={label} fontWeight=\"600\" />\n </LabelContainer>\n )}\n <OptionsContainer>\n {options.map((option, idx) => (\n <RadioItem\n key={idx}\n isSelected={value === option.value}\n label={option.label}\n disabled={option.disabled}\n onClick={() => onClick(option.value)}\n />\n ))}\n </OptionsContainer>\n </Container>\n );\n};\n","import { HiX } from 'react-icons/hi';\nimport styled from 'styled-components';\nimport { Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle'] as const;\ntype Variant = (typeof variants)[number];\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n`;\n\nconst ChartContainer = styled.div`\n background-color: #ffffff;\n border-radius: 8px;\n padding: 2rem;\n max-width: 400px;\n width: 90%;\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);\n`;\n\nconst HeaderSection = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 1.5rem;\n`;\n\nconst CloseButton = styled.button<{ variant: Variant }>`\n background-color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.background.brand;\n case 'secondary':\n return colors.background.blue;\n case 'subtle':\n return colors.background.subtle;\n default:\n return colors.background.brand;\n }\n }};\n color: #ffffff;\n border: none;\n border-radius: 4px;\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: opacity 0.2s;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\nconst Table = styled.table`\n width: 100%;\n border-collapse: collapse;\n`;\n\nconst TableHeader = styled.thead`\n border-bottom: 2px solid #e5e7eb;\n`;\n\nconst TableHeaderCell = styled.th<{ variant: Variant }>`\n text-align: left;\n padding: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 700;\n text-transform: uppercase;\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }};\n`;\n\nconst TableBody = styled.tbody``;\n\nconst TableRow = styled.tr`\n border-bottom: 1px solid #f3f4f6;\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\nconst TableCell = styled.td<{ variant: Variant }>`\n padding: 0.75rem 0;\n font-size: 0.875rem;\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n case 'secondary':\n return colors.text.primary;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.primary;\n }\n }};\n`;\n\ninterface RateItem {\n transactionType: string;\n price: string;\n}\n\ninterface RatesChartProps {\n title?: string;\n rates: RateItem[];\n onClose: () => void;\n variant?: Variant;\n}\n\nexport const RatesChart = ({\n title = 'Rates chart',\n rates,\n onClose,\n variant = 'primary',\n}: RatesChartProps) => {\n const getHeaderColor = () => {\n switch (variant) {\n case 'primary':\n return 'brand';\n case 'secondary':\n return 'primary';\n case 'subtle':\n return 'subtle';\n default:\n return 'brand';\n }\n };\n\n return (\n <Overlay onClick={onClose}>\n <ChartContainer onClick={(e) => e.stopPropagation()}>\n <HeaderSection>\n <Header variant=\"h2\" color={getHeaderColor()}>\n {title}\n </Header>\n <CloseButton onClick={onClose} variant={variant}>\n <HiX size={20} />\n </CloseButton>\n </HeaderSection>\n <Table>\n <TableHeader>\n <tr>\n <TableHeaderCell variant={variant}>Transaction type</TableHeaderCell>\n <TableHeaderCell variant={variant}>Price</TableHeaderCell>\n </tr>\n </TableHeader>\n <TableBody>\n {rates.map((rate, index) => (\n <TableRow key={index}>\n <TableCell variant={variant}>{rate.transactionType}</TableCell>\n <TableCell variant={variant}>{rate.price}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </ChartContainer>\n </Overlay>\n );\n};\n\nRatesChart.variants = variants;","import styled from 'styled-components';\nimport { ExtendedButton, TextButton } from \"../../atoms\";\nimport { colors } from '../../tokens/colors';\n\ntype BorderColor = keyof typeof colors.border;\ntype BgColor = keyof typeof colors.background;\n\nconst Backdrop = styled.div<{ $isOpen: boolean }>`\n display: none;\n \n @media (max-width: 767px) {\n display: ${props => props.$isOpen ? 'block' : 'none'};\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 9998;\n }\n`;\n\nconst BackToTopWrapper = styled.div`\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst StyledNav = styled.nav<{ \n $isOpen: boolean;\n $mobileBgVariant: BgColor;\n $borderVariant: BorderColor;\n}>`\n width: 195px;\n display: flex;\n flex-direction: column;\n min-height: 500px;\n height: 100vh;\n padding-bottom: 15px;\n \n @media (min-width: 768px) {\n position: relative;\n background-color: #ffffff;\n border-right: 1px solid #e5e7eb;\n }\n \n @media (max-width: 767px) {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 9999;\n background-color: ${props => colors.background[props.$mobileBgVariant]};\n border-right: 1px solid ${props => colors.border[props.$borderVariant]};\n transform: translateX(${props => props.$isOpen ? '0' : '-100%'});\n transition: transform 0.3s ease-in-out;\n box-shadow: ${props => props.$isOpen ? '2px 0 8px rgba(0, 0, 0, 0.15)' : 'none'};\n }\n`;\n\nconst CloseButton = styled.button<{ $textVariant: BorderColor }>`\n background: none;\n border: none;\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0.5rem;\n color: ${props => colors.border[props.$textVariant]};\n \n &:hover {\n opacity: 0.7;\n }\n`;\n\nconst MobileHeader = styled.div`\n display: none;\n \n @media (max-width: 767px) {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n }\n`;\n\nconst NavList = styled.ul`\n display: flex;\n flex-direction: column;\n list-style: none;\n margin: 0;\n padding: 0;\n`;\n\nconst DesktopNavList = styled(NavList)`\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst MobileNavList = styled(NavList)`\n display: none;\n \n @media (max-width: 767px) {\n display: flex;\n }\n`;\n\nconst NavItem = styled.li`\n display: flex;\n`;\n\nconst NavLink = styled.a<{ $isActive: boolean }>`\n display: flex;\n align-items: center;\n text-decoration: none;\n width: 100%;\n padding-left: 0.5rem;\n \n ${props => !props.$isActive && `\n &:hover {\n font-weight: 100;\n }\n `}\n`;\n\nconst ActiveTriangle = styled.div<{ triangleColor: BorderColor }>`\n width: 0;\n height: 0;\n border-top: 4px solid transparent;\n border-left: 6px solid ${props => colors.border[props.triangleColor]};\n border-bottom: 4px solid transparent;\n flex-shrink: 0;\n margin-left: 1.5rem;\n`;\n\nconst InactiveSpacer = styled.span`\n width: 6px;\n margin-right: 0.5rem;\n flex-shrink: 0;\n`;\n\nconst Divider = styled.div<{ dividerColor: BorderColor }>`\n height: 1px;\n background-color: ${props => colors.border[props.dividerColor]};\n margin: 1rem;\n`;\n\nconst Spacer = styled.div`\n flex-grow: 1;\n`;\n\nconst DesktopOnlySpacer = styled(Spacer)`\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst MobileButtonsWrapper = styled.div`\n display: none;\n \n @media (max-width: 767px) {\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n padding: 0 1rem;\n margin-top: auto;\n margin-bottom: 20px;\n }\n`;\n\ninterface NavItemData {\n label: string;\n href: string;\n}\n\ninterface SideNavProps {\n logo?: React.ReactNode;\n items: NavItemData[];\n activeItem?: string;\n onBackToTop?: () => void;\n isOpen?: boolean;\n onClose?: () => void;\n mobileButtons?: Array<{\n text: string;\n onClick: () => void;\n bgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n textVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n arrowButton?: 'blue'\n }>;\n mobileBgVariant?: BgColor;\n borderVariant?: BorderColor;\n closeButtonVariant?: BorderColor;\n mobileActiveTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n mobileActiveTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n mobileInactiveTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n mobileInactiveTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n triangleColor?: BorderColor;\n dividerColor?: BorderColor;\n activeTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n activeTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n inactiveTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n inactiveTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n backToTopBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n backToTopTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const SideNav = ({ \n logo,\n items, \n activeItem,\n onBackToTop,\n isOpen = true, \n onClose,\n mobileButtons = [],\n mobileBgVariant = 'tertiary',\n borderVariant = 'primary',\n closeButtonVariant = 'light',\n mobileActiveTextBgVariant = 'transparent',\n mobileActiveTextVariant = 'light',\n mobileInactiveTextBgVariant = 'transparent',\n mobileInactiveTextVariant= 'light',\n triangleColor = 'primary',\n dividerColor = 'light',\n activeTextBgVariant = 'transparent',\n activeTextVariant = 'brand',\n inactiveTextBgVariant = 'transparent',\n inactiveTextVariant = 'subtle',\n backToTopBgVariant = 'transparent',\n backToTopTextVariant = 'subtle',\n}: SideNavProps) => {\n const renderNavItems = (isMobile: boolean) => items.map((item) => {\n const isActive = activeItem === item.href;\n return (\n <NavItem key={item.href}>\n <NavLink href={item.href} $isActive={isActive}>\n {isActive ? <ActiveTriangle triangleColor={triangleColor} /> : <InactiveSpacer />}\n <TextButton\n asChild\n text={item.label}\n bgVariant={isActive \n ? (isMobile && mobileActiveTextBgVariant ? mobileActiveTextBgVariant : activeTextBgVariant)\n : (isMobile && mobileInactiveTextBgVariant ? mobileInactiveTextBgVariant : inactiveTextBgVariant)\n }\n textVariant={isActive\n ? (isMobile && mobileActiveTextVariant ? mobileActiveTextVariant : activeTextVariant)\n : (isMobile && mobileInactiveTextVariant ? mobileInactiveTextVariant : inactiveTextVariant)\n }\n uppercase={false}\n bold={isActive}\n />\n </NavLink>\n </NavItem>\n );\n });\n\n return (\n <>\n <Backdrop $isOpen={isOpen} onClick={onClose} />\n <StyledNav \n $isOpen={isOpen}\n $mobileBgVariant={mobileBgVariant}\n $borderVariant={borderVariant}\n >\n <MobileHeader>\n {logo}\n <CloseButton onClick={onClose} aria-label=\"Close menu\" $textVariant={closeButtonVariant}>\n ✕\n </CloseButton>\n </MobileHeader>\n \n <DesktopOnlySpacer />\n \n {/* Desktop nav */}\n <DesktopNavList>\n {renderNavItems(false)}\n </DesktopNavList>\n\n {/* Mobile nav */}\n <MobileNavList>\n {renderNavItems(true)}\n </MobileNavList>\n\n <Divider dividerColor={dividerColor} />\n <Spacer />\n\n {mobileButtons.length > 0 && (\n <>\n <Divider dividerColor={dividerColor} />\n <MobileButtonsWrapper>\n {mobileButtons.map((button, index) => (\n <ExtendedButton\n key={index}\n text={button.text}\n onClick={button.onClick}\n textBgVariant={button.bgVariant || 'transparent'}\n textVariant={button.textVariant || 'subtle'}\n arrowVariant={button.arrowButton || 'blue'}\n />\n ))}\n </MobileButtonsWrapper> \n </>\n )}\n\n <BackToTopWrapper>\n <TextButton\n text=\"Back to top\"\n onClick={onBackToTop}\n bgVariant={backToTopBgVariant}\n textVariant={backToTopTextVariant}\n uppercase={false}\n />\n </BackToTopWrapper>\n </StyledNav>\n </>\n );\n};","import { HiX } from 'react-icons/hi';\nimport styled from 'styled-components';\nimport { Description, ExtendedButton, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype BackgroundColor = keyof typeof colors.background;\ntype TextColor = keyof typeof colors.text;\n\nconst Overlay = styled.div<{ $isOpen: boolean }>`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: ${props => props.$isOpen ? 'flex' : 'none'};\n justify-content: flex-end;\n z-index: 1000;\n`;\n\nconst PanelContainer = styled.div<{ $isOpen: boolean }>`\n background-color: #ffffff;\n width: 100%;\n max-width: 400px;\n height: 100vh;\n padding: 3rem 2rem;\n box-shadow: -4px 0 15px rgba(0, 0, 0, 0.2);\n display: flex;\n flex-direction: column;\n gap: 2rem;\n transform: ${props => props.$isOpen ? 'translateX(0)' : 'translateX(100%)'};\n transition: transform 0.3s ease-in-out;\n overflow-y: auto;\n`;\n\nconst CloseButton = styled.button<{ closeButtonBgColor: BackgroundColor }>`\n position: absolute;\n top: 1.5rem;\n right: 1.5rem;\n background-color: ${props => colors.background[props.closeButtonBgColor]};\n color: #ffffff;\n border: none;\n border-radius: 4px;\n width: 2.5rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: opacity 0.2s;\n z-index: 10;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\nconst IconWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n margin-bottom: 1rem;\n\n svg {\n width: 150px;\n height: 150px;\n }\n\n img {\n width: 150px;\n height: 150px;\n object-fit: contain;\n }\n`;\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n`;\n\ninterface SidePanelProps {\n isOpen: boolean;\n onClose: () => void;\n icon: React.ReactNode;\n title: string;\n description: string;\n buttonText: string;\n onButtonClick?: () => void;\n closeButtonBgColor?: BackgroundColor;\n titleColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n buttonArrowVariant?: 'brand' | 'teal' | 'blue';\n buttonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n buttonTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const SidePanel = ({\n isOpen,\n onClose,\n icon,\n title,\n description,\n buttonText,\n onButtonClick,\n closeButtonBgColor = 'subtle',\n titleColor = 'brand',\n descriptionVariant = 'primary',\n buttonArrowVariant = 'teal',\n buttonTextBgVariant = 'brand',\n buttonTextVariant = 'secondary',\n}: SidePanelProps) => {\n return (\n <Overlay $isOpen={isOpen} onClick={onClose}>\n <PanelContainer $isOpen={isOpen} onClick={(e) => e.stopPropagation()}>\n <CloseButton onClick={onClose} closeButtonBgColor={closeButtonBgColor}>\n <HiX size={24} />\n </CloseButton>\n <IconWrapper>{icon}</IconWrapper>\n <ContentWrapper>\n <Header variant=\"h2\" color={titleColor}>\n {title}\n </Header>\n <Description variant={descriptionVariant}>\n {description}\n </Description>\n <ExtendedButton\n text={buttonText}\n onClick={onButtonClick}\n arrowVariant={buttonArrowVariant}\n textBgVariant={buttonTextBgVariant}\n textVariant={buttonTextVariant}\n />\n </ContentWrapper>\n </PanelContainer>\n </Overlay>\n );\n};","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\ninterface StepperHeaderTabProps {\n onClick?: () => void;\n title: string;\n isSelected: boolean;\n}\n\nconst Container = styled.div<Pick<StepperHeaderTabProps, 'isSelected'>>`\n width: 100%;\n background-color: ${(props) =>\n props.isSelected ? colors.background.blue : colors.background.primary};\n border: 1px solid ${colors.background.blue};\n border-radius: ${radii.lg};\n display: flex;\n justify-content: center;\n align-items: center;\n padding: ${spaces[2]} ${spaces[3]};\n cursor: pointer;\n`;\n\nconst StyledLabel = styled.span<Pick<StepperHeaderTabProps, 'isSelected'>>`\n color: ${(props) =>\n props.isSelected ? colors.text.secondary : colors.text.blue};\n font-size: ${sizes.sm};\n font-weight: 700;\n`;\n\nexport const StepperHeaderTab = ({\n title,\n isSelected,\n onClick,\n}: StepperHeaderTabProps) => {\n return (\n <Container isSelected={isSelected} onClick={onClick}>\n <StyledLabel isSelected={isSelected}>{title}</StyledLabel>\n </Container>\n );\n};\n","import { FaCaretDown, FaCaretUp } from 'react-icons/fa6';\nimport styled from 'styled-components';\nimport { Text } from '../../atoms/Text/Text';\n\ninterface DocumentAccordionHeaderProps {\n title: string;\n onClick?: () => void;\n}\n\nconst Container = styled.div<{ onClick?: () => void }>`\n display: flex;\n width: ${`${100 / 4}%`};\n overflow: scroll;\n align-items: center;\n gap: 5px;\n cursor: ${(props) => (props.onClick ? 'pointer' : 'auto')};\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n \n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none;\n scrollbar-width: none;\n`;\n\nconst IconContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport const DocumentAccordionHeader = ({\n onClick,\n title,\n}: DocumentAccordionHeaderProps) => {\n return (\n <Container onClick={onClick}>\n <Text>{title}</Text>\n {onClick && (\n <IconContainer>\n <FaCaretUp size={10} />\n <FaCaretDown size={10} />\n </IconContainer>\n )}\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { Label } from '../../atoms';\n\nexport type DocumentListAccordionFileType = {\n name: string;\n sourceFile: string;\n status: string;\n createdAt?: string;\n id: string;\n};\n\ninterface DocumentAccordionRowProps {\n file: DocumentListAccordionFileType;\n onViewDetail: () => void;\n}\n\nconst ItemContainer = styled.div<{ onClick?: () => void }>`\n display: flex;\n align-items: center;\n cursor: ${(props) => (props?.onClick ? 'pointer' : 'auto')};\n width: ${`${100 / 4}%`};\n overflow: scroll;\n text-overflow: ellipsis;\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n \n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none;\n scrollbar-width: none;\n`;\n\nexport const DocumentAccordionRow = ({\n file,\n onViewDetail,\n}: DocumentAccordionRowProps) => {\n return (\n <>\n <ItemContainer>\n <Label value={file.name} color=\"brand\" />\n </ItemContainer>\n <ItemContainer>\n <Label value={file.sourceFile} color=\"primary\" />\n </ItemContainer>\n <ItemContainer>\n <Label\n value={typeof file.status === 'string' ? file.status : '-'}\n color=\"primary\"\n fontWeight=\"700\"\n />\n </ItemContainer>\n <ItemContainer>\n <Label\n value={typeof file.createdAt === 'string' ? file.createdAt : '-'}\n color=\"primary\"\n fontWeight=\"700\"\n />\n </ItemContainer>\n <ItemContainer onClick={onViewDetail}>\n <Label value=\"View Details\" color=\"brand\" fontWeight=\"700\" />\n </ItemContainer>\n </>\n );\n};\n","import { ComponentProps } from 'react';\nimport styled from 'styled-components';\nimport { FileButton } from '../../molecules';\nimport { Accordion } from '../../molecules/Accordion/Accordion';\nimport { DocumentAccordionHeader } from '../../molecules/DocumentAccordionHeader/DocumentAccordionHeader';\nimport {\n DocumentAccordionRow,\n DocumentListAccordionFileType,\n} from '../../molecules/DocumentAccordionRow/DocumentAccordionRow';\nimport { EmptyState } from '../../molecules/EmptyState/EmptyState';\nimport { spaces } from '../../tokens/spaces';\n\ninterface DocumentListAccordionProps\n extends Pick<ComponentProps<typeof FileButton>, 'accept' | 'onFileSelect'> {\n title: string;\n files: DocumentListAccordionFileType[];\n onViewDetail: (id: string) => void;\n onSortBy?: (accessor: keyof DocumentListAccordionFileType) => void;\n}\n\nconst HeadersContainer = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: ${spaces[6]};\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${spaces[3]};\n`;\n\nexport const DocumentListAccordion = ({\n title,\n files,\n onSortBy,\n onViewDetail,\n accept,\n onFileSelect,\n}: DocumentListAccordionProps) => {\n const onClick = (accessor: keyof DocumentListAccordionFileType) => {\n onSortBy && onSortBy(accessor);\n };\n\n return (\n <Accordion\n rightElement={\n <FileButton\n onFileSelect={onFileSelect}\n text=\"Add File\"\n accept={accept}\n />\n }\n title={title}\n >\n <Container>\n <HeadersContainer>\n <DocumentAccordionHeader\n title=\"File Name\"\n onClick={() => onClick('name')}\n />\n <DocumentAccordionHeader\n title=\"Source File Name\"\n onClick={() => onClick('status')}\n />\n <DocumentAccordionHeader\n title=\"File Status\"\n onClick={() => onClick('status')}\n />\n <DocumentAccordionHeader\n title=\"Date Created\"\n onClick={() => onClick('createdAt')}\n />\n <DocumentAccordionHeader title=\"File Options\" />\n </HeadersContainer>\n {files?.length === 0 && (\n <EmptyState\n message=\"No documents have been added to this record\"\n variant=\"documents\"\n />\n )}\n {files?.length > 0 &&\n files.map((file) => (\n <HeadersContainer key={file.id}>\n <DocumentAccordionRow\n file={file}\n onViewDetail={() => onViewDetail(file.id)}\n />\n </HeadersContainer>\n ))}\n </Container>\n </Accordion>\n );\n};\n","import { useEffect, useRef, useState } from 'react';\nimport { HiArrowLeft, HiArrowRight } from 'react-icons/hi2';\nimport styled from 'styled-components';\nimport { ContentCard } from '../../molecules';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\n// REMOVE the useRef and handler functions from here - they were at module level\n\nconst CarouselContainer = styled.div`\n width: 100%;\n overflow: hidden;\n position: relative;\n`;\n\nconst CardsWrapper = styled.div`\n display: flex;\n gap: 1.5rem;\n padding: 1rem 0;\n \n /* Desktop: controlled by JS */\n @media (min-width: 768px) {\n overflow-x: hidden;\n }\n \n /* Mobile: native scroll with snap */\n @media (max-width: 767px) {\n overflow-x: auto;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n \n &::-webkit-scrollbar {\n display: none;\n }\n }\n`;\n\nconst CardContainer = styled.div<{ $translateX: number }>`\n display: flex;\n gap: 1.5rem;\n \n /* Desktop: transform animation */\n @media (min-width: 768px) {\n transform: translateX(${props => props.$translateX}px);\n transition: transform 0.3s ease-in-out;\n }\n \n /* Mobile: natural flow */\n @media (max-width: 767px) {\n transform: none;\n \n & > * {\n scroll-snap-align: center;\n flex-shrink: 0;\n }\n }\n`;\n\nconst NavigationWrapper = styled.div`\n display: flex;\n justify-content: left;\n align-items: center;\n gap: 1rem;\n margin-top: 1.5rem;\n`;\n\nconst NavButton = styled.button<{ $disabled?: boolean; navColor: TextColor }>`\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n background-color: transparent;\n color: ${(props) => props.$disabled ? colors.text.subtle : colors.text[props.navColor]};\n border: none;\n cursor: ${props => props.$disabled ? 'not-allowed' : 'pointer'};\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s;\n\n @media (max-width: 767px) {\n display: none;\n }\n\n &:hover {\n opacity: ${props => props.$disabled ? 1 : 0.8};\n }\n`;\n\nconst Indicators = styled.div`\n display: flex;\n gap: 0.5rem;\n`;\n\nconst Indicator = styled.div<{ $active: boolean; indicatorColor: TextColor }>`\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 50%;\n background-color: ${(props) => props.$active ? colors.text[props.indicatorColor] : colors.text.subtle};\n transition: background-color 0.2s;\n`;\n\ninterface CarouselCard {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n onArrowClick?: () => void;\n}\n\ninterface CarouselProps {\n cards: CarouselCard[];\n cardTitleColor?: TextColor;\n cardDescriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n cardArrowVariant?: 'brand' | 'teal' | 'blue';\n cardThumbnailBgColor?: BackgroundColor;\n navButtonColor?: TextColor;\n indicatorColor?: TextColor;\n}\n\nexport const FeatureCarousel = ({\n cards,\n cardTitleColor = 'brand',\n cardDescriptionVariant = 'primary',\n cardArrowVariant = 'teal',\n cardThumbnailBgColor = 'brand',\n navButtonColor = 'brand',\n indicatorColor = 'brand',\n}: CarouselProps) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const [cardsToShow, setCardsToShow] = useState(3);\n const [cardWidth, setCardWidth] = useState(284);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // ADD touch refs here, inside the component\n const touchStartX = useRef(0);\n const touchEndX = useRef(0);\n\n const gap = 24;\n\n useEffect(() => {\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n\n const containerWidth = entry.contentRect.width;\n const count = Math.floor((containerWidth + gap) / (284 + gap));\n const clamped = Math.max(1, count);\n\n // On mobile, card width matches container\n if (clamped === 1) {\n setCardWidth(containerWidth);\n } else {\n setCardWidth(284);\n }\n\n setCardsToShow(clamped);\n });\n\n if (containerRef.current) observer.observe(containerRef.current);\n return () => observer.disconnect();\n }, []);\n\n const needsCarousel = cards.length > cardsToShow;\n const maxIndex = Math.max(0, cards.length - cardsToShow);\n const translateX = -currentIndex * (cardsToShow === 1 ? cardWidth : (cardWidth + gap));\n\n const handlePrev = () => setCurrentIndex(prev => Math.max(0, prev - 1));\n const handleNext = () => setCurrentIndex(prev => Math.min(maxIndex, prev + 1));\n\n // ADD touch handlers here, after handlePrev/handleNext\n const handleTouchStart = (e: React.TouchEvent) => {\n if (!e.touches[0]) return;\n touchStartX.current = e.touches[0].clientX;\n };\n\n const handleTouchEnd = (e: React.TouchEvent) => {\n if (!e.changedTouches[0]) return;\n touchEndX.current = e.changedTouches[0].clientX;\n const diff = touchStartX.current - touchEndX.current;\n\n if (Math.abs(diff) < 50) return;\n\n if (diff > 0) {\n handleNext();\n } else {\n handlePrev();\n }\n };\n\n return (\n <CarouselContainer\n ref={containerRef}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n >\n <CardsWrapper>\n <CardContainer $translateX={needsCarousel ? translateX : 0}>\n {cards.map((card, index) => (\n <ContentCard\n key={index}\n thumbnail={card.thumbnail}\n title={card.title}\n description={card.description}\n onArrowClick={card.onArrowClick}\n titleColor={cardTitleColor}\n descriptionVariant={cardDescriptionVariant}\n arrowVariant={cardArrowVariant}\n thumbnailBgColor={cardThumbnailBgColor}\n />\n ))}\n </CardContainer>\n </CardsWrapper>\n\n {needsCarousel && (\n <NavigationWrapper>\n <NavButton\n onClick={handlePrev}\n $disabled={currentIndex === 0}\n navColor={navButtonColor}\n >\n <HiArrowLeft size={24} />\n </NavButton>\n\n <Indicators>\n {Array.from({ length: maxIndex + 1 }).map((_, index) => (\n <Indicator\n key={index}\n $active={index === currentIndex}\n indicatorColor={indicatorColor}\n />\n ))}\n </Indicators>\n\n <NavButton\n onClick={handleNext}\n $disabled={currentIndex === maxIndex}\n navColor={navButtonColor}\n >\n <HiArrowRight size={24} />\n </NavButton>\n </NavigationWrapper>\n )}\n </CarouselContainer>\n );\n};","import styled from 'styled-components';\nimport { ExtendedButton, SocialButton, TextButton } from '../../atoms';\nimport { Address } from '../../molecules';\n\nconst variants = ['primary', 'secondary'] as const;\ntype Variant = (typeof variants)[number];\n\nconst FooterContainer = styled.footer<{ variant: Variant }>`\n background-color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return '#1e40af'; \n case 'secondary':\n return '#1D3C77'; \n default:\n return '#1e40af';\n }\n }};\n padding: 3rem 2rem 2rem;\n color: #ffffff;\n`;\n\nconst TopSection = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 3rem;\n padding-bottom: 2rem;\n border-bottom: 1px solid rgba(255, 255, 255, 0.2);\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 2rem;\n align-items: flex-start;\n }\n`;\n\nconst LogoWrapper = styled.div`\n img {\n height: 100px;\n width: auto;\n }\n`;\n\nconst ButtonGroup = styled.div`\n display: flex;\n gap: 1rem;\n align-items: center;\n`;\n\nconst MiddleSection = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr auto;\n gap: 3rem;\n margin-bottom: 3rem;\n align-items: start;\n\n @media (max-width: 1024px) {\n grid-template-columns: 1fr 1fr;\n }\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n }\n`;\n\nconst SocialButtonGroup = styled.div`\n display: flex;\n gap: 1rem;\n flex-wrap: wrap;\n`;\n\nconst BottomSection = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-top: 2rem;\n border-top: 1px solid rgba(255, 255, 255, 0.2);\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 1rem;\n align-items: flex-start;\n }\n`;\n\nconst LegalLinks = styled.div`\n display: flex;\n gap: 2rem;\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 0.5rem;\n }\n`;\n\nconst LegalLink = styled.a`\n color: #ffffff;\n text-decoration: none;\n font-size: 0.875rem;\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.05em;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\nconst Copyright = styled.p`\n margin: 0;\n font-size: 0.875rem;\n color: rgba(255, 255, 255, 0.8);\n`;\n\ninterface AddressData {\n title: string;\n phone?: string;\n email?: string;\n addressLines: string[];\n}\n\ninterface SocialLink {\n icon: React.ReactNode;\n url: string;\n ariaLabel: string;\n}\n\ninterface LegalLinkData {\n text: string;\n url: string;\n}\n\ninterface FooterProps {\n logo: string;\n primaryButtonText: string;\n secondaryButtonText: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n addresses: AddressData[];\n socialLinks: SocialLink[];\n legalLinks: LegalLinkData[];\n copyrightText: string;\n variant?: Variant;\n primaryArrowVariant?: 'brand' | 'teal' | 'blue';\n primaryTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n primaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n secondaryBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n secondaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const Footer = ({\n logo,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n addresses,\n socialLinks,\n legalLinks,\n copyrightText,\n variant = 'primary',\n primaryArrowVariant = 'blue',\n primaryTextBgVariant = 'secondary',\n primaryTextVariant = 'brand',\n secondaryBgVariant = 'transparent',\n secondaryTextVariant = 'secondary',\n}: FooterProps) => {\n return (\n <FooterContainer variant={variant}>\n <TopSection>\n <LogoWrapper>\n <img src={logo} alt=\"Logo\" />\n </LogoWrapper>\n <ButtonGroup>\n <ExtendedButton\n text={primaryButtonText}\n onClick={onPrimaryClick}\n arrowVariant={primaryArrowVariant}\n textBgVariant={primaryTextBgVariant}\n textVariant={primaryTextVariant}\n />\n <TextButton\n text={secondaryButtonText}\n onClick={onSecondaryClick}\n bgVariant={secondaryBgVariant}\n textVariant={secondaryTextVariant}\n uppercase={true}\n />\n </ButtonGroup>\n </TopSection>\n\n <MiddleSection>\n {addresses.map((address, index) => (\n <Address\n key={index}\n title={address.title}\n phone={address.phone}\n email={address.email}\n addressLines={address.addressLines}\n variant=\"inverse\"\n />\n ))}\n <SocialButtonGroup>\n {socialLinks.map((social, index) => (\n <SocialButton\n key={index}\n icon={social.icon}\n onClick={() => window.open(social.url, '_blank')}\n variant=\"inverse\"\n ariaLabel={social.ariaLabel}\n />\n ))}\n </SocialButtonGroup>\n </MiddleSection>\n\n <BottomSection>\n <LegalLinks>\n {legalLinks.map((link, index) => (\n <LegalLink key={index} href={link.url}>\n {link.text}\n </LegalLink>\n ))}\n </LegalLinks>\n <Copyright>{copyrightText}</Copyright>\n </BottomSection>\n </FooterContainer>\n );\n};\n\nFooter.variants = variants;","import styled from 'styled-components';\nimport { ExtendedButton, TextButton } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype BorderColor = keyof typeof colors.border;\n\nconst HeaderContainer = styled.header`\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n padding: 0 1rem;\n`;\n\nconst LogoWrapper = styled.div`\n display: flex;\n align-items: center;\n \n img {\n height: 60px;\n width: auto;\n }\n`;\n\nconst ButtonGroup = styled.div`\n display: flex;\n gap: 1rem;\n align-items: center;\n \n /* Hide on mobile */\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst BurgerButton = styled.button<{ $burgerVariant: BorderColor }>`\n display: none;\n \n /* Show only on mobile */\n @media (max-width: 767px) {\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n width: 2rem;\n height: 2rem;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n \n &:focus {\n outline: none;\n }\n }\n`;\n\nconst BurgerLine = styled.div<{ $isOpen: boolean; $burgerVariant: BorderColor }>`\n width: 2rem;\n height: 0.25rem;\n background-color: ${props => colors.border[props.$burgerVariant]};\n border-radius: 10px;\n transition: all 0.3s linear;\n position: relative;\n transform-origin: 1px;\n\n &:first-child {\n transform: ${({ $isOpen }) => $isOpen ? 'rotate(45deg)' : 'rotate(0)'};\n }\n\n &:nth-child(2) {\n opacity: ${({ $isOpen }) => $isOpen ? '0' : '1'};\n transform: ${({ $isOpen }) => $isOpen ? 'translateX(20px)' : 'translateX(0)'};\n }\n\n &:nth-child(3) {\n transform: ${({ $isOpen }) => $isOpen ? 'rotate(-45deg)' : 'rotate(0)'};\n }\n`;\n\ninterface HeaderProps {\n logo: string;\n primaryButtonText: string;\n secondaryButtonText: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n // Mobile menu props\n isMobileMenuOpen?: boolean;\n onMobileMenuToggle?: () => void;\n burgerVariant?: BorderColor;\n // Button variants\n primaryArrowVariant?: 'brand' | 'teal' | 'blue';\n primaryTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n primaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n secondaryBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n secondaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const Header = ({\n logo,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n isMobileMenuOpen = false,\n onMobileMenuToggle,\n burgerVariant = 'primary',\n primaryArrowVariant = 'blue',\n primaryTextBgVariant = 'brand',\n primaryTextVariant = 'secondary',\n secondaryBgVariant = 'transparent',\n secondaryTextVariant = 'brand',\n}: HeaderProps) => {\n return (\n <HeaderContainer>\n <LogoWrapper>\n <img src={logo} alt=\"Logo\" />\n </LogoWrapper>\n \n {/* Desktop buttons - hidden on mobile */}\n <ButtonGroup>\n <ExtendedButton\n text={primaryButtonText}\n onClick={onPrimaryClick}\n arrowVariant={primaryArrowVariant}\n textBgVariant={primaryTextBgVariant}\n textVariant={primaryTextVariant}\n />\n <TextButton\n text={secondaryButtonText}\n onClick={onSecondaryClick}\n bgVariant={secondaryBgVariant}\n textVariant={secondaryTextVariant}\n uppercase={true}\n />\n </ButtonGroup>\n \n {/* Mobile burger - shown only on mobile */}\n <BurgerButton onClick={onMobileMenuToggle} $burgerVariant={burgerVariant}>\n <BurgerLine $isOpen={isMobileMenuOpen} $burgerVariant={burgerVariant} />\n <BurgerLine $isOpen={isMobileMenuOpen} $burgerVariant={burgerVariant} />\n <BurgerLine $isOpen={isMobileMenuOpen} $burgerVariant={burgerVariant} />\n </BurgerButton>\n </HeaderContainer>\n );\n};","import styled from \"styled-components\";\nimport { OverviewRowItem } from \"../../molecules\";\nimport { spaces } from \"../../tokens/spaces\";\n\ntype OverviewItem = {\n title: string, \n isComplete: boolean\n}\n\ntype Overview = {\n header: string;\n overviewItems: OverviewItem[]\n}\n\ninterface OverviewListProps {\n overviews: Overview[]\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${spaces[2]};\n`\n\nconst RowContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${spaces[2]};\n padding: 0 ${spaces[4]};\n`\n\nexport const OverviewList = ({overviews}: OverviewListProps) => {\n\n function isAllCompleted(overviewItems: OverviewItem[]){\n let isCompleted = true\n\n overviewItems.forEach((overview) => {\n if(overview.isComplete === false) {\n isCompleted = false\n } \n })\n\n return isCompleted\n }\n\n return <Container>\n {overviews.map(overview => <Container key={overview.header}>\n <OverviewRowItem title={overview.header} isMainHeader isComplete={isAllCompleted(overview.overviewItems)}/>\n {/* <RowContainer>\n {overview.overviewItems.map(overviewItem => \n <OverviewRowItem key={overviewItem.title} title={overviewItem.title} isComplete={overviewItem.isComplete} isMainHeader={false}/>\n )}\n </RowContainer> */}\n </Container>)}\n </Container>\n}","import { createContext, ReactNode, useContext, useState } from 'react';\nimport Toast from '../../components/Toast';\nimport type { ToastType } from '../../types/toast';\n\ntype ShowToastInput = {\n type?: ToastType;\n message: string;\n};\n\ntype ToastContextProps = {\n showToast: (input: ShowToastInput) => void;\n};\n\ninterface ToastProvider {\n children: ReactNode;\n}\n\nconst ToastContext = createContext<ToastContextProps>({ showToast: () => {} });\n\nexport const useToast = () => useContext(ToastContext);\n\nexport const ToastProvider = ({ children }: ToastProvider) => {\n const [toast, setToast] = useState<ShowToastInput>();\n\n function showToast({ message, type = 'Success' }: ShowToastInput) {\n setToast({ message, type });\n }\n\n return (\n <ToastContext.Provider value={{ showToast }}>\n <Toast\n type={toast?.type ?? 'Success'}\n message={toast?.message}\n visible={typeof toast?.message === 'string'}\n onClear={() => setToast(undefined)}\n />\n {children}\n </ToastContext.Provider>\n );\n};\n","import styled from 'styled-components';\nimport { ExtendedButton, Header, TermsCheckbox } from '../../atoms';\nimport { ContactForm } from '../../organisms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype ComponentTextColor = Exclude<TextColor, 'active' | 'hover' | 'focus'>;\n\nconst ContactSection = styled.section`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 4rem 2rem;\n min-height: 100vh;\n background-color: ${colors.background?.secondary || '#f9fafb'};\n \n /* Mobile adjustments */\n @media (max-width: 767px) {\n padding: 2rem 1rem;\n }\n`;\n\nconst ContentWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n max-width: 1200px;\n width: 100%;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n }\n`;\n\nconst ImageWrapper = styled.div`\n width: 100%;\n height: 100%;\n min-height: 600px;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n }\n\n /* Hide on mobile */\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst FormContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2rem;\n padding: 4rem 3rem;\n background-color: #ffffff;\n \n /* Mobile adjustments */\n @media (max-width: 767px) {\n padding: 2rem 1.5rem;\n }\n`;\n\nconst FormWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2rem;\n`;\n\nconst ButtonWrapper = styled.div`\n display: flex;\n justify-content: flex-start;\n \n /* Mobile: full width button */\n @media (max-width: 767px) {\n width: 100%;\n }\n`;\n\ninterface ContactProps {\n image: string;\n headerText: string;\n termsChecked: boolean;\n onTermsChange: (checked: boolean) => void;\n buttonText: string;\n onButtonClick?: () => void;\n headerColor?: ComponentTextColor;\n termsVariant?: 'primary' | 'secondary' | 'subtle';\n buttonArrowVariant?: 'brand' | 'teal' | 'blue';\n buttonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n buttonTextVariant?: \"brand\" | \"blue\" | \"primary\" | \"secondary\" | \"tertiary\" | \"subtle\" | \"light\" ;\n}\n\nexport const Contact = ({\n image,\n headerText,\n termsChecked,\n onTermsChange,\n buttonText,\n onButtonClick,\n headerColor = 'brand',\n termsVariant = 'primary',\n buttonArrowVariant = 'teal',\n buttonTextBgVariant = 'brand',\n buttonTextVariant = 'primary',\n}: ContactProps) => {\n return (\n <ContactSection>\n <ContentWrapper>\n <ImageWrapper>\n <img src={image} alt=\"Contact\" />\n </ImageWrapper>\n <FormContainer>\n <Header variant=\"h1\" color={headerColor}>\n {headerText}\n </Header>\n <FormWrapper>\n <ContactForm />\n <TermsCheckbox\n checked={termsChecked}\n onChange={onTermsChange}\n variant={termsVariant}\n />\n <ButtonWrapper>\n <ExtendedButton\n text={buttonText}\n onClick={onButtonClick}\n arrowVariant={buttonArrowVariant}\n textBgVariant={buttonTextBgVariant}\n textVariant={buttonTextVariant}\n />\n </ButtonWrapper>\n </FormWrapper>\n </FormContainer>\n </ContentWrapper>\n </ContactSection>\n );\n};","import styled from 'styled-components';\nimport { Header, Pill } from '../../atoms';\nimport { FAQAccordion } from '../../molecules';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst FAQContainer = styled.section`\n display: flex;\n flex-direction: column;\n gap: 2rem;\n padding: 4rem 2rem;\n min-height: 100vh;\n background-color: ${colors.background?.primary || '#f9fafb'};\n`;\n\nconst HeaderSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n align-items: flex-start;\n`;\n\nconst AccordionList = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\ninterface AccordionItem {\n number: string;\n title: string;\n content: string;\n defaultOpen?: boolean;\n}\n\ninterface FAQProps {\n pillText: string;\n headerText: string;\n headerVariant?: 'h1' | 'h2' | 'h3';\n accordionItems: AccordionItem[];\n pillVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n headerColor?: TextColor;\n accordionNumberColor?: TextColor;\n accordionTitleColor?: TextColor;\n accordionIconColor?: TextColor;\n accordionContentVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const FAQ = ({\n pillText,\n headerText,\n headerVariant = 'h1',\n accordionItems,\n pillVariant = 'primary',\n headerColor = 'brand',\n accordionNumberColor = 'brand',\n accordionTitleColor = 'brand',\n accordionIconColor = 'brand',\n accordionContentVariant = 'primary',\n}: FAQProps) => {\n return (\n <FAQContainer>\n <HeaderSection>\n <Pill variant={pillVariant} inverse={true}>\n {pillText}\n </Pill>\n <Header variant={headerVariant} color={headerColor}>\n {headerText}\n </Header>\n </HeaderSection>\n\n <AccordionList>\n {accordionItems.map((item, index) => (\n <FAQAccordion\n key={index}\n number={item.number}\n title={item.title}\n content={item.content}\n defaultOpen={item.defaultOpen}\n numberColor={accordionNumberColor}\n titleColor={accordionTitleColor}\n iconColor={accordionIconColor}\n contentVariant={accordionContentVariant}\n />\n ))}\n </AccordionList>\n </FAQContainer>\n );\n};","import styled from 'styled-components';\nimport { Header, Pill } from '../../atoms';\nimport { FeatureCarousel } from '../../organisms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\nconst FeaturesContainer = styled.section`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n gap: 2rem;\n padding: 4rem 2rem;\n min-height: 100vh;\n background-color: ${colors.background?.secondary || '#000'};\n`;\n\nconst InnerWrapper = styled.div`\n width: 100%;\n margin: 0 auto;\n`;\n\nconst HeaderWrapper = styled.div`\n text-align: left;\n`;\n\ninterface FeatureCard {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n onArrowClick?: () => void;\n}\n\ninterface FeaturesProps {\n pillText: string;\n headerText: string;\n cards: FeatureCard[];\n pillVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n headerColor?: TextColor;\n cardTitleColor?: TextColor;\n cardDescriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n cardArrowVariant?: 'brand' | 'teal' | 'blue';\n cardThumbnailBgColor?: BackgroundColor;\n navButtonColor?: TextColor;\n indicatorColor?: TextColor;\n}\n\nexport const Features = ({\n pillText,\n headerText,\n cards,\n pillVariant = 'primary',\n headerColor = 'brand',\n cardTitleColor = 'brand',\n cardDescriptionVariant = 'primary',\n cardArrowVariant = 'teal',\n cardThumbnailBgColor = 'brand',\n navButtonColor = 'brand',\n indicatorColor = 'brand',\n}: FeaturesProps) => {\n return (\n <FeaturesContainer>\n <InnerWrapper>\n\n <Pill variant={pillVariant} inverse={true}>\n {pillText}\n </Pill>\n <HeaderWrapper>\n <Header variant=\"h1\" color={headerColor}>\n {headerText}\n </Header>\n </HeaderWrapper>\n <FeatureCarousel\n cards={cards}\n cardTitleColor={cardTitleColor}\n cardDescriptionVariant={cardDescriptionVariant}\n cardArrowVariant={cardArrowVariant}\n cardThumbnailBgColor={cardThumbnailBgColor}\n navButtonColor={navButtonColor}\n indicatorColor={indicatorColor}\n />\n </InnerWrapper>\n </FeaturesContainer>\n );\n};","import styled from 'styled-components';\nimport { CTAContainer, FeatureContainer } from '../../molecules';\nimport { colors } from '../../tokens/colors';\n\ntype BackgroundColor = keyof typeof colors.background;\n\nconst HeroContainer = styled.section<{ $bgImage?: string; $overlayColor?: string }>`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2rem;\n min-height: 100vh;\n position: relative;\n overflow: hidden;\n padding: 4rem;\n \n /* Background image */\n ${props => props.$bgImage && `\n background-image: url(${props.$bgImage});\n background-size: cover;\n background-position: center;\n `}\n \n /* Blue overlay filter */\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${props => props.$overlayColor || 'rgba(30, 64, 175, 0.7)'};\n }\n\n\n /* Mobile/Tablet: Single column, features below CTA */\n @media (max-width: 1024px) {\n grid-template-columns: 1fr;\n grid-template-rows: auto auto;\n padding: 2rem 1rem;\n gap: 3rem;\n }\n \n /* Very small mobile */\n @media (max-width: 480px) {\n padding: 1.5rem 1rem;\n }\n`;\n\nconst Column = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n \n /* Constrain text width on mobile */\n @media (max-width: 1024px) {\n max-width: 100%;\n width: 100%;\n }\n`;\n\nconst FeaturesColumn = styled(Column)`\n /* On desktop: normal column */\n @media (min-width: 1025px) {\n display: flex;\n }\n \n /* On mobile: show below CTA, order it second */\n @media (max-width: 1024px) {\n display: flex;\n order: 2;\n align-items: flex-start;\n }\n`;\n\nconst CTAColumn = styled(Column)`\n /* Ensure CTA comes first on mobile */\n @media (max-width: 1024px) {\n order: 1;\n }\n`;\n\ninterface FeatureItemData {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n thumbnailSize?: string;\n}\n\ninterface HeroProps {\n ctaHeader: string;\n ctaDescription: string;\n primaryButtonText: string;\n secondaryButtonText?: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n featureItems: FeatureItemData[];\n bgImage?: string;\n overlayColor?: string;\n // CTA color controls\n ctaHeaderTextColor?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n ctaDescriptionTextColor?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n primaryArrowVariant?: 'brand' | 'teal' | 'blue';\n primaryTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n primaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n secondaryBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n secondaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n // Feature color controls\n featureThumbnailBgColor?: BackgroundColor;\n featureTitleColor?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n featureDescriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const Hero = ({\n ctaHeader,\n ctaDescription,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n featureItems,\n bgImage,\n overlayColor,\n ctaHeaderTextColor = 'secondary',\n ctaDescriptionTextColor = 'secondary',\n primaryArrowVariant = 'teal',\n primaryTextBgVariant = 'brand',\n primaryTextVariant = 'secondary',\n secondaryBgVariant = 'transparent',\n secondaryTextVariant = 'secondary',\n featureThumbnailBgColor = 'brand',\n featureTitleColor = 'secondary',\n featureDescriptionVariant = 'secondary',\n}: HeroProps) => {\n return (\n <HeroContainer $bgImage={bgImage} $overlayColor={overlayColor}>\n <CTAColumn>\n <CTAContainer\n header={ctaHeader}\n description={ctaDescription}\n primaryButtonText={primaryButtonText}\n {...(secondaryButtonText && { \n secondaryButtonText,\n onSecondaryClick,\n secondaryBgVariant,\n secondaryTextVariant,\n })}\n onPrimaryClick={onPrimaryClick}\n headerTextColor={ctaHeaderTextColor}\n descriptionTextColor={ctaDescriptionTextColor}\n primaryArrowVariant={primaryArrowVariant}\n primaryTextBgVariant={primaryTextBgVariant}\n primaryTextVariant={primaryTextVariant}\n />\n </CTAColumn>\n <FeaturesColumn>\n <FeatureContainer \n items={featureItems}\n thumbnailBgColor={featureThumbnailBgColor}\n titleColor={featureTitleColor}\n descriptionVariant={featureDescriptionVariant}\n />\n </FeaturesColumn>\n </HeroContainer>\n );\n};","import styled from 'styled-components';\nimport { Header } from '../../atoms';\nimport { ProductInfo } from '../../molecules';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype ComponentTextColor = Exclude<TextColor, 'active' | 'hover' | 'focus'>;\n\nconst SectionContainer = styled.section`\n display: flex;\n flex-direction: column;\n padding: 4rem 2rem;\n max-width: 1200px;\n margin: 0 auto;\n \n /* Mobile adjustments */\n @media (max-width: 767px) {\n padding: 2rem 1rem;\n }\n`;\n\nconst SectionHeader = styled.div`\n padding-bottom: 2rem;\n border-bottom: 1px solid ${colors.text.light || '#d1d5db'};\n \n /* Mobile: remove border, adjust padding */\n @media (max-width: 767px) {\n border-bottom: none;\n padding-bottom: 1rem;\n }\n`;\n\nconst ProductsWrapper = styled.div`\n /* Desktop: normal vertical stack */\n @media (min-width: 768px) {\n display: flex;\n flex-direction: column;\n }\n \n /* Mobile: horizontal scroll carousel */\n @media (max-width: 767px) {\n display: flex;\n overflow-x: auto;\n scroll-snap-type: x mandatory;\n gap: 1rem;\n padding: 1rem 0;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none; /* Firefox */\n \n &::-webkit-scrollbar {\n display: none; /* Chrome, Safari */\n }\n }\n`;\n\nconst ProductItem = styled.div`\n /* Desktop: vertical stack with borders */\n @media (min-width: 768px) {\n padding: 2rem 0;\n border-bottom: 1px solid ${colors.text.light || '#d1d5db'};\n\n &:last-child {\n border-bottom: none;\n }\n }\n \n /* Mobile: carousel item */\n @media (max-width: 767px) {\n flex: 0 0 80%; /* CHANGED from 85% - shows more of next card */\n scroll-snap-align: center;\n padding: 0;\n border: none;\n }\n \n /* Very small mobile */\n @media (max-width: 480px) {\n flex: 0 0 85%; /* CHANGED from 90% */\n }\n`;\n\ninterface Product {\n image: string;\n logoImage: string;\n title: string;\n buttonText: string;\n onButtonClick?: () => void;\n titleVariant?: 'h1' | 'h2' | 'h3';\n}\n\ninterface OtherProductsProps {\n headerText: string;\n headerVariant?: 'h1' | 'h2' | 'h3';\n products: Product[];\n headerColor?: ComponentTextColor;\n productTitleColor?: ComponentTextColor;\n productButtonArrowVariant?: 'brand' | 'teal' | 'blue';\n productButtonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n productButtonTextVariant?: \"brand\" | \"blue\" | \"primary\" | \"secondary\" | \"tertiary\" | \"subtle\" | \"light\";\n}\n\nexport const OtherProducts = ({\n headerText,\n headerVariant = 'h1',\n products,\n headerColor = 'brand',\n productTitleColor = 'brand',\n productButtonArrowVariant = 'teal',\n productButtonTextBgVariant = 'brand',\n productButtonTextVariant = 'secondary',\n}: OtherProductsProps) => {\n return (\n <SectionContainer>\n <SectionHeader>\n <Header variant={headerVariant} color={headerColor}>\n {headerText}\n </Header>\n </SectionHeader>\n <ProductsWrapper>\n {products.map((product, index) => (\n <ProductItem key={index}>\n <ProductInfo\n image={product.image}\n logoImage={product.logoImage}\n title={product.title}\n buttonText={product.buttonText}\n onButtonClick={product.onButtonClick}\n titleVariant={product.titleVariant}\n titleColor={productTitleColor}\n buttonArrowVariant={productButtonArrowVariant}\n buttonTextBgVariant={productButtonTextBgVariant}\n buttonTextVariant={productButtonTextVariant}\n />\n </ProductItem>\n ))}\n </ProductsWrapper>\n </SectionContainer>\n );\n};"]}
|
|
1
|
+
{"version":3,"sources":["../src/tokens/colors.ts","../src/tokens/sizes.ts","../src/tokens/spaces.ts","../src/atoms/Label/Label.tsx","../src/atoms/ArrowButton/ArrowButton.tsx","../src/tokens/radii.ts","../src/atoms/Loader/Loader.tsx","../src/atoms/Button/Button.tsx","../src/atoms/Description/Description.tsx","../src/atoms/ExtendedButton/ExtendedButton.tsx","../src/atoms/FeatureItem/FeatureItem.tsx","../src/tokens/breakpoints.ts","../src/atoms/FormContainer/FormContainer.tsx","../src/atoms/Header/Header.tsx","../src/atoms/Input/Input.tsx","../src/atoms/Pill/Pill.tsx","../src/atoms/RadioItem/RadioItem.tsx","../src/atoms/SecondaryInput/SecondaryInput.tsx","../src/atoms/SocialButton/SocialButton.tsx","../src/atoms/TermsCheckbox/TermsCheckbox.tsx","../src/atoms/Text/Text.tsx","../src/atoms/Textarea/Textarea.tsx","../src/atoms/TextButton/TextButton.tsx","../src/atoms/ToggleButton/ToggleButton.tsx","../src/molecules/InputContainer/InputContainer.tsx","../src/molecules/Dropdown/Dropdown.tsx","../src/components/Filter/Filter.tsx","../src/components/NavMenu.tsx","../src/components/SearchBar/Search.tsx","../src/components/SortBy/SortBy.tsx","../src/components/Spinner.tsx","../src/components/Dialog/Dialog.tsx","../src/components/TableRow/TableRow.tsx","../src/components/Table/Table.tsx","../src/components/TableInner/TableInner.tsx","../src/components/TableList.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Toast.tsx","../src/components/TopMenu.tsx","../src/templates/AboutUs/AboutUs.tsx","../src/organisms/ContactForm/ContactForm.tsx","../src/molecules/AccordionContent/AccordionContent.tsx","../src/molecules/AccordionHeader/AccordionHeader.tsx","../src/molecules/Accordion/Accordion.tsx","../src/molecules/Address/Address.tsx","../src/atoms/CheckboxItem/CheckboxItem.tsx","../src/molecules/Checkbox/Checkbox.tsx","../src/molecules/ContentCard/ContentCard.tsx","../src/molecules/CTAContainer/CTAContainer.tsx","../src/molecules/FAQAccordion/FAQAccordion.tsx","../src/molecules/FeatureContainer/FeatureContainer.tsx","../src/tokens/animations.ts","../src/molecules/Modal/Modal.tsx","../src/molecules/OverviewRowItem/OverviewRowItem.tsx","../src/molecules/PageLayout/PageLayout.tsx","../src/molecules/EmptyState/EmptyState.tsx","../src/molecules/PDFPreviewer/PDFPreviewer.tsx","../src/molecules/ProductInfo/ProductInfo.tsx","../src/molecules/RadioGroup/RadioGroup.tsx","../src/molecules/RatesChart/RatesChart.tsx","../src/molecules/SideNav/SideNav.tsx","../src/molecules/SidePanel/SidePanel.tsx","../src/molecules/StepperHeaderTab/StepperHeaderTab.tsx","../src/molecules/DocumentAccordionHeader/DocumentAccordionHeader.tsx","../src/molecules/DocumentAccordionRow/DocumentAccordionRow.tsx","../src/organisms/DocumentListAccordion/DocumentListAccordion.tsx","../src/organisms/FeatureCarousel/FeatureCarousel.tsx","../src/organisms/Footer/Footer.tsx","../src/organisms/Header/Header.tsx","../src/organisms/OverviewList/OverviewList.tsx","../src/organisms/ToastProvider/ToastProvider.tsx","../src/templates/Contact/Contact.tsx","../src/templates/FAQ/FAQ.tsx","../src/templates/Features/Features.tsx","../src/templates/Hero/Hero.tsx","../src/templates/OtherProducts/OtherProducts.tsx"],"names":["styled","jsx","HiArrowUpRight","keyframes","variants","StyledButton","jsxs","Description","Container","Label","StyledInput","StyledContainer","StyledText","InnerContainer","useMemo","tv","Link","i","useState","useEffect","Fragment","Transition","DefaultDialog","DialogPanel","DialogTitle","Button","ClockIcon","HomeIcon","TrashIcon","itemContainer","useAnimation","motion","ThumbnailWrapper","ButtonWrapper","Header","AccordionHeader","HeaderWrapper","AccordionContent","HiMinus","HiPlus","ImageWrapper","ContentWrapper","useRef","HiArrowLeft","HiArrowRight","createContext","FormContainer","HeaderSection"],"mappings":"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","file":"index.cjs","sourcesContent":["const variants = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'subtle',\n 'blue',\n 'brand',\n 'light',\n 'active',\n 'hover',\n 'error',\n 'focus',\n 'success',\n] as const;\nconst tokens = ['background', 'border', 'text', 'button'] as const;\n\ntype Token = (typeof tokens)[number];\ntype Variant = (typeof variants)[number];\n\ntype TokenVariant = Record<Variant, string>;\n\nexport const colors: Record<Token, Partial<TokenVariant>> = {\n background: {\n primary: '#FFFFFF',\n secondary: '#EEF1F5',\n tertiary: '#1E4384',\n subtle: 'rgba(102, 153, 153, 1)',\n blue: '#36b8e7',\n brand: '#1D3C77',\n success: '#00ab3fff',\n error: '#F87171',\n light: '#cacbcc'\n },\n border: {\n primary: '#669999',\n secondary: 'rgba(30, 67, 132, 0.2)',\n hover: '#cacbcc',\n active: '#828282',\n error: '#F87171',\n focus: '#3B82F6',\n brand: '#1D3C77',\n light: '#f3f3f3',\n },\n text: {\n brand: '#1D3C77',\n primary: '#262626',\n secondary: '#FFFFFF',\n tertiary: '#669999',\n subtle: '#919EB0',\n light: '#b5b6b8ff',\n error: '#F87171',\n blue: '#3B82F6',\n },\n button: {\n primary: 'rgba(30, 67, 132, 0.2)',\n hover: 'rgba(30, 67, 132, 0.5)',\n active: 'rgba(30, 67, 132, 0.8)',\n secondary: 'rgba(30, 67, 132, 1)',\n },\n} as const;\n","export const sizes = {\n sm: '12px',\n md: '14px',\n lg: '18px',\n xl: '24px',\n 0: '1px',\n 0.5: '1.5px',\n} as const;\n","export const spaces: Record<number, `${number}px`> = {\n 0: '0px',\n 0.5: '2px',\n 1: '4px',\n 1.5: '6px',\n 2: '8px',\n 2.5: '10px',\n 3: '12px',\n 3.5: '14px',\n 4: '16px',\n 4.5: '18px',\n 5: '20px',\n 5.5: '22px',\n 6: '24px',\n 6.5: '28px',\n 7: '34px',\n 7.5: '38px',\n 8: '44px',\n 9: '56px',\n 20: '150px',\n} as const;\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\ntype Color = keyof typeof colors.text;\n\ninterface LabelProps {\n value: string;\n color?: Color;\n fontWeight?: string;\n}\n\nconst StyledLabel = styled.span<{ color: Color; fontWeight: string }>`\n color: ${(props) => colors.text[props?.color]};\n font-size: ${sizes.sm};\n font-weight: ${(props) => props.fontWeight};\n`;\n\nconst StyledFloatingLabel = styled(StyledLabel)`\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-left: ${spaces[3]};\n margin-bottom: -${spaces[2.5]};\n transform: translateY(-${spaces[0.5]});\n background-color: ${colors.background.primary};\n padding: 0 ${spaces[1]};\n`;\n\nexport const Label = ({\n value,\n color = 'subtle',\n fontWeight = '500',\n}: LabelProps) => {\n return (\n <StyledLabel color={color} fontWeight={fontWeight}>\n {value}\n </StyledLabel>\n );\n};\n\nexport const FloatingLabel = ({\n value,\n color = 'subtle',\n fontWeight = '500',\n}: LabelProps) => {\n return (\n <StyledFloatingLabel color={color} fontWeight={fontWeight}>\n {value}\n </StyledFloatingLabel>\n );\n};\n","import { HiArrowUpRight } from 'react-icons/hi2';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['brand', 'teal', 'blue'] as const;\ntype Variant = (typeof variants)[number];\n\nconst StyledContainer = styled.button<{\n as?: 'button' | 'div';\n variant: Variant;\n}>`\n padding: 0.75rem;\n ${props => props.as === 'button' ? `\n width: 2.5rem;\n height: 2.5rem;\n ` : ''}\n flex-shrink: 0;\n background-color: ${(props) => {\n switch (props.variant) {\n case 'brand':\n return colors.background.brand;\n case 'teal':\n return colors.background.subtle;\n case 'blue':\n return colors.background.blue;\n default:\n return colors.background.brand;\n }\n }};\n transition: all 0.2s;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover svg {\n transform: rotate(45deg);\n }\n`;\n\nconst StyledIcon = styled(HiArrowUpRight)`\n width: 1rem;\n height: 1rem;\n color: ${colors.text.secondary};\n transition: transform 0.2s;\n`;\n\ninterface ButtonProps {\n onClick?: () => void;\n asChild?: boolean;\n variant?: Variant;\n}\n\nexport const ArrowButton = ({ \n onClick, \n asChild = false,\n variant = 'brand'\n}: ButtonProps) => {\n return (\n <StyledContainer \n as={asChild ? 'div' : 'button'}\n onClick={onClick}\n variant={variant}\n >\n <StyledIcon aria-hidden />\n </StyledContainer>\n );\n};\n\nArrowButton.variants = variants;","export const radii = {\n sm: '4px',\n md: '8px',\n lg: '10px',\n xl: '16px',\n} as const;\n","import styled, { keyframes } from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\ntype LoaderProps = {\n size?: number | string;\n thickness?: number;\n speed?: string;\n};\n\nconst spin = keyframes`\n to { transform: rotate(360deg); }\n`;\n\nconst Ring = styled.span<\n Required<Pick<LoaderProps, 'size' | 'thickness' | 'speed'>>\n>`\n display: inline-block;\n width: ${({ size }) => (typeof size === 'number' ? `${size}px` : size)};\n height: ${({ size }) => (typeof size === 'number' ? `${size}px` : size)};\n border-radius: 50%;\n box-sizing: border-box;\n\n border: ${({ thickness }) => thickness}px solid ${colors.background.brand};\n\n border-top-color: ${colors.border.active};\n\n animation: ${spin} ${({ speed }) => speed} linear infinite;\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n border-top-color: ${colors.border.active};\n }\n`;\n\nexport const Loader = ({\n size = 32,\n thickness = 3,\n speed = '0.8s',\n}: LoaderProps) => {\n return (\n <Ring\n role=\"status\"\n aria-live=\"polite\"\n size={size}\n thickness={thickness}\n speed={speed}\n />\n );\n};\n","import { ReactElement } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { spaces } from '../../tokens/spaces';\nimport { Loader } from '../Loader/Loader';\n\nconst ButtonTypes = ['submit', 'reset', 'button'] as const;\n\ntype ButtonType = (typeof ButtonTypes)[number];\n\nconst variants = ['dark', 'light'] as const;\n\ntype Variant = (typeof variants)[number];\n\ninterface ButtonProps {\n onClick?: () => void;\n text?: string;\n type?: ButtonType;\n disabled?: boolean;\n icon?: ReactElement;\n variant?: Variant;\n isLoading?: boolean;\n}\n\nconst StyledButton = styled.button<{ variant: Variant }>`\n padding: ${spaces[2]} ${spaces[4]};\n background-color: ${(props) =>\n props.variant === 'light'\n ? colors.button.primary\n : colors.button.secondary};\n border-radius: ${radii.lg};\n color: ${(props) =>\n props.variant === 'light' ? colors.text.primary : colors.text.secondary};\n display: flex;\n align-items: center;\n justify-content: center;\n gap: ${spaces[2]};\n max-height: 34px;\n\n &:hover {\n background-color: ${colors.button.hover};\n cursor: pointer;\n }\n\n &:active {\n background-color: ${colors.button.active};\n color: ${colors.text.secondary};\n }\n\n &:disabled {\n background-color: ${colors.button.primary};\n cursor: not-allowed;\n color: ${colors.text.primary};\n }\n`;\n\nconst ButtonText = styled.span`\n font-size: 12px;\n font-weight: 700;\n`;\n\nexport const Button = ({\n onClick,\n text,\n type = 'button',\n disabled,\n icon = undefined,\n variant = 'light',\n isLoading,\n}: ButtonProps) => {\n return (\n <StyledButton\n type={type}\n onClick={onClick}\n disabled={disabled || isLoading}\n variant={variant}\n >\n {!isLoading ? (\n <>\n {typeof icon !== 'undefined' && icon}\n <ButtonText>{text}</ButtonText>\n </>\n ) : (\n <Loader size=\"20px\" />\n )}\n </StyledButton>\n );\n};\n\nButton.types = ButtonTypes;\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle', 'error'] as const;\ntype Variant = (typeof variants)[number];\n\ninterface DescriptionProps {\n children: string;\n variant?: Variant;\n}\n\nconst StyledDescription = styled.p<{ variant: Variant }>`\n margin: 0;\n font-size: 1rem;\n line-height: 1.6;\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.primary;\n case 'secondary':\n return colors.text.secondary;\n case 'subtle':\n return colors.text.subtle;\n case 'error':\n return colors.text.error;\n default:\n return colors.text.primary;\n }\n }};\n`;\n\nexport const Description = ({\n children,\n variant = 'primary',\n}: DescriptionProps) => {\n return (\n <StyledDescription variant={variant}>\n {children}\n </StyledDescription>\n );\n};\n\nDescription.variants = variants;","import styled from 'styled-components';\nimport { ArrowButton, TextButton } from \"..\";\n\nconst StyledButton = styled.button`\n display: flex;\n align-items: center;\n height: 2.5rem;\n border: none;\n cursor: pointer;\n transition: opacity 0.2s;\n padding: 0;\n background: transparent;\n\n &:hover {\n opacity: 0.9;\n }\n`;\n\ninterface ExtendedButtonProps {\n text: string;\n onClick?: () => void;\n arrowVariant?: 'brand' | 'teal' | 'blue';\n textBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n textVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const ExtendedButton = ({ \n text, \n onClick,\n arrowVariant = 'teal',\n textBgVariant = 'brand',\n textVariant = 'secondary',\n}: ExtendedButtonProps) => {\n return (\n <StyledButton onClick={onClick}>\n <ArrowButton asChild variant={arrowVariant} />\n <TextButton asChild text={text} bgVariant={textBgVariant} textVariant={textVariant} uppercase={false} />\n </StyledButton>\n );\n};","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\nconst Container = styled.div`\n display: flex;\n gap: 1rem;\n background-color: transparent;\n`;\n\nconst ThumbnailWrapper = styled.div<{ $size?: string; thumbnailBgColor: BackgroundColor }>`\n width: ${props => props.$size || '3rem'};\n height: ${props => props.$size || '3rem'};\n border-radius: 50%;\n background-color: ${props => colors.background[props.thumbnailBgColor]};\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n`;\n\nconst Content = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n`;\n\nconst Title = styled.h3<{ titleColor: TextColor }>`\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: ${props => colors.text[props.titleColor]};\n`;\n\nconst Description = styled.p<{ descriptionColor: TextColor }>`\n margin: 0;\n font-size: 0.875rem;\n line-height: 1.5;\n color: ${props => colors.text[props.descriptionColor]};\n`;\n\ninterface FeatureItemProps {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n thumbnailSize?: string;\n thumbnailBgColor?: BackgroundColor;\n titleColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const FeatureItem = ({\n thumbnail,\n title,\n description,\n thumbnailSize,\n thumbnailBgColor = 'brand',\n titleColor = 'primary',\n descriptionVariant = 'subtle',\n}: FeatureItemProps) => {\n // Map descriptionVariant to text color\n const getDescriptionColor = (): TextColor => {\n switch (descriptionVariant) {\n case 'primary':\n return 'primary';\n case 'secondary':\n return 'secondary';\n case 'subtle':\n return 'subtle';\n case 'error':\n return 'error';\n default:\n return 'subtle';\n }\n };\n\n return (\n <Container>\n <ThumbnailWrapper $size={thumbnailSize} thumbnailBgColor={thumbnailBgColor}>\n {thumbnail}\n </ThumbnailWrapper>\n <Content>\n <Title titleColor={titleColor}>{title}</Title>\n <Description descriptionColor={getDescriptionColor()}>{description}</Description>\n </Content>\n </Container>\n );\n};","export const breakpoints = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n} as const;\n","import { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { breakpoints } from '../../tokens/breakpoints';\nimport { spaces } from '../../tokens/spaces';\n\ntype Space = keyof typeof spaces;\n\ninterface FormContainerProps {\n children: ReactNode;\n space?: Space;\n}\n\nconst Container = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n`;\n\nconst InnerContainer = styled.div<{ space: Space }>`\n display: flex;\n flex-direction: column;\n padding: ${spaces[4]};\n width: 100%;\n max-width: ${breakpoints.lg};\n gap: ${(props) => spaces[props.space]};\n`;\n\nexport const FormContainer = ({ children, space = 4 }: FormContainerProps) => {\n return (\n <Container>\n <InnerContainer space={space}>{children}</InnerContainer>\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = {\n h1: {\n fontSize: '24px',\n fontWeight: 700,\n letterSpacing: '0.6px',\n lineHeight: '32px',\n },\n h2: {\n fontSize: '20px',\n fontWeight: 700,\n lineHeight: '28px',\n letterSpacing: '0.4px',\n },\n h3: {\n fontSize: '18px',\n fontWeight: 600,\n lineHeight: '28px',\n letterSpacing: '0.2px',\n },\n} as const;\n\ntype Variant = keyof typeof variants;\n\ntype Color = keyof typeof colors.text;\n\ninterface HeaderProps {\n children: string;\n variant?: Variant;\n color?: Color;\n}\n\nconst StyledText = styled.h1<{ variant: Variant; color: Color }>`\n color: ${(props) => colors.text[props?.color]};\n font-size: ${(props) => variants[props.variant].fontSize};\n font-weight: ${(props) => variants[props.variant].fontWeight};\n letter-spacing: ${(props) => variants[props.variant].letterSpacing};\n line-height: ${(props) => variants[props.variant].lineHeight};\n`;\n\nexport const Header = ({\n children,\n variant = 'h1',\n color = 'primary',\n}: HeaderProps) => {\n return (\n <StyledText variant={variant} color={color}>\n {children}\n </StyledText>\n );\n};\n","import { ChangeEvent } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { InputTypes, type BaseInputProps } from '../../types';\n\ninterface InputProps extends Omit<BaseInputProps, 'label'> {\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n value?: string | number;\n min?: string | number;\n max?: string | number;\n}\n\nconst StyledInput = styled.input`\n display: block;\n height: 100%;\n width: 100%;\n outline: none;\n background-color: transparent;\n color: ${colors.text.subtle};\n font-weight: 600;\n`;\n\nexport const Input = ({ name, onChange, ...rest }: InputProps) => {\n return <StyledInput name={name} onChange={onChange} {...rest} />;\n};\n\nInput.types = InputTypes;\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle', 'error'] as const;\ntype Variant = (typeof variants)[number];\n\ninterface PillProps {\n children: string;\n variant?: Variant;\n inverse?: boolean;\n}\n\nconst StyledPill = styled.span<{ variant: Variant; $inverse: boolean }>`\n display: inline-block;\n padding: 0.5rem 1rem;\n border-radius: 9999px;\n font-size: 0.75rem;\n font-weight: 600;\n background-color: ${(props) => {\n if (props.$inverse) return 'transparent';\n \n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n case 'error':\n return colors.text.error;\n default:\n return colors.text.brand;\n }\n }};\n color: ${(props) => {\n if (props.$inverse) {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n case 'error':\n return colors.text.error;\n default:\n return colors.text.brand;\n }\n }\n return colors.text.secondary; \n }};\n border: ${(props) => {\n if (!props.$inverse) return 'none';\n \n switch (props.variant) {\n case 'primary':\n return `1px solid ${colors.text.brand}`;\n case 'secondary':\n return `1px solid ${colors.text.blue}`;\n case 'subtle':\n return `1px solid ${colors.text.subtle}`;\n case 'error':\n return `1px solid ${colors.text.error}`;\n default:\n return `1px solid ${colors.text.brand}`;\n }\n }};\n`;\n\nexport const Pill = ({\n children,\n variant = 'primary',\n inverse = false,\n}: PillProps) => {\n return (\n <StyledPill variant={variant} $inverse={inverse}>\n {children}\n </StyledPill>\n );\n};\n\nPill.variants = variants;","import { FaCheckCircle } from 'react-icons/fa';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { spaces } from '../../tokens/spaces';\n\ninterface RadioItem {\n label: string;\n isSelected: boolean;\n onClick: () => void;\n disabled?: boolean;\n}\n\nconst Container = styled.div`\n border-radius: ${radii.md};\n padding: ${spaces['3']};\n display: flex;\n flex: 1;\n gap: ${spaces[2]};\n background-color: white;\n align-items: center;\n justify-content: center;\n border-width: 1px;\n border-color: ${colors.border.active};\n transition:\n background-color 0.25s ease,\n box-shadow 0.35s ease,\n transform 0.25s ease;\n\n &:hover {\n background-color: rgba(255, 255, 255, 0.96);\n border-color: ${colors.border.hover};\n cursor: pointer;\n }\n\n &:active {\n background-color: rgba(255, 255, 255, 0.92);\n }\n`;\n\nconst Label = styled.span<Pick<RadioItem, 'isSelected'>>`\n font-size: 16px;\n font-weight: ${(props) => (props.isSelected ? '800' : '400')};\n text-align: center;\n`;\n\nexport const RadioItem = ({ label, isSelected, onClick }: RadioItem) => {\n return (\n <Container onClick={onClick}>\n {isSelected && <FaCheckCircle color={colors.background.blue} />}\n <Label isSelected={isSelected}>{label}</Label>\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { BaseInputProps } from '../../types';\n\ntype Color = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\ninterface SecondaryInputProps extends BaseInputProps {\n required?: boolean;\n isTextArea?: boolean;\n labelColor?: Color;\n inputTextColor?: Color;\n placeholderColor?: Color;\n backgroundColor?: BackgroundColor;\n borderColor?: string;\n focusRingColor?: Color;\n}\n\nconst Container = styled.div`\n width: 100%;\n`;\n\nconst Label = styled.label<{ $color?: Color }>`\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: ${props => props.$color ? colors.text[props.$color] : colors.text.primary};\n opacity: 0.8;\n margin-bottom: 0.5rem;\n`;\n\nconst StyledInput = styled.input<{ \n $textColor?: Color;\n $placeholderColor?: Color;\n $bgColor?: BackgroundColor;\n $borderColor?: string;\n $focusRingColor?: Color;\n}>`\n box-sizing: border-box;\n height: 2.75rem;\n width: 100%;\n border-radius: 6px;\n border: 1px solid ${props => props.$borderColor || '#d1d5db'};\n background-color: ${props => props.$bgColor ? colors.background[props.$bgColor] : colors.background?.secondary || '#f9fafb'};\n padding: 0 0.75rem;\n font-size: 15px;\n color: ${props => props.$textColor ? colors.text[props.$textColor] : colors.text.primary};\n outline: none;\n \n &::placeholder {\n color: ${props => props.$placeholderColor ? colors.text[props.$placeholderColor] : colors.text.secondary};\n }\n \n &:focus {\n box-shadow: 0 0 0 2px ${props => {\n const color = props.$focusRingColor ? colors.text[props.$focusRingColor] : colors.text.primary;\n return `${color}33`; // Add 33 for 20% opacity\n }};\n }\n`;\n\nconst StyledTextArea = styled.textarea<{ \n $textColor?: Color;\n $placeholderColor?: Color;\n $bgColor?: BackgroundColor;\n $borderColor?: string;\n $focusRingColor?: Color;\n}>`\n box-sizing: border-box;\n width: 100%;\n border-radius: 6px;\n border: 1px solid ${props => props.$borderColor || '#d1d5db'};\n background-color: ${props => props.$bgColor ? colors.background[props.$bgColor] : colors.background?.secondary || '#f9fafb'};\n padding: 0.75rem;\n font-size: 15px;\n color: ${props => props.$textColor ? colors.text[props.$textColor] : colors.text.primary};\n outline: none;\n \n &::placeholder {\n color: ${props => props.$placeholderColor ? colors.text[props.$placeholderColor] : colors.text.secondary};\n }\n \n &:focus {\n box-shadow: 0 0 0 2px ${props => {\n const color = props.$focusRingColor ? colors.text[props.$focusRingColor] : colors.text.primary;\n return `${color}33`; // Add 33 for 20% opacity\n }};\n }\n`;\n\nexport const SecondaryInput = ({\n label,\n isTextArea = false,\n labelColor = 'brand',\n inputTextColor = 'primary',\n placeholderColor = 'subtle',\n backgroundColor = 'secondary',\n borderColor = '#d1d5db',\n focusRingColor = 'brand',\n ...rest\n}: SecondaryInputProps) => {\n return (\n <Container>\n {typeof label === 'string' && <Label $color={labelColor}>{label}</Label>}\n {isTextArea ? (\n <StyledTextArea \n {...rest} \n rows={5}\n $textColor={inputTextColor}\n $placeholderColor={placeholderColor}\n $bgColor={backgroundColor}\n $borderColor={borderColor}\n $focusRingColor={focusRingColor}\n />\n ) : (\n <StyledInput \n {...rest}\n $textColor={inputTextColor}\n $placeholderColor={placeholderColor}\n $bgColor={backgroundColor}\n $borderColor={borderColor}\n $focusRingColor={focusRingColor}\n />\n )}\n </Container>\n );\n};","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'inverse', 'filled'] as const;\ntype Variant = (typeof variants)[number];\n\nconst StyledButton = styled.button<{ variant: Variant }>`\n width: 2.5rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n background-color: ${(props) => {\n switch (props.variant) {\n case 'filled':\n return colors.background.brand;\n case 'primary':\n case 'secondary':\n case 'inverse':\n default:\n return 'transparent';\n }\n }};\n border: 2px solid ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'inverse':\n return colors.text.secondary; \n case 'filled':\n return colors.background.brand;\n default:\n return colors.text.brand;\n }\n }};\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'inverse':\n return colors.text.secondary; \n case 'filled':\n return colors.text.secondary;\n default:\n return colors.text.brand;\n }\n }};\n cursor: pointer;\n transition: all 0.2s;\n\n &:hover {\n opacity: 0.8;\n }\n\n svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n`;\n\ninterface SocialButtonProps {\n icon: React.ReactNode;\n onClick?: () => void;\n variant?: Variant;\n ariaLabel?: string;\n}\n\nexport const SocialButton = ({\n icon,\n onClick,\n variant = 'primary',\n ariaLabel,\n}: SocialButtonProps) => {\n return (\n <StyledButton\n onClick={onClick}\n variant={variant}\n aria-label={ariaLabel}\n >\n {icon}\n </StyledButton>\n );\n};\n\nSocialButton.variants = variants;","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle'] as const;\ntype Variant = (typeof variants)[number];\n\nconst CheckboxContainer = styled.label`\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n cursor: pointer;\n font-size: 0.875rem;\n line-height: 1.5;\n`;\n\nconst HiddenCheckbox = styled.input.attrs({ type: 'checkbox' })`\n position: absolute;\n opacity: 0;\n cursor: pointer;\n`;\n\nconst StyledCheckbox = styled.div<{ $checked: boolean; variant: Variant }>`\n width: 1.25rem;\n height: 1.25rem;\n border: 2px solid ${props => {\n if (props.$checked) {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }\n return colors.text.subtle; \n }};\n border-radius: 4px;\n background-color: ${props => {\n if (props.$checked) {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }\n return 'transparent';\n }};\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: all 0.2s;\n\n &::after {\n content: '✓';\n color: ${colors.text.secondary}; // white checkmark\n font-size: 0.875rem;\n font-weight: bold;\n display: ${props => props.$checked ? 'block' : 'none'};\n }\n`;\n\nconst Text = styled.span<{ variant: Variant }>`\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.primary;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.primary;\n }\n }};\n`;\n\nconst Link = styled.a<{ variant: Variant }>`\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }};\n font-weight: 700;\n text-decoration: underline;\n cursor: pointer;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\ninterface TermsCheckboxProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n text?: string;\n termsText?: string;\n termsUrl?: string;\n cookieText?: string;\n cookieUrl?: string;\n variant?: Variant;\n}\n\nexport const TermsCheckbox = ({\n checked,\n onChange,\n text = \"By submitting, I agree to Juta's\",\n termsText = \"Terms and Conditions\",\n termsUrl = \"/terms\",\n cookieText = \"Cookie Policy\",\n cookieUrl = \"/cookie-policy\",\n variant = 'primary',\n}: TermsCheckboxProps) => {\n return (\n <CheckboxContainer>\n <HiddenCheckbox\n checked={checked}\n onChange={(e) => onChange(e.target.checked)}\n />\n <StyledCheckbox $checked={checked} variant={variant} />\n <Text variant={variant}>\n {text}{' '}\n <Link href={termsUrl} variant={variant} target=\"_blank\" rel=\"noopener noreferrer\">\n {termsText}\n </Link>\n {' '}and{' '}\n <Link href={cookieUrl} variant={variant} target=\"_blank\" rel=\"noopener noreferrer\">\n {cookieText}\n </Link>\n </Text>\n </CheckboxContainer>\n );\n};\n\nTermsCheckbox.variants = variants;","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst sizes = ['sm', 'md', 'lg'] as const;\n\nconst variants = {\n sm: {\n fontSize: '14px',\n fontWeight: 500,\n },\n md: {\n fontSize: '16px',\n fontWeight: 500,\n },\n lg: {\n fontSize: '18px',\n fontWeight: 500,\n },\n} as const;\n\ntype Variant = keyof typeof variants;\n\ntype Color = keyof typeof colors.text;\n\ninterface TextProps {\n children: string;\n variant?: Variant;\n color?: Color;\n}\n\nconst StyledText = styled.h1<{ variant: Variant; color: Color }>`\n color: ${(props) => colors.text[props?.color]};\n font-size: ${(props) => variants[props.variant].fontSize};\n font-weight: ${(props) => variants[props.variant].fontWeight};\n`;\n\nexport const Text = ({\n children,\n color = 'primary',\n variant = 'md',\n}: TextProps) => {\n return (\n <StyledText color={color} variant={variant}>\n {children}\n </StyledText>\n );\n};\n\nText.variants = sizes;\n","import { ChangeEvent } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { InputTypes, type BaseInputProps } from '../../types';\n\ninterface TextareaProps extends Omit<BaseInputProps, 'label'> {\n onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n disabled?: boolean;\n value?: string | number;\n rows?: number;\n cols?: number;\n}\n\nconst StyledTextarea = styled.textarea`\n display: block;\n width: 100%;\n height: 100%;\n outline: none;\n background-color: transparent;\n color: ${colors.text.subtle};\n font-weight: 600;\n resize: vertical;\n`;\n\nexport const Textarea = ({\n name,\n onChange,\n rows = 3,\n ...rest\n}: TextareaProps) => {\n return (\n <StyledTextarea name={name} onChange={onChange} rows={rows} {...rest} />\n );\n};\n\nTextarea.types = InputTypes;\n","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst bgVariants = ['primary', 'secondary', 'tertiary', 'subtle', 'blue', 'brand', 'light', 'transparent'] as const;\nconst textVariants = ['brand', 'primary', 'secondary', 'tertiary', 'subtle', 'light', 'error', 'blue'] as const;\n\ntype BgVariant = (typeof bgVariants)[number];\ntype TextVariant = (typeof textVariants)[number];\n\nconst StyledContainer = styled.button<{ \n as?: 'button' | 'div';\n bgVariant: BgVariant;\n}>`\n padding: 0 1rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n flex-shrink:0;\n white-space: nowrap;\n background-color: ${(props) => {\n if (props.bgVariant === 'transparent') return 'transparent';\n return colors.background[props.bgVariant];\n }};\n transition: all 0.2s;\n border: none;\n cursor: pointer;\n\n &:hover {\n opacity: 0.9;\n }\n`;\n\nconst StyledText = styled.span<{ \n textVariant: TextVariant;\n $uppercase?: boolean;\n $bold?: boolean;\n}>`\n color: ${(props) => colors.text[props.textVariant]};\n font-size: 0.75rem;\n letter-spacing: 0.05em;\n text-transform: ${props => props.$uppercase ? 'uppercase' : 'none'};\n font-weight: ${props => props.$bold ? 700 : 600};\n`;\n\ninterface TextButtonProps {\n text: string;\n onClick?: () => void;\n asChild?: boolean;\n bgVariant?: BgVariant;\n textVariant?: TextVariant;\n uppercase?: boolean;\n bold?: boolean;\n}\n\nexport const TextButton = ({ \n text,\n onClick,\n asChild = false,\n bgVariant = 'brand',\n textVariant = 'secondary',\n uppercase = true,\n bold = false\n}: TextButtonProps) => {\n return (\n <StyledContainer \n as={asChild ? 'div' : 'button'}\n onClick={onClick}\n bgVariant={bgVariant}\n >\n <StyledText textVariant={textVariant} $uppercase={uppercase} $bold={bold}>\n {text}\n </StyledText>\n </StyledContainer>\n );\n};\n\nTextButton.bgVariants = bgVariants;\nTextButton.textVariants = textVariants;","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle'] as const;\ntype Variant = (typeof variants)[number];\n\nconst ToggleContainer = styled.div<{ variant: Variant }>`\n display: inline-flex;\n background-color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.background.secondary;\n case 'secondary':\n return colors.background.light;\n case 'subtle':\n return colors.background.subtle;\n default:\n return colors.background.secondary;\n }\n }};\n border-radius: 9999px;\n padding: 0.25rem;\n gap: 0.25rem;\n`;\n\nconst ToggleOption = styled.button<{ \n $isActive: boolean; \n variant: Variant;\n}>`\n padding: 0.5rem 1.5rem;\n border-radius: 9999px;\n border: none;\n font-size: 0.875rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n \n background-color: ${props => {\n if (!props.$isActive) return 'transparent';\n \n switch (props.variant) {\n case 'primary':\n return colors.background.brand;\n case 'secondary':\n return colors.background.blue;\n case 'subtle':\n return colors.background.subtle;\n default:\n return colors.background.brand;\n }\n }};\n \n color: ${props => {\n if (props.$isActive) {\n return colors.text.secondary; \n }\n \n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }};\n\n &:hover {\n opacity: ${props => props.$isActive ? 1 : 0.7};\n }\n`;\n\ninterface ToggleButtonProps {\n options: string[];\n activeOption: string;\n onChange: (option: string) => void;\n variant?: Variant;\n}\n\nexport const ToggleButton = ({\n options,\n activeOption,\n onChange,\n variant = 'primary',\n}: ToggleButtonProps) => {\n return (\n <ToggleContainer variant={variant}>\n {options.map((option) => (\n <ToggleOption\n key={option}\n $isActive={activeOption === option}\n variant={variant}\n onClick={() => onChange(option)}\n >\n {option}\n </ToggleOption>\n ))}\n </ToggleContainer>\n );\n};\n\nToggleButton.variants = variants;","import { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { Label } from '../../atoms';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\nconst variants = ['outline', 'none'] as const;\ninterface InputContainerProps {\n error?: string;\n children: ReactNode;\n variant?: (typeof variants)[number];\n}\n\nconst Container = styled.div`\n width: 100%;\n`;\n\nconst InnerContainer = styled.div<\n Pick<InputContainerProps, 'error' | 'variant'>\n>`\n position: relative;\n width: 100%;\n min-height: 58px;\n display: flex;\n align-items: center;\n\n border-style: solid;\n border-width: ${(props) => (props?.variant === 'outline' ? sizes[0] : '0px')};\n border-color: ${(props) =>\n props?.error ? colors.border.error : colors.border.active};\n border-radius: ${radii.lg};\n\n padding: ${spaces[3]} ${spaces[3]} ${spaces[2]};\n\n &:hover {\n border-color: ${colors.border.hover};\n cursor: text;\n }\n\n &:focus-within {\n border-color: ${colors.border.focus};\n }\n`;\n\nexport const InputContainer = ({\n error,\n children,\n variant = 'outline',\n}: InputContainerProps) => {\n return (\n <Container>\n <InnerContainer error={error} variant={variant}>\n {children}\n </InnerContainer>\n {typeof error === 'string' && <Label value={error} color=\"error\" />}\n </Container>\n );\n};\n","import { useMemo } from 'react';\nimport styled from 'styled-components';\nimport { FloatingLabel } from '../../atoms/Label/Label';\nimport { colors } from '../../tokens/colors';\nimport { Option } from '../../types';\nimport { InputContainer } from '../InputContainer/InputContainer';\n\ninterface DropdownProps<T> {\n options: Option<T>[];\n value?: T;\n onChange: (value: T) => void;\n label?: string;\n error?: string;\n name: string;\n placeholder?: string;\n disabled?: boolean;\n}\n\nconst Select = styled.select<{ isInvalid: boolean }>`\n width: 100%;\n color: ${colors.text.subtle};\n background: transparent;\n font-weight: 600;\n border: none;\n outline: none;\n padding: 0;\n margin: 0;\n\n &:focus,\n &:active,\n &:hover {\n border: none;\n outline: none;\n box-shadow: none;\n }\n\n &:invalid {\n color: ${colors.text.subtle};\n }\n`;\n\nconst OptionItem = styled.option`\n color: ${(props) =>\n props.disabled ? colors.text.light : colors.text.subtle};\n`;\n\nexport const Dropdown = <T extends string | number>({\n error,\n onChange,\n options,\n value,\n label,\n name,\n placeholder = 'Select an option',\n disabled,\n}: DropdownProps<T>) => {\n const isInvalid = useMemo(\n () => error ? typeof error === 'string' && error?.length > 0 : false,\n [error],\n );\n\n return (\n <InputContainer error={error}>\n {typeof label === 'string' && (\n <FloatingLabel\n value={label}\n color={isInvalid ? 'error' : 'subtle'}\n fontWeight=\"600\"\n />\n )}\n <Select\n name={name}\n value={value ?? ''}\n onChange={(e) => onChange(e.target.value as T)}\n isInvalid={isInvalid}\n disabled={disabled}\n >\n <OptionItem value=\"\" disabled hidden>\n {placeholder}\n </OptionItem>\n {options.map((option) => (\n <OptionItem key={option.value} value={option.value}>\n {option.label}\n </OptionItem>\n ))}\n </Select>\n </InputContainer>\n );\n};\n","'use client';\n\nimport { Dropdown } from '../../molecules/Dropdown/Dropdown';\nimport { Option } from '../../types';\n\ninterface FilterProps<T extends string | number> {\n name: string;\n label?: string;\n options: Option<T>[];\n value: T;\n onChange: (value: T) => void;\n placeholder?: string;\n}\n\nexport function Filter<T extends string | number>({\n name,\n label,\n options,\n value,\n onChange,\n placeholder = 'Filter by User',\n}: FilterProps<T>) {\n return (\n <Dropdown\n name={name}\n label={label}\n options={options}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n />\n );\n}\n","import Link from 'next/link';\nimport { tv } from 'tailwind-variants';\nimport { MenuItem, MenuSubItem } from '../types/menuItem';\n\ninterface Props {\n direction: 'horizontal' | 'vertical';\n items: MenuItem[];\n selected?: string;\n}\n\nexport default function NavMenu({ direction, items, selected = '' }: Props) {\n const containerStyle = tv({\n base: 'flex',\n variants: {\n direction: {\n vertical: 'flex-col',\n horizontal: 'flex-row',\n },\n },\n defaultVariants: {\n direction: 'horizontal',\n },\n });\n\n return (\n <ul className={containerStyle({ direction })}>\n {items.map((item: MenuItem, i: number) => (\n <li\n key={i}\n className=\"mb-2 max-h-10 hover:max-h-400 transition-all overflow-hidden duration-500\"\n >\n <Link\n href={item.link || ''}\n className={` ${item.link == selected ? 'font-bold text-gray-100' : 'font-semibold text-gray-200'} flex mb-2 py-3 px-4 items-center justify-between text-sm rounded-2xl hover:underline hover:font-bold transition duration-200`}\n >\n <div className=\"flex items-center gap-2\">\n {item.icon && item.icon}\n <span>{item.title}</span>\n </div>\n {item.items && (\n <span className=\"transform\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={20}\n height={20}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M15.1746 10.1204C15.3843 9.94067 15.6999 9.96495 15.8796 10.1746C16.0593 10.3843 16.0351 10.6999 15.8254 10.8796L12.3254 13.8796C12.1382 14.0401 11.8619 14.0401 11.6746 13.8796L8.17461 10.8796C7.96495 10.6999 7.94067 10.3843 8.12038 10.1746C8.30009 9.96495 8.61574 9.94067 8.8254 10.1204L12 12.8415L15.1746 10.1204Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n )}\n </Link>\n <div>\n {item.items && (\n <ul className=\"pl-8 p-4 rounded-md\">\n {item.items.map((subItem: MenuSubItem, i: number) => (\n <li key={i} className=\"mb-2\">\n <Link\n href={subItem.link || '#'}\n className=\"flex mb-2 py-3 px-4 items-center text-gray-300 font-semibold text-xs rounded-2xl hover:underline hover:font-bold hover:text-gray-800 transition duration-200\"\n >\n {subItem.icon && (\n <span\n className=\"mr-2\"\n dangerouslySetInnerHTML={{ __html: subItem.icon }}\n ></span>\n )}\n <span>{subItem.title}</span>\n </Link>\n </li>\n ))}\n </ul>\n )}\n </div>\n </li>\n ))}\n </ul>\n );\n}\n","import { ChangeEvent, useEffect, useState } from 'react';\n\ninterface SearchProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n delay?: number;\n}\n\nexport const Search = ({\n value,\n onChange,\n placeholder = 'Search...',\n delay = 1000,\n}: SearchProps) => {\n const [searchTerm, setSearchTerm] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n onChange(searchTerm);\n }, delay);\n\n return () => clearTimeout(handler);\n }, [searchTerm, delay, onChange]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setSearchTerm(e.target.value);\n };\n\n return (\n <input\n type=\"text\"\n value={searchTerm}\n onChange={handleChange}\n placeholder={placeholder}\n className=\"border border-gray-300 rounded-md px-4 py-2 w-64 text-sm text-gray-900 placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n aria-label={placeholder}\n />\n );\n};\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { OrderType } from '../../types/orderType';\n\ninterface SortByProps {\n value: OrderType;\n onChange: (value: OrderType) => void;\n}\n\nconst Options: { value: OrderType; label: string }[] = [\n {\n value: 'desc',\n label: 'Sort by: Newest',\n },\n {\n value: 'asc',\n label: 'Sort by: Oldest',\n },\n];\n\nexport const SortBy = ({ value, onChange }: SortByProps) => {\n const [selected, setSelected] = useState<OrderType>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n onChange(selected);\n });\n return () => clearTimeout(handler);\n }, [selected, onChange]);\n\n return (\n <select\n value={selected}\n onChange={(e) => setSelected(e.target.value as OrderType)}\n className=\"border border-gray-300 rounded-md px-4 py-2 w-48 text-sm text-gray-900 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n >\n {Options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n","'use client';\n\ninterface SpinnerProps {\n height?: `${number}px`;\n width?: `${number}px`;\n}\n\nexport default function Spinner(props: SpinnerProps) {\n return (\n <>\n <svg\n aria-hidden=\"true\"\n className=\"w-8 h-8 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600\"\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n fill=\"currentFill\"\n />\n </svg>\n </>\n );\n}\n","import {\n Button,\n Dialog as DefaultDialog,\n DialogPanel,\n DialogTitle,\n Transition,\n} from \"@headlessui/react\";\nimport { Fragment, ReactNode } from \"react\";\n\ninterface MyModalProps {\n open: boolean;\n onClose: () => void;\n children?: ReactNode;\n title?: string;\n buttonText?: string;\n buttonHandler?: () => void;\n secondaryText?: string;\n secondaryHandler?: () => void;\n}\n\nexport const Dialog = ({\n open,\n onClose,\n children,\n title = \"Payment successful\",\n buttonText = \"Continue\",\n buttonHandler,\n secondaryText,\n secondaryHandler,\n}: MyModalProps) => {\n return (\n <Transition appear show={open} as={Fragment}>\n <DefaultDialog\n open={open}\n as=\"div\"\n className=\"relative z-10 focus:outline-none\"\n onClose={onClose}\n __demoMode\n >\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n leave=\"ease-in duration-500\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 bg-black/30\" />\n </Transition.Child>\n <div className=\"fixed inset-0 z-10 w-screen overflow-y-auto\">\n <div className=\"flex min-h-full items-center justify-center p-4\">\n <DialogPanel\n transition\n className=\"w-full max-w-md rounded-lg bg-white dark:bg-white/5 p-6 backdrop-blur-1xl duration-300 ease-out\"\n style={{ maxWidth: \"515px\" }}\n >\n <div className=\"flex justify-between items-center mb-2\">\n <DialogTitle\n as=\"h3\"\n className=\"text-2xl pb-3 font-bold dark:text-white text-center w-full\"\n >\n {title}\n </DialogTitle>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"text-gray-300 hover:text-gray-300 text-xl font-bold focus:outline-none px-2\"\n style={{ lineHeight: 1 }}\n >\n ×\n </button>\n </div>\n {children}\n <div\n className={`${\n secondaryHandler && secondaryText\n ? \"flex justify-center mt-4 gap-4\"\n : \"mt-4\"\n }`}\n >\n {buttonHandler && (\n <Button\n className=\"inline-flex items-center gap-2 rounded-md bg-gray-700 px-3 py-1.5 text-sm/6 font-semibold text-white shadow-inner shadow-white/10 focus:not-data-focus:outline-none data-focus:outline data-focus:outline-white data-hover:bg-gray-600 data-open:bg-gray-700\"\n onClick={buttonHandler}\n >\n {buttonText}\n </Button>\n )}\n {secondaryHandler && secondaryText && (\n <Button\n className=\"bg-gray-200 text-gray-800 px-4 py-2 w-24 rounded hover:bg-gray-300\"\n onClick={secondaryHandler}\n >\n {secondaryText}\n </Button>\n )}\n </div>\n </DialogPanel>\n </div>\n </div>\n </DefaultDialog>\n </Transition>\n );\n}\n","'use client';\n\nimport Link from 'next/link';\nimport {\n ClockIcon,\n HomeIcon,\n TrashIcon,\n} from 'property-practice-icons';\nimport { useEffect, useMemo, useState } from 'react';\nimport { tv } from 'tailwind-variants';\nimport { Dialog } from '../Dialog/Dialog';\nimport { TableHeaderConfig } from '../Table/Table';\n\ntype PaginationOptionsType = {\n perPage?: 10 | 25 | 50 | 100;\n};\n\ninterface TableRowItem {\n id: string;\n [key: string]: any;\n}\n\nexport interface TableRowProps {\n data: TableRowItem[];\n headers: TableHeaderConfig[];\n paginationOptions?: PaginationOptionsType;\n onDelete?: (id: string) => void;\n variant?: 'Primary' | 'Secondary';\n}\n\nconst itemContainer = tv({\n base: 'rounded-2xl mb-2 px-8 py-3 flex flex-wrap items-center justify-between gap-4',\n variants: {\n variant: {\n Primary: 'border border-gray-200',\n Secondary: 'border-none',\n },\n },\n defaultVariants: {\n variant: 'Primary',\n },\n});\n\nconst formatDate = (value: string | Date) => {\n const date = new Date(value);\n return date.toLocaleString('default', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour12: false,\n hour: 'numeric',\n minute: 'numeric',\n });\n};\n\nconst getStatusBadge = (status: string, transactionType?: string) => {\n const base = 'px-3 rounded-xl py-1 text-gray-400 text-xs font-bold uppercase';\n switch (status) {\n case 'DRAFT':\n return <span className={`${base} bg-purple-400`}>Draft</span>;\n case 'PENDING':\n return (\n <span className={`${base} bg-yellow-200`}>\n {transactionType?.toUpperCase() === 'LEASE'\n ? 'Awaiting Lessor Information'\n : 'Awaiting Seller Information'}\n </span>\n );\n case 'ACTIVE':\n return <span className={`${base} bg-blue-400`}>Active</span>;\n case 'FINALISED':\n return <span className={`${base} bg-green-400`}>Finalised</span>;\n case 'ARCHIVED':\n return <span className={`${base} bg-red-400`}>Archived</span>;\n default:\n return <span className={`${base} bg-gray-200`}>{status}</span>;\n }\n};\n\nconst RowCell = ({\n header,\n item,\n}: {\n header: TableHeaderConfig;\n item: TableRowItem;\n}) => (\n <div className=\"flex-1 min-w-[120px]\">\n <p className=\"font-semibold text-gray-300 text-sm tracking-wide flex items-center gap-1\">\n {header.filterAccessor === 'status' && <ClockIcon />}\n {header.heading}\n </p>\n <p className=\"text-base font-medium text-gray-400 flex items-center gap-1\">\n {header.filterAccessor === 'formattedAddress' && <HomeIcon />}\n {header.filterAccessor === 'formattedAddress' ? (\n <span className=\"break-words max-w-[200px] block\">\n {item[header.filterAccessor]}\n </span>\n ) : header.filterAccessor === 'status' ? (\n getStatusBadge(item[header.filterAccessor], item.transactionType)\n ) : header.filterAccessor === 'createdAt' ? (\n formatDate(item[header.filterAccessor])\n ) : header.filterAccessor === '-' ? (\n '-'\n ) : (\n item[header.filterAccessor]\n )}\n </p>\n </div>\n);\n\nconst DeleteDialog = ({\n open,\n onClose,\n onConfirm,\n isDeleting,\n}: {\n open: boolean;\n onClose: () => void;\n onConfirm: () => void;\n isDeleting: boolean;\n}) => (\n <Dialog\n open={open}\n onClose={onClose}\n title=\"Delete Transaction\"\n buttonText={isDeleting ? 'Deleting...' : 'Confirm'}\n buttonHandler={onConfirm}\n secondaryText=\"Cancel\"\n secondaryHandler={onClose}\n >\n <div className=\"flex flex-col items-center text-center\">\n <TrashIcon />\n <p className=\"text-sm text-gray-600 mb-4\">\n Are you sure you want to delete this transaction? This will remove the\n property from the list (soft delete).\n </p>\n </div>\n </Dialog>\n);\n\nexport const TableRow = ({\n data,\n headers,\n paginationOptions = {},\n onDelete,\n variant = 'Primary',\n}: TableRowProps) => {\n const [perPage, setPerPage] = useState<number>(\n paginationOptions.perPage ?? 10,\n );\n const [page, setPage] = useState(0);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [selectedTransactionId, setSelectedTransactionId] = useState<\n string | null\n >(null);\n const [isDeleting, setIsDeleting] = useState(false);\n\n const totalPages = useMemo(\n () => Math.ceil(data.length / perPage),\n [data, perPage],\n );\n const paginatedData = useMemo(\n () => data.slice(page * perPage, (page + 1) * perPage),\n [data, page, perPage],\n );\n\n useEffect(() => {\n if (paginationOptions.perPage) {\n setPerPage(paginationOptions.perPage);\n }\n setPage(0);\n }, [paginationOptions.perPage, data]);\n\n const confirmDelete = async () => {\n if (!selectedTransactionId || !onDelete) return;\n setIsDeleting(true);\n try {\n onDelete(selectedTransactionId);\n setIsDialogOpen(false);\n setSelectedTransactionId(null);\n } catch {\n alert('Failed to delete transaction. Please try again.');\n } finally {\n setIsDeleting(false);\n }\n };\n\n const handlePrevPage = () => {\n if (page > 0) setPage(page - 1);\n };\n\n const handleNextPage = () => {\n if (page < totalPages - 1) setPage(page + 1);\n };\n\n const handleRowsPerPageChange = (value: number) => {\n setPerPage(value);\n setPage(0);\n };\n\n return (\n <div className=\"flex flex-col\">\n {paginatedData.map((item, idx) => (\n <div\n key={item.id}\n className={`${itemContainer({ variant })} ${idx % 2 === 0 ? 'bg-gray-50 dark:bg-gray-600' : ''}`}\n >\n {headers.map((header) => (\n <RowCell key={header.filterAccessor} header={header} item={item} />\n ))}\n\n <div className=\"flex flex-col items-start gap-1\">\n <p className=\"font-semibold text-[#033c89] text-sm tracking-wide\">\n <Link\n href={`${item.url}`}\n className=\"text-[#033c89] hover:underline\"\n >\n View Details\n </Link>\n </p>\n {onDelete && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n setSelectedTransactionId(item.id);\n setIsDialogOpen(true);\n }}\n className=\"flex items-center gap-1 text-red-500 hover:text-red-700\"\n >\n <TrashIcon />\n <span className=\"text-sm font-medium\">Delete</span>\n </button>\n )}\n </div>\n </div>\n ))}\n\n <div className=\"flex flex-wrap items-center px-6 pt-8 border-t border-gray-400\">\n <div className=\"w-full sm:w-auto mb-4 sm:mb-0 mr-auto\">\n <div className=\"flex items-center gap-2\">\n <button\n disabled\n className=\"flex items-center justify-center h-6 w-11 bg-gray-100 dark:bg-gray-600 rounded-full\"\n >\n <div className=\"h-5 w-5 rounded-full dark:bg-gray-400 bg-gray-50\" />\n <div className=\"h-5 w-5 rounded-full bg-transparent\" />\n </button>\n <span className=\"text-sm text-gray-200 dark:text-gray-400 font-medium\">\n Dense\n </span>\n </div>\n </div>\n <div className=\"w-full sm:w-auto mb-6 sm:mb-0 sm:mr-6\">\n <div className=\"flex items-center justify-end ml-auto\">\n <div className=\"sm:mr-8 flex items-center gap-2\">\n <span className=\"text-sm text-gray-400 font-medium\">\n Rows per page\n </span>\n <select\n value={perPage}\n onChange={(e) =>\n handleRowsPerPageChange(Number(e.target.value))\n }\n className=\"text-sm text-gray-200 font-medium bg-transparent outline-none\"\n >\n {[5, 10, 20].map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n <span className=\"hidden sm:inline text-sm text-gray-400 font-medium\">\n {page * perPage + 1}-\n {Math.min((page + 1) * perPage, data.length)} of {data.length}\n </span>\n </div>\n </div>\n </div>\n <div className=\"w-full sm:w-auto mb-6 sm:mb-0\">\n <div className=\"flex items-center justify-end\">\n <a\n onClick={(e) => {\n e.preventDefault();\n handlePrevPage();\n }}\n className={`inline-flex items-center justify-center h-8 w-12 p-1 mr-3 text-xs font-semibold rounded-lg transition duration-200 ${\n page === 0\n ? 'bg-gray-600 text-gray-400 cursor-not-allowed'\n : 'text-gray-400 bg-gray-600 hover:bg-gray-700'\n }`}\n href=\"#\"\n >\n <svg\n width={6}\n height={8}\n viewBox=\"0 0 6 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.52655 3.99988L4.88655 1.63988C5.01072 1.51498 5.08041 1.34601 5.08041 1.16988C5.08041 0.993761 5.01072 0.824793 4.88655 0.699884C4.82457 0.637399 4.75084 0.587802 4.6696 0.553957C4.58836 0.520111 4.50122 0.502686 4.41321 0.502686C4.32521 0.502686 4.23807 0.520111 4.15683 0.553957C4.07559 0.587802 4.00186 0.637399 3.93988 0.699884L1.11321 3.52655C1.05073 3.58853 1.00113 3.66226 0.967287 3.7435C0.933441 3.82474 0.916016 3.91188 0.916016 3.99988C0.916016 4.08789 0.933441 4.17503 0.967287 4.25627C1.00113 4.33751 1.05073 4.41124 1.11321 4.47322L3.93988 7.33322C4.00217 7.39501 4.07605 7.44389 4.15728 7.47707C4.2385 7.51024 4.32548 7.52706 4.41321 7.52655C4.50095 7.52706 4.58793 7.51024 4.66915 7.47707C4.75038 7.44389 4.82425 7.39501 4.88655 7.33322C5.01072 7.20831 5.08041 7.03934 5.08041 6.86322C5.08041 6.68709 5.01072 6.51813 4.88655 6.39322L2.52655 3.99988Z\"\n fill=\"#919EB0\"\n />\n </svg>\n </a>\n\n <a\n onClick={(e) => {\n e.preventDefault();\n handleNextPage();\n }}\n className={`inline-flex items-center justify-center h-8 w-12 p-1 text-xs font-semibold rounded-lg transition duration-200 ${\n page >= totalPages - 1 || totalPages === 0\n ? 'bg-blue-500 text-blue-100 cursor-not-allowed'\n : 'bg-[#033c89] text-blue-50 hover:bg-blue-600'\n }`}\n href=\"#\"\n >\n <svg\n width={6}\n height={10}\n viewBox=\"0 0 6 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.36015 4.52661L1.58682 0.759943C1.52484 0.697457 1.45111 0.647861 1.36987 0.614016C1.28863 0.58017 1.20149 0.562744 1.11348 0.562744C1.02548 0.562744 0.938339 0.58017 0.8571 0.614016C0.77586 0.647861 0.702126 0.697457 0.640151 0.759943C0.515983 0.884851 0.446289 1.05382 0.446289 1.22994C0.446289 1.40607 0.515983 1.57503 0.640151 1.69994L3.94015 5.03328L0.640151 8.33328C0.515983 8.45818 0.446289 8.62715 0.446289 8.80328C0.446289 8.9794 0.515983 9.14837 0.640151 9.27328C0.701894 9.33627 0.775524 9.38638 0.856774 9.42071C0.938024 9.45504 1.02528 9.47291 1.11348 9.47328C1.20169 9.47291 1.28894 9.45504 1.37019 9.42071C1.45144 9.38638 1.52507 9.33627 1.58682 9.27328L5.36015 5.50661C5.42782 5.44418 5.48183 5.36841 5.51876 5.28408C5.5557 5.19975 5.57477 5.10868 5.57477 5.01661C5.57477 4.92454 5.5557 4.83347 5.51876 4.74914C5.48183 4.66481 5.42782 4.58904 5.36015 4.52661Z\"\n fill=\"#F4F6FF\"\n />\n </svg>\n </a>\n </div>\n </div>\n </div>\n <DeleteDialog\n open={isDialogOpen}\n onClose={() => setIsDialogOpen(false)}\n onConfirm={confirmDelete}\n isDeleting={isDeleting}\n />\n </div>\n );\n};\n","import { useMemo } from 'react';\nimport { TableRow } from '../TableRow/TableRow';\n\nexport type TableHeaderConfig = {\n heading: string;\n filterAccessor: string;\n};\n\ninterface TableProps {\n data: any;\n headers: TableHeaderConfig[];\n onDelete?: (id: string) => void;\n}\n\nexport const Table = ({ data, headers, onDelete }: TableProps) => {\n const isNotempty = useMemo(() => data?.length > 0, [data]);\n\n return (\n <div className=\"overflow-x-auto\">\n <div className=\"w-full border-collapse\">\n <TableRow data={data} headers={headers} onDelete={onDelete} />\n </div>\n </div>\n );\n};\n","'use client';\n\nimport { ReactElement, useMemo } from 'react';\nimport { Table, TableHeaderConfig } from '../Table/Table';\n\ninterface TableInnerProps {\n data?: any[];\n headers: TableHeaderConfig[];\n renderOnEmpty?: ReactElement | null;\n onDelete?: (id: string) => void;\n}\n\nexport const TableInner = ({\n data = [],\n headers = [],\n renderOnEmpty = null,\n onDelete,\n}: TableInnerProps) => {\n const isNotEmpty = useMemo(() => data.length > 0, [data]);\n\n return (\n <>\n <Table data={data} headers={headers} onDelete={onDelete} />\n {!isNotEmpty && renderOnEmpty}\n </>\n );\n};\n","import { tv } from 'tailwind-variants';\nimport type { TableListItemType } from '../types/tableListItem';\n\nconst itemContainer = tv({\n base: 'rounded-2xl mb-2 px-8 py-3 flex flex-wrap items-center justify-between gap-4',\n variants: {\n variant: {\n Primary: 'border border-gray-200',\n Secondary: 'border-none',\n },\n },\n defaultVariants: {\n variant: 'Primary',\n },\n});\n\ninterface Props {\n item: TableListItemType;\n variant?: 'Primary' | 'Secondary';\n alt?: boolean;\n selectItemHandler?: () => void;\n}\nexport default function TableListItem({\n item,\n selectItemHandler,\n variant = 'Primary',\n alt = false,\n}: Props & { variant?: 'Primary' | 'Secondary' }) {\n const dateTimeFormatter = (value: Date): string => {\n const date = new Date(value);\n return date.toLocaleString('default', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour12: false,\n hour: 'numeric',\n minute: 'numeric',\n });\n };\n\n const statusDisplay = (status: string) => {\n switch (status) {\n case 'DRAFT':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-purple-400 text-gray-400 text-xs font-bold uppercase\">\n Draft\n </span>\n );\n case 'PENDING':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-yellow-200 text-gray-400 text-xs font-bold uppercase\">\n Pending\n </span>\n );\n case 'ACTIVE':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-blue-400 text-gray-400 text-xs font-bold uppercase\">\n Active\n </span>\n );\n case 'FINALISED':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-green-400 text-gray-400 text-xs font-bold uppercase\">\n Finalised\n </span>\n );\n case 'ARCHIVED':\n return (\n <span className=\"px-3 rounded-xl py-1 bg-red-400 text-gray-400 text-xs font-bold uppercase\">\n Archived\n </span>\n );\n default:\n return (\n <span className=\"px-3 rounded-xl py-1 bg-gray-200 text-gray-400 text-xs font-bold uppercase\">\n {status}\n </span>\n );\n }\n };\n\n return (\n <div\n className={`${itemContainer({ variant })} ${alt ? 'bg-gray-50 dark:bg-gray-600' : ''}`}\n >\n <div className=\"flex flex-col gap-2 w-52\">\n <p className=\"font-semibold text-gray-300 text-sm -tracking-widest\">\n Title\n </p>\n <div className=\"flex flex-row items-center\">\n <div className=\"p-5 mr-2 inline-flex rounded-2xl\">\n <svg\n className=\"w-4 h-4\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.5 14H3.49951C3.3669 14 3.23973 13.9473 3.14596 13.8536C3.05219 13.7598 2.99951 13.6326 2.99951 13.5V2.5C2.99951 2.36739 3.05219 2.24021 3.14596 2.14645C3.23973 2.05268 3.3669 2 3.49951 2H9.5L13 5.5V13.5C13 13.5657 12.9871 13.6307 12.9619 13.6913C12.9368 13.752 12.9 13.8071 12.8536 13.8536C12.8071 13.9 12.752 13.9368 12.6913 13.9619C12.6307 13.9871 12.5657 14 12.5 14Z\"\n stroke=\"#2796CE\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n <path\n d=\"M9.5 2V5.5H13.0005\"\n stroke=\"#2796CE\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n <path\n d=\"M6.5 9.5H9.5\"\n stroke=\"#2796CE\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n ></path>\n </svg>\n </div>\n <p className=\"text-gray-300 font-semibold w-xs text-sm grow\">\n {item.title}\n </p>\n </div>\n </div>\n {item.status && (\n <div className=\"flex flex-col items-end gap-2\">\n <p className=\"font-semibold text-gray-300 text-sm -tracking-widest\">\n Status\n </p>\n {statusDisplay(item.status)}\n </div>\n )}\n <div className=\"text-gray-300 text-sm\">\n {/* <p className=\"font-semibold text-gray-300 text-sm -tracking-widest\">Date</p> */}\n {dateTimeFormatter(item.date)}\n </div>\n {item.type && (\n <div className=\"text-gray-300 text-sm\">\n {/* <p className=\"font-semibold text-gray-300 text-sm -tracking-widest\">Type</p> */}\n {item.type}\n </div>\n )}\n {/* <p className=\"text-gray-300 text-sm w-28\">{item.address.city}</p>\n <a className=\"inline-block\" href=\"#\" onClick={selectItemHandler}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13.5 11.5C14.3284 11.5 15 10.8284 15 10C15 9.17157 14.3284 8.5 13.5 8.5C12.6716 8.5 12 9.17157 12 10C12 10.8284 12.6716 11.5 13.5 11.5Z\" fill=\"#7A899B\"></path>\n <path d=\"M6.5 11.5C7.32843 11.5 8 10.8284 8 10C8 9.17157 7.32843 8.5 6.5 8.5C5.67157 8.5 5 9.17157 5 10C5 10.8284 5.67157 11.5 6.5 11.5Z\" fill=\"#7A899B\"></path>\n </svg>\n </a> */}\n <a\n className=\"inline-flex h-9 p-3 mr-2 items-center cursor-pointer justify-center bg-gray-700 hover:bg-gray-700 rounded-lg transition duration-200\"\n href={item.url}\n onClick={selectItemHandler ? () => selectItemHandler() : undefined}\n >\n <svg\n width=\"14\"\n height=\"15\"\n viewBox=\"0 0 14 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.0002 7.50012C12.8234 7.50012 12.6538 7.57036 12.5288 7.69538C12.4037 7.82041 12.3335 7.98998 12.3335 8.16679V12.1668C12.3335 12.3436 12.2633 12.5132 12.1382 12.6382C12.0132 12.7632 11.8436 12.8335 11.6668 12.8335H2.3335C2.15669 12.8335 1.98712 12.7632 1.86209 12.6382C1.73707 12.5132 1.66683 12.3436 1.66683 12.1668V2.83346C1.66683 2.65664 1.73707 2.48708 1.86209 2.36205C1.98712 2.23703 2.15669 2.16679 2.3335 2.16679H6.3335C6.51031 2.16679 6.67988 2.09655 6.8049 1.97153C6.92992 1.8465 7.00016 1.67693 7.00016 1.50012C7.00016 1.32331 6.92992 1.15374 6.8049 1.02872C6.67988 0.903693 6.51031 0.833455 6.3335 0.833455H2.3335C1.80306 0.833455 1.29436 1.04417 0.919283 1.41924C0.54421 1.79431 0.333496 2.30302 0.333496 2.83346V12.1668C0.333496 12.6972 0.54421 13.2059 0.919283 13.581C1.29436 13.9561 1.80306 14.1668 2.3335 14.1668H11.6668C12.1973 14.1668 12.706 13.9561 13.081 13.581C13.4561 13.2059 13.6668 12.6972 13.6668 12.1668V8.16679C13.6668 7.98998 13.5966 7.82041 13.4716 7.69538C13.3465 7.57036 13.177 7.50012 13.0002 7.50012ZM3.00016 8.00679V10.8335C3.00016 11.0103 3.0704 11.1798 3.19543 11.3049C3.32045 11.4299 3.49002 11.5001 3.66683 11.5001H6.4935C6.58123 11.5006 6.66821 11.4838 6.74943 11.4506C6.83066 11.4175 6.90454 11.3686 6.96683 11.3068L11.5802 6.68679L13.4735 4.83346C13.536 4.77148 13.5856 4.69775 13.6194 4.61651C13.6533 4.53527 13.6707 4.44813 13.6707 4.36012C13.6707 4.27211 13.6533 4.18498 13.6194 4.10374C13.5856 4.0225 13.536 3.94876 13.4735 3.88679L10.6468 1.02679C10.5849 0.964303 10.5111 0.914707 10.4299 0.880861C10.3486 0.847015 10.2615 0.82959 10.1735 0.82959C10.0855 0.82959 9.99835 0.847015 9.91711 0.880861C9.83587 0.914707 9.76214 0.964303 9.70016 1.02679L7.82016 2.91346L3.1935 7.53346C3.13171 7.59575 3.08283 7.66963 3.04965 7.75085C3.01647 7.83208 2.99966 7.91905 3.00016 8.00679ZM10.1735 2.44012L12.0602 4.32679L11.1135 5.27346L9.22683 3.38679L10.1735 2.44012ZM4.3335 8.28012L8.28683 4.32679L10.1735 6.21346L6.22016 10.1668H4.3335V8.28012Z\"\n fill=\"#3D485B\"\n ></path>\n </svg>\n <span className=\"ml-2 text-xs text-gray-200 font-semibold\">View</span>\n </a>\n </div>\n );\n}\n\ninterface HeadersProps {\n headers: string[];\n variant?: 'Primary' | 'Secondary';\n}\nexport function TableHeader({\n headers,\n variant = 'Primary',\n}: HeadersProps & { variant?: 'Primary' | 'Secondary' }) {\n return (\n <div\n className={`${itemContainer({ variant })} bg-[#033c89] dark:bg-gray-800`}\n >\n {headers.map((item, i) => (\n <div className={`flex items-center ${i == 0 ? 'w-52' : ''}`} key={i}>\n <p className=\"text-gray-300 font-bold w-xs text-sm\">{item}</p>\n </div>\n ))}\n </div>\n );\n}\n","import { Option } from '../../types';\n\ninterface TabsProps <T>{\n value: T\n onTabChange: (tab: T) => void;\n options: Option<T>[]\n}\n\nexport const Tabs = <T extends string | number>({\n value: tabValue,\n onTabChange,\n options\n}: TabsProps<T>) => {\n\n const handleTabChange = (newTab: T) => {\n onTabChange(newTab);\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <div className=\"px-4 border-b border-gray-300 bg-white\">\n <div className=\"flex gap-x-10 py-3\">\n {options.map(({label, value}) => (\n <button\n key={value}\n type=\"button\"\n onClick={() => handleTabChange(value)}\n className={`text-base font-semibold cursor-pointer px-6 py-2 rounded-t-lg border-b-4 transition-colors duration-200 ${\n tabValue === value\n ? 'border-blue-600 text-[#033c89]'\n : 'border-transparent text-gray-400 dark:text-[#033c89]'\n }`}\n >\n {label}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n};\n","import { useEffect } from 'react';\nimport { tv } from 'tailwind-variants';\nimport { ToastType } from '../types/toast';\n\ninterface Props {\n visible?: boolean;\n setVisible?: (visible: boolean) => void;\n duration?: number | null;\n type: ToastType;\n message?: string;\n onClear?: () => void;\n}\n\nconst toastVariants = tv({\n base: 'z-[100] fixed left-0 bottom-0 p-4 transition-all duration-500 transform',\n variants: {\n show: {\n true: 'translate-x-0',\n false: '-translate-x-full',\n },\n },\n});\n\nconst containerVariants = tv({\n base: 'rounded-lg shadow overflow-hidden p-2',\n variants: {\n type: {\n Default: 'bg-gray-700',\n Success: 'bg-green-700',\n Warning: 'bg-yellow-700',\n Error: 'bg-red-700',\n Message: 'bg-blue-700',\n },\n },\n});\n\nconst iconVariants = tv({\n base: 'flex-shrink-0 self-start inline-flex items-center justify-center w-10 h-10 mr-3 rounded-xl bg-opacity-20',\n variants: {\n type: {\n Success: 'bg-green-500',\n Warning: 'bg-yellow-500',\n Error: 'bg-red-500',\n Message: 'bg-blue-500',\n Default: 'bg-gray-500',\n },\n },\n});\n\nexport default function Toast({\n type,\n message,\n visible,\n setVisible,\n duration = 5000,\n onClear,\n}: Props) {\n //const [show, setShow] = useState(visible);console.log(visible, show)\n\n useEffect(() => {\n //setShow(visible)\n if (duration && visible) {\n const timer = setTimeout(() => {\n setVisible && setVisible(false);\n onClear && onClear();\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, visible]);\n\n const icon = () => {\n switch (type) {\n case 'Success':\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"#a1a1a1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0 10C0 4.47715 4.47715 0 10 0C12.6522 0 15.1957 1.05357 17.0711 2.92893C18.9464 4.8043 20 7.34784 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10ZM9.73 13.61L14.3 7.61V7.58C14.5179 7.29419 14.5668 6.91382 14.4283 6.58218C14.2897 6.25054 13.9848 6.01801 13.6283 5.97218C13.2718 5.92635 12.9179 6.07419 12.7 6.36L8.92 11.36L7.29 9.28C7.07028 8.99776 6.71668 8.85418 6.36239 8.90334C6.00811 8.9525 5.70696 9.18694 5.57239 9.51834C5.43783 9.84974 5.49028 10.2278 5.71 10.51L8.15 13.62C8.34082 13.8615 8.63222 14.0017 8.94 14C9.2495 13.9993 9.54121 13.8552 9.73 13.61Z\"\n fill=\"#54D62C\"\n ></path>\n </svg>\n );\n case 'Warning':\n return (\n <svg\n width=\"24\"\n height=\"20\"\n viewBox=\"0 0 24 21\"\n fill=\"none\"\n stroke=\"#a1a1a1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0005 15C11.8027 15 11.6093 15.0586 11.4449 15.1685C11.2804 15.2784 11.1523 15.4346 11.0766 15.6173C11.0009 15.8 10.9811 16.0011 11.0197 16.1951C11.0583 16.3891 11.1535 16.5673 11.2933 16.7071C11.4332 16.847 11.6114 16.9422 11.8054 16.9808C11.9993 17.0194 12.2004 16.9996 12.3831 16.9239C12.5659 16.8482 12.722 16.72 12.8319 16.5556C12.9418 16.3911 13.0005 16.1978 13.0005 16C13.0005 15.7348 12.8951 15.4804 12.7076 15.2929C12.52 15.1054 12.2657 15 12.0005 15ZM22.6705 16.47L14.6205 2.47C14.3603 2.00351 13.9802 1.61495 13.5196 1.34447C13.0591 1.07398 12.5346 0.931366 12.0005 0.931366C11.4663 0.931366 10.9419 1.07398 10.4813 1.34447C10.0207 1.61495 9.64065 2.00351 9.38046 2.47L1.38046 16.47C1.11125 16.924 0.966598 17.441 0.9611 17.9688C0.955602 18.4966 1.08945 19.0165 1.34914 19.476C1.60883 19.9356 1.98516 20.3185 2.44014 20.586C2.89512 20.8536 3.41264 20.9964 3.94046 21H20.0605C20.5925 21.0052 21.1164 20.8689 21.5784 20.6049C22.0403 20.3409 22.4238 19.9588 22.6894 19.4978C22.9551 19.0368 23.0933 18.5134 23.09 17.9813C23.0866 17.4493 22.9418 16.9277 22.6705 16.47ZM20.9405 18.47C20.8528 18.6259 20.7249 18.7555 20.5701 18.8452C20.4154 18.9349 20.2393 18.9815 20.0605 18.98H3.94046C3.76157 18.9815 3.58556 18.9349 3.43077 18.8452C3.27599 18.7555 3.14811 18.6259 3.06046 18.47C2.97269 18.318 2.92648 18.1455 2.92648 17.97C2.92648 17.7945 2.97269 17.622 3.06046 17.47L11.0605 3.47C11.1444 3.3062 11.2719 3.16873 11.4289 3.07274C11.5859 2.97675 11.7664 2.92596 11.9505 2.92596C12.1345 2.92596 12.315 2.97675 12.472 3.07274C12.629 3.16873 12.7565 3.3062 12.8405 3.47L20.8905 17.47C20.9897 17.6198 21.0467 17.7936 21.0555 17.9731C21.0643 18.1526 21.0245 18.3312 20.9405 18.49V18.47ZM12.0005 7C11.7352 7 11.4809 7.10535 11.2933 7.29289C11.1058 7.48043 11.0005 7.73478 11.0005 8V12C11.0005 12.2652 11.1058 12.5196 11.2933 12.7071C11.4809 12.8946 11.7352 13 12.0005 13C12.2657 13 12.52 12.8946 12.7076 12.7071C12.8951 12.5196 13.0005 12.2652 13.0005 12V8C13.0005 7.73478 12.8951 7.48043 12.7076 7.29289C12.52 7.10535 12.2657 7 12.0005 7Z\"\n fill=\"#FFC107\"\n ></path>\n </svg>\n );\n case 'Error':\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"#a1a1a1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10 12C9.75278 12 9.5111 12.0733 9.30554 12.2107C9.09998 12.348 8.93976 12.5432 8.84516 12.7716C8.75055 13.0001 8.72579 13.2514 8.77402 13.4939C8.82225 13.7363 8.94131 13.9591 9.11612 14.1339C9.29094 14.3087 9.51367 14.4277 9.75614 14.476C9.99862 14.5242 10.25 14.4995 10.4784 14.4049C10.7068 14.3102 10.902 14.15 11.0393 13.9445C11.1767 13.7389 11.25 13.4972 11.25 13.25C11.25 12.9185 11.1183 12.6005 10.8839 12.3661C10.6495 12.1317 10.3315 12 10 12ZM10 10.5C10.2652 10.5 10.5196 10.3946 10.7071 10.2071C10.8946 10.0196 11 9.76522 11 9.5V6.5C11 6.23478 10.8946 5.98043 10.7071 5.79289C10.5196 5.60536 10.2652 5.5 10 5.5C9.73479 5.5 9.48043 5.60536 9.2929 5.79289C9.10536 5.98043 9 6.23478 9 6.5V9.5C9 9.76522 9.10536 10.0196 9.2929 10.2071C9.48043 10.3946 9.73479 10.5 10 10.5ZM10 0C8.02219 0 6.08879 0.58649 4.4443 1.6853C2.79981 2.78412 1.51809 4.3459 0.761209 6.17317C0.00433284 8.00043 -0.193701 10.0111 0.192152 11.9509C0.578004 13.8907 1.53041 15.6725 2.92894 17.0711C4.32746 18.4696 6.10929 19.422 8.0491 19.8079C9.98891 20.1937 11.9996 19.9957 13.8268 19.2388C15.6541 18.4819 17.2159 17.2002 18.3147 15.5557C19.4135 13.9112 20 11.9778 20 10C19.9971 7.34874 18.9425 4.80691 17.0678 2.93219C15.1931 1.05746 12.6513 0.00294858 10 0ZM10 18C8.41775 18 6.87104 17.5308 5.55544 16.6518C4.23985 15.7727 3.21447 14.5233 2.60897 13.0615C2.00347 11.5997 1.84504 9.99113 2.15372 8.43928C2.4624 6.88743 3.22433 5.46197 4.34315 4.34315C5.46197 3.22433 6.88743 2.4624 8.43928 2.15372C9.99113 1.84504 11.5997 2.00346 13.0615 2.60896C14.5233 3.21447 15.7727 4.23984 16.6518 5.55544C17.5308 6.87103 18 8.41775 18 10C17.9976 12.121 17.1539 14.1544 15.6542 15.6542C14.1544 17.1539 12.121 17.9976 10 18Z\"\n fill=\"#FF4842\"\n ></path>\n </svg>\n );\n case 'Message':\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n stroke=\"#a1a1a1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20C15.5228 20 20 15.5228 20 10C20 7.34784 18.9464 4.8043 17.0711 2.92893C15.1957 1.05357 12.6522 0 10 0ZM11 14C11 14.5523 10.5523 15 10 15C9.44771 15 9 14.5523 9 14V9C9 8.44771 9.44771 8 10 8C10.5523 8 11 8.44771 11 9V14ZM9 6C9 6.55228 9.44771 7 10 7C10.5523 7 11 6.55228 11 6C11 5.44772 10.5523 5 10 5C9.44771 5 9 5.44772 9 6Z\"\n fill=\"#1890FF\"\n ></path>\n </svg>\n );\n default:\n return null;\n }\n };\n\n const toast = () => {\n switch (type) {\n case 'Default':\n return (\n <div className=\"flex flex-wrap w-full h-full items-center justify-between\">\n <div className=\"w-full sm:w-auto px-4 py-4 sm:py-0 border-b border-gray-400 sm:border-transparent\">\n <span className=\"text-sm leading-5 text-gray-200 font-semibold\">\n {message}\n </span>\n </div>\n </div>\n );\n default:\n return (\n <div className=\"flex flex-wrap w-full h-full items-center justify-between\">\n <div className=\"w-full sm:w-auto px-4 py-4 sm:py-0\">\n <div className=\"flex items-center pr-6\">\n <div className={iconVariants({ type })}>{icon()}</div>\n <span className=\"text-sm leading-5 text-gray-200\">\n {message}\n </span>\n </div>\n </div>\n <div className=\"w-20 h-16 border-l border-gray-800\">\n <button\n onClick={() => {\n setVisible && setVisible(false);\n onClear && onClear();\n }}\n className=\"flex w-full h-full items-center justify-center text-center text-lg px-2 text-gray-50\"\n >\n X\n </button>\n </div>\n </div>\n );\n }\n };\n\n return (\n <div className={toastVariants({ show: visible })}>\n <div className={containerVariants({ type })}>{toast()}</div>\n </div>\n );\n}\n","import { motion, useAnimation } from 'framer-motion';\nimport { useEffect, useState } from 'react';\nimport { tv } from 'tailwind-variants';\n\nexport const navbar = tv({\n base: 'sticky top-0 z-40 w-full transition-all duration-500',\n variants: {\n scrolled: {\n true: 'backdrop-blur-md bg-white/80 dark:bg-gray-700/80 shadow-md',\n false: 'bg-gray-200 dark:bg-gray-700',\n },\n },\n});\n\ninterface Props {\n logoUrl: string;\n children: React.ReactNode;\n}\n\nexport default function TopMenu({ logoUrl, children }: Props) {\n const [scrolled, setScrolled] = useState(false);\n const controls = useAnimation();\n\n useEffect(() => {\n const onScroll = () => {\n const hasScrolled = window.scrollY > 30;\n setScrolled(hasScrolled);\n\n controls.start({\n opacity: hasScrolled ? 1 : 0.95,\n y: hasScrolled ? 0 : 0,\n transition: { duration: 0.3 },\n });\n };\n\n onScroll(); // trigger once on load\n window.addEventListener('scroll', onScroll);\n return () => window.removeEventListener('scroll', onScroll);\n }, [controls]);\n\n return (\n <motion.nav animate={controls} className={navbar({ scrolled })}>\n <div className=\"max-w-7xl font-bold mx-auto bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 px-4 py-4 flex justify-between items-center\">\n <div className=\"flex flex-row\">\n {logoUrl && (\n <>\n <a className=\"block\" href=\"#\">\n <img src={logoUrl} className=\"h-7 mx-auto\" alt=\"\" />\n </a>\n <span className=\"text-gray-700 dark:text-gray-300 my-auto font-medium text-xl ml-4\">\n Property Practice\n </span>\n </>\n )}\n </div>\n <div className=\"space-x-4 text-sm font-medium \">{children}</div>\n </div>\n </motion.nav>\n );\n}\n","import styled from 'styled-components';\nimport { Description, ExtendedButton, Header, Pill } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst AboutUsContainer = styled.section`\n display: grid;\n grid-template-columns: 35% 65%;\n gap: 3rem;\n padding: 4rem 2rem;\n margin: 0 auto;\n align-items: start;\n background-color: ${colors.background?.secondary || '#000'};\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n }\n`;\n\nconst ImageWrapper = styled.div`\n width: 100%;\n aspect-ratio: 3 / 4;\n border-radius: 8px;\n overflow: hidden;\n \n img {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n }\n`;\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n align-items: flex-start;\n padding: 1rem 4rem 1rem 1rem;\n`;\n\ninterface AboutUsProps {\n image: string;\n pillText: string;\n headerText: string;\n description: string;\n buttonText: string;\n onButtonClick?: () => void;\n pillVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n headerColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n buttonArrowVariant?: 'brand' | 'teal' | 'blue';\n buttonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n buttonTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const AboutUs = ({\n image,\n pillText,\n headerText,\n description,\n buttonText,\n onButtonClick,\n pillVariant = 'primary',\n headerColor = 'brand',\n descriptionVariant = 'primary',\n buttonArrowVariant = 'blue',\n buttonTextBgVariant = 'transparent',\n buttonTextVariant = 'brand',\n}: AboutUsProps) => {\n return (\n <AboutUsContainer>\n <ImageWrapper>\n <img src={image} alt=\"About Us\" />\n </ImageWrapper>\n <ContentWrapper>\n <Pill variant={pillVariant} inverse={true}>\n {pillText}\n </Pill>\n <Header variant=\"h1\" color={headerColor}>\n {headerText}\n </Header>\n <Description variant={descriptionVariant}>\n {description}\n </Description>\n <ExtendedButton\n text={buttonText}\n onClick={onButtonClick}\n arrowVariant={buttonArrowVariant}\n textBgVariant={buttonTextBgVariant}\n textVariant={buttonTextVariant}\n />\n </ContentWrapper>\n </AboutUsContainer>\n );\n};","import styled from 'styled-components';\nimport { SecondaryInput as Input } from '../../atoms';\nimport { breakpoints } from '../../tokens/breakpoints';\nimport { spaces } from '../../tokens/spaces';\n\ninterface ContactFormProps {}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${spaces[4]};\n width: 100%;\n \n @media (max-width: ${breakpoints.sm}) {\n gap: ${spaces[2]};\n }\n`;\n\nconst NameContainer = styled.div`\n display: flex;\n gap: ${spaces[4]};\n flex: 1;\n min-width: 0;\n \n @media (max-width: ${breakpoints.sm}) {\n flex-direction: column;\n gap: ${spaces[2]};\n }\n \n & > * {\n flex: 1;\n min-width: 0;\n }\n`;\n\nexport const ContactForm = ({}: ContactFormProps) => {\n return (\n <Container>\n <NameContainer>\n <Input\n name=\"firstName\"\n label=\"First name\"\n required\n placeholder=\"First name\"\n />\n <Input\n name=\"lastName\"\n label=\"Last name\"\n required\n placeholder=\"Last name\"\n />\n </NameContainer>\n <Input name=\"company\" label=\"Company\" placeholder=\"Company\" />\n <Input name=\"email\" label=\"Email\" placeholder=\"Email\" required />\n <Input name=\"phone\" label=\"Phone number\" placeholder=\"Phone number\" />\n <Input\n name=\"message\"\n label=\"Message\"\n placeholder=\"Message\"\n required\n isTextArea\n />\n </Container>\n );\n};","import { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { spaces } from '../../tokens/spaces';\n\ninterface AccordionContentProps {\n children: ReactNode;\n}\n\nconst Container = styled.div`\n width: 100%;\n padding: ${spaces[4]};\n`;\n\nexport const AccordionContent = ({ children }: AccordionContentProps) => {\n return <Container>{children}</Container>;\n};\n","import { ReactElement } from 'react';\nimport { FaMinus, FaPlus } from 'react-icons/fa';\nimport { FaPlus as FaP } from 'react-icons/fa6';\nimport styled from 'styled-components';\nimport { Button, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\ninterface AccordionHeaderProps {\n title: string;\n isOpen: boolean;\n buttonText?: string;\n onButtonPress?: () => void;\n rightElement?: ReactElement;\n onAccordionPress: () => void;\n}\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`;\n\nconst HeaderContainer = styled.div`\n display: flex;\n align-items: center;\n gap: ${spaces[2]};\n\n &:hover {\n cursor: pointer;\n }\n`;\n\nexport const AccordionHeader = ({\n title,\n isOpen,\n buttonText,\n onAccordionPress,\n onButtonPress,\n rightElement,\n}: AccordionHeaderProps) => {\n return (\n <Container>\n <HeaderContainer onClick={onAccordionPress}>\n <>\n {isOpen ? (\n <FaMinus color={colors.text.primary} size={sizes.lg} />\n ) : (\n <FaPlus color={colors.text.primary} size={sizes.lg} />\n )}\n </>\n <Header variant=\"h2\">{title}</Header>\n </HeaderContainer>\n {rightElement ? (\n rightElement\n ) : (\n <Button\n text={buttonText}\n icon={<FaP fontSize=\"10px\" />}\n onClick={onButtonPress}\n />\n )}\n </Container>\n );\n};\n","import { ComponentProps, ReactElement, useState } from 'react';\nimport styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { spaces } from '../../tokens/spaces';\nimport { AccordionContent } from '../AccordionContent/AccordionContent';\nimport { AccordionHeader } from '../AccordionHeader/AccordionHeader';\n\ninterface AccordionProps\n extends Pick<\n ComponentProps<typeof AccordionHeader>,\n 'title' | 'onButtonPress' | 'buttonText' | 'rightElement'\n > {\n children: ReactElement;\n}\n\nconst Container = styled.div`\n border-radius: ${radii.lg};\n background-color: ${colors.background.secondary};\n padding: ${spaces[4]};\n`;\n\nexport const Accordion = ({\n buttonText,\n onButtonPress,\n title,\n children,\n rightElement,\n}: AccordionProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <Container>\n <AccordionHeader\n isOpen={isOpen}\n buttonText={buttonText}\n onButtonPress={onButtonPress}\n onAccordionPress={() => setIsOpen((previousState) => !previousState)}\n title={title}\n rightElement={rightElement}\n />\n {isOpen && <AccordionContent>{children}</AccordionContent>}\n </Container>\n );\n};\n","import { useState } from 'react';\nimport { HiMinus, HiPlus } from 'react-icons/hi2';\nimport styled from 'styled-components';\nimport { Header, TextButton } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'inverse', 'subtle'] as const;\ntype Variant = (typeof variants)[number];\n\nconst AddressContainer = styled.div`\n display: flex;\n flex-direction: column;\n background-color: transparent;\n padding: 2rem;\n \n /* Desktop: normal spacing */\n @media (min-width: 768px) {\n gap: 1rem;\n }\n \n /* Mobile: no gap, handled by collapse */\n @media (max-width: 767px) {\n padding: 1rem;\n gap: 0;\n }\n`;\n\nconst HeaderWrapper = styled.div<{ $isClickable: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n \n /* Desktop: not clickable */\n @media (min-width: 768px) {\n cursor: default;\n }\n \n /* Mobile: clickable */\n @media (max-width: 767px) {\n cursor: ${props => props.$isClickable ? 'pointer' : 'default'};\n padding: 0.5rem 0;\n user-select: none;\n }\n`;\n\nconst ToggleIcon = styled.div<{ variant: Variant }>`\n display: none;\n \n /* Only show on mobile */\n @media (max-width: 767px) {\n display: flex;\n align-items: center;\n font-size: 1.5rem;\n \n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.primary;\n case 'inverse':\n return colors.text.secondary;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.primary;\n }\n }};\n }\n`;\n\nconst CollapseContent = styled.div<{ $isOpen: boolean }>`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n \n /* Desktop: always visible */\n @media (min-width: 768px) {\n display: flex;\n }\n \n /* Mobile: collapsible */\n @media (max-width: 767px) {\n max-height: ${props => props.$isOpen ? '500px' : '0'};\n opacity: ${props => props.$isOpen ? '1' : '0'};\n overflow: hidden;\n transition: max-height 0.3s ease, opacity 0.3s ease;\n padding-top: ${props => props.$isOpen ? '1rem' : '0'};\n }\n`;\n\nconst InfoSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n`;\n\nconst InfoText = styled.p<{ variant: Variant; $bold?: boolean }>`\n margin: 0;\n font-size: 0.875rem;\n line-height: 1.6;\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.primary;\n case 'inverse':\n return colors.text.secondary; \n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.primary;\n }\n }};\n font-weight: ${props => props.$bold ? 600 : 400};\n`;\n\nconst ButtonWrapper = styled.div`\n margin-top: 0.5rem;\n`;\n\ninterface AddressProps {\n title: string;\n phone?: string;\n email?: string;\n addressLines: string[];\n directionsText?: string;\n onDirectionsClick?: () => void;\n variant?: Variant;\n}\n\nexport const Address = ({\n title,\n phone,\n email,\n addressLines,\n directionsText = 'GET DIRECTIONS',\n onDirectionsClick,\n variant = 'primary',\n}: AddressProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleDirectionsClick = () => {\n if (onDirectionsClick) {\n onDirectionsClick();\n } else {\n const fullAddress = addressLines.join(', ');\n const encodedAddress = encodeURIComponent(fullAddress);\n const mapsUrl = `https://www.google.com/maps/search/?api=1&query=${encodedAddress}`;\n window.open(mapsUrl, '_blank');\n }\n };\n\n const getHeaderVariant = () => {\n switch (variant) {\n case 'primary':\n return 'primary';\n case 'inverse':\n return 'secondary'; \n case 'subtle':\n return 'subtle';\n default:\n return 'primary';\n }\n };\n\n const getButtonBgVariant = (): 'transparent' => {\n return 'transparent';\n };\n\n const getButtonTextVariant = (): 'primary' | 'secondary' | 'subtle' => {\n switch (variant) {\n case 'primary':\n return 'primary';\n case 'inverse':\n return 'secondary';\n case 'subtle':\n return 'subtle';\n default:\n return 'primary';\n }\n };\n\n return (\n <AddressContainer>\n <HeaderWrapper \n $isClickable={true}\n onClick={() => setIsOpen(!isOpen)}\n >\n <Header variant=\"h1\" color={getHeaderVariant()}>\n {title}\n </Header>\n <ToggleIcon variant={variant}>\n {isOpen ? <HiMinus /> : <HiPlus />}\n </ToggleIcon>\n </HeaderWrapper>\n \n <CollapseContent $isOpen={isOpen}>\n <InfoSection>\n {phone && (\n <InfoText variant={variant}>{phone}</InfoText>\n )}\n {email && (\n <InfoText variant={variant} $bold>{email.toUpperCase()}</InfoText>\n )}\n {addressLines.map((line, index) => (\n <InfoText key={index} variant={variant}>\n {line}\n </InfoText>\n ))}\n </InfoSection>\n <ButtonWrapper>\n <TextButton\n text={directionsText}\n onClick={handleDirectionsClick}\n bgVariant={getButtonBgVariant()}\n textVariant={getButtonTextVariant()}\n uppercase={true}\n />\n </ButtonWrapper>\n </CollapseContent>\n </AddressContainer>\n );\n};\n\nAddress.variants = variants;","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\ninterface CheckboxItemProps<T> {\n value: T;\n label: string;\n checked: boolean;\n onClick: () => void;\n}\n\nconst CheckboxWrapper = styled.label`\n display: flex;\n align-items: center;\n gap: ${spaces[2]};\n cursor: pointer;\n font-size: 16px;\n color: ${colors.text.subtle};\n`;\n\nconst HiddenCheckbox = styled.input.attrs({ type: 'checkbox' })`\n display: none;\n`;\n\nconst StyledCheckbox = styled.span<{ checked: boolean }>`\n width: ${sizes.lg};\n height: ${sizes.lg};\n border: 1.5px solid ${colors.background.tertiary};\n border-radius: ${radii.md};\n background-color: ${({ checked }) =>\n checked ? colors.background.tertiary : 'transparent'};\n transition: all 0.2s ease-in-out;\n`;\n\nexport const CheckboxItem = <T extends string | number | boolean>({\n label,\n onClick,\n checked,\n}: CheckboxItemProps<T>) => {\n return (\n <CheckboxWrapper onClick={onClick}>\n <HiddenCheckbox checked={checked} readOnly />\n <StyledCheckbox checked={checked} />\n {label}\n </CheckboxWrapper>\n );\n};\n","import styled from 'styled-components';\nimport { Label } from '../../atoms';\nimport { CheckboxItem } from '../../atoms/CheckboxItem/CheckboxItem';\nimport { spaces } from '../../tokens/spaces';\nimport { Option } from '../../types';\n\nconst alignments = ['row', 'column'] as const;\n\ntype Align = (typeof alignments)[number];\n\ninterface CheckboxProps<T> {\n error?: string;\n label?: string;\n value: T;\n onChange: (value: T) => void;\n options: Option<T>[];\n align?: Align;\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst OptionsContainer = styled.div`\n display: flex;\n gap: ${spaces[4]};\n`;\n\nexport const Checkbox = <T extends string | number | boolean>({\n error,\n label,\n onChange,\n options,\n value,\n}: CheckboxProps<T>) => {\n return (\n <Container>\n {typeof label === 'string' && label?.length ? (\n <Label\n value={label}\n color={\n typeof error === 'string' && error?.length ? 'error' : undefined\n }\n fontWeight=\"600\"\n />\n ) : null}\n <OptionsContainer>\n {options.map((option) => (\n <CheckboxItem\n checked={value === option.value}\n label={option.label}\n onClick={() => onChange(option.value)}\n value={option.value}\n />\n ))}\n </OptionsContainer>\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { ArrowButton, Description, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n background-color: #ffffff;\n width: 284px;\n height: 100%;\n padding: 1.5rem;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n flex-shrink: 0;\n \n @media (max-width: 767px) {\n width: 70vw;\n }\n`;\n\nconst ThumbnailWrapper = styled.div<{ thumbnailBgColor: BackgroundColor }>`\n width: 180px;\n height: 180px;\n border-radius: 50%;\n background-color: ${props => colors.background[props.thumbnailBgColor]};\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n align-self: center;\n`;\n\nconst ButtonWrapper = styled.div`\n display: flex;\n justify-content: flex-start;\n margin-top: auto;\n`;\n\ninterface ContentCardProps {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n onArrowClick?: () => void;\n headerVariant?: 'h1' | 'h2' | 'h3';\n titleColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n arrowVariant?: 'brand' | 'teal' | 'blue';\n thumbnailBgColor?: BackgroundColor;\n}\n\nexport const ContentCard = ({\n thumbnail,\n title,\n description,\n onArrowClick,\n headerVariant = 'h2',\n titleColor = 'brand',\n descriptionVariant = 'subtle',\n arrowVariant = 'teal',\n thumbnailBgColor = 'brand',\n}: ContentCardProps) => {\n return (\n <Container>\n <ThumbnailWrapper thumbnailBgColor={thumbnailBgColor}>\n {thumbnail}\n </ThumbnailWrapper>\n <Header variant={headerVariant} color={titleColor}>\n {title}\n </Header>\n <Description variant={descriptionVariant}>\n {description}\n </Description>\n <ButtonWrapper>\n <ArrowButton \n onClick={onArrowClick}\n variant={arrowVariant}\n />\n </ButtonWrapper>\n </Container>\n );\n};","import styled from 'styled-components';\nimport { ExtendedButton, TextButton } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst variants = ['primary', 'secondary', 'transparent'] as const;\ntype Variant = (typeof variants)[number];\n\nconst Container = styled.div<{ variant: Variant }>`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 3rem 2rem;\n max-width: 500px;\n \n /* Mobile adjustments */\n @media (max-width: 767px) {\n padding: 2rem 1rem;\n max-width: 100%;\n }\n`;\n\nconst Header = styled.h1<{ textColor: TextColor }>`\n margin: 0;\n font-size: 2.5rem;\n font-weight: 700;\n line-height: 1.2;\n color: ${(props) => colors.text[props.textColor]};\n \n /* Responsive font size */\n @media (max-width: 767px) {\n font-size: 2rem;\n }\n \n @media (max-width: 480px) {\n font-size: 1.75rem;\n }\n`;\n\nconst Description = styled.p<{ textColor: TextColor }>`\n margin: 0;\n font-size: 1.125rem;\n line-height: 1.6;\n color: ${(props) => colors.text[props.textColor]};\n \n /* Responsive font size */\n @media (max-width: 767px) {\n font-size: 1rem;\n }\n`;\n\nconst ButtonGroup = styled.div`\n display: flex;\n gap: 1rem;\n align-items: center;\n \n /* Stack vertically on mobile */\n @media (max-width: 767px) {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n`;\n\ninterface CTAContainerProps {\n header: string;\n description: string;\n primaryButtonText: string;\n secondaryButtonText?: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n variant?: Variant;\n headerTextColor?: TextColor;\n descriptionTextColor?: TextColor;\n primaryArrowVariant?: 'brand' | 'teal' | 'blue';\n primaryTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n primaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n secondaryBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n secondaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const CTAContainer = ({\n header,\n description,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n variant = 'transparent',\n headerTextColor = 'secondary',\n descriptionTextColor = 'secondary',\n primaryArrowVariant = 'teal',\n primaryTextBgVariant = 'brand',\n primaryTextVariant = 'secondary',\n secondaryBgVariant = 'transparent',\n secondaryTextVariant = 'secondary',\n}: CTAContainerProps) => {\n return (\n <Container variant={variant}>\n <Header textColor={headerTextColor}>{header}</Header>\n <Description textColor={descriptionTextColor}>{description}</Description>\n <ButtonGroup>\n <ExtendedButton\n text={primaryButtonText}\n onClick={onPrimaryClick}\n arrowVariant={primaryArrowVariant}\n textBgVariant={primaryTextBgVariant}\n textVariant={primaryTextVariant}\n />\n {secondaryButtonText && (\n <TextButton\n text={secondaryButtonText}\n onClick={onSecondaryClick}\n bgVariant={secondaryBgVariant}\n textVariant={secondaryTextVariant}\n />\n )}\n </ButtonGroup>\n </Container>\n );\n};\n\nCTAContainer.variants = variants;","import { useState } from 'react';\nimport { HiMinus, HiPlus } from 'react-icons/hi2';\nimport styled from 'styled-components';\nimport { Description, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst AccordionContainer = styled.div`\n border-bottom: 1px solid ${colors.text.light || '#d1d5db'};\n padding: 1.5rem 0;\n`;\n\nconst AccordionHeader = styled.button`\n width: 100%;\n display: flex;\n align-items: center;\n gap: 1rem;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n padding: 0;\n`;\n\nconst NumberBadge = styled.span<{ numberColor: TextColor }>`\n font-size: 1rem;\n font-weight: 600;\n color: ${props => colors.text[props.numberColor]};\n flex-shrink: 0;\n`;\n\nconst HeaderWrapper = styled.div`\n flex-grow: 1;\n`;\n\nconst IconWrapper = styled.div<{ iconColor: TextColor }>`\n color: ${props => colors.text[props.iconColor]};\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst AccordionContent = styled.div<{ $isOpen: boolean }>`\n max-height: ${props => props.$isOpen ? '1000px' : '0'};\n overflow: hidden;\n transition: max-height 0.3s ease-in-out;\n padding-left: 2.5rem;\n margin-top: ${props => props.$isOpen ? '1rem' : '0'};\n`;\n\ninterface AccordionProps {\n number: string;\n title: string;\n content: string;\n defaultOpen?: boolean;\n headerVariant?: 'h1' | 'h2' | 'h3';\n numberColor?: TextColor;\n titleColor?: TextColor;\n iconColor?: TextColor;\n contentVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const FAQAccordion = ({\n number,\n title,\n content,\n defaultOpen = false,\n headerVariant = 'h3',\n numberColor = 'brand',\n titleColor = 'brand',\n iconColor = 'brand',\n contentVariant = 'primary',\n}: AccordionProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n return (\n <AccordionContainer>\n <AccordionHeader onClick={() => setIsOpen(!isOpen)}>\n <NumberBadge numberColor={numberColor}>{number}</NumberBadge>\n <HeaderWrapper>\n <Header variant={headerVariant} color={titleColor}>\n {title}\n </Header>\n </HeaderWrapper>\n <IconWrapper iconColor={iconColor}>\n {isOpen ? <HiMinus size={24} /> : <HiPlus size={24} />}\n </IconWrapper>\n </AccordionHeader>\n <AccordionContent $isOpen={isOpen}>\n <Description variant={contentVariant}>\n {content}\n </Description>\n </AccordionContent>\n </AccordionContainer>\n );\n};","import styled from 'styled-components';\nimport { FeatureItem } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst FeatureWrapper = styled.div`\n padding: 1rem 0;\n border-bottom: 1px solid #e5e7eb;\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\ninterface FeatureItemData {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n thumbnailSize?: string;\n}\n\ninterface FeatureContainerProps {\n items: FeatureItemData[];\n thumbnailBgColor?: BackgroundColor;\n titleColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const FeatureContainer = ({ \n items, \n thumbnailBgColor = 'brand',\n titleColor = 'primary',\n descriptionVariant = 'subtle',\n}: FeatureContainerProps) => {\n return (\n <Container>\n {items.map((item, index) => (\n <FeatureWrapper key={index}>\n <FeatureItem\n thumbnail={item.thumbnail}\n title={item.title}\n description={item.description}\n thumbnailSize={item.thumbnailSize}\n thumbnailBgColor={thumbnailBgColor}\n titleColor={titleColor}\n descriptionVariant={descriptionVariant}\n />\n </FeatureWrapper>\n ))}\n </Container>\n );\n};","import { keyframes } from 'styled-components';\n\nexport const fadeIn = keyframes`\n from { opacity: 0 }\n to { opacity: 1 }\n`;\n\nexport const popIn = keyframes`\n from { transform: translateY(8px) scale(.98); opacity: 0 }\n to { transform: translateY(0) scale(1); opacity: 1 }\n`;\n","import { ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { fadeIn } from '../../tokens/animations';\nimport { breakpoints } from '../../tokens/breakpoints';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { spaces } from '../../tokens/spaces';\n\nconst positions = ['top', 'center', 'bottom'] as const;\n\ntype ContentPosition = (typeof positions)[number];\n\ninterface ModalProps {\n visible: boolean;\n onClose: () => void;\n dismissable?: boolean;\n contentPosition?: ContentPosition;\n children: ReactNode;\n}\n\nconst Overlay = styled.div<{ contentPosition: ContentPosition }>`\n height: 100vh;\n width: 100vw;\n background-color: rgba(0, 0, 0, 0.4);\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: flex;\n align-items: ${(props) =>\n props.contentPosition === 'center'\n ? 'center'\n : props.contentPosition === 'bottom'\n ? 'flex-end'\n : 'flex-start'};\n justify-content: center;\n animation: ${fadeIn} 160ms ease-out;\n`;\n\nconst ContentContainer = styled.div`\n position: relative;\n width: min(${breakpoints.sm}, 92vw);\n max-height: 86vh;\n overflow: auto;\n border-radius: ${radii.xl};\n padding: ${spaces[6]};\n background-color: ${colors.background.primary};\n`;\n\nexport const Modal = ({\n visible,\n contentPosition = 'center',\n dismissable = true,\n onClose,\n children,\n}: ModalProps) => {\n function onDismiss() {\n if (dismissable) {\n onClose();\n }\n }\n\n if (!visible) return <></>;\n\n return (\n <Overlay contentPosition={contentPosition} onClick={onDismiss}>\n <ContentContainer onClick={(e) => e.stopPropagation()}>\n {children}\n </ContentContainer>\n </Overlay>\n );\n};\n","import { FaCircleCheck, FaCircleExclamation } from \"react-icons/fa6\"\nimport styled from \"styled-components\"\nimport { Header } from \"../../atoms\"\nimport { colors } from \"../../tokens/colors\"\nimport { radii } from \"../../tokens/radii\"\nimport { spaces } from \"../../tokens/spaces\"\n\nconst Container = styled.div<{isComplete: boolean}>`\ndisplay: flex;\nalign-items: center ;\njustify-content: space-between;\npadding: ${spaces[2]} ${spaces[3]};\nbackground-color: ${props => props.isComplete ? colors.background.blue : colors.background.light};\nborder-radius: ${radii.sm};\n`\n\nconst Row = styled.div`\n display: flex;\n align-items: center;\n gap: ${spaces[2]};\n`\n\ninterface OverviewRowItemProps {\n isComplete: boolean\n title: string\n isMainHeader: boolean\n}\n\nexport const OverviewRowItem = ({isComplete, isMainHeader, title}: OverviewRowItemProps) => {\n\n return <Container isComplete={isComplete}>\n <Header variant={isMainHeader ? 'h2' : 'h3'} color={isComplete ? 'secondary' : 'primary'}>{title}</Header>\n\n <Row>\n <Header variant='h3' color={isComplete ? 'secondary' : 'primary'}>{isComplete ? 'Complete' : 'Information Outstanding'}</Header>\n {isComplete ? <FaCircleCheck color={colors.background.success}/> : <FaCircleExclamation color={colors.background.error}/>}\n </Row>\n </Container>\n}","import { ReactElement, ReactNode } from 'react';\nimport styled from 'styled-components';\nimport { Header } from '../../atoms';\nimport Spinner from '../../components/Spinner';\nimport { colors } from '../../tokens/colors';\nimport { spaces } from '../../tokens/spaces';\n\ninterface PageLayoutProps {\n title: string;\n children: ReactNode;\n isLoading?: boolean;\n rightElement?: ReactElement\n}\n\nconst Container = styled.div`\n width: '100%';\n min-height: '100vh';\n padding-bottom: ${spaces[9]};\n`;\n\nconst HeaderContainer = styled.div`\n padding: ${spaces[4.5]} ${spaces[6]};\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n\nconst ContentContainer = styled.div`\n border-top: 1px solid ${colors.border.hover};\n`;\n\nconst SpinnerContainer = styled.div`\n display: flex;\n width: 100%;\n padding: ${spaces[6]};\n align-items: center;\n justify-content: center;\n`;\n\nexport const PageLayout = ({\n title,\n children,\n isLoading = false,\n rightElement\n}: PageLayoutProps) => {\n return (\n <Container>\n <HeaderContainer>\n <Header color=\"subtle\">{title}</Header> {rightElement && rightElement}\n </HeaderContainer>\n {isLoading ? (\n <SpinnerContainer>\n <Spinner />\n </SpinnerContainer>\n ) : (\n <ContentContainer>{children}</ContentContainer>\n )}\n </Container>\n );\n};\n","import { useMemo } from 'react';\nimport { FaHouse, FaRegFolderOpen } from 'react-icons/fa6';\nimport styled from 'styled-components';\nimport { Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\nconst variants = ['documents', 'properties'] as const;\n\ntype EmptyStateType = (typeof variants)[number];\n\ninterface EmptyStateProps {\n variant: EmptyStateType;\n message: string;\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n gap: ${spaces[4]};\n padding: ${spaces[8]};\n`;\n\nexport const EmptyState = ({ variant, message }: EmptyStateProps) => {\n const size = sizes.xl;\n const color = colors.text.primary;\n\n const Icon = useMemo(() => {\n switch (variant) {\n case 'documents':\n return <FaRegFolderOpen size={size} color={color} />;\n case 'properties':\n return <FaHouse size={size} color={color} />;\n }\n }, [variant]);\n\n return (\n <Container>\n {Icon}\n <Header variant=\"h3\">{message}</Header>\n </Container>\n );\n};\n\nEmptyState.variants = variants;\n","import { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { EmptyState } from '../EmptyState/EmptyState';\n\ninterface PDFPreviewerProps {\n url: string;\n}\n\nconst Container = styled.div`\n width: 100%;\n height: 100%;\n`;\n\nexport const PDFPreviewer = ({ url }: PDFPreviewerProps) => {\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n setError(null);\n try {\n new URL(url);\n } catch {\n setError('Invalid preview URL');\n }\n }, [url]);\n\n if (typeof error === 'string')\n return (\n <EmptyState message=\"Failed to load this document\" variant=\"documents\" />\n );\n\n return (\n <Container>\n <iframe\n src={`${url}#view=FitH&toolbar=1&navpanes=0`}\n title=\"Document preview\"\n allow=\"clipboard-read; clipboard-write\"\n referrerPolicy=\"no-referrer\"\n style={{ width: '100%', height: '100%', border: '0' }}\n />\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { ExtendedButton, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst Container = styled.div`\n display: flex;\n gap: 1.5rem;\n align-items: center;\n max-width: 600px;\n \n /* Mobile: stack vertically */\n @media (max-width: 767px) {\n flex-direction: column;\n align-items: flex-start;\n max-width: 100%;\n }\n`;\n\nconst ImageWrapper = styled.div`\n flex-shrink: 0;\n width: 180px;\n height: 180px;\n border-radius: 8px;\n overflow: hidden;\n \n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n \n /* Mobile: full width */\n @media (max-width: 767px) {\n width: 100%;\n height: 200px;\n }\n`;\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n \n /* Mobile: full width */\n @media (max-width: 767px) {\n width: 100%;\n }\n`;\n\nconst LogoWrapper = styled.div`\n max-width: 200px;\n \n img {\n width: 100%;\n height: auto;\n }\n`;\n\ninterface ProductInfoItemProps {\n image: string;\n logoImage: string;\n title: string;\n buttonText: string;\n onButtonClick?: () => void;\n titleVariant?: 'h1' | 'h2' | 'h3';\n titleColor?: TextColor;\n buttonArrowVariant?: 'brand' | 'teal' | 'blue';\n buttonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n buttonTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const ProductInfo = ({\n image,\n logoImage,\n title,\n buttonText,\n onButtonClick,\n titleVariant = 'h2',\n titleColor = 'brand',\n buttonArrowVariant = 'teal',\n buttonTextBgVariant = 'brand',\n buttonTextVariant = 'secondary',\n}: ProductInfoItemProps) => {\n return (\n <Container>\n <ImageWrapper>\n <img src={image} alt=\"Product\" />\n </ImageWrapper>\n <ContentWrapper>\n <LogoWrapper>\n <img src={logoImage} alt=\"Logo\" />\n </LogoWrapper>\n <Header variant={titleVariant} color={titleColor}>\n {title}\n </Header>\n <ExtendedButton\n text={buttonText}\n onClick={onButtonClick}\n arrowVariant={buttonArrowVariant}\n textBgVariant={buttonTextBgVariant}\n textVariant={buttonTextVariant}\n />\n </ContentWrapper>\n </Container>\n );\n};","import styled from 'styled-components';\nimport { Label, RadioItem } from '../../atoms';\nimport { spaces } from '../../tokens/spaces';\nimport { Option } from '../../types';\n\ntype RadioGroupProps<T extends string | number> = {\n label?: string;\n options: readonly Option<T>[];\n value: T;\n onClick: (value: T) => void;\n className?: string;\n};\n\nconst Container = styled.div``;\n\nconst OptionsContainer = styled.div`\n margin-top: ${spaces[2]};\n display: flex;\n flex-direction: row;\n flex: 1;\n gap: ${spaces[2]};\n`;\n\nconst LabelContainer = styled.div`\n padding-left: ${spaces[1]};\n`;\n\nexport const RadioGroup = <T extends string | number>({\n label,\n options,\n value,\n onClick,\n className,\n}: RadioGroupProps<T>) => {\n return (\n <Container className={className}>\n {typeof label === 'string' && (\n <LabelContainer>\n <Label value={label} fontWeight=\"600\" />\n </LabelContainer>\n )}\n <OptionsContainer>\n {options.map((option, idx) => (\n <RadioItem\n key={idx}\n isSelected={value === option.value}\n label={option.label}\n disabled={option.disabled}\n onClick={() => onClick(option.value)}\n />\n ))}\n </OptionsContainer>\n </Container>\n );\n};\n","import { HiX } from 'react-icons/hi';\nimport styled from 'styled-components';\nimport { Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\nconst variants = ['primary', 'secondary', 'subtle'] as const;\ntype Variant = (typeof variants)[number];\n\nconst Overlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n`;\n\nconst ChartContainer = styled.div`\n background-color: #ffffff;\n border-radius: 8px;\n padding: 2rem;\n max-width: 400px;\n width: 90%;\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);\n`;\n\nconst HeaderSection = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 1.5rem;\n`;\n\nconst CloseButton = styled.button<{ variant: Variant }>`\n background-color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.background.brand;\n case 'secondary':\n return colors.background.blue;\n case 'subtle':\n return colors.background.subtle;\n default:\n return colors.background.brand;\n }\n }};\n color: #ffffff;\n border: none;\n border-radius: 4px;\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: opacity 0.2s;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\nconst Table = styled.table`\n width: 100%;\n border-collapse: collapse;\n`;\n\nconst TableHeader = styled.thead`\n border-bottom: 2px solid #e5e7eb;\n`;\n\nconst TableHeaderCell = styled.th<{ variant: Variant }>`\n text-align: left;\n padding: 0.75rem 0;\n font-size: 0.875rem;\n font-weight: 700;\n text-transform: uppercase;\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return colors.text.brand;\n case 'secondary':\n return colors.text.blue;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.brand;\n }\n }};\n`;\n\nconst TableBody = styled.tbody``;\n\nconst TableRow = styled.tr`\n border-bottom: 1px solid #f3f4f6;\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\nconst TableCell = styled.td<{ variant: Variant }>`\n padding: 0.75rem 0;\n font-size: 0.875rem;\n color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n case 'secondary':\n return colors.text.primary;\n case 'subtle':\n return colors.text.subtle;\n default:\n return colors.text.primary;\n }\n }};\n`;\n\ninterface RateItem {\n transactionType: string;\n price: string;\n}\n\ninterface RatesChartProps {\n title?: string;\n rates: RateItem[];\n onClose: () => void;\n variant?: Variant;\n}\n\nexport const RatesChart = ({\n title = 'Rates chart',\n rates,\n onClose,\n variant = 'primary',\n}: RatesChartProps) => {\n const getHeaderColor = () => {\n switch (variant) {\n case 'primary':\n return 'brand';\n case 'secondary':\n return 'primary';\n case 'subtle':\n return 'subtle';\n default:\n return 'brand';\n }\n };\n\n return (\n <Overlay onClick={onClose}>\n <ChartContainer onClick={(e) => e.stopPropagation()}>\n <HeaderSection>\n <Header variant=\"h2\" color={getHeaderColor()}>\n {title}\n </Header>\n <CloseButton onClick={onClose} variant={variant}>\n <HiX size={20} />\n </CloseButton>\n </HeaderSection>\n <Table>\n <TableHeader>\n <tr>\n <TableHeaderCell variant={variant}>Transaction type</TableHeaderCell>\n <TableHeaderCell variant={variant}>Price</TableHeaderCell>\n </tr>\n </TableHeader>\n <TableBody>\n {rates.map((rate, index) => (\n <TableRow key={index}>\n <TableCell variant={variant}>{rate.transactionType}</TableCell>\n <TableCell variant={variant}>{rate.price}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </ChartContainer>\n </Overlay>\n );\n};\n\nRatesChart.variants = variants;","import styled from 'styled-components';\nimport { ExtendedButton, TextButton } from \"../../atoms\";\nimport { colors } from '../../tokens/colors';\n\ntype BorderColor = keyof typeof colors.border;\ntype BgColor = keyof typeof colors.background;\n\nconst Backdrop = styled.div<{ $isOpen: boolean }>`\n display: none;\n \n @media (max-width: 767px) {\n display: ${props => props.$isOpen ? 'block' : 'none'};\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 9998;\n }\n`;\n\nconst BackToTopWrapper = styled.div`\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst StyledNav = styled.nav<{ \n $isOpen: boolean;\n $mobileBgVariant: BgColor;\n $borderVariant: BorderColor;\n}>`\n width: 195px;\n display: flex;\n flex-direction: column;\n min-height: 500px;\n height: 100vh;\n padding-bottom: 15px;\n \n @media (min-width: 768px) {\n position: relative;\n background-color: #ffffff;\n border-right: 1px solid #e5e7eb;\n }\n \n @media (max-width: 767px) {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 9999;\n background-color: ${props => colors.background[props.$mobileBgVariant]};\n border-right: 1px solid ${props => colors.border[props.$borderVariant]};\n transform: translateX(${props => props.$isOpen ? '0' : '-100%'});\n transition: transform 0.3s ease-in-out;\n box-shadow: ${props => props.$isOpen ? '2px 0 8px rgba(0, 0, 0, 0.15)' : 'none'};\n }\n`;\n\nconst CloseButton = styled.button<{ $textVariant: BorderColor }>`\n background: none;\n border: none;\n font-size: 1.5rem;\n cursor: pointer;\n padding: 0.5rem;\n color: ${props => colors.border[props.$textVariant]};\n \n &:hover {\n opacity: 0.7;\n }\n`;\n\nconst MobileHeader = styled.div`\n display: none;\n \n @media (max-width: 767px) {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n }\n`;\n\nconst NavList = styled.ul`\n display: flex;\n flex-direction: column;\n list-style: none;\n margin: 0;\n padding: 0;\n`;\n\nconst DesktopNavList = styled(NavList)`\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst MobileNavList = styled(NavList)`\n display: none;\n \n @media (max-width: 767px) {\n display: flex;\n }\n`;\n\nconst NavItem = styled.li`\n display: flex;\n`;\n\nconst NavLink = styled.a<{ $isActive: boolean }>`\n display: flex;\n align-items: center;\n text-decoration: none;\n width: 100%;\n padding-left: 0.5rem;\n \n ${props => !props.$isActive && `\n &:hover {\n font-weight: 100;\n }\n `}\n`;\n\nconst ActiveTriangle = styled.div<{ triangleColor: BorderColor }>`\n width: 0;\n height: 0;\n border-top: 4px solid transparent;\n border-left: 6px solid ${props => colors.border[props.triangleColor]};\n border-bottom: 4px solid transparent;\n flex-shrink: 0;\n margin-left: 1.5rem;\n`;\n\nconst InactiveSpacer = styled.span`\n width: 6px;\n margin-right: 0.5rem;\n flex-shrink: 0;\n`;\n\nconst Divider = styled.div<{ dividerColor: BorderColor }>`\n height: 1px;\n background-color: ${props => colors.border[props.dividerColor]};\n margin: 1rem;\n`;\n\nconst Spacer = styled.div`\n flex-grow: 1;\n`;\n\nconst DesktopOnlySpacer = styled(Spacer)`\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst MobileButtonsWrapper = styled.div`\n display: none;\n \n @media (max-width: 767px) {\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n padding: 0 1rem;\n margin-top: auto;\n margin-bottom: 20px;\n }\n`;\n\ninterface NavItemData {\n label: string;\n href: string;\n}\n\ninterface SideNavProps {\n logo?: React.ReactNode;\n items: NavItemData[];\n activeItem?: string;\n onBackToTop?: () => void;\n isOpen?: boolean;\n onClose?: () => void;\n mobileButtons?: Array<{\n text: string;\n onClick: () => void;\n bgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n textVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n arrowButton?: 'blue'\n }>;\n mobileBgVariant?: BgColor;\n borderVariant?: BorderColor;\n closeButtonVariant?: BorderColor;\n mobileActiveTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n mobileActiveTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n mobileInactiveTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n mobileInactiveTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n triangleColor?: BorderColor;\n dividerColor?: BorderColor;\n activeTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n activeTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n inactiveTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n inactiveTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n backToTopBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n backToTopTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const SideNav = ({ \n logo,\n items, \n activeItem,\n onBackToTop,\n isOpen = true, \n onClose,\n mobileButtons = [],\n mobileBgVariant = 'tertiary',\n borderVariant = 'primary',\n closeButtonVariant = 'light',\n mobileActiveTextBgVariant = 'transparent',\n mobileActiveTextVariant = 'light',\n mobileInactiveTextBgVariant = 'transparent',\n mobileInactiveTextVariant= 'light',\n triangleColor = 'primary',\n dividerColor = 'light',\n activeTextBgVariant = 'transparent',\n activeTextVariant = 'brand',\n inactiveTextBgVariant = 'transparent',\n inactiveTextVariant = 'subtle',\n backToTopBgVariant = 'transparent',\n backToTopTextVariant = 'subtle',\n}: SideNavProps) => {\n const renderNavItems = (isMobile: boolean) => items.map((item) => {\n const isActive = activeItem === item.href;\n return (\n <NavItem key={item.href}>\n <NavLink href={item.href} $isActive={isActive} onClick={onClose}>\n {isActive ? <ActiveTriangle triangleColor={triangleColor} /> : <InactiveSpacer />}\n <TextButton\n asChild\n text={item.label}\n bgVariant={isActive \n ? (isMobile && mobileActiveTextBgVariant ? mobileActiveTextBgVariant : activeTextBgVariant)\n : (isMobile && mobileInactiveTextBgVariant ? mobileInactiveTextBgVariant : inactiveTextBgVariant)\n }\n textVariant={isActive\n ? (isMobile && mobileActiveTextVariant ? mobileActiveTextVariant : activeTextVariant)\n : (isMobile && mobileInactiveTextVariant ? mobileInactiveTextVariant : inactiveTextVariant)\n }\n uppercase={false}\n bold={isActive}\n />\n </NavLink>\n </NavItem>\n );\n });\n\n return (\n <>\n <Backdrop $isOpen={isOpen} onClick={onClose} />\n <StyledNav \n $isOpen={isOpen}\n $mobileBgVariant={mobileBgVariant}\n $borderVariant={borderVariant}\n >\n <MobileHeader>\n {logo}\n <CloseButton onClick={onClose} aria-label=\"Close menu\" $textVariant={closeButtonVariant}>\n ✕\n </CloseButton>\n </MobileHeader>\n \n <DesktopOnlySpacer />\n \n {/* Desktop nav */}\n <DesktopNavList>\n {renderNavItems(false)}\n </DesktopNavList>\n\n {/* Mobile nav */}\n <MobileNavList>\n {renderNavItems(true)}\n </MobileNavList>\n\n <Divider dividerColor={dividerColor} />\n <Spacer />\n\n {mobileButtons.length > 0 && (\n <>\n <Divider dividerColor={dividerColor} />\n <MobileButtonsWrapper>\n {mobileButtons.map((button, index) => (\n <ExtendedButton\n key={index}\n text={button.text}\n onClick={button.onClick}\n textBgVariant={button.bgVariant || 'transparent'}\n textVariant={button.textVariant || 'subtle'}\n arrowVariant={button.arrowButton || 'blue'}\n />\n ))}\n </MobileButtonsWrapper> \n </>\n )}\n\n <BackToTopWrapper>\n <TextButton\n text=\"Back to top\"\n onClick={onBackToTop}\n bgVariant={backToTopBgVariant}\n textVariant={backToTopTextVariant}\n uppercase={false}\n />\n </BackToTopWrapper>\n </StyledNav>\n </>\n );\n};","import { HiX } from 'react-icons/hi';\nimport styled from 'styled-components';\nimport { Description, ExtendedButton, Header } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype BackgroundColor = keyof typeof colors.background;\ntype TextColor = keyof typeof colors.text;\n\nconst Overlay = styled.div<{ $isOpen: boolean }>`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: ${props => props.$isOpen ? 'flex' : 'none'};\n justify-content: flex-end;\n z-index: 1000;\n`;\n\nconst PanelContainer = styled.div<{ $isOpen: boolean }>`\n background-color: #ffffff;\n width: 100%;\n max-width: 400px;\n height: 100vh;\n padding: 3rem 2rem;\n box-shadow: -4px 0 15px rgba(0, 0, 0, 0.2);\n display: flex;\n flex-direction: column;\n gap: 2rem;\n transform: ${props => props.$isOpen ? 'translateX(0)' : 'translateX(100%)'};\n transition: transform 0.3s ease-in-out;\n overflow-y: auto;\n`;\n\nconst CloseButton = styled.button<{ closeButtonBgColor: BackgroundColor }>`\n position: absolute;\n top: 1.5rem;\n right: 1.5rem;\n background-color: ${props => colors.background[props.closeButtonBgColor]};\n color: #ffffff;\n border: none;\n border-radius: 4px;\n width: 2.5rem;\n height: 2.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: opacity 0.2s;\n z-index: 10;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\nconst IconWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n margin-bottom: 1rem;\n\n svg {\n width: 150px;\n height: 150px;\n }\n\n img {\n width: 150px;\n height: 150px;\n object-fit: contain;\n }\n`;\n\nconst ContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n`;\n\ninterface SidePanelProps {\n isOpen: boolean;\n onClose: () => void;\n icon: React.ReactNode;\n title: string;\n description: string;\n buttonText: string;\n onButtonClick?: () => void;\n closeButtonBgColor?: BackgroundColor;\n titleColor?: TextColor;\n descriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n buttonArrowVariant?: 'brand' | 'teal' | 'blue';\n buttonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n buttonTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const SidePanel = ({\n isOpen,\n onClose,\n icon,\n title,\n description,\n buttonText,\n onButtonClick,\n closeButtonBgColor = 'subtle',\n titleColor = 'brand',\n descriptionVariant = 'primary',\n buttonArrowVariant = 'teal',\n buttonTextBgVariant = 'brand',\n buttonTextVariant = 'secondary',\n}: SidePanelProps) => {\n return (\n <Overlay $isOpen={isOpen} onClick={onClose}>\n <PanelContainer $isOpen={isOpen} onClick={(e) => e.stopPropagation()}>\n <CloseButton onClick={onClose} closeButtonBgColor={closeButtonBgColor}>\n <HiX size={24} />\n </CloseButton>\n <IconWrapper>{icon}</IconWrapper>\n <ContentWrapper>\n <Header variant=\"h2\" color={titleColor}>\n {title}\n </Header>\n <Description variant={descriptionVariant}>\n {description}\n </Description>\n <ExtendedButton\n text={buttonText}\n onClick={onButtonClick}\n arrowVariant={buttonArrowVariant}\n textBgVariant={buttonTextBgVariant}\n textVariant={buttonTextVariant}\n />\n </ContentWrapper>\n </PanelContainer>\n </Overlay>\n );\n};","import styled from 'styled-components';\nimport { colors } from '../../tokens/colors';\nimport { radii } from '../../tokens/radii';\nimport { sizes } from '../../tokens/sizes';\nimport { spaces } from '../../tokens/spaces';\n\ninterface StepperHeaderTabProps {\n onClick?: () => void;\n title: string;\n isSelected: boolean;\n}\n\nconst Container = styled.div<Pick<StepperHeaderTabProps, 'isSelected'>>`\n width: 100%;\n background-color: ${(props) =>\n props.isSelected ? colors.background.blue : colors.background.primary};\n border: 1px solid ${colors.background.blue};\n border-radius: ${radii.lg};\n display: flex;\n justify-content: center;\n align-items: center;\n padding: ${spaces[2]} ${spaces[3]};\n cursor: pointer;\n`;\n\nconst StyledLabel = styled.span<Pick<StepperHeaderTabProps, 'isSelected'>>`\n color: ${(props) =>\n props.isSelected ? colors.text.secondary : colors.text.blue};\n font-size: ${sizes.sm};\n font-weight: 700;\n`;\n\nexport const StepperHeaderTab = ({\n title,\n isSelected,\n onClick,\n}: StepperHeaderTabProps) => {\n return (\n <Container isSelected={isSelected} onClick={onClick}>\n <StyledLabel isSelected={isSelected}>{title}</StyledLabel>\n </Container>\n );\n};\n","import { FaCaretDown, FaCaretUp } from 'react-icons/fa6';\nimport styled from 'styled-components';\nimport { Text } from '../../atoms/Text/Text';\n\ninterface DocumentAccordionHeaderProps {\n title: string;\n onClick?: () => void;\n}\n\nconst Container = styled.div<{ onClick?: () => void }>`\n display: flex;\n width: ${`${100 / 4}%`};\n overflow: scroll;\n align-items: center;\n gap: 5px;\n cursor: ${(props) => (props.onClick ? 'pointer' : 'auto')};\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n \n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none;\n scrollbar-width: none;\n`;\n\nconst IconContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport const DocumentAccordionHeader = ({\n onClick,\n title,\n}: DocumentAccordionHeaderProps) => {\n return (\n <Container onClick={onClick}>\n <Text>{title}</Text>\n {onClick && (\n <IconContainer>\n <FaCaretUp size={10} />\n <FaCaretDown size={10} />\n </IconContainer>\n )}\n </Container>\n );\n};\n","import styled from 'styled-components';\nimport { Label } from '../../atoms';\n\nexport type DocumentListAccordionFileType = {\n name: string;\n sourceFile: string;\n status: string;\n createdAt?: string;\n id: string;\n};\n\ninterface DocumentAccordionRowProps {\n file: DocumentListAccordionFileType;\n onViewDetail: () => void;\n}\n\nconst ItemContainer = styled.div<{ onClick?: () => void }>`\n display: flex;\n align-items: center;\n cursor: ${(props) => (props?.onClick ? 'pointer' : 'auto')};\n width: ${`${100 / 4}%`};\n overflow: scroll;\n text-overflow: ellipsis;\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n \n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none;\n scrollbar-width: none;\n`;\n\nexport const DocumentAccordionRow = ({\n file,\n onViewDetail,\n}: DocumentAccordionRowProps) => {\n return (\n <>\n <ItemContainer>\n <Label value={file.name} color=\"brand\" />\n </ItemContainer>\n <ItemContainer>\n <Label value={file.sourceFile} color=\"primary\" />\n </ItemContainer>\n <ItemContainer>\n <Label\n value={typeof file.status === 'string' ? file.status : '-'}\n color=\"primary\"\n fontWeight=\"700\"\n />\n </ItemContainer>\n <ItemContainer>\n <Label\n value={typeof file.createdAt === 'string' ? file.createdAt : '-'}\n color=\"primary\"\n fontWeight=\"700\"\n />\n </ItemContainer>\n <ItemContainer onClick={onViewDetail}>\n <Label value=\"View Details\" color=\"brand\" fontWeight=\"700\" />\n </ItemContainer>\n </>\n );\n};\n","import { ComponentProps } from 'react';\nimport styled from 'styled-components';\nimport { FileButton } from '../../molecules';\nimport { Accordion } from '../../molecules/Accordion/Accordion';\nimport { DocumentAccordionHeader } from '../../molecules/DocumentAccordionHeader/DocumentAccordionHeader';\nimport {\n DocumentAccordionRow,\n DocumentListAccordionFileType,\n} from '../../molecules/DocumentAccordionRow/DocumentAccordionRow';\nimport { EmptyState } from '../../molecules/EmptyState/EmptyState';\nimport { spaces } from '../../tokens/spaces';\n\ninterface DocumentListAccordionProps\n extends Pick<ComponentProps<typeof FileButton>, 'accept' | 'onFileSelect'> {\n title: string;\n files: DocumentListAccordionFileType[];\n onViewDetail: (id: string) => void;\n onSortBy?: (accessor: keyof DocumentListAccordionFileType) => void;\n}\n\nconst HeadersContainer = styled.div`\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: ${spaces[6]};\n`;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${spaces[3]};\n`;\n\nexport const DocumentListAccordion = ({\n title,\n files,\n onSortBy,\n onViewDetail,\n accept,\n onFileSelect,\n}: DocumentListAccordionProps) => {\n const onClick = (accessor: keyof DocumentListAccordionFileType) => {\n onSortBy && onSortBy(accessor);\n };\n\n return (\n <Accordion\n rightElement={\n <FileButton\n onFileSelect={onFileSelect}\n text=\"Add File\"\n accept={accept}\n />\n }\n title={title}\n >\n <Container>\n <HeadersContainer>\n <DocumentAccordionHeader\n title=\"File Name\"\n onClick={() => onClick('name')}\n />\n <DocumentAccordionHeader\n title=\"Source File Name\"\n onClick={() => onClick('status')}\n />\n <DocumentAccordionHeader\n title=\"File Status\"\n onClick={() => onClick('status')}\n />\n <DocumentAccordionHeader\n title=\"Date Created\"\n onClick={() => onClick('createdAt')}\n />\n <DocumentAccordionHeader title=\"File Options\" />\n </HeadersContainer>\n {files?.length === 0 && (\n <EmptyState\n message=\"No documents have been added to this record\"\n variant=\"documents\"\n />\n )}\n {files?.length > 0 &&\n files.map((file) => (\n <HeadersContainer key={file.id}>\n <DocumentAccordionRow\n file={file}\n onViewDetail={() => onViewDetail(file.id)}\n />\n </HeadersContainer>\n ))}\n </Container>\n </Accordion>\n );\n};\n","import { useEffect, useRef, useState } from 'react';\nimport { HiArrowLeft, HiArrowRight } from 'react-icons/hi2';\nimport styled from 'styled-components';\nimport { ContentCard } from '../../molecules';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\n// REMOVE the useRef and handler functions from here - they were at module level\n\nconst CarouselContainer = styled.div`\n width: 100%;\n overflow: hidden;\n position: relative;\n`;\n\nconst CardsWrapper = styled.div`\n display: flex;\n align-items: stretch;\n gap: 1.5rem;\n padding: 1rem 0;\n \n /* Desktop: controlled by JS */\n @media (min-width: 768px) {\n overflow: hidden;\n }\n \n /* Mobile: native scroll with snap */\n @media (max-width: 767px) {\n overflow-x: auto;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n \n &::-webkit-scrollbar {\n display: none;\n }\n }\n`;\n\nconst CardContainer = styled.div<{ $translateX: number }>`\n display: flex;\n align-items: stretch;\n gap: 1.5rem;\n \n /* Desktop: transform animation */\n @media (min-width: 768px) {\n transform: translateX(${props => props.$translateX}px);\n transition: transform 0.3s ease-in-out;\n }\n \n /* Mobile: natural flow */\n @media (max-width: 767px) {\n transform: none;\n \n & > * {\n scroll-snap-align: center;\n flex-shrink: 0;\n }\n }\n`;\n\nconst NavigationWrapper = styled.div`\n display: flex;\n justify-content: left;\n align-items: center;\n gap: 1rem;\n margin-top: 1.5rem;\n`;\n\nconst NavButton = styled.button<{ $disabled?: boolean; navColor: TextColor }>`\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n background-color: transparent;\n color: ${(props) => props.$disabled ? colors.text.subtle : colors.text[props.navColor]};\n border: none;\n cursor: ${props => props.$disabled ? 'not-allowed' : 'pointer'};\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s;\n\n @media (max-width: 767px) {\n display: none;\n }\n\n &:hover {\n opacity: ${props => props.$disabled ? 1 : 0.8};\n }\n`;\n\nconst Indicators = styled.div`\n display: flex;\n gap: 0.5rem;\n`;\n\nconst Indicator = styled.div<{ $active: boolean; indicatorColor: TextColor }>`\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 50%;\n background-color: ${(props) => props.$active ? colors.text[props.indicatorColor] : colors.text.subtle};\n transition: background-color 0.2s;\n`;\n\ninterface CarouselCard {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n onArrowClick?: () => void;\n}\n\ninterface CarouselProps {\n cards: CarouselCard[];\n cardTitleColor?: TextColor;\n cardDescriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n cardArrowVariant?: 'brand' | 'teal' | 'blue';\n cardThumbnailBgColor?: BackgroundColor;\n navButtonColor?: TextColor;\n indicatorColor?: TextColor;\n}\n\nexport const FeatureCarousel = ({\n cards,\n cardTitleColor = 'brand',\n cardDescriptionVariant = 'primary',\n cardArrowVariant = 'teal',\n cardThumbnailBgColor = 'brand',\n navButtonColor = 'brand',\n indicatorColor = 'brand',\n}: CarouselProps) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const [cardsToShow, setCardsToShow] = useState(3);\n const [cardWidth, setCardWidth] = useState(284);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // ADD touch refs here, inside the component\n const touchStartX = useRef(0);\n const touchEndX = useRef(0);\n\n const gap = 24;\n\n useEffect(() => {\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) return;\n\n const containerWidth = entry.contentRect.width;\n const count = Math.floor((containerWidth + gap) / (284 + gap));\n const clamped = Math.max(1, count);\n\n // On mobile, card width matches container\n if (clamped === 1) {\n setCardWidth(containerWidth);\n } else {\n setCardWidth(284);\n }\n\n setCardsToShow(clamped);\n });\n\n if (containerRef.current) observer.observe(containerRef.current);\n return () => observer.disconnect();\n }, []);\n\n const needsCarousel = cards.length > cardsToShow;\n const maxIndex = Math.max(0, cards.length - cardsToShow);\n const translateX = -currentIndex * (cardsToShow === 1 ? cardWidth : (cardWidth + gap));\n\n const handlePrev = () => setCurrentIndex(prev => Math.max(0, prev - 1));\n const handleNext = () => setCurrentIndex(prev => Math.min(maxIndex, prev + 1));\n\n // ADD touch handlers here, after handlePrev/handleNext\n const handleTouchStart = (e: React.TouchEvent) => {\n if (!e.touches[0]) return;\n touchStartX.current = e.touches[0].clientX;\n };\n\n const handleTouchEnd = (e: React.TouchEvent) => {\n if (!e.changedTouches[0]) return;\n touchEndX.current = e.changedTouches[0].clientX;\n const diff = touchStartX.current - touchEndX.current;\n\n if (Math.abs(diff) < 50) return;\n\n if (diff > 0) {\n handleNext();\n } else {\n handlePrev();\n }\n };\n\n return (\n <CarouselContainer\n ref={containerRef}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n >\n <CardsWrapper>\n <CardContainer $translateX={needsCarousel ? translateX : 0}>\n {cards.map((card, index) => (\n <ContentCard\n key={index}\n thumbnail={card.thumbnail}\n title={card.title}\n description={card.description}\n onArrowClick={card.onArrowClick}\n titleColor={cardTitleColor}\n descriptionVariant={cardDescriptionVariant}\n arrowVariant={cardArrowVariant}\n thumbnailBgColor={cardThumbnailBgColor}\n />\n ))}\n </CardContainer>\n </CardsWrapper>\n\n {needsCarousel && (\n <NavigationWrapper>\n <NavButton\n onClick={handlePrev}\n $disabled={currentIndex === 0}\n navColor={navButtonColor}\n >\n <HiArrowLeft size={24} />\n </NavButton>\n\n <Indicators>\n {Array.from({ length: maxIndex + 1 }).map((_, index) => (\n <Indicator\n key={index}\n $active={index === currentIndex}\n indicatorColor={indicatorColor}\n />\n ))}\n </Indicators>\n\n <NavButton\n onClick={handleNext}\n $disabled={currentIndex === maxIndex}\n navColor={navButtonColor}\n >\n <HiArrowRight size={24} />\n </NavButton>\n </NavigationWrapper>\n )}\n </CarouselContainer>\n );\n};","import styled from 'styled-components';\nimport { ExtendedButton, SocialButton, TextButton } from '../../atoms';\nimport { Address } from '../../molecules';\n\nconst variants = ['primary', 'secondary'] as const;\ntype Variant = (typeof variants)[number];\n\nconst FooterContainer = styled.footer<{ variant: Variant }>`\n background-color: ${(props) => {\n switch (props.variant) {\n case 'primary':\n return '#1e40af'; \n case 'secondary':\n return '#1D3C77'; \n default:\n return '#1e40af';\n }\n }};\n padding: 3rem 2rem 2rem;\n color: #ffffff;\n`;\n\nconst TopSection = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 3rem;\n padding-bottom: 2rem;\n border-bottom: 1px solid rgba(255, 255, 255, 0.2);\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 2rem;\n align-items: flex-start;\n }\n`;\n\nconst LogoWrapper = styled.div`\n img {\n height: 100px;\n width: auto;\n }\n`;\n\nconst ButtonGroup = styled.div`\n display: flex;\n gap: 1rem;\n align-items: center;\n`;\n\nconst MiddleSection = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr auto;\n gap: 3rem;\n margin-bottom: 3rem;\n align-items: start;\n\n @media (max-width: 1024px) {\n grid-template-columns: 1fr 1fr;\n }\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n }\n`;\n\nconst SocialButtonGroup = styled.div`\n display: flex;\n gap: 1rem;\n flex-wrap: wrap;\n`;\n\nconst BottomSection = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-top: 2rem;\n border-top: 1px solid rgba(255, 255, 255, 0.2);\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 1rem;\n align-items: flex-start;\n }\n`;\n\nconst LegalLinks = styled.div`\n display: flex;\n gap: 2rem;\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 0.5rem;\n }\n`;\n\nconst LegalLink = styled.a`\n color: #ffffff;\n text-decoration: none;\n font-size: 0.875rem;\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.05em;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\nconst Copyright = styled.p`\n margin: 0;\n font-size: 0.875rem;\n color: rgba(255, 255, 255, 0.8);\n`;\n\ninterface AddressData {\n title: string;\n phone?: string;\n email?: string;\n addressLines: string[];\n}\n\ninterface SocialLink {\n icon: React.ReactNode;\n url: string;\n ariaLabel: string;\n}\n\ninterface LegalLinkData {\n text: string;\n url: string;\n}\n\ninterface FooterProps {\n logo: string;\n primaryButtonText: string;\n secondaryButtonText: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n addresses: AddressData[];\n socialLinks: SocialLink[];\n legalLinks: LegalLinkData[];\n copyrightText: string;\n variant?: Variant;\n primaryArrowVariant?: 'brand' | 'teal' | 'blue';\n primaryTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n primaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n secondaryBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n secondaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const Footer = ({\n logo,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n addresses,\n socialLinks,\n legalLinks,\n copyrightText,\n variant = 'primary',\n primaryArrowVariant = 'blue',\n primaryTextBgVariant = 'secondary',\n primaryTextVariant = 'brand',\n secondaryBgVariant = 'transparent',\n secondaryTextVariant = 'secondary',\n}: FooterProps) => {\n return (\n <FooterContainer variant={variant}>\n <TopSection>\n <LogoWrapper>\n <img src={logo} alt=\"Logo\" />\n </LogoWrapper>\n <ButtonGroup>\n <ExtendedButton\n text={primaryButtonText}\n onClick={onPrimaryClick}\n arrowVariant={primaryArrowVariant}\n textBgVariant={primaryTextBgVariant}\n textVariant={primaryTextVariant}\n />\n <TextButton\n text={secondaryButtonText}\n onClick={onSecondaryClick}\n bgVariant={secondaryBgVariant}\n textVariant={secondaryTextVariant}\n uppercase={true}\n />\n </ButtonGroup>\n </TopSection>\n\n <MiddleSection>\n {addresses.map((address, index) => (\n <Address\n key={index}\n title={address.title}\n phone={address.phone}\n email={address.email}\n addressLines={address.addressLines}\n variant=\"inverse\"\n />\n ))}\n <SocialButtonGroup>\n {socialLinks.map((social, index) => (\n <SocialButton\n key={index}\n icon={social.icon}\n onClick={() => window.open(social.url, '_blank')}\n variant=\"inverse\"\n ariaLabel={social.ariaLabel}\n />\n ))}\n </SocialButtonGroup>\n </MiddleSection>\n\n <BottomSection>\n <LegalLinks>\n {legalLinks.map((link, index) => (\n <LegalLink key={index} href={link.url}>\n {link.text}\n </LegalLink>\n ))}\n </LegalLinks>\n <Copyright>{copyrightText}</Copyright>\n </BottomSection>\n </FooterContainer>\n );\n};\n\nFooter.variants = variants;","import { useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { ExtendedButton, TextButton } from '../../atoms';\nimport { colors } from '../../tokens/colors';\n\ntype BorderColor = keyof typeof colors.border;\n\nconst HeaderContainer = styled.header<{ $isVisible: boolean }>`\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n padding: 0 1rem;\n position: sticky;\n top: 0;\n z-index: 100;\n transform: translateY(${props => props.$isVisible ? '0' : '-100%'});\n transition: transform 0.3s ease-in-out;\n`;\n\nconst LogoWrapper = styled.div`\n display: flex;\n align-items: center;\n \n img {\n height: 60px;\n width: auto;\n }\n`;\n\nconst ButtonGroup = styled.div`\n display: flex;\n gap: 1rem;\n align-items: center;\n \n /* Hide on mobile */\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst BurgerButton = styled.button<{ $burgerVariant: BorderColor }>`\n display: none;\n \n /* Show only on mobile */\n @media (max-width: 767px) {\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n width: 2rem;\n height: 2rem;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n \n &:focus {\n outline: none;\n }\n }\n`;\n\nconst BurgerLine = styled.div<{ $isOpen: boolean; $burgerVariant: BorderColor }>`\n width: 2rem;\n height: 0.25rem;\n background-color: ${props => colors.border[props.$burgerVariant]};\n border-radius: 10px;\n transition: all 0.3s linear;\n position: relative;\n transform-origin: 1px;\n\n &:first-child {\n transform: ${({ $isOpen }) => $isOpen ? 'rotate(45deg)' : 'rotate(0)'};\n }\n\n &:nth-child(2) {\n opacity: ${({ $isOpen }) => $isOpen ? '0' : '1'};\n transform: ${({ $isOpen }) => $isOpen ? 'translateX(20px)' : 'translateX(0)'};\n }\n\n &:nth-child(3) {\n transform: ${({ $isOpen }) => $isOpen ? 'rotate(-45deg)' : 'rotate(0)'};\n }\n`;\n\ninterface HeaderProps {\n logo: string;\n primaryButtonText: string;\n secondaryButtonText: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n // Mobile menu props\n isMobileMenuOpen?: boolean;\n onMobileMenuToggle?: () => void;\n burgerVariant?: BorderColor;\n // Button variants\n primaryArrowVariant?: 'brand' | 'teal' | 'blue';\n primaryTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n primaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n secondaryBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n secondaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n}\n\nexport const Header = ({\n logo,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n isMobileMenuOpen = false,\n onMobileMenuToggle,\n burgerVariant = 'primary',\n primaryArrowVariant = 'blue',\n primaryTextBgVariant = 'brand',\n primaryTextVariant = 'secondary',\n secondaryBgVariant = 'transparent',\n secondaryTextVariant = 'brand',\n}: HeaderProps) => {\n const [isVisible, setIsVisible] = useState(true);\n const lastScrollY = useRef(0);\n\n useEffect(() => {\n const handleScroll = () => {\n const currentScrollY = window.scrollY;\n \n if (currentScrollY < lastScrollY.current) {\n setIsVisible(true); \n } else {\n setIsVisible(false); \n }\n \n lastScrollY.current = currentScrollY;\n };\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n return (\n <HeaderContainer $isVisible={isVisible}>\n <LogoWrapper>\n <img src={logo} alt=\"Logo\" />\n </LogoWrapper>\n \n {/* Desktop buttons - hidden on mobile */}\n <ButtonGroup>\n <ExtendedButton\n text={primaryButtonText}\n onClick={onPrimaryClick}\n arrowVariant={primaryArrowVariant}\n textBgVariant={primaryTextBgVariant}\n textVariant={primaryTextVariant}\n />\n <TextButton\n text={secondaryButtonText}\n onClick={onSecondaryClick}\n bgVariant={secondaryBgVariant}\n textVariant={secondaryTextVariant}\n uppercase={true}\n />\n </ButtonGroup>\n \n {/* Mobile burger - shown only on mobile */}\n <BurgerButton onClick={onMobileMenuToggle} $burgerVariant={burgerVariant}>\n <BurgerLine $isOpen={isMobileMenuOpen} $burgerVariant={burgerVariant} />\n <BurgerLine $isOpen={isMobileMenuOpen} $burgerVariant={burgerVariant} />\n <BurgerLine $isOpen={isMobileMenuOpen} $burgerVariant={burgerVariant} />\n </BurgerButton>\n </HeaderContainer>\n );\n};","import styled from \"styled-components\";\nimport { OverviewRowItem } from \"../../molecules\";\nimport { spaces } from \"../../tokens/spaces\";\n\ntype OverviewItem = {\n title: string, \n isComplete: boolean\n}\n\ntype Overview = {\n header: string;\n overviewItems: OverviewItem[]\n}\n\ninterface OverviewListProps {\n overviews: Overview[]\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${spaces[2]};\n`\n\nconst RowContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: ${spaces[2]};\n padding: 0 ${spaces[4]};\n`\n\nexport const OverviewList = ({overviews}: OverviewListProps) => {\n\n function isAllCompleted(overviewItems: OverviewItem[]){\n let isCompleted = true\n\n overviewItems.forEach((overview) => {\n if(overview.isComplete === false) {\n isCompleted = false\n } \n })\n\n return isCompleted\n }\n\n return <Container>\n {overviews.map(overview => <Container key={overview.header}>\n <OverviewRowItem title={overview.header} isMainHeader isComplete={isAllCompleted(overview.overviewItems)}/>\n {/* <RowContainer>\n {overview.overviewItems.map(overviewItem => \n <OverviewRowItem key={overviewItem.title} title={overviewItem.title} isComplete={overviewItem.isComplete} isMainHeader={false}/>\n )}\n </RowContainer> */}\n </Container>)}\n </Container>\n}","import { createContext, ReactNode, useContext, useState } from 'react';\nimport Toast from '../../components/Toast';\nimport type { ToastType } from '../../types/toast';\n\ntype ShowToastInput = {\n type?: ToastType;\n message: string;\n};\n\ntype ToastContextProps = {\n showToast: (input: ShowToastInput) => void;\n};\n\ninterface ToastProvider {\n children: ReactNode;\n}\n\nconst ToastContext = createContext<ToastContextProps>({ showToast: () => {} });\n\nexport const useToast = () => useContext(ToastContext);\n\nexport const ToastProvider = ({ children }: ToastProvider) => {\n const [toast, setToast] = useState<ShowToastInput>();\n\n function showToast({ message, type = 'Success' }: ShowToastInput) {\n setToast({ message, type });\n }\n\n return (\n <ToastContext.Provider value={{ showToast }}>\n <Toast\n type={toast?.type ?? 'Success'}\n message={toast?.message}\n visible={typeof toast?.message === 'string'}\n onClear={() => setToast(undefined)}\n />\n {children}\n </ToastContext.Provider>\n );\n};\n","import styled from 'styled-components';\nimport { ExtendedButton, Header, TermsCheckbox } from '../../atoms';\nimport { ContactForm } from '../../organisms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype ComponentTextColor = Exclude<TextColor, 'active' | 'hover' | 'focus'>;\n\nconst ContactSection = styled.section`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 4rem 2rem;\n min-height: 100vh;\n background-color: ${colors.background?.secondary || '#f9fafb'};\n \n /* Mobile adjustments */\n @media (max-width: 767px) {\n padding: 2rem 1rem;\n }\n`;\n\nconst ContentWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n max-width: 1200px;\n width: 100%;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n }\n`;\n\nconst ImageWrapper = styled.div`\n width: 100%;\n height: 100%;\n min-height: 600px;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n }\n\n /* Hide on mobile */\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nconst FormContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2rem;\n padding: 4rem 3rem;\n background-color: #ffffff;\n \n /* Mobile adjustments */\n @media (max-width: 767px) {\n padding: 2rem 1.5rem;\n }\n`;\n\nconst FormWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2rem;\n`;\n\nconst ButtonWrapper = styled.div`\n display: flex;\n justify-content: flex-start;\n \n /* Mobile: full width button */\n @media (max-width: 767px) {\n width: 100%;\n }\n`;\n\ninterface ContactProps {\n image: string;\n headerText: string;\n termsChecked: boolean;\n onTermsChange: (checked: boolean) => void;\n buttonText: string;\n onButtonClick?: () => void;\n headerColor?: ComponentTextColor;\n termsVariant?: 'primary' | 'secondary' | 'subtle';\n buttonArrowVariant?: 'brand' | 'teal' | 'blue';\n buttonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n buttonTextVariant?: \"brand\" | \"blue\" | \"primary\" | \"secondary\" | \"tertiary\" | \"subtle\" | \"light\" ;\n}\n\nexport const Contact = ({\n image,\n headerText,\n termsChecked,\n onTermsChange,\n buttonText,\n onButtonClick,\n headerColor = 'brand',\n termsVariant = 'primary',\n buttonArrowVariant = 'teal',\n buttonTextBgVariant = 'brand',\n buttonTextVariant = 'primary',\n}: ContactProps) => {\n return (\n <ContactSection>\n <ContentWrapper>\n <ImageWrapper>\n <img src={image} alt=\"Contact\" />\n </ImageWrapper>\n <FormContainer>\n <Header variant=\"h1\" color={headerColor}>\n {headerText}\n </Header>\n <FormWrapper>\n <ContactForm />\n <TermsCheckbox\n checked={termsChecked}\n onChange={onTermsChange}\n variant={termsVariant}\n />\n <ButtonWrapper>\n <ExtendedButton\n text={buttonText}\n onClick={onButtonClick}\n arrowVariant={buttonArrowVariant}\n textBgVariant={buttonTextBgVariant}\n textVariant={buttonTextVariant}\n />\n </ButtonWrapper>\n </FormWrapper>\n </FormContainer>\n </ContentWrapper>\n </ContactSection>\n );\n};","import styled from 'styled-components';\nimport { Header, Pill } from '../../atoms';\nimport { FAQAccordion } from '../../molecules';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\n\nconst FAQContainer = styled.section`\n display: flex;\n flex-direction: column;\n gap: 2rem;\n padding: 4rem 2rem;\n min-height: 100vh;\n background-color: ${colors.background?.primary || '#f9fafb'};\n`;\n\nconst HeaderSection = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n align-items: flex-start;\n`;\n\nconst AccordionList = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\ninterface AccordionItem {\n number: string;\n title: string;\n content: string;\n defaultOpen?: boolean;\n}\n\ninterface FAQProps {\n pillText: string;\n headerText: string;\n headerVariant?: 'h1' | 'h2' | 'h3';\n accordionItems: AccordionItem[];\n pillVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n headerColor?: TextColor;\n accordionNumberColor?: TextColor;\n accordionTitleColor?: TextColor;\n accordionIconColor?: TextColor;\n accordionContentVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const FAQ = ({\n pillText,\n headerText,\n headerVariant = 'h1',\n accordionItems,\n pillVariant = 'primary',\n headerColor = 'brand',\n accordionNumberColor = 'brand',\n accordionTitleColor = 'brand',\n accordionIconColor = 'brand',\n accordionContentVariant = 'primary',\n}: FAQProps) => {\n return (\n <FAQContainer>\n <HeaderSection>\n <Pill variant={pillVariant} inverse={true}>\n {pillText}\n </Pill>\n <Header variant={headerVariant} color={headerColor}>\n {headerText}\n </Header>\n </HeaderSection>\n\n <AccordionList>\n {accordionItems.map((item, index) => (\n <FAQAccordion\n key={index}\n number={item.number}\n title={item.title}\n content={item.content}\n defaultOpen={item.defaultOpen}\n numberColor={accordionNumberColor}\n titleColor={accordionTitleColor}\n iconColor={accordionIconColor}\n contentVariant={accordionContentVariant}\n />\n ))}\n </AccordionList>\n </FAQContainer>\n );\n};","import styled from 'styled-components';\nimport { Header, Pill } from '../../atoms';\nimport { FeatureCarousel } from '../../organisms';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype BackgroundColor = keyof typeof colors.background;\n\nconst FeaturesContainer = styled.section`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n gap: 2rem;\n padding: 4rem 2rem;\n min-height: 100vh;\n background-color: ${colors.background?.secondary || '#000'};\n`;\n\nconst InnerWrapper = styled.div`\n width: 100%;\n margin: 0 auto;\n`;\n\nconst HeaderWrapper = styled.div`\n text-align: left;\n`;\n\ninterface FeatureCard {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n onArrowClick?: () => void;\n}\n\ninterface FeaturesProps {\n pillText: string;\n headerText: string;\n cards: FeatureCard[];\n pillVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n headerColor?: TextColor;\n cardTitleColor?: TextColor;\n cardDescriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n cardArrowVariant?: 'brand' | 'teal' | 'blue';\n cardThumbnailBgColor?: BackgroundColor;\n navButtonColor?: TextColor;\n indicatorColor?: TextColor;\n}\n\nexport const Features = ({\n pillText,\n headerText,\n cards,\n pillVariant = 'primary',\n headerColor = 'brand',\n cardTitleColor = 'brand',\n cardDescriptionVariant = 'primary',\n cardArrowVariant = 'teal',\n cardThumbnailBgColor = 'brand',\n navButtonColor = 'brand',\n indicatorColor = 'brand',\n}: FeaturesProps) => {\n return (\n <FeaturesContainer>\n <InnerWrapper>\n\n <Pill variant={pillVariant} inverse={true}>\n {pillText}\n </Pill>\n <HeaderWrapper>\n <Header variant=\"h1\" color={headerColor}>\n {headerText}\n </Header>\n </HeaderWrapper>\n <FeatureCarousel\n cards={cards}\n cardTitleColor={cardTitleColor}\n cardDescriptionVariant={cardDescriptionVariant}\n cardArrowVariant={cardArrowVariant}\n cardThumbnailBgColor={cardThumbnailBgColor}\n navButtonColor={navButtonColor}\n indicatorColor={indicatorColor}\n />\n </InnerWrapper>\n </FeaturesContainer>\n );\n};","import styled from 'styled-components';\nimport { CTAContainer, FeatureContainer } from '../../molecules';\nimport { colors } from '../../tokens/colors';\n\ntype BackgroundColor = keyof typeof colors.background;\n\nconst HeroContainer = styled.section<{ $bgImage?: string; $overlayColor?: string }>`\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2rem;\n min-height: 100vh;\n position: relative;\n overflow: hidden;\n padding: 4rem;\n \n /* Background image */\n ${props => props.$bgImage && `\n background-image: url(${props.$bgImage});\n background-size: cover;\n background-position: center;\n `}\n \n /* Blue overlay filter */\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${props => props.$overlayColor || 'rgba(30, 64, 175, 0.7)'};\n }\n\n\n /* Mobile/Tablet: Single column, features below CTA */\n @media (max-width: 1024px) {\n grid-template-columns: 1fr;\n grid-template-rows: auto auto;\n padding: 2rem 1rem;\n gap: 3rem;\n }\n \n /* Very small mobile */\n @media (max-width: 480px) {\n padding: 1.5rem 1rem;\n }\n`;\n\nconst Column = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n \n /* Constrain text width on mobile */\n @media (max-width: 1024px) {\n max-width: 100%;\n width: 100%;\n }\n`;\n\nconst FeaturesColumn = styled(Column)`\n /* On desktop: normal column */\n @media (min-width: 1025px) {\n display: flex;\n }\n \n /* On mobile: show below CTA, order it second */\n @media (max-width: 1024px) {\n display: flex;\n order: 2;\n align-items: flex-start;\n }\n`;\n\nconst CTAColumn = styled(Column)`\n /* Ensure CTA comes first on mobile */\n @media (max-width: 1024px) {\n order: 1;\n }\n`;\n\ninterface FeatureItemData {\n thumbnail: React.ReactNode;\n title: string;\n description: string;\n thumbnailSize?: string;\n}\n\ninterface HeroProps {\n ctaHeader: string;\n ctaDescription: string;\n primaryButtonText: string;\n secondaryButtonText?: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n featureItems: FeatureItemData[];\n bgImage?: string;\n overlayColor?: string;\n // CTA color controls\n ctaHeaderTextColor?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n ctaDescriptionTextColor?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n primaryArrowVariant?: 'brand' | 'teal' | 'blue';\n primaryTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n primaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n secondaryBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n secondaryTextVariant?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n // Feature color controls\n featureThumbnailBgColor?: BackgroundColor;\n featureTitleColor?: 'brand' | 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'light' | 'error' | 'blue';\n featureDescriptionVariant?: 'primary' | 'secondary' | 'subtle' | 'error';\n}\n\nexport const Hero = ({\n ctaHeader,\n ctaDescription,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n featureItems,\n bgImage,\n overlayColor,\n ctaHeaderTextColor = 'secondary',\n ctaDescriptionTextColor = 'secondary',\n primaryArrowVariant = 'teal',\n primaryTextBgVariant = 'brand',\n primaryTextVariant = 'secondary',\n secondaryBgVariant = 'transparent',\n secondaryTextVariant = 'secondary',\n featureThumbnailBgColor = 'brand',\n featureTitleColor = 'secondary',\n featureDescriptionVariant = 'secondary',\n}: HeroProps) => {\n return (\n <HeroContainer $bgImage={bgImage} $overlayColor={overlayColor}>\n <CTAColumn>\n <CTAContainer\n header={ctaHeader}\n description={ctaDescription}\n primaryButtonText={primaryButtonText}\n {...(secondaryButtonText && { \n secondaryButtonText,\n onSecondaryClick,\n secondaryBgVariant,\n secondaryTextVariant,\n })}\n onPrimaryClick={onPrimaryClick}\n headerTextColor={ctaHeaderTextColor}\n descriptionTextColor={ctaDescriptionTextColor}\n primaryArrowVariant={primaryArrowVariant}\n primaryTextBgVariant={primaryTextBgVariant}\n primaryTextVariant={primaryTextVariant}\n />\n </CTAColumn>\n <FeaturesColumn>\n <FeatureContainer \n items={featureItems}\n thumbnailBgColor={featureThumbnailBgColor}\n titleColor={featureTitleColor}\n descriptionVariant={featureDescriptionVariant}\n />\n </FeaturesColumn>\n </HeroContainer>\n );\n};","import styled from 'styled-components';\nimport { Header } from '../../atoms';\nimport { ProductInfo } from '../../molecules';\nimport { colors } from '../../tokens/colors';\n\ntype TextColor = keyof typeof colors.text;\ntype ComponentTextColor = Exclude<TextColor, 'active' | 'hover' | 'focus'>;\n\nconst SectionContainer = styled.section`\n display: flex;\n flex-direction: column;\n padding: 4rem 2rem;\n max-width: 1200px;\n margin: 0 auto;\n \n /* Mobile adjustments */\n @media (max-width: 767px) {\n padding: 2rem 1rem;\n }\n`;\n\nconst SectionHeader = styled.div`\n padding-bottom: 2rem;\n border-bottom: 1px solid ${colors.text.light || '#d1d5db'};\n \n /* Mobile: remove border, adjust padding */\n @media (max-width: 767px) {\n border-bottom: none;\n padding-bottom: 1rem;\n }\n`;\n\nconst ProductsWrapper = styled.div`\n /* Desktop: normal vertical stack */\n @media (min-width: 768px) {\n display: flex;\n flex-direction: column;\n }\n \n /* Mobile: horizontal scroll carousel */\n @media (max-width: 767px) {\n display: flex;\n overflow-x: auto;\n scroll-snap-type: x mandatory;\n gap: 1rem;\n padding: 1rem 0;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none; /* Firefox */\n \n &::-webkit-scrollbar {\n display: none; /* Chrome, Safari */\n }\n }\n`;\n\nconst ProductItem = styled.div`\n /* Desktop: vertical stack with borders */\n @media (min-width: 768px) {\n padding: 2rem 0;\n border-bottom: 1px solid ${colors.text.light || '#d1d5db'};\n\n &:last-child {\n border-bottom: none;\n }\n }\n \n /* Mobile: carousel item */\n @media (max-width: 767px) {\n flex: 0 0 80%; /* CHANGED from 85% - shows more of next card */\n scroll-snap-align: center;\n padding: 0;\n border: none;\n }\n \n /* Very small mobile */\n @media (max-width: 480px) {\n flex: 0 0 85%; /* CHANGED from 90% */\n }\n`;\n\ninterface Product {\n image: string;\n logoImage: string;\n title: string;\n buttonText: string;\n onButtonClick?: () => void;\n titleVariant?: 'h1' | 'h2' | 'h3';\n}\n\ninterface OtherProductsProps {\n headerText: string;\n headerVariant?: 'h1' | 'h2' | 'h3';\n products: Product[];\n headerColor?: ComponentTextColor;\n productTitleColor?: ComponentTextColor;\n productButtonArrowVariant?: 'brand' | 'teal' | 'blue';\n productButtonTextBgVariant?: 'primary' | 'secondary' | 'tertiary' | 'subtle' | 'blue' | 'brand' | 'light' | 'transparent';\n productButtonTextVariant?: \"brand\" | \"blue\" | \"primary\" | \"secondary\" | \"tertiary\" | \"subtle\" | \"light\";\n}\n\nexport const OtherProducts = ({\n headerText,\n headerVariant = 'h1',\n products,\n headerColor = 'brand',\n productTitleColor = 'brand',\n productButtonArrowVariant = 'teal',\n productButtonTextBgVariant = 'brand',\n productButtonTextVariant = 'secondary',\n}: OtherProductsProps) => {\n return (\n <SectionContainer>\n <SectionHeader>\n <Header variant={headerVariant} color={headerColor}>\n {headerText}\n </Header>\n </SectionHeader>\n <ProductsWrapper>\n {products.map((product, index) => (\n <ProductItem key={index}>\n <ProductInfo\n image={product.image}\n logoImage={product.logoImage}\n title={product.title}\n buttonText={product.buttonText}\n onButtonClick={product.onButtonClick}\n titleVariant={product.titleVariant}\n titleColor={productTitleColor}\n buttonArrowVariant={productButtonArrowVariant}\n buttonTextBgVariant={productButtonTextBgVariant}\n buttonTextVariant={productButtonTextVariant}\n />\n </ProductItem>\n ))}\n </ProductsWrapper>\n </SectionContainer>\n );\n};"]}
|