diff --git a/README.md b/README.md index 3ea5176a..d265ffed 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ import { tv } from 'tailwind-variants' export const buttonStyles = tv({ base: - 'text-main-11 flex items-center gap-1 border-1 outline-offset-0 outline-0 text-nowrap', + 'text-main-11 flex items-center border-1 outline-offset-0 outline-0 text-nowrap', variants: { look: { base: diff --git a/src/components/dapp/WalletButton.tsx b/src/components/dapp/WalletButton.tsx index 8349d055..d3cdcd2f 100644 --- a/src/components/dapp/WalletButton.tsx +++ b/src/components/dapp/WalletButton.tsx @@ -36,7 +36,7 @@ export default function WalletButton(props: ButtonProps) { if (!connected) return ( - }> + }> diff --git a/src/components/extenders/Modal.tsx b/src/components/extenders/Modal.tsx index 5de12c73..2b44e36c 100644 --- a/src/components/extenders/Modal.tsx +++ b/src/components/extenders/Modal.tsx @@ -28,7 +28,7 @@ export default function Modal({ state, title, description, modal, children, clas - + {title && ( {typeof title === "string" ? {title} : title} diff --git a/src/components/extenders/Select.tsx b/src/components/extenders/Select.tsx index f99e0a2a..8c0b0fdd 100644 --- a/src/components/extenders/Select.tsx +++ b/src/components/extenders/Select.tsx @@ -14,7 +14,7 @@ import Group from "./Group"; export const selectStyles = tv({ base: [ - "text-main-11 rounded-sm flex items-center dim focus-visible:outline-main-12 !leading-none justify-between gap-1 text-nowrap font-text font-semibold", + "text-main-11 rounded-sm flex items-center dim focus-visible:outline-main-12 !leading-none justify-between text-nowrap font-text font-semibold", ], slots: { dropdown: "outline-0 z-50 origin-top animate-drop animate-stretch mt-sm min-w-[var(--popover-anchor-width)]", @@ -27,26 +27,26 @@ export const selectStyles = tv({ variants: { look: { soft: { - base: "bg-main-0 border-main-9 active:text-main-12 text-main-11", + base: "bg-main-0 active:text-main-12 text-main-11", icon: "border-main-0", item: "hover:bg-main-5 data-[active-item]:bg-main-5 active:bg-main-4 text-main-12", }, base: { + base: "bg-main-0 border-main-9 border-1 active:text-main-12 text-main-11", + icon: "border-main-0", + item: "hover:bg-main-5 data-[active-item]:bg-main-5 active:bg-main-4 text-main-12", + }, + bold: { base: "bg-main-1 active:text-main-12 text-main-11", icon: "", item: "hover:bg-main-5 data-[active-item]:bg-main-5 active:bg-main-4 text-main-12", check: "text-accent-10", }, - bold: { + tint: { base: "bg-main-5 active:text-main-12 text-main-11", icon: "", item: "hover:bg-main-3 data-[active-item]:bg-main-6 active:bg-main-5 text-main-12", }, - tint: { - base: "bg-main-8 active:text-main-12 text-main-11", - icon: "", - item: "hover:bg-accent-6 data-[active-item]:bg-accent-6 active:bg-accent-5 text-main-12", - }, hype: { base: "bg-accent-5 active:text-main-12 text-accent-11", icon: "", @@ -55,35 +55,35 @@ export const selectStyles = tv({ }, size: { xs: { - base: "text-xs", + base: "gap-xs text-xs", value: "px-sm*2 py-xs*2", icon: "text-sm", item: "px-md text-xs", prefixLabel: "text-xs", }, sm: { - base: "text-sm", + base: "gap-sm text-sm", value: "px-md py-sm", icon: "text-base", item: "px-md text-sm", prefixLabel: "text-sm", }, md: { - base: "text-md", + base: "gap-md text-md", value: "px-md text-md py-md", icon: "text-lg", item: "px-md text-md", prefixLabel: "text-sm", }, lg: { - base: "text-lg", + base: "gap-lg text-lg", value: "px-xl/2 py-lg", icon: "text-xl", item: "px-lg text-lg", prefixLabel: "text-base", }, xl: { - base: "text-xl", + base: "gap-xl text-xl", value: "px-sm*2 py-lg", icon: "text-xl", item: "px-xl text-xl", @@ -263,8 +263,10 @@ export default function Select< {allOption && !searchInput && ( setValue((!!multiple ? [] : undefined) as any as Value)} + onClick={() => + // biome-ignore lint/suspicious/noExplicitAny: template makes this typing difficult even tough it works + setValue((!!multiple ? [] : undefined) as any as Value) + } render={ + sizeScale.flatMap(content => [ + { + size, + content, + container: true as const, + class: `rounded-${size}+${content}` as `rounded-${typeof size}+${typeof content}`, + }, + { + size, + content, + container: false as const, + class: `rounded-${size}` as `rounded-${typeof size}`, + }, + ]), + ), }, - defaultVariants: { - size: "md", - content: "md", - look: "base", - container: true, - }, - compoundVariants: sizeScale.flatMap(size => - sizeScale.flatMap(content => [ - { - size, - content, - container: true as const, - class: `rounded-${size}+${content}` as `rounded-${typeof size}+${typeof content}`, - }, - { - size, - content, - container: false as const, - class: `rounded-${size}` as `rounded-${typeof size}`, - }, - ]), - ), -}); + { twMerge: false }, +); export type BoxProps = Component & Themable>; diff --git a/src/components/primitives/Icon.tsx b/src/components/primitives/Icon.tsx index 5beab083..fe28ef0e 100644 --- a/src/components/primitives/Icon.tsx +++ b/src/components/primitives/Icon.tsx @@ -6,7 +6,7 @@ import type { Component, Styled } from "../.."; import Image from "./Image"; export const iconStyles = tv({ - base: "flex flex-col border-0 gap-1 overflow-hidden self-center rounded-sm w-[calc(1em+2px)] h-[calc(1em+2px)]", + base: "flex flex-col border-0 overflow-hidden self-center rounded-sm w-[1em] h-[1em]", variants: { size: { xs: "", diff --git a/src/components/primitives/Input.tsx b/src/components/primitives/Input.tsx index c7b388fc..2c7c3bc4 100644 --- a/src/components/primitives/Input.tsx +++ b/src/components/primitives/Input.tsx @@ -7,7 +7,7 @@ import type { Component, GetSet, Styled } from "../../utils/types"; import Group from "../extenders/Group"; export const inputStyles = tv({ - base: "text-main-12 flex items-center gap-1 text-nowrap font-text", + base: "text-main-12 flex items-center text-nowrap font-text", variants: { look: { none: "bg-main-0 border-0", diff --git a/src/components/primitives/Slider.tsx b/src/components/primitives/Slider.tsx index 74dcce85..3addc17f 100644 --- a/src/components/primitives/Slider.tsx +++ b/src/components/primitives/Slider.tsx @@ -6,7 +6,7 @@ import type { Component, GetSet, Styled } from "../../utils/types"; export const sliderStyles = tv({ base: [ - "relative text-main-11 flex items-center justify-between gap-1 border-1 outline-offset-0 outline-0 text-nowrap font-text font-bold", + "relative text-main-11 flex items-center justify-between border-1 outline-offset-0 outline-0 text-nowrap font-text font-bold", ], slots: { thumb: "aspect-square text-xs border-1 bg-main-4 mt-sm shadow-md font-text font-normal", diff --git a/src/components/primitives/Tabs.tsx b/src/components/primitives/Tabs.tsx index 0b3eb039..6c10178d 100644 --- a/src/components/primitives/Tabs.tsx +++ b/src/components/primitives/Tabs.tsx @@ -1,6 +1,8 @@ import { Link, useLocation } from "@remix-run/react"; + import type { ReactNode } from "react"; import { type VariantProps, tv } from "tailwind-variants"; +import { Container } from "../.."; import useThemableProps from "../../hooks/theming/useThemableProps"; import { mergeClass } from "../../utils/css"; import type { Component, Styled, Themable } from "../../utils/types"; @@ -14,50 +16,61 @@ export const tabsStyles = tv( base: "flex items-center ease !leading-none text-xl border-main-0 font-bold select-none focus-visible:outline focus-visible:outline-dashed focus-visible:outline-main-12 text-nowrap font-text", line: "", active: "", + container: "", }, variants: { look: { soft: { base: "text-main-12", - line: "border-b-1 border-accent-11", + line: "border-accent-11", active: "border-accent-11", + container: "", }, base: { base: "text-main-12", - line: "border-b-1 border-accent-11", + line: "border-accent-11", active: "border-accent-11", + container: "bg-main-3", }, bold: { base: "text-main-12", - line: "border-b-1 border-accent-11", + line: "border-accent-11", active: "border-accent-11", + container: "", }, tint: { base: "text-main-12", - line: "border-b-1 border-accent-11", + line: "border-accent-11", active: "border-accent-11", + container: "", }, hype: { base: "text-main-12", - line: "border-b-1 border-accent-11", + line: "border-accent-11", active: "border-accent-11", + container: "", }, }, size: { xs: { - base: "border-b-1 pb-xs gap-sm text-xs", + base: "pb-xs gap-sm text-xs", + container: "mb-xs pt-xs*2", }, sm: { base: "border-b-2 pb-sm gap-sm text-sm", + container: "mb-sm pt-sm*2", }, md: { base: "border-b-4 pb-md gap-sm text-base", + container: "mb-md pt-md*2", }, lg: { base: "border-b-5 pb-lg gap-sm text-lg", + container: "mb-lg pt-lg*2", }, xl: { base: "border-b-6 pb-xl gap-sm text-xl", + container: "mb-xl pt-xl*2", }, }, }, @@ -91,38 +104,42 @@ export default function Tabs({ look, size, to, theme, className, tabs = [], ...p const styleProps = tabsStyles({ look, size }); const location = useLocation(); - const { base, active, line } = tabsStyles({ + const { base, active, line, container } = tabsStyles({ look: look ?? "base", size: size ?? "md", }); return ( - - {tabs.map(tab => { - return ( - <> - {tab.link ? ( - - - {tab.label} - - - ) : ( - - )} - - ); - })} + + + + {tabs.map(tab => { + return ( + <> + {tab.link ? ( + + + {tab.label} + + + ) : ( + + )} + + ); + })} + + ); } diff --git a/src/components/primitives/Text.tsx b/src/components/primitives/Text.tsx index edc2f9f8..1134fa8b 100644 --- a/src/components/primitives/Text.tsx +++ b/src/components/primitives/Text.tsx @@ -9,7 +9,7 @@ export const textStyles = tv( look: { base: "text-main-11", soft: "text-main-11", - bold: "text-secondary-12", + bold: "text-main-12", tint: "text-accent-12", hype: "text-accent-11", }, @@ -21,9 +21,9 @@ export const textStyles = tv( xl: "text-xl", display1: "font-title font-bold leading-tight italic uppercase !text-[clamp(44px,5vw+0.875rem,104px)]", 1: "font-title !text-3xl", - 2: "font-title font-bold leading-none italic !text-[clamp(52px,1vw+2.875rem,64px)]", - 3: "font-title font-bold leading-snug italic !text-[clamp(28px,1vw+1.375rem,40px)]", - 4: "font-title leading-normal !text-[clamp(16px,1vw+1.375rem,30px)]", + 2: "font-title font-bold leading-none italic !text-[clamp(38px,0.667vw+2.125rem,46px)]", + 3: "font-title font-bold leading-none italic !text-[clamp(26px,0.667vw+1.375rem,34px)]", + 4: "font-title font-bold leading-[1.18] !text-[clamp(18px,0.667vw+0.875rem,26px)]", 5: "font-title font-bold leading-normal !text-[clamp(15px,0.25vw+0.84375rem,18px)] uppercase tracking-[1.6px] ", 6: "font-title !text-sm", }, diff --git a/src/components/primitives/Title.tsx b/src/components/primitives/Title.tsx index 3365fd2f..2880c70d 100644 --- a/src/components/primitives/Title.tsx +++ b/src/components/primitives/Title.tsx @@ -11,7 +11,7 @@ export const titleStyles = tv( look: { base: "text-main-12", soft: "text-main-11", - bold: "text-secondary-12", + bold: "text-main-12", hype: "text-accent-12", }, },