mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-08-29 09:38:26 +02:00
* Update images * Adjust color * update accessebility * Add matrix hero * Add typescript documentation * Add basics section to vue pages * Add svelte docs * Fix dynamic sidebar * Add animation? * Some adjustments * Adjust animation * Updates docs * Add scaledown animation * Add docs for vue types * Fix layout accessibility page * fix framework select * adjust easing home animation * Write docs for Vue * Adjust animation home * Adjust home hero animation * Finish svelte docs * Add solid pages * remove spiral animation component * Add group icons * Added solid docs * update preact docs * Adjust examples preact docs * Add snackplayer * Get new editor * Save this * Add examples * Adjust styling * setup custom sandpack * Add script * Format files * Make sandpack plugin work * migrate react docs * Fix svelte and solid examples * Migrate to solid packages * Add darkmode package logos * Fix bug in selector * migrate vue examples * migrate advanced vue items * migrate preact and svelte examples * Add astro docs * adding more docs on guide for lucide library * Fix home animation * Cleanup * Added resources page, with more details and content * Add hero badge for Version 1 * Fix vercel json * Update missing paths * Fix build? * Replace lucide-vue-next * Fix build * Add some docs * update markdown * Setup angular docs * Add basic angular docs * Adjust code examples * Update title and descriptions * Update accessibility link * Update title and description * Add og image * Fix alignment * Add migration guides * Adjust version 1 markdown file * Add migration guide to the main list * Minor fixes * Update docs * Apply feedback * Select icons * Add pointer events none * Fix package links homepage * Format code * Fix types * Fix focus * Fix build * Fix focus * Apply feedback * Adjust imports * Adjust imports * Fix search * Apply feedback * Fix import in font docs * Small fixes * docs(guide): added easter egg icon. stay tuned, guys 😉 * Add llm txt plugin * Adjust logo top * docs(version-1): upgraded @lucide/angular guide for v1 website (#4144) * docs(guide/angular): rewrite some angular documentation * docs(guide/angular): extens angular guide with combining icons & icon provider guides * docs(guide/angular): fix angular sandbox, still needs @lucide/angular release tho * docs(guide/angular): rework the getting started page a bit more, refactor some more prop=>input occurences * docs(guide/angular): context provider => provideLucideConfig * Update docs/guide/angular/migration.md Co-authored-by: Eric Fennis <eric.fennis@gmail.com> * Update docs/guide/angular/advanced/combining-icons.md Co-authored-by: Eric Fennis <eric.fennis@gmail.com> * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * docs(guide/angular): rework a11y for better flow & pacing * docs(guide/angular): salvage original phrase, it has better flow * docs(guide/angular): some more a11y nitpicking * docs(guide/angular): reduce llm fatigue * docs(guides/angular): fix app component selector * docs(guides/angular): fix angular sandpacks * Add sandpack angular to improve tree-shakable stack * Update docs/guide/angular/getting-started.md * docs(guides/angular): fix user import in combinding icons guide * docs(guides/angular): fix nested SVG phrasing * Update docs/guide/angular/advanced/with-lucide-lab.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/guide/angular/advanced/filled-icons.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * docs(guides/angular): fix createLucideIcon guide * docs(guides/angular): upgrade all relevant angular sandpack demos --------- Co-authored-by: Eric Fennis <eric.fennis@gmail.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix(docs): add autogenerated OG images to gitignore * fix(docs): unify the case of "Lucide" & "Lucide Lab" over all docs and readmes * Fix build * Add next tag to all installation guides * Add top bar notification * Minor fixes * Update text * Add todos * Update og image * Adjust install command * Color top bar * fix(docs): ignore all OG images, expect general.png * fix(docs): fix the package list, hide @lucide/icons, downgrade angular logo, link to v0 guide, fix package title alignment * Update docs/.vitepress/theme/components/base/LayoutTop.vue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/guide/react/advanced/dynamic-icon-component.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/.vitepress/sidebar/resources.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix code example * fix(docs): version 1 => Version 1 * feat(docs): add angular to new features in v1 * Fix next line issue * feat(docs): fix typo (code example_s_) * Fix deadlink * feat(docs): fix some more typos and irky grammar * feat(docs): fix lowercase lucide in sidebar 😅 * Update docs/guide/version-1.md Co-authored-by: Karsa <contact@karsa.org> --------- Co-authored-by: Karsa <contact@karsa.org> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
120 lines
3.5 KiB
Vue
120 lines
3.5 KiB
Vue
<script setup lang="tsx">
|
|
import VPSidebarGroup from 'vitepress/dist/client/theme-default/components/VPSidebarGroup.vue';
|
|
import sidebar, { guideSidebarTop } from '../../../sidebar';
|
|
import { useData, useRouter } from 'vitepress';
|
|
import Select from '../base/Select.vue';
|
|
import { computed, ref, watch, watchEffect } from 'vue';
|
|
import { link, route } from '~/.vitepress/data/iconNodes';
|
|
import { useLocalStorage } from '@vueuse/core';
|
|
|
|
const { page } = useData();
|
|
const router = useRouter();
|
|
|
|
const frameworks = [
|
|
{ name: 'Vanilla', icon: '/framework-logos/js.svg', route: '/guide/lucide/' },
|
|
{ name: 'React', icon: '/framework-logos/react.svg', route: '/guide/react/' },
|
|
{ name: 'Vue', icon: '/framework-logos/vue.svg', route: '/guide/vue/' },
|
|
{ name: 'Svelte', icon: '/framework-logos/svelte.svg', route: '/guide/svelte/' },
|
|
{ name: 'Solid', icon: '/framework-logos/solid.svg', route: '/guide/solid/' },
|
|
{ name: 'Angular', icon: '/framework-logos/angular.svg', route: '/guide/angular/' },
|
|
{ name: 'Preact', icon: '/framework-logos/preact.svg', route: '/guide/preact/' },
|
|
{
|
|
name: 'React Native',
|
|
icon: '/framework-logos/react-native.svg',
|
|
route: '/guide/react-native/',
|
|
},
|
|
{ name: 'Astro', icon: '/framework-logos/astro-dark.svg', route: '/guide/astro/' },
|
|
{ name: 'Static', icon: '/framework-logos/svg.svg', route: '/guide/static/' },
|
|
];
|
|
|
|
const fallbackFramework = useLocalStorage('lucide-docs-fallback-framework', frameworks[1]);
|
|
|
|
const selected = computed(() => {
|
|
const current = frameworks.find(({ route }) => {
|
|
if (router.route.path?.startsWith?.('/guide')) {
|
|
const [, , framework] = router.route.path.split('/');
|
|
const [, frameWorkRoute] = route.split('/').filter(Boolean);
|
|
|
|
return framework === frameWorkRoute;
|
|
}
|
|
return router.route.path.split('/').slice(0, 3).join('/') === route;
|
|
});
|
|
|
|
return current || fallbackFramework.value;
|
|
});
|
|
|
|
function onSelectFramework(item: { name: string; icon: string; route: string }) {
|
|
fallbackFramework.value = item;
|
|
if (item.route !== router.route.path) {
|
|
const likeRoute = router.route.path.replace(selected.value.route, item.route);
|
|
|
|
console.log(likeRoute);
|
|
|
|
const hasRoute = sidebar[item.route]?.some((section) =>
|
|
section?.items?.some(({ link }) => link === likeRoute),
|
|
);
|
|
|
|
if (hasRoute) {
|
|
router.go(likeRoute);
|
|
return;
|
|
}
|
|
|
|
router.go(item.route);
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<VPSidebarGroup
|
|
:items="guideSidebarTop"
|
|
v-if="page?.relativePath?.startsWith?.('guide')"
|
|
/>
|
|
<div
|
|
class="framework-select"
|
|
v-if="page?.relativePath?.startsWith?.('guide')"
|
|
>
|
|
<label for="framework-select">Framework</label>
|
|
<Select
|
|
id="framework-select"
|
|
:items="frameworks"
|
|
@update:model-value="onSelectFramework"
|
|
v-model="selected"
|
|
/>
|
|
</div>
|
|
<VPSidebarGroup
|
|
:key="selected.route"
|
|
v-if="
|
|
page?.relativePath?.startsWith?.('guide') &&
|
|
!page?.relativePath?.startsWith?.(selected.route.substring(1))
|
|
"
|
|
:items="sidebar[selected.route]"
|
|
/>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.framework-select {
|
|
font-size: 12px;
|
|
transition:
|
|
border-color 0.5s,
|
|
background-color 0.5s ease;
|
|
margin-bottom: 10px;
|
|
position: sticky;
|
|
top: -0.5px;
|
|
z-index: 10;
|
|
border-top: 1px solid var(--vp-c-divider);
|
|
padding-top: 10px;
|
|
margin-top: -10px;
|
|
}
|
|
|
|
label {
|
|
color: var(--vp-c-text-1);
|
|
padding: 4px 0;
|
|
line-height: 24px;
|
|
font-size: 14px;
|
|
transition: color 0.25s;
|
|
font-weight: bold;
|
|
margin-bottom: 4px;
|
|
display: block;
|
|
}
|
|
</style>
|