mirror of
https://github.com/lucide-icons/lucide.git
synced 2025-12-16 23:17:42 +01:00
* add new docs
* Add styling
* Move files
* Add active selection
* improve grid overview
* improve grid
* Add icon detail page
* Minor changes
* Fix icon preview
* optimize home card
* Add code examples
* Add gitignore
* correct temp directory
* Add first cusotmizer
* Add customizer
* fix images paths
* Add reset function
* Adjust category rendering
* Add packages section
* Some fixes
* Fix vercel build icon
* Small code adjustment
* move file
* Try this
* Add code groups with syntax highlighting
* Add search icon
* Cleanup
* update lockfile
* turnoff 404
* remove docs/iconMetaData.ts
* fix build
* Fix build 2
* cleanup
* Add icon customizer
* Fix build
* Add steps
* Add Button menu
* A lot off fixes!
* cleanup
* Fix build
* Css fixes
* Override menu icon
* try this to improve preformance
* minor improvements
* add comment
* add readme
* Add title
* minor fixes
* Fixes sliders + removes random backticks from index
* Added package list base, still WIP
* Added Guide+Source buttons to package list items
* Responsive support for XS screens
* Map categories count
* Adjust tooltip hover position
* Add see in action icon
* Add download options
* Aligns category list items to baseline and decreases category count weight
* Fixes event target error for categorylistitems
* Added icon release metadata builder
* Adds version badges to hero + icon detail overlay
* Added contributors.
Added Copy Angular.
Added release info to icon page.
* Centres contributor tooltip
* Fixed stroke step + added reset button
* Extracted reset button as a separate component for reusability
* Makes HomeIconCustomizerIcons less dense
* Fixes Button menu
* adjust versions and contributors styling on detail page
* Fix build?
* Fix build 2?
* Fix build 3
* Fix build 4
* Fix build 5?
* Add latest gh-icon changes
* Add comment
* Try fetch tags to retrieve release data
* try fetch all tags
* Add related icons
* Add stikcy search bar
* Add no results components
* Try to fix animation
* Try optimizing for categories
* Hide buggy animated icon
* minor fixes
* Add footer
* Add contributute link in footer
* Add copy name
* Add 100% preview icons
* remove site directory
* clean up
* Add redirects
* Fix build?
* fix redirect?
* minor improvements
* Fix icons preview on mobile
* Small preformance improvement
* Dark mode fixes for package icons
* Sort related icons by similarity + somewhat better name similarity matching
* Replace icon design guide images with uniform SVGs
* update lockfile
* Adds git clone to manually fetch the main repository for creating release metadata
* Remove initial v0.0.0 from release metadata
* Add extra CTA to no results behaviour
* Remove tags, as they are too overused
* Revert "Remove tags, as they are too overused"
This reverts commit 909b7563c0.
* Checkout icons from main
* Add absoluteStrokeWidth switch
* Add absolute strokewidth to home customizer
* Add absolute strokewidth to copy code button
* remove unused import
* compare build time
* improve build speed
* Try new release meta data script
* add fetch tags
* try with branch and remote
* try with url
* try without ssh
* Fix fetch tags in build file
* Cleanup
* Fix fallback
* improve release data
* delete relatedIcons.json, because it should be gitignored
* Add icon details
* Fix import
* minor fixes
* Try running script parallel
* Revert icon details
* include aliases in release meta data
* Final fixes
* Final fixes 2
* minor code adjustment
* Fix build
* test
* Revert concurrent build flow
* switch back to concurrent build strategy
* revert icon changes
* update package.json
* update package.json
* dedube packages
---------
Co-authored-by: Karsa <karsa@karsa.org>
219 lines
3.7 KiB
TypeScript
219 lines
3.7 KiB
TypeScript
import {
|
|
BUNDLED_LANGUAGES,
|
|
type IThemeRegistration
|
|
} from 'shiki'
|
|
import {
|
|
getHighlighter,
|
|
} from 'shiki-processor'
|
|
|
|
type CodeExampleType = {
|
|
title: string,
|
|
lang: string,
|
|
codes: {
|
|
language?: string,
|
|
code: string,
|
|
metastring?: string,
|
|
}[],
|
|
}[]
|
|
|
|
const getIconCodes = (): CodeExampleType => {
|
|
return [
|
|
{
|
|
lang: 'html',
|
|
title: 'HTML',
|
|
codes: [
|
|
{
|
|
language: 'html',
|
|
code: `<i data-lucide-name="Name"></i>
|
|
`,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
lang: 'tsx',
|
|
title: 'React',
|
|
codes: [
|
|
{
|
|
language: 'tsx',
|
|
code: `import { PascalCase } from 'lucide-react';
|
|
|
|
const App = () => {
|
|
return (
|
|
<PascalCase />
|
|
);
|
|
};
|
|
|
|
export default App;
|
|
`,
|
|
|
|
},
|
|
],
|
|
},
|
|
{
|
|
lang: 'vue',
|
|
title: 'Vue 3',
|
|
codes: [
|
|
{
|
|
language: 'vue',
|
|
code: `<script setup>
|
|
import { PascalCase } from 'lucide-vue-next';
|
|
</script>
|
|
|
|
<template>
|
|
<PascalCase />
|
|
</template>
|
|
`,
|
|
|
|
},
|
|
],
|
|
},
|
|
{
|
|
lang: 'svelte',
|
|
title: 'Svelte',
|
|
codes: [
|
|
{
|
|
language: 'svelte',
|
|
code: `<script>
|
|
import { PascalCase } from 'lucide-svelte';
|
|
</script>
|
|
|
|
<PascalCase />
|
|
`,
|
|
|
|
},
|
|
],
|
|
},
|
|
{
|
|
lang: 'preact',
|
|
title: 'Preact',
|
|
codes: [
|
|
{
|
|
language: 'tsx',
|
|
code: `import { PascalCase } from 'lucide-preact';
|
|
|
|
const App = () => {
|
|
return (
|
|
<PascalCase />
|
|
);
|
|
};
|
|
|
|
export default App;
|
|
`,
|
|
|
|
},
|
|
],
|
|
},
|
|
{
|
|
lang: 'solid',
|
|
title: 'Solid',
|
|
codes: [
|
|
{
|
|
language: 'tsx',
|
|
code: `import { PascalCase } from 'lucide-solid';
|
|
|
|
const App = () => {
|
|
return (
|
|
<PascalCase />
|
|
);
|
|
};
|
|
|
|
export default App;
|
|
`,
|
|
|
|
},
|
|
],
|
|
},
|
|
{
|
|
lang: 'angular',
|
|
title: 'Angular',
|
|
codes: [
|
|
{
|
|
language: 'tsx',
|
|
code: `// app.module.ts
|
|
import { LucideAngularModule, PascalCase } from 'lucide-angular';
|
|
|
|
@NgModule({
|
|
imports: [
|
|
LucideAngularModule.pick({ PascalCase })
|
|
],
|
|
})
|
|
|
|
// app.component.html
|
|
<lucide-icon name="Name"></lucide-icon>
|
|
`,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
lang: 'html',
|
|
title: 'Icon Font',
|
|
codes: [
|
|
{
|
|
language: 'html',
|
|
code: `<style>
|
|
@import ('~lucide-static/font/Lucide.css');
|
|
</style>
|
|
|
|
<div class="icon-Name"></div>
|
|
`,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
lang: 'dart',
|
|
title: 'Flutter',
|
|
codes: [
|
|
{
|
|
language: 'dart',
|
|
code: `Icon(LucideIcons.Name);
|
|
`,
|
|
},
|
|
],
|
|
},
|
|
]
|
|
}
|
|
|
|
export type ThemeOptions =
|
|
| IThemeRegistration
|
|
| { light: IThemeRegistration; dark: IThemeRegistration }
|
|
|
|
const highLightCode = async (code: string, lang: string, active?: boolean) => {
|
|
const highlighter = await getHighlighter({
|
|
themes: ['material-theme-palenight'],
|
|
langs: [...BUNDLED_LANGUAGES],
|
|
processors: []
|
|
})
|
|
|
|
const highlightedCode = highlighter.codeToHtml(code, {
|
|
lang,
|
|
// lineOptions,
|
|
theme: 'material-theme-palenight'
|
|
}).replace('background-color: #292D3E', '')
|
|
|
|
return `<div class="language-${lang} ${active ? 'active' : ''}">
|
|
<button title="Copy Code" class="copy"></button>
|
|
<span class="lang">${lang}</span>
|
|
${highlightedCode}
|
|
</div>`
|
|
}
|
|
|
|
|
|
export default async function createCodeExamples() {
|
|
const codes = getIconCodes();
|
|
|
|
const codeExamplePromises = codes.map(async (codeTemplate, index) => {
|
|
const { title, lang, codes } = codeTemplate;
|
|
const isFirst = index === 0;
|
|
|
|
const code = await highLightCode(codes[0].code, codes[0].language || lang, isFirst);
|
|
|
|
return {
|
|
title,
|
|
language: codes[0].language || lang,
|
|
code,
|
|
};
|
|
})
|
|
|
|
return Promise.all(codeExamplePromises);
|
|
}
|