mesh-avatar-studio
일러스트를 코딩 에이전트와 로컬 편집기로 2D 메쉬 애니메이션 아바타로 변환
Fluenticons: 5,900개 이상의 Microsoft Fluent UI 아이콘 검색 및 다운로드
Search, customize and download 5,900+ free Microsoft Fluent UI System Icons in filled, regular and color styles as SVG, PNG, WEBP, React and Vue.
디자인Vue · JavaScriptGitHub @coltongriffith온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Fluenticons is an icon viewer for Microsofts fluent icons, with over 4000 pixel perfect icons in outlined and solid styles. Download the icons as SVG, PNG, WEBP, Vue component, React Component and HTML Image.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
3,000+ open source icon designs from Microsoft, in every size (10–48 px) and style (Regular, Filled, Color, Light), with copy-ready code for React, Blazor, Flutter, WinUI/WPF, Android, iOS and Power Apps.
This site is not affiliated or connected to Microsoft in any way, this is just a viewer for the open-source icons from them.
This site was made because I had to open their Figma file every time I wanted any icons from their list, there was no search or proper tool to view them, hence I made this website as a small weekend project.README 전문 보기 ↗3,000+ open source icon designs from Microsoft, in every size (10–48 px) and style (Regular, Filled, Color, Light), with copy-ready code for React, Blazor, Flutter, WinUI/WPF, Android, iOS and Power Apps.
This site is not affiliated or connected to Microsoft in any way, this is just a viewer for the open-source icons from them.
This site was made because I had to open their Figma file every time I wanted any icons from their list, there was no search or proper tool to view them, hence I made this website as a small weekend project.
This is still under development and I have been trying to work on this a little at a time. It could be updated over time without any announcement, if you'd like to contribute, you're welcome to open a PR.
You can still find the old version here
Requires Node 22.19+ (see .nvmrc).
# install dependencies
$ yarn install
# serve with hot reload at localhost:3000
$ yarn dev
# generate the static site into dist/
$ yarn generate
data/icons.json lists every icon design (name, Microsoft's keywords and description, local file names, and every size and style Microsoft publishes, with icon-font code points). data/meta.json records which @fluentui/svg-icons version and upstream commit the data matches.public/icons/ holds one SVG per design and style (Filled, Regular, Color) — 24 px, or the nearest size Microsoft draws. The grids, editor and downloads only use these.@fluentui/svg-icons package on jsDelivr (all ~20,000 variants would exceed Cloudflare Pages' 20,000-file limit). If the CDN is unreachable only those extra previews fail; everything else keeps working.content/guides/*.md are the guide articles.yarn icons (run automatically by dev/generate) turns those into app/generated/: a small search index for the browser, build-time icon details, topic (tag) and color lists, site counts, the sitemap and the list of pages to prerender.yarn generate prerenders every page — the icon grids, one page per icon design (/icon/<name>/, with every size and style), /color/, topic pages (/tag/<keyword>/), the A–Z browse pages, guides and site pages.To pull the latest icons from Microsoft (pass the matching @fluentui/svg-icons version):
git clone --depth 1 --filter=blob:none --sparse https://github.com/microsoft/fluentui-system-icons.git upstream
git -C upstream sparse-checkout set --no-cone '/assets/*/metadata.json' \
'/assets/*/SVG/*_24_filled.svg' '/assets/*/SVG/*_24_regular.svg' \
'/fonts/*.json' '/flutter/lib/src/fluent_icons.dart'
node scripts/import-upstream.mjs upstream 1.1.341
Icons Microsoft has retired stay on the site (marked legacy) so existing links keep working.
sites/material/ is a second site built from the same code: Google's Material Symbols with the same grid, editor, favorites, icon pages, topics, guides and analytics. The repo root is its base Nuxt layer; sites/material/ adds its own data, icons, guides, pages and settings.
app/site.js (and sites/material/app/site.js) holds each site's name, URL, grid pages, file naming and footer. Shared code imports ~/site.js and ~/generated/…, which resolve to the site being built.node scripts/import-material.mjs <version> imports @material-symbols/svg-400 (Outlined, fill 0 and 1, redrawn on a 24×24 viewBox) with Google Fonts' names, categories and keywords, plus Flutter names from material_symbols_icons. It also records each symbol's @mui/icons-material and Flutter Icons names, read from those libraries (scripts/legacy-names.mjs), so icon pages only show real imports. Rounded, Sharp and other weights load from jsDelivr on icon pages./category/<name> pages from Google's categories (topic pages for the same words redirect there), writes public/_redirects for moved URLs, and draws a social preview image (/og/<icon>.png, scripts/og/) for the most used icons: as many as fit under Cloudflare Pages' 20,000-file limit (about 2,500); the rest use /social.png.path: in its front matter (the old /guides/<slug>/ redirects).yarn material:dev / yarn material:generate build it into sites/material/dist (about 19,000 files, just under the limit).Deploying it (.github/workflows/deploy-material.yml) is off until you set two repository variables (Settings → Secrets and variables → Actions → Variables):
MATERIAL_PAGES_PROJECT: the Cloudflare Pages project name, e.g. materialicons. The next push to main (or a manual run) builds the site and creates the project if it doesn't exist.materialicons.co to that project in Cloudflare (Pages → the project → Custom domains), then set MATERIAL_SITE_URL to https://materialicons.co so production runs check the live site.It uses the same Cloudflare secrets as fluenticons.co. Pushes that only change sites/material/ don't redeploy fluenticons.co.
sites/lucide/ is a third site on the same code, for Lucide. It works like the Material site, with these differences:
node scripts/import-lucide.mjs <version> imports lucide-static: one SVG per icon in Lucide's own format (stroke settings on the <svg>, color written as #212121), tags, icon-font code points and the license, plus categories from lucide.dev. Old names (aliases) are found by identical drawings and are searchable.app/utils/svgBody.mjs turns any icon file into inline markup in currentColor, for both kinds.scripts/cross-links.mjs).yarn lucide:dev / yarn lucide:generate build it into sites/lucide/dist (about 8,300 files). The weekly icon update checks for new Lucide releases too.sites/lucide/nuxt.config.js (gaId); it's empty until then.Deploying it (.github/workflows/deploy-lucide.yml) runs on every push to main that can change it, into the Cloudflare Pages project lucideicons (or LUCIDE_PAGES_PROJECT), created on the first run. Attach lucideicons.co to that project in Cloudflare, then set LUCIDE_SITE_URL to https://lucideicons.co so production runs check the live site.
Coding agents can search the icons by meaning and get real @fluentui/react-icons names.
Setup instructions for users are on fluenticons.co/ai.
/api/v1/… and MCP server /mcp (Streamable HTTP, stateless, no auth) run as
Cloudflare Pages Functions (functions/), deployed with the site. public/_routes.json limits
them to /api/* and /mcp; every other URL is still a static file.agent/: icons.js (lookup, search, recommendations, code), tools.js (the
operations both the API and MCP call: validation + analytics), http.js, mcp.js, track.js,
synonyms.js. Code snippets come from app/utils/iconCode.js, which the icon pages use too.app/generated/api-catalog.json, built from data/icons.json by
scripts/build-icon-data.mjs. React names are only built from sizes/styles listed for an icon
in @fluentui/svg-icons, which @fluentui/react-icons is generated from.agent/synonyms.js for words Microsoft doesn't use ("billing" → payment, receipt, wallet).
data/search-boosts.json can nudge results from real usage:
{ "billing": { "receipt_money": 0.2 } } adds 0.2 to that icon's score for that exact query.node scripts/test-agent.mjs after yarn generate (runs before every deploy).
Locally: npx wrangler pages dev dist serves the site with the API and MCP server./mcp, which hosted clients like
ChatGPT and claude.ai reach from shared IPs), 200-character queries, 25 items per
recommendation, 16 KB bodies. Errors are JSON: { "error": { "code", "message" } }.api_*, mcp_*,
agent_result_selected and mcp_initialize events, in their own GA4 property
("Fluenticons API", G-LNV7W169XW; an AGENT_GA_ID variable on the Pages project overrides it), and
set GA_API_SECRET (a Measurement Protocol secret of that property's stream) to use the Measurement
Protocol; without it they're sent to the same endpoint gtag uses. Requests with an
x-fluenticons-no-track header (deploy checks, tests, the /ai demo) aren't counted. MCP results
link icon pages with , and the plugin connects to
, sent as the event parameter. Website searches are joined to the
icon people pick: , , , and
carry the that was in the search box.Sponsors are listed in app/sponsor.ts (materialicons.co: sites/material/app/sponsor.ts):
add a square logo to public/sponsors/ (.svg, or .png under the same name; an animated
.gif with a -still.png for reduced motion), add the sponsor, set active: true and deploy.
Several can run at once: each placement shows every running sponsor (the top one changes from
page to page) and the copy credit takes turns. Each card shows from startDate to endDate (whole days, UTC, checked again in the browser) on the
homepage, icon pages, the icon editor, guides and as a credit on copies 1, 6, 11… of a visit;
otherwise the hero shows a "Your product here" card linking to /sponsor/ and the other spots
show nothing. A url that already has UTM parameters is used exactly as given; otherwise
utm_source/medium/campaign/content are added. AdSense is off
while a sponsor is running (as of the build). ?sponsor_preview=1 shows every configured
sponsor early (=<slug> for one), with no events. The build fails on a tagline over 70 characters or, when active, a bad
URL, missing logo or malformed date. Events for the monthly report: sponsor_impression and
sponsor_click, each with sponsor, placement (homepage, icon, editor, guide, copy_toast;
the sponsor page's example card sends nothing) and ad_id (the creative: the sponsor's adId,
or its slug plus a hash of the card's text, logo and link, so a new creative gets a new id).
Clicks on the empty card are sponsor_house_click. The page is GA4's own Page path dimension.
To report on these in GA4, register sponsor, placement and ad_id once as event-scoped
custom dimensions in each site's property (Admin → Custom definitions); they only apply to
events from then on, so earlier events show "(not set)". Clicks count
left, Ctrl/Cmd and middle clicks; "Open in new tab" from the right-click menu and visitors who
block Google Analytics aren't counted. GA4's own outbound-click event (click, Link domain
xceed.com) is an independent second count.
fluenticons.co is served by the Cloudflare Pages project fluenticons-3, a direct-upload project with no Git connection. The Deploy to Cloudflare Pages GitHub Action deploys it:
main goes live automatically. The workflow builds the site, checks the output, uploads it, then confirms that fluenticons.co serves the new build. The run fails, and GitHub notifies you, if the live site isn't serving it. Pushes that only change README.md or .github/ don't deploy; guide edits in content/guides/ do deploy.preview, and you get a preview URL on fluenticons-3 without touching the live site. Running it with branch main redeploys production.Cloudflare switches deployments atomically, and older deployments can be restored with Rollback in the dashboard (fluenticons-3 → Deployments). The workflow needs the repository secrets CLOUDFLARE_API_TOKEN (with the "Cloudflare Pages: Edit" permission) and CLOUDFLARE_ACCOUNT_ID.
The Git-connected Pages project fluenticons (fluenticons-alt.pages.dev) builds every push for previews. It has no custom domain.
Build settings: yarn generate, output dist, Node from .nvmrc. public/_redirects and public/_headers are deployed as-is. public/sw.js removes the service worker installed by the old version of the site.
The icons are cleaned with SVGO, so you can use the same icons in your project.
Use SVGO and run svgo -r ./**/SVG/*.svg -o ../cleaned to clean and minimise all the raw svg files.
Delete all sizes except 24, since Microsoft was providing thousands of icons ins multiple sizes, which was not really needed for this project.
find <FILEPATH> -type f ! -name "24"
Append -delete at the end to delete from the <FILEPATH>
utm_source=<client>&utm_medium=mcp/mcp?via=pluginviaselect_contentcopy_icondownload_iconfavorite_addcopy_codesearch_termmcp_*, api_*, agent_result_selected,
mcp_initialize), or Realtime. Register client_type, mcp_client, via and search_term
as event-scoped custom dimensions to break them down.ai_referral event per session that
came from an AI assistant (app/plugins/ai-referral.client.js: MCP result links with
utm_medium=mcp, ChatGPT's utm_source=chatgpt.com, and chatgpt.com, claude.ai, perplexity.ai,
gemini, copilot… referrers), with ai_source and ai_medium (mcp or chat).packages/cli, packed into the site as /cli.tgz by the build:
npx -y https://fluenticons.co/cli.tgz search "user security". It can be published to npm
as fluenticons-cli later (the name fluenticons is taken).fluent-icons skill kept in step with public/ai/SKILL.md, and a marketplace for
both), because the plugin directory can't read a repository this size. Users run
claude plugin marketplace add coltongriffith/fluenticons-plugin or
codex plugin marketplace add coltongriffith/fluenticons-plugin, then install
fluenticons@fluenticons. This repository's .claude-plugin/marketplace.json and
.agents/plugins/marketplace.json forward to it for anyone who added this repository earlier.public/ai/SKILL.md (Claude Code skill) and public/llms.txt.