ui-dev

Featured

This skill MUST be used whenever the task involves UI development, renderer code changes, adding or modifying components, creating modals or dialogs, working with CSS styles, building new UI features, or touching any file in src/renderer/. Use this skill when the user asks to "add a button", "create a modal", "add a dropdown", "update the sidebar", "style a component", "add a new UI feature", or any renderer/frontend work.

Web & Frontend 1,370 stars 170 forks Updated 1 weeks ago MIT

Install

View on GitHub

Quality Score: 89/100

Stars 20%
100
Recency 20%
90
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# UI Development Guide This project uses **vanilla TypeScript DOM manipulation** — no framework. All UI lives in `src/renderer/`. Follow the patterns and reuse the components documented below. ## Custom Dropdown / Select **Never use native `<select>`.** Always use the custom select component: ```typescript import { createCustomSelect } from './components/custom-select'; const select = createCustomSelect('my-select', [ { value: 'a', label: 'Option A' }, { value: 'b', label: 'Option B' }, { value: 'c', label: 'Disabled', disabled: true }, ], 'a'); // default value // select.getValue() — get current value // select.destroy() — cleanup ``` - **File**: `src/renderer/components/custom-select.ts` - **CSS classes**: `.custom-select`, `.custom-select-trigger`, `.custom-select-dropdown`, `.custom-select-item` - Supports keyboard navigation (Arrow keys, Enter, Escape, Tab) ## Modals Use `showModal()` for generic modals with form fields: ```typescript import { showModal, closeModal, setModalError } from './components/modal'; showModal('My Title', [ { id: 'name', label: 'Name', type: 'text', placeholder: 'Enter name' }, { id: 'option', label: 'Option', type: 'select', options: [...] }, { id: 'enabled', label: 'Enable feature', type: 'checkbox' }, ], (values) => { // values is Record<string, string> if (!values.name) { setModalError('name', 'Name is required'); return; } // ... handle confirm closeModal(); }); ``` - **File**: `src/renderer/componen...

Details

Author
elirantutia
Repository
elirantutia/vibeyard
Created
5 months ago
Last Updated
1 weeks ago
Language
TypeScript
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category