<< All versions
Skill v1.0.1
currentAutomated scan100/100wso2/oxygen-ui/oxygen-component
2 files
──Details
PublishedJune 25, 2026 at 03:43 PM
Content Hashsha256:8543701dc4daf566...
Git SHA096f46d19103
Bump Typepatch
──Files
Files (1 file, 3.9 KB)
SKILL.md3.9 KBactive
SKILL.md · 149 lines · 3.9 KB
version: "1.0.1" name: oxygen-component description: Generate Oxygen UI React components following best practices. Use when creating new components, data tables, cards, or UI elements with the Oxygen UI library.
Generate Oxygen UI Component
Instructions
- Read
.claude/oxygen-ui/CLAUDE.mdfor critical rules - Read
.claude/oxygen-ui/components.mdfor API reference - Generate component using Oxygen UI patterns
Critical Rules
- Import ALL components from
@wso2/oxygen-ui(never from@mui/material) - Import icons from
@wso2/oxygen-ui-icons-react - Use theme tokens via
sxprop (e.g.,p: 2,bgcolor: 'background.paper') - Never hardcode colors or spacing values
- For data tables, prefer
ListingTableover MUI'sTable - For layouts, use
AppShell,Header,Sidebar
Component Template
tsx
import { Box, Typography, Button } from '@wso2/oxygen-ui';import { IconName } from '@wso2/oxygen-ui-icons-react';interface MyComponentProps {// Define props}function MyComponent({ ...props }: MyComponentProps) {return (<Box sx={{ p: 2, bgcolor: 'background.paper' }}>{/* Component content */}</Box>);}export default MyComponent;
Common Patterns
Data Table Component
tsx
import { ListingTable, Chip, IconButton } from '@wso2/oxygen-ui';import { EditIcon, TrashIcon } from '@wso2/oxygen-ui-icons-react';<ListingTable.Container><ListingTable.Toolbar showSearch actions={<Button>Add Item</Button>} /><ListingTable variant="card"><ListingTable.Head><ListingTable.Row><ListingTable.Cell>Name</ListingTable.Cell><ListingTable.Cell>Status</ListingTable.Cell><ListingTable.Cell align="right">Actions</ListingTable.Cell></ListingTable.Row></ListingTable.Head><ListingTable.Body>{data.map((item) => (<ListingTable.Row key={item.id}><ListingTable.Cell>{item.name}</ListingTable.Cell><ListingTable.Cell><Chip label={item.status} color="success" size="small" /></ListingTable.Cell><ListingTable.Cell align="right"><IconButton size="small"><EditIcon size={18} /></IconButton><IconButton size="small" color="error"><TrashIcon size={18} /></IconButton></ListingTable.Cell></ListingTable.Row>))}</ListingTable.Body></ListingTable></ListingTable.Container>
Card Component
tsx
import { Paper, Typography, Box, Button } from '@wso2/oxygen-ui';<Paper sx={{ p: 3 }}><Typography variant="h6" gutterBottom>Card Title</Typography><Typography color="text.secondary" sx={{ mb: 2 }}>Card description text</Typography><Box sx={{ display: 'flex', gap: 1 }}><Button variant="contained">Primary</Button><Button variant="outlined">Secondary</Button></Box></Paper>
Dialog Component
tsx
import {Dialog,DialogTitle,DialogContent,DialogContentText,DialogActions,Button,} from '@wso2/oxygen-ui';<Dialog open={open} onClose={onClose} maxWidth="sm" fullWidth><DialogTitle>Dialog Title</DialogTitle><DialogContent><DialogContentText>Dialog content goes here.</DialogContentText></DialogContent><DialogActions><Button onClick={onClose}>Cancel</Button><Button variant="contained" onClick={onConfirm}>Confirm</Button></DialogActions></Dialog>
MUI X Components (Use Namespaces)
tsx
import { DataGrid, DatePickers, TreeView } from '@wso2/oxygen-ui';// DataGrid<DataGrid.DataGrid rows={rows} columns={columns} />// DatePickers<DatePickers.DatePicker value={date} onChange={setDate} />// TreeView<TreeView.SimpleTreeView><TreeView.TreeItem itemId="1" label="Item 1" /></TreeView.SimpleTreeView>
Charts (Separate Package)
tsx
// Charts are in a separate package built on Rechartsimport { LineChart, BarChart, PieChart } from '@wso2/oxygen-ui-charts-react';<LineChart series={series} /><BarChart series={series} /><PieChart series={series} />