@hraness/design-kit 0.33.0 → 0.34.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.md +5 -3
- package/dist/{chunk-95mpmzc9.js → chunk-nwpcjm48.js} +19 -5
- package/dist/react/index.js +5 -1
- package/dist/react/server.js +1 -1
- package/dist/stylex-manifest.json +1 -1
- package/dist/stylex.css +0 -4
- package/package.json +1 -1
- package/portfolio-inventory.json +1 -1
- package/src/product-marketing.css +3 -1
- package/src/react/design-gallery.tsx +4 -2
- package/src/react/product-marketing.stylex.ts +8 -4
- package/src/react/product-marketing.tsx +16 -4
package/dist/stylex.css
CHANGED
|
@@ -2431,10 +2431,6 @@
|
|
|
2431
2431
|
grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr));
|
|
2432
2432
|
}
|
|
2433
2433
|
|
|
2434
|
-
.x1p797x9 {
|
|
2435
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
|
|
2436
|
-
}
|
|
2437
|
-
|
|
2438
2434
|
.x1vfedg7 {
|
|
2439
2435
|
grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
|
|
2440
2436
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hraness/design-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"description": "React components and CSS for Hraness apps and product sites: application shells, marketing sections, charts, themes, effects, and syntax highlighting. Built on @hraness/ui.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
package/portfolio-inventory.json
CHANGED
|
@@ -1513,11 +1513,13 @@ html:has(:is(.hraness-marketing-header, .hraness-marketing-header-surface):not([
|
|
|
1513
1513
|
|
|
1514
1514
|
.hraness-marketing-interface-grid,
|
|
1515
1515
|
.hraness-marketing-trust-grid {
|
|
1516
|
+
--hraness-marketing-grid-columns: initial;
|
|
1517
|
+
--_hraness-marketing-grid-track: max(16rem, calc((100% - (var(--hraness-marketing-grid-columns) - 1) * 1rem) / var(--hraness-marketing-grid-columns)));
|
|
1516
1518
|
display: grid;
|
|
1517
1519
|
align-items: stretch;
|
|
1518
1520
|
margin: 0;
|
|
1519
1521
|
gap: 1rem;
|
|
1520
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
|
|
1522
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--_hraness-marketing-grid-track, 16rem)), 1fr));
|
|
1521
1523
|
}
|
|
1522
1524
|
|
|
1523
1525
|
.hraness-marketing-interface-grid > *,
|
|
@@ -436,7 +436,7 @@ export function DesignSystemGallery({
|
|
|
436
436
|
<MarketingSectionLabel size="body">Reference</MarketingSectionLabel>
|
|
437
437
|
<p>Consumer-owned content can include <a href="#gallery-install">links</a> and <code>inline code</code>.</p>
|
|
438
438
|
</MarketingSection>
|
|
439
|
-
<MarketingInterfaceGrid heading="Choose your interface." headingId="gallery-marketing-interfaces" headingLevel={3} label="Interfaces" interfaces={[
|
|
439
|
+
<MarketingInterfaceGrid columns={2} heading="Choose your interface." headingId="gallery-marketing-interfaces" headingLevel={3} label="Interfaces" interfaces={[
|
|
440
440
|
{ label: "CLI", summary: "Run a named job.", example: <MarketingCodeBlock code="relay run job-01" /> },
|
|
441
441
|
{ label: "SDK", summary: "Use typed application code." },
|
|
442
442
|
]} />
|
|
@@ -444,7 +444,7 @@ export function DesignSystemGallery({
|
|
|
444
444
|
{ art: <svg aria-hidden="true" viewBox="0 0 24 24" width="24" height="24"><circle cx="12" cy="12" r="8" /></svg>, href: "#marketing", title: "Grok 4.7", meta: "First observed 21 September 2026." },
|
|
445
445
|
{ art: <svg aria-hidden="true" viewBox="0 0 24 24" width="24" height="24"><rect x="4" y="4" width="16" height="16" rx="4" /></svg>, href: "#gallery-install", title: "GLM 5.3 Flash", meta: "First observed 26 August 2026. Early DeepSWE coverage on OpenRouter." },
|
|
446
446
|
]} />
|
|
447
|
-
<MarketingTrustBoundary heading="What leaves your machine." headingId="gallery-marketing-trust" headingLevel={3} label="Boundary" items={[
|
|
447
|
+
<MarketingTrustBoundary columns={2} heading="What leaves your machine." headingId="gallery-marketing-trust" headingLevel={3} label="Boundary" items={[
|
|
448
448
|
{ label: "Stays local", detail: "Source files and credentials." },
|
|
449
449
|
{ label: "Shared", detail: "Only the logs you choose to sync." },
|
|
450
450
|
]} />
|
|
@@ -520,6 +520,7 @@ export function DesignSystemGallery({
|
|
|
520
520
|
]}
|
|
521
521
|
/>
|
|
522
522
|
<MarketingRelated
|
|
523
|
+
columns={2}
|
|
523
524
|
groups={[
|
|
524
525
|
{
|
|
525
526
|
heading: "Sibling tools",
|
|
@@ -538,6 +539,7 @@ export function DesignSystemGallery({
|
|
|
538
539
|
],
|
|
539
540
|
},
|
|
540
541
|
{
|
|
542
|
+
columns: 1,
|
|
541
543
|
heading: "Shared infrastructure",
|
|
542
544
|
headingId: "design-gallery-related-infra",
|
|
543
545
|
items: [
|
|
@@ -2174,18 +2174,22 @@ export const marketingStyles = stylex.create({
|
|
|
2174
2174
|
"line-height": "1.5"
|
|
2175
2175
|
},
|
|
2176
2176
|
"interface_grid": {
|
|
2177
|
+
"--hraness-marketing-grid-columns": "initial",
|
|
2178
|
+
"--_hraness-marketing-grid-track": "max(16rem, calc((100% - (var(--hraness-marketing-grid-columns) - 1) * 1rem) / var(--hraness-marketing-grid-columns)))",
|
|
2177
2179
|
"display": "grid",
|
|
2178
2180
|
"align-items": "stretch",
|
|
2179
2181
|
"margin": "0",
|
|
2180
2182
|
"gap": "1rem",
|
|
2181
|
-
"grid-template-columns": "repeat(auto-fit, minmax(min(100%, 16rem), 1fr))"
|
|
2183
|
+
"grid-template-columns": "repeat(auto-fit, minmax(min(100%, var(--_hraness-marketing-grid-track, 16rem)), 1fr))"
|
|
2182
2184
|
},
|
|
2183
2185
|
"trust_grid": {
|
|
2186
|
+
"--hraness-marketing-grid-columns": "initial",
|
|
2187
|
+
"--_hraness-marketing-grid-track": "max(16rem, calc((100% - (var(--hraness-marketing-grid-columns) - 1) * 1rem) / var(--hraness-marketing-grid-columns)))",
|
|
2184
2188
|
"display": "grid",
|
|
2185
2189
|
"align-items": "stretch",
|
|
2186
2190
|
"margin": "0",
|
|
2187
2191
|
"gap": "1rem",
|
|
2188
|
-
"grid-template-columns": "repeat(auto-fit, minmax(min(100%, 16rem), 1fr))"
|
|
2192
|
+
"grid-template-columns": "repeat(auto-fit, minmax(min(100%, var(--_hraness-marketing-grid-track, 16rem)), 1fr))"
|
|
2189
2193
|
},
|
|
2190
2194
|
"interface": {
|
|
2191
2195
|
"display": "grid",
|
|
@@ -4458,7 +4462,7 @@ const gridColumns = {
|
|
|
4458
4462
|
|
|
4459
4463
|
/** Explicit finite columns compose static atoms, including the existing media rules. */
|
|
4460
4464
|
export function marketingColumnClassName(
|
|
4461
|
-
hook: "hraness-marketing-facts" | "hraness-marketing-pillars" | "hraness-marketing-stats__list" | "hraness-marketing-card-row" | "hraness-marketing-primitives__list",
|
|
4465
|
+
hook: "hraness-marketing-facts" | "hraness-marketing-pillars" | "hraness-marketing-stats__list" | "hraness-marketing-card-row" | "hraness-marketing-primitives__list" | "hraness-marketing-interface-grid" | "hraness-marketing-trust-grid",
|
|
4462
4466
|
caller: string | undefined,
|
|
4463
4467
|
columns: MarketingColumnCount | undefined,
|
|
4464
4468
|
): string {
|
|
@@ -4467,7 +4471,7 @@ export function marketingColumnClassName(
|
|
|
4467
4471
|
}
|
|
4468
4472
|
const columnRecipe = columns === undefined ? undefined
|
|
4469
4473
|
: (hook === "hraness-marketing-pillars" ? pillarColumns
|
|
4470
|
-
: hook === "hraness-marketing-card-row" || hook === "hraness-marketing-primitives__list" ? gridColumns
|
|
4474
|
+
: hook === "hraness-marketing-card-row" || hook === "hraness-marketing-primitives__list" || hook === "hraness-marketing-interface-grid" || hook === "hraness-marketing-trust-grid" ? gridColumns
|
|
4471
4475
|
: factColumns)[columns];
|
|
4472
4476
|
return [hook, stylex.props(recipes[hook].default, columnRecipe).className, caller]
|
|
4473
4477
|
.filter((value) => value !== undefined && value.length > 0).join(" ");
|
|
@@ -1148,6 +1148,7 @@ export interface MarketingInterface {
|
|
|
1148
1148
|
|
|
1149
1149
|
export function MarketingInterfaceGrid({
|
|
1150
1150
|
className,
|
|
1151
|
+
columns,
|
|
1151
1152
|
heading,
|
|
1152
1153
|
headingId,
|
|
1153
1154
|
headingLevel = 2,
|
|
@@ -1157,6 +1158,8 @@ export function MarketingInterfaceGrid({
|
|
|
1157
1158
|
summary,
|
|
1158
1159
|
}: Readonly<{
|
|
1159
1160
|
className?: string;
|
|
1161
|
+
/** Maximum columns; cards wrap within the available container width. */
|
|
1162
|
+
columns?: MarketingColumnCount;
|
|
1160
1163
|
heading: string;
|
|
1161
1164
|
headingId: string;
|
|
1162
1165
|
headingLevel?: MarketingHeadingLevel;
|
|
@@ -1173,7 +1176,7 @@ export function MarketingInterfaceGrid({
|
|
|
1173
1176
|
id={id}
|
|
1174
1177
|
>
|
|
1175
1178
|
<MarketingCollectionHeader {...{ heading, headingId, headingLevel, label, summary }} prefix="interfaces" />
|
|
1176
|
-
<div className={
|
|
1179
|
+
<div className={marketingColumnClassName("hraness-marketing-interface-grid", undefined, columns)}>
|
|
1177
1180
|
{interfaces.map((entry) => (
|
|
1178
1181
|
<article className={classNames("hraness-marketing-interface")} key={entry.label}>
|
|
1179
1182
|
<Heading
|
|
@@ -1198,6 +1201,7 @@ export interface MarketingTrustItem {
|
|
|
1198
1201
|
|
|
1199
1202
|
export function MarketingTrustBoundary({
|
|
1200
1203
|
className,
|
|
1204
|
+
columns,
|
|
1201
1205
|
heading,
|
|
1202
1206
|
headingId,
|
|
1203
1207
|
headingLevel = 2,
|
|
@@ -1207,6 +1211,8 @@ export function MarketingTrustBoundary({
|
|
|
1207
1211
|
summary,
|
|
1208
1212
|
}: Readonly<{
|
|
1209
1213
|
className?: string;
|
|
1214
|
+
/** Maximum columns; cards wrap within the available container width. */
|
|
1215
|
+
columns?: MarketingColumnCount;
|
|
1210
1216
|
heading: string;
|
|
1211
1217
|
headingId: string;
|
|
1212
1218
|
headingLevel?: MarketingHeadingLevel;
|
|
@@ -1223,7 +1229,7 @@ export function MarketingTrustBoundary({
|
|
|
1223
1229
|
id={id}
|
|
1224
1230
|
>
|
|
1225
1231
|
<MarketingCollectionHeader {...{ heading, headingId, headingLevel, label, summary }} prefix="trust" />
|
|
1226
|
-
<dl className={
|
|
1232
|
+
<dl className={marketingColumnClassName("hraness-marketing-trust-grid", undefined, columns)}>
|
|
1227
1233
|
{items.map((item) => (
|
|
1228
1234
|
<div className={classNames("hraness-marketing-trust-item")} key={item.label}>
|
|
1229
1235
|
<dt className={classNames("hraness-marketing-trust-item__label")}>{item.label}</dt>
|
|
@@ -1497,6 +1503,8 @@ export interface MarketingRelatedProduct {
|
|
|
1497
1503
|
}
|
|
1498
1504
|
|
|
1499
1505
|
export interface MarketingRelatedGroup {
|
|
1506
|
+
/** Maximum columns for this group, overriding the section default. */
|
|
1507
|
+
readonly columns?: MarketingColumnCount;
|
|
1500
1508
|
/** Heading naming this tier of siblings, rendered one level below the section heading. */
|
|
1501
1509
|
readonly heading: string;
|
|
1502
1510
|
readonly headingId: string;
|
|
@@ -1539,6 +1547,7 @@ type MarketingRelatedBody =
|
|
|
1539
1547
|
/** Linked cards for sibling products: each shows the product's mark, name, and one-line description. */
|
|
1540
1548
|
export function MarketingRelated({
|
|
1541
1549
|
className,
|
|
1550
|
+
columns,
|
|
1542
1551
|
heading,
|
|
1543
1552
|
headingId,
|
|
1544
1553
|
headingLevel = 2,
|
|
@@ -1549,6 +1558,8 @@ export function MarketingRelated({
|
|
|
1549
1558
|
summary,
|
|
1550
1559
|
}: Readonly<{
|
|
1551
1560
|
className?: string;
|
|
1561
|
+
/** Maximum columns for each card row; a group can override it. */
|
|
1562
|
+
columns?: MarketingColumnCount;
|
|
1552
1563
|
heading: string;
|
|
1553
1564
|
headingId: string;
|
|
1554
1565
|
headingLevel?: MarketingHeadingLevel;
|
|
@@ -1557,6 +1568,7 @@ export function MarketingRelated({
|
|
|
1557
1568
|
summary?: string;
|
|
1558
1569
|
}> &
|
|
1559
1570
|
MarketingRelatedBody) {
|
|
1571
|
+
const defaultColumnProps = columns === undefined ? {} : { columns };
|
|
1560
1572
|
return (
|
|
1561
1573
|
<section
|
|
1562
1574
|
aria-labelledby={headingId}
|
|
@@ -1574,7 +1586,7 @@ export function MarketingRelated({
|
|
|
1574
1586
|
/>
|
|
1575
1587
|
{groups === undefined
|
|
1576
1588
|
? (
|
|
1577
|
-
<MarketingCardRow>
|
|
1589
|
+
<MarketingCardRow {...defaultColumnProps}>
|
|
1578
1590
|
<MarketingRelatedCards items={items} level={childHeadingLevel(headingLevel)} />
|
|
1579
1591
|
</MarketingCardRow>
|
|
1580
1592
|
)
|
|
@@ -1592,7 +1604,7 @@ export function MarketingRelated({
|
|
|
1592
1604
|
? null
|
|
1593
1605
|
: <p className={classNames("hraness-marketing-related__group-summary")}>{group.summary}</p>}
|
|
1594
1606
|
</div>
|
|
1595
|
-
<MarketingCardRow ariaLabel={group.heading}>
|
|
1607
|
+
<MarketingCardRow ariaLabel={group.heading} {...(group.columns === undefined ? defaultColumnProps : { columns: group.columns })}>
|
|
1596
1608
|
<MarketingRelatedCards items={group.items} level={childHeadingLevel(childHeadingLevel(headingLevel))} />
|
|
1597
1609
|
</MarketingCardRow>
|
|
1598
1610
|
</div>
|