diff --git a/.npmrc b/.npmrc index cc0db93..201d08a 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1 @@ @poolsideai:registry=https://registry.npmjs.org/ -@hugeicons-pro:registry=https://npm.hugeicons.com/ -//npm.hugeicons.com/:_authToken=${HUGEICONS_TOKEN} \ No newline at end of file diff --git a/README.md b/README.md index 0328c10..491a9b4 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,45 @@ Numbers count up, bars rise from the floor. Hover any column for the model name. ## Examples +### Base + thinking results + +Pass `stacked` to coalesce a base model and its thinking variant into one column. +The thinking result is automatically 40% darker. The larger value stays above the +full bar, while the smaller value is shown inside the inset bar. Stacked charts +apply the same minimum width to every column so decimal labels remain readable. +Their tooltips put the model name on its own line, followed by color-keyed Base +and Thinking values. + +```svelte + +``` + +Matching is case-insensitive and recognizes these suffixes by default: +`Thinking`, `Reasoning`, `Reasoner`, and `Extended Thinking` (with spaces, +hyphens, underscores, or parentheses). Override them with `stackSuffixes`: + +```svelte + +``` + +For model names that do not share a suffix convention, pair them explicitly: + +```js +const data = [ + { value: 46, provider: 'acme', label: 'Acme Fast', stackKey: 'acme-v2', stackRole: 'base' }, + { value: 58, provider: 'acme', label: 'Acme Deep', stackKey: 'acme-v2', stackRole: 'thinking' }, +]; +``` + ### Monochromatic mode + theming Pass `monochromatic` to drop the canonical brand colors and let icons inherit your theme. The highlighted icon picks up `--pe-icon-highlight` alongside its bar. @@ -140,6 +179,8 @@ const data = [ | `monochromatic` | `boolean` | `false` | Use single-color icons that follow `--pe-icon-color` / `--pe-icon-highlight`. | | `labels` | `boolean` | `false` | Show rotated text labels below provider icons. | | `counts` | `boolean` | `true` | Show the numeric value above each bar. | +| `stacked` | `boolean` | `false` | Coalesce matching base/thinking results into one column. | +| `stackSuffixes` | `string[]` | thinking/reasoning defaults | Suffixes used to infer thinking variants when `stacked` is enabled. | | `chartHeight` | `number` | `150` | Bar lane height in pixels. | | `providerIcons` | `Record` | `{}` | Custom Svelte components keyed by provider. Used before built-in SVG lookup. | | `title` | `string` | `"Model evaluation chart"` | Accessible title. | @@ -159,6 +200,8 @@ type Datum = { label?: string; // model name shown in the tooltip and rotated label highlight?: boolean; // marks this row as the highlighted (accent) bar unit?: string; // appended to the count, e.g. "ms" or "%" + stackKey?: string; // explicit pairing key for a base/thinking result + stackRole?: 'base' | 'thinking'; // explicit role within the pair }; ``` @@ -188,6 +231,9 @@ All visual controls go through CSS variables on the root element. Pass them eith |---|---|---| | `bar-color` | `#d6d6d6` | Default bar fill. | | `bar-highlight` | `#7c3aed` | Highlighted bar fill and focus ring. | +| `stack-color` | 40% darker `bar-color` | Thinking variant fill. | +| `stack-highlight` | 40% darker `bar-highlight` | Highlighted thinking variant fill. | +| `stack-count-color` | `#fff` | Value label inside the inset bar. | | `bar-width` | `22px` | Width of each bar column. | | `bar-radius` | `0px` | Corner radius for bars. | | `bar-gap` | `18px` | Space between bar columns. | diff --git a/package.json b/package.json index f5c50d2..6b2bc83 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@chenglou/pretext": "^0.0.6" }, "devDependencies": { - "@hugeicons-pro/core-stroke-standard": "^4.1.0", + "@hugeicons/core-free-icons": "^3.1.1", "@pierre/diffs": "^1.1.19", "@sveltejs/package": "^2.3.7", "@sveltejs/vite-plugin-svelte": "^5.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e332067..f7c15f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,9 +12,9 @@ importers: specifier: ^0.0.6 version: 0.0.6 devDependencies: - '@hugeicons-pro/core-stroke-standard': - specifier: ^4.1.0 - version: 4.1.0 + '@hugeicons/core-free-icons': + specifier: ^3.1.1 + version: 3.3.0 '@pierre/diffs': specifier: ^1.1.19 version: 1.1.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -198,8 +198,8 @@ packages: cpu: [x64] os: [win32] - '@hugeicons-pro/core-stroke-standard@4.1.0': - resolution: {integrity: sha512-JtBxAlwDpq6JS1/aOKTTzdHF0hO6eDNnwqN0eus3XuLeafiAzQCcdK303qoIRD/dNp6fLvMWAeUQ6livBpDkuQ==} + '@hugeicons/core-free-icons@3.3.0': + resolution: {integrity: sha512-qYyr4JQ2eQIHTSTbITvnJvs6ERNK64D9gpwZnf2IyuG0exzqfyABLO/oTB71FB3RZPfu1GbwycdiGSo46apjMQ==} '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1005,7 +1005,7 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@hugeicons-pro/core-stroke-standard@4.1.0': {} + '@hugeicons/core-free-icons@3.3.0': {} '@jridgewell/gen-mapping@0.3.13': dependencies: diff --git a/src/HomePage.svelte b/src/HomePage.svelte index 07c332b..53b6958 100644 --- a/src/HomePage.svelte +++ b/src/HomePage.svelte @@ -11,7 +11,7 @@ import { SparklesIcon, Chart01Icon, - ChartColumnBigIcon, + ChartColumnBig as ChartColumnBigIcon, HashtagIcon, Tag01Icon, TextFontIcon, @@ -30,7 +30,7 @@ Tick02Icon, Download01Icon, File01Icon, - } from '@hugeicons-pro/core-stroke-standard'; + } from '@hugeicons/core-free-icons'; // Beautiful eval charts — illustrative numbers const sweBench = [ @@ -84,6 +84,15 @@ { value: 80, provider: 'gemini', label: 'Atlas 2.5 Pro' }, ]; + const thinkingComparison = [ + { value: 46.3, provider: 'poolside', label: 'Poolside Nova', highlight: true }, + { value: 57.9, provider: 'poolside', label: 'Poolside Nova Thinking' }, + { value: 55.4, provider: 'deepseek', label: 'DeepSeek V4' }, + { value: 57.5, provider: 'gemini', label: 'Gemini 2.5 Pro' }, + { value: 60.6, provider: 'openai', label: 'GPT-5' }, + { value: 62.1, provider: 'grok', label: 'Grok 5' }, + ]; + const providerIcons = { acme: AcmeProviderIcon, }; @@ -147,6 +156,31 @@ `; + const thinkingCode = `