react-cheminfo 0.1.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 (113) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/lib/citation/core/clipboard.d.ts +14 -0
  4. package/lib/citation/core/clipboard.d.ts.map +1 -0
  5. package/lib/citation/core/clipboard.js +25 -0
  6. package/lib/citation/core/clipboard.js.map +1 -0
  7. package/lib/citation/core/download.d.ts +11 -0
  8. package/lib/citation/core/download.d.ts.map +1 -0
  9. package/lib/citation/core/download.js +20 -0
  10. package/lib/citation/core/download.js.map +1 -0
  11. package/lib/citation/core/formats.d.ts +91 -0
  12. package/lib/citation/core/formats.d.ts.map +1 -0
  13. package/lib/citation/core/formats.js +125 -0
  14. package/lib/citation/core/formats.js.map +1 -0
  15. package/lib/citation/core/index.d.ts +10 -0
  16. package/lib/citation/core/index.d.ts.map +1 -0
  17. package/lib/citation/core/index.js +7 -0
  18. package/lib/citation/core/index.js.map +1 -0
  19. package/lib/citation/core/reference.d.ts +30 -0
  20. package/lib/citation/core/reference.d.ts.map +1 -0
  21. package/lib/citation/core/reference.js +9 -0
  22. package/lib/citation/core/reference.js.map +1 -0
  23. package/lib/citation/core/render.d.ts +21 -0
  24. package/lib/citation/core/render.d.ts.map +1 -0
  25. package/lib/citation/core/render.js +74 -0
  26. package/lib/citation/core/render.js.map +1 -0
  27. package/lib/citation/core/segments.d.ts +47 -0
  28. package/lib/citation/core/segments.d.ts.map +1 -0
  29. package/lib/citation/core/segments.js +134 -0
  30. package/lib/citation/core/segments.js.map +1 -0
  31. package/lib/citation/ui/CitationMenu.d.ts +14 -0
  32. package/lib/citation/ui/CitationMenu.d.ts.map +1 -0
  33. package/lib/citation/ui/CitationMenu.js +63 -0
  34. package/lib/citation/ui/CitationMenu.js.map +1 -0
  35. package/lib/citation/ui/CitationPreview.d.ts +18 -0
  36. package/lib/citation/ui/CitationPreview.d.ts.map +1 -0
  37. package/lib/citation/ui/CitationPreview.js +55 -0
  38. package/lib/citation/ui/CitationPreview.js.map +1 -0
  39. package/lib/citation/ui/CiteButton.d.ts +22 -0
  40. package/lib/citation/ui/CiteButton.d.ts.map +1 -0
  41. package/lib/citation/ui/CiteButton.js +15 -0
  42. package/lib/citation/ui/CiteButton.js.map +1 -0
  43. package/lib/citation/ui/entries.d.ts +45 -0
  44. package/lib/citation/ui/entries.d.ts.map +1 -0
  45. package/lib/citation/ui/entries.js +52 -0
  46. package/lib/citation/ui/entries.js.map +1 -0
  47. package/lib/citation/ui/index.d.ts +7 -0
  48. package/lib/citation/ui/index.d.ts.map +1 -0
  49. package/lib/citation/ui/index.js +4 -0
  50. package/lib/citation/ui/index.js.map +1 -0
  51. package/lib/core.d.ts +3 -0
  52. package/lib/core.d.ts.map +1 -0
  53. package/lib/core.js +3 -0
  54. package/lib/core.js.map +1 -0
  55. package/lib/ecosystem/core/index.d.ts +3 -0
  56. package/lib/ecosystem/core/index.d.ts.map +1 -0
  57. package/lib/ecosystem/core/index.js +2 -0
  58. package/lib/ecosystem/core/index.js.map +1 -0
  59. package/lib/ecosystem/core/sites.d.ts +57 -0
  60. package/lib/ecosystem/core/sites.d.ts.map +1 -0
  61. package/lib/ecosystem/core/sites.js +105 -0
  62. package/lib/ecosystem/core/sites.js.map +1 -0
  63. package/lib/ecosystem/ui/EcosystemButton.d.ts +24 -0
  64. package/lib/ecosystem/ui/EcosystemButton.d.ts.map +1 -0
  65. package/lib/ecosystem/ui/EcosystemButton.js +14 -0
  66. package/lib/ecosystem/ui/EcosystemButton.js.map +1 -0
  67. package/lib/ecosystem/ui/EcosystemMenu.d.ts +17 -0
  68. package/lib/ecosystem/ui/EcosystemMenu.d.ts.map +1 -0
  69. package/lib/ecosystem/ui/EcosystemMenu.js +112 -0
  70. package/lib/ecosystem/ui/EcosystemMenu.js.map +1 -0
  71. package/lib/ecosystem/ui/index.d.ts +7 -0
  72. package/lib/ecosystem/ui/index.d.ts.map +1 -0
  73. package/lib/ecosystem/ui/index.js +4 -0
  74. package/lib/ecosystem/ui/index.js.map +1 -0
  75. package/lib/ecosystem/ui/marks.d.ts +18 -0
  76. package/lib/ecosystem/ui/marks.d.ts.map +1 -0
  77. package/lib/ecosystem/ui/marks.js +43 -0
  78. package/lib/ecosystem/ui/marks.js.map +1 -0
  79. package/lib/shared/ui/MenuButton.d.ts +34 -0
  80. package/lib/shared/ui/MenuButton.d.ts.map +1 -0
  81. package/lib/shared/ui/MenuButton.js +18 -0
  82. package/lib/shared/ui/MenuButton.js.map +1 -0
  83. package/lib/shared/ui/index.d.ts +2 -0
  84. package/lib/shared/ui/index.d.ts.map +1 -0
  85. package/lib/shared/ui/index.js +2 -0
  86. package/lib/shared/ui/index.js.map +1 -0
  87. package/lib/ui.d.ts +4 -0
  88. package/lib/ui.d.ts.map +1 -0
  89. package/lib/ui.js +4 -0
  90. package/lib/ui.js.map +1 -0
  91. package/package.json +79 -0
  92. package/src/citation/core/clipboard.ts +32 -0
  93. package/src/citation/core/download.ts +27 -0
  94. package/src/citation/core/formats.ts +169 -0
  95. package/src/citation/core/index.ts +23 -0
  96. package/src/citation/core/reference.ts +33 -0
  97. package/src/citation/core/render.ts +78 -0
  98. package/src/citation/core/segments.ts +170 -0
  99. package/src/citation/ui/CitationMenu.tsx +132 -0
  100. package/src/citation/ui/CitationPreview.tsx +84 -0
  101. package/src/citation/ui/CiteButton.tsx +39 -0
  102. package/src/citation/ui/entries.tsx +144 -0
  103. package/src/citation/ui/index.ts +6 -0
  104. package/src/core.ts +2 -0
  105. package/src/ecosystem/core/index.ts +7 -0
  106. package/src/ecosystem/core/sites.ts +164 -0
  107. package/src/ecosystem/ui/EcosystemButton.tsx +41 -0
  108. package/src/ecosystem/ui/EcosystemMenu.tsx +191 -0
  109. package/src/ecosystem/ui/index.ts +6 -0
  110. package/src/ecosystem/ui/marks.tsx +207 -0
  111. package/src/shared/ui/MenuButton.tsx +67 -0
  112. package/src/shared/ui/index.ts +1 -0
  113. package/src/ui.ts +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC"}
package/lib/core.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./citation/core/index.js";
2
+ export * from "./ecosystem/core/index.js";
3
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { EcosystemSite, SiteId, SiteMarkColors, SiteName, } from './sites.ts';
2
+ export { ECOSYSTEM_SITES, siteUrl } from './sites.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,MAAM,EACN,cAAc,EACd,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ECOSYSTEM_SITES, siteUrl } from "./sites.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ecosystem/core/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,57 @@
1
+ /** The sites the menu links to, in the order they are listed. */
2
+ export type SiteId = 'inchi' | 'vcl' | 'smiles' | 'chemcalc' | 'nmrium' | 'surge' | 'tex' | 'lcao' | 'regexp' | 'pdb';
3
+ export interface SiteName {
4
+ /** First half of the name, set in the site's leading colour. */
5
+ lead: string;
6
+ /** Second half, set in the site's answering colour. */
7
+ alt: string;
8
+ /**
9
+ * Whether a faint dot separates the two halves, as an address-shaped name
10
+ * takes and a product-shaped one does not.
11
+ * @default false
12
+ */
13
+ dot?: boolean;
14
+ }
15
+ export interface EcosystemSite {
16
+ id: SiteId;
17
+ /** The name, split the way the site's own wordmark splits it. */
18
+ name: SiteName;
19
+ /** Where the site lives, written the way it is typed. */
20
+ host: string;
21
+ /** One line on what the site does. */
22
+ tagline: string;
23
+ /** The colour the first half of the name is set in. */
24
+ brand: string;
25
+ /**
26
+ * The colour the second half is set in. It is the site's answering colour
27
+ * darkened until it is readable on white, because several of those are
28
+ * yellows and ambers that sit around 2:1 there.
29
+ */
30
+ brandAlt: string;
31
+ /** The plate of the site's mark, and the colour one element of it carries. */
32
+ mark: SiteMarkColors;
33
+ }
34
+ export interface SiteMarkColors {
35
+ /** The rounded square the mark is drawn on. */
36
+ plate: string;
37
+ /** The colour exactly one element of the mark takes. */
38
+ accent: string;
39
+ /**
40
+ * The hairline a plate as light as the tile behind it needs, so it still
41
+ * reads as a plate rather than as a drawing floating on the row.
42
+ * @default undefined
43
+ */
44
+ edge?: string;
45
+ }
46
+ /**
47
+ * Every site of the family, each with the two colours it owns. The marks that
48
+ * go with them live in `marks.tsx`.
49
+ */
50
+ export declare const ECOSYSTEM_SITES: readonly EcosystemSite[];
51
+ /**
52
+ * The address of a site, which is its host over https.
53
+ * @param site - The site being linked to.
54
+ * @returns The URL to open.
55
+ */
56
+ export declare function siteUrl(site: EcosystemSite): string;
57
+ //# sourceMappingURL=sites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sites.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/core/sites.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,MAAM,MAAM,GACd,OAAO,GACP,KAAK,GACL,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,OAAO,GACP,KAAK,GACL,MAAM,GACN,QAAQ,GACR,KAAK,CAAC;AAEV,MAAM,WAAW,QAAQ;IACvB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,IAAI,EAAE,QAAQ,CAAC;IACf,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EA2FnD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Every site of the family, each with the two colours it owns. The marks that
3
+ * go with them live in `marks.tsx`.
4
+ */
5
+ export const ECOSYSTEM_SITES = [
6
+ {
7
+ id: 'inchi',
8
+ name: { lead: 'inchi', alt: 'cheminfo', dot: true },
9
+ host: 'inchi.cheminfo.org',
10
+ tagline: 'InChI and InChIKey from a structure, in the browser.',
11
+ brand: '#5b21b6',
12
+ brandAlt: '#a16207',
13
+ mark: { plate: '#5b21b6', accent: '#fcd34d' },
14
+ },
15
+ {
16
+ id: 'vcl',
17
+ name: { lead: 'vcl', alt: 'cheminfo', dot: true },
18
+ host: 'vcl.cheminfo.org',
19
+ tagline: 'Combine a core and fragments into a screened library.',
20
+ brand: '#2d72d2',
21
+ brandAlt: '#9a3412',
22
+ mark: { plate: '#2d72d2', accent: '#eb6847' },
23
+ },
24
+ {
25
+ id: 'smiles',
26
+ name: { lead: 'smiles', alt: 'cheminfo', dot: true },
27
+ host: 'smiles.cheminfo.org',
28
+ tagline: 'Draw a structure, read its SMILES, learn the notation.',
29
+ brand: '#1c6e42',
30
+ brandAlt: '#9a3412',
31
+ mark: { plate: '#1c6e42', accent: '#ea580c' },
32
+ },
33
+ {
34
+ id: 'chemcalc',
35
+ name: { lead: 'Chem', alt: 'Calc' },
36
+ host: 'www.chemcalc.org',
37
+ tagline: 'Molecular formula, exact mass and isotopic distribution.',
38
+ brand: '#5b52e0',
39
+ brandAlt: '#0d9488',
40
+ mark: { plate: '#5b52e0', accent: '#09d3ac' },
41
+ },
42
+ {
43
+ id: 'nmrium',
44
+ name: { lead: 'NMR', alt: 'ium' },
45
+ host: 'www.nmrium.org',
46
+ tagline: 'Process and assign NMR spectra in the browser.',
47
+ brand: '#ea580c',
48
+ brandAlt: '#2b143e',
49
+ mark: { plate: '#2b143e', accent: '#ea580c' },
50
+ },
51
+ {
52
+ id: 'surge',
53
+ name: { lead: 'surge', alt: 'cheminfo', dot: true },
54
+ host: 'surge.cheminfo.org',
55
+ tagline: 'Every constitutional isomer of a molecular formula.',
56
+ brand: '#4338ca',
57
+ brandAlt: '#be123c',
58
+ mark: { plate: '#4338ca', accent: '#e11d48' },
59
+ },
60
+ {
61
+ id: 'tex',
62
+ name: { lead: 'tex', alt: 'cheminfo', dot: true },
63
+ host: 'tex.cheminfo.org',
64
+ tagline: 'LaTeX formulas rendered to SVG or PNG from a URL.',
65
+ brand: '#a21caf',
66
+ brandAlt: '#a16207',
67
+ mark: { plate: '#a21caf', accent: '#facc15' },
68
+ },
69
+ {
70
+ id: 'lcao',
71
+ name: { lead: 'lcao', alt: 'cheminfo', dot: true },
72
+ host: 'lcao.cheminfo.org',
73
+ tagline: 'Combine atomic orbitals into molecular ones.',
74
+ brand: '#1565c0',
75
+ brandAlt: '#c62828',
76
+ mark: { plate: '#ffffff', accent: '#c62828', edge: '#dfe3e8' },
77
+ },
78
+ {
79
+ id: 'regexp',
80
+ name: { lead: 'regexp', alt: 'cheminfo', dot: true },
81
+ host: 'regexp.cheminfo.org',
82
+ tagline: 'Learn regular expressions in a live playground.',
83
+ brand: '#1e3a8a',
84
+ brandAlt: '#a16207',
85
+ mark: { plate: '#1e3a8a', accent: '#fde047' },
86
+ },
87
+ {
88
+ id: 'pdb',
89
+ name: { lead: 'pdb', alt: 'cheminfo', dot: true },
90
+ host: 'pdb.cheminfo.org',
91
+ tagline: 'A fast look at any Protein Data Bank entry.',
92
+ brand: '#2563eb',
93
+ brandAlt: '#b45309',
94
+ mark: { plate: '#2563eb', accent: '#fbbf24' },
95
+ },
96
+ ];
97
+ /**
98
+ * The address of a site, which is its host over https.
99
+ * @param site - The site being linked to.
100
+ * @returns The URL to open.
101
+ */
102
+ export function siteUrl(site) {
103
+ return `https://${site.host}/`;
104
+ }
105
+ //# sourceMappingURL=sites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sites.js","sourceRoot":"","sources":["../../../src/ecosystem/core/sites.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { HeaderButtonProps } from '../../shared/ui/MenuButton.tsx';
3
+ import type { SiteId } from '../core/sites.ts';
4
+ export interface EcosystemButtonProps extends HeaderButtonProps {
5
+ /**
6
+ * The site this button sits on, which is shown but never linked.
7
+ * @default undefined
8
+ */
9
+ currentSiteId?: SiteId;
10
+ /**
11
+ * Text of the button. In a compact bar it is not written, but it stays what
12
+ * the pointer and a screen reader are told.
13
+ * @default 'Tools'
14
+ */
15
+ label?: string;
16
+ }
17
+ /**
18
+ * The Tools entry of a site header: one button opening every other site of the
19
+ * family, each behind its own little logo.
20
+ * @param props - The site it sits on, and how the menu opens.
21
+ * @returns The button and its menu.
22
+ */
23
+ export declare function EcosystemButton(props: EcosystemButtonProps): ReactElement;
24
+ //# sourceMappingURL=EcosystemButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EcosystemButton.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/ui/EcosystemButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI/C,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CAYzE"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { MenuButton } from "../../shared/ui/MenuButton.js";
3
+ import { EcosystemMenu } from "./EcosystemMenu.js";
4
+ /**
5
+ * The Tools entry of a site header: one button opening every other site of the
6
+ * family, each behind its own little logo.
7
+ * @param props - The site it sits on, and how the menu opens.
8
+ * @returns The button and its menu.
9
+ */
10
+ export function EcosystemButton(props) {
11
+ const { currentSiteId, label = 'Tools', ...rest } = props;
12
+ return (_jsx(MenuButton, { ...rest, className: "ecosystem-button", icon: "grid-view", label: label, menu: _jsx(EcosystemMenu, { currentSiteId: currentSiteId }) }));
13
+ }
14
+ //# sourceMappingURL=EcosystemButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EcosystemButton.js","sourceRoot":"","sources":["../../../src/ecosystem/ui/EcosystemButton.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAAgC,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAgBpD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,aAAa,EAAE,KAAK,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAE1D,OAAO,CACL,KAAC,UAAU,OACL,IAAI,EACR,SAAS,EAAC,kBAAkB,EAC5B,IAAI,EAAC,WAAW,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAC,aAAa,IAAC,aAAa,EAAE,aAAa,GAAI,GACrD,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { SiteId } from '../core/sites.ts';
3
+ export interface EcosystemMenuProps {
4
+ /**
5
+ * The site the visitor is already on, which is shown but never linked.
6
+ * @default undefined
7
+ */
8
+ currentSiteId?: SiteId;
9
+ }
10
+ /**
11
+ * What the ecosystem button opens: every site of the family, each behind its
12
+ * own little logo and the two colours it owns.
13
+ * @param props - The site the visitor is already on.
14
+ * @returns The grid of sites.
15
+ */
16
+ export declare function EcosystemMenu(props: EcosystemMenuProps): ReactElement;
17
+ //# sourceMappingURL=EcosystemMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EcosystemMenu.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/ui/EcosystemMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAGzD,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA0D9D,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAoBrE"}
@@ -0,0 +1,112 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { ECOSYSTEM_SITES, siteUrl } from "../core/sites.js";
4
+ import { SiteMark } from "./marks.js";
5
+ const PANEL_STYLE = {
6
+ display: 'flex',
7
+ width: 'min(34rem, 90vw)',
8
+ flexDirection: 'column',
9
+ padding: 12,
10
+ gap: 8,
11
+ };
12
+ const HEADING_STYLE = {
13
+ color: '#5b6875',
14
+ fontSize: '0.75rem',
15
+ fontWeight: 600,
16
+ };
17
+ const GRID_STYLE = {
18
+ display: 'grid',
19
+ gridTemplateColumns: 'repeat(auto-fit, minmax(15rem, 1fr))',
20
+ gap: 2,
21
+ };
22
+ const TILE_STYLE = {
23
+ display: 'flex',
24
+ alignItems: 'center',
25
+ padding: '7px 8px',
26
+ border: '1px solid transparent',
27
+ borderRadius: 10,
28
+ color: '#16202c',
29
+ gap: 10,
30
+ textDecoration: 'none',
31
+ transition: 'background 120ms, border-color 120ms, transform 120ms',
32
+ };
33
+ const MARK_HOLDER_STYLE = {
34
+ display: 'flex',
35
+ transition: 'transform 160ms',
36
+ };
37
+ const TEXT_STYLE = { minWidth: 0 };
38
+ const NAME_STYLE = {
39
+ display: 'flex',
40
+ alignItems: 'baseline',
41
+ fontSize: '0.9375rem',
42
+ fontWeight: 700,
43
+ letterSpacing: '-0.01em',
44
+ gap: 6,
45
+ whiteSpace: 'nowrap',
46
+ };
47
+ const HERE_STYLE = {
48
+ fontSize: '0.625rem',
49
+ fontWeight: 700,
50
+ letterSpacing: '0.04em',
51
+ textTransform: 'uppercase',
52
+ };
53
+ const TAGLINE_STYLE = {
54
+ color: '#5b6875',
55
+ fontSize: '0.75rem',
56
+ lineHeight: 1.35,
57
+ };
58
+ /**
59
+ * What the ecosystem button opens: every site of the family, each behind its
60
+ * own little logo and the two colours it owns.
61
+ * @param props - The site the visitor is already on.
62
+ * @returns The grid of sites.
63
+ */
64
+ export function EcosystemMenu(props) {
65
+ const { currentSiteId } = props;
66
+ const [hovered, setHovered] = useState(null);
67
+ return (_jsxs("div", { className: "ecosystem-menu", style: PANEL_STYLE, children: [_jsx("div", { style: HEADING_STYLE, children: "Our other tools, all in the browser" }), _jsx("div", { style: GRID_STYLE, children: ECOSYSTEM_SITES.map((site) => (_jsx(SiteTile, { site: site, isCurrent: site.id === currentSiteId, isHovered: hovered === site.id, onHover: setHovered }, site.id))) })] }));
68
+ }
69
+ /**
70
+ * One site: its mark, its name in its own colours, and what it does.
71
+ * @param props - The site, and whether it is the current or the hovered one.
72
+ * @returns The tile.
73
+ */
74
+ function SiteTile(props) {
75
+ const { site, isCurrent, isHovered, onHover } = props;
76
+ const lit = isHovered && !isCurrent;
77
+ const body = (_jsxs(_Fragment, { children: [_jsx("div", { style: {
78
+ ...MARK_HOLDER_STYLE,
79
+ transform: lit ? 'scale(1.08) rotate(-6deg)' : 'none',
80
+ }, children: _jsx(SiteMark, { site: site }) }), _jsxs("div", { style: TEXT_STYLE, children: [_jsxs("div", { style: NAME_STYLE, children: [_jsxs("span", { children: [_jsx("span", { style: { color: site.brand }, children: site.name.lead }), site.name.dot ? _jsx("span", { style: { color: '#8a96a3' }, children: "." }) : null, _jsx("span", { style: { color: site.brandAlt }, children: site.name.alt })] }), isCurrent ? (_jsx("span", { style: { ...HERE_STYLE, color: site.brandAlt }, children: "you are here" })) : null] }), _jsx("div", { style: TAGLINE_STYLE, children: site.tagline })] })] }));
81
+ const style = {
82
+ ...TILE_STYLE,
83
+ background: tint(site, isCurrent, lit),
84
+ borderColor: borderOf(site, isCurrent, lit),
85
+ transform: lit ? 'translateY(-1px)' : 'none',
86
+ cursor: isCurrent ? 'default' : 'pointer',
87
+ };
88
+ if (isCurrent)
89
+ return _jsx("div", { style: style, children: body });
90
+ return (_jsx("a", { style: style, href: siteUrl(site), title: site.host, target: "_blank", rel: "noreferrer", onMouseEnter: () => {
91
+ onHover(site.id);
92
+ }, onMouseLeave: () => {
93
+ onHover(null);
94
+ }, onFocus: () => {
95
+ onHover(site.id);
96
+ }, onBlur: () => {
97
+ onHover(null);
98
+ }, children: body }));
99
+ }
100
+ // A tile lights up in the colour of the site it opens, never in ours: the
101
+ // pointer moving down the grid is what makes the ten pairs of colours read.
102
+ function tint(site, isCurrent, lit) {
103
+ if (isCurrent)
104
+ return '#f5f7fa';
105
+ return lit ? `color-mix(in oklab, ${site.brand} 9%, white)` : 'transparent';
106
+ }
107
+ function borderOf(site, isCurrent, lit) {
108
+ if (isCurrent)
109
+ return '#dfe3e8';
110
+ return lit ? `color-mix(in oklab, ${site.brand} 32%, white)` : 'transparent';
111
+ }
112
+ //# sourceMappingURL=EcosystemMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EcosystemMenu.js","sourceRoot":"","sources":["../../../src/ecosystem/ui/EcosystemMenu.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAa,CAAC;AAEvC,MAAM,WAAW,GAAkB;IACjC,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,kBAAkB;IACzB,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,EAAE;IACX,GAAG,EAAE,CAAC;CACP,CAAC;AACF,MAAM,aAAa,GAAkB;IACnC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,GAAG;CAChB,CAAC;AACF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,mBAAmB,EAAE,sCAAsC;IAC3D,GAAG,EAAE,CAAC;CACP,CAAC;AACF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,uBAAuB;IAC/B,YAAY,EAAE,EAAE;IAChB,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,EAAE;IACP,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,uDAAuD;CACpE,CAAC;AACF,MAAM,iBAAiB,GAAkB;IACvC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,iBAAiB;CAC9B,CAAC;AACF,MAAM,UAAU,GAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAClD,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,SAAS;IACxB,GAAG,EAAE,CAAC;IACN,UAAU,EAAE,QAAQ;CACrB,CAAC;AACF,MAAM,UAAU,GAAkB;IAChC,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,QAAQ;IACvB,aAAa,EAAE,WAAW;CAC3B,CAAC;AACF,MAAM,aAAa,GAAkB;IACnC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,IAAI;CACjB,CAAC;AASF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,WAAW,aAChD,cAAK,KAAK,EAAE,aAAa,oDAA2C,EACpE,cAAK,KAAK,EAAE,UAAU,YACnB,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC7B,KAAC,QAAQ,IAEP,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,aAAa,EACpC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE,EAC9B,OAAO,EAAE,UAAU,IAJd,IAAI,CAAC,EAAE,CAKZ,CACH,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC;AASD;;;;GAIG;AACH,SAAS,QAAQ,CAAC,KAAoB;IACpC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACtD,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC;IAEpC,MAAM,IAAI,GAAG,CACX,8BACE,cACE,KAAK,EAAE;oBACL,GAAG,iBAAiB;oBACpB,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,MAAM;iBACtD,YAED,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,GAAI,GACpB,EACN,eAAK,KAAK,EAAE,UAAU,aACpB,eAAK,KAAK,EAAE,UAAU,aACpB,2BACE,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAQ,EAC1D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAU,CAAC,CAAC,CAAC,IAAI,EACnE,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAQ,IACxD,EACN,SAAS,CAAC,CAAC,CAAC,CACX,eAAM,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,6BAE7C,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,cAAK,KAAK,EAAE,aAAa,YAAG,IAAI,CAAC,OAAO,GAAO,IAC3C,IACL,CACJ,CAAC;IAEF,MAAM,KAAK,GAAkB;QAC3B,GAAG,UAAU;QACb,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC;QACtC,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC;QAC3C,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM;QAC5C,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAC1C,CAAC;IAEF,IAAI,SAAS;QAAE,OAAO,cAAK,KAAK,EAAE,KAAK,YAAG,IAAI,GAAO,CAAC;IAEtD,OAAO,CACL,YACE,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EACnB,KAAK,EAAE,IAAI,CAAC,IAAI,EAChB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC,EACD,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC,EACD,MAAM,EAAE,GAAG,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,YAEA,IAAI,GACH,CACL,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,4EAA4E;AAC5E,SAAS,IAAI,CAAC,IAAmB,EAAE,SAAkB,EAAE,GAAY;IACjE,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;AAC9E,CAAC;AAED,SAAS,QAAQ,CACf,IAAmB,EACnB,SAAkB,EAClB,GAAY;IAEZ,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type { EcosystemButtonProps } from './EcosystemButton.tsx';
2
+ export { EcosystemButton } from './EcosystemButton.tsx';
3
+ export type { EcosystemMenuProps } from './EcosystemMenu.tsx';
4
+ export { EcosystemMenu } from './EcosystemMenu.tsx';
5
+ export type { SiteMarkProps } from './marks.tsx';
6
+ export { SiteMark } from './marks.tsx';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { EcosystemButton } from "./EcosystemButton.js";
2
+ export { EcosystemMenu } from "./EcosystemMenu.js";
3
+ export { SiteMark } from "./marks.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ecosystem/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { EcosystemSite } from '../core/sites.ts';
3
+ export interface SiteMarkProps {
4
+ /** The site whose mark is drawn, with the two colours it owns. */
5
+ site: EcosystemSite;
6
+ /**
7
+ * Edge of the square the mark is drawn in, in pixels.
8
+ * @default 28
9
+ */
10
+ size?: number;
11
+ }
12
+ /**
13
+ * The little logo of one site of the family.
14
+ * @param props - The site and the size of its mark.
15
+ * @returns The mark, as an inline SVG.
16
+ */
17
+ export declare function SiteMark(props: SiteMarkProps): ReactElement;
18
+ //# sourceMappingURL=marks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marks.d.ts","sourceRoot":"","sources":["../../../src/ecosystem/ui/marks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAa,MAAM,OAAO,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,kBAAkB,CAAC;AAS9D,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,IAAI,EAAE,aAAa,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAwB3D"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // Every mark is drawn in the same 32×32 box, on a plate of the site's own
3
+ // colour, so ten marks from ten sites still read as one row. Each keeps the
4
+ // geometry of that site's own logo where it has one, and carries the site's
5
+ // answering colour on exactly one element — which is what stops it collapsing
6
+ // into a flat shape at 16 px.
7
+ const MARK_STYLE = { display: 'block', flex: 'none' };
8
+ /**
9
+ * The little logo of one site of the family.
10
+ * @param props - The site and the size of its mark.
11
+ * @returns The mark, as an inline SVG.
12
+ */
13
+ export function SiteMark(props) {
14
+ const { site, size = 28 } = props;
15
+ return (_jsxs("svg", { style: MARK_STYLE, width: size, height: size, viewBox: "0 0 32 32", "aria-hidden": "true", focusable: "false", children: [_jsx("rect", { x: site.mark.edge ? 0.5 : 0, y: site.mark.edge ? 0.5 : 0, width: site.mark.edge ? 31 : 32, height: site.mark.edge ? 31 : 32, rx: site.mark.edge ? 6.5 : 7, fill: site.mark.plate, stroke: site.mark.edge }), GLYPHS[site.id](site.mark.accent)] }));
16
+ }
17
+ /** Every mark, keyed by site, drawn on top of its plate. */
18
+ const GLYPHS = {
19
+ // A hexagon with a tail: the structure, and the string it hashes into.
20
+ inchi: (alt) => (_jsxs("g", { fill: "none", stroke: alt, strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("polygon", { points: "13,6.5 7.7,9.6 7.7,15.7 13,18.8 18.3,15.7 18.3,9.6" }), _jsx("path", { d: "M16.4 16.2 25.2 25" })] })),
21
+ // The core carrying three R groups, which is what this tool combines.
22
+ vcl: (alt) => (_jsxs(_Fragment, { children: [_jsxs("g", { fill: "none", stroke: "#ffffff", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M16 9.5 10.8 12.5 10.8 18.5 16 21.5 21.2 18.5 21.2 12.5Z" }), _jsx("path", { d: "M16 9.5 16 5.5M21.2 18.5 24.8 20.6M10.8 18.5 7.2 20.6" })] }), _jsx("circle", { cx: "16", cy: "4.6", r: "2.6", fill: alt }), _jsx("circle", { cx: "25.6", cy: "21.2", r: "2.6", fill: alt }), _jsx("circle", { cx: "6.4", cy: "21.2", r: "2.6", fill: alt })] })),
23
+ // A ring over the line of characters that writes it down.
24
+ smiles: (alt) => (_jsxs(_Fragment, { children: [_jsx("path", { d: "M16 7.5 22.1 11.1 22.1 18.3 16 21.9 9.9 18.3 9.9 11.1Z", fill: "none", stroke: "#ffffff", strokeWidth: "2.2", strokeLinejoin: "round" }), _jsx("path", { d: "M5.5 25.5h21", fill: "none", stroke: alt, strokeWidth: "3", strokeLinecap: "round" })] })),
25
+ // An isotopic pattern: the answer this one is asked for most.
26
+ chemcalc: (alt) => (_jsxs("g", { strokeLinecap: "round", strokeWidth: "3.4", fill: "none", children: [_jsx("path", { d: "M9 24V15", stroke: "#ffffff" }), _jsx("path", { d: "M16 24V7", stroke: alt }), _jsx("path", { d: "M23 24V18", stroke: "#ffffff" })] })),
27
+ // The official NMRium symbol, from `Logo.tsx` of the NMRium sources: the
28
+ // orange half is theirs, and the half their logo sets in plum is set in white
29
+ // here because the plate already is that plum.
30
+ nmrium: (accent) => (_jsxs("g", { fillRule: "evenodd", transform: "translate(5.25 6.25) scale(0.088)", children: [_jsx("path", { fill: accent, d: "M.64,31.7A31.67,31.67,0,0,1,54.72,9.29l0,0A31.66,31.66,0,0,1,64,31.7V190a13.39,13.39,0,0,0,26.77,0V54a31.7,31.7,0,0,1,31.7-31.7V40.58A13.38,13.38,0,0,0,109.13,54V190a31.71,31.71,0,0,1-63.41,0V31.7a13.29,13.29,0,0,0-3.88-9.46l0,0A13.41,13.41,0,0,0,19,31.7V164.82H.64Z" }), _jsx("path", { fill: "#ffffff", d: "M154.21,54v68.17a13.34,13.34,0,0,0,3.89,9.47h0A13.39,13.39,0,0,0,181,122.14V99.32h-.06a31.63,31.63,0,0,1,9.29-22.38l0,0a31.65,31.65,0,0,1,44.8,0l0,0a31.58,31.58,0,0,1,9.3,22.39V118H226V99.32a13.3,13.3,0,0,0-3.89-9.46h0a13.44,13.44,0,0,0-18.93,0l0,0a13.3,13.3,0,0,0-3.83,8.19v24.09a31.7,31.7,0,0,1-54.11,22.42v0a31.66,31.66,0,0,1-9.3-22.4V54Z" })] })),
31
+ // One formula branching into every structure it can be.
32
+ surge: (alt) => (_jsxs(_Fragment, { children: [_jsxs("g", { fill: "none", stroke: "#ffffff", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M7 16h6" }), _jsx("path", { d: "M13 16 25 8.5M13 16h12M13 16 25 23.5" })] }), _jsx("circle", { cx: "25", cy: "8.5", r: "3", fill: alt }), _jsx("circle", { cx: "25", cy: "16", r: "3", fill: alt }), _jsx("circle", { cx: "25", cy: "23.5", r: "3", fill: alt })] })),
33
+ // A radical over its radicand: a formula being set.
34
+ tex: (alt) => (_jsxs(_Fragment, { children: [_jsx("rect", { x: "18.5", y: "12", width: "8.5", height: "8.5", rx: "1.6", fill: alt }), _jsx("path", { d: "M4.5 15.5h3l3.6 8.2L16.8 7.5h10.4", fill: "none", stroke: "#ffffff", strokeWidth: "2.4", strokeLinecap: "round", strokeLinejoin: "round" })] })),
35
+ // The site's own favicon: two lobes of opposite phase overlapping end-on,
36
+ // the simplest sigma bond, in the phase palette its viewer renders with.
37
+ lcao: (alt) => (_jsxs(_Fragment, { children: [_jsx("path", { d: "M16 16C16 10.2 13.3 5 9 5S2 10.2 2 16s2.7 11 7 11 7-5.2 7-11z", fill: "#1565c0" }), _jsx("path", { d: "M16 16c0 5.8 2.7 11 7 11s7-5.2 7-11-2.7-11-7-11-7 5.2-7 11z", fill: alt }), _jsx("circle", { cx: "16", cy: "16", r: "2.25", fill: "#37474f" })] })),
38
+ // The pattern that matches anything, which is where everyone starts.
39
+ regexp: (alt) => (_jsx("text", { x: "50%", y: "53%", dominantBaseline: "central", textAnchor: "middle", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontSize: "18", fontWeight: "700", fill: alt, children: ".*" })),
40
+ // Three residues of a chain, one of them the ligand you came for.
41
+ pdb: (alt) => (_jsxs(_Fragment, { children: [_jsx("g", { stroke: "#ffffff", strokeWidth: "1.9", strokeLinecap: "round", fill: "none", opacity: "0.85", children: _jsx("path", { d: "M9.2 12.4 22 15.4 15.6 23Z" }) }), _jsx("circle", { cx: "9.2", cy: "12.4", r: "3.1", fill: "#ffffff" }), _jsx("circle", { cx: "22", cy: "15.4", r: "3.1", fill: "#ffffff" }), _jsx("circle", { cx: "15.6", cy: "23", r: "3.1", fill: alt })] })),
42
+ };
43
+ //# sourceMappingURL=marks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marks.js","sourceRoot":"","sources":["../../../src/ecosystem/ui/marks.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { IconName, PopoverNextProps } from '@blueprintjs/core';
2
+ import type { ReactElement } from 'react';
3
+ /** What every button of a site header takes, whatever its menu holds. */
4
+ export interface HeaderButtonProps {
5
+ /**
6
+ * Whether the button is reduced to its icon — no text, no caret — for a
7
+ * header that has run out of room. The icon still opens the same menu.
8
+ * @default false
9
+ */
10
+ compact?: boolean;
11
+ /**
12
+ * Side the menu opens on.
13
+ * @default 'bottom-end'
14
+ */
15
+ placement?: PopoverNextProps['placement'];
16
+ }
17
+ export interface MenuButtonProps extends HeaderButtonProps {
18
+ /** Class the holder carries, so a site can reach the button from its bar. */
19
+ className: string;
20
+ /** Glyph of the button. */
21
+ icon: IconName;
22
+ /** Text of the button, and what the pointer and a screen reader are told. */
23
+ label: string;
24
+ /** What the button opens. */
25
+ menu: ReactElement;
26
+ }
27
+ /**
28
+ * One entry of a site header: a button opening a menu, in the shape every such
29
+ * button of the package takes, so two of them differ only in glyph and menu.
30
+ * @param props - The glyph, the label, the menu, and how it opens.
31
+ * @returns The button and its menu.
32
+ */
33
+ export declare function MenuButton(props: MenuButtonProps): ReactElement;
34
+ //# sourceMappingURL=MenuButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuButton.d.ts","sourceRoot":"","sources":["../../../src/shared/ui/MenuButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAQzD,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAwB/D"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PopoverNext } from '@blueprintjs/core';
3
+ import { Button } from 'react-science/ui';
4
+ const HOLDER_STYLE = {
5
+ display: 'inline-flex',
6
+ alignItems: 'center',
7
+ };
8
+ /**
9
+ * One entry of a site header: a button opening a menu, in the shape every such
10
+ * button of the package takes, so two of them differ only in glyph and menu.
11
+ * @param props - The glyph, the label, the menu, and how it opens.
12
+ * @returns The button and its menu.
13
+ */
14
+ export function MenuButton(props) {
15
+ const { className, icon, label, menu, compact = false, placement = 'bottom-end', } = props;
16
+ return (_jsx("span", { className: className, style: HOLDER_STYLE, children: _jsx(PopoverNext, { placement: placement, content: menu, children: _jsx(Button, { variant: "minimal", icon: icon, endIcon: compact ? undefined : 'caret-down', text: compact ? undefined : label, "aria-label": label, title: compact ? label : undefined }) }) }));
17
+ }
18
+ //# sourceMappingURL=MenuButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuButton.js","sourceRoot":"","sources":["../../../src/shared/ui/MenuButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,YAAY,GAAkB;IAClC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,QAAQ;CACrB,CAAC;AA4BF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,OAAO,GAAG,KAAK,EACf,SAAS,GAAG,YAAY,GACzB,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,eAAM,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,YAC7C,KAAC,WAAW,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,YAC9C,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAC3C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,gBACrB,KAAK,EACjB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAClC,GACU,GACT,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { HeaderButtonProps } from './MenuButton.tsx';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/ui/index.ts"],"names":[],"mappings":""}
package/lib/ui.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './citation/ui/index.ts';
2
+ export * from './ecosystem/ui/index.ts';
3
+ export * from './shared/ui/index.ts';
4
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
package/lib/ui.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./citation/ui/index.js";
2
+ export * from "./ecosystem/ui/index.js";
3
+ export * from "./shared/ui/index.js";
4
+ //# sourceMappingURL=ui.js.map
package/lib/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}