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.
Files changed (298) hide show
  1. package/README.md +304 -0
  2. package/dist/app.d.ts +15 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +36 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/cli.d.ts +9 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +369 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/account.d.ts +28 -0
  11. package/dist/commands/account.d.ts.map +1 -0
  12. package/dist/commands/account.js +133 -0
  13. package/dist/commands/account.js.map +1 -0
  14. package/dist/commands/billing.d.ts +16 -0
  15. package/dist/commands/billing.d.ts.map +1 -0
  16. package/dist/commands/billing.js +61 -0
  17. package/dist/commands/billing.js.map +1 -0
  18. package/dist/commands/buy.d.ts +27 -0
  19. package/dist/commands/buy.d.ts.map +1 -0
  20. package/dist/commands/buy.js +293 -0
  21. package/dist/commands/buy.js.map +1 -0
  22. package/dist/commands/cart/add.d.ts +17 -0
  23. package/dist/commands/cart/add.d.ts.map +1 -0
  24. package/dist/commands/cart/add.js +119 -0
  25. package/dist/commands/cart/add.js.map +1 -0
  26. package/dist/commands/cart/clear.d.ts +12 -0
  27. package/dist/commands/cart/clear.d.ts.map +1 -0
  28. package/dist/commands/cart/clear.js +49 -0
  29. package/dist/commands/cart/clear.js.map +1 -0
  30. package/dist/commands/cart/index.d.ts +8 -0
  31. package/dist/commands/cart/index.d.ts.map +1 -0
  32. package/dist/commands/cart/index.js +8 -0
  33. package/dist/commands/cart/index.js.map +1 -0
  34. package/dist/commands/cart/list.d.ts +14 -0
  35. package/dist/commands/cart/list.d.ts.map +1 -0
  36. package/dist/commands/cart/list.js +51 -0
  37. package/dist/commands/cart/list.js.map +1 -0
  38. package/dist/commands/cart/remove.d.ts +13 -0
  39. package/dist/commands/cart/remove.d.ts.map +1 -0
  40. package/dist/commands/cart/remove.js +24 -0
  41. package/dist/commands/cart/remove.js.map +1 -0
  42. package/dist/commands/credits.d.ts +10 -0
  43. package/dist/commands/credits.d.ts.map +1 -0
  44. package/dist/commands/credits.js +139 -0
  45. package/dist/commands/credits.js.map +1 -0
  46. package/dist/commands/dns/add.d.ts +30 -0
  47. package/dist/commands/dns/add.d.ts.map +1 -0
  48. package/dist/commands/dns/add.js +144 -0
  49. package/dist/commands/dns/add.js.map +1 -0
  50. package/dist/commands/dns/index.d.ts +7 -0
  51. package/dist/commands/dns/index.d.ts.map +1 -0
  52. package/dist/commands/dns/index.js +7 -0
  53. package/dist/commands/dns/index.js.map +1 -0
  54. package/dist/commands/dns/list.d.ts +24 -0
  55. package/dist/commands/dns/list.d.ts.map +1 -0
  56. package/dist/commands/dns/list.js +111 -0
  57. package/dist/commands/dns/list.js.map +1 -0
  58. package/dist/commands/dns/remove.d.ts +24 -0
  59. package/dist/commands/dns/remove.d.ts.map +1 -0
  60. package/dist/commands/dns/remove.js +137 -0
  61. package/dist/commands/dns/remove.js.map +1 -0
  62. package/dist/commands/domains/detail.d.ts +20 -0
  63. package/dist/commands/domains/detail.d.ts.map +1 -0
  64. package/dist/commands/domains/detail.js +112 -0
  65. package/dist/commands/domains/detail.js.map +1 -0
  66. package/dist/commands/domains/index.d.ts +6 -0
  67. package/dist/commands/domains/index.d.ts.map +1 -0
  68. package/dist/commands/domains/index.js +6 -0
  69. package/dist/commands/domains/index.js.map +1 -0
  70. package/dist/commands/domains/list.d.ts +21 -0
  71. package/dist/commands/domains/list.d.ts.map +1 -0
  72. package/dist/commands/domains/list.js +106 -0
  73. package/dist/commands/domains/list.js.map +1 -0
  74. package/dist/commands/hack.d.ts +9 -0
  75. package/dist/commands/hack.d.ts.map +1 -0
  76. package/dist/commands/hack.js +104 -0
  77. package/dist/commands/hack.js.map +1 -0
  78. package/dist/commands/integrations.d.ts +20 -0
  79. package/dist/commands/integrations.d.ts.map +1 -0
  80. package/dist/commands/integrations.js +92 -0
  81. package/dist/commands/integrations.js.map +1 -0
  82. package/dist/commands/login.d.ts +15 -0
  83. package/dist/commands/login.d.ts.map +1 -0
  84. package/dist/commands/login.js +95 -0
  85. package/dist/commands/login.js.map +1 -0
  86. package/dist/commands/logout.d.ts +13 -0
  87. package/dist/commands/logout.d.ts.map +1 -0
  88. package/dist/commands/logout.js +32 -0
  89. package/dist/commands/logout.js.map +1 -0
  90. package/dist/commands/search.d.ts +24 -0
  91. package/dist/commands/search.d.ts.map +1 -0
  92. package/dist/commands/search.js +162 -0
  93. package/dist/commands/search.js.map +1 -0
  94. package/dist/commands/settings/index.d.ts +6 -0
  95. package/dist/commands/settings/index.d.ts.map +1 -0
  96. package/dist/commands/settings/index.js +6 -0
  97. package/dist/commands/settings/index.js.map +1 -0
  98. package/dist/commands/settings/set.d.ts +25 -0
  99. package/dist/commands/settings/set.d.ts.map +1 -0
  100. package/dist/commands/settings/set.js +215 -0
  101. package/dist/commands/settings/set.js.map +1 -0
  102. package/dist/commands/settings/view.d.ts +17 -0
  103. package/dist/commands/settings/view.d.ts.map +1 -0
  104. package/dist/commands/settings/view.js +99 -0
  105. package/dist/commands/settings/view.js.map +1 -0
  106. package/dist/commands/team/add.d.ts +17 -0
  107. package/dist/commands/team/add.d.ts.map +1 -0
  108. package/dist/commands/team/add.js +64 -0
  109. package/dist/commands/team/add.js.map +1 -0
  110. package/dist/commands/team/index.d.ts +7 -0
  111. package/dist/commands/team/index.d.ts.map +1 -0
  112. package/dist/commands/team/index.js +7 -0
  113. package/dist/commands/team/index.js.map +1 -0
  114. package/dist/commands/team/list.d.ts +13 -0
  115. package/dist/commands/team/list.d.ts.map +1 -0
  116. package/dist/commands/team/list.js +51 -0
  117. package/dist/commands/team/list.js.map +1 -0
  118. package/dist/commands/team/remove.d.ts +14 -0
  119. package/dist/commands/team/remove.d.ts.map +1 -0
  120. package/dist/commands/team/remove.js +57 -0
  121. package/dist/commands/team/remove.js.map +1 -0
  122. package/dist/commands/vercel/index.d.ts +8 -0
  123. package/dist/commands/vercel/index.d.ts.map +1 -0
  124. package/dist/commands/vercel/index.js +8 -0
  125. package/dist/commands/vercel/index.js.map +1 -0
  126. package/dist/commands/vercel/link.d.ts +25 -0
  127. package/dist/commands/vercel/link.d.ts.map +1 -0
  128. package/dist/commands/vercel/link.js +176 -0
  129. package/dist/commands/vercel/link.js.map +1 -0
  130. package/dist/commands/vercel/setup.d.ts +13 -0
  131. package/dist/commands/vercel/setup.d.ts.map +1 -0
  132. package/dist/commands/vercel/setup.js +113 -0
  133. package/dist/commands/vercel/setup.js.map +1 -0
  134. package/dist/commands/vercel/status.d.ts +15 -0
  135. package/dist/commands/vercel/status.d.ts.map +1 -0
  136. package/dist/commands/vercel/status.js +103 -0
  137. package/dist/commands/vercel/status.js.map +1 -0
  138. package/dist/commands/vercel/unlink.d.ts +16 -0
  139. package/dist/commands/vercel/unlink.d.ts.map +1 -0
  140. package/dist/commands/vercel/unlink.js +118 -0
  141. package/dist/commands/vercel/unlink.js.map +1 -0
  142. package/dist/commands/webhooks/add.d.ts +16 -0
  143. package/dist/commands/webhooks/add.d.ts.map +1 -0
  144. package/dist/commands/webhooks/add.js +61 -0
  145. package/dist/commands/webhooks/add.js.map +1 -0
  146. package/dist/commands/webhooks/index.d.ts +7 -0
  147. package/dist/commands/webhooks/index.d.ts.map +1 -0
  148. package/dist/commands/webhooks/index.js +7 -0
  149. package/dist/commands/webhooks/index.js.map +1 -0
  150. package/dist/commands/webhooks/list.d.ts +14 -0
  151. package/dist/commands/webhooks/list.d.ts.map +1 -0
  152. package/dist/commands/webhooks/list.js +47 -0
  153. package/dist/commands/webhooks/list.js.map +1 -0
  154. package/dist/commands/webhooks/remove.d.ts +14 -0
  155. package/dist/commands/webhooks/remove.d.ts.map +1 -0
  156. package/dist/commands/webhooks/remove.js +57 -0
  157. package/dist/commands/webhooks/remove.js.map +1 -0
  158. package/dist/commands/whoami.d.ts +13 -0
  159. package/dist/commands/whoami.d.ts.map +1 -0
  160. package/dist/commands/whoami.js +33 -0
  161. package/dist/commands/whoami.js.map +1 -0
  162. package/dist/components/account-card.d.ts +17 -0
  163. package/dist/components/account-card.d.ts.map +1 -0
  164. package/dist/components/account-card.js +19 -0
  165. package/dist/components/account-card.js.map +1 -0
  166. package/dist/components/billing-table.d.ts +22 -0
  167. package/dist/components/billing-table.d.ts.map +1 -0
  168. package/dist/components/billing-table.js +53 -0
  169. package/dist/components/billing-table.js.map +1 -0
  170. package/dist/components/celebration.d.ts +21 -0
  171. package/dist/components/celebration.d.ts.map +1 -0
  172. package/dist/components/celebration.js +55 -0
  173. package/dist/components/celebration.js.map +1 -0
  174. package/dist/components/contact-form.d.ts +23 -0
  175. package/dist/components/contact-form.d.ts.map +1 -0
  176. package/dist/components/contact-form.js +109 -0
  177. package/dist/components/contact-form.js.map +1 -0
  178. package/dist/components/dns-table.d.ts +14 -0
  179. package/dist/components/dns-table.d.ts.map +1 -0
  180. package/dist/components/dns-table.js +71 -0
  181. package/dist/components/dns-table.js.map +1 -0
  182. package/dist/components/domain-card.d.ts +14 -0
  183. package/dist/components/domain-card.d.ts.map +1 -0
  184. package/dist/components/domain-card.js +41 -0
  185. package/dist/components/domain-card.js.map +1 -0
  186. package/dist/components/domain-table.d.ts +30 -0
  187. package/dist/components/domain-table.d.ts.map +1 -0
  188. package/dist/components/domain-table.js +87 -0
  189. package/dist/components/domain-table.js.map +1 -0
  190. package/dist/components/error-display.d.ts +25 -0
  191. package/dist/components/error-display.d.ts.map +1 -0
  192. package/dist/components/error-display.js +51 -0
  193. package/dist/components/error-display.js.map +1 -0
  194. package/dist/components/layout.d.ts +14 -0
  195. package/dist/components/layout.d.ts.map +1 -0
  196. package/dist/components/layout.js +21 -0
  197. package/dist/components/layout.js.map +1 -0
  198. package/dist/components/logo.d.ts +37 -0
  199. package/dist/components/logo.d.ts.map +1 -0
  200. package/dist/components/logo.js +70 -0
  201. package/dist/components/logo.js.map +1 -0
  202. package/dist/components/matrix-rain.d.ts +17 -0
  203. package/dist/components/matrix-rain.d.ts.map +1 -0
  204. package/dist/components/matrix-rain.js +105 -0
  205. package/dist/components/matrix-rain.js.map +1 -0
  206. package/dist/components/purchase-confirmation.d.ts +17 -0
  207. package/dist/components/purchase-confirmation.d.ts.map +1 -0
  208. package/dist/components/purchase-confirmation.js +17 -0
  209. package/dist/components/purchase-confirmation.js.map +1 -0
  210. package/dist/components/search-results.d.ts +30 -0
  211. package/dist/components/search-results.d.ts.map +1 -0
  212. package/dist/components/search-results.js +53 -0
  213. package/dist/components/search-results.js.map +1 -0
  214. package/dist/components/settings-card.d.ts +14 -0
  215. package/dist/components/settings-card.d.ts.map +1 -0
  216. package/dist/components/settings-card.js +40 -0
  217. package/dist/components/settings-card.js.map +1 -0
  218. package/dist/components/spinner-messages.d.ts +19 -0
  219. package/dist/components/spinner-messages.d.ts.map +1 -0
  220. package/dist/components/spinner-messages.js +55 -0
  221. package/dist/components/spinner-messages.js.map +1 -0
  222. package/dist/lib/achievements.d.ts +107 -0
  223. package/dist/lib/achievements.d.ts.map +1 -0
  224. package/dist/lib/achievements.js +341 -0
  225. package/dist/lib/achievements.js.map +1 -0
  226. package/dist/lib/auth.d.ts +45 -0
  227. package/dist/lib/auth.d.ts.map +1 -0
  228. package/dist/lib/auth.js +125 -0
  229. package/dist/lib/auth.js.map +1 -0
  230. package/dist/lib/cart.d.ts +69 -0
  231. package/dist/lib/cart.d.ts.map +1 -0
  232. package/dist/lib/cart.js +131 -0
  233. package/dist/lib/cart.js.map +1 -0
  234. package/dist/lib/config.d.ts +51 -0
  235. package/dist/lib/config.d.ts.map +1 -0
  236. package/dist/lib/config.js +116 -0
  237. package/dist/lib/config.js.map +1 -0
  238. package/dist/lib/dns-validation.d.ts +51 -0
  239. package/dist/lib/dns-validation.d.ts.map +1 -0
  240. package/dist/lib/dns-validation.js +185 -0
  241. package/dist/lib/dns-validation.js.map +1 -0
  242. package/dist/lib/easter-eggs.d.ts +21 -0
  243. package/dist/lib/easter-eggs.d.ts.map +1 -0
  244. package/dist/lib/easter-eggs.js +64 -0
  245. package/dist/lib/easter-eggs.js.map +1 -0
  246. package/dist/lib/error-personality.d.ts +35 -0
  247. package/dist/lib/error-personality.d.ts.map +1 -0
  248. package/dist/lib/error-personality.js +191 -0
  249. package/dist/lib/error-personality.js.map +1 -0
  250. package/dist/lib/errors.d.ts +8 -0
  251. package/dist/lib/errors.d.ts.map +1 -0
  252. package/dist/lib/errors.js +7 -0
  253. package/dist/lib/errors.js.map +1 -0
  254. package/dist/lib/konami.d.ts +51 -0
  255. package/dist/lib/konami.d.ts.map +1 -0
  256. package/dist/lib/konami.js +107 -0
  257. package/dist/lib/konami.js.map +1 -0
  258. package/dist/lib/loading-messages.d.ts +13 -0
  259. package/dist/lib/loading-messages.d.ts.map +1 -0
  260. package/dist/lib/loading-messages.js +13 -0
  261. package/dist/lib/loading-messages.js.map +1 -0
  262. package/dist/lib/namecom-client.d.ts +73 -0
  263. package/dist/lib/namecom-client.d.ts.map +1 -0
  264. package/dist/lib/namecom-client.js +260 -0
  265. package/dist/lib/namecom-client.js.map +1 -0
  266. package/dist/lib/nameserver-presets.d.ts +27 -0
  267. package/dist/lib/nameserver-presets.d.ts.map +1 -0
  268. package/dist/lib/nameserver-presets.js +45 -0
  269. package/dist/lib/nameserver-presets.js.map +1 -0
  270. package/dist/lib/purchase.d.ts +71 -0
  271. package/dist/lib/purchase.d.ts.map +1 -0
  272. package/dist/lib/purchase.js +160 -0
  273. package/dist/lib/purchase.js.map +1 -0
  274. package/dist/lib/schemas.d.ts +1968 -0
  275. package/dist/lib/schemas.d.ts.map +1 -0
  276. package/dist/lib/schemas.js +112 -0
  277. package/dist/lib/schemas.js.map +1 -0
  278. package/dist/lib/team.d.ts +71 -0
  279. package/dist/lib/team.d.ts.map +1 -0
  280. package/dist/lib/team.js +135 -0
  281. package/dist/lib/team.js.map +1 -0
  282. package/dist/lib/theme.d.ts +152 -0
  283. package/dist/lib/theme.d.ts.map +1 -0
  284. package/dist/lib/theme.js +185 -0
  285. package/dist/lib/theme.js.map +1 -0
  286. package/dist/lib/types.d.ts +136 -0
  287. package/dist/lib/types.d.ts.map +1 -0
  288. package/dist/lib/types.js +19 -0
  289. package/dist/lib/types.js.map +1 -0
  290. package/dist/lib/vercel-client.d.ts +110 -0
  291. package/dist/lib/vercel-client.d.ts.map +1 -0
  292. package/dist/lib/vercel-client.js +196 -0
  293. package/dist/lib/vercel-client.js.map +1 -0
  294. package/dist/lib/webhooks.d.ts +83 -0
  295. package/dist/lib/webhooks.d.ts.map +1 -0
  296. package/dist/lib/webhooks.js +195 -0
  297. package/dist/lib/webhooks.js.map +1 -0
  298. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-table.js","sourceRoot":"","sources":["../../src/components/billing-table.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Purchase celebration display.
3
+ *
4
+ * Shows ASCII confetti-style celebration with rotating
5
+ * congratulatory messages after a successful domain purchase.
6
+ */
7
+ /**
8
+ * Get a random congratulatory message.
9
+ */
10
+ export declare function getCongratsMessage(): string;
11
+ interface CelebrationProps {
12
+ domains: string[];
13
+ message?: string;
14
+ showTrophy?: boolean;
15
+ }
16
+ /**
17
+ * Celebration display after successful domain purchase.
18
+ */
19
+ export declare function Celebration({ domains, message, showTrophy }: CelebrationProps): import("react/jsx-runtime").JSX.Element;
20
+ export default Celebration;
21
+ //# sourceMappingURL=celebration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"celebration.d.ts","sourceRoot":"","sources":["../../src/components/celebration.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AA0BD,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAkB,EAAE,EAAE,gBAAgB,2CAuCrF;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Purchase celebration display.
4
+ *
5
+ * Shows ASCII confetti-style celebration with rotating
6
+ * congratulatory messages after a successful domain purchase.
7
+ */
8
+ import { Box, Text } from "ink";
9
+ // ─── Celebration Messages ───────────────────────────────────────────────────
10
+ const CONGRATS_MESSAGES = [
11
+ "Your empire grows.",
12
+ "Another domain conquered.",
13
+ "The internet bows before you.",
14
+ "Welcome to your new corner of the web.",
15
+ "Domain secured. The future is yours.",
16
+ "A fine addition to your collection.",
17
+ "Registered and ready for greatness.",
18
+ "The domain gods smile upon you.",
19
+ "One small purchase for you, one giant leap for your portfolio.",
20
+ "This domain was destined to be yours.",
21
+ ];
22
+ /**
23
+ * Get a random congratulatory message.
24
+ */
25
+ export function getCongratsMessage() {
26
+ return CONGRATS_MESSAGES[Math.floor(Math.random() * CONGRATS_MESSAGES.length)];
27
+ }
28
+ // ─── ASCII Art ──────────────────────────────────────────────────────────────
29
+ const CELEBRATION_ART = `
30
+ * . * . * . *
31
+ . * . * . . *
32
+ * . ✦ . * . ✦ . *
33
+ . * . * . *
34
+ `;
35
+ const TROPHY = `
36
+ ___________
37
+ '._==_==_=_.'
38
+ .-\\: /-.
39
+ | (|:. |) |
40
+ '-|:. |-'
41
+ \\::. /
42
+ '::. .'
43
+ ) (
44
+ _.' '._
45
+ '-------'
46
+ `;
47
+ /**
48
+ * Celebration display after successful domain purchase.
49
+ */
50
+ export function Celebration({ domains, message, showTrophy = false }) {
51
+ const congratsMsg = message ?? getCongratsMessage();
52
+ return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", children: CELEBRATION_ART }), showTrophy && (_jsx(Text, { color: "yellow", children: TROPHY })), _jsx(Box, { borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1, children: _jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { bold: true, color: "green", children: "Purchase Complete!" }), _jsx(Text, { color: "cyan", italic: true, children: congratsMsg })] }) }), domains.map((domain) => (_jsxs(Box, { children: [_jsxs(Text, { color: "green", bold: true, children: ["\u2713", " "] }), _jsx(Text, { bold: true, color: "white", children: domain }), _jsx(Text, { color: "gray", children: " \u2014 registered successfully" })] }, domain)))] }));
53
+ }
54
+ export default Celebration;
55
+ //# sourceMappingURL=celebration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"celebration.js","sourceRoot":"","sources":["../../src/components/celebration.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,+EAA+E;AAE/E,MAAM,iBAAiB,GAAa;IAClC,oBAAoB;IACpB,2BAA2B;IAC3B,+BAA+B;IAC/B,wCAAwC;IACxC,sCAAsC;IACtC,qCAAqC;IACrC,qCAAqC;IACrC,iCAAiC;IACjC,gEAAgE;IAChE,uCAAuC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,+EAA+E;AAE/E,MAAM,eAAe,GAAG;;;;;GAKrB,CAAC;AAEJ,MAAM,MAAM,GAAG;;;;;;;;;;;CAWd,CAAC;AAUF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,GAAG,KAAK,EAAoB;IACpF,MAAM,WAAW,GAAG,OAAO,IAAI,kBAAkB,EAAE,CAAC;IAEpD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAEhC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,eAAe,GAAQ,EAG5C,UAAU,IAAI,CACb,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,MAAM,GAAQ,CACrC,EAGD,KAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YACnE,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,mCAEjB,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,kBACtB,WAAW,GACP,IACH,GACF,EAGL,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,6BACpB,GAAG,IACA,EACP,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,YACrB,MAAM,GACF,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gDAAkC,KAP5C,MAAM,CAQV,CACP,CAAC,IACE,CACP,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ContactForm — interactive form for WHOIS contact information.
3
+ *
4
+ * Collects firstName, lastName, email, phone, address, city,
5
+ * state, zip, country — required for domain registration.
6
+ *
7
+ * Used when contactInfo is missing from ~/.dominion/config.json.
8
+ * Saves to config after completion so subsequent purchases skip the form.
9
+ */
10
+ import type { ContactInfo } from "../lib/types.js";
11
+ export interface ContactFormProps {
12
+ onComplete: (contactInfo: ContactInfo) => void;
13
+ onCancel: () => void;
14
+ existingContact?: Partial<ContactInfo>;
15
+ }
16
+ /**
17
+ * Interactive contact info form.
18
+ * Steps through each field, validates required fields,
19
+ * and returns the completed ContactInfo on submission.
20
+ */
21
+ export declare function ContactForm({ onComplete, onCancel, existingContact }: ContactFormProps): import("react/jsx-runtime").JSX.Element;
22
+ export default ContactForm;
23
+ //# sourceMappingURL=contact-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-form.d.ts","sourceRoot":"","sources":["../../src/components/contact-form.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA0BnD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,gBAAgB,2CA8ItF;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * ContactForm — interactive form for WHOIS contact information.
4
+ *
5
+ * Collects firstName, lastName, email, phone, address, city,
6
+ * state, zip, country — required for domain registration.
7
+ *
8
+ * Used when contactInfo is missing from ~/.dominion/config.json.
9
+ * Saves to config after completion so subsequent purchases skip the form.
10
+ */
11
+ import { Box, Text, useInput } from "ink";
12
+ import { useState } from "react";
13
+ const FORM_FIELDS = [
14
+ { key: "firstName", label: "First Name", placeholder: "John", required: true },
15
+ { key: "lastName", label: "Last Name", placeholder: "Doe", required: true },
16
+ { key: "email", label: "Email", placeholder: "john@example.com", required: true },
17
+ { key: "phone", label: "Phone", placeholder: "+1.5551234567", required: true },
18
+ { key: "address1", label: "Address", placeholder: "123 Main St", required: true },
19
+ { key: "address2", label: "Address Line 2", placeholder: "Suite 100", required: false },
20
+ { key: "city", label: "City", placeholder: "San Francisco", required: true },
21
+ { key: "state", label: "State/Province", placeholder: "CA", required: true },
22
+ { key: "zip", label: "ZIP/Postal Code", placeholder: "94105", required: true },
23
+ { key: "country", label: "Country Code", placeholder: "US", required: true },
24
+ ];
25
+ /**
26
+ * Interactive contact info form.
27
+ * Steps through each field, validates required fields,
28
+ * and returns the completed ContactInfo on submission.
29
+ */
30
+ export function ContactForm({ onComplete, onCancel, existingContact }) {
31
+ const [currentField, setCurrentField] = useState(0);
32
+ const [values, setValues] = useState(() => {
33
+ // Pre-fill from existing contact if available
34
+ const initial = {};
35
+ if (existingContact) {
36
+ for (const field of FORM_FIELDS) {
37
+ const existing = existingContact[field.key];
38
+ if (existing) {
39
+ initial[field.key] = existing;
40
+ }
41
+ }
42
+ }
43
+ return initial;
44
+ });
45
+ const [currentInput, setCurrentInput] = useState(() => {
46
+ if (existingContact) {
47
+ const firstField = FORM_FIELDS[0];
48
+ return existingContact[firstField.key] ?? "";
49
+ }
50
+ return "";
51
+ });
52
+ const [error, setError] = useState("");
53
+ const field = FORM_FIELDS[currentField];
54
+ const isLastField = currentField === FORM_FIELDS.length - 1;
55
+ useInput((input, key) => {
56
+ if (key.escape) {
57
+ onCancel();
58
+ return;
59
+ }
60
+ if (key.return) {
61
+ const trimmed = currentInput.trim();
62
+ // Validate required fields
63
+ if (field.required && trimmed === "") {
64
+ setError(`${field.label} is required`);
65
+ return;
66
+ }
67
+ // Save current field value
68
+ const newValues = { ...values, [field.key]: trimmed };
69
+ setValues(newValues);
70
+ setError("");
71
+ if (isLastField) {
72
+ // Build ContactInfo and submit
73
+ const contactInfo = {
74
+ firstName: newValues.firstName ?? "",
75
+ lastName: newValues.lastName ?? "",
76
+ email: newValues.email ?? "",
77
+ phone: newValues.phone ?? "",
78
+ address1: newValues.address1 ?? "",
79
+ address2: newValues.address2 || undefined,
80
+ city: newValues.city ?? "",
81
+ state: newValues.state ?? "",
82
+ zip: newValues.zip ?? "",
83
+ country: newValues.country ?? "",
84
+ };
85
+ onComplete(contactInfo);
86
+ }
87
+ else {
88
+ // Move to next field
89
+ const nextField = FORM_FIELDS[currentField + 1];
90
+ setCurrentField(currentField + 1);
91
+ setCurrentInput(newValues[nextField.key] ?? "");
92
+ }
93
+ return;
94
+ }
95
+ if (key.backspace || key.delete) {
96
+ setCurrentInput((prev) => prev.slice(0, -1));
97
+ setError("");
98
+ return;
99
+ }
100
+ // Regular character input
101
+ if (input && !key.ctrl && !key.meta) {
102
+ setCurrentInput((prev) => prev + input);
103
+ setError("");
104
+ }
105
+ });
106
+ return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Contact Information" }), _jsx(Text, { color: "gray", children: "Required for domain registration (WHOIS). Saved for future purchases." }), _jsx(Box, { children: _jsxs(Text, { color: "gray", children: ["Field ", currentField + 1, " of ", FORM_FIELDS.length] }) }), FORM_FIELDS.slice(0, currentField).map((f) => (_jsxs(Box, { children: [_jsx(Box, { width: 20, children: _jsxs(Text, { color: "gray", children: [f.label, ":"] }) }), _jsx(Text, { color: "green", children: values[f.key] || "-" })] }, f.key))), _jsxs(Box, { children: [_jsx(Box, { width: 20, children: _jsxs(Text, { bold: true, color: "cyan", children: [field.label, field.required ? "*" : "", ":"] }) }), _jsx(Text, { color: "white", children: currentInput }), _jsx(Text, { color: "cyan", children: "|" })] }), currentInput === "" && (_jsxs(Text, { color: "gray", dimColor: true, children: ["e.g. ", field.placeholder] })), error && _jsx(Text, { color: "red", children: error }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", children: ["Press ", _jsx(Text, { bold: true, color: "white", children: "Enter" }), " to continue", " · ", _jsx(Text, { bold: true, color: "white", children: "Esc" }), " to cancel"] }) })] }));
107
+ }
108
+ export default ContactForm;
109
+ //# sourceMappingURL=contact-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-form.js","sourceRoot":"","sources":["../../src/components/contact-form.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * DnsTable — formatted table display for DNS records.
3
+ *
4
+ * Shows record ID, type, host, answer/value, TTL, and priority (for MX/SRV).
5
+ * Used by the dns list command and after add/remove operations.
6
+ */
7
+ import type { DnsRecord } from "../lib/types.js";
8
+ export interface DnsTableProps {
9
+ records: DnsRecord[];
10
+ domain: string;
11
+ }
12
+ export declare function DnsTable({ records, domain }: DnsTableProps): import("react/jsx-runtime").JSX.Element;
13
+ export default DnsTable;
14
+ //# sourceMappingURL=dns-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns-table.d.ts","sourceRoot":"","sources":["../../src/components/dns-table.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAuDD,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,2CA8F1D;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * DnsTable — formatted table display for DNS records.
4
+ *
5
+ * Shows record ID, type, host, answer/value, TTL, and priority (for MX/SRV).
6
+ * Used by the dns list command and after add/remove operations.
7
+ */
8
+ import { Box, Text } from "ink";
9
+ /**
10
+ * Format TTL for human-readable display.
11
+ */
12
+ function formatTtl(ttl) {
13
+ if (ttl >= 86400) {
14
+ const days = Math.floor(ttl / 86400);
15
+ return `${days}d`;
16
+ }
17
+ if (ttl >= 3600) {
18
+ const hours = Math.floor(ttl / 3600);
19
+ return `${hours}h`;
20
+ }
21
+ if (ttl >= 60) {
22
+ const minutes = Math.floor(ttl / 60);
23
+ return `${minutes}m`;
24
+ }
25
+ return `${ttl}s`;
26
+ }
27
+ /**
28
+ * Get display color for a DNS record type.
29
+ */
30
+ function getTypeColor(type) {
31
+ switch (type) {
32
+ case "A":
33
+ case "AAAA":
34
+ return "green";
35
+ case "CNAME":
36
+ case "ANAME":
37
+ return "cyan";
38
+ case "MX":
39
+ return "magenta";
40
+ case "TXT":
41
+ return "yellow";
42
+ case "NS":
43
+ return "blue";
44
+ case "SRV":
45
+ return "red";
46
+ case "URL":
47
+ return "white";
48
+ default:
49
+ return "gray";
50
+ }
51
+ }
52
+ /**
53
+ * Truncate long strings for table display.
54
+ */
55
+ function truncate(str, maxLen) {
56
+ if (str.length <= maxLen)
57
+ return str;
58
+ return str.slice(0, maxLen - 3) + "...";
59
+ }
60
+ export function DnsTable({ records, domain }) {
61
+ if (records.length === 0) {
62
+ return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Text, { color: "yellow", children: ["No DNS records found for ", domain, "."] }), _jsxs(Text, { color: "gray", children: ["Add a record with", " ", _jsxs(Text, { bold: true, color: "white", children: ["dominion dns ", domain, " add ", "<type>", " ", "<name>", " ", "<value>"] })] })] }));
63
+ }
64
+ // Check if any records have priority
65
+ const hasPriority = records.some((r) => r.priority !== undefined && r.priority !== null);
66
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Box, { width: 8, children: _jsx(Text, { bold: true, color: "gray", children: "ID" }) }), _jsx(Box, { width: 8, children: _jsx(Text, { bold: true, color: "gray", children: "Type" }) }), _jsx(Box, { width: 24, children: _jsx(Text, { bold: true, color: "gray", children: "Host" }) }), _jsx(Box, { width: 36, children: _jsx(Text, { bold: true, color: "gray", children: "Value" }) }), _jsx(Box, { width: 8, children: _jsx(Text, { bold: true, color: "gray", children: "TTL" }) }), hasPriority && (_jsx(Box, { width: 10, children: _jsx(Text, { bold: true, color: "gray", children: "Priority" }) }))] }), _jsx(Text, { color: "gray", children: "─".repeat(hasPriority ? 94 : 84) }), records.map((record) => (_jsxs(Box, { children: [_jsx(Box, { width: 8, children: _jsx(Text, { color: "gray", children: record.id }) }), _jsx(Box, { width: 8, children: _jsx(Text, { bold: true, color: getTypeColor(record.type), children: record.type }) }), _jsx(Box, { width: 24, children: _jsx(Text, { color: "white", children: truncate(record.host || "@", 22) }) }), _jsx(Box, { width: 36, children: _jsx(Text, { color: "white", children: truncate(record.answer, 34) }) }), _jsx(Box, { width: 8, children: _jsx(Text, { color: "gray", children: formatTtl(record.ttl) }) }), hasPriority && (_jsx(Box, { width: 10, children: _jsx(Text, { color: "gray", children: record.priority !== undefined && record.priority !== null
67
+ ? record.priority
68
+ : "—" }) }))] }, record.id))), _jsx(Text, { color: "gray", children: "─".repeat(hasPriority ? 94 : 84) }), _jsx(Box, { children: _jsxs(Text, { color: "gray", children: [records.length, " record", records.length !== 1 ? "s" : "", " for ", domain] }) })] }));
69
+ }
70
+ export default DnsTable;
71
+ //# sourceMappingURL=dns-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns-table.js","sourceRoot":"","sources":["../../src/components/dns-table.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAQhC;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;QACrC,OAAO,GAAG,IAAI,GAAG,CAAC;IACpB,CAAC;IACD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QACrC,OAAO,GAAG,KAAK,GAAG,CAAC;IACrB,CAAC;IACD,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACrC,OAAO,GAAG,OAAO,GAAG,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG,CAAC;QACT,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACV,OAAO,MAAM,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,SAAS,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAW,EAAE,MAAc;IAC3C,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAiB;IACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAChC,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,0CAA2B,MAAM,SAAS,EAC9D,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kCACE,GAAG,EACrB,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,8BACR,MAAM,WAAO,QAAQ,OAAG,QAAQ,OAAG,SAAS,IACrD,IACF,IACH,CACP,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CACvD,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAEzB,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,mBAAU,GAC7B,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,qBAAY,GAC/B,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,qBAAY,GAC/B,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,sBAAa,GAChC,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,oBAAW,GAC9B,EACL,WAAW,IAAI,CACd,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,yBAAgB,GACnC,CACP,IACG,EAGN,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YACf,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC7B,EAGN,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,MAAM,CAAC,EAAE,GAAQ,GACjC,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YACxC,MAAM,CAAC,IAAI,GACP,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,GAAQ,GACzD,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAQ,GACpD,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAQ,GAC7C,EACL,WAAW,IAAI,CACd,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YACf,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;gCACxD,CAAC,CAAC,MAAM,CAAC,QAAQ;gCACjB,CAAC,CAAC,GAAG,GACF,GACH,CACP,KA1BO,MAAM,CAAC,EAAE,CA2Bb,CACP,CAAC,EAGF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YACf,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC7B,EACP,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aACf,OAAO,CAAC,MAAM,aAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAO,MAAM,IAC/D,GACH,IACF,CACP,CAAC;AACJ,CAAC;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * DomainCard — boxen-style card layout for domain detail view.
3
+ *
4
+ * Shows full domain information with clear section headers:
5
+ * domain name, nameservers, registration/expiry dates, auto-renew,
6
+ * lock, privacy, renewal price, and contacts (name + email only).
7
+ */
8
+ import type { Domain } from "../lib/types.js";
9
+ export interface DomainCardProps {
10
+ domain: Domain;
11
+ }
12
+ export declare function DomainCard({ domain }: DomainCardProps): import("react/jsx-runtime").JSX.Element;
13
+ export default DomainCard;
14
+ //# sourceMappingURL=domain-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-card.d.ts","sourceRoot":"","sources":["../../src/components/domain-card.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAI9C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAgCD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,2CA0FrD;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * DomainCard — boxen-style card layout for domain detail view.
4
+ *
5
+ * Shows full domain information with clear section headers:
6
+ * domain name, nameservers, registration/expiry dates, auto-renew,
7
+ * lock, privacy, renewal price, and contacts (name + email only).
8
+ */
9
+ import { Box, Text } from "ink";
10
+ import { getDomainStatus, getStatusColor, getStatusLabel, formatExpiryDate } from "./domain-table.js";
11
+ import { formatPrice } from "./search-results.js";
12
+ /**
13
+ * Format a registration date for display.
14
+ */
15
+ function formatDate(dateStr) {
16
+ try {
17
+ const date = new Date(dateStr);
18
+ return date.toLocaleDateString("en-US", {
19
+ year: "numeric",
20
+ month: "long",
21
+ day: "numeric",
22
+ });
23
+ }
24
+ catch {
25
+ return dateStr;
26
+ }
27
+ }
28
+ /**
29
+ * A labeled row in the card (key: value layout).
30
+ */
31
+ function CardRow({ label, children }) {
32
+ return (_jsxs(Box, { children: [_jsx(Box, { width: 20, children: _jsx(Text, { color: "gray", children: label }) }), children] }));
33
+ }
34
+ export function DomainCard({ domain }) {
35
+ const status = getDomainStatus(domain.expireDate);
36
+ const statusColor = getStatusColor(status);
37
+ const statusLabel = getStatusLabel(status);
38
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: domain.domainName }), _jsx(Text, { color: "gray", children: " \u2014 " }), _jsx(Text, { color: statusColor, children: statusLabel })] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "General" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(CardRow, { label: "Registration Date:", children: _jsx(Text, { color: "white", children: formatDate(domain.createDate) }) }), _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) }) }), _jsx(CardRow, { label: "Auto-Renew:", children: _jsx(Text, { color: domain.autoRenewEnabled ? "green" : "yellow", children: domain.autoRenewEnabled ? "Enabled" : "Disabled" }) }), _jsx(CardRow, { label: "Lock:", children: _jsx(Text, { color: domain.locked ? "green" : "yellow", children: domain.locked ? "Locked (transfer protected)" : "Unlocked" }) }), _jsx(CardRow, { label: "Privacy:", children: _jsx(Text, { color: domain.privacyEnabled ? "green" : "yellow", children: domain.privacyEnabled ? "WHOIS privacy enabled" : "WHOIS privacy disabled" }) })] })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Nameservers" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: domain.nameservers.length > 0 ? (domain.nameservers.map((ns, i) => (_jsxs(Box, { children: [_jsx(Box, { width: 20, 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" }) })) })] }), domain.contacts?.registrant && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, color: "white", underline: true, children: "Contact" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(CardRow, { label: "Name:", children: _jsxs(Text, { color: "white", children: [domain.contacts.registrant.firstName, " ", domain.contacts.registrant.lastName] }) }), _jsx(CardRow, { label: "Email:", children: _jsx(Text, { color: "white", children: domain.contacts.registrant.email }) })] })] }))] }));
39
+ }
40
+ export default DomainCard;
41
+ //# sourceMappingURL=domain-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-card.js","sourceRoot":"","sources":["../../src/components/domain-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * DomainTable — formatted table display for domain listing.
3
+ *
4
+ * Shows domain name, status (active/expired), expiry date, auto-renew,
5
+ * and lock status. Highlights expiring domains in yellow and expired in red,
6
+ * matching the web app's REMINDER_THRESHOLDS_DAYS pattern.
7
+ */
8
+ import type { Domain } from "../lib/types.js";
9
+ export interface DomainTableProps {
10
+ domains: Domain[];
11
+ }
12
+ /**
13
+ * Determine the status of a domain based on its expiry date.
14
+ */
15
+ export declare function getDomainStatus(expireDate: string): "active" | "expiring" | "expired";
16
+ /**
17
+ * Format an expiry date for table display.
18
+ */
19
+ export declare function formatExpiryDate(dateStr: string): string;
20
+ /**
21
+ * Get the display color for a domain status.
22
+ */
23
+ export declare function getStatusColor(status: "active" | "expiring" | "expired"): string;
24
+ /**
25
+ * Get the display label for a domain status.
26
+ */
27
+ export declare function getStatusLabel(status: "active" | "expiring" | "expired"): string;
28
+ export declare function DomainTable({ domains }: DomainTableProps): import("react/jsx-runtime").JSX.Element;
29
+ export default DomainTable;
30
+ //# sourceMappingURL=domain-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-table.d.ts","sourceRoot":"","sources":["../../src/components/domain-table.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAKD;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAiBrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWxD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAShF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAShF;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CA2FxD;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * DomainTable — formatted table display for domain listing.
4
+ *
5
+ * Shows domain name, status (active/expired), expiry date, auto-renew,
6
+ * and lock status. Highlights expiring domains in yellow and expired in red,
7
+ * matching the web app's REMINDER_THRESHOLDS_DAYS pattern.
8
+ */
9
+ import { Box, Text } from "ink";
10
+ /** Number of days before expiry to show a warning. */
11
+ const EXPIRY_WARNING_DAYS = 30;
12
+ /**
13
+ * Determine the status of a domain based on its expiry date.
14
+ */
15
+ export function getDomainStatus(expireDate) {
16
+ const now = new Date();
17
+ const expiry = new Date(expireDate);
18
+ if (expiry <= now) {
19
+ return "expired";
20
+ }
21
+ const daysUntilExpiry = Math.ceil((expiry.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
22
+ if (daysUntilExpiry <= EXPIRY_WARNING_DAYS) {
23
+ return "expiring";
24
+ }
25
+ return "active";
26
+ }
27
+ /**
28
+ * Format an expiry date for table display.
29
+ */
30
+ export function formatExpiryDate(dateStr) {
31
+ try {
32
+ const date = new Date(dateStr);
33
+ return date.toLocaleDateString("en-US", {
34
+ year: "numeric",
35
+ month: "short",
36
+ day: "numeric",
37
+ });
38
+ }
39
+ catch {
40
+ return dateStr;
41
+ }
42
+ }
43
+ /**
44
+ * Get the display color for a domain status.
45
+ */
46
+ export function getStatusColor(status) {
47
+ switch (status) {
48
+ case "active":
49
+ return "green";
50
+ case "expiring":
51
+ return "yellow";
52
+ case "expired":
53
+ return "red";
54
+ }
55
+ }
56
+ /**
57
+ * Get the display label for a domain status.
58
+ */
59
+ export function getStatusLabel(status) {
60
+ switch (status) {
61
+ case "active":
62
+ return "Active";
63
+ case "expiring":
64
+ return "Expiring";
65
+ case "expired":
66
+ return "Expired";
67
+ }
68
+ }
69
+ export function DomainTable({ domains }) {
70
+ if (domains.length === 0) {
71
+ return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { color: "yellow", children: "No domains found." }), _jsxs(Text, { color: "gray", children: ["Search for your first domain with", " ", _jsxs(Text, { bold: true, color: "white", children: ["dominion search ", "<name>"] })] })] }));
72
+ }
73
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { 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: "Status" }) }), _jsx(Box, { width: 18, children: _jsx(Text, { bold: true, color: "gray", children: "Expires" }) }), _jsx(Box, { width: 14, children: _jsx(Text, { bold: true, color: "gray", children: "Auto-Renew" }) }), _jsx(Box, { width: 10, children: _jsx(Text, { bold: true, color: "gray", children: "Lock" }) })] }), _jsx(Text, { color: "gray", children: "─".repeat(89) }), domains.map((domain) => {
74
+ const status = getDomainStatus(domain.expireDate);
75
+ const statusColor = getStatusColor(status);
76
+ const statusLabel = getStatusLabel(status);
77
+ return (_jsxs(Box, { children: [_jsx(Box, { width: 35, children: _jsx(Text, { bold: true, color: statusColor === "red" ? "red" : "white", children: domain.domainName }) }), _jsx(Box, { width: 12, children: _jsx(Text, { color: statusColor, children: statusLabel }) }), _jsx(Box, { width: 18, children: _jsx(Text, { color: statusColor === "red" ? "red" : statusColor === "yellow" ? "yellow" : "white", children: formatExpiryDate(domain.expireDate) }) }), _jsx(Box, { width: 14, children: _jsx(Text, { color: domain.autoRenewEnabled ? "green" : "gray", children: domain.autoRenewEnabled ? "On" : "Off" }) }), _jsx(Box, { width: 10, children: _jsx(Text, { color: domain.locked ? "green" : "gray", children: domain.locked ? "Locked" : "Unlocked" }) })] }, domain.domainName));
78
+ }), _jsx(Text, { color: "gray", children: "─".repeat(89) }), _jsx(Box, { children: _jsxs(Text, { color: "gray", children: [domains.length, " domain", domains.length !== 1 ? "s" : "", " · ", domains.filter((d) => getDomainStatus(d.expireDate) === "active").length, " active", (() => {
79
+ const expiringCount = domains.filter((d) => getDomainStatus(d.expireDate) === "expiring").length;
80
+ return expiringCount > 0 ? ` · ${expiringCount} expiring soon` : "";
81
+ })(), (() => {
82
+ const expiredCount = domains.filter((d) => getDomainStatus(d.expireDate) === "expired").length;
83
+ return expiredCount > 0 ? ` · ${expiredCount} expired` : "";
84
+ })()] }) })] }));
85
+ }
86
+ export default DomainTable;
87
+ //# sourceMappingURL=domain-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-table.js","sourceRoot":"","sources":["../../src/components/domain-table.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * ErrorDisplay — personality-driven error display component.
3
+ *
4
+ * Renders DomainError instances with character messages, ASCII art,
5
+ * and helpful suggestions. Falls back gracefully for generic errors.
6
+ *
7
+ * Respects --quiet mode (shows minimal output) and --no-color (plain text).
8
+ */
9
+ import { DomainError } from "../lib/types.js";
10
+ export interface ErrorDisplayProps {
11
+ /** The error to display — can be a DomainError or generic Error */
12
+ error: DomainError | Error | string;
13
+ /** Override the title (default: derives from error code) */
14
+ title?: string;
15
+ /** Show ASCII art (default: true in normal mode, false in quiet mode) */
16
+ showArt?: boolean;
17
+ /** Show suggestion text (default: true) */
18
+ showSuggestion?: boolean;
19
+ }
20
+ /**
21
+ * Rich error display with personality, ASCII art, and suggestions.
22
+ */
23
+ export declare function ErrorDisplay({ error, title, showArt, showSuggestion, }: ErrorDisplayProps): import("react/jsx-runtime").JSX.Element;
24
+ export default ErrorDisplay;
25
+ //# sourceMappingURL=error-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-display.d.ts","sourceRoot":"","sources":["../../src/components/error-display.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9C,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,KAAK,EAAE,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,OAAc,EACd,cAAqB,GACtB,EAAE,iBAAiB,2CAkEnB;AA0BD,eAAe,YAAY,CAAC"}