react-cheminfo 0.58.0 → 0.60.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 (149) hide show
  1. package/README.md +7 -2
  2. package/lib/about/ui/AboutBuildDetails.d.ts +15 -0
  3. package/lib/about/ui/AboutBuildDetails.d.ts.map +1 -0
  4. package/lib/about/ui/AboutBuildDetails.js +17 -0
  5. package/lib/about/ui/AboutBuildDetails.js.map +1 -0
  6. package/lib/about/ui/AboutPage.d.ts +8 -0
  7. package/lib/about/ui/AboutPage.d.ts.map +1 -1
  8. package/lib/about/ui/AboutPage.js +12 -3
  9. package/lib/about/ui/AboutPage.js.map +1 -1
  10. package/lib/about/ui/AboutSignIn.d.ts +33 -0
  11. package/lib/about/ui/AboutSignIn.d.ts.map +1 -0
  12. package/lib/about/ui/AboutSignIn.js +28 -0
  13. package/lib/about/ui/AboutSignIn.js.map +1 -0
  14. package/lib/about/ui/AboutVersion.d.ts +4 -2
  15. package/lib/about/ui/AboutVersion.d.ts.map +1 -1
  16. package/lib/about/ui/AboutVersion.js +21 -3
  17. package/lib/about/ui/AboutVersion.js.map +1 -1
  18. package/lib/about/ui/index.d.ts +2 -2
  19. package/lib/about/ui/index.d.ts.map +1 -1
  20. package/lib/about/ui/index.js +1 -1
  21. package/lib/about/ui/index.js.map +1 -1
  22. package/lib/chart/ui/ChartTrackingLayer.js +3 -1
  23. package/lib/chart/ui/ChartTrackingLayer.js.map +1 -1
  24. package/lib/chart/ui/useChartSize.d.ts +16 -0
  25. package/lib/chart/ui/useChartSize.d.ts.map +1 -1
  26. package/lib/chart/ui/useChartSize.js +34 -1
  27. package/lib/chart/ui/useChartSize.js.map +1 -1
  28. package/lib/chrome/ui/NavEntry.d.ts +16 -0
  29. package/lib/chrome/ui/NavEntry.d.ts.map +1 -0
  30. package/lib/chrome/ui/NavEntry.js +27 -0
  31. package/lib/chrome/ui/NavEntry.js.map +1 -0
  32. package/lib/chrome/ui/SiteHeader.d.ts +11 -4
  33. package/lib/chrome/ui/SiteHeader.d.ts.map +1 -1
  34. package/lib/chrome/ui/SiteHeader.js +4 -26
  35. package/lib/chrome/ui/SiteHeader.js.map +1 -1
  36. package/lib/core.d.ts +2 -0
  37. package/lib/core.d.ts.map +1 -1
  38. package/lib/core.js +2 -0
  39. package/lib/core.js.map +1 -1
  40. package/lib/ecosystem/core/types.d.ts +1 -1
  41. package/lib/ecosystem/core/types.d.ts.map +1 -1
  42. package/lib/ecosystem/core/unlistedSites.d.ts.map +1 -1
  43. package/lib/ecosystem/core/unlistedSites.js +14 -0
  44. package/lib/ecosystem/core/unlistedSites.js.map +1 -1
  45. package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
  46. package/lib/ecosystem/ui/glyphs.js +3 -0
  47. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  48. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  49. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  50. package/lib/locales/de.json +36 -3
  51. package/lib/locales/en.json +36 -3
  52. package/lib/locales/es.json +36 -3
  53. package/lib/locales/fr.json +36 -3
  54. package/lib/locales/it.json +36 -3
  55. package/lib/moleculesSources/core/index.d.ts +3 -0
  56. package/lib/moleculesSources/core/index.d.ts.map +1 -0
  57. package/lib/moleculesSources/core/index.js +2 -0
  58. package/lib/moleculesSources/core/index.js.map +1 -0
  59. package/lib/moleculesSources/core/moleculesSources.d.ts +55 -0
  60. package/lib/moleculesSources/core/moleculesSources.d.ts.map +1 -0
  61. package/lib/moleculesSources/core/moleculesSources.js +63 -0
  62. package/lib/moleculesSources/core/moleculesSources.js.map +1 -0
  63. package/lib/moleculesSources/ui/MoleculesSourceBadge.d.ts +18 -0
  64. package/lib/moleculesSources/ui/MoleculesSourceBadge.d.ts.map +1 -0
  65. package/lib/moleculesSources/ui/MoleculesSourceBadge.js +22 -0
  66. package/lib/moleculesSources/ui/MoleculesSourceBadge.js.map +1 -0
  67. package/lib/moleculesSources/ui/SourceBadge.d.ts +57 -0
  68. package/lib/moleculesSources/ui/SourceBadge.d.ts.map +1 -0
  69. package/lib/moleculesSources/ui/SourceBadge.js +29 -0
  70. package/lib/moleculesSources/ui/SourceBadge.js.map +1 -0
  71. package/lib/moleculesSources/ui/index.d.ts +7 -0
  72. package/lib/moleculesSources/ui/index.d.ts.map +1 -0
  73. package/lib/moleculesSources/ui/index.js +4 -0
  74. package/lib/moleculesSources/ui/index.js.map +1 -0
  75. package/lib/moleculesSources/ui/useSourceLooks.d.ts +24 -0
  76. package/lib/moleculesSources/ui/useSourceLooks.d.ts.map +1 -0
  77. package/lib/moleculesSources/ui/useSourceLooks.js +53 -0
  78. package/lib/moleculesSources/ui/useSourceLooks.js.map +1 -0
  79. package/lib/moleculesToken/core/index.d.ts +4 -0
  80. package/lib/moleculesToken/core/index.d.ts.map +1 -0
  81. package/lib/moleculesToken/core/index.js +3 -0
  82. package/lib/moleculesToken/core/index.js.map +1 -0
  83. package/lib/moleculesToken/core/moleculesToken.d.ts +101 -0
  84. package/lib/moleculesToken/core/moleculesToken.d.ts.map +1 -0
  85. package/lib/moleculesToken/core/moleculesToken.js +137 -0
  86. package/lib/moleculesToken/core/moleculesToken.js.map +1 -0
  87. package/lib/moleculesToken/core/tokenFix.d.ts +18 -0
  88. package/lib/moleculesToken/core/tokenFix.d.ts.map +1 -0
  89. package/lib/moleculesToken/core/tokenFix.js +27 -0
  90. package/lib/moleculesToken/core/tokenFix.js.map +1 -0
  91. package/lib/moleculesToken/ui/MoleculesTokenFix.d.ts +22 -0
  92. package/lib/moleculesToken/ui/MoleculesTokenFix.d.ts.map +1 -0
  93. package/lib/moleculesToken/ui/MoleculesTokenFix.js +35 -0
  94. package/lib/moleculesToken/ui/MoleculesTokenFix.js.map +1 -0
  95. package/lib/moleculesToken/ui/MoleculesTokenTable.d.ts +37 -0
  96. package/lib/moleculesToken/ui/MoleculesTokenTable.d.ts.map +1 -0
  97. package/lib/moleculesToken/ui/MoleculesTokenTable.js +56 -0
  98. package/lib/moleculesToken/ui/MoleculesTokenTable.js.map +1 -0
  99. package/lib/moleculesToken/ui/index.d.ts +5 -0
  100. package/lib/moleculesToken/ui/index.d.ts.map +1 -0
  101. package/lib/moleculesToken/ui/index.js +3 -0
  102. package/lib/moleculesToken/ui/index.js.map +1 -0
  103. package/lib/moleculesToken/ui/tokenDetails.d.ts +13 -0
  104. package/lib/moleculesToken/ui/tokenDetails.d.ts.map +1 -0
  105. package/lib/moleculesToken/ui/tokenDetails.js +73 -0
  106. package/lib/moleculesToken/ui/tokenDetails.js.map +1 -0
  107. package/lib/ui.d.ts +2 -0
  108. package/lib/ui.d.ts.map +1 -1
  109. package/lib/ui.js +2 -0
  110. package/lib/ui.js.map +1 -1
  111. package/package.json +1 -1
  112. package/src/about/ui/AboutBuildDetails.tsx +45 -0
  113. package/src/about/ui/AboutPage.tsx +27 -13
  114. package/src/about/ui/AboutSignIn.tsx +63 -0
  115. package/src/about/ui/AboutVersion.tsx +27 -9
  116. package/src/about/ui/index.ts +2 -2
  117. package/src/chart/ui/ChartTrackingLayer.tsx +3 -1
  118. package/src/chart/ui/useChartSize.ts +44 -1
  119. package/src/chrome/ui/NavEntry.tsx +41 -0
  120. package/src/chrome/ui/SiteHeader.tsx +15 -41
  121. package/src/core.ts +2 -0
  122. package/src/ecosystem/core/types.ts +2 -1
  123. package/src/ecosystem/core/unlistedSites.ts +14 -0
  124. package/src/ecosystem/ui/glyphs.tsx +10 -0
  125. package/src/locales/de.json +36 -3
  126. package/src/locales/en.json +36 -3
  127. package/src/locales/es.json +36 -3
  128. package/src/locales/fr.json +36 -3
  129. package/src/locales/it.json +36 -3
  130. package/src/moleculesSources/core/index.ts +11 -0
  131. package/src/moleculesSources/core/moleculesSources.ts +102 -0
  132. package/src/moleculesSources/ui/MoleculesSourceBadge.tsx +44 -0
  133. package/src/moleculesSources/ui/SourceBadge.tsx +117 -0
  134. package/src/moleculesSources/ui/index.ts +6 -0
  135. package/src/moleculesSources/ui/useSourceLooks.ts +70 -0
  136. package/src/moleculesToken/core/index.ts +12 -0
  137. package/src/moleculesToken/core/moleculesToken.ts +256 -0
  138. package/src/moleculesToken/core/tokenFix.ts +37 -0
  139. package/src/moleculesToken/ui/MoleculesTokenFix.tsx +95 -0
  140. package/src/moleculesToken/ui/MoleculesTokenTable.tsx +175 -0
  141. package/src/moleculesToken/ui/index.ts +4 -0
  142. package/src/moleculesToken/ui/tokenDetails.tsx +91 -0
  143. package/src/ui.ts +2 -0
  144. package/styles/chrome.css +194 -0
  145. package/lib/about/ui/AboutBuild.d.ts +0 -18
  146. package/lib/about/ui/AboutBuild.d.ts.map +0 -1
  147. package/lib/about/ui/AboutBuild.js +0 -37
  148. package/lib/about/ui/AboutBuild.js.map +0 -1
  149. package/src/about/ui/AboutBuild.tsx +0 -54
package/README.md CHANGED
@@ -111,7 +111,7 @@ through a wildcard subpath exactly as `react-science` serves its own.
111
111
  | **Infrared** | `loadIrSpectra`, `toIrSpectrum`, `pickBands`, `assignBands`, `BAND_ASSIGNMENTS`, `irSpectrumToJcamp`, `IR_MODE_RULES`, `nearestBandAt`, `planBandLabels`, `irReducer` (all `/ir`) | `IrEditor`, `IrChart`, `BandsPanel`, `SpectraPanel`, `MetadataPanel`, `useIrEditor` (all `/ir`) |
112
112
  | **Spectra** | `FILTER_CATALOG`, `filterMenu`, `settingsProblems`, `normalizationFilters`, `addFilter`, `moveFilter`, `setFilterOption`, `principalComponentChoices`, `clampPrincipalComponents`, `EMPTY_SETTINGS` (all `/spectra`) | `SpectraSettingsEditor`, `FilterChainEditor`, `PrincipalComponentSelect` (all `/spectra`) |
113
113
  | **About** | `resolveAbout`, `aboutProblems` | `AboutPage` |
114
- | **Which build is running** | `formatBuiltAt`, `shortCommit`, `BuildInfo` | `AboutBuild`, `cheminfoBuildInfo` (`/vite`) |
114
+ | **Which build is running** | `formatBuiltAt`, `shortCommit`, `BuildInfo` | `AboutVersion`, `cheminfoBuildInfo` (`/vite`) |
115
115
  | **Slideshows** | `parseTalk`, `splitDemoLinks`, `slideActionForKey`, `parseTalkOrigin`, `buildTalkManifest` (all `/slides`) | `Slideshow`, `SlideView`, `TalkList`, `BackToSlides` (all `/slides`), `cheminfoTalks` (`/vite`) |
116
116
  | **Token guard** | `findTokenViolations` | `cheminfo-check-tokens`, `cheminfo-check-messages`, `cheminfo-check-deploy` (the bins) |
117
117
  | **Figures** | `chartScale`, `chartAxisScale`, `chartAxisTitle`, `chartShare`, `chartColumnExtent`, `chartBinCounts`, `chartSeriesColor`, `rowMatrix`, `stackedMatrix`, `emptiestCorner`, `placeOverlayCard`, `overlayMetrics` | `ChartFrame`, `ChartAxis`, `TrackedLineChart`, `OverlayBar`, `OverlaySelect`, `OverlaySegmented`, `OverlayToggle`, `OverlayNumber`, `OverlayLegend`, `OverlayCaption`, `OverlayReadout` |
@@ -1229,6 +1229,11 @@ running, and a hand-written version in a source file is wrong by the next
1229
1229
  release. So the build states it: `cheminfoBuildInfo` resolves the release, the
1230
1230
  instant and the commit once, and the About page reads them.
1231
1231
 
1232
+ The About says it once, in the badge in the corner of its hero: `1.2.1 ·
1233
+ 2026-09-16 09:41 UTC`, whose hover card lists the commit, the instant to the
1234
+ second and the `react-cheminfo` version. A site with no release yet shows its
1235
+ commit on the badge instead. Nothing further down the page repeats it.
1236
+
1232
1237
  ```ts
1233
1238
  // vite.config.ts
1234
1239
  import { cheminfoBuildInfo } from 'react-cheminfo/vite';
@@ -1247,7 +1252,7 @@ export const ABOUT: AboutContent = { siteId: 'smiles', build: BUILD_INFO, ... };
1247
1252
  plugin fills it in during the build. So a Playwright spec or a unit test that
1248
1253
  imports the same About record in plain Node still resolves it — a virtual
1249
1254
  specifier does not, and the whole suite dies on the import — and a build without
1250
- the plugin simply shows no build line.
1255
+ the plugin simply shows no build badge.
1251
1256
 
1252
1257
  Where each value comes from:
1253
1258
 
@@ -0,0 +1,15 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { BuildInfo } from '../../build/core/buildInfo.ts';
3
+ /**
4
+ * What the badge of a release leaves to its hover: the commit it was built
5
+ * from, the instant to the second, and the chrome it was built against.
6
+ * @param props - The build and its released version.
7
+ * @param props.build - What the build published about itself.
8
+ * @param props.version - The release the badge names.
9
+ * @returns The card's contents.
10
+ */
11
+ export declare function AboutBuildDetails(props: {
12
+ build: BuildInfo;
13
+ version: string;
14
+ }): ReactElement;
15
+ //# sourceMappingURL=AboutBuildDetails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AboutBuildDetails.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutBuildDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI/D;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,YAAY,CA2Bf"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { formatBuiltAt, shortCommit } from "../../build/core/buildInfo.js";
3
+ import { useChromeT } from "../../i18n/ui/useT.js";
4
+ /**
5
+ * What the badge of a release leaves to its hover: the commit it was built
6
+ * from, the instant to the second, and the chrome it was built against.
7
+ * @param props - The build and its released version.
8
+ * @param props.build - What the build published about itself.
9
+ * @param props.version - The release the badge names.
10
+ * @returns The card's contents.
11
+ */
12
+ export function AboutBuildDetails(props) {
13
+ const { build, version } = props;
14
+ const t = useChromeT();
15
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "build-tooltip__header", children: t('about.buildVersion', { version }) }), _jsxs("dl", { className: "build-tooltip__rows", children: [_jsx("dt", { children: t('about.buildBuilt') }), _jsx("dd", { children: formatBuiltAt(build.builtAt) }), build.commit === undefined ? null : (_jsxs(_Fragment, { children: [_jsx("dt", { children: t('about.buildCommit') }), _jsx("dd", { children: shortCommit(build.commit) })] })), build.reactCheminfo === undefined ? null : (_jsxs(_Fragment, { children: [_jsx("dt", { children: "react-cheminfo" }), _jsx("dd", { children: build.reactCheminfo })] }))] })] }));
16
+ }
17
+ //# sourceMappingURL=AboutBuildDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AboutBuildDetails.js","sourceRoot":"","sources":["../../../src/about/ui/AboutBuildDetails.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAGjC;IACC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IAEvB,OAAO,CACL,8BACE,cAAK,SAAS,EAAC,uBAAuB,YACnC,CAAC,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,GACjC,EACN,cAAI,SAAS,EAAC,qBAAqB,aACjC,uBAAK,CAAC,CAAC,kBAAkB,CAAC,GAAM,EAChC,uBAAK,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAM,EACtC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnC,8BACE,uBAAK,CAAC,CAAC,mBAAmB,CAAC,GAAM,EACjC,uBAAK,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,GAAM,IACnC,CACJ,EACA,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1C,8BACE,0CAAuB,EACvB,uBAAK,KAAK,CAAC,aAAa,GAAM,IAC7B,CACJ,IACE,IACJ,CACJ,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { ReactElement, ReactNode } from 'react';
2
2
  import type { AboutContent } from '../core/about.ts';
3
+ import type { AboutSignInProps } from './AboutSignIn.tsx';
3
4
  export interface AboutPageProps {
4
5
  /** What the site says about itself. */
5
6
  content: AboutContent;
@@ -30,6 +31,13 @@ export interface AboutPageProps {
30
31
  * @default undefined
31
32
  */
32
33
  logo?: ReactNode;
34
+ /**
35
+ * Where the people who run the site sign in, drawn under the build badge in
36
+ * the corner of the hero. A site passes it while nobody is signed in, and
37
+ * leaves it out once somebody is: the account is then in the bar.
38
+ * @default undefined — the site has no account to sign in to
39
+ */
40
+ signIn?: AboutSignInProps;
33
41
  }
34
42
  /**
35
43
  * The About page of a site of the family: what the tool is, who provides it,
@@ -1 +1 @@
1
- {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASrD,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CAkF7D"}
1
+ {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CA+E7D"}
@@ -1,13 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { buildLabel } from "../../build/core/buildInfo.js";
2
3
  import { CreditsList } from "../../credits/ui/CreditsList.js";
3
4
  import { Wordmark } from "../../ecosystem/ui/Wordmark.js";
4
5
  import { SiteMark } from "../../ecosystem/ui/marks.js";
5
6
  import { useChromeT } from "../../i18n/ui/useT.js";
6
7
  import { resolveAbout } from "../core/about.js";
7
- import { AboutBuild } from "./AboutBuild.js";
8
8
  import { AboutCitations } from "./AboutCitations.js";
9
9
  import { AboutProvidedBy } from "./AboutProvidedBy.js";
10
10
  import { AboutSection } from "./AboutSection.js";
11
+ import { AboutSignIn } from "./AboutSignIn.js";
11
12
  import { AboutVersion } from "./AboutVersion.js";
12
13
  /**
13
14
  * The About page of a site of the family: what the tool is, who provides it,
@@ -22,13 +23,14 @@ import { AboutVersion } from "./AboutVersion.js";
22
23
  * @throws {Error} When the record names a site or a credit that does not exist.
23
24
  */
24
25
  export function AboutPage(props) {
25
- const { content, className, children, logo, mark } = props;
26
+ const { content, className, children, logo, mark, signIn } = props;
26
27
  const t = useChromeT();
27
28
  const about = resolveAbout(content);
28
29
  const site = about.site;
30
+ const hasCorner = buildLabel(about.build) !== undefined || signIn !== undefined;
29
31
  return (_jsxs("div", { className: className === undefined ? 'about-page' : `about-page ${className}`, style: PAGE_STYLE, children: [_jsxs("header", { className: "about-hero", style: HERO_STYLE, children: [logo === undefined
30
32
  ? (mark ?? _jsx(SiteMark, { site: site, size: 56 }))
31
- : null, _jsxs("div", { style: HERO_BODY_STYLE, children: [_jsx("h1", { style: logo === undefined ? NAME_STYLE : LOGO_NAME_STYLE, children: logo ?? _jsx(Wordmark, { site: site, size: 26 }) }), _jsx("p", { style: TAGLINE_STYLE, children: t.or(`site.${site.id}.tagline`, site.tagline) }), _jsx("p", { style: WHAT_STYLE, children: about.what })] }), _jsx(AboutVersion, { build: about.build })] }), about.people.length === 0 && about.providedBy.length === 0 ? null : (_jsx(AboutSection, { title: t('about.providedBy'), className: "about-provided-by", children: _jsx(AboutProvidedBy, { people: about.people, providers: about.providedBy }) })), _jsx(AboutSection, { title: t('about.whatYouCanDo'), className: "about-can", children: _jsx("ul", { style: CAN_LIST_STYLE, children: about.can.map((line) => (_jsx("li", { children: line }, line))) }) }), about.paragraphs.length === 0 ? null : (_jsx(AboutSection, { className: "about-context", children: about.paragraphs.map((paragraph, index) => (_jsx("p", { style: index === 0 ? FIRST_PARAGRAPH_STYLE : PARAGRAPH_STYLE, children: paragraph }, paragraph))) })), children, _jsx(AboutSection, { title: t('about.builtOn'), className: "about-credits", children: _jsx(CreditsList, { entries: about.credits }) }), about.cite.length === 0 ? null : (_jsx(AboutSection, { title: t('about.howToCite'), className: "about-cite", children: _jsx(AboutCitations, { works: about.cite }) })), about.build === undefined ? null : (_jsx(AboutSection, { className: "about-build", children: _jsx(AboutBuild, { build: about.build }) }))] }));
33
+ : null, _jsxs("div", { style: HERO_BODY_STYLE, children: [_jsx("h1", { style: logo === undefined ? NAME_STYLE : LOGO_NAME_STYLE, children: logo ?? _jsx(Wordmark, { site: site, size: 26 }) }), _jsx("p", { style: TAGLINE_STYLE, children: t.or(`site.${site.id}.tagline`, site.tagline) }), _jsx("p", { style: WHAT_STYLE, children: about.what })] }), hasCorner ? (_jsxs("div", { className: "about-corner", style: CORNER_STYLE, children: [_jsx(AboutVersion, { build: about.build }), signIn === undefined ? null : _jsx(AboutSignIn, { ...signIn })] })) : null] }), about.people.length === 0 && about.providedBy.length === 0 ? null : (_jsx(AboutSection, { title: t('about.providedBy'), className: "about-provided-by", children: _jsx(AboutProvidedBy, { people: about.people, providers: about.providedBy }) })), _jsx(AboutSection, { title: t('about.whatYouCanDo'), className: "about-can", children: _jsx("ul", { style: CAN_LIST_STYLE, children: about.can.map((line) => (_jsx("li", { children: line }, line))) }) }), about.paragraphs.length === 0 ? null : (_jsx(AboutSection, { className: "about-context", children: about.paragraphs.map((paragraph, index) => (_jsx("p", { style: index === 0 ? FIRST_PARAGRAPH_STYLE : PARAGRAPH_STYLE, children: paragraph }, paragraph))) })), children, _jsx(AboutSection, { title: t('about.builtOn'), className: "about-credits", children: _jsx(CreditsList, { entries: about.credits }) }), about.cite.length === 0 ? null : (_jsx(AboutSection, { title: t('about.howToCite'), className: "about-cite", children: _jsx(AboutCitations, { works: about.cite }) }))] }));
32
34
  }
33
35
  const PAGE_STYLE = {
34
36
  display: 'flex',
@@ -52,6 +54,13 @@ const HERO_STYLE = {
52
54
  gap: 16,
53
55
  lineHeight: 1.55,
54
56
  };
57
+ const CORNER_STYLE = {
58
+ display: 'flex',
59
+ flex: '0 0 auto',
60
+ flexDirection: 'column',
61
+ alignItems: 'flex-end',
62
+ gap: 2,
63
+ };
55
64
  const NAME_STYLE = {
56
65
  margin: 0,
57
66
  fontSize: 26,
@@ -1 +1 @@
1
- {"version":3,"file":"AboutPage.js","sourceRoot":"","sources":["../../../src/about/ui/AboutPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AboutPage.js","sourceRoot":"","sources":["../../../src/about/ui/AboutPage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAkC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAiC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA8B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAyClD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACnE,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,SAAS,GACb,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC;IAEhE,OAAO,CACL,eACE,SAAS,EACP,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,EAEpE,KAAK,EAAE,UAAU,aAEjB,kBAAQ,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,UAAU,aAC7C,IAAI,KAAK,SAAS;wBACjB,CAAC,CAAC,CAAC,IAAI,IAAI,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,CAAC;wBAC9C,CAAC,CAAC,IAAI,EACR,eAAK,KAAK,EAAE,eAAe,aACzB,aAAI,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,YACzD,IAAI,IAAI,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,GACxC,EACL,YAAG,KAAK,EAAE,aAAa,YACpB,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAC5C,EACJ,YAAG,KAAK,EAAE,UAAU,YAAG,KAAK,CAAC,IAAI,GAAK,IAClC,EACL,SAAS,CAAC,CAAC,CAAC,CACX,eAAK,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,YAAY,aAC/C,KAAC,YAAY,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAI,EACnC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,WAAW,OAAK,MAAM,GAAI,IACtD,CACP,CAAC,CAAC,CAAC,IAAI,IACD,EAER,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnE,KAAC,YAAY,IACX,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAC5B,SAAS,EAAC,mBAAmB,YAE7B,KAAC,eAAe,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,GAAI,GACzD,CAChB,EAED,KAAC,YAAY,IAAC,KAAK,EAAE,CAAC,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAC,WAAW,YACjE,aAAI,KAAK,EAAE,cAAc,YACtB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACvB,uBAAgB,IAAI,IAAX,IAAI,CAAa,CAC3B,CAAC,GACC,GACQ,EAEd,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtC,KAAC,YAAY,IAAC,SAAS,EAAC,eAAe,YACpC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1C,YAEE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe,YAE3D,SAAS,IAHL,SAAS,CAIZ,CACL,CAAC,GACW,CAChB,EAEA,QAAQ,EAET,KAAC,YAAY,IAAC,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,SAAS,EAAC,eAAe,YAChE,KAAC,WAAW,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,GAC1B,EAEd,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChC,KAAC,YAAY,IAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAC,YAAY,YAC/D,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAI,GACxB,CAChB,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,QAAQ,EAAE,GAAG;IACb,2EAA2E;IAC3E,YAAY,EAAE,MAAM;IACpB,GAAG,EAAE,EAAE;CACyB,CAAC;AAEnC,MAAM,eAAe,GAAG;IACtB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,CAAC;CACqB,CAAC;AAEnC,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,yBAAyB;IACjC,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,gBAAgB;IAC5B,GAAG,EAAE,EAAE;IACP,UAAU,EAAE,IAAI;CACgB,CAAC;AAEnC,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,UAAU;IAChB,aAAa,EAAE,QAAQ;IACvB,UAAU,EAAE,UAAU;IACtB,GAAG,EAAE,CAAC;CAC0B,CAAC;AAEnC,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;CACiB,CAAC;AAEnC,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,SAAS;CACe,CAAC;AAEnC,MAAM,aAAa,GAAG;IACpB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,EAAE;CACoB,CAAC;AAEnC,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,CAAC,EAAmC,CAAC;AAElE,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,EAAE;CACiB,CAAC;AAEnC,MAAM,qBAAqB,GAAG;IAC5B,MAAM,EAAE,CAAC;CACuB,CAAC;AAEnC,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,SAAS;CACe,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { ReactElement } from 'react';
2
+ export interface AboutSignInProps {
3
+ /**
4
+ * The address signing in happens at. Writing it keeps the entry a real link,
5
+ * so a middle click opens a tab.
6
+ * @default undefined
7
+ */
8
+ href?: string;
9
+ /**
10
+ * What the site does when the entry is picked — route to that page, or open
11
+ * a credentials dialog for a site that has no page. A modified click is left
12
+ * to the browser.
13
+ * @default undefined
14
+ */
15
+ onSignIn?: () => void;
16
+ /**
17
+ * What the entry reads, for a site whose accounts are for one kind of person.
18
+ * @default the chrome's own word for it, in the language of the page
19
+ */
20
+ label?: string;
21
+ }
22
+ /**
23
+ * Where the people who run a site sign in: one quiet line under the build
24
+ * badge, in the corner of the About.
25
+ *
26
+ * A visitor has nothing to sign in to, so the bar carries no invitation; the
27
+ * About is the page the operators already know, and the corner is where they
28
+ * already look for the build they run.
29
+ * @param props - See {@link AboutSignInProps}.
30
+ * @returns The entry.
31
+ */
32
+ export declare function AboutSignIn(props: AboutSignInProps): ReactElement;
33
+ //# sourceMappingURL=AboutSignIn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AboutSignIn.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutSignIn.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAK1C,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CA0BjE"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { isModifiedClick } from "../../chrome/ui/navItem.js";
3
+ import { useChromeT } from "../../i18n/ui/useT.js";
4
+ /**
5
+ * Where the people who run a site sign in: one quiet line under the build
6
+ * badge, in the corner of the About.
7
+ *
8
+ * A visitor has nothing to sign in to, so the bar carries no invitation; the
9
+ * About is the page the operators already know, and the corner is where they
10
+ * already look for the build they run.
11
+ * @param props - See {@link AboutSignInProps}.
12
+ * @returns The entry.
13
+ */
14
+ export function AboutSignIn(props) {
15
+ const { href, onSignIn, label } = props;
16
+ const t = useChromeT();
17
+ const text = label ?? t('account.signIn');
18
+ if (href === undefined) {
19
+ return (_jsx("button", { type: "button", className: "about-sign-in", onClick: onSignIn, children: text }));
20
+ }
21
+ return (_jsx("a", { className: "about-sign-in", href: href, onClick: (event) => {
22
+ if (onSignIn === undefined || isModifiedClick(event))
23
+ return;
24
+ event.preventDefault();
25
+ onSignIn();
26
+ }, children: text }));
27
+ }
28
+ //# sourceMappingURL=AboutSignIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AboutSignIn.js","sourceRoot":"","sources":["../../../src/about/ui/AboutSignIn.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAuBnD;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAE1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,eAAe,EAAC,OAAO,EAAE,QAAQ,YAC9D,IAAI,GACE,CACV,CAAC;IACJ,CAAC;IAED,OAAO,CACL,YACE,SAAS,EAAC,eAAe,EACzB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC;gBAAE,OAAO;YAC7D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,QAAQ,EAAE,CAAC;QACb,CAAC,YAEA,IAAI,GACH,CACL,CAAC;AACJ,CAAC"}
@@ -4,7 +4,8 @@
4
4
  * A report of something going wrong is worth answering only when we know what
5
5
  * was running, and that is the one thing an About page cannot say from a
6
6
  * hand-written record. It sits at the top of the page rather than at the
7
- * bottom because it is the one line a reader is asked to quote back.
7
+ * bottom because it is the one line a reader is asked to quote back, and it is
8
+ * said once: nothing further down the page repeats it.
8
9
  */
9
10
  import type { ReactElement } from 'react';
10
11
  import type { BuildInfo } from '../../build/core/buildInfo.ts';
@@ -14,7 +15,8 @@ export interface AboutVersionProps {
14
15
  }
15
16
  /**
16
17
  * The build badge: the release a site is serving, or the commit it was built
17
- * from while it has no release yet, and when it was made.
18
+ * from while it has no release yet, and when it was made. A release names its
19
+ * commit and the exact instant in the card its hover opens.
18
20
  * @param props - See {@link AboutVersionProps}.
19
21
  * @returns The badge, or `null` when the build says nothing worth showing.
20
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AboutVersion.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutVersion.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAO/D,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CAiB1E"}
1
+ {"version":3,"file":"AboutVersion.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutVersion.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAS/D,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CA8B1E"}
@@ -1,8 +1,20 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { buildLabel, buildStamp, buildSummary, } from "../../build/core/buildInfo.js";
2
+ /**
3
+ * Which build of a site a visitor has open, in the corner of its hero.
4
+ *
5
+ * A report of something going wrong is worth answering only when we know what
6
+ * was running, and that is the one thing an About page cannot say from a
7
+ * hand-written record. It sits at the top of the page rather than at the
8
+ * bottom because it is the one line a reader is asked to quote back, and it is
9
+ * said once: nothing further down the page repeats it.
10
+ */
11
+ import { Tooltip } from '@blueprintjs/core';
12
+ import { buildLabel, buildStamp, releasedVersion, } from "../../build/core/buildInfo.js";
13
+ import { AboutBuildDetails } from "./AboutBuildDetails.js";
3
14
  /**
4
15
  * The build badge: the release a site is serving, or the commit it was built
5
- * from while it has no release yet, and when it was made.
16
+ * from while it has no release yet, and when it was made. A release names its
17
+ * commit and the exact instant in the card its hover opens.
6
18
  * @param props - See {@link AboutVersionProps}.
7
19
  * @returns The badge, or `null` when the build says nothing worth showing.
8
20
  */
@@ -14,7 +26,13 @@ export function AboutVersion(props) {
14
26
  // The instant belongs on the badge rather than in its hover: a version
15
27
  // nobody can date says nothing about how old the page they read is.
16
28
  const badge = `${label} · ${buildStamp(build.builtAt)}`;
17
- return (_jsx("span", { style: BADGE_STYLE, className: "about-version", title: buildSummary(build), children: badge }));
29
+ const version = releasedVersion(build);
30
+ if (version === undefined) {
31
+ return (_jsx("span", { style: BADGE_STYLE, className: "about-version", children: badge }));
32
+ }
33
+ return (_jsx(Tooltip, { content: _jsx(AboutBuildDetails, { build: build, version: version }),
34
+ // To the left, so the card never covers the way to sign in under it.
35
+ placement: "left-start", popoverClassName: "help-tooltip build-tooltip", hoverOpenDelay: 150, children: _jsx("span", { style: BADGE_STYLE, className: "about-version", tabIndex: 0, children: badge }) }));
18
36
  }
19
37
  const BADGE_STYLE = {
20
38
  flex: '0 0 auto',
@@ -1 +1 @@
1
- {"version":3,"file":"AboutVersion.js","sourceRoot":"","sources":["../../../src/about/ui/AboutVersion.tsx"],"names":[],"mappings":";AAYA,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,+BAA+B,CAAC;AAOvC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5D,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,KAAK,GAAG,GAAG,KAAK,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IAExD,OAAO,CACL,eACE,KAAK,EAAE,WAAW,EAClB,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,YAEzB,KAAK,GACD,CACR,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,2CAA2C;IACvD,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,mBAAmB;IAC1B,UAAU,EAAE,QAAQ;CACY,CAAC"}
1
+ {"version":3,"file":"AboutVersion.js","sourceRoot":"","sources":["../../../src/about/ui/AboutVersion.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,OAAO,EACL,UAAU,EACV,UAAU,EACV,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAO5D;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5D,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,KAAK,GAAG,GAAG,KAAK,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,eAAM,KAAK,EAAE,WAAW,EAAE,SAAS,EAAC,eAAe,YAChD,KAAK,GACD,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,OAAO,IACN,OAAO,EAAE,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI;QAC9D,qEAAqE;QACrE,SAAS,EAAC,YAAY,EACtB,gBAAgB,EAAC,4BAA4B,EAC7C,cAAc,EAAE,GAAG,YAEnB,eAAM,KAAK,EAAE,WAAW,EAAE,SAAS,EAAC,eAAe,EAAC,QAAQ,EAAE,CAAC,YAC5D,KAAK,GACD,GACC,CACX,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,2CAA2C;IACvD,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,mBAAmB;IAC1B,UAAU,EAAE,QAAQ;CACY,CAAC"}
@@ -1,5 +1,3 @@
1
- export type { AboutBuildProps } from './AboutBuild.tsx';
2
- export { AboutBuild } from './AboutBuild.tsx';
3
1
  export type { AboutVersionProps } from './AboutVersion.tsx';
4
2
  export { AboutVersion } from './AboutVersion.tsx';
5
3
  export type { AboutCitationsProps } from './AboutCitations.tsx';
@@ -10,4 +8,6 @@ export type { AboutProvidedByProps } from './AboutProvidedBy.tsx';
10
8
  export { AboutProvidedBy } from './AboutProvidedBy.tsx';
11
9
  export type { AboutSectionProps } from './AboutSection.tsx';
12
10
  export { AboutSection } from './AboutSection.tsx';
11
+ export type { AboutSignInProps } from './AboutSignIn.tsx';
12
+ export { AboutSignIn } from './AboutSignIn.tsx';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/about/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/about/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,7 +1,7 @@
1
- export { AboutBuild } from "./AboutBuild.js";
2
1
  export { AboutVersion } from "./AboutVersion.js";
3
2
  export { AboutCitations } from "./AboutCitations.js";
4
3
  export { AboutPage } from "./AboutPage.js";
5
4
  export { AboutProvidedBy } from "./AboutProvidedBy.js";
6
5
  export { AboutSection } from "./AboutSection.js";
6
+ export { AboutSignIn } from "./AboutSignIn.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/about/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/about/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC"}
@@ -87,9 +87,11 @@ const LAYER_STYLE = {
87
87
  inset: 0,
88
88
  pointerEvents: 'none',
89
89
  };
90
+ // The slots run along x, so only a sideways finger tracks them: a vertical
91
+ // swipe that starts on the chart still scrolls the page or the card around it.
90
92
  const SLIDER_STYLE = {
91
93
  pointerEvents: 'auto',
92
- touchAction: 'none',
94
+ touchAction: 'pan-y',
93
95
  cursor: 'crosshair',
94
96
  };
95
97
  const CROSSHAIR_STYLE = {
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTrackingLayer.js","sourceRoot":"","sources":["../../../src/chart/ui/ChartTrackingLayer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartTrackingLayer.js","sourceRoot":"","sources":["../../../src/chart/ui/ChartTrackingLayer.tsx"],"names":[],"mappings":"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"}
@@ -46,4 +46,20 @@ export declare function useChartSize<T extends Element = HTMLDivElement>(): Char
46
46
  * @returns `current` itself when nothing moved, the new size otherwise.
47
47
  */
48
48
  export declare function nextChartSize(current: ChartSize, width: number, height: number): ChartSize;
49
+ /**
50
+ * The size an element is laid out at, which no CSS transform changes.
51
+ *
52
+ * `getBoundingClientRect` reports the box as painted: inside a popover that
53
+ * opens by scaling up from 30 %, a chart measured on its first frame is drawn
54
+ * at 30 % of its width, and stays so, since a transform never resizes the
55
+ * layout and the observer never fires again. `offsetWidth` is the laid-out
56
+ * size but rounded to a whole pixel, so the precise rectangle is kept unless a
57
+ * transform has visibly scaled it.
58
+ * @param element - The wrapper the chart is drawn in.
59
+ * @returns Its laid-out width and height.
60
+ */
61
+ export declare function layoutSize(element: Element): {
62
+ width: number;
63
+ height: number;
64
+ };
49
65
  //# sourceMappingURL=useChartSize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useChartSize.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/useChartSize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,oEAAoE;AACpE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI;IAC/C,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI;IAChC,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,CAAC,SAAS,OAAO,GAAG,cAAc,KAC/B,eAAe,CAAC,CAAC,CAAC,CAsBtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,SAAS,CAOX"}
1
+ {"version":3,"file":"useChartSize.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/useChartSize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,oEAAoE;AACpE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI;IAC/C,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI;IAChC,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,CAAC,SAAS,OAAO,GAAG,cAAc,KAC/B,eAAe,CAAC,CAAC,CAAC,CAsBtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,SAAS,CAOX;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAWA"}
@@ -69,6 +69,29 @@ export function nextChartSize(current, width, height) {
69
69
  }
70
70
  return { width: nextWidth, height: nextHeight };
71
71
  }
72
+ /**
73
+ * The size an element is laid out at, which no CSS transform changes.
74
+ *
75
+ * `getBoundingClientRect` reports the box as painted: inside a popover that
76
+ * opens by scaling up from 30 %, a chart measured on its first frame is drawn
77
+ * at 30 % of its width, and stays so, since a transform never resizes the
78
+ * layout and the observer never fires again. `offsetWidth` is the laid-out
79
+ * size but rounded to a whole pixel, so the precise rectangle is kept unless a
80
+ * transform has visibly scaled it.
81
+ * @param element - The wrapper the chart is drawn in.
82
+ * @returns Its laid-out width and height.
83
+ */
84
+ export function layoutSize(element) {
85
+ const rect = element.getBoundingClientRect();
86
+ if (!hasOffsetSize(element)) {
87
+ return { width: rect.width, height: rect.height };
88
+ }
89
+ const { offsetWidth, offsetHeight } = element;
90
+ return {
91
+ width: Math.abs(rect.width - offsetWidth) < 1 ? rect.width : offsetWidth,
92
+ height: Math.abs(rect.height - offsetHeight) < 1 ? rect.height : offsetHeight,
93
+ };
94
+ }
72
95
  /** What a chart is given before its element has ever been laid out. */
73
96
  const NO_SIZE = { width: 0, height: 0 };
74
97
  /**
@@ -77,9 +100,19 @@ const NO_SIZE = { width: 0, height: 0 };
77
100
  * @param setSize - Where the measurement goes.
78
101
  */
79
102
  function read(element, setSize) {
80
- const { width, height } = element.getBoundingClientRect();
103
+ const { width, height } = layoutSize(element);
81
104
  setSize((current) => nextChartSize(current, width, height));
82
105
  }
106
+ /**
107
+ * Whether an element has a laid-out size of its own, as an HTML element does
108
+ * and an SVG one does not. Checked by shape, so it holds outside a browser.
109
+ * @param element - The element.
110
+ * @returns True when `offsetWidth` and `offsetHeight` are numbers.
111
+ */
112
+ function hasOffsetSize(element) {
113
+ return (typeof element.offsetWidth === 'number' &&
114
+ typeof element.offsetHeight === 'number');
115
+ }
83
116
  /**
84
117
  * One side of a measurement, as a size rather than as a number.
85
118
  * @param value - What the element was measured at.
@@ -1 +1 @@
1
- {"version":3,"file":"useChartSize.js","sourceRoot":"","sources":["../../../src/chart/ui/useChartSize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAUtD;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY;IAG1B,MAAM,QAAQ,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACrD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAY,OAAO,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,OAAiB,EAAE,EAAE;QAChD,0EAA0E;QAC1E,qEAAqE;QACrE,mEAAmE;QACnE,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QAC/B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAE7B,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvB,sEAAsE;QACtE,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO;QAClD,QAAQ,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAkB,EAClB,KAAa,EACb,MAAc;IAEd,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACjE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC;AAED,uEAAuE;AACvE,MAAM,OAAO,GAAc,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAEnD;;;;GAIG;AACH,SAAS,IAAI,CACX,OAAgB,EAChB,OAA4C;IAE5C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC1D,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"useChartSize.js","sourceRoot":"","sources":["../../../src/chart/ui/useChartSize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { NavItem } from './navItem.ts';
3
+ /**
4
+ * One page of the bar: a link, or the menu it opens when the entry folds pages
5
+ * of its own. A menu stands where its pages would, among them and not among the
6
+ * utilities, because picking one of them changes what the page shows.
7
+ * @param props - The entry and the page on show.
8
+ * @param props.item - The entry.
9
+ * @param props.activeId - The page on show.
10
+ * @returns The entry.
11
+ */
12
+ export declare function NavEntry(props: {
13
+ item: NavItem;
14
+ activeId: string | undefined;
15
+ }): ReactElement;
16
+ //# sourceMappingURL=NavEntry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavEntry.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/NavEntry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,GAAG,YAAY,CAef"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { NavLink } from "./NavLink.js";
3
+ import { NavMenuButton } from "./NavMenuButton.js";
4
+ /**
5
+ * One page of the bar: a link, or the menu it opens when the entry folds pages
6
+ * of its own. A menu stands where its pages would, among them and not among the
7
+ * utilities, because picking one of them changes what the page shows.
8
+ * @param props - The entry and the page on show.
9
+ * @param props.item - The entry.
10
+ * @param props.activeId - The page on show.
11
+ * @returns The entry.
12
+ */
13
+ export function NavEntry(props) {
14
+ const { item, activeId } = props;
15
+ if (item.items === undefined) {
16
+ return _jsx(NavLink, { item: item, active: item.id === activeId });
17
+ }
18
+ return (_jsx(NavMenuButton, { label: menuLabel(item), icon: typeof item.icon === 'string' ? item.icon : undefined, items: item.items, activeId: activeId, placement: "bottom-start" }));
19
+ }
20
+ // The trigger names itself to a screen reader, so an entry drawn as a glyph
21
+ // alone says what it opens through its title rather than through its id.
22
+ function menuLabel(item) {
23
+ if (typeof item.label === 'string')
24
+ return item.label;
25
+ return item.title ?? item.id;
26
+ }
27
+ //# sourceMappingURL=NavEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavEntry.js","sourceRoot":"","sources":["../../../src/chrome/ui/NavEntry.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAGpD;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,KAGxB;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,QAAQ,GAAI,CAAC;IAC/D,CAAC;IAED,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EACtB,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC3D,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,cAAc,GACxB,CACH,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,yEAAyE;AACzE,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;AAC/B,CAAC"}
@@ -28,13 +28,20 @@ export interface SiteHeaderProps {
28
28
  */
29
29
  activeId?: string;
30
30
  /**
31
- * The utilities pushed to the right edge — About, Cite, Tools, the language,
32
- * sign in; Share has a prop of its own, so it always comes last. They
33
- * arrive dressed as bar items, so a plain `nav-link` and a `CiteButton` read
34
- * alike beside each other.
31
+ * The utilities pushed to the right edge — About, Cite, Tools, the language;
32
+ * Share and the account have props of their own, so they always come last.
33
+ * They arrive dressed as bar items, so a plain `nav-link` and a `CiteButton`
34
+ * read alike beside each other.
35
35
  * @default undefined
36
36
  */
37
37
  actions?: ReactNode;
38
+ /**
39
+ * Who is signed in, drawn at the extreme right, after Share — usually an
40
+ * `AccountButton`. A site passes it only while somebody is signed in: signing
41
+ * in starts on the About (`AboutPage`'s `signIn`), never in the bar.
42
+ * @default undefined
43
+ */
44
+ account?: ReactNode;
38
45
  /**
39
46
  * The Share entry, which closes the utilities on every site, after the
40
47
  * Contact entry. A site passes its own when it wraps the shared `ShareButton`
@@ -1 +1 @@
1
- {"version":3,"file":"SiteHeader.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/SiteHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMrD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAQxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kDAAkD;IAClD,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,SAAS,CAAC;IAChE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAmFtE"}
1
+ {"version":3,"file":"SiteHeader.d.ts","sourceRoot":"","sources":["../../../src/chrome/ui/SiteHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMrD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAQxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kDAAkD;IAClD,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,SAAS,CAAC;IAChE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAsFtE"}