@snokam/ui 5.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,76 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [6.0.0](https://github.com/snokam/components/compare/@snokam/ui@4.0.3...@snokam/ui@6.0.0) (2026-10-14)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **ui:** link the root breadcrumb to the app root ([#2914](https://github.com/snokam/components/issues/2914)) ([24eed10](https://github.com/snokam/components/commit/24eed10d3f7a634f6db815dc6264d948b3d0afc1))
11
+
12
+ ### Features
13
+
14
+ - **chatbot:** make the Olaf panel part of Min side, with real DM Sans and CMS-only copy ([#2915](https://github.com/snokam/components/issues/2915)) ([2517c9c](https://github.com/snokam/components/commit/2517c9c4466f9ece49590c35196286e65abbe3f9)), closes [#071d41](https://github.com/snokam/components/issues/071d41)
15
+ - **my-page-web:** Min side improvements from the page review (WIP) ([#2885](https://github.com/snokam/components/issues/2885)) ([d96a1e5](https://github.com/snokam/components/commit/d96a1e537d76f12a8e53d9d6885728e1b7a67586))
16
+ - **my-page-web:** shared page headers, server-side titles and /kontor buttons ([#2912](https://github.com/snokam/components/issues/2912)) ([9689f04](https://github.com/snokam/components/commit/9689f049bfa6e8d05a409c1e1fbc719d0a68ef86))
17
+ - per-company branding (logo, dark logo, icon) ([#2907](https://github.com/snokam/components/issues/2907)) ([dc32583](https://github.com/snokam/components/commit/dc325832803c88158937f45fe5b9e1b64846a52d))
18
+
19
+ ### BREAKING CHANGES
20
+
21
+ - SimpleHeaderBase and FooterBase take `logo` as a ReactNode;
22
+ the HeaderLogo and FooterLogo types are removed.
23
+
24
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25
+ Claude-Session: https://claude.ai/code/session_01Nv57F4rwzYRkuUVFdd2wXA
26
+
27
+ - feat(platform-web): company branding in /manage, at login and in the shell
28
+
29
+ /manage/innstillinger gets a Merkevare section: the logo for light
30
+ backgrounds, the logo for dark backgrounds and the square icon, each with a
31
+ preview on its own background, upload (react-hook-form + zod: type and 2 MB
32
+ checked before sending) and remove. Server error codes map to CMS copy.
33
+ The central login shows the company's logo above "Logg inn hos …", from
34
+ login-config. The /manage shell shows the managed business's logo linking to
35
+ its front page; /admin and an operator without a business show the platform
36
+ business. The public snosky.no chrome keeps the Snøsky logo from the platform
37
+ CMS, through the same BusinessLogo.
38
+
39
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40
+ Claude-Session: https://claude.ai/code/session_01Nv57F4rwzYRkuUVFdd2wXA
41
+
42
+ - fix(my-page-web): drop leftover Snøkam favicons
43
+
44
+ The unused pages-router meta component and finance-web's public/favicon.ico
45
+ served Snøkam's icon to every company; favicons now come from the
46
+ company's uploaded icon.
47
+
48
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49
+ Claude-Session: https://claude.ai/code/session_01Nv57F4rwzYRkuUVFdd2wXA
50
+
51
+ - fix(handbook-web): no Snøkam share image, no raw-URL fallback in branding metadata
52
+
53
+ The handbook's root metadata no longer hardcodes the Snøkam icon as the
54
+ share image, so the company's share image from makeTenantMetadata applies.
55
+ The favicon and share helpers drop their raw-URL fallback: a transform that
56
+ yields nothing yields no image, never an untransformed (possibly SVG) URL.
57
+
58
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
59
+ Claude-Session: https://claude.ai/code/session_01Nv57F4rwzYRkuUVFdd2wXA
60
+
61
+ - fix(ui): show the light logo inverted on dark when no dark logo is uploaded
62
+
63
+ Without a dark logo, a dark background shows the light logo turned white
64
+ (brightness(0) invert(1)) instead of the wordmark. The Merkevare previews
65
+ use static brand tokens, and upload errors are read by parsing the JSON
66
+ body rather than stripping quotes.
67
+
68
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
69
+ Claude-Session: https://claude.ai/code/session_01Nv57F4rwzYRkuUVFdd2wXA
70
+
71
+ - chore(clients): regenerate platform-function clients for branding
72
+
73
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
74
+ Claude-Session: https://claude.ai/code/session_01Nv57F4rwzYRkuUVFdd2wXA
75
+
6
76
  # [5.0.0](https://github.com/snokam/components/compare/@snokam/ui@4.0.3...@snokam/ui@5.0.0) (2026-10-14)
7
77
 
8
78
  ### Features
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/index.tsx"],"names":[],"mappings":"AAQA,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,UAAU,KAAK;IACb,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,EAAE,CAAC;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,GAAI,8BAIzB,KAAK,gCAwBP,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/index.tsx"],"names":[],"mappings":"AAQA,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,UAAU,KAAK;IACb,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,EAAE,CAAC;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,GAAI,8BAIzB,KAAK,gCA0BP,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -12,7 +12,8 @@ export var BreadcrumbsTheme;
12
12
  })(BreadcrumbsTheme || (BreadcrumbsTheme = {}));
13
13
  export const Breadcrumbs = ({ crumbs = [], basePath = "", theme = BreadcrumbsTheme.Dark, }) => {
14
14
  const themeStyles = theme === BreadcrumbsTheme.Light ? styles.light : styles.dark;
15
- return (_jsxs(MuiBreadcrumbs, { "aria-label": "breadcrumb", separator: _jsx(NavigateNext, { fontSize: "small" }), sx: { ...styles.Breadcrumbs, ...themeStyles.Breadcrumbs }, children: [crumbs.map(({ href, name, icon }) => (_jsxs(MuiLink, { href: `${basePath}${href}`, component: Link, sx: { ...styles.Link, ...themeStyles.Link }, children: [icon && icon, name] }, href))), _jsx(TrailingCrumb, {})] }));
15
+ const resolveHref = (href) => href === "/" ? href : `${basePath}${href}`;
16
+ return (_jsxs(MuiBreadcrumbs, { "aria-label": "breadcrumb", separator: _jsx(NavigateNext, { fontSize: "small" }), sx: { ...styles.Breadcrumbs, ...themeStyles.Breadcrumbs }, children: [crumbs.map(({ href, name, icon }) => (_jsxs(MuiLink, { href: resolveHref(href), component: Link, sx: { ...styles.Link, ...themeStyles.Link }, children: [icon && icon, name] }, href))), _jsx(TrailingCrumb, {})] }));
16
17
  };
17
18
  export default Breadcrumbs;
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/breadcrumbs/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,iCAAa,CAAA;AACf,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAQD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,MAAM,GAAG,EAAE,EACX,QAAQ,GAAG,EAAE,EACb,KAAK,GAAG,gBAAgB,CAAC,IAAI,GACvB,EAAE,EAAE;IACV,MAAM,WAAW,GACf,KAAK,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAEhE,OAAO,CACL,MAAC,cAAc,kBACF,YAAY,EACvB,SAAS,EAAE,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,GAAG,EAC5C,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,aAExD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACpC,MAAC,OAAO,IAEN,IAAI,EAAE,GAAG,QAAQ,GAAG,IAAI,EAAE,EAC1B,SAAS,EAAE,IAAI,EACf,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,aAE1C,IAAI,IAAI,IAAI,EACZ,IAAI,KANA,IAAI,CAOD,CACX,CAAC,EACF,KAAC,aAAa,KAAG,IACF,CAClB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/breadcrumbs/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,iCAAa,CAAA;AACf,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAQD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,MAAM,GAAG,EAAE,EACX,QAAQ,GAAG,EAAE,EACb,KAAK,GAAG,gBAAgB,CAAC,IAAI,GACvB,EAAE,EAAE;IACV,MAAM,WAAW,GACf,KAAK,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAChE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CACnC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC;IAE7C,OAAO,CACL,MAAC,cAAc,kBACF,YAAY,EACvB,SAAS,EAAE,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,GAAG,EAC5C,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,aAExD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACpC,MAAC,OAAO,IAEN,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,EACvB,SAAS,EAAE,IAAI,EACf,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,aAE1C,IAAI,IAAI,IAAI,EACZ,IAAI,KANA,IAAI,CAOD,CACX,CAAC,EACF,KAAC,aAAa,KAAG,IACF,CAClB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -106,6 +106,41 @@ main {
106
106
  src: url("https://ressurser.snokam.no/fonts/dm-sans/DMSans-Bold.ttf");
107
107
  }
108
108
 
109
+ @font-face {
110
+ font-family: "DM Sans";
111
+ font-weight: 300;
112
+ font-display: swap;
113
+ src: url("https://ressurser.snokam.no/fonts/dm-sans/DMSans-Light.ttf");
114
+ }
115
+
116
+ @font-face {
117
+ font-family: "DM Sans";
118
+ font-weight: 400;
119
+ font-display: swap;
120
+ src: url("https://ressurser.snokam.no/fonts/dm-sans/DMSans-Regular.ttf");
121
+ }
122
+
123
+ @font-face {
124
+ font-family: "DM Sans";
125
+ font-weight: 500;
126
+ font-display: swap;
127
+ src: url("https://ressurser.snokam.no/fonts/dm-sans/DMSans-Medium.ttf");
128
+ }
129
+
130
+ @font-face {
131
+ font-family: "DM Sans";
132
+ font-weight: 600;
133
+ font-display: swap;
134
+ src: url("https://ressurser.snokam.no/fonts/dm-sans/DMSans-SemiBold.ttf");
135
+ }
136
+
137
+ @font-face {
138
+ font-family: "DM Sans";
139
+ font-weight: 700;
140
+ font-display: swap;
141
+ src: url("https://ressurser.snokam.no/fonts/dm-sans/DMSans-Bold.ttf");
142
+ }
143
+
109
144
  /* Variables */
110
145
 
111
146
  :root {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@snokam/ui",
3
3
  "description": "Snøkam UI library — the single MUI seam. Apps import from here, never from @mui directly.",
4
- "version": "5.0.0",
4
+ "version": "6.0.0",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
7
7
  "files": [