@pgcorp/ui-kit 0.10.1 → 0.10.2
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/README.md +40 -0
- package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_d0cace23_scoped_d0cace23_lang.css +2 -0
- package/dist/assets/src/components/shared/containers/{SModal.css_vue_type_style_index_0_src_64c62e90_scoped_64c62e90_lang.css → SModal.css_vue_type_style_index_0_src_dc3c799e_scoped_dc3c799e_lang.css} +1 -1
- package/dist/assets/src/components/shared/controls/{SButton.css_vue_type_style_index_0_src_49f356bb_scoped_49f356bb_lang.css → SButton.css_vue_type_style_index_0_src_52ad38b1_scoped_52ad38b1_lang.css} +1 -1
- package/dist/assets/src/components/shared/controls/{SLink.css_vue_type_style_index_0_src_fc6fdfb3_scoped_fc6fdfb3_lang.css → SLink.css_vue_type_style_index_0_src_c7ae14e1_scoped_c7ae14e1_lang.css} +1 -1
- package/dist/assets/src/components/shared/data-display/SCodeBlock.css_vue_type_style_index_0_src_78557968_scoped_78557968_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/{SCodeEditor.css_vue_type_style_index_0_src_cad79088_scoped_cad79088_lang.css → SCodeEditor.css_vue_type_style_index_0_src_124ca461_scoped_124ca461_lang.css} +1 -1
- package/dist/assets/src/components/shared/data-display/SCodeWorkspaceEditor.css_vue_type_style_index_0_src_b200dc8e_scoped_b200dc8e_lang.css +2 -0
- package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_195d5c06_scoped_195d5c06_lang.css +2 -0
- package/dist/assets/src/components/shared/navigation/{SBottomNav.vue_vue_type_style_index_0_scoped_a0d16ca3_lang.css → SBottomNav.vue_vue_type_style_index_0_scoped_b3963080_lang.css} +1 -1
- package/dist/assets/src/components/shared/navigation/{SBreadcrumbs.css_vue_type_style_index_0_src_e2c5851e_scoped_e2c5851e_lang.css → SBreadcrumbs.css_vue_type_style_index_0_src_f836963c_scoped_f836963c_lang.css} +1 -1
- package/dist/assets/src/components/shared/persona/_internal/SPersonaRunConsole.css_vue_type_style_index_0_src_21bf807e_scoped_21bf807e_lang.css +2 -0
- package/dist/index.js +4 -2
- package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.d.ts +243 -0
- package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.js +7 -0
- package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.d.ts +721 -239
- package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.js +244 -4
- package/dist/src/components/icons/_internal/sputnigUiIconRuntime.d.ts +18 -0
- package/dist/src/components/icons/_internal/sputnigUiIconRuntime.js +99 -0
- package/dist/src/components/icons/sputnigUiIcons.d.ts +5 -81
- package/dist/src/components/icons/sputnigUiIcons.js +238 -394
- package/dist/src/components/layout/SAppShell.vue.d.ts +2 -2
- package/dist/src/components/layout/_internal/SAppBrand.vue.d.ts +3 -3
- package/dist/src/components/layout/types.d.ts +2 -2
- package/dist/src/components/shared/_internal/SDialogSurface.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/_internal/SMenuItem.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/_internal/SToastItem.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/_internal/STreeNode.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/containers/SCloudChromeRow.vue_vue_type_script_setup_true_lang.js +44 -44
- package/dist/src/components/shared/containers/SDrawer.vue.d.ts +2 -0
- package/dist/src/components/shared/containers/SDrawer.vue.js +2 -2
- package/dist/src/components/shared/containers/SDrawer.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/src/components/shared/containers/SModal.vue.d.ts +2 -0
- package/dist/src/components/shared/containers/SModal.vue.js +2 -2
- package/dist/src/components/shared/containers/SModal.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/src/components/shared/controls/SButton.vue.d.ts +32 -2
- package/dist/src/components/shared/controls/SButton.vue.js +2 -2
- package/dist/src/components/shared/controls/SButton.vue_vue_type_script_setup_true_lang.js +77 -79
- package/dist/src/components/shared/controls/SCheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/controls/SComboboxTrigger.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/controls/SContextToggleButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/controls/SDragHandle.vue_vue_type_script_setup_true_lang.js +21 -21
- package/dist/src/components/shared/controls/SLink.vue.d.ts +17 -1
- package/dist/src/components/shared/controls/SLink.vue.js +2 -2
- package/dist/src/components/shared/controls/SLink.vue_vue_type_script_setup_true_lang.js +22 -22
- package/dist/src/components/shared/controls/SListboxOption.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/controls/STextarea.d.ts +1 -1
- package/dist/src/components/shared/controls/STextarea.vue.d.ts +12 -18
- package/dist/src/components/shared/controls/_internal/SInlineTokenSurface.vue_vue_type_script_lang.js +1 -1
- package/dist/src/components/shared/data-display/SActionListItem.vue.d.ts +1 -1
- package/dist/src/components/shared/data-display/SChip.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/data-display/SCodeBlock.vue.d.ts +33 -11
- package/dist/src/components/shared/data-display/SCodeBlock.vue.js +2 -2
- package/dist/src/components/shared/data-display/SCodeBlock.vue_vue_type_script_setup_true_lang.js +77 -75
- package/dist/src/components/shared/data-display/SCodeEditor.vue.d.ts +22 -10
- package/dist/src/components/shared/data-display/SCodeEditor.vue.js +2 -2
- package/dist/src/components/shared/data-display/SCodeEditor.vue_vue_type_script_setup_true_lang.js +44 -44
- package/dist/src/components/shared/data-display/SCodeSearchPanel.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue.js +2 -2
- package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/src/components/shared/data-display/SCopyField.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/data-display/SDocBlock.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/data-display/SExpandableText.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/data-display/SMessage.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/data-display/STable.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue.js +2 -2
- package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/src/components/shared/database/SSqlEditor.vue_vue_type_script_setup_true_lang.js +7 -10
- package/dist/src/components/shared/navigation/SBottomNav.vue.js +2 -2
- package/dist/src/components/shared/navigation/SBottomNav.vue_vue_type_script_setup_true_lang.js +70 -68
- package/dist/src/components/shared/navigation/SBreadcrumbs.vue.js +2 -2
- package/dist/src/components/shared/navigation/SBreadcrumbs.vue_vue_type_script_setup_true_lang.js +20 -21
- package/dist/src/components/shared/persona/SPersonaProjectPicker.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/src/components/shared/persona/_internal/SPersonaRunConsole.vue.js +2 -2
- package/dist/src/components/shared/persona/_internal/SPersonaRunConsole.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/src/composables/useDialogOverlay.d.ts +2 -0
- package/dist/src/composables/useDialogOverlay.js +14 -7
- package/dist/src/internal/feedbackPresentation.js +1 -1
- package/docs/versioning.md +38 -10
- package/package.json +1 -1
- package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_1226da98_scoped_1226da98_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/SCodeBlock.css_vue_type_style_index_0_src_aad45526_scoped_aad45526_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/SCodeWorkspaceEditor.css_vue_type_style_index_0_src_864bce1d_scoped_864bce1d_lang.css +0 -2
- package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_63180598_scoped_63180598_lang.css +0 -2
- package/dist/assets/src/components/shared/persona/_internal/SPersonaRunConsole.css_vue_type_style_index_0_src_c71f59d4_scoped_c71f59d4_lang.css +0 -2
package/dist/src/components/shared/navigation/SBottomNav.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -4,9 +4,9 @@ import { useOwnedAttrs as n } from "../../../internal/ownedAttrs.js";
|
|
|
4
4
|
import r from "../data-display/SBadge.vue.js";
|
|
5
5
|
import { resolveLinkTarget as i } from "../../../internal/linkTarget.js";
|
|
6
6
|
import a from "../controls/SButton.vue.js";
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import { Fragment as
|
|
7
|
+
import ee from "../controls/SLink.vue.js";
|
|
8
|
+
import te from "../controls/SMenuSurface.vue.js";
|
|
9
|
+
import { Fragment as ne, computed as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as re, createVNode as d, defineComponent as f, mergeProps as p, nextTick as m, onBeforeUnmount as ie, onMounted as ae, openBlock as h, ref as g, renderList as oe, renderSlot as se, toDisplayString as _, unref as ce, useId as le, watch as v, withCtx as y } from "vue";
|
|
10
10
|
//#region src/components/shared/navigation/SBottomNav.vue?vue&type=script&setup=true&lang.ts
|
|
11
11
|
var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 }, pe = {
|
|
12
12
|
key: 2,
|
|
@@ -14,7 +14,7 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
14
14
|
}, me = {
|
|
15
15
|
key: 0,
|
|
16
16
|
class: "s-bottom-nav__status"
|
|
17
|
-
}, b = /*@__PURE__*/
|
|
17
|
+
}, b = /*@__PURE__*/ f({
|
|
18
18
|
inheritAttrs: !1,
|
|
19
19
|
__name: "SBottomNav",
|
|
20
20
|
props: {
|
|
@@ -37,11 +37,19 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
37
37
|
"navigate",
|
|
38
38
|
"layout-change"
|
|
39
39
|
],
|
|
40
|
-
setup(
|
|
41
|
-
let x =
|
|
40
|
+
setup(f, { emit: b }) {
|
|
41
|
+
let x = f, S = b, he = n({
|
|
42
42
|
component: "SBottomNav",
|
|
43
43
|
owner: "navigation root"
|
|
44
|
-
}),
|
|
44
|
+
}), ge = (e) => e.href === void 0 ? {
|
|
45
|
+
to: e.to,
|
|
46
|
+
...e.target === void 0 ? {} : { target: e.target },
|
|
47
|
+
...e.rel === void 0 ? {} : { rel: e.rel }
|
|
48
|
+
} : {
|
|
49
|
+
href: e.href,
|
|
50
|
+
...e.target === void 0 ? {} : { target: e.target },
|
|
51
|
+
...e.rel === void 0 ? {} : { rel: e.rel }
|
|
52
|
+
}, C = o(() => x.iconOnly), w = le(), T = g(null), E = g(null), D = g(!1), O = g(null), k = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Map(), j = 0, M = o(() => x.items.filter((e) => e.kind === "overflow")), N = o(() => M.value.find((e) => e.id === O.value) ?? null), _e = o(() => {
|
|
45
53
|
let e = N.value;
|
|
46
54
|
return e ? e.items.map((e) => e.kind === "destination" ? {
|
|
47
55
|
...e,
|
|
@@ -60,7 +68,7 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
60
68
|
if (t !== void 0) return t;
|
|
61
69
|
let n = j;
|
|
62
70
|
return j += 1, A.set(e.id, n), n;
|
|
63
|
-
}, B = (e) => `s-bottom-nav-${w}-overflow-${z(e)}-trigger`, V = (e) => `s-bottom-nav-${w}-overflow-${z(e)}-menu`,
|
|
71
|
+
}, B = (e) => `s-bottom-nav-${w}-overflow-${z(e)}-trigger`, V = (e) => `s-bottom-nav-${w}-overflow-${z(e)}-menu`, ve = (e, t) => {
|
|
64
72
|
if (e.kind === "overflow") {
|
|
65
73
|
if (t === null) {
|
|
66
74
|
k.delete(e.id);
|
|
@@ -77,10 +85,10 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
77
85
|
let r = B(e);
|
|
78
86
|
if (n.id !== r) throw Error(`SBottomNav: overflow trigger '${e.id}' owns id '${n.id}', expected '${r}'`);
|
|
79
87
|
return n;
|
|
80
|
-
}, U = (e) => !!(e.disabled || e.kind === "overflow" && e.items.length === 0), W = (e) => U(e) || e.kind === "action" ? !1 : e.kind === "destination" || e.kind === "view" ? x.modelValue === e.id : O.value === e.id || e.items.some((e) => (e.kind === "destination" || e.kind === "view") && !e.disabled && e.id === x.modelValue),
|
|
88
|
+
}, U = (e) => !!(e.disabled || e.kind === "overflow" && e.items.length === 0), W = (e) => U(e) || e.kind === "action" ? !1 : e.kind === "destination" || e.kind === "view" ? x.modelValue === e.id : O.value === e.id || e.items.some((e) => (e.kind === "destination" || e.kind === "view") && !e.disabled && e.id === x.modelValue), ye = (e, t) => (e.target ?? "_self") === "_self" ? t instanceof MouseEvent ? t.button === 0 && !t.altKey && !t.ctrlKey && !t.metaKey && !t.shiftKey : !0 : !1, G = (e, t) => {
|
|
81
89
|
if (!e.disabled) {
|
|
82
90
|
if (e.kind === "destination") {
|
|
83
|
-
S("navigate", e, t),
|
|
91
|
+
S("navigate", e, t), ye(e, t) && S("update:modelValue", e.id);
|
|
84
92
|
return;
|
|
85
93
|
}
|
|
86
94
|
if (e.kind === "view") {
|
|
@@ -102,9 +110,9 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
102
110
|
restoreTarget: n,
|
|
103
111
|
requestDismiss: (e) => K(e === "escape")
|
|
104
112
|
});
|
|
105
|
-
}, ye = (e, t) => {
|
|
106
|
-
K(!1), G(t, e);
|
|
107
113
|
}, be = (e, t) => {
|
|
114
|
+
K(!1), G(t, e);
|
|
115
|
+
}, xe = (e, t) => {
|
|
108
116
|
if (!U(e)) {
|
|
109
117
|
if (e.kind === "overflow") {
|
|
110
118
|
O.value === e.id ? K(!0) : q(e);
|
|
@@ -112,65 +120,65 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
112
120
|
}
|
|
113
121
|
K(!1), G(e, t);
|
|
114
122
|
}
|
|
115
|
-
},
|
|
123
|
+
}, Se = (e, t) => {
|
|
116
124
|
e.key !== "ArrowDown" || t.kind !== "overflow" || U(t) || (e.preventDefault(), q(t));
|
|
117
|
-
},
|
|
125
|
+
}, Ce = (e, t) => {
|
|
118
126
|
if (e.kind !== "action" && e.kind !== "destination") throw TypeError(`SBottomNav: overflow menu accepts action/destination entries, received '${e.kind}'`);
|
|
119
127
|
let n = N.value;
|
|
120
128
|
if (!n) throw Error(`SBottomNav: selected menu entry '${e.id}' without an active overflow`);
|
|
121
129
|
let r = n.items.find((t) => t.id === e.id);
|
|
122
130
|
if (!r) throw Error(`SBottomNav: selected unknown overflow entry '${e.id}'`);
|
|
123
131
|
r.disabled || (G(r, t), K(!0));
|
|
124
|
-
},
|
|
132
|
+
}, we = (e) => {
|
|
125
133
|
if (!N.value) return;
|
|
126
134
|
let t = e.relatedTarget;
|
|
127
135
|
t instanceof Node && T.value?.contains(t) || K(!1);
|
|
128
|
-
},
|
|
136
|
+
}, Te = (t) => {
|
|
129
137
|
let n = N.value;
|
|
130
138
|
if (!n) return;
|
|
131
139
|
let r = H(n), i = F?.focusScope() ?? document, a = e(r, i, E.value, t.shiftKey);
|
|
132
|
-
t.preventDefault(), K(!1), a &&
|
|
133
|
-
},
|
|
140
|
+
t.preventDefault(), K(!1), a && m(() => a.focus());
|
|
141
|
+
}, J = (e) => {
|
|
134
142
|
if (!x.scrollTargetId || typeof window > "u" || typeof document > "u") return;
|
|
135
143
|
let t = e.target, n = 0;
|
|
136
144
|
if (t instanceof HTMLElement && t.id === x.scrollTargetId) n = t.scrollTop || 0;
|
|
137
145
|
else if (t === document && document.documentElement.id === x.scrollTargetId) n = document.documentElement.scrollTop || document.body.scrollTop || 0;
|
|
138
146
|
else return;
|
|
139
147
|
n > P + 10 ? D.value = !0 : n < P - 5 && (D.value = !1), P = n;
|
|
140
|
-
},
|
|
148
|
+
}, Y = [
|
|
141
149
|
"kind",
|
|
142
150
|
"id",
|
|
143
151
|
"label",
|
|
144
152
|
"icon",
|
|
145
153
|
"badge",
|
|
146
154
|
"disabled"
|
|
147
|
-
],
|
|
148
|
-
action: new Set(
|
|
155
|
+
], Ee = {
|
|
156
|
+
action: new Set(Y),
|
|
149
157
|
destination: /* @__PURE__ */ new Set([
|
|
150
|
-
...
|
|
158
|
+
...Y,
|
|
151
159
|
"href",
|
|
152
160
|
"to",
|
|
153
161
|
"target",
|
|
154
162
|
"rel"
|
|
155
163
|
]),
|
|
156
|
-
view: new Set(
|
|
164
|
+
view: new Set(Y),
|
|
157
165
|
overflow: /* @__PURE__ */ new Set([
|
|
158
|
-
...
|
|
166
|
+
...Y,
|
|
159
167
|
"menuLabel",
|
|
160
168
|
"items"
|
|
161
169
|
])
|
|
162
170
|
};
|
|
163
|
-
function
|
|
171
|
+
function X(e, t) {
|
|
164
172
|
if (typeof e != "object" || !e || Array.isArray(e)) throw TypeError(`SBottomNav: ${t} must be an object`);
|
|
165
173
|
}
|
|
166
|
-
function
|
|
174
|
+
function De(e, t) {
|
|
167
175
|
let n = e.kind;
|
|
168
176
|
if (n !== "action" && n !== "destination" && n !== "view") throw TypeError(`SBottomNav: ${t}.kind must be action, destination, or view`);
|
|
169
|
-
return
|
|
177
|
+
return Z(e, t, n), n;
|
|
170
178
|
}
|
|
171
|
-
function
|
|
179
|
+
function Z(e, t, n) {
|
|
172
180
|
for (let r of Reflect.ownKeys(e)) {
|
|
173
|
-
if (typeof r != "string" || !
|
|
181
|
+
if (typeof r != "string" || !Ee[n].has(r)) throw TypeError(`SBottomNav: ${t} has unsupported field ${String(r)}`);
|
|
174
182
|
let i = Object.getOwnPropertyDescriptor(e, r);
|
|
175
183
|
if (!i?.enumerable || !("value" in i)) throw TypeError(`SBottomNav: ${t}.${r} must be an enumerable data property`);
|
|
176
184
|
}
|
|
@@ -187,15 +195,15 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
187
195
|
rel: e.rel
|
|
188
196
|
});
|
|
189
197
|
}
|
|
190
|
-
function
|
|
198
|
+
function Q(e) {
|
|
191
199
|
if (!Array.isArray(e) || e.length === 0) throw TypeError("SBottomNav: items must be a non-empty array");
|
|
192
200
|
let t = /* @__PURE__ */ new Set();
|
|
193
201
|
for (let [n, r] of e.entries()) {
|
|
194
202
|
let e = `items[${n}]`;
|
|
195
|
-
|
|
203
|
+
X(r, e);
|
|
196
204
|
let i = r.kind;
|
|
197
205
|
if (i !== "action" && i !== "destination" && i !== "view" && i !== "overflow") throw TypeError(`SBottomNav: ${e}.kind must be action, destination, view, or overflow`);
|
|
198
|
-
|
|
206
|
+
Z(r, e, i);
|
|
199
207
|
let a = r.id;
|
|
200
208
|
if (typeof a != "string") throw TypeError(`SBottomNav: ${e}.id must be a string`);
|
|
201
209
|
if (t.has(a)) throw TypeError(`SBottomNav: duplicate item id '${a}'`);
|
|
@@ -204,7 +212,7 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
204
212
|
if (!Array.isArray(r.items)) throw TypeError(`SBottomNav: ${e}.items must be an array`);
|
|
205
213
|
for (let [n, i] of r.items.entries()) {
|
|
206
214
|
let r = `${e}.items[${n}]`;
|
|
207
|
-
|
|
215
|
+
X(i, r), De(i, r);
|
|
208
216
|
let a = i.id;
|
|
209
217
|
if (typeof a != "string") throw TypeError(`SBottomNav: ${r}.id must be a string`);
|
|
210
218
|
if (t.has(a)) throw TypeError(`SBottomNav: duplicate item id '${a}'`);
|
|
@@ -222,8 +230,8 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
222
230
|
};
|
|
223
231
|
R && R.hidden === t.hidden && R.height === t.height || (R = t, S("layout-change", t));
|
|
224
232
|
};
|
|
225
|
-
return
|
|
226
|
-
D.value = x.hidden ?? !1, typeof document < "u" && document.addEventListener("scroll",
|
|
233
|
+
return ae(() => {
|
|
234
|
+
D.value = x.hidden ?? !1, typeof document < "u" && document.addEventListener("scroll", J, {
|
|
227
235
|
passive: !0,
|
|
228
236
|
capture: !0
|
|
229
237
|
}), typeof ResizeObserver < "u" && T.value ? (I = new ResizeObserver($), I.observe(T.value)) : typeof window < "u" && (L = !0, window.addEventListener("resize", $)), $();
|
|
@@ -234,7 +242,7 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
234
242
|
}), v(() => x.modelValue, () => {
|
|
235
243
|
K(!1), D.value = x.hidden ?? !1, P = 0, $();
|
|
236
244
|
}), v(() => x.items, () => {
|
|
237
|
-
if (
|
|
245
|
+
if (Q(x.items), O.value) {
|
|
238
246
|
let e = M.value.find((e) => e.id === O.value);
|
|
239
247
|
(!e || U(e)) && K(!1);
|
|
240
248
|
}
|
|
@@ -246,25 +254,23 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
246
254
|
if (typeof e != "string" || !e.trim()) throw TypeError("SBottomNav: label must be non-empty");
|
|
247
255
|
if (typeof t != "string" || !t.trim()) throw TypeError("SBottomNav: modelValue must be a non-empty destination id");
|
|
248
256
|
if (n !== void 0 && (typeof n != "string" || !n.trim())) throw TypeError("SBottomNav: scrollTargetId must be a non-empty string when provided");
|
|
249
|
-
}, { immediate: !0 }),
|
|
250
|
-
typeof document < "u" && document.removeEventListener("scroll",
|
|
251
|
-
}), (e, t) => (
|
|
257
|
+
}, { immediate: !0 }), ie(() => {
|
|
258
|
+
typeof document < "u" && document.removeEventListener("scroll", J, { capture: !0 }), I?.disconnect(), I = null, L && typeof window < "u" && window.removeEventListener("resize", $), L = !1, F?.unregister({ restoreFocus: !1 }), F = null, k.clear(), A.clear();
|
|
259
|
+
}), (e, t) => (h(), l("nav", p({
|
|
252
260
|
ref_key: "navRef",
|
|
253
261
|
ref: T
|
|
254
|
-
},
|
|
262
|
+
}, ce(he).bindings(), {
|
|
255
263
|
class: ["s-bottom-nav", { "s-bottom-nav--hidden": D.value }],
|
|
256
264
|
"data-test": "bottom-nav",
|
|
257
|
-
"aria-label":
|
|
258
|
-
onFocusout:
|
|
259
|
-
}), [
|
|
265
|
+
"aria-label": f.label,
|
|
266
|
+
onFocusout: we
|
|
267
|
+
}), [u("div", de, [(h(!0), l(ne, null, oe(f.items, (e) => (h(), l("div", {
|
|
260
268
|
key: e.id,
|
|
261
269
|
class: "s-bottom-nav__item"
|
|
262
|
-
}, [e.kind === "destination" ? (
|
|
270
|
+
}, [e.kind === "destination" ? (h(), s(ee, p({
|
|
263
271
|
key: 0,
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
target: e.target,
|
|
267
|
-
rel: e.rel,
|
|
272
|
+
ref_for: !0
|
|
273
|
+
}, ge(e), {
|
|
268
274
|
"leading-icon": e.icon,
|
|
269
275
|
disabled: e.disabled,
|
|
270
276
|
active: W(e),
|
|
@@ -272,25 +278,21 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
272
278
|
width: "full",
|
|
273
279
|
"aria-label": C.value ? e.label : void 0,
|
|
274
280
|
"data-testid": `bottom-nav-${e.id}`,
|
|
275
|
-
onClick: (t) =>
|
|
276
|
-
}, {
|
|
277
|
-
default: y(() => [C.value ?
|
|
281
|
+
onClick: (t) => be(t, e)
|
|
282
|
+
}), {
|
|
283
|
+
default: y(() => [C.value ? c("", !0) : (h(), l("span", fe, _(e.label), 1))]),
|
|
278
284
|
_: 2
|
|
279
|
-
},
|
|
280
|
-
"href",
|
|
281
|
-
"to",
|
|
282
|
-
"target",
|
|
283
|
-
"rel",
|
|
285
|
+
}, 1040, [
|
|
284
286
|
"leading-icon",
|
|
285
287
|
"disabled",
|
|
286
288
|
"active",
|
|
287
289
|
"aria-label",
|
|
288
290
|
"data-testid",
|
|
289
291
|
"onClick"
|
|
290
|
-
])) : (
|
|
292
|
+
])) : (h(), s(a, {
|
|
291
293
|
key: 1,
|
|
292
294
|
ref_for: !0,
|
|
293
|
-
ref: (t) =>
|
|
295
|
+
ref: (t) => ve(e, t),
|
|
294
296
|
label: C.value ? void 0 : e.label,
|
|
295
297
|
"leading-icon": e.icon,
|
|
296
298
|
"icon-only": C.value,
|
|
@@ -311,8 +313,8 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
311
313
|
} : void 0,
|
|
312
314
|
"data-test": `bottom-nav-${e.id}`,
|
|
313
315
|
"data-testid": `bottom-nav-${e.id}`,
|
|
314
|
-
onClick: (t) =>
|
|
315
|
-
onKeydown: (t) =>
|
|
316
|
+
onClick: (t) => xe(e, t),
|
|
317
|
+
onKeydown: (t) => Se(t, e)
|
|
316
318
|
}, null, 8, [
|
|
317
319
|
"label",
|
|
318
320
|
"leading-icon",
|
|
@@ -329,34 +331,34 @@ var ue = ["aria-label"], de = { class: "s-bottom-nav__items" }, fe = { key: 0 },
|
|
|
329
331
|
"data-testid",
|
|
330
332
|
"onClick",
|
|
331
333
|
"onKeydown"
|
|
332
|
-
])), e.badge === void 0 ?
|
|
334
|
+
])), e.badge === void 0 ? c("", !0) : (h(), l("span", pe, [d(r, {
|
|
333
335
|
severity: "danger",
|
|
334
336
|
size: "xs"
|
|
335
337
|
}, {
|
|
336
|
-
default: y(() => [
|
|
338
|
+
default: y(() => [re(_(e.badge), 1)]),
|
|
337
339
|
_: 2
|
|
338
|
-
}, 1024)]))]))), 128)), N.value ? (
|
|
340
|
+
}, 1024)]))]))), 128)), N.value ? (h(), l("div", {
|
|
339
341
|
key: 0,
|
|
340
342
|
ref_key: "overflowLayerRef",
|
|
341
343
|
ref: E,
|
|
342
344
|
class: "s-bottom-nav__overflow-layer",
|
|
343
345
|
"data-test": "bottom-nav-overflow"
|
|
344
|
-
}, [
|
|
346
|
+
}, [d(te, {
|
|
345
347
|
id: V(N.value),
|
|
346
348
|
label: N.value.menuLabel,
|
|
347
349
|
density: "compact",
|
|
348
350
|
orientation: "horizontal",
|
|
349
351
|
autofocus: "",
|
|
350
|
-
items:
|
|
352
|
+
items: _e.value,
|
|
351
353
|
onEscape: t[0] ||= (e) => K(!0),
|
|
352
354
|
onFocusExit: t[1] ||= (e) => K(!1),
|
|
353
|
-
onSelect:
|
|
354
|
-
onTab:
|
|
355
|
+
onSelect: Ce,
|
|
356
|
+
onTab: Te
|
|
355
357
|
}, null, 8, [
|
|
356
358
|
"id",
|
|
357
359
|
"label",
|
|
358
360
|
"items"
|
|
359
|
-
])], 512)) :
|
|
361
|
+
])], 512)) : c("", !0)]), e.$slots.status ? (h(), l("div", me, [se(e.$slots, "status", {}, void 0, !0)])) : c("", !0)], 16, ue));
|
|
360
362
|
}
|
|
361
363
|
});
|
|
362
364
|
//#endregion
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import "../../../../assets/src/components/shared/navigation/SBreadcrumbs.
|
|
1
|
+
import "../../../../assets/src/components/shared/navigation/SBreadcrumbs.css_vue_type_style_index_0_src_f836963c_scoped_f836963c_lang.css";
|
|
2
2
|
import e from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
3
3
|
import t from "./SBreadcrumbs.vue_vue_type_script_setup_true_lang.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
//#region src/components/shared/navigation/SBreadcrumbs.vue
|
|
6
|
-
var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-
|
|
6
|
+
var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-f836963c"]]);
|
|
7
7
|
//#endregion
|
|
8
8
|
export { n as default };
|
package/dist/src/components/shared/navigation/SBreadcrumbs.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChevronRight as e } from "../../icons/
|
|
1
|
+
import { ChevronRight as e } from "../../icons/_internal/generatedSputnigUiIconComponents.js";
|
|
2
2
|
import { useUiKitLocale as t } from "../../../composables/useUiKitLocale.js";
|
|
3
3
|
import { useOwnedAttrs as n } from "../../../internal/ownedAttrs.js";
|
|
4
4
|
import { resolveLinkTarget as r } from "../../../internal/linkTarget.js";
|
|
@@ -22,7 +22,15 @@ var x = ["aria-label"], S = { class: "s-breadcrumbs__list" }, C = {
|
|
|
22
22
|
let T = p, { t: E } = t(), D = s(() => T.ariaLabel ?? E("navigation.breadcrumbs")), O = w, k = n({
|
|
23
23
|
component: "SBreadcrumbs",
|
|
24
24
|
owner: "breadcrumb navigation root"
|
|
25
|
-
}), A = {
|
|
25
|
+
}), A = (e) => e.href === void 0 ? {
|
|
26
|
+
to: e.to,
|
|
27
|
+
...e.target === void 0 ? {} : { target: e.target },
|
|
28
|
+
...e.rel === void 0 ? {} : { rel: e.rel }
|
|
29
|
+
} : {
|
|
30
|
+
href: e.href,
|
|
31
|
+
...e.target === void 0 ? {} : { target: e.target },
|
|
32
|
+
...e.rel === void 0 ? {} : { rel: e.rel }
|
|
33
|
+
}, j = {
|
|
26
34
|
action: /* @__PURE__ */ new Set([
|
|
27
35
|
"kind",
|
|
28
36
|
"id",
|
|
@@ -45,20 +53,20 @@ var x = ["aria-label"], S = { class: "s-breadcrumbs__list" }, C = {
|
|
|
45
53
|
"rel"
|
|
46
54
|
])
|
|
47
55
|
};
|
|
48
|
-
function
|
|
56
|
+
function M(e, t) {
|
|
49
57
|
if (typeof e != "object" || !e || Array.isArray(e)) throw TypeError(`SBreadcrumbs: ${t} must be an object`);
|
|
50
58
|
}
|
|
51
|
-
function
|
|
59
|
+
function N() {
|
|
52
60
|
if (!D.value.trim()) throw TypeError("SBreadcrumbs: ariaLabel must be a non-empty string");
|
|
53
61
|
if (!Array.isArray(T.items) || T.items.length === 0) throw TypeError("SBreadcrumbs: items must be a non-empty array");
|
|
54
62
|
let e = /* @__PURE__ */ new Set(), t = -1;
|
|
55
63
|
for (let [n, i] of T.items.entries()) {
|
|
56
64
|
let a = `items[${n}]`;
|
|
57
|
-
|
|
65
|
+
M(i, a);
|
|
58
66
|
let o = i.kind;
|
|
59
67
|
if (o !== "action" && o !== "current" && o !== "destination") throw TypeError(`SBreadcrumbs: ${a}.kind must be action, current, or destination`);
|
|
60
68
|
for (let e of Reflect.ownKeys(i)) {
|
|
61
|
-
if (typeof e != "string" || !
|
|
69
|
+
if (typeof e != "string" || !j[o].has(e)) throw TypeError(`SBreadcrumbs: ${a} has unsupported field '${String(e)}'`);
|
|
62
70
|
let t = Object.getOwnPropertyDescriptor(i, e);
|
|
63
71
|
if (!t?.enumerable || !("value" in t)) throw TypeError(`SBreadcrumbs: ${a}.${e} must be an enumerable data property`);
|
|
64
72
|
}
|
|
@@ -79,7 +87,7 @@ var x = ["aria-label"], S = { class: "s-breadcrumbs__list" }, C = {
|
|
|
79
87
|
}
|
|
80
88
|
if (t !== T.items.length - 1) throw TypeError("SBreadcrumbs: the sole current item must be last");
|
|
81
89
|
}
|
|
82
|
-
return y(() => [T.items, D.value],
|
|
90
|
+
return y(() => [T.items, D.value], N, {
|
|
83
91
|
immediate: !0,
|
|
84
92
|
deep: !0
|
|
85
93
|
}), (t, n) => (h(), u("nav", m(v(k).bindings(), {
|
|
@@ -92,27 +100,18 @@ var x = ["aria-label"], S = { class: "s-breadcrumbs__list" }, C = {
|
|
|
92
100
|
key: 0,
|
|
93
101
|
class: "s-breadcrumbs__divider",
|
|
94
102
|
"aria-hidden": "true"
|
|
95
|
-
})) : l("", !0), t.kind === "current" ? (h(), u("span", C, _(t.label), 1)) : t.kind === "destination" ? (h(), c(a, {
|
|
103
|
+
})) : l("", !0), t.kind === "current" ? (h(), u("span", C, _(t.label), 1)) : t.kind === "destination" ? (h(), c(a, m({
|
|
96
104
|
key: 2,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
target: t.target,
|
|
100
|
-
rel: t.rel,
|
|
105
|
+
ref_for: !0
|
|
106
|
+
}, A(t), {
|
|
101
107
|
variant: "subtle",
|
|
102
108
|
size: "sm",
|
|
103
109
|
disabled: t.disabled,
|
|
104
110
|
onClick: (e) => O("navigate", t, e)
|
|
105
|
-
}, {
|
|
111
|
+
}), {
|
|
106
112
|
default: b(() => [f(_(t.label), 1)]),
|
|
107
113
|
_: 2
|
|
108
|
-
},
|
|
109
|
-
"href",
|
|
110
|
-
"to",
|
|
111
|
-
"target",
|
|
112
|
-
"rel",
|
|
113
|
-
"disabled",
|
|
114
|
-
"onClick"
|
|
115
|
-
])) : (h(), c(i, {
|
|
114
|
+
}, 1040, ["disabled", "onClick"])) : (h(), c(i, {
|
|
116
115
|
key: 3,
|
|
117
116
|
label: t.label,
|
|
118
117
|
disabled: t.disabled,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Check as e, ChevronRight as t, Folder as n, FolderSearch as r, FolderTree as i, RefreshCw as a } from "../../icons/
|
|
1
|
+
import { Check as e, ChevronRight as t, Folder as n, FolderSearch as r, FolderTree as i, RefreshCw as a } from "../../icons/_internal/generatedSputnigUiIconComponents.js";
|
|
2
2
|
import { useUiKitLocale as o } from "../../../composables/useUiKitLocale.js";
|
|
3
3
|
import { useOwnedAttrs as s } from "../../../internal/ownedAttrs.js";
|
|
4
4
|
import ee from "../data-display/SBadge.vue.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import "../../../../../assets/src/components/shared/persona/_internal/SPersonaRunConsole.
|
|
1
|
+
import "../../../../../assets/src/components/shared/persona/_internal/SPersonaRunConsole.css_vue_type_style_index_0_src_21bf807e_scoped_21bf807e_lang.css";
|
|
2
2
|
import e from "../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
3
3
|
import t from "./SPersonaRunConsole.vue_vue_type_script_setup_true_lang.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
//#region src/components/shared/persona/_internal/SPersonaRunConsole.vue
|
|
6
|
-
var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-
|
|
6
|
+
var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-21bf807e"]]);
|
|
7
7
|
//#endregion
|
|
8
8
|
export { n as default };
|
|
@@ -223,12 +223,15 @@ var D = { class: "s-persona-run-console-shell" }, O = ["data-density"], k = { cl
|
|
|
223
223
|
S.reportSummary ? (C(), g(o, {
|
|
224
224
|
key: 3,
|
|
225
225
|
code: S.reportSummary,
|
|
226
|
-
language: {
|
|
226
|
+
language: {
|
|
227
|
+
mode: "explicit",
|
|
228
|
+
id: "plaintext"
|
|
229
|
+
},
|
|
227
230
|
"show-header": !1,
|
|
228
231
|
"show-line-numbers": !1,
|
|
229
232
|
viewport: "compact",
|
|
230
|
-
|
|
231
|
-
}, null, 8, ["code", "
|
|
233
|
+
ariaLabel: S.resolvedLabels.reportSummary
|
|
234
|
+
}, null, 8, ["code", "ariaLabel"])) : _("", !0),
|
|
232
235
|
x(l, {
|
|
233
236
|
title: S.resolvedLabels.eventsTitle,
|
|
234
237
|
size: "sm"
|
|
@@ -3,6 +3,8 @@ export interface DialogOverlayOptions {
|
|
|
3
3
|
open: Readonly<Ref<boolean>>;
|
|
4
4
|
closable: Readonly<Ref<boolean>>;
|
|
5
5
|
requestClose: () => void;
|
|
6
|
+
/** Runs after the mounted surface owns focus for the current open cycle. */
|
|
7
|
+
opened?: () => void;
|
|
6
8
|
}
|
|
7
9
|
export interface DialogOverlayController {
|
|
8
10
|
panelRef: Ref<HTMLElement | null>;
|
|
@@ -3,13 +3,13 @@ import { registerLayer as t } from "../internal/layerStack.js";
|
|
|
3
3
|
import { nextTick as n, onBeforeUnmount as r, ref as i, watch as a } from "vue";
|
|
4
4
|
//#region src/composables/useDialogOverlay.ts
|
|
5
5
|
function o(o) {
|
|
6
|
-
let s = i(null), c = i({}), l = i({}), u = null, d = (e) => {
|
|
6
|
+
let s = i(null), c = i({}), l = i({}), u = null, d = 0, f = (e) => {
|
|
7
7
|
if (e === null || e instanceof HTMLElement) {
|
|
8
8
|
s.value = e;
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
throw TypeError("Dialog overlay panel ref обязан указывать на HTMLElement");
|
|
12
|
-
},
|
|
12
|
+
}, p = () => {
|
|
13
13
|
if (u) return;
|
|
14
14
|
let n = typeof document < "u" && document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
15
15
|
u = t({
|
|
@@ -22,18 +22,25 @@ function o(o) {
|
|
|
22
22
|
trapFocus: (t) => e(t, s, !0),
|
|
23
23
|
requestDismiss: () => o.requestClose()
|
|
24
24
|
}), c.value = { zIndex: u.zIndex }, l.value = { zIndex: `calc(${u.zIndex} + var(--s-layer-overlay-surface-offset))` };
|
|
25
|
-
},
|
|
25
|
+
}, m = (e = !0) => {
|
|
26
26
|
u?.unregister({ restoreFocus: e }), u = null, c.value = {}, l.value = {};
|
|
27
27
|
};
|
|
28
28
|
return a(o.open, async (e, t) => {
|
|
29
|
+
d += 1;
|
|
30
|
+
let r = d;
|
|
29
31
|
if (e) {
|
|
30
|
-
|
|
32
|
+
if (p(), await n(), r !== d || !o.open.value || u === null) return;
|
|
33
|
+
let e = s.value;
|
|
34
|
+
if (!e) return;
|
|
35
|
+
e.focus(), r === d && o.open.value && u !== null && o.opened?.();
|
|
31
36
|
return;
|
|
32
37
|
}
|
|
33
|
-
|
|
34
|
-
}, { immediate: !0 }), r(() =>
|
|
38
|
+
m(!!t);
|
|
39
|
+
}, { immediate: !0 }), r(() => {
|
|
40
|
+
d += 1, m(!1);
|
|
41
|
+
}), {
|
|
35
42
|
panelRef: s,
|
|
36
|
-
setPanelElement:
|
|
43
|
+
setPanelElement: f,
|
|
37
44
|
backdropStyle: c,
|
|
38
45
|
surfaceStyle: l
|
|
39
46
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UI_KIT_MESSAGES as e, createUiKitTranslate as t } from "../locales/messages.js";
|
|
2
|
-
import { AlertTriangle as n, CheckCircle2 as r, Info as i, LoaderCircle as a, XCircle as o } from "../components/icons/
|
|
2
|
+
import { AlertTriangle as n, CheckCircle2 as r, Info as i, LoaderCircle as a, XCircle as o } from "../components/icons/_internal/generatedSputnigUiIconComponents.js";
|
|
3
3
|
//#region src/internal/feedbackPresentation.ts
|
|
4
4
|
var s = {
|
|
5
5
|
neutral: {
|
package/docs/versioning.md
CHANGED
|
@@ -16,11 +16,15 @@ consumer builds и browser proof. Один и тот же номер верси
|
|
|
16
16
|
Корневая команда `make ui-kit-release-check` выполняет последовательность:
|
|
17
17
|
|
|
18
18
|
1. release contract;
|
|
19
|
-
2.
|
|
20
|
-
3.
|
|
21
|
-
4.
|
|
22
|
-
5.
|
|
23
|
-
6.
|
|
19
|
+
2. LVS backend;
|
|
20
|
+
3. LVS frontend static quality;
|
|
21
|
+
4. LVS frontend unit coverage;
|
|
22
|
+
5. LVS Storybook/browser proof;
|
|
23
|
+
6. LVS product end-to-end proof;
|
|
24
|
+
7. полный CSS consumer gate;
|
|
25
|
+
8. полный TestOps consumer gate;
|
|
26
|
+
9. smoke опубликованного package boundary;
|
|
27
|
+
10. dependency audit.
|
|
24
28
|
|
|
25
29
|
Успешная стадия получает receipt с хешем tracked inputs, своей командой,
|
|
26
30
|
релевантными версиями toolchain, конфигурацией workers/окружения и fingerprints
|
|
@@ -29,12 +33,23 @@ dependency manifest или lock-файла, команды, применимог
|
|
|
29
33
|
конфигурации инвалидирует соответствующую стадию; зависящие от неё стадии также
|
|
30
34
|
выполняются повторно. Независимые совместимые receipts сохраняются. Dependency
|
|
31
35
|
audit действителен шесть часов, потому что состояние advisory registry является
|
|
32
|
-
внешним входом.
|
|
36
|
+
внешним входом. Его dependency fingerprint исключает только release metadata
|
|
37
|
+
(`name`/`version`) собственного workspace; изменение dependency fields или
|
|
38
|
+
разрешённого графа lock-файла всегда требует нового audit.
|
|
33
39
|
|
|
34
40
|
`make ui-kit-release-proof-verify` проверяет полный набор receipts для точного Git
|
|
35
41
|
commit/tree. Release artifact содержит digest этого proof и публикуется только
|
|
36
42
|
командой `make ui-kit-publish`. Ручного пропуска стадий в release contract нет.
|
|
37
43
|
|
|
44
|
+
Для нового release tree используется `make ui-kit-release-proof-staged`. Команда
|
|
45
|
+
требует, чтобы все tracked-изменения были добавлены в index, а untracked и
|
|
46
|
+
unstaged-файлы отсутствовали. До и после каждой стадии проверяется точный
|
|
47
|
+
`git write-tree`, поэтому proof нельзя случайно получить для меняющегося набора
|
|
48
|
+
файлов. После коммита этого же дерева `make ui-kit-release-proof-verify` принимает
|
|
49
|
+
staged proof без повторного запуска зелёных стадий. Другой итоговый tree,
|
|
50
|
+
изменение зависимости, lock-файла, применимого toolchain или переменной окружения
|
|
51
|
+
инвалидирует соответствующие receipts по их входам.
|
|
52
|
+
|
|
38
53
|
## English
|
|
39
54
|
|
|
40
55
|
The package follows Semantic Versioning:
|
|
@@ -48,9 +63,10 @@ consumer-build, and browser-proof checks. A version number is never republished.
|
|
|
48
63
|
|
|
49
64
|
### Release proof
|
|
50
65
|
|
|
51
|
-
The root `make ui-kit-release-check` target runs the release contract,
|
|
52
|
-
LVS
|
|
53
|
-
|
|
66
|
+
The root `make ui-kit-release-check` target runs the release contract, separate
|
|
67
|
+
LVS backend, frontend static-quality, unit-coverage, Storybook/browser, and
|
|
68
|
+
product end-to-end stages, the full CSS and TestOps consumer gates,
|
|
69
|
+
package-boundary smoke, and the dependency audit in sequence.
|
|
54
70
|
|
|
55
71
|
Each successful stage receives a receipt containing the tracked-input digest,
|
|
56
72
|
command, applicable toolchain versions, worker/environment configuration, and
|
|
@@ -58,9 +74,21 @@ dependency fingerprints. A matching receipt is reused. Changes to source files,
|
|
|
58
74
|
dependency manifests or lockfiles, the stage command, applicable toolchain, or
|
|
59
75
|
configuration invalidate the affected stage and its dependants while preserving
|
|
60
76
|
independent compatible receipts. The dependency-audit receipt expires after six
|
|
61
|
-
hours because registry advisory state is an external input.
|
|
77
|
+
hours because registry advisory state is an external input. Its dependency
|
|
78
|
+
fingerprint excludes only the workspace's own release metadata (`name` and
|
|
79
|
+
`version`); dependency-field or resolved lock-graph changes always require a
|
|
80
|
+
fresh audit.
|
|
62
81
|
|
|
63
82
|
`make ui-kit-release-proof-verify` validates the complete receipt set against the
|
|
64
83
|
exact Git commit and tree. The release artifact embeds this proof digest and is
|
|
65
84
|
published only through `make ui-kit-publish`. The release contract has no manual
|
|
66
85
|
stage-skip option.
|
|
86
|
+
|
|
87
|
+
Use `make ui-kit-release-proof-staged` for a new release tree. Every tracked
|
|
88
|
+
change must be staged, with no untracked or unstaged files. The runner verifies
|
|
89
|
+
the exact `git write-tree` value before and after every stage, so a changing tree
|
|
90
|
+
cannot receive release proof. Once that exact tree is committed,
|
|
91
|
+
`make ui-kit-release-proof-verify` accepts the staged proof without rerunning
|
|
92
|
+
green stages. A different final tree, dependency or lockfile change, applicable
|
|
93
|
+
toolchain change, or relevant environment change invalidates the matching
|
|
94
|
+
receipts according to their declared inputs.
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
.s-drawer-backdrop[data-v-1226da98]{background:var(--s-overlay-backdrop-surface);-webkit-backdrop-filter:blur(var(--s-overlay-backdrop-blur));backdrop-filter:blur(var(--s-overlay-backdrop-blur));position:fixed;inset:0}.s-drawer-shell[data-v-1226da98]{position:fixed;inset:0}.s-drawer-positioner[data-v-1226da98]{justify-content:flex-end;align-items:stretch;display:flex;position:absolute;inset:0}.s-drawer-positioner[data-placement=bottom][data-v-1226da98]{justify-content:stretch;align-items:flex-end}.s-drawer-backdrop-enter-active[data-v-1226da98],.s-drawer-backdrop-leave-active[data-v-1226da98]{transition:opacity var(--s-motion-standard) ease}.s-drawer-backdrop-enter-from[data-v-1226da98],.s-drawer-backdrop-leave-to[data-v-1226da98]{opacity:0}.s-drawer-panel-enter-active[data-v-1226da98],.s-drawer-panel-leave-active[data-v-1226da98]{transition:opacity var(--s-motion-standard) ease, transform var(--s-motion-standard) ease}.s-drawer-panel-enter-from[data-v-1226da98],.s-drawer-panel-leave-to[data-v-1226da98]{opacity:0;transform:translate(1.5rem)}.s-drawer-shell[data-placement=bottom].s-drawer-panel-enter-from[data-v-1226da98],.s-drawer-shell[data-placement=bottom].s-drawer-panel-leave-to[data-v-1226da98]{transform:translateY(1.5rem)}@media (width<=767px){.s-drawer-shell[data-placement=right].s-drawer-panel-enter-from[data-v-1226da98],.s-drawer-shell[data-placement=right].s-drawer-panel-leave-to[data-v-1226da98]{transform:translateY(1.5rem)}}@media (prefers-reduced-motion:reduce){.s-drawer-backdrop-enter-active[data-v-1226da98],.s-drawer-backdrop-leave-active[data-v-1226da98],.s-drawer-panel-enter-active[data-v-1226da98],.s-drawer-panel-leave-active[data-v-1226da98]{transition:none}.s-drawer-panel-enter-from[data-v-1226da98],.s-drawer-panel-leave-to[data-v-1226da98]{transform:none}}
|