feat: Refactor CLI header for customizable logo text (#658)

This commit is contained in:
N. Taylor Mullen 2025-06-02 11:45:09 -07:00 committed by GitHub
parent 33052018a2
commit 42bedbc3d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 168 additions and 13 deletions

162
package-lock.json generated
View File

@ -2612,6 +2612,37 @@
"node": ">=6"
}
},
"node_modules/cfonts": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/cfonts/-/cfonts-3.3.0.tgz",
"integrity": "sha512-RlVxeEw2FXWI5Bs9LD0/Ef3bsQIc9m6lK/DINN20HIW0Y0YHUO2jjy88cot9YKZITiRTCdWzTfLmTyx47HeSLA==",
"license": "GPL-3.0-or-later",
"dependencies": {
"supports-color": "^8",
"window-size": "^1"
},
"bin": {
"cfonts": "bin/index.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/cfonts/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/chai": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz",
@ -3184,6 +3215,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
"license": "MIT",
"dependencies": {
"is-descriptor": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@ -4936,6 +4979,26 @@
}
}
},
"node_modules/ink-big-text": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ink-big-text/-/ink-big-text-2.0.0.tgz",
"integrity": "sha512-Juzqv+rIOLGuhMJiE50VtS6dg6olWfzFdL7wsU/EARSL5Eaa5JNXMogMBm9AkjgzO2Y3UwWCOh87jbhSn8aNdw==",
"license": "MIT",
"dependencies": {
"cfonts": "^3.1.1",
"prop-types": "^15.8.1"
},
"engines": {
"node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
},
"peerDependencies": {
"ink": ">=4",
"react": ">=18"
}
},
"node_modules/ink-gradient": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ink-gradient/-/ink-gradient-3.0.0.tgz",
@ -5152,6 +5215,18 @@
"node": ">= 0.10"
}
},
"node_modules/is-accessor-descriptor": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
"integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==",
"license": "MIT",
"dependencies": {
"hasown": "^2.0.0"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/is-arguments": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz",
@ -5240,6 +5315,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"license": "MIT"
},
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
@ -5269,6 +5350,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-data-descriptor": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
"integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==",
"license": "MIT",
"dependencies": {
"hasown": "^2.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/is-data-view": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
@ -5304,6 +5397,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-descriptor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
"integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
"license": "MIT",
"dependencies": {
"is-accessor-descriptor": "^1.0.1",
"is-data-descriptor": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/is-docker": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
@ -5952,6 +6058,18 @@
"json-buffer": "3.0.1"
}
},
"node_modules/kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
"license": "MIT",
"dependencies": {
"is-buffer": "^1.1.5"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@ -9002,6 +9120,49 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/widest-line/node_modules/strip-ansi": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/window-size": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-1.1.1.tgz",
"integrity": "sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==",
"license": "MIT",
"dependencies": {
"define-property": "^1.0.0",
"is-number": "^3.0.0"
},
"bin": {
"window-size": "cli.js"
},
"engines": {
"node": ">= 0.10.0"
}
},
"node_modules/window-size/node_modules/is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
"license": "MIT",
"dependencies": {
"kind-of": "^3.0.2"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@ -9275,6 +9436,7 @@
"dotenv": "^16.4.7",
"highlight.js": "^11.11.1",
"ink": "^5.2.0",
"ink-big-text": "^2.0.0",
"ink-gradient": "^3.0.0",
"ink-select-input": "^6.0.0",
"ink-spinner": "^5.0.0",

View File

@ -35,6 +35,7 @@
"highlight.js": "^11.11.1",
"ink": "^5.2.0",
"ink-gradient": "^3.0.0",
"ink-big-text": "^2.0.0",
"ink-select-input": "^6.0.0",
"ink-spinner": "^5.0.0",
"ink-text-input": "^6.0.0",

View File

@ -5,28 +5,20 @@
*/
import React from 'react';
import { Box, Text } from 'ink';
import { Box } from 'ink';
import Gradient from 'ink-gradient';
import BigText from 'ink-big-text';
import { Colors } from '../colors.js';
const asciiArtLogo = `
`;
export const Header: React.FC = () => (
<>
<Box marginBottom={1} alignItems="flex-start">
<Box alignItems="flex-start">
{Colors.GradientColors ? (
<Gradient colors={Colors.GradientColors}>
<Text>{asciiArtLogo}</Text>
<BigText text="GEMINI" letterSpacing={0} space={false} />
</Gradient>
) : (
<Text>{asciiArtLogo}</Text>
<BigText text="GEMINI" letterSpacing={0} space={false} />
)}
</Box>
</>