dominion-cli 0.1.0
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/README.md +304 -0
- package/dist/app.d.ts +15 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +36 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +369 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/account.d.ts +28 -0
- package/dist/commands/account.d.ts.map +1 -0
- package/dist/commands/account.js +133 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/billing.d.ts +16 -0
- package/dist/commands/billing.d.ts.map +1 -0
- package/dist/commands/billing.js +61 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/buy.d.ts +27 -0
- package/dist/commands/buy.d.ts.map +1 -0
- package/dist/commands/buy.js +293 -0
- package/dist/commands/buy.js.map +1 -0
- package/dist/commands/cart/add.d.ts +17 -0
- package/dist/commands/cart/add.d.ts.map +1 -0
- package/dist/commands/cart/add.js +119 -0
- package/dist/commands/cart/add.js.map +1 -0
- package/dist/commands/cart/clear.d.ts +12 -0
- package/dist/commands/cart/clear.d.ts.map +1 -0
- package/dist/commands/cart/clear.js +49 -0
- package/dist/commands/cart/clear.js.map +1 -0
- package/dist/commands/cart/index.d.ts +8 -0
- package/dist/commands/cart/index.d.ts.map +1 -0
- package/dist/commands/cart/index.js +8 -0
- package/dist/commands/cart/index.js.map +1 -0
- package/dist/commands/cart/list.d.ts +14 -0
- package/dist/commands/cart/list.d.ts.map +1 -0
- package/dist/commands/cart/list.js +51 -0
- package/dist/commands/cart/list.js.map +1 -0
- package/dist/commands/cart/remove.d.ts +13 -0
- package/dist/commands/cart/remove.d.ts.map +1 -0
- package/dist/commands/cart/remove.js +24 -0
- package/dist/commands/cart/remove.js.map +1 -0
- package/dist/commands/credits.d.ts +10 -0
- package/dist/commands/credits.d.ts.map +1 -0
- package/dist/commands/credits.js +139 -0
- package/dist/commands/credits.js.map +1 -0
- package/dist/commands/dns/add.d.ts +30 -0
- package/dist/commands/dns/add.d.ts.map +1 -0
- package/dist/commands/dns/add.js +144 -0
- package/dist/commands/dns/add.js.map +1 -0
- package/dist/commands/dns/index.d.ts +7 -0
- package/dist/commands/dns/index.d.ts.map +1 -0
- package/dist/commands/dns/index.js +7 -0
- package/dist/commands/dns/index.js.map +1 -0
- package/dist/commands/dns/list.d.ts +24 -0
- package/dist/commands/dns/list.d.ts.map +1 -0
- package/dist/commands/dns/list.js +111 -0
- package/dist/commands/dns/list.js.map +1 -0
- package/dist/commands/dns/remove.d.ts +24 -0
- package/dist/commands/dns/remove.d.ts.map +1 -0
- package/dist/commands/dns/remove.js +137 -0
- package/dist/commands/dns/remove.js.map +1 -0
- package/dist/commands/domains/detail.d.ts +20 -0
- package/dist/commands/domains/detail.d.ts.map +1 -0
- package/dist/commands/domains/detail.js +112 -0
- package/dist/commands/domains/detail.js.map +1 -0
- package/dist/commands/domains/index.d.ts +6 -0
- package/dist/commands/domains/index.d.ts.map +1 -0
- package/dist/commands/domains/index.js +6 -0
- package/dist/commands/domains/index.js.map +1 -0
- package/dist/commands/domains/list.d.ts +21 -0
- package/dist/commands/domains/list.d.ts.map +1 -0
- package/dist/commands/domains/list.js +106 -0
- package/dist/commands/domains/list.js.map +1 -0
- package/dist/commands/hack.d.ts +9 -0
- package/dist/commands/hack.d.ts.map +1 -0
- package/dist/commands/hack.js +104 -0
- package/dist/commands/hack.js.map +1 -0
- package/dist/commands/integrations.d.ts +20 -0
- package/dist/commands/integrations.d.ts.map +1 -0
- package/dist/commands/integrations.js +92 -0
- package/dist/commands/integrations.js.map +1 -0
- package/dist/commands/login.d.ts +15 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +95 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +13 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +32 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/search.d.ts +24 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +162 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/settings/index.d.ts +6 -0
- package/dist/commands/settings/index.d.ts.map +1 -0
- package/dist/commands/settings/index.js +6 -0
- package/dist/commands/settings/index.js.map +1 -0
- package/dist/commands/settings/set.d.ts +25 -0
- package/dist/commands/settings/set.d.ts.map +1 -0
- package/dist/commands/settings/set.js +215 -0
- package/dist/commands/settings/set.js.map +1 -0
- package/dist/commands/settings/view.d.ts +17 -0
- package/dist/commands/settings/view.d.ts.map +1 -0
- package/dist/commands/settings/view.js +99 -0
- package/dist/commands/settings/view.js.map +1 -0
- package/dist/commands/team/add.d.ts +17 -0
- package/dist/commands/team/add.d.ts.map +1 -0
- package/dist/commands/team/add.js +64 -0
- package/dist/commands/team/add.js.map +1 -0
- package/dist/commands/team/index.d.ts +7 -0
- package/dist/commands/team/index.d.ts.map +1 -0
- package/dist/commands/team/index.js +7 -0
- package/dist/commands/team/index.js.map +1 -0
- package/dist/commands/team/list.d.ts +13 -0
- package/dist/commands/team/list.d.ts.map +1 -0
- package/dist/commands/team/list.js +51 -0
- package/dist/commands/team/list.js.map +1 -0
- package/dist/commands/team/remove.d.ts +14 -0
- package/dist/commands/team/remove.d.ts.map +1 -0
- package/dist/commands/team/remove.js +57 -0
- package/dist/commands/team/remove.js.map +1 -0
- package/dist/commands/vercel/index.d.ts +8 -0
- package/dist/commands/vercel/index.d.ts.map +1 -0
- package/dist/commands/vercel/index.js +8 -0
- package/dist/commands/vercel/index.js.map +1 -0
- package/dist/commands/vercel/link.d.ts +25 -0
- package/dist/commands/vercel/link.d.ts.map +1 -0
- package/dist/commands/vercel/link.js +176 -0
- package/dist/commands/vercel/link.js.map +1 -0
- package/dist/commands/vercel/setup.d.ts +13 -0
- package/dist/commands/vercel/setup.d.ts.map +1 -0
- package/dist/commands/vercel/setup.js +113 -0
- package/dist/commands/vercel/setup.js.map +1 -0
- package/dist/commands/vercel/status.d.ts +15 -0
- package/dist/commands/vercel/status.d.ts.map +1 -0
- package/dist/commands/vercel/status.js +103 -0
- package/dist/commands/vercel/status.js.map +1 -0
- package/dist/commands/vercel/unlink.d.ts +16 -0
- package/dist/commands/vercel/unlink.d.ts.map +1 -0
- package/dist/commands/vercel/unlink.js +118 -0
- package/dist/commands/vercel/unlink.js.map +1 -0
- package/dist/commands/webhooks/add.d.ts +16 -0
- package/dist/commands/webhooks/add.d.ts.map +1 -0
- package/dist/commands/webhooks/add.js +61 -0
- package/dist/commands/webhooks/add.js.map +1 -0
- package/dist/commands/webhooks/index.d.ts +7 -0
- package/dist/commands/webhooks/index.d.ts.map +1 -0
- package/dist/commands/webhooks/index.js +7 -0
- package/dist/commands/webhooks/index.js.map +1 -0
- package/dist/commands/webhooks/list.d.ts +14 -0
- package/dist/commands/webhooks/list.d.ts.map +1 -0
- package/dist/commands/webhooks/list.js +47 -0
- package/dist/commands/webhooks/list.js.map +1 -0
- package/dist/commands/webhooks/remove.d.ts +14 -0
- package/dist/commands/webhooks/remove.d.ts.map +1 -0
- package/dist/commands/webhooks/remove.js +57 -0
- package/dist/commands/webhooks/remove.js.map +1 -0
- package/dist/commands/whoami.d.ts +13 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +33 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/components/account-card.d.ts +17 -0
- package/dist/components/account-card.d.ts.map +1 -0
- package/dist/components/account-card.js +19 -0
- package/dist/components/account-card.js.map +1 -0
- package/dist/components/billing-table.d.ts +22 -0
- package/dist/components/billing-table.d.ts.map +1 -0
- package/dist/components/billing-table.js +53 -0
- package/dist/components/billing-table.js.map +1 -0
- package/dist/components/celebration.d.ts +21 -0
- package/dist/components/celebration.d.ts.map +1 -0
- package/dist/components/celebration.js +55 -0
- package/dist/components/celebration.js.map +1 -0
- package/dist/components/contact-form.d.ts +23 -0
- package/dist/components/contact-form.d.ts.map +1 -0
- package/dist/components/contact-form.js +109 -0
- package/dist/components/contact-form.js.map +1 -0
- package/dist/components/dns-table.d.ts +14 -0
- package/dist/components/dns-table.d.ts.map +1 -0
- package/dist/components/dns-table.js +71 -0
- package/dist/components/dns-table.js.map +1 -0
- package/dist/components/domain-card.d.ts +14 -0
- package/dist/components/domain-card.d.ts.map +1 -0
- package/dist/components/domain-card.js +41 -0
- package/dist/components/domain-card.js.map +1 -0
- package/dist/components/domain-table.d.ts +30 -0
- package/dist/components/domain-table.d.ts.map +1 -0
- package/dist/components/domain-table.js +87 -0
- package/dist/components/domain-table.js.map +1 -0
- package/dist/components/error-display.d.ts +25 -0
- package/dist/components/error-display.d.ts.map +1 -0
- package/dist/components/error-display.js +51 -0
- package/dist/components/error-display.js.map +1 -0
- package/dist/components/layout.d.ts +14 -0
- package/dist/components/layout.d.ts.map +1 -0
- package/dist/components/layout.js +21 -0
- package/dist/components/layout.js.map +1 -0
- package/dist/components/logo.d.ts +37 -0
- package/dist/components/logo.d.ts.map +1 -0
- package/dist/components/logo.js +70 -0
- package/dist/components/logo.js.map +1 -0
- package/dist/components/matrix-rain.d.ts +17 -0
- package/dist/components/matrix-rain.d.ts.map +1 -0
- package/dist/components/matrix-rain.js +105 -0
- package/dist/components/matrix-rain.js.map +1 -0
- package/dist/components/purchase-confirmation.d.ts +17 -0
- package/dist/components/purchase-confirmation.d.ts.map +1 -0
- package/dist/components/purchase-confirmation.js +17 -0
- package/dist/components/purchase-confirmation.js.map +1 -0
- package/dist/components/search-results.d.ts +30 -0
- package/dist/components/search-results.d.ts.map +1 -0
- package/dist/components/search-results.js +53 -0
- package/dist/components/search-results.js.map +1 -0
- package/dist/components/settings-card.d.ts +14 -0
- package/dist/components/settings-card.d.ts.map +1 -0
- package/dist/components/settings-card.js +40 -0
- package/dist/components/settings-card.js.map +1 -0
- package/dist/components/spinner-messages.d.ts +19 -0
- package/dist/components/spinner-messages.d.ts.map +1 -0
- package/dist/components/spinner-messages.js +55 -0
- package/dist/components/spinner-messages.js.map +1 -0
- package/dist/lib/achievements.d.ts +107 -0
- package/dist/lib/achievements.d.ts.map +1 -0
- package/dist/lib/achievements.js +341 -0
- package/dist/lib/achievements.js.map +1 -0
- package/dist/lib/auth.d.ts +45 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +125 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/cart.d.ts +69 -0
- package/dist/lib/cart.d.ts.map +1 -0
- package/dist/lib/cart.js +131 -0
- package/dist/lib/cart.js.map +1 -0
- package/dist/lib/config.d.ts +51 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +116 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/dns-validation.d.ts +51 -0
- package/dist/lib/dns-validation.d.ts.map +1 -0
- package/dist/lib/dns-validation.js +185 -0
- package/dist/lib/dns-validation.js.map +1 -0
- package/dist/lib/easter-eggs.d.ts +21 -0
- package/dist/lib/easter-eggs.d.ts.map +1 -0
- package/dist/lib/easter-eggs.js +64 -0
- package/dist/lib/easter-eggs.js.map +1 -0
- package/dist/lib/error-personality.d.ts +35 -0
- package/dist/lib/error-personality.d.ts.map +1 -0
- package/dist/lib/error-personality.js +191 -0
- package/dist/lib/error-personality.js.map +1 -0
- package/dist/lib/errors.d.ts +8 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +7 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/konami.d.ts +51 -0
- package/dist/lib/konami.d.ts.map +1 -0
- package/dist/lib/konami.js +107 -0
- package/dist/lib/konami.js.map +1 -0
- package/dist/lib/loading-messages.d.ts +13 -0
- package/dist/lib/loading-messages.d.ts.map +1 -0
- package/dist/lib/loading-messages.js +13 -0
- package/dist/lib/loading-messages.js.map +1 -0
- package/dist/lib/namecom-client.d.ts +73 -0
- package/dist/lib/namecom-client.d.ts.map +1 -0
- package/dist/lib/namecom-client.js +260 -0
- package/dist/lib/namecom-client.js.map +1 -0
- package/dist/lib/nameserver-presets.d.ts +27 -0
- package/dist/lib/nameserver-presets.d.ts.map +1 -0
- package/dist/lib/nameserver-presets.js +45 -0
- package/dist/lib/nameserver-presets.js.map +1 -0
- package/dist/lib/purchase.d.ts +71 -0
- package/dist/lib/purchase.d.ts.map +1 -0
- package/dist/lib/purchase.js +160 -0
- package/dist/lib/purchase.js.map +1 -0
- package/dist/lib/schemas.d.ts +1968 -0
- package/dist/lib/schemas.d.ts.map +1 -0
- package/dist/lib/schemas.js +112 -0
- package/dist/lib/schemas.js.map +1 -0
- package/dist/lib/team.d.ts +71 -0
- package/dist/lib/team.d.ts.map +1 -0
- package/dist/lib/team.js +135 -0
- package/dist/lib/team.js.map +1 -0
- package/dist/lib/theme.d.ts +152 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +185 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/types.d.ts +136 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +19 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/vercel-client.d.ts +110 -0
- package/dist/lib/vercel-client.d.ts.map +1 -0
- package/dist/lib/vercel-client.js +196 -0
- package/dist/lib/vercel-client.js.map +1 -0
- package/dist/lib/webhooks.d.ts +83 -0
- package/dist/lib/webhooks.d.ts.map +1 -0
- package/dist/lib/webhooks.js +195 -0
- package/dist/lib/webhooks.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* ErrorDisplay — personality-driven error display component.
|
|
4
|
+
*
|
|
5
|
+
* Renders DomainError instances with character messages, ASCII art,
|
|
6
|
+
* and helpful suggestions. Falls back gracefully for generic errors.
|
|
7
|
+
*
|
|
8
|
+
* Respects --quiet mode (shows minimal output) and --no-color (plain text).
|
|
9
|
+
*/
|
|
10
|
+
import { Box, Text } from "ink";
|
|
11
|
+
import { isQuiet, inkColors, boxStyles } from "../lib/theme.js";
|
|
12
|
+
import { getErrorPersonality, inferPersonality, } from "../lib/error-personality.js";
|
|
13
|
+
import { DomainError } from "../lib/types.js";
|
|
14
|
+
// ─── Component ───────────────────────────────────────────────────────────────
|
|
15
|
+
/**
|
|
16
|
+
* Rich error display with personality, ASCII art, and suggestions.
|
|
17
|
+
*/
|
|
18
|
+
export function ErrorDisplay({ error, title, showArt = true, showSuggestion = true, }) {
|
|
19
|
+
const personality = resolvePersonality(error);
|
|
20
|
+
const errorMessage = resolveMessage(error);
|
|
21
|
+
const displayTitle = title ?? formatTitle(personality);
|
|
22
|
+
const quiet = isQuiet();
|
|
23
|
+
// ─── Quiet mode: minimal output ──────────────────────────────────────────
|
|
24
|
+
if (quiet) {
|
|
25
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: inkColors.error, bold: true, children: ["Error: ", errorMessage] }), showSuggestion && (_jsx(Text, { color: inkColors.muted, children: personality.suggestion }))] }));
|
|
26
|
+
}
|
|
27
|
+
// ─── Full display ────────────────────────────────────────────────────────
|
|
28
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [showArt && personality.art && (_jsx(Text, { color: personality.color, children: personality.art.trim() })), _jsx(Box, { borderStyle: boxStyles.error.borderStyle, borderColor: personality.color, paddingX: boxStyles.error.paddingX, paddingY: boxStyles.error.paddingY, children: _jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Text, { bold: true, color: personality.color, children: [personality.icon, " ", displayTitle] }), _jsx(Text, { italic: true, color: personality.color, children: personality.characterMessage }), _jsx(Text, { color: inkColors.white, children: errorMessage })] }) }), showSuggestion && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: inkColors.muted, children: [_jsxs(Text, { bold: true, color: inkColors.primary, children: ["Hint:", " "] }), personality.suggestion] }) }))] }));
|
|
29
|
+
}
|
|
30
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
31
|
+
function resolvePersonality(error) {
|
|
32
|
+
if (error instanceof DomainError) {
|
|
33
|
+
return getErrorPersonality(error.code);
|
|
34
|
+
}
|
|
35
|
+
return inferPersonality(error);
|
|
36
|
+
}
|
|
37
|
+
function resolveMessage(error) {
|
|
38
|
+
if (typeof error === "string") {
|
|
39
|
+
return error;
|
|
40
|
+
}
|
|
41
|
+
return error.message;
|
|
42
|
+
}
|
|
43
|
+
function formatTitle(personality) {
|
|
44
|
+
// Convert error code to a human-readable title
|
|
45
|
+
return personality.code
|
|
46
|
+
.split("_")
|
|
47
|
+
.map((word) => word.charAt(0) + word.slice(1).toLowerCase())
|
|
48
|
+
.join(" ");
|
|
49
|
+
}
|
|
50
|
+
export default ErrorDisplay;
|
|
51
|
+
//# sourceMappingURL=error-display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-display.js","sourceRoot":"","sources":["../../src/components/error-display.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface LayoutProps {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
showHeader?: boolean;
|
|
5
|
+
showFooter?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Consistent chrome for all command output.
|
|
9
|
+
* Provides a gradient header, content area, and footer status bar.
|
|
10
|
+
* Respects --quiet mode (hides decorative chrome).
|
|
11
|
+
*/
|
|
12
|
+
export declare function Layout({ children, showHeader, showFooter }: LayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default Layout;
|
|
14
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/components/layout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAiB,EAAE,UAAiB,EAAE,EAAE,WAAW,2CAYrF;AAqBD,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { LogoCompact } from "./logo.js";
|
|
4
|
+
import { isQuiet, inkColors } from "../lib/theme.js";
|
|
5
|
+
/**
|
|
6
|
+
* Consistent chrome for all command output.
|
|
7
|
+
* Provides a gradient header, content area, and footer status bar.
|
|
8
|
+
* Respects --quiet mode (hides decorative chrome).
|
|
9
|
+
*/
|
|
10
|
+
export function Layout({ children, showHeader = true, showFooter = true }) {
|
|
11
|
+
const quiet = isQuiet();
|
|
12
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [showHeader && !quiet && _jsx(Header, {}), _jsx(Box, { flexDirection: "column", paddingY: 1, children: children }), showFooter && !quiet && _jsx(Footer, {})] }));
|
|
13
|
+
}
|
|
14
|
+
function Header() {
|
|
15
|
+
return (_jsxs(Box, { children: [_jsx(LogoCompact, {}), _jsx(Text, { color: inkColors.muted, children: " ~ domain management CLI" })] }));
|
|
16
|
+
}
|
|
17
|
+
function Footer() {
|
|
18
|
+
return (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, children: _jsxs(Text, { color: inkColors.muted, children: ["Run ", _jsx(Text, { bold: true, color: inkColors.white, children: "dominion --help" }), " for available commands"] }) }));
|
|
19
|
+
}
|
|
20
|
+
export default Layout;
|
|
21
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/components/layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQrD;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAe;IACpF,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;IAExB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACpC,UAAU,IAAI,CAAC,KAAK,IAAI,KAAC,MAAM,KAAG,EACnC,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,YACpC,QAAQ,GACL,EACL,UAAU,IAAI,CAAC,KAAK,IAAI,KAAC,MAAM,KAAG,IAC/B,CACP,CAAC;AACJ,CAAC;AAED,SAAS,MAAM;IACb,OAAO,CACL,MAAC,GAAG,eACF,KAAC,WAAW,KAAG,EACf,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,yCAAiC,IACzD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,MAAM;IACb,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,YACnI,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,qBACtB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,SAAS,CAAC,KAAK,gCAAwB,+BACxD,GACH,CACP,CAAC;AACJ,CAAC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dominion ASCII logo component.
|
|
3
|
+
*
|
|
4
|
+
* Renders a gradient-colored DOMINION figlet art using gradient-string + figlet.
|
|
5
|
+
* Displayed on first run and when `dominion` is invoked with no args.
|
|
6
|
+
*
|
|
7
|
+
* Respects --quiet (hides entirely) and --no-color (plain text fallback).
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Generate the ASCII art text synchronously using figlet.
|
|
11
|
+
* Uses "ANSI Shadow" as primary, falls back to "Slant" then "Standard".
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateLogoText(text?: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Apply gradient coloring to ASCII art text.
|
|
16
|
+
* Returns the colored string, or plain text if --no-color is active.
|
|
17
|
+
*/
|
|
18
|
+
export declare function applyGradient(text: string): string;
|
|
19
|
+
export interface LogoProps {
|
|
20
|
+
/** Override the text rendered in figlet (default: DOMINION) */
|
|
21
|
+
text?: string;
|
|
22
|
+
/** Show the tagline beneath the logo */
|
|
23
|
+
showTagline?: boolean;
|
|
24
|
+
/** Show the version number beneath the logo */
|
|
25
|
+
version?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Full logo display with gradient ASCII art, tagline, and optional version.
|
|
29
|
+
*/
|
|
30
|
+
export declare function Logo({ text, showTagline, version }: LogoProps): import("react/jsx-runtime").JSX.Element | null;
|
|
31
|
+
/**
|
|
32
|
+
* Compact logo — just the gradient text, no tagline or version.
|
|
33
|
+
* Used for headers where space is limited.
|
|
34
|
+
*/
|
|
35
|
+
export declare function LogoCompact(): import("react/jsx-runtime").JSX.Element | null;
|
|
36
|
+
export default Logo;
|
|
37
|
+
//# sourceMappingURL=logo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/components/logo.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAa,GAAG,MAAM,CAU1D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOlD;AAID,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,WAAkB,EAAE,OAAO,EAAE,EAAE,SAAS,kDAiCpE;AAED;;;GAGG;AACH,wBAAgB,WAAW,mDAa1B;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Dominion ASCII logo component.
|
|
4
|
+
*
|
|
5
|
+
* Renders a gradient-colored DOMINION figlet art using gradient-string + figlet.
|
|
6
|
+
* Displayed on first run and when `dominion` is invoked with no args.
|
|
7
|
+
*
|
|
8
|
+
* Respects --quiet (hides entirely) and --no-color (plain text fallback).
|
|
9
|
+
*/
|
|
10
|
+
import { Box, Text } from "ink";
|
|
11
|
+
import gradient from "gradient-string";
|
|
12
|
+
import figlet from "figlet";
|
|
13
|
+
import { isQuiet, isNoColor, gradients, inkColors } from "../lib/theme.js";
|
|
14
|
+
// ─── Figlet Font ─────────────────────────────────────────────────────────────
|
|
15
|
+
/**
|
|
16
|
+
* Generate the ASCII art text synchronously using figlet.
|
|
17
|
+
* Uses "ANSI Shadow" as primary, falls back to "Slant" then "Standard".
|
|
18
|
+
*/
|
|
19
|
+
export function generateLogoText(text = "DOMINION") {
|
|
20
|
+
try {
|
|
21
|
+
return figlet.textSync(text, { font: "ANSI Shadow" });
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
try {
|
|
25
|
+
return figlet.textSync(text, { font: "Slant" });
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return figlet.textSync(text, { font: "Standard" });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Apply gradient coloring to ASCII art text.
|
|
34
|
+
* Returns the colored string, or plain text if --no-color is active.
|
|
35
|
+
*/
|
|
36
|
+
export function applyGradient(text) {
|
|
37
|
+
if (isNoColor()) {
|
|
38
|
+
return text;
|
|
39
|
+
}
|
|
40
|
+
const dominionGradient = gradient(gradients.brand);
|
|
41
|
+
return dominionGradient(text);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Full logo display with gradient ASCII art, tagline, and optional version.
|
|
45
|
+
*/
|
|
46
|
+
export function Logo({ text, showTagline = true, version }) {
|
|
47
|
+
// Quiet mode: render nothing
|
|
48
|
+
if (isQuiet()) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const asciiArt = generateLogoText(text);
|
|
52
|
+
const coloredArt = applyGradient(asciiArt);
|
|
53
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { children: coloredArt }), showTagline && (_jsx(Box, { paddingLeft: 1, children: _jsx(Text, { color: inkColors.muted, children: "Premium domain management from the terminal" }) })), version && (_jsx(Box, { paddingLeft: 1, children: _jsxs(Text, { color: inkColors.muted, dimColor: true, children: ["v", version] }) }))] }));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Compact logo — just the gradient text, no tagline or version.
|
|
57
|
+
* Used for headers where space is limited.
|
|
58
|
+
*/
|
|
59
|
+
export function LogoCompact() {
|
|
60
|
+
if (isQuiet()) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
if (isNoColor()) {
|
|
64
|
+
return (_jsx(Text, { bold: true, children: "DOMINION" }));
|
|
65
|
+
}
|
|
66
|
+
const colored = applyGradient("DOMINION");
|
|
67
|
+
return _jsx(Text, { bold: true, children: colored });
|
|
68
|
+
}
|
|
69
|
+
export default Logo;
|
|
70
|
+
//# sourceMappingURL=logo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/components/logo.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE3E,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,UAAU;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,KAA4B,CAAC,CAAC;IAC1E,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAaD;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAa;IACnE,6BAA6B;IAC7B,IAAI,OAAO,EAAE,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAEzB,KAAC,IAAI,cAAE,UAAU,GAAQ,EAGxB,WAAW,IAAI,CACd,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YACjB,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,4DAErB,GACH,CACP,EAGA,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YACjB,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,wBAClC,OAAO,IACJ,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,OAAO,EAAE,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO,CACL,KAAC,IAAI,IAAC,IAAI,+BAAgB,CAC3B,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,KAAC,IAAI,IAAC,IAAI,kBAAE,OAAO,GAAQ,CAAC;AACrC,CAAC;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Matrix-style green character rain animation.
|
|
3
|
+
*
|
|
4
|
+
* Triggered by the Konami code. Shows cascading green characters
|
|
5
|
+
* in the terminal for 5 seconds, then cleans up.
|
|
6
|
+
*
|
|
7
|
+
* Uses Ink's Box + Text for rendering and setInterval for animation frames.
|
|
8
|
+
*/
|
|
9
|
+
export interface MatrixRainProps {
|
|
10
|
+
/** Duration in milliseconds (default: 5000) */
|
|
11
|
+
duration?: number;
|
|
12
|
+
/** Callback when animation completes */
|
|
13
|
+
onComplete?: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function MatrixRain({ duration, onComplete }: MatrixRainProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default MatrixRain;
|
|
17
|
+
//# sourceMappingURL=matrix-rain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix-rain.d.ts","sourceRoot":"","sources":["../../src/components/matrix-rain.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2DH,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAsB,EAAE,UAAU,EAAE,EAAE,eAAe,2CA+DjF;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Matrix-style green character rain animation.
|
|
4
|
+
*
|
|
5
|
+
* Triggered by the Konami code. Shows cascading green characters
|
|
6
|
+
* in the terminal for 5 seconds, then cleans up.
|
|
7
|
+
*
|
|
8
|
+
* Uses Ink's Box + Text for rendering and setInterval for animation frames.
|
|
9
|
+
*/
|
|
10
|
+
import { Box, Text, useApp } from "ink";
|
|
11
|
+
import { useState, useEffect, useCallback } from "react";
|
|
12
|
+
// ─── Config ─────────────────────────────────────────────────────────────────
|
|
13
|
+
const MATRIX_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789@#$%^&*(){}[]|/\\~`";
|
|
14
|
+
const COLS = 60;
|
|
15
|
+
const ROWS = 20;
|
|
16
|
+
const FRAME_MS = 100;
|
|
17
|
+
const DURATION_MS = 5000;
|
|
18
|
+
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
19
|
+
function randomChar() {
|
|
20
|
+
return MATRIX_CHARS[Math.floor(Math.random() * MATRIX_CHARS.length)];
|
|
21
|
+
}
|
|
22
|
+
function generateFrame(drops) {
|
|
23
|
+
const grid = [];
|
|
24
|
+
for (let row = 0; row < ROWS; row++) {
|
|
25
|
+
const line = [];
|
|
26
|
+
for (let col = 0; col < COLS; col++) {
|
|
27
|
+
// A cell is "active" if the drop for that column has reached or passed this row
|
|
28
|
+
const dropRow = drops[col];
|
|
29
|
+
if (dropRow >= row && dropRow - row < 6) {
|
|
30
|
+
// Trail: characters near the drop head
|
|
31
|
+
line.push(randomChar());
|
|
32
|
+
}
|
|
33
|
+
else if (Math.random() < 0.02) {
|
|
34
|
+
// Sparse random characters for ambiance
|
|
35
|
+
line.push(randomChar());
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
line.push(" ");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
grid.push(line);
|
|
42
|
+
}
|
|
43
|
+
return grid;
|
|
44
|
+
}
|
|
45
|
+
function advanceDrops(drops) {
|
|
46
|
+
return drops.map((drop) => {
|
|
47
|
+
if (drop > ROWS + 10) {
|
|
48
|
+
// Reset to top with random delay
|
|
49
|
+
return Math.random() < 0.3 ? -Math.floor(Math.random() * 10) : drop + 1;
|
|
50
|
+
}
|
|
51
|
+
return drop + 1;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function initDrops() {
|
|
55
|
+
return Array.from({ length: COLS }, () => -Math.floor(Math.random() * ROWS));
|
|
56
|
+
}
|
|
57
|
+
export function MatrixRain({ duration = DURATION_MS, onComplete }) {
|
|
58
|
+
const { exit } = useApp();
|
|
59
|
+
const [grid, setGrid] = useState(() => {
|
|
60
|
+
const drops = initDrops();
|
|
61
|
+
return generateFrame(drops);
|
|
62
|
+
});
|
|
63
|
+
const [dropsState, setDropsState] = useState(initDrops);
|
|
64
|
+
const [done, setDone] = useState(false);
|
|
65
|
+
const complete = useCallback(() => {
|
|
66
|
+
setDone(true);
|
|
67
|
+
if (onComplete) {
|
|
68
|
+
onComplete();
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
exit();
|
|
72
|
+
}
|
|
73
|
+
}, [onComplete, exit]);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
const timer = setTimeout(complete, duration);
|
|
76
|
+
return () => clearTimeout(timer);
|
|
77
|
+
}, [duration, complete]);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (done)
|
|
80
|
+
return;
|
|
81
|
+
const interval = setInterval(() => {
|
|
82
|
+
setDropsState((prev) => {
|
|
83
|
+
const next = advanceDrops(prev);
|
|
84
|
+
setGrid(generateFrame(next));
|
|
85
|
+
return next;
|
|
86
|
+
});
|
|
87
|
+
}, FRAME_MS);
|
|
88
|
+
return () => clearInterval(interval);
|
|
89
|
+
}, [done]);
|
|
90
|
+
if (done) {
|
|
91
|
+
return (_jsx(Box, { flexDirection: "column", gap: 1, children: _jsx(Text, { color: "green", bold: true, children: "You know the code. Welcome to the Matrix." }) }));
|
|
92
|
+
}
|
|
93
|
+
return (_jsx(Box, { flexDirection: "column", children: grid.map((row, rowIdx) => (_jsx(Text, { children: row.map((char, colIdx) => {
|
|
94
|
+
// Head of trail is bright white-green, rest is green
|
|
95
|
+
const drop = dropsState[colIdx];
|
|
96
|
+
const isHead = drop === rowIdx;
|
|
97
|
+
if (char === " ")
|
|
98
|
+
return " ";
|
|
99
|
+
if (isHead)
|
|
100
|
+
return `\x1b[97m${char}\x1b[0m`; // bright white
|
|
101
|
+
return `\x1b[32m${char}\x1b[0m`; // green
|
|
102
|
+
}).join("") }, rowIdx))) }));
|
|
103
|
+
}
|
|
104
|
+
export default MatrixRain;
|
|
105
|
+
//# sourceMappingURL=matrix-rain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix-rain.js","sourceRoot":"","sources":["../../src/components/matrix-rain.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzD,+EAA+E;AAE/E,MAAM,YAAY,GAAG,yDAAyD,CAAC;AAC/E,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,+EAA+E;AAE/E,SAAS,UAAU;IACjB,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,KAAe;IACpC,MAAM,IAAI,GAAe,EAAE,CAAC;IAE5B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACpC,gFAAgF;YAChF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;gBACxC,uCAAuC;gBACvC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;gBAChC,wCAAwC;gBACxC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAe;IACnC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC;YACrB,iCAAiC;YACjC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/E,CAAC;AAWD,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,UAAU,EAAmB;IAChF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAa,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;QAC1B,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAW,SAAS,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAEvB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI;YAAE,OAAO;QAEjB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEb,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,gEAEjB,GACH,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CACzB,KAAC,IAAI,cACF,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACxB,qDAAqD;gBACrD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;gBAC/B,IAAI,IAAI,KAAK,GAAG;oBAAE,OAAO,GAAG,CAAC;gBAC7B,IAAI,MAAM;oBAAE,OAAO,WAAW,IAAI,SAAS,CAAC,CAAC,eAAe;gBAC5D,OAAO,WAAW,IAAI,SAAS,CAAC,CAAC,QAAQ;YAC3C,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IARF,MAAM,CASV,CACR,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PurchaseConfirmation — itemized summary table for purchase review.
|
|
3
|
+
*
|
|
4
|
+
* Displays each domain with its price, a total row,
|
|
5
|
+
* and a prominent confirmation prompt for real purchases.
|
|
6
|
+
*/
|
|
7
|
+
import type { PurchaseItem } from "../lib/purchase.js";
|
|
8
|
+
export interface PurchaseConfirmationProps {
|
|
9
|
+
items: PurchaseItem[];
|
|
10
|
+
totalCents: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Purchase summary table for confirmation display.
|
|
14
|
+
*/
|
|
15
|
+
export declare function PurchaseConfirmation({ items, totalCents }: PurchaseConfirmationProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default PurchaseConfirmation;
|
|
17
|
+
//# sourceMappingURL=purchase-confirmation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchase-confirmation.d.ts","sourceRoot":"","sources":["../../src/components/purchase-confirmation.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,yBAAyB,2CAqEpF;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* PurchaseConfirmation — itemized summary table for purchase review.
|
|
4
|
+
*
|
|
5
|
+
* Displays each domain with its price, a total row,
|
|
6
|
+
* and a prominent confirmation prompt for real purchases.
|
|
7
|
+
*/
|
|
8
|
+
import { Box, Text } from "ink";
|
|
9
|
+
import { formatPrice } from "./search-results.js";
|
|
10
|
+
/**
|
|
11
|
+
* Purchase summary table for confirmation display.
|
|
12
|
+
*/
|
|
13
|
+
export function PurchaseConfirmation({ items, totalCents }) {
|
|
14
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Purchase Summary" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Box, { width: 35, children: _jsx(Text, { bold: true, color: "gray", children: "Domain" }) }), _jsx(Box, { width: 12, children: _jsx(Text, { bold: true, color: "gray", children: "Price" }) }), _jsx(Box, { width: 10, children: _jsx(Text, { bold: true, color: "gray", children: "Type" }) })] }), _jsx(Text, { color: "gray", children: "─".repeat(57) }), items.map((item) => (_jsxs(Box, { children: [_jsx(Box, { width: 35, children: _jsx(Text, { bold: true, color: "green", children: item.domain }) }), _jsx(Box, { width: 12, children: _jsx(Text, { color: "white", children: formatPrice(item.price) }) }), _jsx(Box, { width: 10, children: item.premium ? (_jsx(Text, { color: "yellow", bold: true, children: "PREMIUM" })) : (_jsx(Text, { color: "gray", children: "Standard" })) })] }, item.domain))), _jsx(Text, { color: "gray", children: "─".repeat(57) }), _jsxs(Box, { children: [_jsx(Box, { width: 35, children: _jsx(Text, { bold: true, color: "white", children: "Total" }) }), _jsx(Box, { width: 12, children: _jsx(Text, { bold: true, color: "cyan", children: formatPrice(totalCents) }) })] })] }));
|
|
15
|
+
}
|
|
16
|
+
export default PurchaseConfirmation;
|
|
17
|
+
//# sourceMappingURL=purchase-confirmation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchase-confirmation.js","sourceRoot":"","sources":["../../src/components/purchase-confirmation.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOlD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,KAAK,EAAE,UAAU,EAA6B;IACnF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAEzB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,iCAEhB,EAGP,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,uBAEhB,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,sBAEhB,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,qBAEhB,GACH,IACF,EAGN,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAGzC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,YACrB,IAAI,CAAC,MAAM,GACP,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAQ,GAChD,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACX,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,8BAElB,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAgB,CACnC,GACG,KAjBE,IAAI,CAAC,MAAM,CAkBf,CACP,CAAC,EAGF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAC1C,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,sBAEjB,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YACpB,WAAW,CAAC,UAAU,CAAC,GACnB,GACH,IACF,IACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearchResults — formatted table display for domain search results.
|
|
3
|
+
*
|
|
4
|
+
* Shows domain name, price (dollars), availability status (checkmark/cross),
|
|
5
|
+
* premium badge, and numbered rows for interactive selection.
|
|
6
|
+
* Supports --max-price filtering and --tld filtering.
|
|
7
|
+
*/
|
|
8
|
+
import type { DomainSearchResult } from "../lib/types.js";
|
|
9
|
+
export interface SearchResultsProps {
|
|
10
|
+
results: DomainSearchResult[];
|
|
11
|
+
maxPrice?: number;
|
|
12
|
+
selectedIndex?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Format price from cents to dollars.
|
|
16
|
+
* Name.com API returns prices in cents (e.g. 1299 = $12.99).
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatPrice(cents: number): string;
|
|
19
|
+
/**
|
|
20
|
+
* Filter results by max price (in dollars).
|
|
21
|
+
* Converts the dollar threshold to cents for comparison.
|
|
22
|
+
*/
|
|
23
|
+
export declare function filterByMaxPrice(results: DomainSearchResult[], maxPriceDollars: number): DomainSearchResult[];
|
|
24
|
+
/**
|
|
25
|
+
* Get only available (purchasable) results, numbered for selection.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getAvailableResults(results: DomainSearchResult[]): DomainSearchResult[];
|
|
28
|
+
export declare function SearchResults({ results, maxPrice, selectedIndex }: SearchResultsProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export default SearchResults;
|
|
30
|
+
//# sourceMappingURL=search-results.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-results.d.ts","sourceRoot":"","sources":["../../src/components/search-results.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,eAAe,EAAE,MAAM,GACtB,kBAAkB,EAAE,CAGtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB,EAAE,GAC5B,kBAAkB,EAAE,CAEtB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,kBAAkB,2CA0GrF;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* SearchResults — formatted table display for domain search results.
|
|
4
|
+
*
|
|
5
|
+
* Shows domain name, price (dollars), availability status (checkmark/cross),
|
|
6
|
+
* premium badge, and numbered rows for interactive selection.
|
|
7
|
+
* Supports --max-price filtering and --tld filtering.
|
|
8
|
+
*/
|
|
9
|
+
import { Box, Text } from "ink";
|
|
10
|
+
/**
|
|
11
|
+
* Format price from cents to dollars.
|
|
12
|
+
* Name.com API returns prices in cents (e.g. 1299 = $12.99).
|
|
13
|
+
*/
|
|
14
|
+
export function formatPrice(cents) {
|
|
15
|
+
return `$${(cents / 100).toFixed(2)}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Filter results by max price (in dollars).
|
|
19
|
+
* Converts the dollar threshold to cents for comparison.
|
|
20
|
+
*/
|
|
21
|
+
export function filterByMaxPrice(results, maxPriceDollars) {
|
|
22
|
+
const maxCents = maxPriceDollars * 100;
|
|
23
|
+
return results.filter((r) => r.purchasePrice <= maxCents);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get only available (purchasable) results, numbered for selection.
|
|
27
|
+
*/
|
|
28
|
+
export function getAvailableResults(results) {
|
|
29
|
+
return results.filter((r) => r.purchasable);
|
|
30
|
+
}
|
|
31
|
+
export function SearchResults({ results, maxPrice, selectedIndex }) {
|
|
32
|
+
// Apply max price filter if provided
|
|
33
|
+
let filtered = results;
|
|
34
|
+
if (maxPrice !== undefined) {
|
|
35
|
+
filtered = filterByMaxPrice(filtered, maxPrice);
|
|
36
|
+
}
|
|
37
|
+
// Limit to 20 results
|
|
38
|
+
const displayed = filtered.slice(0, 20);
|
|
39
|
+
if (displayed.length === 0) {
|
|
40
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", children: "No results found matching your criteria." }), _jsx(Text, { color: "gray", children: "Try a different search term or remove the price filter." })] }));
|
|
41
|
+
}
|
|
42
|
+
// Track available index for numbering
|
|
43
|
+
let availableIndex = 0;
|
|
44
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Box, { width: 5, children: _jsx(Text, { bold: true, color: "gray", children: "#" }) }), _jsx(Box, { width: 35, children: _jsx(Text, { bold: true, color: "gray", children: "Domain" }) }), _jsx(Box, { width: 12, children: _jsx(Text, { bold: true, color: "gray", children: "Price" }) }), _jsx(Box, { width: 12, children: _jsx(Text, { bold: true, color: "gray", children: "Status" }) }), _jsx(Box, { width: 10, children: _jsx(Text, { bold: true, color: "gray", children: "Type" }) })] }), _jsx(Text, { color: "gray", children: "─".repeat(74) }), displayed.map((result) => {
|
|
45
|
+
const isAvailable = result.purchasable;
|
|
46
|
+
const isPremium = result.premium;
|
|
47
|
+
const currentAvailableIndex = isAvailable ? ++availableIndex : 0;
|
|
48
|
+
const isSelected = selectedIndex !== undefined && currentAvailableIndex === selectedIndex;
|
|
49
|
+
return (_jsxs(Box, { children: [_jsx(Box, { width: 5, children: _jsx(Text, { color: isAvailable ? "white" : "gray", children: isAvailable ? `${currentAvailableIndex}` : " " }) }), _jsx(Box, { width: 35, children: _jsx(Text, { bold: isAvailable, color: isSelected ? "cyan" : isAvailable ? "green" : "gray", dimColor: !isAvailable, children: result.domainName }) }), _jsx(Box, { width: 12, children: _jsx(Text, { color: isAvailable ? "white" : "gray", dimColor: !isAvailable, children: formatPrice(result.purchasePrice) }) }), _jsx(Box, { width: 12, children: isAvailable ? (_jsx(Text, { color: "green", children: "\u2713 Available" })) : (_jsx(Text, { color: "gray", dimColor: true, children: "\u2717 Taken" })) }), _jsx(Box, { width: 10, children: isPremium ? (_jsx(Text, { color: "yellow", bold: true, children: "PREMIUM" })) : (_jsx(Text, { color: "gray", children: "Standard" })) })] }, result.domainName));
|
|
50
|
+
}), _jsx(Text, { color: "gray", children: "─".repeat(74) }), _jsx(Box, { children: _jsxs(Text, { color: "gray", children: [displayed.length, " result", displayed.length !== 1 ? "s" : "", " · ", getAvailableResults(displayed).length, " available", maxPrice !== undefined && ` · Max price: $${maxPrice}`] }) })] }));
|
|
51
|
+
}
|
|
52
|
+
export default SearchResults;
|
|
53
|
+
//# sourceMappingURL=search-results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-results.js","sourceRoot":"","sources":["../../src/components/search-results.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SettingsCard — structured card layout for domain settings view.
|
|
3
|
+
*
|
|
4
|
+
* Displays current domain settings in a boxen-style card:
|
|
5
|
+
* auto-renew, lock status, privacy/WHOIS protection, nameservers,
|
|
6
|
+
* renewal price, and expiry date.
|
|
7
|
+
*/
|
|
8
|
+
import type { Domain } from "../lib/types.js";
|
|
9
|
+
export interface SettingsCardProps {
|
|
10
|
+
domain: Domain;
|
|
11
|
+
}
|
|
12
|
+
export declare function SettingsCard({ domain }: SettingsCardProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default SettingsCard;
|
|
14
|
+
//# sourceMappingURL=settings-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-card.d.ts","sourceRoot":"","sources":["../../src/components/settings-card.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAK9C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAmCD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAgFzD;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* SettingsCard — structured card layout for domain settings view.
|
|
4
|
+
*
|
|
5
|
+
* Displays current domain settings in a boxen-style card:
|
|
6
|
+
* auto-renew, lock status, privacy/WHOIS protection, nameservers,
|
|
7
|
+
* renewal price, and expiry date.
|
|
8
|
+
*/
|
|
9
|
+
import { Box, Text } from "ink";
|
|
10
|
+
import { getDomainStatus, getStatusColor, formatExpiryDate } from "./domain-table.js";
|
|
11
|
+
import { formatPrice } from "./search-results.js";
|
|
12
|
+
import { NAMESERVER_PRESETS } from "../lib/nameserver-presets.js";
|
|
13
|
+
/**
|
|
14
|
+
* A labeled row in the card (key: value layout).
|
|
15
|
+
*/
|
|
16
|
+
function CardRow({ label, children }) {
|
|
17
|
+
return (_jsxs(Box, { children: [_jsx(Box, { width: 22, children: _jsx(Text, { color: "gray", children: label }) }), children] }));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Detect if nameservers match a known preset.
|
|
21
|
+
*/
|
|
22
|
+
function detectPreset(nameservers) {
|
|
23
|
+
const sorted = [...nameservers].sort();
|
|
24
|
+
for (const preset of Object.values(NAMESERVER_PRESETS)) {
|
|
25
|
+
const presetSorted = [...preset.nameservers].sort();
|
|
26
|
+
if (sorted.length === presetSorted.length &&
|
|
27
|
+
sorted.every((ns, i) => ns === presetSorted[i])) {
|
|
28
|
+
return preset.label;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
export function SettingsCard({ domain }) {
|
|
34
|
+
const status = getDomainStatus(domain.expireDate);
|
|
35
|
+
const statusColor = getStatusColor(status);
|
|
36
|
+
const presetName = detectPreset(domain.nameservers);
|
|
37
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: ["Settings for ", domain.domainName] }) }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Registration" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(CardRow, { label: "Expiry Date:", children: _jsx(Text, { color: statusColor, children: formatExpiryDate(domain.expireDate) }) }), _jsx(CardRow, { label: "Renewal Price:", children: _jsx(Text, { color: "white", children: formatPrice(domain.renewalPrice) }) })] })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Settings" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(CardRow, { label: "Auto-Renew:", children: _jsx(Text, { color: domain.autoRenewEnabled ? "green" : "yellow", children: domain.autoRenewEnabled ? "On" : "Off" }) }), _jsx(CardRow, { label: "Lock (Transfer):", children: _jsx(Text, { color: domain.locked ? "green" : "yellow", children: domain.locked ? "On (transfer protected)" : "Off (unlocked)" }) }), _jsx(CardRow, { label: "Privacy / WHOIS:", children: _jsx(Text, { color: domain.privacyEnabled ? "green" : "yellow", children: domain.privacyEnabled ? "On (WHOIS privacy enabled)" : "Off (WHOIS public)" }) })] })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Nameservers" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [presetName && (_jsx(CardRow, { label: "Preset:", children: _jsx(Text, { color: "magenta", children: presetName }) })), domain.nameservers.length > 0 ? (domain.nameservers.map((ns, i) => (_jsxs(Box, { children: [_jsx(Box, { width: 22, children: _jsx(Text, { color: "gray", children: i === 0 ? "Nameservers:" : "" }) }), _jsx(Text, { color: "white", children: ns })] }, ns)))) : (_jsx(CardRow, { label: "Nameservers:", children: _jsx(Text, { color: "yellow", children: "None configured" }) }))] })] })] }));
|
|
38
|
+
}
|
|
39
|
+
export default SettingsCard;
|
|
40
|
+
//# sourceMappingURL=settings-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-card.js","sourceRoot":"","sources":["../../src/components/settings-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rotating witty loading messages for search spinners.
|
|
3
|
+
*
|
|
4
|
+
* Used during domain search and other API-wait states
|
|
5
|
+
* to keep the user entertained.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get a random loading message, avoiding repeats.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getRandomMessage(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Get all loading messages (for testing).
|
|
13
|
+
*/
|
|
14
|
+
export declare function getAllMessages(): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Reset the last index tracker (for testing).
|
|
17
|
+
*/
|
|
18
|
+
export declare function resetMessageTracker(): void;
|
|
19
|
+
//# sourceMappingURL=spinner-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-messages.d.ts","sourceRoot":"","sources":["../../src/components/spinner-messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|