@hraness/design-kit 0.36.2 → 0.36.4
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/PALETTES.md +7 -5
- package/README.md +10 -2
- package/dist/react/index.js +30 -4
- package/dist/stylex-manifest.json +1 -1
- package/package.json +1 -1
- package/portfolio-inventory.json +1 -1
- package/src/palette-bridge.css +1 -1
- package/src/palette-system.css +5 -5
- package/src/plain-publication.css +5 -2
- package/src/react/design-gallery.tsx +6 -5
- package/src/typography.css +11 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hraness/design-kit",
|
|
3
|
-
"version": "0.36.
|
|
3
|
+
"version": "0.36.4",
|
|
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
package/src/palette-bridge.css
CHANGED
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
.hraness-palette.hraness-palette[data-palette],
|
|
102
102
|
:root[data-palette][data-theme],
|
|
103
103
|
[data-palette][data-theme],
|
|
104
|
-
:root[data-palette]:not([data-theme]),
|
|
104
|
+
:root[data-palette][data-palette]:not([data-theme]),
|
|
105
105
|
[data-palette]:not([data-theme]),
|
|
106
106
|
:root.hraness-palette.hraness-palette[data-theme],
|
|
107
107
|
.hraness-palette.hraness-palette[data-theme] {
|
package/src/palette-system.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Generated by scripts/generate-palettes.ts. System-first palette paint without JavaScript. */
|
|
2
|
-
:root[data-palette="catppuccin"]:not([data-theme]),
|
|
2
|
+
:root[data-palette][data-palette="catppuccin"]:not([data-theme]),
|
|
3
3
|
[data-palette="catppuccin"]:not([data-theme]) {
|
|
4
4
|
color-scheme: light dark;
|
|
5
5
|
--hraness-palette-background: light-dark(#eff1f5, #1e1e2e);
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
--hraness-palette-chart4: #f9e2af;
|
|
144
144
|
--hraness-palette-chart5: #cda9f7;
|
|
145
145
|
}
|
|
146
|
-
:root[data-palette="gruvbox"]:not([data-theme]),
|
|
146
|
+
:root[data-palette][data-palette="gruvbox"]:not([data-theme]),
|
|
147
147
|
[data-palette="gruvbox"]:not([data-theme]) {
|
|
148
148
|
color-scheme: light dark;
|
|
149
149
|
--hraness-palette-background: light-dark(#fbf1c7, #282828);
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
--hraness-palette-chart4: #fabd2f;
|
|
288
288
|
--hraness-palette-chart5: #e2aebc;
|
|
289
289
|
}
|
|
290
|
-
:root[data-palette="rose-pine"]:not([data-theme]),
|
|
290
|
+
:root[data-palette][data-palette="rose-pine"]:not([data-theme]),
|
|
291
291
|
[data-palette="rose-pine"]:not([data-theme]) {
|
|
292
292
|
color-scheme: light dark;
|
|
293
293
|
--hraness-palette-background: light-dark(#faf4ed, #191724);
|
|
@@ -431,7 +431,7 @@
|
|
|
431
431
|
--hraness-palette-chart4: #f6c177;
|
|
432
432
|
--hraness-palette-chart5: #c4a7e7;
|
|
433
433
|
}
|
|
434
|
-
:root[data-palette="tokyo-night"]:not([data-theme]),
|
|
434
|
+
:root[data-palette][data-palette="tokyo-night"]:not([data-theme]),
|
|
435
435
|
[data-palette="tokyo-night"]:not([data-theme]) {
|
|
436
436
|
color-scheme: light dark;
|
|
437
437
|
--hraness-palette-background: light-dark(#e1e2e7, #1a1b26);
|
|
@@ -575,7 +575,7 @@
|
|
|
575
575
|
--hraness-palette-chart4: #e0af68;
|
|
576
576
|
--hraness-palette-chart5: #bb9af7;
|
|
577
577
|
}
|
|
578
|
-
:root[data-palette="paper"]:not([data-theme]),
|
|
578
|
+
:root[data-palette][data-palette="paper"]:not([data-theme]),
|
|
579
579
|
[data-palette="paper"]:not([data-theme]) {
|
|
580
580
|
color-scheme: light dark;
|
|
581
581
|
--hraness-palette-background: light-dark(#f8f7f4, #12100f);
|
|
@@ -725,8 +725,10 @@
|
|
|
725
725
|
text-underline-offset: 0.18em;
|
|
726
726
|
}
|
|
727
727
|
|
|
728
|
-
|
|
729
|
-
|
|
728
|
+
@media (forced-colors: none) {
|
|
729
|
+
.plain-site.plain-publication.plain-publication--embedded .plain-publication__article-body a:is(:hover, :focus-visible) {
|
|
730
|
+
text-decoration-color: currentColor;
|
|
731
|
+
}
|
|
730
732
|
}
|
|
731
733
|
|
|
732
734
|
.plain-site.plain-publication.plain-publication--embedded .plain-publication__article-body pre {
|
|
@@ -952,6 +954,7 @@
|
|
|
952
954
|
background: Canvas;
|
|
953
955
|
}
|
|
954
956
|
|
|
957
|
+
.plain-site.plain-publication.plain-publication--embedded .plain-publication__byline a,
|
|
955
958
|
.plain-site.plain-publication.plain-publication--embedded .plain-publication__article-body a {
|
|
956
959
|
text-decoration-color: LinkText;
|
|
957
960
|
}
|
|
@@ -286,14 +286,14 @@ export function DesignSystemGallery({
|
|
|
286
286
|
<section className="design-gallery__section" id="paper-theme">
|
|
287
287
|
<h2>Paper theme</h2>
|
|
288
288
|
<p>Import paper-theme.css to share warm neutral colors and compact typography without replacing layouts or saved appearance choices.</p>
|
|
289
|
-
<div className="design-gallery__paper" data-hraness-theme="paper" data-theme="light">
|
|
289
|
+
<div className="design-gallery__paper" data-hraness-theme="paper" data-palette="paper" data-theme="light">
|
|
290
290
|
<MarketingSiteHeader brand="Light paper" brandHref="#paper-theme" links={[{ href: "#foundation", label: "Foundation" }]} sticky={false} />
|
|
291
291
|
<TopBar surface="glass" title="Glass application header" data-gallery-glass-top-bar="" />
|
|
292
292
|
<h3>Light paper</h3><p>Headers blur scrolling content and become opaque when reduced transparency is preferred.</p>
|
|
293
293
|
<p><a className="design-gallery__paper-link" href="#foundation">Read about the foundation</a></p>
|
|
294
294
|
<Button variant="primary">Create note</Button>
|
|
295
295
|
</div>
|
|
296
|
-
<div className="design-gallery__paper" data-hraness-theme="paper" data-theme="dark">
|
|
296
|
+
<div className="design-gallery__paper" data-hraness-theme="paper" data-palette="paper" data-theme="dark">
|
|
297
297
|
<MarketingSiteHeader brand="Dark paper" brandHref="#paper-theme" links={[{ href: "#foundation", label: "Foundation" }]} sticky={false} />
|
|
298
298
|
<TopBar surface="glass" title="Glass application header" data-gallery-glass-top-bar="" />
|
|
299
299
|
<h3>Dark paper</h3><p>The same header treatment follows an explicit dark preference.</p>
|
|
@@ -593,7 +593,7 @@ export function DesignSystemGallery({
|
|
|
593
593
|
{ label: "Bring your model", values: [true, { status: "optional", label: "On some plans" }] },
|
|
594
594
|
{ label: "Local storage", values: [true, { status: "depends", detail: "Check the provider's export format." }] },
|
|
595
595
|
{ label: "Cost", values: ["Free locally", "Subscription"] },
|
|
596
|
-
]} note=
|
|
596
|
+
]} note={<span>An illustrative comparison. Product pages supply current facts and <a href="#articles">sources</a>.</span>} />
|
|
597
597
|
<MarketingAccount id="gallery-account" summary="Keep your preferences and shared work together.">
|
|
598
598
|
<MarketingAccountActions primary={{ href: "#gallery-account", label: "Create account" }} signIn={{ href: "#gallery-account" }} />
|
|
599
599
|
</MarketingAccount>
|
|
@@ -695,7 +695,7 @@ export function DesignSystemGallery({
|
|
|
695
695
|
]}
|
|
696
696
|
/>
|
|
697
697
|
)}
|
|
698
|
-
author={{ kind: "organization", name: "Hraness" }}
|
|
698
|
+
author={{ kind: "organization", name: "Hraness", href: "https://hraness.com" }}
|
|
699
699
|
dek="Relay replays a failed webhook from the stored request body, so the retry sends the same bytes the provider signed."
|
|
700
700
|
eyebrow="Technique"
|
|
701
701
|
heading="Replaying webhooks without breaking signatures"
|
|
@@ -714,7 +714,7 @@ export function DesignSystemGallery({
|
|
|
714
714
|
>
|
|
715
715
|
<h2 id="gallery-article-problem">The problem</h2>
|
|
716
716
|
<p>
|
|
717
|
-
A provider signs the exact request body
|
|
717
|
+
A provider signs the <a href="#gallery-article-approach">exact request body</a>. Parsing the JSON and serializing it again changes
|
|
718
718
|
whitespace and key order, and the signature check then fails on every retry.
|
|
719
719
|
</p>
|
|
720
720
|
<ArticleCallout label="Limit" tone="limit">
|
|
@@ -758,6 +758,7 @@ export function DesignSystemGallery({
|
|
|
758
758
|
},
|
|
759
759
|
]}
|
|
760
760
|
/>
|
|
761
|
+
<p className="plain-publication__provenance"><a href="#gallery-article-title">Read the article</a></p>
|
|
761
762
|
<div className="hraness-prose">
|
|
762
763
|
<h3>Shared reading scale</h3>
|
|
763
764
|
<p>
|
package/src/typography.css
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
/* Prose and secondary text actions share a quiet, persistent link affordance. */
|
|
95
95
|
.hraness-text-link,
|
|
96
96
|
.hraness-prose :where(a:not([role="button"], [data-emphasis], [data-foil])),
|
|
97
|
-
.plain-publication__article-body :where(a:not([role="button"], [data-emphasis], [data-foil])),
|
|
97
|
+
:is(.plain-publication__article-body, .plain-publication__sources, .plain-publication__provenance, .hraness-marketing-comparison__note) :where(a:not([role="button"], [data-emphasis], [data-foil])),
|
|
98
98
|
.plain-page :where(p, li, dd, dt, figcaption) a:not([role="button"], [data-emphasis], [data-foil]) {
|
|
99
99
|
text-decoration-line: underline;
|
|
100
100
|
text-decoration-style: dotted;
|
|
@@ -103,16 +103,20 @@
|
|
|
103
103
|
text-underline-offset: 0.2em;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
|
|
107
|
-
.hraness-
|
|
108
|
-
.
|
|
109
|
-
|
|
106
|
+
@media (forced-colors: none) {
|
|
107
|
+
.hraness-text-link:is(:hover, :focus-visible),
|
|
108
|
+
.hraness-prose :where(a:not([role="button"], [data-emphasis], [data-foil])):is(:hover, :focus-visible),
|
|
109
|
+
:is(.plain-publication__article-body, .plain-publication__sources, .plain-publication__provenance, .hraness-marketing-comparison__note) :where(a:not([role="button"], [data-emphasis], [data-foil])):is(:hover, :focus-visible),
|
|
110
|
+
.plain-page :where(p, li, dd, dt, figcaption) a:not([role="button"], [data-emphasis], [data-foil]):is(:hover, :focus-visible) {
|
|
111
|
+
text-decoration-color: currentColor;
|
|
112
|
+
}
|
|
110
113
|
}
|
|
111
114
|
|
|
112
115
|
@media (forced-colors: active) {
|
|
113
116
|
.hraness-text-link,
|
|
114
|
-
.hraness-prose :where(a),
|
|
115
|
-
.plain-
|
|
117
|
+
.hraness-prose :where(a:not([role="button"], [data-emphasis], [data-foil])),
|
|
118
|
+
:is(.plain-publication__article-body, .plain-publication__sources, .plain-publication__provenance, .hraness-marketing-comparison__note) :where(a:not([role="button"], [data-emphasis], [data-foil])),
|
|
119
|
+
.plain-page :where(p, li, dd, dt, figcaption) a:not([role="button"], [data-emphasis], [data-foil]) {
|
|
116
120
|
text-decoration-color: LinkText;
|
|
117
121
|
}
|
|
118
122
|
}
|