Skip to content

feat: add components to design system batch #1#1703

Open
isadorable-png wants to merge 9 commits intodevfrom
feat/ds-new-components-batch-1
Open

feat: add components to design system batch #1#1703
isadorable-png wants to merge 9 commits intodevfrom
feat/ds-new-components-batch-1

Conversation

@isadorable-png
Copy link
Collaborator

No description provided.

@vercel
Copy link

vercel bot commented Mar 12, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
anticapture Ready Ready Preview, Comment Mar 12, 2026 7:30pm
anticapture-storybook Ready Ready Preview, Comment Mar 12, 2026 7:30pm

Request Review

@isadorable-png isadorable-png changed the title feat: add components to design system feat: add components to design system batch #1 Mar 12, 2026
@claude
Copy link

claude bot commented Mar 12, 2026

Claude encountered an error —— View job


I'll analyze this and get back to you.

@isadorable-png isadorable-png self-assigned this Mar 12, 2026
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: decff100ad

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +30 to +34
<div
role="option"
aria-selected={isSelected}
aria-disabled={disabled}
onClick={disabled ? undefined : onClick}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make combobox options keyboard-focusable

These options are rendered as plain div elements with only mouse handlers, so once the listbox opens, keyboard users cannot focus an option or select it with Enter/Space. In practice this makes the combobox unusable without a mouse and contradicts the role="listbox"/role="option" semantics exposed by this component.

Useful? React with 👍 / 👎.

Comment on lines +292 to +297
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve centering transform in modal keyframes

The modal content is centered with -translate-x-1/2 -translate-y-1/2, but these keyframes set transform to only translateY(...), which overrides the centering transform during open/close animation. This causes the dialog to animate from an offset position (shifted right/down) instead of staying centered.

Useful? React with 👍 / 👎.

Comment on lines +15 to +18
<button
role="tab"
aria-selected={isActive}
onClick={onClick}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Set tab button type to avoid form submission

This <button> omits type="button", so inside any surrounding <form> it defaults to type="submit". Clicking a tab in that context will submit the form unexpectedly (and can trigger navigation/validation) instead of only changing tab state.

Useful? React with 👍 / 👎.

value: "uniswap",
label: "Uniswap",
icon: (
<CrownIcon style={{ width: 14, height: 14 }} className="text-highlight" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here do not use inline styles

value,
placeholder = "Select…",
onValueChange,
disabled = false,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change this to isDisabled to follow dashboard patterns

"text-secondary shrink-0 transition-transform duration-150",
open && "rotate-180",
)}
style={{ width: 14, height: 14 }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no inline styles

},
decorators: [
(Story) => (
<div className="w-[600px]">
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

avoid explicit number like this, use tailwind classes

Comment on lines +14 to +16
actionsNumber = "1",
cancelLabel = "Cancel",
confirmLabel = "Confirm",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we dont need the actionsNumber prop, because if you pass cancelLabel you will have a cancel button, the same with confirm

},
decorators: [
(Story) => (
<div className="w-[270px]">
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prefer tailwind classes

Comment on lines +33 to +39
const labelEl = label ? (
<span className="text-secondary shrink-0 whitespace-nowrap text-sm leading-5">
{label}
</span>
) : null;

const trackEl = (
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what EL means? try to make this more legible

)}
>
{label}
{items !== undefined && (
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
{items !== undefined && (
{!!items && items.length > 0 && (

@brunod-e brunod-e self-requested a review March 12, 2026 17:06
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 33541861ee

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

className,
)}
>
<Button variant="outline" size="md" onClick={onCancel}>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Set cancel action to non-submit button

This footer action is rendered through Button, which ultimately outputs a native <button> without an explicit type; in a surrounding <form>, that defaults to submit. As a result, clicking Cancel can trigger unintended form submission/navigation instead of only dismissing the modal, which is especially likely when modal content is used in form workflows.

Useful? React with 👍 / 👎.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 09858c7438

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

</PopoverPrimitive.Trigger>

{/* Dropdown content */}
<PopoverPrimitive.Content

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Wrap combobox content in Popover portal

The dropdown is rendered as plain PopoverPrimitive.Content inside the local DOM tree, so when this component is placed inside containers with clipping (overflow-hidden, scroll regions, transformed parents), the option list can be partially or fully hidden even though the trigger is visible. That makes selection impossible in common dashboard layouts and is why other popovers here use a portal.

Useful? React with 👍 / 👎.

Comment on lines +21 to +25
<PillTab
key={tab.value}
label={tab.label}
isActive={activeTab === tab.value}
onClick={() => onTabChange?.(tab.value)}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Pass counter data through PillTabGroup

PillTab supports a counter payload, but PillTabGroup only forwards label and active state, so counter metadata is silently dropped whenever tabs are rendered through the group abstraction. In practice, grouped pill tabs cannot show voter/VP/percentage values even if callers have that data.

Useful? React with 👍 / 👎.

@@ -0,0 +1,154 @@
# New Component Checklist
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing name and description as defined by agent skills standard

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants