Commit Graph
12 Commits
Author SHA1 Message Date
admin d3afc40ef4 feat(katalog): filter + sök + flikval i URL:en (kernel URL-state-konventionen)
CI (SIAX Cloud) / integration (push) Skipped
CI (SIAX Cloud) / sonar (push) Skipped
masterplan-lock / check (push) Successful in 6s
CI (SIAX Cloud) / sonar (pull_request) Skipped
masterplan-lock / check (pull_request) Successful in 8s
CI (SIAX Cloud) / security (pull_request) Successful in 34s
CI (SIAX Cloud) / quality (push) Successful in 53s
CI (SIAX Cloud) / quality (pull_request) Successful in 56s
CI (SIAX Cloud) / integration (pull_request) Successful in 58s
Security Scan (SIAX Cloud) / security (push) Successful in 1m10s
CI (SIAX Cloud) / security (push) Successful in 1m12s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 1m4s
Live-auditen 2026-09-28 fann tre bryt: filter+sök försvann vid 'Tillbaka' från
detaljsida, flikval saknade URL-state, brödsmulan ledde till startsida.

- /katalog: q och filter kanoniskt i searchParams (debounce 250 ms på skrivtick,
  router.replace scroll:false) — Tillbaka återställer exakt vy, delad länk öppnar
  samma filtrering. Suspense-wrapper krävs av useSearchParams vid prerender.
- /katalog/[id]: flikval i ?tab= (overview = parametern frånvarande — kanonisk
  URL), piltangentsnavigering oförändrad.
- Brödsmulan länkar /katalog (inte /#katalog → startsida).

Verifierat: blocking-gate typecheck med SAMMA 2 förbefintliga fel som main
(noll nya), typecheck:app noll katalog-fel.
2026-09-28 15:54:11 +02:00
adminandClaude Sonnet 4.6 240a42b2b7 fix: reveal animations for standalone pages on direct load
RouteReveal layout component applies in-view on every route change.
useReveal hook falls back to immediate rAF when element is already visible.
bestall/page.tsx: added missing useReveal ref.
katalog/[id]/page.tsx: DatasetView uses useReveal directly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 19:20:10 +02:00
adminandClaude Sonnet 4.6 369bc11281 feat(a11y): keyboard navigation for ARIA tab panels (ArrowLeft/Right/Home/End)
Both validera and katalog/[id] tab lists now follow the ARIA Authoring
Practices Guide tabs pattern: arrow keys move focus + activate adjacent
tabs, Home/End jump to first/last tab.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 18:18:48 +02:00
adminandClaude Sonnet 4.6 c95cc44a11 feat(a11y): add ARIA tablist/tab/tabpanel roles + i18n error page
- validera: role=tablist + role=tab + aria-selected + aria-controls/id
  on tab buttons; role=tabpanel + id + aria-labelledby on content div
- katalog/[id]: same ARIA tab pattern; replaced incorrect aria-current=page
  on tab buttons with role=tab + aria-selected
- error.tsx: i18n all hardcoded English strings via useT()

All three changes pass tsc 0.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 18:17:19 +02:00
adminandClaude Sonnet 4.6 7baa0f847a fix: aria-pressed on filter buttons, aria-label on search inputs
Improves screen-reader and keyboard nav UX: filter pill buttons now
announce pressed state, catalog search input has an accessible label,
filter button group has role="group" with label.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 17:48:31 +02:00
adminandClaude Sonnet 4.6 7d9cfdb597 fix: add id="main-content" to all page main elements for skip link
Ensures the keyboard skip-to-content link (added in layout.tsx) has a
valid anchor target on every page in the app.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 17:46:37 +02:00
adminandClaude Sonnet 4.6 df63d3a6dd fix: production audit — sync catalog IDs, wire Stripe, mount Toaster, add 404
- Catalog IDs: synced /api/catalog and /katalog/[id] to consistent English slugs
  (nordic-companies, tech-decisionmakers, vehicles-fleet, financial-series,
  buying-signals, sanctions-pep); View links from catalog page were all broken
- Added 2 missing catalog detail entries: buying-signals, sanctions-pep
- featured-products-section: link cards to /katalog/{id} instead of hardcoded demo URL
- hero-section: 'See a dataset' now links to /katalog/nordic-companies
- layout.tsx: mount <Toaster> (sonner was installed but never mounted)
- bestall/forskott: pay() tries Stripe checkout first, falls back to demo mode
- api/payments/[order_id]/deposit: Stripe Checkout Session creation (501 if unconfigured)
- app/not-found.tsx: custom 404 page matching mono design system
- philosophy-section: fix TS type error on PRINCIPLES array

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 17:38:31 +02:00
adminandClaude Sonnet 4.6 a928ae4e98 fix(i18n): localize /katalog filters, /katalog/[id] full rewrite, /portal/subscriptions
Three missed files from the i18n pass:
- /katalog: FILTERS had hardcoded Swedish labels (Alla/Bolag/Beslutsfattare/Fordon/Finansiellt)
- /katalog/[id]: entire page was Swedish — CATALOG data, TABS (with variable-shadowing bug
  where map((t) shadowed useT()), SectionHead, all 5 tab bodies, order rail, PROVENANCE_LEGEND
  rendered as raw Loc object. Converted to stable TabKey enum + all Loc.
- /portal/subscriptions: useT imported but never called; title/labels/options all Swedish.

tsc 0 + build green.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 16:31:07 +02:00
adminandClaude Opus 4.8 125b2e1bbe feat(i18n): localize data-layer labels (lib/data + lib/services) — English base complete
All display labels in MARKETS/ENTITY_TYPES/FIELDS/ENRICHMENTS/FREQUENCIES/DELIVERY_FORMATS + SERVICES/FLOW_LABEL are now {en,sv} with stable IDs/values (pricing logic, EntityType/Frequency unions, config keys unchanged). Added entityLabel()/FREQUENCY_LABEL/FORMAT_LABEL. Updated all render sites (configurator, tjanster, beskriv, katalog/[id]) to resolve via useT(). Also fixed 2 pre-existing tsc nits (auth BufferSource cast, orders-store sql.json param type). tsc 0, build green. 0pt is now fully English-by-default with SV toggle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 11:47:42 +02:00
adminandClaude Opus 4.8 0ab1818722 feat(i18n): English-base + Swedish toggle (locale provider, switcher, ~20 surfaces converted)
Locale provider (en default, persisted) + EN/SV switcher in header; converted header + landing sections + catalog/sources/order-flow/most-of-portal to useT({en,sv}). Fixed two partial conversions (forskott TRUST object/tuple map; kallor undefined ALL + raw object renders). tsc 0, build green. Remaining: admin/* + a few partials.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 02:39:57 +02:00
adminandClaude Opus 4.8 56e117a6d6 feat: buy everything + monitor everything in UI (client order ledger)
lib/order-client: createOrder records each order to a localStorage ledger; portal dashboard + admin queue merge it with /api/orders; order tracker falls back to it. Wired all buy paths: configurator, beskriv (custom services), and one-click catalog Beställ. Makes buy->monitor work in the browser now; becomes server-truth when Postgres is connected. tsc 0, build green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 02:10:12 +02:00
adminandClaude Opus 4.8 318e9379c8 feat: catalog index page + wire nav to /katalog /kallor /portal + real order journey
Configurator->POST /api/orders, deposit fetches order + PATCH in_production, header nav reaches the new pages (no orphans). New pages: katalog, katalog/[id], kallor, portal, shared states. tsc 0, build green (13 routes).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 19:03:06 +02:00