@nbtca/prompt 1.3.0 → 1.3.1
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/core/logo.js +3 -0
- package/dist/features/calendar.js +18 -15
- package/package.json +1 -1
package/dist/core/logo.js
CHANGED
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
import { readFileSync } from 'fs';
|
|
7
7
|
import { fileURLToPath } from 'url';
|
|
8
8
|
import { dirname, join } from 'path';
|
|
9
|
+
import chalk from 'chalk';
|
|
9
10
|
import gradient from 'gradient-string';
|
|
10
11
|
import { useUnicodeIcons } from './icons.js';
|
|
12
|
+
import { APP_INFO } from '../config/data.js';
|
|
11
13
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
14
|
const TAGLINE = 'To be at the intersection of technology and liberal arts.';
|
|
13
15
|
// Brand gradient: emblem blue -> sky -> cyan.
|
|
@@ -43,5 +45,6 @@ export function printLogo() {
|
|
|
43
45
|
console.log(paint(art ?? 'NBTCA', color));
|
|
44
46
|
console.log();
|
|
45
47
|
console.log(color ? brand(TAGLINE) : TAGLINE);
|
|
48
|
+
console.log(chalk.dim(`@nbtca/prompt v${APP_INFO.version}`));
|
|
46
49
|
console.log();
|
|
47
50
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { loadCalendar, FeedFetchError, FeedParseError } from '@nbtca/nbtcal';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { select, isCancel } from '@clack/prompts';
|
|
4
|
-
import {
|
|
4
|
+
import { createSpinner } from '../core/ui.js';
|
|
5
5
|
import { c } from '../core/theme.js';
|
|
6
6
|
import { pickIcon } from '../core/icons.js';
|
|
7
7
|
import { padEndV, truncate } from '../core/text.js';
|
|
@@ -124,15 +124,14 @@ export async function showEventsPreview() {
|
|
|
124
124
|
const events = cal.upcoming({ days: 30 }).map(toDisplayEvent);
|
|
125
125
|
if (events.length === 0) {
|
|
126
126
|
s.stop(trans.calendar.noEvents);
|
|
127
|
+
console.log();
|
|
128
|
+
return;
|
|
127
129
|
}
|
|
128
|
-
|
|
129
|
-
s.stop(`${events.length} ${trans.calendar.eventsFound}`);
|
|
130
|
-
}
|
|
130
|
+
s.stop(`${events.length} ${trans.calendar.eventsFound}`);
|
|
131
131
|
console.log();
|
|
132
132
|
console.log(renderEventsTable(events.slice(0, 5), { color: !!process.stdout.isTTY }));
|
|
133
133
|
console.log();
|
|
134
|
-
|
|
135
|
-
renderSubscribeHint();
|
|
134
|
+
renderSubscribeHint();
|
|
136
135
|
console.log();
|
|
137
136
|
}
|
|
138
137
|
catch {
|
|
@@ -165,14 +164,15 @@ export async function showPastEvents() {
|
|
|
165
164
|
try {
|
|
166
165
|
const cal = await loadCalendarOrThrow();
|
|
167
166
|
const events = cal.past({ days: 30 }).reverse().map(toDisplayEvent);
|
|
167
|
+
if (events.length === 0) {
|
|
168
|
+
s.stop(trans.calendar.noPastEvents);
|
|
169
|
+
console.log();
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
168
172
|
s.stop(`${events.length} ${trans.calendar.eventsFound}`);
|
|
169
173
|
console.log();
|
|
170
174
|
console.log(renderEventsTable(events, { color: true }));
|
|
171
175
|
console.log();
|
|
172
|
-
if (events.length === 0) {
|
|
173
|
-
info(trans.calendar.noPastEvents);
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
176
|
const options = [
|
|
177
177
|
...events.map((e, i) => ({
|
|
178
178
|
value: String(i),
|
|
@@ -201,13 +201,20 @@ export async function showCalendar() {
|
|
|
201
201
|
try {
|
|
202
202
|
const cal = await loadCalendarOrThrow();
|
|
203
203
|
const events = cal.upcoming({ days: 30 }).map(toDisplayEvent);
|
|
204
|
-
s.stop(`${events.length} ${trans.calendar.eventsFound}`);
|
|
205
204
|
const now = new Date();
|
|
206
205
|
const heatmapBuckets = cal.heatmap({
|
|
207
206
|
start: new Date(now.getTime() - 365 * 24 * 60 * 60 * 1000),
|
|
208
207
|
end: now,
|
|
209
208
|
bucket: 'day',
|
|
210
209
|
});
|
|
210
|
+
if (events.length === 0) {
|
|
211
|
+
s.stop(trans.calendar.noEvents);
|
|
212
|
+
console.log();
|
|
213
|
+
console.log(renderHeatmap(heatmapBuckets, now, { color: true }));
|
|
214
|
+
console.log();
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
s.stop(`${events.length} ${trans.calendar.eventsFound}`);
|
|
211
218
|
console.log();
|
|
212
219
|
console.log(renderHeatmap(heatmapBuckets, now, { color: true }));
|
|
213
220
|
console.log();
|
|
@@ -215,10 +222,6 @@ export async function showCalendar() {
|
|
|
215
222
|
console.log();
|
|
216
223
|
renderSubscribeHint();
|
|
217
224
|
console.log();
|
|
218
|
-
if (events.length === 0) {
|
|
219
|
-
info(trans.calendar.noEvents);
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
225
|
const options = [
|
|
223
226
|
...events.map((e, i) => ({
|
|
224
227
|
value: String(i),
|