@godxjp/ui 31.25.3 → 31.26.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/agent/START-HERE.md +4 -4
- package/agent/components/Markdown.json +6 -0
- package/agent/components/Prose.json +6 -0
- package/agent/components.json +12 -0
- package/agent/index.json +4 -4
- package/agent/llms.txt +5 -5
- package/agent/tokens.json +12 -0
- package/dist/components/data-display/prose.js +88 -4
- package/dist/contracts/measurement.json +1 -1
- package/dist/props/components/data-display.prop.d.ts +7 -0
- package/dist/styles/control.css +20 -9
- package/dist/styles/data-display-layout.css +12 -0
- package/dist/styles/dialog-layout.css +3 -7
- package/dist/styles/focus-ring.css +2 -0
- package/dist/styles/layers.json +1 -1
- package/dist/styles/navigation-layout.css +5 -0
- package/dist/tokens/components/control.css +4 -0
- package/dist/tokens/components/data-display.css +2 -0
- package/package.json +2 -2
package/agent/START-HERE.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
You are about to write code against a design system you did not author. This file is the whole
|
|
4
4
|
contract. Read it before you write JSX.
|
|
5
5
|
|
|
6
|
-
**This catalog describes `@godxjp/ui` 31.
|
|
6
|
+
**This catalog describes `@godxjp/ui` 31.26.0.** If the project you are editing has a different
|
|
7
7
|
version in its `package.json`, read the pinned catalog for THAT version instead
|
|
8
8
|
(`…/v<their-version>/agent/…`). A catalog newer than the installed package describes props that do
|
|
9
9
|
not exist yet; older, and it hides props that do. Neither failure announces itself.
|
|
@@ -56,10 +56,10 @@ Then ask it: `search_components`, `get_component`, `get_tokens`, `get_rule`, `li
|
|
|
56
56
|
its `importPath`, and its examples. Fetch only the handful you picked in step 1.
|
|
57
57
|
3. `rules.json` — 50 cardinal rules. The ones about raw HTML and hardcoded colour are not
|
|
58
58
|
style advice.
|
|
59
|
-
4. `tokens.json` —
|
|
59
|
+
4. `tokens.json` — 2137 design tokens, each tagged with its `tier`. **If you were handed a
|
|
60
60
|
brand, read the 211 `foundation` entries first** — `--primary`, `--background`,
|
|
61
61
|
`--radius`, `--font-size-base` are the handful everything else derives from. The
|
|
62
|
-
|
|
62
|
+
1822 `component` entries are per-part knobs; reach for one only when a role is
|
|
63
63
|
right everywhere except one component.
|
|
64
64
|
5. `anti-ai-tells.json` — 26 shapes that make generated UI look generated, each with the
|
|
65
65
|
fix. Read before you reach for a gradient hero or a wall of coloured chips.
|
|
@@ -145,7 +145,7 @@ has stopped following the brand.
|
|
|
145
145
|
|---|---|---|---|
|
|
146
146
|
| `foundation` | 211 | the seeds — `--primary`, `--background`, `--foreground`, `--radius`, `--font-size-base`, `--shadow-color`. Everything below is derived from these | **yes — this is the main road.** Handed a brand colour, this is where it goes: `:root { --primary: <H> <S>% <L>%; }` (HSL components, no `hsl()` wrapper) |
|
|
147
147
|
| `semantic` | 104 | named roles that follow the seeds — `--ring`, `--text-link`, `--primary-hover`, `--overlay-background` | only when the seed is right and ONE role must differ. That role then stops following a later brand change |
|
|
148
|
-
| `component` |
|
|
148
|
+
| `component` | 1822 | per-part knobs, `--{component}-{part}-{property}` | rarely. Most are declared `initial` with the real default at the call site — deliberate, so a scoped override re-resolves instead of freezing at `:root` |
|
|
149
149
|
|
|
150
150
|
A token whose `value` is `initial` is not empty and not broken: `initial` is the guaranteed-invalid
|
|
151
151
|
value, so the real default is computed where the element paints it. Set it and yours wins.
|
|
@@ -46,6 +46,12 @@
|
|
|
46
46
|
"name": "allowedElements",
|
|
47
47
|
"type": "string[]"
|
|
48
48
|
},
|
|
49
|
+
{
|
|
50
|
+
"defaultValue": "24",
|
|
51
|
+
"description": "A table cell whose trimmed text has no whitespace and at most this many characters (grapheme clusters) — a code, an id, a date, 優先度 — is stamped data-short, and Prose keeps it on one line (CJK otherwise breaks between ideographs in a narrow column). Sentences still wrap. false stamps nothing (gh#1150). Images in Prose table cells are capped at --prose-cell-image-max-inline-size (20rem) so a narrow table scrolls instead of squashing them.",
|
|
52
|
+
"name": "shortCellLength",
|
|
53
|
+
"type": "number | false"
|
|
54
|
+
},
|
|
49
55
|
{
|
|
50
56
|
"defaultValue": "true",
|
|
51
57
|
"description": "`false` keeps ```mermaid fences as code. Diagrams need the optional peer `mermaid`.",
|
|
@@ -21,6 +21,12 @@
|
|
|
21
21
|
"name": "measure",
|
|
22
22
|
"type": "\"narrow\" | \"medium\" | \"wide\""
|
|
23
23
|
},
|
|
24
|
+
{
|
|
25
|
+
"defaultValue": "false",
|
|
26
|
+
"description": "Open the body's images in the kit image preview: click, Enter or Space on an image opens it, paging through the body's other previewable images in document order. Works on any HTML the body renders (@godxjp/markdown output included) with no img override; an image inside a link stays the link's and a kit Image keeps its own preview (gh#1150).",
|
|
27
|
+
"name": "imagePreview",
|
|
28
|
+
"type": "boolean"
|
|
29
|
+
},
|
|
24
30
|
{
|
|
25
31
|
"description": "The rendered content.",
|
|
26
32
|
"name": "children",
|
package/agent/components.json
CHANGED
|
@@ -5055,6 +5055,12 @@
|
|
|
5055
5055
|
"name": "allowedElements",
|
|
5056
5056
|
"type": "string[]"
|
|
5057
5057
|
},
|
|
5058
|
+
{
|
|
5059
|
+
"defaultValue": "24",
|
|
5060
|
+
"description": "A table cell whose trimmed text has no whitespace and at most this many characters (grapheme clusters) — a code, an id, a date, 優先度 — is stamped data-short, and Prose keeps it on one line (CJK otherwise breaks between ideographs in a narrow column). Sentences still wrap. false stamps nothing (gh#1150). Images in Prose table cells are capped at --prose-cell-image-max-inline-size (20rem) so a narrow table scrolls instead of squashing them.",
|
|
5061
|
+
"name": "shortCellLength",
|
|
5062
|
+
"type": "number | false"
|
|
5063
|
+
},
|
|
5058
5064
|
{
|
|
5059
5065
|
"defaultValue": "true",
|
|
5060
5066
|
"description": "`false` keeps ```mermaid fences as code. Diagrams need the optional peer `mermaid`.",
|
|
@@ -5165,6 +5171,12 @@
|
|
|
5165
5171
|
"name": "measure",
|
|
5166
5172
|
"type": "\"narrow\" | \"medium\" | \"wide\""
|
|
5167
5173
|
},
|
|
5174
|
+
{
|
|
5175
|
+
"defaultValue": "false",
|
|
5176
|
+
"description": "Open the body's images in the kit image preview: click, Enter or Space on an image opens it, paging through the body's other previewable images in document order. Works on any HTML the body renders (@godxjp/markdown output included) with no img override; an image inside a link stays the link's and a kit Image keeps its own preview (gh#1150).",
|
|
5177
|
+
"name": "imagePreview",
|
|
5178
|
+
"type": "boolean"
|
|
5179
|
+
},
|
|
5168
5180
|
{
|
|
5169
5181
|
"description": "The rendered content.",
|
|
5170
5182
|
"name": "children",
|
package/agent/index.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"components": 181,
|
|
5
5
|
"patterns": 21,
|
|
6
6
|
"rules": 50,
|
|
7
|
-
"tokens":
|
|
7
|
+
"tokens": 2137,
|
|
8
8
|
"vocabulary": 14
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
@@ -48,19 +48,19 @@
|
|
|
48
48
|
"note": "Pin to the tag that matches the @godxjp/ui version you installed. A catalog newer than your package describes props you do not have; older, and it hides props you do.",
|
|
49
49
|
"read": {
|
|
50
50
|
"live": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/index.json",
|
|
51
|
-
"pinned": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/v31.
|
|
51
|
+
"pinned": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/v31.26.0/agent/index.json"
|
|
52
52
|
},
|
|
53
53
|
"source": "mcp/src/data — the same data @godxjp/ui-mcp serves — plus the foundation and semantic token tiers, read from src/tokens/*.css",
|
|
54
54
|
"start": "https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/START-HERE.md",
|
|
55
55
|
"tokenTiers": {
|
|
56
56
|
"component": "per-part knobs, --{component}-{part}-{property}; usually leave these alone",
|
|
57
57
|
"counts": {
|
|
58
|
-
"component":
|
|
58
|
+
"component": 1822,
|
|
59
59
|
"foundation": 211,
|
|
60
60
|
"semantic": 104
|
|
61
61
|
},
|
|
62
62
|
"foundation": "the seeds a consumer is invited to set — --primary, --background, --radius",
|
|
63
63
|
"semantic": "named roles that follow the seeds — --ring, --text-link, --overlay-background"
|
|
64
64
|
},
|
|
65
|
-
"version": "31.
|
|
65
|
+
"version": "31.26.0"
|
|
66
66
|
}
|
package/agent/llms.txt
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# @godxjp/ui
|
|
2
2
|
|
|
3
|
-
> A Japanese-enterprise React design system: 181 components,
|
|
4
|
-
> 50 cardinal rules. This file is the entry point for AI agents. Catalog version 31.
|
|
3
|
+
> A Japanese-enterprise React design system: 181 components, 2137 design tokens,
|
|
4
|
+
> 50 cardinal rules. This file is the entry point for AI agents. Catalog version 31.26.0.
|
|
5
5
|
|
|
6
6
|
If your client can run a process, do not read these files — run the MCP server instead
|
|
7
|
-
(`npx @godxjp/ui-mcp@31.
|
|
7
|
+
(`npx @godxjp/ui-mcp@31.26.0`). It is searchable and version-locked. These files exist for agents
|
|
8
8
|
that can only fetch URLs.
|
|
9
9
|
|
|
10
10
|
## Start
|
|
@@ -18,7 +18,7 @@ that can only fetch URLs.
|
|
|
18
18
|
- [components-index.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components-index.json): 50 KB — all 181 components as name, group, tagline, plus `absorbed`: the names that do NOT exist and map to it (`Combobox` → `Select`).
|
|
19
19
|
- [components/<Name>.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components/Select.json): one file per component (1 KB–36 KB, median 6 KB). Read the index, then fetch only the ones you chose — this is the selective route, and the reason you do not need the blob.
|
|
20
20
|
- [components.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/components.json): 1.2 MB — every entry in one file. Most URL fetchers truncate a response this size without saying so; prefer the per-component files.
|
|
21
|
-
- [tokens.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/tokens.json): every design token with its value, the reason it exists, and its `tier` — 211 `foundation` seeds (`--primary`, `--background`, `--radius`: set these when you are handed a brand), 104 `semantic` roles,
|
|
21
|
+
- [tokens.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/tokens.json): every design token with its value, the reason it exists, and its `tier` — 211 `foundation` seeds (`--primary`, `--background`, `--radius`: set these when you are handed a brand), 104 `semantic` roles, 1822 `component` knobs.
|
|
22
22
|
- [vocabulary.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/vocabulary.json): the controlled prop vocabulary — which prop name means what, across every component.
|
|
23
23
|
- [rules.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/rules.json): 50 cardinal rules.
|
|
24
24
|
- [anti-ai-tells.json](https://raw.githubusercontent.com/godx-jp/godxjp-ui/main/agent/anti-ai-tells.json): 26 shapes that make generated UI look generated, each with its fix.
|
|
@@ -26,7 +26,7 @@ that can only fetch URLs.
|
|
|
26
26
|
## Pinning
|
|
27
27
|
|
|
28
28
|
Every URL above tracks `main`. To pin to the release a project actually installed, swap `main` for
|
|
29
|
-
the tag: `.../godx-jp/godxjp-ui/v31.
|
|
29
|
+
the tag: `.../godx-jp/godxjp-ui/v31.26.0/agent/...`. A catalog that does not match the installed
|
|
30
30
|
package describes props that are absent, or hides props that are present, and says nothing either way.
|
|
31
31
|
|
|
32
32
|
Pinned catalogs only exist for releases whose tag actually contains `agent/`. If `…/v<version>/agent/index.json` returns 404, that release predates this catalog: read `…/main/…` instead and compare `index.json` → `version` against the package you have, so you at least know which way it drifted.
|
package/agent/tokens.json
CHANGED
|
@@ -4847,6 +4847,12 @@
|
|
|
4847
4847
|
"tier": "component",
|
|
4848
4848
|
"value": "var(--band-height-xl)"
|
|
4849
4849
|
},
|
|
4850
|
+
{
|
|
4851
|
+
"description": "SearchInput's text stops at the clear ✕'s 44px TARGET, not at its 24px box (gh#1148): edge inset + half the box (where the glyph's centre is) + half the target.",
|
|
4852
|
+
"name": "--search-input-end-padding",
|
|
4853
|
+
"tier": "component",
|
|
4854
|
+
"value": "calc( var(--search-input-edge-inset) + var(--touch-target-min) / 2 + var(--band-height-xl) / 2 )"
|
|
4855
|
+
},
|
|
4850
4856
|
{
|
|
4851
4857
|
"description": "Control primitive tokens: heights, horizontal padding, adjacent control sizes.",
|
|
4852
4858
|
"name": "--textarea-padding-block-start",
|
|
@@ -5219,6 +5225,12 @@
|
|
|
5219
5225
|
"tier": "component",
|
|
5220
5226
|
"value": "var(--space-1)"
|
|
5221
5227
|
},
|
|
5228
|
+
{
|
|
5229
|
+
"description": "An image in a table cell is capped at a LENGTH, not at 100% (gh#1150): a percentage of an auto-width column lets the column squash the image to nothing, while a length makes the image's narrowest size min(natural width, this) — the table then scrolls in its box.",
|
|
5230
|
+
"name": "--prose-cell-image-max-inline-size",
|
|
5231
|
+
"tier": "component",
|
|
5232
|
+
"value": "20rem"
|
|
5233
|
+
},
|
|
5222
5234
|
{
|
|
5223
5235
|
"description": "gh#888 — φ tier freezes at :root; default = calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))",
|
|
5224
5236
|
"name": "--prose-code-radius",
|
|
@@ -1,20 +1,104 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
3
|
import * as React from "react";
|
|
4
|
+
import { useTranslation } from "../../i18n/use-translation.js";
|
|
3
5
|
import { cn } from "../../lib/utils.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
import { ImagePreviewGroup } from "./image.js";
|
|
7
|
+
const PREVIEWABLE = "img:not(a img):not(button img):not(.ui-image-img)";
|
|
8
|
+
function useMarkedImages(root, enabled, label) {
|
|
9
|
+
React.useLayoutEffect(() => {
|
|
10
|
+
const host = root.current;
|
|
11
|
+
if (!enabled || !host) return void 0;
|
|
12
|
+
const mark = () => {
|
|
13
|
+
for (const img of host.querySelectorAll(PREVIEWABLE)) {
|
|
14
|
+
if (img.hasAttribute("data-prose-preview")) continue;
|
|
15
|
+
img.setAttribute("data-prose-preview", "");
|
|
16
|
+
img.setAttribute("tabindex", "0");
|
|
17
|
+
img.setAttribute("role", "button");
|
|
18
|
+
img.setAttribute("aria-haspopup", "dialog");
|
|
19
|
+
img.setAttribute("aria-label", label(img.alt));
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
mark();
|
|
23
|
+
const observer = new MutationObserver(mark);
|
|
24
|
+
observer.observe(host, { childList: true, subtree: true });
|
|
25
|
+
return () => observer.disconnect();
|
|
26
|
+
}, [root, enabled, label]);
|
|
27
|
+
}
|
|
28
|
+
const Prose = React.forwardRef(function Prose2({
|
|
29
|
+
size = "md",
|
|
30
|
+
imageSize = "fit",
|
|
31
|
+
measure,
|
|
32
|
+
imagePreview = false,
|
|
33
|
+
className,
|
|
34
|
+
children,
|
|
35
|
+
onClick,
|
|
36
|
+
onKeyDown,
|
|
37
|
+
...rest
|
|
38
|
+
}, ref) {
|
|
39
|
+
const { t } = useTranslation();
|
|
40
|
+
const root = React.useRef(null);
|
|
41
|
+
const [preview, setPreview] = React.useState(null);
|
|
42
|
+
const label = React.useCallback(
|
|
43
|
+
(alt) => alt ? t("dataDisplay.image.previewLabel", { alt }) : t("dataDisplay.image.previewUnnamed"),
|
|
44
|
+
[t]
|
|
45
|
+
);
|
|
46
|
+
useMarkedImages(root, imagePreview, label);
|
|
47
|
+
const open = (target) => {
|
|
48
|
+
if (!imagePreview || !(target instanceof HTMLImageElement)) return false;
|
|
49
|
+
if (!target.hasAttribute("data-prose-preview")) return false;
|
|
50
|
+
const images = [...root.current.querySelectorAll("img[data-prose-preview]")];
|
|
51
|
+
setPreview({
|
|
52
|
+
items: images.map((img) => ({ src: img.currentSrc || img.src, alt: img.alt })),
|
|
53
|
+
current: Math.max(images.indexOf(target), 0)
|
|
54
|
+
});
|
|
55
|
+
return true;
|
|
56
|
+
};
|
|
57
|
+
const body = /* @__PURE__ */ jsx(
|
|
6
58
|
"div",
|
|
7
59
|
{
|
|
8
|
-
ref
|
|
60
|
+
ref: (node) => {
|
|
61
|
+
root.current = node;
|
|
62
|
+
if (typeof ref === "function") ref(node);
|
|
63
|
+
else if (ref) ref.current = node;
|
|
64
|
+
},
|
|
9
65
|
"data-slot": "prose",
|
|
10
66
|
"data-size": size === "md" ? void 0 : size,
|
|
11
67
|
"data-image-size": imageSize === "fit" ? void 0 : imageSize,
|
|
12
68
|
"data-measure": measure,
|
|
13
69
|
className: cn("ui-prose", className),
|
|
70
|
+
onClick: (event) => {
|
|
71
|
+
onClick?.(event);
|
|
72
|
+
open(event.target);
|
|
73
|
+
},
|
|
74
|
+
onKeyDown: (event) => {
|
|
75
|
+
onKeyDown?.(event);
|
|
76
|
+
if ((event.key === "Enter" || event.key === " ") && open(event.target)) {
|
|
77
|
+
event.preventDefault();
|
|
78
|
+
}
|
|
79
|
+
},
|
|
14
80
|
...rest,
|
|
15
81
|
children
|
|
16
82
|
}
|
|
17
83
|
);
|
|
84
|
+
if (!imagePreview) return body;
|
|
85
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
86
|
+
body,
|
|
87
|
+
/* @__PURE__ */ jsx(
|
|
88
|
+
ImagePreviewGroup,
|
|
89
|
+
{
|
|
90
|
+
items: preview?.items ?? [],
|
|
91
|
+
preview: {
|
|
92
|
+
visible: preview !== null,
|
|
93
|
+
onVisibleChange: (visible) => {
|
|
94
|
+
if (!visible) setPreview(null);
|
|
95
|
+
},
|
|
96
|
+
current: preview?.current ?? 0,
|
|
97
|
+
onChange: (current) => setPreview((p) => p ? { ...p, current } : p)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
] });
|
|
18
102
|
});
|
|
19
103
|
export {
|
|
20
104
|
Prose
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "AUTO-GENERATED by scripts/gen-measurement-contract.mjs — do not edit. Read this instead of guessing: docs/MEASUREMENT-CONTRACT.md.",
|
|
3
|
-
"version": "31.
|
|
3
|
+
"version": "31.26.0",
|
|
4
4
|
"targetSize": {
|
|
5
5
|
"standard": "WCAG 2.2 SC 2.5.8 Target Size (Minimum), level AA — 24×24 CSS px",
|
|
6
6
|
"min": 24,
|
|
@@ -49,6 +49,13 @@ export type ProseProp = {
|
|
|
49
49
|
* Unset = the full width of the container.
|
|
50
50
|
*/
|
|
51
51
|
measure?: FlexMeasureProp;
|
|
52
|
+
/**
|
|
53
|
+
* Open the body's images in the kit image preview (gh#1150): a click, Enter or Space on an image
|
|
54
|
+
* opens it, paging through every other previewable image of the body in document order. Works
|
|
55
|
+
* on any HTML the body renders — `@godxjp/markdown` output included — with no `img` override.
|
|
56
|
+
* An image inside a link stays the link's, and a kit `Image` keeps its own preview.
|
|
57
|
+
*/
|
|
58
|
+
imagePreview?: boolean;
|
|
52
59
|
className?: ClassNameProp;
|
|
53
60
|
children?: ChildrenProp;
|
|
54
61
|
};
|
package/dist/styles/control.css
CHANGED
|
@@ -224,10 +224,14 @@
|
|
|
224
224
|
.ui-button.ui-button--bare::after {
|
|
225
225
|
content: "";
|
|
226
226
|
position: absolute;
|
|
227
|
-
inset:
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
227
|
+
inset-block: min(
|
|
228
|
+
0px,
|
|
229
|
+
calc((100% - var(--button-bare-target-size, var(--control-height-xs))) / 2)
|
|
230
|
+
);
|
|
231
|
+
inset-inline: min(
|
|
232
|
+
0px,
|
|
233
|
+
calc((100% - var(--button-bare-target-size, var(--control-height-xs))) / 2)
|
|
234
|
+
);
|
|
231
235
|
}
|
|
232
236
|
|
|
233
237
|
.ui-button--default-size {
|
|
@@ -306,15 +310,13 @@
|
|
|
306
310
|
.ui-segmented-item::after {
|
|
307
311
|
content: "";
|
|
308
312
|
position: absolute;
|
|
309
|
-
inset:
|
|
310
|
-
|
|
311
|
-
min-block-size: var(--control-height-default);
|
|
312
|
-
margin: auto;
|
|
313
|
+
inset-block: min(0px, calc((100% - var(--control-height-default)) / 2));
|
|
314
|
+
inset-inline: min(0px, calc((100% - var(--control-height-default)) / 2));
|
|
313
315
|
}
|
|
314
316
|
|
|
315
317
|
[data-slot="toggle-group-item"].ui-toggle::after,
|
|
316
318
|
.ui-segmented-item::after {
|
|
317
|
-
|
|
319
|
+
inset-inline: 0;
|
|
318
320
|
}
|
|
319
321
|
|
|
320
322
|
.ui-command-item {
|
|
@@ -1065,6 +1067,15 @@
|
|
|
1065
1067
|
color: hsl(var(--foreground));
|
|
1066
1068
|
}
|
|
1067
1069
|
|
|
1070
|
+
@media (pointer: coarse) {
|
|
1071
|
+
.ui-search-input-clear::after {
|
|
1072
|
+
content: "";
|
|
1073
|
+
position: absolute;
|
|
1074
|
+
inset-block: min(0px, calc((100% - var(--control-height-default)) / 2));
|
|
1075
|
+
inset-inline: min(0px, calc((100% - var(--control-height-default)) / 2));
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1068
1079
|
@keyframes spin {
|
|
1069
1080
|
to {
|
|
1070
1081
|
transform: rotate(360deg);
|
|
@@ -1417,6 +1417,18 @@
|
|
|
1417
1417
|
background: hsl(var(--muted));
|
|
1418
1418
|
}
|
|
1419
1419
|
|
|
1420
|
+
.ui-prose :is(th, td)[data-short] {
|
|
1421
|
+
white-space: nowrap;
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1424
|
+
.ui-prose :is(th, td) img {
|
|
1425
|
+
max-inline-size: var(--prose-cell-image-max-inline-size);
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
.ui-prose img[data-prose-preview] {
|
|
1429
|
+
cursor: zoom-in;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1420
1432
|
.ui-prose img {
|
|
1421
1433
|
max-inline-size: 100%;
|
|
1422
1434
|
block-size: auto;
|
|
@@ -161,13 +161,9 @@
|
|
|
161
161
|
:is(.ui-dialog-close, .ui-sheet-close)::after {
|
|
162
162
|
content: "";
|
|
163
163
|
position: absolute;
|
|
164
|
-
|
|
165
|
-
inset-
|
|
166
|
-
|
|
167
|
-
min-inline-size: var(--dialog-close-size);
|
|
168
|
-
min-block-size: var(--dialog-close-size);
|
|
169
|
-
inline-size: 100%;
|
|
170
|
-
block-size: 100%;
|
|
164
|
+
|
|
165
|
+
inset-block: min(0px, calc((100% - var(--dialog-close-size)) / 2));
|
|
166
|
+
inset-inline: min(0px, calc((100% - var(--dialog-close-size)) / 2));
|
|
171
167
|
}
|
|
172
168
|
|
|
173
169
|
.ui-dialog-close:hover {
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
.ui-accordion-trigger,
|
|
37
37
|
.ui-carousel-dot,
|
|
38
38
|
.ui-rating-star,
|
|
39
|
+
.ui-prose img[data-prose-preview],
|
|
39
40
|
a.ui-list-row,
|
|
40
41
|
|
|
41
42
|
a[data-slot="card"],
|
|
@@ -105,6 +106,7 @@
|
|
|
105
106
|
.ui-accordion-trigger,
|
|
106
107
|
.ui-carousel-dot,
|
|
107
108
|
.ui-rating-star,
|
|
109
|
+
.ui-prose img[data-prose-preview],
|
|
108
110
|
a.ui-list-row,
|
|
109
111
|
a[data-slot="card"],
|
|
110
112
|
button[data-slot="card"],
|
package/dist/styles/layers.json
CHANGED
|
@@ -796,6 +796,11 @@
|
|
|
796
796
|
}
|
|
797
797
|
|
|
798
798
|
@media (pointer: coarse) {
|
|
799
|
+
|
|
800
|
+
.ui-breadcrumb-list {
|
|
801
|
+
row-gap: max(var(--space-inline-xs), calc(var(--control-height-default) - 1lh));
|
|
802
|
+
}
|
|
803
|
+
|
|
799
804
|
.ui-breadcrumb-item :is(a[href], .ui-breadcrumb-menu-trigger) {
|
|
800
805
|
|
|
801
806
|
position: relative;
|
|
@@ -464,6 +464,10 @@
|
|
|
464
464
|
:root {
|
|
465
465
|
--control-height-compact: var(--band-height-xl);
|
|
466
466
|
--control-height-default: var(--band-height-xl);
|
|
467
|
+
|
|
468
|
+
--search-input-end-padding: calc(
|
|
469
|
+
var(--search-input-edge-inset) + var(--touch-target-min) / 2 + var(--band-height-xl) / 2
|
|
470
|
+
);
|
|
467
471
|
}
|
|
468
472
|
}
|
|
469
473
|
|
|
@@ -55,6 +55,8 @@
|
|
|
55
55
|
--prose-quote-space-inline: var(--space-3);
|
|
56
56
|
--prose-code-font-size: calc(1em / var(--font-size-ratio));
|
|
57
57
|
--prose-code-space-inline: var(--space-1);
|
|
58
|
+
|
|
59
|
+
--prose-cell-image-max-inline-size: 20rem;
|
|
58
60
|
--prose-code-radius: initial;
|
|
59
61
|
|
|
60
62
|
--prose-link-color: initial;
|