{"id":47351761,"url":"https://github.com/wangdicoder/tiny-design","last_synced_at":"2026-04-04T07:03:02.294Z","repository":{"id":40614255,"uuid":"174343762","full_name":"wangdicoder/tiny-design","owner":"wangdicoder","description":"⚛️ A friendly UI component set for React.js","archived":false,"fork":false,"pushed_at":"2026-03-29T00:01:38.000Z","size":23436,"stargazers_count":235,"open_issues_count":0,"forks_count":11,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-29T00:47:16.368Z","etag":null,"topics":["component-library","react","react-component","react-components","react-hook-component","react-hooks","react-ui-components","uikit"],"latest_commit_sha":null,"homepage":"https://wangdicoder.github.io/tiny-design/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wangdicoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-03-07T12:54:14.000Z","updated_at":"2026-03-29T00:00:01.000Z","dependencies_parsed_at":"2024-02-17T10:44:26.700Z","dependency_job_id":null,"html_url":"https://github.com/wangdicoder/tiny-design","commit_stats":{"total_commits":591,"total_committers":2,"mean_commits":295.5,"dds":0.005076142131979711,"last_synced_commit":"9c8bc0930a8cbe957f5f191fc923dc70ea67d1c1"},"previous_names":["wangdicoder/tiny-design"],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/wangdicoder/tiny-design","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdicoder%2Ftiny-design","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdicoder%2Ftiny-design/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdicoder%2Ftiny-design/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdicoder%2Ftiny-design/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wangdicoder","download_url":"https://codeload.github.com/wangdicoder/tiny-design/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdicoder%2Ftiny-design/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["component-library","react","react-component","react-components","react-hook-component","react-hooks","react-ui-components","uikit"],"created_at":"2026-03-18T00:15:33.955Z","updated_at":"2026-04-04T07:03:02.266Z","avatar_url":"https://github.com/wangdicoder.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://wangdicoder.github.io/tiny-design/\"\u003e\n    \u003cimg width=\"200\" src=\"https://github.com/wangdicoder/tiny-design/blob/master/apps/docs/src/assets/logo/logo.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eTiny Design\u003c/h1\u003e\n\u003cp align=\"center\"\u003eA friendly, themeable UI component library for React\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/wangdicoder/tiny-design/actions\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/wangdicoder/tiny-design/ci.yml?style=flat-square\u0026label=test\" alt=\"test status\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@tiny-design/react\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/@tiny-design/react.svg?style=flat-square\" alt=\"npm version\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@tiny-design/react\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/dm/@tiny-design/react.svg?style=flat-square\" alt=\"npm downloads\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://bundlephobia.com/package/@tiny-design/react\"\u003e\n    \u003cimg src=\"https://img.shields.io/bundlephobia/minzip/@tiny-design/react?style=flat-square\" alt=\"minzipped size\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.jsdelivr.com/package/npm/@tiny-design/react\"\u003e\n    \u003cimg src=\"https://img.shields.io/jsdelivr/npm/hm/@tiny-design/react?style=flat-square\" alt=\"jsDelivr hits\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://react.dev\"\u003e\n    \u003cimg src=\"https://img.shields.io/static/v1?label=react\u0026message=%3E=18\u0026color=61dafb\u0026style=flat-square\" alt=\"react version\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/wangdicoder/tiny-design/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/l/@tiny-design/react.svg?style=flat-square\" alt=\"license\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://wangdicoder.github.io/tiny-design/\"\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/a\u003e \u0026nbsp;\u0026bull;\u0026nbsp;\n  \u003ca href=\"https://wangdicoder.github.io/tiny-design/theme/theme-editor\"\u003e\u003cstrong\u003eTheme Editor\u003c/strong\u003e\u003c/a\u003e \u0026nbsp;\u0026bull;\u0026nbsp;\n  \u003ca href=\"https://wangdicoder.github.io/tiny-design/theme/customise-theme\"\u003e\u003cstrong\u003eTheming Guide\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Highlights\n\n- **80+ components** — buttons, forms, data display, navigation, feedback, and more\n- **Visual Theme Editor** — 20+ built-in presets inspired by popular design systems; customise colours, typography, and spacing in real time without writing code\n- **Dark mode** — built-in light/dark themes with system preference detection and a `useTheme` hook\n- **TypeScript** — written in strict TypeScript with complete type definitions\n- **Accessible** — follows [WAI-ARIA](https://www.w3.org/WAI/standards-guidelines/aria/) standards with keyboard navigation support\n- **Lightweight** — tree-shakeable ESM/CJS builds; styles auto-import alongside components\n- **i18n** — English and Chinese built in\n- **AI-ready** — `llms.txt`, `.cursorrules`, and MCP server for seamless AI-assisted development\n\n## Quick Start\n\n```bash\npnpm add @tiny-design/react\n```\n\n```jsx\nimport { Button, Switch } from '@tiny-design/react';\n\nconst App = () =\u003e (\n  \u003c\u003e\n    \u003cButton btnType=\"primary\"\u003eClick Me\u003c/Button\u003e\n    \u003cSwitch checked /\u003e\n  \u003c/\u003e\n);\n```\n\nNo separate CSS import needed — styles are bundled with each component and tree-shaken by modern bundlers.\n\n## Theming\n\n### Visual Theme Editor\n\nThe built-in [Theme Editor](https://wangdicoder.github.io/tiny-design/theme/theme-editor) lets you pick from 20+ preset themes or fine-tune individual tokens — colours, typography, border radius, spacing — and see changes live on real components. Export as CSS or SCSS when you're done.\n\n### Dark mode\n\n```jsx\nimport { useTheme } from '@tiny-design/react';\n\nfunction ThemeToggle() {\n  const { resolvedTheme, toggle } = useTheme();\n  return \u003cbutton onClick={toggle}\u003e{resolvedTheme}\u003c/button\u003e;\n}\n```\n\nOr set it declaratively:\n\n```html\n\u003chtml data-tiny-theme=\"dark\"\u003e\n```\n\n### CSS custom properties\n\nEvery visual token is a `--ty-*` CSS custom property. Override any of them:\n\n```css\n:root {\n  --ty-color-primary: #3b82f6;\n  --ty-color-bg: #fafafa;\n  --ty-border-radius: 8px;\n}\n```\n\n### SCSS variables\n\nFor compile-time control, override `!default` SCSS variables before importing:\n\n```scss\n$primary-color: #3b82f6;\n$border-radius: 8px;\n@use \"@tiny-design/react/es/style/index\" as *;\n```\n\nSee the [Theming Guide](https://wangdicoder.github.io/tiny-design/theme/customise-theme) for the full list of tokens and variables.\n\n## Packages\n\n| Package | Description |\n| ------- | ----------- |\n| [@tiny-design/react](./packages/react) | Core component library |\n| [@tiny-design/tokens](./packages/tokens) | Design tokens and foundational styles |\n| [@tiny-design/icons](./packages/icons) | SVG icon components |\n| [@tiny-design/cli](./packages/cli) | CLI for the Tiny Design component library |\n| [@tiny-design/mcp](./packages/mcp) | MCP server for AI assistants to access the component library |\n\n## Components\n\n| Category | Count | Examples |\n| -------- | :---: | -------- |\n| Foundation | 5 | Button, Icon, Image, Link, Typography |\n| Layout | 7 | Grid, Flex, Space, Split, Divider, Aspect Ratio |\n| Navigation | 7 | Menu, Breadcrumb, Dropdown, Pagination, Steps, Anchor, SpeedDial |\n| Data Display | 19 | Card, Carousel, Collapse, Tag, Tooltip, Tree, Table |\n| Form | 22 | Input, Select, DatePicker, TimePicker, Checkbox, Radio, Slider |\n| Feedback | 13 | Modal, Drawer, Overlay, Message, Notification, Alert, Skeleton |\n| Miscellany | 5 | ConfigProvider, BackTop, Sticky, Keyboard, CopyToClipboard |\n\n## Internationalization\n\n```jsx\nimport { ConfigProvider, zh_CN } from '@tiny-design/react';\n\n\u003cConfigProvider locale={zh_CN}\u003e\n  \u003cApp /\u003e\n\u003c/ConfigProvider\u003e\n```\n\n| Locale | Language |\n| ------ | -------- |\n| en_US  | English (default) |\n| zh_CN  | 简体中文 |\n\n## Browser Support\n\n| \u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"Edge\" width=\"24px\" height=\"24px\" /\u003e\u003cbr\u003eEdge | \u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" /\u003e\u003cbr\u003eFirefox | \u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e\u003cbr\u003eChrome | \u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" /\u003e\u003cbr\u003eSafari |\n| --- | --- | --- | --- |\n| last 2 versions | last 2 versions | last 2 versions | last 2 versions |\n\n## Contributing\n\n```bash\npnpm install        # install dependencies\npnpm dev            # start docs dev server\npnpm build          # build all packages\npnpm test           # run tests\npnpm lint           # lint code\n```\n\n## License\n\n[MIT](https://github.com/wangdicoder/tiny-design/blob/master/LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangdicoder%2Ftiny-design","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwangdicoder%2Ftiny-design","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangdicoder%2Ftiny-design/lists"}