Lucide
AI Studio draws its icons with Lucide, taken from the npm package lucide-static, version 1.71.0. The app uses the icon font of that package, not single SVG files: one font holds every icon, and MudBlazor shows a font glyph wherever it accepts an icon.
Files
| File | Taken from the package | Purpose |
|---|---|---|
app/SourceGeneratedMappings/Lucide/codepoints.json |
font/codepoints.json |
Maps the name of every icon, aliases included, to its code point in the font. |
app/MindWork AI Studio/wwwroot/fonts/lucide.woff2 |
font/lucide.woff2 |
The font the app ships, declared in wwwroot/app.css. |
app/MindWork AI Studio/wwwroot/fonts/LICENSE-lucide.txt |
LICENSE |
The license, which has to travel with every copy of the font. |
All three files are copies without any change. The code points belong to one release of the font, so always replace the three files together.
Using the icons
While the app is built, LucideIconGenerator turns codepoints.json into two classes in the namespace AIStudio.Tools:
LucideIconsholds a constant for every name, such asLucideIcons.HOUSE. Its value islucide/followed by the glyph of the icon: MudBlazor renders such a string as a span with the classlucideand the glyph as its text, andwwwroot/app.cssapplies the font to that class.LucideIconRegistryfinds an icon by the name lucide.dev shows for it, such ashouse. Assistant plugins name their icons this way.
Besides the current names, codepoints.json holds aliases and names Lucide has deprecated, such as home for house or trash-2 for trash, so that a plugin written with an older name keeps working. In the app itself, always pick the current name as lucide.dev shows it.
The app takes its icons only from AppIcons in app/MindWork AI Studio/Tools/AppIcons.cs. It names every icon after its meaning in AI Studio, such as AppIcons.DELETE, and decides there which Lucide icon stands for it. To use an icon, take the constant of its meaning from AppIcons; when there is none yet, add one there. Never use LucideIcons or the icons of MudBlazor anywhere else.
License
Lucide is licensed under the ISC License. The icons Lucide derived from Feather are licensed under the MIT License; LICENSE-lucide.txt lists them.
Updating
-
Download and unpack the package of the new version:
curl -L -o lucide-static.tgz "https://registry.npmjs.org/lucide-static/-/lucide-static-<version>.tgz" tar -xzf lucide-static.tgz -
Copy the three files from
package/to the places in the table above. -
Change the version at the top of this file.
-
Build the app and run the tests.
-
A few places show Lucide icons as images, where no web font works, and hold copies of their SVG files from
package/icons/. Check whether these icons changed in the new version, and take them anew if so:cpu-aiandserverinwwwroot/images/provider-icons/, see the README there,plugas the default icon of plugins,DEFAULT_ICON_SVGinTools/PluginSystem/PluginBase.Icon.cs,settingsin theicon.luaofPlugins/assistants/andPlugins/configuration/.
-
Generate the banner of the start page anew, since its icons come from the font, see
media/Banner/README.md.