Codync
무료 오픈소스 1:1 대안, Grok Bot과 Muse 대신
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Quick Start (Copy & Run):
import { convert } from "@everywhereayush/str-s";
const svg = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M5 12h14M12 5l7 7-7 7"/>
</svg>`;
const reactCode = convert(svg, {
componentName: "ArrowRightIcon",
tailwindMapping: "loose", // "strict" | "loose" | "off"
typescript: true,
componentStyle: "arrow", // "arrow" | "function"
});
console.log(reactCode);
Output:
import * as React from "react";
export const ArrowRightIcon = (props: React.SVGProps<SVGSVGElement>) => (
<svg viewBox="0 0 24 24" className="w-6 h-6 stroke-current stroke-2" fill="none" {...props}>
<path d="M5 12h14M12 5l7 7-7 7" />
</svg>
);
STR is the smallest and fastest SVG → React + Tailwind converter, purpose-built for icons and simple graphics.
It is not trying to be the most feature-complete converter for every exotic SVG edge case (gradients-heavy illustrations, embedded raster data, complex masks) — for those, use SVGR.
STR's pitch is:
llms.txt)Benchmarked across representative real-world icon fixture sets (Feather, Heroicons, Lucide, Figma exports) using tinybench.
| Tool | Ops / sec (Batch 5) | Latency (avg per icon) | Runtime Deps | Bundle Size (gzip) |
|---|---|---|---|---|
str-s (STR) | 7,114 | 0.043 ms (43 µs) | 0 (zero) | 3.04 kB |
@svgr/core | 78 | 3.061 ms | 58+ (Babel + AST) | ~1,200 kB |
svg-to-jsx | 842 | 0.326 ms | 3 | ~15 kB |
svg-to-react-cli | CLI / JSDOM | Process spawn overhead | 4+ (jsdom) | >5,000 kB |
Verdict: STR converts icons ~70x faster than SVGR with less than 0.3% of the bundle footprint and zero Babel overhead.
All ecosystem wrappers are thin layers that import the str-s core package directly:
str-s/
├── packages/
│ ├── core/ # Core npm package: str-s (<=5kb gzip, 0 deps)
│ │ ├── src/
│ │ │ ├── parse.ts # Lightweight single-pass SVG tokenizer
│ │ │ ├── attrs.ts # Kebab -> camelCase attribute lookup map
│ │ │ ├── tailwind.ts # Style/attr -> Tailwind class mapping
│ │ │ ├── emit.ts # JSX component generator
│ │ │ └── index.ts # Public API
│ │ ├── test/fixtures/ # 19 real-world SVG fixtures & edge cases
│ │ ├── bench/ # Tinybench benchmark suite
│ │ └── llms.txt # Machine-readable usage doc for AI agents
│ ├── vscode-extension/ # VS Code & Cursor extension (Marketplace + OpenVSX)
│ ├── raycast-extension/ # Raycast commands (Clipboard + Selection)
│ └── mcp-server/ # Model Context Protocol server for Claude / Cursor
├── package.json # pnpm workspaces root
└── README.md
None of the wrappers re-implement conversion logic. All four surfaces automatically stay in sync.
str-s)pnpm add @everywhereayush/str-s
# or
npm install @everywhereayush/str-s
import { convert, isConvertibleSvg } from "@everywhereayush/str-s";
// Fast pre-check (<0.01ms) to bail early if string is not an SVG
if (isConvertibleSvg(input)) {
const jsx = convert(input, {
componentName: "MyIcon",
tailwindMapping: "loose", // "strict" | "loose" | "off"
typescript: true, // true (TSX) | false (JSX)
componentStyle: "arrow", // "arrow" | "function"
});
}
loose (default): Maps exact scales (e.g. width="24" → w-6), and falls back to arbitrary values (e.g. width="13" → w-[13px], fill="#3b82f6" → fill-[#3b82f6]).strict: Only maps standard Tailwind scale values. Non-standard dimensions/colors are preserved as raw attributes.off: No Tailwind classes are generated. Preserves attributes and emits style={{ ... }} objects for inline styles.packages/vscode-extension)Works in VS Code, Cursor, Windsurf, and VSCodium.
.tsx, .jsx, .ts, and .js files and replaces them with clean React components.Cmd+Z / Ctrl+Z to revert the entire paste in one step.STR: Convert Selection: Converts selected SVG text in the editor.STR: Convert Clipboard: Converts clipboard SVG into the current editor or back to clipboard.str.tailwindMapping, str.componentStyle, str.typescript, str.autoConvertOnPaste.Publishable to both VS Code Marketplace and OpenVSX (which Cursor, VSCodium, and Gitpod pull from):
# Package VSIX
pnpm --filter str-vscode package:vsce
pnpm --filter str-vscode package:ovsx
# Publish
pnpm --filter str-vscode publish:vsce
pnpm --filter str-vscode publish:ovsx
packages/raycast-extension) (Coming Soon)Convert SVGs directly from macOS menu bar or hotkey into your clipboard.
Status: Support is planned — local implementation tested via
ray develop, store submission pending macOS hardware testing.
convert(), copies the React component back, and alerts via toast.cd packages/raycast-extension
pnpm build
# or run with ray develop
ray develop
packages/mcp-server)Exposes STR directly to AI agents (Claude Code, Cursor, Windsurf) as a Model Context Protocol tool.
convert_svg_to_reactsvg (string), options (optional object)claude_desktop_config.json):{
"mcpServers": {
"str": {
"command": "npx",
"args": ["-y", "str-s-mcp"]
}
}
}
~/.cursor/mcp.json or Project MCP settings):{
"mcpServers": {
"str": {
"command": "node",
"args": ["<path-to-repo>/packages/mcp-server/dist/index.js"]
}
}
}
llms.txt)For AI assistants and agentic workflows, STR provides a dedicated, machine-readable documentation file at packages/core/llms.txt. It contains the complete function signatures, examples, and boundary conditions for automated code generation.
# Clone the repository
git clone https://github.com/Deshmukh-Ayush/str-s.git
cd str-s
# Install dependencies
pnpm install
# Run all tests
pnpm test
# Verify <=5kb gzip size budget
pnpm size
# Run benchmark suite
pnpm bench
# Build all packages
pnpm build
MIT © STR Contributors