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 = `