@tollbrothers/blueprint 1.9.1 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import{useLayoutEffect as t,useEffect as o,useMemo as n}from"react";import{_ as e}from"./index-782e0472.js";import{jsx as f}from"react/jsx-runtime";import"next/dynamic";const r=({theme:t})=>e({},t,{typography:e({},Object.keys(t.typography).reduce((o,n,f)=>(0===f&&(o[n]=t.typography[n].font),e({},o,{[n]:e({},t.typography[n],{font:`${t.typography[n].fontStyle} ${t.typography[n].fontWeight} ${t.typography[n].fontSize}/${t.typography[n].lineHeight} ${t.typography[n].fontFamily}`,fontStyle:t.typography[n].fontStyle,fontWeight:t.typography[n].fontWeight,fontSize:t.typography[n].fontSize,lineHeight:t.typography[n].lineHeight,fontFamily:t.typography[n].fontFamily,textDecorationLine:t.typography[n].textDecorationLine,textTransform:t.typography[n].textTransform,margin:t.typography[n].margin})})),{}))}),a="undefined"!=typeof window?t:o;let m,l;function s(t,o=""){const n={};for(const[e,f]of Object.entries(t)){const t=o?`${o}-${e}`:e;"object"==typeof f&&null!==f?Object.assign(n,s(f,t)):n[`--tb-${t}`]=f}return n}const i=t=>{const o=s(r({theme:t}));return`\n:root {\n${Object.entries(o).filter(([t,o])=>!!o).map(([t,o])=>`${t}: ${o};`).join("\n")}\n\n${Object.entries(o).filter(([t,o])=>t.includes("palette")&&o.includes("#")).map(([t,o])=>{return`${t}-RGB: ${n=o,n=n.replace("#",""),`${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}`};`;var n}).join("\n")}\n}\n`};let h;const p=({children:t,theme:o,ThemeContext:e})=>{const s=n(()=>r({theme:o}),[o]);return a(()=>{"undefined"==typeof document||m||(m=document.head.appendChild(document.createElement("style")),m.innerHTML='@import "https://use.typekit.net/loo0pmd.css";\n\n@font-face {\n font-family: \'Domaine\';\n src: local(\'domaine-bold\'), url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff2\') format(\'woff2\'),\n url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff\') format(\'woff\');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \'Domaine\';\n src: local(\'domaine-semibold\'), url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff2\') format(\'woff2\'),\n url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff\') format(\'woff\');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: "Gotham Narrow";\n src: local("GothamNarrSSm-Light"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Light_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Light_Web.woff") format("woff");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: "Gotham Narrow";\n src: local("GothamNarrSSm-Medium"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Medium_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Medium_Web.woff") format("woff");\n font-weight: 500 600;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local("GothamSSm-Book"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Book_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Book_Web.woff") format("woff");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local("GothamNarrSSm-Medium"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Bold_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Bold_Web.woff") format("woff");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n')},[]),(t=>{a(()=>{"undefined"==typeof document||l||(l=document.head.appendChild(document.createElement("style")),l.innerHTML=(t=>{const o=r({theme:t});return`\n ${Object.keys(o.typography).map(t=>`\n.tb-typography-${t}-font {\n font: var(--tb-typography-${t}-font);\n text-decoration-line: var(--tb-typography-${t}-textDecorationLine);\n text-transform: var(--tb-typography-${t}-textTransform);\n}`).join("\n")}`})(t))},[])})(s),(t=>{a(()=>{"undefined"==typeof document||h||(h=document.head.appendChild(document.createElement("style")),h.innerHTML=i(t))},[])})(s),/*#__PURE__*/f(e.Provider,{value:s,children:t})};export{p as default};
2
- //# sourceMappingURL=ThemeProviderClientSide-6351e3ad.js.map
1
+ import{useLayoutEffect as t,useEffect as o,useMemo as n}from"react";import{_ as e}from"./index-b3052cfb.js";import{jsx as f}from"react/jsx-runtime";import"next/dynamic";const r=({theme:t})=>e({},t,{typography:e({},Object.keys(t.typography).reduce((o,n,f)=>(0===f&&(o[n]=t.typography[n].font),e({},o,{[n]:e({},t.typography[n],{font:`${t.typography[n].fontStyle} ${t.typography[n].fontWeight} ${t.typography[n].fontSize}/${t.typography[n].lineHeight} ${t.typography[n].fontFamily}`,fontStyle:t.typography[n].fontStyle,fontWeight:t.typography[n].fontWeight,fontSize:t.typography[n].fontSize,lineHeight:t.typography[n].lineHeight,fontFamily:t.typography[n].fontFamily,textDecorationLine:t.typography[n].textDecorationLine,textTransform:t.typography[n].textTransform,margin:t.typography[n].margin})})),{}))}),a="undefined"!=typeof window?t:o;let m,l;function s(t,o=""){const n={};for(const[e,f]of Object.entries(t)){const t=o?`${o}-${e}`:e;"object"==typeof f&&null!==f?Object.assign(n,s(f,t)):n[`--tb-${t}`]=f}return n}const i=t=>{const o=s(r({theme:t}));return`\n:root {\n${Object.entries(o).filter(([t,o])=>!!o).map(([t,o])=>`${t}: ${o};`).join("\n")}\n\n${Object.entries(o).filter(([t,o])=>t.includes("palette")&&o.includes("#")).map(([t,o])=>{return`${t}-RGB: ${n=o,n=n.replace("#",""),`${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}`};`;var n}).join("\n")}\n}\n`};let h;const p=({children:t,theme:o,ThemeContext:e})=>{const s=n(()=>r({theme:o}),[o]);return a(()=>{"undefined"==typeof document||m||(m=document.head.appendChild(document.createElement("style")),m.innerHTML='@import "https://use.typekit.net/loo0pmd.css";\n\n@font-face {\n font-family: \'Domaine\';\n src: local(\'domaine-bold\'), url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff2\') format(\'woff2\'),\n url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff\') format(\'woff\');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \'Domaine\';\n src: local(\'domaine-semibold\'), url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff2\') format(\'woff2\'),\n url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff\') format(\'woff\');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: "Gotham Narrow";\n src: local("GothamNarrSSm-Light"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Light_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Light_Web.woff") format("woff");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: "Gotham Narrow";\n src: local("GothamNarrSSm-Medium"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Medium_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Medium_Web.woff") format("woff");\n font-weight: 500 600;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local("GothamSSm-Book"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Book_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Book_Web.woff") format("woff");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local("GothamNarrSSm-Medium"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Bold_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Bold_Web.woff") format("woff");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n')},[]),(t=>{a(()=>{"undefined"==typeof document||l||(l=document.head.appendChild(document.createElement("style")),l.innerHTML=(t=>{const o=r({theme:t});return`\n ${Object.keys(o.typography).map(t=>`\n.tb-typography-${t}-font {\n font: var(--tb-typography-${t}-font);\n text-decoration-line: var(--tb-typography-${t}-textDecorationLine);\n text-transform: var(--tb-typography-${t}-textTransform);\n}`).join("\n")}`})(t))},[])})(s),(t=>{a(()=>{"undefined"==typeof document||h||(h=document.head.appendChild(document.createElement("style")),h.innerHTML=i(t))},[])})(s),/*#__PURE__*/f(e.Provider,{value:s,children:t})};export{p as default};
2
+ //# sourceMappingURL=ThemeProviderClientSide-983bfe10.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProviderClientSide-6351e3ad.js","sources":["../src/themes/utils/addFontTokens.js","../src/themes/hooks/useIsomorphicLayoutEffect.js","../src/themes/hooks/useFontFaces.js","../src/themes/hooks/useTypographyClasses.js","../src/themes/utils/flattenToCssVars.js","../src/themes/utils/buildCssVars.js","../src/themes/utils/hexToRGB.js","../src/themes/hooks/useCssVars.js","../src/themes/ThemeProviderClientSide.js","../src/themes/utils/fontFaces.js","../src/themes/utils/buildTypographyClasses.js"],"sourcesContent":["const addFontTokens = ({ theme }) => {\n return {\n ...theme,\n typography: {\n ...Object.keys(theme.typography).reduce((acc, key, index) => {\n if (index === 0) {\n acc[key] = theme.typography[key].font;\n }\n\n return {\n ...acc,\n [key]: {\n ...theme.typography[key],\n font: `${theme.typography[key].fontStyle} ${theme.typography[key].fontWeight} ${theme.typography[key].fontSize}/${theme.typography[key].lineHeight} ${theme.typography[key].fontFamily}`,\n fontStyle: theme.typography[key].fontStyle,\n fontWeight: theme.typography[key].fontWeight,\n fontSize: theme.typography[key].fontSize,\n lineHeight: theme.typography[key].lineHeight,\n fontFamily: theme.typography[key].fontFamily,\n textDecorationLine: theme.typography[key].textDecorationLine,\n textTransform: theme.typography[key].textTransform,\n margin: theme.typography[key].margin,\n },\n };\n }, {}),\n },\n };\n};\n\nexport default addFontTokens;\n","import { useLayoutEffect, useEffect } from 'react';\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\n// source: https://github.com/omgovich/react-colorful/blob/master/src/hooks/useIsomorphicLayoutEffect.ts\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport fontFaces from '../utils/fontFaces';\n\nlet styleElement;\n\nconst useFontFaces = () => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = fontFaces;\n }\n }, []);\n};\n\nexport default useFontFaces;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport buildTypographyClasses from '../utils/buildTypographyClasses';\n\nlet styleElement;\n\nconst useTypographyClasses = (decoratedTheme) => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = buildTypographyClasses(decoratedTheme);\n }\n }, []);\n};\n\nexport default useTypographyClasses;\n","function flattenToCssVars(obj, parentKey = '') {\n const result = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const newKey = parentKey ? `${parentKey}-${key}` : key;\n\n if (typeof value === 'object' && value !== null) {\n Object.assign(result, flattenToCssVars(value, newKey));\n } else {\n result[`--tb-${newKey}`] = value;\n }\n }\n\n return result;\n}\n\nexport default flattenToCssVars;\n","import hexToRgba from './hexToRGB';\nimport flattenToCssVars from './flattenToCssVars';\nimport addFontTokens from './addFontTokens';\n\nconst buildCssVars = (theme) => {\n const cssVarsObject = flattenToCssVars(addFontTokens({ theme }));\n\n return `\n:root {\n${Object.entries(cssVarsObject)\n .filter(([key, value]) => !!value)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n')}\n\n${Object.entries(cssVarsObject)\n .filter(([key, value]) => key.includes('palette') && value.includes('#'))\n .map(([key, value]) => {\n return `${key}-RGB: ${hexToRgba(value)};`;\n })\n .join('\\n')}\n}\n`;\n};\n\nexport default buildCssVars;\n","const hexToRgba = (hex) => {\n hex = hex.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n return `${r}, ${g}, ${b}`;\n};\n\nexport default hexToRgba;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport buildCssVars from '../utils/buildCssVars';\n\nlet styleElement;\n\nconst useCssVars = (decoratedTheme) => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = buildCssVars(decoratedTheme);\n }\n }, []);\n};\n\nexport default useCssVars;\n","import { useMemo } from 'react';\nimport addFontTokens from './utils/addFontTokens';\nimport useFontFaces from './hooks/useFontFaces';\nimport useTypographyClasses from './hooks/useTypographyClasses';\nimport useCssVars from './hooks/useCssVars';\n\nconst ThemeProviderClientSide = ({ children, theme, ThemeContext }) => {\n const decoratedTheme = useMemo(() => {\n return addFontTokens({ theme });\n }, [theme]);\n\n useFontFaces();\n useTypographyClasses(decoratedTheme);\n useCssVars(decoratedTheme);\n\n return <ThemeContext.Provider value={decoratedTheme}>{children}</ThemeContext.Provider>;\n};\n\nexport default ThemeProviderClientSide;\n","const fontFaces = `@import \"https://use.typekit.net/loo0pmd.css\";\n\n@font-face {\n font-family: 'Domaine';\n src: local('domaine-bold'), url('https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff2') format('woff2'),\n url('https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff') format('woff');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Domaine';\n src: local('domaine-semibold'), url('https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff2') format('woff2'),\n url('https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff') format('woff');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \"Gotham Narrow\";\n src: local(\"GothamNarrSSm-Light\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Light_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Light_Web.woff\") format(\"woff\");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \"Gotham Narrow\";\n src: local(\"GothamNarrSSm-Medium\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Medium_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Medium_Web.woff\") format(\"woff\");\n font-weight: 500 600;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local(\"GothamSSm-Book\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Book_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Book_Web.woff\") format(\"woff\");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local(\"GothamNarrSSm-Medium\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Bold_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Bold_Web.woff\") format(\"woff\");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n`;\n\nexport default fontFaces;\n","import addFontTokens from './addFontTokens';\n\nconst buildTypographyClasses = (theme) => {\n const decoratedTheme = addFontTokens({ theme });\n return `\n ${Object.keys(decoratedTheme.typography)\n .map((typographyKey) => {\n return `\n.tb-typography-${typographyKey}-font {\n font: var(--tb-typography-${typographyKey}-font);\n text-decoration-line: var(--tb-typography-${typographyKey}-textDecorationLine);\n text-transform: var(--tb-typography-${typographyKey}-textTransform);\n}`;\n })\n .join('\\n')}`;\n};\n\nexport default buildTypographyClasses;\n"],"names":["addFontTokens","theme","_extends","typography","Object","keys","reduce","acc","key","index","font","fontStyle","fontWeight","fontSize","lineHeight","fontFamily","textDecorationLine","textTransform","margin","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","styleElement","flattenToCssVars","obj","parentKey","result","value","entries","newKey","assign","buildCssVars","cssVarsObject","filter","map","join","includes","hex","replace","parseInt","substring","ThemeProviderClientSide","children","ThemeContext","decoratedTheme","useMemo","document","head","appendChild","createElement","innerHTML","typographyKey","buildTypographyClasses","useTypographyClasses","useCssVars","_jsx","Provider"],"mappings":"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"}
1
+ {"version":3,"file":"ThemeProviderClientSide-983bfe10.js","sources":["../src/themes/utils/addFontTokens.js","../src/themes/hooks/useIsomorphicLayoutEffect.js","../src/themes/hooks/useFontFaces.js","../src/themes/hooks/useTypographyClasses.js","../src/themes/utils/flattenToCssVars.js","../src/themes/utils/buildCssVars.js","../src/themes/utils/hexToRGB.js","../src/themes/hooks/useCssVars.js","../src/themes/ThemeProviderClientSide.js","../src/themes/utils/fontFaces.js","../src/themes/utils/buildTypographyClasses.js"],"sourcesContent":["const addFontTokens = ({ theme }) => {\n return {\n ...theme,\n typography: {\n ...Object.keys(theme.typography).reduce((acc, key, index) => {\n if (index === 0) {\n acc[key] = theme.typography[key].font;\n }\n\n return {\n ...acc,\n [key]: {\n ...theme.typography[key],\n font: `${theme.typography[key].fontStyle} ${theme.typography[key].fontWeight} ${theme.typography[key].fontSize}/${theme.typography[key].lineHeight} ${theme.typography[key].fontFamily}`,\n fontStyle: theme.typography[key].fontStyle,\n fontWeight: theme.typography[key].fontWeight,\n fontSize: theme.typography[key].fontSize,\n lineHeight: theme.typography[key].lineHeight,\n fontFamily: theme.typography[key].fontFamily,\n textDecorationLine: theme.typography[key].textDecorationLine,\n textTransform: theme.typography[key].textTransform,\n margin: theme.typography[key].margin,\n },\n };\n }, {}),\n },\n };\n};\n\nexport default addFontTokens;\n","import { useLayoutEffect, useEffect } from 'react';\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\n// source: https://github.com/omgovich/react-colorful/blob/master/src/hooks/useIsomorphicLayoutEffect.ts\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport fontFaces from '../utils/fontFaces';\n\nlet styleElement;\n\nconst useFontFaces = () => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = fontFaces;\n }\n }, []);\n};\n\nexport default useFontFaces;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport buildTypographyClasses from '../utils/buildTypographyClasses';\n\nlet styleElement;\n\nconst useTypographyClasses = (decoratedTheme) => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = buildTypographyClasses(decoratedTheme);\n }\n }, []);\n};\n\nexport default useTypographyClasses;\n","function flattenToCssVars(obj, parentKey = '') {\n const result = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const newKey = parentKey ? `${parentKey}-${key}` : key;\n\n if (typeof value === 'object' && value !== null) {\n Object.assign(result, flattenToCssVars(value, newKey));\n } else {\n result[`--tb-${newKey}`] = value;\n }\n }\n\n return result;\n}\n\nexport default flattenToCssVars;\n","import hexToRgba from './hexToRGB';\nimport flattenToCssVars from './flattenToCssVars';\nimport addFontTokens from './addFontTokens';\n\nconst buildCssVars = (theme) => {\n const cssVarsObject = flattenToCssVars(addFontTokens({ theme }));\n\n return `\n:root {\n${Object.entries(cssVarsObject)\n .filter(([key, value]) => !!value)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n')}\n\n${Object.entries(cssVarsObject)\n .filter(([key, value]) => key.includes('palette') && value.includes('#'))\n .map(([key, value]) => {\n return `${key}-RGB: ${hexToRgba(value)};`;\n })\n .join('\\n')}\n}\n`;\n};\n\nexport default buildCssVars;\n","const hexToRgba = (hex) => {\n hex = hex.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n return `${r}, ${g}, ${b}`;\n};\n\nexport default hexToRgba;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport buildCssVars from '../utils/buildCssVars';\n\nlet styleElement;\n\nconst useCssVars = (decoratedTheme) => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = buildCssVars(decoratedTheme);\n }\n }, []);\n};\n\nexport default useCssVars;\n","import { useMemo } from 'react';\nimport addFontTokens from './utils/addFontTokens';\nimport useFontFaces from './hooks/useFontFaces';\nimport useTypographyClasses from './hooks/useTypographyClasses';\nimport useCssVars from './hooks/useCssVars';\n\nconst ThemeProviderClientSide = ({ children, theme, ThemeContext }) => {\n const decoratedTheme = useMemo(() => {\n return addFontTokens({ theme });\n }, [theme]);\n\n useFontFaces();\n useTypographyClasses(decoratedTheme);\n useCssVars(decoratedTheme);\n\n return <ThemeContext.Provider value={decoratedTheme}>{children}</ThemeContext.Provider>;\n};\n\nexport default ThemeProviderClientSide;\n","const fontFaces = `@import \"https://use.typekit.net/loo0pmd.css\";\n\n@font-face {\n font-family: 'Domaine';\n src: local('domaine-bold'), url('https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff2') format('woff2'),\n url('https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff') format('woff');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Domaine';\n src: local('domaine-semibold'), url('https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff2') format('woff2'),\n url('https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff') format('woff');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \"Gotham Narrow\";\n src: local(\"GothamNarrSSm-Light\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Light_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Light_Web.woff\") format(\"woff\");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \"Gotham Narrow\";\n src: local(\"GothamNarrSSm-Medium\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Medium_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Medium_Web.woff\") format(\"woff\");\n font-weight: 500 600;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local(\"GothamSSm-Book\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Book_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Book_Web.woff\") format(\"woff\");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local(\"GothamNarrSSm-Medium\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Bold_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Bold_Web.woff\") format(\"woff\");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n`;\n\nexport default fontFaces;\n","import addFontTokens from './addFontTokens';\n\nconst buildTypographyClasses = (theme) => {\n const decoratedTheme = addFontTokens({ theme });\n return `\n ${Object.keys(decoratedTheme.typography)\n .map((typographyKey) => {\n return `\n.tb-typography-${typographyKey}-font {\n font: var(--tb-typography-${typographyKey}-font);\n text-decoration-line: var(--tb-typography-${typographyKey}-textDecorationLine);\n text-transform: var(--tb-typography-${typographyKey}-textTransform);\n}`;\n })\n .join('\\n')}`;\n};\n\nexport default buildTypographyClasses;\n"],"names":["addFontTokens","theme","_extends","typography","Object","keys","reduce","acc","key","index","font","fontStyle","fontWeight","fontSize","lineHeight","fontFamily","textDecorationLine","textTransform","margin","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","styleElement","flattenToCssVars","obj","parentKey","result","value","entries","newKey","assign","buildCssVars","cssVarsObject","filter","map","join","includes","hex","replace","parseInt","substring","ThemeProviderClientSide","children","ThemeContext","decoratedTheme","useMemo","document","head","appendChild","createElement","innerHTML","typographyKey","buildTypographyClasses","useTypographyClasses","useCssVars","_jsx","Provider"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var t=require("react"),n=require("./index-bcb89d9d.js"),o=require("react/jsx-runtime");require("next/dynamic");var e,r,f=function(t){var o=t.theme;return n._extends({},o,{typography:n._extends({},Object.keys(o.typography).reduce(function(t,e,r){var f;return 0===r&&(t[e]=o.typography[e].font),n._extends({},t,((f={})[e]=n._extends({},o.typography[e],{font:o.typography[e].fontStyle+" "+o.typography[e].fontWeight+" "+o.typography[e].fontSize+"/"+o.typography[e].lineHeight+" "+o.typography[e].fontFamily,fontStyle:o.typography[e].fontStyle,fontWeight:o.typography[e].fontWeight,fontSize:o.typography[e].fontSize,lineHeight:o.typography[e].lineHeight,fontFamily:o.typography[e].fontFamily,textDecorationLine:o.typography[e].textDecorationLine,textTransform:o.typography[e].textTransform,margin:o.typography[e].margin}),f))},{}))})},a="undefined"!=typeof window?t.useLayoutEffect:t.useEffect;function m(t,n){void 0===n&&(n="");for(var o={},e=0,r=Object.entries(t);e<r.length;e++){var f=r[e],a=f[0],i=f[1],l=n?n+"-"+a:a;"object"==typeof i&&null!==i?Object.assign(o,m(i,l)):o["--tb-"+l]=i}return o}var i,l=function(t){var n=m(f({theme:t}));return"\n:root {\n"+Object.entries(n).filter(function(t){return!!t[1]}).map(function(t){return t[0]+": "+t[1]+";"}).join("\n")+"\n\n"+Object.entries(n).filter(function(t){var n=t[1];return t[0].includes("palette")&&n.includes("#")}).map(function(t){var n;return t[0]+"-RGB: "+(n=(n=t[1]).replace("#",""),parseInt(n.substring(0,2),16)+", "+parseInt(n.substring(2,4),16)+", "+parseInt(n.substring(4,6),16)+";")}).join("\n")+"\n}\n"};exports.default=function(n){var m=n.children,s=n.theme,h=n.ThemeContext,c=t.useMemo(function(){return f({theme:s})},[s]);return a(function(){"undefined"==typeof document||e||((e=document.head.appendChild(document.createElement("style"))).innerHTML='@import "https://use.typekit.net/loo0pmd.css";\n\n@font-face {\n font-family: \'Domaine\';\n src: local(\'domaine-bold\'), url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff2\') format(\'woff2\'),\n url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff\') format(\'woff\');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \'Domaine\';\n src: local(\'domaine-semibold\'), url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff2\') format(\'woff2\'),\n url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff\') format(\'woff\');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: "Gotham Narrow";\n src: local("GothamNarrSSm-Light"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Light_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Light_Web.woff") format("woff");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: "Gotham Narrow";\n src: local("GothamNarrSSm-Medium"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Medium_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Medium_Web.woff") format("woff");\n font-weight: 500 600;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local("GothamSSm-Book"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Book_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Book_Web.woff") format("woff");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local("GothamNarrSSm-Medium"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Bold_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Bold_Web.woff") format("woff");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n')},[]),function(t){a(function(){"undefined"==typeof document||r||((r=document.head.appendChild(document.createElement("style"))).innerHTML=function(t){var n=f({theme:t});return"\n "+Object.keys(n.typography).map(function(t){return"\n.tb-typography-"+t+"-font {\n font: var(--tb-typography-"+t+"-font);\n text-decoration-line: var(--tb-typography-"+t+"-textDecorationLine);\n text-transform: var(--tb-typography-"+t+"-textTransform);\n}"}).join("\n")}(t))},[])}(c),function(t){a(function(){"undefined"==typeof document||i||((i=document.head.appendChild(document.createElement("style"))).innerHTML=l(t))},[])}(c),/*#__PURE__*/o.jsx(h.Provider,{value:c,children:m})};
2
- //# sourceMappingURL=ThemeProviderClientSide-6b4dffc4.js.map
1
+ var t=require("react"),n=require("./index-0961ce23.js"),o=require("react/jsx-runtime");require("next/dynamic");var e,r,f=function(t){var o=t.theme;return n._extends({},o,{typography:n._extends({},Object.keys(o.typography).reduce(function(t,e,r){var f;return 0===r&&(t[e]=o.typography[e].font),n._extends({},t,((f={})[e]=n._extends({},o.typography[e],{font:o.typography[e].fontStyle+" "+o.typography[e].fontWeight+" "+o.typography[e].fontSize+"/"+o.typography[e].lineHeight+" "+o.typography[e].fontFamily,fontStyle:o.typography[e].fontStyle,fontWeight:o.typography[e].fontWeight,fontSize:o.typography[e].fontSize,lineHeight:o.typography[e].lineHeight,fontFamily:o.typography[e].fontFamily,textDecorationLine:o.typography[e].textDecorationLine,textTransform:o.typography[e].textTransform,margin:o.typography[e].margin}),f))},{}))})},a="undefined"!=typeof window?t.useLayoutEffect:t.useEffect;function m(t,n){void 0===n&&(n="");for(var o={},e=0,r=Object.entries(t);e<r.length;e++){var f=r[e],a=f[0],i=f[1],l=n?n+"-"+a:a;"object"==typeof i&&null!==i?Object.assign(o,m(i,l)):o["--tb-"+l]=i}return o}var i,l=function(t){var n=m(f({theme:t}));return"\n:root {\n"+Object.entries(n).filter(function(t){return!!t[1]}).map(function(t){return t[0]+": "+t[1]+";"}).join("\n")+"\n\n"+Object.entries(n).filter(function(t){var n=t[1];return t[0].includes("palette")&&n.includes("#")}).map(function(t){var n;return t[0]+"-RGB: "+(n=(n=t[1]).replace("#",""),parseInt(n.substring(0,2),16)+", "+parseInt(n.substring(2,4),16)+", "+parseInt(n.substring(4,6),16)+";")}).join("\n")+"\n}\n"};exports.default=function(n){var m=n.children,s=n.theme,h=n.ThemeContext,c=t.useMemo(function(){return f({theme:s})},[s]);return a(function(){"undefined"==typeof document||e||((e=document.head.appendChild(document.createElement("style"))).innerHTML='@import "https://use.typekit.net/loo0pmd.css";\n\n@font-face {\n font-family: \'Domaine\';\n src: local(\'domaine-bold\'), url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff2\') format(\'woff2\'),\n url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff\') format(\'woff\');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \'Domaine\';\n src: local(\'domaine-semibold\'), url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff2\') format(\'woff2\'),\n url(\'https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff\') format(\'woff\');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: "Gotham Narrow";\n src: local("GothamNarrSSm-Light"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Light_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Light_Web.woff") format("woff");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: "Gotham Narrow";\n src: local("GothamNarrSSm-Medium"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Medium_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Medium_Web.woff") format("woff");\n font-weight: 500 600;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local("GothamSSm-Book"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Book_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Book_Web.woff") format("woff");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local("GothamNarrSSm-Medium"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Bold_Web.woff2") format("woff2"),\n url("https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Bold_Web.woff") format("woff");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n')},[]),function(t){a(function(){"undefined"==typeof document||r||((r=document.head.appendChild(document.createElement("style"))).innerHTML=function(t){var n=f({theme:t});return"\n "+Object.keys(n.typography).map(function(t){return"\n.tb-typography-"+t+"-font {\n font: var(--tb-typography-"+t+"-font);\n text-decoration-line: var(--tb-typography-"+t+"-textDecorationLine);\n text-transform: var(--tb-typography-"+t+"-textTransform);\n}"}).join("\n")}(t))},[])}(c),function(t){a(function(){"undefined"==typeof document||i||((i=document.head.appendChild(document.createElement("style"))).innerHTML=l(t))},[])}(c),/*#__PURE__*/o.jsx(h.Provider,{value:c,children:m})};
2
+ //# sourceMappingURL=ThemeProviderClientSide-e21be6f3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProviderClientSide-6b4dffc4.js","sources":["../src/themes/utils/addFontTokens.js","../src/themes/hooks/useFontFaces.js","../src/themes/hooks/useTypographyClasses.js","../src/themes/hooks/useIsomorphicLayoutEffect.js","../src/themes/utils/flattenToCssVars.js","../src/themes/utils/buildCssVars.js","../src/themes/hooks/useCssVars.js","../src/themes/utils/hexToRGB.js","../src/themes/ThemeProviderClientSide.js","../src/themes/utils/fontFaces.js","../src/themes/utils/buildTypographyClasses.js"],"sourcesContent":["const addFontTokens = ({ theme }) => {\n return {\n ...theme,\n typography: {\n ...Object.keys(theme.typography).reduce((acc, key, index) => {\n if (index === 0) {\n acc[key] = theme.typography[key].font;\n }\n\n return {\n ...acc,\n [key]: {\n ...theme.typography[key],\n font: `${theme.typography[key].fontStyle} ${theme.typography[key].fontWeight} ${theme.typography[key].fontSize}/${theme.typography[key].lineHeight} ${theme.typography[key].fontFamily}`,\n fontStyle: theme.typography[key].fontStyle,\n fontWeight: theme.typography[key].fontWeight,\n fontSize: theme.typography[key].fontSize,\n lineHeight: theme.typography[key].lineHeight,\n fontFamily: theme.typography[key].fontFamily,\n textDecorationLine: theme.typography[key].textDecorationLine,\n textTransform: theme.typography[key].textTransform,\n margin: theme.typography[key].margin,\n },\n };\n }, {}),\n },\n };\n};\n\nexport default addFontTokens;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport fontFaces from '../utils/fontFaces';\n\nlet styleElement;\n\nconst useFontFaces = () => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = fontFaces;\n }\n }, []);\n};\n\nexport default useFontFaces;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport buildTypographyClasses from '../utils/buildTypographyClasses';\n\nlet styleElement;\n\nconst useTypographyClasses = (decoratedTheme) => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = buildTypographyClasses(decoratedTheme);\n }\n }, []);\n};\n\nexport default useTypographyClasses;\n","import { useLayoutEffect, useEffect } from 'react';\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\n// source: https://github.com/omgovich/react-colorful/blob/master/src/hooks/useIsomorphicLayoutEffect.ts\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","function flattenToCssVars(obj, parentKey = '') {\n const result = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const newKey = parentKey ? `${parentKey}-${key}` : key;\n\n if (typeof value === 'object' && value !== null) {\n Object.assign(result, flattenToCssVars(value, newKey));\n } else {\n result[`--tb-${newKey}`] = value;\n }\n }\n\n return result;\n}\n\nexport default flattenToCssVars;\n","import hexToRgba from './hexToRGB';\nimport flattenToCssVars from './flattenToCssVars';\nimport addFontTokens from './addFontTokens';\n\nconst buildCssVars = (theme) => {\n const cssVarsObject = flattenToCssVars(addFontTokens({ theme }));\n\n return `\n:root {\n${Object.entries(cssVarsObject)\n .filter(([key, value]) => !!value)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n')}\n\n${Object.entries(cssVarsObject)\n .filter(([key, value]) => key.includes('palette') && value.includes('#'))\n .map(([key, value]) => {\n return `${key}-RGB: ${hexToRgba(value)};`;\n })\n .join('\\n')}\n}\n`;\n};\n\nexport default buildCssVars;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport buildCssVars from '../utils/buildCssVars';\n\nlet styleElement;\n\nconst useCssVars = (decoratedTheme) => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = buildCssVars(decoratedTheme);\n }\n }, []);\n};\n\nexport default useCssVars;\n","const hexToRgba = (hex) => {\n hex = hex.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n return `${r}, ${g}, ${b}`;\n};\n\nexport default hexToRgba;\n","import { useMemo } from 'react';\nimport addFontTokens from './utils/addFontTokens';\nimport useFontFaces from './hooks/useFontFaces';\nimport useTypographyClasses from './hooks/useTypographyClasses';\nimport useCssVars from './hooks/useCssVars';\n\nconst ThemeProviderClientSide = ({ children, theme, ThemeContext }) => {\n const decoratedTheme = useMemo(() => {\n return addFontTokens({ theme });\n }, [theme]);\n\n useFontFaces();\n useTypographyClasses(decoratedTheme);\n useCssVars(decoratedTheme);\n\n return <ThemeContext.Provider value={decoratedTheme}>{children}</ThemeContext.Provider>;\n};\n\nexport default ThemeProviderClientSide;\n","const fontFaces = `@import \"https://use.typekit.net/loo0pmd.css\";\n\n@font-face {\n font-family: 'Domaine';\n src: local('domaine-bold'), url('https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff2') format('woff2'),\n url('https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff') format('woff');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Domaine';\n src: local('domaine-semibold'), url('https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff2') format('woff2'),\n url('https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff') format('woff');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \"Gotham Narrow\";\n src: local(\"GothamNarrSSm-Light\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Light_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Light_Web.woff\") format(\"woff\");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \"Gotham Narrow\";\n src: local(\"GothamNarrSSm-Medium\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Medium_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Medium_Web.woff\") format(\"woff\");\n font-weight: 500 600;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local(\"GothamSSm-Book\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Book_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Book_Web.woff\") format(\"woff\");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local(\"GothamNarrSSm-Medium\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Bold_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Bold_Web.woff\") format(\"woff\");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n`;\n\nexport default fontFaces;\n","import addFontTokens from './addFontTokens';\n\nconst buildTypographyClasses = (theme) => {\n const decoratedTheme = addFontTokens({ theme });\n return `\n ${Object.keys(decoratedTheme.typography)\n .map((typographyKey) => {\n return `\n.tb-typography-${typographyKey}-font {\n font: var(--tb-typography-${typographyKey}-font);\n text-decoration-line: var(--tb-typography-${typographyKey}-textDecorationLine);\n text-transform: var(--tb-typography-${typographyKey}-textTransform);\n}`;\n })\n .join('\\n')}`;\n};\n\nexport default buildTypographyClasses;\n"],"names":["styleElement","addFontTokens","_ref","theme","_extends","typography","Object","keys","reduce","acc","key","index","_extends2","font","fontStyle","fontWeight","fontSize","lineHeight","fontFamily","textDecorationLine","textTransform","margin","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","flattenToCssVars","obj","parentKey","result","_i","_Object$entries","entries","length","_Object$entries$_i","value","newKey","assign","buildCssVars","cssVarsObject","filter","map","_ref2","join","_ref3","includes","_ref4","hex","replace","parseInt","substring","b","children","ThemeContext","decoratedTheme","useMemo","document","head","appendChild","createElement","innerHTML","typographyKey","buildTypographyClasses","useTypographyClasses","useCssVars","_jsx","Provider"],"mappings":"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"}
1
+ {"version":3,"file":"ThemeProviderClientSide-e21be6f3.js","sources":["../src/themes/utils/addFontTokens.js","../src/themes/hooks/useFontFaces.js","../src/themes/hooks/useTypographyClasses.js","../src/themes/hooks/useIsomorphicLayoutEffect.js","../src/themes/utils/flattenToCssVars.js","../src/themes/utils/buildCssVars.js","../src/themes/hooks/useCssVars.js","../src/themes/utils/hexToRGB.js","../src/themes/ThemeProviderClientSide.js","../src/themes/utils/fontFaces.js","../src/themes/utils/buildTypographyClasses.js"],"sourcesContent":["const addFontTokens = ({ theme }) => {\n return {\n ...theme,\n typography: {\n ...Object.keys(theme.typography).reduce((acc, key, index) => {\n if (index === 0) {\n acc[key] = theme.typography[key].font;\n }\n\n return {\n ...acc,\n [key]: {\n ...theme.typography[key],\n font: `${theme.typography[key].fontStyle} ${theme.typography[key].fontWeight} ${theme.typography[key].fontSize}/${theme.typography[key].lineHeight} ${theme.typography[key].fontFamily}`,\n fontStyle: theme.typography[key].fontStyle,\n fontWeight: theme.typography[key].fontWeight,\n fontSize: theme.typography[key].fontSize,\n lineHeight: theme.typography[key].lineHeight,\n fontFamily: theme.typography[key].fontFamily,\n textDecorationLine: theme.typography[key].textDecorationLine,\n textTransform: theme.typography[key].textTransform,\n margin: theme.typography[key].margin,\n },\n };\n }, {}),\n },\n };\n};\n\nexport default addFontTokens;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport fontFaces from '../utils/fontFaces';\n\nlet styleElement;\n\nconst useFontFaces = () => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = fontFaces;\n }\n }, []);\n};\n\nexport default useFontFaces;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport buildTypographyClasses from '../utils/buildTypographyClasses';\n\nlet styleElement;\n\nconst useTypographyClasses = (decoratedTheme) => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = buildTypographyClasses(decoratedTheme);\n }\n }, []);\n};\n\nexport default useTypographyClasses;\n","import { useLayoutEffect, useEffect } from 'react';\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\n// source: https://github.com/omgovich/react-colorful/blob/master/src/hooks/useIsomorphicLayoutEffect.ts\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","function flattenToCssVars(obj, parentKey = '') {\n const result = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const newKey = parentKey ? `${parentKey}-${key}` : key;\n\n if (typeof value === 'object' && value !== null) {\n Object.assign(result, flattenToCssVars(value, newKey));\n } else {\n result[`--tb-${newKey}`] = value;\n }\n }\n\n return result;\n}\n\nexport default flattenToCssVars;\n","import hexToRgba from './hexToRGB';\nimport flattenToCssVars from './flattenToCssVars';\nimport addFontTokens from './addFontTokens';\n\nconst buildCssVars = (theme) => {\n const cssVarsObject = flattenToCssVars(addFontTokens({ theme }));\n\n return `\n:root {\n${Object.entries(cssVarsObject)\n .filter(([key, value]) => !!value)\n .map(([key, value]) => `${key}: ${value};`)\n .join('\\n')}\n\n${Object.entries(cssVarsObject)\n .filter(([key, value]) => key.includes('palette') && value.includes('#'))\n .map(([key, value]) => {\n return `${key}-RGB: ${hexToRgba(value)};`;\n })\n .join('\\n')}\n}\n`;\n};\n\nexport default buildCssVars;\n","import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport buildCssVars from '../utils/buildCssVars';\n\nlet styleElement;\n\nconst useCssVars = (decoratedTheme) => {\n useIsomorphicLayoutEffect(() => {\n if (typeof document !== 'undefined' && !styleElement) {\n styleElement = document.head.appendChild(document.createElement('style'));\n styleElement.innerHTML = buildCssVars(decoratedTheme);\n }\n }, []);\n};\n\nexport default useCssVars;\n","const hexToRgba = (hex) => {\n hex = hex.replace('#', '');\n const r = parseInt(hex.substring(0, 2), 16);\n const g = parseInt(hex.substring(2, 4), 16);\n const b = parseInt(hex.substring(4, 6), 16);\n return `${r}, ${g}, ${b}`;\n};\n\nexport default hexToRgba;\n","import { useMemo } from 'react';\nimport addFontTokens from './utils/addFontTokens';\nimport useFontFaces from './hooks/useFontFaces';\nimport useTypographyClasses from './hooks/useTypographyClasses';\nimport useCssVars from './hooks/useCssVars';\n\nconst ThemeProviderClientSide = ({ children, theme, ThemeContext }) => {\n const decoratedTheme = useMemo(() => {\n return addFontTokens({ theme });\n }, [theme]);\n\n useFontFaces();\n useTypographyClasses(decoratedTheme);\n useCssVars(decoratedTheme);\n\n return <ThemeContext.Provider value={decoratedTheme}>{children}</ThemeContext.Provider>;\n};\n\nexport default ThemeProviderClientSide;\n","const fontFaces = `@import \"https://use.typekit.net/loo0pmd.css\";\n\n@font-face {\n font-family: 'Domaine';\n src: local('domaine-bold'), url('https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff2') format('woff2'),\n url('https://cdn.tollbrothers.com/fonts/domaine/domaine-bold.woff') format('woff');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Domaine';\n src: local('domaine-semibold'), url('https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff2') format('woff2'),\n url('https://cdn.tollbrothers.com/fonts/domaine/domaine-display-web-semibold.woff') format('woff');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \"Gotham Narrow\";\n src: local(\"GothamNarrSSm-Light\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Light_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Light_Web.woff\") format(\"woff\");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: \"Gotham Narrow\";\n src: local(\"GothamNarrSSm-Medium\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamNarrSSm-Medium_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamNarrSSm-Medium_Web.woff\") format(\"woff\");\n font-weight: 500 600;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local(\"GothamSSm-Book\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Book_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Book_Web.woff\") format(\"woff\");\n font-weight: 200 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: Gotham;\n src: local(\"GothamNarrSSm-Medium\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff2/GothamSSm-Bold_Web.woff2\") format(\"woff2\"),\n url(\"https://cdn.tollbrothers.com/fonts/gotham/woff/GothamSSm-Bold_Web.woff\") format(\"woff\");\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n`;\n\nexport default fontFaces;\n","import addFontTokens from './addFontTokens';\n\nconst buildTypographyClasses = (theme) => {\n const decoratedTheme = addFontTokens({ theme });\n return `\n ${Object.keys(decoratedTheme.typography)\n .map((typographyKey) => {\n return `\n.tb-typography-${typographyKey}-font {\n font: var(--tb-typography-${typographyKey}-font);\n text-decoration-line: var(--tb-typography-${typographyKey}-textDecorationLine);\n text-transform: var(--tb-typography-${typographyKey}-textTransform);\n}`;\n })\n .join('\\n')}`;\n};\n\nexport default buildTypographyClasses;\n"],"names":["styleElement","addFontTokens","_ref","theme","_extends","typography","Object","keys","reduce","acc","key","index","_extends2","font","fontStyle","fontWeight","fontSize","lineHeight","fontFamily","textDecorationLine","textTransform","margin","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","flattenToCssVars","obj","parentKey","result","_i","_Object$entries","entries","length","_Object$entries$_i","value","newKey","assign","buildCssVars","cssVarsObject","filter","map","_ref2","join","_ref3","includes","_ref4","hex","replace","parseInt","substring","b","children","ThemeContext","decoratedTheme","useMemo","document","head","appendChild","createElement","innerHTML","typographyKey","buildTypographyClasses","useTypographyClasses","useCssVars","_jsx","Provider"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=require("react/jsx-runtime"),t=require("next/dynamic"),a=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},i.apply(null,arguments)}function l(e,t){if(null==e)return{};var a={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;a[n]=e[n]}return a}var o={button:"_QyFC7",withIcon:"_Q-XwQ",sizeBase:"_RP0xS",sizeSmall:"_GCkHu",sizeLarge:"_rmhWl",label:"_2skHL",icon:"_WeewY",filledBase:"_fQmYk",filledHover:"_Twfo7",filledPressed:"_Fy9ZW",filledDisabled:"_3bAVP",fullWidth:"_vHH46",ghostBase:"_U-0SR",ghostHover:"_dx70d",ghostPressed:"_5tFFt",ghostDisabled:"_ahhcu"},s=["label","size","priority","state","iconPosition","icon","fullWidth","className"],r={base:o.sizeBase,small:o.sizeSmall,large:o.sizeLarge},c={A:{base:o.filledBase,hover:o.filledHover,pressed:o.filledPressed,disabled:o.filledDisabled},B:{base:o.ghostBase,hover:o.ghostHover,pressed:o.ghostPressed,disabled:o.ghostDisabled}},d={button:"_03TeW",label:"_yhVaM",sizeBase:"_CffiR",sizeSmall:"_4v19f",sizeLarge:"_C3Yo3",fullWidth:"_IRnfK",lightBase:"_kiU8H",lightHover:"_IuP8c",lightPressed:"_YzKYj",lightDisabled:"_JTIq4",darkBase:"_XreCj",darkHover:"_M9gir",darkPressed:"_pRxTU",darkDisabled:"_3qu5V",withIcon:"_Rdp18",icon:"_4Shh8"},f=["label","size","bg","state","iconPosition","icon","className","fullWidth"],u={base:d.sizeBase,small:d.sizeSmall,large:d.sizeLarge},h={Light:{base:d.lightBase,hover:d.lightHover,pressed:d.lightPressed,disabled:d.lightDisabled},Dark:{base:d.darkBase,hover:d.darkHover,pressed:d.darkPressed,disabled:d.darkDisabled}},m=/*#__PURE__*/n(t).default(function(){return Promise.resolve().then(function(){return require("./ThemeProviderClientSide-e21be6f3.js")})},{ssr:!1}),x=/*#__PURE__*/a.createContext(),p={inputContainer:"_J1gSu",focused:"_pRhyH",disabled:"_XVL8G",placeholder:"_lhDC-",input:"_y6Hs-",inputFieldWrapper:"_yPuVN",stateTag:"_uC4rR",floatingPlaceholder:"_wEmnH",withValue:"_4YcEd"},g={tagError:"_6JFf3",label:"_1IQhJ"},v=["label","children","className"],b=function(t){var a=t.label,n=void 0===a?"Error Message":a,o=t.children,s=t.className,r=void 0===s?"":s,c=l(t,v),d=null!=o?o:n;/*#__PURE__*/return e.jsx("div",i({className:[g.tagError,r].filter(Boolean).join(" ")},c,{children:/*#__PURE__*/e.jsx("span",{className:g.label,children:d})}))},S={tagSuccess:"_2fmo8",label:"_eg1Ue"},B=["label","children","className"],_=function(t){var a=t.label,n=void 0===a?"Success Message":a,o=t.children,s=t.className,r=void 0===s?"":s,c=l(t,B),d=null!=o?o:n;/*#__PURE__*/return e.jsx("div",i({className:[S.tagSuccess,r].filter(Boolean).join(" ")},c,{children:/*#__PURE__*/e.jsx("span",{className:S.label,children:d})}))},y=["fieldLabel","fieldValue","state","className","onChange"],N=/*#__PURE__*/a.forwardRef(function(t,n){var o=t.fieldLabel,s=void 0===o?"Field Label":o,r=t.fieldValue,c=t.state,d=void 0===c?"Base":c,f=t.className,u=void 0===f?"":f,h=t.onChange,m=l(t,y),x=a.useState(!1),g=x[0],v=x[1],S=a.useState(null!=r?r:""),B=S[1],N=void 0!==r,D=N?r:S[0],L="Disabled"===d,H="Base"===d,A="Focused"===d,j="Error"===d,k="Success"===d,z=H&&!L,F=A||"Filled"===d||j||k||H&&(g||Boolean(D)),T=[p.inputContainer,(A||H&&g)&&p.focused,F&&p.withValue,L&&p.disabled,u].filter(Boolean).join(" "),C=[p.placeholder,F&&p.floatingPlaceholder].filter(Boolean).join(" ");/*#__PURE__*/return e.jsxs("div",{className:p.inputFieldWrapper,children:[/*#__PURE__*/e.jsxs("div",{className:T,children:[/*#__PURE__*/e.jsx("input",i({className:p.input,value:N?D:void 0,defaultValue:N?void 0:D,placeholder:" ",disabled:L,readOnly:!z,onFocus:function(){z&&v(!0)},onBlur:function(){z&&v(!1)},onChange:function(e){z&&(N||B(e.target.value),h&&h(e))},ref:n},m)),/*#__PURE__*/e.jsx("label",{className:C,children:s})]}),j&&/*#__PURE__*/e.jsx(b,{className:p.stateTag}),k&&/*#__PURE__*/e.jsx(_,{className:p.stateTag})]})});N.displayName="InputField";var D={textAreaContainer:"_q8HgZ",focused:"_9Eo1w",disabled:"_lHxCa",placeholder:"_Y8LeD",textarea:"_zZCio",textAreaWrapper:"_JvzAT",stateTag:"_mttqw",floatingPlaceholder:"_AEQZL",withValue:"_tygAa"},L=["fieldLabel","fieldValue","state","className","onChange","placeholder","disabled","value","maxLength"],H=/*#__PURE__*/a.forwardRef(function(t,n){var o,s,r=t.fieldLabel,c=t.fieldValue,d=t.state,f=void 0===d?"Base":d,u=t.className,h=void 0===u?"":u,m=t.onChange,x=t.placeholder,p=t.disabled,g=t.value,v=t.maxLength,S=void 0===v?200:v,B=l(t,L),y=a.useState(!1),N=y[0],H=y[1],A=a.useState(null!=(o=null!=c?c:g)?o:""),j=A[1],k=void 0!==c||void 0!==g,z=k?null!=c?c:g:A[0],F="Disabled"===f||p,T="Base"===f,C="Focused"===f,G="Error"===f,w="Success"===f,P=T&&!F,W=C||"Filled"===f||T&&(N||Boolean(z)),M=[D.textAreaContainer,(C||T&&N)&&D.focused,W&&D.withValue,F&&D.disabled,h].filter(Boolean).join(" "),E=[D.placeholder,W&&D.floatingPlaceholder].filter(Boolean).join(" "),I=null!=(s=null!=r?r:x)?s:"Text Label";/*#__PURE__*/return e.jsxs("div",{className:D.textAreaWrapper,children:[/*#__PURE__*/e.jsxs("div",{className:M,children:[/*#__PURE__*/e.jsx("textarea",i({className:D.textarea,onFocus:function(){P&&H(!0)},onBlur:function(){P&&H(!1)},onChange:function(e){P&&(k||j(e.target.value),m&&m(e))},placeholder:" ",disabled:F,readOnly:!P,maxLength:S,value:k?z:void 0,defaultValue:k?void 0:z,ref:n},B)),/*#__PURE__*/e.jsx("label",{className:E,children:I})]}),G&&/*#__PURE__*/e.jsx(b,{className:D.stateTag}),w&&/*#__PURE__*/e.jsx(_,{className:D.stateTag})]})});H.displayName="TextArea";var A={"H1-700":{fontSize:"48px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"60px",letterSpacing:"0.96px",textTransform:"none",textDecorationLine:"none"},"H1-400":{fontSize:"48px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"60px",letterSpacing:"0.96px",textTransform:"none",textDecorationLine:"none"},"H2-700":{fontSize:"40px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"50px",letterSpacing:"0.4px",textTransform:"none",textDecorationLine:"none"},"H2-400":{fontSize:"40px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"50px",letterSpacing:"0.4px",textTransform:"none",textDecorationLine:"none"},"H3-700":{fontSize:"33px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"41px",letterSpacing:"0.33px",textTransform:"none",textDecorationLine:"none"},"H3-400":{fontSize:"33px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"41px",letterSpacing:"0.33px",textTransform:"none",textDecorationLine:"none"},"H4-700":{fontSize:"28px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"35px",letterSpacing:"0.28px",textTransform:"none",textDecorationLine:"none"},"H4-400":{fontSize:"28px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"35px",letterSpacing:"0.28px",textTransform:"none",textDecorationLine:"none"},"H5-700":{fontSize:"23px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"29px",letterSpacing:"0.23px",textTransform:"none",textDecorationLine:"none"},"H5-400":{fontSize:"23px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"29px",letterSpacing:"0.23px",textTransform:"none",textDecorationLine:"none"},"H6-700":{fontSize:"19px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"24px",letterSpacing:"0.19px",textTransform:"none",textDecorationLine:"none"},"H6-400":{fontSize:"19px",fontFamily:"Domaine Display, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"24px",letterSpacing:"0.19px",textTransform:"none",textDecorationLine:"none"},"GothamN-L-700":{fontSize:"18px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"27px",textTransform:"none",textDecorationLine:"none"},"GothamN-L-500":{fontSize:"18px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:500,lineHeight:"27px",textTransform:"none",textDecorationLine:"none"},"GothamN-L-400":{fontSize:"18px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"27px",textTransform:"none",textDecorationLine:"none"},"GothamN-L-300":{fontSize:"18px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:300,lineHeight:"27px",textTransform:"none",textDecorationLine:"none"},"GothamN-B-700":{fontSize:"16px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"24px",textTransform:"none",textDecorationLine:"none"},"GothamN-B-500":{fontSize:"16px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:500,lineHeight:"24px",textTransform:"none",textDecorationLine:"none"},"GothamN-B-400":{fontSize:"16px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"24px",textTransform:"none",textDecorationLine:"none"},"GothamN-B-300":{fontSize:"16px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:300,lineHeight:"24px",textTransform:"none",textDecorationLine:"none"},"GothamN-S-700":{fontSize:"13px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"20px",textTransform:"none",textDecorationLine:"none"},"GothamN-S-500":{fontSize:"13px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:500,lineHeight:"20px",textTransform:"none",textDecorationLine:"none"},"GothamN-S-400":{fontSize:"13px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"20px",textTransform:"none",textDecorationLine:"none"},"GothamN-S-300":{fontSize:"13px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:300,lineHeight:"20px",textTransform:"none",textDecorationLine:"none"},"GothamN-XS-700":{fontSize:"11px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"17px",textTransform:"none",textDecorationLine:"none"},"GothamN-XS-500":{fontSize:"11px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:500,lineHeight:"17px",textTransform:"none",textDecorationLine:"none"},"GothamN-XS-400":{fontSize:"11px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"17px",textTransform:"none",textDecorationLine:"none"},"GothamN-XS-300":{fontSize:"11px",fontFamily:"Gotham Narrow, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:300,lineHeight:"17px",textTransform:"none",textDecorationLine:"none"},"Gotham-L-700":{fontSize:"18px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"24px",textTransform:"none",textDecorationLine:"none"},"Gotham-L-500":{fontSize:"18px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:500,lineHeight:"24px",textTransform:"none",textDecorationLine:"none"},"Gotham-L-400":{fontSize:"18px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"24px",textTransform:"none",textDecorationLine:"none"},"Gotham-L-300":{fontSize:"18px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:300,lineHeight:"24px",textTransform:"none",textDecorationLine:"none"},"Gotham-B-700":{fontSize:"14px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"21px",textTransform:"none",textDecorationLine:"none"},"Gotham-B-500":{fontSize:"14px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:500,lineHeight:"21px",textTransform:"none",textDecorationLine:"none"},"Gotham-B-400":{fontSize:"14px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"21px",textTransform:"none",textDecorationLine:"none"},"Gotham-B-300":{fontSize:"14px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:300,lineHeight:"21px",textTransform:"none",textDecorationLine:"none"},"Gotham-S-700":{fontSize:"12px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"18px",textTransform:"none",textDecorationLine:"none"},"Gotham-S-500":{fontSize:"12px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:500,lineHeight:"18px",textTransform:"none",textDecorationLine:"none"},"Gotham-S-400":{fontSize:"12px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"18px",textTransform:"none",textDecorationLine:"none"},"Gotham-S-300":{fontSize:"12px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:300,lineHeight:"18px",textTransform:"none",textDecorationLine:"none"},"Gotham-XS-700":{fontSize:"11px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"17px",textTransform:"none",textDecorationLine:"none"},"Gotham-XS-500":{fontSize:"11px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:500,lineHeight:"17px",textTransform:"none",textDecorationLine:"none"},"Gotham-XS-400":{fontSize:"11px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:400,lineHeight:"17px",textTransform:"none",textDecorationLine:"none"},"Gotham-XS-300":{fontSize:"11px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:300,lineHeight:"17px",textTransform:"none",textDecorationLine:"none"},Overline:{fontSize:"14px",fontFamily:"Gotham, Helvetica, Arial, sans-serif",fontStyle:"normal",fontWeight:700,lineHeight:"21px",letterSpacing:"0px",textTransform:"uppercase",textDecorationLine:"none"}},j={palette:{TB:{Brand:{Primary:"#0C223F",Medium:"#004876",Accent:"#0070CD",Gray:"#8195A2"},Functional:{Black:"#000000",OffBlack:"#595959",White:"#FFFFFF",OffWhite:"#B5B5B5",DarkGray:"#858585",MedGray:"#D8D8D8",LightGray:"#E9EDF0",GrayOnDark:"rgba(255, 255, 255, 0.2)",Success:"#009D47",SuccessBg:"#E4F6EA",Error:"#A31F34",ErrorBg:"#F7E6E9",ErrorText:"#A42337"},POI:{Food:"#AD3F49",Fitness:"#D78956",Entertainment:"#DBAE60",Parks:"#5E8748",Transportation:"#5C8988",Business:"#2C71C7",Shopping:"#344072",School:"#543D6E"}},State:{AccentHover:"#00437B",AccentPressed:"#005AA4",GrayHover:"#CDD5DA",GrayPressed:"#E6EAEC",Disabled:"var(--tb-palette-TB-Functional-MedGray)"}},spacing:{0:"0",1:"4px",2:"8px",3:"12px",4:"16px",5:"24px",6:"32px",7:"40px",8:"48px",9:"60px"},specsSelector:{height:{base:"40px"}},checkboxRadio:{size:{base:"24px",large:"28px"},stroke:{pressed:"2px"},gap:{radioring:"4px"}},tabs:{gap:{tabToIndicator:"8px",iconToText:"4px",tabsSpacing:"24px"},padding:{hBase:"4px"},size:{icon:"32px"},indicatorHeight:"4px"},toggle:{height:{base:"32px"},hPadding:{base:"20px"}},tag:{padding:{hBase:"16px",vBase:"6px"}},buttons:{CTAButton:{height:{base:"48px",small:"40px",large:"56px"},hPadding:{small:"8px",base:"12px",large:"20px"},gap:{textToIcon:"4px"},stroke:{base:"1px",pressed:"2px"}},pillButton:{height:{base:"32px",small:"28px",large:"40px"},hPadding:{small:"8px",base:"12px",large:"20px"},gap:{textToIcon:"4px"},stroke:{base:"1px",pressed:"2px"},borderRadius:"1000px"}},inputs:{height:{base:"60px"},padding:{hBase:"20px",vBase:"12px",vSmall:"8px"},stroke:{base:"1px",focus:"3px"}},rangeSlider:{width:"343px",trackHeight:"4px",handleSize:"32px",handleRadius:"100px",gap:{indicatorToSlider:"16px",valueToLabel:"4px"},shadow:{basic:"0px 4px 4px rgba(133,133,133,0.15)"}},typography:i({},A,{SemanticPlaceholder:A["Gotham-B-400"],SemanticFloatingPlaceholder:A["Gotham-XS-400"],SemanticInput:A["GothamN-B-500"],SemanticButtonLabel:A["Gotham-B-700"],SemanticButtonTag:A["Gotham-S-700"],SemanticTabLabel:A["Gotham-B-700"]}),globalBrandBorderRadius:"4px"},k={button:"_yAaui",sizeBase:"_UsqaL",label:"_4nckd",withIcon:"_nW5n4",icon:"_4E-08",lightABase:"_TUyEa",lightAHover:"_mk12I",lightAPressed:"_NeX6r",lightADisabled:"_heJaQ",darkABase:"_gmxQ8",darkAHover:"_VXmQZ",darkAPressed:"_Uj-NY",darkADisabled:"_spwQR",lightBBase:"_epiCo",lightBHover:"_eMFh9",lightBPressed:"_AMhH4",lightBDisabled:"_xZ0Dk",darkBBase:"_gaWeb",darkBHover:"_sY0Gm",darkBPressed:"_pJ2ba",darkBDisabled:"_jDWRl"},z=["label","bg","priority","state","iconPosition","icon","className"],F={Light:{A:{base:k.lightABase,hover:k.lightAHover,pressed:k.lightAPressed,disabled:k.lightADisabled},B:{base:k.lightBBase,hover:k.lightBHover,pressed:k.lightBPressed,disabled:k.lightBDisabled}},Dark:{A:{base:k.darkABase,hover:k.darkAHover,pressed:k.darkAPressed,disabled:k.darkADisabled},B:{base:k.darkBBase,hover:k.darkBHover,pressed:k.darkBPressed,disabled:k.darkBDisabled}}},T={button:"_F3bF-",sizeBase:"_LiL6j",sizeSmall:"_Sd72C",sizeLarge:"_ZnQh1",paddingSmall:"_dgvDw",paddingLarge:"_DkIQL",priorityA:"_-KivL",priorityB:"_-JmFi",stateBase:"_bjbCk",stateHover:"_ZDbkl",statePressed:"_1rwIL",stateDisabled:"_-wUm1",textMedBlue:"_ClCSO",textAccentBlue:"_Wrj-m",textBlack:"_r9-H4",textDisabled:"_qoD17",withIcon:"_Z0MwJ",icon:"_1-6v8",label:"_-JxVh"},C=["label","size","iconBool","variant","state","icon","className"],G={Base:T.sizeBase,Small:T.sizeSmall,Large:T.sizeLarge},w={Small:T.paddingSmall,Large:T.paddingLarge},P={MedBlue:T.textMedBlue,AccentBlue:T.textAccentBlue,Black:T.textBlack},W={A:["MedBlue","AccentBlue","Black"],B:["Black"]},M={base:T.stateBase,hover:T.stateHover,pressed:T.statePressed,disabled:T.stateDisabled},E={MedBlue:{priority:"A",contentColor:"MedBlue",padding:"Small"},AccentBlue:{priority:"A",contentColor:"AccentBlue",padding:"Small"},BlackBook:{priority:"B",contentColor:"Black",padding:"Small"},AccentBlueXLarge:{priority:"A",contentColor:"AccentBlue",padding:"Large"}},I={button:"_r0sgi",sizeSmall:"_T56Po",sizeBase:"_mCWe4",sizeLarge:"_-8YHp",paddingSmall:"_JBTg-",paddingBase:"_cSTzk",hasIcon:"_bDXJQ",icon:"_3xSv4",iconImage:"_62puP",stateBase:"_vy1wr",stateHover:"_Wn-0v",statePressed:"_oJc-N",stateDisabled:"_9qDC9",colorMedBlue:"_6DpOD",colorAccentBlue:"_NHVj3",label:"_BP6vk"},R=["label","iconMedBlue","iconDisabled","iconAccentBlue","size","iconBool","contentColor","hPadding","state","className"],O={Small:I.sizeSmall,Base:I.sizeBase,Large:I.sizeLarge},U={base:I.stateBase,hover:I.stateHover,pressed:I.statePressed,disabled:I.stateDisabled},X={MedBlue:I.colorMedBlue,AccentBlue:I.colorAccentBlue},V={Small:I.paddingSmall,Base:I.paddingBase},J={textLink:"_I6BZS",sizeSmall:"_NDdGg",sizeBase:"_rQ06S",sizeLarge:"_F9LjP",lightBase:"_vXdTt",lightHover:"_o-1zX",lightPressed:"_L6zhs",lightDisabled:"_CwJC3",darkBase:"_2AEc1",darkHover:"_Nar7K",darkPressed:"_lMWXj",darkDisabled:"_Fgb6T"},q=["label","children","size","bg","state","href","className","onClick"],Y={base:J.sizeBase,small:J.sizeSmall,large:J.sizeLarge},Q={light:{base:J.lightBase,hover:J.lightHover,pressed:J.lightPressed,disabled:J.lightDisabled},dark:{base:J.darkBase,hover:J.darkHover,pressed:J.darkPressed,disabled:J.darkDisabled}},Z=function(e,t){return e?String(e).toLowerCase():t},K={tabUnit:"_B-sXw",widthFit:"_m8WO0",widthFull:"_MU0a-",content:"_usHzd",contentTextOnly:"_4zZol",icon:"_Fey07",iconStack:"_lU-b9",iconLayer:"_Ujj2U",iconInner:"_JLNSA",iconPlaceholder:"_YZwLX",inactive:"_RlRbm",active:"_eZ-Nq",dark:"_xRU2U",label:"_iT4o1",indicator:"_1AdmG",light:"_xGKCu"},$=function(t){var a=t.label,n=t.state,i=t.icon,l=t.bg,o=t.symbol,s=void 0===o?null:o,r=t.width,c=void 0===r?"fit":r,d=t.className,f=void 0===d?"":d,u=t.onClick,h="Dark"===(void 0===l?"Light":l),m=!(void 0!==n&&!n),x=!(void 0!==i&&!i),p=void 0===a?"Communities":a,g=[K.content,!x&&K.contentTextOnly].filter(Boolean).join(" "),v=/*#__PURE__*/e.jsx("span",s?{className:K.icon,children:/*#__PURE__*/e.jsx("span",{className:K.iconInner,children:s})}:{className:K.icon,children:/*#__PURE__*/e.jsx("span",{className:K.iconPlaceholder})});/*#__PURE__*/return e.jsxs("button",{type:"button",className:[K.tabUnit,h?K.dark:K.light,m?K.active:K.inactive,"full"===c?K.widthFull:K.widthFit,f].filter(Boolean).join(" "),onClick:u,children:[/*#__PURE__*/e.jsxs("div",{className:g,children:[x?v:null,/*#__PURE__*/e.jsx("span",{className:K.label,children:p})]}),/*#__PURE__*/e.jsx("div",{className:K.indicator})]})},ee={tabBar:"_l5yWc",tabsSpaced:"_1WnQG",tabsFull:"_YEFm0",tabButton:"_uaR-L",tabButtonFull:"_IOsL5",tabBarDark:"_qISvx",divider:"_kSK4M",dividerDark:"_Y7vBL"},te=function(e,t){return void 0===t&&(t=0),Array.from({length:e},function(e,a){return{label:"Tab "+String.fromCharCode(65+a+t)}})},ae={checkbox:"_D0D4S",sizeBase:"_agq4P",sizeLarge:"_DF6Y2",box:"_KLUVK",checkmark:"_pjJT2",stateBase:"_2wUVL",stateFocused:"_CEmwb",stateSelected:"_hwXxq",stateDisabled:"_FHJJn"},ne=["size","state","className"],ie={Base:ae.sizeBase,Large:ae.sizeLarge},le={Base:ae.stateBase,Focused:ae.stateFocused,Selected:ae.stateSelected,Disabled:ae.stateDisabled},oe={radioButton:"_dkkHN",sizeSmall:"_Z35a3",sizeLarge:"_qqkzi",ring:"_25Z5a",dot:"_dJXvY",stateBase:"_b6aRe",stateFocused:"_X1W0t",stateSelected:"_CgNBN",stateDisabled:"_p5QrE"},se=["size","state","className"],re={Small:oe.sizeSmall,Large:oe.sizeLarge},ce={Base:oe.stateBase,Focused:oe.stateFocused,Selected:oe.stateSelected,Disabled:oe.stateDisabled},de="_jzFGi",fe="_sxJb-",ue="_FocdS",he=function(e,t,a){return Math.min(Math.max(e,t),a)},me=function(e){if(e>=1e6){var t=e/1e6;return"$"+t.toFixed(t%1==0?0:1)+"m"}var a=e/1e3;return"$"+a.toFixed(a%1==0?0:1)+"k"},xe=3e3,pe=3e5,ge=2e6,ve={specsSelector:"_v0b6u",unit:"_vMLJc",label:"_fWaca",unitSelected:"_8Iq10",unitUnselected:"_-2zUD",unitNull:"_SkLV9",labelSelected:"_QoN4w",labelUnselected:"_mR3EG",labelNull:"_GuYAz"},be=["maxSpecs","className","onSelect"],Se={selected:ve.unitSelected,unselected:ve.unitUnselected,null:ve.unitNull},Be={selected:ve.labelSelected,unselected:ve.labelUnselected,null:ve.labelNull},_e=function(t){var a,n,i=t.label,l=void 0===i?"Any":i,o=t.state,s=t.className,r=void 0===s?"":s,c=t.onSelect,d=t.isInteractive,f=void 0===d||d,u=(n="string"==typeof(a=void 0===o?"selected":o)?a.toLowerCase():"selected",Se[n]?n:"selected"),h=[ve.unit,Se[u],r].filter(Boolean).join(" "),m=[ve.label,Be[u]].filter(Boolean).join(" "),x=!f||"null"===u;/*#__PURE__*/return e.jsx("div",{className:h,role:x?void 0:"button",tabIndex:x?void 0:0,"aria-pressed":"selected"===u||void 0,"aria-disabled":x||void 0,onClick:x?void 0:c,onKeyDown:function(e){x||"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),null==c||c())},children:/*#__PURE__*/e.jsx("span",{className:m,children:l})})},ye=["Any","2+","3+","4+","5+","6+"],Ne={toggleUnit:"_nsXcE",label:"_u7njS",stateOnLight:"_vTeRg",stateOffLight:"_j3rv5",stateOnDark:"_qA7K2",stateOffDark:"_pVJ45"},De=["toggleOn","toggleOff","state","bg","className"];exports.Checkbox=function(t){var n=t.size,o=void 0===n?"Base":n,s=t.state,r=void 0===s?"Base":s,c=t.className,d=void 0===c?"":c,f=l(t,ne),u=function(e){return ie[e]?e:"Base"}(o),h=function(e){return le[e]?e:"Base"}(r),m="Base"===h,x=a.useState("Selected"===h),p=x[0],g=x[1];a.useEffect(function(){g("Selected"===h)},[h]);var v=m?p:"Selected"===h,b="Disabled"===h,S=function(){m&&g(function(e){return!e})};/*#__PURE__*/return e.jsx("div",i({className:[ae.checkbox,ie[u],le[m?v?"Selected":"Base":h],d].filter(Boolean).join(" "),role:"checkbox","aria-checked":v,"aria-disabled":b,tabIndex:m?0:void 0,onClick:m?S:void 0,onKeyDown:function(e){m&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),S()))}},f,{children:/*#__PURE__*/e.jsx("div",{className:ae.box,children:v?/*#__PURE__*/e.jsx("span",{className:ae.checkmark,children:/*#__PURE__*/e.jsx("img",{alt:"",src:"http://localhost:3845/assets/afb09fc9d1fd13013c650d30c8d3cf5ea30d407a.svg"})}):null})}))},exports.ErrorTag=b,exports.InputField=N,exports.PillFillButton=function(t){var a,n,o,s,r,c=t.label,d=void 0===c?"Pill Button":c,f=t.size,u=void 0===f?"Base":f,h=t.iconBool,m=void 0===h?"Null":h,x=t.variant,p=void 0===x?"MedBlue":x,g=t.state,v=void 0===g?"Base":g,b=t.icon,S=void 0===b?null:b,B=t.className,_=void 0===B?"":B,y=l(t,C),N=function(e){return E[e]||E.MedBlue}(p),D=(o=(a={size:u,padding:N.padding,priority:N.priority,contentColor:N.contentColor}).size,s=a.priority,r=a.contentColor,"Large"===(n=a.padding)&&(o="Large",s="A",r="AccentBlue"),"B"===s&&(r="Black"),{size:o,padding:n,priority:s,contentColor:r}),L=G[D.size]||G.Base,H=w[D.padding]||w.Small,A="B"===D.priority?T.priorityB:T.priorityA,j=(null==v||null==v.toLowerCase?void 0:v.toLowerCase())||"base",k=M[j]||M.base,z="disabled"===j,F=W[D.priority]||W.A,I=F.includes(D.contentColor)?D.contentColor:F[0],R=z?T.textDisabled:P[I]||T.textMedBlue,O=(null==m||null==m.toLowerCase?void 0:m.toLowerCase())||"null",U="null"!==O&&!!S,X=[T.button,L,H,A,k,R,U&&T.withIcon,_].filter(Boolean).join(" ");/*#__PURE__*/return e.jsxs("button",i({type:"button",className:X,disabled:z,"aria-disabled":z},y,{children:["left"===O&&U?/*#__PURE__*/e.jsx("span",{className:T.icon,children:S}):null,/*#__PURE__*/e.jsx("span",{className:T.label,children:d}),"right"===O&&U?/*#__PURE__*/e.jsx("span",{className:T.icon,children:S}):null]}))},exports.PillFillStrokeButton=function(t){var a=t.label,n=void 0===a?"Pill Button":a,o=t.iconMedBlue,s=void 0===o?null:o,r=t.iconDisabled,c=void 0===r?null:r,d=t.iconAccentBlue,f=void 0===d?null:d,u=t.size,h=void 0===u?"Base":u,m=t.iconBool,x=void 0===m?"Null":m,p=t.contentColor,g=void 0===p?"MedBlue":p,v=t.hPadding,b=void 0===v?"Base":v,S=t.state,B=void 0===S?"Base":S,_=t.className,y=void 0===_?"":_,N=l(t,R),D=O[h]||O.Base,L=X[g]||X.MedBlue,H=V[b]||V.Base,A=(null==B||null==B.toLowerCase?void 0:B.toLowerCase())||"base",j="disabled"===A,k="Null"!==x,z=[I.button,D,H,L,U[A]||U.base,k&&I.hasIcon,y].filter(Boolean).join(" "),F=("Null"===x?null:j?c:"AccentBlue"===g?f:s)||/*#__PURE__*/e.jsx("img",{alt:"",className:I.iconImage,src:j?"http://localhost:3845/assets/46d35cd0744a8f28b3336e971806fcaaa5ff05bf.svg":"AccentBlue"===g?"http://localhost:3845/assets/13c795ee60876f41ea4865e1a7f0faad16c50029.svg":"http://localhost:3845/assets/7f9b00802e515bf8021382c7420298f6b796552a.svg"});/*#__PURE__*/return e.jsxs("button",i({type:"button",className:z,disabled:j,"aria-disabled":j},N,{children:[k&&"Left"===x&&/*#__PURE__*/e.jsx("span",{className:I.icon,children:F}),/*#__PURE__*/e.jsx("span",{className:I.label,children:n}),k&&"Right"===x&&/*#__PURE__*/e.jsx("span",{className:I.icon,children:F})]}))},exports.PillStrokeButton=function(t){var a,n=t.label,o=void 0===n?"Pill Button":n,s=t.bg,r=void 0===s?"Light":s,c=t.priority,d=void 0===c?"A":c,f=t.state,u=void 0===f?"base":f,h=t.iconPosition,m=void 0===h?"none":h,x=t.icon,p=void 0===x?null:x,g=t.className,v=void 0===g?"":g,b=l(t,z),S=k.sizeBase,B="Dark"===r?"Dark":"Light",_="B"===d?"B":"A",y=(null==u||null==u.toLowerCase?void 0:u.toLowerCase())||"base",N=(null==(a=F[B])||null==(a=a[_])?void 0:a[y])||F.Light.A.base,D="disabled"===y,L="none"!==m&&!!p,H=[k.button,S,N,L&&k.withIcon,v].filter(Boolean).join(" ");/*#__PURE__*/return e.jsxs("button",i({className:H,type:"button",disabled:D,"aria-disabled":D},b,{children:["left"===m&&L?/*#__PURE__*/e.jsx("span",{className:k.icon,children:p}):null,/*#__PURE__*/e.jsx("span",{className:k.label,children:o}),"right"===m&&L?/*#__PURE__*/e.jsx("span",{className:k.icon,children:p}):null]}))},exports.PrimaryCTA=function(t){var a,n=t.label,d=void 0===n?"PCTA":n,f=t.size,u=void 0===f?"base":f,h=t.priority,m=void 0===h?"A":h,x=t.state,p=void 0===x?"base":x,g=t.iconPosition,v=void 0===g?"none":g,b=t.icon,S=void 0===b?null:b,B=t.fullWidth,_=void 0!==B&&B,y=t.className,N=void 0===y?"":y,D=l(t,s),L=(null==(a=c[m])?void 0:a[p])||c.A.base,H="none"!==v&&!!S,A=[o.button,r[u]||r.base,L,H&&o.withIcon,_&&o.fullWidth,N].filter(Boolean).join(" "),j="disabled"===p;/*#__PURE__*/return e.jsxs("button",i({className:A,type:"button",disabled:j,"aria-disabled":j},D,{children:["left"===v&&H?/*#__PURE__*/e.jsx("span",{className:o.icon,children:S}):null,/*#__PURE__*/e.jsx("span",{className:o.label,children:d}),"right"===v&&H?/*#__PURE__*/e.jsx("span",{className:o.icon,children:S}):null]}))},exports.RadioButton=function(t){var n=t.size,o=void 0===n?"Small":n,s=t.state,r=void 0===s?"Base":s,c=t.className,d=void 0===c?"":c,f=l(t,se),u=function(e){return re[e]?e:"Small"}(o),h=function(e){return ce[e]?e:"Base"}(r),m="Base"===h,x=a.useState("Selected"===h),p=x[0],g=x[1];a.useEffect(function(){g("Selected"===h)},[h]);var v="Disabled"===h,b=function(){m&&!p&&g(!0)};/*#__PURE__*/return e.jsx("div",i({className:[oe.radioButton,re[u],ce[m?p?"Selected":"Base":h],d].filter(Boolean).join(" "),role:"radio","aria-checked":p,"aria-disabled":v,tabIndex:m?0:void 0,onClick:m?b:void 0,onKeyDown:function(e){m&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),b()))}},f,{children:/*#__PURE__*/e.jsx("div",{className:oe.ring,children:/*#__PURE__*/e.jsx("span",{className:oe.dot})})}))},exports.RangeSlider=function(t){var n,i,l,o,s,r,c,d,f,u=t.property1,h=void 0===u?"sq. ft.":u,m=t.sqFtRange,x=t.stepSqFt,p=void 0===x?250:x,g=t.priceRange,v=t.stepPrice,b=void 0===v?1e5:v,S=a.useRef(null),B=a.useState(null!=(n=null==m?void 0:m.min)?n:500),_=B[0],y=B[1],N=a.useState(null!=(i=null==m?void 0:m.max)?i:xe),D=N[0],L=N[1],H=a.useState(null!=(l=null==g?void 0:g.min)?l:pe),A=H[0],j=H[1],k=a.useState(null!=(o=null==g?void 0:g.max)?o:ge),z=k[0],F=k[1],T=a.useState(null),C=T[0],G=T[1],w=a.useRef(null),P=a.useRef(null),W=a.useRef(null),M=a.useRef(null),E="price"===h,I=E?null!=(s=null==g?void 0:g.min)?s:pe:null!=(r=null==m?void 0:m.min)?r:500,R=E?null!=(c=null==g?void 0:g.max)?c:ge:null!=(d=null==m?void 0:m.max)?d:xe,O=E?b:p,U=O>0?O:1,X=O>0?(f=O,Math.floor(I/f)*f):I,V=O>0?function(e,t){return Math.ceil(e/t)*t}(R,O):R,J=X<V,q=J?X:E?pe:500,Y=J?V:E?ge:xe,Q=q,Z=Y,K=he(E?A:_,Q,Z-U),$=he(E?z:D,Q+U,Z),ee=Z-Q||1,te=he((K-Q)/ee*100,0,100),ae=he(($-Q)/ee*100,0,100),ne=K+"-"+$,ie=me(K)+" - "+me($);a.useEffect(function(){if(!C){if(E){var e=P.current,t=M.current;return A!==I&&A!==w.current&&A!==W.current||A===q||j(q),z!==R&&z!==e&&z!==t||z===Y||F(Y),w.current=I,P.current=R,W.current=q,void(M.current=Y)}var a=P.current,n=M.current;_!==I&&_!==w.current&&_!==W.current||_===q||y(q),D!==R&&D!==a&&D!==n||D===Y||L(Y),w.current=I,P.current=R,W.current=q,M.current=Y}},[C,z,A,D,_,E,R,I,Y,q]);var le=function(e){var t=S.current;if(!t)return null;var a=t.getBoundingClientRect();if(a.width<=0)return null;var n=he(e-a.left,0,a.width);return function(e,t,a){var n=Math.round((e-t)/a)*a+t;return Math.max(t,n)}(Q+n/a.width*ee,Q,U)},oe=function(e,t){var a=le(e);if(null!==a){var n=null!=t?t:C;if("min"===n){var i=he(a,Q,$-U);E?j(i):y(i)}else if("max"===n){var l=he(a,K+U,Z);E?F(l):L(l)}}},se=function(e){return function(t){G(e),oe(t.clientX,e),t.currentTarget.setPointerCapture(t.pointerId)}},re=function(e){e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),G(null)};/*#__PURE__*/return e.jsx("div",{className:"_n31o-",children:/*#__PURE__*/e.jsxs("div",{className:"_T228V",children:[/*#__PURE__*/e.jsx("div",{className:E?"_kKde-":"_YJstf",children:E?/*#__PURE__*/e.jsx("span",{className:"_5NO6b",children:ie}):/*#__PURE__*/e.jsxs(e.Fragment,{children:[/*#__PURE__*/e.jsx("span",{className:"_x5EUg",children:ne}),/*#__PURE__*/e.jsx("span",{className:"_YI4Sh",children:"sq ft"})]})}),/*#__PURE__*/e.jsxs("div",{className:"_0wuUH",ref:S,onPointerDown:function(e){if(!(e.target instanceof Element&&e.target.closest("."+de))){var t=le(e.clientX);if(!(null===t||t>=$)){var a=he(t,Q,$-U);E?j(a):y(a)}}},onPointerMove:function(e){C&&oe(e.clientX)},onPointerUp:re,onPointerLeave:re,children:[/*#__PURE__*/e.jsx("div",{className:"_hERVt"}),/*#__PURE__*/e.jsx("div",{className:"_JYLzz",style:{left:te+"%",right:100-ae+"%"}}),/*#__PURE__*/e.jsx("div",{className:de,style:{left:te+"%"},onPointerDown:se("min"),children:/*#__PURE__*/e.jsxs("div",{className:fe,children:[/*#__PURE__*/e.jsx("span",{className:ue}),/*#__PURE__*/e.jsx("span",{className:ue}),/*#__PURE__*/e.jsx("span",{className:ue})]})}),/*#__PURE__*/e.jsx("div",{className:de,style:{left:ae+"%"},onPointerDown:se("max"),children:/*#__PURE__*/e.jsxs("div",{className:fe,children:[/*#__PURE__*/e.jsx("span",{className:ue}),/*#__PURE__*/e.jsx("span",{className:ue}),/*#__PURE__*/e.jsx("span",{className:ue})]})})]})]})})},exports.SecondaryCTA=function(t){var a,n=t.label,o=void 0===n?"SCTA":n,s=t.size,r=void 0===s?"base":s,c=t.bg,m=void 0===c?"Light":c,x=t.state,p=void 0===x?"base":x,g=t.iconPosition,v=void 0===g?"none":g,b=t.icon,S=void 0===b?null:b,B=t.className,_=void 0===B?"":B,y=t.fullWidth,N=void 0!==y&&y,D=l(t,f),L=u[r]||u.base,H="Dark"===m?"Dark":"Light",A=(null==p||null==p.toLowerCase?void 0:p.toLowerCase())||"base",j=(null==(a=h[H])?void 0:a[A])||h.Light.base,k="disabled"===A,z="none"!==v&&!!S,F=z?S:null,T=[d.button,L,j,z&&d.withIcon,N&&d.fullWidth,_].filter(Boolean).join(" ");/*#__PURE__*/return e.jsxs("button",i({className:T,type:"button",disabled:k,"aria-disabled":k},D,{children:["left"===v&&z?/*#__PURE__*/e.jsx("span",{className:d.icon,children:F}):null,/*#__PURE__*/e.jsx("span",{className:d.label,children:o}),"right"===v&&z?/*#__PURE__*/e.jsx("span",{className:d.icon,children:F}):null]}))},exports.SpecsSelector=function(t){var n=t.maxSpecs,o=void 0===n?6:n,s=t.className,r=void 0===s?"":s,c=t.onSelect,d=l(t,be),f=a.useMemo(function(){return function(e){if(!Number.isFinite(e))return 6;var t=Math.round(e);return t<1?6:Math.min(t,6)}(o)},[o]),u=a.useState(0),h=u[0],m=u[1],x=[ve.specsSelector,r].filter(Boolean).join(" "),p=a.useMemo(function(){return ye.map(function(e,t){var a=t+1;return{label:0===t&&1===f?"1":e,state:a>f?"null":"unselected",specValue:a}})},[f]);return a.useEffect(function(){h>=f&&m(Math.max(f-1,0))},[f,h]),/*#__PURE__*/e.jsx("div",i({className:x},d,{children:p.map(function(t,a){var n="null"===t.state;/*#__PURE__*/return e.jsx(_e,{label:t.label,state:n?"null":a===h?"selected":"unselected",isInteractive:!n,onSelect:function(){m(a),null==c||c(t,a)}},t.specValue+"-"+a)})}))},exports.SuccessTag=_,exports.TabBar=function(t){var n=t.iconBool,i=void 0!==n&&n,l=t.bg,o=void 0===l?"Light":l,s=t.alignment,r=void 0===s?"fitLeft":s,c=t.tabCount,d=void 0===c?3:c,f=t.tabLabels,u=t.tabs,h=t.className,m=void 0===h?"":h,x=a.useMemo(function(){return function(e){if(!Number.isFinite(e))return 3;var t=Math.round(e);return t<2?2:t>10?10:t}(d)},[d]),p=a.useMemo(function(){return te(x)},[x]),g=a.useMemo(function(){if(null!=u&&u.length)return u.slice(0,x);if(null!=f&&f.length){var e=f.slice(0,x);return e.concat(te(x-e.length,e.length).map(function(e){return e.label})).map(function(e){return{label:e}})}return p},[p,x,f,u]),v=a.useState(0),b=v[0],S=v[1],B="Dark"===o,_=[ee.tabBar,B&&ee.tabBarDark,m].filter(Boolean).join(" "),y="fullCenter"===r,N=y?ee.tabsFull:[ee.tabsSpaced,ee.alignLeft].filter(Boolean).join(" ");/*#__PURE__*/return e.jsxs("div",{className:_,children:[/*#__PURE__*/e.jsx("div",{className:N,style:y?{"--tab-count":g.length}:void 0,children:g.map(function(t,a){/*#__PURE__*/return e.jsx("div",{className:[ee.tabButton,y&&ee.tabButtonFull].filter(Boolean).join(" "),children:/*#__PURE__*/e.jsx($,{label:t.label,symbol:t.symbol,state:a===b,icon:i,bg:o,width:y?"full":"fit",onClick:function(){return function(e){S(e)}(a)}})},t.label+"-"+a)})}),/*#__PURE__*/e.jsx("div",{className:[ee.divider,B&&ee.dividerDark].filter(Boolean).join(" ")})]})},exports.TextArea=H,exports.TextLink=function(t){var a,n=t.label,o=void 0===n?"Text Link":n,s=t.children,r=t.size,c=void 0===r?"base":r,d=t.bg,f=void 0===d?"light":d,u=t.state,h=void 0===u?"base":u,m=t.href,x=void 0===m?"#":m,p=t.className,g=void 0===p?"":p,v=t.onClick,b=l(t,q),S=Z(c,"base"),B=Z(f,"light"),_=Z(h,"base"),y=(null==(a=Q[B])?void 0:a[_])||Q.light.base,N=[J.textLink,Y[S]||Y.base,y,g].filter(Boolean).join(" "),D="disabled"===_;/*#__PURE__*/return e.jsx("a",i({className:N,href:D?void 0:x,"aria-disabled":D,onClick:function(e){if(D)return e.preventDefault(),void e.stopPropagation();v&&v(e)}},b,{children:null!=s?s:o}))},exports.ThemeProvider=function(t){var n=t.children,i=t.theme,l=a.useState(!1),o=l[0],s=l[1];return a.useEffect(function(){s(!0)},[]),o?/*#__PURE__*/e.jsx(m,{theme:i,ThemeContext:x,children:n}):n},exports.ToggleUnit=function(t){var a=t.toggleOn,n=void 0===a?"Toggle Label":a,o=t.toggleOff,s=void 0===o?"Toggle Label":o,r=t.state,c=void 0===r||r,d=t.bg,f=void 0===d?"Light":d,u=t.className,h=void 0===u?"":u,m=l(t,De);/*#__PURE__*/return e.jsx("button",i({type:"button",className:[Ne.toggleUnit,"Light"===f?c?Ne.stateOnLight:Ne.stateOffLight:c?Ne.stateOnDark:Ne.stateOffDark,h].filter(Boolean).join(" ")},m,{children:/*#__PURE__*/e.jsx("span",{className:Ne.label,children:c?n:s})}))},exports._extends=i,exports.defaultTheme=j,exports.useTheme=function(){return a.useContext(x)};
2
+ //# sourceMappingURL=index-0961ce23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-0961ce23.js","sources":["../src/components/PrimaryCTA/PrimaryCTA.js","../src/components/SecondaryCTA/SecondaryCTA.js","../src/themes/ThemeProvider.js","../src/components/Tag/ErrorTag.js","../src/components/Tag/SuccessTag.js","../src/components/InputField/InputField.js","../src/components/TextArea/TextArea.js","../src/themes/default/typography.js","../src/themes/default/theme.js","../src/components/PillStrokeButton/PillStrokeButton.js","../src/components/PillFillButton/PillFillButton.js","../src/components/PillFillStrokeButton/PillFillStrokeButton.js","../src/components/TextLink/TextLink.js","../src/components/TabUnit/TabUnit.js","../src/components/TabBar/TabBar.js","../src/components/Checkbox/Checkbox.js","../src/components/RadioButton/RadioButton.js","../src/components/RangeSlider/RangeSlider.js","../src/components/SpecsSelector/SpecsSelector.js","../src/components/ToggleUnit/ToggleUnit.js"],"sourcesContent":["import styles from './PrimaryCTA.module.scss';\n\nconst SIZE_CLASS = {\n base: styles.sizeBase,\n small: styles.sizeSmall,\n large: styles.sizeLarge,\n};\n\nconst PRIORITY_STATE_CLASS = {\n A: {\n base: styles.filledBase,\n hover: styles.filledHover,\n pressed: styles.filledPressed,\n disabled: styles.filledDisabled,\n },\n B: {\n base: styles.ghostBase,\n hover: styles.ghostHover,\n pressed: styles.ghostPressed,\n disabled: styles.ghostDisabled,\n },\n};\n\n/**\n * Primary CTA button aligned to Figma spec:\n * - size: base (48px) | small (40px) | large (56px)\n * - priority: A (filled) | B (secondary)\n * - state: base | hover | pressed | disabled\n * - iconPosition: left | right | none (icon color inherits label color)\n */\nconst PrimaryCTA = ({\n label = 'PCTA',\n size = 'base',\n priority = 'A',\n state = 'base',\n iconPosition = 'none',\n icon = null,\n fullWidth = false,\n className = '',\n ...rest\n}) => {\n const sizeClass = SIZE_CLASS[size] || SIZE_CLASS.base;\n const visualClass = PRIORITY_STATE_CLASS[priority]?.[state] || PRIORITY_STATE_CLASS.A.base;\n const hasIcon = iconPosition !== 'none' && !!icon;\n\n const buttonClasses = [styles.button, sizeClass, visualClass, hasIcon && styles.withIcon, fullWidth && styles.fullWidth, className]\n .filter(Boolean)\n .join(' ');\n\n const isDisabled = state === 'disabled';\n\n return (\n <button className={buttonClasses} type='button' disabled={isDisabled} aria-disabled={isDisabled} {...rest}>\n {iconPosition === 'left' && hasIcon ? <span className={styles.icon}>{icon}</span> : null}\n <span className={styles.label}>{label}</span>\n {iconPosition === 'right' && hasIcon ? <span className={styles.icon}>{icon}</span> : null}\n </button>\n );\n};\n\nexport default PrimaryCTA;\n","import styles from './SecondaryCTA.module.scss';\n\nconst SIZE_CLASS = {\n base: styles.sizeBase,\n small: styles.sizeSmall,\n large: styles.sizeLarge,\n};\n\nconst STYLE_MAP = {\n Light: {\n base: styles.lightBase,\n hover: styles.lightHover,\n pressed: styles.lightPressed,\n disabled: styles.lightDisabled,\n },\n Dark: {\n base: styles.darkBase,\n hover: styles.darkHover,\n pressed: styles.darkPressed,\n disabled: styles.darkDisabled,\n },\n};\n\n/**\n * Secondary CTA button (outline/ghost) aligned to Figma spec:\n * - size: base (48px) | small (40px) | large (56px)\n * - bg: Light | Dark (sets contrast treatment)\n * - state: base | hover | pressed | disabled\n */\nconst SecondaryCTA = ({\n label = 'SCTA',\n size = 'base',\n bg = 'Light',\n state = 'base',\n iconPosition = 'none',\n icon = null,\n className = '',\n fullWidth = false,\n ...rest\n}) => {\n const sizeClass = SIZE_CLASS[size] || SIZE_CLASS.base;\n const bgKey = bg === 'Dark' ? 'Dark' : 'Light';\n const stateKey = state?.toLowerCase?.() || 'base';\n const visualClass = STYLE_MAP[bgKey]?.[stateKey] || STYLE_MAP.Light.base;\n\n const isDisabled = stateKey === 'disabled';\n const hasIcon = iconPosition !== 'none' && !!icon;\n const iconNode = hasIcon ? icon : null;\n\n const buttonClasses = [styles.button, sizeClass, visualClass, hasIcon && styles.withIcon, fullWidth && styles.fullWidth, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button className={buttonClasses} type='button' disabled={isDisabled} aria-disabled={isDisabled} {...rest}>\n {iconPosition === 'left' && hasIcon ? <span className={styles.icon}>{iconNode}</span> : null}\n <span className={styles.label}>{label}</span>\n {iconPosition === 'right' && hasIcon ? <span className={styles.icon}>{iconNode}</span> : null}\n </button>\n );\n};\n\nexport default SecondaryCTA;\n","import dynamic from 'next/dynamic';\nimport { createContext, useContext, useEffect, useState } from 'react';\nconst ThemeProviderClientSide = dynamic(() => import('./ThemeProviderClientSide'), {\n ssr: false,\n});\n\nconst ThemeContext = createContext();\n\nconst ThemeProvider = ({ children, theme }) => {\n const [clientReady, setClientReady] = useState(false);\n\n useEffect(() => {\n setClientReady(true);\n }, []);\n\n if (!clientReady) {\n return children;\n }\n\n return (\n <ThemeProviderClientSide theme={theme} ThemeContext={ThemeContext}>\n {children}\n </ThemeProviderClientSide>\n );\n};\n\nexport function useTheme() {\n return useContext(ThemeContext);\n}\n\nexport default ThemeProvider;\n","import styles from './ErrorTag.module.scss';\n\nconst ErrorTag = ({ label = 'Error Message', children, className = '', ...rest }) => {\n const content = children ?? label;\n\n return (\n <div className={[styles.tagError, className].filter(Boolean).join(' ')} {...rest}>\n <span className={styles.label}>{content}</span>\n </div>\n );\n};\n\nexport default ErrorTag;\n","import styles from './SuccessTag.module.scss';\n\nconst SuccessTag = ({ label = 'Success Message', children, className = '', ...rest }) => {\n const content = children ?? label;\n\n return (\n <div className={[styles.tagSuccess, className].filter(Boolean).join(' ')} {...rest}>\n <span className={styles.label}>{content}</span>\n </div>\n );\n};\n\nexport default SuccessTag;\n","import { forwardRef, useState } from 'react';\nimport styles from './InputField.module.scss';\nimport ErrorTag from '../Tag/ErrorTag';\nimport SuccessTag from '../Tag/SuccessTag';\n\nconst InputField = forwardRef(\n ({ fieldLabel = 'Field Label', fieldValue, state = 'Base', className = '', onChange, ...props }, ref) => {\n const [isFocused, setIsFocused] = useState(false);\n const [internalValue, setInternalValue] = useState(fieldValue ?? '');\n\n const isControlled = fieldValue !== undefined;\n const value = isControlled ? fieldValue : internalValue;\n const isDisabled = state === 'Disabled';\n const isBaseState = state === 'Base';\n const isFilledState = state === 'Filled';\n const isFocusedState = state === 'Focused';\n const isErrorState = state === 'Error';\n const isSuccessState = state === 'Success';\n const isInteractive = isBaseState && !isDisabled;\n const shouldFloat =\n isFocusedState ||\n isFilledState ||\n isErrorState ||\n isSuccessState ||\n (isBaseState && (isFocused || Boolean(value)));\n const showFocusedStyle = isFocusedState || (isBaseState && isFocused);\n\n const handleFocus = () => {\n if (isInteractive) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = () => {\n if (isInteractive) {\n setIsFocused(false);\n }\n };\n\n const handleChange = (event) => {\n if (!isInteractive) return;\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n const containerClassName = [\n styles.inputContainer,\n showFocusedStyle && styles.focused,\n shouldFloat && styles.withValue,\n isDisabled && styles.disabled,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelClassName = [styles.placeholder, shouldFloat && styles.floatingPlaceholder].filter(Boolean).join(' ');\n\n return (\n <div className={styles.inputFieldWrapper}>\n <div className={containerClassName}>\n <input\n className={styles.input}\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : value}\n placeholder=' '\n disabled={isDisabled}\n readOnly={!isInteractive}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n ref={ref}\n {...props}\n />\n <label className={labelClassName}>{fieldLabel}</label>\n </div>\n {isErrorState && <ErrorTag className={styles.stateTag} />}\n {isSuccessState && <SuccessTag className={styles.stateTag} />}\n </div>\n );\n },\n);\n\n// Add display name for better debugging\nInputField.displayName = 'InputField';\n\nexport default InputField;\n","import { forwardRef, useState } from 'react';\nimport styles from './TextArea.module.scss';\nimport ErrorTag from '../Tag/ErrorTag';\nimport SuccessTag from '../Tag/SuccessTag';\n\nconst TextArea = forwardRef(\n (\n {\n fieldLabel,\n fieldValue,\n state = 'Base',\n className = '',\n onChange,\n placeholder,\n disabled,\n value,\n maxLength = 200,\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n const [internalValue, setInternalValue] = useState(fieldValue ?? value ?? '');\n\n const isControlled = fieldValue !== undefined || value !== undefined;\n const resolvedValue = isControlled ? fieldValue ?? value : internalValue;\n\n const isDisabled = state === 'Disabled' || disabled;\n const isBaseState = state === 'Base';\n const isFilledState = state === 'Filled';\n const isFocusedState = state === 'Focused';\n const isErrorState = state === 'Error';\n const isSuccessState = state === 'Success';\n const isInteractive = isBaseState && !isDisabled;\n const shouldFloat = isFocusedState || isFilledState || (isBaseState && (isFocused || Boolean(resolvedValue)));\n const showFocusedStyle = isFocusedState || (isBaseState && isFocused);\n\n const handleFocus = () => {\n if (isInteractive) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = () => {\n if (isInteractive) {\n setIsFocused(false);\n }\n };\n\n const handleChange = (event) => {\n if (!isInteractive) return;\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n const containerClassName = [\n styles.textAreaContainer,\n showFocusedStyle && styles.focused,\n shouldFloat && styles.withValue,\n isDisabled && styles.disabled,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelClassName = [styles.placeholder, shouldFloat && styles.floatingPlaceholder].filter(Boolean).join(' ');\n const resolvedLabel = fieldLabel ?? placeholder ?? 'Text Label';\n\n return (\n <div className={styles.textAreaWrapper}>\n <div className={containerClassName}>\n <textarea\n className={styles.textarea}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n placeholder=' '\n disabled={isDisabled}\n readOnly={!isInteractive}\n maxLength={maxLength}\n value={isControlled ? resolvedValue : undefined}\n defaultValue={isControlled ? undefined : resolvedValue}\n ref={ref}\n {...props}\n />\n <label className={labelClassName}>{resolvedLabel}</label>\n </div>\n {isErrorState && <ErrorTag className={styles.stateTag} />}\n {isSuccessState && <SuccessTag className={styles.stateTag} />}\n </div>\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n\nexport default TextArea;\n","const typography = {\n // Domaine Display headers (Figma: H1-H6 with 700/400 weights)\n 'H1-700': {\n fontSize: '48px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '60px',\n letterSpacing: '0.96px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H1-400': {\n fontSize: '48px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '60px',\n letterSpacing: '0.96px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H2-700': {\n fontSize: '40px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '50px',\n letterSpacing: '0.4px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H2-400': {\n fontSize: '40px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '50px',\n letterSpacing: '0.4px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H3-700': {\n fontSize: '33px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '41px',\n letterSpacing: '0.33px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H3-400': {\n fontSize: '33px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '41px',\n letterSpacing: '0.33px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H4-700': {\n fontSize: '28px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '35px',\n letterSpacing: '0.28px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H4-400': {\n fontSize: '28px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '35px',\n letterSpacing: '0.28px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H5-700': {\n fontSize: '23px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '29px',\n letterSpacing: '0.23px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H5-400': {\n fontSize: '23px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '29px',\n letterSpacing: '0.23px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H6-700': {\n fontSize: '19px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '24px',\n letterSpacing: '0.19px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'H6-400': {\n fontSize: '19px',\n fontFamily: 'Domaine Display, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '24px',\n letterSpacing: '0.19px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Gotham Narrow - Large (L)\n 'GothamN-L-700': {\n fontSize: '18px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '27px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-L-500': {\n fontSize: '18px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 500,\n lineHeight: '27px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-L-400': {\n fontSize: '18px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '27px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-L-300': {\n fontSize: '18px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 300,\n lineHeight: '27px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Gotham Narrow - Base (B)\n 'GothamN-B-700': {\n fontSize: '16px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '24px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-B-500': {\n fontSize: '16px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 500,\n lineHeight: '24px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-B-400': {\n fontSize: '16px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '24px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-B-300': {\n fontSize: '16px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 300,\n lineHeight: '24px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Gotham Narrow - Small (S)\n 'GothamN-S-700': {\n fontSize: '13px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '20px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-S-500': {\n fontSize: '13px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 500,\n lineHeight: '20px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-S-400': {\n fontSize: '13px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '20px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-S-300': {\n fontSize: '13px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 300,\n lineHeight: '20px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Gotham Narrow - XSmall (XS)\n 'GothamN-XS-700': {\n fontSize: '11px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '17px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-XS-500': {\n fontSize: '11px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 500,\n lineHeight: '17px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-XS-400': {\n fontSize: '11px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '17px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'GothamN-XS-300': {\n fontSize: '11px',\n fontFamily: 'Gotham Narrow, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 300,\n lineHeight: '17px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Gotham (regular width) - Large (L)\n 'Gotham-L-700': {\n fontSize: '18px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '24px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-L-500': {\n fontSize: '18px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 500,\n lineHeight: '24px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-L-400': {\n fontSize: '18px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '24px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-L-300': {\n fontSize: '18px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 300,\n lineHeight: '24px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Gotham - Base (B)\n 'Gotham-B-700': {\n fontSize: '14px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '21px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-B-500': {\n fontSize: '14px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 500,\n lineHeight: '21px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-B-400': {\n fontSize: '14px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '21px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-B-300': {\n fontSize: '14px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 300,\n lineHeight: '21px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Gotham - Small (S)\n 'Gotham-S-700': {\n fontSize: '12px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '18px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-S-500': {\n fontSize: '12px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 500,\n lineHeight: '18px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-S-400': {\n fontSize: '12px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '18px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-S-300': {\n fontSize: '12px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 300,\n lineHeight: '18px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Gotham - XSmall (XS)\n 'Gotham-XS-700': {\n fontSize: '11px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '17px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-XS-500': {\n fontSize: '11px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 500,\n lineHeight: '17px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-XS-400': {\n fontSize: '11px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 400,\n lineHeight: '17px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n 'Gotham-XS-300': {\n fontSize: '11px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 300,\n lineHeight: '17px',\n textTransform: 'none',\n textDecorationLine: 'none',\n },\n\n // Overline (Figma shows Gotham Base Bold)\n Overline: {\n fontSize: '14px',\n fontFamily: 'Gotham, Helvetica, Arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: 700,\n lineHeight: '21px',\n letterSpacing: '0px',\n textTransform: 'uppercase',\n textDecorationLine: 'none',\n },\n};\n\nexport default typography;\n","import typography from './typography';\n\nexport const defaultTheme = {\n palette: {\n TB: {\n Brand: {\n Primary: '#0C223F',\n Medium: '#004876',\n Accent: '#0070CD',\n Gray: '#8195A2',\n },\n Functional: {\n Black: '#000000',\n OffBlack: '#595959',\n White: '#FFFFFF',\n OffWhite: '#B5B5B5',\n DarkGray: '#858585',\n MedGray: '#D8D8D8',\n LightGray: '#E9EDF0',\n GrayOnDark: 'rgba(255, 255, 255, 0.2)',\n Success: '#009D47',\n SuccessBg: '#E4F6EA',\n Error: '#A31F34',\n ErrorBg: '#F7E6E9',\n ErrorText: '#A42337',\n },\n POI: {\n Food: '#AD3F49',\n Fitness: '#D78956',\n Entertainment: '#DBAE60',\n Parks: '#5E8748',\n Transportation: '#5C8988',\n Business: '#2C71C7',\n Shopping: '#344072',\n School: '#543D6E',\n },\n },\n\n State: {\n AccentHover: '#00437B',\n AccentPressed: '#005AA4',\n GrayHover: '#CDD5DA',\n GrayPressed: '#E6EAEC',\n Disabled: 'var(--tb-palette-TB-Functional-MedGray)',\n },\n \n },\n\n spacing: {\n 0: '0',\n 1: '4px',\n 2: '8px',\n 3: '12px',\n 4: '16px',\n 5: '24px',\n 6: '32px',\n 7: '40px',\n 8: '48px',\n 9: '60px',\n },\n\n specsSelector: {\n height: {\n base: '40px',\n },\n },\n\n checkboxRadio: {\n size: {\n base: '24px',\n large: '28px',\n },\n stroke: {\n pressed: '2px',\n },\n gap: {\n radioring: '4px',\n },\n },\n\n tabs: {\n gap: {\n tabToIndicator: '8px',\n iconToText: '4px',\n tabsSpacing: '24px',\n },\n padding: {\n hBase: '4px',\n },\n size: {\n icon: '32px',\n },\n indicatorHeight: '4px',\n },\n\n toggle: {\n height: {\n base: '32px',\n },\n hPadding: {\n base: '20px',\n },\n },\n\n tag: {\n padding: {\n hBase: '16px',\n vBase: '6px',\n },\n },\n\n buttons: {\n CTAButton: {\n height: {\n base: '48px',\n small: '40px',\n large: '56px',\n },\n hPadding: {\n small: '8px',\n base: '12px',\n large: '20px',\n },\n gap: {\n textToIcon: '4px',\n },\n stroke: {\n base: '1px',\n pressed: '2px',\n },\n },\n pillButton: {\n height: {\n base: '32px',\n small: '28px',\n large: '40px',\n },\n hPadding: {\n small: '8px',\n base: '12px',\n large: '20px',\n },\n gap: {\n textToIcon: '4px',\n },\n stroke: {\n base: '1px',\n pressed: '2px',\n },\n borderRadius: '1000px',\n },\n },\n \n inputs: {\n height: {\n base: '60px',\n },\n padding: {\n hBase: '20px',\n vBase: '12px',\n vSmall: '8px',\n },\n stroke: {\n base: '1px',\n focus: '3px',\n },\n },\n \n rangeSlider: {\n width: '343px',\n trackHeight: '4px',\n handleSize: '32px',\n handleRadius: '100px',\n gap: {\n indicatorToSlider: '16px',\n valueToLabel: '4px',\n },\n shadow: {\n basic: '0px 4px 4px rgba(133,133,133,0.15)',\n },\n },\n\n typography: {\n ...typography,\n SemanticPlaceholder: typography['Gotham-B-400'],\n SemanticFloatingPlaceholder: typography['Gotham-XS-400'],\n SemanticInput: typography['GothamN-B-500'],\n SemanticButtonLabel: typography['Gotham-B-700'],\n SemanticButtonTag: typography['Gotham-S-700'],\n SemanticTabLabel: typography['Gotham-B-700'],\n },\n globalBrandBorderRadius: '4px',\n};\n","import styles from './PillStrokeButton.module.scss';\n\nconst STYLE_MAP = {\n Light: {\n A: {\n base: styles.lightABase,\n hover: styles.lightAHover,\n pressed: styles.lightAPressed,\n disabled: styles.lightADisabled,\n },\n B: {\n base: styles.lightBBase,\n hover: styles.lightBHover,\n pressed: styles.lightBPressed,\n disabled: styles.lightBDisabled,\n },\n },\n Dark: {\n A: {\n base: styles.darkABase,\n hover: styles.darkAHover,\n pressed: styles.darkAPressed,\n disabled: styles.darkADisabled,\n },\n B: {\n base: styles.darkBBase,\n hover: styles.darkBHover,\n pressed: styles.darkBPressed,\n disabled: styles.darkBDisabled,\n },\n },\n};\n\n/**\n * PillStrokeButton aligned to Figma spec:\n * - bg: Light | Dark\n * - priority: A | B\n * - state: base | hover | pressed | disabled\n * - iconPosition: left | right | none (icon inherits label color)\n */\nconst PillStrokeButton = ({\n label = 'Pill Button',\n bg = 'Light',\n priority = 'A',\n state = 'base',\n iconPosition = 'none',\n icon = null,\n className = '',\n ...rest\n}) => {\n const sizeClass = styles.sizeBase;\n const bgKey = bg === 'Dark' ? 'Dark' : 'Light';\n const priorityKey = priority === 'B' ? 'B' : 'A';\n const stateKey = state?.toLowerCase?.() || 'base';\n const visualClass = STYLE_MAP[bgKey]?.[priorityKey]?.[stateKey] || STYLE_MAP.Light.A.base;\n\n const isDisabled = stateKey === 'disabled';\n const hasIcon = iconPosition !== 'none' && !!icon;\n\n const buttonClasses = [styles.button, sizeClass, visualClass, hasIcon && styles.withIcon, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button className={buttonClasses} type='button' disabled={isDisabled} aria-disabled={isDisabled} {...rest}>\n {iconPosition === 'left' && hasIcon ? <span className={styles.icon}>{icon}</span> : null}\n <span className={styles.label}>{label}</span>\n {iconPosition === 'right' && hasIcon ? <span className={styles.icon}>{icon}</span> : null}\n </button>\n );\n};\n\nexport default PillStrokeButton;\n","import styles from './PillFillButton.module.scss';\n\nconst SIZE_CLASS = {\n Base: styles.sizeBase,\n Small: styles.sizeSmall,\n Large: styles.sizeLarge,\n};\n\nconst PADDING_CLASS = {\n Small: styles.paddingSmall,\n Large: styles.paddingLarge,\n};\n\nconst TEXT_CLASS = {\n MedBlue: styles.textMedBlue,\n AccentBlue: styles.textAccentBlue,\n Black: styles.textBlack,\n};\n\nconst PRIORITY_TEXT_COLORS = {\n A: ['MedBlue', 'AccentBlue', 'Black'],\n B: ['Black'],\n};\n\nconst normalizeProps = ({ size, padding, priority, contentColor }) => {\n let nextSize = size;\n let nextPadding = padding;\n let nextPriority = priority;\n let nextContentColor = contentColor;\n\n // Padding Large is only defined as: Size=Large, Priority=A, TextColor=AccentBlue\n if (nextPadding === 'Large') {\n nextSize = 'Large';\n nextPriority = 'A';\n nextContentColor = 'AccentBlue';\n }\n\n // Priority B only supports Black text (no AccentBlue/MedBlue variants)\n if (nextPriority === 'B') {\n nextContentColor = 'Black';\n }\n\n return {\n size: nextSize,\n padding: nextPadding,\n priority: nextPriority,\n contentColor: nextContentColor,\n };\n};\n\nconst STATE_CLASS = {\n base: styles.stateBase,\n hover: styles.stateHover,\n pressed: styles.statePressed,\n disabled: styles.stateDisabled,\n};\n\nconst VARIANT_PRESETS = {\n MedBlue: { priority: 'A', contentColor: 'MedBlue', padding: 'Small' },\n AccentBlue: { priority: 'A', contentColor: 'AccentBlue', padding: 'Small' },\n BlackBook: { priority: 'B', contentColor: 'Black', padding: 'Small' },\n AccentBlueXLarge: { priority: 'A', contentColor: 'AccentBlue', padding: 'Large' },\n};\n\nconst resolveVariant = (variant) => VARIANT_PRESETS[variant] || VARIANT_PRESETS.MedBlue;\n\n/**\n * PillFillButton aligned to Figma spec:\n * - size: Base | Small | Large\n * - iconBool: Left | Right | Null\n * - variant: MedBlue | AccentBlue | BlackBook | AccentBlueXLarge\n * - state: Base | Hover | Pressed | Disabled\n */\nconst PillFillButton = ({\n label = 'Pill Button',\n size = 'Base',\n iconBool = 'Null',\n variant = 'MedBlue',\n state = 'Base',\n icon = null,\n className = '',\n ...rest\n}) => {\n const preset = resolveVariant(variant);\n const normalized = normalizeProps({\n size,\n padding: preset.padding,\n priority: preset.priority,\n contentColor: preset.contentColor,\n });\n\n const sizeClass = SIZE_CLASS[normalized.size] || SIZE_CLASS.Base;\n const paddingClass = PADDING_CLASS[normalized.padding] || PADDING_CLASS.Small;\n const priorityClass = normalized.priority === 'B' ? styles.priorityB : styles.priorityA;\n\n const stateKey = state?.toLowerCase?.() || 'base';\n const stateClass = STATE_CLASS[stateKey] || STATE_CLASS.base;\n const isDisabled = stateKey === 'disabled';\n\n const allowedTextColors = PRIORITY_TEXT_COLORS[normalized.priority] || PRIORITY_TEXT_COLORS.A;\n const resolvedContentColor = allowedTextColors.includes(normalized.contentColor)\n ? normalized.contentColor\n : allowedTextColors[0];\n const textClass = isDisabled ? styles.textDisabled : TEXT_CLASS[resolvedContentColor] || styles.textMedBlue;\n\n const iconPosition = iconBool?.toLowerCase?.() || 'null';\n const hasIcon = iconPosition !== 'null' && !!icon;\n\n const buttonClasses = [\n styles.button,\n sizeClass,\n paddingClass,\n priorityClass,\n stateClass,\n textClass,\n hasIcon && styles.withIcon,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n type='button'\n className={buttonClasses}\n disabled={isDisabled}\n aria-disabled={isDisabled}\n {...rest}\n >\n {iconPosition === 'left' && hasIcon ? <span className={styles.icon}>{icon}</span> : null}\n <span className={styles.label}>{label}</span>\n {iconPosition === 'right' && hasIcon ? <span className={styles.icon}>{icon}</span> : null}\n </button>\n );\n};\n\nexport default PillFillButton;\n","import styles from './PillFillStrokeButton.module.scss';\n\nconst ICONS = {\n MedBlue: 'http://localhost:3845/assets/7f9b00802e515bf8021382c7420298f6b796552a.svg',\n AccentBlue: 'http://localhost:3845/assets/13c795ee60876f41ea4865e1a7f0faad16c50029.svg',\n MedGray: 'http://localhost:3845/assets/46d35cd0744a8f28b3336e971806fcaaa5ff05bf.svg',\n DarkGray: 'http://localhost:3845/assets/3606b9384fd85b73fd7e639b27df8534332699cf.svg',\n};\n\nconst SIZE_CLASS = {\n Small: styles.sizeSmall,\n Base: styles.sizeBase,\n Large: styles.sizeLarge,\n};\n\nconst STATE_CLASS = {\n base: styles.stateBase,\n hover: styles.stateHover,\n pressed: styles.statePressed,\n disabled: styles.stateDisabled,\n};\n\nconst CONTENT_COLOR_CLASS = {\n MedBlue: styles.colorMedBlue,\n AccentBlue: styles.colorAccentBlue,\n};\n\nconst PADDING_CLASS = {\n Small: styles.paddingSmall,\n Base: styles.paddingBase,\n};\n\n\n/**\n * PillFillStrokeButton aligned to Figma spec:\n * - size: Small | Base | Large\n * - contentColor: MedBlue | AccentBlue\n * - state: Base | Hover | Pressed | Disabled\n * - iconBool: Null | Left | Right\n * - hPadding: Small | Base\n */\nconst PillFillStrokeButton = ({\n label = 'Pill Button',\n iconMedBlue = null,\n iconDisabled = null,\n iconAccentBlue = null,\n size = 'Base',\n iconBool = 'Null',\n contentColor = 'MedBlue',\n hPadding = 'Base',\n state = 'Base',\n className = '',\n ...rest\n}) => {\n const sizeClass = SIZE_CLASS[size] || SIZE_CLASS.Base;\n const colorClass = CONTENT_COLOR_CLASS[contentColor] || CONTENT_COLOR_CLASS.MedBlue;\n const paddingClass = PADDING_CLASS[hPadding] || PADDING_CLASS.Base;\n const stateKey = state?.toLowerCase?.() || 'base';\n const stateClass = STATE_CLASS[stateKey] || STATE_CLASS.base;\n const isDisabled = stateKey === 'disabled';\n const hasIcon = iconBool !== 'Null';\n const buttonClasses = [\n styles.button,\n sizeClass,\n paddingClass,\n colorClass,\n stateClass,\n hasIcon && styles.hasIcon,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const resolvedIcon =\n iconBool === 'Null'\n ? null\n : isDisabled\n ? iconDisabled\n : contentColor === 'AccentBlue'\n ? iconAccentBlue\n : iconMedBlue;\n\n const fallbackIconSrc = isDisabled\n ? ICONS.MedGray\n : contentColor === 'AccentBlue'\n ? ICONS.AccentBlue\n : ICONS.MedBlue;\n const iconContent = resolvedIcon || <img alt='' className={styles.iconImage} src={fallbackIconSrc} />;\n\n return (\n <button type='button' className={buttonClasses} disabled={isDisabled} aria-disabled={isDisabled} {...rest}>\n {hasIcon && iconBool === 'Left' && <span className={styles.icon}>{iconContent}</span>}\n <span className={styles.label}>{label}</span>\n {hasIcon && iconBool === 'Right' && <span className={styles.icon}>{iconContent}</span>}\n </button>\n );\n};\n\nexport default PillFillStrokeButton;\n","import styles from './TextLink.module.scss';\n\nconst SIZE_CLASS = {\n base: styles.sizeBase,\n small: styles.sizeSmall,\n large: styles.sizeLarge,\n};\n\nconst BG_STATE_CLASS = {\n light: {\n base: styles.lightBase,\n hover: styles.lightHover,\n pressed: styles.lightPressed,\n disabled: styles.lightDisabled,\n },\n dark: {\n base: styles.darkBase,\n hover: styles.darkHover,\n pressed: styles.darkPressed,\n disabled: styles.darkDisabled,\n },\n};\n\nconst normalize = (value, fallback) => (value ? String(value).toLowerCase() : fallback);\n\n/**\n * Text Link aligned to the Figma spec:\n * - size: base (12/18) | small (11/17) | large (14/21)\n * - bg: light | dark\n * - state: base | hover | pressed | disabled\n */\nconst TextLink = ({\n label = 'Text Link',\n children,\n size = 'base',\n bg = 'light',\n state = 'base',\n href = '#',\n className = '',\n onClick,\n ...rest\n}) => {\n const sizeKey = normalize(size, 'base');\n const bgKey = normalize(bg, 'light');\n const stateKey = normalize(state, 'base');\n\n const sizeClass = SIZE_CLASS[sizeKey] || SIZE_CLASS.base;\n const visualClass = BG_STATE_CLASS[bgKey]?.[stateKey] || BG_STATE_CLASS.light.base;\n\n const linkClasses = [styles.textLink, sizeClass, visualClass, className].filter(Boolean).join(' ');\n const isDisabled = stateKey === 'disabled';\n\n const handleClick = (event) => {\n if (isDisabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (onClick) onClick(event);\n };\n\n const content = children ?? label;\n\n return (\n <a className={linkClasses} href={isDisabled ? undefined : href} aria-disabled={isDisabled} onClick={handleClick} {...rest}>\n {content}\n </a>\n );\n};\n\nexport default TextLink;\n","import styles from './TabUnit.module.scss';\n\nconst COMMUNITY_ICON_ON_PRIMARY = 'http://localhost:3845/assets/678ee945cb9054302f49b1ca0dc78e0b1bd69b56.svg';\nconst COMMUNITY_ICON_ON_SECONDARY = 'http://localhost:3845/assets/a7008105ddba7aaafeeca0ade6a4ed0986cb44c0.svg';\nconst COMMUNITY_ICON_OFF_PRIMARY = 'http://localhost:3845/assets/d4d3f3469b338e7ebbbba0500f30a3e849913781.svg';\nconst COMMUNITY_ICON_OFF_SECONDARY = 'http://localhost:3845/assets/a7008105ddba7aaafeeca0ade6a4ed0986cb44c0.svg';\n\nconst IconStack = ({ primarySrc, secondarySrc }) => (\n <span className={`${styles.icon} ${styles.iconStack}`}>\n <img className={styles.iconLayer} alt='' src={primarySrc} />\n <img className={styles.iconLayer} alt='' src={secondarySrc} />\n </span>\n);\n\nconst TabUnit = ({\n label = 'Communities',\n state = true,\n icon = true,\n bg = 'Light',\n symbol = null,\n width = 'fit',\n className = '',\n onClick,\n}) => {\n const isDark = bg === 'Dark';\n const isActive = !!state;\n const showIcon = !!icon;\n const labelText = label;\n const contentClassName = [\n styles.content,\n !showIcon && styles.contentTextOnly,\n ]\n .filter(Boolean)\n .join(' ');\n\n const defaultIcon = isActive\n ? <IconStack primarySrc={COMMUNITY_ICON_ON_PRIMARY} secondarySrc={COMMUNITY_ICON_ON_SECONDARY} />\n : <IconStack primarySrc={COMMUNITY_ICON_OFF_PRIMARY} secondarySrc={COMMUNITY_ICON_OFF_SECONDARY} />;\n const resolvedIcon = symbol ? (\n <span className={styles.icon}>\n <span className={styles.iconInner}>{symbol}</span>\n </span>\n ) : (\n <span className={styles.icon}>\n <span className={styles.iconPlaceholder} />\n </span>\n );\n\n return (\n <button\n type='button'\n className={[\n styles.tabUnit,\n isDark ? styles.dark : styles.light,\n isActive ? styles.active : styles.inactive,\n width === 'full' ? styles.widthFull : styles.widthFit,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={onClick}\n >\n <div className={contentClassName}>\n {showIcon ? resolvedIcon : null}\n <span className={styles.label}>{labelText}</span>\n </div>\n <div className={styles.indicator} />\n </button>\n );\n};\n\nexport default TabUnit;\n","import { useMemo, useState } from 'react';\nimport TabUnit from '../TabUnit/TabUnit';\nimport styles from './TabBar.module.scss';\n\nconst DEFAULT_TAB_COUNT = 3;\nconst MIN_TAB_COUNT = 2;\nconst MAX_TAB_COUNT = 10;\nconst buildDefaultTabs = (count, startIndex = 0) => {\n return Array.from({ length: count }, (_, index) => {\n const letter = String.fromCharCode(65 + index + startIndex);\n return { label: `Tab ${letter}` };\n });\n};\n\nconst clampTabCount = (count) => {\n if (!Number.isFinite(count)) return DEFAULT_TAB_COUNT;\n const rounded = Math.round(count);\n if (rounded < MIN_TAB_COUNT) return MIN_TAB_COUNT;\n if (rounded > MAX_TAB_COUNT) return MAX_TAB_COUNT;\n return rounded;\n};\n\nconst TabBar = ({\n iconBool = false,\n bg = 'Light',\n alignment = 'fitLeft',\n tabCount = DEFAULT_TAB_COUNT,\n tabLabels,\n tabs,\n className = '',\n}) => {\n const resolvedTabCount = useMemo(() => clampTabCount(tabCount), [tabCount]);\n const defaultTabs = useMemo(() => buildDefaultTabs(resolvedTabCount), [resolvedTabCount]);\n const resolvedTabs = useMemo(() => {\n if (tabs?.length) {\n return tabs.slice(0, resolvedTabCount);\n }\n if (tabLabels?.length) {\n const labels = tabLabels.slice(0, resolvedTabCount);\n const padded = labels.concat(\n buildDefaultTabs(resolvedTabCount - labels.length, labels.length).map((tab) => tab.label),\n );\n return padded.map((label) => ({ label }));\n }\n return defaultTabs;\n }, [defaultTabs, resolvedTabCount, tabLabels, tabs]);\n\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const handleSelect = (index) => {\n setSelectedIndex(index);\n };\n\n const isDark = bg === 'Dark';\n const containerClassName = [\n styles.tabBar,\n isDark && styles.tabBarDark,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n const isFullCenter = alignment === 'fullCenter';\n const tabsClassName = isFullCenter\n ? styles.tabsFull\n : [styles.tabsSpaced, styles.alignLeft].filter(Boolean).join(' ');\n const tabsStyle = isFullCenter ? { '--tab-count': resolvedTabs.length } : undefined;\n return (\n <div className={containerClassName}>\n <div className={tabsClassName} style={tabsStyle}>\n {resolvedTabs.map((tab, index) => (\n <div\n key={`${tab.label}-${index}`}\n className={[styles.tabButton, isFullCenter && styles.tabButtonFull].filter(Boolean).join(' ')}\n >\n <TabUnit\n label={tab.label}\n symbol={tab.symbol}\n state={index === selectedIndex}\n icon={iconBool}\n bg={bg}\n width={isFullCenter ? 'full' : 'fit'}\n onClick={() => handleSelect(index)}\n />\n </div>\n ))}\n </div>\n <div className={[styles.divider, isDark && styles.dividerDark].filter(Boolean).join(' ')} />\n </div>\n );\n};\n\nexport default TabBar;\n","import { useEffect, useState } from 'react';\nimport styles from './Checkbox.module.scss';\n\nconst CHECKMARK_ICON = 'http://localhost:3845/assets/afb09fc9d1fd13013c650d30c8d3cf5ea30d407a.svg';\n\nconst SIZE_CLASS = {\n Base: styles.sizeBase,\n Large: styles.sizeLarge,\n};\n\nconst STATE_CLASS = {\n Base: styles.stateBase,\n Focused: styles.stateFocused,\n Selected: styles.stateSelected,\n Disabled: styles.stateDisabled,\n};\n\nconst normalizeSize = (size) => (SIZE_CLASS[size] ? size : 'Base');\nconst normalizeState = (state) => (STATE_CLASS[state] ? state : 'Base');\n\nconst Checkbox = ({ size = 'Base', state = 'Base', className = '', ...rest }) => {\n const resolvedSize = normalizeSize(size);\n const resolvedState = normalizeState(state);\n const isInteractive = resolvedState === 'Base';\n const [isChecked, setIsChecked] = useState(resolvedState === 'Selected');\n\n useEffect(() => {\n setIsChecked(resolvedState === 'Selected');\n }, [resolvedState]);\n const isSelected = isInteractive ? isChecked : resolvedState === 'Selected';\n const isDisabled = resolvedState === 'Disabled';\n const effectiveState = isInteractive ? (isSelected ? 'Selected' : 'Base') : resolvedState;\n\n const handleToggle = () => {\n if (!isInteractive) return;\n setIsChecked((prev) => !prev);\n };\n\n const handleKeyDown = (event) => {\n if (!isInteractive) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleToggle();\n }\n };\n\n return (\n <div\n className={[\n styles.checkbox,\n SIZE_CLASS[resolvedSize],\n STATE_CLASS[effectiveState],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n role='checkbox'\n aria-checked={isSelected}\n aria-disabled={isDisabled}\n tabIndex={isInteractive ? 0 : undefined}\n onClick={isInteractive ? handleToggle : undefined}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n <div className={styles.box}>\n {isSelected ? (\n <span className={styles.checkmark}>\n <img alt='' src={CHECKMARK_ICON} />\n </span>\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default Checkbox;\n","import { useEffect, useState } from 'react';\nimport styles from './RadioButton.module.scss';\n\nconst SIZE_CLASS = {\n Small: styles.sizeSmall,\n Large: styles.sizeLarge,\n};\n\nconst STATE_CLASS = {\n Base: styles.stateBase,\n Focused: styles.stateFocused,\n Selected: styles.stateSelected,\n Disabled: styles.stateDisabled,\n};\n\nconst normalizeSize = (size) => (SIZE_CLASS[size] ? size : 'Small');\nconst normalizeState = (state) => (STATE_CLASS[state] ? state : 'Base');\n\nconst RadioButton = ({ size = 'Small', state = 'Base', className = '', ...rest }) => {\n const resolvedSize = normalizeSize(size);\n const resolvedState = normalizeState(state);\n const isInteractive = resolvedState === 'Base';\n const [isSelected, setIsSelected] = useState(resolvedState === 'Selected');\n\n useEffect(() => {\n setIsSelected(resolvedState === 'Selected');\n }, [resolvedState]);\n\n const isDisabled = resolvedState === 'Disabled';\n const effectiveState = isInteractive ? (isSelected ? 'Selected' : 'Base') : resolvedState;\n\n const handleSelect = () => {\n if (!isInteractive || isSelected) return;\n setIsSelected(true);\n };\n\n const handleKeyDown = (event) => {\n if (!isInteractive) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleSelect();\n }\n };\n\n return (\n <div\n className={[\n styles.radioButton,\n SIZE_CLASS[resolvedSize],\n STATE_CLASS[effectiveState],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n role='radio'\n aria-checked={isSelected}\n aria-disabled={isDisabled}\n tabIndex={isInteractive ? 0 : undefined}\n onClick={isInteractive ? handleSelect : undefined}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n <div className={styles.ring}>\n <span className={styles.dot} />\n </div>\n </div>\n );\n};\n\nexport default RadioButton;\n","import { useEffect, useRef, useState } from 'react';\nimport styles from './RangeSlider.module.scss';\n\n// Clamp a value within inclusive bounds.\nconst clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n\n// Snap a raw value to the nearest step aligned to a minimum.\nconst snapToStep = (value, min, step) => {\n const snapped = Math.round((value - min) / step) * step + min;\n return Math.max(min, snapped);\n};\n\n// Round a limit down to the nearest step multiple.\nconst roundDownToStep = (value, step) => Math.floor(value / step) * step;\n\n// Round a limit up to the nearest step multiple.\nconst roundUpToStep = (value, step) => Math.ceil(value / step) * step;\n\n// Format a numeric price into compact $k/$m notation.\nconst formatPrice = (value) => {\n if (value >= 1000000) {\n const millions = value / 1000000;\n return `$${millions % 1 === 0 ? millions.toFixed(0) : millions.toFixed(1)}m`;\n }\n const thousands = value / 1000;\n return `$${thousands % 1 === 0 ? thousands.toFixed(0) : thousands.toFixed(1)}k`;\n};\n\nconst DEFAULT_MIN_SQFT = 500;\nconst DEFAULT_MAX_SQFT = 3000;\nconst DEFAULT_MIN_PRICE = 300000;\nconst DEFAULT_MAX_PRICE = 2000000;\n\n// Range slider with sq-ft and price variants plus draggable handles.\nconst RangeSlider = ({\n property1 = 'sq. ft.',\n sqFtRange,\n stepSqFt = 250,\n priceRange,\n stepPrice = 100000,\n}) => {\n const trackRef = useRef(null);\n const [interactiveSqFtMin, setInteractiveSqFtMin] = useState(sqFtRange?.min ?? DEFAULT_MIN_SQFT);\n const [interactiveSqFtMax, setInteractiveSqFtMax] = useState(sqFtRange?.max ?? DEFAULT_MAX_SQFT);\n const [interactivePriceMin, setInteractivePriceMin] = useState(priceRange?.min ?? DEFAULT_MIN_PRICE);\n const [interactivePriceMax, setInteractivePriceMax] = useState(priceRange?.max ?? DEFAULT_MAX_PRICE);\n const [activeHandle, setActiveHandle] = useState(null);\n const prevRawSetMinRef = useRef(null);\n const prevRawSetMaxRef = useRef(null);\n const prevRoundedSetMinRef = useRef(null);\n const prevRoundedSetMaxRef = useRef(null);\n const isPrice = property1 === 'price';\n const rawSetMin = isPrice\n ? priceRange?.min ?? DEFAULT_MIN_PRICE\n : sqFtRange?.min ?? DEFAULT_MIN_SQFT;\n const rawSetMax = isPrice\n ? priceRange?.max ?? DEFAULT_MAX_PRICE\n : sqFtRange?.max ?? DEFAULT_MAX_SQFT;\n const stepValue = isPrice ? stepPrice : stepSqFt;\n const safeStepValue = stepValue > 0 ? stepValue : 1;\n const roundedSetMin = stepValue > 0 ? roundDownToStep(rawSetMin, stepValue) : rawSetMin;\n const roundedSetMax = stepValue > 0 ? roundUpToStep(rawSetMax, stepValue) : rawSetMax;\n const hasValidLimitRange = roundedSetMin < roundedSetMax;\n const safeRoundedMin = hasValidLimitRange\n ? roundedSetMin\n : isPrice\n ? DEFAULT_MIN_PRICE\n : DEFAULT_MIN_SQFT;\n const safeRoundedMax = hasValidLimitRange\n ? roundedSetMax\n : isPrice\n ? DEFAULT_MAX_PRICE\n : DEFAULT_MAX_SQFT;\n const validMinLimit = safeRoundedMin;\n const validMaxLimit = safeRoundedMax;\n const clampMinValue = clamp(\n isPrice ? interactivePriceMin : interactiveSqFtMin,\n validMinLimit,\n validMaxLimit - safeStepValue,\n );\n const clampMaxValue = clamp(\n isPrice ? interactivePriceMax : interactiveSqFtMax,\n validMinLimit + safeStepValue,\n validMaxLimit,\n );\n\n const range = validMaxLimit - validMinLimit || 1;\n const minPercent = clamp(((clampMinValue - validMinLimit) / range) * 100, 0, 100);\n const maxPercent = clamp(((clampMaxValue - validMinLimit) / range) * 100, 0, 100);\n\n const formattedSqFt = `${clampMinValue}-${clampMaxValue}`;\n const formattedPrice = `${formatPrice(clampMinValue)} - ${formatPrice(clampMaxValue)}`;\n\n useEffect(() => {\n if (activeHandle) return;\n if (isPrice) {\n const prevRawSetMin = prevRawSetMinRef.current;\n const prevRawSetMax = prevRawSetMaxRef.current;\n const prevRoundedSetMin = prevRoundedSetMinRef.current;\n const prevRoundedSetMax = prevRoundedSetMaxRef.current;\n if (\n (interactivePriceMin === rawSetMin ||\n interactivePriceMin === prevRawSetMin ||\n interactivePriceMin === prevRoundedSetMin) &&\n interactivePriceMin !== safeRoundedMin\n ) {\n setInteractivePriceMin(safeRoundedMin);\n }\n if (\n (interactivePriceMax === rawSetMax ||\n interactivePriceMax === prevRawSetMax ||\n interactivePriceMax === prevRoundedSetMax) &&\n interactivePriceMax !== safeRoundedMax\n ) {\n setInteractivePriceMax(safeRoundedMax);\n }\n prevRawSetMinRef.current = rawSetMin;\n prevRawSetMaxRef.current = rawSetMax;\n prevRoundedSetMinRef.current = safeRoundedMin;\n prevRoundedSetMaxRef.current = safeRoundedMax;\n return;\n }\n\n const prevRawSetMin = prevRawSetMinRef.current;\n const prevRawSetMax = prevRawSetMaxRef.current;\n const prevRoundedSetMin = prevRoundedSetMinRef.current;\n const prevRoundedSetMax = prevRoundedSetMaxRef.current;\n if (\n (interactiveSqFtMin === rawSetMin ||\n interactiveSqFtMin === prevRawSetMin ||\n interactiveSqFtMin === prevRoundedSetMin) &&\n interactiveSqFtMin !== safeRoundedMin\n ) {\n setInteractiveSqFtMin(safeRoundedMin);\n }\n if (\n (interactiveSqFtMax === rawSetMax ||\n interactiveSqFtMax === prevRawSetMax ||\n interactiveSqFtMax === prevRoundedSetMax) &&\n interactiveSqFtMax !== safeRoundedMax\n ) {\n setInteractiveSqFtMax(safeRoundedMax);\n }\n prevRawSetMinRef.current = rawSetMin;\n prevRawSetMaxRef.current = rawSetMax;\n prevRoundedSetMinRef.current = safeRoundedMin;\n prevRoundedSetMaxRef.current = safeRoundedMax;\n }, [\n activeHandle,\n interactivePriceMax,\n interactivePriceMin,\n interactiveSqFtMax,\n interactiveSqFtMin,\n isPrice,\n rawSetMax,\n rawSetMin,\n safeRoundedMax,\n safeRoundedMin,\n ]);\n\n const getSnappedValueFromPointer = (clientX) => {\n const track = trackRef.current;\n if (!track) return null;\n const rect = track.getBoundingClientRect();\n if (rect.width <= 0) return null;\n const relative = clamp(clientX - rect.left, 0, rect.width);\n const rawValue = validMinLimit + (relative / rect.width) * range;\n return snapToStep(rawValue, validMinLimit, safeStepValue);\n };\n\n // Convert pointer position into a snapped min/max update.\n const updateValueFromPointer = (clientX, handleOverride) => {\n const snapped = getSnappedValueFromPointer(clientX);\n if (snapped === null) return;\n const activeTarget = handleOverride ?? activeHandle;\n\n if (activeTarget === 'min') {\n const nextMin = clamp(snapped, validMinLimit, clampMaxValue - safeStepValue);\n if (isPrice) {\n setInteractivePriceMin(nextMin);\n } else {\n setInteractiveSqFtMin(nextMin);\n }\n } else if (activeTarget === 'max') {\n const nextMax = clamp(snapped, clampMinValue + safeStepValue, validMaxLimit);\n if (isPrice) {\n setInteractivePriceMax(nextMax);\n } else {\n setInteractiveSqFtMax(nextMax);\n }\n }\n };\n\n const handleTrackPointerDown = (event) => {\n if (event.target instanceof Element && event.target.closest(`.${styles.handle}`)) {\n return;\n }\n const snapped = getSnappedValueFromPointer(event.clientX);\n if (snapped === null || snapped >= clampMaxValue) return;\n const nextMin = clamp(snapped, validMinLimit, clampMaxValue - safeStepValue);\n if (isPrice) {\n setInteractivePriceMin(nextMin);\n } else {\n setInteractiveSqFtMin(nextMin);\n }\n };\n\n // Start dragging a handle and capture pointer events.\n const handlePointerDown = (handle) => (event) => {\n setActiveHandle(handle);\n updateValueFromPointer(event.clientX, handle);\n event.currentTarget.setPointerCapture(event.pointerId);\n };\n\n // Update the active handle during drag.\n const handlePointerMove = (event) => {\n if (!activeHandle) return;\n updateValueFromPointer(event.clientX);\n };\n\n // End dragging and release pointer capture.\n const handlePointerUp = (event) => {\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n setActiveHandle(null);\n };\n\n return (\n <div className={styles.rangeSlider}>\n <div className={styles.sliderWrapper}>\n <div className={isPrice ? styles.priceRow : styles.labelRow}>\n {isPrice ? (\n <span className={styles.priceText}>{formattedPrice}</span>\n ) : (\n <>\n <span className={styles.valueText}>{formattedSqFt}</span>\n <span className={styles.unitText}>sq ft</span>\n </>\n )}\n </div>\n <div\n className={styles.trackRow}\n ref={trackRef}\n onPointerDown={handleTrackPointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerUp}\n >\n <div className={styles.track} />\n <div\n className={styles.rangeTrack}\n style={{ left: `${minPercent}%`, right: `${100 - maxPercent}%` }}\n />\n <div className={styles.handle} style={{ left: `${minPercent}%` }} onPointerDown={handlePointerDown('min')}>\n <div className={styles.grip}>\n <span className={styles.gripBar} />\n <span className={styles.gripBar} />\n <span className={styles.gripBar} />\n </div>\n </div>\n <div className={styles.handle} style={{ left: `${maxPercent}%` }} onPointerDown={handlePointerDown('max')}>\n <div className={styles.grip}>\n <span className={styles.gripBar} />\n <span className={styles.gripBar} />\n <span className={styles.gripBar} />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default RangeSlider;\n","import { useEffect, useMemo, useState } from 'react';\nimport styles from './SpecsSelector.module.scss';\n\nconst STATE_CLASS = {\n selected: styles.unitSelected,\n unselected: styles.unitUnselected,\n null: styles.unitNull,\n};\n\nconst LABEL_CLASS = {\n selected: styles.labelSelected,\n unselected: styles.labelUnselected,\n null: styles.labelNull,\n};\n\nconst normalizeState = (state) => {\n const normalized = typeof state === 'string' ? state.toLowerCase() : 'selected';\n return STATE_CLASS[normalized] ? normalized : 'selected';\n};\n\nconst SpecsSelectorUnit = ({\n label = 'Any',\n state = 'selected',\n className = '',\n onSelect,\n isInteractive = true,\n}) => {\n const resolvedState = normalizeState(state);\n const unitClassName = [styles.unit, STATE_CLASS[resolvedState], className].filter(Boolean).join(' ');\n const labelClassName = [styles.label, LABEL_CLASS[resolvedState]].filter(Boolean).join(' ');\n const isDisabled = !isInteractive || resolvedState === 'null';\n\n const handleKeyDown = (event) => {\n if (isDisabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onSelect?.();\n }\n };\n\n return (\n <div\n className={unitClassName}\n role={isDisabled ? undefined : 'button'}\n tabIndex={isDisabled ? undefined : 0}\n aria-pressed={resolvedState === 'selected' ? true : undefined}\n aria-disabled={isDisabled || undefined}\n onClick={isDisabled ? undefined : onSelect}\n onKeyDown={handleKeyDown}\n >\n <span className={labelClassName}>{label}</span>\n </div>\n );\n};\n\nconst MAX_UNITS = 6;\nconst BASE_LABELS = ['Any', '2+', '3+', '4+', '5+', '6+'];\n\nconst getResolvedMaxSpecs = (maxSpecs) => {\n if (!Number.isFinite(maxSpecs)) {\n return MAX_UNITS;\n }\n const rounded = Math.round(maxSpecs);\n if (rounded < 1) {\n return MAX_UNITS;\n }\n return Math.min(rounded, MAX_UNITS);\n};\n\nconst SpecsSelector = ({ maxSpecs = MAX_UNITS, className = '', onSelect, ...rest }) => {\n const resolvedMaxSpecs = useMemo(() => getResolvedMaxSpecs(maxSpecs), [maxSpecs]);\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const containerClassName = [styles.specsSelector, className].filter(Boolean).join(' ');\n const items = useMemo(() => {\n return BASE_LABELS.map((label, index) => {\n const specValue = index + 1;\n const normalizedLabel = index === 0 && resolvedMaxSpecs === 1 ? '1' : label;\n const state = specValue > resolvedMaxSpecs ? 'null' : 'unselected';\n\n return {\n label: normalizedLabel,\n state,\n specValue,\n };\n });\n }, [resolvedMaxSpecs]);\n\n useEffect(() => {\n if (selectedIndex >= resolvedMaxSpecs) {\n setSelectedIndex(Math.max(resolvedMaxSpecs - 1, 0));\n }\n }, [resolvedMaxSpecs, selectedIndex]);\n\n return (\n <div className={containerClassName} {...rest}>\n {items.map((item, index) => {\n const isNull = item.state === 'null';\n const isSelected = index === selectedIndex;\n const state = isNull ? 'null' : isSelected ? 'selected' : 'unselected';\n\n return (\n <SpecsSelectorUnit\n key={`${item.specValue}-${index}`}\n label={item.label}\n state={state}\n isInteractive={!isNull}\n onSelect={() => {\n setSelectedIndex(index);\n onSelect?.(item, index);\n }}\n />\n );\n })}\n </div>\n );\n};\n\nexport default SpecsSelector;\n","import styles from './ToggleUnit.module.scss';\n\nconst ToggleUnit = ({\n toggleOn = 'Toggle Label',\n toggleOff = 'Toggle Label',\n state = true,\n bg = 'Light',\n className = '',\n ...rest\n}) => {\n const isLight = bg === 'Light';\n const variantClass = isLight\n ? state\n ? styles.stateOnLight\n : styles.stateOffLight\n : state\n ? styles.stateOnDark\n : styles.stateOffDark;\n\n return (\n <button\n type='button'\n className={[styles.toggleUnit, variantClass, className].filter(Boolean).join(' ')}\n {...rest}\n >\n <span className={styles.label}>{state ? toggleOn : toggleOff}</span>\n </button>\n );\n};\n\nexport default ToggleUnit;\n"],"names":["SIZE_CLASS","base","styles","sizeBase","small","sizeSmall","large","sizeLarge","PRIORITY_STATE_CLASS","A","filledBase","hover","filledHover","pressed","filledPressed","disabled","filledDisabled","B","ghostBase","ghostHover","ghostPressed","ghostDisabled","STYLE_MAP","Light","lightBase","lightHover","lightPressed","lightDisabled","Dark","darkBase","darkHover","darkPressed","darkDisabled","ThemeProviderClientSide","dynamic","Promise","resolve","then","require","ssr","ThemeContext","createContext","ErrorTag","_ref","_ref$label","label","children","_ref$className","className","rest","_objectWithoutPropertiesLoose","_excluded","content","_jsx","jsx","_extends","tagError","filter","Boolean","join","SuccessTag","tagSuccess","InputField","forwardRef","ref","_ref$fieldLabel","fieldLabel","fieldValue","_ref$state","state","onChange","props","_useState","useState","isFocused","setIsFocused","_useState2","setInternalValue","isControlled","undefined","value","isDisabled","isBaseState","isFocusedState","isErrorState","isSuccessState","isInteractive","shouldFloat","containerClassName","inputContainer","focused","withValue","labelClassName","placeholder","floatingPlaceholder","_jsxs","jsxs","inputFieldWrapper","input","defaultValue","readOnly","onFocus","onBlur","event","target","stateTag","displayName","TextArea","_ref2","_ref3","_ref$maxLength","maxLength","resolvedValue","textAreaContainer","resolvedLabel","textAreaWrapper","textarea","typography","fontSize","fontFamily","fontStyle","fontWeight","lineHeight","letterSpacing","textTransform","textDecorationLine","Overline","defaultTheme","palette","TB","Brand","Primary","Medium","Accent","Gray","Functional","Black","OffBlack","White","OffWhite","DarkGray","MedGray","LightGray","GrayOnDark","Success","SuccessBg","Error","ErrorBg","ErrorText","POI","Food","Fitness","Entertainment","Parks","Transportation","Business","Shopping","School","State","AccentHover","AccentPressed","GrayHover","GrayPressed","Disabled","spacing","specsSelector","height","checkboxRadio","size","stroke","gap","radioring","tabs","tabToIndicator","iconToText","tabsSpacing","padding","hBase","icon","indicatorHeight","toggle","hPadding","tag","vBase","buttons","CTAButton","textToIcon","pillButton","borderRadius","inputs","vSmall","focus","rangeSlider","width","trackHeight","handleSize","handleRadius","indicatorToSlider","valueToLabel","shadow","basic","SemanticPlaceholder","SemanticFloatingPlaceholder","SemanticInput","SemanticButtonLabel","SemanticButtonTag","SemanticTabLabel","globalBrandBorderRadius","lightABase","lightAHover","lightAPressed","lightADisabled","lightBBase","lightBHover","lightBPressed","lightBDisabled","darkABase","darkAHover","darkAPressed","darkADisabled","darkBBase","darkBHover","darkBPressed","darkBDisabled","Base","Small","Large","PADDING_CLASS","paddingSmall","paddingLarge","TEXT_CLASS","MedBlue","textMedBlue","AccentBlue","textAccentBlue","textBlack","PRIORITY_TEXT_COLORS","STATE_CLASS","stateBase","stateHover","statePressed","stateDisabled","VARIANT_PRESETS","priority","contentColor","BlackBook","AccentBlueXLarge","CONTENT_COLOR_CLASS","colorMedBlue","colorAccentBlue","paddingBase","BG_STATE_CLASS","light","dark","normalize","fallback","String","toLowerCase","TabUnit","_ref2$label","_ref2$state","_ref2$icon","_ref2$bg","bg","_ref2$symbol","symbol","_ref2$width","_ref2$className","onClick","isDark","isActive","showIcon","labelText","contentClassName","contentTextOnly","resolvedIcon","iconInner","iconPlaceholder","type","tabUnit","active","inactive","widthFull","widthFit","indicator","buildDefaultTabs","count","startIndex","Array","from","length","_","index","letter","fromCharCode","Focused","stateFocused","Selected","stateSelected","clamp","min","max","Math","formatPrice","millions","toFixed","thousands","DEFAULT_MAX_SQFT","DEFAULT_MIN_PRICE","DEFAULT_MAX_PRICE","selected","unitSelected","unselected","unitUnselected","null","unitNull","LABEL_CLASS","labelSelected","labelUnselected","labelNull","SpecsSelectorUnit","normalized","onSelect","_ref$isInteractive","resolvedState","unitClassName","unit","role","tabIndex","onKeyDown","key","preventDefault","BASE_LABELS","_ref$size","resolvedSize","normalizeSize","normalizeState","isChecked","setIsChecked","useEffect","isSelected","handleToggle","prev","checkbox","box","checkmark","alt","src","nextSize","nextPriority","nextContentColor","_ref2$size","_ref2$iconBool","iconBool","_ref2$variant","variant","preset","resolveVariant","sizeClass","paddingClass","priorityClass","priorityB","priorityA","stateKey","stateClass","allowedTextColors","resolvedContentColor","includes","textClass","textDisabled","iconPosition","hasIcon","buttonClasses","button","withIcon","_ref$iconMedBlue","iconMedBlue","_ref$iconDisabled","iconDisabled","_ref$iconAccentBlue","iconAccentBlue","_ref$iconBool","_ref$contentColor","_ref$hPadding","colorClass","iconContent","iconImage","_STYLE_MAP$bgKey","_ref$bg","_ref$priority","_ref$iconPosition","_ref$icon","bgKey","priorityKey","visualClass","_PRIORITY_STATE_CLASS","_ref$fullWidth","fullWidth","setIsSelected","handleSelect","radioButton","ring","dot","_sqFtRange$min","_sqFtRange$max","_priceRange$min","_priceRange$max","_priceRange$min2","_sqFtRange$min2","_priceRange$max2","_sqFtRange$max2","step","_ref$property","property1","sqFtRange","_ref$stepSqFt","stepSqFt","priceRange","_ref$stepPrice","stepPrice","trackRef","useRef","interactiveSqFtMin","setInteractiveSqFtMin","interactiveSqFtMax","setInteractiveSqFtMax","_useState3","interactivePriceMin","setInteractivePriceMin","_useState4","interactivePriceMax","setInteractivePriceMax","_useState5","activeHandle","setActiveHandle","prevRawSetMinRef","prevRawSetMaxRef","prevRoundedSetMinRef","prevRoundedSetMaxRef","isPrice","rawSetMin","rawSetMax","stepValue","safeStepValue","roundedSetMin","floor","roundedSetMax","ceil","roundUpToStep","hasValidLimitRange","safeRoundedMin","safeRoundedMax","validMinLimit","validMaxLimit","clampMinValue","clampMaxValue","range","minPercent","maxPercent","formattedSqFt","formattedPrice","prevRawSetMax","current","prevRoundedSetMax","getSnappedValueFromPointer","clientX","track","rect","getBoundingClientRect","relative","left","snapped","round","snapToStep","updateValueFromPointer","handleOverride","activeTarget","nextMin","nextMax","handlePointerDown","handle","currentTarget","setPointerCapture","pointerId","handlePointerUp","hasPointerCapture","releasePointerCapture","_Fragment","onPointerDown","Element","closest","onPointerMove","onPointerUp","onPointerLeave","style","right","iconNode","_ref2$maxSpecs","maxSpecs","MAX_UNITS","resolvedMaxSpecs","useMemo","Number","isFinite","rounded","getResolvedMaxSpecs","selectedIndex","setSelectedIndex","items","map","specValue","item","isNull","_ref$alignment","alignment","_ref$tabCount","tabCount","tabLabels","resolvedTabCount","clampTabCount","defaultTabs","resolvedTabs","slice","labels","concat","tab","tabBar","tabBarDark","isFullCenter","tabsClassName","tabsFull","tabsSpaced","alignLeft","tabButton","tabButtonFull","divider","dividerDark","_BG_STATE_CLASS$bgKey","_ref$href","href","sizeKey","linkClasses","textLink","stopPropagation","theme","clientReady","setClientReady","_ref$toggleOn","toggleOn","_ref$toggleOff","toggleOff","toggleUnit","stateOnLight","stateOffLight","stateOnDark","stateOffDark","useContext"],"mappings":"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"}