mirror of
https://github.com/oxynote/oxynote.git
synced 2026-10-17 02:49:18 +02:00
update doc title icon list
This commit is contained in:
parent
b724ac18f2
commit
3d07487e76
|
|
@ -116,7 +116,7 @@ Form validation (vee-validate) uses its own internal messages — see [README.md
|
|||
|
||||
- **shadcn-vue** components live in [app/components/shadcn/ui/](app/components/shadcn/ui/) with prefix `ShadcnUi`. Configured in [components.json](components.json).
|
||||
- **Tailwind v4** via `@tailwindcss/vite`, theme in [app/assets/css/main.css](app/assets/css/main.css).
|
||||
- Icons via `@nuxt/icon` (CSS mode) — only icons listed by `selectableIconList()` in [app/utils/icon.ts](app/utils/icon.ts) are bundled client-side. Custom SVGs live in [app/assets/custom-icons/](app/assets/custom-icons/) and are reachable under the `custom-icons:` prefix.
|
||||
- Icons via `@nuxt/icon` (CSS mode). The client bundle holds the icons the scanner finds in app code, plus — on the desktop build only — the document title icons listed by `selectableIconList()` in [app/utils/icon.ts](app/utils/icon.ts). The web build resolves those on demand through the server so they stay off the startup path. Custom SVGs live in [app/assets/custom-icons/](app/assets/custom-icons/) and are reachable under the `custom-icons:` prefix.
|
||||
- **Open a11y bug: dialogs have no `DialogDescription`.** Every modal renders its description as a plain `<p>`, so the `aria-describedby` reka-ui puts on `DialogContent` points at nothing — screen readers get no description, and reka-ui warns once per mount. **This is scheduled to be fixed, not accepted.** The warning is suppressed in [vitest.config.ts](vitest.config.ts)'s `onConsoleLog` purely to keep test output readable in the meantime; that branch comes out with the fix, and the warning is still visible in `nuxt dev`. Note that routing the text through `ShadcnUiDialogDescription` is *not* a drop-in fix: the wrapper runs its class through `cn()`, and default tailwind-merge reads the custom `text-2sm` as a colour utility and drops it in favour of the wrapper's `text-sm`. Closing this needs either reka-ui's `DialogDescription` imported directly (no `cn()`) or `extendTailwindMerge` teaching `cn()` the custom text scale.
|
||||
|
||||
## Formatting & TS
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { afterEach, beforeEach, describe, it, vi } from "vitest"
|
|||
import IconPickerProvider from "./IconPickerProvider.vue"
|
||||
import IconPicker from "./IconPicker.vue"
|
||||
import { mountUnderTooltipProvider, t } from "~/components/test-helpers"
|
||||
import { selectableIcons } from "~/utils/icon"
|
||||
|
||||
// the real list is virtualized off the rendered row heights, which
|
||||
// happy-dom reports as zero — nothing would ever be drawn. The stand-in
|
||||
|
|
@ -128,10 +129,11 @@ describe("<IconPickerProvider>", { concurrent: false }, () => {
|
|||
await openPicker(wrapper)
|
||||
const total = popover()?.querySelectorAll("button").length ?? 0
|
||||
|
||||
await typeFilter("tag")
|
||||
await typeFilter("git")
|
||||
|
||||
const filtered = popover()?.querySelectorAll("button").length ?? 0
|
||||
|
||||
expect(total).toBe(selectableIcons.length)
|
||||
expect(filtered).toBeGreaterThan(0)
|
||||
expect(filtered).toBeLessThan(total)
|
||||
})
|
||||
|
|
@ -139,13 +141,13 @@ describe("<IconPickerProvider>", { concurrent: false }, () => {
|
|||
it("hands the chosen icon to the child that asked", async ({ expect }) => {
|
||||
const wrapper = await mountProvider()
|
||||
await openPicker(wrapper)
|
||||
await typeFilter("tag 2")
|
||||
await typeFilter("git merge")
|
||||
|
||||
popover()?.querySelectorAll("button")[0]?.click()
|
||||
await nextTick()
|
||||
|
||||
expect(wrapper.findComponent(IconPicker).emitted("select")).toEqual([
|
||||
["mingcute:tag-2-fill"],
|
||||
["mingcute:git-merge-fill"],
|
||||
])
|
||||
expect(popoverOpen()).toBe(false)
|
||||
})
|
||||
|
|
@ -207,7 +209,7 @@ describe("<IconPickerProvider>", { concurrent: false }, () => {
|
|||
it("clears the filter each time it opens", async ({ expect }) => {
|
||||
const wrapper = await mountProvider()
|
||||
await openPicker(wrapper)
|
||||
await typeFilter("tag")
|
||||
await typeFilter("git")
|
||||
document.dispatchEvent(new KeyboardEvent("keydown", { key: "Escape" }))
|
||||
await nextTick()
|
||||
|
||||
|
|
|
|||
|
|
@ -29,14 +29,13 @@ const tooltipOpen = ref<string | null>(null)
|
|||
|
||||
const icons = computed<
|
||||
{
|
||||
normalName: string
|
||||
name: string
|
||||
id: string
|
||||
}[]
|
||||
>(() => {
|
||||
return selectableIcons.filter((icon) => {
|
||||
return (
|
||||
!iconFilter.value ||
|
||||
icon.prettyName.includes(iconFilter.value.toLowerCase())
|
||||
!iconFilter.value || icon.name.includes(iconFilter.value.toLowerCase())
|
||||
)
|
||||
})
|
||||
})
|
||||
|
|
@ -210,7 +209,7 @@ function handleEscape(e: KeyboardEvent) {
|
|||
sticky="always"
|
||||
class="px-1.5 py-1"
|
||||
>
|
||||
<span>{{ item.normalName }}</span>
|
||||
<span>{{ item.name }}</span>
|
||||
</ShadcnUiTooltipContent>
|
||||
</ShadcnUiTooltip>
|
||||
</RecycleScroller>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,28 @@
|
|||
import type { IconifyJSON } from "@iconify/types"
|
||||
import { icons as cib } from "@iconify-json/cib"
|
||||
import { icons as deviconPlain } from "@iconify-json/devicon-plain"
|
||||
import { icons as fileIcons } from "@iconify-json/file-icons"
|
||||
import { icons as fluent } from "@iconify-json/fluent"
|
||||
import { icons as mdi } from "@iconify-json/mdi"
|
||||
import { icons as mingcute } from "@iconify-json/mingcute"
|
||||
import { icons as ph } from "@iconify-json/ph"
|
||||
import { icons as ri } from "@iconify-json/ri"
|
||||
import { icons as simpleIcons } from "@iconify-json/simple-icons"
|
||||
import { describe, it } from "vitest"
|
||||
import { selectableIconList, selectableIcons } from "./icon"
|
||||
|
||||
const collections: Record<string, IconifyJSON | undefined> = {
|
||||
cib,
|
||||
"devicon-plain": deviconPlain,
|
||||
"file-icons": fileIcons,
|
||||
fluent,
|
||||
mdi,
|
||||
mingcute,
|
||||
ph,
|
||||
ri,
|
||||
"simple-icons": simpleIcons,
|
||||
}
|
||||
|
||||
describe("selectableIconList", () => {
|
||||
it("returns the id of every selectable icon in order", ({ expect }) => {
|
||||
const list = selectableIconList()
|
||||
|
|
@ -9,9 +31,23 @@ describe("selectableIconList", () => {
|
|||
expect(list.length).toBeGreaterThan(0)
|
||||
})
|
||||
|
||||
it("returns only prefixed icon ids", ({ expect }) => {
|
||||
for (const id of selectableIconList()) {
|
||||
expect(id).toMatch(/^mingcute:/)
|
||||
}
|
||||
it("lists every icon once", ({ expect }) => {
|
||||
const ids = selectableIconList()
|
||||
|
||||
expect(new Set(ids).size).toBe(ids.length)
|
||||
})
|
||||
|
||||
it.for(selectableIconList())(
|
||||
"names %s after a glyph its installed collection ships",
|
||||
(id, { expect }) => {
|
||||
const [prefix, name] = id.split(":") as [string, string]
|
||||
const collection = collections[prefix]
|
||||
|
||||
expect(collection).toBeDefined()
|
||||
expect(
|
||||
name in (collection?.icons ?? {}) ||
|
||||
name in (collection?.aliases ?? {}),
|
||||
).toBe(true)
|
||||
},
|
||||
)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,238 +1,769 @@
|
|||
// Curated list of MingCute fill icons for knowledge base / technical team use
|
||||
const mingCuteIcons = [
|
||||
// Documents & Files
|
||||
// icons a document can carry in its title, in the order the picker shows
|
||||
// them.
|
||||
const icons: (string | [id: string, name: string])[] = [
|
||||
// documents & knowledge
|
||||
"mingcute:document-2-fill",
|
||||
"mingcute:document-3-fill",
|
||||
"mingcute:documents-fill",
|
||||
"mingcute:doc-fill",
|
||||
"mingcute:file-code-fill",
|
||||
"mingcute:file-certificate-fill",
|
||||
"mingcute:file-check-fill",
|
||||
"mingcute:file-code-fill",
|
||||
"mingcute:file-download-fill",
|
||||
"mingcute:file-export-fill",
|
||||
"mingcute:file-forbid-fill",
|
||||
"mingcute:file-import-fill",
|
||||
"mingcute:file-info-fill",
|
||||
"mingcute:file-locked-fill",
|
||||
"mingcute:file-more-fill",
|
||||
"mingcute:file-new-fill",
|
||||
"mingcute:file-search-fill",
|
||||
"mingcute:file-security-fill",
|
||||
"mingcute:file-star-fill",
|
||||
"mingcute:file-unknown-fill",
|
||||
"mingcute:file-upload-fill",
|
||||
"mingcute:file-warning-fill",
|
||||
"mingcute:file-zip-fill",
|
||||
|
||||
// Books & Knowledge
|
||||
"mingcute:pdf-fill",
|
||||
"mingcute:markdown-fill",
|
||||
"mingcute:xls-fill",
|
||||
"mingcute:folder-fill",
|
||||
"mingcute:folder-open-fill",
|
||||
"mingcute:folders-fill",
|
||||
"mingcute:folder-locked-fill",
|
||||
"mingcute:book-fill",
|
||||
"mingcute:book-2-fill",
|
||||
"mingcute:book-3-fill",
|
||||
"mingcute:book-4-fill",
|
||||
"mingcute:book-5-fill",
|
||||
"mingcute:book-6-fill",
|
||||
"mingcute:notebook-fill",
|
||||
"mingcute:notebook-2-fill",
|
||||
"mingcute:diary-fill",
|
||||
"mingcute:news-fill",
|
||||
"mingcute:paper-fill",
|
||||
"fluent:script-24-filled",
|
||||
"mingcute:clipboard-fill",
|
||||
"mingcute:list-check-fill",
|
||||
"mingcute:list-ordered-fill",
|
||||
"ph:kanban-fill",
|
||||
"fluent:steps-24-filled",
|
||||
"mingcute:task-fill",
|
||||
"mingcute:task-2-fill",
|
||||
"mingcute:to-do-fill",
|
||||
"mingcute:report-fill",
|
||||
"mingcute:report-forms-fill",
|
||||
"mingcute:presentation-1-fill",
|
||||
"mingcute:presentation-2-fill",
|
||||
"mingcute:whiteboard-fill",
|
||||
"mingcute:black-board-fill",
|
||||
"mingcute:mind-map-fill",
|
||||
"mingcute:sitemap-fill",
|
||||
"mingcute:timeline-fill",
|
||||
"mingcute:version-fill",
|
||||
"mingcute:quill-pen-fill",
|
||||
"mingcute:pen-fill",
|
||||
"mingcute:pencil-fill",
|
||||
"mingcute:edit-fill",
|
||||
"mingcute:mark-pen-fill",
|
||||
"mingcute:signature-fill",
|
||||
"mingcute:certificate-fill",
|
||||
"mingcute:seal-fill",
|
||||
"mingcute:quote-left-fill",
|
||||
"mingcute:translate-fill",
|
||||
"mingcute:pin-fill",
|
||||
"mingcute:inbox-fill",
|
||||
"mingcute:archive-fill",
|
||||
"mingcute:package-fill",
|
||||
"mingcute:package-2-fill",
|
||||
"mingcute:box-2-fill",
|
||||
"mingcute:box-3-fill",
|
||||
"mingcute:question-fill",
|
||||
"mingcute:information-fill",
|
||||
"mingcute:bulb-fill",
|
||||
"mingcute:brain-fill",
|
||||
"mingcute:thought-fill",
|
||||
"mingcute:mortarboard-fill",
|
||||
"mingcute:school-fill",
|
||||
"mingcute:telescope-fill",
|
||||
"mingcute:microscope-fill",
|
||||
"mingcute:flask-fill",
|
||||
"mingcute:test-tube-fill",
|
||||
"mingcute:science-fill",
|
||||
"mingcute:formula-fill",
|
||||
"ph:sigma-fill",
|
||||
"ph:math-operations-fill",
|
||||
"ri:calculator-fill",
|
||||
"ri:atom-fill",
|
||||
"ri:dna-fill",
|
||||
"mingcute:omega-fill",
|
||||
"mingcute:asterisk-fill",
|
||||
|
||||
// Text & Writing
|
||||
"mingcute:text-2-fill",
|
||||
"mingcute:text-area-fill",
|
||||
"mingcute:text-color-fill",
|
||||
"mingcute:pen-2-fill",
|
||||
"mingcute:paper-2-fill",
|
||||
|
||||
// Git & Development
|
||||
// code
|
||||
"mingcute:code-fill",
|
||||
"mingcute:braces-fill",
|
||||
["fluent:braces-variable-24-filled", "variable"],
|
||||
"ph:function-fill",
|
||||
"ph:binary-fill",
|
||||
"mingcute:brackets-fill",
|
||||
"mingcute:brackets-angle-fill",
|
||||
"mingcute:markup-fill",
|
||||
"mingcute:terminal-fill",
|
||||
"mingcute:terminal-box-fill",
|
||||
["fluent:window-dev-tools-24-filled", "dev tools"],
|
||||
"mingcute:command-fill",
|
||||
"mingcute:hotkey-fill",
|
||||
"mingcute:keyboard-fill",
|
||||
"mingcute:bug-fill",
|
||||
"mingcute:git-branch-fill",
|
||||
"mingcute:git-commit-fill",
|
||||
"mingcute:git-compare-fill",
|
||||
"mingcute:git-lab-fill",
|
||||
"mingcute:git-merge-fill",
|
||||
"mingcute:git-pull-request-fill",
|
||||
"mingcute:git-pull-request-close-fill",
|
||||
"mingcute:terminal-box-fill",
|
||||
"ri:git-repository-fill",
|
||||
"ri:git-repository-private-fill",
|
||||
"mingcute:plugin-fill",
|
||||
"mingcute:plugin-2-fill",
|
||||
"ph:plugs-connected-fill",
|
||||
"mingcute:components-fill",
|
||||
"mingcute:layers-fill",
|
||||
"ph:stack-fill",
|
||||
"mingcute:layer-fill",
|
||||
"mingcute:cube-fill",
|
||||
"mingcute:cube-3d-fill",
|
||||
"mingcute:hexagon-fill",
|
||||
"mingcute:hexagons-fill",
|
||||
"mingcute:process-fill",
|
||||
"fluent:pipeline-24-filled",
|
||||
"fluent:flowchart-24-filled",
|
||||
"ph:queue-fill",
|
||||
"ri:infinity-fill",
|
||||
"mingcute:transformation-fill",
|
||||
"mingcute:random-fill",
|
||||
"mingcute:repeat-fill",
|
||||
"mingcute:shuffle-fill",
|
||||
"mingcute:switch-fill",
|
||||
"mingcute:toggle-right-fill",
|
||||
"mingcute:cursor-fill",
|
||||
"mingcute:mouse-fill",
|
||||
"mingcute:inspect-fill",
|
||||
"mingcute:search-fill",
|
||||
"mingcute:filter-fill",
|
||||
"mingcute:filter-2-fill",
|
||||
"mingcute:sort-ascending-fill",
|
||||
"mingcute:sort-descending-fill",
|
||||
"mingcute:target-fill",
|
||||
"mingcute:aiming-fill",
|
||||
"mingcute:magic-1-fill",
|
||||
"mingcute:sparkles-fill",
|
||||
"mingcute:ai-fill",
|
||||
"mingcute:robot-fill",
|
||||
"mingcute:webhook-fill",
|
||||
"mingcute:mqtt-fill",
|
||||
"mingcute:rss-fill",
|
||||
"mingcute:web-fill",
|
||||
"mingcute:world-fill",
|
||||
"mingcute:earth-fill",
|
||||
"mingcute:globe-fill",
|
||||
"mingcute:link-fill",
|
||||
"mingcute:unlink-fill",
|
||||
"mingcute:external-link-fill",
|
||||
"mingcute:qrcode-fill",
|
||||
"mingcute:barcode-fill",
|
||||
"mingcute:scan-fill",
|
||||
|
||||
// infrastructure
|
||||
"mingcute:server-fill",
|
||||
"mingcute:server-2-fill",
|
||||
|
||||
// Navigation & UI
|
||||
"ri:instance-fill",
|
||||
["ph:shipping-container-fill", "container"],
|
||||
"mingcute:storage-fill",
|
||||
"ri:database-2-fill",
|
||||
"ri:hard-drive-2-fill",
|
||||
"mingcute:drive-fill",
|
||||
"mingcute:cylinder-fill",
|
||||
"mingcute:cylinder-2-fill",
|
||||
"mingcute:safe-box-fill",
|
||||
"mingcute:usb-fill",
|
||||
"mingcute:usb-flash-disk-fill",
|
||||
"mingcute:router-modem-fill",
|
||||
"mingcute:base-station-fill",
|
||||
"ph:network-fill",
|
||||
"ph:broadcast-fill",
|
||||
"mingcute:wifi-fill",
|
||||
"mingcute:signal-fill",
|
||||
"mingcute:bluetooth-fill",
|
||||
"mingcute:nfc-fill",
|
||||
"mingcute:cloud-fill",
|
||||
"mingcute:cloud-2-fill",
|
||||
"mingcute:clouds-fill",
|
||||
"mingcute:cloud-lightning-fill",
|
||||
"fluent:cloud-sync-24-filled",
|
||||
"mingcute:monitor-fill",
|
||||
"mingcute:display-fill",
|
||||
"mingcute:computer-fill",
|
||||
"mingcute:laptop-fill",
|
||||
"mingcute:imac-fill",
|
||||
"mingcute:device-fill",
|
||||
"mingcute:chip-fill",
|
||||
"ph:cpu-fill",
|
||||
"ph:memory-fill",
|
||||
"ri:ram-fill",
|
||||
"ph:circuitry-fill",
|
||||
"mingcute:cellphone-fill",
|
||||
"mingcute:pad-fill",
|
||||
"mingcute:watch-fill",
|
||||
"mingcute:tv-1-fill",
|
||||
"mingcute:projector-fill",
|
||||
"mingcute:print-fill",
|
||||
"mingcute:remote-fill",
|
||||
"mingcute:power-fill",
|
||||
"mingcute:flash-fill",
|
||||
"mingcute:lightning-fill",
|
||||
"mingcute:battery-fill",
|
||||
"mingcute:battery-charging-fill",
|
||||
"mingcute:charging-pile-fill",
|
||||
"mingcute:solar-panel-fill",
|
||||
"mingcute:high-voltage-power-fill",
|
||||
"mingcute:engine-fill",
|
||||
"mingcute:fan-fill",
|
||||
"mingcute:thermometer-fill",
|
||||
"mingcute:fire-fill",
|
||||
"mingcute:flame-fill",
|
||||
"mingcute:drop-fill",
|
||||
"mingcute:wind-fill",
|
||||
"mingcute:tornado-fill",
|
||||
"mingcute:thunderstorm-fill",
|
||||
"mingcute:sun-fill",
|
||||
"mingcute:moon-fill",
|
||||
"mingcute:moon-stars-fill",
|
||||
"mingcute:planet-fill",
|
||||
"mingcute:rocket-fill",
|
||||
"mingcute:rocket-2-fill",
|
||||
"mingcute:ufo-fill",
|
||||
"mingcute:drone-fill",
|
||||
"mingcute:radar-fill",
|
||||
"mingcute:radar-2-fill",
|
||||
"mingcute:compass-fill",
|
||||
"mingcute:navigation-fill",
|
||||
"mingcute:map-fill",
|
||||
"mingcute:map-pin-fill",
|
||||
"mingcute:location-fill",
|
||||
"mingcute:route-fill",
|
||||
"mingcute:directions-fill",
|
||||
"mingcute:road-fill",
|
||||
"mingcute:bridge-fill",
|
||||
"mingcute:tunnel-fill",
|
||||
"mingcute:tower-fill",
|
||||
"mingcute:tv-tower-fill",
|
||||
"mingcute:lighthouse-fill",
|
||||
"mingcute:anchor-fill",
|
||||
"mingcute:ship-fill",
|
||||
"mingcute:sailboat-fill",
|
||||
"mingcute:truck-fill",
|
||||
"mingcute:train-fill",
|
||||
"mingcute:bus-fill",
|
||||
"mingcute:car-fill",
|
||||
"mingcute:airplane-fill",
|
||||
"mingcute:flight-takeoff-fill",
|
||||
"mingcute:flight-land-fill",
|
||||
"mingcute:parachute-fill",
|
||||
"mingcute:lifebuoy-fill",
|
||||
"mingcute:traffic-cone-fill",
|
||||
"mingcute:traffic-lights-fill",
|
||||
"mingcute:home-1-fill",
|
||||
"mingcute:home-2-fill",
|
||||
"mingcute:home-3-fill",
|
||||
"mingcute:home-4-fill",
|
||||
"mingcute:home-5-fill",
|
||||
"mingcute:home-6-fill",
|
||||
"mingcute:home-7-fill",
|
||||
"mingcute:arrow-up-circle-fill",
|
||||
"mingcute:arrow-down-circle-fill",
|
||||
"mingcute:arrow-left-circle-fill",
|
||||
"mingcute:arrow-right-circle-fill",
|
||||
|
||||
// Communication & Social
|
||||
"mingcute:mail-fill",
|
||||
"mingcute:mail-open-fill",
|
||||
"mingcute:mail-send-fill",
|
||||
"mingcute:chat-1-fill",
|
||||
"mingcute:chat-2-fill",
|
||||
"mingcute:chat-3-fill",
|
||||
"mingcute:chat-4-fill",
|
||||
"mingcute:message-1-fill",
|
||||
"mingcute:message-2-fill",
|
||||
"mingcute:message-3-fill",
|
||||
"mingcute:message-4-fill",
|
||||
"mingcute:comment-fill",
|
||||
"mingcute:comment-2-fill",
|
||||
"mingcute:notification-fill",
|
||||
|
||||
// Users & Teams
|
||||
"mingcute:user-1-fill",
|
||||
"mingcute:user-2-fill",
|
||||
"mingcute:user-3-fill",
|
||||
"mingcute:user-4-fill",
|
||||
"mingcute:group-fill",
|
||||
"mingcute:group-2-fill",
|
||||
"mingcute:group-3-fill",
|
||||
|
||||
// Settings & Tools
|
||||
"mingcute:settings-1-fill",
|
||||
"mingcute:settings-2-fill",
|
||||
"mingcute:settings-3-fill",
|
||||
"mingcute:settings-4-fill",
|
||||
"mingcute:settings-5-fill",
|
||||
"mingcute:settings-6-fill",
|
||||
"mingcute:settings-7-fill",
|
||||
"mingcute:house-fill",
|
||||
"mingcute:door-fill",
|
||||
"mingcute:enter-door-fill",
|
||||
"mingcute:exit-door-fill",
|
||||
"mingcute:building-1-fill",
|
||||
"mingcute:building-2-fill",
|
||||
"mingcute:factory-fill",
|
||||
"mingcute:bank-fill",
|
||||
"mingcute:government-fill",
|
||||
"mingcute:store-fill",
|
||||
"mingcute:inventory-fill",
|
||||
"mingcute:trunk-fill",
|
||||
"mingcute:tower-crane-fill",
|
||||
"mingcute:ladder-fill",
|
||||
"mingcute:hammer-fill",
|
||||
"mingcute:screwdriver-fill",
|
||||
"mingcute:tool-fill",
|
||||
"ph:toolbox-fill",
|
||||
"mingcute:settings-1-fill",
|
||||
"mingcute:settings-3-fill",
|
||||
"mingcute:settings-6-fill",
|
||||
"mingcute:pickax-fill",
|
||||
"mingcute:axe-fill",
|
||||
"mingcute:shovel-fill",
|
||||
"mingcute:magnet-fill",
|
||||
"mingcute:broom-fill",
|
||||
"mingcute:recycle-fill",
|
||||
"mingcute:wastebasket-fill",
|
||||
"mingcute:delete-2-fill",
|
||||
|
||||
// Stars & Favorites
|
||||
"mingcute:star-fill",
|
||||
"mingcute:star-half-fill",
|
||||
"mingcute:heart-fill",
|
||||
"mingcute:bookmark-fill",
|
||||
// metrics & data
|
||||
"mingcute:chart-bar-fill",
|
||||
"mingcute:chart-bar-2-fill",
|
||||
"mingcute:chart-line-fill",
|
||||
"mingcute:chart-pie-fill",
|
||||
"mingcute:chart-pie-2-fill",
|
||||
"mingcute:chart-vertical-fill",
|
||||
"mingcute:chart-horizontal-fill",
|
||||
"mingcute:chart-decrease-fill",
|
||||
["fluent:data-scatter-24-filled", "scatter chart"],
|
||||
["fluent:data-treemap-24-filled", "treemap"],
|
||||
"ph:graph-fill",
|
||||
"mingcute:trending-up-fill",
|
||||
"mingcute:trending-down-fill",
|
||||
"mingcute:stock-fill",
|
||||
"mingcute:performance-fill",
|
||||
"mingcute:dashboard-fill",
|
||||
"mingcute:dashboard-2-fill",
|
||||
"mingcute:dashboard-3-fill",
|
||||
"mingcute:dashboard-4-fill",
|
||||
"ph:gauge-fill",
|
||||
"mingcute:counter-fill",
|
||||
"mingcute:percentage-fill",
|
||||
"mingcute:wave-fill",
|
||||
"mingcute:sound-line-fill",
|
||||
"mingcute:heartbeat-fill",
|
||||
"mingcute:heartbeat-2-fill",
|
||||
"mingcute:table-fill",
|
||||
"mingcute:table-2-fill",
|
||||
"mingcute:grid-fill",
|
||||
"mingcute:layout-fill",
|
||||
"mingcute:balance-fill",
|
||||
"mingcute:scale-fill",
|
||||
"mingcute:ruler-fill",
|
||||
"mingcute:pencil-ruler-fill",
|
||||
"mingcute:gradienter-fill",
|
||||
"mingcute:time-fill",
|
||||
"mingcute:clock-fill",
|
||||
"mingcute:stopwatch-fill",
|
||||
"mingcute:sandglass-fill",
|
||||
"mingcute:hours-fill",
|
||||
"mingcute:history-fill",
|
||||
"mingcute:schedule-fill",
|
||||
"mingcute:calendar-fill",
|
||||
"mingcute:calendar-month-fill",
|
||||
"mingcute:calendar-week-fill",
|
||||
"mingcute:alarm-1-fill",
|
||||
|
||||
// security
|
||||
"mingcute:key-1-fill",
|
||||
"mingcute:key-2-fill",
|
||||
"mingcute:keyhole-fill",
|
||||
"fluent:password-24-filled",
|
||||
"mingcute:lock-fill",
|
||||
"mingcute:unlock-fill",
|
||||
"mingcute:shield-fill",
|
||||
"mingcute:shield-shape-fill",
|
||||
"mingcute:safe-shield-fill",
|
||||
"mingcute:safety-certificate-fill",
|
||||
"mingcute:safe-lock-fill",
|
||||
"mingcute:safe-alert-fill",
|
||||
"mingcute:fingerprint-fill",
|
||||
"mingcute:faceid-fill",
|
||||
"mingcute:incognito-mode-fill",
|
||||
"mingcute:eye-fill",
|
||||
"mingcute:eye-close-fill",
|
||||
"mingcute:virus-fill",
|
||||
"mingcute:bomb-fill",
|
||||
"mingcute:skull-fill",
|
||||
"mingcute:ghost-fill",
|
||||
"mingcute:sword-fill",
|
||||
|
||||
// status & incidents
|
||||
"mingcute:notification-fill",
|
||||
"mingcute:bell-ringing-fill",
|
||||
"mingcute:announcement-fill",
|
||||
"mingcute:horn-fill",
|
||||
"mingcute:flag-1-fill",
|
||||
"mingcute:flag-2-fill",
|
||||
"mingcute:flag-3-fill",
|
||||
"mingcute:flag-4-fill",
|
||||
"mingcute:check-circle-fill",
|
||||
"mingcute:close-circle-fill",
|
||||
"mingcute:forbid-circle-fill",
|
||||
"mingcute:minus-circle-fill",
|
||||
"mingcute:add-circle-fill",
|
||||
"mingcute:alert-fill",
|
||||
"mingcute:alert-octagon-fill",
|
||||
"mingcute:alert-diamond-fill",
|
||||
"mingcute:warning-fill",
|
||||
"mingcute:fault-fill",
|
||||
"mingcute:stethoscope-fill",
|
||||
"mingcute:first-aid-kit-fill",
|
||||
"mingcute:capsule-fill",
|
||||
"mingcute:hospital-fill",
|
||||
"mingcute:medal-fill",
|
||||
"mingcute:trophy-fill",
|
||||
"mingcute:award-fill",
|
||||
"mingcute:star-fill",
|
||||
"mingcute:heart-fill",
|
||||
"mingcute:thumb-up-fill",
|
||||
"mingcute:thumb-down-fill",
|
||||
|
||||
// Time & Calendar
|
||||
"mingcute:calendar-fill",
|
||||
"mingcute:calendar-2-fill",
|
||||
"mingcute:calendar-3-fill",
|
||||
"mingcute:calendar-add-fill",
|
||||
"mingcute:calendar-day-fill",
|
||||
"mingcute:calendar-month-fill",
|
||||
"mingcute:calendar-time-add-fill",
|
||||
"mingcute:calendar-week-fill",
|
||||
"mingcute:time-fill",
|
||||
"mingcute:time-duration-fill",
|
||||
"mingcute:alarm-1-fill",
|
||||
"mingcute:alarm-2-fill",
|
||||
"mingcute:history-fill",
|
||||
"mingcute:history-anticlockwise-fill",
|
||||
|
||||
// Media
|
||||
// people & communication
|
||||
"mingcute:user-1-fill",
|
||||
"mingcute:user-3-fill",
|
||||
"mingcute:user-add-fill",
|
||||
"mingcute:user-setting-fill",
|
||||
"mingcute:user-security-fill",
|
||||
"mingcute:user-lock-fill",
|
||||
"mingcute:user-star-fill",
|
||||
"mingcute:user-search-fill",
|
||||
"mingcute:group-fill",
|
||||
"mingcute:group-2-fill",
|
||||
"mingcute:contacts-fill",
|
||||
"mingcute:department-fill",
|
||||
"mingcute:idcard-fill",
|
||||
"mingcute:profile-fill",
|
||||
"mingcute:invite-fill",
|
||||
"mingcute:briefcase-fill",
|
||||
"mingcute:suitcase-fill",
|
||||
"mingcute:mail-fill",
|
||||
"mingcute:mail-send-fill",
|
||||
"mingcute:mail-open-fill",
|
||||
"mingcute:chat-1-fill",
|
||||
"mingcute:chat-2-fill",
|
||||
"mingcute:chat-4-fill",
|
||||
"mingcute:message-1-fill",
|
||||
"mingcute:message-3-fill",
|
||||
"mingcute:comment-fill",
|
||||
"mingcute:phone-fill",
|
||||
"mingcute:phone-call-fill",
|
||||
"mingcute:video-fill",
|
||||
"mingcute:video-camera-fill",
|
||||
"mingcute:music-fill",
|
||||
"mingcute:music-2-fill",
|
||||
"mingcute:volume-fill",
|
||||
"mingcute:volume-mute-fill",
|
||||
"mingcute:mic-fill",
|
||||
"mingcute:mic-2-fill",
|
||||
"mingcute:headphone-fill",
|
||||
"mingcute:speaker-fill",
|
||||
"mingcute:volume-fill",
|
||||
"mingcute:live-fill",
|
||||
"mingcute:hands-clapping-fill",
|
||||
"mingcute:wave-hand-fill",
|
||||
"mingcute:hand-heart-fill",
|
||||
"ph:handshake-fill",
|
||||
"mingcute:celebrate-fill",
|
||||
"mingcute:firework-fill",
|
||||
"mingcute:gift-fill",
|
||||
"mingcute:cake-fill",
|
||||
"mingcute:teacup-fill",
|
||||
"mingcute:game-1-fill",
|
||||
"mingcute:chess-fill",
|
||||
"mingcute:leaf-fill",
|
||||
"mingcute:tree-2-fill",
|
||||
|
||||
// Security & Lock
|
||||
"mingcute:lock-fill",
|
||||
"mingcute:unlock-fill",
|
||||
"mingcute:shield-fill",
|
||||
"mingcute:key-1-fill",
|
||||
"mingcute:key-2-fill",
|
||||
// money
|
||||
"mingcute:wallet-fill",
|
||||
"mingcute:coin-fill",
|
||||
"mingcute:cash-fill",
|
||||
"mingcute:bank-card-fill",
|
||||
"mingcute:bill-fill",
|
||||
"mingcute:pig-money-fill",
|
||||
"mingcute:currency-dollar-fill",
|
||||
"mingcute:currency-euro-fill",
|
||||
"mingcute:receive-money-fill",
|
||||
"mingcute:exchange-dollar-fill",
|
||||
"mingcute:sale-fill",
|
||||
"mingcute:coupon-fill",
|
||||
"mingcute:ticket-fill",
|
||||
"mingcute:auction-fill",
|
||||
|
||||
// Data & Charts
|
||||
"mingcute:chart-bar-fill",
|
||||
"mingcute:chart-decrease-fill",
|
||||
"mingcute:chart-line-fill",
|
||||
"mingcute:chart-pie-fill",
|
||||
"mingcute:chart-pie-2-fill",
|
||||
"mingcute:dashboard-2-fill",
|
||||
"mingcute:dashboard-3-fill",
|
||||
"mingcute:dashboard-4-fill",
|
||||
// brands MingCute draws in its own style
|
||||
"mingcute:github-fill",
|
||||
"mingcute:git-lab-fill",
|
||||
"mingcute:linux-fill",
|
||||
"mingcute:ubuntu-fill",
|
||||
"mingcute:windows-fill",
|
||||
"mingcute:apple-fill",
|
||||
"mingcute:android-fill",
|
||||
"mingcute:chrome-fill",
|
||||
"mingcute:firefox-fill",
|
||||
"mingcute:safari-fill",
|
||||
"mingcute:edge-fill",
|
||||
"mingcute:vscode-fill",
|
||||
"mingcute:react-fill",
|
||||
"mingcute:vue-fill",
|
||||
"mingcute:figma-fill",
|
||||
"mingcute:notion-fill",
|
||||
"mingcute:discord-fill",
|
||||
"mingcute:telegram-fill",
|
||||
"mingcute:dropbox-fill",
|
||||
"mingcute:stripe-fill",
|
||||
"mingcute:paypal-fill",
|
||||
"mingcute:youtube-fill",
|
||||
"mingcute:reddit-fill",
|
||||
"mingcute:mastodon-fill",
|
||||
"mingcute:openai-fill",
|
||||
"mingcute:claude-fill",
|
||||
"mingcute:copilot-fill",
|
||||
"mingcute:mcp-fill",
|
||||
"mingcute:deepseek-fill",
|
||||
"mingcute:gemini-fill",
|
||||
"mingcute:grok-fill",
|
||||
"mingcute:perplexity-fill",
|
||||
"mingcute:vibe-coding-fill",
|
||||
|
||||
// Cloud & Storage
|
||||
"mingcute:cloud-fill",
|
||||
"mingcute:cloud-2-fill",
|
||||
"mingcute:save-2-fill",
|
||||
"mingcute:save-fill",
|
||||
"mingcute:archive-fill",
|
||||
// containers & clusters
|
||||
"simple-icons:kubernetes",
|
||||
"simple-icons:docker",
|
||||
"simple-icons:containerd",
|
||||
"simple-icons:helm",
|
||||
"simple-icons:rancher",
|
||||
"simple-icons:k3s",
|
||||
"simple-icons:talos",
|
||||
["simple-icons:redhatopenshift", "openshift"],
|
||||
"simple-icons:istio",
|
||||
"simple-icons:linkerd",
|
||||
["simple-icons:envoyproxy", "envoy"],
|
||||
"simple-icons:argo",
|
||||
"simple-icons:openstack",
|
||||
"simple-icons:proxmox",
|
||||
"file-icons:vmware",
|
||||
"simple-icons:virtualbox",
|
||||
"simple-icons:qemu",
|
||||
"simple-icons:portainer",
|
||||
|
||||
// Location
|
||||
"mingcute:location-fill",
|
||||
"mingcute:location-2-fill",
|
||||
"mingcute:map-fill",
|
||||
"mingcute:map-2-fill",
|
||||
"mingcute:compass-fill",
|
||||
"mingcute:globe-fill",
|
||||
"mingcute:globe-2-fill",
|
||||
// infrastructure as code
|
||||
"simple-icons:terraform",
|
||||
"simple-icons:ansible",
|
||||
"simple-icons:puppet",
|
||||
"simple-icons:chef",
|
||||
"simple-icons:pulumi",
|
||||
"simple-icons:hashicorp",
|
||||
"simple-icons:vault",
|
||||
"simple-icons:consul",
|
||||
"simple-icons:nomad",
|
||||
"simple-icons:backstage",
|
||||
|
||||
// Editing
|
||||
"mingcute:edit-fill",
|
||||
"mingcute:edit-2-fill",
|
||||
"mingcute:edit-3-fill",
|
||||
"mingcute:edit-4-fill",
|
||||
"mingcute:scissors-fill",
|
||||
"mingcute:scissors-2-fill",
|
||||
"mingcute:copy-fill",
|
||||
"mingcute:copy-2-fill",
|
||||
"mingcute:copy-3-fill",
|
||||
"mingcute:clipboard-fill",
|
||||
"mingcute:refresh-1-fill",
|
||||
"mingcute:refresh-2-fill",
|
||||
"mingcute:refresh-3-fill",
|
||||
"mingcute:refresh-4-fill",
|
||||
// observability
|
||||
"simple-icons:prometheus",
|
||||
"simple-icons:grafana",
|
||||
"simple-icons:opentelemetry",
|
||||
"simple-icons:jaeger",
|
||||
"simple-icons:thanos",
|
||||
"simple-icons:victoriametrics",
|
||||
"simple-icons:influxdb",
|
||||
"simple-icons:elasticsearch",
|
||||
"simple-icons:kibana",
|
||||
"simple-icons:opensearch",
|
||||
"simple-icons:sentry",
|
||||
"simple-icons:datadog",
|
||||
["simple-icons:newrelic", "new relic"],
|
||||
"simple-icons:pagerduty",
|
||||
["simple-icons:uptimekuma", "uptime kuma"],
|
||||
|
||||
// Status & Info
|
||||
"mingcute:information-fill",
|
||||
"mingcute:question-fill",
|
||||
"mingcute:alert-fill",
|
||||
"mingcute:warning-fill",
|
||||
"mingcute:checkbox-fill",
|
||||
"mingcute:radio-fill",
|
||||
// data stores & pipelines
|
||||
"devicon-plain:postgresql",
|
||||
"devicon-plain:mysql",
|
||||
"simple-icons:mariadb",
|
||||
"simple-icons:sqlite",
|
||||
"simple-icons:mongodb",
|
||||
"simple-icons:redis",
|
||||
"simple-icons:clickhouse",
|
||||
["simple-icons:cockroachlabs", "cockroachdb"],
|
||||
"simple-icons:etcd",
|
||||
"simple-icons:meilisearch",
|
||||
"simple-icons:minio",
|
||||
"simple-icons:rabbitmq",
|
||||
["simple-icons:apachekafka", "kafka"],
|
||||
"cib:cassandra",
|
||||
["cib:apache-spark", "spark"],
|
||||
["simple-icons:snowflake", "snowflake (data cloud)"],
|
||||
"simple-icons:databricks",
|
||||
"simple-icons:supabase",
|
||||
"ri:firebase-fill",
|
||||
"simple-icons:prisma",
|
||||
"simple-icons:metabase",
|
||||
"simple-icons:posthog",
|
||||
["simple-icons:googleanalytics", "google analytics"],
|
||||
|
||||
// Shapes & Icons
|
||||
"mingcute:cube-fill",
|
||||
"mingcute:cube-3d-fill",
|
||||
"mingcute:box-2-fill",
|
||||
"mingcute:box-3-fill",
|
||||
"mingcute:hexagon-fill",
|
||||
"mingcute:pentagon-fill",
|
||||
"mingcute:square-fill",
|
||||
"mingcute:triangle-fill",
|
||||
// networking & edge
|
||||
"simple-icons:nginx",
|
||||
"file-icons:caddy",
|
||||
"simple-icons:kong",
|
||||
"simple-icons:cloudflare",
|
||||
["simple-icons:letsencrypt", "let's encrypt"],
|
||||
"simple-icons:wireguard",
|
||||
"simple-icons:openvpn",
|
||||
"simple-icons:tailscale",
|
||||
|
||||
// Power & System
|
||||
"mingcute:power-fill",
|
||||
"mingcute:flash-fill",
|
||||
"mingcute:bulb-fill",
|
||||
"mingcute:bulb-2-fill",
|
||||
"mingcute:battery-fill",
|
||||
"mingcute:battery-2-fill",
|
||||
"mingcute:battery-charging-fill",
|
||||
"mingcute:wifi-fill",
|
||||
"mingcute:signal-fill",
|
||||
"mingcute:bluetooth-fill",
|
||||
// source control & delivery
|
||||
"simple-icons:git",
|
||||
"simple-icons:gitea",
|
||||
"simple-icons:bitbucket",
|
||||
"devicon-plain:jenkins",
|
||||
"simple-icons:circleci",
|
||||
"simple-icons:dependabot",
|
||||
"simple-icons:codecov",
|
||||
"simple-icons:snyk",
|
||||
"simple-icons:trivy",
|
||||
"simple-icons:owasp",
|
||||
|
||||
// Tags & Labels
|
||||
"mingcute:tag-fill",
|
||||
"mingcute:tag-2-fill",
|
||||
"mingcute:hashtag-fill",
|
||||
"mingcute:at-fill",
|
||||
// cloud
|
||||
["simple-icons:amazonwebservices", "aws"],
|
||||
["simple-icons:googlecloud", "google cloud"],
|
||||
["simple-icons:googlebigquery", "bigquery"],
|
||||
["simple-icons:microsoftazure", "azure"],
|
||||
["simple-icons:azuredevops", "azure devops"],
|
||||
"simple-icons:digitalocean",
|
||||
"simple-icons:hetzner",
|
||||
"simple-icons:vercel",
|
||||
"cib:netlify",
|
||||
"simple-icons:heroku",
|
||||
["simple-icons:flydotio", "fly.io"],
|
||||
"simple-icons:railway",
|
||||
|
||||
// operating systems & devices
|
||||
"simple-icons:fedora",
|
||||
"mdi:debian",
|
||||
["simple-icons:archlinux", "arch linux"],
|
||||
["simple-icons:alpinelinux", "alpine linux"],
|
||||
"simple-icons:nixos",
|
||||
["simple-icons:rockylinux", "rocky linux"],
|
||||
"ri:centos-fill",
|
||||
["simple-icons:redhat", "red hat"],
|
||||
"simple-icons:freebsd",
|
||||
["simple-icons:raspberrypi", "raspberry pi"],
|
||||
["simple-icons:homeassistant", "home assistant"],
|
||||
["simple-icons:eclipsemosquitto", "mosquitto"],
|
||||
"simple-icons:zapier",
|
||||
|
||||
// languages & shells
|
||||
"devicon-plain:go",
|
||||
"simple-icons:rust",
|
||||
"simple-icons:python",
|
||||
"simple-icons:typescript",
|
||||
"simple-icons:javascript",
|
||||
["devicon-plain:nodejs", "node.js"],
|
||||
"simple-icons:bun",
|
||||
"simple-icons:deno",
|
||||
"ri:php-fill",
|
||||
"simple-icons:ruby",
|
||||
"simple-icons:kotlin",
|
||||
"simple-icons:swift",
|
||||
["devicon-plain:dot-net", ".net"],
|
||||
["simple-icons:csharp", "c#"],
|
||||
["simple-icons:cplusplus", "c++"],
|
||||
"simple-icons:c",
|
||||
"simple-icons:zig",
|
||||
"simple-icons:elixir",
|
||||
"simple-icons:erlang",
|
||||
"simple-icons:haskell",
|
||||
"simple-icons:scala",
|
||||
"simple-icons:lua",
|
||||
"devicon-plain:perl",
|
||||
"simple-icons:r",
|
||||
"simple-icons:julia",
|
||||
"simple-icons:webassembly",
|
||||
"simple-icons:powershell",
|
||||
"mdi:bash",
|
||||
|
||||
// frameworks & tooling
|
||||
["simple-icons:vuedotjs", "vue.js"],
|
||||
"simple-icons:nuxt",
|
||||
["simple-icons:nextdotjs", "next.js"],
|
||||
"simple-icons:svelte",
|
||||
"simple-icons:angular",
|
||||
"simple-icons:astro",
|
||||
"simple-icons:hono",
|
||||
"simple-icons:nestjs",
|
||||
"simple-icons:fastapi",
|
||||
"simple-icons:django",
|
||||
["simple-icons:flask", "flask (python)"],
|
||||
"simple-icons:spring",
|
||||
"devicon-plain:laravel",
|
||||
["devicon-plain:rails", "ruby on rails"],
|
||||
["simple-icons:tailwindcss", "tailwind css"],
|
||||
"simple-icons:vite",
|
||||
"simple-icons:webpack",
|
||||
"simple-icons:eslint",
|
||||
"simple-icons:prettier",
|
||||
"simple-icons:vitest",
|
||||
"simple-icons:jest",
|
||||
"simple-icons:playwright",
|
||||
"simple-icons:cypress",
|
||||
"simple-icons:storybook",
|
||||
"simple-icons:graphql",
|
||||
["simple-icons:openapiinitiative", "openapi"],
|
||||
"simple-icons:swagger",
|
||||
"simple-icons:postman",
|
||||
"simple-icons:npm",
|
||||
"simple-icons:pnpm",
|
||||
"simple-icons:yarn",
|
||||
["simple-icons:d3dotjs", "d3.js"],
|
||||
"simple-icons:mermaid",
|
||||
"simple-icons:excalidraw",
|
||||
["simple-icons:diagramsdotnet", "diagrams.net"],
|
||||
"simple-icons:json",
|
||||
"simple-icons:yaml",
|
||||
|
||||
// ai
|
||||
"simple-icons:anthropic",
|
||||
["simple-icons:huggingface", "hugging face"],
|
||||
"simple-icons:pytorch",
|
||||
"simple-icons:tensorflow",
|
||||
"simple-icons:ollama",
|
||||
"simple-icons:langchain",
|
||||
["simple-icons:mistralai", "mistral"],
|
||||
["simple-icons:cursor", "cursor (editor)"],
|
||||
|
||||
// collaboration & docs
|
||||
"simple-icons:slack",
|
||||
"simple-icons:jira",
|
||||
"simple-icons:confluence",
|
||||
"simple-icons:trello",
|
||||
"simple-icons:linear",
|
||||
"simple-icons:clickup",
|
||||
"simple-icons:asana",
|
||||
"simple-icons:miro",
|
||||
"simple-icons:mattermost",
|
||||
["simple-icons:googlemeet", "google meet"],
|
||||
["simple-icons:microsoftteams", "microsoft teams"],
|
||||
["ph:matrix-logo-fill", "matrix"],
|
||||
"simple-icons:obsidian",
|
||||
["simple-icons:readthedocs", "read the docs"],
|
||||
"simple-icons:docusaurus",
|
||||
"simple-icons:gitbook",
|
||||
["simple-icons:stackoverflow", "stack overflow"],
|
||||
|
||||
// editors & terminals
|
||||
"simple-icons:jetbrains",
|
||||
"simple-icons:neovim",
|
||||
"simple-icons:vim",
|
||||
"simple-icons:tmux",
|
||||
|
||||
// identity & security tooling
|
||||
"simple-icons:1password",
|
||||
"simple-icons:bitwarden",
|
||||
"simple-icons:keycloak",
|
||||
"simple-icons:auth0",
|
||||
"simple-icons:okta",
|
||||
"simple-icons:authelia",
|
||||
"simple-icons:authentik",
|
||||
"simple-icons:wireshark",
|
||||
"simple-icons:metasploit",
|
||||
["simple-icons:burpsuite", "burp suite"],
|
||||
|
||||
// storage & self-hosting
|
||||
"simple-icons:rclone",
|
||||
"simple-icons:truenas",
|
||||
|
||||
// third-party services
|
||||
"simple-icons:twilio",
|
||||
"simple-icons:sendgrid",
|
||||
]
|
||||
|
||||
// these icons aren't scanned and bundled automatically
|
||||
export const selectableIcons: {
|
||||
normalName: string // without prefix
|
||||
prettyName: string
|
||||
id: string
|
||||
}[] = []
|
||||
// the icon's own name without its collection's style suffix. A trailing
|
||||
// index is a collection's disambiguator between variants of one concept;
|
||||
// the glyph tells them apart, so the name does not
|
||||
function displayName(id: string) {
|
||||
return id
|
||||
.slice(id.indexOf(":") + 1)
|
||||
.replace(/-24-filled$|-fill$/, "")
|
||||
.replace(/-\d+$/, "")
|
||||
.replaceAll("-", " ")
|
||||
}
|
||||
|
||||
mingCuteIcons.forEach((k) => {
|
||||
const name = k.replace("mingcute:", "")
|
||||
selectableIcons.push({
|
||||
normalName: name,
|
||||
prettyName: name.replace(/-fill$/, "").replaceAll("-", " "),
|
||||
id: k,
|
||||
})
|
||||
})
|
||||
export const selectableIcons: {
|
||||
id: string
|
||||
name: string // displayed and searched
|
||||
}[] = icons.map((entry) =>
|
||||
typeof entry === "string"
|
||||
? { id: entry, name: displayName(entry) }
|
||||
: { id: entry[0], name: entry[1] },
|
||||
)
|
||||
|
||||
export function selectableIconList() {
|
||||
return selectableIcons.map((v) => {
|
||||
|
|
|
|||
|
|
@ -176,7 +176,12 @@ export default defineNuxtConfig({
|
|||
mode: "css",
|
||||
cssLayer: "base",
|
||||
clientBundle: {
|
||||
icons: selectableIconList(),
|
||||
// the document title icons are a fifth of the startup download,
|
||||
// so the web build leaves them out and the server resolves each
|
||||
// one on first use: inlined for SSR, fetched in batches after
|
||||
// client-side navigation. The desktop build has no server to ask
|
||||
// and loads from disk, so it bundles them and stays offline-safe
|
||||
icons: isDesktopBuild ? selectableIconList() : [],
|
||||
scan: true,
|
||||
sizeLimitKb: 256,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -117,11 +117,18 @@
|
|||
"@electron-forge/plugin-vite": "^7.11.1",
|
||||
"@electron/fuses": "^1.8.0",
|
||||
"@iconify-json/basil": "^1.2.4",
|
||||
"@iconify-json/cib": "^1.2.3",
|
||||
"@iconify-json/devicon": "^1.2.56",
|
||||
"@iconify-json/devicon-plain": "^1.2.57",
|
||||
"@iconify-json/file-icons": "^1.2.2",
|
||||
"@iconify-json/fluent": "^1.2.57",
|
||||
"@iconify-json/hugeicons": "^1.2.33",
|
||||
"@iconify-json/iconoir": "^1.2.7",
|
||||
"@iconify-json/lucide": "^1.2.126",
|
||||
"@iconify-json/mdi": "^1.2.3",
|
||||
"@iconify-json/mingcute": "^1.2.8",
|
||||
"@iconify-json/ph": "^1.2.2",
|
||||
"@iconify-json/ri": "^1.2.10",
|
||||
"@iconify-json/simple-icons": "^1.2.93",
|
||||
"@iconify-json/svg-spinners": "^1.2.4",
|
||||
"@intlify/eslint-plugin-vue-i18n": "^4.5.1",
|
||||
|
|
|
|||
|
|
@ -234,9 +234,21 @@ importers:
|
|||
'@iconify-json/basil':
|
||||
specifier: ^1.2.4
|
||||
version: 1.2.4
|
||||
'@iconify-json/cib':
|
||||
specifier: ^1.2.3
|
||||
version: 1.2.3
|
||||
'@iconify-json/devicon':
|
||||
specifier: ^1.2.56
|
||||
version: 1.2.62
|
||||
'@iconify-json/devicon-plain':
|
||||
specifier: ^1.2.57
|
||||
version: 1.2.57
|
||||
'@iconify-json/file-icons':
|
||||
specifier: ^1.2.2
|
||||
version: 1.2.2
|
||||
'@iconify-json/fluent':
|
||||
specifier: ^1.2.57
|
||||
version: 1.2.57
|
||||
'@iconify-json/hugeicons':
|
||||
specifier: ^1.2.33
|
||||
version: 1.2.33
|
||||
|
|
@ -246,9 +258,18 @@ importers:
|
|||
'@iconify-json/lucide':
|
||||
specifier: ^1.2.126
|
||||
version: 1.2.126
|
||||
'@iconify-json/mdi':
|
||||
specifier: ^1.2.3
|
||||
version: 1.2.3
|
||||
'@iconify-json/mingcute':
|
||||
specifier: ^1.2.8
|
||||
version: 1.2.8
|
||||
'@iconify-json/ph':
|
||||
specifier: ^1.2.2
|
||||
version: 1.2.2
|
||||
'@iconify-json/ri':
|
||||
specifier: ^1.2.10
|
||||
version: 1.2.10
|
||||
'@iconify-json/simple-icons':
|
||||
specifier: ^1.2.93
|
||||
version: 1.2.93
|
||||
|
|
@ -1438,9 +1459,21 @@ packages:
|
|||
'@iconify-json/basil@1.2.4':
|
||||
resolution: {integrity: sha512-KUL5JBdFDF7APY8XiuqvfpiecIby8pIbs6rm3WLgdVDqMlKH0WcWEwd+ilANby8X3AuHQVrjNjByh9MpfAR3lQ==}
|
||||
|
||||
'@iconify-json/cib@1.2.3':
|
||||
resolution: {integrity: sha512-MMvRXVTHt82z3bYN19JDAjv/X8OBNC/1B3I334SV/1nyhdPeeyvJZVoI1cGuNqYznBjMnWxKPtIhhiVgGQ1CzQ==}
|
||||
|
||||
'@iconify-json/devicon-plain@1.2.57':
|
||||
resolution: {integrity: sha512-3p8PgK63KejM1DhuL7LBslvfmPmwjx6DkO3EM+om6MGc8kpc9yX7CgOPWuM2sFSxEblzqxAwnbUlIO56fJjMRw==}
|
||||
|
||||
'@iconify-json/devicon@1.2.62':
|
||||
resolution: {integrity: sha512-X0o0+fOJL2t5JTbDCGLRzrmvf8Pv5q8dr86+fW+F/VJ9qvXTtny6lqGIwjE9AY4VTLm3i8f/N+VtRheSW6OkEg==}
|
||||
|
||||
'@iconify-json/file-icons@1.2.2':
|
||||
resolution: {integrity: sha512-ajk44wYGTiu79EAyrfNHNaxZ1/2Z1xuSOAvYUT/pAPWHc+P6n9TUZP/ccnPG18kx0WMBxmkHHQ9/zkm6ENhk+Q==}
|
||||
|
||||
'@iconify-json/fluent@1.2.57':
|
||||
resolution: {integrity: sha512-ecYjdYhwiQ+UNz94cOnYY8RCRbZ8+N54jzocxmfgRZgblM2IvG8RRGeI9Z52jxG8KhZcLftxyhvvk/rrqKSZLw==}
|
||||
|
||||
'@iconify-json/hugeicons@1.2.33':
|
||||
resolution: {integrity: sha512-x5a5/Ipd+v9c9qSisecCR+KMAegZuWDoVeZfp5RREdzOP9/Orec7w0BNUVZrkNOEt5oVtttCu/DXb5etc8Sfig==}
|
||||
|
||||
|
|
@ -1450,9 +1483,18 @@ packages:
|
|||
'@iconify-json/lucide@1.2.126':
|
||||
resolution: {integrity: sha512-Fl3OfR71yeWLrlTLp6C4W5W3rJJDWH9/e70mjtq9VAldYDxvHh149JMNPz7foTeLLTE2Paynnp2aYKVL9rgF5Q==}
|
||||
|
||||
'@iconify-json/mdi@1.2.3':
|
||||
resolution: {integrity: sha512-O3cLwbDOK7NNDf2ihaQOH5F9JglnulNDFV7WprU2dSoZu3h3cWH//h74uQAB87brHmvFVxIOkuBX2sZSzYhScg==}
|
||||
|
||||
'@iconify-json/mingcute@1.2.8':
|
||||
resolution: {integrity: sha512-J8VXpRwTpx5yzOzyhx3T4IXnfXIKTWFl3rZ9okcW4c+NMMuwkLvdmM4rkjB83tnYIhg5+kkeMpmw8tvSnxd4rQ==}
|
||||
|
||||
'@iconify-json/ph@1.2.2':
|
||||
resolution: {integrity: sha512-PgkEZNtqa8hBGjHXQa4pMwZa93hmfu8FUSjs/nv4oUU6yLsgv+gh9nu28Kqi8Fz9CCVu4hj1MZs9/60J57IzFw==}
|
||||
|
||||
'@iconify-json/ri@1.2.10':
|
||||
resolution: {integrity: sha512-WWMhoncVVM+Xmu9T5fgu2lhYRrKTEWhKk3Com0KiM111EeEsRLiASjpsFKnC/SrB6covhUp95r2mH8tGxhgd5Q==}
|
||||
|
||||
'@iconify-json/simple-icons@1.2.93':
|
||||
resolution: {integrity: sha512-/XhANjfGYOuqvSR3TmUnkQkINvQ4GVjVuukvymRbxtVFBvIq/yiXJqCDycKcQPT401OYT9H2vIY6ihAlz1QIAw==}
|
||||
|
||||
|
|
@ -10449,10 +10491,26 @@ snapshots:
|
|||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/cib@1.2.3':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/devicon-plain@1.2.57':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/devicon@1.2.62':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/file-icons@1.2.2':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/fluent@1.2.57':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/hugeicons@1.2.33':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
|
@ -10465,10 +10523,22 @@ snapshots:
|
|||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/mdi@1.2.3':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/mingcute@1.2.8':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/ph@1.2.2':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/ri@1.2.10':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
||||
'@iconify-json/simple-icons@1.2.93':
|
||||
dependencies:
|
||||
'@iconify/types': 2.0.0
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user