@devslab/site-kit 0.5.2 → 0.7.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/README.ko.md +24 -0
- package/README.md +24 -0
- package/dist/chrome.d.ts +30 -1
- package/dist/chrome.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/layouts.d.ts +3 -0
- package/dist/layouts.d.ts.map +1 -1
- package/dist/sections.d.ts +70 -0
- package/dist/sections.d.ts.map +1 -0
- package/dist/solid.js +278 -122
- package/dist/solid.js.map +1 -1
- package/dist/solid.server.js +241 -46
- package/dist/solid.server.js.map +1 -1
- package/package.json +7 -4
- package/site-sections.css +65 -0
- package/src/core/locales.d.mts +2 -0
- package/src/core/locales.mjs +20 -5
- package/styles.css +11 -0
package/README.ko.md
CHANGED
|
@@ -17,6 +17,30 @@ claim leaf가 검증된 사실 레지스트리를 참조하도록 강제한다.
|
|
|
17
17
|
기존 environment-only 출력은 유지되며, 선택적 `policies`로 검색 인덱싱,
|
|
18
18
|
인용 crawler, 모델 학습 crawler를 각각 제어할 수 있다.
|
|
19
19
|
|
|
20
|
+
## 섹션
|
|
21
|
+
|
|
22
|
+
가족 랜딩 페이지를 위한 상태 없는 원시 컴포넌트 여섯 개, VisionLinq에서 추출했다. `@devslab/site-kit/solid`에서 import한다; 스타일시트는 `styles.css` 안에 들어 있다. 이 원시 컴포넌트들은 full-bleed — 각자 자기 내부 너비를 갖는다 — 라서 이걸로 구성한 페이지는 `<MarketingShell mainWidth="bleed">` 안에서 렌더해야 한다; 그렇지 않으면 셸의 기본 `<main>` 인셋이 이중으로 안쪽 여백을 주고 `tone="band"`가 박스형 사각형이 되어 버린다.
|
|
23
|
+
|
|
24
|
+
| 원시 컴포넌트 | 렌더 |
|
|
25
|
+
|---|---|
|
|
26
|
+
| `SectionBlock` | `<section>` + 콘텐츠 셸; `tone="band"`는 배경을 토큰 한 단계 낮춘다 |
|
|
27
|
+
| `SectionHead` | 모노 zero-padded `index`(장식용), `h2`, 선택적 lede |
|
|
28
|
+
| `HeroSplit` | 카피 6 / aside 5; aside `figure`에는 높이 규칙이 없다 — 각자의 장면에서 고쳐야 한다 |
|
|
29
|
+
| `StepFlow` | 단계 `<ol>`, **원형 숫자 1 2 3** — 섹션 인덱스와 다른 글리프 체계 |
|
|
30
|
+
| `FeatureRows` | 선택적 `dds-badge`가 있는 헤어라인 행; 카드 그리드는 절대 아님 |
|
|
31
|
+
| `PricingNote` | 문단 블록 하나 + 액션 하나 |
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
<SectionBlock id="how" labelledBy="how-title">
|
|
35
|
+
<SectionHead index="01" titleId="how-title" title={t("how.title")} lede={t("how.lede")} />
|
|
36
|
+
<StepFlow label={t("how.title")} steps={[{ title: t("how.1.title"), body: t("how.1.body") }, …]} />
|
|
37
|
+
</SectionBlock>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 로케일 부분집합
|
|
41
|
+
|
|
42
|
+
`defineLocaleRegistry({ only: ["ko", "en", "ja"] })`는 그 가족 로케일들만 남긴다(가족 순서, `extra`보다 먼저). 이 레지스트리를 `SiteHeader localeRegistry`와 `validateCatalogs(…, { registry })`에 넘긴다; 부분집합 밖 로케일을 요청하는 방문자는 `defaultLocale`로 귀결된다. `defaultLocale` 자체가 `only` 안에 있어야 한다; 별칭의 대상이 부분집합 밖에 있으면(예: `zh` → `zh-TW`인데 `zh-HK`만 남긴 경우) `undefined`로 귀결되어 `defaultLocale`로 떨어질 뿐, 다른 문자 체계로 넘어가는 일은 없다.
|
|
43
|
+
|
|
20
44
|
## 제품 로케일
|
|
21
45
|
|
|
22
46
|
`LOCALES`는 **가족 목록**이다 — devslab.kr이 마케팅하는 14개 언어이자 모든
|
package/README.md
CHANGED
|
@@ -17,6 +17,30 @@ still references the verified-fact registry. `buildRobots` keeps its legacy
|
|
|
17
17
|
environment-only output, while an optional `policies` object can independently
|
|
18
18
|
control search indexing, citation crawlers, and model-training crawlers.
|
|
19
19
|
|
|
20
|
+
## Sections
|
|
21
|
+
|
|
22
|
+
Six stateless primitives for a family landing page, extracted from VisionLinq. Import from `@devslab/site-kit/solid`; the stylesheet ships inside `styles.css`. The primitives are full-bleed — each carries its own inner width — so a page built from them should render inside `<MarketingShell mainWidth="bleed">`; the shell's default `<main>` inset would otherwise double-inset them and turn `tone="band"` into a boxed rectangle.
|
|
23
|
+
|
|
24
|
+
| Primitive | Renders |
|
|
25
|
+
|---|---|
|
|
26
|
+
| `SectionBlock` | `<section>` + content shell; `tone="band"` steps the background down one token |
|
|
27
|
+
| `SectionHead` | mono zero-padded `index` (decorative), `h2`, optional lede |
|
|
28
|
+
| `HeroSplit` | copy 6 / aside 5; the aside `figure` has no height rule — fix it in your scene |
|
|
29
|
+
| `StepFlow` | `<ol>` of steps with **ring numerals 1 2 3** — a different glyph system from the section index |
|
|
30
|
+
| `FeatureRows` | hairline rows with an optional `dds-badge`; never a card grid |
|
|
31
|
+
| `PricingNote` | one paragraph block + one action |
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
<SectionBlock id="how" labelledBy="how-title">
|
|
35
|
+
<SectionHead index="01" titleId="how-title" title={t("how.title")} lede={t("how.lede")} />
|
|
36
|
+
<StepFlow label={t("how.title")} steps={[{ title: t("how.1.title"), body: t("how.1.body") }, …]} />
|
|
37
|
+
</SectionBlock>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Locale subsets
|
|
41
|
+
|
|
42
|
+
`defineLocaleRegistry({ only: ["ko", "en", "ja"] })` keeps only those family locales (family order, before any `extra`). Pass the registry to `SiteHeader localeRegistry` and to `validateCatalogs(…, { registry })`; a visitor asking for a locale outside the subset resolves to your `defaultLocale`. `defaultLocale` must itself be inside `only`; an alias whose target falls outside the subset (e.g. `zh` → `zh-TW` when only `zh-HK` is kept) resolves to `undefined` and so falls through to `defaultLocale`, never to another script.
|
|
43
|
+
|
|
20
44
|
## Product locales
|
|
21
45
|
|
|
22
46
|
`LOCALES` is the family list — the fourteen languages devslab.kr markets in,
|
package/dist/chrome.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type JSX } from "solid-js";
|
|
2
2
|
import { type LocaleMenuProps, type LocaleMenuVariant } from "./locale-menu";
|
|
3
|
-
import type
|
|
3
|
+
import { type LocaleRegistry } from "../core/locales.mjs";
|
|
4
4
|
import type { LocaleState, SiteBrand, SiteLink, SiteMessages, ThemePreference } from "./types";
|
|
5
5
|
export type { LocaleMenuProps };
|
|
6
6
|
export interface ThemeToggleProps {
|
|
@@ -32,7 +32,36 @@ export interface SiteFooterProps {
|
|
|
32
32
|
brand: SiteBrand;
|
|
33
33
|
links: SiteLink[];
|
|
34
34
|
copyright: string;
|
|
35
|
+
/** Wraps the copyright in a link — the family site, usually. */
|
|
36
|
+
copyrightHref?: string;
|
|
35
37
|
messages: SiteMessages;
|
|
38
|
+
/**
|
|
39
|
+
* The language row. Omit it and no row is rendered: a product whose header
|
|
40
|
+
* already offers every language may not want a second copy of the list.
|
|
41
|
+
*/
|
|
42
|
+
locale?: LocaleState;
|
|
43
|
+
/** The languages the row lists. Defaults to the family's fourteen. */
|
|
44
|
+
localeRegistry?: LocaleRegistry<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Called with the code the reader picked, before the browser follows the
|
|
47
|
+
* link — for a product that remembers the choice in a cookie.
|
|
48
|
+
*/
|
|
49
|
+
onLocaleSelect?: (locale: string) => void;
|
|
50
|
+
/** Links after the brand name, middot-separated: the family line, the operator. */
|
|
51
|
+
family?: SiteLink[];
|
|
36
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* The family footer: a language row, then the brand beside its family links,
|
|
55
|
+
* then the page's links and the copyright.
|
|
56
|
+
*
|
|
57
|
+
* Every product wrote this by hand. VisionLinq, BookLinq and TraceLinq each
|
|
58
|
+
* carried their own copy with a comment saying the kit's footer "takes only a
|
|
59
|
+
* flat link list; extending it is a dds release this page would then wait on" —
|
|
60
|
+
* three copies and three notes naming the same missing release. Their CSS had
|
|
61
|
+
* already converged byte-for-byte. This is that release.
|
|
62
|
+
*
|
|
63
|
+
* Additive: a caller that passes only brand/links/copyright/messages gets the
|
|
64
|
+
* same single row it got before, plus its brand mark if it set one.
|
|
65
|
+
*/
|
|
37
66
|
export declare function SiteFooter(props: SiteFooterProps): JSX.Element;
|
|
38
67
|
//# sourceMappingURL=chrome.d.ts.map
|
package/dist/chrome.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/solid/chrome.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/solid/chrome.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAkB,KAAK,cAAc,EAAmB,MAAM,qBAAqB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/F,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eA0ClD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACnD,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eA2BhD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sEAAsE;IACtE,cAAc,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,mFAAmF;IACnF,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eA4ChD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ export { SiteFooter, SiteHeader, ThemeToggle, type SiteFooterProps, type SiteHea
|
|
|
3
3
|
export { ErrorLayout, LegalLayout, MarketingShell, NotFoundLayout, StatusBanner, type ErrorLayoutProps, type LegalLayoutProps, type MarketingShellProps, type NotFoundLayoutProps, type StatusBannerProps } from "./layouts";
|
|
4
4
|
export { RequestAccessForm, type RequestAccessFormProps, type RequestAccessMessages } from "./request-access";
|
|
5
5
|
export { OssProductMark, type OssProductMarkProps } from "./oss-product-mark";
|
|
6
|
+
export { SectionBlock, SectionHead, HeroSplit, StepFlow, FeatureRows, PricingNote, type SectionBlockProps, type SectionHeadProps, type HeroSplitProps, type StepFlowProps, type StepFlowStep, type FeatureRow, type FeatureRowsProps, type PricingNoteProps } from "./sections";
|
|
6
7
|
export type { LocaleState, SiteBrand, SiteLink, SiteMessages, ThemePreference } from "./types";
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/solid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAClI,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7N,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/solid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAClI,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7N,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChR,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/layouts.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ export interface MarketingShellProps {
|
|
|
7
7
|
footer: SiteFooterProps;
|
|
8
8
|
messages: SiteMessages;
|
|
9
9
|
children: JSX.Element;
|
|
10
|
+
/** "bleed" removes the shell's max-width/inset from <main> — for pages composed from
|
|
11
|
+
* full-bleed section primitives, each of which carries its own inner width. Default "shell". */
|
|
12
|
+
mainWidth?: "shell" | "bleed";
|
|
10
13
|
}
|
|
11
14
|
export declare function MarketingShell(props: MarketingShellProps): JSX.Element;
|
|
12
15
|
export interface LegalLayoutProps {
|
package/dist/layouts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../src/solid/layouts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAA0B,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../src/solid/layouts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAA0B,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;IACtB;oGACgG;IAChG,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,eAGxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eAElD;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;CACpE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,eAIpD;AAED,MAAM,WAAW,mBAAmB;IAAG,QAAQ,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE;AACzG,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,eAExD;AAED,MAAM,WAAW,gBAAgB;IAAG,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE;AAC3H,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eAElD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type JSX } from "solid-js";
|
|
2
|
+
/**
|
|
3
|
+
* Section primitives — the rhythm of a family landing page.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from VisionLinq's landing (apps/web/src/components/landing/
|
|
6
|
+
* sections.tsx + styles/landing.css) so AskLinq's web-next can compose the
|
|
7
|
+
* same page shape. Stateless; every class lives in site-sections.css;
|
|
8
|
+
* colour comes from --dds-* tokens, so light/dark needs no rule here.
|
|
9
|
+
*
|
|
10
|
+
* Two glyph systems, deliberately different (owner, 2026-09-05):
|
|
11
|
+
* - SectionHead.index — the SECTION's number: mono, zero-padded "01".
|
|
12
|
+
* - StepFlow markers — a SEQUENCE inside a section: ring numerals "1".
|
|
13
|
+
* A step never renders "01"; that would put two levels in one voice.
|
|
14
|
+
*/
|
|
15
|
+
export interface SectionBlockProps {
|
|
16
|
+
id: string;
|
|
17
|
+
labelledBy: string;
|
|
18
|
+
/** `band` steps the background down one token (bg-subtle) — a decision, not a tint. */
|
|
19
|
+
tone?: "default" | "band";
|
|
20
|
+
children: JSX.Element;
|
|
21
|
+
}
|
|
22
|
+
export declare function SectionBlock(props: SectionBlockProps): JSX.Element;
|
|
23
|
+
export interface SectionHeadProps {
|
|
24
|
+
/** Mono, zero-padded index ("01"). Decorative — hidden from assistive tech. */
|
|
25
|
+
index: string;
|
|
26
|
+
title: string;
|
|
27
|
+
titleId: string;
|
|
28
|
+
lede?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function SectionHead(props: SectionHeadProps): JSX.Element;
|
|
31
|
+
export interface HeroSplitProps {
|
|
32
|
+
id?: string;
|
|
33
|
+
eyebrow?: string;
|
|
34
|
+
title: string;
|
|
35
|
+
titleId: string;
|
|
36
|
+
lede: string;
|
|
37
|
+
actions: JSX.Element;
|
|
38
|
+
/** The product's own scene. Its height is the consumer's decision — fix it there if the scene swaps panels. */
|
|
39
|
+
aside: JSX.Element;
|
|
40
|
+
asideLabel: string;
|
|
41
|
+
}
|
|
42
|
+
export declare function HeroSplit(props: HeroSplitProps): JSX.Element;
|
|
43
|
+
export interface StepFlowStep {
|
|
44
|
+
title: string;
|
|
45
|
+
body: string;
|
|
46
|
+
}
|
|
47
|
+
export interface StepFlowProps {
|
|
48
|
+
steps: ReadonlyArray<StepFlowStep>;
|
|
49
|
+
/** Accessible name for the list — pass the section title's words, localized. */
|
|
50
|
+
label?: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function StepFlow(props: StepFlowProps): JSX.Element;
|
|
53
|
+
export interface FeatureRow {
|
|
54
|
+
title: string;
|
|
55
|
+
body: string;
|
|
56
|
+
badge?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface FeatureRowsProps {
|
|
59
|
+
rows: ReadonlyArray<FeatureRow>;
|
|
60
|
+
label?: string;
|
|
61
|
+
}
|
|
62
|
+
/** Hairline rows — a card grid is the thing this primitive exists to replace. */
|
|
63
|
+
export declare function FeatureRows(props: FeatureRowsProps): JSX.Element;
|
|
64
|
+
export interface PricingNoteProps {
|
|
65
|
+
children: JSX.Element;
|
|
66
|
+
action: JSX.Element;
|
|
67
|
+
}
|
|
68
|
+
/** One paragraph block, one action. No table, no tiers — a note, not a pricing page. */
|
|
69
|
+
export declare function PricingNote(props: PricingNoteProps): JSX.Element;
|
|
70
|
+
//# sourceMappingURL=sections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../src/solid/sections.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,eAMpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eAQlD;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB,+GAA+G;IAC/G,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,eAc9C;AAED,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAE7D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,eAY5C;AAED,MAAM,WAAW,UAAU;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAE3E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eAclD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC;CACrB;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eAOlD"}
|