@cogenta/theme-entreprise 1.1.2 → 1.3.3
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/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/render/blocks/accordion.d.ts.map +1 -1
- package/dist/src/render/blocks/accordion.js +12 -15
- package/dist/src/render/blocks/accordion.js.map +1 -1
- package/dist/src/render/blocks/collection-list.d.ts +5 -7
- package/dist/src/render/blocks/collection-list.d.ts.map +1 -1
- package/dist/src/render/blocks/collection-list.js +48 -32
- package/dist/src/render/blocks/collection-list.js.map +1 -1
- package/dist/src/render/blocks/cta.d.ts +6 -6
- package/dist/src/render/blocks/cta.d.ts.map +1 -1
- package/dist/src/render/blocks/cta.js +12 -12
- package/dist/src/render/blocks/cta.js.map +1 -1
- package/dist/src/render/blocks/embed.d.ts.map +1 -1
- package/dist/src/render/blocks/embed.js +22 -27
- package/dist/src/render/blocks/embed.js.map +1 -1
- package/dist/src/render/blocks/faq.d.ts.map +1 -1
- package/dist/src/render/blocks/faq.js +13 -16
- package/dist/src/render/blocks/faq.js.map +1 -1
- package/dist/src/render/blocks/feature-grid.d.ts.map +1 -1
- package/dist/src/render/blocks/feature-grid.js +22 -22
- package/dist/src/render/blocks/feature-grid.js.map +1 -1
- package/dist/src/render/blocks/gallery.d.ts +7 -8
- package/dist/src/render/blocks/gallery.d.ts.map +1 -1
- package/dist/src/render/blocks/gallery.js +16 -14
- package/dist/src/render/blocks/gallery.js.map +1 -1
- package/dist/src/render/blocks/hero.d.ts +13 -8
- package/dist/src/render/blocks/hero.d.ts.map +1 -1
- package/dist/src/render/blocks/hero.js +27 -17
- package/dist/src/render/blocks/hero.js.map +1 -1
- package/dist/src/render/blocks/logo-strip.d.ts.map +1 -1
- package/dist/src/render/blocks/logo-strip.js +14 -11
- package/dist/src/render/blocks/logo-strip.js.map +1 -1
- package/dist/src/render/blocks/logos.d.ts.map +1 -1
- package/dist/src/render/blocks/logos.js +21 -12
- package/dist/src/render/blocks/logos.js.map +1 -1
- package/dist/src/render/blocks/media-figure.d.ts +10 -6
- package/dist/src/render/blocks/media-figure.d.ts.map +1 -1
- package/dist/src/render/blocks/media-figure.js +18 -13
- package/dist/src/render/blocks/media-figure.js.map +1 -1
- package/dist/src/render/blocks/pricing-table.d.ts.map +1 -1
- package/dist/src/render/blocks/pricing-table.js +15 -11
- package/dist/src/render/blocks/pricing-table.js.map +1 -1
- package/dist/src/render/blocks/prose.d.ts +9 -3
- package/dist/src/render/blocks/prose.d.ts.map +1 -1
- package/dist/src/render/blocks/prose.js +11 -4
- package/dist/src/render/blocks/prose.js.map +1 -1
- package/dist/src/render/blocks/quote.d.ts +10 -10
- package/dist/src/render/blocks/quote.d.ts.map +1 -1
- package/dist/src/render/blocks/quote.js +14 -13
- package/dist/src/render/blocks/quote.js.map +1 -1
- package/dist/src/render/blocks/stat-counter.d.ts.map +1 -1
- package/dist/src/render/blocks/stat-counter.js +11 -13
- package/dist/src/render/blocks/stat-counter.js.map +1 -1
- package/dist/src/render/blocks/stats.d.ts.map +1 -1
- package/dist/src/render/blocks/stats.js +12 -13
- package/dist/src/render/blocks/stats.js.map +1 -1
- package/dist/src/render/blocks/testimonial.d.ts +9 -9
- package/dist/src/render/blocks/testimonial.d.ts.map +1 -1
- package/dist/src/render/blocks/testimonial.js +15 -14
- package/dist/src/render/blocks/testimonial.js.map +1 -1
- package/dist/src/render/chrome.d.ts +3 -1
- package/dist/src/render/chrome.d.ts.map +1 -1
- package/dist/src/render/chrome.js +71 -46
- package/dist/src/render/chrome.js.map +1 -1
- package/dist/src/render/layout.d.ts +26 -0
- package/dist/src/render/layout.d.ts.map +1 -0
- package/dist/src/render/layout.js +51 -0
- package/dist/src/render/layout.js.map +1 -0
- package/dist/src/render/render-block.d.ts.map +1 -1
- package/dist/src/render/render-block.js +23 -2
- package/dist/src/render/render-block.js.map +1 -1
- package/dist/src/render/term-archive.d.ts +8 -6
- package/dist/src/render/term-archive.d.ts.map +1 -1
- package/dist/src/render/term-archive.js +22 -16
- package/dist/src/render/term-archive.js.map +1 -1
- package/dist/src/render/widget-areas.d.ts +13 -0
- package/dist/src/render/widget-areas.d.ts.map +1 -0
- package/dist/src/render/widget-areas.js +20 -0
- package/dist/src/render/widget-areas.js.map +1 -0
- package/dist/theme.config.js +2 -2
- package/dist/theme.config.js.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +1 -0
- package/src/render/blocks/accordion.ts +32 -27
- package/src/render/blocks/collection-list.ts +84 -53
- package/src/render/blocks/cta.ts +27 -28
- package/src/render/blocks/embed.ts +46 -43
- package/src/render/blocks/faq.ts +25 -21
- package/src/render/blocks/feature-grid.ts +42 -35
- package/src/render/blocks/gallery.ts +21 -16
- package/src/render/blocks/hero.ts +40 -28
- package/src/render/blocks/logo-strip.ts +26 -16
- package/src/render/blocks/logos.ts +33 -17
- package/src/render/blocks/media-figure.ts +22 -14
- package/src/render/blocks/pricing-table.ts +26 -15
- package/src/render/blocks/prose.ts +18 -4
- package/src/render/blocks/quote.ts +18 -14
- package/src/render/blocks/stat-counter.ts +25 -20
- package/src/render/blocks/stats.ts +31 -21
- package/src/render/blocks/testimonial.ts +22 -18
- package/src/render/chrome.ts +84 -49
- package/src/render/layout.ts +67 -0
- package/src/render/render-block.ts +24 -1
- package/src/render/term-archive.ts +54 -50
- package/src/render/widget-areas.ts +23 -0
- package/src/styles/archive.css +135 -38
- package/src/styles/base.css +557 -430
- package/src/styles/blocks.css +1192 -1000
- package/src/styles/theme.css +18 -24
- package/src/styles/tokens.css +162 -192
- package/src/styles/widgets.css +913 -0
- package/tokens.json +17 -17
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAA;AAClD,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAA;AAClD,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA"}
|
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAA;AAClD,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAA;AAClD,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAEL,KAAK,WAAW,EAGhB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAEL,KAAK,WAAW,EAGhB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;AAgC3B,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,GAAG,WAAW,CAwBtF"}
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
import { blockHeadingTag, h, heading, renderRichText, } from '@cogenta/theme-kit';
|
|
2
|
+
import { ordinal, section } from '../layout.js';
|
|
2
3
|
/**
|
|
3
|
-
* `blocks@2.0` (RFC 0001).
|
|
4
|
-
* mechanics
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* depending on the other: "accordion" and "frequently asked question" are
|
|
9
|
-
* different editorial intents even where the underlying question/answer
|
|
10
|
-
* shape coincides.
|
|
4
|
+
* `blocks@2.0` (RFC 0001). The same zero-JavaScript `<details>`/`<summary>`
|
|
5
|
+
* mechanics as `faq`, laid out for a different intent: a specification or a
|
|
6
|
+
* method in numbered steps, across the full grid. The title sits above the
|
|
7
|
+
* list rather than beside it, each row carries its ordinal in the left
|
|
8
|
+
* column, and the open panel's text lines up with the question it answers.
|
|
11
9
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* accordion than a support page.
|
|
10
|
+
* Class names are its own (`cg-accordion`, not `cg-faq`) so the two blocks
|
|
11
|
+
* can diverge without one depending on the other.
|
|
15
12
|
*/
|
|
16
|
-
function renderItem(item, ctx) {
|
|
17
|
-
return h('li', { class: 'cg-
|
|
13
|
+
function renderItem(item, index, ctx) {
|
|
14
|
+
return h('li', { class: 'cg-accordion__item' }, h('details', { class: 'cg-accordion__details' }, h('summary', { class: 'cg-accordion__question' }, h('span', { class: 'cg-accordion__index', 'aria-hidden': 'true' }, ordinal(index)), h('span', { class: 'cg-accordion__question-text' }, item.question), h('span', { class: 'cg-toggle-mark', 'aria-hidden': 'true' })), h('div', { class: 'cg-accordion__answer' }, renderRichText(ctx, item.answer))));
|
|
18
15
|
}
|
|
19
16
|
export function renderAccordion(block, ctx) {
|
|
20
|
-
return
|
|
17
|
+
return section('section', 'accordion', 'cg-accordion', {}, 'div', block.title === undefined
|
|
21
18
|
? null
|
|
22
|
-
: heading(blockHeadingTag('accordion') ?? 'h2', { class: 'cg-
|
|
19
|
+
: h('div', { class: 'cg-head' }, heading(blockHeadingTag('accordion') ?? 'h2', { class: 'cg-head__title', 'data-field': 'title' }, block.title)), h('ol', { class: 'cg-accordion__items' }, block.items.map((item, index) => renderItem(item, index, ctx))));
|
|
23
20
|
}
|
|
24
21
|
//# sourceMappingURL=accordion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../../src/render/blocks/accordion.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAEf,CAAC,EACD,OAAO,EAEP,cAAc,GACf,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../../src/render/blocks/accordion.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAEf,CAAC,EACD,OAAO,EAEP,cAAc,GACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;;;;;GASG;AACH,SAAS,UAAU,CAAC,IAAmB,EAAE,KAAa,EAAE,GAAkB;IACxE,OAAO,CAAC,CACN,IAAI,EACJ,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAC/B,CAAC,CACC,SAAS,EACT,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAClC,CAAC,CACC,SAAS,EACT,EAAE,KAAK,EAAE,wBAAwB,EAAE,EACnC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAClF,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAClE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAC9D,EACD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAC9E,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAqB,EAAE,GAAkB;IACvE,OAAO,OAAO,CACZ,SAAS,EACT,WAAW,EACX,cAAc,EACd,EAAE,EACF,KAAK,EACL,KAAK,CAAC,KAAK,KAAK,SAAS;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,SAAS,EAAE,EACpB,OAAO,CACL,eAAe,CAAC,WAAW,CAAC,IAAI,IAAI,EACpC,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,EAClD,KAAK,CAAC,KAAK,CACZ,CACF,EACL,CAAC,CACC,IAAI,EACJ,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAChC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAC/D,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import type { CollectionListBlock } from '@cogenta/blocks';
|
|
2
2
|
import { buildCollectionListQuery, type ContentEntry, type HtmlElement, type RenderContext } from '@cogenta/theme-kit';
|
|
3
3
|
/**
|
|
4
|
-
* The only block of the seventeen that reads data at render time
|
|
5
|
-
* marks it `runtime: 'server'`
|
|
6
|
-
*
|
|
7
|
-
* (
|
|
8
|
-
*
|
|
9
|
-
* starts, and this function stays a pure function of the entries handed to
|
|
10
|
-
* it.
|
|
4
|
+
* The only block of the seventeen that reads data at render time (contract B
|
|
5
|
+
* marks it `runtime: 'server'`). The read is not done here: `query` builds
|
|
6
|
+
* the request from the block's own fields, the caller awaits
|
|
7
|
+
* `ctx.content.list(...)` before rendering starts, and this function stays a
|
|
8
|
+
* pure function of the entries handed to it.
|
|
11
9
|
*/
|
|
12
10
|
export { buildCollectionListQuery as query };
|
|
13
11
|
export declare function renderCollectionList(block: CollectionListBlock, ctx: RenderContext, entries: readonly ContentEntry[]): HtmlElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-list.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/collection-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAEL,wBAAwB,EACxB,KAAK,YAAY,EAOjB,KAAK,WAAW,EAIhB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"collection-list.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/collection-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAEL,wBAAwB,EACxB,KAAK,YAAY,EAOjB,KAAK,WAAW,EAIhB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;AAG3B;;;;;;GAMG;AACH,OAAO,EAAE,wBAAwB,IAAI,KAAK,EAAE,CAAA;AA+E5C,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,mBAAmB,EAC1B,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,WAAW,CA0Cb"}
|
|
@@ -1,51 +1,67 @@
|
|
|
1
1
|
import { blockHeadingTag, buildCollectionListQuery, entryDate, entryExcerpt, entryHref, entryImage, entryTitle, h, heading, nestedHeadingTag, renderImageSource, } from '@cogenta/theme-kit';
|
|
2
|
+
import { arrow, monthYear, ordinal, section } from '../layout.js';
|
|
2
3
|
/**
|
|
3
|
-
* The only block of the seventeen that reads data at render time
|
|
4
|
-
* marks it `runtime: 'server'`
|
|
5
|
-
*
|
|
6
|
-
* (
|
|
7
|
-
*
|
|
8
|
-
* starts, and this function stays a pure function of the entries handed to
|
|
9
|
-
* it.
|
|
4
|
+
* The only block of the seventeen that reads data at render time (contract B
|
|
5
|
+
* marks it `runtime: 'server'`). The read is not done here: `query` builds
|
|
6
|
+
* the request from the block's own fields, the caller awaits
|
|
7
|
+
* `ctx.content.list(...)` before rendering starts, and this function stays a
|
|
8
|
+
* pure function of the entries handed to it.
|
|
10
9
|
*/
|
|
11
10
|
export { buildCollectionListQuery as query };
|
|
12
11
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
12
|
+
* Three designed layouts, one markup per entry:
|
|
13
|
+
*
|
|
14
|
+
* - `list` is the case-study register: alternating rows, the picture on
|
|
15
|
+
* seven columns and the text on four, swapping sides from one row to the
|
|
16
|
+
* next. An entry with no picture becomes a typographic row (title left,
|
|
17
|
+
* summary right) under the same hairline, never a row with a hole in it.
|
|
18
|
+
* - `grid` is an editorial index in three columns: a 3:2 picture, a hairline,
|
|
19
|
+
* the title in the display serif and its summary. No card border, no lift
|
|
20
|
+
* on hover.
|
|
21
|
+
* - `carousel` is the grid's item in a scroll-snapping, focusable row.
|
|
22
|
+
*
|
|
23
|
+
* The picture link is hidden from assistive technology and from the tab
|
|
24
|
+
* order: it goes where the title link goes, and one link per entry is what
|
|
25
|
+
* a keyboard or screen reader user should meet.
|
|
20
26
|
*/
|
|
21
|
-
function
|
|
22
|
-
const
|
|
23
|
-
if (
|
|
27
|
+
function renderPicture(entry, ctx, url) {
|
|
28
|
+
const picture = entryImage(entry, ctx);
|
|
29
|
+
if (picture === undefined)
|
|
24
30
|
return null;
|
|
25
|
-
return h('
|
|
31
|
+
return h('a', { class: 'cg-entry__media', href: url, tabindex: '-1', 'aria-hidden': 'true' }, renderImageSource(picture, {
|
|
32
|
+
className: 'cg-entry__image',
|
|
33
|
+
loading: 'lazy',
|
|
34
|
+
sizes: '(min-width: 64rem) 55vw, 100vw',
|
|
35
|
+
}));
|
|
26
36
|
}
|
|
27
|
-
function renderEntry(entry, ctx, tag) {
|
|
28
|
-
const
|
|
37
|
+
function renderEntry(entry, index, ctx, tag) {
|
|
38
|
+
const url = entryHref(entry, ctx);
|
|
29
39
|
const excerpt = entryExcerpt(entry);
|
|
30
|
-
|
|
40
|
+
// Only a declared publication date is shown: `entryDate` falls back to
|
|
41
|
+
// `createdAt`, and the day a record was typed in is not a date a reader of
|
|
42
|
+
// a case study or a practice page is owed.
|
|
43
|
+
const iso = typeof entry.publishedAt === 'string' ? entryDate(entry) : undefined;
|
|
44
|
+
const date = iso === undefined ? null : monthYear(iso, ctx.locale);
|
|
45
|
+
const picture = renderPicture(entry, ctx, url);
|
|
46
|
+
return h('li', { class: 'cg-entry', 'data-media': picture === null ? 'none' : 'present' }, picture, h('div', { class: 'cg-entry__body' }, h('p', { class: 'cg-entry__meta' }, h('span', { class: 'cg-entry__index', 'aria-hidden': 'true' }, ordinal(index)), iso === undefined || date === null
|
|
31
47
|
? null
|
|
32
|
-
: h('time', { class: 'cg-
|
|
48
|
+
: h('time', { class: 'cg-entry__date', datetime: iso }, date)),
|
|
49
|
+
// The title is the link, and the arrow sits inline after its last word
|
|
50
|
+
// inside the same link: a bare arrow on a line of its own reads as a
|
|
51
|
+
// placeholder, not as a way into the case study.
|
|
52
|
+
heading(tag, { class: 'cg-entry__title' }, h('a', { class: 'cg-entry__link', href: url }, h('span', { class: 'cg-entry__link-text' }, entryTitle(entry, ctx)), h('span', { class: 'cg-entry__arrow', 'aria-hidden': 'true' }, arrow()))), excerpt === undefined ? null : h('p', { class: 'cg-entry__excerpt' }, excerpt)));
|
|
33
53
|
}
|
|
34
54
|
export function renderCollectionList(block, ctx, entries) {
|
|
35
55
|
const hasTitle = block.title !== undefined;
|
|
36
56
|
const entryTag = nestedHeadingTag('collectionList', hasTitle);
|
|
37
57
|
const items = entries.length === 0
|
|
38
|
-
? h('p', { class: 'cg-
|
|
39
|
-
: h('ul', { class: 'cg-
|
|
40
|
-
return
|
|
41
|
-
class: 'cg-
|
|
42
|
-
|
|
43
|
-
'data-layout': block.layout,
|
|
44
|
-
}, hasTitle
|
|
45
|
-
? heading(blockHeadingTag('collectionList') ?? 'h2', { class: 'cg-list__title-heading', 'data-field': 'title' }, block.title ?? '')
|
|
46
|
-
: null, block.layout === 'carousel'
|
|
58
|
+
? h('p', { class: 'cg-collection__empty' }, ctx.t('collection.empty'))
|
|
59
|
+
: h(block.layout === 'list' ? 'ol' : 'ul', { class: 'cg-collection__items', 'data-count': String(Math.min(entries.length, 4)) }, entries.map((entry, index) => renderEntry(entry, index, ctx, entryTag)));
|
|
60
|
+
return section('section', 'collectionList', 'cg-collection', { 'data-layout': block.layout }, 'div', hasTitle
|
|
61
|
+
? h('div', { class: 'cg-head' }, heading(blockHeadingTag('collectionList') ?? 'h2', { class: 'cg-head__title', 'data-field': 'title' }, block.title ?? ''))
|
|
62
|
+
: null, block.layout === 'carousel' && entries.length > 0
|
|
47
63
|
? h('div', {
|
|
48
|
-
class: 'cg-
|
|
64
|
+
class: 'cg-collection__viewport',
|
|
49
65
|
role: 'region',
|
|
50
66
|
'aria-label': block.title ?? ctx.t('collection.carousel'),
|
|
51
67
|
tabindex: '0',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-list.js","sourceRoot":"","sources":["../../../../src/render/blocks/collection-list.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,wBAAwB,EAExB,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EAGV,CAAC,EACD,OAAO,EACP,gBAAgB,EAEhB,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"collection-list.js","sourceRoot":"","sources":["../../../../src/render/blocks/collection-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { CtaBlock } from '@cogenta/blocks';
|
|
2
2
|
import { type HtmlElement, type RenderContext } from '@cogenta/theme-kit';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* The ink band: the one dark plane on a light page, edge to edge.
|
|
5
|
+
*
|
|
6
|
+
* The ask is set in the display serif across the left eight columns, the
|
|
7
|
+
* supporting line beneath it, and the actions sit in the right-hand columns
|
|
8
|
+
* on the band's baseline. In dark mode the band becomes the raised ink
|
|
9
|
+
* surface between two hairlines, so it keeps its role without inverting.
|
|
10
10
|
*/
|
|
11
11
|
export declare function renderCta(block: CtaBlock, ctx: RenderContext): HtmlElement;
|
|
12
12
|
//# sourceMappingURL=cta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cta.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/cta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAGL,KAAK,WAAW,EAGhB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"cta.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/cta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAGL,KAAK,WAAW,EAGhB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AAG3B;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,GAAG,WAAW,CA2B1E"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { actionList, blockHeadingTag, h, heading, } from '@cogenta/theme-kit';
|
|
2
|
+
import { section } from '../layout.js';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* The ink band: the one dark plane on a light page, edge to edge.
|
|
5
|
+
*
|
|
6
|
+
* The ask is set in the display serif across the left eight columns, the
|
|
7
|
+
* supporting line beneath it, and the actions sit in the right-hand columns
|
|
8
|
+
* on the band's baseline. In dark mode the band becomes the raised ink
|
|
9
|
+
* surface between two hairlines, so it keeps its role without inverting.
|
|
9
10
|
*/
|
|
10
11
|
export function renderCta(block, ctx) {
|
|
11
|
-
return
|
|
12
|
+
return section('section', 'cta', 'cg-cta', {}, 'div', h('div', { class: 'cg-cta__copy' }, heading(blockHeadingTag('cta') ?? 'h2', { class: 'cg-cta__title', 'data-field': 'title' }, block.title), block.text === undefined
|
|
12
13
|
? null
|
|
13
|
-
: h('p', { class: 'cg-
|
|
14
|
-
// `actions` is required and non-empty for a `cta
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
actionList(ctx, block.actions, block.title))));
|
|
14
|
+
: h('p', { class: 'cg-cta__text', 'data-field': 'text' }, block.text)), h('div', { class: 'cg-cta__actions' },
|
|
15
|
+
// `actions` is required and non-empty for a `cta`; the null branch is
|
|
16
|
+
// reachable only through invalid data.
|
|
17
|
+
actionList(ctx, block.actions, block.title)));
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=cta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cta.js","sourceRoot":"","sources":["../../../../src/render/blocks/cta.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,eAAe,EAEf,CAAC,EACD,OAAO,GAER,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"cta.js","sourceRoot":"","sources":["../../../../src/render/blocks/cta.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,eAAe,EAEf,CAAC,EACD,OAAO,GAER,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAe,EAAE,GAAkB;IAC3D,OAAO,OAAO,CACZ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,EAAE,EACF,KAAK,EACL,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,cAAc,EAAE,EACzB,OAAO,CACL,eAAe,CAAC,KAAK,CAAC,IAAI,IAAI,EAC9B,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,EACjD,KAAK,CAAC,KAAK,CACZ,EACD,KAAK,CAAC,IAAI,KAAK,SAAS;QACtB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CACxE,EACD,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC5B,sEAAsE;IACtE,uCAAuC;IACvC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAC5C,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAe,KAAK,WAAW,EAAK,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAe,KAAK,WAAW,EAAK,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AA2EzF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,WAAW,CAyC9E"}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import { aspectRatio, h } from '@cogenta/theme-kit';
|
|
2
|
+
import { section } from '../layout.js';
|
|
2
3
|
/**
|
|
3
4
|
* Nothing here contacts a third party before the visitor has consented.
|
|
4
5
|
*
|
|
5
|
-
* When `consentRequired` is true the block renders a
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* When `consentRequired` is true the block renders a notice and an outbound
|
|
7
|
+
* link: no `<iframe>`, no `<script>`, no preconnect, no poster fetched from
|
|
8
|
+
* the provider. An embed that "only" loads a thumbnail has already handed
|
|
9
|
+
* the visitor's IP address to the provider, which is the transfer consent
|
|
10
|
+
* was supposed to gate.
|
|
10
11
|
*
|
|
11
|
-
* The theme ships no consent
|
|
12
|
-
* granting consent is a site-wide decision
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* are (a thin bordered plate with a small provider tag), so the three read
|
|
17
|
-
* as one family of "media placeholder" treatments.
|
|
12
|
+
* The theme ships no consent button, because it ships no JavaScript:
|
|
13
|
+
* granting consent is a site-wide decision for the consent layer, not a
|
|
14
|
+
* block. The notice is the honest rendering until that layer exists. It
|
|
15
|
+
* holds the same eight central columns and the same ratio the frame would,
|
|
16
|
+
* so the page does not reflow when consent is later granted.
|
|
18
17
|
*/
|
|
19
18
|
/** `null` means "this provider has no embeddable frame we trust". */
|
|
20
19
|
function frameSource(provider, rawUrl) {
|
|
@@ -25,7 +24,7 @@ function frameSource(provider, rawUrl) {
|
|
|
25
24
|
switch (provider) {
|
|
26
25
|
case 'youtube': {
|
|
27
26
|
// `youtube-nocookie.com` is the privacy-preserving host, and the only
|
|
28
|
-
// one this theme
|
|
27
|
+
// one this theme points an iframe at.
|
|
29
28
|
const id = url.hostname.endsWith('youtu.be')
|
|
30
29
|
? segments[0]
|
|
31
30
|
: (url.searchParams.get('v') ?? segments[1]);
|
|
@@ -49,12 +48,12 @@ function frameSource(provider, rawUrl) {
|
|
|
49
48
|
return `https://w.soundcloud.com/player/?url=${encodeURIComponent(rawUrl)}`;
|
|
50
49
|
default:
|
|
51
50
|
// bluesky, mastodon, other: a post embed is a script tag, which this
|
|
52
|
-
// theme does not load. The
|
|
51
|
+
// theme does not load. The notice is the rendering.
|
|
53
52
|
return null;
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
|
-
function
|
|
57
|
-
return h('div', { class: 'cg-
|
|
55
|
+
function consentNotice(block, ctx, reason) {
|
|
56
|
+
return h('div', { class: 'cg-embed__notice' }, h('p', { class: 'cg-embed__provider', 'aria-hidden': 'true' }, block.provider), h('p', { class: 'cg-embed__reason' }, reason), h('a', {
|
|
58
57
|
class: 'cg-embed__link',
|
|
59
58
|
href: ctx.link(block.url),
|
|
60
59
|
rel: 'noopener noreferrer nofollow',
|
|
@@ -62,31 +61,27 @@ function consentCard(block, ctx, reason) {
|
|
|
62
61
|
}
|
|
63
62
|
export function renderEmbed(block, ctx) {
|
|
64
63
|
const source = block.consentRequired ? null : frameSource(block.provider, block.url);
|
|
65
|
-
// Video providers are 16:9 unless the editor framed them otherwise;
|
|
66
|
-
//
|
|
67
|
-
// loads.
|
|
64
|
+
// Video providers are 16:9 unless the editor framed them otherwise; without
|
|
65
|
+
// a ratio the frame would collapse and shift the layout as it loads.
|
|
68
66
|
const ratio = aspectRatio(block.ratio) ?? '16 / 9';
|
|
69
|
-
return
|
|
70
|
-
class: 'cg-embed',
|
|
71
|
-
'data-block': 'embed',
|
|
67
|
+
return section('div', 'embed', 'cg-embed', {
|
|
72
68
|
'data-provider': block.provider,
|
|
73
69
|
'data-consent': block.consentRequired ? 'required' : 'not-required',
|
|
74
70
|
style: `--cg-ratio:${ratio}`,
|
|
75
|
-
}, source === null
|
|
76
|
-
?
|
|
71
|
+
}, 'div', h('div', { class: 'cg-embed__frame-box' }, source === null
|
|
72
|
+
? consentNotice(block, ctx, block.consentRequired
|
|
77
73
|
? ctx.t('embed.consentRequired', { provider: block.provider })
|
|
78
74
|
: ctx.t('embed.unsupported', { provider: block.provider }))
|
|
79
75
|
: h('iframe', {
|
|
80
76
|
class: 'cg-embed__frame',
|
|
81
77
|
src: source,
|
|
82
78
|
// An iframe with no accessible name is announced as "frame" and
|
|
83
|
-
// nothing else
|
|
84
|
-
// defect.
|
|
79
|
+
// nothing else (WCAG 4.1.2).
|
|
85
80
|
title: ctx.t('embed.title', { provider: block.provider }),
|
|
86
81
|
loading: 'lazy',
|
|
87
82
|
referrerpolicy: 'strict-origin-when-cross-origin',
|
|
88
83
|
allow: 'accelerometer; clipboard-write; encrypted-media; picture-in-picture; fullscreen',
|
|
89
84
|
allowfullscreen: true,
|
|
90
|
-
}));
|
|
85
|
+
})));
|
|
91
86
|
}
|
|
92
87
|
//# sourceMappingURL=embed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../../src/render/blocks/embed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAoB,CAAC,EAAsB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../../src/render/blocks/embed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faq.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/faq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAEL,KAAK,WAAW,EAGhB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"faq.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/faq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAEL,KAAK,WAAW,EAGhB,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAA;AAgC3B,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,GAAG,WAAW,CAwB1E"}
|
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import { blockHeadingTag, h, heading, renderRichText, } from '@cogenta/theme-kit';
|
|
2
|
+
import { section } from '../layout.js';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Each row carries a numeral (`01`, `02`, …) ahead of the question — the
|
|
8
|
-
* same indexing language `featureGrid` uses — and the disclosure affordance
|
|
9
|
-
* is a plus/minus mark drawn from two CSS borders, not an icon font.
|
|
4
|
+
* Two columns: the title holds the left four and stays in view while the
|
|
5
|
+
* questions, on the right eight, scroll past it. Each question is a row
|
|
6
|
+
* between hairlines with a plus that turns into a minus when open.
|
|
10
7
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* heading
|
|
8
|
+
* `<details>`/`<summary>` rather than a scripted accordion: expanding,
|
|
9
|
+
* keyboard operation and the expanded state announced to assistive
|
|
10
|
+
* technology all come from the browser, at zero bytes of JavaScript. The
|
|
11
|
+
* question is plain text inside `<summary>`, never a heading: a heading
|
|
12
|
+
* nested in a `<summary>` is announced inconsistently across screen readers.
|
|
15
13
|
*/
|
|
16
|
-
function renderItem(item, ctx
|
|
17
|
-
|
|
18
|
-
return h('li', { class: 'cg-faq__item' }, h('details', { class: 'cg-faq__details' }, h('summary', { class: 'cg-faq__question' }, h('span', { class: 'cg-faq__index', 'aria-hidden': 'true' }, number), h('span', { class: 'cg-faq__question-text' }, item.question)), h('div', { class: 'cg-faq__answer' }, renderRichText(ctx, item.answer))));
|
|
14
|
+
function renderItem(item, ctx) {
|
|
15
|
+
return h('li', { class: 'cg-faq__item' }, h('details', { class: 'cg-faq__details' }, h('summary', { class: 'cg-faq__question' }, h('span', { class: 'cg-faq__question-text' }, item.question), h('span', { class: 'cg-toggle-mark', 'aria-hidden': 'true' })), h('div', { class: 'cg-faq__answer' }, renderRichText(ctx, item.answer))));
|
|
19
16
|
}
|
|
20
17
|
export function renderFaq(block, ctx) {
|
|
21
|
-
return
|
|
18
|
+
return section('section', 'faq', 'cg-faq', { 'data-titled': block.title === undefined ? 'false' : 'true' }, 'div', block.title === undefined
|
|
22
19
|
? null
|
|
23
|
-
: heading(blockHeadingTag('faq') ?? 'h2', { class: 'cg-
|
|
20
|
+
: h('div', { class: 'cg-head cg-head--aside cg-head--sticky' }, heading(blockHeadingTag('faq') ?? 'h2', { class: 'cg-head__title', 'data-field': 'title' }, block.title)), h('ul', { class: 'cg-faq__items' }, block.items.map((item) => renderItem(item, ctx))));
|
|
24
21
|
}
|
|
25
22
|
//# sourceMappingURL=faq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faq.js","sourceRoot":"","sources":["../../../../src/render/blocks/faq.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAEf,CAAC,EACD,OAAO,EAEP,cAAc,GACf,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"faq.js","sourceRoot":"","sources":["../../../../src/render/blocks/faq.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAEf,CAAC,EACD,OAAO,EAEP,cAAc,GACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC;;;;;;;;;;GAUG;AACH,SAAS,UAAU,CAAC,IAAa,EAAE,GAAkB;IACnD,OAAO,CAAC,CACN,IAAI,EACJ,EAAE,KAAK,EAAE,cAAc,EAAE,EACzB,CAAC,CACC,SAAS,EACT,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAC5B,CAAC,CACC,SAAS,EACT,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAC7B,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAC5D,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAC9D,EACD,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CACxE,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAe,EAAE,GAAkB;IAC3D,OAAO,OAAO,CACZ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,EAAE,aAAa,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAC/D,KAAK,EACL,KAAK,CAAC,KAAK,KAAK,SAAS;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,wCAAwC,EAAE,EACnD,OAAO,CACL,eAAe,CAAC,KAAK,CAAC,IAAI,IAAI,EAC9B,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,EAClD,KAAK,CAAC,KAAK,CACZ,CACF,EACL,CAAC,CACC,IAAI,EACJ,EAAE,KAAK,EAAE,eAAe,EAAE,EAC1B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CACjD,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-grid.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/feature-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAGL,KAAK,WAAW,EAKhB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"feature-grid.d.ts","sourceRoot":"","sources":["../../../../src/render/blocks/feature-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAGL,KAAK,WAAW,EAKhB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AA2C3B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,GAAG,WAAW,CA0B1F"}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { blockHeadingTag, h, heading, href, nestedHeadingTag,
|
|
1
|
+
import { blockHeadingTag, h, heading, href, nestedHeadingTag, } from '@cogenta/theme-kit';
|
|
2
|
+
import { arrow, ordinal, section } from '../layout.js';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* B2B "capability card" register a consultancy or software vendor's
|
|
6
|
-
* services page uses, replacing the numbered ledger rows this block used to
|
|
7
|
-
* render (a plain list read as a table of contents, not as a services
|
|
8
|
-
* pitch a visitor scans in one pass).
|
|
4
|
+
* A numbered list of capabilities, ruled by hairlines: `01` to `06`, each
|
|
5
|
+
* row a name in the display serif and a short description beside it.
|
|
9
6
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
7
|
+
* This is how a consultancy presents its practices, and deliberately not a
|
|
8
|
+
* grid of identical cards with icon tiles. The block's own title holds the
|
|
9
|
+
* left four columns (and stays in view while the list scrolls past it on a
|
|
10
|
+
* wide screen); the list takes the right eight.
|
|
13
11
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
12
|
+
* `icon` is stored by contract B as a symbol name, and this theme chooses not
|
|
13
|
+
* to draw it: in a numbered, typographic list an icon is decoration, and the
|
|
14
|
+
* ordinal already does the work of marking each row.
|
|
15
|
+
*
|
|
16
|
+
* A row with a link is clickable as a whole, but the link itself stays on the
|
|
17
|
+
* item's title, so its accessible name is the practice's own name
|
|
18
|
+
* (WCAG 2.4.4).
|
|
17
19
|
*/
|
|
18
|
-
function renderItem(item, ctx, tag) {
|
|
20
|
+
function renderItem(item, index, ctx, tag) {
|
|
19
21
|
const title = item.link === undefined
|
|
20
|
-
? heading(tag, { class: 'cg-
|
|
21
|
-
: heading(tag, { class: 'cg-
|
|
22
|
-
return h('li', { class: 'cg-
|
|
23
|
-
? null
|
|
24
|
-
: h('span', { class: 'cg-service__icon', 'data-icon': item.icon, 'aria-hidden': 'true' }, renderIcon(item.icon)), title, item.text === undefined ? null : h('p', { class: 'cg-service__text' }, item.text));
|
|
22
|
+
? heading(tag, { class: 'cg-practice__title' }, item.title)
|
|
23
|
+
: heading(tag, { class: 'cg-practice__title' }, h('a', { class: 'cg-practice__link', href: href(ctx, item.link) }, item.title, arrow()));
|
|
24
|
+
return h('li', { class: 'cg-practice', 'data-linked': item.link === undefined ? undefined : 'true' }, h('span', { class: 'cg-practice__index', 'aria-hidden': 'true' }, ordinal(index)), title, item.text === undefined ? null : h('p', { class: 'cg-practice__text' }, item.text));
|
|
25
25
|
}
|
|
26
26
|
export function renderFeatureGrid(block, ctx) {
|
|
27
27
|
const hasTitle = block.title !== undefined;
|
|
28
28
|
const itemTag = nestedHeadingTag('featureGrid', hasTitle);
|
|
29
|
-
return
|
|
30
|
-
? heading(blockHeadingTag('featureGrid') ?? 'h2', { class: 'cg-
|
|
31
|
-
: null, h('
|
|
29
|
+
return section('section', 'featureGrid', 'cg-practices', { 'data-titled': hasTitle ? 'true' : 'false' }, 'div', hasTitle
|
|
30
|
+
? h('div', { class: 'cg-head cg-head--aside' }, heading(blockHeadingTag('featureGrid') ?? 'h2', { class: 'cg-head__title', 'data-field': 'title' }, block.title ?? ''))
|
|
31
|
+
: null, h('ol', { class: 'cg-practices__items' }, block.items.map((item, index) => renderItem(item, index, ctx, itemTag))));
|
|
32
32
|
}
|
|
33
33
|
//# sourceMappingURL=feature-grid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-grid.js","sourceRoot":"","sources":["../../../../src/render/blocks/feature-grid.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAGf,CAAC,EACD,OAAO,EACP,IAAI,EACJ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"feature-grid.js","sourceRoot":"","sources":["../../../../src/render/blocks/feature-grid.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAGf,CAAC,EACD,OAAO,EACP,IAAI,EACJ,gBAAgB,GAEjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,UAAU,CACjB,IAAiB,EACjB,KAAa,EACb,GAAkB,EAClB,GAAe;IAEf,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,KAAK,SAAS;QACrB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC;QAC3D,CAAC,CAAC,OAAO,CACL,GAAG,EACH,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAC/B,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CACxF,CAAA;IACP,OAAO,CAAC,CACN,IAAI,EACJ,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,EACrF,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EACjF,KAAK,EACL,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CACnF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAuB,EAAE,GAAkB;IAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAA;IAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IACzD,OAAO,OAAO,CACZ,SAAS,EACT,aAAa,EACb,cAAc,EACd,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,EAC9C,KAAK,EACL,QAAQ;QACN,CAAC,CAAC,CAAC,CACC,KAAK,EACL,EAAE,KAAK,EAAE,wBAAwB,EAAE,EACnC,OAAO,CACL,eAAe,CAAC,aAAa,CAAC,IAAI,IAAI,EACtC,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,EAClD,KAAK,CAAC,KAAK,IAAI,EAAE,CAClB,CACF;QACH,CAAC,CAAC,IAAI,EACR,CAAC,CACC,IAAI,EACJ,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAChC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CACxE,CACF,CAAA;AACH,CAAC"}
|