@synopackageland/ui 0.19.10 → 0.20.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 +12 -0
- package/README.md +19 -13
- package/dist/components/primitives/progress/Progress.vue.d.ts +3 -0
- package/dist/index.js +24 -12
- package/dist/json/catalog.d.ts +2 -0
- package/dist/json/registry.d.ts +34 -0
- package/dist/json-ai-prompt.md +1 -1
- package/dist/json-catalog.schema.json +11 -1
- package/dist/json-preview/preview.js +230 -217
- package/dist/json.js +3 -2
- package/dist/reka-runtime.json +1 -1
- package/dist/theme.css +1 -1
- package/dist/themes/dsm7-embedded-theme.css +1 -1
- package/dist/themes/dsm7-embedded.css +1 -1
- package/dist/themes/dsm7.css +1 -1
- package/docs/layout-rules.md +14 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.20.0 (2026-11-04)
|
|
4
|
+
|
|
5
|
+
- `PageContent height="fill"` gives its height to a `SectionTabs fill` or a `SettingsPage` however deeply the App wraps it: every element between the page body and that component becomes a flex column that takes the room its siblings leave, so an App needs no CSS of its own to pass the height through its page wrappers. A hidden wrapper (`v-show`, `hidden`) stays hidden.
|
|
6
|
+
- In such a page, a `SectionTabs fill` tab that is not a `SettingsPage` scrolls under the fixed strip instead of running past the page's bottom; a `SettingsPage` tab still scrolls only its own body over its footer.
|
|
7
|
+
- [Layout rules](docs/layout-rules.md) describe the current page layout: no page title under a sidebar that names the page, the page's buttons in a bar above it, and only the content scrolling. A migration section lists the CSS an App can drop.
|
|
8
|
+
- Fix long `Select` and `Combobox` lists showing no scrollbar, so a list that scrolls no longer looked cut off. Reka hides the native bar inside its list viewports; the DSM scrollbar is drawn there again, in light and dark, while `ScrollArea` keeps hiding its own bar.
|
|
9
|
+
|
|
10
|
+
## 0.19.11 (2026-11-03)
|
|
11
|
+
|
|
12
|
+
- `Progress` draws its track as a faint tint of its own tone (`--ui-primary-soft`, `--ui-success-soft`, `--ui-warning-soft`, `--ui-danger-soft`) instead of the grey border colour, so a bar never sits on a grey track.
|
|
13
|
+
- `Progress` takes `indeterminate` for a total that is not known yet, such as a download whose size the server has not sent: a segment slides along the track, `aria-valuenow` is left out and no percentage is shown. With reduced motion the segment rests across the track, dimmed.
|
|
14
|
+
|
|
3
15
|
## 0.19.10 (2026-11-03)
|
|
4
16
|
|
|
5
17
|
- `ConnectionTopology` takes `cards` and `layout`. With `cards`, every lane is a card of one height (the tallest sets it) with node boxes of one size, each link word is centred on its own segment (one word on the middle of a lane with no relay), and the lines are solid or dashed instead of flowing dots. `layout="columns"` sets the cards side by side from 560px of container width. Without `cards` nothing changes. The real-browser check measures card heights, node boxes and word centres.
|
package/README.md
CHANGED
|
@@ -437,6 +437,12 @@ under its sticky header, with the pager always in view. Pages that are not
|
|
|
437
437
|
`fill` in the same layout scroll as before. In the SDK's `AppShell`, the same
|
|
438
438
|
is a page's `fill: true`.
|
|
439
439
|
|
|
440
|
+
A settings page fills the same way: `PageContent height="fill"` gives the
|
|
441
|
+
height to a `SectionTabs fill` or a `SettingsPage` through the App's own
|
|
442
|
+
wrapper elements, with no CSS of their own. The tab strip and the footer stay,
|
|
443
|
+
only the sections scroll, and a tab that is not a `SettingsPage` scrolls under
|
|
444
|
+
the strip. The SDK's `AppShell` fills such a page by itself.
|
|
445
|
+
|
|
440
446
|
```vue
|
|
441
447
|
<AppLayout height="fill" min-height="0">
|
|
442
448
|
<template #sidebar>…</template>
|
|
@@ -964,8 +970,8 @@ Use the pnpm version specified in `package.json`.
|
|
|
964
970
|
```bash
|
|
965
971
|
pnpm story # component workbench
|
|
966
972
|
pnpm dev # rebuild dist when library source changes
|
|
967
|
-
|
|
968
|
-
|
|
973
|
+
npm run gates # basic build, lint, typecheck, unit tests, notices and package audit
|
|
974
|
+
npm run gates:full # optional browser/workbench/registry integrations, only when requested
|
|
969
975
|
pnpm story:build # build the component workbench
|
|
970
976
|
pnpm check:host # after pnpm build: DSM host simulation screenshots (Chrome)
|
|
971
977
|
pnpm check:date-picker # after pnpm build: app-local calendars, Dialog Escape and full-bleed pages (ego-browser)
|
|
@@ -973,8 +979,9 @@ pnpm check:switch # after pnpm build: Switch knob geometry and click toggling (C
|
|
|
973
979
|
pnpm check:topology # after pnpm build: ConnectionTopology motion, keyboard and narrow layout (Chrome)
|
|
974
980
|
```
|
|
975
981
|
|
|
976
|
-
Use `
|
|
977
|
-
|
|
982
|
+
Use `npm run gates` for development and release. Extended checks require an
|
|
983
|
+
explicit `npm run gates:full`; full is optional. `pnpm check` and `check:fast`
|
|
984
|
+
are basic aliases. See [release checks](docs/release-checks.md).
|
|
978
985
|
`check` prints one line per passing task and a failing task's whole log.
|
|
979
986
|
|
|
980
987
|
With `SYNOPKGLAND_DOCKER_SSH=<ssh host>`, `pnpm check`, `check:fast` and
|
|
@@ -1044,12 +1051,11 @@ See the [documentation](https://www.varvis.me/docs/) for usage.
|
|
|
1044
1051
|
|
|
1045
1052
|
### CI and tag releases
|
|
1046
1053
|
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
are cached. Browser screenshots and measurements are retained for seven days.
|
|
1054
|
+
Automatic CI runs basic checks. The disabled CI/release workflow templates
|
|
1055
|
+
share `.github/actions/verify`: frozen dependency installation and
|
|
1056
|
+
`npm run gates` (build, lint, typecheck, unit tests, notices and package audit).
|
|
1057
|
+
Browser integrations, workbench builds and registry consumer smoke require
|
|
1058
|
+
`npm run gates:full` only when explicitly requested.
|
|
1053
1059
|
|
|
1054
1060
|
To release the package:
|
|
1055
1061
|
|
|
@@ -1066,8 +1072,8 @@ To release the package:
|
|
|
1066
1072
|
```
|
|
1067
1073
|
|
|
1068
1074
|
The release workflow checks the exact tag/version, default-branch ancestry,
|
|
1069
|
-
nonempty changelog section and npm version availability. It runs the same
|
|
1070
|
-
|
|
1075
|
+
nonempty changelog section and npm version availability. It runs the same basic
|
|
1076
|
+
checks, stages the package into an empty directory, packs it, and audits
|
|
1071
1077
|
the actual tarball (every exported dist file, MIT license, notices, bundled Reka,
|
|
1072
1078
|
package name and no `publishConfig`). A separate job rechecks the artifact and
|
|
1073
1079
|
registry before publishing with `NPM_TOKEN`, then creates a GitHub Release from
|
|
@@ -1077,7 +1083,7 @@ If npm publication succeeds but GitHub Release creation fails, create the Releas
|
|
|
1077
1083
|
from the changelog separately; rerunning publishing intentionally refuses the
|
|
1078
1084
|
already published version.
|
|
1079
1085
|
|
|
1080
|
-
On branches and PRs, the release workflow performs
|
|
1086
|
+
On branches and PRs, the release workflow performs basic validation through
|
|
1081
1087
|
`npm publish <tgz> --dry-run --access public --ignore-scripts`, without npm
|
|
1082
1088
|
credentials or creating a GitHub Release. An existing npm version is allowed only
|
|
1083
1089
|
in dry-run mode and is reported explicitly; npm 11 also rejects duplicate versions
|
|
@@ -8,11 +8,14 @@ type __VLS_Props = {
|
|
|
8
8
|
tone?: 'primary' | 'success' | 'warning' | 'danger';
|
|
9
9
|
/** `sm` is a 4px line that fits under a label in a dense table row. */
|
|
10
10
|
size?: 'md' | 'sm';
|
|
11
|
+
/** The total is not known yet: a segment moves along the track and no value is shown. */
|
|
12
|
+
indeterminate?: boolean;
|
|
11
13
|
};
|
|
12
14
|
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
13
15
|
size: "md" | "sm";
|
|
14
16
|
value: number;
|
|
15
17
|
max: number;
|
|
18
|
+
indeterminate: boolean;
|
|
16
19
|
tone: "primary" | "success" | "warning" | "danger";
|
|
17
20
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
18
21
|
declare const _default: typeof __VLS_export;
|
package/dist/index.js
CHANGED
|
@@ -21017,9 +21017,10 @@ const Zc = "z-[1450] max-w-72 rounded-[var(--ui-radius-sm)] bg-[var(--ui-tooltip
|
|
|
21017
21017
|
key: 0,
|
|
21018
21018
|
class: "mb-1.5 flex justify-between gap-3 text-[12px] text-[var(--ui-text-secondary)]"
|
|
21019
21019
|
}, OC = {
|
|
21020
|
+
key: 0,
|
|
21020
21021
|
"data-ui-progress-value": "",
|
|
21021
21022
|
class: "tabular-nums"
|
|
21022
|
-
}, IC = ["aria-valuenow", "aria-valuemax", "aria-label", "data-tone"], Jc = /* @__PURE__ */ O({
|
|
21023
|
+
}, IC = ["aria-valuenow", "aria-valuemax", "aria-label", "data-tone", "data-indeterminate"], Jc = /* @__PURE__ */ O({
|
|
21023
21024
|
inheritAttrs: !1,
|
|
21024
21025
|
__name: "Progress",
|
|
21025
21026
|
props: {
|
|
@@ -21028,37 +21029,48 @@ const Zc = "z-[1450] max-w-72 rounded-[var(--ui-radius-sm)] bg-[var(--ui-tooltip
|
|
|
21028
21029
|
label: {},
|
|
21029
21030
|
valueLabel: {},
|
|
21030
21031
|
tone: { default: "primary" },
|
|
21031
|
-
size: { default: "md" }
|
|
21032
|
+
size: { default: "md" },
|
|
21033
|
+
indeterminate: { type: Boolean, default: !1 }
|
|
21032
21034
|
},
|
|
21033
21035
|
setup(e) {
|
|
21034
|
-
const a = In(), t = () => Object.fromEntries(Object.entries(a).filter(([
|
|
21036
|
+
const a = In(), t = () => Object.fromEntries(Object.entries(a).filter(([s]) => s !== "class" && s !== "style")), n = e, o = {
|
|
21035
21037
|
primary: "bg-[var(--ui-primary)]",
|
|
21036
21038
|
success: "bg-[var(--ui-success)]",
|
|
21037
21039
|
warning: "bg-[var(--ui-warning)]",
|
|
21038
21040
|
danger: "bg-[var(--ui-danger)]"
|
|
21039
|
-
}, r =
|
|
21040
|
-
|
|
21041
|
+
}, r = {
|
|
21042
|
+
primary: "bg-[var(--ui-primary-soft)]",
|
|
21043
|
+
success: "bg-[var(--ui-success-soft)]",
|
|
21044
|
+
warning: "bg-[var(--ui-warning-soft)]",
|
|
21045
|
+
danger: "bg-[var(--ui-danger-soft)]"
|
|
21046
|
+
}, l = y(() => n.max <= 0 ? 0 : Math.min(100, Math.max(0, n.value / n.max * 100)));
|
|
21047
|
+
return (s, u) => (d(), g("div", {
|
|
21041
21048
|
class: Q(i(a).class),
|
|
21042
21049
|
style: Ce(i(a).style),
|
|
21043
21050
|
"data-syno-pkg-land-ui": ""
|
|
21044
21051
|
}, [
|
|
21045
21052
|
e.label || e.valueLabel ? (d(), g("div", qC, [
|
|
21046
21053
|
B("span", null, K(e.label), 1),
|
|
21047
|
-
|
|
21054
|
+
e.valueLabel !== void 0 || !e.indeterminate ? (d(), g("span", OC, K(e.valueLabel ?? `${Math.round(l.value)}%`), 1)) : A("", !0)
|
|
21048
21055
|
])) : A("", !0),
|
|
21049
21056
|
B("div", ie({
|
|
21050
|
-
class: ["overflow-hidden rounded-full
|
|
21057
|
+
class: ["overflow-hidden rounded-full", r[e.tone], e.size === "sm" ? "h-1" : "h-1.5"],
|
|
21051
21058
|
role: "progressbar",
|
|
21052
|
-
"aria-valuenow": n.value,
|
|
21059
|
+
"aria-valuenow": e.indeterminate ? void 0 : n.value,
|
|
21053
21060
|
"aria-valuemin": 0,
|
|
21054
21061
|
"aria-valuemax": n.max,
|
|
21055
21062
|
"aria-label": e.label,
|
|
21056
|
-
"data-tone": e.tone
|
|
21063
|
+
"data-tone": e.tone,
|
|
21064
|
+
"data-indeterminate": e.indeterminate ? "" : void 0
|
|
21057
21065
|
}, t()), [
|
|
21058
|
-
|
|
21066
|
+
e.indeterminate ? (d(), g("div", {
|
|
21067
|
+
key: 0,
|
|
21068
|
+
class: Q(["ui-progress-indeterminate h-full rounded-full", o[e.tone]])
|
|
21069
|
+
}, null, 2)) : (d(), g("div", {
|
|
21070
|
+
key: 1,
|
|
21059
21071
|
class: Q(["h-full rounded-full transition-[width] duration-[var(--ui-motion-normal)]", o[e.tone]]),
|
|
21060
|
-
style: Ce({ width: `${
|
|
21061
|
-
}, null, 6)
|
|
21072
|
+
style: Ce({ width: `${l.value}%` })
|
|
21073
|
+
}, null, 6))
|
|
21062
21074
|
], 16, IC)
|
|
21063
21075
|
], 6));
|
|
21064
21076
|
}
|
package/dist/json/catalog.d.ts
CHANGED
|
@@ -375,6 +375,7 @@ export declare const synoJsonComponentDefinitions: {
|
|
|
375
375
|
success: "success";
|
|
376
376
|
warning: "warning";
|
|
377
377
|
}>>;
|
|
378
|
+
indeterminate: z.ZodOptional<z.ZodBoolean>;
|
|
378
379
|
}, z.core.$strip>;
|
|
379
380
|
description: string;
|
|
380
381
|
};
|
|
@@ -917,6 +918,7 @@ export declare const synoJsonCatalog: import('@json-render/core').Catalog<{
|
|
|
917
918
|
success: "success";
|
|
918
919
|
warning: "warning";
|
|
919
920
|
}>>;
|
|
921
|
+
indeterminate: z.ZodOptional<z.ZodBoolean>;
|
|
920
922
|
}, z.core.$strip>;
|
|
921
923
|
description: string;
|
|
922
924
|
};
|
package/dist/json/registry.d.ts
CHANGED
|
@@ -395,6 +395,7 @@ export declare const synoJsonRenderers: {
|
|
|
395
395
|
success: "success";
|
|
396
396
|
warning: "warning";
|
|
397
397
|
}>>;
|
|
398
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
398
399
|
}, import('zod/v4/core').$strip>;
|
|
399
400
|
description: string;
|
|
400
401
|
};
|
|
@@ -941,6 +942,7 @@ export declare const synoJsonRenderers: {
|
|
|
941
942
|
success: "success";
|
|
942
943
|
warning: "warning";
|
|
943
944
|
}>>;
|
|
945
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
944
946
|
}, import('zod/v4/core').$strip>;
|
|
945
947
|
description: string;
|
|
946
948
|
};
|
|
@@ -1487,6 +1489,7 @@ export declare const synoJsonRenderers: {
|
|
|
1487
1489
|
success: "success";
|
|
1488
1490
|
warning: "warning";
|
|
1489
1491
|
}>>;
|
|
1492
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
1490
1493
|
}, import('zod/v4/core').$strip>;
|
|
1491
1494
|
description: string;
|
|
1492
1495
|
};
|
|
@@ -2033,6 +2036,7 @@ export declare const synoJsonRenderers: {
|
|
|
2033
2036
|
success: "success";
|
|
2034
2037
|
warning: "warning";
|
|
2035
2038
|
}>>;
|
|
2039
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
2036
2040
|
}, import('zod/v4/core').$strip>;
|
|
2037
2041
|
description: string;
|
|
2038
2042
|
};
|
|
@@ -2579,6 +2583,7 @@ export declare const synoJsonRenderers: {
|
|
|
2579
2583
|
success: "success";
|
|
2580
2584
|
warning: "warning";
|
|
2581
2585
|
}>>;
|
|
2586
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
2582
2587
|
}, import('zod/v4/core').$strip>;
|
|
2583
2588
|
description: string;
|
|
2584
2589
|
};
|
|
@@ -3125,6 +3130,7 @@ export declare const synoJsonRenderers: {
|
|
|
3125
3130
|
success: "success";
|
|
3126
3131
|
warning: "warning";
|
|
3127
3132
|
}>>;
|
|
3133
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
3128
3134
|
}, import('zod/v4/core').$strip>;
|
|
3129
3135
|
description: string;
|
|
3130
3136
|
};
|
|
@@ -3671,6 +3677,7 @@ export declare const synoJsonRenderers: {
|
|
|
3671
3677
|
success: "success";
|
|
3672
3678
|
warning: "warning";
|
|
3673
3679
|
}>>;
|
|
3680
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
3674
3681
|
}, import('zod/v4/core').$strip>;
|
|
3675
3682
|
description: string;
|
|
3676
3683
|
};
|
|
@@ -4217,6 +4224,7 @@ export declare const synoJsonRenderers: {
|
|
|
4217
4224
|
success: "success";
|
|
4218
4225
|
warning: "warning";
|
|
4219
4226
|
}>>;
|
|
4227
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
4220
4228
|
}, import('zod/v4/core').$strip>;
|
|
4221
4229
|
description: string;
|
|
4222
4230
|
};
|
|
@@ -4763,6 +4771,7 @@ export declare const synoJsonRenderers: {
|
|
|
4763
4771
|
success: "success";
|
|
4764
4772
|
warning: "warning";
|
|
4765
4773
|
}>>;
|
|
4774
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
4766
4775
|
}, import('zod/v4/core').$strip>;
|
|
4767
4776
|
description: string;
|
|
4768
4777
|
};
|
|
@@ -5309,6 +5318,7 @@ export declare const synoJsonRenderers: {
|
|
|
5309
5318
|
success: "success";
|
|
5310
5319
|
warning: "warning";
|
|
5311
5320
|
}>>;
|
|
5321
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
5312
5322
|
}, import('zod/v4/core').$strip>;
|
|
5313
5323
|
description: string;
|
|
5314
5324
|
};
|
|
@@ -5855,6 +5865,7 @@ export declare const synoJsonRenderers: {
|
|
|
5855
5865
|
success: "success";
|
|
5856
5866
|
warning: "warning";
|
|
5857
5867
|
}>>;
|
|
5868
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
5858
5869
|
}, import('zod/v4/core').$strip>;
|
|
5859
5870
|
description: string;
|
|
5860
5871
|
};
|
|
@@ -6401,6 +6412,7 @@ export declare const synoJsonRenderers: {
|
|
|
6401
6412
|
success: "success";
|
|
6402
6413
|
warning: "warning";
|
|
6403
6414
|
}>>;
|
|
6415
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
6404
6416
|
}, import('zod/v4/core').$strip>;
|
|
6405
6417
|
description: string;
|
|
6406
6418
|
};
|
|
@@ -6947,6 +6959,7 @@ export declare const synoJsonRenderers: {
|
|
|
6947
6959
|
success: "success";
|
|
6948
6960
|
warning: "warning";
|
|
6949
6961
|
}>>;
|
|
6962
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
6950
6963
|
}, import('zod/v4/core').$strip>;
|
|
6951
6964
|
description: string;
|
|
6952
6965
|
};
|
|
@@ -7493,6 +7506,7 @@ export declare const synoJsonRenderers: {
|
|
|
7493
7506
|
success: "success";
|
|
7494
7507
|
warning: "warning";
|
|
7495
7508
|
}>>;
|
|
7509
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
7496
7510
|
}, import('zod/v4/core').$strip>;
|
|
7497
7511
|
description: string;
|
|
7498
7512
|
};
|
|
@@ -8039,6 +8053,7 @@ export declare const synoJsonRenderers: {
|
|
|
8039
8053
|
success: "success";
|
|
8040
8054
|
warning: "warning";
|
|
8041
8055
|
}>>;
|
|
8056
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
8042
8057
|
}, import('zod/v4/core').$strip>;
|
|
8043
8058
|
description: string;
|
|
8044
8059
|
};
|
|
@@ -8585,6 +8600,7 @@ export declare const synoJsonRenderers: {
|
|
|
8585
8600
|
success: "success";
|
|
8586
8601
|
warning: "warning";
|
|
8587
8602
|
}>>;
|
|
8603
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
8588
8604
|
}, import('zod/v4/core').$strip>;
|
|
8589
8605
|
description: string;
|
|
8590
8606
|
};
|
|
@@ -9131,6 +9147,7 @@ export declare const synoJsonRenderers: {
|
|
|
9131
9147
|
success: "success";
|
|
9132
9148
|
warning: "warning";
|
|
9133
9149
|
}>>;
|
|
9150
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
9134
9151
|
}, import('zod/v4/core').$strip>;
|
|
9135
9152
|
description: string;
|
|
9136
9153
|
};
|
|
@@ -9677,6 +9694,7 @@ export declare const synoJsonRenderers: {
|
|
|
9677
9694
|
success: "success";
|
|
9678
9695
|
warning: "warning";
|
|
9679
9696
|
}>>;
|
|
9697
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
9680
9698
|
}, import('zod/v4/core').$strip>;
|
|
9681
9699
|
description: string;
|
|
9682
9700
|
};
|
|
@@ -10223,6 +10241,7 @@ export declare const synoJsonRenderers: {
|
|
|
10223
10241
|
success: "success";
|
|
10224
10242
|
warning: "warning";
|
|
10225
10243
|
}>>;
|
|
10244
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
10226
10245
|
}, import('zod/v4/core').$strip>;
|
|
10227
10246
|
description: string;
|
|
10228
10247
|
};
|
|
@@ -10769,6 +10788,7 @@ export declare const synoJsonRenderers: {
|
|
|
10769
10788
|
success: "success";
|
|
10770
10789
|
warning: "warning";
|
|
10771
10790
|
}>>;
|
|
10791
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
10772
10792
|
}, import('zod/v4/core').$strip>;
|
|
10773
10793
|
description: string;
|
|
10774
10794
|
};
|
|
@@ -11315,6 +11335,7 @@ export declare const synoJsonRenderers: {
|
|
|
11315
11335
|
success: "success";
|
|
11316
11336
|
warning: "warning";
|
|
11317
11337
|
}>>;
|
|
11338
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
11318
11339
|
}, import('zod/v4/core').$strip>;
|
|
11319
11340
|
description: string;
|
|
11320
11341
|
};
|
|
@@ -11861,6 +11882,7 @@ export declare const synoJsonRenderers: {
|
|
|
11861
11882
|
success: "success";
|
|
11862
11883
|
warning: "warning";
|
|
11863
11884
|
}>>;
|
|
11885
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
11864
11886
|
}, import('zod/v4/core').$strip>;
|
|
11865
11887
|
description: string;
|
|
11866
11888
|
};
|
|
@@ -12407,6 +12429,7 @@ export declare const synoJsonRenderers: {
|
|
|
12407
12429
|
success: "success";
|
|
12408
12430
|
warning: "warning";
|
|
12409
12431
|
}>>;
|
|
12432
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
12410
12433
|
}, import('zod/v4/core').$strip>;
|
|
12411
12434
|
description: string;
|
|
12412
12435
|
};
|
|
@@ -12953,6 +12976,7 @@ export declare const synoJsonRenderers: {
|
|
|
12953
12976
|
success: "success";
|
|
12954
12977
|
warning: "warning";
|
|
12955
12978
|
}>>;
|
|
12979
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
12956
12980
|
}, import('zod/v4/core').$strip>;
|
|
12957
12981
|
description: string;
|
|
12958
12982
|
};
|
|
@@ -13499,6 +13523,7 @@ export declare const synoJsonRenderers: {
|
|
|
13499
13523
|
success: "success";
|
|
13500
13524
|
warning: "warning";
|
|
13501
13525
|
}>>;
|
|
13526
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
13502
13527
|
}, import('zod/v4/core').$strip>;
|
|
13503
13528
|
description: string;
|
|
13504
13529
|
};
|
|
@@ -14045,6 +14070,7 @@ export declare const synoJsonRenderers: {
|
|
|
14045
14070
|
success: "success";
|
|
14046
14071
|
warning: "warning";
|
|
14047
14072
|
}>>;
|
|
14073
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
14048
14074
|
}, import('zod/v4/core').$strip>;
|
|
14049
14075
|
description: string;
|
|
14050
14076
|
};
|
|
@@ -14591,6 +14617,7 @@ export declare const synoJsonRenderers: {
|
|
|
14591
14617
|
success: "success";
|
|
14592
14618
|
warning: "warning";
|
|
14593
14619
|
}>>;
|
|
14620
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
14594
14621
|
}, import('zod/v4/core').$strip>;
|
|
14595
14622
|
description: string;
|
|
14596
14623
|
};
|
|
@@ -15137,6 +15164,7 @@ export declare const synoJsonRenderers: {
|
|
|
15137
15164
|
success: "success";
|
|
15138
15165
|
warning: "warning";
|
|
15139
15166
|
}>>;
|
|
15167
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
15140
15168
|
}, import('zod/v4/core').$strip>;
|
|
15141
15169
|
description: string;
|
|
15142
15170
|
};
|
|
@@ -15683,6 +15711,7 @@ export declare const synoJsonRenderers: {
|
|
|
15683
15711
|
success: "success";
|
|
15684
15712
|
warning: "warning";
|
|
15685
15713
|
}>>;
|
|
15714
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
15686
15715
|
}, import('zod/v4/core').$strip>;
|
|
15687
15716
|
description: string;
|
|
15688
15717
|
};
|
|
@@ -16229,6 +16258,7 @@ export declare const synoJsonRenderers: {
|
|
|
16229
16258
|
success: "success";
|
|
16230
16259
|
warning: "warning";
|
|
16231
16260
|
}>>;
|
|
16261
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
16232
16262
|
}, import('zod/v4/core').$strip>;
|
|
16233
16263
|
description: string;
|
|
16234
16264
|
};
|
|
@@ -16775,6 +16805,7 @@ export declare const synoJsonRenderers: {
|
|
|
16775
16805
|
success: "success";
|
|
16776
16806
|
warning: "warning";
|
|
16777
16807
|
}>>;
|
|
16808
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
16778
16809
|
}, import('zod/v4/core').$strip>;
|
|
16779
16810
|
description: string;
|
|
16780
16811
|
};
|
|
@@ -17321,6 +17352,7 @@ export declare const synoJsonRenderers: {
|
|
|
17321
17352
|
success: "success";
|
|
17322
17353
|
warning: "warning";
|
|
17323
17354
|
}>>;
|
|
17355
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
17324
17356
|
}, import('zod/v4/core').$strip>;
|
|
17325
17357
|
description: string;
|
|
17326
17358
|
};
|
|
@@ -17867,6 +17899,7 @@ export declare const synoJsonRenderers: {
|
|
|
17867
17899
|
success: "success";
|
|
17868
17900
|
warning: "warning";
|
|
17869
17901
|
}>>;
|
|
17902
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
17870
17903
|
}, import('zod/v4/core').$strip>;
|
|
17871
17904
|
description: string;
|
|
17872
17905
|
};
|
|
@@ -18413,6 +18446,7 @@ export declare const synoJsonRenderers: {
|
|
|
18413
18446
|
success: "success";
|
|
18414
18447
|
warning: "warning";
|
|
18415
18448
|
}>>;
|
|
18449
|
+
indeterminate: import('zod').ZodOptional<import('zod').ZodBoolean>;
|
|
18416
18450
|
}, import('zod/v4/core').$strip>;
|
|
18417
18451
|
description: string;
|
|
18418
18452
|
};
|
package/dist/json-ai-prompt.md
CHANGED
|
@@ -73,7 +73,7 @@ AVAILABLE COMPONENTS (34):
|
|
|
73
73
|
- Card: { title?: string, layoutType?: "regular" | "compact", expandable?: boolean, expanded?: boolean, footerAlign?: "start" | "end" | "between" } - Grouped content with optional header/actions/footer. Do not use a Card just to add spacing. [accepts children; slots: header-actions, footer] [events: expandedChange]
|
|
74
74
|
- Callout: { tone?: "info" | "success" | "warning" | "danger", variant?: "soft" | "inline", title?: string, dismissible?: boolean, dismissKey?: string, code?: string, fill?: boolean } - A message that stays until its cause goes away: something to act on (a one-line title, at most one line of text, one action in `actions`) or a short risk note (`variant: inline`, longer text in `details` behind Learn more). The reader can close it (default); it comes back when its text changes, and `dismissible: false` keeps only a blocking requirement in view. A passing result such as Saved is a toast, not a Callout. Callout text has no closing period. Put a machine error code in `code`, not in the text. [accepts children; slots: actions, details] [events: close]
|
|
75
75
|
- EmptyState: { title: string, description?: string, icon?: string } - Empty/no-results state with optional recovery or create actions. [slots: actions]
|
|
76
|
-
- Progress: { value?: number, max?: number, label?: string, valueLabel?: string, tone?: "primary" | "success" | "warning" | "danger" } - Linear
|
|
76
|
+
- Progress: { value?: number, max?: number, label?: string, valueLabel?: string, tone?: "primary" | "success" | "warning" | "danger", indeterminate?: boolean } - Linear progress on a track tinted in its tone. indeterminate shows a moving segment while the total is unknown. Domain-specific progress visualizations should be custom components.
|
|
77
77
|
- Badge: { text: string, tone?: "neutral" | "info" | "success" | "warning" | "danger" } - Short status/category badge.
|
|
78
78
|
- Dialog: { open?: boolean, title?: string, description?: string, size?: "sm" | "md" | "lg" | "xl", width?: string, showClose?: boolean } - Modal task/dialog. Bind open to state. Put confirmation or form actions in footer. Without size it sizes to its content; size picks a DSM dialog width: sm one field, md a form with a text area, lg a wide form, xl tabs of settings. [accepts children; slots: footer] [events: openChange]
|
|
79
79
|
- DataTable: { columns: Array<{ key: string, label: string, width?: string, type?: "text" | "number" | "date" | "actions", align?: "left" | "center" | "right" }>, rows: Array<Record<string, unknown>>, rowKey?: string, emptyText?: string, compact?: boolean, mobileView?: "auto" | "cards" | "table" } - Simple resource table where cells display scalar row fields. Use an app extension component for rich/custom cells and row actions.
|
|
@@ -2255,7 +2255,7 @@
|
|
|
2255
2255
|
}
|
|
2256
2256
|
},
|
|
2257
2257
|
"then": {
|
|
2258
|
-
"description": "Linear
|
|
2258
|
+
"description": "Linear progress on a track tinted in its tone. indeterminate shows a moving segment while the total is unknown. Domain-specific progress visualizations should be custom components.",
|
|
2259
2259
|
"properties": {
|
|
2260
2260
|
"props": {
|
|
2261
2261
|
"type": "object",
|
|
@@ -2315,6 +2315,16 @@
|
|
|
2315
2315
|
"$ref": "#/$defs/expression"
|
|
2316
2316
|
}
|
|
2317
2317
|
]
|
|
2318
|
+
},
|
|
2319
|
+
"indeterminate": {
|
|
2320
|
+
"anyOf": [
|
|
2321
|
+
{
|
|
2322
|
+
"type": "boolean"
|
|
2323
|
+
},
|
|
2324
|
+
{
|
|
2325
|
+
"$ref": "#/$defs/expression"
|
|
2326
|
+
}
|
|
2327
|
+
]
|
|
2318
2328
|
}
|
|
2319
2329
|
},
|
|
2320
2330
|
"additionalProperties": false
|