A comprehensive TV UI component library built with React and TypeScript for smart TV applications
npm install @ino-ui/tvA comprehensive TV UI component library built with React and TypeScript for smart TV applications.
- 🎮 Remote Control Navigation - Built-in keyboard/remote control navigation support
- 📺 TV-Optimized Components - Components designed specifically for TV interfaces
- 🎨 Theming Support - Customizable themes and styling
- ♿ Accessibility - ARIA support and screen reader compatibility
- 📱 Responsive - Works across different TV screen sizes
- 🔧 TypeScript - Full TypeScript support with type definitions
``bash`
npm install @ino-ui/tvor
yarn add @ino-ui/tv
`tsx
import React from 'react';
import { ThemeProvider, InoButton, GridView } from '@ino-ui/tv';
function App() {
return (
colors: {
primary: '#0066cc',
secondary: '#666666',
},
}}
>
Item {item}} />
Components
$3
-
InoButton - TV-optimized button with focus states
- GridView - Grid layout with remote navigation
- ListView - List view with keyboard navigation
- InoTabs - Tab navigation component$3
-
InoInput - Text input with virtual keyboard support
- InoKeyboard - Virtual keyboard component
- InoSelect - Dropdown select component
- InoSwitch - Toggle switch component$3
-
InoLayout - Grid layout system
- InoRow / InoCol - Row and column components
- ScrollView - Scrollable container
- Modal - Modal dialog component$3
-
InoPlayerProgress - Video player progress bar
- Timeline - EPG timeline component
- EPGTimeline - Electronic Program Guide$3
-
ThemeProvider - Theme context provider
- ToastProvider - Toast notification system
- InoSkeleton - Loading skeleton componentsNavigation
The library includes built-in support for TV remote control navigation:
`tsx
import { useMappedKeydown } from '@ino-ui/tv';function MyComponent() {
useMappedKeydown({
isActive: true,
onUp: () => console.log('Up pressed'),
onDown: () => console.log('Down pressed'),
onLeft: () => console.log('Left pressed'),
onRight: () => console.log('Right pressed'),
onOk: () => console.log('OK pressed'),
onBack: () => console.log('Back pressed'),
});
return
My navigable component;
}
`Theming
Customize the appearance of components:
`tsx
const theme = {
colors: {
primary: '#0066cc',
secondary: '#666666',
danger: '#ff4444',
warning: '#ffaa00',
text: {
primary: '#ffffff',
secondary: '#cccccc',
},
},
fonts: {
sizes: {
small: '12px',
medium: '16px',
large: '20px',
},
weights: {
light: 300,
regular: 400,
bold: 700,
},
},
borderRadius: {
small: '4px',
medium: '8px',
},
};
;
``- React >= 16.8.0
- React DOM >= 16.8.0
MIT
Contributions are welcome! Please feel free to submit a Pull Request.