Files
supabase/apps/www/components/ProductIcon.tsx
Francesco SansalvadoreandJonathan Summers-Muir be9590c890 Multiple themes management (#18871)
* set up multiple themes in studio

* set up multiple themes in studio

* set up multiple themes in docs and www

* update all resolvedTheme to also include deep-dark

* update all resolvedTheme checks to also include deep-dark

* update tailwind.config.js tokens

* update tailwind.config.js tokens

* update leftover scale12 token

* update if resolvedTheme _doesn't_ include 'dark'

* update more styling tokens

* add dynamic themes to CmdK

* fix nav and footer for multi theme

* add data-theme selector output to transformTokens.js

* update code-hike.css to target data-theme css

* update tailwindcss to ^3.3.5

* ThemeImage with light and dark src for www and docs

* add brand-button styling token

* update old dark theme boolean

* update old dark theme boolean

* make homepage product visuals themeable

* update product page themed images

* update badge green with brand

* fix roles list appearance

* fix auth widget in auth page

* update more dark logic

* update more dark logic

* add button default bg and border

* update pricing page theme styling

* clean up Themeimage

* remove forceDark in homepage

* update dark:border-dark occurrences

* update dark:border-dark occurrences

* fix dark mode base colors

* remove foreground-strong

* fix notification badge bg

* remove some dark: selectors

* update dark: selectors

* update code-hike deep dark bg color

* fix comment typo

* update border-button-hover token

* fix customer story logo

* remove some more dark: selectors

* restore forceDark in www homepage

* fix auth react icon

* fix homepage product visuals

* remove theme

* add brand-link token

* fix checkbox bg

* npm install

* more visible EntityListItem active bg

* fix --background-alternative-default css vars

---------

Co-authored-by: Jonathan Summers-Muir <MildTomato@users.noreply.github.com>
2023-11-16 16:41:53 +00:00

66 lines
1.9 KiB
TypeScript

type Color = 'black' | 'gray' | 'green' | 'alt'
interface ProductIcon {
icon: string
color?: Color
}
function ProductIcon({ icon, color }: ProductIcon) {
const handleColor = (color: Color) => {
switch (color) {
case 'green':
return {
container: 'bg-brand-600 text-brand-100',
svg: 'stroke-brand',
}
case 'alt':
return {
container: 'bg-brand-200 text-brand',
svg: 'stroke-brand',
}
case 'gray':
return {
container: 'bg- text-brand',
svg: 'stroke-brand',
}
case 'black':
default:
return {
container: 'bg-foreground text-background-alternative',
svg: 'stroke-background',
}
}
}
return (
<div
className={[
'inline-flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-md',
!color || color === 'black' ? 'bg-foreground text-background-alternative' : '',
color && color === 'gray' ? 'bg-border-strong text-foreground-light' : '',
color && color === 'green' ? 'bg-brand text-brand-100' : '',
color && color === 'alt' ? 'bg-alternative text-brand' : '',
// color && color === 'alt' ? 'bg-surface-300 text-brand' : '',
].join(' ')}
>
<svg
className={[
'h-5 w-5',
!color || color === 'black' ? 'stroke-background' : '',
color && color === 'gray' ? 'stroke-foreground-light' : '',
color && color === 'green' ? 'stroke-brand-200' : '',
color && color === 'alt' ? 'stroke-brand' : '',
].join(' ')}
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.5" d={icon} />
</svg>
</div>
)
}
export default ProductIcon