@treasuryspatial/viewer-ui-kit 0.1.41 → 0.1.56

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.
Files changed (90) hide show
  1. package/dist/AdminLayout.js +1 -1
  2. package/dist/AdminShell.d.ts +6 -1
  3. package/dist/AdminShell.d.ts.map +1 -1
  4. package/dist/AdminShell.js +45 -3
  5. package/dist/ChooserActionCard.d.ts +10 -0
  6. package/dist/ChooserActionCard.d.ts.map +1 -0
  7. package/dist/ChooserActionCard.js +39 -0
  8. package/dist/ComposerRightRail.d.ts +3 -1
  9. package/dist/ComposerRightRail.d.ts.map +1 -1
  10. package/dist/ComposerRightRail.js +11 -43
  11. package/dist/ConfiguratorShell.js +1 -1
  12. package/dist/LandingShell.d.ts +2 -1
  13. package/dist/LandingShell.d.ts.map +1 -1
  14. package/dist/LandingShell.js +162 -32
  15. package/dist/LoginForm.js +2 -2
  16. package/dist/LoginShell.d.ts +2 -1
  17. package/dist/LoginShell.d.ts.map +1 -1
  18. package/dist/LoginShell.js +38 -15
  19. package/dist/ManifestTopBar.d.ts +7 -1
  20. package/dist/ManifestTopBar.d.ts.map +1 -1
  21. package/dist/ManifestTopBar.js +249 -38
  22. package/dist/MetricsPanel.d.ts +1 -1
  23. package/dist/MetricsPanel.d.ts.map +1 -1
  24. package/dist/MetricsPanel.js +19 -29
  25. package/dist/MetricsPanelContent.d.ts +38 -17
  26. package/dist/MetricsPanelContent.d.ts.map +1 -1
  27. package/dist/MetricsPanelContent.js +84 -90
  28. package/dist/ModeBar.d.ts +6 -2
  29. package/dist/ModeBar.d.ts.map +1 -1
  30. package/dist/ModeBar.js +49 -82
  31. package/dist/ModuleSelectorPanel.d.ts +2 -1
  32. package/dist/ModuleSelectorPanel.d.ts.map +1 -1
  33. package/dist/ModuleSelectorPanel.js +47 -49
  34. package/dist/PanelSkin.d.ts.map +1 -1
  35. package/dist/PanelSkin.js +1598 -312
  36. package/dist/PanelSystem.d.ts +45 -0
  37. package/dist/PanelSystem.d.ts.map +1 -0
  38. package/dist/PanelSystem.js +450 -0
  39. package/dist/PanelTabs.d.ts.map +1 -1
  40. package/dist/PanelTabs.js +8 -34
  41. package/dist/PanelToggleDock.d.ts +10 -0
  42. package/dist/PanelToggleDock.d.ts.map +1 -0
  43. package/dist/PanelToggleDock.js +40 -0
  44. package/dist/PromptPackChooserPanel.d.ts +12 -11
  45. package/dist/PromptPackChooserPanel.d.ts.map +1 -1
  46. package/dist/PromptPackChooserPanel.js +103 -63
  47. package/dist/SceneInspectorPanel.d.ts +42 -0
  48. package/dist/SceneInspectorPanel.d.ts.map +1 -0
  49. package/dist/SceneInspectorPanel.js +135 -0
  50. package/dist/ScienceDataPanelContent.d.ts +16 -0
  51. package/dist/ScienceDataPanelContent.d.ts.map +1 -0
  52. package/dist/ScienceDataPanelContent.js +31 -0
  53. package/dist/ScienceMetricsPanelContent.d.ts +53 -0
  54. package/dist/ScienceMetricsPanelContent.d.ts.map +1 -0
  55. package/dist/ScienceMetricsPanelContent.js +415 -0
  56. package/dist/SpatialHud.d.ts +18 -0
  57. package/dist/SpatialHud.d.ts.map +1 -0
  58. package/dist/SpatialHud.js +120 -0
  59. package/dist/StreetviewModeSurface.d.ts +40 -0
  60. package/dist/StreetviewModeSurface.d.ts.map +1 -0
  61. package/dist/StreetviewModeSurface.js +358 -0
  62. package/dist/SurfaceSwitcher.d.ts +11 -0
  63. package/dist/SurfaceSwitcher.d.ts.map +1 -0
  64. package/dist/SurfaceSwitcher.js +46 -0
  65. package/dist/TopBar.d.ts +2 -0
  66. package/dist/TopBar.d.ts.map +1 -1
  67. package/dist/TopBar.js +3 -1
  68. package/dist/UnknownModeSurface.d.ts +6 -0
  69. package/dist/UnknownModeSurface.d.ts.map +1 -0
  70. package/dist/UnknownModeSurface.js +41 -0
  71. package/dist/index.d.ts +19 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +12 -0
  74. package/dist/landingTokens.d.ts +7 -0
  75. package/dist/landingTokens.d.ts.map +1 -0
  76. package/dist/landingTokens.js +6 -0
  77. package/dist/layout.d.ts +27 -27
  78. package/dist/layout.d.ts.map +1 -1
  79. package/dist/layout.js +33 -27
  80. package/dist/mapMetrics.d.ts +88 -0
  81. package/dist/mapMetrics.d.ts.map +1 -0
  82. package/dist/mapMetrics.js +1 -0
  83. package/dist/panelPrimitives.d.ts +11 -0
  84. package/dist/panelPrimitives.d.ts.map +1 -0
  85. package/dist/panelPrimitives.js +41 -0
  86. package/dist/topbarLogoPolicy.d.ts +14 -0
  87. package/dist/topbarLogoPolicy.d.ts.map +1 -0
  88. package/dist/topbarLogoPolicy.js +41 -0
  89. package/dist/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +18 -5
@@ -14,7 +14,7 @@ export const AdminSection = styled.section `
14
14
  `;
15
15
  export const AdminSectionTitle = styled.div `
16
16
  font-size: 11px;
17
- text-transform: uppercase;
17
+ text-transform: var(--viewer-ui-eyebrow-text-case, lowercase);
18
18
  letter-spacing: 0.2em;
19
19
  color: var(--viewer-ui-color-text-subtle, rgba(148, 163, 184, 0.8));
20
20
  margin-bottom: 16px;
@@ -5,10 +5,15 @@ export type AdminTab = {
5
5
  href: string;
6
6
  };
7
7
  type AdminShellProps = {
8
+ title?: string;
9
+ tabs?: AdminTab[];
10
+ activeTab?: string;
11
+ onSelectTab?: (id: string) => void;
8
12
  nav?: ReactNode;
13
+ actions?: ReactNode;
9
14
  modeBar?: ReactNode;
10
15
  children: ReactNode;
11
16
  };
12
- export default function AdminShell({ nav, modeBar, children }: AdminShellProps): import("react/jsx-runtime").JSX.Element;
17
+ export default function AdminShell({ title, tabs, activeTab, onSelectTab, nav, actions, modeBar, children, }: AdminShellProps): import("react/jsx-runtime").JSX.Element;
13
18
  export {};
14
19
  //# sourceMappingURL=AdminShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminShell.d.ts","sourceRoot":"","sources":["../src/AdminShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,KAAK,eAAe,GAAG;IACrB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAQ7E"}
1
+ {"version":3,"file":"AdminShell.d.ts","sourceRoot":"","sources":["../src/AdminShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,MAAM,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AA+CF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,KAAwB,EACxB,IAAS,EACT,SAAS,EACT,WAAW,EACX,GAAG,EACH,OAAO,EACP,OAAO,EACP,QAAQ,GACT,EAAE,eAAe,2CAsBjB"}
@@ -1,5 +1,47 @@
1
1
  "use client";
2
- import { Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- export default function AdminShell({ nav, modeBar, children }) {
4
- return (_jsxs(_Fragment, { children: [nav, modeBar, children] }));
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import styled from "styled-components";
4
+ import ModeBar, { MODE_BAR_HEIGHT_PX } from "./ModeBar.js";
5
+ import { TOP_BAR_COMPACT_HEIGHT_PX } from "./TopBar.js";
6
+ const MAX_WIDTH_PX = 1600;
7
+ const Root = styled.div `
8
+ min-height: 100vh;
9
+ background: var(--viewer-ui-color-background, var(--brand-background));
10
+ color: var(--viewer-ui-color-text, var(--brand-text-primary));
11
+ `;
12
+ const TopBar = styled.div `
13
+ position: fixed;
14
+ inset: 0 0 auto;
15
+ height: ${TOP_BAR_COMPACT_HEIGHT_PX}px;
16
+ z-index: 70;
17
+ border-bottom: 1px solid var(--viewer-ui-color-panel-border, var(--brand-panel-border));
18
+ background: var(--viewer-ui-color-bg-base, var(--brand-panel));
19
+ `;
20
+ const TopBarInner = styled.div `
21
+ width: min(100%, ${MAX_WIDTH_PX}px);
22
+ height: 100%;
23
+ margin: 0 auto;
24
+ padding: 0 24px;
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: space-between;
28
+ `;
29
+ const TopBarTitle = styled.div `
30
+ font-size: 10px;
31
+ letter-spacing: 0.18em;
32
+ text-transform: var(--viewer-ui-eyebrow-text-case, lowercase);
33
+ color: var(--viewer-ui-color-text-subtle, var(--brand-text-secondary));
34
+ `;
35
+ const TopBarActions = styled.div `
36
+ display: flex;
37
+ align-items: center;
38
+ gap: 14px;
39
+ flex-wrap: wrap;
40
+ `;
41
+ const Body = styled.div `
42
+ min-height: 100vh;
43
+ padding-top: ${TOP_BAR_COMPACT_HEIGHT_PX + MODE_BAR_HEIGHT_PX}px;
44
+ `;
45
+ export default function AdminShell({ title = "composer admin", tabs = [], activeTab, onSelectTab, nav, actions, modeBar, children, }) {
46
+ return (_jsxs(Root, { children: [nav ?? (_jsx(TopBar, { children: _jsxs(TopBarInner, { children: [_jsx(TopBarTitle, { children: title }), actions ? _jsx(TopBarActions, { children: actions }) : null] }) })), modeBar ?? (_jsx(ModeBar, { active: activeTab || '', tabs: tabs, topOffsetPx: TOP_BAR_COMPACT_HEIGHT_PX, onSelect: onSelectTab })), _jsx(Body, { children: children })] }));
5
47
  }
@@ -0,0 +1,10 @@
1
+ type ChooserActionCardProps = {
2
+ title: string;
3
+ description: string;
4
+ href?: string;
5
+ onClick?: () => void;
6
+ actionLabel?: string;
7
+ };
8
+ export default function ChooserActionCard({ title, description, href, onClick, actionLabel, }: ChooserActionCardProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=ChooserActionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChooserActionCard.d.ts","sourceRoot":"","sources":["../src/ChooserActionCard.tsx"],"names":[],"mappings":"AAYA,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAqCF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,KAAK,EACL,WAAW,EACX,IAAI,EACJ,OAAO,EACP,WAAoB,GACrB,EAAE,sBAAsB,2CAaxB"}
@@ -0,0 +1,39 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Link from 'next/link';
4
+ import styled from 'styled-components';
5
+ import { panelSystemActionCardCss, panelSystemBodyTextCss, panelSystemLabelCss, panelSystemSubheadingCss, } from './PanelSystem.js';
6
+ const Card = styled.a `
7
+ ${panelSystemActionCardCss}
8
+ min-height: 0;
9
+ align-items: stretch;
10
+ flex-direction: column;
11
+ padding: 16px 18px;
12
+ display: flex;
13
+ text-decoration: none;
14
+ color: inherit;
15
+ transition: border-color 0.16s ease, background 0.16s ease;
16
+ cursor: pointer;
17
+ text-align: left;
18
+
19
+ &:hover {
20
+ border-color: var(--viewer-ui-shell-pill-active-border, var(--viewer-ui-color-button-primary));
21
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 84%, var(--viewer-ui-color-control-hover) 16%);
22
+ }
23
+ `;
24
+ const Title = styled.div `
25
+ ${panelSystemSubheadingCss}
26
+ font-weight: 400;
27
+ color: var(--viewer-ui-color-text-strong);
28
+ `;
29
+ const Description = styled.div `
30
+ ${panelSystemBodyTextCss}
31
+ color: var(--viewer-ui-color-text-muted);
32
+ `;
33
+ const ActionLabel = styled.div `
34
+ ${panelSystemLabelCss}
35
+ color: var(--viewer-ui-color-text-strong);
36
+ `;
37
+ export default function ChooserActionCard({ title, description, href, onClick, actionLabel = 'open', }) {
38
+ return (_jsxs(Card, { as: href ? Link : 'button', href: href, type: href ? undefined : 'button', onClick: href ? undefined : onClick, children: [_jsx(Title, { children: title }), _jsx(Description, { children: description }), _jsx(ActionLabel, { children: actionLabel })] }));
39
+ }
@@ -7,6 +7,8 @@ export type ComposerRightRailTab = {
7
7
  type ComposerRightRailProps = {
8
8
  isVisible: boolean;
9
9
  onToggle: () => void;
10
+ shellCollapsed?: boolean;
11
+ onRestoreShell?: () => void;
10
12
  activeTab: string;
11
13
  onTabChange: (id: string) => void;
12
14
  tabs: ComposerRightRailTab[];
@@ -15,6 +17,6 @@ type ComposerRightRailProps = {
15
17
  showEdgeToggle?: boolean;
16
18
  topOffsetPx?: number;
17
19
  };
18
- export default function ComposerRightRail({ isVisible, onToggle, activeTab, onTabChange, tabs, title, statusLabel, showEdgeToggle, topOffsetPx, }: ComposerRightRailProps): import("react/jsx-runtime").JSX.Element;
20
+ export default function ComposerRightRail({ isVisible, onToggle, shellCollapsed, onRestoreShell, activeTab, onTabChange, tabs, title, statusLabel, showEdgeToggle, topOffsetPx, }: ComposerRightRailProps): import("react/jsx-runtime").JSX.Element;
19
21
  export {};
20
22
  //# sourceMappingURL=ComposerRightRail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerRightRail.d.ts","sourceRoot":"","sources":["../src/ComposerRightRail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAwDF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,SAAS,EACT,QAAQ,EACR,SAAS,EACT,WAAW,EACX,IAAI,EACJ,KAAsB,EACtB,WAAoB,EACpB,cAAsB,EACtB,WAAe,GAChB,EAAE,sBAAsB,2CAiExB"}
1
+ {"version":3,"file":"ComposerRightRail.d.ts","sourceRoot":"","sources":["../src/ComposerRightRail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAavC,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAkBF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,SAAS,EACT,QAAQ,EACR,cAAsB,EACtB,cAAc,EACd,SAAS,EACT,WAAW,EACX,IAAI,EACJ,KAAsB,EACtB,WAAoB,EACpB,cAAsB,EACtB,WAAe,GAChB,EAAE,sBAAsB,2CAwExB"}
@@ -1,58 +1,26 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import styled from 'styled-components';
4
- import { RightPanel, RightPanelCollapseToggle, RightPanelShowToggle, } from './layout.js';
5
- const RailHeader = styled.div `
6
- border-bottom: 1px solid var(--brand-panel-border);
7
- padding: 16px 18px 14px;
8
- background: var(--brand-panel);
9
- `;
4
+ import { panelEyebrowCss, panelPillButtonCss, panelPillRowCss } from './panelPrimitives.js';
5
+ import { PanelBody, PanelHeader, PanelHeaderContent, RightPanel, RightPanelCollapseToggle, RightPanelShowToggle, } from './layout.js';
10
6
  const RailEyebrow = styled.div `
11
7
  display: flex;
12
8
  align-items: center;
13
9
  gap: 6px;
14
- font-size: 10px;
15
- text-transform: uppercase;
16
- letter-spacing: 0.14em;
17
- color: var(--brand-text-secondary);
10
+ ${panelEyebrowCss}
18
11
  `;
19
12
  const RailTabs = styled.div `
20
- display: flex;
21
- gap: 8px;
22
- margin-top: 12px;
23
- overflow-x: auto;
24
- padding-bottom: 2px;
25
-
26
- &::-webkit-scrollbar {
27
- display: none;
28
- }
13
+ ${panelPillRowCss}
14
+ margin-top: 8px;
29
15
  `;
30
16
  const RailTab = styled.button `
31
- border-radius: 999px;
32
- min-height: 42px;
33
- padding: 0 20px;
34
- border: 1px solid ${(props) => (props.$active ? 'var(--brand-text-primary)' : 'var(--brand-panel-border)')};
35
- background: ${(props) => (props.$active ? 'var(--brand-text-primary)' : 'var(--brand-background)')};
36
- color: ${(props) => (props.$active ? 'var(--brand-background)' : 'var(--brand-text-secondary)')};
37
- font-size: 13px;
38
- font-weight: 600;
39
- letter-spacing: 0.01em;
40
- text-transform: lowercase;
41
- white-space: nowrap;
42
- transition: background-color 0.16s ease, color 0.16s ease, border-color 0.16s ease;
43
-
44
- &:hover {
45
- color: ${(props) => (props.$active ? 'var(--brand-background)' : 'var(--brand-text-primary)')};
46
- }
47
- `;
48
- const RailBody = styled.div `
49
- flex: 1;
50
- min-height: 0;
51
- overflow-y: auto;
52
- padding: 18px;
17
+ ${panelPillButtonCss}
53
18
  `;
54
- export default function ComposerRightRail({ isVisible, onToggle, activeTab, onTabChange, tabs, title = 'image system', statusLabel = 'live', showEdgeToggle = false, topOffsetPx = 0, }) {
19
+ export default function ComposerRightRail({ isVisible, onToggle, shellCollapsed = false, onRestoreShell, activeTab, onTabChange, tabs, title = 'image system', statusLabel = 'live', showEdgeToggle = false, topOffsetPx = 0, }) {
55
20
  const active = tabs.find((tab) => tab.id === activeTab) ?? tabs[0] ?? null;
56
21
  const hasStatus = Boolean(statusLabel && statusLabel.trim().length > 0);
57
- return (_jsxs(_Fragment, { children: [isVisible ? (_jsxs(RightPanel, { "$open": isVisible, "$topOffset": topOffsetPx, children: [showEdgeToggle ? (_jsx(RightPanelCollapseToggle, { type: "button", onClick: onToggle, "aria-label": "Hide right panel", title: "Hide right panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd" }) }) })) : null, _jsxs(RailHeader, { children: [_jsxs(RailEyebrow, { children: [_jsx("span", { children: title }), hasStatus ? _jsx("span", { "aria-hidden": "true", children: "/" }) : null, hasStatus ? _jsx("span", { children: statusLabel }) : null] }), _jsx(RailTabs, { children: tabs.map((tab) => (_jsx(RailTab, { type: "button", onClick: () => onTabChange(tab.id), "$active": active?.id === tab.id, children: tab.label }, tab.id))) })] }), _jsx(RailBody, { children: active?.content ?? null })] })) : null, !isVisible && showEdgeToggle ? (_jsx(RightPanelShowToggle, { type: "button", onClick: onToggle, "aria-label": "Show right panel", title: "Show right panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M12.707 14.707a1 1 0 010-1.414L9.414 10l3.293-3.293a1 1 0 00-1.414-1.414l-4 4a1 1 0 000 1.414l4 4a1 1 0 001.414 0z", clipRule: "evenodd" }) }) })) : null] }));
22
+ const handleShow = shellCollapsed && onRestoreShell ? onRestoreShell : onToggle;
23
+ const showTitle = shellCollapsed ? 'Restore shell' : 'Show right panel';
24
+ const showLabel = shellCollapsed ? 'Restore shell' : 'Show right panel';
25
+ return (_jsxs(_Fragment, { children: [isVisible ? (_jsxs(RightPanel, { "$open": isVisible, "$topOffset": topOffsetPx, children: [showEdgeToggle ? (_jsx(RightPanelCollapseToggle, { type: "button", onClick: onToggle, "aria-label": "Hide right panel", title: "Hide right panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd" }) }) })) : null, _jsx(PanelHeader, { children: _jsxs(PanelHeaderContent, { children: [_jsxs(RailEyebrow, { children: [_jsx("span", { children: title }), hasStatus ? _jsx("span", { "aria-hidden": "true", children: "/" }) : null, hasStatus ? _jsx("span", { children: statusLabel }) : null] }), _jsx(RailTabs, { children: tabs.map((tab) => (_jsx(RailTab, { type: "button", onClick: () => onTabChange(tab.id), "$active": active?.id === tab.id, children: tab.label }, tab.id))) })] }) }), _jsx(PanelBody, { className: "viewer-ui-shell-right-body viewer-ui-panel-renderer viewer-ui-panel-renderer--sectioned", children: active?.content ?? null })] })) : null, !isVisible && showEdgeToggle ? (_jsx(RightPanelShowToggle, { type: "button", onClick: handleShow, "aria-label": showLabel, title: showTitle, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M12.707 14.707a1 1 0 010-1.414L9.414 10l3.293-3.293a1 1 0 00-1.414-1.414l-4 4a1 1 0 000 1.414l4 4a1 1 0 001.414 0z", clipRule: "evenodd" }) }) })) : null] }));
58
26
  }
@@ -6,5 +6,5 @@ export default function ConfiguratorShell({ navOffsetPx = 0, className, leftOpen
6
6
  ['--ui-left-offset']: leftOpen ? 'var(--ui-panel-width)' : '0px',
7
7
  ['--ui-right-offset']: rightOpen ? 'var(--ui-metrics-width)' : '0px',
8
8
  };
9
- return (_jsxs(ShellLayout, { className: className, "$topOffset": navOffsetPx, style: shellStyle, children: [_jsxs(ControlPanel, { "$open": leftOpen, children: [showLeftToggle && (_jsx(PanelCollapseToggle, { type: "button", onClick: () => onLeftToggle(false), "aria-label": "Hide control panel", title: "Hide control panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M12.707 14.707a1 1 0 010-1.414L9.414 10l3.293-3.293a1 1 0 00-1.414-1.414l-4 4a1 1 0 000 1.414l4 4a1 1 0 001.414 0z", clipRule: "evenodd" }) }) })), _jsx(PanelHeader, { children: leftHeader }), _jsx(PanelBody, { children: leftBody }), leftFooter ? _jsx(PanelFooter, { children: leftFooter }) : null] }), showLeftToggle && !leftOpen && (_jsx(PanelShowToggle, { type: "button", onClick: () => onLeftToggle(true), "aria-label": "Show control panel", title: "Show control panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd" }) }) })), viewer, rightOpen && onRightToggle ? (_jsxs(RightPanel, { "$open": rightOpen, children: [_jsx(RightPanelCollapseToggle, { type: "button", onClick: () => onRightToggle(false), "aria-label": "Hide right panel", title: "Hide right panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd" }) }) }), rightHeader, _jsx("div", { className: "viewer-ui-shell-right-body", children: rightBody })] })) : null, showRightToggle && onRightToggle && !rightOpen && (_jsx(RightPanelShowToggle, { type: "button", onClick: () => onRightToggle(true), "aria-label": "Show right panel", title: "Show right panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M12.707 14.707a1 1 0 010-1.414L9.414 10l3.293-3.293a1 1 0 00-1.414-1.414l-4 4a1 1 0 000 1.414l4 4a1 1 0 001.414 0z", clipRule: "evenodd" }) }) }))] }));
9
+ return (_jsxs(ShellLayout, { className: className, "$topOffset": navOffsetPx, style: shellStyle, children: [_jsxs(ControlPanel, { "$open": leftOpen, children: [showLeftToggle && (_jsx(PanelCollapseToggle, { type: "button", onClick: () => onLeftToggle(false), "aria-label": "Hide control panel", title: "Hide control panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M12.707 14.707a1 1 0 010-1.414L9.414 10l3.293-3.293a1 1 0 00-1.414-1.414l-4 4a1 1 0 000 1.414l4 4a1 1 0 001.414 0z", clipRule: "evenodd" }) }) })), _jsx(PanelHeader, { children: leftHeader }), _jsx(PanelBody, { children: leftBody }), leftFooter ? _jsx(PanelFooter, { children: leftFooter }) : null] }), showLeftToggle && !leftOpen && (_jsx(PanelShowToggle, { type: "button", onClick: () => onLeftToggle(true), "aria-label": "Show control panel", title: "Show control panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd" }) }) })), viewer, rightOpen && onRightToggle ? (_jsxs(RightPanel, { "$open": rightOpen, children: [_jsx(RightPanelCollapseToggle, { type: "button", onClick: () => onRightToggle(false), "aria-label": "Hide right panel", title: "Hide right panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd" }) }) }), rightHeader, _jsx(PanelBody, { className: "viewer-ui-shell-right-body", children: rightBody })] })) : null, showRightToggle && onRightToggle && !rightOpen && (_jsx(RightPanelShowToggle, { type: "button", onClick: () => onRightToggle(true), "aria-label": "Show right panel", title: "Show right panel", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M12.707 14.707a1 1 0 010-1.414L9.414 10l3.293-3.293a1 1 0 00-1.414-1.414l-4 4a1 1 0 000 1.414l4 4a1 1 0 001.414 0z", clipRule: "evenodd" }) }) }))] }));
10
10
  }
@@ -3,9 +3,10 @@ import type { SurfaceLandingContent } from '@treasuryspatial/surface-kit';
3
3
  export type LandingShellProps = {
4
4
  manifest: UiManifest;
5
5
  content: SurfaceLandingContent;
6
+ subtitle?: string | null;
6
7
  showPoweredBy?: boolean;
7
8
  showLogout?: boolean;
8
9
  className?: string;
9
10
  };
10
- export default function LandingShell({ manifest, content, showPoweredBy, showLogout, className, }: LandingShellProps): import("react/jsx-runtime").JSX.Element;
11
+ export default function LandingShell({ manifest, content, subtitle, showPoweredBy, showLogout, className, }: LandingShellProps): import("react/jsx-runtime").JSX.Element;
11
12
  //# sourceMappingURL=LandingShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LandingShell.d.ts","sourceRoot":"","sources":["../src/LandingShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAsG1E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,QAAQ,EACR,OAAO,EACP,aAAqB,EACrB,UAAkB,EAClB,SAAS,GACV,EAAE,iBAAiB,2CAuBnB"}
1
+ {"version":3,"file":"LandingShell.d.ts","sourceRoot":"","sources":["../src/LandingShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AA4P1E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAqB,EACrB,UAAkB,EAClB,SAAS,GACV,EAAE,iBAAiB,2CAyDnB"}
@@ -1,20 +1,23 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import styled from 'styled-components';
4
4
  import ManifestTopBar from './ManifestTopBar.js';
5
+ import { LANDING_BODY_FONT_SIZE, LANDING_BODY_MAX_WIDTH, LANDING_SECTION_STRAP_SIZE, LANDING_SECTION_TITLE_SIZE, } from './landingTokens.js';
5
6
  const Root = styled.main `
6
7
  min-height: 100vh;
7
8
  background: var(--brand-background);
8
9
  color: var(--brand-text-primary);
9
10
  `;
10
11
  const Section = styled.section `
12
+ min-height: 100vh;
11
13
  display: flex;
12
14
  flex-direction: column;
13
- padding: calc(var(--ui-nav-height) + 28px) 0 56px;
15
+ padding-top: calc(var(--ui-nav-height) + 72px);
16
+ margin-bottom: 50px;
14
17
 
15
18
  @media (min-width: 1024px) {
16
- padding-top: calc(var(--ui-nav-height) + 40px);
17
- padding-bottom: 96px;
19
+ padding-top: calc(var(--ui-nav-height) + 85px);
20
+ padding-bottom: 140px;
18
21
  }
19
22
  `;
20
23
  const Row = styled.div `
@@ -22,74 +25,201 @@ const Row = styled.div `
22
25
  flex-direction: column;
23
26
 
24
27
  @media (min-width: 1024px) {
25
- flex-direction: row;
28
+ display: grid;
29
+ grid-template-columns: minmax(0, 60%) minmax(0, 40%);
30
+ gap: 0;
26
31
  position: relative;
32
+ min-height: calc(100vh - var(--ui-nav-height) - 225px);
33
+ align-items: stretch;
27
34
  }
28
35
  `;
29
36
  const LeftColumn = styled.div `
30
37
  flex: 0 0 auto;
31
38
 
32
39
  @media (min-width: 1024px) {
33
- width: 50%;
40
+ width: 100%;
41
+ position: relative;
42
+ z-index: 1;
43
+ overflow: visible;
34
44
  }
35
45
  `;
36
46
  const RightColumn = styled.div `
37
47
  flex: 1 1 auto;
38
48
 
39
49
  @media (min-width: 1024px) {
40
- width: 50%;
50
+ display: flex;
51
+ flex-direction: column;
52
+ width: 100%;
53
+ }
54
+ `;
55
+ const RightColumnContent = styled.div `
56
+ box-sizing: border-box;
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: 46px;
60
+ padding: 32px 24px 0;
61
+
62
+ @media (min-width: 768px) {
63
+ padding-left: 48px;
64
+ padding-right: 48px;
65
+ }
66
+
67
+ @media (min-width: 1024px) {
68
+ width: 100%;
69
+ max-width: calc(${LANDING_BODY_MAX_WIDTH} + 84px);
70
+ margin-top: clamp(48px, 7vh, 82px);
71
+ align-self: flex-end;
72
+ padding: 0 84px 0 0;
41
73
  }
42
74
  `;
43
75
  const Header = styled.div `
44
- max-width: 65vw;
45
- padding: 72px 24px 0;
46
- font-family: var(--ui-font-family, system-ui);
76
+ max-width: min(92vw, 980px);
77
+ padding: 108px 24px 0 24px;
78
+ font-family: var(--viewer-ui-font-display, var(--ui-font-family, system-ui));
47
79
  font-weight: 400;
48
- color: var(--brand-primary);
49
80
 
50
81
  @media (min-width: 768px) {
51
82
  padding-left: 48px;
52
- font-size: 36px;
53
83
  }
54
84
 
55
85
  @media (min-width: 1024px) {
56
86
  padding: 0 0 0 84px;
87
+ width: calc(100vw - 168px);
88
+ max-width: calc(100vw - 168px);
57
89
  }
58
90
  `;
59
91
  const HeaderTitle = styled.div `
60
- font-size: clamp(34px, 3vw + 18px, 61px);
61
- line-height: 1.02;
92
+ color: var(--brand-text-primary);
93
+ font-size: 32px;
94
+ line-height: 1;
62
95
  letter-spacing: -0.03em;
96
+ max-width: 18ch;
97
+ text-wrap: pretty;
98
+
99
+ @media (min-width: 768px) {
100
+ font-size: 36px;
101
+ }
102
+
103
+ @media (min-width: 1024px) {
104
+ font-size: 42px;
105
+ max-width: 24ch;
106
+ }
107
+
108
+ @media (min-width: 1440px) {
109
+ font-size: ${LANDING_SECTION_TITLE_SIZE};
110
+ }
111
+ `;
112
+ const HeaderTitleAccent = styled.span `
113
+ color: var(--brand-primary);
63
114
  `;
64
115
  const HeaderStrap = styled.div `
65
- margin-top: 18px;
66
- font-size: clamp(22px, 2vw + 12px, 40px);
67
- line-height: 1.1;
68
- letter-spacing: -0.02em;
116
+ margin-top: 28px;
117
+ color: var(--brand-text-primary);
118
+ font-family: var(--viewer-ui-font-body, var(--ui-font-family, system-ui));
119
+ font-size: 16px;
120
+ line-height: 1.5;
121
+ letter-spacing: -0.01em;
122
+ font-weight: 400;
123
+ max-width: 36ch;
124
+ text-wrap: pretty;
125
+
126
+ @media (min-width: 768px) {
127
+ font-size: 16px;
128
+ }
129
+
130
+ @media (min-width: 1024px) {
131
+ font-size: 18px;
132
+ }
133
+
134
+ @media (min-width: 1440px) {
135
+ font-size: ${LANDING_SECTION_STRAP_SIZE};
136
+ }
69
137
  `;
70
138
  const Body = styled.div `
71
- padding: 32px 24px 0;
72
- font-size: 15px;
73
- line-height: 1.8;
74
- color: var(--brand-text-secondary);
139
+ color: var(--brand-text-primary);
140
+ font-family: var(--viewer-ui-font-body, var(--ui-font-family, system-ui));
141
+ font-size: ${LANDING_BODY_FONT_SIZE};
142
+ line-height: 1.5;
143
+ letter-spacing: -0.01em;
144
+ font-weight: 400;
145
+ max-width: ${LANDING_BODY_MAX_WIDTH};
146
+ text-wrap: pretty;
75
147
 
76
148
  p {
77
- margin: 0 0 20px;
149
+ margin: 0;
78
150
  }
79
151
 
80
- p:last-child {
81
- margin-bottom: 0;
152
+ p + p {
153
+ margin-top: 30px;
82
154
  }
83
155
 
84
- @media (min-width: 768px) {
85
- padding-left: 48px;
86
- padding-right: 48px;
156
+ @media (min-width: 1440px) {
157
+ font-size: 20px;
87
158
  }
159
+ `;
160
+ const LandingSections = styled.div `
161
+ display: flex;
162
+ flex-direction: column;
163
+ gap: 32px;
164
+ color: var(--brand-text-primary);
165
+ font-family: var(--viewer-ui-font-body, var(--ui-font-family, system-ui));
166
+ font-size: ${LANDING_BODY_FONT_SIZE};
167
+ line-height: 1.5;
168
+ letter-spacing: -0.01em;
169
+ font-weight: 400;
170
+ max-width: ${LANDING_BODY_MAX_WIDTH};
171
+ text-wrap: pretty;
88
172
 
89
- @media (min-width: 1024px) {
90
- padding: 24px 84px 0 32px;
173
+ @media (min-width: 1440px) {
174
+ font-size: 20px;
91
175
  }
92
176
  `;
93
- export default function LandingShell({ manifest, content, showPoweredBy = false, showLogout = false, className, }) {
94
- return (_jsxs(Root, { className: className, children: [_jsx(ManifestTopBar, { manifest: manifest, variant: "landing", showPoweredBy: showPoweredBy, showLogout: showLogout }), _jsx(Section, { children: _jsxs(Row, { children: [_jsx(LeftColumn, { children: _jsxs(Header, { children: [_jsx(HeaderTitle, { children: content.header }), _jsx(HeaderStrap, { children: content.strap })] }) }), _jsx(RightColumn, { children: _jsx(Body, { children: content.bodyParagraphs.map((paragraph, index) => (_jsx("p", { children: paragraph }, `${index}-${paragraph.slice(0, 16)}`))) }) })] }) })] }));
177
+ const LandingSection = styled.section `
178
+ display: flex;
179
+ flex-direction: column;
180
+ gap: 14px;
181
+ `;
182
+ const LandingSectionTitle = styled.h3 `
183
+ margin: 0;
184
+ color: var(--brand-primary);
185
+ font-family: var(--viewer-ui-font-body, var(--ui-font-family, system-ui));
186
+ font-size: 1em;
187
+ line-height: 1.5;
188
+ letter-spacing: 0;
189
+ font-weight: 700;
190
+ `;
191
+ const LandingSectionParagraph = styled.p `
192
+ margin: 0;
193
+ `;
194
+ const LandingSectionBullets = styled.ul `
195
+ margin: 0;
196
+ padding-left: 1.2em;
197
+ display: flex;
198
+ flex-direction: column;
199
+ gap: 10px;
200
+ `;
201
+ const LandingSectionBullet = styled.li `
202
+ margin: 0;
203
+ `;
204
+ function renderHeaderTitle(header, accentLabel) {
205
+ const title = header.trim();
206
+ const accent = accentLabel?.trim();
207
+ if (!title || !accent)
208
+ return title;
209
+ const titleLower = title.toLowerCase();
210
+ const accentLower = accent.toLowerCase();
211
+ if (titleLower === accentLower || !titleLower.endsWith(accentLower)) {
212
+ return title;
213
+ }
214
+ const accentStart = title.length - accent.length;
215
+ const prefix = title.slice(0, accentStart).trimEnd();
216
+ if (!prefix)
217
+ return title;
218
+ const separator = title.slice(prefix.length, accentStart) || ' ';
219
+ return (_jsxs(_Fragment, { children: [prefix, separator, _jsx(HeaderTitleAccent, { children: title.slice(accentStart) })] }));
220
+ }
221
+ export default function LandingShell({ manifest, content, subtitle, showPoweredBy = false, showLogout = false, className, }) {
222
+ const headerAccentLabel = manifest.topbar.productLabel || null;
223
+ const displaySubtitle = subtitle || content.strap;
224
+ return (_jsxs(Root, { className: className, children: [_jsx(ManifestTopBar, { manifest: manifest, variant: "landing", topbarContext: "landing", showPoweredBy: showPoweredBy, showLogout: showLogout }), _jsx(Section, { children: _jsxs(Row, { children: [_jsx(LeftColumn, { children: _jsxs(Header, { children: [_jsx(HeaderTitle, { children: renderHeaderTitle(content.header, headerAccentLabel) }), _jsx(HeaderStrap, { children: displaySubtitle })] }) }), _jsx(RightColumn, { children: _jsxs(RightColumnContent, { children: [_jsx(Body, { children: content.bodyParagraphs.map((paragraph, index) => (_jsx("p", { children: paragraph }, `${index}-${paragraph.slice(0, 16)}`))) }), content.sections?.length ? (_jsx(LandingSections, { children: content.sections.map((section, index) => (_jsxs(LandingSection, { children: [section.title ? _jsx(LandingSectionTitle, { children: section.title }) : null, section.paragraphs?.map((paragraph, paragraphIndex) => (_jsx(LandingSectionParagraph, { children: paragraph }, `${index}-${paragraphIndex}-${paragraph.slice(0, 16)}`))), section.bullets?.length ? (_jsx(LandingSectionBullets, { children: section.bullets.map((bullet, bulletIndex) => (_jsx(LandingSectionBullet, { children: bullet }, `${index}-${bulletIndex}-${bullet.slice(0, 16)}`))) })) : null] }, `${index}-${section.title ?? 'section'}`))) })) : null] }) })] }) })] }));
95
225
  }
package/dist/LoginForm.js CHANGED
@@ -12,7 +12,7 @@ const Row = styled.div `
12
12
  display: flex;
13
13
  `;
14
14
  const LabelCell = styled.div `
15
- background: var(--brand-secondary);
15
+ background: #6b7280;
16
16
  width: 296px;
17
17
  padding: 16px;
18
18
  color: white;
@@ -23,7 +23,7 @@ const Input = styled.input `
23
23
  outline: none;
24
24
  flex: 1;
25
25
  border: none;
26
- background: color-mix(in srgb, var(--brand-panel) 88%, var(--brand-background) 12%);
26
+ background: #f2f2f5;
27
27
  padding: 16px;
28
28
  font-size: 16px;
29
29
  color: var(--brand-text-primary);
@@ -4,10 +4,11 @@ import type { SurfaceLoginContent } from '@treasuryspatial/surface-kit';
4
4
  export type LoginShellProps = {
5
5
  manifest: UiManifest;
6
6
  content?: SurfaceLoginContent | null;
7
+ subtitle?: string | null;
7
8
  children: ReactNode;
8
9
  showLogout?: boolean;
9
10
  showPoweredBy?: boolean;
10
11
  className?: string;
11
12
  };
12
- export default function LoginShell({ manifest, content, children, showLogout, showPoweredBy, className, }: LoginShellProps): import("react/jsx-runtime").JSX.Element;
13
+ export default function LoginShell({ manifest, content, subtitle, children, showLogout, showPoweredBy, className, }: LoginShellProps): import("react/jsx-runtime").JSX.Element;
13
14
  //# sourceMappingURL=LoginShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoginShell.d.ts","sourceRoot":"","sources":["../src/LoginShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAkExE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAkB,EAClB,aAAqB,EACrB,SAAS,GACV,EAAE,eAAe,2CAwBjB"}
1
+ {"version":3,"file":"LoginShell.d.ts","sourceRoot":"","sources":["../src/LoginShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAgGxE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAkB,EAClB,aAAqB,EACrB,SAAS,GACV,EAAE,eAAe,2CA4BjB"}