@cloudgrid-io/ui 0.33.0 → 0.35.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.
Files changed (126) hide show
  1. package/README.md +25 -0
  2. package/dist/badge/css-live.d.ts +7 -4
  3. package/dist/badge/css-live.d.ts.map +1 -1
  4. package/dist/badge/css-live.js +9 -6
  5. package/dist/badge/css-live.js.map +1 -1
  6. package/dist/badge/palette.d.ts +1 -1
  7. package/dist/badge/palette.d.ts.map +1 -1
  8. package/dist/badge/palette.js +2 -1
  9. package/dist/badge/palette.js.map +1 -1
  10. package/dist/blocks/bar-chart.d.ts +97 -0
  11. package/dist/blocks/bar-chart.d.ts.map +1 -0
  12. package/dist/blocks/bar-chart.js +25 -0
  13. package/dist/blocks/bar-chart.js.map +1 -0
  14. package/dist/blocks/chart-parts.d.ts +101 -0
  15. package/dist/blocks/chart-parts.d.ts.map +1 -0
  16. package/dist/blocks/chart-parts.js +96 -0
  17. package/dist/blocks/chart-parts.js.map +1 -0
  18. package/dist/blocks/coming-soon-tag.d.ts +34 -0
  19. package/dist/blocks/coming-soon-tag.d.ts.map +1 -0
  20. package/dist/blocks/coming-soon-tag.js +37 -0
  21. package/dist/blocks/coming-soon-tag.js.map +1 -0
  22. package/dist/blocks/disabled-button.d.ts +43 -0
  23. package/dist/blocks/disabled-button.d.ts.map +1 -0
  24. package/dist/blocks/disabled-button.js +50 -0
  25. package/dist/blocks/disabled-button.js.map +1 -0
  26. package/dist/blocks/entity-card.d.ts.map +1 -1
  27. package/dist/blocks/entity-card.js +3 -1
  28. package/dist/blocks/entity-card.js.map +1 -1
  29. package/dist/blocks/full-screen-button.d.ts +9 -0
  30. package/dist/blocks/full-screen-button.d.ts.map +1 -0
  31. package/dist/blocks/full-screen-button.js +51 -0
  32. package/dist/blocks/full-screen-button.js.map +1 -0
  33. package/dist/blocks/icons.d.ts +30 -0
  34. package/dist/blocks/icons.d.ts.map +1 -1
  35. package/dist/blocks/icons.js +30 -0
  36. package/dist/blocks/icons.js.map +1 -1
  37. package/dist/blocks/invite-popup.d.ts +156 -0
  38. package/dist/blocks/invite-popup.d.ts.map +1 -0
  39. package/dist/blocks/invite-popup.js +99 -0
  40. package/dist/blocks/invite-popup.js.map +1 -0
  41. package/dist/blocks/meter.d.ts +57 -0
  42. package/dist/blocks/meter.d.ts.map +1 -0
  43. package/dist/blocks/meter.js +19 -0
  44. package/dist/blocks/meter.js.map +1 -0
  45. package/dist/blocks/notice.d.ts +87 -0
  46. package/dist/blocks/notice.d.ts.map +1 -0
  47. package/dist/blocks/notice.js +26 -0
  48. package/dist/blocks/notice.js.map +1 -0
  49. package/dist/blocks/pager.d.ts +76 -0
  50. package/dist/blocks/pager.d.ts.map +1 -0
  51. package/dist/blocks/pager.js +86 -0
  52. package/dist/blocks/pager.js.map +1 -0
  53. package/dist/blocks/phosphor-marks.d.ts +20 -0
  54. package/dist/blocks/phosphor-marks.d.ts.map +1 -1
  55. package/dist/blocks/phosphor-marks.js +30 -0
  56. package/dist/blocks/phosphor-marks.js.map +1 -1
  57. package/dist/blocks/ranked-list.d.ts +67 -0
  58. package/dist/blocks/ranked-list.d.ts.map +1 -0
  59. package/dist/blocks/ranked-list.js +32 -0
  60. package/dist/blocks/ranked-list.js.map +1 -0
  61. package/dist/blocks/side-nav.d.ts.map +1 -1
  62. package/dist/blocks/side-nav.js +3 -1
  63. package/dist/blocks/side-nav.js.map +1 -1
  64. package/dist/blocks/sign-in-options.d.ts.map +1 -1
  65. package/dist/blocks/sign-in-options.js +3 -1
  66. package/dist/blocks/sign-in-options.js.map +1 -1
  67. package/dist/blocks/stacked-bar.d.ts +64 -0
  68. package/dist/blocks/stacked-bar.d.ts.map +1 -0
  69. package/dist/blocks/stacked-bar.js +18 -0
  70. package/dist/blocks/stacked-bar.js.map +1 -0
  71. package/dist/blocks/stat-tile.d.ts +42 -1
  72. package/dist/blocks/stat-tile.d.ts.map +1 -1
  73. package/dist/blocks/stat-tile.js +23 -4
  74. package/dist/blocks/stat-tile.js.map +1 -1
  75. package/dist/blocks/tab-bar.d.ts.map +1 -1
  76. package/dist/blocks/tab-bar.js +3 -1
  77. package/dist/blocks/tab-bar.js.map +1 -1
  78. package/dist/blocks/timeline.d.ts +53 -0
  79. package/dist/blocks/timeline.d.ts.map +1 -0
  80. package/dist/blocks/timeline.js +18 -0
  81. package/dist/blocks/timeline.js.map +1 -0
  82. package/dist/blocks/tool-setup.d.ts.map +1 -1
  83. package/dist/blocks/tool-setup.js +3 -1
  84. package/dist/blocks/tool-setup.js.map +1 -1
  85. package/dist/blocks/trend.d.ts +33 -0
  86. package/dist/blocks/trend.d.ts.map +1 -0
  87. package/dist/blocks/trend.js +13 -0
  88. package/dist/blocks/trend.js.map +1 -0
  89. package/dist/claim-banner/css.d.ts +39 -0
  90. package/dist/claim-banner/css.d.ts.map +1 -0
  91. package/dist/claim-banner/css.js +87 -0
  92. package/dist/claim-banner/css.js.map +1 -0
  93. package/dist/claim-banner/index.d.ts +122 -0
  94. package/dist/claim-banner/index.d.ts.map +1 -0
  95. package/dist/claim-banner/index.js +135 -0
  96. package/dist/claim-banner/index.js.map +1 -0
  97. package/dist/docs.css +466 -0
  98. package/dist/expressive-code-palette.d.ts +5 -0
  99. package/dist/expressive-code-palette.d.ts.map +1 -0
  100. package/dist/expressive-code-palette.js +10 -0
  101. package/dist/expressive-code-palette.js.map +1 -0
  102. package/dist/expressive-code.d.ts +57 -0
  103. package/dist/expressive-code.d.ts.map +1 -0
  104. package/dist/expressive-code.js +101 -0
  105. package/dist/expressive-code.js.map +1 -0
  106. package/dist/index.d.ts +13 -0
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +13 -0
  109. package/dist/index.js.map +1 -1
  110. package/dist/tokens/base.json +13 -0
  111. package/dist/tokens/surface-ink.json +13 -0
  112. package/dist/tokens/surface-panel.json +13 -0
  113. package/dist/tokens.css +36 -0
  114. package/dist/tokens.json +6 -3
  115. package/dist/ui/card.d.ts +23 -2
  116. package/dist/ui/card.d.ts.map +1 -1
  117. package/dist/ui/card.js +16 -5
  118. package/dist/ui/card.js.map +1 -1
  119. package/dist/ui/drawer.d.ts +37 -6
  120. package/dist/ui/drawer.d.ts.map +1 -1
  121. package/dist/ui/drawer.js +31 -7
  122. package/dist/ui/drawer.js.map +1 -1
  123. package/dist/ui/input-group.d.ts.map +1 -1
  124. package/dist/ui/input-group.js +3 -1
  125. package/dist/ui/input-group.js.map +1 -1
  126. package/package.json +18 -3
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The code blocks of the docs site, as the library CodeBlock draws them. ui#341.
3
+ *
4
+ * Expressive Code renders every fenced block in the Starlight docs. This is its
5
+ * configuration, so the docs repo takes it in one line:
6
+ *
7
+ * import { cloudgridExpressiveCode } from "@cloudgrid-io/ui/expressive-code"
8
+ * starlight({ expressiveCode: cloudgridExpressiveCode, ... })
9
+ *
10
+ * MONOCHROME (founder, 2026-10-19), like CodeBlock: ink ground, every token in
11
+ * the on-code text, no syntax palette. The theme has no token rules at all, so
12
+ * Shiki gives every token the default foreground.
13
+ *
14
+ * TWO KINDS OF VALUE. Expressive Code paints through CSS, and every value it
15
+ * paints with here is a `var(--cg-*)` (`styleOverrides`), so a retune lands
16
+ * without touching this file. It also does colour arithmetic on its theme at
17
+ * build time (contrast, derived scrollbar and selection colours, the colour
18
+ * baked into each highlighted span), and that cannot read a custom property.
19
+ * Those values come from CODE_PALETTE, which scripts/build-expressive-code.mjs
20
+ * generates from tokens.css. Nothing here is a typed literal colour, and
21
+ * test/docs-preset.test.mjs holds it to that.
22
+ *
23
+ * PLAIN DATA. No functions, no class instances, no import from Expressive Code:
24
+ * Starlight serialises this config into a virtual module, and a theme object is
25
+ * accepted as-is (Expressive Code wraps it in ExpressiveCodeTheme itself).
26
+ *
27
+ * LIGHT ONLY. One theme, so Expressive Code emits no per-theme switch, and code
28
+ * is dark on a light page the way CodeBlock is everywhere.
29
+ *
30
+ * Measured against Expressive Code 0.44 (astro-expressive-code, via
31
+ * @astrojs/starlight 0.42.6).
32
+ */
33
+ /** A VS Code-style theme, the shape Expressive Code accepts as a theme object. */
34
+ export interface CodeTheme {
35
+ name: string;
36
+ type: "dark" | "light";
37
+ fg: string;
38
+ bg: string;
39
+ colors: Record<string, string>;
40
+ settings: Array<{
41
+ scope?: string[];
42
+ settings: Record<string, string>;
43
+ }>;
44
+ }
45
+ /** The subset of Expressive Code's options this export sets. */
46
+ export interface CloudgridExpressiveCodeOptions {
47
+ themes: CodeTheme[];
48
+ styleOverrides: Record<string, string | Record<string, string>>;
49
+ }
50
+ /** The monochrome code theme: one ground, one foreground, no token rules. */
51
+ export declare const cloudgridCodeTheme: CodeTheme;
52
+ /** Every value Expressive Code paints through CSS, as a library token. */
53
+ export declare const cloudgridCodeStyleOverrides: CloudgridExpressiveCodeOptions["styleOverrides"];
54
+ /** The whole configuration: `starlight({ expressiveCode: cloudgridExpressiveCode })`. */
55
+ export declare const cloudgridExpressiveCode: CloudgridExpressiveCodeOptions;
56
+ export default cloudgridExpressiveCode;
57
+ //# sourceMappingURL=expressive-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressive-code.d.ts","sourceRoot":"","sources":["../src/expressive-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,kFAAkF;AAClF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;CACxE;AAED,gEAAgE;AAChE,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,SAAS,EAAE,CAAA;IACnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAChE;AAED,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,SAahC,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,2BAA2B,EAAE,8BAA8B,CAAC,gBAAgB,CA4CxF,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,uBAAuB,EAAE,8BAGrC,CAAA;AAED,eAAe,uBAAuB,CAAA"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * The code blocks of the docs site, as the library CodeBlock draws them. ui#341.
3
+ *
4
+ * Expressive Code renders every fenced block in the Starlight docs. This is its
5
+ * configuration, so the docs repo takes it in one line:
6
+ *
7
+ * import { cloudgridExpressiveCode } from "@cloudgrid-io/ui/expressive-code"
8
+ * starlight({ expressiveCode: cloudgridExpressiveCode, ... })
9
+ *
10
+ * MONOCHROME (founder, 2026-10-19), like CodeBlock: ink ground, every token in
11
+ * the on-code text, no syntax palette. The theme has no token rules at all, so
12
+ * Shiki gives every token the default foreground.
13
+ *
14
+ * TWO KINDS OF VALUE. Expressive Code paints through CSS, and every value it
15
+ * paints with here is a `var(--cg-*)` (`styleOverrides`), so a retune lands
16
+ * without touching this file. It also does colour arithmetic on its theme at
17
+ * build time (contrast, derived scrollbar and selection colours, the colour
18
+ * baked into each highlighted span), and that cannot read a custom property.
19
+ * Those values come from CODE_PALETTE, which scripts/build-expressive-code.mjs
20
+ * generates from tokens.css. Nothing here is a typed literal colour, and
21
+ * test/docs-preset.test.mjs holds it to that.
22
+ *
23
+ * PLAIN DATA. No functions, no class instances, no import from Expressive Code:
24
+ * Starlight serialises this config into a virtual module, and a theme object is
25
+ * accepted as-is (Expressive Code wraps it in ExpressiveCodeTheme itself).
26
+ *
27
+ * LIGHT ONLY. One theme, so Expressive Code emits no per-theme switch, and code
28
+ * is dark on a light page the way CodeBlock is everywhere.
29
+ *
30
+ * Measured against Expressive Code 0.44 (astro-expressive-code, via
31
+ * @astrojs/starlight 0.42.6).
32
+ */
33
+ import { CODE_PALETTE } from "./expressive-code-palette.js";
34
+ /** The monochrome code theme: one ground, one foreground, no token rules. */
35
+ export const cloudgridCodeTheme = {
36
+ name: "cloudgrid",
37
+ type: "dark",
38
+ fg: CODE_PALETTE.foreground,
39
+ bg: CODE_PALETTE.background,
40
+ colors: {
41
+ "editor.background": CODE_PALETTE.background,
42
+ "editor.foreground": CODE_PALETTE.foreground,
43
+ "terminal.background": CODE_PALETTE.background,
44
+ "terminal.foreground": CODE_PALETTE.foreground,
45
+ },
46
+ // The default entry only. No scoped rules is what makes it monochrome.
47
+ settings: [{ settings: { foreground: CODE_PALETTE.foreground, background: CODE_PALETTE.background } }],
48
+ };
49
+ /** Every value Expressive Code paints through CSS, as a library token. */
50
+ export const cloudgridCodeStyleOverrides = {
51
+ // The frame: CodeBlock's corner on the ink ground, and no ring around it.
52
+ borderRadius: "var(--cg-radius-md)",
53
+ borderWidth: "var(--cg-border-width)",
54
+ borderColor: "var(--cg-surface-code)",
55
+ codeBackground: "var(--cg-surface-code)",
56
+ codeForeground: "var(--cg-text-on-code)",
57
+ codeFontFamily: "var(--cg-font-mono)",
58
+ codeFontSize: "var(--cg-mono-size)",
59
+ codeLineHeight: "var(--cg-mono-line)",
60
+ // CodeBlock's padding: py-5, px-6.
61
+ codePaddingBlock: "var(--cg-space-5)",
62
+ codePaddingInline: "var(--cg-space-6)",
63
+ uiFontFamily: "var(--cg-font-ui)",
64
+ uiFontSize: "var(--cg-body-14)",
65
+ // On ink the library's focus colour is the lime (`[data-cg-surface='ink']`
66
+ // sets --cg-border-accent to --cg-secondary); the purple measures about 2:1.
67
+ focusBorder: "var(--cg-secondary)",
68
+ frames: {
69
+ frameBoxShadowCssValue: "var(--cg-shadow-none)",
70
+ editorBackground: "var(--cg-surface-code)",
71
+ terminalBackground: "var(--cg-surface-code)",
72
+ // A titled frame and a terminal both keep their bar, on the same ink, so the
73
+ // block reads as one surface.
74
+ editorTabBarBackground: "var(--cg-surface-code)",
75
+ editorTabBarBorderColor: "var(--cg-surface-code)",
76
+ editorTabBarBorderBottomColor: "var(--cg-surface-code)",
77
+ editorActiveTabBackground: "var(--cg-surface-code)",
78
+ editorActiveTabForeground: "var(--cg-text-muted)",
79
+ editorActiveTabIndicatorTopColor: "var(--cg-surface-code)",
80
+ editorActiveTabIndicatorBottomColor: "var(--cg-surface-code)",
81
+ terminalTitlebarBackground: "var(--cg-surface-code)",
82
+ terminalTitlebarForeground: "var(--cg-text-muted)",
83
+ terminalTitlebarBorderBottomColor: "var(--cg-surface-code)",
84
+ // No dots colour: docs.css removes the window dots and the empty bar they
85
+ // sit in (founder, 2026-10-19), which Expressive Code has no setting for.
86
+ // The copy control, in the on-code text like everything else on ink.
87
+ inlineButtonForeground: "var(--cg-text-on-code)",
88
+ inlineButtonBackground: "var(--cg-text-on-code)",
89
+ inlineButtonBorder: "var(--cg-text-on-code)",
90
+ // The copy confirmation: the online state's text on its fill.
91
+ tooltipSuccessBackground: "var(--cg-online-fill)",
92
+ tooltipSuccessForeground: "var(--cg-online-strong)",
93
+ },
94
+ };
95
+ /** The whole configuration: `starlight({ expressiveCode: cloudgridExpressiveCode })`. */
96
+ export const cloudgridExpressiveCode = {
97
+ themes: [cloudgridCodeTheme],
98
+ styleOverrides: cloudgridCodeStyleOverrides,
99
+ };
100
+ export default cloudgridExpressiveCode;
101
+ //# sourceMappingURL=expressive-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressive-code.js","sourceRoot":"","sources":["../src/expressive-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAkB3D,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,YAAY,CAAC,UAAU;IAC3B,EAAE,EAAE,YAAY,CAAC,UAAU;IAC3B,MAAM,EAAE;QACN,mBAAmB,EAAE,YAAY,CAAC,UAAU;QAC5C,mBAAmB,EAAE,YAAY,CAAC,UAAU;QAC5C,qBAAqB,EAAE,YAAY,CAAC,UAAU;QAC9C,qBAAqB,EAAE,YAAY,CAAC,UAAU;KAC/C;IACD,uEAAuE;IACvE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;CACvG,CAAA;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,2BAA2B,GAAqD;IAC3F,0EAA0E;IAC1E,YAAY,EAAE,qBAAqB;IACnC,WAAW,EAAE,wBAAwB;IACrC,WAAW,EAAE,wBAAwB;IACrC,cAAc,EAAE,wBAAwB;IACxC,cAAc,EAAE,wBAAwB;IACxC,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,qBAAqB;IACnC,cAAc,EAAE,qBAAqB;IACrC,mCAAmC;IACnC,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,mBAAmB;IACjC,UAAU,EAAE,mBAAmB;IAC/B,2EAA2E;IAC3E,6EAA6E;IAC7E,WAAW,EAAE,qBAAqB;IAClC,MAAM,EAAE;QACN,sBAAsB,EAAE,uBAAuB;QAC/C,gBAAgB,EAAE,wBAAwB;QAC1C,kBAAkB,EAAE,wBAAwB;QAC5C,6EAA6E;QAC7E,8BAA8B;QAC9B,sBAAsB,EAAE,wBAAwB;QAChD,uBAAuB,EAAE,wBAAwB;QACjD,6BAA6B,EAAE,wBAAwB;QACvD,yBAAyB,EAAE,wBAAwB;QACnD,yBAAyB,EAAE,sBAAsB;QACjD,gCAAgC,EAAE,wBAAwB;QAC1D,mCAAmC,EAAE,wBAAwB;QAC7D,0BAA0B,EAAE,wBAAwB;QACpD,0BAA0B,EAAE,sBAAsB;QAClD,iCAAiC,EAAE,wBAAwB;QAC3D,0EAA0E;QAC1E,0EAA0E;QAC1E,qEAAqE;QACrE,sBAAsB,EAAE,wBAAwB;QAChD,sBAAsB,EAAE,wBAAwB;QAChD,kBAAkB,EAAE,wBAAwB;QAC5C,8DAA8D;QAC9D,wBAAwB,EAAE,uBAAuB;QACjD,wBAAwB,EAAE,yBAAyB;KACpD;CACF,CAAA;AAED,yFAAyF;AACzF,MAAM,CAAC,MAAM,uBAAuB,GAAmC;IACrE,MAAM,EAAE,CAAC,kBAAkB,CAAC;IAC5B,cAAc,EAAE,2BAA2B;CAC5C,CAAA;AAED,eAAe,uBAAuB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -28,14 +28,18 @@ export * from "./ui/textarea.js";
28
28
  export * from "./ui/tooltip.js";
29
29
  export * from "./blocks/agent-prompt.js";
30
30
  export * from "./blocks/avatar.js";
31
+ export * from "./blocks/bar-chart.js";
31
32
  export * from "./blocks/card-grid.js";
32
33
  export * from "./blocks/celebration.js";
34
+ export * from "./blocks/chart-parts.js";
33
35
  export * from "./blocks/cloudgrid-install.js";
36
+ export * from "./blocks/coming-soon-tag.js";
34
37
  export * from "./blocks/command-field.js";
35
38
  export * from "./blocks/compare-table.js";
36
39
  export * from "./blocks/confirm-delete-dialog.js";
37
40
  export * from "./blocks/creation-tile.js";
38
41
  export * from "./blocks/cta-banner.js";
42
+ export * from "./blocks/disabled-button.js";
39
43
  export * from "./blocks/drop-zone.js";
40
44
  export * from "./blocks/empty-creations.js";
41
45
  export * from "./blocks/entity-card.js";
@@ -45,31 +49,40 @@ export * from "./blocks/eyebrow.js";
45
49
  export * from "./blocks/expiry-notice.js";
46
50
  export * from "./blocks/feature-cells.js";
47
51
  export * from "./blocks/feed-post.js";
52
+ export * from "./blocks/full-screen-button.js";
48
53
  export * from "./blocks/hub-index.js";
49
54
  export * from "./blocks/install-content.js";
50
55
  export * from "./blocks/icons.js";
56
+ export * from "./blocks/invite-popup.js";
51
57
  export * from "./blocks/logo.js";
58
+ export * from "./blocks/meter.js";
59
+ export * from "./blocks/notice.js";
52
60
  export * from "./blocks/notification-row.js";
53
61
  export * from "./blocks/onboarding-question.js";
54
62
  export * from "./blocks/option-card.js";
55
63
  export * from "./blocks/page-heading.js";
64
+ export * from "./blocks/pager.js";
56
65
  export * from "./blocks/phosphor-marks.js";
57
66
  export * from "./blocks/pricing-tier-cards.js";
58
67
  export * from "./blocks/pricing-tiers.js";
59
68
  export * from "./blocks/prompt-block.js";
60
69
  export * from "./blocks/quote.js";
70
+ export * from "./blocks/ranked-list.js";
61
71
  export * from "./blocks/rich-text.js";
62
72
  export * from "./blocks/shelf.js";
63
73
  export * from "./blocks/showcase-scroll.js";
64
74
  export * from "./blocks/side-nav.js";
65
75
  export * from "./blocks/sign-in-options.js";
76
+ export * from "./blocks/stacked-bar.js";
66
77
  export * from "./blocks/stage-panel.js";
67
78
  export * from "./blocks/stat-tile.js";
68
79
  export * from "./blocks/step-item.js";
69
80
  export * from "./blocks/tab-bar.js";
81
+ export * from "./blocks/timeline.js";
70
82
  export * from "./blocks/token-specimen.js";
71
83
  export * from "./blocks/tool-logo.js";
72
84
  export * from "./blocks/tool-setup.js";
73
85
  export * from "./blocks/tool-marks.js";
86
+ export * from "./blocks/trend.js";
74
87
  export * from "./lib/cloudgrid-cn.js";
75
88
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAG/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAGtC,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAG/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AAGjC,cAAc,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -45,14 +45,18 @@ export * from "./ui/tooltip.js";
45
45
  // Composed blocks.
46
46
  export * from "./blocks/agent-prompt.js";
47
47
  export * from "./blocks/avatar.js";
48
+ export * from "./blocks/bar-chart.js";
48
49
  export * from "./blocks/card-grid.js";
49
50
  export * from "./blocks/celebration.js";
51
+ export * from "./blocks/chart-parts.js";
50
52
  export * from "./blocks/cloudgrid-install.js";
53
+ export * from "./blocks/coming-soon-tag.js";
51
54
  export * from "./blocks/command-field.js";
52
55
  export * from "./blocks/compare-table.js";
53
56
  export * from "./blocks/confirm-delete-dialog.js";
54
57
  export * from "./blocks/creation-tile.js";
55
58
  export * from "./blocks/cta-banner.js";
59
+ export * from "./blocks/disabled-button.js";
56
60
  export * from "./blocks/drop-zone.js";
57
61
  export * from "./blocks/empty-creations.js";
58
62
  export * from "./blocks/entity-card.js";
@@ -62,32 +66,41 @@ export * from "./blocks/eyebrow.js";
62
66
  export * from "./blocks/expiry-notice.js";
63
67
  export * from "./blocks/feature-cells.js";
64
68
  export * from "./blocks/feed-post.js";
69
+ export * from "./blocks/full-screen-button.js";
65
70
  export * from "./blocks/hub-index.js";
66
71
  export * from "./blocks/install-content.js";
67
72
  export * from "./blocks/icons.js";
73
+ export * from "./blocks/invite-popup.js";
68
74
  export * from "./blocks/logo.js";
75
+ export * from "./blocks/meter.js";
76
+ export * from "./blocks/notice.js";
69
77
  export * from "./blocks/notification-row.js";
70
78
  export * from "./blocks/onboarding-question.js";
71
79
  export * from "./blocks/option-card.js";
72
80
  export * from "./blocks/page-heading.js";
81
+ export * from "./blocks/pager.js";
73
82
  export * from "./blocks/phosphor-marks.js";
74
83
  export * from "./blocks/pricing-tier-cards.js";
75
84
  export * from "./blocks/pricing-tiers.js";
76
85
  export * from "./blocks/prompt-block.js";
77
86
  export * from "./blocks/quote.js";
87
+ export * from "./blocks/ranked-list.js";
78
88
  export * from "./blocks/rich-text.js";
79
89
  export * from "./blocks/shelf.js";
80
90
  export * from "./blocks/showcase-scroll.js";
81
91
  export * from "./blocks/side-nav.js";
82
92
  export * from "./blocks/sign-in-options.js";
93
+ export * from "./blocks/stacked-bar.js";
83
94
  export * from "./blocks/stage-panel.js";
84
95
  export * from "./blocks/stat-tile.js";
85
96
  export * from "./blocks/step-item.js";
86
97
  export * from "./blocks/tab-bar.js";
98
+ export * from "./blocks/timeline.js";
87
99
  export * from "./blocks/token-specimen.js";
88
100
  export * from "./blocks/tool-logo.js";
89
101
  export * from "./blocks/tool-setup.js";
90
102
  export * from "./blocks/tool-marks.js";
103
+ export * from "./blocks/trend.js";
91
104
  // The class-merge helper, which the components use and consumers may too.
92
105
  export * from "./lib/cloudgrid-cn.js";
93
106
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,4EAA4E;AAC5E,EAAE;AACF,kEAAkE;AAClE,8EAA8E;AAC9E,uEAAuE;AAEvE,cAAc;AACd,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAE/B,mBAAmB;AACnB,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAEtC,0EAA0E;AAC1E,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2021,5 +2021,18 @@
2021
2021
  }
2022
2022
  }
2023
2023
  }
2024
+ },
2025
+ "data": {
2026
+ "$description": "The colours a chart paints its data in, as distinct from the brand hues they come from (#332,\nfounder ruling 2026-10-19). A mark that carries a value must hold 3:1 against its ground (WCAG\n1.4.11), and the brand cyan does not on a light one:\n\n #60e9f0 on the card #ffffff : 1.46:1\n #60e9f0 on the page ground #f1f1f6 : 1.29:1\n\nSo data gets its own token, which flips per surface, and the brand cyan keeps its value\neverywhere else. The first series needs none: it is --cg-text-accent, which already flips\n(purple, white, lime).",
2027
+ "data-cyan": {
2028
+ "$value": "#0a959b",
2029
+ "$type": "color",
2030
+ "$description": "The second data series (StackedBar's Output part). The brand cyan's hue, walked down in OKLCH\nlightness (L 0.862 to 0.610, chroma 0.118 to 0.102 to stay in gamut, hue -160.1) until the\nlightest ground a chart sits on clears 3:1 with margin, the practice --cg-accent's note records:\n\n #0a959b on the card #ffffff : 3.63:1\n #0a959b on the page ground #f1f1f6 : 3.22:1\n #0a959b on --cg-neutral-50 #f4f6f8 : 3.35:1\n\nThe first passing step on that ray, #039ba1, cleared the page ground by 0.01; this one holds\n0.22. Inside the panel and ink scopes it is the brand cyan itself, which already clears\n(4.01:1 on #5a47f0, 10.92:1 on #222222). A data colour, never text.",
2031
+ "$extensions": {
2032
+ "io.cloudgrid": {
2033
+ "css": "--cg-data-cyan"
2034
+ }
2035
+ }
2036
+ }
2024
2037
  }
2025
2038
  }
@@ -359,5 +359,18 @@
359
359
  }
360
360
  }
361
361
  }
362
+ },
363
+ "data": {
364
+ "$description": "data: ink's answer is the brand cyan itself.",
365
+ "data-cyan": {
366
+ "$value": "{brand.tertiary}",
367
+ "$type": "color",
368
+ "$description": "The brand cyan: 10.92:1 on ink #222222.",
369
+ "$extensions": {
370
+ "io.cloudgrid": {
371
+ "css": "--cg-data-cyan"
372
+ }
373
+ }
374
+ }
362
375
  }
363
376
  }
@@ -345,5 +345,18 @@
345
345
  }
346
346
  }
347
347
  }
348
+ },
349
+ "data": {
350
+ "$description": "data: the panel's answer is the brand cyan itself.",
351
+ "data-cyan": {
352
+ "$value": "{brand.tertiary}",
353
+ "$type": "color",
354
+ "$description": "The brand cyan: 4.01:1 on the panel's #5a47f0, so the data shade is not needed here.",
355
+ "$extensions": {
356
+ "io.cloudgrid": {
357
+ "css": "--cg-data-cyan"
358
+ }
359
+ }
360
+ }
348
361
  }
349
362
  }
package/dist/tokens.css CHANGED
@@ -1597,6 +1597,31 @@
1597
1597
  "Secondary2 30" style, which is the nearest thing in the same set to the two
1598
1598
  above. Founder may veto (#196). */
1599
1599
  --cg-kind-agent: #d1c9ff;
1600
+
1601
+ /* ---- data ----
1602
+ The colours a chart paints its data in, as distinct from the brand hues they come from (#332,
1603
+ founder ruling 2026-10-19). A mark that carries a value must hold 3:1 against its ground (WCAG
1604
+ 1.4.11), and the brand cyan does not on a light one:
1605
+
1606
+ #60e9f0 on the card #ffffff : 1.46:1
1607
+ #60e9f0 on the page ground #f1f1f6 : 1.29:1
1608
+
1609
+ So data gets its own token, which flips per surface, and the brand cyan keeps its value
1610
+ everywhere else. The first series needs none: it is --cg-text-accent, which already flips
1611
+ (purple, white, lime). */
1612
+ /*
1613
+ The second data series (StackedBar's Output part). The brand cyan's hue, walked down in OKLCH
1614
+ lightness (L 0.862 to 0.610, chroma 0.118 to 0.102 to stay in gamut, hue -160.1) until the
1615
+ lightest ground a chart sits on clears 3:1 with margin, the practice --cg-accent's note records:
1616
+
1617
+ #0a959b on the card #ffffff : 3.63:1
1618
+ #0a959b on the page ground #f1f1f6 : 3.22:1
1619
+ #0a959b on --cg-neutral-50 #f4f6f8 : 3.35:1
1620
+
1621
+ The first passing step on that ray, #039ba1, cleared the page ground by 0.01; this one holds
1622
+ 0.22. Inside the panel and ink scopes it is the brand cyan itself, which already clears
1623
+ (4.01:1 on #5a47f0, 10.92:1 on #222222). A data colour, never text. */
1624
+ --cg-data-cyan: #0a959b;
1600
1625
  }
1601
1626
 
1602
1627
  [data-cg-surface='panel'] {
@@ -1715,6 +1740,12 @@
1715
1740
  than as a grey cast on it. */
1716
1741
  --cg-shadow-tile: 0 1px 2px rgba(24, 12, 110, 0.16), 0 6px 16px -4px rgba(24, 12, 110, 0.26);
1717
1742
  --cg-shadow-tile-hover: 0 2px 4px rgba(24, 12, 110, 0.18), 0 16px 32px -8px rgba(24, 12, 110, 0.42);
1743
+
1744
+ /* ---- data ----
1745
+ data: the panel's answer is the brand cyan itself. */
1746
+ /*
1747
+ The brand cyan: 4.01:1 on the panel's #5a47f0, so the data shade is not needed here. */
1748
+ --cg-data-cyan: var(--cg-tertiary);
1718
1749
  }
1719
1750
 
1720
1751
  [data-cg-surface='ink'] {
@@ -1812,4 +1843,9 @@
1812
1843
  does not inherit the panel's violet. */
1813
1844
  --cg-shadow-tile: var(--cg-shadow-card);
1814
1845
  --cg-shadow-tile-hover: var(--cg-shadow-hover);
1846
+
1847
+ /* ---- data ----
1848
+ data: ink's answer is the brand cyan itself. */
1849
+ /* The brand cyan: 10.92:1 on ink #222222. */
1850
+ --cg-data-cyan: var(--cg-tertiary);
1815
1851
  }
package/dist/tokens.json CHANGED
@@ -211,7 +211,8 @@
211
211
  "--cg-hover": "rgba(34, 34, 34, 0.045)",
212
212
  "--cg-kind-inspiration": "#fae4b3",
213
213
  "--cg-kind-app": "#dffbfc",
214
- "--cg-kind-agent": "#d1c9ff"
214
+ "--cg-kind-agent": "#d1c9ff",
215
+ "--cg-data-cyan": "#0a959b"
215
216
  },
216
217
  "panel": {
217
218
  "--cg-text-primary": "#ffffff",
@@ -249,7 +250,8 @@
249
250
  "--cg-danger-strong": "var(--cg-text-primary)",
250
251
  "--cg-hover": "rgba(255, 255, 255, 0.10)",
251
252
  "--cg-shadow-tile": "0 1px 2px rgba(24, 12, 110, 0.16), 0 6px 16px -4px rgba(24, 12, 110, 0.26)",
252
- "--cg-shadow-tile-hover": "0 2px 4px rgba(24, 12, 110, 0.18), 0 16px 32px -8px rgba(24, 12, 110, 0.42)"
253
+ "--cg-shadow-tile-hover": "0 2px 4px rgba(24, 12, 110, 0.18), 0 16px 32px -8px rgba(24, 12, 110, 0.42)",
254
+ "--cg-data-cyan": "var(--cg-tertiary)"
253
255
  },
254
256
  "ink": {
255
257
  "--cg-text-primary": "#ffffff",
@@ -289,7 +291,8 @@
289
291
  "--cg-danger-strong": "var(--cg-text-primary)",
290
292
  "--cg-hover": "rgba(255, 255, 255, 0.06)",
291
293
  "--cg-shadow-tile": "var(--cg-shadow-card)",
292
- "--cg-shadow-tile-hover": "var(--cg-shadow-hover)"
294
+ "--cg-shadow-tile-hover": "var(--cg-shadow-hover)",
295
+ "--cg-data-cyan": "var(--cg-tertiary)"
293
296
  }
294
297
  }
295
298
  }
package/dist/ui/card.d.ts CHANGED
@@ -1,9 +1,30 @@
1
1
  import * as React from "react";
2
- declare function Card({ className, size, ...props }: React.ComponentProps<"div"> & {
2
+ /**
3
+ * `example` (#334, Figma 10789:8587): the card shows illustrative values for a
4
+ * feature that is not built yet. Everything in `CardContent` is set in the
5
+ * strong muted rung (`--cg-text-muted-strong`); the header, and anything that
6
+ * paints its own colour (a chart's bars), is untouched. There is no "Example
7
+ * data" line, by founder ruling: the card says it is a preview with a
8
+ * `ComingSoonTag` in `CardAction`. A `StatTile` inside paints its own ink, so
9
+ * give it `example` too.
10
+ */
11
+ declare function Card({ className, size, example, ...props }: React.ComponentProps<"div"> & {
3
12
  size?: "default" | "sm";
13
+ example?: boolean;
4
14
  }): React.JSX.Element;
5
15
  declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
6
- declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
16
+ /**
17
+ * The title's face. `heading` (the default, unchanged) is `font-heading`, the
18
+ * display face, Tanker, which is capitals by design. `body` is the brand's
19
+ * running-text face (`font-body`, Space Grotesk) in whatever case the words
20
+ * are written, which is what the App page v2 frames draw ("Creation Details",
21
+ * "Most used by", "Views over time"; founder ruling 2026-10-19). Only the face
22
+ * changes; size, leading and weight are the title's own.
23
+ */
24
+ export type CardTitleFace = "heading" | "body";
25
+ declare function CardTitle({ face, className, ...props }: React.ComponentProps<"div"> & {
26
+ face?: CardTitleFace;
27
+ }): React.JSX.Element;
7
28
  declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
8
29
  declare function CardAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
9
30
  declare function CardContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,qBAY3D;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWtE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ5E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQxE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAA"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;;;GAQG;AACH,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAgB,EAChB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAa9E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,CAAA;AAE9C,iBAAS,SAAS,CAAC,EACjB,IAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,aAAa,CAAA;CAAE,qBAcxD;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ5E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQxE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAA"}
package/dist/ui/card.js CHANGED
@@ -1,14 +1,25 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { cn } from "../lib/cloudgrid-cn.js";
4
- function Card({ className, size = "default", ...props }) {
5
- return (_jsx("div", { "data-slot": "card", "data-size": size, className: cn("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-body-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", className), ...props }));
4
+ /**
5
+ * `example` (#334, Figma 10789:8587): the card shows illustrative values for a
6
+ * feature that is not built yet. Everything in `CardContent` is set in the
7
+ * strong muted rung (`--cg-text-muted-strong`); the header, and anything that
8
+ * paints its own colour (a chart's bars), is untouched. There is no "Example
9
+ * data" line, by founder ruling: the card says it is a preview with a
10
+ * `ComingSoonTag` in `CardAction`. A `StatTile` inside paints its own ink, so
11
+ * give it `example` too.
12
+ */
13
+ function Card({ className, size = "default", example, ...props }) {
14
+ return (_jsx("div", { "data-slot": "card", "data-size": size, "data-example": example ? "" : undefined, className: cn("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-body-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", className), ...props }));
6
15
  }
7
16
  function CardHeader({ className, ...props }) {
8
17
  return (_jsx("div", { "data-slot": "card-header", className: cn("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)", className), ...props }));
9
18
  }
10
- function CardTitle({ className, ...props }) {
11
- return (_jsx("div", { "data-slot": "card-title", className: cn("font-heading text-body-md leading-snug font-medium group-data-[size=sm]/card:text-body-sm", className), ...props }));
19
+ function CardTitle({ face = "heading", className, ...props }) {
20
+ return (_jsx("div", { "data-slot": "card-title", "data-face": face === "body" ? "body" : undefined, className: cn(face === "body"
21
+ ? "font-body text-body-md leading-snug font-medium group-data-[size=sm]/card:text-body-sm"
22
+ : "font-heading text-body-md leading-snug font-medium group-data-[size=sm]/card:text-body-sm", className), ...props }));
12
23
  }
13
24
  function CardDescription({ className, ...props }) {
14
25
  return (_jsx("div", { "data-slot": "card-description", className: cn("text-body-sm text-muted-foreground", className), ...props }));
@@ -17,7 +28,7 @@ function CardAction({ className, ...props }) {
17
28
  return (_jsx("div", { "data-slot": "card-action", className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className), ...props }));
18
29
  }
19
30
  function CardContent({ className, ...props }) {
20
- return (_jsx("div", { "data-slot": "card-content", className: cn("px-(--card-spacing)", className), ...props }));
31
+ return (_jsx("div", { "data-slot": "card-content", className: cn("px-(--card-spacing) group-data-example/card:text-faint-strong", className), ...props }));
21
32
  }
22
33
  function CardFooter({ className, ...props }) {
23
34
  return (_jsx("div", { "data-slot": "card-footer", className: cn("flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)", className), ...props }));
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/ui/card.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,SAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EACkD;IAC1D,OAAO,CACL,2BACY,MAAM,eACL,IAAI,EACf,SAAS,EAAE,EAAE,CACX,2ZAA2Z,EAC3Z,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,wPAAwP,EACxP,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACrE,OAAO,CACL,2BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,2FAA2F,EAC3F,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IAC3E,OAAO,CACL,2BACY,kBAAkB,EAC5B,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,gEAAgE,EAChE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,2BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAC3C,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,wEAAwE,EACxE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAA"}
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/ui/card.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC;;;;;;;;GAQG;AACH,SAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,OAAO,EACP,GAAG,KAAK,EACqE;IAC7E,OAAO,CACL,2BACY,MAAM,eACL,IAAI,kBACD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EACtC,SAAS,EAAE,EAAE,CACX,2ZAA2Z,EAC3Z,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,wPAAwP,EACxP,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAYD,SAAS,SAAS,CAAC,EACjB,IAAI,GAAG,SAAS,EAChB,SAAS,EACT,GAAG,KAAK,EAC+C;IACvD,OAAO,CACL,2BACY,YAAY,eACX,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC/C,SAAS,EAAE,EAAE,CACX,IAAI,KAAK,MAAM;YACb,CAAC,CAAC,wFAAwF;YAC1F,CAAC,CAAC,2FAA2F,EAC/F,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IAC3E,OAAO,CACL,2BACY,kBAAkB,EAC5B,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,gEAAgE,EAChE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,2BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,+DAA+D,EAAE,SAAS,CAAC,KACrF,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,wEAAwE,EACxE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAA"}
@@ -50,9 +50,19 @@ import { type VariantProps } from "class-variance-authority";
50
50
  * three of the five shipped drawers, `max-w-lg` on the newest. #694's own frame
51
51
  * is 525 of 1600, which is `lg` to the nearest rung.
52
52
  *
53
- * There is deliberately no third rung. Two values cover every frame and every
54
- * shipped copy, and a wider one with nothing behind it would be a worker
55
- * inventing a brand decision.
53
+ * There was deliberately no third rung until a frame needed one: a wider one
54
+ * with nothing behind it would have been a worker inventing a brand decision.
55
+ *
56
+ * xl 1152px max-w-6xl
57
+ *
58
+ * The App page v2 side panel (#331, Figma 10789:8587, founder-approved
59
+ * 2026-10-18) is the frame: "Creation Details" opened over My Creations,
60
+ * 1143px of a 1600px design, holding the App page's own sidebar and its
61
+ * content. That is the designer's "about 1143px", and `max-w-6xl` is the
62
+ * Tailwind rung 9px from it, chosen over an arbitrary `max-w-[1143px]` for the
63
+ * reason `md` and `lg` are rungs: a drawer width is a step on a ladder, not a
64
+ * measurement copied to the pixel. Below 1152px it fills the screen like the
65
+ * other two.
56
66
  *
57
67
  * `size` is the INLINE width and applies to `left` and `right` only. A bottom
58
68
  * sheet is full width, which is what `PlugSheet` already does.
@@ -142,7 +152,7 @@ declare const drawerViewportVariants: (props?: ({
142
152
  */
143
153
  declare const drawerPopupVariants: (props?: ({
144
154
  side?: "bottom" | "left" | "right" | null | undefined;
145
- size?: "lg" | "md" | null | undefined;
155
+ size?: "lg" | "md" | "xl" | null | undefined;
146
156
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
147
157
  declare function Drawer({ modal, ...props }: DialogPrimitive.Root.Props): React.JSX.Element;
148
158
  declare function DrawerTrigger({ ...props }: DialogPrimitive.Trigger.Props): React.JSX.Element;
@@ -174,13 +184,23 @@ declare function DrawerContent({ side, size, container, className, children, ...
174
184
  * `aria-labelledby` needs no wiring: `DrawerTitle` is Base UI's `Dialog.Title`,
175
185
  * which registers its own id on the popup. Passing `title` rather than leaving it
176
186
  * to the caller is what guarantees every drawer has one.
187
+ *
188
+ * `actions` (#331) is the row of controls the App page side panel draws between
189
+ * its title and the close glyph: Visibility, Open app, the menu, and Full
190
+ * screen. They sit in the title row, close is always last, and the row wraps
191
+ * when the sheet is narrower than its contents. Leave it out and the header
192
+ * renders exactly what it did before.
177
193
  */
178
- declare function DrawerHeader({ title, description, closeLabel, showCloseButton, className, children, ...props }: Omit<React.ComponentProps<"div">, "title"> & {
194
+ declare function DrawerHeader({ title, description, closeLabel, showCloseButton, actions, titleFace, className, children, ...props }: Omit<React.ComponentProps<"div">, "title"> & {
179
195
  title: React.ReactNode;
180
196
  description?: React.ReactNode;
181
197
  /** The close button's accessible name. "Close user details" beats "Close". */
182
198
  closeLabel?: string;
183
199
  showCloseButton?: boolean;
200
+ /** Controls in the title row, before the close button. */
201
+ actions?: React.ReactNode;
202
+ /** The title's face; see `DrawerTitle`. "body" for the App page's sentence-case title. */
203
+ titleFace?: DrawerTitleFace;
184
204
  }): React.JSX.Element;
185
205
  /**
186
206
  * The scrolling half.
@@ -202,7 +222,18 @@ declare function DrawerBody({ className, ...props }: React.ComponentProps<"div">
202
222
  * text reads as part of the text.
203
223
  */
204
224
  declare function DrawerFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
205
- declare function DrawerTitle({ className, ...props }: DialogPrimitive.Title.Props): React.JSX.Element;
225
+ /**
226
+ * The title's face. `heading` (the default, unchanged) is `font-heading`, the
227
+ * display face, Tanker, which is capitals by design. `body` is the brand's
228
+ * running-text face (`font-body`, Space Grotesk) in whatever case the words
229
+ * are written, which is what the App page v2 frames draw ("Creation Details",
230
+ * "Most used by", "Views over time"; founder ruling 2026-10-19). Only the face
231
+ * changes; size, leading and weight are the title's own.
232
+ */
233
+ export type DrawerTitleFace = "heading" | "body";
234
+ declare function DrawerTitle({ face, className, ...props }: DialogPrimitive.Title.Props & {
235
+ face?: DrawerTitleFace;
236
+ }): React.JSX.Element;
206
237
  declare function DrawerDescription({ className, ...props }: DialogPrimitive.Description.Props): React.JSX.Element;
207
238
  export { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, drawerPopupVariants, drawerViewportVariants, };
208
239
  //# sourceMappingURL=drawer.d.ts.map