Salesforce-Style UI Component Library – Wisty UI

A React UI component library with Radix and Base UI editions, editable local source, and CRM components and blocks.

Wisty UI is a UI component library styled after Salesforce Lightning Design System 2 (SLDS 2).

It provides 80+ editable UI components and blocks for CRM, reporting, and admin dashboards.

Features

  • Cosmos, Lightning Blue, and Neutral themes based on Salesforce Lightning styling.
  • Radix UI and Base UI editions of shadcn primitives with familiar props and variants.
  • Record lookup, data tables, date and time fields, stage indicators, and inline editing.
  • Record pages, related lists, activity timelines, KPI summaries, and metric trends.
  • Theme tokens for colors, radii, display density, and chart palettes.

Available UI Components

Components

NameDescription
AccordionExpandable sections with single or multiple open panels.
AlertInline messages and page-wide banners with optional actions.
Alert dialogModal confirmation for actions such as deleting records.
AvatarProfile photos or initials for users and records.
BadgeCompact status labels and numeric indicators.
BreadcrumbLinks showing a page’s position in a hierarchy.
ButtonPrimary, secondary, and contextual action controls.
Button groupJoined controls for related record actions.
CalendarMonth view for selecting dates and date ranges.
CardTitled containers for related content and actions.
CarouselNavigable image or content panels with arrows or dots.
ChartBar, line, area, donut, scatter, and funnel charts.
Chart legendChart series labels with values or bubble sizes.
CheckboxBoolean selections with an indeterminate state.
CollapsibleTrigger-controlled expandable content areas.
ComboboxSearchable single- or multi-select options with pills.
CommandKeyboard-searchable lists of pages, records, and actions.
Context menuRight-click action menus for rows or items.
Data tableSortable, selectable records with formatted columns and row actions.
Date pickerDate field with text input and calendar selection.
Datetime pickerLocal date-and-time field with calendar and time choices.
DialogModal window for focused tasks and confirmations.
Dropdown menuButton-triggered menus for actions and choices.
Dual listboxOrdered multi-selection by moving items between lists.
Dynamic iconAnimated status icons for calculations and trends.
EmptyEmpty-state message with optional next action.
Expandable sectionTitled panel that hides content while keeping it mounted.
FieldForm control layout with labels, help text, and errors.
File selectorFile selection through a button or drag-and-drop.
Hover cardHover previews for linked people or records.
IconSalesforce utility, object, action, and file icons.
InputSingle-line text entry.
Input groupInputs with embedded buttons, labels, or icons.
ItemList row with icon, description, and actions.
KbdKeyboard key and shortcut labels.
LabelAccessible labels for form controls.
Linear scaleSingle-value selection on a labeled numeric scale.
LookupSearchable record picker for single or multiple selections.
MarkdownRead-only rendering of Markdown text.
MenubarPersistent menu row for application commands.
MetricNumeric KPI with label, unit, and trend indicator.
Native selectBrowser-native dropdown selection.
Number inputLocale-formatted amounts, quantities, and percentages.
Output fieldRead-only labeled value with an edit action.
Page headerPage title, icon, metadata, and actions.
Page regionsLightning-style page layout with header and responsive regions.
PaginationNavigation between pages of records.
PathChevron-based record stages and related actions.
PillRemovable tokens for selected records or values.
PopoverSmall anchored panel for details or short forms.
ProgressHorizontal progress indicator for a running task.
Progress indicatorStep tracker for multistep setup or forms.
Progress ringCircular completion indicator from zero to full.
Radio groupSingle selection from visible choices.
RatingInteractive star or icon-based score selection.
Scroll areaFixed-size scrollable content with slim scrollbars.
SelectDropdown for choosing one value.
SeparatorVisual divider between content groups.
SheetEdge-sliding panel for adjacent tasks.
SidebarCollapsible app navigation with mobile sheet behavior.
SkeletonLoading placeholder for pending content.
SliderDraggable control for selecting a value or range.
SonnerNon-blocking toast notifications for actions and errors.
SpinnerIndeterminate loading indicator.
SwitchImmediate on/off setting control.
TableRead-only rows and columns of structured data.
TabsSwitching between related content panels.
TextareaMultiline text input.
Time pickerTime-of-day field with typing and list selection.
TogglePersistent pressed-state button.
Toggle groupOne or multiple pressed toggles in a group.
TooltipBrief contextual hint on hover or keyboard focus.
TreeExpandable hierarchy with single-item selection.
Visual pickerLarge option cards for single or multiple selection.

Charts

NameDescription
Bar listRanked values with proportional bars and optional row actions.
GaugeDial, ring, bar, or dots for values against a maximum.

Available UI Blocks

NameDescription
Activity timelineChronological tasks, events, calls, and emails for a record.
KPI rowDashboard header metrics with change indicators.
List viewSearchable, sortable, selectable table of records.
List view headerList selector, search box, and page actions.
Metric trendTabbed KPIs with a trend chart and period comparison.
Record detailRead-only record fields grouped in sections.
Record formNew/edit form with required-field checks and save errors.
Record headerRecord name, key fields, and primary actions.
Record inline editIn-place record editing with Save and Cancel.
Record pageEditable record page with header, tabs, and sidebar.
Related listRelated records with New and View All actions.

How to Use Wisty UI

1. Set up shadcn/ui

Initialize shadcn/ui:

npx shadcn@latest init

2. Configure the Wisty registry

Add the @wisty registry to components.json.

{
  "registries": {
    "@wisty": "https://ui.wisty.ai/r/{style}/{name}.json"
  }
}

3. Install a theme and components

Install one theme, followed by the Button primitive:

npx shadcn@latest add @wisty/cosmos
npx shadcn@latest add @wisty/button

For a different color scheme, install @wisty/lightning-blue or @wisty/neutral in place of @wisty/cosmos.

4. Add a CRM record page

npx shadcn@latest add @wisty/record-page
import { RecordPage } from "@/components/wisty/record-page"
export default function AccountPage() {
  return <RecordPage />
}

The installation writes record-page.tsx and record-page-data.ts with an account example. Edit the page file to replace its fixture data and connect the record actions to your application’s handlers.

5. Render a quota gauge

npx shadcn@latest add @wisty/gauge
import { Gauge } from "@/components/wisty/gauge"
export default function QuotaSummary() {
  return (
    <section className="max-w-sm">
      <Gauge
        label="Quarterly quota attainment"
        value={72}
        max={100}
        unit="%"
        reference={80}
        referenceLabel="Team average"
        bands={[
          { to: 50, tone: "error", label: "Behind" },
          { to: 80, tone: "warning", label: "At risk" },
          { to: 100, tone: "success", label: "On track" },
        ]}
      />
    </section>
  )
}

6. Add Salesforce icons when needed

The Wisty Icon component uses SVG sprites from @salesforce-ux/icons. Install the registry item, then copy the icon assets into the application’s public folder:

npx shadcn@latest add @wisty/icon
mkdir -p public/assets/icons
cp -R node_modules/@salesforce-ux/icons/dist/salesforce-lightning-design-system-icons/. public/assets/icons/

Import Icon from @/components/wisty/icon and use names such as standard:account or utility:warning.

Noet that Salesforce icons are licensed under CC BY-ND 4.0: keep License-for-icons.txt, use the artwork unaltered, and credit Salesforce.

Alternatives and Related Resources

wisty-labs

wisty-labs

The AI app builder for Salesforce

Leave a Reply

Your email address will not be published. Required fields are marked *