Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: update pretty much all components according to new designs #95

Merged
merged 1 commit into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/components/Button/Button.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const meta: Meta<ButtonProps> = {
title: "Components/Button",
decorators: [
MatrixDecorator<ButtonProps>({
first: { key: "size", values: ["sm", "md", "lg"] },
first: { key: "size", values: ["md", "lg"] },
second: { key: "variant", values: ["primary", "secondary"] },
}),
],
Expand Down Expand Up @@ -77,7 +77,6 @@ export const WalletVariant: Story = {
decorators: [
(Story, { args }) => (
<div className="ink:flex ink:flex-col ink:items-center ink:justify-center ink:gap-2">
<Story args={{ ...args, size: "sm" }} />
<Story args={{ ...args, size: "md" }} />
<Story args={{ ...args, size: "lg" }} />
</div>
Expand Down
17 changes: 6 additions & 11 deletions src/components/Button/Button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export interface ButtonProps
asChild?: boolean;
className?: string;
variant?: "primary" | "secondary" | "wallet";
size?: "sm" | "md" | "lg";
size?: "md" | "lg";
rounded?: "full" | "default";
iconLeft?: React.ReactNode;
iconRight?: React.ReactNode;
Expand All @@ -19,7 +19,7 @@ export const Button: React.FC<ButtonProps> = ({
className,
children,
variant = "primary",
size = "sm",
size = "md",
rounded = "default",
iconLeft,
iconRight,
Expand All @@ -32,8 +32,7 @@ export const Button: React.FC<ButtonProps> = ({
classNames(
"ink:*:object-cover ink:*:w-full ink:*:h-full ink:*:rounded-full",
variantClassNames(size, {
sm: "ink:size-4",
md: "ink:size-5",
md: "ink:size-4",
lg: "ink:size-6",
})
)
Expand All @@ -44,14 +43,12 @@ export const Button: React.FC<ButtonProps> = ({
"ink:rounded-full ink:font-default ink:transition-colors ink:hover:cursor-pointer ink:disabled:cursor-not-allowed ink:transition-default-animation ink:box-border ink:backdrop-blur-xl",
"ink:flex ink:items-center ink:justify-center ink:gap-1 ink:shrink-0 ink:select-none ink:no-underline",
variantClassNames(size, {
sm: "ink:px-2 ink:py-1.5 ink:text-body-2-bold ink:h-5",
md: "ink:px-3 ink:py-2 ink:text-body-2-bold ink:h-6",
lg: "ink:px-4 ink:py-3 ink:text-h4 ink:h-8",
md: "ink:px-2 ink:py-1.5 ink:text-body-3-bold ink:h-5",
lg: "ink:px-4 ink:py-3 ink:text-h5 ink:h-8",
}),
variantClassNames(rounded, {
full: `ink:rounded-full ${variantClassNames(size, {
sm: "ink:p-1 ink:size-5",
md: "ink:p-1.5 ink:size-6",
md: "ink:p-1 ink:size-5",
lg: "ink:p-2 ink:size-8",
})}`,
default: "",
Expand All @@ -66,13 +63,11 @@ export const Button: React.FC<ButtonProps> = ({
"ink:border-background-container ink:border",
iconLeft &&
variantClassNames(size, {
sm: "ink:pl-0.5",
md: "ink:pl-0.5",
lg: "ink:pl-1",
}),
iconRight &&
variantClassNames(size, {
sm: "ink:pr-0.5",
md: "ink:pr-0.5",
lg: "ink:pr-1",
})
Expand Down
4 changes: 2 additions & 2 deletions src/components/FieldLabel/FieldLabel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ export const FieldLabel: React.FC<FieldLabelProps> = ({
<Field className="ink:flex ink:flex-col ink:font-default ink:group">
<div className="ink:flex ink:items-center ink:gap-1">
{children}
<Label className="ink:cursor-pointer ink:h-3 ink:flex ink:items-center ink:justify-center ink:text-body-2 ink:text-text-default">
<Label className="ink:cursor-pointer ink:h-3 ink:flex ink:items-center ink:justify-center ink:text-body-2-bold ink:text-text-default">
{label}
</Label>
</div>

{description && (
<Description className="ink:text-caption-2-regular ink:text-text-default">
<Description className="ink:text-body-3-regular ink:text-text-default">
{description}
</Description>
)}
Expand Down
6 changes: 3 additions & 3 deletions src/components/Input/Input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
<label
className={classNames(
"ink:w-full ink:flex ink:items-center ink:justify-center ink:gap-1 ink:box-border ink:group",
"ink:p-2 ink:h-6",
"ink:font-default ink:rounded-xs ink:bg-background-container ink:text-body-2-regular ink:text-text-default",
"ink:p-2 ink:h-5",
"ink:font-default ink:rounded-xs ink:bg-background-container ink:text-body-3-regular ink:text-text-default",
"ink:border-1 ink:border-transparent ink:focus-within:border-text-on-secondary ink:transition-colors ink:transition-default-animation",
className
)}
>
{iconLeft && <div className={iconClasses}>{iconLeft}</div>}
<input
className="ink:w-full ink:outline-none ink:box-border ink:-my-1 ink:placeholder:font-default ink:placeholder:text-body-2-regular ink:placeholder:text-text-muted"
className="ink:w-full ink:outline-none ink:box-border ink:-my-1 ink:placeholder:font-default ink:placeholder:text-body-3-regular ink:placeholder:text-text-muted"
ref={ref}
{...props}
/>
Expand Down
4 changes: 2 additions & 2 deletions src/components/ListItem/ListItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ export const ListItem: React.FC<ListItemProps> = ({
disabled={disabled}
className={classNames(
"ink:group ink:font-default ink:text-body-2-bold ink:cursor-pointer ink:box-border ink:no-underline",
"ink:bg-background-light-invisible ink:px-1.5 ink:py-2 ink:rounded-md ink:text-body-2-bold ink:text-text-default ink:hover:bg-background-container ink:disabled:bg-background-light-transparent-disabled ink:disabled:text-muted ink:active:bg-background-container/80 ink:data-active:bg-background-container/80",
"ink:w-full ink:flex ink:items-center ink:justify-start ink:gap-1.5 ink:h-6",
"ink:bg-background-light-invisible ink:px-1.5 ink:py-2 ink:rounded-md ink:text-body-3-bold ink:text-text-default ink:hover:bg-background-container ink:disabled:bg-background-light-transparent-disabled ink:disabled:text-muted ink:active:bg-background-container/80 ink:data-active:bg-background-container/80",
"ink:w-full ink:flex ink:items-center ink:justify-start ink:gap-1.5 ink:h-5",
variantClassNames(variant, {
default: "",
secondary:
Expand Down
2 changes: 1 addition & 1 deletion src/components/Listbox/ListboxButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export const ListboxButton = forwardRef<HTMLButtonElement, ListboxButtonProps>(
<HeadlessListboxButton
className={classNames(
className,
"ink:focus-visible:outline-none ink:data-active:border-text-on-secondary"
"ink:focus-visible:outline-none ink:data-active:border-text-on-secondary ink:rounded-full ink:text-body-3-bold ink:text-text-muted ink:hover:text-text-default"
)}
ref={ref}
as={ListItem}
Expand Down
2 changes: 1 addition & 1 deletion src/components/Listbox/ListboxOptions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export const ListboxOptions = ({
className={classNames("ink:absolute ink:z-10 ink:box-border", className)}
anchor="bottom end"
>
<Panel className="ink:max-h-[300px]">{children}</Panel>
<Panel className="ink:max-h-[300px] ink:gap-px">{children}</Panel>
</HeadlessListboxOptions>
);
};
4 changes: 2 additions & 2 deletions src/components/SegmentedControl/SegmentedControl.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const SegmentedControl = <TOptionValue extends string>({
<div className="ink:relative ink:font-default ink:h-fit">
<div
className={classNames(
"ink:grid ink:h-6 ink:grid-flow-col ink:text-body-2-bold ink:rounded-md ink:p-0.5 ink:box-border ink:backdrop-blur-xl",
"ink:grid ink:h-5 ink:grid-flow-col ink:text-body-3-bold ink:rounded-md ink:p-0.5 ink:box-border ink:backdrop-blur-xl",
variantClassNames(displayOn, {
light: "ink:bg-background-container",
dark: "ink:bg-background-light",
Expand All @@ -85,7 +85,7 @@ export const SegmentedControl = <TOptionValue extends string>({
default: "ink:text-text-default",
primary: "ink:text-text-on-primary",
})
: "ink:text-text-on-secondary",
: "ink:text-text-muted ink:hover:text-text-default",
variableTabWidth ? "ink:px-3" : "ink:px-4"
)}
ref={(el) => {
Expand Down
67 changes: 14 additions & 53 deletions src/components/Tag/Tag.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
import type { Meta, StoryObj } from "@storybook/react";
import { Tag, type TagProps } from "./Tag";
import { useState } from "react";
import { InkIcon } from "../..";
import { MatrixDecorator } from "../../decorators/MatrixDecorator";

const meta: Meta<TagProps> = {
decorators: [
MatrixDecorator<TagProps>({
first: {
key: "variant",
values: ["fill", "outline", "filter", "featured"],
},
second: { key: "selected", values: [false, true] },
}),
],
title: "Components/Tag",
component: Tag,
tags: ["autodocs"],
Expand All @@ -15,60 +24,12 @@ const meta: Meta<TagProps> = {
export default meta;
type Story = StoryObj<typeof meta>;

export const Fill: Story = {
args: {
variant: "fill",
children: "Fill Tag",
},
export const Default: Story = {
args: {},
};

export const Outline: Story = {
export const WithIcon: Story = {
args: {
variant: "outline",
children: "Outline Tag",
},
};

export const Filter: Story = {
render: () => {
const [selected, setSelected] = useState(false);
return (
<Tag
variant="filter"
selected={selected}
onClick={() => setSelected((prev) => !prev)}
>
Tag
</Tag>
);
},
};

export const AllVariants: Story = {
render: () => {
const [selected, setSelected] = useState(false);
return (
<div className="ink:flex ink:flex-col ink:gap-4">
<div className="ink:flex ink:items-center ink:gap-4">
<Tag variant="fill" icon={<InkIcon.InkLogo />}>
Tag
</Tag>
<Tag variant="outline" icon={<InkIcon.Settings />}>
Tag
</Tag>
</div>
<div className="ink:flex ink:items-center ink:gap-4">
<Tag variant="fill">Fill</Tag>
<Tag variant="outline">Outline</Tag>
<Tag
variant="filter"
selected={selected}
onClick={() => setSelected((prev) => !prev)}
>
Selectable Tag
</Tag>
</div>
</div>
);
icon: <InkIcon.InkLogo />,
},
};
25 changes: 18 additions & 7 deletions src/components/Tag/Tag.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,25 @@ import * as React from "react";
import { classNames } from "../../util/classes";

const tagVariants = cva(
"ink:inline-flex ink:font-default ink:items-center ink:gap-1 ink:flex-shrink-0 ink:rounded-full ink:text-body-3-bold ink:font-bold ink:leading-[18px] ink:px-1.5",
"ink:inline-flex ink:font-default ink:items-center ink:gap-1 ink:flex-shrink-0 ink:rounded-full ink:text-body-3-bold ink:font-bold ink:leading-[18px]",
{
variants: {
variant: {
fill: "ink:bg-background-container ink:text-text-muted",
fill: "ink:bg-background-container ink:text-text-muted ink:h-4 ink:px-1.5",
outline:
"ink:text-text-muted ink:border-background-container ink:border-[1.5px]",
"ink:text-text-muted ink:border-background-container ink:border-[1.5px] ink:h-4 ink:px-1.5",
filter:
"ink:text-text-muted ink:hover:text-text-default ink:duration-200 ink:cursor-pointer",
"ink:text-text-muted ink:hover:text-text-default ink:duration-200 ink:cursor-pointer ink:h-5 ink:px-1.5",
featured:
"ink:bg-background-container ink:text-text-on-secondary ink:text-caption-2-bold ink:h-2 ink:px-1",
},
selected: {
true: "",
false: "",
},
hasIcon: {
true: "ink:py-1",
false: "ink:py-1.5",
true: "",
false: "",
},
},
compoundVariants: [
Expand Down Expand Up @@ -52,7 +54,16 @@ export const Tag = React.forwardRef<HTMLDivElement, TagProps>(
)}
{...props}
>
{icon && <div className="ink:size-3">{icon}</div>}
{icon && (
<div
className={classNames(
"ink:flex ink:items-center ink:justify-center",
variant === "featured" ? "ink:size-1.5" : "ink:size-2"
)}
>
{icon}
</div>
)}
{children}
</div>
);
Expand Down
4 changes: 2 additions & 2 deletions src/layout/InkLayout/InkLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export interface InkLayoutProps extends PropsWithChildren {

export const InkLayout: React.FC<InkLayoutProps> = ({
className,
mainIcon = <InkIcon.Logo.Placeholder className="ink:size-6" />,
mainIcon = <InkIcon.Logo.Placeholder className="ink:size-5" />,
headerContent,
sideNavigation,
topNavigation,
Expand All @@ -38,7 +38,7 @@ export const InkLayout: React.FC<InkLayoutProps> = ({
)}
>
<div className="ink:w-full ink:grid ink:grid-cols-[1fr_auto_1fr] ink:justify-between ink:items-center ink:gap-3 ink:px-3 ink:sm:px-5 ink:pt-4 ink:box-border ink:sticky ink:top-0 ink:z-10">
<div className="ink:flex ink:items-center ink:justify-start ink:size-6 ink:gap-2">
<div className="ink:flex ink:items-center ink:justify-start ink:size-5 ink:gap-2">
{mainIcon}
</div>
<div className="ink:flex ink:flex-1 ink:justify-center ink:items-center">
Expand Down
Loading