ui-translation

Skill: UI Translation

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "ui-translation" with this command: npx skills add iress/design-system/iress-design-system-ui-translation

Skill: UI Translation

Purpose

Translate natural language UI descriptions into IDS (Iress Design System) component implementations using @iress-oss/ids-components and @iress-oss/ids-tokens .

Setup

Important: IDS v6 is currently in alpha. Install with the @alpha tag:

npm install @iress-oss/ids-components@alpha

If using tokens directly:

npm install @iress-oss/ids-tokens@alpha

import '@iress-oss/ids-components/dist/style.css'; // Required — component styles import '@iress-oss/ids-tokens/build/css-vars.css'; // Required if using tokens directly import { IressProvider, IressButton, IressInput, IressField, IressStack, IressInline, IressText, IressCard, // ... import what you need } from '@iress-oss/ids-components';

// Wrap your app in IressProvider (handles fonts + CSS variables) function App() { return <IressProvider>{/* your UI */}</IressProvider>; }

Component Mapping

Actions

Description IDS Component Example

Submit / primary action button IressButton mode="primary"

<IressButton mode="primary">Submit</IressButton>

Cancel / secondary action button IressButton mode="secondary"

<IressButton mode="secondary">Cancel</IressButton>

Less prominent action IressButton mode="tertiary"

<IressButton mode="tertiary">Details</IressButton>

Icon-only action IressButton icon="edit" mode="muted"

<IressButton mode="muted" icon="edit">Edit</IressButton>

Danger / delete action IressButton status="danger"

<IressButton mode="primary" status="danger">Delete</IressButton>

Link in text IressLink

<IressLink href="/about">About</IressLink>

Dropdown/context menu trigger IressDropdownMenu

See patterns docs

Form Inputs

Description IDS Component Example

Labelled text input IressField

  • IressInput

See Form example below

Select dropdown IressField

  • IressSelect

<IressField label="Country"><IressSelect>...</IressSelect></IressField>

Currency input IressField

  • IressInputCurrency

<IressField label="Amount"><IressInputCurrency /></IressField>

Checkbox IressCheckbox

<IressCheckbox label="I agree" />

Checkbox group IressCheckboxGroup

<IressCheckboxGroup label="Options"><IressCheckbox label="A" /><IressCheckbox label="B" /></IressCheckboxGroup>

Radio buttons IressRadioGroup

  • IressRadio

<IressRadioGroup label="Choice"><IressRadio label="Yes" value="yes" /><IressRadio label="No" value="no" /></IressRadioGroup>

Toggle switch IressToggle

<IressToggle label="Enable" />

Slider / range IressSlider

<IressSlider min={0} max={100} />

Autocomplete / typeahead IressAutocomplete

See component docs

Read-only display IressReadonly

<IressReadonly label="Status" value="Active" />

Layout

Description IDS Component Example

Vertical stack (items stacked top-to-bottom) IressStack

<IressStack gap="4">...</IressStack>

Horizontal row (items side-by-side) IressInline

<IressInline gap="2">...</IressInline>

Grid columns IressRow

  • IressCol

<IressRow><IressCol span={6}>...</IressCol><IressCol span={6}>...</IressCol></IressRow>

Container with max-width IressContainer

<IressContainer>...</IressContainer>

Divider / separator IressDivider

<IressDivider />

Responsive visibility IressHide

<IressHide below="md">Desktop only</IressHide>

Content & Display

Description IDS Component Example

Text / paragraph IressText

<IressText>Body text</IressText>

Heading IressText element="h2"

<IressText element="h2">Heading</IressText>

Card / panel IressCard or IressPanel

<IressCard><IressCard.Header>Title</IressCard.Header><IressCard.Body>Content</IressCard.Body></IressCard>

Alert / notification IressAlert

<IressAlert status="success">Saved!</IressAlert>

Loading spinner IressSpinner

<IressSpinner />

Skeleton loader IressSkeleton

<IressSkeleton height="20px" width="200px" />

Progress bar IressProgress

<IressProgress value={75} max={100} />

Image IressImage

<IressImage src="..." alt="..." />

Icon IressIcon

<IressIcon name="settings" />

Tag / badge IressTag

<IressTag>New</IressTag>

Pill IressPill

<IressPill>Category</IressPill>

Tooltip IressTooltip

<IressTooltip content="Help text"><IressButton>Hover me</IressButton></IressTooltip>

Overlays & Navigation

Description IDS Component Example

Modal / dialog IressModal

See Modal docs

Status modal (danger/success/warning) IressModal status="danger"

Use actions prop for buttons; size restricted to sm /md

Slideout / drawer IressSlideout

See Slideout docs

Popover IressPopover

See Popover docs

Menu IressMenu

  • IressMenuItem

See Menu docs

Tab navigation IressTabSet

  • IressTab

<IressTabSet><IressTab label="Tab 1">Content 1</IressTab></IressTabSet>

Skip link (a11y) IressSkipLink

<IressSkipLink href="#main">Skip to content</IressSkipLink>

Side navigation IressSideNav

See SideNav pattern docs

Breadcrumbs IressBreadcrumbs

See Breadcrumbs pattern docs

Tables

Description IDS Component Example

Data table IressTable

<IressTable><IressTable.Head>...</IressTable.Head><IressTable.Body>...</IressTable.Body></IressTable>

Styling Props (IressCSSProps)

Most IDS components accept styling props for layout adjustments:

Prop Purpose Values

alignSelf

Override flex alignment "start" , "end" , "center" , "stretch"

bg

Background colour Colour tokens: "colour.primary.fill" , "colour.neutral.20" , "alt" , etc.

borderRadius

Border radius Radius tokens: "radius.0" – "radius.4" , "none"

color

Text colour Colour tokens: "colour.neutral.80" , "colour.primary.text" , etc.

flex

Flex grow "1" only

focusable

Apply focus ring "true" , "within" , "within:inset" , "inset" , "has-button" , "has-input" , "has-switch" , "label-after" , "expander-activator" , "select-activator" , "slider" , "group"

hideFrom

Hide from breakpoint up true , or breakpoints: "sm" , "md" , "lg" , "xl"

hideBelow

Hide below breakpoint Breakpoints: "sm" , "md" , "lg" , "xl"

maxWidth

Max width Size tokens: "container.sm" , "container.md" , etc.

m

Margin (all sides) Spacing tokens: "xs" – "xl" , "spacing.1" – "spacing.10" , "auto" , negatives (responsive)

mx

Margin horizontal Same as m (responsive)

my

Margin vertical Same as m (responsive)

mt

Margin top Same as m (responsive)

mr

Margin right Same as m (responsive)

mb

Margin bottom Same as m (responsive)

ml

Margin left Same as m (responsive)

noGutter

Remove last-child bottom margin true / false

p

Padding (all sides) Spacing tokens: "xs" – "xl" , "spacing.1" – "spacing.10" (responsive)

px

Padding horizontal Same as p (responsive)

py

Padding vertical Same as p (responsive)

pt

Padding top Same as p (responsive)

pr

Padding right Same as p (responsive)

pb

Padding bottom Same as p (responsive)

pl

Padding left Same as p (responsive)

scrollable

Enable overflow scrolling true , "x" , "y"

srOnly

Screen-reader only true / false (responsive)

stretch

Fill parent height true / false

textAlign

Text alignment "left" , "right" , "center" , "justify" , "inherit"

textStyle

Typography style "typography.body.sm" , "typography.body.md" , "typography.heading.1" – "typography.heading.5" , "typography.code"

width

Element width Size tokens: "input.2" – "input.16" , "3/12" – "12/12" (grid), "auto" (responsive)

Translation Examples

"A login form with email and password fields and a submit button"

import { IressButton, IressField, IressInput, IressStack, } from '@iress-oss/ids-components';

function LoginForm() { return ( <IressStack gap="4"> <IressField label="Email" htmlFor="email" required> <IressInput id="email" type="email" placeholder="Enter your email" /> </IressField> <IressField label="Password" htmlFor="password" required> <IressInput id="password" type="password" placeholder="Enter your password" /> </IressField> <IressButton mode="primary" type="submit"> Log in </IressButton> </IressStack> ); }

"A card with a title, description, and two action buttons"

import { IressCard, IressButton, IressInline, IressText, } from '@iress-oss/ids-components';

function ActionCard() { return ( <IressCard> <IressCard.Header> <IressText element="h3">Card Title</IressText> </IressCard.Header> <IressCard.Body> <IressText> This is the card description with supporting details. </IressText> </IressCard.Body> <IressCard.Footer> <IressInline gap="2"> <IressButton mode="primary">Confirm</IressButton> <IressButton mode="secondary">Cancel</IressButton> </IressInline> </IressCard.Footer> </IressCard> ); }

"A settings page with a toggle, some checkboxes, and a save button"

import { IressStack, IressToggle, IressCheckboxGroup, IressCheckbox, IressButton, IressText, IressDivider, } from '@iress-oss/ids-components';

function SettingsPage() { return ( <IressStack gap="6"> <IressText element="h2">Settings</IressText> <IressToggle label="Enable notifications" /> <IressDivider /> <IressCheckboxGroup label="Notification types"> <IressCheckbox label="Email" value="email" /> <IressCheckbox label="SMS" value="sms" /> <IressCheckbox label="Push" value="push" /> </IressCheckboxGroup> <IressDivider /> <IressButton mode="primary">Save settings</IressButton> </IressStack> ); }

Best Practices

  • Always wrap in IressProvider — Required at the root of your app for fonts and CSS variables

  • Use IressField for all form inputs — Provides consistent labels, hints, and validation display

  • Use IressStack/IressInline for layout — Prefer these over custom CSS flex/grid

  • Use spacing tokens for gap — Values 0–10 map to multiples of 4px

  • Use semantic button modes — One primary per section, secondary for most actions

  • Always include labels — All form inputs need accessible labels via IressField

  • Use status for feedback — IressAlert for inline messages, IressModal status="danger" for confirmation dialogs, status prop on buttons for danger/success

  • Prefer IDS components — Use IressText instead of raw <p> , IressButton instead of <button>

  • Native elements inside IressText are OK — When rendering CMS content, markdown output, or other unstructured data sources, it is acceptable to nest native HTML elements (e.g. <p> , <strong> , <a> , <ul> ) inside IressText . This lets IressText provide consistent typography while allowing flexible inner content structure.

  • Check the component docs — Read the specific component doc for detailed props and patterns (node_modules/@iress-oss/ids-components/.ai/components/ )

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

ui-doctor

No summary provided by upstream source.

Repository SourceNeeds Review
General

token-usage

No summary provided by upstream source.

Repository SourceNeeds Review
General

figma-to-ids

No summary provided by upstream source.

Repository SourceNeeds Review
General

version-migration

No summary provided by upstream source.

Repository SourceNeeds Review