@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.
- package/CHANGELOG.md +214 -123
- package/dist/backdrop-icons.d.ts +53 -0
- package/dist/backdrop-icons.js +62 -0
- package/dist/backdrop-icons.js.map +1 -0
- package/dist/backdrop.css +1 -0
- package/dist/backdrop.d.ts +46 -0
- package/dist/backdrop.js +127 -0
- package/dist/backdrop.js.map +1 -0
- package/dist/components/AccountMenu/AccountMenu.d.ts +42 -32
- package/dist/components/AccountMenu/AccountMenu.js +66 -48
- package/dist/components/AccountMenu/AccountMenu.js.map +1 -1
- package/dist/components/AccountMenu/AccountMenu.module.css.js +44 -38
- package/dist/components/AccountMenu/AccountMenu.module.css.js.map +1 -1
- package/dist/components/AccountMenu/StandardAccountMenu.d.ts +87 -0
- package/dist/components/AccountMenu/StandardAccountMenu.js +86 -0
- package/dist/components/AccountMenu/StandardAccountMenu.js.map +1 -0
- package/dist/components/AccountMenu/icons.d.ts +2 -2
- package/dist/components/AccountMenu/icons.js +21 -8
- package/dist/components/AccountMenu/icons.js.map +1 -1
- package/dist/components/AccountMenu/initials.d.ts +11 -0
- package/dist/components/AccountMenu/initials.js +8 -0
- package/dist/components/AccountMenu/initials.js.map +1 -0
- package/dist/components/AccountMenu/labels.d.ts +64 -3
- package/dist/components/AccountMenu/labels.js +33 -5
- package/dist/components/AccountMenu/labels.js.map +1 -1
- package/dist/components/AccountMenu/use-menu.d.ts +34 -0
- package/dist/components/AccountMenu/use-menu.js +102 -0
- package/dist/components/AccountMenu/use-menu.js.map +1 -0
- package/dist/components/Backdrop/BackdropAppMenu.d.ts +55 -0
- package/dist/components/Backdrop/BackdropAppMenu.js +79 -0
- package/dist/components/Backdrop/BackdropAppMenu.js.map +1 -0
- package/dist/components/Backdrop/BackdropAppMenu.module.css.js +48 -0
- package/dist/components/Backdrop/BackdropAppMenu.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropBasics.d.ts +129 -0
- package/dist/components/Backdrop/BackdropBasics.js +130 -0
- package/dist/components/Backdrop/BackdropBasics.js.map +1 -0
- package/dist/components/Backdrop/BackdropBasics.module.css.js +71 -0
- package/dist/components/Backdrop/BackdropBasics.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropButton.d.ts +63 -0
- package/dist/components/Backdrop/BackdropButton.js +59 -0
- package/dist/components/Backdrop/BackdropButton.js.map +1 -0
- package/dist/components/Backdrop/BackdropButton.module.css.js +41 -0
- package/dist/components/Backdrop/BackdropButton.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropCharts.d.ts +158 -0
- package/dist/components/Backdrop/BackdropCharts.js +222 -0
- package/dist/components/Backdrop/BackdropCharts.js.map +1 -0
- package/dist/components/Backdrop/BackdropCharts.module.css.js +109 -0
- package/dist/components/Backdrop/BackdropCharts.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropChrome.d.ts +26 -0
- package/dist/components/Backdrop/BackdropChrome.js +35 -0
- package/dist/components/Backdrop/BackdropChrome.js.map +1 -0
- package/dist/components/Backdrop/BackdropConversation.d.ts +67 -0
- package/dist/components/Backdrop/BackdropConversation.js +76 -0
- package/dist/components/Backdrop/BackdropConversation.js.map +1 -0
- package/dist/components/Backdrop/BackdropConversation.module.css.js +44 -0
- package/dist/components/Backdrop/BackdropConversation.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropData.d.ts +195 -0
- package/dist/components/Backdrop/BackdropData.js +204 -0
- package/dist/components/Backdrop/BackdropData.js.map +1 -0
- package/dist/components/Backdrop/BackdropData.module.css.js +135 -0
- package/dist/components/Backdrop/BackdropData.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropDisplay.d.ts +122 -0
- package/dist/components/Backdrop/BackdropDisplay.js +80 -0
- package/dist/components/Backdrop/BackdropDisplay.js.map +1 -0
- package/dist/components/Backdrop/BackdropDisplay.module.css.js +80 -0
- package/dist/components/Backdrop/BackdropDisplay.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropFields.d.ts +122 -0
- package/dist/components/Backdrop/BackdropFields.js +196 -0
- package/dist/components/Backdrop/BackdropFields.js.map +1 -0
- package/dist/components/Backdrop/BackdropFields.module.css.js +104 -0
- package/dist/components/Backdrop/BackdropFields.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropFlows.d.ts +128 -0
- package/dist/components/Backdrop/BackdropFlows.js +156 -0
- package/dist/components/Backdrop/BackdropFlows.js.map +1 -0
- package/dist/components/Backdrop/BackdropFlows.module.css.js +80 -0
- package/dist/components/Backdrop/BackdropFlows.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropFrame.d.ts +36 -0
- package/dist/components/Backdrop/BackdropFrame.js +15 -0
- package/dist/components/Backdrop/BackdropFrame.js.map +1 -0
- package/dist/components/Backdrop/BackdropFrame.module.css.js +14 -0
- package/dist/components/Backdrop/BackdropFrame.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropGlobalPanels.d.ts +272 -0
- package/dist/components/Backdrop/BackdropGlobalPanels.js +264 -0
- package/dist/components/Backdrop/BackdropGlobalPanels.js.map +1 -0
- package/dist/components/Backdrop/BackdropGlobalPanels.module.css.js +201 -0
- package/dist/components/Backdrop/BackdropGlobalPanels.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropHub.d.ts +80 -0
- package/dist/components/Backdrop/BackdropHub.js +92 -0
- package/dist/components/Backdrop/BackdropHub.js.map +1 -0
- package/dist/components/Backdrop/BackdropHub.module.css.js +40 -0
- package/dist/components/Backdrop/BackdropHub.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropLists.d.ts +165 -0
- package/dist/components/Backdrop/BackdropLists.js +162 -0
- package/dist/components/Backdrop/BackdropLists.js.map +1 -0
- package/dist/components/Backdrop/BackdropLists.module.css.js +114 -0
- package/dist/components/Backdrop/BackdropLists.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropOverlays.d.ts +175 -0
- package/dist/components/Backdrop/BackdropOverlays.js +252 -0
- package/dist/components/Backdrop/BackdropOverlays.js.map +1 -0
- package/dist/components/Backdrop/BackdropOverlays.module.css.js +104 -0
- package/dist/components/Backdrop/BackdropOverlays.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropPage.d.ts +73 -0
- package/dist/components/Backdrop/BackdropPage.js +65 -0
- package/dist/components/Backdrop/BackdropPage.js.map +1 -0
- package/dist/components/Backdrop/BackdropPage.module.css.js +46 -0
- package/dist/components/Backdrop/BackdropPage.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropPatterns.d.ts +224 -0
- package/dist/components/Backdrop/BackdropPatterns.js +202 -0
- package/dist/components/Backdrop/BackdropPatterns.js.map +1 -0
- package/dist/components/Backdrop/BackdropPatterns.module.css.js +114 -0
- package/dist/components/Backdrop/BackdropPatterns.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropRail.d.ts +63 -0
- package/dist/components/Backdrop/BackdropRail.js +98 -0
- package/dist/components/Backdrop/BackdropRail.js.map +1 -0
- package/dist/components/Backdrop/BackdropRail.module.css.js +42 -0
- package/dist/components/Backdrop/BackdropRail.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropSheets.d.ts +68 -0
- package/dist/components/Backdrop/BackdropSheets.js +75 -0
- package/dist/components/Backdrop/BackdropSheets.js.map +1 -0
- package/dist/components/Backdrop/BackdropSheets.module.css.js +42 -0
- package/dist/components/Backdrop/BackdropSheets.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropTabs.d.ts +20 -0
- package/dist/components/Backdrop/BackdropTabs.js +31 -0
- package/dist/components/Backdrop/BackdropTabs.js.map +1 -0
- package/dist/components/Backdrop/BackdropTabs.module.css.js +16 -0
- package/dist/components/Backdrop/BackdropTabs.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropTooltip.d.ts +21 -0
- package/dist/components/Backdrop/BackdropTooltip.js +15 -0
- package/dist/components/Backdrop/BackdropTooltip.js.map +1 -0
- package/dist/components/Backdrop/BackdropTooltip.module.css.js +18 -0
- package/dist/components/Backdrop/BackdropTooltip.module.css.js.map +1 -0
- package/dist/components/Backdrop/BackdropTopStrip.d.ts +65 -0
- package/dist/components/Backdrop/BackdropTopStrip.js +46 -0
- package/dist/components/Backdrop/BackdropTopStrip.js.map +1 -0
- package/dist/components/Backdrop/BackdropTopStrip.module.css.js +40 -0
- package/dist/components/Backdrop/BackdropTopStrip.module.css.js.map +1 -0
- package/dist/components/Backdrop/cx.d.ts +2 -0
- package/dist/components/Backdrop/cx.js +7 -0
- package/dist/components/Backdrop/cx.js.map +1 -0
- package/dist/components/Backdrop/icons.d.ts +70 -0
- package/dist/components/Backdrop/icons.js +103 -0
- package/dist/components/Backdrop/icons.js.map +1 -0
- package/dist/components/TopBar/TopBar.d.ts +8 -1
- package/dist/components/TopBar/TopBar.js +19 -16
- package/dist/components/TopBar/TopBar.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +40 -36
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +23 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackdropData.js","sources":["../../../src/components/Backdrop/BackdropData.tsx"],"sourcesContent":["import { useId, type CSSProperties, type ElementType, type ReactNode } from 'react'\nimport styles from './BackdropData.module.css'\nimport progressStyles from './BackdropGlobalPanels.module.css'\nimport { cx } from './cx'\nimport { BackdropButton, type BackdropButtonVariantName } from './BackdropButton'\nimport { BackdropProgress, BackdropStepList, type BackdropStep } from './BackdropGlobalPanels'\nimport { BackdropCard, type BackdropPageAction } from './BackdropPage'\n\n/*\n * Batch 3 · Data (N21–N26). The parts that show a record's state rather than\n * take input: a status mark, a meter, the summary card at the right of a\n * detail page, a checklist, a review-queue item and a board of columns.\n *\n * Stage A: static and presentational. Nothing here owns an event handler.\n * Actions take the package's one action shape ({ label, onClick?, href? }),\n * so Stage B wires them the same way it wires BackdropNextStepCard. Nothing\n * here knows what is being reviewed, scored or moved across a board: every\n * word and every figure arrives as a prop.\n */\n\n/* ── Status mark (N22) ─────────────────────────────────────────────────── */\n\n/**\n * What the mark says, so one meaning has one drawing.\n *\n * - `dot` (default): a state that is simply so (\"Connected\", \"Running\").\n * - `check`: a state that was checked and passed (\"Verified\"). The `done`\n * icon, circle-check (ADR-0017, Batch 2 gate).\n * - `ring`: a state not yet reached or not yet live (\"Draft\", \"Invited\").\n */\nexport type BackdropStatusMarkKind = 'dot' | 'check' | 'ring'\n/** The status pill's tones (ADR-0017, D7), drawn in the pill's dot colour. */\nexport type BackdropStatusMarkTone = 'neutral' | 'success' | 'warning' | 'danger' | 'info'\n/** `md` (default) 14/20 beside a field or in an aside; `sm` 12/16 inside a board card. */\nexport type BackdropStatusMarkSize = 'md' | 'sm'\n\nexport interface BackdropStatusMarkProps {\n /** The state, in words: \"Connected\", \"Verified\", \"Draft\", \"Failed\". It carries the meaning. */\n children: ReactNode\n kind?: BackdropStatusMarkKind\n tone?: BackdropStatusMarkTone\n size?: BackdropStatusMarkSize\n className?: string\n}\n\n/*\n * Unboxed: a mark and a word, no ground and no edge. That is the difference\n * from BackdropPill, which is the boxed status in a row. The mark is\n * decorative; the label is the state, so colour is never the only signal.\n */\nexport function BackdropStatusMark({ children, kind = 'dot', tone = 'neutral', size = 'md', className }: BackdropStatusMarkProps) {\n return (\n <span className={cx(styles.status, styles[`status-${tone}`], size === 'sm' && styles.statusSm, className)} data-kind={kind} data-tone={tone}>\n {kind === 'check' ? (\n <span aria-hidden=\"true\" className={styles.statusIcon}>\n <CircleCheck />\n </span>\n ) : (\n <span aria-hidden=\"true\" className={cx(styles.statusDot, kind === 'ring' && styles.statusRing)} />\n )}\n <span className={styles.statusLabel}>{children}</span>\n </span>\n )\n}\n\n/* Tabler `circle-check` (MIT), the `done` meaning, at 16 with the 16px stroke (D17). */\nfunction CircleCheck() {\n return (\n <svg aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className={styles.statusSvg}>\n <path d=\"M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" />\n <path d=\"M9 12l2 2l4 -4\" />\n </svg>\n )\n}\n\n/* ── Meter (N23) ───────────────────────────────────────────────────────── */\n\n/**\n * - `bar` (default): the 56px bar and the number after it (\"Fit ▬▬ 91\"),\n * drawn with BackdropProgress's `mini` track.\n * - `ring`: a 44px ring with the number in its middle.\n * - `signal`: three to five rising bars and a word (\"Strong\").\n */\nexport type BackdropMeterLook = 'bar' | 'ring' | 'signal'\n/** `ink` (default). `success` only where a high reading is itself good news. Never orange. */\nexport type BackdropMeterTone = 'ink' | 'success'\n\nexport interface BackdropMeterProps {\n value: number\n /** Default 100. */\n max?: number\n /** Default 0. */\n min?: number\n /** The meter's accessible name: \"Fit\", \"Match\", \"Signal strength\". */\n label: string\n /**\n * The reading as shown and spoken: \"91\", \"Strong\". Defaults to the value.\n * A `signal` meter should always pass a word, since its bars are not a number.\n */\n valueText?: string\n /** A visible caption before the meter: \"Fit\". Leave it out when a column header names it. */\n caption?: ReactNode\n look?: BackdropMeterLook\n /** `signal` only: how many bars, 3 (default) to 5. */\n steps?: 3 | 4 | 5\n tone?: BackdropMeterTone\n className?: string\n}\n\n/*\n * role=\"meter\": a reading within a known range, not progress toward a goal\n * (that is BackdropProgress). The drawing is hidden from assistive tech; the\n * name, the range and the reading are announced instead.\n */\nexport function BackdropMeter({ value, max = 100, min = 0, label, valueText, caption, look = 'bar', steps = 3, tone = 'ink', className }: BackdropMeterProps) {\n const span = max - min\n const share = span > 0 ? Math.max(0, Math.min(1, (value - min) / span)) : 0\n const shown = valueText ?? String(value)\n const common = {\n role: 'meter',\n 'aria-label': label,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': Math.max(min, Math.min(max, value)),\n 'aria-valuetext': valueText,\n } as const\n\n if (look === 'ring') {\n return (\n <span {...common} className={cx(styles.meter, tone === 'success' && styles.meterSuccess, className)} data-look=\"ring\">\n {caption !== undefined && <span className={styles.meterCaption} aria-hidden=\"true\">{caption}</span>}\n <span className={styles.ring} style={{ '--backdrop-meter-share': `${Math.round(share * 100)}%` } as CSSProperties}>\n <span className={styles.ringBand} aria-hidden=\"true\" />\n <span className={styles.ringValue} aria-hidden=\"true\">{shown}</span>\n </span>\n </span>\n )\n }\n\n if (look === 'signal') {\n const count = Math.max(3, Math.min(5, steps))\n const lit = Math.round(share * count)\n return (\n <span {...common} className={cx(styles.meter, styles.meterSignal, tone === 'success' && styles.meterSuccess, className)} data-look=\"signal\">\n {caption !== undefined && <span className={styles.meterCaption} aria-hidden=\"true\">{caption}</span>}\n <span className={styles.signal} aria-hidden=\"true\">\n {Array.from({ length: count }, (_, i) => (\n // Bars rise evenly from half the mark's height to all of it: 6, 9, 12 for three.\n <span key={i} className={cx(styles.signalBar, i < lit && styles.signalBarOn)} style={{ height: `${50 + (50 * i) / (count - 1)}%` }} />\n ))}\n </span>\n <span className={styles.signalValue} aria-hidden=\"true\">{shown}</span>\n </span>\n )\n }\n\n return (\n <span {...common} className={cx(styles.meter, tone === 'success' && styles.meterSuccess, className)} data-look=\"bar\">\n {caption !== undefined && <span className={styles.meterCaption} aria-hidden=\"true\">{caption}</span>}\n <span className={cx(progressStyles.track, progressStyles['track-mini'], tone === 'success' && progressStyles['tone-success'])} aria-hidden=\"true\">\n <span className={progressStyles.fillBar} style={{ width: `${Math.round(share * 100)}%` }} />\n </span>\n <span className={styles.meterValue} aria-hidden=\"true\">{shown}</span>\n </span>\n )\n}\n\n/* ── Summary card (N24) ────────────────────────────────────────────────── */\n\n/**\n * `raised` (default): the white card with a ring and one shadow, at the right\n * of a detail page (Off-market introduction). `aside`: the panel grey with no\n * edge (Brokers offer, Financing application).\n */\nexport type BackdropSummaryCardSurface = 'raised' | 'aside'\n\nexport interface BackdropSummaryCardProps {\n /** \"Your commission 8% · about €1,440 per deal\", \"Ready\". */\n title: ReactNode\n /** One or two muted lines under the title. */\n description?: ReactNode\n /** A state above the title: a BackdropStatusMark, or a BackdropPill. */\n status?: ReactNode\n /** The figures: a BackdropStat, key/value rows, a meter. Laid out by the caller. */\n children?: ReactNode\n /** The card's one action, full width at its foot. */\n action?: BackdropPageAction\n /**\n * `primary` (default) when this is the page's main action, the one orange\n * button on the screen. `ink` inside an aside that is not, `outline` for a\n * quiet one.\n */\n actionVariant?: Extract<BackdropButtonVariantName, 'primary' | 'ink' | 'outline'>\n /** A second, quieter action under the first: an outline button. */\n secondaryAction?: BackdropPageAction\n surface?: BackdropSummaryCardSurface\n /** 2 (default): the card is a region under the page's h1. */\n headingLevel?: 2 | 3\n linkComponent?: ElementType\n className?: string\n}\n\n/* Built on BackdropCard (radius 16, D2; edge per D3, or the panel fill). */\nexport function BackdropSummaryCard({\n title,\n description,\n status,\n children,\n action,\n actionVariant = 'primary',\n secondaryAction,\n surface = 'raised',\n headingLevel = 2,\n linkComponent,\n className,\n}: BackdropSummaryCardProps) {\n const headingId = useId()\n const Heading = headingLevel === 3 ? 'h3' : 'h2'\n return (\n <BackdropCard\n as=\"section\"\n surface={surface === 'aside' ? 'panel' : 'raised'}\n padding=\"lg\"\n aria-labelledby={headingId}\n className={cx(styles.summary, className)}\n data-surface={surface}\n >\n <div className={styles.summaryHead}>\n {status !== undefined && <div className={styles.summaryStatus}>{status}</div>}\n <Heading id={headingId} className={styles.summaryTitle}>\n {title}\n </Heading>\n {description !== undefined && <p className={styles.summaryDescription}>{description}</p>}\n </div>\n {children !== undefined && <div className={styles.summaryBody}>{children}</div>}\n {(action || secondaryAction) && (\n <div className={styles.summaryActions}>\n {action && (\n <BackdropButton variant={actionVariant} size=\"lg\" fullWidth href={action.href} linkComponent={linkComponent} onClick={action.onClick}>\n {action.label}\n </BackdropButton>\n )}\n {secondaryAction && (\n <BackdropButton variant=\"outline\" size=\"lg\" fullWidth href={secondaryAction.href} linkComponent={linkComponent} onClick={secondaryAction.onClick}>\n {secondaryAction.label}\n </BackdropButton>\n )}\n </div>\n )}\n </BackdropCard>\n )\n}\n\n/* ── Checklist (N25) ───────────────────────────────────────────────────── */\n\nexport interface BackdropChecklistProps {\n /** \"Get set up\", \"Profile\". */\n title: ReactNode\n /** \"3 of 5\". */\n progressText?: ReactNode\n /** 0–1. With it, a BackdropProgress bar runs under the head. */\n progress?: number\n /** The bar's accessible name: \"Setup, 3 of 5 done\". Required with `progress`. */\n progressLabel?: string\n /**\n * The rows: BackdropStepList's steps. `done` draws the filled circle-check,\n * `todo` the empty circle, `next` is the current row (highlighted, with its\n * one action). A link on any other row goes in its `trailing` slot.\n */\n steps: BackdropStep[]\n /** The list's name: \"Setup steps\". */\n stepsLabel: string\n /** `icon` (default) circles, or `number` for an ordered setup. */\n marker?: 'icon' | 'number'\n /** 2 (default). */\n headingLevel?: 2 | 3\n linkComponent?: ElementType\n className?: string\n}\n\n/*\n * A checklist IS BackdropStepList: the same rows, markers, current-row action\n * and trailing slot. What a checklist on the page adds is a head (title, \"3 of\n * 5\", a bar) and a darker empty circle (StepList's `todoTone=\"choice\"`), so it\n * is a composition, as BackdropGetStartedPanel is, not a second list.\n */\nexport function BackdropChecklist({\n title,\n progressText,\n progress,\n progressLabel,\n steps,\n stepsLabel,\n marker = 'icon',\n headingLevel = 2,\n linkComponent,\n className,\n}: BackdropChecklistProps) {\n const headingId = useId()\n const Heading = headingLevel === 3 ? 'h3' : 'h2'\n return (\n <section aria-labelledby={headingId} className={cx(styles.checklist, className)}>\n <div className={styles.checklistHead}>\n <div className={styles.checklistTitleRow}>\n <Heading id={headingId} className={styles.checklistTitle}>\n {title}\n </Heading>\n {progressText !== undefined && <span className={styles.checklistCount}>{progressText}</span>}\n </div>\n {progress !== undefined && <BackdropProgress value={progress} label={progressLabel ?? stepsLabel} />}\n </div>\n <BackdropStepList steps={steps} label={stepsLabel} marker={marker} todoTone=\"choice\" linkComponent={linkComponent} />\n </section>\n )\n}\n\n/* ── Review card (N26) ─────────────────────────────────────────────────── */\n\n/** `row` (default): body left, actions right (a queue of several). `stacked`: actions under the body (one item at a time). */\nexport type BackdropReviewCardLayout = 'row' | 'stacked'\n\nexport interface BackdropReviewCardProps {\n /** Who or where it came from: \"Imprimerie Bellecour\", \"Sophie Garnier\". */\n name: ReactNode\n /** A leading BackdropAvatar or BackdropIconTile. Decorative: `name` says who. */\n avatar?: ReactNode\n /** After the name on the same line: a date, a source, a meter. */\n meta?: ReactNode\n /** A one-line heading for the item: \"Cut delivery costs\". */\n title?: ReactNode\n /** The words under review, quoted. Clamped to three lines. */\n quote: ReactNode\n /** Context chips under the quote (BackdropChip kind=\"tag\"). */\n chips?: ReactNode\n /** Accept: \"Approve\", \"Keep\". */\n primaryAction: BackdropPageAction\n /** Turn down: \"Reject\", \"Dismiss\". A ghost button, before the primary one. */\n secondaryAction?: BackdropPageAction\n /**\n * How loud the accept button is. `outline` (default) for a queue, where\n * every row has one. `primary` (orange) only when the card is the one item\n * on the screen, since a page has at most one orange button.\n */\n emphasis?: 'outline' | 'primary'\n /** Leading 16px icon on the accept button (the `done` check). Decorative. */\n primaryIcon?: ReactNode\n layout?: BackdropReviewCardLayout\n linkComponent?: ElementType\n className?: string\n}\n\n/*\n * A flat card (D3) holding one item to accept or turn down. An <article>\n * named by its title, or by its name when it has no title.\n */\nexport function BackdropReviewCard({\n name,\n avatar,\n meta,\n title,\n quote,\n chips,\n primaryAction,\n secondaryAction,\n emphasis = 'outline',\n primaryIcon,\n layout = 'row',\n linkComponent,\n className,\n}: BackdropReviewCardProps) {\n const nameId = useId()\n const titleId = useId()\n return (\n <BackdropCard\n as=\"article\"\n surface=\"flat\"\n padding=\"md\"\n aria-labelledby={title !== undefined ? titleId : nameId}\n className={cx(styles.review, layout === 'stacked' ? styles.reviewStacked : styles.reviewRow, className)}\n data-layout={layout}\n >\n <div className={styles.reviewBody}>\n <div className={styles.reviewWho}>\n {avatar !== undefined && <span className={styles.reviewAvatar}>{avatar}</span>}\n <span id={nameId} className={styles.reviewName}>\n {name}\n </span>\n {meta !== undefined && <span className={styles.reviewMeta}>{meta}</span>}\n </div>\n {title !== undefined && (\n <h3 id={titleId} className={styles.reviewTitle}>\n {title}\n </h3>\n )}\n <blockquote className={styles.reviewQuote}>{quote}</blockquote>\n {chips !== undefined && <div className={styles.reviewChips}>{chips}</div>}\n </div>\n <div className={styles.reviewActions}>\n {secondaryAction && (\n <BackdropButton variant=\"ghost\" size=\"lg\" href={secondaryAction.href} linkComponent={linkComponent} onClick={secondaryAction.onClick}>\n {secondaryAction.label}\n </BackdropButton>\n )}\n <BackdropButton variant={emphasis} size=\"lg\" icon={primaryIcon} href={primaryAction.href} linkComponent={linkComponent} onClick={primaryAction.onClick}>\n {primaryAction.label}\n </BackdropButton>\n </div>\n </BackdropCard>\n )\n}\n\n/* ── Board (N21) ───────────────────────────────────────────────────────── */\n\nexport interface BackdropBoardCardProps {\n /** \"Sophie Arnaud\", \"Clinique des Monts d'Or\". */\n title: ReactNode\n /** One muted line under the title: \"Office manager · Lumen Assurances\". */\n subtitle?: ReactNode\n /** Above the title, left: a BackdropStatusMark (size=\"sm\"). */\n status?: ReactNode\n /** Above the title, right: \"Today\", \"Won on 6 Nov\". */\n meta?: ReactNode\n /** Beside the title: a 24 or 32 BackdropAvatar. Decorative. */\n avatar?: ReactNode\n /** A short body: one or two sentences. */\n body?: ReactNode\n /** Under a hairline at the foot: a source line, or figures. */\n footer?: ReactNode\n /** The card opens a page: rendered as a link. */\n href?: string\n /**\n * The card opens something in place (a side panel): rendered as a\n * <button type=\"button\">. Stage A draws the markup only; the handler is\n * Stage B's. Ignored when `href` is given.\n */\n interactive?: boolean\n linkComponent?: ElementType\n className?: string\n}\n\n/*\n * One card in a board column. A real <a> or <button> when it opens\n * something, never a clickable <div>; static otherwise. Its parts are spans\n * so the whole card can sit inside a button.\n */\nexport function BackdropBoardCard({ title, subtitle, status, meta, avatar, body, footer, href, interactive = false, linkComponent: Link = 'a', className }: BackdropBoardCardProps) {\n const content = (\n <>\n {(status !== undefined || meta !== undefined) && (\n <span className={styles.boardCardTop}>\n <span>{status}</span>\n {meta !== undefined && <span className={styles.boardCardMeta}>{meta}</span>}\n </span>\n )}\n <span className={styles.boardCardHead}>\n {avatar !== undefined && <span className={styles.boardCardAvatar}>{avatar}</span>}\n <span className={styles.boardCardTitles}>\n <span className={styles.boardCardTitle}>{title}</span>\n {subtitle !== undefined && <span className={styles.boardCardSubtitle}>{subtitle}</span>}\n </span>\n </span>\n {body !== undefined && <span className={styles.boardCardBody}>{body}</span>}\n {footer !== undefined && <span className={styles.boardCardFooter}>{footer}</span>}\n </>\n )\n const classes = cx(styles.boardCard, (href !== undefined || interactive) && styles.boardCardAction, className)\n if (href !== undefined) {\n return (\n <Link href={href} className={classes}>\n {content}\n </Link>\n )\n }\n if (interactive) {\n return (\n <button type=\"button\" className={classes}>\n {content}\n </button>\n )\n }\n return <div className={classes}>{content}</div>\n}\n\nexport interface BackdropBoardColumn {\n key: string\n /** \"New\", \"Contacted\", \"Won\". */\n label: ReactNode\n /** How many cards: \"2\". Formatted by the caller. */\n count?: ReactNode\n /** A right-hand figure for the column: \"€1,440\". */\n summary?: ReactNode\n /** BackdropBoardCard elements, in order. */\n cards: ReactNode[]\n /** Shown in place of cards when there are none: \"None\". */\n emptyText?: ReactNode\n}\n\nexport interface BackdropBoardProps {\n columns: BackdropBoardColumn[]\n /** The board's accessible name: \"Introductions by stage\". */\n label: string\n /** The level of each column's heading. 3 (default) under the page's h1 and a section h2. */\n headingLevel?: 2 | 3 | 4\n className?: string\n}\n\n/*\n * Kanban columns, one <section> per column named by its heading, each holding\n * a list of cards. Columns share the row and never narrow below\n * --backdrop-board-column-width; a wider board scrolls sideways, and the\n * scroller is a focusable region so a keyboard can scroll it. Stage A: no\n * drag and drop; a card moves when its record changes.\n */\nexport function BackdropBoard({ columns, label, headingLevel = 3, className }: BackdropBoardProps) {\n const baseId = useId()\n const Heading = headingLevel === 2 ? 'h2' : headingLevel === 4 ? 'h4' : 'h3'\n return (\n <div role=\"region\" aria-label={label} tabIndex={0} className={cx(styles.board, className)}>\n {columns.map((column) => {\n const headingId = `${baseId}-${column.key}`\n return (\n <section key={column.key} aria-labelledby={headingId} className={styles.boardColumn}>\n <div className={styles.boardColumnHead}>\n <Heading id={headingId} className={styles.boardColumnTitle}>\n <span>{column.label}</span>\n {column.count !== undefined && <span className={styles.boardColumnCount}>{column.count}</span>}\n </Heading>\n {column.summary !== undefined && <span className={styles.boardColumnSummary}>{column.summary}</span>}\n </div>\n {column.cards.length > 0 ? (\n <ul className={styles.boardList}>\n {column.cards.map((card, i) => (\n <li key={i} className={styles.boardItem}>\n {card}\n </li>\n ))}\n </ul>\n ) : (\n column.emptyText !== undefined && <p className={styles.boardEmpty}>{column.emptyText}</p>\n )}\n </section>\n )\n })}\n </div>\n )\n}\n"],"names":["BackdropStatusMark","children","kind","tone","size","className","jsxs","cx","styles","jsx","CircleCheck","BackdropMeter","value","max","min","label","valueText","caption","look","steps","span","share","shown","common","count","lit","_","i","progressStyles","BackdropSummaryCard","title","description","status","action","actionVariant","secondaryAction","surface","headingLevel","linkComponent","headingId","useId","Heading","BackdropCard","BackdropButton","BackdropChecklist","progressText","progress","progressLabel","stepsLabel","marker","BackdropProgress","BackdropStepList","BackdropReviewCard","name","avatar","meta","quote","chips","primaryAction","emphasis","primaryIcon","layout","nameId","titleId","BackdropBoardCard","subtitle","body","footer","href","interactive","Link","content","Fragment","classes","BackdropBoard","columns","baseId","column","card"],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const e = "_status_1le2u_31", t = "_statusSm_1le2u_42", a = "_statusDot_1le2u_47", s = "_statusRing_1le2u_55", r = "_statusIcon_1le2u_61", _ = "_statusSvg_1le2u_67", o = "_meter_1le2u_82", u = "_meterSuccess_1le2u_92", l = "_meterCaption_1le2u_96", n = "_meterValue_1le2u_102", i = "_ring_1le2u_110", d = "_ringBand_1le2u_120", c = "_ringValue_1le2u_132", m = "_meterSignal_1le2u_140", b = "_signal_1le2u_144", C = "_signalBar_1le2u_152", v = "_signalBarOn_1le2u_158", w = "_signalValue_1le2u_162", y = "_summary_1le2u_170", g = "_summaryHead_1le2u_176", S = "_summaryStatus_1le2u_182", T = "_summaryTitle_1le2u_187", h = "_summaryDescription_1le2u_194", k = "_summaryBody_1le2u_201", B = "_summaryActions_1le2u_208", p = "_checklist_1le2u_216", A = "_checklistHead_1le2u_224", H = "_checklistTitleRow_1le2u_230", R = "_checklistTitle_1le2u_230", V = "_checklistCount_1le2u_244", D = "_review_1le2u_254", I = "_reviewRow_1le2u_259", M = "_reviewStacked_1le2u_263", f = "_reviewBody_1le2u_268", E = "_reviewWho_1le2u_276", F = "_reviewAvatar_1le2u_283", L = "_reviewName_1le2u_288", N = "_reviewMeta_1le2u_295", O = "_reviewTitle_1le2u_303", Q = "_reviewQuote_1le2u_310", W = "_reviewChips_1le2u_323", x = "_reviewActions_1le2u_330", j = "_board_1le2u_340", q = "_boardColumn_1le2u_354", z = "_boardColumnHead_1le2u_366", G = "_boardColumnTitle_1le2u_374", J = "_boardColumnCount_1le2u_385", K = "_boardColumnSummary_1le2u_386", P = "_boardList_1le2u_394", U = "_boardItem_1le2u_403", X = "_boardEmpty_1le2u_408", Y = "_boardCard_1le2u_421", Z = "_boardCardAction_1le2u_438", $ = "_boardCardTop_1le2u_452", ee = "_boardCardMeta_1le2u_459", te = "_boardCardHead_1le2u_465", ae = "_boardCardAvatar_1le2u_471", se = "_boardCardTitles_1le2u_476", re = "_boardCardTitle_1le2u_476", _e = "_boardCardSubtitle_1le2u_489", oe = "_boardCardBody_1le2u_495", ue = "_boardCardFooter_1le2u_500", le = {
|
|
2
|
+
status: e,
|
|
3
|
+
statusSm: t,
|
|
4
|
+
statusDot: a,
|
|
5
|
+
statusRing: s,
|
|
6
|
+
statusIcon: r,
|
|
7
|
+
statusSvg: _,
|
|
8
|
+
"status-neutral": "_status-neutral_1le2u_74",
|
|
9
|
+
"status-success": "_status-success_1le2u_75",
|
|
10
|
+
"status-warning": "_status-warning_1le2u_76",
|
|
11
|
+
"status-danger": "_status-danger_1le2u_77",
|
|
12
|
+
"status-info": "_status-info_1le2u_78",
|
|
13
|
+
meter: o,
|
|
14
|
+
meterSuccess: u,
|
|
15
|
+
meterCaption: l,
|
|
16
|
+
meterValue: n,
|
|
17
|
+
ring: i,
|
|
18
|
+
ringBand: d,
|
|
19
|
+
ringValue: c,
|
|
20
|
+
meterSignal: m,
|
|
21
|
+
signal: b,
|
|
22
|
+
signalBar: C,
|
|
23
|
+
signalBarOn: v,
|
|
24
|
+
signalValue: w,
|
|
25
|
+
summary: y,
|
|
26
|
+
summaryHead: g,
|
|
27
|
+
summaryStatus: S,
|
|
28
|
+
summaryTitle: T,
|
|
29
|
+
summaryDescription: h,
|
|
30
|
+
summaryBody: k,
|
|
31
|
+
summaryActions: B,
|
|
32
|
+
checklist: p,
|
|
33
|
+
checklistHead: A,
|
|
34
|
+
checklistTitleRow: H,
|
|
35
|
+
checklistTitle: R,
|
|
36
|
+
checklistCount: V,
|
|
37
|
+
review: D,
|
|
38
|
+
reviewRow: I,
|
|
39
|
+
reviewStacked: M,
|
|
40
|
+
reviewBody: f,
|
|
41
|
+
reviewWho: E,
|
|
42
|
+
reviewAvatar: F,
|
|
43
|
+
reviewName: L,
|
|
44
|
+
reviewMeta: N,
|
|
45
|
+
reviewTitle: O,
|
|
46
|
+
reviewQuote: Q,
|
|
47
|
+
reviewChips: W,
|
|
48
|
+
reviewActions: x,
|
|
49
|
+
board: j,
|
|
50
|
+
boardColumn: q,
|
|
51
|
+
boardColumnHead: z,
|
|
52
|
+
boardColumnTitle: G,
|
|
53
|
+
boardColumnCount: J,
|
|
54
|
+
boardColumnSummary: K,
|
|
55
|
+
boardList: P,
|
|
56
|
+
boardItem: U,
|
|
57
|
+
boardEmpty: X,
|
|
58
|
+
boardCard: Y,
|
|
59
|
+
boardCardAction: Z,
|
|
60
|
+
boardCardTop: $,
|
|
61
|
+
boardCardMeta: ee,
|
|
62
|
+
boardCardHead: te,
|
|
63
|
+
boardCardAvatar: ae,
|
|
64
|
+
boardCardTitles: se,
|
|
65
|
+
boardCardTitle: re,
|
|
66
|
+
boardCardSubtitle: _e,
|
|
67
|
+
boardCardBody: oe,
|
|
68
|
+
boardCardFooter: ue
|
|
69
|
+
};
|
|
70
|
+
export {
|
|
71
|
+
j as board,
|
|
72
|
+
Y as boardCard,
|
|
73
|
+
Z as boardCardAction,
|
|
74
|
+
ae as boardCardAvatar,
|
|
75
|
+
oe as boardCardBody,
|
|
76
|
+
ue as boardCardFooter,
|
|
77
|
+
te as boardCardHead,
|
|
78
|
+
ee as boardCardMeta,
|
|
79
|
+
_e as boardCardSubtitle,
|
|
80
|
+
re as boardCardTitle,
|
|
81
|
+
se as boardCardTitles,
|
|
82
|
+
$ as boardCardTop,
|
|
83
|
+
q as boardColumn,
|
|
84
|
+
J as boardColumnCount,
|
|
85
|
+
z as boardColumnHead,
|
|
86
|
+
K as boardColumnSummary,
|
|
87
|
+
G as boardColumnTitle,
|
|
88
|
+
X as boardEmpty,
|
|
89
|
+
U as boardItem,
|
|
90
|
+
P as boardList,
|
|
91
|
+
p as checklist,
|
|
92
|
+
V as checklistCount,
|
|
93
|
+
A as checklistHead,
|
|
94
|
+
R as checklistTitle,
|
|
95
|
+
H as checklistTitleRow,
|
|
96
|
+
le as default,
|
|
97
|
+
o as meter,
|
|
98
|
+
l as meterCaption,
|
|
99
|
+
m as meterSignal,
|
|
100
|
+
u as meterSuccess,
|
|
101
|
+
n as meterValue,
|
|
102
|
+
D as review,
|
|
103
|
+
x as reviewActions,
|
|
104
|
+
F as reviewAvatar,
|
|
105
|
+
f as reviewBody,
|
|
106
|
+
W as reviewChips,
|
|
107
|
+
N as reviewMeta,
|
|
108
|
+
L as reviewName,
|
|
109
|
+
Q as reviewQuote,
|
|
110
|
+
I as reviewRow,
|
|
111
|
+
M as reviewStacked,
|
|
112
|
+
O as reviewTitle,
|
|
113
|
+
E as reviewWho,
|
|
114
|
+
i as ring,
|
|
115
|
+
d as ringBand,
|
|
116
|
+
c as ringValue,
|
|
117
|
+
b as signal,
|
|
118
|
+
C as signalBar,
|
|
119
|
+
v as signalBarOn,
|
|
120
|
+
w as signalValue,
|
|
121
|
+
e as status,
|
|
122
|
+
a as statusDot,
|
|
123
|
+
r as statusIcon,
|
|
124
|
+
s as statusRing,
|
|
125
|
+
t as statusSm,
|
|
126
|
+
_ as statusSvg,
|
|
127
|
+
y as summary,
|
|
128
|
+
B as summaryActions,
|
|
129
|
+
k as summaryBody,
|
|
130
|
+
h as summaryDescription,
|
|
131
|
+
g as summaryHead,
|
|
132
|
+
S as summaryStatus,
|
|
133
|
+
T as summaryTitle
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=BackdropData.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackdropData.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/** The one action shape every Backdrop pattern takes. */
|
|
3
|
+
interface BackdropDisplayAction {
|
|
4
|
+
label: string;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
href?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* `row` (36px): the tile that leads a row or a card's head row (next-step hero
|
|
10
|
+
* and action list). `empty` (48px): the empty state's tile (ADR-0017, D12).
|
|
11
|
+
* One size per job; the 40, 44 and 56 drawn on some boards are out of date.
|
|
12
|
+
*/
|
|
13
|
+
export type BackdropIconTileSize = 'row' | 'empty';
|
|
14
|
+
/**
|
|
15
|
+
* `square` (default) is the grey rounded tile. `circle` is the outcome mark at
|
|
16
|
+
* the head of BackdropResult (Batch 2 · Flows), the same box drawn round.
|
|
17
|
+
*/
|
|
18
|
+
export type BackdropIconTileShape = 'square' | 'circle';
|
|
19
|
+
/**
|
|
20
|
+
* `neutral` (default) is the panel grey with ink. `success` and `danger` take
|
|
21
|
+
* the status pill's ground and text colours (ADR-0017, D7), so an outcome reads
|
|
22
|
+
* in the same green and red as its pill.
|
|
23
|
+
*/
|
|
24
|
+
export type BackdropIconTileTone = 'neutral' | 'success' | 'danger';
|
|
25
|
+
export interface BackdropIconTileProps {
|
|
26
|
+
/** The icon: 18px in a `row` tile, 20px in an `empty` tile (ADR-0017, D17). Decorative. */
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
size?: BackdropIconTileSize;
|
|
29
|
+
shape?: BackdropIconTileShape;
|
|
30
|
+
tone?: BackdropIconTileTone;
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Decorative: the text beside it names the thing, so the tile is not announced. */
|
|
34
|
+
export declare function BackdropIconTile({ children, size, shape, tone, className }: BackdropIconTileProps): import("react").JSX.Element;
|
|
35
|
+
export interface BackdropEmptyStateProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'children'> {
|
|
36
|
+
/** 20px icon, drawn in the 48px tile. */
|
|
37
|
+
icon: ReactNode;
|
|
38
|
+
/** "No posts published yet". */
|
|
39
|
+
title: ReactNode;
|
|
40
|
+
/** One line of help: "Approve a post to see how it does." */
|
|
41
|
+
body: ReactNode;
|
|
42
|
+
/** At most one, and the screen's orange one when present (ADR-0017, D12). */
|
|
43
|
+
action?: BackdropDisplayAction;
|
|
44
|
+
linkComponent?: ElementType;
|
|
45
|
+
}
|
|
46
|
+
export declare function BackdropEmptyState({ icon, title, body, action, linkComponent, className, ...rest }: BackdropEmptyStateProps): import("react").JSX.Element;
|
|
47
|
+
/** `success`: a figure that is good news (money saved). The label and caption stay muted. */
|
|
48
|
+
export type BackdropStatTone = 'default' | 'success';
|
|
49
|
+
interface BackdropStatBase {
|
|
50
|
+
/** "Expected", "Meetings booked". */
|
|
51
|
+
label: ReactNode;
|
|
52
|
+
/** The figure: "€3,200", "5 of 7". Formatted by the caller; drawn with tabular numerals. */
|
|
53
|
+
value: ReactNode;
|
|
54
|
+
/** One fact under it: "2 open opportunities". */
|
|
55
|
+
caption?: ReactNode;
|
|
56
|
+
tone?: BackdropStatTone;
|
|
57
|
+
className?: string;
|
|
58
|
+
}
|
|
59
|
+
/** Bare on the page: label, number, caption, no box. */
|
|
60
|
+
export interface BackdropStatInlineProps extends BackdropStatBase {
|
|
61
|
+
appearance?: 'inline';
|
|
62
|
+
selected?: never;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* A flat card (ADR-0017, D3: a hairline, no shadow). Give it `selected`
|
|
66
|
+
* (true or false) and it becomes a toggle button with `aria-pressed`, drawn
|
|
67
|
+
* with the ink ring when on: the tile that picks what a chart below shows.
|
|
68
|
+
* Stage A: the markup only; the press handler is Stage B's.
|
|
69
|
+
*/
|
|
70
|
+
export interface BackdropStatTileProps extends BackdropStatBase {
|
|
71
|
+
appearance: 'tile';
|
|
72
|
+
selected?: boolean;
|
|
73
|
+
}
|
|
74
|
+
export type BackdropStatProps = BackdropStatInlineProps | BackdropStatTileProps;
|
|
75
|
+
export declare function BackdropStat(props: BackdropStatProps): import("react").JSX.Element;
|
|
76
|
+
export interface BackdropStatRowProps {
|
|
77
|
+
/** BackdropStat elements, all of one appearance. */
|
|
78
|
+
children: ReactNode;
|
|
79
|
+
/** `inline` stats sit 48px apart; `tile` stats share the width equally, 16px apart. */
|
|
80
|
+
appearance?: 'inline' | 'tile';
|
|
81
|
+
/** Inline only: close the row with a hairline (a stat strip above a list). */
|
|
82
|
+
divided?: boolean;
|
|
83
|
+
/** Names the group for assistive tech ("This month", "Choose a measure"). */
|
|
84
|
+
label?: string;
|
|
85
|
+
className?: string;
|
|
86
|
+
}
|
|
87
|
+
export declare function BackdropStatRow({ children, appearance, divided, label, className }: BackdropStatRowProps): import("react").JSX.Element;
|
|
88
|
+
/**
|
|
89
|
+
* The status pill's tones that a callout uses, plus the grey `neutral` most
|
|
90
|
+
* boards draw. `warning` is the pill's sand, never red or orange: red is
|
|
91
|
+
* `danger`, kept for something broken or blocked, and orange is the primary
|
|
92
|
+
* button (Jamal at the set 2 gate, 11 Nov).
|
|
93
|
+
*/
|
|
94
|
+
export type BackdropCalloutTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger';
|
|
95
|
+
interface BackdropCalloutBase {
|
|
96
|
+
tone?: BackdropCalloutTone;
|
|
97
|
+
/** 18px in the box, 16px in a note (ADR-0017, D17). Decorative. */
|
|
98
|
+
icon?: ReactNode;
|
|
99
|
+
className?: string;
|
|
100
|
+
}
|
|
101
|
+
/** The tinted block: an icon, an optional short title, the text, an optional single action. */
|
|
102
|
+
export interface BackdropCalloutBoxProps extends BackdropCalloutBase {
|
|
103
|
+
appearance?: 'box';
|
|
104
|
+
/** "Why you", "Key point". Short. */
|
|
105
|
+
title?: ReactNode;
|
|
106
|
+
/** One or two sentences. */
|
|
107
|
+
children: ReactNode;
|
|
108
|
+
/** At most one, drawn as an outline button at the block's end. */
|
|
109
|
+
action?: BackdropDisplayAction;
|
|
110
|
+
linkComponent?: ElementType;
|
|
111
|
+
}
|
|
112
|
+
/** The inline note: an icon and one muted caption line, no box ("Card payment by Stripe"). */
|
|
113
|
+
export interface BackdropCalloutNoteProps extends BackdropCalloutBase {
|
|
114
|
+
appearance: 'note';
|
|
115
|
+
children: ReactNode;
|
|
116
|
+
title?: never;
|
|
117
|
+
action?: never;
|
|
118
|
+
linkComponent?: never;
|
|
119
|
+
}
|
|
120
|
+
export type BackdropCalloutProps = BackdropCalloutBoxProps | BackdropCalloutNoteProps;
|
|
121
|
+
export declare function BackdropCallout(props: BackdropCalloutProps): import("react").JSX.Element;
|
|
122
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsxs as d, jsx as t, Fragment as f } from "react/jsx-runtime";
|
|
2
|
+
import e from "./BackdropDisplay.module.css.js";
|
|
3
|
+
import { cx as o } from "./cx.js";
|
|
4
|
+
import { BackdropButton as N } from "./BackdropButton.js";
|
|
5
|
+
function v({ children: l, size: n = "row", shape: s = "square", tone: a = "neutral", className: c }) {
|
|
6
|
+
return /* @__PURE__ */ t(
|
|
7
|
+
"span",
|
|
8
|
+
{
|
|
9
|
+
className: o(
|
|
10
|
+
e.tile,
|
|
11
|
+
n === "empty" ? e.tileEmpty : e.tileRow,
|
|
12
|
+
s === "circle" && e.tileCircle,
|
|
13
|
+
a === "success" && e.tileSuccess,
|
|
14
|
+
a === "danger" && e.tileDanger,
|
|
15
|
+
c
|
|
16
|
+
),
|
|
17
|
+
"aria-hidden": "true",
|
|
18
|
+
children: l
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
function C({ icon: l, title: n, body: s, action: a, linkComponent: c, className: r, ...i }) {
|
|
23
|
+
return /* @__PURE__ */ d("section", { className: o(e.empty, r), ...i, children: [
|
|
24
|
+
/* @__PURE__ */ t(v, { size: "empty", className: e.emptyTile, children: l }),
|
|
25
|
+
/* @__PURE__ */ t("h2", { className: e.emptyTitle, children: n }),
|
|
26
|
+
/* @__PURE__ */ t("p", { className: e.emptyBody, children: s }),
|
|
27
|
+
a && /* @__PURE__ */ t("div", { className: e.emptyAction, children: /* @__PURE__ */ t(N, { variant: "primary", size: "lg", href: a.href, linkComponent: c, onClick: a.onClick, children: a.label }) })
|
|
28
|
+
] });
|
|
29
|
+
}
|
|
30
|
+
function T(l) {
|
|
31
|
+
const { label: n, value: s, caption: a, tone: c = "default", className: r } = l, i = l.appearance === "tile", m = i && l.selected !== void 0, u = /* @__PURE__ */ d(f, { children: [
|
|
32
|
+
/* @__PURE__ */ t("span", { className: e.statLabel, children: n }),
|
|
33
|
+
/* @__PURE__ */ t("span", { className: o(e.statValue, c === "success" && e.statValueSuccess), children: s }),
|
|
34
|
+
a !== void 0 && /* @__PURE__ */ t("span", { className: e.statCaption, children: a })
|
|
35
|
+
] }), h = o(e.stat, i && e.statTile, m && l.selected && e.statSelected, r);
|
|
36
|
+
return m ? /* @__PURE__ */ t("button", { type: "button", className: o(h, e.statButton), "aria-pressed": l.selected, children: u }) : /* @__PURE__ */ t("div", { className: h, children: u });
|
|
37
|
+
}
|
|
38
|
+
function b({ children: l, appearance: n = "inline", divided: s = !1, label: a, className: c }) {
|
|
39
|
+
return /* @__PURE__ */ t(
|
|
40
|
+
"div",
|
|
41
|
+
{
|
|
42
|
+
role: a ? "group" : void 0,
|
|
43
|
+
"aria-label": a,
|
|
44
|
+
className: o(e.statRow, n === "tile" ? e.statRowTile : e.statRowInline, s && n === "inline" && e.statRowDivided, c),
|
|
45
|
+
children: l
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
const p = {
|
|
50
|
+
neutral: e.toneNeutral,
|
|
51
|
+
info: e.toneInfo,
|
|
52
|
+
success: e.toneSuccess,
|
|
53
|
+
warning: e.toneWarning,
|
|
54
|
+
danger: e.toneDanger
|
|
55
|
+
};
|
|
56
|
+
function w(l) {
|
|
57
|
+
const { tone: n = "neutral", icon: s, children: a, className: c } = l;
|
|
58
|
+
if (l.appearance === "note")
|
|
59
|
+
return /* @__PURE__ */ d("p", { className: o(e.note, p[n], c), "data-tone": n, children: [
|
|
60
|
+
s !== void 0 && /* @__PURE__ */ t("span", { className: e.noteIcon, "aria-hidden": "true", children: s }),
|
|
61
|
+
/* @__PURE__ */ t("span", { className: e.noteText, children: a })
|
|
62
|
+
] });
|
|
63
|
+
const { title: r, action: i, linkComponent: m } = l;
|
|
64
|
+
return /* @__PURE__ */ d("div", { role: "note", className: o(e.callout, p[n], c), "data-tone": n, children: [
|
|
65
|
+
s !== void 0 && /* @__PURE__ */ t("span", { className: e.calloutIcon, "aria-hidden": "true", children: s }),
|
|
66
|
+
/* @__PURE__ */ d("div", { className: e.calloutText, children: [
|
|
67
|
+
r !== void 0 && /* @__PURE__ */ t("span", { className: e.calloutTitle, children: r }),
|
|
68
|
+
/* @__PURE__ */ t("span", { className: e.calloutBody, children: a })
|
|
69
|
+
] }),
|
|
70
|
+
i && /* @__PURE__ */ t("span", { className: e.calloutAction, children: /* @__PURE__ */ t(N, { variant: "outline", size: "md", href: i.href, linkComponent: m, onClick: i.onClick, children: i.label }) })
|
|
71
|
+
] });
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
w as BackdropCallout,
|
|
75
|
+
C as BackdropEmptyState,
|
|
76
|
+
v as BackdropIconTile,
|
|
77
|
+
T as BackdropStat,
|
|
78
|
+
b as BackdropStatRow
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=BackdropDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackdropDisplay.js","sources":["../../../src/components/Backdrop/BackdropDisplay.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes, ReactNode } from 'react'\nimport styles from './BackdropDisplay.module.css'\nimport { cx } from './cx'\nimport { BackdropButton } from './BackdropButton'\n\n/*\n * Batch 1 set 2 · Display. The page parts that show a fact rather than take an\n * action. Stage A: static and presentational. Nothing here owns an event\n * handler; actions take the package's one action shape ({ label, onClick?,\n * href? }, as BackdropNextStepCard and BackdropAvailability do) so wiring them\n * in Stage B is uniform.\n *\n * Icon tile a grey rounded square holding an icon. Two sizes, one per job.\n * Empty state the one empty-state design (ADR-0017, D12).\n * Stat label, big number, caption; inline or as a (selectable) tile.\n * Callout a tinted block with an icon and text; or a one-line note.\n */\n\n/** The one action shape every Backdrop pattern takes. */\ninterface BackdropDisplayAction {\n label: string\n onClick?: () => void\n href?: string\n}\n\n/* ── Icon tile ─────────────────────────────────────────────────────────── */\n\n/**\n * `row` (36px): the tile that leads a row or a card's head row (next-step hero\n * and action list). `empty` (48px): the empty state's tile (ADR-0017, D12).\n * One size per job; the 40, 44 and 56 drawn on some boards are out of date.\n */\nexport type BackdropIconTileSize = 'row' | 'empty'\n/**\n * `square` (default) is the grey rounded tile. `circle` is the outcome mark at\n * the head of BackdropResult (Batch 2 · Flows), the same box drawn round.\n */\nexport type BackdropIconTileShape = 'square' | 'circle'\n/**\n * `neutral` (default) is the panel grey with ink. `success` and `danger` take\n * the status pill's ground and text colours (ADR-0017, D7), so an outcome reads\n * in the same green and red as its pill.\n */\nexport type BackdropIconTileTone = 'neutral' | 'success' | 'danger'\n\nexport interface BackdropIconTileProps {\n /** The icon: 18px in a `row` tile, 20px in an `empty` tile (ADR-0017, D17). Decorative. */\n children: ReactNode\n size?: BackdropIconTileSize\n shape?: BackdropIconTileShape\n tone?: BackdropIconTileTone\n className?: string\n}\n\n/** Decorative: the text beside it names the thing, so the tile is not announced. */\nexport function BackdropIconTile({ children, size = 'row', shape = 'square', tone = 'neutral', className }: BackdropIconTileProps) {\n return (\n <span\n className={cx(\n styles.tile,\n size === 'empty' ? styles.tileEmpty : styles.tileRow,\n shape === 'circle' && styles.tileCircle,\n tone === 'success' && styles.tileSuccess,\n tone === 'danger' && styles.tileDanger,\n className,\n )}\n aria-hidden=\"true\"\n >\n {children}\n </span>\n )\n}\n\n/* ── Empty state ───────────────────────────────────────────────────────── */\n\nexport interface BackdropEmptyStateProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'children'> {\n /** 20px icon, drawn in the 48px tile. */\n icon: ReactNode\n /** \"No posts published yet\". */\n title: ReactNode\n /** One line of help: \"Approve a post to see how it does.\" */\n body: ReactNode\n /** At most one, and the screen's orange one when present (ADR-0017, D12). */\n action?: BackdropDisplayAction\n linkComponent?: ElementType\n}\n\n/*\n * ADR-0017, D12: a 48px icon tile, a 20px title, one line of help, at most one\n * action. BackdropAvailability's `empty` state renders through this, so the\n * design exists once. An h2, not an h1: an empty state sits under the page's\n * own title.\n */\nexport function BackdropEmptyState({ icon, title, body, action, linkComponent, className, ...rest }: BackdropEmptyStateProps) {\n return (\n <section className={cx(styles.empty, className)} {...rest}>\n <BackdropIconTile size=\"empty\" className={styles.emptyTile}>\n {icon}\n </BackdropIconTile>\n <h2 className={styles.emptyTitle}>{title}</h2>\n <p className={styles.emptyBody}>{body}</p>\n {action && (\n <div className={styles.emptyAction}>\n <BackdropButton variant=\"primary\" size=\"lg\" href={action.href} linkComponent={linkComponent} onClick={action.onClick}>\n {action.label}\n </BackdropButton>\n </div>\n )}\n </section>\n )\n}\n\n/* ── Stat ──────────────────────────────────────────────────────────────── */\n\n/** `success`: a figure that is good news (money saved). The label and caption stay muted. */\nexport type BackdropStatTone = 'default' | 'success'\n\ninterface BackdropStatBase {\n /** \"Expected\", \"Meetings booked\". */\n label: ReactNode\n /** The figure: \"€3,200\", \"5 of 7\". Formatted by the caller; drawn with tabular numerals. */\n value: ReactNode\n /** One fact under it: \"2 open opportunities\". */\n caption?: ReactNode\n tone?: BackdropStatTone\n className?: string\n}\n\n/** Bare on the page: label, number, caption, no box. */\nexport interface BackdropStatInlineProps extends BackdropStatBase {\n appearance?: 'inline'\n selected?: never\n}\n\n/**\n * A flat card (ADR-0017, D3: a hairline, no shadow). Give it `selected`\n * (true or false) and it becomes a toggle button with `aria-pressed`, drawn\n * with the ink ring when on: the tile that picks what a chart below shows.\n * Stage A: the markup only; the press handler is Stage B's.\n */\nexport interface BackdropStatTileProps extends BackdropStatBase {\n appearance: 'tile'\n selected?: boolean\n}\n\nexport type BackdropStatProps = BackdropStatInlineProps | BackdropStatTileProps\n\nexport function BackdropStat(props: BackdropStatProps) {\n const { label, value, caption, tone = 'default', className } = props\n const tile = props.appearance === 'tile'\n const selectable = tile && props.selected !== undefined\n const body = (\n <>\n <span className={styles.statLabel}>{label}</span>\n <span className={cx(styles.statValue, tone === 'success' && styles.statValueSuccess)}>{value}</span>\n {caption !== undefined && <span className={styles.statCaption}>{caption}</span>}\n </>\n )\n const classes = cx(styles.stat, tile && styles.statTile, selectable && props.selected && styles.statSelected, className)\n if (selectable) {\n return (\n <button type=\"button\" className={cx(classes, styles.statButton)} aria-pressed={props.selected}>\n {body}\n </button>\n )\n }\n return <div className={classes}>{body}</div>\n}\n\nexport interface BackdropStatRowProps {\n /** BackdropStat elements, all of one appearance. */\n children: ReactNode\n /** `inline` stats sit 48px apart; `tile` stats share the width equally, 16px apart. */\n appearance?: 'inline' | 'tile'\n /** Inline only: close the row with a hairline (a stat strip above a list). */\n divided?: boolean\n /** Names the group for assistive tech (\"This month\", \"Choose a measure\"). */\n label?: string\n className?: string\n}\n\nexport function BackdropStatRow({ children, appearance = 'inline', divided = false, label, className }: BackdropStatRowProps) {\n return (\n <div\n role={label ? 'group' : undefined}\n aria-label={label}\n className={cx(styles.statRow, appearance === 'tile' ? styles.statRowTile : styles.statRowInline, divided && appearance === 'inline' && styles.statRowDivided, className)}\n >\n {children}\n </div>\n )\n}\n\n/* ── Callout ───────────────────────────────────────────────────────────── */\n\n/**\n * The status pill's tones that a callout uses, plus the grey `neutral` most\n * boards draw. `warning` is the pill's sand, never red or orange: red is\n * `danger`, kept for something broken or blocked, and orange is the primary\n * button (Jamal at the set 2 gate, 11 Nov).\n */\nexport type BackdropCalloutTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger'\n\ninterface BackdropCalloutBase {\n tone?: BackdropCalloutTone\n /** 18px in the box, 16px in a note (ADR-0017, D17). Decorative. */\n icon?: ReactNode\n className?: string\n}\n\n/** The tinted block: an icon, an optional short title, the text, an optional single action. */\nexport interface BackdropCalloutBoxProps extends BackdropCalloutBase {\n appearance?: 'box'\n /** \"Why you\", \"Key point\". Short. */\n title?: ReactNode\n /** One or two sentences. */\n children: ReactNode\n /** At most one, drawn as an outline button at the block's end. */\n action?: BackdropDisplayAction\n linkComponent?: ElementType\n}\n\n/** The inline note: an icon and one muted caption line, no box (\"Card payment by Stripe\"). */\nexport interface BackdropCalloutNoteProps extends BackdropCalloutBase {\n appearance: 'note'\n children: ReactNode\n title?: never\n action?: never\n linkComponent?: never\n}\n\nexport type BackdropCalloutProps = BackdropCalloutBoxProps | BackdropCalloutNoteProps\n\nconst calloutToneClass: Record<BackdropCalloutTone, string | undefined> = {\n neutral: styles.toneNeutral,\n info: styles.toneInfo,\n success: styles.toneSuccess,\n warning: styles.toneWarning,\n danger: styles.toneDanger,\n}\n\n/*\n * Static content, so role=\"note\" rather than a live region: a callout is on\n * the page when it loads and is never announced over what the person is doing.\n * The tone is colour plus the caller's icon; the words carry the meaning.\n */\nexport function BackdropCallout(props: BackdropCalloutProps) {\n const { tone = 'neutral', icon, children, className } = props\n if (props.appearance === 'note') {\n return (\n <p className={cx(styles.note, calloutToneClass[tone], className)} data-tone={tone}>\n {icon !== undefined && (\n <span className={styles.noteIcon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className={styles.noteText}>{children}</span>\n </p>\n )\n }\n const { title, action, linkComponent } = props\n return (\n <div role=\"note\" className={cx(styles.callout, calloutToneClass[tone], className)} data-tone={tone}>\n {icon !== undefined && (\n <span className={styles.calloutIcon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <div className={styles.calloutText}>\n {title !== undefined && <span className={styles.calloutTitle}>{title}</span>}\n <span className={styles.calloutBody}>{children}</span>\n </div>\n {action && (\n <span className={styles.calloutAction}>\n <BackdropButton variant=\"outline\" size=\"md\" href={action.href} linkComponent={linkComponent} onClick={action.onClick}>\n {action.label}\n </BackdropButton>\n </span>\n )}\n </div>\n )\n}\n"],"names":["BackdropIconTile","children","size","shape","tone","className","jsx","cx","styles","BackdropEmptyState","icon","title","body","action","linkComponent","rest","jsxs","BackdropButton","BackdropStat","props","label","value","caption","tile","selectable","Fragment","classes","BackdropStatRow","appearance","divided","calloutToneClass","BackdropCallout"],"mappings":";;;;AAuDO,SAASA,EAAiB,EAAE,UAAAC,GAAU,MAAAC,IAAO,OAAO,OAAAC,IAAQ,UAAU,MAAAC,IAAO,WAAW,WAAAC,KAAoC;AACjI,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTC,EAAO;AAAA,QACPN,MAAS,UAAUM,EAAO,YAAYA,EAAO;AAAA,QAC7CL,MAAU,YAAYK,EAAO;AAAA,QAC7BJ,MAAS,aAAaI,EAAO;AAAA,QAC7BJ,MAAS,YAAYI,EAAO;AAAA,QAC5BH;AAAA,MAAA;AAAA,MAEF,eAAY;AAAA,MAEX,UAAAJ;AAAA,IAAA;AAAA,EAAA;AAGP;AAsBO,SAASQ,EAAmB,EAAE,MAAAC,GAAM,OAAAC,GAAO,MAAAC,GAAM,QAAAC,GAAQ,eAAAC,GAAe,WAAAT,GAAW,GAAGU,KAAiC;AAC5H,SACE,gBAAAC,EAAC,aAAQ,WAAWT,EAAGC,EAAO,OAAOH,CAAS,GAAI,GAAGU,GACnD,UAAA;AAAA,IAAA,gBAAAT,EAACN,KAAiB,MAAK,SAAQ,WAAWQ,EAAO,WAC9C,UAAAE,GACH;AAAA,IACA,gBAAAJ,EAAC,MAAA,EAAG,WAAWE,EAAO,YAAa,UAAAG,GAAM;AAAA,IACzC,gBAAAL,EAAC,KAAA,EAAE,WAAWE,EAAO,WAAY,UAAAI,GAAK;AAAA,IACrCC,uBACE,OAAA,EAAI,WAAWL,EAAO,aACrB,UAAA,gBAAAF,EAACW,KAAe,SAAQ,WAAU,MAAK,MAAK,MAAMJ,EAAO,MAAM,eAAAC,GAA8B,SAASD,EAAO,SAC1G,UAAAA,EAAO,MAAA,CACV,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;AAqCO,SAASK,EAAaC,GAA0B;AACrD,QAAM,EAAE,OAAAC,GAAO,OAAAC,GAAO,SAAAC,GAAS,MAAAlB,IAAO,WAAW,WAAAC,MAAcc,GACzDI,IAAOJ,EAAM,eAAe,QAC5BK,IAAaD,KAAQJ,EAAM,aAAa,QACxCP,IACJ,gBAAAI,EAAAS,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAnB,EAAC,QAAA,EAAK,WAAWE,EAAO,WAAY,UAAAY,GAAM;AAAA,IAC1C,gBAAAd,EAAC,QAAA,EAAK,WAAWC,EAAGC,EAAO,WAAWJ,MAAS,aAAaI,EAAO,gBAAgB,GAAI,UAAAa,EAAA,CAAM;AAAA,IAC5FC,MAAY,UAAa,gBAAAhB,EAAC,UAAK,WAAWE,EAAO,aAAc,UAAAc,EAAA,CAAQ;AAAA,EAAA,GAC1E,GAEII,IAAUnB,EAAGC,EAAO,MAAMe,KAAQf,EAAO,UAAUgB,KAAcL,EAAM,YAAYX,EAAO,cAAcH,CAAS;AACvH,SAAImB,IAEA,gBAAAlB,EAAC,UAAA,EAAO,MAAK,UAAS,WAAWC,EAAGmB,GAASlB,EAAO,UAAU,GAAG,gBAAcW,EAAM,UAClF,UAAAP,GACH,IAGG,gBAAAN,EAAC,OAAA,EAAI,WAAWoB,GAAU,UAAAd,GAAK;AACxC;AAcO,SAASe,EAAgB,EAAE,UAAA1B,GAAU,YAAA2B,IAAa,UAAU,SAAAC,IAAU,IAAO,OAAAT,GAAO,WAAAf,KAAmC;AAC5H,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAMc,IAAQ,UAAU;AAAA,MACxB,cAAYA;AAAA,MACZ,WAAWb,EAAGC,EAAO,SAASoB,MAAe,SAASpB,EAAO,cAAcA,EAAO,eAAeqB,KAAWD,MAAe,YAAYpB,EAAO,gBAAgBH,CAAS;AAAA,MAEtK,UAAAJ;AAAA,IAAA;AAAA,EAAA;AAGP;AA0CA,MAAM6B,IAAoE;AAAA,EACxE,SAAStB,EAAO;AAAA,EAChB,MAAMA,EAAO;AAAA,EACb,SAASA,EAAO;AAAA,EAChB,SAASA,EAAO;AAAA,EAChB,QAAQA,EAAO;AACjB;AAOO,SAASuB,EAAgBZ,GAA6B;AAC3D,QAAM,EAAE,MAAAf,IAAO,WAAW,MAAAM,GAAM,UAAAT,GAAU,WAAAI,MAAcc;AACxD,MAAIA,EAAM,eAAe;AACvB,WACE,gBAAAH,EAAC,KAAA,EAAE,WAAWT,EAAGC,EAAO,MAAMsB,EAAiB1B,CAAI,GAAGC,CAAS,GAAG,aAAWD,GAC1E,UAAA;AAAA,MAAAM,MAAS,4BACP,QAAA,EAAK,WAAWF,EAAO,UAAU,eAAY,QAC3C,UAAAE,EAAA,CACH;AAAA,MAEF,gBAAAJ,EAAC,QAAA,EAAK,WAAWE,EAAO,UAAW,UAAAP,EAAA,CAAS;AAAA,IAAA,GAC9C;AAGJ,QAAM,EAAE,OAAAU,GAAO,QAAAE,GAAQ,eAAAC,EAAA,IAAkBK;AACzC,SACE,gBAAAH,EAAC,OAAA,EAAI,MAAK,QAAO,WAAWT,EAAGC,EAAO,SAASsB,EAAiB1B,CAAI,GAAGC,CAAS,GAAG,aAAWD,GAC3F,UAAA;AAAA,IAAAM,MAAS,4BACP,QAAA,EAAK,WAAWF,EAAO,aAAa,eAAY,QAC9C,UAAAE,EAAA,CACH;AAAA,IAEF,gBAAAM,EAAC,OAAA,EAAI,WAAWR,EAAO,aACpB,UAAA;AAAA,MAAAG,MAAU,UAAa,gBAAAL,EAAC,QAAA,EAAK,WAAWE,EAAO,cAAe,UAAAG,GAAM;AAAA,MACrE,gBAAAL,EAAC,QAAA,EAAK,WAAWE,EAAO,aAAc,UAAAP,EAAA,CAAS;AAAA,IAAA,GACjD;AAAA,IACCY,uBACE,QAAA,EAAK,WAAWL,EAAO,eACtB,UAAA,gBAAAF,EAACW,KAAe,SAAQ,WAAU,MAAK,MAAK,MAAMJ,EAAO,MAAM,eAAAC,GAA8B,SAASD,EAAO,SAC1G,UAAAA,EAAO,MAAA,CACV,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const t = "_tile_u4rcs_7", s = "_tileRow_u4rcs_17", c = "_tileEmpty_u4rcs_22", e = "_tileCircle_u4rcs_29", o = "_tileSuccess_u4rcs_33", _ = "_tileDanger_u4rcs_38", n = "_empty_u4rcs_5", l = "_emptyTile_u4rcs_5", a = "_emptyTitle_u4rcs_61", u = "_emptyBody_u4rcs_70", i = "_emptyAction_u4rcs_77", r = "_stat_u4rcs_85", y = "_statLabel_u4rcs_94", p = "_statValue_u4rcs_103", T = "_statValueSuccess_u4rcs_112", m = "_statCaption_u4rcs_116", d = "_statTile_u4rcs_123", w = "_statButton_u4rcs_132", R = "_statSelected_u4rcs_145", I = "_statRow_u4rcs_149", S = "_statRowInline_u4rcs_154", g = "_statRowDivided_u4rcs_158", B = "_statRowTile_u4rcs_163", D = "_callout_u4rcs_173", x = "_calloutIcon_u4rcs_184", A = "_calloutText_u4rcs_196", C = "_calloutTitle_u4rcs_204", V = "_calloutBody_u4rcs_210", f = "_calloutAction_u4rcs_215", b = "_note_u4rcs_221", v = "_noteIcon_u4rcs_232", E = "_noteText_u4rcs_244", L = "_toneNeutral_u4rcs_249", N = "_toneInfo_u4rcs_254", W = "_toneSuccess_u4rcs_259", h = "_toneWarning_u4rcs_264", j = "_toneDanger_u4rcs_269", k = {
|
|
2
|
+
tile: t,
|
|
3
|
+
tileRow: s,
|
|
4
|
+
tileEmpty: c,
|
|
5
|
+
tileCircle: e,
|
|
6
|
+
tileSuccess: o,
|
|
7
|
+
tileDanger: _,
|
|
8
|
+
empty: n,
|
|
9
|
+
emptyTile: l,
|
|
10
|
+
emptyTitle: a,
|
|
11
|
+
emptyBody: u,
|
|
12
|
+
emptyAction: i,
|
|
13
|
+
stat: r,
|
|
14
|
+
statLabel: y,
|
|
15
|
+
statValue: p,
|
|
16
|
+
statValueSuccess: T,
|
|
17
|
+
statCaption: m,
|
|
18
|
+
statTile: d,
|
|
19
|
+
statButton: w,
|
|
20
|
+
statSelected: R,
|
|
21
|
+
statRow: I,
|
|
22
|
+
statRowInline: S,
|
|
23
|
+
statRowDivided: g,
|
|
24
|
+
statRowTile: B,
|
|
25
|
+
callout: D,
|
|
26
|
+
calloutIcon: x,
|
|
27
|
+
calloutText: A,
|
|
28
|
+
calloutTitle: C,
|
|
29
|
+
calloutBody: V,
|
|
30
|
+
calloutAction: f,
|
|
31
|
+
note: b,
|
|
32
|
+
noteIcon: v,
|
|
33
|
+
noteText: E,
|
|
34
|
+
toneNeutral: L,
|
|
35
|
+
toneInfo: N,
|
|
36
|
+
toneSuccess: W,
|
|
37
|
+
toneWarning: h,
|
|
38
|
+
toneDanger: j
|
|
39
|
+
};
|
|
40
|
+
export {
|
|
41
|
+
D as callout,
|
|
42
|
+
f as calloutAction,
|
|
43
|
+
V as calloutBody,
|
|
44
|
+
x as calloutIcon,
|
|
45
|
+
A as calloutText,
|
|
46
|
+
C as calloutTitle,
|
|
47
|
+
k as default,
|
|
48
|
+
n as empty,
|
|
49
|
+
i as emptyAction,
|
|
50
|
+
u as emptyBody,
|
|
51
|
+
l as emptyTile,
|
|
52
|
+
a as emptyTitle,
|
|
53
|
+
b as note,
|
|
54
|
+
v as noteIcon,
|
|
55
|
+
E as noteText,
|
|
56
|
+
r as stat,
|
|
57
|
+
w as statButton,
|
|
58
|
+
m as statCaption,
|
|
59
|
+
y as statLabel,
|
|
60
|
+
I as statRow,
|
|
61
|
+
g as statRowDivided,
|
|
62
|
+
S as statRowInline,
|
|
63
|
+
B as statRowTile,
|
|
64
|
+
R as statSelected,
|
|
65
|
+
d as statTile,
|
|
66
|
+
p as statValue,
|
|
67
|
+
T as statValueSuccess,
|
|
68
|
+
t as tile,
|
|
69
|
+
e as tileCircle,
|
|
70
|
+
_ as tileDanger,
|
|
71
|
+
c as tileEmpty,
|
|
72
|
+
s as tileRow,
|
|
73
|
+
o as tileSuccess,
|
|
74
|
+
j as toneDanger,
|
|
75
|
+
N as toneInfo,
|
|
76
|
+
L as toneNeutral,
|
|
77
|
+
W as toneSuccess,
|
|
78
|
+
h as toneWarning
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=BackdropDisplay.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackdropDisplay.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|