@snokam/ui 6.4.0 → 7.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,33 @@
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
+ # [7.0.0](https://github.com/snokam/components/compare/@snokam/ui@6.4.1...@snokam/ui@7.0.0) (2026-10-31)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **ui:** tighter page header spacing on mobile ([6404202](https://github.com/snokam/components/commit/640420241906d5e50236c6e8c9e906b2de266d96))
11
+
12
+ - feat(ui)!: compact page header, review fixes for shared packages ([2be4532](https://github.com/snokam/components/commit/2be453241302b8c5d275a8aeeaadfd4aee106f88))
13
+
14
+ ### Features
15
+
16
+ - **my-page:** oversikt sections, faster hero, page header on mine oppgaver ([a961284](https://github.com/snokam/components/commit/a9612847a22d8ac961c2f64d1750df914239ca50))
17
+ - **ui:** expandable boards with olaf, standard page setup on salg/cv ([f5c2f23](https://github.com/snokam/components/commit/f5c2f23f016bf5982f44dd70ea7362f89cdcdc3a))
18
+ - **ui:** shared compact page header across apps ([cde9265](https://github.com/snokam/components/commit/cde926585f87b8d6fbc24d4b818bde136bf81e51))
19
+
20
+ ### BREAKING CHANGES
21
+
22
+ - PageHeader no longer takes tone or transitions; it is
23
+ always the compact dark header with a wave and optional breadcrumbs.
24
+
25
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
26
+
27
+ ## [6.4.1](https://github.com/snokam/components/compare/@snokam/ui@6.4.0...@snokam/ui@6.4.1) (2026-10-23)
28
+
29
+ ### Bug Fixes
30
+
31
+ - **ui:** let page columns shrink so shell pages scroll again ([#3021](https://github.com/snokam/components/issues/3021)) ([5519393](https://github.com/snokam/components/commit/55193937a7e83c11fc0083f720c6bc9ed10fe48c))
32
+
6
33
  # [6.4.0](https://github.com/snokam/components/compare/@snokam/ui@6.3.0...@snokam/ui@6.4.0) (2026-10-22)
7
34
 
8
35
  ### Features
@@ -0,0 +1,10 @@
1
+ export { useFullscreen } from "./useFullscreen";
2
+ export { FullscreenArea } from "./styles";
3
+ interface Props {
4
+ active: boolean;
5
+ onToggle: () => void;
6
+ openLabel: string;
7
+ closeLabel: string;
8
+ }
9
+ export declare function FullscreenButton({ active, onToggle, openLabel, closeLabel, }: Props): import("react").JSX.Element;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/fullscreen/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,UAAU,KAAK;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,GACX,EAAE,KAAK,+BAkBP"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { CloseFullscreen, OpenInFull } from "@mui/icons-material";
4
+ import { IconButton } from "@mui/material";
5
+ import { Tooltip } from "../tooltip";
6
+ export { useFullscreen } from "./useFullscreen";
7
+ export { FullscreenArea } from "./styles";
8
+ export function FullscreenButton({ active, onToggle, openLabel, closeLabel, }) {
9
+ const label = active ? closeLabel : openLabel;
10
+ return (_jsx(Tooltip, { title: label, children: _jsx(IconButton, { size: "small", "aria-label": label, "aria-expanded": active, onClick: onToggle, children: active ? (_jsx(CloseFullscreen, { fontSize: "small" })) : (_jsx(OpenInFull, { fontSize: "small" })) }) }));
11
+ }
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/fullscreen/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS1C,MAAM,UAAU,gBAAgB,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,GACJ;IACN,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9C,OAAO,CACL,KAAC,OAAO,IAAC,KAAK,EAAE,KAAK,YACnB,KAAC,UAAU,IACT,IAAI,EAAC,OAAO,gBACA,KAAK,mBACF,MAAM,EACrB,OAAO,EAAE,QAAQ,YAEhB,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,eAAe,IAAC,QAAQ,EAAC,OAAO,GAAG,CACrC,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,QAAQ,EAAC,OAAO,GAAG,CAChC,GACU,GACL,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const FullscreenArea: import("@emotion/styled").StyledComponent<{
2
+ theme?: import("@emotion/react").Theme;
3
+ as?: React.ElementType;
4
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
5
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/components/fullscreen/styles.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc;;;yGAiB1B,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import styled from "@emotion/styled";
3
+ export const FullscreenArea = styled.div `
4
+ min-width: 0;
5
+
6
+ &[data-expanded="true"] {
7
+ position: fixed;
8
+ top: calc(
9
+ var(--impersonation-banner-height, 0px) + var(--admin-topbar-height, 64px)
10
+ );
11
+ right: var(--olaf-panel-width, 0px);
12
+ bottom: 0;
13
+ left: 0;
14
+ z-index: 1250;
15
+ overflow: auto;
16
+ padding: 1.5rem 2rem;
17
+ background: var(--admin-shell-bg, var(--o-band-light-bg));
18
+ color: var(--o-text);
19
+ }
20
+ `;
21
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/components/fullscreen/styles.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;CAiBvC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function useFullscreen<T extends HTMLElement>(): {
2
+ ref: import("react").RefObject<T>;
3
+ active: boolean;
4
+ toggle: () => void;
5
+ };
6
+ //# sourceMappingURL=useFullscreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFullscreen.d.ts","sourceRoot":"","sources":["../../../src/components/fullscreen/useFullscreen.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW;;;;EAqBlD"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ export function useFullscreen() {
4
+ const ref = useRef(null);
5
+ const [active, setActive] = useState(false);
6
+ useEffect(() => {
7
+ if (ref.current)
8
+ ref.current.dataset.expanded = String(active);
9
+ if (!active)
10
+ return;
11
+ document.documentElement.setAttribute("data-board-expanded", "");
12
+ const onKey = (event) => {
13
+ if (event.key === "Escape" && !event.defaultPrevented)
14
+ setActive(false);
15
+ };
16
+ document.addEventListener("keydown", onKey);
17
+ return () => {
18
+ document.removeEventListener("keydown", onKey);
19
+ document.documentElement.removeAttribute("data-board-expanded");
20
+ };
21
+ }, [active]);
22
+ const toggle = useCallback(() => setActive((current) => !current), []);
23
+ return { ref, active, toggle };
24
+ }
25
+ //# sourceMappingURL=useFullscreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFullscreen.js","sourceRoot":"","sources":["../../../src/components/fullscreen/useFullscreen.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,CAAC,OAAO;YAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,CAAC,KAAoB,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEvE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC"}
@@ -1,14 +1,11 @@
1
1
  import { ReactNode } from "react";
2
- import { LayoutTheme, Transitions } from "./types";
3
2
  interface PageHeaderProps {
4
3
  title: string;
5
- subtitle?: string;
6
- tone?: LayoutTheme;
7
- transitions?: Transitions;
8
4
  breadcrumbs?: ReactNode;
5
+ subtitle?: ReactNode;
9
6
  actions?: ReactNode;
10
7
  children?: ReactNode;
11
8
  }
12
- export declare const PageHeader: ({ title, subtitle, tone, transitions, breadcrumbs, actions, children, }: PageHeaderProps) => import("react").JSX.Element;
9
+ export declare const PageHeader: ({ title, breadcrumbs, subtitle, actions, children, }: PageHeaderProps) => import("react").JSX.Element;
13
10
  export {};
14
11
  //# sourceMappingURL=PageHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,EAAE,WAAW,EAAW,WAAW,EAAkB,MAAM,SAAS,CAAC;AAO5E,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,GAAI,yEAQxB,eAAe,gCAyBjB,CAAC"}
1
+ {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAalC,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,GAAI,sDAMxB,eAAe,gCAqBjB,CAAC"}
@@ -1,17 +1,8 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import Container from "./container";
3
+ import { ThemeScope } from "@snokam/ui/theme";
4
4
  import Styled from "./styled";
5
- import { LayoutTheme, Padding, TransitionType } from "./types";
6
- import { FlushContent, Subtitle, TitleRow } from "./PageHeader.styled";
7
- const defaultTransitions = {
8
- bottom: { type: TransitionType.Wave, flipX: true },
9
- };
10
- export const PageHeader = ({ title, subtitle, tone = LayoutTheme.Dark, transitions = defaultTransitions, breadcrumbs, actions, children, }) => {
11
- const Content = transitions.bottom ? Styled.Content : FlushContent;
12
- return (_jsx(Container, { theme: tone, transitions: transitions, children: _jsx(Content, { children: _jsxs(Styled.Section, { stretchItems: true, padding: {
13
- top: Padding.Large,
14
- bottom: transitions.bottom ? Padding.Large : Padding.None,
15
- }, children: [breadcrumbs, _jsxs(TitleRow, { children: [_jsxs("div", { children: [_jsx("h1", { children: title }), subtitle && _jsx(Subtitle, { children: subtitle })] }), actions] }), children] }) }) }));
16
- };
5
+ import { Padding, TransitionType } from "./types";
6
+ import { HeaderActions, HeaderBand, HeaderContent, HeaderRow, HeaderText, Subtitle, } from "./PageHeader.styled";
7
+ export const PageHeader = ({ title, breadcrumbs, subtitle, actions, children, }) => (_jsx(HeaderBand, { transitions: { bottom: { type: TransitionType.Wave, flipX: true } }, children: _jsx(HeaderContent, { children: _jsx(Styled.Section, { stretchItems: true, padding: { top: Padding.None, bottom: Padding.None }, children: _jsxs(ThemeScope, { theme: "dark", as: HeaderRow, children: [_jsxs(HeaderText, { children: [breadcrumbs, _jsx("h1", { children: title }), subtitle && _jsx(Subtitle, { children: subtitle }), children] }), actions && _jsx(HeaderActions, { children: actions })] }) }) }) }));
17
8
  //# sourceMappingURL=PageHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.js","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,OAAO,EAAe,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,kBAAkB,GAAgB;IACtC,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;CACnD,CAAC;AAYF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,IAAI,GAAG,WAAW,CAAC,IAAI,EACvB,WAAW,GAAG,kBAAkB,EAChC,WAAW,EACX,OAAO,EACP,QAAQ,GACQ,EAAE,EAAE;IACpB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;IACnE,OAAO,CACL,KAAC,SAAS,IAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,YAC9C,KAAC,OAAO,cACN,MAAC,MAAM,CAAC,OAAO,IACb,YAAY,QACZ,OAAO,EAAE;oBACP,GAAG,EAAE,OAAO,CAAC,KAAK;oBAClB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;iBAC1D,aAEA,WAAW,EACZ,MAAC,QAAQ,eACP,0BACE,uBAAK,KAAK,GAAM,EACf,QAAQ,IAAI,KAAC,QAAQ,cAAE,QAAQ,GAAY,IACxC,EACL,OAAO,IACC,EACV,QAAQ,IACM,GACT,GACA,CACb,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"PageHeader.js","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAU7B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,GACQ,EAAE,EAAE,CAAC,CACrB,KAAC,UAAU,IACT,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,YAEnE,KAAC,aAAa,cACZ,KAAC,MAAM,CAAC,OAAO,IACb,YAAY,QACZ,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,YAEpD,MAAC,UAAU,IAAC,KAAK,EAAC,MAAM,EAAC,EAAE,EAAE,SAAS,aACpC,MAAC,UAAU,eACR,WAAW,EACZ,uBAAK,KAAK,GAAM,EACf,QAAQ,IAAI,KAAC,QAAQ,cAAE,QAAQ,GAAY,EAC3C,QAAQ,IACE,EACZ,OAAO,IAAI,KAAC,aAAa,cAAE,OAAO,GAAiB,IACzC,GACE,GACH,GACL,CACd,CAAC"}
@@ -1,10 +1,21 @@
1
- export declare const FlushContent: import("@emotion/styled").StyledComponent<{
1
+ export declare const HeaderBand: import("@emotion/styled").StyledComponent<import("./types").ContainerProps & {
2
+ theme?: import("@emotion/react").Theme;
3
+ }, {}, {}>;
4
+ export declare const HeaderContent: import("@emotion/styled").StyledComponent<{
2
5
  theme?: import("@emotion/react").Theme;
3
6
  as?: React.ElementType;
4
7
  } & import("./types").ContentProps & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
5
8
  theme?: import("@emotion/react").Theme;
6
9
  }, {}, {}>;
7
- export declare const TitleRow: import("@emotion/styled").StyledComponent<{
10
+ export declare const HeaderRow: import("@emotion/styled").StyledComponent<{
11
+ theme?: import("@emotion/react").Theme;
12
+ as?: React.ElementType;
13
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLElement>, HTMLElement>, {}>;
14
+ export declare const HeaderText: import("@emotion/styled").StyledComponent<{
15
+ theme?: import("@emotion/react").Theme;
16
+ as?: React.ElementType;
17
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
18
+ export declare const HeaderActions: import("@emotion/styled").StyledComponent<{
8
19
  theme?: import("@emotion/react").Theme;
9
20
  as?: React.ElementType;
10
21
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.styled.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.styled.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;UAMxB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;yGAMpB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;qHAMpB,CAAC"}
1
+ {"version":3,"file":"PageHeader.styled.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.styled.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU;;UAMtB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;UAQzB,CAAC;AAEF,eAAO,MAAM,SAAS;;;mGAcrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;yGAsBtB,CAAC;AAEF,eAAO,MAAM,aAAa;;;yGAKzB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;qHAMpB,CAAC"}
@@ -1,22 +1,72 @@
1
1
  "use client";
2
2
  import styled from "@emotion/styled";
3
+ import Container from "./container";
3
4
  import Styled from "./styled";
4
- export const FlushContent = styled(Styled.Content) `
5
+ import { WAVE_OVERLAP_PX } from "./types";
6
+ const TEXT_TO_WAVE = 24;
7
+ const BELOW_WAVE = WAVE_OVERLAP_PX / 2;
8
+ export const HeaderBand = styled(Container) `
9
+ margin-bottom: ${BELOW_WAVE}px;
10
+
11
+ @media (max-width: 600px) {
12
+ margin-bottom: 0;
13
+ }
14
+ `;
15
+ export const HeaderContent = styled(Styled.Content) `
16
+ padding-top: 0;
5
17
  padding-bottom: 0;
6
18
 
7
19
  @media only screen and (min-width: 576px) {
20
+ padding-top: 0;
8
21
  padding-bottom: 0;
9
22
  }
10
23
  `;
11
- export const TitleRow = styled.div `
24
+ export const HeaderRow = styled.header `
25
+ position: relative;
26
+ z-index: 1;
12
27
  display: flex;
13
28
  flex-wrap: wrap;
14
- align-items: flex-start;
29
+ align-items: flex-end;
15
30
  justify-content: space-between;
16
- gap: 1rem;
31
+ gap: 1rem 1.5rem;
32
+ width: 100%;
33
+ padding: 3rem 0 ${WAVE_OVERLAP_PX + TEXT_TO_WAVE}px;
34
+
35
+ @media (max-width: 600px) {
36
+ padding: 1.25rem 0 ${WAVE_OVERLAP_PX / 2}px;
37
+ }
38
+ `;
39
+ export const HeaderText = styled.div `
40
+ flex: 1 1 24rem;
41
+ display: flex;
42
+ flex-direction: column;
43
+ gap: 0.35rem;
44
+ min-width: 0;
45
+
46
+ & > nav {
47
+ margin-bottom: 0.25rem;
48
+ }
49
+
50
+ & > nav a {
51
+ font-size: 0.95rem;
52
+ }
53
+
54
+ & > p + * {
55
+ margin-top: 1.25rem;
56
+ }
57
+
58
+ & > h1 {
59
+ margin: 0;
60
+ }
61
+ `;
62
+ export const HeaderActions = styled.div `
63
+ display: flex;
64
+ flex-wrap: wrap;
65
+ align-items: center;
66
+ gap: 0.75rem;
17
67
  `;
18
68
  export const Subtitle = styled.p `
19
- margin: 8px 0 0;
69
+ margin: 0;
20
70
  max-width: 60ch;
21
71
  color: inherit;
22
72
  opacity: 0.85;
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.styled.js","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.styled.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;;;;;;CAMjD,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;CAMjC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAA;;;;;;CAM/B,CAAC"}
1
+ {"version":3,"file":"PageHeader.styled.js","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.styled.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,UAAU,GAAG,eAAe,GAAG,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;mBACxB,UAAU;;;;;CAK5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;;;;;;;;CAQlD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;;oBASlB,eAAe,GAAG,YAAY;;;yBAGzB,eAAe,GAAG,CAAC;;CAE3C,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;CAsBnC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAKtC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAA;;;;;;CAM/B,CAAC"}
@@ -74,7 +74,7 @@ export const pageColumn = css `
74
74
 
75
75
  > :last-child:not(footer),
76
76
  > :has(+ footer) {
77
- flex: 1 0 auto;
77
+ flex-grow: 1;
78
78
  }
79
79
  `;
80
80
  const Page = styled.div `
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": "6.4.0",
4
+ "version": "7.0.0",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
7
7
  "files": [
@@ -176,6 +176,10 @@
176
176
  "types": "./dist/components/feedback/index.d.ts",
177
177
  "default": "./dist/components/feedback/index.js"
178
178
  },
179
+ "./fullscreen": {
180
+ "types": "./dist/components/fullscreen/index.d.ts",
181
+ "default": "./dist/components/fullscreen/index.js"
182
+ },
179
183
  "./form": {
180
184
  "types": "./dist/components/form/index.d.ts",
181
185
  "default": "./dist/components/form/index.js"