/** * dsh-widgets —the surface icons (official ui-primitives paths). * * Plain `createElement` SVG, no icon dependency: the paths are the ones the official * settings/market chrome uses so the plugin reads as part of the same product. */ import * as React from 'react'; export declare const TrashIcon: () => React.ReactElement; export declare const refreshIcon: React.ReactSVGElement; export declare const ChevronLeftIcon: () => React.ReactElement; export declare const ChevronRightIcon: () => React.ReactElement; /** Close glyph for the 组件配置 preview drawer (same shape as the panel's own). */ export declare const closeIconSmall: React.ReactSVGElement; /** Market view toggle + the search field's leading magnifier (official shapes). */ export declare const listViewIcon: React.ReactSVGElement; export declare const gridViewIcon: React.ReactSVGElement; export declare const searchIcon: React.ReactSVGElement; /** `font-size`-independent: the tile renders it at the size the deck asks for. */ export declare const settingsGearIcon: (size: number) => React.ReactElement; /** * The database / token-store glyph: a stroked cylinder (top ellipse, two sides, * a middle band and the bottom's front arc). * * The shape follows Lucide's `database` glyph (ISC) — the owner pointed at exactly * this cylinder (2026-09-28); the coordinates are re-authored in this repo's own * 16×16 grid with the 1.6 stroke of the other stroked glyphs here * (listViewIcon/searchIcon use 1.5). `currentColor`, so a card can paint it in its * own tone — the cache card paints it the same green/red as its ring arc. */ export declare const databaseIcon: React.ReactSVGElement; /** * The disk glyph of the 缓存命中 card's head ring: a drive body (slanted shoulders, * rounded bottom corners) with the bay slot line across it. Lucide's `hard-drive` * (ISC), re-authored on this file's 16×16 grid (24-grid ÷1.5) — the same provenance * as `databaseIcon` above. * * HOW HEAVY IT IS, AND WHY IT IS NOT HEAVIER. The ring it sits in is stroked * `round(5 · scale)` at a 52 · scale box while the glyph is a 16 grid drawn at * 20 · scale, so the weights compare 1:1.25; every other glyph here (1.6, i.e. * 2px) reads as a thin detail floating in a fat circle, and the owner's rule is * that the ring's middle must not look weak. Three passes settled on **2.8** * (visual 3.5px, 70% of the ring): 4.0 (= the ring's own 5px) closed the body's * three horizontal bands into a slab, and 3.2 (4px) still read heavy on a live * card. Do not raise it back. * * THE INDICATOR DOTS ARE DELIBERATELY ABSENT. Lucide puts two under the slot; at * this stroke their diameter IS the stroke (4px at a 20px glyph) and the clear band * between the slot and the bottom edge is ~2.7px, so they land as two lumps glued * to the slot line. The body + slot pair is what still reads as a drive at 16px. * * `currentColor`, so the ring paints it in its own tone (the cache card paints it * the same green/red as its arc). */ export declare const hardDriveIcon: React.ReactSVGElement; export declare const permissionReadOnlyIcon: React.ReactSVGElement; export declare const permissionWorkspaceWriteIcon: React.ReactSVGElement; export declare const permissionFullAccessIcon: React.ReactSVGElement; /** * GitHub's own mark (Octicons `mark-github`, 16×16), so the 待我处理 card says which * account it is about. Reproduced for the same reason as the permission glyphs: it is * the drawing people already recognise, not a re-draw. */ export declare const githubMarkIcon: React.ReactSVGElement; /** * A LIGHTNING BOLT — the 供电 head's ring glyph. * * The owner's call (2026-09-29): a bolt says "power source" at a glance, while a * battery shape duplicates what the ring's arc already IS (the charge level). * * The path is Lucide's CURRENT `zap` (`icons/zap.svg`, ISC), fetched rather than * remembered: its four corners are already `a1.5 1.5` ARCS, which is what makes the * silhouette soft — the previous version used the OLD straight-corner path and the * owner read it as angular/ugly. Lucide's own spec says sharp 90° corners of an * element this size should carry a ~2px radius; this path is that, authored upstream. * ([spec](https://lucide.dev/contribute/icons/specification), [zap](https://lucide.dev/icons/zap)) * * Rendered STROKED with round caps and joins like every other glyph in this file, * but at 2.6 (not Lucide's 2.0): at the ring's 20px box a 2.0 stroke reads as a * hairline next to 缓存命中's stroked drive, and the heavier weight keeps the bolt * solid while the round joins keep it soft. * * KEEP IT IN THE SOURCE GRID: the box is declared 20px with the native 24-unit * viewBox, so the geometry stays bit-identical to upstream and the renderer's * `scale(20/16)` lands it at the same visual size as every 16-unit glyph. */ export declare const powerIcon: React.ReactSVGElement; /** * The gauge glyph of the 额度预测 card's head ring. * * WHY A GAUGE, AND WHAT ELSE WAS CONSIDERED (the owner asked for a fitting glyph, * 2026-09-29). The card forecasts how much of a monthly CREDIT allowance will be * spent by the period's end, so the glyph has to name what the ring measures: * - 额度/money — the official set has NO coin/wallet/credit glyph at all (the whole * `@deepseek-ai` client vocabulary is 73 icons: money-adjacent are only Clock, * Database, Data, Gauge, Light, Sparkle), so a wallet would have to be invented; * - a CLOCK would merely restate the 账期 line the card already prints under the * figure; * - the DATABASE cylinder is what 峰谷定价's ring already wears; * - the GAUGE means "metered against a cap", which is exactly the card's question, * and it is the product's own glyph for it. * * The drawing is `@deepseek-ai/dsh-client-ui-primitives`'s `IconGaugeOutline16` * verbatim (dial arc open at the bottom, needle to the upper right, filled hub at * y=8.75) — reproduced rather than imported, like every other glyph here. Only the * STROKE is raised, 1.25 → 2.4: the ring it sits in is stroked `round(5 · scale)` * at a 52 · scale box while the glyph is drawn at 20 · scale, so upstream's hairline * would read as a weak detail floating in a fat circle — the same call the drive * glyph's comment records (2.8 there; a dial keeps a little lighter so its needle * and hub do not merge into a blob). */ export declare const gaugeIcon: React.ReactSVGElement; /** * The pulse glyph of the GPU 性能 card's head ring. * * WHY THIS SHAPE (the owner pointed at Windows 官方的「性能」图标, 2026-10-03). * The card is the Windows-task-manager-GPU-tab reading as a card, and the owner * renamed it to 性能 itself, so the reference is the OS's own vocabulary: the * heartbeat line that crosses the 性能 icon. The alternative — a GPU die / card * silhouette — would name the HARDWARE, and the ring measures UTILISATION (the * arc is the same percentage the figure prints); a pulse names the reading. * * The owner's call (2026-10-03): the FRAME of the OS glyph is dropped — inside a * 52px ring the rounded square read as a second circle around the pulse, so only * the line ships. That is also why the line is drawn ACROSS the full 16-unit * grid (2.2..13.8) instead of inside a frame's clearance: with no square around * it, the ink has to fill the ring's middle by itself. * * Stroke 2.4 — the same weight as the gauge — because its neighbours are arcs * stroked `round(5 · scale)`; a hairline would read as a weak detail floating in * a fat circle. Round joins, and the peaks are 3.6 units apart so they do not * merge into a blob at the ring's 20 · scale render. * * The glyph is deliberately NOT a chart axis: the card already draws a * sparkline below the head, and a second line glyph would say "折线" twice. */ export declare const performanceIcon: React.ReactSVGElement; /** * The header toggle's glyph: the app icon's four-tile motif, drawn on the * HEADER's grid rather than the settings-nav one. * * This is the same artwork as `--dsx-nav-glyph` (styles/tokens.module.css, the * settings-nav mask), re-gridded for the surface it now sits in, because the two * surfaces speak different weights of the same official set * (`@deepseek-ai/dsh-client-ui-primitives`): * * - the session header is REGULAR — `ICON_REGULAR_STROKE = 1`, 16-unit artwork * rendered at 15px. Measured on the 打开右侧边栏 button next door: viewBox 16, * box 15x15, stroke 1 (effective 0.94px), ink spanning 1.5..14.5; * - the settings nav is MEDIUM — `ICON_MEDIUM_STROKE = 1.3`, rendered at 16px * (both measured live, scripts/diag-icon-language.cjs). * * The nav mask's tiles span 1.1..14.9 at stroke 1.25; reused unchanged in the * header that reads ~16% larger and ~33% heavier than the 打开右侧边栏 icon, which * is exactly the mismatch this glyph fixes: outer stroke CENTRES on 1.5..14.5 * (the official grid), stroke 1, so the ink is 1.0..15.0 and the effective * stroke lands at 0.94px — the same as its neighbour's. * * The ~3-unit gaps are carried over from the nav version (scaled with the * tiles), so the four cards still separate at 1x: ≈1.9px between strokes at the * 15px render, above the ~1.7px the nav version was tuned to. */ export declare const widgetsToggleIcon: React.ReactSVGElement;