@birdapi/velinstyle 1.2.0 → 1.2.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.de.md +150 -24
- package/README.md +155 -33
- package/cli/__fixtures__/atelier-library/showcases/01-login/app.css +1 -0
- package/cli/__fixtures__/atelier-library/showcases/01-login/app.js +2 -0
- package/cli/__fixtures__/atelier-library/showcases/01-login/index.html +5 -0
- package/cli/__fixtures__/atelier-library/showcases/04-pricing/app.css +1 -0
- package/cli/__fixtures__/atelier-library/showcases/04-pricing/app.js +2 -0
- package/cli/__fixtures__/atelier-library/showcases/04-pricing/index.html +5 -0
- package/cli/__fixtures__/atelier-library/showcases/36-calendar/app.css +1 -0
- package/cli/__fixtures__/atelier-library/showcases/36-calendar/app.js +2 -0
- package/cli/__fixtures__/atelier-library/showcases/36-calendar/index.html +5 -0
- package/cli/atelier-catalog.json +1267 -0
- package/cli/atelier-formats.js +159 -0
- package/cli/atelier.js +382 -0
- package/cli/blueprints/empty-state.html +3 -5
- package/cli/cli-manifest.json +23 -10
- package/cli/docgen/extract-attributes.js +2 -0
- package/cli/docgen/extract-cli.js +1 -1
- package/cli/index.js +181 -6
- package/cli/production/component-graph.json +166 -0
- package/cli/production/explain.js +52 -0
- package/cli/production/extract.js +238 -0
- package/cli/production/graph.js +102 -0
- package/cli/production/report.js +78 -0
- package/cli/production/run.js +312 -0
- package/cli/production/trim-css.js +177 -0
- package/cli/production/trim-fonts.js +23 -0
- package/cli/production/trim-icons.js +38 -0
- package/cli/production/trim-js.js +48 -0
- package/cli/production/trim-motion.js +22 -0
- package/cli/production/trim-themes.js +50 -0
- package/cli/production/watch.js +38 -0
- package/cli/review.js +48 -1
- package/cli/scripts/write-atelier-fixtures.mjs +33 -0
- package/cli/transparency.js +221 -0
- package/components/index.js +3 -0
- package/components/runtime/component-loaders.js +3 -0
- package/components/velin-drawer.js +43 -4
- package/components/velin-empty-state.js +83 -0
- package/components/velin-modal.js +76 -15
- package/components/velin-otp-input.js +220 -0
- package/components/velin-password-strength.js +147 -0
- package/components/velin-sheet.js +49 -4
- package/core/a11y/component-contracts.json +23 -4
- package/core/attributes/registry.js +14 -0
- package/core/meta/knowledge/components.json +75 -3
- package/core/meta/schema.js +10 -0
- package/core/transparency/attach.js +74 -0
- package/core/transparency/claims.js +97 -0
- package/core/transparency/doctor.js +142 -0
- package/core/transparency/engine.js +75 -0
- package/core/transparency/export.js +98 -0
- package/core/transparency/index.js +30 -0
- package/core/transparency/migrate.js +130 -0
- package/core/transparency/normalize.js +125 -0
- package/core/transparency/policy.js +105 -0
- package/core/transparency/providers.js +235 -0
- package/core/transparency/registry.js +104 -0
- package/core/transparency/renderer.js +111 -0
- package/core/transparency/reporter.js +113 -0
- package/core/transparency/validator.js +112 -0
- package/dist/chunks/attach-H2ZSEAE6.js +365 -0
- package/dist/chunks/attributes-2ORR27KA.js +404 -0
- package/dist/chunks/attributes-DZCXX2RZ.js +404 -0
- package/dist/chunks/chunk-CQMTCEI6.js +113 -0
- package/dist/chunks/chunk-Y6HN7HWX.js +116 -0
- package/dist/chunks/runtime-entry.js +1 -1
- package/dist/chunks/velin-drawer-A7Q7EBOS.js +162 -0
- package/dist/chunks/velin-empty-state-3NTUH2RF.js +81 -0
- package/dist/chunks/velin-modal-3MV4FYBK.js +231 -0
- package/dist/chunks/velin-otp-input-PSK42MM6.js +207 -0
- package/dist/chunks/velin-password-strength-TAXMLSED.js +136 -0
- package/dist/chunks/velin-sheet-N2VVYXFP.js +157 -0
- package/dist/llms.txt +5 -4
- package/dist/search-index.json +94 -5
- package/dist/velin-agent.json +290 -23
- package/dist/velinstyle-components.iife.js +3189 -2202
- package/dist/velinstyle-components.js +3187 -2196
- package/dist/velinstyle-components.min.js +261 -119
- package/dist/velinstyle.css +214 -6
- package/dist/velinstyle.d.ts +3 -0
- package/dist/velinstyle.min.css +1 -1
- package/package.json +143 -142
- package/packages/velinstyle-skills/catalog.json +1 -1
- package/src/components/data-table.css +19 -0
- package/src/components/empty-auth.css +33 -0
- package/src/components/table.css +16 -6
- package/src/components/transparency.css +138 -0
- package/src/velinstyle.css +2 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SHADOW_A11Y_STYLES
|
|
3
|
+
} from "./chunk-F7OLHTGX.js";
|
|
4
|
+
|
|
5
|
+
// components/velin-password-strength.js
|
|
6
|
+
function scorePassword(pw) {
|
|
7
|
+
const value = String(pw || "");
|
|
8
|
+
let score = 0;
|
|
9
|
+
if (value.length >= 8) score += 1;
|
|
10
|
+
if (value.length >= 12) score += 1;
|
|
11
|
+
if (/[A-Z]/.test(value) && /[a-z]/.test(value)) score += 1;
|
|
12
|
+
if (/\d/.test(value)) score += 1;
|
|
13
|
+
if (/[^A-Za-z0-9]/.test(value)) score += 1;
|
|
14
|
+
const labels = ["Too weak", "Weak", "Okay", "Strong", "Excellent", "Excellent"];
|
|
15
|
+
return {
|
|
16
|
+
score,
|
|
17
|
+
label: labels[score] || "Too weak",
|
|
18
|
+
pct: Math.min(100, score * 20)
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
var styles = `
|
|
22
|
+
${SHADOW_A11Y_STYLES}
|
|
23
|
+
:host { display: block; }
|
|
24
|
+
.wrap { display: grid; gap: var(--velin-space-2, 0.5rem); }
|
|
25
|
+
.meter {
|
|
26
|
+
inline-size: 100%;
|
|
27
|
+
block-size: 0.5rem;
|
|
28
|
+
background: var(--velin-color-surface-dim, #eee);
|
|
29
|
+
border-radius: var(--velin-radius-full, 999px);
|
|
30
|
+
overflow: hidden;
|
|
31
|
+
}
|
|
32
|
+
.bar {
|
|
33
|
+
block-size: 100%;
|
|
34
|
+
inline-size: 0%;
|
|
35
|
+
border-radius: inherit;
|
|
36
|
+
background: var(--velin-color-danger, #dc2626);
|
|
37
|
+
transition: inline-size 160ms ease, background-color 160ms ease;
|
|
38
|
+
}
|
|
39
|
+
:host([data-score="2"]) .bar,
|
|
40
|
+
:host([data-score="3"]) .bar { background: var(--velin-color-warning, #f59e0b); }
|
|
41
|
+
:host([data-score="4"]) .bar,
|
|
42
|
+
:host([data-score="5"]) .bar { background: var(--velin-color-success, #16a34a); }
|
|
43
|
+
.label {
|
|
44
|
+
margin: 0;
|
|
45
|
+
font-size: var(--velin-text-sm, 0.875rem);
|
|
46
|
+
color: var(--velin-color-text-muted, #666);
|
|
47
|
+
}
|
|
48
|
+
@media (prefers-reduced-motion: reduce) {
|
|
49
|
+
.bar { transition: none; }
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
var VelinPasswordStrength = class extends HTMLElement {
|
|
53
|
+
static get observedAttributes() {
|
|
54
|
+
return ["for", "value", "label"];
|
|
55
|
+
}
|
|
56
|
+
constructor() {
|
|
57
|
+
super();
|
|
58
|
+
this.attachShadow({ mode: "open" });
|
|
59
|
+
this._onTargetInput = this._onTargetInput.bind(this);
|
|
60
|
+
this._target = null;
|
|
61
|
+
}
|
|
62
|
+
connectedCallback() {
|
|
63
|
+
if (!this.shadowRoot.querySelector(".wrap")) {
|
|
64
|
+
this.shadowRoot.innerHTML = `
|
|
65
|
+
<style>${styles}</style>
|
|
66
|
+
<div class="wrap" part="wrap">
|
|
67
|
+
<div class="meter" part="meter" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">
|
|
68
|
+
<div class="bar" part="bar"></div>
|
|
69
|
+
</div>
|
|
70
|
+
<p class="label" part="label" aria-live="polite"></p>
|
|
71
|
+
</div>
|
|
72
|
+
`;
|
|
73
|
+
}
|
|
74
|
+
this._bindTarget();
|
|
75
|
+
this._render(this._currentValue());
|
|
76
|
+
}
|
|
77
|
+
disconnectedCallback() {
|
|
78
|
+
this._unbindTarget();
|
|
79
|
+
}
|
|
80
|
+
attributeChangedCallback(name, oldVal, newVal) {
|
|
81
|
+
if (oldVal === newVal) return;
|
|
82
|
+
if (name === "for") {
|
|
83
|
+
this._bindTarget();
|
|
84
|
+
this._render(this._currentValue());
|
|
85
|
+
} else if (name === "value" || name === "label") {
|
|
86
|
+
this._render(this._currentValue());
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
_currentValue() {
|
|
90
|
+
if (this._target) return this._target.value || "";
|
|
91
|
+
return this.getAttribute("value") || "";
|
|
92
|
+
}
|
|
93
|
+
_unbindTarget() {
|
|
94
|
+
if (this._target) {
|
|
95
|
+
this._target.removeEventListener("input", this._onTargetInput);
|
|
96
|
+
this._target = null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
_bindTarget() {
|
|
100
|
+
this._unbindTarget();
|
|
101
|
+
const id = this.getAttribute("for");
|
|
102
|
+
if (!id || typeof document === "undefined") return;
|
|
103
|
+
const el = document.getElementById(id);
|
|
104
|
+
if (el && "value" in el) {
|
|
105
|
+
this._target = el;
|
|
106
|
+
this._target.addEventListener("input", this._onTargetInput);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
_onTargetInput(e) {
|
|
110
|
+
this._render(e.target.value || "");
|
|
111
|
+
}
|
|
112
|
+
_render(pw) {
|
|
113
|
+
const result = scorePassword(pw);
|
|
114
|
+
const meter = this.shadowRoot?.querySelector(".meter");
|
|
115
|
+
const bar = this.shadowRoot?.querySelector(".bar");
|
|
116
|
+
const label = this.shadowRoot?.querySelector(".label");
|
|
117
|
+
if (!meter || !bar || !label) return;
|
|
118
|
+
bar.style.inlineSize = `${result.pct}%`;
|
|
119
|
+
meter.setAttribute("aria-valuenow", String(result.pct));
|
|
120
|
+
meter.setAttribute("aria-valuetext", result.label);
|
|
121
|
+
const prefix = this.getAttribute("label");
|
|
122
|
+
label.textContent = prefix ? `${prefix}: ${result.label}` : result.label;
|
|
123
|
+
this.setAttribute("data-score", String(result.score));
|
|
124
|
+
this.dispatchEvent(new CustomEvent("velin-strength", {
|
|
125
|
+
bubbles: true,
|
|
126
|
+
composed: true,
|
|
127
|
+
detail: result
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
customElements.define("velin-password-strength", VelinPasswordStrength);
|
|
132
|
+
var velin_password_strength_default = VelinPasswordStrength;
|
|
133
|
+
export {
|
|
134
|
+
velin_password_strength_default as default,
|
|
135
|
+
scorePassword
|
|
136
|
+
};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SHADOW_A11Y_STYLES
|
|
3
|
+
} from "./chunk-F7OLHTGX.js";
|
|
4
|
+
import {
|
|
5
|
+
clearBackgroundInert,
|
|
6
|
+
getFocusableElements,
|
|
7
|
+
restoreFocus,
|
|
8
|
+
saveFocus,
|
|
9
|
+
setBackgroundInert,
|
|
10
|
+
trapFocus
|
|
11
|
+
} from "./chunk-42VVPW6N.js";
|
|
12
|
+
|
|
13
|
+
// components/velin-sheet.js
|
|
14
|
+
var styles = `
|
|
15
|
+
${SHADOW_A11Y_STYLES}
|
|
16
|
+
:host { display: contents; }
|
|
17
|
+
.overlay {
|
|
18
|
+
position: fixed; inset: 0; z-index: var(--velin-z-overlay, 400);
|
|
19
|
+
background: var(--velin-color-overlay, rgba(0,0,0,0.4));
|
|
20
|
+
opacity: 0; visibility: hidden;
|
|
21
|
+
transition: opacity 200ms ease, visibility 200ms ease;
|
|
22
|
+
}
|
|
23
|
+
:host([open]) .overlay { opacity: 1; visibility: visible; }
|
|
24
|
+
.sheet {
|
|
25
|
+
position: fixed; inset-inline: 0; inset-block-end: 0;
|
|
26
|
+
z-index: var(--velin-z-modal, 500);
|
|
27
|
+
max-block-size: min(85vh, 32rem);
|
|
28
|
+
background: var(--velin-color-surface-bright, #fff);
|
|
29
|
+
border-radius: var(--velin-radius-lg, 0.75rem) var(--velin-radius-lg, 0.75rem) 0 0;
|
|
30
|
+
box-shadow: var(--velin-shadow-xl, 0 -4px 24px rgba(0,0,0,0.12));
|
|
31
|
+
display: flex; flex-direction: column;
|
|
32
|
+
transform: translateY(100%);
|
|
33
|
+
transition: transform 250ms ease;
|
|
34
|
+
padding-block-end: env(safe-area-inset-bottom, 0px);
|
|
35
|
+
}
|
|
36
|
+
:host([open]) .sheet { transform: translateY(0); }
|
|
37
|
+
.header {
|
|
38
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
39
|
+
padding: var(--velin-space-4, 1rem) var(--velin-space-5, 1.25rem);
|
|
40
|
+
border-bottom: 1px solid var(--velin-color-border, #ddd);
|
|
41
|
+
}
|
|
42
|
+
.title { font-size: var(--velin-text-lg, 1.25rem); font-weight: 600; margin: 0; }
|
|
43
|
+
.close-btn {
|
|
44
|
+
min-width: 2.75rem; min-height: 2.75rem; display: inline-flex; align-items: center; justify-content: center;
|
|
45
|
+
background: none; border: none; border-radius: var(--velin-radius-md, 0.5rem); cursor: pointer;
|
|
46
|
+
color: var(--velin-color-text-muted, #666); font-size: 1.5rem; line-height: 1;
|
|
47
|
+
}
|
|
48
|
+
.close-btn:hover { background: var(--velin-color-surface-dim, #eee); color: var(--velin-color-text, #111); }
|
|
49
|
+
.body { flex: 1; overflow-y: auto; padding: var(--velin-space-5, 1.25rem); }
|
|
50
|
+
@media (prefers-reduced-motion: reduce) { .overlay, .sheet { transition: none; } }
|
|
51
|
+
`;
|
|
52
|
+
var VelinSheet = class extends HTMLElement {
|
|
53
|
+
static get observedAttributes() {
|
|
54
|
+
return ["open", "title", "label"];
|
|
55
|
+
}
|
|
56
|
+
constructor() {
|
|
57
|
+
super();
|
|
58
|
+
this.attachShadow({ mode: "open", delegatesFocus: true });
|
|
59
|
+
this._prev = null;
|
|
60
|
+
this._onKey = this._onKey.bind(this);
|
|
61
|
+
this._onTitleSlot = this._onTitleSlot.bind(this);
|
|
62
|
+
}
|
|
63
|
+
connectedCallback() {
|
|
64
|
+
if (this.shadowRoot.querySelector(".sheet")) return;
|
|
65
|
+
const titleId = "velin-sheet-title";
|
|
66
|
+
this.shadowRoot.innerHTML = `
|
|
67
|
+
<style>${styles}</style>
|
|
68
|
+
<div class="overlay" part="overlay"></div>
|
|
69
|
+
<div class="sheet" role="dialog" aria-modal="true" aria-labelledby="${titleId}" part="sheet">
|
|
70
|
+
<div class="header" part="header">
|
|
71
|
+
<h2 class="title" id="${titleId}" part="title">
|
|
72
|
+
<slot name="title"></slot>
|
|
73
|
+
<span class="title-fallback"></span>
|
|
74
|
+
</h2>
|
|
75
|
+
<button class="close-btn" aria-label="Close" part="close">×</button>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="body" part="body"><slot></slot></div>
|
|
78
|
+
</div>
|
|
79
|
+
`;
|
|
80
|
+
this.shadowRoot.querySelector(".close-btn").addEventListener("click", () => this.close());
|
|
81
|
+
this.shadowRoot.querySelector(".overlay").addEventListener("click", () => this.close());
|
|
82
|
+
this.shadowRoot.querySelector('slot[name="title"]').addEventListener("slotchange", this._onTitleSlot);
|
|
83
|
+
this._syncTitle();
|
|
84
|
+
if (this.hasAttribute("open")) this._open();
|
|
85
|
+
}
|
|
86
|
+
attributeChangedCallback(name) {
|
|
87
|
+
if (name === "open") this.hasAttribute("open") ? this._open() : this._close();
|
|
88
|
+
if (name === "title" || name === "label") this._syncTitle();
|
|
89
|
+
}
|
|
90
|
+
open() {
|
|
91
|
+
this.setAttribute("open", "");
|
|
92
|
+
}
|
|
93
|
+
close() {
|
|
94
|
+
this.removeAttribute("open");
|
|
95
|
+
this.dispatchEvent(new CustomEvent("velin-close", { bubbles: true }));
|
|
96
|
+
}
|
|
97
|
+
_syncTitle() {
|
|
98
|
+
const fallback = this.shadowRoot?.querySelector(".title-fallback");
|
|
99
|
+
if (!fallback) return;
|
|
100
|
+
fallback.textContent = this.getAttribute("title") || this.getAttribute("label") || "";
|
|
101
|
+
}
|
|
102
|
+
_hasTitleSlot() {
|
|
103
|
+
const slot = this.shadowRoot?.querySelector('slot[name="title"]');
|
|
104
|
+
if (!slot) return false;
|
|
105
|
+
return slot.assignedNodes({ flatten: true }).some((n) => {
|
|
106
|
+
if (n.nodeType === Node.TEXT_NODE) return Boolean(n.textContent.trim());
|
|
107
|
+
return n.nodeType === Node.ELEMENT_NODE;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
_onTitleSlot() {
|
|
111
|
+
const dialog = this.shadowRoot?.querySelector('[role="dialog"]');
|
|
112
|
+
const fallback = this.shadowRoot?.querySelector(".title-fallback");
|
|
113
|
+
if (!dialog || !fallback) return;
|
|
114
|
+
if (this._hasTitleSlot()) {
|
|
115
|
+
fallback.hidden = true;
|
|
116
|
+
dialog.removeAttribute("aria-labelledby");
|
|
117
|
+
const slot = this.shadowRoot.querySelector('slot[name="title"]');
|
|
118
|
+
const label = slot.assignedNodes({ flatten: true }).map((n) => n.textContent || "").join(" ").trim();
|
|
119
|
+
if (label) dialog.setAttribute("aria-label", label);
|
|
120
|
+
} else {
|
|
121
|
+
fallback.hidden = false;
|
|
122
|
+
dialog.removeAttribute("aria-label");
|
|
123
|
+
dialog.setAttribute("aria-labelledby", "velin-sheet-title");
|
|
124
|
+
this._syncTitle();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
_open() {
|
|
128
|
+
this._prev = saveFocus();
|
|
129
|
+
setBackgroundInert(this);
|
|
130
|
+
document.addEventListener("keydown", this._onKey);
|
|
131
|
+
requestAnimationFrame(() => {
|
|
132
|
+
const f = getFocusableElements(this.shadowRoot);
|
|
133
|
+
if (f.length) f[0].focus();
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
_close() {
|
|
137
|
+
document.removeEventListener("keydown", this._onKey);
|
|
138
|
+
clearBackgroundInert(this);
|
|
139
|
+
restoreFocus(this._prev);
|
|
140
|
+
}
|
|
141
|
+
_onKey(e) {
|
|
142
|
+
if (e.key === "Escape") {
|
|
143
|
+
this.close();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
trapFocus(this.shadowRoot, e);
|
|
147
|
+
}
|
|
148
|
+
disconnectedCallback() {
|
|
149
|
+
document.removeEventListener("keydown", this._onKey);
|
|
150
|
+
clearBackgroundInert(this);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
customElements.define("velin-sheet", VelinSheet);
|
|
154
|
+
var velin_sheet_default = VelinSheet;
|
|
155
|
+
export {
|
|
156
|
+
velin_sheet_default as default
|
|
157
|
+
};
|
package/dist/llms.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# VelinStyle 1.2.
|
|
1
|
+
# VelinStyle 1.2.2
|
|
2
2
|
|
|
3
3
|
> VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components.
|
|
4
4
|
> Full machine context: https://velinstyle.info/dist/velin-agent.json
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
- VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components.
|
|
10
10
|
- Pipeline: Core Foundation → Design System → Knowledge Graph → Prompt Engine → Review Engine → AI Metadata
|
|
11
11
|
- Maturity: CSS/Web Components/runtime = stable; plan/review, knowledge graph, page/section registry, agent metadata = beta/foundation (seed, expanding); Studio + Utility Engine generator = planned
|
|
12
|
-
- Components:
|
|
13
|
-
- Knowledge graph:
|
|
14
|
-
- HTML attributes:
|
|
12
|
+
- Components: 43 canonical Web Components (`velin-*`); 45 lazy-loader entries
|
|
13
|
+
- Knowledge graph: 20 component nodes, 17 page types, 12 sections, 3 design constraint packs
|
|
14
|
+
- HTML attributes: 29 `velin-*` bridges
|
|
15
15
|
- CLI: velinstyle (scan, scaffold, plan, review, docs generate, search index, meta)
|
|
16
16
|
|
|
17
17
|
## Agent briefing
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
- Honor skill status, confidence, compatibility, and onlyIf predicates when automating.
|
|
33
33
|
- Do not put secrets, API keys, or raw emails in velin-meta or page meta.
|
|
34
34
|
- Resolve doc links against docs root (/docs/), not the current page folder.
|
|
35
|
+
- Prefer Velin Transparency Framework (velin-transparency + provenance) for AI/trust/compliance labeling; run `velinstyle transparency doctor`.
|
|
35
36
|
|
|
36
37
|
## Key guides
|
|
37
38
|
- [Velin-Meta](https://velinstyle.info/docs/guides/velin-meta.html)
|
package/dist/search-index.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"generatedAt": "2026-08-
|
|
3
|
+
"generatedAt": "2026-08-04T10:26:08.731Z",
|
|
4
4
|
"entries": [
|
|
5
5
|
{
|
|
6
6
|
"id": "examples:samples/a11y-patterns.html",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
{
|
|
58
58
|
"id": "api:commands",
|
|
59
59
|
"title": "CLI commands",
|
|
60
|
-
"excerpt": "VelinStyle CLI v1.2.
|
|
60
|
+
"excerpt": "VelinStyle CLI v1.2.2. Run velinstyle --help for full usage.",
|
|
61
61
|
"url": "docs/generated/cli/commands.html",
|
|
62
62
|
"category": "api",
|
|
63
63
|
"keywords": [
|
|
@@ -79,6 +79,18 @@
|
|
|
79
79
|
],
|
|
80
80
|
"weight": 1.1
|
|
81
81
|
},
|
|
82
|
+
{
|
|
83
|
+
"id": "api:atelier",
|
|
84
|
+
"title": "CLI: atelier",
|
|
85
|
+
"excerpt": "Pull curated Atelier Library showcase by number/id; blade/vue/react = wrappers only",
|
|
86
|
+
"url": "docs/generated/cli/commands.html#atelier",
|
|
87
|
+
"category": "api",
|
|
88
|
+
"keywords": [
|
|
89
|
+
"cli",
|
|
90
|
+
"atelier"
|
|
91
|
+
],
|
|
92
|
+
"weight": 1.1
|
|
93
|
+
},
|
|
82
94
|
{
|
|
83
95
|
"id": "api:blueprint",
|
|
84
96
|
"title": "CLI: blueprint",
|
|
@@ -94,7 +106,7 @@
|
|
|
94
106
|
{
|
|
95
107
|
"id": "api:build",
|
|
96
108
|
"title": "CLI: build",
|
|
97
|
-
"excerpt": "Build custom CSS with selected layers from config",
|
|
109
|
+
"excerpt": "Build custom CSS with selected layers from config, or production output with --production",
|
|
98
110
|
"url": "docs/generated/cli/commands.html#build",
|
|
99
111
|
"category": "api",
|
|
100
112
|
"keywords": [
|
|
@@ -214,7 +226,7 @@
|
|
|
214
226
|
{
|
|
215
227
|
"id": "api:plan",
|
|
216
228
|
"title": "CLI: plan",
|
|
217
|
-
"excerpt": "Emit page plan JSON from a prompt (
|
|
229
|
+
"excerpt": "Emit page plan JSON from a prompt or --atelier Library ids (beta)",
|
|
218
230
|
"url": "docs/generated/cli/commands.html#plan",
|
|
219
231
|
"category": "api",
|
|
220
232
|
"keywords": [
|
|
@@ -235,6 +247,18 @@
|
|
|
235
247
|
],
|
|
236
248
|
"weight": 1.1
|
|
237
249
|
},
|
|
250
|
+
{
|
|
251
|
+
"id": "api:production",
|
|
252
|
+
"title": "CLI: production",
|
|
253
|
+
"excerpt": "Content-aware production builder (CSS/JS/themes/icons/fonts/motion + report)",
|
|
254
|
+
"url": "docs/generated/cli/commands.html#production",
|
|
255
|
+
"category": "api",
|
|
256
|
+
"keywords": [
|
|
257
|
+
"cli",
|
|
258
|
+
"production"
|
|
259
|
+
],
|
|
260
|
+
"weight": 1.1
|
|
261
|
+
},
|
|
238
262
|
{
|
|
239
263
|
"id": "api:review",
|
|
240
264
|
"title": "CLI: review",
|
|
@@ -250,7 +274,7 @@
|
|
|
250
274
|
{
|
|
251
275
|
"id": "api:scaffold",
|
|
252
276
|
"title": "CLI: scaffold",
|
|
253
|
-
"excerpt": "Plan-first page HTML
|
|
277
|
+
"excerpt": "Plan-first page HTML, recipe fragment, or Atelier Library compose (--atelier, beta)",
|
|
254
278
|
"url": "docs/generated/cli/commands.html#scaffold",
|
|
255
279
|
"category": "api",
|
|
256
280
|
"keywords": [
|
|
@@ -1200,6 +1224,19 @@
|
|
|
1200
1224
|
],
|
|
1201
1225
|
"weight": 1.3
|
|
1202
1226
|
},
|
|
1227
|
+
{
|
|
1228
|
+
"id": "docs:velin-disclosure",
|
|
1229
|
+
"title": "velin-disclosure",
|
|
1230
|
+
"excerpt": "Alias for velin-transparency.",
|
|
1231
|
+
"url": "docs/generated/attributes/velin-disclosure.html",
|
|
1232
|
+
"category": "docs",
|
|
1233
|
+
"keywords": [
|
|
1234
|
+
"velin-disclosure",
|
|
1235
|
+
"docs",
|
|
1236
|
+
"velin-disclosure"
|
|
1237
|
+
],
|
|
1238
|
+
"weight": 1.2
|
|
1239
|
+
},
|
|
1203
1240
|
{
|
|
1204
1241
|
"id": "components:velin-drawer",
|
|
1205
1242
|
"title": "velin-drawer",
|
|
@@ -1239,6 +1276,19 @@
|
|
|
1239
1276
|
],
|
|
1240
1277
|
"weight": 1.3
|
|
1241
1278
|
},
|
|
1279
|
+
{
|
|
1280
|
+
"id": "components:velin-empty-state",
|
|
1281
|
+
"title": "velin-empty-state",
|
|
1282
|
+
"excerpt": "Source: components/velin-empty-state.js",
|
|
1283
|
+
"url": "docs/generated/components/velin-empty-state.html",
|
|
1284
|
+
"category": "components",
|
|
1285
|
+
"keywords": [
|
|
1286
|
+
"velin-empty-state",
|
|
1287
|
+
"components",
|
|
1288
|
+
"velin-empty-state"
|
|
1289
|
+
],
|
|
1290
|
+
"weight": 1.3
|
|
1291
|
+
},
|
|
1242
1292
|
{
|
|
1243
1293
|
"id": "docs:velin-fade",
|
|
1244
1294
|
"title": "velin-fade",
|
|
@@ -1460,6 +1510,19 @@
|
|
|
1460
1510
|
],
|
|
1461
1511
|
"weight": 1.2
|
|
1462
1512
|
},
|
|
1513
|
+
{
|
|
1514
|
+
"id": "components:velin-otp-input",
|
|
1515
|
+
"title": "velin-otp-input",
|
|
1516
|
+
"excerpt": "Source: components/velin-otp-input.js",
|
|
1517
|
+
"url": "docs/generated/components/velin-otp-input.html",
|
|
1518
|
+
"category": "components",
|
|
1519
|
+
"keywords": [
|
|
1520
|
+
"velin-otp-input",
|
|
1521
|
+
"components",
|
|
1522
|
+
"velin-otp-input"
|
|
1523
|
+
],
|
|
1524
|
+
"weight": 1.3
|
|
1525
|
+
},
|
|
1463
1526
|
{
|
|
1464
1527
|
"id": "docs:velin-parallax",
|
|
1465
1528
|
"title": "velin-parallax",
|
|
@@ -1473,6 +1536,19 @@
|
|
|
1473
1536
|
],
|
|
1474
1537
|
"weight": 1.2
|
|
1475
1538
|
},
|
|
1539
|
+
{
|
|
1540
|
+
"id": "components:velin-password-strength",
|
|
1541
|
+
"title": "velin-password-strength",
|
|
1542
|
+
"excerpt": "Source: components/velin-password-strength.js",
|
|
1543
|
+
"url": "docs/generated/components/velin-password-strength.html",
|
|
1544
|
+
"category": "components",
|
|
1545
|
+
"keywords": [
|
|
1546
|
+
"velin-password-strength",
|
|
1547
|
+
"components",
|
|
1548
|
+
"velin-password-strength"
|
|
1549
|
+
],
|
|
1550
|
+
"weight": 1.3
|
|
1551
|
+
},
|
|
1476
1552
|
{
|
|
1477
1553
|
"id": "components:velin-persist",
|
|
1478
1554
|
"title": "velin-persist",
|
|
@@ -1863,6 +1939,19 @@
|
|
|
1863
1939
|
],
|
|
1864
1940
|
"weight": 1.2
|
|
1865
1941
|
},
|
|
1942
|
+
{
|
|
1943
|
+
"id": "docs:velin-transparency",
|
|
1944
|
+
"title": "velin-transparency",
|
|
1945
|
+
"excerpt": "Velin Transparency Framework host — attaches disclosure + provenance mark (Renderer).",
|
|
1946
|
+
"url": "docs/generated/attributes/velin-transparency.html",
|
|
1947
|
+
"category": "docs",
|
|
1948
|
+
"keywords": [
|
|
1949
|
+
"velin-transparency",
|
|
1950
|
+
"docs",
|
|
1951
|
+
"velin-transparency"
|
|
1952
|
+
],
|
|
1953
|
+
"weight": 1.2
|
|
1954
|
+
},
|
|
1866
1955
|
{
|
|
1867
1956
|
"id": "examples:samples/velin-search.html",
|
|
1868
1957
|
"title": "VelinSearch",
|