Commit Graph

11 Commits

Author SHA1 Message Date
Julien Calixte
a371f11811 feat: share radars via self-contained URL links
The app has no backend, so a share link embeds the whole radar as
base64url in the query string. Opening /share?d=... validates and
imports a fresh copy into the recipient's radars, then opens it.
2026-06-19 15:43:43 +02:00
Julien Calixte
3f9dd514ce feat: add duplicate button to radar list cards 2026-06-19 15:43:33 +02:00
Julien Calixte
9ca2068b34 chore: add Zed format-on-save config using oxfmt 2026-06-19 11:34:54 +02:00
Julien Calixte
4eafda5dfb fix(chart): wrap long criterion labels to fit the canvas
Labels rendered as single-line SVG text and clipped at the canvas edge
(and in the PNG export). Word-wrap each label to the room available on
its side, stacking lines away from the chart.
2026-06-19 11:33:45 +02:00
Julien Calixte
f42744b409 feat: add product concept subtitle to radars
A Radar gains an optional Concept — a short subtitle naming the product
and its typical performances, rendered under the title and wrapping to a
balanced second line when long. Old radars default to an empty Concept
on load.
2026-06-19 10:03:34 +02:00
Julien Calixte
8e751e77b7 fix(chart): render title and profile legend by default
Vue casts an absent boolean prop to false, so withChrome was always
false and the v-if="withChrome !== false" guards hid the title and
legend everywhere — including the PNG export. Default withChrome to
true via withDefaults so the legend renders.
2026-06-17 09:41:42 +02:00
Julien Calixte
b203cd3ca4 feat: set DaisyUI primary to brand #7ed6df
Extend the built-in 'light' theme via DaisyUI 5's @plugin theme block.
All btn-primary / text-primary / selected-state utilities now use the
brand color across the app.
2026-06-16 22:12:43 +02:00
Julien Calixte
25ed5a1ae5 feat: use Tabler chart-radar as favicon (#7ed6df) 2026-06-16 22:08:50 +02:00
Julien Calixte
636fba170f feat: implement radar app — list, editor, chart, scoring, PNG export
- vue-router with list (/) and editor (/radar/:id) views
- localStorage persistence via useRadars() composable
- types.ts: Radar / Criterion / Profile / Score with cardinality constants
- RadarChart.vue: SVG renderer (rings, axes, profile polygons, labels, legend)
- CriteriaEditor / ProfilesEditor / ScoreGrid components
- PNG export: SVG → canvas → blob, download + clipboard copy
- Remove 'coming soon' placeholder from App.vue
2026-06-16 22:06:11 +02:00
Julien Calixte
a8b83b79ce feat: use Fredoka via api.fonts.coollabs.io as default sans 2026-06-16 21:52:27 +02:00
Julien Calixte
cd46575b05 chore: initial scaffold 2026-06-16 21:49:09 +02:00