@conduction/docusaurus-preset 3.17.0 → 3.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <PartnersFor />
|
|
3
|
+
*
|
|
4
|
+
* Section that lists the partners shipping a given app or solution.
|
|
5
|
+
* Reuses <PartnerCard/> (full variant) for each partner, with the
|
|
6
|
+
* <BecomePartner/> CTA as the trailing grid cell.
|
|
7
|
+
*
|
|
8
|
+
* Pure presentation: the consuming site resolves which partners ship
|
|
9
|
+
* the subject (via usePartnersByApp / usePartnersBySolution) and
|
|
10
|
+
* passes the locale-resolved copy in. When `partners` is empty, the
|
|
11
|
+
* grid contains only the BecomePartner cell so the section still
|
|
12
|
+
* recruits without looking broken.
|
|
13
|
+
*
|
|
14
|
+
* Usage in MDX:
|
|
15
|
+
*
|
|
16
|
+
* import {PartnersFor} from '@conduction/docusaurus-preset/components';
|
|
17
|
+
* import {usePartnersByApp, useBecomePartner} from '@site/src/data/partners-catalog';
|
|
18
|
+
*
|
|
19
|
+
* <PartnersFor
|
|
20
|
+
* eyebrow="Partners"
|
|
21
|
+
* title="Partners shipping OpenRegister"
|
|
22
|
+
* lede="Implementation, hosting, and integration partners that deliver OpenRegister to their customers."
|
|
23
|
+
* partners={usePartnersByApp('OpenRegister')}
|
|
24
|
+
* becomePartner={useBecomePartner()}
|
|
25
|
+
* />
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
import React from 'react';
|
|
29
|
+
import Section from '../primitives/Section';
|
|
30
|
+
import SectionHead from '../primitives/SectionHead';
|
|
31
|
+
import PartnerCard, {PartnerGrid, BecomePartner} from '../PartnerCard/PartnerCard';
|
|
32
|
+
|
|
33
|
+
export default function PartnersFor({
|
|
34
|
+
eyebrow = 'Partners',
|
|
35
|
+
title,
|
|
36
|
+
lede,
|
|
37
|
+
partners = [],
|
|
38
|
+
becomePartner,
|
|
39
|
+
gridColumns = 3,
|
|
40
|
+
background = 'default',
|
|
41
|
+
spacing = 'default',
|
|
42
|
+
className,
|
|
43
|
+
}) {
|
|
44
|
+
return (
|
|
45
|
+
<Section background={background} spacing={spacing} className={className}>
|
|
46
|
+
<SectionHead eyebrow={eyebrow} title={title} lede={lede} />
|
|
47
|
+
<PartnerGrid columns={gridColumns}>
|
|
48
|
+
{partners.map((p, i) => (
|
|
49
|
+
<PartnerCard key={p.href || p.name || i} {...p} />
|
|
50
|
+
))}
|
|
51
|
+
{becomePartner && <BecomePartner {...becomePartner} />}
|
|
52
|
+
</PartnerGrid>
|
|
53
|
+
</Section>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <PullQuote />
|
|
3
|
+
*
|
|
4
|
+
* Editorial emphasis for long-form prose. Lifts one or two load-
|
|
5
|
+
* bearing sentences out of an opinion piece, product page, or
|
|
6
|
+
* academy post into an orange-bordered cobalt panel. Optional
|
|
7
|
+
* attribution slot turns the pull-quote into a citable position.
|
|
8
|
+
*
|
|
9
|
+
* Use sparingly. One to three per page; on the sentences that
|
|
10
|
+
* carry the argument. The hero variant is for a single citable
|
|
11
|
+
* thesis near the top of the post.
|
|
12
|
+
*
|
|
13
|
+
* Variants:
|
|
14
|
+
* - "default" — orange-knvb left border, cobalt-50 fill,
|
|
15
|
+
* italic cobalt body. Drop into MDX between paragraphs.
|
|
16
|
+
* - "hero" — larger (28px), no italics, eyebrow hex bullet.
|
|
17
|
+
* Use once per page for the thesis statement.
|
|
18
|
+
* - "compact" — smaller (16px), tighter padding. For sidebars
|
|
19
|
+
* or dense layouts.
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
*
|
|
23
|
+
* <PullQuote>
|
|
24
|
+
* You buy a suite. You use a workspace. You inhabit a platform.
|
|
25
|
+
* </PullQuote>
|
|
26
|
+
*
|
|
27
|
+
* <PullQuote
|
|
28
|
+
* attribution="Ruben van der Linde"
|
|
29
|
+
* role="CTO Conduction"
|
|
30
|
+
* >
|
|
31
|
+
* Nextcloud-as-platform is true today in every structural sense
|
|
32
|
+
* that matters.
|
|
33
|
+
* </PullQuote>
|
|
34
|
+
*
|
|
35
|
+
* <PullQuote
|
|
36
|
+
* variant="hero"
|
|
37
|
+
* eyebrow="The thesis"
|
|
38
|
+
* attribution="Ruben van der Linde"
|
|
39
|
+
* role="CTO Conduction"
|
|
40
|
+
* >
|
|
41
|
+
* Tomorrow's functionality will not be built by vendors. It will
|
|
42
|
+
* be built by users with AI. In that world, scale wins.
|
|
43
|
+
* </PullQuote>
|
|
44
|
+
*
|
|
45
|
+
* Mirrors preview/components/pull-quote.html.
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
import React from 'react';
|
|
49
|
+
import styles from './PullQuote.module.css';
|
|
50
|
+
|
|
51
|
+
export default function PullQuote({
|
|
52
|
+
children,
|
|
53
|
+
attribution,
|
|
54
|
+
role,
|
|
55
|
+
variant = 'default',
|
|
56
|
+
eyebrow,
|
|
57
|
+
className,
|
|
58
|
+
}) {
|
|
59
|
+
const composed = [
|
|
60
|
+
styles.quote,
|
|
61
|
+
variant === 'hero' && styles.hero,
|
|
62
|
+
variant === 'compact' && styles.compact,
|
|
63
|
+
className,
|
|
64
|
+
].filter(Boolean).join(' ');
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<blockquote className={composed}>
|
|
68
|
+
{variant === 'hero' && eyebrow && (
|
|
69
|
+
<span className={styles.eyebrow}>
|
|
70
|
+
<span className={styles.eyebrowHex} aria-hidden="true" />
|
|
71
|
+
{eyebrow}
|
|
72
|
+
</span>
|
|
73
|
+
)}
|
|
74
|
+
{typeof children === 'string' ? <p>{children}</p> : children}
|
|
75
|
+
{(attribution || role) && (
|
|
76
|
+
<cite className={styles.cite}>
|
|
77
|
+
{attribution && <span className={styles.citeName}>{attribution}</span>}
|
|
78
|
+
{attribution && role && ', '}
|
|
79
|
+
{role}
|
|
80
|
+
</cite>
|
|
81
|
+
)}
|
|
82
|
+
</blockquote>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <PullQuote /> styles. Editorial emphasis for long-form prose:
|
|
3
|
+
* opinion pieces, product pages, academy blog posts. Orange-knvb
|
|
4
|
+
* left border, cobalt-50 fill, italic cobalt body, code-font cite.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors preview/components/pull-quote.html and lifts the
|
|
7
|
+
* cg-pullquote pattern from conduction.nl/commonground into a
|
|
8
|
+
* reusable component.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
.quote {
|
|
12
|
+
position: relative;
|
|
13
|
+
border-left: 4px solid var(--c-orange-knvb);
|
|
14
|
+
background: var(--c-cobalt-50);
|
|
15
|
+
padding: var(--space-5) var(--space-6);
|
|
16
|
+
margin: var(--space-7) 0;
|
|
17
|
+
border-radius: 0 var(--radius-md) var(--radius-md) 0;
|
|
18
|
+
font-family: var(--conduction-typography-font-family-body);
|
|
19
|
+
font-size: 22px;
|
|
20
|
+
font-weight: 500;
|
|
21
|
+
color: var(--c-blue-cobalt);
|
|
22
|
+
line-height: 1.4;
|
|
23
|
+
font-style: italic;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.quote p { margin: 0; }
|
|
27
|
+
.quote p + p { margin-top: var(--space-3); }
|
|
28
|
+
|
|
29
|
+
.cite {
|
|
30
|
+
display: block;
|
|
31
|
+
margin-top: var(--space-4);
|
|
32
|
+
font-family: var(--conduction-typography-font-family-code);
|
|
33
|
+
font-size: 11px;
|
|
34
|
+
font-style: normal;
|
|
35
|
+
font-weight: 400;
|
|
36
|
+
text-transform: uppercase;
|
|
37
|
+
letter-spacing: 0.06em;
|
|
38
|
+
color: var(--c-cobalt-700);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.citeName {
|
|
42
|
+
color: var(--c-cobalt-900);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Hero variant — larger, eyebrow hex, no italics. For one citable
|
|
46
|
+
position statement near the top of an opinion piece. */
|
|
47
|
+
.hero {
|
|
48
|
+
font-size: 28px;
|
|
49
|
+
font-style: normal;
|
|
50
|
+
padding: var(--space-7) var(--space-8);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.eyebrow {
|
|
54
|
+
display: inline-flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: 8px;
|
|
57
|
+
font-family: var(--conduction-typography-font-family-code);
|
|
58
|
+
font-size: 11px;
|
|
59
|
+
font-style: normal;
|
|
60
|
+
font-weight: 400;
|
|
61
|
+
text-transform: uppercase;
|
|
62
|
+
letter-spacing: 0.08em;
|
|
63
|
+
color: var(--c-cobalt-700);
|
|
64
|
+
margin-bottom: var(--space-4);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.eyebrowHex {
|
|
68
|
+
width: 10px;
|
|
69
|
+
height: 12px;
|
|
70
|
+
clip-path: var(--hex-pointy-top);
|
|
71
|
+
background: var(--c-orange-knvb);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Compact variant — sidebar pull-out, lighter weight. */
|
|
75
|
+
.compact {
|
|
76
|
+
font-size: 16px;
|
|
77
|
+
padding: var(--space-4) var(--space-5);
|
|
78
|
+
}
|
package/src/components/index.js
CHANGED
|
@@ -41,6 +41,7 @@ export {default as SolutionCard, SolutionGrid} from './SolutionCard/SolutionCard
|
|
|
41
41
|
export {default as PartnerCard, PartnerGrid, BecomePartner} from './PartnerCard/PartnerCard.jsx';
|
|
42
42
|
export {default as PartnerDirectory} from './PartnerDirectory/PartnerDirectory.jsx';
|
|
43
43
|
export {default as PartnerSidecard} from './PartnerSidecard/PartnerSidecard.jsx';
|
|
44
|
+
export {default as PartnersFor} from './PartnersFor/PartnersFor.jsx';
|
|
44
45
|
export {default as ManagedCommonGround} from './ManagedCommonGround/ManagedCommonGround.jsx';
|
|
45
46
|
export {default as Clients, DEFAULT_CLIENTS, DEFAULT_PARTNERS} from './Clients/Clients.jsx';
|
|
46
47
|
export {default as ReferenceCard, ReferenceGrid} from './ReferenceCard/ReferenceCard.jsx';
|
|
@@ -132,6 +133,7 @@ export {
|
|
|
132
133
|
patterns that academy tutorials kept duplicating. Designed for use
|
|
133
134
|
inside an MDX academy post body. */
|
|
134
135
|
export {default as HexCard} from './HexCard/HexCard.jsx';
|
|
136
|
+
export {default as PullQuote} from './PullQuote/PullQuote.jsx';
|
|
135
137
|
export {default as Outcomes, Outcome} from './Outcomes/Outcomes.jsx';
|
|
136
138
|
export {default as Prerequisites, PrerequisiteItem} from './Prerequisites/Prerequisites.jsx';
|
|
137
139
|
export {default as Troubleshooting, TroubleshootingItem} from './Troubleshooting/Troubleshooting.jsx';
|