@boost33/ui 0.8.0 → 0.9.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.
Files changed (150) hide show
  1. package/CHANGELOG.md +214 -123
  2. package/dist/backdrop-icons.d.ts +53 -0
  3. package/dist/backdrop-icons.js +62 -0
  4. package/dist/backdrop-icons.js.map +1 -0
  5. package/dist/backdrop.css +1 -0
  6. package/dist/backdrop.d.ts +46 -0
  7. package/dist/backdrop.js +127 -0
  8. package/dist/backdrop.js.map +1 -0
  9. package/dist/components/AccountMenu/AccountMenu.d.ts +42 -32
  10. package/dist/components/AccountMenu/AccountMenu.js +66 -48
  11. package/dist/components/AccountMenu/AccountMenu.js.map +1 -1
  12. package/dist/components/AccountMenu/AccountMenu.module.css.js +44 -38
  13. package/dist/components/AccountMenu/AccountMenu.module.css.js.map +1 -1
  14. package/dist/components/AccountMenu/StandardAccountMenu.d.ts +87 -0
  15. package/dist/components/AccountMenu/StandardAccountMenu.js +86 -0
  16. package/dist/components/AccountMenu/StandardAccountMenu.js.map +1 -0
  17. package/dist/components/AccountMenu/icons.d.ts +2 -2
  18. package/dist/components/AccountMenu/icons.js +21 -8
  19. package/dist/components/AccountMenu/icons.js.map +1 -1
  20. package/dist/components/AccountMenu/initials.d.ts +11 -0
  21. package/dist/components/AccountMenu/initials.js +8 -0
  22. package/dist/components/AccountMenu/initials.js.map +1 -0
  23. package/dist/components/AccountMenu/labels.d.ts +64 -3
  24. package/dist/components/AccountMenu/labels.js +33 -5
  25. package/dist/components/AccountMenu/labels.js.map +1 -1
  26. package/dist/components/AccountMenu/use-menu.d.ts +34 -0
  27. package/dist/components/AccountMenu/use-menu.js +102 -0
  28. package/dist/components/AccountMenu/use-menu.js.map +1 -0
  29. package/dist/components/Backdrop/BackdropAppMenu.d.ts +55 -0
  30. package/dist/components/Backdrop/BackdropAppMenu.js +79 -0
  31. package/dist/components/Backdrop/BackdropAppMenu.js.map +1 -0
  32. package/dist/components/Backdrop/BackdropAppMenu.module.css.js +48 -0
  33. package/dist/components/Backdrop/BackdropAppMenu.module.css.js.map +1 -0
  34. package/dist/components/Backdrop/BackdropBasics.d.ts +129 -0
  35. package/dist/components/Backdrop/BackdropBasics.js +130 -0
  36. package/dist/components/Backdrop/BackdropBasics.js.map +1 -0
  37. package/dist/components/Backdrop/BackdropBasics.module.css.js +71 -0
  38. package/dist/components/Backdrop/BackdropBasics.module.css.js.map +1 -0
  39. package/dist/components/Backdrop/BackdropButton.d.ts +63 -0
  40. package/dist/components/Backdrop/BackdropButton.js +59 -0
  41. package/dist/components/Backdrop/BackdropButton.js.map +1 -0
  42. package/dist/components/Backdrop/BackdropButton.module.css.js +41 -0
  43. package/dist/components/Backdrop/BackdropButton.module.css.js.map +1 -0
  44. package/dist/components/Backdrop/BackdropCharts.d.ts +158 -0
  45. package/dist/components/Backdrop/BackdropCharts.js +222 -0
  46. package/dist/components/Backdrop/BackdropCharts.js.map +1 -0
  47. package/dist/components/Backdrop/BackdropCharts.module.css.js +109 -0
  48. package/dist/components/Backdrop/BackdropCharts.module.css.js.map +1 -0
  49. package/dist/components/Backdrop/BackdropChrome.d.ts +26 -0
  50. package/dist/components/Backdrop/BackdropChrome.js +35 -0
  51. package/dist/components/Backdrop/BackdropChrome.js.map +1 -0
  52. package/dist/components/Backdrop/BackdropConversation.d.ts +67 -0
  53. package/dist/components/Backdrop/BackdropConversation.js +76 -0
  54. package/dist/components/Backdrop/BackdropConversation.js.map +1 -0
  55. package/dist/components/Backdrop/BackdropConversation.module.css.js +44 -0
  56. package/dist/components/Backdrop/BackdropConversation.module.css.js.map +1 -0
  57. package/dist/components/Backdrop/BackdropData.d.ts +195 -0
  58. package/dist/components/Backdrop/BackdropData.js +204 -0
  59. package/dist/components/Backdrop/BackdropData.js.map +1 -0
  60. package/dist/components/Backdrop/BackdropData.module.css.js +135 -0
  61. package/dist/components/Backdrop/BackdropData.module.css.js.map +1 -0
  62. package/dist/components/Backdrop/BackdropDisplay.d.ts +122 -0
  63. package/dist/components/Backdrop/BackdropDisplay.js +80 -0
  64. package/dist/components/Backdrop/BackdropDisplay.js.map +1 -0
  65. package/dist/components/Backdrop/BackdropDisplay.module.css.js +80 -0
  66. package/dist/components/Backdrop/BackdropDisplay.module.css.js.map +1 -0
  67. package/dist/components/Backdrop/BackdropFields.d.ts +122 -0
  68. package/dist/components/Backdrop/BackdropFields.js +196 -0
  69. package/dist/components/Backdrop/BackdropFields.js.map +1 -0
  70. package/dist/components/Backdrop/BackdropFields.module.css.js +104 -0
  71. package/dist/components/Backdrop/BackdropFields.module.css.js.map +1 -0
  72. package/dist/components/Backdrop/BackdropFlows.d.ts +128 -0
  73. package/dist/components/Backdrop/BackdropFlows.js +156 -0
  74. package/dist/components/Backdrop/BackdropFlows.js.map +1 -0
  75. package/dist/components/Backdrop/BackdropFlows.module.css.js +80 -0
  76. package/dist/components/Backdrop/BackdropFlows.module.css.js.map +1 -0
  77. package/dist/components/Backdrop/BackdropFrame.d.ts +36 -0
  78. package/dist/components/Backdrop/BackdropFrame.js +15 -0
  79. package/dist/components/Backdrop/BackdropFrame.js.map +1 -0
  80. package/dist/components/Backdrop/BackdropFrame.module.css.js +14 -0
  81. package/dist/components/Backdrop/BackdropFrame.module.css.js.map +1 -0
  82. package/dist/components/Backdrop/BackdropGlobalPanels.d.ts +272 -0
  83. package/dist/components/Backdrop/BackdropGlobalPanels.js +264 -0
  84. package/dist/components/Backdrop/BackdropGlobalPanels.js.map +1 -0
  85. package/dist/components/Backdrop/BackdropGlobalPanels.module.css.js +201 -0
  86. package/dist/components/Backdrop/BackdropGlobalPanels.module.css.js.map +1 -0
  87. package/dist/components/Backdrop/BackdropHub.d.ts +80 -0
  88. package/dist/components/Backdrop/BackdropHub.js +92 -0
  89. package/dist/components/Backdrop/BackdropHub.js.map +1 -0
  90. package/dist/components/Backdrop/BackdropHub.module.css.js +40 -0
  91. package/dist/components/Backdrop/BackdropHub.module.css.js.map +1 -0
  92. package/dist/components/Backdrop/BackdropLists.d.ts +165 -0
  93. package/dist/components/Backdrop/BackdropLists.js +162 -0
  94. package/dist/components/Backdrop/BackdropLists.js.map +1 -0
  95. package/dist/components/Backdrop/BackdropLists.module.css.js +114 -0
  96. package/dist/components/Backdrop/BackdropLists.module.css.js.map +1 -0
  97. package/dist/components/Backdrop/BackdropOverlays.d.ts +175 -0
  98. package/dist/components/Backdrop/BackdropOverlays.js +252 -0
  99. package/dist/components/Backdrop/BackdropOverlays.js.map +1 -0
  100. package/dist/components/Backdrop/BackdropOverlays.module.css.js +104 -0
  101. package/dist/components/Backdrop/BackdropOverlays.module.css.js.map +1 -0
  102. package/dist/components/Backdrop/BackdropPage.d.ts +73 -0
  103. package/dist/components/Backdrop/BackdropPage.js +65 -0
  104. package/dist/components/Backdrop/BackdropPage.js.map +1 -0
  105. package/dist/components/Backdrop/BackdropPage.module.css.js +46 -0
  106. package/dist/components/Backdrop/BackdropPage.module.css.js.map +1 -0
  107. package/dist/components/Backdrop/BackdropPatterns.d.ts +224 -0
  108. package/dist/components/Backdrop/BackdropPatterns.js +202 -0
  109. package/dist/components/Backdrop/BackdropPatterns.js.map +1 -0
  110. package/dist/components/Backdrop/BackdropPatterns.module.css.js +114 -0
  111. package/dist/components/Backdrop/BackdropPatterns.module.css.js.map +1 -0
  112. package/dist/components/Backdrop/BackdropRail.d.ts +63 -0
  113. package/dist/components/Backdrop/BackdropRail.js +98 -0
  114. package/dist/components/Backdrop/BackdropRail.js.map +1 -0
  115. package/dist/components/Backdrop/BackdropRail.module.css.js +42 -0
  116. package/dist/components/Backdrop/BackdropRail.module.css.js.map +1 -0
  117. package/dist/components/Backdrop/BackdropSheets.d.ts +68 -0
  118. package/dist/components/Backdrop/BackdropSheets.js +75 -0
  119. package/dist/components/Backdrop/BackdropSheets.js.map +1 -0
  120. package/dist/components/Backdrop/BackdropSheets.module.css.js +42 -0
  121. package/dist/components/Backdrop/BackdropSheets.module.css.js.map +1 -0
  122. package/dist/components/Backdrop/BackdropTabs.d.ts +20 -0
  123. package/dist/components/Backdrop/BackdropTabs.js +31 -0
  124. package/dist/components/Backdrop/BackdropTabs.js.map +1 -0
  125. package/dist/components/Backdrop/BackdropTabs.module.css.js +16 -0
  126. package/dist/components/Backdrop/BackdropTabs.module.css.js.map +1 -0
  127. package/dist/components/Backdrop/BackdropTooltip.d.ts +21 -0
  128. package/dist/components/Backdrop/BackdropTooltip.js +15 -0
  129. package/dist/components/Backdrop/BackdropTooltip.js.map +1 -0
  130. package/dist/components/Backdrop/BackdropTooltip.module.css.js +18 -0
  131. package/dist/components/Backdrop/BackdropTooltip.module.css.js.map +1 -0
  132. package/dist/components/Backdrop/BackdropTopStrip.d.ts +65 -0
  133. package/dist/components/Backdrop/BackdropTopStrip.js +46 -0
  134. package/dist/components/Backdrop/BackdropTopStrip.js.map +1 -0
  135. package/dist/components/Backdrop/BackdropTopStrip.module.css.js +40 -0
  136. package/dist/components/Backdrop/BackdropTopStrip.module.css.js.map +1 -0
  137. package/dist/components/Backdrop/cx.d.ts +2 -0
  138. package/dist/components/Backdrop/cx.js +7 -0
  139. package/dist/components/Backdrop/cx.js.map +1 -0
  140. package/dist/components/Backdrop/icons.d.ts +70 -0
  141. package/dist/components/Backdrop/icons.js +103 -0
  142. package/dist/components/Backdrop/icons.js.map +1 -0
  143. package/dist/components/TopBar/TopBar.d.ts +8 -1
  144. package/dist/components/TopBar/TopBar.js +19 -16
  145. package/dist/components/TopBar/TopBar.js.map +1 -1
  146. package/dist/index.d.ts +4 -2
  147. package/dist/index.js +40 -36
  148. package/dist/index.js.map +1 -1
  149. package/dist/style.css +1 -1
  150. package/package.json +23 -4
@@ -0,0 +1,104 @@
1
+ const t = "_popover_18gyp_5", o = "_anchor_18gyp_35", _ = "_placement_18gyp_40", n = "_menuList_18gyp_54", e = "_menuItem_18gyp_62", s = "_divider_18gyp_67", g = "_row_18gyp_74", a = "_rowHighlighted_18gyp_98", i = "_rowStatic_18gyp_111", d = "_rowIcon_18gyp_117", p = "_rowLabel_18gyp_127", c = "_rowTrailing_18gyp_132", y = "_segmented_18gyp_143", r = "_segment_18gyp_143", l = "_segmentedLg_18gyp_175", w = "_segmentIcon_18gyp_187", m = "_scrim_18gyp_199", L = "_contained_18gyp_210", h = "_top_18gyp_214", b = "_dialog_18gyp_219", u = "_dialogHeader_18gyp_236", H = "_dialogTitle_18gyp_244", I = "_dialogBody_18gyp_253", v = "_dialogHeaderLeading_18gyp_263", C = "_dialogLeading_18gyp_272", T = "_dialogHeaderSettings_18gyp_284", k = "_settingsBody_18gyp_296", B = "_sectionNav_18gyp_302", S = "_sectionList_18gyp_311", A = "_section_18gyp_302", x = "_settingsContent_18gyp_354", f = "_settingsContentPadding_18gyp_362", D = "_dialogFooter_18gyp_367", F = "_toastRegion_18gyp_387", N = "_toast_18gyp_387", P = "_toastDanger_18gyp_429", R = "_toastIcon_18gyp_433", j = "_toastText_18gyp_437", q = "_toastAction_18gyp_441", z = "_toastClose_18gyp_451", E = {
2
+ popover: t,
3
+ "boost33-backdrop-pop": "_boost33-backdrop-pop_18gyp_1",
4
+ "w-help": "_w-help_18gyp_24",
5
+ "w-account": "_w-account_18gyp_25",
6
+ "w-tokens": "_w-tokens_18gyp_26",
7
+ "w-mission": "_w-mission_18gyp_27",
8
+ "w-allApps": "_w-allApps_18gyp_28",
9
+ "w-auto": "_w-auto_18gyp_29",
10
+ "pad-menu": "_pad-menu_18gyp_31",
11
+ "pad-card": "_pad-card_18gyp_32",
12
+ "pad-none": "_pad-none_18gyp_33",
13
+ anchor: o,
14
+ placement: _,
15
+ "side-bottom": "_side-bottom_18gyp_45",
16
+ "align-start": "_align-start_18gyp_46",
17
+ "align-end": "_align-end_18gyp_47",
18
+ "side-right": "_side-right_18gyp_48",
19
+ menuList: n,
20
+ menuItem: e,
21
+ divider: s,
22
+ row: g,
23
+ rowHighlighted: a,
24
+ rowStatic: i,
25
+ rowIcon: d,
26
+ rowLabel: p,
27
+ rowTrailing: c,
28
+ segmented: y,
29
+ segment: r,
30
+ segmentedLg: l,
31
+ segmentIcon: w,
32
+ scrim: m,
33
+ contained: L,
34
+ top: h,
35
+ dialog: b,
36
+ "dw-form": "_dw-form_18gyp_233",
37
+ "dw-search": "_dw-search_18gyp_234",
38
+ dialogHeader: u,
39
+ dialogTitle: H,
40
+ dialogBody: I,
41
+ dialogHeaderLeading: v,
42
+ dialogLeading: C,
43
+ "dw-settings": "_dw-settings_18gyp_277",
44
+ dialogHeaderSettings: T,
45
+ settingsBody: k,
46
+ sectionNav: B,
47
+ sectionList: S,
48
+ section: A,
49
+ settingsContent: x,
50
+ settingsContentPadding: f,
51
+ dialogFooter: D,
52
+ toastRegion: F,
53
+ toast: N,
54
+ "boost33-backdrop-toast": "_boost33-backdrop-toast_18gyp_1",
55
+ toastDanger: P,
56
+ toastIcon: R,
57
+ toastText: j,
58
+ toastAction: q,
59
+ toastClose: z
60
+ };
61
+ export {
62
+ o as anchor,
63
+ L as contained,
64
+ E as default,
65
+ b as dialog,
66
+ I as dialogBody,
67
+ D as dialogFooter,
68
+ u as dialogHeader,
69
+ v as dialogHeaderLeading,
70
+ T as dialogHeaderSettings,
71
+ C as dialogLeading,
72
+ H as dialogTitle,
73
+ s as divider,
74
+ e as menuItem,
75
+ n as menuList,
76
+ _ as placement,
77
+ t as popover,
78
+ g as row,
79
+ a as rowHighlighted,
80
+ d as rowIcon,
81
+ p as rowLabel,
82
+ i as rowStatic,
83
+ c as rowTrailing,
84
+ m as scrim,
85
+ A as section,
86
+ S as sectionList,
87
+ B as sectionNav,
88
+ r as segment,
89
+ w as segmentIcon,
90
+ y as segmented,
91
+ l as segmentedLg,
92
+ k as settingsBody,
93
+ x as settingsContent,
94
+ f as settingsContentPadding,
95
+ N as toast,
96
+ q as toastAction,
97
+ z as toastClose,
98
+ P as toastDanger,
99
+ R as toastIcon,
100
+ F as toastRegion,
101
+ j as toastText,
102
+ h as top
103
+ };
104
+ //# sourceMappingURL=BackdropOverlays.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackdropOverlays.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,73 @@
1
+ import { ElementType, HTMLAttributes, ReactNode } from 'react';
2
+ /** The package's link-or-button action shape. */
3
+ export interface BackdropPageAction {
4
+ label: string;
5
+ onClick?: () => void;
6
+ href?: string;
7
+ }
8
+ export interface BackdropBackLinkProps {
9
+ /** Where back leads, named by the page it returns to: "Opportunities". */
10
+ label: string;
11
+ /** A link by default. Without `href` it renders as a button (Stage B wires `onClick`). */
12
+ href?: string;
13
+ onClick?: () => void;
14
+ /** The element the link renders through, for a router's link (ADR-0011). */
15
+ linkComponent?: ElementType;
16
+ className?: string;
17
+ }
18
+ /** "← Opportunities" above a detail page's title. One icon, always `arrow-left`. */
19
+ export declare function BackdropBackLink({ label, href, onClick, linkComponent: Link, className }: BackdropBackLinkProps): import("react").JSX.Element;
20
+ /** `page` is 32px (--backdrop-text-page); `hero` is 40px, for the Hub greeting and focus flows only (ADR-0017, D1). */
21
+ export type BackdropPageHeaderSize = 'page' | 'hero';
22
+ export interface BackdropPageHeaderProps {
23
+ /** The page's name. Renders as the page's one <h1>. */
24
+ title: ReactNode;
25
+ /** Defaults to `page`. `hero` only for the Hub greeting and focus flows. */
26
+ size?: BackdropPageHeaderSize;
27
+ /** One fact under the title: "Atelier Nord · Furniture & fit-out · Lyon". */
28
+ fact?: ReactNode;
29
+ /** Trailing actions, at the right of the title row. */
30
+ actions?: ReactNode;
31
+ /** A detail page's way back, drawn above the title with BackdropBackLink. */
32
+ back?: BackdropPageAction;
33
+ linkComponent?: ElementType;
34
+ className?: string;
35
+ }
36
+ export declare function BackdropPageHeader({ title, size, fact, actions, back, linkComponent, className }: BackdropPageHeaderProps): import("react").JSX.Element;
37
+ export interface BackdropSectionHeaderProps {
38
+ /** The section's name: "Campaigns". */
39
+ label: ReactNode;
40
+ /** A short count after the label: "3 of 4", "12". Muted, outside the heading. */
41
+ count?: ReactNode;
42
+ /** A trailing link: "View all". Drawn as BackdropTextLink. */
43
+ action?: BackdropPageAction;
44
+ /** A trailing fact instead of, or before, the link: "Updated 2 h ago". */
45
+ meta?: ReactNode;
46
+ /** The heading level. 2 under a page title, 3 inside a section. Size does not change. */
47
+ level?: 2 | 3;
48
+ /** A hairline below. Off by default, as most Final boards draw none (Jamal at the set 2 gate, 11 Nov). */
49
+ divider?: boolean;
50
+ /** An id for the heading, so a region can name itself by it (BackdropSettingsSection's `aria-labelledby`). */
51
+ headingId?: string;
52
+ linkComponent?: ElementType;
53
+ className?: string;
54
+ }
55
+ export declare function BackdropSectionHeader({ label, count, action, meta, level, divider, headingId, linkComponent, className }: BackdropSectionHeaderProps): import("react").JSX.Element;
56
+ /**
57
+ * ADR-0017, D3: `flat` has a hairline edge; `raised` a ring and one shadow.
58
+ * There is no third edge. `panel` (Batch 3) has no edge at all: the panel grey
59
+ * fill alone, for an aside that sits beside the page's content rather than on
60
+ * it (Brokers offer commission card, Financing application "Ready" card).
61
+ */
62
+ export type BackdropCardSurface = 'flat' | 'raised' | 'panel';
63
+ /** `none` 0 (the content owns its padding, e.g. a list whose rows pad themselves), `sm` 16, `md` 20, `lg` 24. */
64
+ export type BackdropCardPadding = 'none' | 'sm' | 'md' | 'lg';
65
+ export interface BackdropCardProps extends HTMLAttributes<HTMLElement> {
66
+ surface?: BackdropCardSurface;
67
+ padding?: BackdropCardPadding;
68
+ /** The element to render: `div` by default; `section` or `article` when the card is a region of its own. */
69
+ as?: 'div' | 'section' | 'article' | 'li';
70
+ children?: ReactNode;
71
+ }
72
+ /** A white card at radius 16 (ADR-0017, D2). Draws a surface only: layout inside is the caller's. */
73
+ export declare function BackdropCard({ surface, padding, as: Element, className, children, ...rest }: BackdropCardProps): import("react").JSX.Element;
@@ -0,0 +1,65 @@
1
+ import { jsx as n, jsxs as s, Fragment as f } from "react/jsx-runtime";
2
+ import e from "./BackdropPage.module.css.js";
3
+ import { cx as o } from "./cx.js";
4
+ import { BackdropTextLink as k } from "./BackdropButton.js";
5
+ const N = () => /* @__PURE__ */ s(
6
+ "svg",
7
+ {
8
+ "aria-hidden": "true",
9
+ focusable: "false",
10
+ className: e.backIcon,
11
+ viewBox: "0 0 24 24",
12
+ fill: "none",
13
+ stroke: "currentColor",
14
+ strokeWidth: 2,
15
+ strokeLinecap: "round",
16
+ strokeLinejoin: "round",
17
+ children: [
18
+ /* @__PURE__ */ n("path", { d: "M5 12l14 0" }),
19
+ /* @__PURE__ */ n("path", { d: "M5 12l6 6" }),
20
+ /* @__PURE__ */ n("path", { d: "M5 12l6 -6" })
21
+ ]
22
+ }
23
+ );
24
+ function v({ label: d, href: a, onClick: r, linkComponent: i = "a", className: l }) {
25
+ const c = /* @__PURE__ */ s(f, { children: [
26
+ /* @__PURE__ */ n(N, {}),
27
+ /* @__PURE__ */ n("span", { children: d })
28
+ ] });
29
+ return a !== void 0 ? /* @__PURE__ */ n(i, { href: a, onClick: r, className: o(e.back, l), children: c }) : /* @__PURE__ */ n("button", { type: "button", onClick: r, className: o(e.back, l), children: c });
30
+ }
31
+ function x({ title: d, size: a = "page", fact: r, actions: i, back: l, linkComponent: c, className: t }) {
32
+ return /* @__PURE__ */ s("header", { className: o(e.header, t), children: [
33
+ l && /* @__PURE__ */ n(v, { label: l.label, href: l.href, onClick: l.onClick, linkComponent: c }),
34
+ /* @__PURE__ */ s("div", { className: e.headerRow, children: [
35
+ /* @__PURE__ */ s("div", { className: e.headings, children: [
36
+ /* @__PURE__ */ n("h1", { className: o(e.title, a === "hero" && e.titleHero), children: d }),
37
+ r != null && /* @__PURE__ */ n("p", { className: e.fact, children: r })
38
+ ] }),
39
+ i != null && /* @__PURE__ */ n("div", { className: e.actions, children: i })
40
+ ] })
41
+ ] });
42
+ }
43
+ function L({ label: d, count: a, action: r, meta: i, level: l = 2, divider: c = !1, headingId: t, linkComponent: h, className: m }) {
44
+ const p = l === 3 ? "h3" : "h2", u = i != null || r !== void 0;
45
+ return /* @__PURE__ */ s("div", { className: o(e.section, c && e.sectionDivider, m), children: [
46
+ /* @__PURE__ */ s("div", { className: e.sectionLead, children: [
47
+ /* @__PURE__ */ n(p, { id: t, className: e.sectionTitle, children: d }),
48
+ a != null && /* @__PURE__ */ n("span", { className: e.sectionCount, children: a })
49
+ ] }),
50
+ u && /* @__PURE__ */ s("div", { className: e.sectionTrailing, children: [
51
+ i != null && /* @__PURE__ */ n("span", { className: e.sectionMeta, children: i }),
52
+ r && /* @__PURE__ */ n(k, { href: r.href, onClick: r.onClick, linkComponent: h, children: r.label })
53
+ ] })
54
+ ] });
55
+ }
56
+ function H({ surface: d = "flat", padding: a = "md", as: r = "div", className: i, children: l, ...c }) {
57
+ return /* @__PURE__ */ n(r, { className: o(e.card, e[`card-${d}`], a !== "none" && e[`pad-${a}`], i), ...c, children: l });
58
+ }
59
+ export {
60
+ v as BackdropBackLink,
61
+ H as BackdropCard,
62
+ x as BackdropPageHeader,
63
+ L as BackdropSectionHeader
64
+ };
65
+ //# sourceMappingURL=BackdropPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackdropPage.js","sources":["../../../src/components/Backdrop/BackdropPage.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes, ReactNode } from 'react'\nimport styles from './BackdropPage.module.css'\nimport { cx } from './cx'\nimport { BackdropTextLink } from './BackdropButton'\n\n/*\n * The parts every page body is built from, inside the content sheet:\n *\n * Page header the page's title (ADR-0017, D1), an optional fact line,\n * trailing actions, and on a detail page a back link above.\n * Back link \"← Opportunities\": the way back up from a detail page.\n * Section header a section's label, an optional count, an optional trailing\n * link or fact, and a hairline below.\n * Card the two card surfaces (ADR-0017, D3) at radius 16 (D2).\n *\n * Stage A: presentational. Links take the package's action shape\n * ({ label, onClick?, href? }, as BackdropNextStepCard and BackdropAvailability\n * do) and a `linkComponent` for a router's link, so wiring is uniform later.\n *\n * Separate from the 0.8 PageHeader (src/components/PageHeader), which four live\n * products render and whose approved baselines this must not move. It borrows\n * that component's semantics only: a <header> holding the page's one <h1>,\n * with the actions after the heading in reading order.\n */\n\n/** The package's link-or-button action shape. */\nexport interface BackdropPageAction {\n label: string\n onClick?: () => void\n href?: string\n}\n\n/* Tabler `arrow-left` (MIT), the `back` meaning in backdrop-icons.ts (ADR-0017,\n D18). Drawn here, not passed in, so every back link carries the same one\n icon. 16px at stroke 2 (D17). Decorative: the link's words name it. */\nconst ArrowLeft = () => (\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n className={styles.backIcon}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M5 12l14 0\" />\n <path d=\"M5 12l6 6\" />\n <path d=\"M5 12l6 -6\" />\n </svg>\n)\n\n/* ── Back link ─────────────────────────────────────────────────────────── */\n\nexport interface BackdropBackLinkProps {\n /** Where back leads, named by the page it returns to: \"Opportunities\". */\n label: string\n /** A link by default. Without `href` it renders as a button (Stage B wires `onClick`). */\n href?: string\n onClick?: () => void\n /** The element the link renders through, for a router's link (ADR-0011). */\n linkComponent?: ElementType\n className?: string\n}\n\n/** \"← Opportunities\" above a detail page's title. One icon, always `arrow-left`. */\nexport function BackdropBackLink({ label, href, onClick, linkComponent: Link = 'a', className }: BackdropBackLinkProps) {\n const body = (\n <>\n <ArrowLeft />\n <span>{label}</span>\n </>\n )\n if (href !== undefined) {\n return (\n <Link href={href} onClick={onClick} className={cx(styles.back, className)}>\n {body}\n </Link>\n )\n }\n return (\n <button type=\"button\" onClick={onClick} className={cx(styles.back, className)}>\n {body}\n </button>\n )\n}\n\n/* ── Page header ───────────────────────────────────────────────────────── */\n\n/** `page` is 32px (--backdrop-text-page); `hero` is 40px, for the Hub greeting and focus flows only (ADR-0017, D1). */\nexport type BackdropPageHeaderSize = 'page' | 'hero'\n\nexport interface BackdropPageHeaderProps {\n /** The page's name. Renders as the page's one <h1>. */\n title: ReactNode\n /** Defaults to `page`. `hero` only for the Hub greeting and focus flows. */\n size?: BackdropPageHeaderSize\n /** One fact under the title: \"Atelier Nord · Furniture & fit-out · Lyon\". */\n fact?: ReactNode\n /** Trailing actions, at the right of the title row. */\n actions?: ReactNode\n /** A detail page's way back, drawn above the title with BackdropBackLink. */\n back?: BackdropPageAction\n linkComponent?: ElementType\n className?: string\n}\n\nexport function BackdropPageHeader({ title, size = 'page', fact, actions, back, linkComponent, className }: BackdropPageHeaderProps) {\n return (\n <header className={cx(styles.header, className)}>\n {back && <BackdropBackLink label={back.label} href={back.href} onClick={back.onClick} linkComponent={linkComponent} />}\n <div className={styles.headerRow}>\n <div className={styles.headings}>\n <h1 className={cx(styles.title, size === 'hero' && styles.titleHero)}>{title}</h1>\n {fact != null && <p className={styles.fact}>{fact}</p>}\n </div>\n {actions != null && <div className={styles.actions}>{actions}</div>}\n </div>\n </header>\n )\n}\n\n/* ── Section header ────────────────────────────────────────────────────── */\n\nexport interface BackdropSectionHeaderProps {\n /** The section's name: \"Campaigns\". */\n label: ReactNode\n /** A short count after the label: \"3 of 4\", \"12\". Muted, outside the heading. */\n count?: ReactNode\n /** A trailing link: \"View all\". Drawn as BackdropTextLink. */\n action?: BackdropPageAction\n /** A trailing fact instead of, or before, the link: \"Updated 2 h ago\". */\n meta?: ReactNode\n /** The heading level. 2 under a page title, 3 inside a section. Size does not change. */\n level?: 2 | 3\n /** A hairline below. Off by default, as most Final boards draw none (Jamal at the set 2 gate, 11 Nov). */\n divider?: boolean\n /** An id for the heading, so a region can name itself by it (BackdropSettingsSection's `aria-labelledby`). */\n headingId?: string\n linkComponent?: ElementType\n className?: string\n}\n\n/*\n * One size for every section header: Outfit 20/600 (--text-xl), the value the\n * Final boards draw most (Brokers, Hub, Score, Off-market). The 13/600 and\n * 15/600 labels the review also found are labels inside a card, not section\n * headers, and are not this component.\n */\nexport function BackdropSectionHeader({ label, count, action, meta, level = 2, divider = false, headingId, linkComponent, className }: BackdropSectionHeaderProps) {\n const Heading = level === 3 ? 'h3' : 'h2'\n const trailing = meta != null || action !== undefined\n return (\n <div className={cx(styles.section, divider && styles.sectionDivider, className)}>\n <div className={styles.sectionLead}>\n <Heading id={headingId} className={styles.sectionTitle}>\n {label}\n </Heading>\n {count != null && <span className={styles.sectionCount}>{count}</span>}\n </div>\n {trailing && (\n <div className={styles.sectionTrailing}>\n {meta != null && <span className={styles.sectionMeta}>{meta}</span>}\n {action && (\n <BackdropTextLink href={action.href} onClick={action.onClick} linkComponent={linkComponent}>\n {action.label}\n </BackdropTextLink>\n )}\n </div>\n )}\n </div>\n )\n}\n\n/* ── Card ──────────────────────────────────────────────────────────────── */\n\n/**\n * ADR-0017, D3: `flat` has a hairline edge; `raised` a ring and one shadow.\n * There is no third edge. `panel` (Batch 3) has no edge at all: the panel grey\n * fill alone, for an aside that sits beside the page's content rather than on\n * it (Brokers offer commission card, Financing application \"Ready\" card).\n */\nexport type BackdropCardSurface = 'flat' | 'raised' | 'panel'\n/** `none` 0 (the content owns its padding, e.g. a list whose rows pad themselves), `sm` 16, `md` 20, `lg` 24. */\nexport type BackdropCardPadding = 'none' | 'sm' | 'md' | 'lg'\n\nexport interface BackdropCardProps extends HTMLAttributes<HTMLElement> {\n surface?: BackdropCardSurface\n padding?: BackdropCardPadding\n /** The element to render: `div` by default; `section` or `article` when the card is a region of its own. */\n as?: 'div' | 'section' | 'article' | 'li'\n children?: ReactNode\n}\n\n/** A white card at radius 16 (ADR-0017, D2). Draws a surface only: layout inside is the caller's. */\nexport function BackdropCard({ surface = 'flat', padding = 'md', as: Element = 'div', className, children, ...rest }: BackdropCardProps) {\n return (\n <Element className={cx(styles.card, styles[`card-${surface}`], padding !== 'none' && styles[`pad-${padding}`], className)} {...rest}>\n {children}\n </Element>\n )\n}\n"],"names":["ArrowLeft","jsxs","styles","jsx","BackdropBackLink","label","href","onClick","Link","className","body","Fragment","cx","BackdropPageHeader","title","size","fact","actions","back","linkComponent","BackdropSectionHeader","count","action","meta","level","divider","headingId","Heading","trailing","BackdropTextLink","BackdropCard","surface","padding","Element","children","rest"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ const c = "_back_151dc_21", t = "_backIcon_151dc_49", _ = "_header_151dc_58", e = "_headerRow_151dc_67", d = "_headings_151dc_74", n = "_title_151dc_82", o = "_titleHero_151dc_92", a = "_fact_151dc_97", s = "_actions_151dc_104", i = "_section_151dc_113", r = "_sectionDivider_151dc_124", l = "_sectionLead_151dc_129", h = "_sectionTitle_151dc_136", p = "_sectionCount_151dc_145", g = "_sectionTrailing_151dc_152", b = "_sectionMeta_151dc_161", f = "_card_151dc_170", k = {
2
+ back: c,
3
+ backIcon: t,
4
+ header: _,
5
+ headerRow: e,
6
+ headings: d,
7
+ title: n,
8
+ titleHero: o,
9
+ fact: a,
10
+ actions: s,
11
+ section: i,
12
+ sectionDivider: r,
13
+ sectionLead: l,
14
+ sectionTitle: h,
15
+ sectionCount: p,
16
+ sectionTrailing: g,
17
+ sectionMeta: b,
18
+ card: f,
19
+ "card-flat": "_card-flat_151dc_178",
20
+ "card-raised": "_card-raised_151dc_183",
21
+ "card-panel": "_card-panel_151dc_188",
22
+ "pad-sm": "_pad-sm_151dc_192",
23
+ "pad-md": "_pad-md_151dc_196",
24
+ "pad-lg": "_pad-lg_151dc_200"
25
+ };
26
+ export {
27
+ s as actions,
28
+ c as back,
29
+ t as backIcon,
30
+ f as card,
31
+ k as default,
32
+ a as fact,
33
+ _ as header,
34
+ e as headerRow,
35
+ d as headings,
36
+ i as section,
37
+ p as sectionCount,
38
+ r as sectionDivider,
39
+ l as sectionLead,
40
+ b as sectionMeta,
41
+ h as sectionTitle,
42
+ g as sectionTrailing,
43
+ n as title,
44
+ o as titleHero
45
+ };
46
+ //# sourceMappingURL=BackdropPage.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackdropPage.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,224 @@
1
+ import { ButtonHTMLAttributes, ElementType, ReactNode } from 'react';
2
+ import { BackdropPillTone } from './BackdropBasics';
3
+ import { BackdropMenuRow } from './BackdropOverlays';
4
+ export interface BackdropDisclosureProps {
5
+ /** The labelled link: "More options", "How we scored this". Never a bare icon. */
6
+ summary: ReactNode;
7
+ /** A short fact after the label naming what is inside: "Send window, daily limit". */
8
+ hint?: ReactNode;
9
+ children: ReactNode;
10
+ /**
11
+ * 1 for a disclosure on the page, 2 for one inside another. There is no 3:
12
+ * the depth rule caps disclosure at two levels, and the type enforces it.
13
+ */
14
+ level?: 1 | 2;
15
+ /** Open on first render. The element then manages itself (native details). */
16
+ defaultOpen?: boolean;
17
+ className?: string;
18
+ }
19
+ /** Native <details>: keyboard, state and announcement come from the browser, no script. */
20
+ export declare function BackdropDisclosure({ summary, hint, children, level, defaultOpen, className }: BackdropDisclosureProps): import("react").JSX.Element;
21
+ export interface BackdropOverflowMenuProps {
22
+ /** The button's name: "More actions", "More actions for Hotels in the Alps". */
23
+ label: string;
24
+ rows: BackdropMenuRow[];
25
+ /** `page`: a 40px outline button in a page header. `row`: a 32px ghost in a list row. */
26
+ size?: 'page' | 'row';
27
+ /** Controlled open state. Omit it and the menu keeps its own. */
28
+ open?: boolean;
29
+ /** Starting state when uncontrolled: a story draws the menu open with this. */
30
+ defaultOpen?: boolean;
31
+ onOpenChange?: (open: boolean) => void;
32
+ align?: 'start' | 'end';
33
+ linkComponent?: ElementType;
34
+ }
35
+ export declare function BackdropOverflowMenu({ label, rows, size, open, defaultOpen, onOpenChange, align, linkComponent }: BackdropOverflowMenuProps): import("react").JSX.Element;
36
+ export interface BackdropFilterButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
37
+ /** "Filter". */
38
+ label: string;
39
+ /** How many filters are on. 0 or undefined: no badge. */
40
+ activeCount?: number;
41
+ /** Spoken with the count: "2 filters on". */
42
+ activeLabel?: string;
43
+ open?: boolean;
44
+ }
45
+ export declare function BackdropFilterButton({ label, activeCount, activeLabel, open, ...rest }: BackdropFilterButtonProps): import("react").JSX.Element;
46
+ export interface BackdropFilterOption {
47
+ key: string;
48
+ label: ReactNode;
49
+ checked: boolean;
50
+ count?: ReactNode;
51
+ }
52
+ export interface BackdropFilterPopoverProps {
53
+ /** The panel's name ("Filters"). */
54
+ label: string;
55
+ groups: {
56
+ key: string;
57
+ label: string;
58
+ options: BackdropFilterOption[];
59
+ }[];
60
+ onToggle?: (groupKey: string, optionKey: string) => void;
61
+ /** "Clear all", a text link at the foot. */
62
+ clearLabel?: string;
63
+ onClear?: () => void;
64
+ }
65
+ /** The filters a list hides until asked: grouped checkboxes, one Clear link. Filters apply as they are ticked. */
66
+ export declare function BackdropFilterPopover({ label, groups, onToggle, clearLabel, onClear }: BackdropFilterPopoverProps): import("react").JSX.Element;
67
+ export interface BackdropCheckboxProps {
68
+ checked: boolean | 'mixed';
69
+ /** The checkbox's name: "Select Hotels in the Alps", "Select all". */
70
+ label: string;
71
+ /** The label is printed elsewhere (a row's name); keep it for assistive tech only. */
72
+ hideLabel?: boolean;
73
+ disabled?: boolean;
74
+ onChange?: (checked: boolean) => void;
75
+ className?: string;
76
+ }
77
+ export declare function BackdropCheckbox({ checked, label, hideLabel, disabled, onChange, className }: BackdropCheckboxProps): import("react").JSX.Element;
78
+ export interface BackdropBulkBarProps {
79
+ /** How many rows are ticked. The bar renders nothing at 0. */
80
+ count: number;
81
+ /** "3 selected", formatted by the caller. */
82
+ selectedText: ReactNode;
83
+ /** The bulk actions, as ink-bar buttons (BackdropBulkAction). */
84
+ actions: ReactNode;
85
+ /** "Clear selection". */
86
+ clearLabel: string;
87
+ onClear?: () => void;
88
+ /** The region's name ("Bulk actions"). */
89
+ label: string;
90
+ className?: string;
91
+ }
92
+ /** An ink bar floating at the foot of the list, only while one row or more is selected. */
93
+ export declare function BackdropBulkBar({ count, selectedText, actions, clearLabel, onClear, label, className }: BackdropBulkBarProps): import("react").JSX.Element | null;
94
+ export declare function BackdropBulkAction({ children, icon, ...rest }: ButtonHTMLAttributes<HTMLButtonElement> & {
95
+ icon?: ReactNode;
96
+ }): import("react").JSX.Element;
97
+ /** The single card: `default` is the sunken strip, `hero` the raised card that leads an overview. */
98
+ export interface BackdropNextStepSingleProps {
99
+ rows?: never;
100
+ /** 20px icon in the white tile (18px in the hero's 36px tile). */
101
+ icon: ReactNode;
102
+ /** What needs the person: "5 messages to approve". */
103
+ title: ReactNode;
104
+ /** One fact: "From 2 campaigns". */
105
+ caption?: ReactNode;
106
+ /** The screen's ONE orange button. */
107
+ action: {
108
+ label: string;
109
+ onClick?: () => void;
110
+ href?: string;
111
+ };
112
+ /** `default` (the strip) or `hero` (a raised card with a head row and a 28px title). */
113
+ size?: 'default' | 'hero';
114
+ /** Hero only: what the card is about, beside the icon tile in the head row ("Electricity"). */
115
+ subject?: ReactNode;
116
+ /** Hero only: a status pill at the head row's right ("Closes in 4 days"), drawn with BackdropPill. */
117
+ status?: {
118
+ label: ReactNode;
119
+ tone?: BackdropPillTone;
120
+ };
121
+ label?: never;
122
+ linkComponent?: ElementType;
123
+ className?: string;
124
+ }
125
+ export interface BackdropNextStepRow {
126
+ key: string;
127
+ /** 18px icon in the 36px tile. */
128
+ icon: ReactNode;
129
+ /** "Oak boards for chairs". */
130
+ title: ReactNode;
131
+ /** One fact: "2 offers within budget · closes 30 Nov". */
132
+ caption?: ReactNode;
133
+ /** The row's outline button. Never orange: the screen's one orange lives elsewhere. */
134
+ action?: {
135
+ label: string;
136
+ onClick?: () => void;
137
+ href?: string;
138
+ };
139
+ /** Anything before the action: a small bar and score, a date. */
140
+ trailing?: ReactNode;
141
+ }
142
+ /** The action list: several rows, each an icon tile, two lines of text and an outline action, in one raised card. */
143
+ export interface BackdropNextStepListProps {
144
+ rows: BackdropNextStepRow[];
145
+ /** The list's name ("Also needs you"). */
146
+ label: string;
147
+ icon?: never;
148
+ title?: never;
149
+ action?: never;
150
+ size?: never;
151
+ linkComponent?: ElementType;
152
+ className?: string;
153
+ }
154
+ export type BackdropNextStepCardProps = BackdropNextStepSingleProps | BackdropNextStepListProps;
155
+ /** One per screen, and only when something needs the person (research addition, 9 Nov). */
156
+ export declare function BackdropNextStepCard(props: BackdropNextStepCardProps): import("react").JSX.Element;
157
+ export interface BackdropAllSetProps {
158
+ /** "Nothing needs you right now." A plain fact, never cheerleading (copy guide). */
159
+ children: ReactNode;
160
+ /** The sub-line under it: what will bring the person back ("We'll tell you when a supplier clears the bar."). */
161
+ detail?: ReactNode;
162
+ className?: string;
163
+ }
164
+ export declare function BackdropAllSet({ children, detail, className }: BackdropAllSetProps): import("react").JSX.Element;
165
+ export interface BackdropAvailabilityAppProps {
166
+ /**
167
+ * Which of the three. The layout is the same; the state only decides the
168
+ * button's weight -- `soon` is an outline "Notify me" (nothing to do yet), the
169
+ * other two are the screen's orange action. Keeps "not built" and "not
170
+ * entitled" apart, as the hub's cardState does.
171
+ */
172
+ state: 'soon' | 'not-on-plan' | 'not-set-up';
173
+ /** The app's mark, 48px. */
174
+ mark: ReactNode;
175
+ /** "Brokers is coming soon", "Brokers is not on your plan", "Set up Outbound". */
176
+ title: ReactNode;
177
+ /** One sentence, ≤ 15 words. */
178
+ body: ReactNode;
179
+ action: {
180
+ label: string;
181
+ onClick?: () => void;
182
+ href?: string;
183
+ pressed?: boolean;
184
+ };
185
+ /** A second, quieter way out: "View plans", "Back to home". */
186
+ secondary?: {
187
+ label: string;
188
+ onClick?: () => void;
189
+ href?: string;
190
+ };
191
+ /** A tag beside the title: a BackdropSoonTag for `soon`. */
192
+ tag?: ReactNode;
193
+ icon?: never;
194
+ linkComponent?: ElementType;
195
+ className?: string;
196
+ }
197
+ /**
198
+ * `empty`: the one empty-state design (ADR-0017, D12) -- a 48px icon tile, a
199
+ * 20px title, one line of help, at most one action. A list or page with
200
+ * nothing in it yet ("No posts published yet"). There is no second action and
201
+ * no tag, and the type says so.
202
+ */
203
+ export interface BackdropAvailabilityEmptyProps {
204
+ state: 'empty';
205
+ /** 20px icon, drawn in the 48px tile. */
206
+ icon: ReactNode;
207
+ /** "No posts published yet". */
208
+ title: ReactNode;
209
+ /** One line: "Approve a post to see how it does." */
210
+ body: ReactNode;
211
+ /** At most one, and the screen's orange one when present. */
212
+ action?: {
213
+ label: string;
214
+ onClick?: () => void;
215
+ href?: string;
216
+ };
217
+ mark?: never;
218
+ secondary?: never;
219
+ tag?: never;
220
+ linkComponent?: ElementType;
221
+ className?: string;
222
+ }
223
+ export type BackdropAvailabilityProps = BackdropAvailabilityAppProps | BackdropAvailabilityEmptyProps;
224
+ export declare function BackdropAvailability(props: BackdropAvailabilityProps): import("react").JSX.Element;