@aligndottech/cli 0.26.1 → 0.26.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/dist/lib/brand.d.ts +13 -8
- package/dist/lib/brand.d.ts.map +1 -1
- package/dist/lib/brand.js +66 -72
- package/dist/lib/brand.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/brand.d.ts
CHANGED
|
@@ -15,16 +15,25 @@ export declare const BRAND: {
|
|
|
15
15
|
readonly teal: "#43b6ac";
|
|
16
16
|
readonly navy: "#022863";
|
|
17
17
|
};
|
|
18
|
-
export declare const LOGO_WIDTH =
|
|
19
|
-
export declare const LOGO_ROWS =
|
|
18
|
+
export declare const LOGO_WIDTH = 12;
|
|
19
|
+
export declare const LOGO_ROWS = 7;
|
|
20
20
|
/**
|
|
21
21
|
* The live positioning line, taken from align-frontend's hero (src/lib/seo.ts).
|
|
22
22
|
* 'Collaboration with clarity built in' is RETIRED - do not reintroduce it.
|
|
23
23
|
*/
|
|
24
24
|
export declare const TAGLINE_LINES: readonly ["Your AI agents know the code.", "They don't know the company."];
|
|
25
|
+
/**
|
|
26
|
+
* The part align-frontend wraps in <span class="accent">, which resolves to --teal.
|
|
27
|
+
* Everything else in the headline takes the heading colour, so colouring both lines
|
|
28
|
+
* teal (as this did at first) is not what the site does.
|
|
29
|
+
*/
|
|
30
|
+
export declare const TAGLINE_ACCENT = "don't know the company.";
|
|
25
31
|
/** Which brand colour the mark's strokes take. The pack ships a teal-only variant
|
|
26
|
-
* (F 2 R) as well as the white knockout (F 4 R), so both are on-brand.
|
|
27
|
-
|
|
32
|
+
* (F 2 R) as well as the white knockout (F 4 R), so both are on-brand.
|
|
33
|
+
*
|
|
34
|
+
* A third 'solid' style used to swap in a filled sprite. The mark is drawn solid now, so
|
|
35
|
+
* it had nothing left to offer and was removed rather than kept as a synonym. */
|
|
36
|
+
export type MarkStyle = 'white' | 'teal';
|
|
28
37
|
export interface RenderOptions {
|
|
29
38
|
/** Mark styling; defaults to 'white'. */
|
|
30
39
|
style?: MarkStyle;
|
|
@@ -42,10 +51,6 @@ export interface BannerOptions extends RenderOptions {
|
|
|
42
51
|
/** Optional context line, e.g. "local graph" or "preview". */
|
|
43
52
|
context?: string;
|
|
44
53
|
}
|
|
45
|
-
/**
|
|
46
|
-
* The full lockup: the mark on the left, wordmark and tagline to its right, so the
|
|
47
|
-
* whole thing is only as tall as the mark (LOGO_ROWS) rather than stacking.
|
|
48
|
-
*/
|
|
49
54
|
export declare function banner(opts: BannerOptions): string;
|
|
50
55
|
/** One consistent intro chip for every command, in brand teal. */
|
|
51
56
|
export declare function commandIntro(label: string, opts?: RenderOptions): string;
|
package/dist/lib/brand.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,KAAK;;;CAGR,CAAC;AAWX,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,SAAS,IAAI,CAAC;AAE3B;;;GAGG;AACH,eAAO,MAAM,aAAa,4EAGhB,CAAC;
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,KAAK;;;CAGR,CAAC;AAWX,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,SAAS,IAAI,CAAC;AAE3B;;;GAGG;AACH,eAAO,MAAM,aAAa,4EAGhB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAoCxD;;;;iFAIiF;AACjF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAuCD,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,MAAM,EAAE,CAsB5D;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,wBAAgB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAyBlD;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,MAAM,CAK5E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAIxD"}
|
package/dist/lib/brand.js
CHANGED
|
@@ -22,8 +22,8 @@ const WHITE_RGB = [255, 255, 255];
|
|
|
22
22
|
const TEAL_256 = 79;
|
|
23
23
|
const NAVY_256 = 24;
|
|
24
24
|
const WHITE_256 = 231;
|
|
25
|
-
export const LOGO_WIDTH =
|
|
26
|
-
export const LOGO_ROWS =
|
|
25
|
+
export const LOGO_WIDTH = 12;
|
|
26
|
+
export const LOGO_ROWS = 7;
|
|
27
27
|
/**
|
|
28
28
|
* The live positioning line, taken from align-frontend's hero (src/lib/seo.ts).
|
|
29
29
|
* 'Collaboration with clarity built in' is RETIRED - do not reintroduce it.
|
|
@@ -33,30 +33,42 @@ export const TAGLINE_LINES = [
|
|
|
33
33
|
"They don't know the company.",
|
|
34
34
|
];
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* 'x' mark over teal 'y' teal over mark
|
|
36
|
+
* The part align-frontend wraps in <span class="accent">, which resolves to --teal.
|
|
37
|
+
* Everything else in the headline takes the heading colour, so colouring both lines
|
|
38
|
+
* teal (as this did at first) is not what the site does.
|
|
40
39
|
*/
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
export const TAGLINE_ACCENT = "don't know the company.";
|
|
41
|
+
/**
|
|
42
|
+
* The mark, drawn with QUADRANT block characters: each cell carries a 2x2 subpixel
|
|
43
|
+
* grid, so a diagonal steps half as far as it does with half-blocks.
|
|
44
|
+
*
|
|
45
|
+
* Half-blocks were the first attempt and the result read as a stepped ziggurat rather
|
|
46
|
+
* than an A: they subdivide vertically only, so a 45-degree edge staircases a full cell
|
|
47
|
+
* at a time. The mark is also SOLID rather than an outline, which is the other half of
|
|
48
|
+
* why a small sprite reads as smooth - mass hides the steps that a one-pixel stroke
|
|
49
|
+
* puts on display.
|
|
50
|
+
*
|
|
51
|
+
* GLYPHS holds the shape, COLOURS names each cell's brand colour. A test asserts they
|
|
52
|
+
* agree cell for cell. The white/teal boundary falls on a cell edge on purpose, so no
|
|
53
|
+
* cell has to carry two colours.
|
|
54
|
+
*/
|
|
55
|
+
const GLYPHS = [
|
|
56
|
+
' ▗██▖ ',
|
|
57
|
+
' █▛▜█ ',
|
|
58
|
+
' ▟█ █▙ ',
|
|
59
|
+
' ▟█▘ ▝█▙ ',
|
|
60
|
+
' ▟█▘ ▝█▙ ',
|
|
61
|
+
'████████████',
|
|
62
|
+
' ███ ███ ',
|
|
50
63
|
];
|
|
51
|
-
const
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
' NNNuNNN NNNuNNN ',
|
|
64
|
+
const COLOURS = [
|
|
65
|
+
' NNNN ',
|
|
66
|
+
' NNNN ',
|
|
67
|
+
' NN NN ',
|
|
68
|
+
' NNN NNN ',
|
|
69
|
+
' NNN NNN ',
|
|
70
|
+
'TTTTTTTTTTTT',
|
|
71
|
+
' TTT TTT ',
|
|
60
72
|
];
|
|
61
73
|
function resolveColor(o) {
|
|
62
74
|
if (typeof o.color === 'boolean')
|
|
@@ -98,57 +110,25 @@ const RESET = '\x1b[0m';
|
|
|
98
110
|
export function logoLines(opts = {}) {
|
|
99
111
|
const color = resolveColor(opts);
|
|
100
112
|
const truecolor = resolveTruecolor(opts);
|
|
113
|
+
const style = opts.style ?? 'white';
|
|
101
114
|
const markRgb = resolveDark(opts) ? WHITE_RGB : NAVY_RGB;
|
|
102
115
|
const mark256 = resolveDark(opts) ? WHITE_256 : NAVY_256;
|
|
103
|
-
const style = opts.style ?? 'white';
|
|
104
|
-
// 'teal' paints the strokes teal instead of the knockout white; 'solid' also swaps in
|
|
105
|
-
// the filled sprite, which reads bolder because the mass carries the colour rather
|
|
106
|
-
// than a one-cell outline.
|
|
107
116
|
const strokeRgb = style === 'white' ? markRgb : TEAL_RGB;
|
|
108
117
|
const stroke256 = style === 'white' ? mark256 : TEAL_256;
|
|
109
|
-
return
|
|
118
|
+
return GLYPHS.map((row, y) => {
|
|
119
|
+
if (!color)
|
|
120
|
+
return row;
|
|
121
|
+
const mask = COLOURS[y] ?? '';
|
|
110
122
|
let out = '';
|
|
111
|
-
for (
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (
|
|
115
|
-
out +=
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
switch (cell) {
|
|
123
|
-
case ' ':
|
|
124
|
-
out += ' ';
|
|
125
|
-
break;
|
|
126
|
-
case 'N':
|
|
127
|
-
out += `${fg(strokeRgb, stroke256, truecolor)}█${RESET}`;
|
|
128
|
-
break;
|
|
129
|
-
case 'T':
|
|
130
|
-
out += `${fg(TEAL_RGB, TEAL_256, truecolor)}█${RESET}`;
|
|
131
|
-
break;
|
|
132
|
-
case 'n':
|
|
133
|
-
out += `${fg(strokeRgb, stroke256, truecolor)}▀${RESET}`;
|
|
134
|
-
break;
|
|
135
|
-
case 'u':
|
|
136
|
-
out += `${fg(strokeRgb, stroke256, truecolor)}▄${RESET}`;
|
|
137
|
-
break;
|
|
138
|
-
case 't':
|
|
139
|
-
out += `${fg(TEAL_RGB, TEAL_256, truecolor)}▀${RESET}`;
|
|
140
|
-
break;
|
|
141
|
-
case 'v':
|
|
142
|
-
out += `${fg(TEAL_RGB, TEAL_256, truecolor)}▄${RESET}`;
|
|
143
|
-
break;
|
|
144
|
-
case 'x':
|
|
145
|
-
out += `${fg(strokeRgb, stroke256, truecolor) + bg(TEAL_RGB, TEAL_256, truecolor)}▀${RESET}`;
|
|
146
|
-
break;
|
|
147
|
-
case 'y':
|
|
148
|
-
out += `${fg(TEAL_RGB, TEAL_256, truecolor) + bg(strokeRgb, stroke256, truecolor)}▀${RESET}`;
|
|
149
|
-
break;
|
|
150
|
-
default: out += ' ';
|
|
151
|
-
}
|
|
123
|
+
for (let x = 0; x < row.length; x++) {
|
|
124
|
+
const ch = row[x];
|
|
125
|
+
const c = mask[x];
|
|
126
|
+
if (c === 'N')
|
|
127
|
+
out += `${fg(strokeRgb, stroke256, truecolor)}${ch}${RESET}`;
|
|
128
|
+
else if (c === 'T')
|
|
129
|
+
out += `${fg(TEAL_RGB, TEAL_256, truecolor)}${ch}${RESET}`;
|
|
130
|
+
else
|
|
131
|
+
out += ch;
|
|
152
132
|
}
|
|
153
133
|
return out;
|
|
154
134
|
});
|
|
@@ -157,18 +137,32 @@ export function logoLines(opts = {}) {
|
|
|
157
137
|
* The full lockup: the mark on the left, wordmark and tagline to its right, so the
|
|
158
138
|
* whole thing is only as tall as the mark (LOGO_ROWS) rather than stacking.
|
|
159
139
|
*/
|
|
140
|
+
/** Split the second headline line into its plain lead and its accented tail. */
|
|
141
|
+
function splitAccent(line) {
|
|
142
|
+
const i = line.indexOf(TAGLINE_ACCENT);
|
|
143
|
+
// Fall back to colouring the whole line rather than dropping the accent silently,
|
|
144
|
+
// so a reworded tagline degrades visibly instead of losing a colour nobody notices.
|
|
145
|
+
return i < 0 ? ['', line] : [line.slice(0, i), line.slice(i)];
|
|
146
|
+
}
|
|
160
147
|
export function banner(opts) {
|
|
161
148
|
const color = resolveColor(opts);
|
|
162
149
|
const truecolor = resolveTruecolor(opts);
|
|
163
150
|
const dim = color ? '\x1b[2m' : '';
|
|
164
151
|
const bold = color ? '\x1b[1m' : '';
|
|
165
152
|
const tealFg = color ? fg(TEAL_RGB, TEAL_256, truecolor) : '';
|
|
153
|
+
// The headline takes the mark colour, which is white on dark and navy on light,
|
|
154
|
+
// so it reads against whichever ground the terminal has.
|
|
155
|
+
const headline = color
|
|
156
|
+
? fg(resolveDark(opts) ? WHITE_RGB : NAVY_RGB, resolveDark(opts) ? WHITE_256 : NAVY_256, truecolor)
|
|
157
|
+
: '';
|
|
166
158
|
const reset = color ? RESET : '';
|
|
167
159
|
const right = new Array(LOGO_ROWS).fill('');
|
|
168
160
|
// Registered, not TM: Align is a registered trademark.
|
|
169
161
|
right[1] = `${bold}ALIGN®${reset}`;
|
|
170
|
-
|
|
171
|
-
right[
|
|
162
|
+
// Match the site: the headline is the heading colour and only the accent span is teal.
|
|
163
|
+
right[2] = `${headline}${TAGLINE_LINES[0]}${reset}`;
|
|
164
|
+
const [lead, accent] = splitAccent(TAGLINE_LINES[1]);
|
|
165
|
+
right[3] = `${headline}${lead}${reset}${tealFg}${accent}${reset}`;
|
|
172
166
|
const meta = opts.context ? `v${opts.version} ${'\u00b7'} ${opts.context}` : `v${opts.version}`;
|
|
173
167
|
right[5] = `${dim}${meta}${reset}`;
|
|
174
168
|
const mark = logoLines(opts);
|
package/dist/lib/brand.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;CACP,CAAC;AAEX,MAAM,QAAQ,GAA6B,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1D,MAAM,QAAQ,GAA6B,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvD,MAAM,SAAS,GAA6B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE5D,iFAAiF;AACjF,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAE3B;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,+BAA+B;IAC/B,8BAA8B;CACtB,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"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"}
|