@czxingyu/xycomponents 0.1.4 → 0.1.5
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/dist/cli.js +177 -3
- package/dist/index.esm.js +1 -1
- package/dist/index.lite.esm.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/package.js +1 -1
- package/package.json +4 -2
- package/scripts/postinstall-skills.mjs +30 -0
- package/skills/README.md +51 -17
- package/skills/xycomponents-shared/SKILL.md +2 -0
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { resolve } from "node:path";
|
|
2
|
+
import { dirname, join, resolve } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
4
5
|
//#region cli/component-lifecycle.ts
|
|
5
6
|
var componentDeprecations = [];
|
|
6
7
|
var retiredComponents = [{
|
|
@@ -9936,6 +9937,139 @@ var packageMetadata = {
|
|
|
9936
9937
|
schemaVersion: 1
|
|
9937
9938
|
};
|
|
9938
9939
|
//#endregion
|
|
9940
|
+
//#region cli/skills-install.ts
|
|
9941
|
+
var CONSUMER_SKILL_NAMES = [
|
|
9942
|
+
"xycomponents-shared",
|
|
9943
|
+
"xycomponents-cli",
|
|
9944
|
+
"xycomponents-contribute"
|
|
9945
|
+
];
|
|
9946
|
+
var MAINTAINER_SKILL_NAMES = [...CONSUMER_SKILL_NAMES, "xycomponents-maintainer"];
|
|
9947
|
+
var SKILL_TARGETS = {
|
|
9948
|
+
agents: ".agents/skills",
|
|
9949
|
+
claude: ".claude/skills",
|
|
9950
|
+
codex: ".codex/skills",
|
|
9951
|
+
cursor: ".cursor/skills"
|
|
9952
|
+
};
|
|
9953
|
+
var AGENTS_GUIDE_START = "<!-- xycomponents:start -->";
|
|
9954
|
+
var AGENTS_GUIDE_END = "<!-- xycomponents:end -->";
|
|
9955
|
+
var AGENTS_GUIDE_BLOCK = `${AGENTS_GUIDE_START}
|
|
9956
|
+
|
|
9957
|
+
## xycomponents Agent Guide
|
|
9958
|
+
|
|
9959
|
+
This project uses \`@czxingyu/xycomponents\`. Query component APIs with the **project-local** CLI (do not use a globally installed CLI):
|
|
9960
|
+
|
|
9961
|
+
\`\`\`bash
|
|
9962
|
+
pnpm exec xycomponents doctor --json
|
|
9963
|
+
pnpm exec xycomponents component <name> --json
|
|
9964
|
+
pnpm exec xycomponents snippet <name> --example <id>
|
|
9965
|
+
\`\`\`
|
|
9966
|
+
|
|
9967
|
+
Workflow skills are installed for multiple agents under \`.cursor/skills/\`, \`.claude/skills/\`, \`.codex/skills/\`, and \`.agents/skills/\`:
|
|
9968
|
+
|
|
9969
|
+
- \`xycomponents-shared\` — install, version alignment, Vue setup
|
|
9970
|
+
- \`xycomponents-cli\` — CLI commands and JSON metadata
|
|
9971
|
+
- \`xycomponents-contribute\` — GitHub Bug / Feature issues
|
|
9972
|
+
|
|
9973
|
+
Re-run \`pnpm exec xycomponents skills install\` after upgrading \`@czxingyu/xycomponents\` so agent guides stay in sync.
|
|
9974
|
+
|
|
9975
|
+
${AGENTS_GUIDE_END}`;
|
|
9976
|
+
function moduleUrlToPath(moduleUrl) {
|
|
9977
|
+
return moduleUrl.startsWith("file:") ? fileURLToPath(moduleUrl) : moduleUrl;
|
|
9978
|
+
}
|
|
9979
|
+
function resolvePackageRoot(moduleUrl) {
|
|
9980
|
+
return resolve(dirname(moduleUrlToPath(moduleUrl)), "..");
|
|
9981
|
+
}
|
|
9982
|
+
function resolveSkillsSourceDir(moduleUrl) {
|
|
9983
|
+
return join(resolvePackageRoot(moduleUrl), "skills");
|
|
9984
|
+
}
|
|
9985
|
+
function resolveSkillNames(options) {
|
|
9986
|
+
if (options.maintainer) return [...MAINTAINER_SKILL_NAMES];
|
|
9987
|
+
if (options.consumer === false) return [...MAINTAINER_SKILL_NAMES];
|
|
9988
|
+
return [...CONSUMER_SKILL_NAMES];
|
|
9989
|
+
}
|
|
9990
|
+
function resolveSkillTargets(targets) {
|
|
9991
|
+
if (!targets || targets.length === 0) return Object.keys(SKILL_TARGETS);
|
|
9992
|
+
return targets.filter((target) => target in SKILL_TARGETS);
|
|
9993
|
+
}
|
|
9994
|
+
function readPackageVersion(packageRoot) {
|
|
9995
|
+
try {
|
|
9996
|
+
return JSON.parse(readFileSync(join(packageRoot, "package.json"), "utf8")).version ?? "unknown";
|
|
9997
|
+
} catch {
|
|
9998
|
+
return "unknown";
|
|
9999
|
+
}
|
|
10000
|
+
}
|
|
10001
|
+
function copySkillDirectory(source, destination, dryRun) {
|
|
10002
|
+
if (dryRun) return;
|
|
10003
|
+
mkdirSync(dirname(destination), { recursive: true });
|
|
10004
|
+
cpSync(source, destination, {
|
|
10005
|
+
force: true,
|
|
10006
|
+
recursive: true
|
|
10007
|
+
});
|
|
10008
|
+
}
|
|
10009
|
+
function upsertAgentsGuide(projectRoot, dryRun) {
|
|
10010
|
+
const agentsGuidePath = join(projectRoot, "AGENTS.md");
|
|
10011
|
+
const previous = existsSync(agentsGuidePath) ? readFileSync(agentsGuidePath, "utf8") : "";
|
|
10012
|
+
if (previous.includes(AGENTS_GUIDE_START) && previous.includes(AGENTS_GUIDE_END)) {
|
|
10013
|
+
const next = previous.replace(new RegExp(`${AGENTS_GUIDE_START}[\\s\\S]*?${AGENTS_GUIDE_END}`, "m"), AGENTS_GUIDE_BLOCK);
|
|
10014
|
+
if (!dryRun) writeFileSync(agentsGuidePath, next, "utf8");
|
|
10015
|
+
return {
|
|
10016
|
+
agentsGuide: previous === next ? "skipped" : "updated",
|
|
10017
|
+
agentsGuidePath
|
|
10018
|
+
};
|
|
10019
|
+
}
|
|
10020
|
+
const next = `${previous}${previous.length > 0 && !previous.endsWith("\n") ? "\n\n" : previous.length > 0 ? "\n" : ""}${AGENTS_GUIDE_BLOCK}\n`;
|
|
10021
|
+
if (!dryRun) writeFileSync(agentsGuidePath, next, "utf8");
|
|
10022
|
+
return {
|
|
10023
|
+
agentsGuide: previous.length > 0 ? "updated" : "created",
|
|
10024
|
+
agentsGuidePath
|
|
10025
|
+
};
|
|
10026
|
+
}
|
|
10027
|
+
function installSkills(options, moduleUrl = import.meta.url) {
|
|
10028
|
+
const projectRoot = resolve(options.projectRoot ?? process.cwd());
|
|
10029
|
+
const packageRoot = resolve(options.packageRoot ?? resolvePackageRoot(moduleUrl));
|
|
10030
|
+
const skillsSource = resolveSkillsSourceDir(moduleUrl);
|
|
10031
|
+
const skillNames = resolveSkillNames(options);
|
|
10032
|
+
const targets = resolveSkillTargets(options.targets);
|
|
10033
|
+
const installed = [];
|
|
10034
|
+
const skipped = [];
|
|
10035
|
+
if (!existsSync(skillsSource)) return {
|
|
10036
|
+
agentsGuide: "skipped",
|
|
10037
|
+
agentsGuidePath: join(projectRoot, "AGENTS.md"),
|
|
10038
|
+
installed,
|
|
10039
|
+
packageVersion: readPackageVersion(packageRoot),
|
|
10040
|
+
projectRoot,
|
|
10041
|
+
skillsSource,
|
|
10042
|
+
skipped: [`skills source missing: ${skillsSource}`],
|
|
10043
|
+
status: "fail"
|
|
10044
|
+
};
|
|
10045
|
+
for (const target of targets) {
|
|
10046
|
+
const targetRoot = join(projectRoot, SKILL_TARGETS[target]);
|
|
10047
|
+
for (const skillName of skillNames) {
|
|
10048
|
+
const sourceDir = join(skillsSource, skillName);
|
|
10049
|
+
const destinationDir = join(targetRoot, skillName);
|
|
10050
|
+
if (!existsSync(join(sourceDir, "SKILL.md"))) {
|
|
10051
|
+
skipped.push(`${skillName} (missing source for ${target})`);
|
|
10052
|
+
continue;
|
|
10053
|
+
}
|
|
10054
|
+
copySkillDirectory(sourceDir, destinationDir, options.dryRun === true);
|
|
10055
|
+
installed.push({
|
|
10056
|
+
path: join(SKILL_TARGETS[target], skillName, "SKILL.md"),
|
|
10057
|
+
skill: skillName,
|
|
10058
|
+
target
|
|
10059
|
+
});
|
|
10060
|
+
}
|
|
10061
|
+
}
|
|
10062
|
+
return {
|
|
10063
|
+
...upsertAgentsGuide(projectRoot, options.dryRun === true),
|
|
10064
|
+
installed,
|
|
10065
|
+
packageVersion: readPackageVersion(packageRoot),
|
|
10066
|
+
projectRoot,
|
|
10067
|
+
skillsSource,
|
|
10068
|
+
skipped,
|
|
10069
|
+
status: installed.length > 0 ? "pass" : "fail"
|
|
10070
|
+
};
|
|
10071
|
+
}
|
|
10072
|
+
//#endregion
|
|
9939
10073
|
//#region cli/index.ts
|
|
9940
10074
|
function withTrailingNewline(value) {
|
|
9941
10075
|
return value.endsWith("\n") ? value : `${value}\n`;
|
|
@@ -10005,6 +10139,7 @@ Usage:
|
|
|
10005
10139
|
xycomponents migrate link --json
|
|
10006
10140
|
xycomponents package --json
|
|
10007
10141
|
xycomponents doctor --json
|
|
10142
|
+
xycomponents skills install --consumer --json
|
|
10008
10143
|
|
|
10009
10144
|
Commands:
|
|
10010
10145
|
components List every documented component
|
|
@@ -10012,7 +10147,8 @@ Commands:
|
|
|
10012
10147
|
snippet <name> Print a component usage snippet
|
|
10013
10148
|
migrate <name> Explain stable, deprecated, or retired migration status
|
|
10014
10149
|
package Explain default and lite package entry contracts
|
|
10015
|
-
doctor
|
|
10150
|
+
doctor Print catalog and detailed-metadata coverage
|
|
10151
|
+
skills install Install AI agent skills for Cursor, Claude Code, Codex, and AGENTS.md
|
|
10016
10152
|
help Print this help message`);
|
|
10017
10153
|
}
|
|
10018
10154
|
function componentSummary(category) {
|
|
@@ -10067,6 +10203,39 @@ Lite: ${packageMetadata.entries.lite.import}
|
|
|
10067
10203
|
Excludes: ${packageMetadata.entries.lite.excludedComponents.join(", ")}
|
|
10068
10204
|
Docs: ${packageMetadata.docs}`);
|
|
10069
10205
|
}
|
|
10206
|
+
function printSkillsInstall(flags, json) {
|
|
10207
|
+
const rawTargets = readFlag(flags, "target", "all").split(",").map((value) => value.trim()).filter(Boolean);
|
|
10208
|
+
const targets = rawTargets.length === 1 && rawTargets[0] === "all" ? resolveSkillTargets() : resolveSkillTargets(rawTargets);
|
|
10209
|
+
const report = installSkills({
|
|
10210
|
+
consumer: flags.has("consumer") || !flags.has("maintainer"),
|
|
10211
|
+
dryRun: flags.has("dry-run"),
|
|
10212
|
+
maintainer: flags.has("maintainer"),
|
|
10213
|
+
projectRoot: readFlag(flags, "project", process.cwd()),
|
|
10214
|
+
targets
|
|
10215
|
+
});
|
|
10216
|
+
if (json) {
|
|
10217
|
+
const payload = stringifyJson(report);
|
|
10218
|
+
return report.status === "pass" ? ok(payload) : {
|
|
10219
|
+
exitCode: 1,
|
|
10220
|
+
stderr: "",
|
|
10221
|
+
stdout: withTrailingNewline(payload)
|
|
10222
|
+
};
|
|
10223
|
+
}
|
|
10224
|
+
if (report.status !== "pass") return fail(["Failed to install xycomponents skills.", ...report.skipped].join("\n"));
|
|
10225
|
+
const lines = [
|
|
10226
|
+
`Installed ${report.installed.length} skill(s) for @czxingyu/xycomponents@${report.packageVersion}.`,
|
|
10227
|
+
`Project: ${report.projectRoot}`,
|
|
10228
|
+
`AGENTS.md: ${report.agentsGuide}`,
|
|
10229
|
+
"",
|
|
10230
|
+
"Targets:",
|
|
10231
|
+
...Object.entries(SKILL_TARGETS).map(([name, directory]) => `- ${name}: ${directory}`),
|
|
10232
|
+
"",
|
|
10233
|
+
"Installed:",
|
|
10234
|
+
...report.installed.map((item) => `- ${item.target}: ${item.path}`)
|
|
10235
|
+
];
|
|
10236
|
+
if (report.skipped.length > 0) lines.push("", "Skipped:", ...report.skipped.map((item) => `- ${item}`));
|
|
10237
|
+
return ok(lines.join("\n"));
|
|
10238
|
+
}
|
|
10070
10239
|
function printComponent(name, json) {
|
|
10071
10240
|
if (!name) return fail("Missing component name.");
|
|
10072
10241
|
const component = findComponent(name);
|
|
@@ -10154,10 +10323,15 @@ function runCli(argv) {
|
|
|
10154
10323
|
if (argv.includes("-h")) return printHelp();
|
|
10155
10324
|
const { flags, positionals } = parseArgs(argv);
|
|
10156
10325
|
if (flags.has("help")) return printHelp();
|
|
10157
|
-
const [rawCommand,
|
|
10326
|
+
const [rawCommand, secondArg] = positionals;
|
|
10158
10327
|
const command = rawCommand?.toLowerCase() ?? "help";
|
|
10159
10328
|
const json = wantsJson(flags);
|
|
10160
10329
|
if (command === "help") return printHelp();
|
|
10330
|
+
if (command === "skills") {
|
|
10331
|
+
if (secondArg?.toLowerCase() === "install") return printSkillsInstall(flags, json);
|
|
10332
|
+
return fail("Missing skills subcommand. Try \"xycomponents skills install\".");
|
|
10333
|
+
}
|
|
10334
|
+
const componentName = secondArg;
|
|
10161
10335
|
if (command === "components" || command === "list") return printComponents(json, readFlag(flags, "category", "") || void 0, flags.has("include-retired"));
|
|
10162
10336
|
if (command === "component" || command === "show") return printComponent(componentName, json);
|
|
10163
10337
|
if (command === "snippet") return printSnippet(componentName, readFlag(flags, "example", "basic"), json);
|
package/dist/index.esm.js
CHANGED
|
@@ -12,7 +12,7 @@ var qe = Object.create, Je = Object.defineProperty, Ye = Object.getOwnPropertyDe
|
|
|
12
12
|
}, tt = (e, t, n) => (n = e == null ? {} : qe(Ze(e)), et(t || !e || !e.__esModule ? Je(n, "default", {
|
|
13
13
|
value: e,
|
|
14
14
|
enumerable: !0
|
|
15
|
-
}) : n, e)), nt = "0.1.
|
|
15
|
+
}) : n, e)), nt = "0.1.5";
|
|
16
16
|
//#endregion
|
|
17
17
|
//#region components/shared/install.ts
|
|
18
18
|
function X(e) {
|
package/dist/index.lite.esm.js
CHANGED
|
@@ -9,7 +9,7 @@ import qe from "dayjs/plugin/quarterOfYear.js";
|
|
|
9
9
|
import Je from "dayjs/plugin/weekOfYear.js";
|
|
10
10
|
import Ye from "dayjs/plugin/weekYear.js";
|
|
11
11
|
//#region package.json
|
|
12
|
-
var Xe = "0.1.
|
|
12
|
+
var Xe = "0.1.5";
|
|
13
13
|
//#endregion
|
|
14
14
|
//#region components/shared/install.ts
|
|
15
15
|
function Z(e) {
|
package/dist/index.umd.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("vue"),require("dayjs")):typeof define==`function`&&define.amd?define([`exports`,`vue`,`dayjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.XyComponents={},e.Vue,e.dayjs))})(this,function(e,t,n){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var r=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},u=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),d=(e,t)=>{let n={};for(var r in e)i(n,r,{get:e[r],enumerable:!0});return t||i(n,Symbol.toStringTag,{value:`Module`}),n},f=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var s=o(t),l=0,u=s.length,d;l<u;l++)d=s[l],!c.call(e,d)&&d!==n&&i(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=a(t,d))||r.enumerable});return e},p=(e,t,n)=>(n=e==null?{}:r(s(e)),f(t||!e||!e.__esModule?i(n,`default`,{value:e,enumerable:!0}):n,e));n=p(n,1);var m=`0.1.4`;function h(e){let t=e;return t.install=t=>{let n=e.name;n&&t.component(n,e)},t}var g={class:`xy-alert-marquee__content`,"aria-hidden":`true`},_=(0,t.defineComponent)({name:`XyAlertMarquee`,__name:`alert-marquee`,props:{direction:{type:String,required:!1,default:`left`},gradient:{type:Boolean,required:!1,default:!1},gap:{type:Number,required:!1,default:32},pauseOnHover:{type:Boolean,required:!1,default:!0},speed:{type:Number,required:!1,default:50}},setup(e){let n=e,r=(0,t.ref)(),i=(0,t.ref)(),a=(0,t.ref)(!1),o=(0,t.ref)(10),s,c=(0,t.computed)(()=>({"--xy-alert-marquee-duration":`${o.value}s`,"--xy-alert-marquee-gap":`${n.gap}px`})),l=(0,t.computed)(()=>[`xy-alert-marquee`,{"xy-alert-marquee--gradient":n.gradient,"xy-alert-marquee--paused":a.value,"xy-alert-marquee--reverse":n.direction===`right`}]);function u(){let e=i.value?.scrollWidth??0;!e||!n.speed||(o.value=(e+n.gap)/n.speed)}function d(){n.pauseOnHover&&(a.value=!0)}function f(){n.pauseOnHover&&(a.value=!1)}return(0,t.onMounted)(()=>{u(),!(typeof ResizeObserver>`u`)&&(s=new ResizeObserver(u),i.value&&s.observe(i.value),r.value&&s.observe(r.value))}),(0,t.onBeforeUnmount)(()=>{s?.disconnect()}),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`rootRef`,ref:r,class:(0,t.normalizeClass)(l.value),onMouseenter:d,onMouseleave:f},[(0,t.createElementVNode)(`div`,{class:`xy-alert-marquee__track`,style:(0,t.normalizeStyle)(c.value)},[(0,t.createElementVNode)(`span`,{ref_key:`contentRef`,ref:i,class:`xy-alert-marquee__content`},[(0,t.renderSlot)(e.$slots,`default`,{},void 0,!0)],512),(0,t.createElementVNode)(`span`,g,[(0,t.renderSlot)(e.$slots,`default`,{},void 0,!0)])],4)],34))}}),v=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},y=v(_,[[`__scopeId`,`data-v-725f3481`]]),b=0;function x(e){return e==null?[]:Array.isArray(e)?[...e]:[e]}function S(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function C(e){let t={};for(let n of Object.keys(e))e[n]!==void 0&&(t[n]=e[n]);return t}function w(e,t){let n={};for(let r of A(e,t))for(let e of Object.keys(r)){let t=r[e];t&&(n[e]=[n[e],t].filter(Boolean).join(` `))}return n}function T(e,t){let n={};for(let r of A(e,t))for(let e of Object.keys(r)){let t=r[e];S(t)&&(n[e]={...n[e],...t})}return n}function E(...e){return t=>{for(let n of e)n?.(t)}}function D(){return typeof window<`u`&&typeof document<`u`}function O(e=`xy`){return b+=1,`${e}-${b}`}function k(e,t){return!!(e&&t instanceof Node&&(e===t||e.contains(t)))}function A(e,t){let n=[];for(let r of x(e)){if(!r)continue;let e=typeof r==`function`?r({props:t}):r;S(e)&&n.push(e)}return n}function j(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}var M=[`a[href]`,`area[href]`,`button:not([disabled])`,`input:not([disabled]):not([type='hidden'])`,`select:not([disabled])`,`textarea:not([disabled])`,`iframe`,`object`,`embed`,`[contenteditable='true']`,`[tabindex]:not([tabindex='-1'])`].join(`,`);function N(e){return!(e instanceof HTMLElement)||e.getAttribute(`aria-hidden`)===`true`||e.hasAttribute(`disabled`)?!1:e.matches(M)}function P(e){return e?Array.from(e.querySelectorAll(M)).filter(N):[]}function F(e,t={}){return N(e)?(e.focus(t),document.activeElement===e):!1}function I(e,t={}){return F(P(e)[0],t)}function L(e,t={}){return F(P(e).at(-1),t)}function R(e){let{currentIndex:t,itemCount:n,offset:r}=e,i=e.loop??!0;if(n<=0||r===0)return-1;let a=t;for(let t=0;t<n;t+=1){if(a+=r,i)a=(a+n)%n;else if(a<0||a>=n)return-1;if(!e.isDisabled?.(a))return a}return-1}function z(e){if(e.key===`ArrowDown`||e.key===`ArrowRight`)return`next`;if(e.key===`ArrowUp`||e.key===`ArrowLeft`)return`previous`;if(e.key===`Home`)return`first`;if(e.key===`End`)return`last`;if(e.key===`Enter`||e.key===` `)return`activate`}function B(e){return!e.altKey&&!e.ctrlKey&&!e.metaKey&&e.key.length===1&&e.key.trim().length>0}function V(e){let t=U(e.search),n=e.items.length,r=e.loop??!0;if(!t||n<=0)return-1;let i=e.currentIndex??-1;for(let a=1;a<=n;a+=1){let o=r?(i+a+n)%n:i+a;if(o<0||o>=n)return-1;let s=e.items[o];if(!e.isDisabled?.(s,o)&&U(e.getText(s)??``).startsWith(t))return o}return-1}function H(e,n={}){let r,i=r=>{r.key!==`Escape`||(0,t.toValue)(n.active)===!1||(n.preventDefault&&r.preventDefault(),n.stopPropagation&&r.stopPropagation(),e(r))};function a(){if(r?.(),r=void 0,!D())return;let e=(0,t.toValue)(n.target)??document;e.addEventListener(`keydown`,i),r=()=>e.removeEventListener(`keydown`,i)}return(0,t.onMounted)(a),(0,t.onBeforeUnmount)(()=>r?.()),(0,t.watch)(()=>(0,t.toValue)(n.target),a),()=>r?.()}function U(e){return e.trim().toLocaleLowerCase()}function W(e,t=[]){return[e,...t]}function G(e,t={}){let n=[],r=[],i=new Map,a=new Map,o=new Map;function s(e,c,l,u,d,f){e.forEach((e,p)=>{let m=[...f,p],h={index:p,indexPath:m,level:u,parentKey:c,parentKeyPath:l},g=t.getKey?.(e,h),_=g!==void 0&&(t.isNode?.(e,h)??!0),v=t.getChildren?.(e)??[];if(!_||g===void 0){s(v,c,l,u,d,m);return}let y=W(g,l),b={children:[],index:p,indexPath:m,item:e,key:g,keyPath:y,level:u,parentKey:c};n.push(b),i.set(g,b),a.set(g,c),d?d.children.push(b):r.push(b);let x=o.get(c)??[];x.push(g),o.set(c,x),s(v,g,y,u+1,b,m)})}return s(e,``,[],0,void 0,[]),{getChildrenKeys(e){return[...o.get(e)??[]]},getDescendantKeys(e){let t=i.get(e);return t?te(t):[]},getKeyPath(e){return[...i.get(e)?.keyPath??[]]},getNode(e){return i.get(e)},getParentKey(e){return a.get(e)},getSiblingKeys(e){let t=a.get(e);return t===void 0?[]:[...o.get(t)??[]]},nodeMap:i,nodes:n,parentKeyMap:a,rootNodes:r}}function K(){let e=(0,t.shallowRef)([]),n=(0,t.computed)(()=>e.value.map(({order:e,...t})=>t)),r=0;return{collection:(0,t.computed)(()=>ee(e.value)),nodes:n,registerNode(t){let n={...t,order:r++,parentKey:t.parentKey??``};return e.value=[...e.value.filter(e=>e.key!==t.key),n],()=>{e.value=e.value.filter(e=>e.key!==t.key||e.order!==n.order)}}}}function ee(e){let t=[],n=[],r=new Map,i=new Map,a=new Map,o=new Set(e.map(e=>e.key)),s=new Map;for(let t of e){let e=t.parentKey&&o.has(t.parentKey)?t.parentKey:``,n=s.get(e)??[];n.push(t),s.set(e,n)}for(let e of s.values())e.sort(ne);function c(e,o,l,u,d){(s.get(e)??[]).forEach((s,f)=>{let p=s.index??f,m=[...d,f],h=W(s.key,o),g={children:[],index:p,indexPath:m,item:s.item,key:s.key,keyPath:h,level:l,parentKey:e};t.push(g),r.set(g.key,g),i.set(g.key,e),u?u.children.push(g):n.push(g);let _=a.get(e)??[];_.push(g.key),a.set(e,_),c(g.key,h,l+1,g,m)})}return c(``,[],0,void 0,[]),{getChildrenKeys(e){return[...a.get(e)??[]]},getDescendantKeys(e){let t=r.get(e);return t?te(t):[]},getKeyPath(e){return[...r.get(e)?.keyPath??[]]},getNode(e){return r.get(e)},getParentKey(e){return i.get(e)},getSiblingKeys(e){let t=i.get(e);return t===void 0?[]:[...a.get(t)??[]]},nodeMap:r,nodes:t,parentKeyMap:i,rootNodes:n}}function te(e){let t=[];for(let n of e.children)t.push(n.key,...te(n));return t}function ne(e,t){return(e.index??e.order)-(t.index??t.order)||e.order-t.order}var re={direction:`ltr`,disabled:!1,locale:`zh-CN`,prefixCls:`xy`,size:`md`,zIndex:1e3},ie=Symbol(`xy-config`);function ae(e,t={}){return{direction:t.direction??e.direction,disabled:t.disabled??e.disabled,locale:t.locale??e.locale,prefixCls:t.prefixCls??e.prefixCls,size:t.size??e.size,zIndex:t.zIndex??e.zIndex}}function oe(e){let n=(0,t.inject)(ie,(0,t.computed)(()=>re)),r=(0,t.computed)(()=>ae(n.value,(0,t.toValue)(e)));return(0,t.provide)(ie,r),r}function se(e){let n=(0,t.inject)(ie,(0,t.computed)(()=>re));return(0,t.computed)(()=>e?ae(n.value,(0,t.toValue)(e)):n.value)}function ce(e,t){let n=e.prefixCls??re.prefixCls;return t?`${n}-${t}`:n}function le(e,t){let n=ce(re,t),r=ce(e,t);return n===r?[n]:[n,r]}var ue=Symbol(`xy-form-control`);function de(e){return(0,t.provide)(ue,e),e}function fe(e){let n=(0,t.inject)(ue,void 0),r=se(),i=(0,t.getCurrentInstance)(),a=(0,t.computed)(()=>(0,t.toValue)(e)),o=(0,t.computed)(()=>{if(!i)return a.value.disabled!==void 0;let e=i.vnode.props??{};return Object.prototype.hasOwnProperty.call(e,`disabled`)});return{describedBy:(0,t.computed)(()=>(0,t.toValue)(n?.describedBy)),disabled:(0,t.computed)(()=>(o.value?a.value.disabled:void 0)??(0,t.toValue)(n?.disabled)??r.value.disabled),id:(0,t.computed)(()=>a.value.id??(0,t.toValue)(n?.id)),labelledBy:(0,t.computed)(()=>(0,t.toValue)(n?.labelledBy)),notifyBlur:e=>n?.onBlur?.(e),notifyChange:e=>n?.onChange?.(e),readonly:(0,t.computed)(()=>a.value.readonly??!!(0,t.toValue)(n?.readonly)),size:(0,t.computed)(()=>a.value.size??(0,t.toValue)(n?.size)??r.value.size),status:(0,t.computed)(()=>a.value.status??(0,t.toValue)(n?.status))}}function q(e,t){e.value=t}var J={add:(e,t,r)=>(0,n.default)(e).add(t,r),compare(e,t,r=`millisecond`){let i=(0,n.default)(e),a=(0,n.default)(t);return i.isSame(a,r)?0:i.isBefore(a,r)?-1:1},format:(e,t)=>e?(0,n.default)(e).format(t):``,isValid:e=>(0,n.default)(e).isValid(),parse:e=>(0,n.default)(e),startOf:(e,t)=>(0,n.default)(e).startOf(t)};function pe(){return pe=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},pe.apply(this,arguments)}function me(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,ge(e,t)}function he(e){return he=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},he(e)}function ge(e,t){return ge=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ge(e,t)}function _e(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function ve(e,t,n){return ve=_e()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&ge(i,n.prototype),i},ve.apply(null,arguments)}function ye(e){return Function.toString.call(e).indexOf(`[native code]`)!==-1}function be(e){var t=typeof Map==`function`?new Map:void 0;return be=function(e){if(e===null||!ye(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return ve(e,arguments,he(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),ge(n,e)},be(e)}var xe=/%[sdj%]/g,Se=function(){};typeof process<`u`&&process.env&&process.env.NODE_ENV!==`production`&&typeof window<`u`&&typeof document<`u`&&(Se=function(e,t){typeof console<`u`&&console.warn&&typeof ASYNC_VALIDATOR_NO_WARNING>`u`&&t.every(function(e){return typeof e==`string`})&&console.warn(e,t)});function Ce(e){if(!e||!e.length)return null;var t={};return e.forEach(function(e){var n=e.field;t[n]=t[n]||[],t[n].push(e)}),t}function we(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=0,a=n.length;return typeof e==`function`?e.apply(null,n):typeof e==`string`?e.replace(xe,function(e){if(e===`%%`)return`%`;if(i>=a)return e;switch(e){case`%s`:return String(n[i++]);case`%d`:return Number(n[i++]);case`%j`:try{return JSON.stringify(n[i++])}catch{return`[Circular]`}break;default:return e}}):e}function Te(e){return e===`string`||e===`url`||e===`hex`||e===`email`||e===`date`||e===`pattern`}function Y(e,t){return!!(e==null||t===`array`&&Array.isArray(e)&&!e.length||Te(t)&&typeof e==`string`&&!e)}function Ee(e,t,n){var r=[],i=0,a=e.length;function o(e){r.push.apply(r,e||[]),i++,i===a&&n(r)}e.forEach(function(e){t(e,o)})}function De(e,t,n){var r=0,i=e.length;function a(o){if(o&&o.length){n(o);return}var s=r;r+=1,s<i?t(e[s],a):n([])}a([])}function Oe(e){var t=[];return Object.keys(e).forEach(function(n){t.push.apply(t,e[n]||[])}),t}var ke=function(e){me(t,e);function t(t,n){var r=e.call(this,`Async Validation Error`)||this;return r.errors=t,r.fields=n,r}return t}(be(Error));function Ae(e,t,n,r,i){if(t.first){var a=new Promise(function(t,a){De(Oe(e),n,function(e){return r(e),e.length?a(new ke(e,Ce(e))):t(i)})});return a.catch(function(e){return e}),a}var o=t.firstFields===!0?Object.keys(e):t.firstFields||[],s=Object.keys(e),c=s.length,l=0,u=[],d=new Promise(function(t,a){var d=function(e){if(u.push.apply(u,e),l++,l===c)return r(u),u.length?a(new ke(u,Ce(u))):t(i)};s.length||(r(u),t(i)),s.forEach(function(t){var r=e[t];o.indexOf(t)===-1?Ee(r,n,d):De(r,n,d)})});return d.catch(function(e){return e}),d}function je(e){return!!(e&&e.message!==void 0)}function Me(e,t){for(var n=e,r=0;r<t.length;r++){if(n==null)return n;n=n[t[r]]}return n}function Ne(e,t){return function(n){var r=e.fullFields?Me(t,e.fullFields):t[n.field||e.fullField];return je(n)?(n.field=n.field||e.fullField,n.fieldValue=r,n):{message:typeof n==`function`?n():n,fieldValue:r,field:n.field||e.fullField}}}function Pe(e,t){if(t){for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];typeof r==`object`&&typeof e[n]==`object`?e[n]=pe({},e[n],r):e[n]=r}}return e}var Fe=function(e,t,n,r,i,a){e.required&&(!n.hasOwnProperty(e.field)||Y(t,a||e.type))&&r.push(we(i.messages.required,e.fullField))},Ie=function(e,t,n,r,i){(/^\s+$/.test(t)||t===``)&&r.push(we(i.messages.whitespace,e.fullField))},Le,Re=(function(){if(Le)return Le;var e=`[a-fA-F\\d:]`,t=function(t){return t&&t.includeBoundaries?`(?:(?<=\\s|^)(?=`+e+`)|(?<=`+e+`)(?=\\s|$))`:``},n=`(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}`,r=`[a-fA-F\\d]{1,4}`,i=(`
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("vue"),require("dayjs")):typeof define==`function`&&define.amd?define([`exports`,`vue`,`dayjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.XyComponents={},e.Vue,e.dayjs))})(this,function(e,t,n){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var r=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},u=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),d=(e,t)=>{let n={};for(var r in e)i(n,r,{get:e[r],enumerable:!0});return t||i(n,Symbol.toStringTag,{value:`Module`}),n},f=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var s=o(t),l=0,u=s.length,d;l<u;l++)d=s[l],!c.call(e,d)&&d!==n&&i(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=a(t,d))||r.enumerable});return e},p=(e,t,n)=>(n=e==null?{}:r(s(e)),f(t||!e||!e.__esModule?i(n,`default`,{value:e,enumerable:!0}):n,e));n=p(n,1);var m=`0.1.5`;function h(e){let t=e;return t.install=t=>{let n=e.name;n&&t.component(n,e)},t}var g={class:`xy-alert-marquee__content`,"aria-hidden":`true`},_=(0,t.defineComponent)({name:`XyAlertMarquee`,__name:`alert-marquee`,props:{direction:{type:String,required:!1,default:`left`},gradient:{type:Boolean,required:!1,default:!1},gap:{type:Number,required:!1,default:32},pauseOnHover:{type:Boolean,required:!1,default:!0},speed:{type:Number,required:!1,default:50}},setup(e){let n=e,r=(0,t.ref)(),i=(0,t.ref)(),a=(0,t.ref)(!1),o=(0,t.ref)(10),s,c=(0,t.computed)(()=>({"--xy-alert-marquee-duration":`${o.value}s`,"--xy-alert-marquee-gap":`${n.gap}px`})),l=(0,t.computed)(()=>[`xy-alert-marquee`,{"xy-alert-marquee--gradient":n.gradient,"xy-alert-marquee--paused":a.value,"xy-alert-marquee--reverse":n.direction===`right`}]);function u(){let e=i.value?.scrollWidth??0;!e||!n.speed||(o.value=(e+n.gap)/n.speed)}function d(){n.pauseOnHover&&(a.value=!0)}function f(){n.pauseOnHover&&(a.value=!1)}return(0,t.onMounted)(()=>{u(),!(typeof ResizeObserver>`u`)&&(s=new ResizeObserver(u),i.value&&s.observe(i.value),r.value&&s.observe(r.value))}),(0,t.onBeforeUnmount)(()=>{s?.disconnect()}),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`rootRef`,ref:r,class:(0,t.normalizeClass)(l.value),onMouseenter:d,onMouseleave:f},[(0,t.createElementVNode)(`div`,{class:`xy-alert-marquee__track`,style:(0,t.normalizeStyle)(c.value)},[(0,t.createElementVNode)(`span`,{ref_key:`contentRef`,ref:i,class:`xy-alert-marquee__content`},[(0,t.renderSlot)(e.$slots,`default`,{},void 0,!0)],512),(0,t.createElementVNode)(`span`,g,[(0,t.renderSlot)(e.$slots,`default`,{},void 0,!0)])],4)],34))}}),v=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},y=v(_,[[`__scopeId`,`data-v-725f3481`]]),b=0;function x(e){return e==null?[]:Array.isArray(e)?[...e]:[e]}function S(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function C(e){let t={};for(let n of Object.keys(e))e[n]!==void 0&&(t[n]=e[n]);return t}function w(e,t){let n={};for(let r of A(e,t))for(let e of Object.keys(r)){let t=r[e];t&&(n[e]=[n[e],t].filter(Boolean).join(` `))}return n}function T(e,t){let n={};for(let r of A(e,t))for(let e of Object.keys(r)){let t=r[e];S(t)&&(n[e]={...n[e],...t})}return n}function E(...e){return t=>{for(let n of e)n?.(t)}}function D(){return typeof window<`u`&&typeof document<`u`}function O(e=`xy`){return b+=1,`${e}-${b}`}function k(e,t){return!!(e&&t instanceof Node&&(e===t||e.contains(t)))}function A(e,t){let n=[];for(let r of x(e)){if(!r)continue;let e=typeof r==`function`?r({props:t}):r;S(e)&&n.push(e)}return n}function j(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}var M=[`a[href]`,`area[href]`,`button:not([disabled])`,`input:not([disabled]):not([type='hidden'])`,`select:not([disabled])`,`textarea:not([disabled])`,`iframe`,`object`,`embed`,`[contenteditable='true']`,`[tabindex]:not([tabindex='-1'])`].join(`,`);function N(e){return!(e instanceof HTMLElement)||e.getAttribute(`aria-hidden`)===`true`||e.hasAttribute(`disabled`)?!1:e.matches(M)}function P(e){return e?Array.from(e.querySelectorAll(M)).filter(N):[]}function F(e,t={}){return N(e)?(e.focus(t),document.activeElement===e):!1}function I(e,t={}){return F(P(e)[0],t)}function L(e,t={}){return F(P(e).at(-1),t)}function R(e){let{currentIndex:t,itemCount:n,offset:r}=e,i=e.loop??!0;if(n<=0||r===0)return-1;let a=t;for(let t=0;t<n;t+=1){if(a+=r,i)a=(a+n)%n;else if(a<0||a>=n)return-1;if(!e.isDisabled?.(a))return a}return-1}function z(e){if(e.key===`ArrowDown`||e.key===`ArrowRight`)return`next`;if(e.key===`ArrowUp`||e.key===`ArrowLeft`)return`previous`;if(e.key===`Home`)return`first`;if(e.key===`End`)return`last`;if(e.key===`Enter`||e.key===` `)return`activate`}function B(e){return!e.altKey&&!e.ctrlKey&&!e.metaKey&&e.key.length===1&&e.key.trim().length>0}function V(e){let t=U(e.search),n=e.items.length,r=e.loop??!0;if(!t||n<=0)return-1;let i=e.currentIndex??-1;for(let a=1;a<=n;a+=1){let o=r?(i+a+n)%n:i+a;if(o<0||o>=n)return-1;let s=e.items[o];if(!e.isDisabled?.(s,o)&&U(e.getText(s)??``).startsWith(t))return o}return-1}function H(e,n={}){let r,i=r=>{r.key!==`Escape`||(0,t.toValue)(n.active)===!1||(n.preventDefault&&r.preventDefault(),n.stopPropagation&&r.stopPropagation(),e(r))};function a(){if(r?.(),r=void 0,!D())return;let e=(0,t.toValue)(n.target)??document;e.addEventListener(`keydown`,i),r=()=>e.removeEventListener(`keydown`,i)}return(0,t.onMounted)(a),(0,t.onBeforeUnmount)(()=>r?.()),(0,t.watch)(()=>(0,t.toValue)(n.target),a),()=>r?.()}function U(e){return e.trim().toLocaleLowerCase()}function W(e,t=[]){return[e,...t]}function G(e,t={}){let n=[],r=[],i=new Map,a=new Map,o=new Map;function s(e,c,l,u,d,f){e.forEach((e,p)=>{let m=[...f,p],h={index:p,indexPath:m,level:u,parentKey:c,parentKeyPath:l},g=t.getKey?.(e,h),_=g!==void 0&&(t.isNode?.(e,h)??!0),v=t.getChildren?.(e)??[];if(!_||g===void 0){s(v,c,l,u,d,m);return}let y=W(g,l),b={children:[],index:p,indexPath:m,item:e,key:g,keyPath:y,level:u,parentKey:c};n.push(b),i.set(g,b),a.set(g,c),d?d.children.push(b):r.push(b);let x=o.get(c)??[];x.push(g),o.set(c,x),s(v,g,y,u+1,b,m)})}return s(e,``,[],0,void 0,[]),{getChildrenKeys(e){return[...o.get(e)??[]]},getDescendantKeys(e){let t=i.get(e);return t?te(t):[]},getKeyPath(e){return[...i.get(e)?.keyPath??[]]},getNode(e){return i.get(e)},getParentKey(e){return a.get(e)},getSiblingKeys(e){let t=a.get(e);return t===void 0?[]:[...o.get(t)??[]]},nodeMap:i,nodes:n,parentKeyMap:a,rootNodes:r}}function K(){let e=(0,t.shallowRef)([]),n=(0,t.computed)(()=>e.value.map(({order:e,...t})=>t)),r=0;return{collection:(0,t.computed)(()=>ee(e.value)),nodes:n,registerNode(t){let n={...t,order:r++,parentKey:t.parentKey??``};return e.value=[...e.value.filter(e=>e.key!==t.key),n],()=>{e.value=e.value.filter(e=>e.key!==t.key||e.order!==n.order)}}}}function ee(e){let t=[],n=[],r=new Map,i=new Map,a=new Map,o=new Set(e.map(e=>e.key)),s=new Map;for(let t of e){let e=t.parentKey&&o.has(t.parentKey)?t.parentKey:``,n=s.get(e)??[];n.push(t),s.set(e,n)}for(let e of s.values())e.sort(ne);function c(e,o,l,u,d){(s.get(e)??[]).forEach((s,f)=>{let p=s.index??f,m=[...d,f],h=W(s.key,o),g={children:[],index:p,indexPath:m,item:s.item,key:s.key,keyPath:h,level:l,parentKey:e};t.push(g),r.set(g.key,g),i.set(g.key,e),u?u.children.push(g):n.push(g);let _=a.get(e)??[];_.push(g.key),a.set(e,_),c(g.key,h,l+1,g,m)})}return c(``,[],0,void 0,[]),{getChildrenKeys(e){return[...a.get(e)??[]]},getDescendantKeys(e){let t=r.get(e);return t?te(t):[]},getKeyPath(e){return[...r.get(e)?.keyPath??[]]},getNode(e){return r.get(e)},getParentKey(e){return i.get(e)},getSiblingKeys(e){let t=i.get(e);return t===void 0?[]:[...a.get(t)??[]]},nodeMap:r,nodes:t,parentKeyMap:i,rootNodes:n}}function te(e){let t=[];for(let n of e.children)t.push(n.key,...te(n));return t}function ne(e,t){return(e.index??e.order)-(t.index??t.order)||e.order-t.order}var re={direction:`ltr`,disabled:!1,locale:`zh-CN`,prefixCls:`xy`,size:`md`,zIndex:1e3},ie=Symbol(`xy-config`);function ae(e,t={}){return{direction:t.direction??e.direction,disabled:t.disabled??e.disabled,locale:t.locale??e.locale,prefixCls:t.prefixCls??e.prefixCls,size:t.size??e.size,zIndex:t.zIndex??e.zIndex}}function oe(e){let n=(0,t.inject)(ie,(0,t.computed)(()=>re)),r=(0,t.computed)(()=>ae(n.value,(0,t.toValue)(e)));return(0,t.provide)(ie,r),r}function se(e){let n=(0,t.inject)(ie,(0,t.computed)(()=>re));return(0,t.computed)(()=>e?ae(n.value,(0,t.toValue)(e)):n.value)}function ce(e,t){let n=e.prefixCls??re.prefixCls;return t?`${n}-${t}`:n}function le(e,t){let n=ce(re,t),r=ce(e,t);return n===r?[n]:[n,r]}var ue=Symbol(`xy-form-control`);function de(e){return(0,t.provide)(ue,e),e}function fe(e){let n=(0,t.inject)(ue,void 0),r=se(),i=(0,t.getCurrentInstance)(),a=(0,t.computed)(()=>(0,t.toValue)(e)),o=(0,t.computed)(()=>{if(!i)return a.value.disabled!==void 0;let e=i.vnode.props??{};return Object.prototype.hasOwnProperty.call(e,`disabled`)});return{describedBy:(0,t.computed)(()=>(0,t.toValue)(n?.describedBy)),disabled:(0,t.computed)(()=>(o.value?a.value.disabled:void 0)??(0,t.toValue)(n?.disabled)??r.value.disabled),id:(0,t.computed)(()=>a.value.id??(0,t.toValue)(n?.id)),labelledBy:(0,t.computed)(()=>(0,t.toValue)(n?.labelledBy)),notifyBlur:e=>n?.onBlur?.(e),notifyChange:e=>n?.onChange?.(e),readonly:(0,t.computed)(()=>a.value.readonly??!!(0,t.toValue)(n?.readonly)),size:(0,t.computed)(()=>a.value.size??(0,t.toValue)(n?.size)??r.value.size),status:(0,t.computed)(()=>a.value.status??(0,t.toValue)(n?.status))}}function q(e,t){e.value=t}var J={add:(e,t,r)=>(0,n.default)(e).add(t,r),compare(e,t,r=`millisecond`){let i=(0,n.default)(e),a=(0,n.default)(t);return i.isSame(a,r)?0:i.isBefore(a,r)?-1:1},format:(e,t)=>e?(0,n.default)(e).format(t):``,isValid:e=>(0,n.default)(e).isValid(),parse:e=>(0,n.default)(e),startOf:(e,t)=>(0,n.default)(e).startOf(t)};function pe(){return pe=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},pe.apply(this,arguments)}function me(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,ge(e,t)}function he(e){return he=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},he(e)}function ge(e,t){return ge=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ge(e,t)}function _e(){if(typeof Reflect>`u`||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function ve(e,t,n){return ve=_e()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&ge(i,n.prototype),i},ve.apply(null,arguments)}function ye(e){return Function.toString.call(e).indexOf(`[native code]`)!==-1}function be(e){var t=typeof Map==`function`?new Map:void 0;return be=function(e){if(e===null||!ye(e))return e;if(typeof e!=`function`)throw TypeError(`Super expression must either be null or a function`);if(t!==void 0){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return ve(e,arguments,he(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),ge(n,e)},be(e)}var xe=/%[sdj%]/g,Se=function(){};typeof process<`u`&&process.env&&process.env.NODE_ENV!==`production`&&typeof window<`u`&&typeof document<`u`&&(Se=function(e,t){typeof console<`u`&&console.warn&&typeof ASYNC_VALIDATOR_NO_WARNING>`u`&&t.every(function(e){return typeof e==`string`})&&console.warn(e,t)});function Ce(e){if(!e||!e.length)return null;var t={};return e.forEach(function(e){var n=e.field;t[n]=t[n]||[],t[n].push(e)}),t}function we(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=0,a=n.length;return typeof e==`function`?e.apply(null,n):typeof e==`string`?e.replace(xe,function(e){if(e===`%%`)return`%`;if(i>=a)return e;switch(e){case`%s`:return String(n[i++]);case`%d`:return Number(n[i++]);case`%j`:try{return JSON.stringify(n[i++])}catch{return`[Circular]`}break;default:return e}}):e}function Te(e){return e===`string`||e===`url`||e===`hex`||e===`email`||e===`date`||e===`pattern`}function Y(e,t){return!!(e==null||t===`array`&&Array.isArray(e)&&!e.length||Te(t)&&typeof e==`string`&&!e)}function Ee(e,t,n){var r=[],i=0,a=e.length;function o(e){r.push.apply(r,e||[]),i++,i===a&&n(r)}e.forEach(function(e){t(e,o)})}function De(e,t,n){var r=0,i=e.length;function a(o){if(o&&o.length){n(o);return}var s=r;r+=1,s<i?t(e[s],a):n([])}a([])}function Oe(e){var t=[];return Object.keys(e).forEach(function(n){t.push.apply(t,e[n]||[])}),t}var ke=function(e){me(t,e);function t(t,n){var r=e.call(this,`Async Validation Error`)||this;return r.errors=t,r.fields=n,r}return t}(be(Error));function Ae(e,t,n,r,i){if(t.first){var a=new Promise(function(t,a){De(Oe(e),n,function(e){return r(e),e.length?a(new ke(e,Ce(e))):t(i)})});return a.catch(function(e){return e}),a}var o=t.firstFields===!0?Object.keys(e):t.firstFields||[],s=Object.keys(e),c=s.length,l=0,u=[],d=new Promise(function(t,a){var d=function(e){if(u.push.apply(u,e),l++,l===c)return r(u),u.length?a(new ke(u,Ce(u))):t(i)};s.length||(r(u),t(i)),s.forEach(function(t){var r=e[t];o.indexOf(t)===-1?Ee(r,n,d):De(r,n,d)})});return d.catch(function(e){return e}),d}function je(e){return!!(e&&e.message!==void 0)}function Me(e,t){for(var n=e,r=0;r<t.length;r++){if(n==null)return n;n=n[t[r]]}return n}function Ne(e,t){return function(n){var r=e.fullFields?Me(t,e.fullFields):t[n.field||e.fullField];return je(n)?(n.field=n.field||e.fullField,n.fieldValue=r,n):{message:typeof n==`function`?n():n,fieldValue:r,field:n.field||e.fullField}}}function Pe(e,t){if(t){for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];typeof r==`object`&&typeof e[n]==`object`?e[n]=pe({},e[n],r):e[n]=r}}return e}var Fe=function(e,t,n,r,i,a){e.required&&(!n.hasOwnProperty(e.field)||Y(t,a||e.type))&&r.push(we(i.messages.required,e.fullField))},Ie=function(e,t,n,r,i){(/^\s+$/.test(t)||t===``)&&r.push(we(i.messages.whitespace,e.fullField))},Le,Re=(function(){if(Le)return Le;var e=`[a-fA-F\\d:]`,t=function(t){return t&&t.includeBoundaries?`(?:(?<=\\s|^)(?=`+e+`)|(?<=`+e+`)(?=\\s|$))`:``},n=`(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}`,r=`[a-fA-F\\d]{1,4}`,i=(`
|
|
2
2
|
(?:
|
|
3
3
|
(?:`+r+`:){7}(?:`+r+`|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
|
|
4
4
|
(?:`+r+`:){6}(?:`+n+`|:`+r+`|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
|
package/dist/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@czxingyu/xycomponents",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"bin": {
|
|
5
5
|
"xycomponents": "dist/cli.js"
|
|
6
6
|
},
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"components/style/*.css",
|
|
10
10
|
"docs/maintenance/migrations/*.md",
|
|
11
11
|
"global.d.ts",
|
|
12
|
-
"skills"
|
|
12
|
+
"skills",
|
|
13
|
+
"scripts/postinstall-skills.mjs"
|
|
13
14
|
],
|
|
14
15
|
"type": "module",
|
|
15
16
|
"sideEffects": [
|
|
@@ -161,6 +162,7 @@
|
|
|
161
162
|
"fmt:check": "oxfmt --check",
|
|
162
163
|
"generate:component": "node scripts/generate-component.mjs",
|
|
163
164
|
"lint": "oxlint .",
|
|
165
|
+
"postinstall": "node scripts/postinstall-skills.mjs",
|
|
164
166
|
"check": "pnpm run fmt:check && pnpm run lint && pnpm run type-check",
|
|
165
167
|
"ci": "pnpm run check && pnpm test && pnpm run audit:components && pnpm run test:e2e && pnpm run build && pnpm run check:esm-import && pnpm run check:umd-contract && pnpm run check:bundle && pnpm run check:package && pnpm run check:packed-consumer",
|
|
166
168
|
"release": "pnpm run ci && changeset publish",
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
|
|
6
|
+
const packageRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
|
|
7
|
+
const cliEntry = join(packageRoot, "dist", "cli.js");
|
|
8
|
+
const projectRoot = process.env.INIT_CWD || process.cwd();
|
|
9
|
+
|
|
10
|
+
if (process.env.XYCOMPONENTS_SKIP_SKILLS_INSTALL === "1") {
|
|
11
|
+
process.exit(0);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (!existsSync(cliEntry)) {
|
|
15
|
+
process.exit(0);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const result = spawnSync(
|
|
19
|
+
process.execPath,
|
|
20
|
+
[cliEntry, "skills", "install", "--consumer", "--json"],
|
|
21
|
+
{
|
|
22
|
+
cwd: projectRoot,
|
|
23
|
+
encoding: "utf8",
|
|
24
|
+
env: process.env,
|
|
25
|
+
},
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
if (result.status !== 0) {
|
|
29
|
+
process.exit(0);
|
|
30
|
+
}
|
package/skills/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# xycomponents AI Skills
|
|
2
2
|
|
|
3
|
-
面向 Cursor
|
|
3
|
+
面向 Cursor、Claude Code、Codex 与其他读取 `AGENTS.md` 的 Agent。配合项目内安装的 `@czxingyu/xycomponents` 使用。
|
|
4
4
|
|
|
5
5
|
## 原则
|
|
6
6
|
|
|
@@ -8,12 +8,58 @@
|
|
|
8
8
|
- **不要全局安装** CLI,避免 AI 查到与项目不一致的 API。
|
|
9
9
|
- **Bug / 新组件**:业务项目 AI 用 `xycomponents-contribute` 提交 GitHub Issue;组件库维护者用 `xycomponents-maintainer` 集中分诊与修复。
|
|
10
10
|
|
|
11
|
+
## 自动安装(推荐)
|
|
12
|
+
|
|
13
|
+
安装组件库后,Skill 会**自动**写入当前项目(可用环境变量跳过):
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm add @czxingyu/xycomponents
|
|
17
|
+
# postinstall 会自动执行:pnpm exec xycomponents skills install --consumer --json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
跳过自动安装:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
XYCOMPONENTS_SKIP_SKILLS_INSTALL=1 pnpm add @czxingyu/xycomponents
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
手动重装 / 升级后同步 Skill:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pnpm exec xycomponents skills install --consumer --json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
维护者额外安装 maintainer skill:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pnpm exec xycomponents skills install --maintainer --json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 支持的 Agent 目录
|
|
39
|
+
|
|
40
|
+
| 目标 | 目录 | 典型工具 |
|
|
41
|
+
| ----------- | ----------------- | ----------------------------------- |
|
|
42
|
+
| `cursor` | `.cursor/skills/` | Cursor |
|
|
43
|
+
| `claude` | `.claude/skills/` | Claude Code |
|
|
44
|
+
| `codex` | `.codex/skills/` | Codex |
|
|
45
|
+
| `agents` | `.agents/skills/` | 通用 Agent 技能目录 |
|
|
46
|
+
| `AGENTS.md` | 项目根目录 | ChatGPT / 其他读取 AGENTS.md 的工具 |
|
|
47
|
+
|
|
48
|
+
默认 `--target all` 会写入以上全部目录,并更新 `AGENTS.md` 引导块。
|
|
49
|
+
|
|
50
|
+
只装 Cursor:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pnpm exec xycomponents skills install --consumer --target cursor
|
|
54
|
+
```
|
|
55
|
+
|
|
11
56
|
## 完整闭环
|
|
12
57
|
|
|
13
58
|
```text
|
|
14
59
|
业务项目 组件库仓库 (vue3components)
|
|
15
60
|
──────── ──────────────────────────
|
|
16
61
|
pnpm add @czxingyu/xycomponents
|
|
62
|
+
└─ postinstall / skills install
|
|
17
63
|
pnpm exec xycomponents ... ──► 查用法 / API
|
|
18
64
|
│
|
|
19
65
|
▼ Bug 或 Feature
|
|
@@ -24,21 +70,6 @@ gh issue create (contribute) ──► needs-triage 队列
|
|
|
24
70
|
pnpm add @新版本 ◄─────────────── 关闭 Issue,注明版本
|
|
25
71
|
```
|
|
26
72
|
|
|
27
|
-
## 安装 Skill 到业务项目
|
|
28
|
-
|
|
29
|
-
复制 **`xycomponents-shared`**、**`xycomponents-cli`**、**`xycomponents-contribute`** 到 `.cursor/skills/`。
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
pnpm add @czxingyu/xycomponents
|
|
33
|
-
cp -r node_modules/@czxingyu/xycomponents/skills/xycomponents-shared .cursor/skills/
|
|
34
|
-
cp -r node_modules/@czxingyu/xycomponents/skills/xycomponents-cli .cursor/skills/
|
|
35
|
-
cp -r node_modules/@czxingyu/xycomponents/skills/xycomponents-contribute .cursor/skills/
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
本仓库维护者额外启用 **`xycomponents-maintainer`**(已在 `.cursor/skills/`)。
|
|
39
|
-
|
|
40
|
-
提交 Issue 需本机安装 [GitHub CLI](https://cli.github.com/) 并 `gh auth login`。
|
|
41
|
-
|
|
42
73
|
## Skill 列表
|
|
43
74
|
|
|
44
75
|
| Skill | 谁用 | 用途 |
|
|
@@ -48,6 +79,8 @@ cp -r node_modules/@czxingyu/xycomponents/skills/xycomponents-contribute .cursor
|
|
|
48
79
|
| [xycomponents-contribute](./xycomponents-contribute/SKILL.md) | 业务项目 | 提交 Bug / Feature Issue |
|
|
49
80
|
| [xycomponents-maintainer](./xycomponents-maintainer/SKILL.md) | 组件库维护者 | 拉取 Issue、分诊、修复、发版 |
|
|
50
81
|
|
|
82
|
+
提交 Issue 需本机安装 [GitHub CLI](https://cli.github.com/) 并 `gh auth login`。
|
|
83
|
+
|
|
51
84
|
## GitHub Issue 模板
|
|
52
85
|
|
|
53
86
|
| 模板 | 标签 | 场景 |
|
|
@@ -57,8 +90,9 @@ cp -r node_modules/@czxingyu/xycomponents/skills/xycomponents-contribute .cursor
|
|
|
57
90
|
|
|
58
91
|
用法问题优先 [Discussions](https://github.com/czhang31795/vue3components/discussions)。
|
|
59
92
|
|
|
60
|
-
## 验证
|
|
93
|
+
## 验证
|
|
61
94
|
|
|
62
95
|
```bash
|
|
63
96
|
pnpm exec xycomponents doctor --json
|
|
97
|
+
pnpm exec xycomponents skills install --consumer --dry-run --json
|
|
64
98
|
```
|
|
@@ -15,6 +15,8 @@ metadata:
|
|
|
15
15
|
## 版本与 CLI 策略(必须遵守)
|
|
16
16
|
|
|
17
17
|
- **只在当前项目内**安装 `@czxingyu/xycomponents`;**不要**全局安装 CLI,也不要用与项目 `package.json` 版本不一致的全局命令。
|
|
18
|
+
- 安装组件库时会**自动**写入 Agent Skill(Cursor / Claude Code / Codex / `.agents/skills/` + `AGENTS.md`)。跳过:`XYCOMPONENTS_SKIP_SKILLS_INSTALL=1 pnpm add ...`
|
|
19
|
+
- 手动重装或升级后同步:`pnpm exec xycomponents skills install --consumer --json`
|
|
18
20
|
- CLI 元数据随 npm 包一起发布;**CLI 版本 = 已安装的包版本**。
|
|
19
21
|
- 升级组件库时重新安装,CLI 会同步更新:
|
|
20
22
|
|