@hraness/design-kit 0.34.0 → 0.35.1

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.
Files changed (50) hide show
  1. package/AGENT_SETUP.md +4 -0
  2. package/ARTICLE_COPY.md +12 -6
  3. package/README.md +20 -2
  4. package/dist/{chunk-nwpcjm48.js → chunk-6bfr0g23.js} +1115 -441
  5. package/dist/{chunk-h4k7yv6x.js → chunk-6ts4955n.js} +36 -36
  6. package/dist/chunk-gmea6p0d.js +13 -0
  7. package/dist/{chunk-mr1vdcjq.js → chunk-tzd7177a.js} +142 -82
  8. package/dist/index.js +5 -1
  9. package/dist/mockups/client.js +50 -15
  10. package/dist/portfolio.js +586 -85
  11. package/dist/react/index.js +169 -105
  12. package/dist/react/platform-install.js +3 -2
  13. package/dist/react/server.js +17 -3
  14. package/dist/stylex-manifest.json +1 -1
  15. package/dist/stylex.css +376 -58
  16. package/package.json +16 -3
  17. package/portfolio-inventory.json +1 -1
  18. package/src/diagrams.ts +11 -0
  19. package/src/index.ts +2 -0
  20. package/src/marketing-comparison.css +162 -0
  21. package/src/marketing-diagram.css +24 -0
  22. package/src/mockups/client.tsx +25 -17
  23. package/src/mockups.css +19 -0
  24. package/src/plain-publication.css +9 -6
  25. package/src/portfolio.generated.json +578 -86
  26. package/src/portfolio.generated.ts +578 -86
  27. package/src/portfolio.ts +73 -0
  28. package/src/product-marketing-foundation.css +29 -0
  29. package/src/product-marketing.css +133 -38
  30. package/src/react/agent-setup-prompt.stylex.ts +5 -25
  31. package/src/react/agent-setup-prompt.tsx +9 -18
  32. package/src/react/article.tsx +2 -2
  33. package/src/react/design-gallery.tsx +34 -6
  34. package/src/react/index.ts +3 -0
  35. package/src/react/marketing-account.stylex.ts +74 -0
  36. package/src/react/marketing-account.tsx +69 -0
  37. package/src/react/marketing-comparison.stylex.ts +24 -0
  38. package/src/react/marketing-comparison.tsx +73 -0
  39. package/src/react/marketing-diagram.stylex.ts +8 -0
  40. package/src/react/marketing-diagram.tsx +33 -0
  41. package/src/react/platform-install.stylex.ts +9 -37
  42. package/src/react/platform-install.tsx +17 -24
  43. package/src/react/product-marketing.stylex.ts +138 -109
  44. package/src/react/product-marketing.tsx +69 -43
  45. package/src/react/server.ts +3 -0
  46. package/src/react/setup-copy-button.stylex.ts +39 -0
  47. package/src/react/setup-copy-button.tsx +20 -0
  48. package/src/styles.css +2 -0
  49. package/src/typography.css +32 -0
  50. /package/dist/{chunk-4d79eskk.js → chunk-c80g58j1.js} +0 -0
@@ -0,0 +1,20 @@
1
+ import { setupCopyButtonClassName as cx } from "./setup-copy-button.stylex.js";
2
+
3
+ /** Presentation only: each setup composition retains its clipboard and recovery behavior. */
4
+ export function SetupCopyButton({ className, iconClassName, onCopy, state, subject, failedLabel = "Copy failed" }: Readonly<{
5
+ className?: string;
6
+ iconClassName?: string;
7
+ onCopy: () => void;
8
+ state: "idle" | "copying" | "copied" | "failed";
9
+ subject: string;
10
+ failedLabel?: string;
11
+ }>) {
12
+ return (
13
+ <button aria-busy={state === "copying" || undefined} aria-label={`${state === "copied" ? "Copied" : "Copy"} ${subject}`} className={cx("button", className)} data-copy-state={state} disabled={state === "copying"} onClick={onCopy} type="button">
14
+ <svg aria-hidden="true" className={cx("icon", iconClassName)} fill="none" focusable="false" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} viewBox="0 0 24 24">
15
+ {state === "copied" ? <path d="M5 12.5l4.5 4.5L19 7.5" /> : <><rect height="12" rx="2" width="12" x="8" y="8" /><path d="M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2" /></>}
16
+ </svg>
17
+ <span>{state === "copied" ? "Copied" : state === "copying" ? "Copying" : state === "failed" ? failedLabel : "Copy"}</span>
18
+ </button>
19
+ );
20
+ }
package/src/styles.css CHANGED
@@ -12,6 +12,8 @@
12
12
  @import "./charts.css";
13
13
  @import "./plain-site.css";
14
14
  @import "./plain-publication.css";
15
+ @import "./marketing-comparison.css";
16
+ @import "./marketing-diagram.css";
15
17
  @import "./reading.css";
16
18
  @import "./status-page.css";
17
19
  @import "./product-marketing.css";
@@ -11,6 +11,12 @@
11
11
  * face. */
12
12
  @layer base {
13
13
  :root {
14
+ /* Shared studio category accents. Text names retain the foreground role. */
15
+ --hraness-studio-rose: light-dark(#b03a5b, #f39cb5);
16
+ --hraness-studio-indigo: light-dark(#4a4fbf, #a9adff);
17
+ --hraness-studio-amber: light-dark(#9a5a00, #f0b659);
18
+ --hraness-studio-emerald: light-dark(#1d7a55, #71d2a6);
19
+
14
20
  --hraness-type-reading-size: clamp(1rem, .95rem + .25vw, 1.0625rem);
15
21
  --hraness-type-reading-leading: 1.7;
16
22
  --hraness-type-reading-measure: 70ch;
@@ -84,3 +90,29 @@
84
90
  -webkit-text-fill-color: currentColor;
85
91
  }
86
92
  }
93
+
94
+ /* Prose and secondary text actions share a quiet, persistent link affordance. */
95
+ .hraness-text-link,
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])),
98
+ .plain-page :where(p, li, dd, dt, figcaption) a:not([role="button"], [data-emphasis], [data-foil]) {
99
+ text-decoration-line: underline;
100
+ text-decoration-style: dotted;
101
+ text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
102
+ text-decoration-thickness: 1px;
103
+ text-underline-offset: 0.2em;
104
+ }
105
+
106
+ .hraness-text-link:is(:hover, :focus-visible),
107
+ .hraness-prose :where(a:not([role="button"], [data-emphasis], [data-foil])):is(:hover, :focus-visible),
108
+ .plain-page :where(p, li, dd, dt, figcaption) a:not([role="button"], [data-emphasis], [data-foil]):is(:hover, :focus-visible) {
109
+ text-decoration-color: currentColor;
110
+ }
111
+
112
+ @media (forced-colors: active) {
113
+ .hraness-text-link,
114
+ .hraness-prose :where(a),
115
+ .plain-page :where(p, li, dd, dt, figcaption) a {
116
+ text-decoration-color: LinkText;
117
+ }
118
+ }
File without changes