mirror of
https://github.com/lucide-icons/lucide.git
synced 2025-12-16 14:17:42 +01:00
Fix gh-api for strokewidths
This commit is contained in:
35
docs/.vitepress/api/gh-icon/stroke-width/[...data].get.ts
Normal file
35
docs/.vitepress/api/gh-icon/stroke-width/[...data].get.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import { eventHandler, setResponseHeader, defaultContentType } from 'h3'
|
||||||
|
import { renderToString } from 'react-dom/server'
|
||||||
|
import { createElement } from 'react'
|
||||||
|
import SvgPreview from '../../../lib/SvgPreview/index.tsx';
|
||||||
|
import createLucideIcon, { IconNode } from 'lucide-react/src/createLucideIcon'
|
||||||
|
import { parseSync } from 'svgson';
|
||||||
|
|
||||||
|
export default eventHandler((event) => {
|
||||||
|
const { params } = event.context
|
||||||
|
|
||||||
|
const [strokeWidth, svgData] = params.data.split('/');
|
||||||
|
const data = svgData.slice(0, -4);
|
||||||
|
|
||||||
|
const src = Buffer.from(data, 'base64').toString('utf8');
|
||||||
|
|
||||||
|
const Icon = createLucideIcon(
|
||||||
|
'icon',
|
||||||
|
parseSync(src.includes('<svg') ? src : `<svg>${src}</svg>`).children.map(
|
||||||
|
({ name, attributes }) => [name, attributes]
|
||||||
|
) as IconNode
|
||||||
|
);
|
||||||
|
|
||||||
|
const svg = Buffer.from(
|
||||||
|
// We can't use jsx here, is not supported here by nitro.
|
||||||
|
renderToString(createElement(Icon, { strokeWidth })).replace(
|
||||||
|
/>/,
|
||||||
|
'><style>@media screen and (prefers-color-scheme: dark) { svg { stroke: #fff } }</style>'
|
||||||
|
)
|
||||||
|
).toString('utf8');
|
||||||
|
|
||||||
|
defaultContentType(event, 'image/svg+xml')
|
||||||
|
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000')
|
||||||
|
|
||||||
|
return svg
|
||||||
|
})
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
"postbuild:vercelJson": "node ../scripts/writeVercelOutput.mjs",
|
"postbuild:vercelJson": "node ../scripts/writeVercelOutput.mjs",
|
||||||
"dev": "npx nitropack dev",
|
"dev": "npx nitropack dev",
|
||||||
"build:api": "npx nitropack build",
|
"build:api": "npx nitropack build",
|
||||||
"prebuild": "pnpm build:iconNodes && pnpm build:metaJson && pnpm build:releaseJson && pnpm build:relatedIcons && pnpm build:iconDetails",
|
"prebuild": "pnpm prebuild:iconNodes && pnpm prebuild:metaJson && pnpm prebuild:releaseJson && pnpm prebuild:relatedIcons && pnpm prebuild:iconDetails",
|
||||||
"build": "pnpm run \"/^prebuild:.*/\" && pnpm build:api && pnpm build:docs && pnpm postbuild:vercelJson",
|
"build": "pnpm run \"/^prebuild:.*/\" && pnpm build:api && pnpm build:docs && pnpm postbuild:vercelJson",
|
||||||
"preview": "node .output/server/index.mjs"
|
"preview": "node .output/server/index.mjs"
|
||||||
},
|
},
|
||||||
@@ -47,6 +47,7 @@
|
|||||||
"shiki-processor": "^0.1.3",
|
"shiki-processor": "^0.1.3",
|
||||||
"simple-git": "^3.18.0",
|
"simple-git": "^3.18.0",
|
||||||
"svg-pathdata": "^6.0.3",
|
"svg-pathdata": "^6.0.3",
|
||||||
|
"svgson": "^5.2.1",
|
||||||
"vue": "^3.2.47"
|
"vue": "^3.2.47"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
3
pnpm-lock.yaml
generated
3
pnpm-lock.yaml
generated
@@ -111,6 +111,9 @@ importers:
|
|||||||
svg-pathdata:
|
svg-pathdata:
|
||||||
specifier: ^6.0.3
|
specifier: ^6.0.3
|
||||||
version: 6.0.3
|
version: 6.0.3
|
||||||
|
svgson:
|
||||||
|
specifier: ^5.2.1
|
||||||
|
version: 5.2.1
|
||||||
vue:
|
vue:
|
||||||
specifier: ^3.2.47
|
specifier: ^3.2.47
|
||||||
version: 3.2.47
|
version: 3.2.47
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
packages:
|
packages:
|
||||||
- 'packages/*'
|
- 'packages/*'
|
||||||
- 'tools/*'
|
- 'tools/*'
|
||||||
- 'site'
|
|
||||||
- 'docs'
|
- 'docs'
|
||||||
|
|||||||
Reference in New Issue
Block a user