
Company News
Socket Partners with Replit to Block Malicious Packages in AI-Powered Development
Replit is integrating Socket Firewall into its AI-powered development experience to help protect builders from malicious open source packages.
@sigil-ui/components
Advanced tools
350+ React components styled entirely through design tokens — every color, font, and radius reads from CSS custom properties
350+ token-driven components that consume Sigil design tokens via CSS custom properties. These components are the visual output layer — they read from @sigil-ui/tokens and render accordingly.
Components are downstream consumers, not the source of truth. To change how components look, edit the tokens or switch the preset. Do not manually change Tailwind classes or hardcode colors inside component files.
Wrong: open Button.tsx → change "bg-indigo-600" to "bg-emerald-600"
Wrong: open Card.tsx → add "rounded-2xl" to override the default radius
Right: change --s-primary to emerald in your token CSS → every primary-colored component updates
Right: switch to a preset with larger radius → every component's corners update
When an agent is asked to "make the buttons green" or "increase the card border radius," it should edit the token layer, not the component files.
pnpm add @sigil-ui/components
Peer dependencies: @sigil-ui/tokens, react, react-dom
Stack Grid Section Frame PageGrid Margin Gutter Divider HRule
Button Badge Card Label Input Textarea Select Checkbox Switch Slider Progress Separator Avatar Skeleton Table Tabs Accordion Tooltip ScrollArea KPI Terminal CodeBlock LoadingSpinner
Navbar Footer Breadcrumb Pagination
Dialog Popover Sheet Toast
Shape Diamond Hexagon Triangle Diagonal
Box3D Box3DGrid Card3D FloatingUI IsometricView
Diagram ExplodedView FlowDiagram Timeline ComparisonTable ArchitectureDiagram
Hero FeatureFrame Pricing CTA LogoBar TestimonialCard
Pattern Cross
AnimateOnScroll
The library also includes shadcn/Radix-inspired composed recipes for product apps:
Modal ConfirmDialog PromptDialog ResponsiveDialog Lightbox ImagePreview Spotlight CommandMenu ActionMenu OverflowMenu MegaMenu ContextPanel PopoverForm FloatingPanel TooltipGroup Tour TourStep Coachmark HotkeyProvider ShortcutRecorderSearchInput CurrencyInput PhoneInput TimePicker DateTimePicker DateRangeField MultiSelect Autocomplete CreatableSelect AsyncSelect SegmentedTabs RangeSlider DualRangeSlider FileDropzone ImageUpload AvatarUpload ColorField ComboboxField CheckboxCard RadioCard SwitchField SliderField StepperField TagsField CopyInputStatusBadge StatusDot StatusPill OnlineIndicator PresenceAvatar Notification NotificationList InlineAlert Callout BannerAlert ErrorState LoadingState SuccessState ProgressSteps TimelineProgress ToastAction ToastPromise SkeletonCard SkeletonTable SpinnerOverlayDescriptionList KeyValue PropertyList StatCard MetricGrid Trend SparkArea SparkBar DataList DataListItem DataGrid DataToolbar DataFilters DataPagination ColumnVisibility BulkActions EmptyTable Listbox VirtualList TreeTableContainerQuery SplitPane Dock TopBar BottomBar MobileNav SidebarNav AppHeader PageHeader SectionHeader ContentTabs AnchorNav TableOfContents ScrollSpy MasonryGrid MediaCard ResourceCard FeatureCard PricingCard TestimonialCarouselCodeTabs CodePreview CopyButton TokenPreview ThemeSwatch ThemeSwitcher PromptInput ChatMessage ChatThread MessageComposer ActivityTimeline AuditLog Changelog VersionBadge KeyboardKeyEvery component uses CSS classes that reference CSS custom properties. No hardcoded values.
/* Components use token variables, never raw values */
.sigil-button {
background: var(--s-primary);
color: var(--s-primary-contrast);
border-radius: var(--s-radius-button, var(--s-radius-md));
padding: var(--s-button-py) var(--s-button-px);
font-weight: var(--s-button-font-weight, 600);
transition-duration: var(--s-duration-fast);
transition-timing-function: var(--s-ease-default);
}
.sigil-button:hover {
background: var(--s-primary-hover);
}
.sigil-button:active {
transform: scale(var(--s-button-active-scale, 0.97));
}
This means:
--s-primary → all buttons change background--s-radius-md → all medium-radius elements change--s-duration-fast → all fast transitions change speed| Convention | Rule |
|---|---|
| Ref forwarding | Every component uses forwardRef |
| className | Always accepted, merged with clsx(internal, className) |
| Class prefix | All CSS classes prefixed with sigil- |
| Variants | Exposed as typed props: variant, size, intent |
| Slot pattern | asChild prop via @radix-ui/react-slot for composability |
| Token styling | All visual properties via var(--s-*), never hardcoded |
| Motion | All transitions use --s-duration-* and --s-ease-* |
import { Button, Card, Input, Badge } from "@sigil-ui/components";
function Example() {
return (
<Card>
<Input placeholder="Enter your email" />
<Button variant="default" size="md">
Subscribe <Badge variant="success">Free</Badge>
</Button>
</Card>
);
}
The recommended way is through the CLI, which copies source files into your project so you can customize:
npx @sigil-ui/cli add button card input badge dialog
npx @sigil-ui/cli add --all
This copies component source into your componentsDir (default: src/components/ui/). You own the files, but they still read from tokens. Even after copying, the right way to restyle is still through the token layer.
When working with Sigil components:
forwardRef, accept classNamesigil-var(--s-*) for colors, spacing, radius, shadows, motionpackages/cli/src/utils/registry.ts for CLI supportFAQs
350+ React components styled entirely through design tokens — every color, font, and radius reads from CSS custom properties
We found that @sigil-ui/components demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Replit is integrating Socket Firewall into its AI-powered development experience to help protect builders from malicious open source packages.

Security News
npm confirmed a tooling bug incorrectly marked several one-character packages as security holders and said it was working on a rollback.

Research
/Security News
Newer packages in this compromise use native extensions and .pth loaders to execute JavaScript stealers in developer environments.