@snokam/ui 6.2.2 → 6.3.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,12 @@
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.3.0](https://github.com/snokam/components/compare/@snokam/ui@6.2.2...@snokam/ui@6.3.0) (2026-10-22)
7
+
8
+ ### Features
9
+
10
+ - **ui:** one page standard (AppRoot + Layout.Page) with a lint guardrail ([#3014](https://github.com/snokam/components/issues/3014)) ([735198b](https://github.com/snokam/components/commit/735198b4d5b73982d68333d887426c8fbdc803c5))
11
+
6
12
  ## [6.2.2](https://github.com/snokam/components/compare/@snokam/ui@6.2.1...@snokam/ui@6.2.2) (2026-10-22)
7
13
 
8
14
  ### Bug Fixes
@@ -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,gCAsBjB,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;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"}
@@ -3,12 +3,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import Container from "./container";
4
4
  import Styled from "./styled";
5
5
  import { LayoutTheme, Padding, TransitionType } from "./types";
6
- import { Subtitle, TitleRow } from "./PageHeader.styled";
6
+ import { FlushContent, Subtitle, TitleRow } from "./PageHeader.styled";
7
7
  const defaultTransitions = {
8
8
  bottom: { type: TransitionType.Wave, flipX: true },
9
9
  };
10
- export const PageHeader = ({ title, subtitle, tone = LayoutTheme.Dark, transitions = defaultTransitions, breadcrumbs, actions, children, }) => (_jsx(Container, { theme: tone, transitions: transitions, children: _jsx(Styled.Content, { children: _jsxs(Styled.Section, { stretchItems: true, padding: {
11
- top: Padding.Large,
12
- bottom: transitions.bottom ? Padding.Large : Padding.Small,
13
- }, children: [breadcrumbs, _jsxs(TitleRow, { children: [_jsxs("div", { children: [_jsx("h1", { children: title }), subtitle && _jsx(Subtitle, { children: subtitle })] }), actions] }), children] }) }) }));
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
+ };
14
17
  //# 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,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEzD,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,CAAC,CACrB,KAAC,SAAS,IAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,YAC9C,KAAC,MAAM,CAAC,OAAO,cACb,MAAC,MAAM,CAAC,OAAO,IACb,YAAY,QACZ,OAAO,EAAE;gBACP,GAAG,EAAE,OAAO,CAAC,KAAK;gBAClB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;aAC3D,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,GACF,GACP,CACb,CAAC"}
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,3 +1,9 @@
1
+ export declare const FlushContent: import("@emotion/styled").StyledComponent<{
2
+ theme?: import("@emotion/react").Theme;
3
+ as?: React.ElementType;
4
+ } & import("./types").ContentProps & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
5
+ theme?: import("@emotion/react").Theme;
6
+ }, {}, {}>;
1
7
  export declare const TitleRow: import("@emotion/styled").StyledComponent<{
2
8
  theme?: import("@emotion/react").Theme;
3
9
  as?: React.ElementType;
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.styled.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.styled.tsx"],"names":[],"mappings":"AAIA,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":"AAKA,eAAO,MAAM,YAAY;;;;;UAMxB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;yGAMpB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;qHAMpB,CAAC"}
@@ -1,5 +1,13 @@
1
1
  "use client";
2
2
  import styled from "@emotion/styled";
3
+ import Styled from "./styled";
4
+ export const FlushContent = styled(Styled.Content) `
5
+ padding-bottom: 0;
6
+
7
+ @media only screen and (min-width: 576px) {
8
+ padding-bottom: 0;
9
+ }
10
+ `;
3
11
  export const TitleRow = styled.div `
4
12
  display: flex;
5
13
  flex-wrap: wrap;
@@ -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;AAErC,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,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 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/container/styled.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;;;;;;eAG/C,WAAW;oBACN,eAAe;;;;;;;AAuC7B,wBAAuC"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/container/styled.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;;;;;;eAG/C,WAAW;oBACN,eAAe;;;;;;;AAkC7B,wBAAuC"}
@@ -11,11 +11,6 @@ const Container = styled.div `
11
11
  color: var(--container-fg);
12
12
  background-color: var(--container-bg);
13
13
 
14
- &:last-child:not(footer),
15
- &:has(+ footer) {
16
- flex-grow: 1;
17
- }
18
-
19
14
  ${({ $tone }) => $tone === LayoutTheme.Dark
20
15
  ? css `
21
16
  --container-fg: var(--color-light-blue);
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../../src/components/layout/container/styled.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,WAAW,EAAmB,MAAM,UAAU,CAAC;AAExD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAG1B;;;;;;;;;;;;;;IAcE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CACd,KAAK,KAAK,WAAW,CAAC,IAAI;IACxB,CAAC,CAAC,GAAG,CAAA;;;;;;;;SAQF;IACH,CAAC,CAAC,GAAG,CAAA;;;;;;;;SAQF;CACR,CAAC;AAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA,EAAE,CAAC;AAE9B,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../../src/components/layout/container/styled.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,WAAW,EAAmB,MAAM,UAAU,CAAC;AAExD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAG1B;;;;;;;;;IASE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CACd,KAAK,KAAK,WAAW,CAAC,IAAI;IACxB,CAAC,CAAC,GAAG,CAAA;;;;;;;;SAQF;IACH,CAAC,CAAC,GAAG,CAAA;;;;;;;;SAQF;CACR,CAAC;AAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA,EAAE,CAAC;AAE9B,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC"}
@@ -11,6 +11,18 @@ export declare const Page: import("@emotion/styled").StyledComponent<{
11
11
  theme?: import("@emotion/react").Theme;
12
12
  as?: React.ElementType;
13
13
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
14
+ export declare const App: import("@emotion/styled").StyledComponent<{
15
+ theme?: import("@emotion/react").Theme;
16
+ as?: React.ElementType;
17
+ } & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
18
+ theme?: import("@emotion/react").Theme;
19
+ }, {}, {}>;
20
+ export declare const AppRoot: import("@emotion/styled").StyledComponent<{
21
+ theme?: import("@emotion/react").Theme;
22
+ as?: React.ElementType;
23
+ } & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
24
+ theme?: import("@emotion/react").Theme;
25
+ }, {}, {}>;
14
26
  export declare enum Breakpoints {
15
27
  xs = 576,
16
28
  sm = 768,
@@ -32,6 +44,12 @@ declare const _default: {
32
44
  theme?: import("@emotion/react").Theme;
33
45
  as?: React.ElementType;
34
46
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
47
+ App: import("@emotion/styled").StyledComponent<{
48
+ theme?: import("@emotion/react").Theme;
49
+ as?: React.ElementType;
50
+ } & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
51
+ theme?: import("@emotion/react").Theme;
52
+ }, {}, {}>;
35
53
  };
36
54
  export default _default;
37
55
  export * from "./types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,eAAO,MAAM,OAAO;;;0IAAiB,CAAC;AACtC,eAAO,MAAM,OAAO;;;0IAAiB,CAAC;AACtC,eAAO,MAAM,IAAI;;;yGAAc,CAAC;AAEhC,oBAAY,WAAW;IACrB,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,OAAO;IACT,EAAE,OAAO;CACV;;;;;;;;;;;;;;;;AAED,wBAKE;AAEF,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,eAAO,MAAM,OAAO;;;0IAAiB,CAAC;AACtC,eAAO,MAAM,OAAO;;;0IAAiB,CAAC;AACtC,eAAO,MAAM,IAAI;;;yGAAc,CAAC;AAChC,eAAO,MAAM,GAAG;;;;;UAAa,CAAC;AAC9B,eAAO,MAAM,OAAO;;;;;UAAa,CAAC;AAElC,oBAAY,WAAW;IACrB,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,OAAO;IACT,EAAE,OAAO;CACV;;;;;;;;;;;;;;;;;;;;;;AAED,wBAME;AAEF,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -5,6 +5,8 @@ import Container from "./container";
5
5
  export const Section = Styled.Section;
6
6
  export const Content = Styled.Content;
7
7
  export const Page = Styled.Page;
8
+ export const App = Styled.App;
9
+ export const AppRoot = Styled.App;
8
10
  export var Breakpoints;
9
11
  (function (Breakpoints) {
10
12
  Breakpoints[Breakpoints["xs"] = 576] = "xs";
@@ -18,6 +20,7 @@ export default {
18
20
  Section,
19
21
  Content,
20
22
  Page,
23
+ App,
21
24
  };
22
25
  export * from "./types";
23
26
  export { PageHeader } from "./PageHeader";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/layout/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAEhC,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,2CAAQ,CAAA;IACR,2CAAQ,CAAA;IACR,2CAAQ,CAAA;IACR,4CAAS,CAAA;IACT,4CAAS,CAAA;AACX,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,eAAe;IACb,SAAS;IACT,OAAO;IACP,OAAO;IACP,IAAI;CACL,CAAC;AAEF,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/layout/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAChC,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC9B,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;AAElC,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,2CAAQ,CAAA;IACR,2CAAQ,CAAA;IACR,2CAAQ,CAAA;IACR,4CAAS,CAAA;IACT,4CAAS,CAAA;AACX,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,eAAe;IACb,SAAS;IACT,OAAO;IACP,OAAO;IACP,IAAI;IACJ,GAAG;CACJ,CAAC;AAEF,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -13,6 +13,12 @@ declare const _default: {
13
13
  theme?: import("@emotion/react").Theme;
14
14
  as?: React.ElementType;
15
15
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
16
+ App: import("@emotion/styled").StyledComponent<{
17
+ theme?: import("@emotion/react").Theme;
18
+ as?: React.ElementType;
19
+ } & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
20
+ theme?: import("@emotion/react").Theme;
21
+ }, {}, {}>;
16
22
  };
17
23
  export default _default;
18
24
  //# sourceMappingURL=styled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/components/layout/styled.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAW,YAAY,EAAS,MAAM,SAAS,CAAC;AA+ErE,eAAO,MAAM,UAAU,2CAQtB,CAAC;;;;;;;;;;;;;;;AASF,wBAA0C"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/components/layout/styled.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAW,YAAY,EAAS,MAAM,SAAS,CAAC;AA0ErE,eAAO,MAAM,UAAU,2CAQtB,CAAC;;;;;;;;;;;;;;;;;;;;;AAkBF,wBAA+C"}
@@ -68,11 +68,6 @@ const Content = styled.div `
68
68
  }}
69
69
  }
70
70
  `;
71
- // The one rule every page column uses: stack children and let the last band
72
- // stretch to the bottom, so short pages never show a strip of another colour
73
- // below it. A trailing footer keeps its height; the band before it grows.
74
- // Shells apply it to their scroll column; pages wrap their bands in Layout.Page.
75
- // Mirrored for the bare <main> element in styles/global.css.
76
71
  export const pageColumn = css `
77
72
  display: flex;
78
73
  flex-direction: column;
@@ -88,5 +83,13 @@ const Page = styled.div `
88
83
  width: 100%;
89
84
  min-width: 0;
90
85
  `;
91
- export default { Section, Content, Page };
86
+ // eslint-disable-next-line snokam/no-viewport-fill -- the app root owns the viewport height
87
+ const App = styled(Page) `
88
+ min-height: calc(100dvh - var(--impersonation-banner-height, 0px));
89
+
90
+ main {
91
+ ${pageColumn};
92
+ }
93
+ `;
94
+ export default { Section, Content, Page, App };
92
95
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../src/components/layout/styled.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAgB,OAAO,EAAgB,KAAK,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAc;;;;;;;;IAQpC,CAAC,EAAE,YAAY,GAAG,KAAK,EAAE,EAAE,EAAE,CAC7B,YAAY;IACV,CAAC,CAAC,GAAG,CAAA;;SAEF;IACH,CAAC,CAAC,GAAG,CAAA;;SAEF;;IAEL,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE;IAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/D,OAAO,GAAG,CAAA;uBACO,GAAG;0BACA,MAAM;OACzB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,GAAG,CAAA;iBACG,KAAK;KACjB,CAAC;AACJ,CAAC;CACF,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAc;;;;;;;;;;;MAWlC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACd,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK,CAAC,IAAI;YACb,OAAO,GAAG,CAAA;;WAET,CAAC;QACJ,KAAK,KAAK,CAAC,WAAW;YACpB,OAAO,GAAG,CAAA;;WAET,CAAC;QACJ,KAAK,KAAK,CAAC,MAAM;YACf,OAAO,GAAG,CAAA;;WAET,CAAC;QACJ,KAAK,KAAK,CAAC,MAAM,CAAC;QAClB;YACE,OAAO,GAAG,CAAA;;WAET,CAAC;IACN,CAAC;AACH,CAAC;;CAEJ,CAAC;AAEF,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,iFAAiF;AACjF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;;;CAQ5B,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;IACnB,UAAU;;;;CAIb,CAAC;AAEF,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../src/components/layout/styled.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAgB,OAAO,EAAgB,KAAK,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAc;;;;;;;;IAQpC,CAAC,EAAE,YAAY,GAAG,KAAK,EAAE,EAAE,EAAE,CAC7B,YAAY;IACV,CAAC,CAAC,GAAG,CAAA;;SAEF;IACH,CAAC,CAAC,GAAG,CAAA;;SAEF;;IAEL,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE;IAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/D,OAAO,GAAG,CAAA;uBACO,GAAG;0BACA,MAAM;OACzB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,GAAG,CAAA;iBACG,KAAK;KACjB,CAAC;AACJ,CAAC;CACF,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAc;;;;;;;;;;;MAWlC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACd,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK,CAAC,IAAI;YACb,OAAO,GAAG,CAAA;;WAET,CAAC;QACJ,KAAK,KAAK,CAAC,WAAW;YACpB,OAAO,GAAG,CAAA;;WAET,CAAC;QACJ,KAAK,KAAK,CAAC,MAAM;YACf,OAAO,GAAG,CAAA;;WAET,CAAC;QACJ,KAAK,KAAK,CAAC,MAAM,CAAC;QAClB;YACE,OAAO,GAAG,CAAA;;WAET,CAAC;IACN,CAAC;AACH,CAAC;;CAEJ,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;;;CAQ5B,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;IACnB,UAAU;;;;CAIb,CAAC;AAEF,4FAA4F;AAC5F,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;;;;MAIlB,UAAU;;CAEf,CAAC;AAEF,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC"}
@@ -1,7 +1,9 @@
1
1
  export declare const Shell: import("@emotion/styled").StyledComponent<{
2
2
  theme?: import("@emotion/react").Theme;
3
3
  as?: React.ElementType;
4
- }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
4
+ } & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
5
+ theme?: import("@emotion/react").Theme;
6
+ }, {}, {}>;
5
7
  export declare const Backdrop: import("@emotion/styled").StyledComponent<{
6
8
  theme?: import("@emotion/react").Theme;
7
9
  as?: React.ElementType;
@@ -1 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/components/system-page/styled.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,KAAK;;;yGAgBjB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;eAA2B,OAAO;yGAatD,CAAC;AAEF,eAAO,MAAM,IAAI;;;mGAShB,CAAC;AAEF,eAAO,MAAM,OAAO;;;yGAYnB,CAAC;AAEF,eAAO,MAAM,KAAK;;;yGAWjB,CAAC;AAEF,eAAO,MAAM,SAAS;;;yGAgBrB,CAAC;AAEF,eAAO,MAAM,IAAI;;;qHAQhB,CAAC;AAEF,eAAO,MAAM,KAAK;;;iHAKjB,CAAC;AAEF,eAAO,MAAM,MAAM;;;mGAUlB,CAAC;AAEF,eAAO,MAAM,OAAO;;;qHAKnB,CAAC;AAEF,eAAO,MAAM,OAAO;;;yGAMnB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;UAmBvB,CAAC;AAwBF,eAAO,MAAM,WAAW;;;qHAEvB,CAAC;AAEF,eAAO,MAAM,SAAS;;;qHAKrB,CAAC;AAEF,eAAO,MAAM,aAAa;;;qHAoBzB,CAAC"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/components/system-page/styled.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,KAAK;;;;;UAcjB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;eAA2B,OAAO;yGAatD,CAAC;AAEF,eAAO,MAAM,IAAI;;;mGAShB,CAAC;AAEF,eAAO,MAAM,OAAO;;;yGAYnB,CAAC;AAEF,eAAO,MAAM,KAAK;;;yGAWjB,CAAC;AAEF,eAAO,MAAM,SAAS;;;yGAgBrB,CAAC;AAEF,eAAO,MAAM,IAAI;;;qHAQhB,CAAC;AAEF,eAAO,MAAM,KAAK;;;iHAKjB,CAAC;AAEF,eAAO,MAAM,MAAM;;;mGAUlB,CAAC;AAEF,eAAO,MAAM,OAAO;;;qHAKnB,CAAC;AAEF,eAAO,MAAM,OAAO;;;yGAMnB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;UAmBvB,CAAC;AAwBF,eAAO,MAAM,WAAW;;;qHAEvB,CAAC;AAEF,eAAO,MAAM,SAAS;;;qHAKrB,CAAC;AAEF,eAAO,MAAM,aAAa;;;qHAoBzB,CAAC"}
@@ -3,15 +3,13 @@ import styled from "@emotion/styled";
3
3
  import { css, keyframes } from "@emotion/react";
4
4
  import Link from "next/link";
5
5
  import { WAVE_OVERLAP_PX } from "../layout/types";
6
- import { pageColumn } from "../layout/styled";
6
+ import LayoutStyled from "../layout/styled";
7
7
  const rise = keyframes `
8
8
  from { opacity: 0; transform: translateY(12px); }
9
9
  to { opacity: 1; transform: translateY(0); }
10
10
  `;
11
- export const Shell = styled.div `
11
+ export const Shell = styled(LayoutStyled.Page) `
12
12
  position: relative;
13
- ${pageColumn};
14
- flex: 1 0 auto;
15
13
 
16
14
  @media (prefers-reduced-motion: reduce) {
17
15
  *,
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../src/components/system-page/styled.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,IAAI,GAAG,SAAS,CAAA;;;CAGrB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;IAE3B,UAAU;;;;;;;;;;;;;;CAcb,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAwB;;;;;;;oBAOtC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;CAM9E,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;;;;;CAS9B,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;eAOlB,IAAI;;;;;CAKlB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;eAMhB,IAAI;;;;;CAKlB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;CAgBlC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAA;;;;;;;;CAQ3B,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;CAK7B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;;;;;;CAUhC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAA;;;;;CAK9B,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;CAMhC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;;;;;;;;;;;;;;;;;;;CAmBtC,CAAC;AAEF,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;CAoBhB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAA;IACpC,KAAK;CACR,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAA;IAC7B,KAAK;;;;CAIR,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;CAoBzC,CAAC"}
1
+ {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../src/components/system-page/styled.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAE5C,MAAM,IAAI,GAAG,SAAS,CAAA;;;CAGrB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;;;;;;;;;;;;;;CAc7C,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAwB;;;;;;;oBAOtC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;CAM9E,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;;;;;CAS9B,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;eAOlB,IAAI;;;;;CAKlB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;eAMhB,IAAI;;;;;CAKlB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;CAgBlC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAA;;;;;;;;CAQ3B,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;CAK7B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;;;;;;CAUhC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAA;;;;;CAK9B,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;CAMhC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;;;;;;;;;;;;;;;;;;;CAmBtC,CAAC;AAEF,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;CAoBhB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAA;IACpC,KAAK;CACR,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAA;IAC7B,KAAK;;;;CAIR,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;CAoBzC,CAAC"}
@@ -47,31 +47,6 @@ html body {
47
47
  }
48
48
  }
49
49
 
50
- /* Fill vertical space */
51
-
52
- html,
53
- body {
54
- min-height: 100vh;
55
- }
56
-
57
- body {
58
- display: flex;
59
- flex-direction: column;
60
- }
61
-
62
- /* Same rule as pageColumn in components/layout/styled.tsx */
63
- main {
64
- flex: 1;
65
- display: flex;
66
- flex-direction: column;
67
- }
68
-
69
- main > :last-child:not(footer),
70
- main > :has(+ footer),
71
- body > :has(+ footer) {
72
- flex: 1 0 auto;
73
- }
74
-
75
50
  /* Fonts */
76
51
 
77
52
  @font-face {
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.2.2",
4
+ "version": "6.3.0",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
7
7
  "files": [