@cueplusplus/ui 0.22.0 → 0.24.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/CHANGELOG.md +72 -0
- package/README.md +1 -1
- package/dist/elements/markdown.d.ts +29 -9
- package/dist/elements/markdown.js +102 -13
- package/dist/forms/_chassis.d.ts +19 -6
- package/dist/forms/_chassis.js +19 -6
- package/dist/primitives/chip.d.ts +1 -1
- package/dist/styles.css +20 -1
- package/dist/system/_focus-ring-field.js +14 -2
- package/dist/theming/contrast.d.ts +2 -2
- package/dist/theming/contrast.js +2 -2
- package/dist/theming/create-theme.js +15 -6
- package/dist/theming/index.d.ts +2 -2
- package/dist/theming/index.js +2 -2
- package/dist/theming/serialize.js +2 -1
- package/manifest/components/autocomplete.json +1 -0
- package/manifest/components/color-field.json +1 -0
- package/manifest/components/color-picker.json +1 -0
- package/manifest/components/combobox.json +1 -0
- package/manifest/components/composer.json +1 -0
- package/manifest/components/date-field.json +1 -0
- package/manifest/components/date-picker.json +1 -0
- package/manifest/components/date-range-picker.json +1 -0
- package/manifest/components/env-var-input.json +1 -0
- package/manifest/components/input-group.json +1 -0
- package/manifest/components/input.json +1 -0
- package/manifest/components/markdown-text.json +16 -2
- package/manifest/components/multi-select.json +1 -0
- package/manifest/components/musical-time-input.json +1 -0
- package/manifest/components/number-field.json +1 -0
- package/manifest/components/otp-field.json +1 -0
- package/manifest/components/password-input.json +1 -0
- package/manifest/components/scrub-input.json +1 -0
- package/manifest/components/search-input.json +1 -0
- package/manifest/components/select.json +1 -0
- package/manifest/components/tags-input.json +1 -0
- package/manifest/components/textarea.json +1 -0
- package/manifest/components/time-field.json +1 -0
- package/manifest/manifest.json +25 -25
- package/manifest/tokens.json +3 -1
- package/package.json +14 -4
package/dist/theming/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CONTRAST_REQUIREMENTS, ContrastCheck, ContrastInput, ContrastReport, ContrastRequirement, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, contrastRatio, contrastReport, relativeLuminance } from "./contrast.js";
|
|
1
|
+
import { CONTRAST_REQUIREMENTS, ContrastCheck, ContrastInput, ContrastReport, ContrastRequirement, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, contrastRatio, contrastReport, edgeToContrast, relativeLuminance } from "./contrast.js";
|
|
2
2
|
import { ACCENT_FG_MINIMUM, ACCENT_HOVER_LIGHTNESS_STEP, BORDER_LIGHTNESS_STEPS, CreatedTheme, FG_MUTED_LIGHTNESS_STEP, FG_SUBTLE_LIGHTNESS_STEP, INK_RAMP_CHROMA_SCALE, LIGHT_GROUND_COMPRESSION, SELECTION_ACCENT_PERCENT, SUNKEN_LIGHTNESS_STEP, SURFACE_LIGHTNESS_STEPS, THEME_COLOR_TOKENS, ThemeAnchors, ThemeColorToken, createTheme } from "./create-theme.js";
|
|
3
3
|
import { CUE_TOKEN_PREFIX, DERIVED_TOKEN_TEMPLATES, RESOLVED_MONO, SerializeThemeCssOptions, THEME_NAME_PATTERN, ThemeBlock, ThemeBlockSection, ThemeSelectorOptions, assertCssValue, assertThemeName, derivedTokens, serializeThemeBlock, serializeThemeCss, themeSelector, tokenProperty } from "./serialize.js";
|
|
4
|
-
export { ACCENT_FG_MINIMUM, ACCENT_HOVER_LIGHTNESS_STEP, BORDER_LIGHTNESS_STEPS, CONTRAST_REQUIREMENTS, CUE_TOKEN_PREFIX, type ContrastCheck, type ContrastInput, type ContrastReport, type ContrastRequirement, type CreatedTheme, DERIVED_TOKEN_TEMPLATES, FG_MUTED_LIGHTNESS_STEP, FG_SUBTLE_LIGHTNESS_STEP, INK_RAMP_CHROMA_SCALE, LIGHT_GROUND_COMPRESSION, RESOLVED_MONO, SELECTION_ACCENT_PERCENT, SUNKEN_LIGHTNESS_STEP, SURFACE_LIGHTNESS_STEPS, type SerializeThemeCssOptions, THEME_COLOR_TOKENS, THEME_NAME_PATTERN, type ThemeAnchors, type ThemeBlock, type ThemeBlockSection, type ThemeColorToken, type ThemeSelectorOptions, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, assertCssValue, assertThemeName, contrastRatio, contrastReport, createTheme, derivedTokens, relativeLuminance, serializeThemeBlock, serializeThemeCss, themeSelector, tokenProperty };
|
|
4
|
+
export { ACCENT_FG_MINIMUM, ACCENT_HOVER_LIGHTNESS_STEP, BORDER_LIGHTNESS_STEPS, CONTRAST_REQUIREMENTS, CUE_TOKEN_PREFIX, type ContrastCheck, type ContrastInput, type ContrastReport, type ContrastRequirement, type CreatedTheme, DERIVED_TOKEN_TEMPLATES, FG_MUTED_LIGHTNESS_STEP, FG_SUBTLE_LIGHTNESS_STEP, INK_RAMP_CHROMA_SCALE, LIGHT_GROUND_COMPRESSION, RESOLVED_MONO, SELECTION_ACCENT_PERCENT, SUNKEN_LIGHTNESS_STEP, SURFACE_LIGHTNESS_STEPS, type SerializeThemeCssOptions, THEME_COLOR_TOKENS, THEME_NAME_PATTERN, type ThemeAnchors, type ThemeBlock, type ThemeBlockSection, type ThemeColorToken, type ThemeSelectorOptions, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, assertCssValue, assertThemeName, contrastRatio, contrastReport, createTheme, derivedTokens, edgeToContrast, relativeLuminance, serializeThemeBlock, serializeThemeCss, themeSelector, tokenProperty };
|
package/dist/theming/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CONTRAST_REQUIREMENTS, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, contrastRatio, contrastReport, relativeLuminance } from "./contrast.js";
|
|
1
|
+
import { CONTRAST_REQUIREMENTS, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, contrastRatio, contrastReport, edgeToContrast, relativeLuminance } from "./contrast.js";
|
|
2
2
|
import { CUE_TOKEN_PREFIX, DERIVED_TOKEN_TEMPLATES, RESOLVED_MONO, THEME_NAME_PATTERN, assertCssValue, assertThemeName, derivedTokens, serializeThemeBlock, serializeThemeCss, themeSelector, tokenProperty } from "./serialize.js";
|
|
3
3
|
import { ACCENT_FG_MINIMUM, ACCENT_HOVER_LIGHTNESS_STEP, BORDER_LIGHTNESS_STEPS, FG_MUTED_LIGHTNESS_STEP, FG_SUBTLE_LIGHTNESS_STEP, INK_RAMP_CHROMA_SCALE, LIGHT_GROUND_COMPRESSION, SELECTION_ACCENT_PERCENT, SUNKEN_LIGHTNESS_STEP, SURFACE_LIGHTNESS_STEPS, THEME_COLOR_TOKENS, createTheme } from "./create-theme.js";
|
|
4
|
-
export { ACCENT_FG_MINIMUM, ACCENT_HOVER_LIGHTNESS_STEP, BORDER_LIGHTNESS_STEPS, CONTRAST_REQUIREMENTS, CUE_TOKEN_PREFIX, DERIVED_TOKEN_TEMPLATES, FG_MUTED_LIGHTNESS_STEP, FG_SUBTLE_LIGHTNESS_STEP, INK_RAMP_CHROMA_SCALE, LIGHT_GROUND_COMPRESSION, RESOLVED_MONO, SELECTION_ACCENT_PERCENT, SUNKEN_LIGHTNESS_STEP, SURFACE_LIGHTNESS_STEPS, THEME_COLOR_TOKENS, THEME_NAME_PATTERN, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, assertCssValue, assertThemeName, contrastRatio, contrastReport, createTheme, derivedTokens, relativeLuminance, serializeThemeBlock, serializeThemeCss, themeSelector, tokenProperty };
|
|
4
|
+
export { ACCENT_FG_MINIMUM, ACCENT_HOVER_LIGHTNESS_STEP, BORDER_LIGHTNESS_STEPS, CONTRAST_REQUIREMENTS, CUE_TOKEN_PREFIX, DERIVED_TOKEN_TEMPLATES, FG_MUTED_LIGHTNESS_STEP, FG_SUBTLE_LIGHTNESS_STEP, INK_RAMP_CHROMA_SCALE, LIGHT_GROUND_COMPRESSION, RESOLVED_MONO, SELECTION_ACCENT_PERCENT, SUNKEN_LIGHTNESS_STEP, SURFACE_LIGHTNESS_STEPS, THEME_COLOR_TOKENS, THEME_NAME_PATTERN, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, assertCssValue, assertThemeName, contrastRatio, contrastReport, createTheme, derivedTokens, edgeToContrast, relativeLuminance, serializeThemeBlock, serializeThemeCss, themeSelector, tokenProperty };
|
|
@@ -242,7 +242,8 @@ const DERIVED_TOKEN_TEMPLATES = [
|
|
|
242
242
|
["accent-fill", "var(--cue-accent)"],
|
|
243
243
|
["accent-fill-fg", "var(--cue-accent-fg)"],
|
|
244
244
|
["accent-fill-hover", "var(--cue-accent-hover)"],
|
|
245
|
-
["shade", "var(--cue-fg)"]
|
|
245
|
+
["shade", "var(--cue-fg)"],
|
|
246
|
+
["field-edge", "var(--cue-border)"]
|
|
246
247
|
];
|
|
247
248
|
/**
|
|
248
249
|
* {@link DERIVED_TOKEN_TEMPLATES} as a property → value map.
|
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
"group": "elements",
|
|
5
5
|
"importPath": "@cueplusplus/ui/elements/markdown",
|
|
6
6
|
"peerDependencies": [
|
|
7
|
+
"mdast-util-gfm-table",
|
|
8
|
+
"micromark-extension-gfm-table",
|
|
7
9
|
"react-markdown",
|
|
8
10
|
"rehype-sanitize"
|
|
9
11
|
],
|
|
10
12
|
"clientOnly": true,
|
|
11
|
-
"description": "Model output, rendered.\n\nThe one component in this library that turns a string into markup, and the\nonly one that has to be argued for rather than described. Everywhere else —\n`Message`, `AskBox`, every element in this group — text is text: a string\narrives from a model and is placed in the DOM as characters, because a\ncomponent that quietly parsed it would put every consumer of this library one\nprompt away from an injection. This one parses, so it states in full what it\nwill and will not do with what it is given.\n\n**Threat model.** The input is hostile. Assume the string was written by a\nmodel that was told to write it by a web page it fetched, a file it read, or\na tool result it did not verify — the practical shape of prompt injection is\nnot \"the model turned evil\", it is \"the model faithfully relayed an\nattacker's bytes\". Three things follow.\n\n- **No raw HTML, ever, and not by filtering it.** Markup in the source has no\n path to the DOM, and the first reason is an absence rather than a setting.\n `react-markdown` hands `remark-rehype` its own `allowDangerousHtml: true`\n and spreads it *over* whatever `remarkRehypeOptions` says, so the option\n cannot be turned off from here and `<img onerror=…>` does become a `raw`\n node. A `raw` node is a span of source text rather than an element, and the\n one thing that turns it into markup is `rehype-raw`. Nothing in this package\n depends on that plugin, and a test asserts it never will — so the string has\n no parser to reach. `rehype-sanitize` then drops the `raw` type outright,\n and react-markdown's own `skipHtml` removes whatever is left. Three gates,\n none of which is a deny-list of dangerous tags. A `<script>`, an\n `<iframe>`, an `<svg>` and an `onclick=` are all the same non-event: there\n is nothing in the tree for them to be.\n- **Attributes are enumerated, not filtered.** An element that is not in the\n schema renders nothing; an element that is renders only the attributes\n named beside it — `href`/`title` on a link, `src`/`alt`/`title` on an\n image, `language-…` on a `code`. No element in the subset accepts `id`,\n `style`, `srcset`, `formaction` or any `on*` handler, so none of them has\n an attribute to arrive on
|
|
13
|
+
"description": "Model output, rendered.\n\nThe one component in this library that turns a string into markup, and the\nonly one that has to be argued for rather than described. Everywhere else —\n`Message`, `AskBox`, every element in this group — text is text: a string\narrives from a model and is placed in the DOM as characters, because a\ncomponent that quietly parsed it would put every consumer of this library one\nprompt away from an injection. This one parses, so it states in full what it\nwill and will not do with what it is given.\n\n**Threat model.** The input is hostile. Assume the string was written by a\nmodel that was told to write it by a web page it fetched, a file it read, or\na tool result it did not verify — the practical shape of prompt injection is\nnot \"the model turned evil\", it is \"the model faithfully relayed an\nattacker's bytes\". Three things follow.\n\n- **No raw HTML, ever, and not by filtering it.** Markup in the source has no\n path to the DOM, and the first reason is an absence rather than a setting.\n `react-markdown` hands `remark-rehype` its own `allowDangerousHtml: true`\n and spreads it *over* whatever `remarkRehypeOptions` says, so the option\n cannot be turned off from here and `<img onerror=…>` does become a `raw`\n node. A `raw` node is a span of source text rather than an element, and the\n one thing that turns it into markup is `rehype-raw`. Nothing in this package\n depends on that plugin, and a test asserts it never will — so the string has\n no parser to reach. `rehype-sanitize` then drops the `raw` type outright,\n and react-markdown's own `skipHtml` removes whatever is left. Three gates,\n none of which is a deny-list of dangerous tags. A `<script>`, an\n `<iframe>`, an `<svg>` and an `onclick=` are all the same non-event: there\n is nothing in the tree for them to be.\n- **Attributes are enumerated, not filtered.** An element that is not in the\n schema renders nothing; an element that is renders only the attributes\n named beside it — `href`/`title` on a link, `src`/`alt`/`title` on an\n image, `language-…` on a `code`, and `align` on a table cell, held to\n `left`, `center` or `right`. No element in the subset accepts `id`,\n `style`, `srcset`, `formaction` or any `on*` handler, so none of them has\n an attribute to arrive on; the one inline style anything carries is a\n cell's `text-align`, which the renderer writes from that `align`.\n- **URLs are allow-listed twice.** `http`, `https` and `mailto` on both\n `href` and `src`; a relative URL stays relative; everything else — a\n `javascript:` link, a `data:text/html` image, `vbscript:`, `blob:`,\n `file:`, `//host` — loses the attribute and leaves an inert element\n behind. Every link also carries `rel=\"noopener noreferrer nofollow\"`,\n which is not a prop: reverse tabnabbing, referrer leakage of a private\n console URL, and SEO laundering through a transcript are all things a\n caller should not be able to turn off by accident.\n\n**The subset.** Paragraphs, ATX and setext headings, bullet and ordered\nlists, block quotes, thematic breaks, fenced and indented code, inline code,\nemphasis, strong, strikethrough, links, images, hard breaks, and GitHub\ntables. Tables are the one part of GFM the parser reads, each column aligned\nas its delimiter row says and wrapped in a named region that scrolls\nsideways; task lists, footnotes and autolink literals stay out — an explicit\n`<https://…>` autolink still works. Fenced blocks are plain text unless\n{@link MarkdownTextProps.renderCodeBlock} is given, and\n{@link MarkdownTextProps.remarkPlugins} adds parser plugins without widening\nthe subset.\n\n**Streaming.** Pass `streaming` while the turn is arriving and the token the\nmodel is halfway through typing is hidden rather than rendered as\npunctuation: no asterisks flickering through every bold run, no half-written\nURL, no fence that opens a code block one frame and closes it the next. The\nwords appear as they arrive; only their formatting waits for the closing\ntoken.\n\n`react-markdown`, `rehype-sanitize` and GFM's table pair\n(`micromark-extension-gfm-table`, `mdast-util-gfm-table`) are optional peers\nof this subpath alone, which is why this component is not re-exported from\n`@cueplusplus/ui/elements`: a console that renders a transcript without\nmarkdown should install none of them.",
|
|
12
14
|
"props": [
|
|
13
15
|
{
|
|
14
16
|
"name": "children",
|
|
@@ -71,6 +73,17 @@
|
|
|
71
73
|
"kind": "callback",
|
|
72
74
|
"fixture": "callback.log"
|
|
73
75
|
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "remarkPlugins",
|
|
79
|
+
"type": "PluggableList | null",
|
|
80
|
+
"required": false,
|
|
81
|
+
"defaultValue": null,
|
|
82
|
+
"description": "More remark plugins, run after the component's own table syntax.\n\nA seam for the parser, not for the page: whatever a plugin adds to the\ntree still passes the same sanitizer, so a plugin can change what the\nmarkdown *means* — a mention syntax, a glossary link — but cannot widen\nwhat renders. An element outside the subset is dropped, and an attribute\nthe schema does not name never arrives.",
|
|
83
|
+
"control": {
|
|
84
|
+
"kind": "opaque",
|
|
85
|
+
"nullable": true
|
|
86
|
+
}
|
|
74
87
|
}
|
|
75
88
|
],
|
|
76
89
|
"typeReferences": [
|
|
@@ -95,6 +108,7 @@
|
|
|
95
108
|
"--cue-space-3",
|
|
96
109
|
"--cue-space-5",
|
|
97
110
|
"--cue-style-focus-width",
|
|
111
|
+
"--cue-surface-2",
|
|
98
112
|
"--cue-text-body",
|
|
99
113
|
"--cue-text-emphasis",
|
|
100
114
|
"--cue-text-label",
|
|
@@ -105,7 +119,7 @@
|
|
|
105
119
|
"examples": [
|
|
106
120
|
{
|
|
107
121
|
"title": "Usage",
|
|
108
|
-
"code": "<Message agent=\"researcher\">\n <MarkdownText>{turn.text}</MarkdownText>\n</Message>\n<MarkdownText streaming={turn.status === \"running\"}>{turn.text}</MarkdownText>\n<MarkdownText renderCodeBlock={({ language, code }) => <Highlight lang={language} code={code} />}>\n {answer}\n</MarkdownText>",
|
|
122
|
+
"code": "<Message agent=\"researcher\">\n <MarkdownText>{turn.text}</MarkdownText>\n</Message>\n<MarkdownText streaming={turn.status === \"running\"}>{turn.text}</MarkdownText>\n<MarkdownText renderCodeBlock={({ language, code }) => <Highlight lang={language} code={code} />}>\n {answer}\n</MarkdownText>\n<MarkdownText remarkPlugins={[remarkMentions]}>{turn.text}</MarkdownText>",
|
|
109
123
|
"language": "tsx"
|
|
110
124
|
}
|
|
111
125
|
],
|
package/manifest/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"library": "@cueplusplus/ui",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.24.0",
|
|
5
5
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
6
6
|
"themes": [
|
|
7
7
|
"command",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
],
|
|
39
39
|
"tokens": {
|
|
40
40
|
"path": "./tokens.json",
|
|
41
|
-
"sha256": "
|
|
41
|
+
"sha256": "fcc11015750652ab6e7332b9d8c39aa3f540f27c01b482ae21980314dc46f03b"
|
|
42
42
|
},
|
|
43
43
|
"systemApis": [
|
|
44
44
|
{
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
"mdUrl": "/docs/components/composer.md",
|
|
514
514
|
"jsonUrl": "/r/components/composer.json",
|
|
515
515
|
"path": "./components/composer.json",
|
|
516
|
-
"sha256": "
|
|
516
|
+
"sha256": "0a38f9056c6e8f86155523c0eef9d2b13fda464408d2d8c31f256d0da2ace286"
|
|
517
517
|
},
|
|
518
518
|
{
|
|
519
519
|
"name": "DelegationCard",
|
|
@@ -942,7 +942,7 @@
|
|
|
942
942
|
"mdUrl": "/docs/components/color-field.md",
|
|
943
943
|
"jsonUrl": "/r/components/color-field.json",
|
|
944
944
|
"path": "./components/color-field.json",
|
|
945
|
-
"sha256": "
|
|
945
|
+
"sha256": "332c18b35ecd26dd61750c836d77720171f21b5b07d2cd482f86decee09ed904"
|
|
946
946
|
},
|
|
947
947
|
{
|
|
948
948
|
"name": "ColorPicker",
|
|
@@ -955,7 +955,7 @@
|
|
|
955
955
|
"mdUrl": "/docs/components/color-picker.md",
|
|
956
956
|
"jsonUrl": "/r/components/color-picker.json",
|
|
957
957
|
"path": "./components/color-picker.json",
|
|
958
|
-
"sha256": "
|
|
958
|
+
"sha256": "463bb50929967eb20af06eeb62be4be2159aafe7a9b56d65a8294e94acb78488"
|
|
959
959
|
},
|
|
960
960
|
{
|
|
961
961
|
"name": "ColorSlider",
|
|
@@ -1085,7 +1085,7 @@
|
|
|
1085
1085
|
"mdUrl": "/docs/components/date-field.md",
|
|
1086
1086
|
"jsonUrl": "/r/components/date-field.json",
|
|
1087
1087
|
"path": "./components/date-field.json",
|
|
1088
|
-
"sha256": "
|
|
1088
|
+
"sha256": "ef8a3561b6b52874549af7f0c8764d8cd5fed032bc6003015f815dc8cf5eb875"
|
|
1089
1089
|
},
|
|
1090
1090
|
{
|
|
1091
1091
|
"name": "DatePicker",
|
|
@@ -1098,7 +1098,7 @@
|
|
|
1098
1098
|
"mdUrl": "/docs/components/date-picker.md",
|
|
1099
1099
|
"jsonUrl": "/r/components/date-picker.json",
|
|
1100
1100
|
"path": "./components/date-picker.json",
|
|
1101
|
-
"sha256": "
|
|
1101
|
+
"sha256": "ca298c4fc5727fc056c6bd141c38180a62eef89f187bc66ac352a551fd939185"
|
|
1102
1102
|
},
|
|
1103
1103
|
{
|
|
1104
1104
|
"name": "DateRangePicker",
|
|
@@ -1111,7 +1111,7 @@
|
|
|
1111
1111
|
"mdUrl": "/docs/components/date-range-picker.md",
|
|
1112
1112
|
"jsonUrl": "/r/components/date-range-picker.json",
|
|
1113
1113
|
"path": "./components/date-range-picker.json",
|
|
1114
|
-
"sha256": "
|
|
1114
|
+
"sha256": "f2f28b405e414f21c4ebfec5b63faad8312928d4cd4283c34ccc1cd2794da0b6"
|
|
1115
1115
|
},
|
|
1116
1116
|
{
|
|
1117
1117
|
"name": "TimeField",
|
|
@@ -1124,7 +1124,7 @@
|
|
|
1124
1124
|
"mdUrl": "/docs/components/time-field.md",
|
|
1125
1125
|
"jsonUrl": "/r/components/time-field.json",
|
|
1126
1126
|
"path": "./components/time-field.json",
|
|
1127
|
-
"sha256": "
|
|
1127
|
+
"sha256": "8c8d3a4401f5fd67527f31e3879af7c160e76f9e5b31ef97fa1d8477ed811ae1"
|
|
1128
1128
|
},
|
|
1129
1129
|
{
|
|
1130
1130
|
"name": "ChannelMatrix",
|
|
@@ -2320,7 +2320,7 @@
|
|
|
2320
2320
|
"mdUrl": "/docs/components/markdown-text.md",
|
|
2321
2321
|
"jsonUrl": "/r/components/markdown-text.json",
|
|
2322
2322
|
"path": "./components/markdown-text.json",
|
|
2323
|
-
"sha256": "
|
|
2323
|
+
"sha256": "09114d7367b8b47786418e5362e657ac5ae8ec3b5f831da985332f6a96d2be42"
|
|
2324
2324
|
},
|
|
2325
2325
|
{
|
|
2326
2326
|
"name": "MathBlock",
|
|
@@ -3282,7 +3282,7 @@
|
|
|
3282
3282
|
"mdUrl": "/docs/components/autocomplete.md",
|
|
3283
3283
|
"jsonUrl": "/r/components/autocomplete.json",
|
|
3284
3284
|
"path": "./components/autocomplete.json",
|
|
3285
|
-
"sha256": "
|
|
3285
|
+
"sha256": "63b82d5524485aed7078bce24063780c5ec2e1c44ef9cb4b2a0a5108f603dcad"
|
|
3286
3286
|
},
|
|
3287
3287
|
{
|
|
3288
3288
|
"name": "ButtonGroup",
|
|
@@ -3334,7 +3334,7 @@
|
|
|
3334
3334
|
"mdUrl": "/docs/components/combobox.md",
|
|
3335
3335
|
"jsonUrl": "/r/components/combobox.json",
|
|
3336
3336
|
"path": "./components/combobox.json",
|
|
3337
|
-
"sha256": "
|
|
3337
|
+
"sha256": "6dc53875746a523c995608a40ee60f2cbdf64ee4cfdbaa07fe6e2697541a2994"
|
|
3338
3338
|
},
|
|
3339
3339
|
{
|
|
3340
3340
|
"name": "EnvVarInput",
|
|
@@ -3347,7 +3347,7 @@
|
|
|
3347
3347
|
"mdUrl": "/docs/components/env-var-input.md",
|
|
3348
3348
|
"jsonUrl": "/r/components/env-var-input.json",
|
|
3349
3349
|
"path": "./components/env-var-input.json",
|
|
3350
|
-
"sha256": "
|
|
3350
|
+
"sha256": "8edb3111172ec68ee6d00266283324388e7ee1593b4350da279731da5294bb3d"
|
|
3351
3351
|
},
|
|
3352
3352
|
{
|
|
3353
3353
|
"name": "Field",
|
|
@@ -3425,7 +3425,7 @@
|
|
|
3425
3425
|
"mdUrl": "/docs/components/input.md",
|
|
3426
3426
|
"jsonUrl": "/r/components/input.json",
|
|
3427
3427
|
"path": "./components/input.json",
|
|
3428
|
-
"sha256": "
|
|
3428
|
+
"sha256": "f4cf68a0db39a9f27fc91b97bac4cc980f0bfc952356ec2d092d72c2fb3a1850"
|
|
3429
3429
|
},
|
|
3430
3430
|
{
|
|
3431
3431
|
"name": "InputGroup",
|
|
@@ -3438,7 +3438,7 @@
|
|
|
3438
3438
|
"mdUrl": "/docs/components/input-group.md",
|
|
3439
3439
|
"jsonUrl": "/r/components/input-group.json",
|
|
3440
3440
|
"path": "./components/input-group.json",
|
|
3441
|
-
"sha256": "
|
|
3441
|
+
"sha256": "91692a5e17deb76468fb4b55f15073338aebf398b6fadf4824a3f9c19f54aa07"
|
|
3442
3442
|
},
|
|
3443
3443
|
{
|
|
3444
3444
|
"name": "MultiSelect",
|
|
@@ -3451,7 +3451,7 @@
|
|
|
3451
3451
|
"mdUrl": "/docs/components/multi-select.md",
|
|
3452
3452
|
"jsonUrl": "/r/components/multi-select.json",
|
|
3453
3453
|
"path": "./components/multi-select.json",
|
|
3454
|
-
"sha256": "
|
|
3454
|
+
"sha256": "fa820d7bdc9e0fb6ece919483678b695210ccda4f7aae1465ab70bb1933e08f9"
|
|
3455
3455
|
},
|
|
3456
3456
|
{
|
|
3457
3457
|
"name": "NumberField",
|
|
@@ -3464,7 +3464,7 @@
|
|
|
3464
3464
|
"mdUrl": "/docs/components/number-field.md",
|
|
3465
3465
|
"jsonUrl": "/r/components/number-field.json",
|
|
3466
3466
|
"path": "./components/number-field.json",
|
|
3467
|
-
"sha256": "
|
|
3467
|
+
"sha256": "3843121dd89ba6e2c45856b21ed8b7f5dd8b50f604f27a69929fb696f0addd04"
|
|
3468
3468
|
},
|
|
3469
3469
|
{
|
|
3470
3470
|
"name": "OTPField",
|
|
@@ -3477,7 +3477,7 @@
|
|
|
3477
3477
|
"mdUrl": "/docs/components/otp-field.md",
|
|
3478
3478
|
"jsonUrl": "/r/components/otp-field.json",
|
|
3479
3479
|
"path": "./components/otp-field.json",
|
|
3480
|
-
"sha256": "
|
|
3480
|
+
"sha256": "bf75cbad335d0a98a6ac1067c0f1c6167dc4d53652fdfd97e7956ec78436d033"
|
|
3481
3481
|
},
|
|
3482
3482
|
{
|
|
3483
3483
|
"name": "PasswordInput",
|
|
@@ -3490,7 +3490,7 @@
|
|
|
3490
3490
|
"mdUrl": "/docs/components/password-input.md",
|
|
3491
3491
|
"jsonUrl": "/r/components/password-input.json",
|
|
3492
3492
|
"path": "./components/password-input.json",
|
|
3493
|
-
"sha256": "
|
|
3493
|
+
"sha256": "bbac6a2d08045cb67a044affa7fee2967cad98811c2b87c27b299ba365c6fd99"
|
|
3494
3494
|
},
|
|
3495
3495
|
{
|
|
3496
3496
|
"name": "Radio",
|
|
@@ -3542,7 +3542,7 @@
|
|
|
3542
3542
|
"mdUrl": "/docs/components/scrub-input.md",
|
|
3543
3543
|
"jsonUrl": "/r/components/scrub-input.json",
|
|
3544
3544
|
"path": "./components/scrub-input.json",
|
|
3545
|
-
"sha256": "
|
|
3545
|
+
"sha256": "affa46b6a0c56eddcc82429b74afd12d53a9daf0d3354bf9e9f9c849ed9e3ce9"
|
|
3546
3546
|
},
|
|
3547
3547
|
{
|
|
3548
3548
|
"name": "SearchInput",
|
|
@@ -3555,7 +3555,7 @@
|
|
|
3555
3555
|
"mdUrl": "/docs/components/search-input.md",
|
|
3556
3556
|
"jsonUrl": "/r/components/search-input.json",
|
|
3557
3557
|
"path": "./components/search-input.json",
|
|
3558
|
-
"sha256": "
|
|
3558
|
+
"sha256": "163dbb2109f0ac8899cdc48502a872b8bc61d44ec20da8e9389f2de24087ab68"
|
|
3559
3559
|
},
|
|
3560
3560
|
{
|
|
3561
3561
|
"name": "Select",
|
|
@@ -3568,7 +3568,7 @@
|
|
|
3568
3568
|
"mdUrl": "/docs/components/select.md",
|
|
3569
3569
|
"jsonUrl": "/r/components/select.json",
|
|
3570
3570
|
"path": "./components/select.json",
|
|
3571
|
-
"sha256": "
|
|
3571
|
+
"sha256": "70586217a040a98ffe8368a4353bbca655d3247317aa6750940b4ead6438115a"
|
|
3572
3572
|
},
|
|
3573
3573
|
{
|
|
3574
3574
|
"name": "Slider",
|
|
@@ -3607,7 +3607,7 @@
|
|
|
3607
3607
|
"mdUrl": "/docs/components/tags-input.md",
|
|
3608
3608
|
"jsonUrl": "/r/components/tags-input.json",
|
|
3609
3609
|
"path": "./components/tags-input.json",
|
|
3610
|
-
"sha256": "
|
|
3610
|
+
"sha256": "76e4486f2413f6547777dc660f641a531cf77e2ea16f01de58632f54d2d02cf7"
|
|
3611
3611
|
},
|
|
3612
3612
|
{
|
|
3613
3613
|
"name": "Textarea",
|
|
@@ -3620,7 +3620,7 @@
|
|
|
3620
3620
|
"mdUrl": "/docs/components/textarea.md",
|
|
3621
3621
|
"jsonUrl": "/r/components/textarea.json",
|
|
3622
3622
|
"path": "./components/textarea.json",
|
|
3623
|
-
"sha256": "
|
|
3623
|
+
"sha256": "0612d1b26adf377909e7cfe66bbf85c3af117737d8c4908907174556afbe9b1c"
|
|
3624
3624
|
},
|
|
3625
3625
|
{
|
|
3626
3626
|
"name": "Toggle",
|
|
@@ -4361,7 +4361,7 @@
|
|
|
4361
4361
|
"mdUrl": "/docs/components/musical-time-input.md",
|
|
4362
4362
|
"jsonUrl": "/r/components/musical-time-input.json",
|
|
4363
4363
|
"path": "./components/musical-time-input.json",
|
|
4364
|
-
"sha256": "
|
|
4364
|
+
"sha256": "2fb56643ffb77614b8b2e08257ea9f1f8b6f29cf4288509f34ac15d1a79c3941"
|
|
4365
4365
|
},
|
|
4366
4366
|
{
|
|
4367
4367
|
"name": "PianoKeyboard",
|
package/manifest/tokens.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"library": "@cueplusplus/tokens",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.24.0",
|
|
5
5
|
"themes": [
|
|
6
6
|
{
|
|
7
7
|
"name": "command",
|
|
@@ -283,6 +283,7 @@
|
|
|
283
283
|
"--cue-fg",
|
|
284
284
|
"--cue-fg-muted",
|
|
285
285
|
"--cue-fg-subtle",
|
|
286
|
+
"--cue-field-edge",
|
|
286
287
|
"--cue-focus",
|
|
287
288
|
"--cue-font-mono",
|
|
288
289
|
"--cue-font-theme-mono",
|
|
@@ -462,6 +463,7 @@
|
|
|
462
463
|
"--cue-style-eyebrow-size",
|
|
463
464
|
"--cue-style-eyebrow-weight",
|
|
464
465
|
"--cue-style-field-fill",
|
|
466
|
+
"--cue-style-field-focus-mix",
|
|
465
467
|
"--cue-style-field-focus-offset",
|
|
466
468
|
"--cue-style-field-gap",
|
|
467
469
|
"--cue-style-field-hover-edge",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cueplusplus/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "CUE++ design system components: Tailwind v4 styled wrappers over Base UI, driven by @cueplusplus/tokens.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -145,8 +145,8 @@
|
|
|
145
145
|
"clsx": "^2.1.1",
|
|
146
146
|
"culori": "^4.0.2",
|
|
147
147
|
"tailwind-merge": "^3.6.0",
|
|
148
|
-
"@cueplusplus/theme-base": "^1.
|
|
149
|
-
"@cueplusplus/tokens": "0.
|
|
148
|
+
"@cueplusplus/theme-base": "^1.4.0",
|
|
149
|
+
"@cueplusplus/tokens": "0.24.0"
|
|
150
150
|
},
|
|
151
151
|
"peerDependencies": {
|
|
152
152
|
"@assistant-ui/react": "^0.15.16",
|
|
@@ -160,6 +160,8 @@
|
|
|
160
160
|
"embla-carousel-react": "^8.6.0",
|
|
161
161
|
"heat-graph": "^0.0.15",
|
|
162
162
|
"lucide-react": "^1.31.0",
|
|
163
|
+
"mdast-util-gfm-table": "^2.0.0",
|
|
164
|
+
"micromark-extension-gfm-table": "^2.1.1",
|
|
163
165
|
"react": "^19.0.0",
|
|
164
166
|
"react-aria-components": "^1.20.0",
|
|
165
167
|
"react-day-picker": "^10.0.1",
|
|
@@ -201,6 +203,12 @@
|
|
|
201
203
|
"lucide-react": {
|
|
202
204
|
"optional": true
|
|
203
205
|
},
|
|
206
|
+
"mdast-util-gfm-table": {
|
|
207
|
+
"optional": true
|
|
208
|
+
},
|
|
209
|
+
"micromark-extension-gfm-table": {
|
|
210
|
+
"optional": true
|
|
211
|
+
},
|
|
204
212
|
"react-aria-components": {
|
|
205
213
|
"optional": true
|
|
206
214
|
},
|
|
@@ -249,6 +257,8 @@
|
|
|
249
257
|
"heat-graph": "^0.0.15",
|
|
250
258
|
"jsdom": "^30.0.1",
|
|
251
259
|
"lucide-react": "^1.31.0",
|
|
260
|
+
"mdast-util-gfm-table": "^2.0.0",
|
|
261
|
+
"micromark-extension-gfm-table": "^2.1.1",
|
|
252
262
|
"publint": "^0.3.23",
|
|
253
263
|
"react": "^19.2.0",
|
|
254
264
|
"react-aria-components": "^1.20.0",
|
|
@@ -262,7 +272,7 @@
|
|
|
262
272
|
"tsdown": "0.22.14",
|
|
263
273
|
"typescript": "^5.7.0",
|
|
264
274
|
"vitest": "^4.1.10",
|
|
265
|
-
"@cueplusplus/theme-tools": "1.
|
|
275
|
+
"@cueplusplus/theme-tools": "1.3.0",
|
|
266
276
|
"@repo/docgen": "0.0.0",
|
|
267
277
|
"@repo/eslint-config": "0.0.0",
|
|
268
278
|
"@repo/typescript-config": "0.0.0"
|