diff --git a/.changeset/config.json b/.changeset/config.json index 4bc96a93..cacfd0b1 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -7,5 +7,5 @@ "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", - "ignore": ["demo"] + "ignore": ["@example/*"] } diff --git a/examples/basic-demo/index.ts b/examples/basic-demo/index.ts deleted file mode 100644 index 0613f5e1..00000000 --- a/examples/basic-demo/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { PasswordPrompt, ConfirmPrompt, isCancel } from '@clack/core'; -import c from 'picocolors'; -import boxen from 'boxen'; - -async function run() { - const text = new PasswordPrompt({ - render() { - const title = `What's your name?\n`; - const boxOpts = { width: 48, padding: { left: 1, right: 1, top: 0, bottom: 0 }}; - switch (this.state) { - case 'initial': { - const input = boxen((!this.value ? c.bgWhite(c.black('P')) + c.dim('assword') : this.valueWithCursor), boxOpts); - return `🙋 ${title}${input}`; - } - case 'active': { - const input = boxen((!this.value ? c.bgWhite(c.black('P')) + c.dim('assword') : this.valueWithCursor), boxOpts); - return `💭 ${title}${input}`; - } - case 'error': { - const input = boxen((!this.value ? c.bgWhite(c.black('P')) + c.dim('assword') : this.valueWithCursor), { ...boxOpts, borderColor: 'yellow' }); - return `🚸 What's your name? ${c.yellow(this.error)}\n${input}`; - } - case 'submit': return `✅ ${title}${boxen(c.dim(this.valueWithCursor), { ...boxOpts, borderColor: 'gray' })}`; - case 'cancel': return `❌ What's your name?`; - } - } - }) - - const value = await text.prompt(); - if (isCancel(value)) { - console.log('See you later!'); - return; - } - - const Option = (label: string, active: boolean) => `${active ? c.cyan('🟦') : '⬜'} ${label}`; - - const select = new ConfirmPrompt({ - active: 'yes', - inactive: 'no', - render() { - const title = `Select an option!\n`; - switch (this.state) { - case 'submit': return `✅ ${title}${c.dim(this.value ? 'yes' : 'no')}`; - case 'cancel': return `❌ ${title.trim()}`; - default: { - return `💭 ${title}${this.value ? c.cyan('yes') : 'yes'} / ${!this.value ? c.cyan('no') : 'no'}`; - } - } - return '' - } - }) - - const choice = await select.prompt(); - if (isCancel(choice)) { - console.log('See you later!'); - return; - } - - console.log({ choice }); -} - -run(); - diff --git a/examples/basic-demo/prompt.ts b/examples/basic/index.ts similarity index 95% rename from examples/basic-demo/prompt.ts rename to examples/basic/index.ts index 05e50e13..48ce3452 100644 --- a/examples/basic-demo/prompt.ts +++ b/examples/basic/index.ts @@ -1,4 +1,4 @@ -import { text, select, confirm, intro, outro, cancel, spinner, isCancel, multiSelect } from '@clack/prompts'; +import { text, select, confirm, intro, outro, cancel, spinner, isCancel, multiselect } from '@clack/prompts'; import color from 'picocolors'; import { setTimeout } from 'node:timers/promises'; @@ -43,7 +43,7 @@ async function main () { process.exit(0); } - const d = await multiSelect({ + const d = await multiselect({ message: 'Select additional tools.', options: [ {value: 'eslint', label: 'ESLint', hint: 'recommended' }, diff --git a/examples/basic-demo/package.json b/examples/basic/package.json similarity index 69% rename from examples/basic-demo/package.json rename to examples/basic/package.json index 5bd8a22c..026aa4ba 100644 --- a/examples/basic-demo/package.json +++ b/examples/basic/package.json @@ -1,17 +1,15 @@ { - "name": "basic-demo", + "name": "@example/basic", "private": true, "version": "0.0.0", "type": "module", "dependencies": { "@clack/core": "workspace:*", "@clack/prompts": "workspace:*", - "boxen": "^7.0.1", "picocolors": "^1.0.0" }, "scripts": { - "start": "jiti ./index.ts", - "prompt": "jiti ./prompt.ts" + "start": "jiti ./index.ts" }, "devDependencies": { "jiti": "^1.17.0" diff --git a/package.json b/package.json index 25530008..a6643f6f 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "stub": "pnpm -r run prepack --stub", "build": "pnpm -r run prepack", - "start": "pnpm --filter basic-demo run start" + "start": "pnpm --filter @example/basic run start" }, "devDependencies": { "@changesets/cli": "^2.26.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 444fc84a..06e5c051 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,17 +16,15 @@ importers: typescript: 4.9.5 unbuild: 1.1.1 - examples/basic-demo: + examples/basic: specifiers: '@clack/core': workspace:* '@clack/prompts': workspace:* - boxen: ^7.0.1 jiti: ^1.17.0 picocolors: ^1.0.0 dependencies: '@clack/core': link:../../packages/core '@clack/prompts': link:../../packages/prompts - boxen: 7.0.1 picocolors: 1.0.0 devDependencies: jiti: 1.17.0 @@ -1061,12 +1059,6 @@ packages: hasBin: true dev: true - /ansi-align/3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - dev: false - /ansi-colors/4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1075,11 +1067,7 @@ packages: /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - - /ansi-regex/6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: false + dev: true /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -1095,11 +1083,6 @@ packages: color-convert: 2.0.1 dev: true - /ansi-styles/6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: false - /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -1142,20 +1125,6 @@ packages: is-windows: 1.0.2 dev: true - /boxen/7.0.1: - resolution: {integrity: sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==} - engines: {node: '>=14.16'} - dependencies: - ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.2.0 - cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - dev: false - /brace-expansion/2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: @@ -1212,11 +1181,6 @@ packages: engines: {node: '>=6'} dev: true - /camelcase/7.0.1: - resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} - engines: {node: '>=14.16'} - dev: false - /caniuse-lite/1.0.30001451: resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz} dev: true @@ -1241,6 +1205,7 @@ packages: /chalk/5.2.0: resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true /chardet/0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -1251,11 +1216,6 @@ packages: engines: {node: '>=8'} dev: true - /cli-boxes/3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - dev: false - /cliui/6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -1401,20 +1361,13 @@ packages: path-type: 4.0.0 dev: true - /eastasianwidth/0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false - /electron-to-chromium/1.4.295: resolution: {integrity: sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz} dev: true /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - /emoji-regex/9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false + dev: true /enquirer/2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} @@ -1952,6 +1905,7 @@ packages: /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + dev: true /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -2693,15 +2647,7 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - - /string-width/5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.0.1 - dev: false + dev: true /string.prototype.trimend/1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} @@ -2724,13 +2670,7 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - - /strip-ansi/7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: false + dev: true /strip-bom/3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -2821,11 +2761,6 @@ packages: engines: {node: '>=8'} dev: true - /type-fest/2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - dev: false - /typed-array-length/1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: @@ -2974,13 +2909,6 @@ packages: isexe: 2.0.0 dev: true - /widest-line/4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - dev: false - /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -2999,15 +2927,6 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi/8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.0.1 - dev: false - /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true