@kuckit/cli-auth-module 3.0.0 → 3.0.3

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.
@@ -45,19 +45,19 @@ function ActivatePage() {
45
45
  }
46
46
  };
47
47
  return /* @__PURE__ */ jsx("div", {
48
- className: "min-h-screen bg-[#0a0a0b] flex items-center justify-center p-6",
48
+ className: "min-h-screen bg-background flex items-center justify-center p-6",
49
49
  children: /* @__PURE__ */ jsx("div", {
50
50
  className: "w-full max-w-md",
51
51
  children: /* @__PURE__ */ jsxs("div", {
52
- className: "bg-white/5 border border-white/10 rounded-2xl p-8",
52
+ className: "bg-card border border-border rounded-2xl p-8",
53
53
  children: [
54
54
  /* @__PURE__ */ jsxs("div", {
55
55
  className: "text-center mb-8",
56
56
  children: [
57
57
  /* @__PURE__ */ jsx("div", {
58
- className: "w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-400 to-teal-500 flex items-center justify-center mx-auto mb-4",
58
+ className: "w-12 h-12 rounded-xl bg-primary flex items-center justify-center mx-auto mb-4",
59
59
  children: /* @__PURE__ */ jsx("svg", {
60
- className: "w-6 h-6 text-black",
60
+ className: "w-6 h-6 text-primary-foreground",
61
61
  fill: "none",
62
62
  stroke: "currentColor",
63
63
  viewBox: "0 0 24 24",
@@ -70,11 +70,11 @@ function ActivatePage() {
70
70
  })
71
71
  }),
72
72
  /* @__PURE__ */ jsx("h1", {
73
- className: "text-2xl font-bold text-white mb-2",
73
+ className: "text-2xl font-bold text-foreground mb-2",
74
74
  children: "Activate CLI Access"
75
75
  }),
76
76
  /* @__PURE__ */ jsx("p", {
77
- className: "text-white/60 text-sm",
77
+ className: "text-muted-foreground text-sm",
78
78
  children: "Enter the code displayed in your terminal to authorize CLI access"
79
79
  })
80
80
  ]
@@ -83,9 +83,9 @@ function ActivatePage() {
83
83
  className: "text-center",
84
84
  children: [
85
85
  /* @__PURE__ */ jsx("div", {
86
- className: "w-16 h-16 rounded-full bg-emerald-500/20 flex items-center justify-center mx-auto mb-4",
86
+ className: "w-16 h-16 rounded-full bg-[hsl(var(--status-success)/0.2)] flex items-center justify-center mx-auto mb-4",
87
87
  children: /* @__PURE__ */ jsx("svg", {
88
- className: "w-8 h-8 text-emerald-400",
88
+ className: "w-8 h-8 text-[hsl(var(--status-success))]",
89
89
  fill: "none",
90
90
  stroke: "currentColor",
91
91
  viewBox: "0 0 24 24",
@@ -98,11 +98,11 @@ function ActivatePage() {
98
98
  })
99
99
  }),
100
100
  /* @__PURE__ */ jsx("p", {
101
- className: "text-emerald-400 font-medium mb-2",
101
+ className: "text-[hsl(var(--status-success))] font-medium mb-2",
102
102
  children: "Success!"
103
103
  }),
104
104
  /* @__PURE__ */ jsx("p", {
105
- className: "text-white/60 text-sm",
105
+ className: "text-muted-foreground text-sm",
106
106
  children: message
107
107
  })
108
108
  ]
@@ -113,7 +113,7 @@ function ActivatePage() {
113
113
  className: "mb-6",
114
114
  children: [/* @__PURE__ */ jsx("label", {
115
115
  htmlFor: "userCode",
116
- className: "block text-sm font-medium text-white/80 mb-2",
116
+ className: "block text-sm font-medium text-foreground mb-2",
117
117
  children: "Activation Code"
118
118
  }), /* @__PURE__ */ jsx("input", {
119
119
  id: "userCode",
@@ -123,28 +123,28 @@ function ActivatePage() {
123
123
  placeholder: "XXXX-XXXX",
124
124
  maxLength: 9,
125
125
  disabled: state === "loading",
126
- className: "w-full px-4 py-3 rounded-xl bg-white/5 border border-white/10 text-white text-center text-2xl font-mono tracking-widest placeholder:text-white/20 focus:outline-none focus:border-emerald-500/50 focus:ring-2 focus:ring-emerald-500/20 transition-all disabled:opacity-50",
126
+ className: "w-full px-4 py-3 rounded-xl bg-muted border border-border text-foreground text-center text-2xl font-mono tracking-widest placeholder:text-muted-foreground/50 focus:outline-none focus:border-primary/50 focus:ring-2 focus:ring-primary/20 transition-all disabled:opacity-50",
127
127
  autoComplete: "off",
128
128
  autoFocus: true
129
129
  })]
130
130
  }),
131
131
  state === "error" && message && /* @__PURE__ */ jsx("div", {
132
- className: "mb-4 p-3 rounded-lg bg-red-500/10 border border-red-500/20",
132
+ className: "mb-4 p-3 rounded-lg bg-destructive/10 border border-destructive/20",
133
133
  children: /* @__PURE__ */ jsx("p", {
134
- className: "text-red-400 text-sm text-center",
134
+ className: "text-destructive text-sm text-center",
135
135
  children: message
136
136
  })
137
137
  }),
138
138
  /* @__PURE__ */ jsx("button", {
139
139
  type: "submit",
140
140
  disabled: state === "loading" || userCode.replace(/-/g, "").length !== 8,
141
- className: "w-full px-6 py-3 rounded-xl bg-gradient-to-r from-emerald-500 to-teal-500 font-medium text-black hover:from-emerald-400 hover:to-teal-400 transition-all disabled:opacity-50 disabled:cursor-not-allowed",
141
+ className: "w-full px-6 py-3 rounded-xl bg-primary font-medium text-primary-foreground hover:bg-primary/90 transition-all disabled:opacity-50 disabled:cursor-not-allowed",
142
142
  children: state === "loading" ? "Authorizing..." : "Authorize Device"
143
143
  })
144
144
  ]
145
145
  }),
146
146
  /* @__PURE__ */ jsx("p", {
147
- className: "text-white/40 text-xs text-center mt-6",
147
+ className: "text-muted-foreground/60 text-xs text-center mt-6",
148
148
  children: "This will grant CLI access to your account for 90 days"
149
149
  })
150
150
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["error: unknown"],"sources":["../../src/client/pages/ActivatePage.tsx","../../src/client/index.ts"],"sourcesContent":["'use client'\n\nimport { useState, type FormEvent, type ChangeEvent } from 'react'\nimport { useRpc } from '@kuckit/sdk-react'\n\ntype FormState = 'idle' | 'loading' | 'success' | 'error'\n\ninterface CliDeviceRouter {\n\tcliDevice: {\n\t\tapprove: (input: { userCode: string }) => Promise<{ success: boolean; message?: string }>\n\t}\n}\n\nfunction formatUserCode(value: string): string {\n\tconst cleaned = value.toUpperCase().replace(/[^A-Z0-9]/g, '')\n\tif (cleaned.length <= 4) {\n\t\treturn cleaned\n\t}\n\treturn `${cleaned.slice(0, 4)}-${cleaned.slice(4, 8)}`\n}\n\nexport function ActivatePage() {\n\tconst rpc = useRpc<CliDeviceRouter>()\n\tconst [userCode, setUserCode] = useState('')\n\tconst [state, setState] = useState<FormState>('idle')\n\tconst [message, setMessage] = useState('')\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst formatted = formatUserCode(e.target.value)\n\t\tsetUserCode(formatted)\n\t}\n\n\tconst handleSubmit = async (e: FormEvent) => {\n\t\te.preventDefault()\n\n\t\tconst cleanCode = userCode.replace(/-/g, '')\n\t\tif (cleanCode.length !== 8) {\n\t\t\tsetState('error')\n\t\t\tsetMessage('Please enter a valid 8-character code')\n\t\t\treturn\n\t\t}\n\n\t\tsetState('loading')\n\t\tsetMessage('')\n\n\t\ttry {\n\t\t\tconst result = await rpc.cliDevice.approve({ userCode })\n\n\t\t\tif (result.success) {\n\t\t\t\tsetState('success')\n\t\t\t\tsetMessage(\n\t\t\t\t\t'Device authorized successfully! You can close this window and return to your terminal.'\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tsetState('error')\n\t\t\t\tsetMessage(\n\t\t\t\t\tresult.message || 'Failed to authorize device. Please check the code and try again.'\n\t\t\t\t)\n\t\t\t}\n\t\t} catch (error: unknown) {\n\t\t\tconsole.error('Device activation error:', error)\n\t\t\tif (error instanceof Error && error.message.includes('401')) {\n\t\t\t\twindow.location.href = '/sign-in?redirect=/cli/activate'\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsetState('error')\n\t\t\tsetMessage('Network error. Please try again.')\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className=\"min-h-screen bg-[#0a0a0b] flex items-center justify-center p-6\">\n\t\t\t<div className=\"w-full max-w-md\">\n\t\t\t\t<div className=\"bg-white/5 border border-white/10 rounded-2xl p-8\">\n\t\t\t\t\t<div className=\"text-center mb-8\">\n\t\t\t\t\t\t<div className=\"w-12 h-12 rounded-xl bg-gradient-to-br from-emerald-400 to-teal-500 flex items-center justify-center mx-auto mb-4\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclassName=\"w-6 h-6 text-black\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\t\tstrokeWidth={2}\n\t\t\t\t\t\t\t\t\td=\"M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h1 className=\"text-2xl font-bold text-white mb-2\">Activate CLI Access</h1>\n\t\t\t\t\t\t<p className=\"text-white/60 text-sm\">\n\t\t\t\t\t\t\tEnter the code displayed in your terminal to authorize CLI access\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{state === 'success' ? (\n\t\t\t\t\t\t<div className=\"text-center\">\n\t\t\t\t\t\t\t<div className=\"w-16 h-16 rounded-full bg-emerald-500/20 flex items-center justify-center mx-auto mb-4\">\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\tclassName=\"w-8 h-8 text-emerald-400\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\tstrokeWidth={2}\n\t\t\t\t\t\t\t\t\t\td=\"M5 13l4 4L19 7\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p className=\"text-emerald-400 font-medium mb-2\">Success!</p>\n\t\t\t\t\t\t\t<p className=\"text-white/60 text-sm\">{message}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t\t\t\t<div className=\"mb-6\">\n\t\t\t\t\t\t\t\t<label htmlFor=\"userCode\" className=\"block text-sm font-medium text-white/80 mb-2\">\n\t\t\t\t\t\t\t\t\tActivation Code\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tid=\"userCode\"\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tvalue={userCode}\n\t\t\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t\t\t\tplaceholder=\"XXXX-XXXX\"\n\t\t\t\t\t\t\t\t\tmaxLength={9}\n\t\t\t\t\t\t\t\t\tdisabled={state === 'loading'}\n\t\t\t\t\t\t\t\t\tclassName=\"w-full px-4 py-3 rounded-xl bg-white/5 border border-white/10 text-white text-center text-2xl font-mono tracking-widest placeholder:text-white/20 focus:outline-none focus:border-emerald-500/50 focus:ring-2 focus:ring-emerald-500/20 transition-all disabled:opacity-50\"\n\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{state === 'error' && message && (\n\t\t\t\t\t\t\t\t<div className=\"mb-4 p-3 rounded-lg bg-red-500/10 border border-red-500/20\">\n\t\t\t\t\t\t\t\t\t<p className=\"text-red-400 text-sm text-center\">{message}</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tdisabled={state === 'loading' || userCode.replace(/-/g, '').length !== 8}\n\t\t\t\t\t\t\t\tclassName=\"w-full px-6 py-3 rounded-xl bg-gradient-to-r from-emerald-500 to-teal-500 font-medium text-black hover:from-emerald-400 hover:to-teal-400 transition-all disabled:opacity-50 disabled:cursor-not-allowed\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{state === 'loading' ? 'Authorizing...' : 'Authorize Device'}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<p className=\"text-white/40 text-xs text-center mt-6\">\n\t\t\t\t\t\tThis will grant CLI access to your account for 90 days\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import { defineKuckitClientModule, type KuckitClientModuleContext } from '@kuckit/sdk-react'\nimport { ActivatePage } from './pages/ActivatePage'\n\nexport const kuckitClientModule = defineKuckitClientModule({\n\tid: 'kuckit.cli-auth',\n\tdisplayName: 'CLI Authentication',\n\tversion: '0.1.0',\n\n\tregister(ctx: KuckitClientModuleContext) {\n\t\tctx.registerComponent('ActivatePage', ActivatePage)\n\n\t\tctx.addRoute({\n\t\t\tid: 'cli-activate',\n\t\t\tpath: '/cli/activate',\n\t\t\tcomponent: ActivatePage,\n\t\t\tmeta: {\n\t\t\t\ttitle: 'Activate CLI Access',\n\t\t\t\trequiresAuth: true,\n\t\t\t},\n\t\t})\n\t},\n})\n\nexport { ActivatePage } from './pages/ActivatePage'\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["error: unknown"],"sources":["../../src/client/pages/ActivatePage.tsx","../../src/client/index.ts"],"sourcesContent":["'use client'\n\nimport { useState, type FormEvent, type ChangeEvent } from 'react'\nimport { useRpc } from '@kuckit/sdk-react'\n\ntype FormState = 'idle' | 'loading' | 'success' | 'error'\n\ninterface CliDeviceRouter {\n\tcliDevice: {\n\t\tapprove: (input: { userCode: string }) => Promise<{ success: boolean; message?: string }>\n\t}\n}\n\nfunction formatUserCode(value: string): string {\n\tconst cleaned = value.toUpperCase().replace(/[^A-Z0-9]/g, '')\n\tif (cleaned.length <= 4) {\n\t\treturn cleaned\n\t}\n\treturn `${cleaned.slice(0, 4)}-${cleaned.slice(4, 8)}`\n}\n\nexport function ActivatePage() {\n\tconst rpc = useRpc<CliDeviceRouter>()\n\tconst [userCode, setUserCode] = useState('')\n\tconst [state, setState] = useState<FormState>('idle')\n\tconst [message, setMessage] = useState('')\n\n\tconst handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n\t\tconst formatted = formatUserCode(e.target.value)\n\t\tsetUserCode(formatted)\n\t}\n\n\tconst handleSubmit = async (e: FormEvent) => {\n\t\te.preventDefault()\n\n\t\tconst cleanCode = userCode.replace(/-/g, '')\n\t\tif (cleanCode.length !== 8) {\n\t\t\tsetState('error')\n\t\t\tsetMessage('Please enter a valid 8-character code')\n\t\t\treturn\n\t\t}\n\n\t\tsetState('loading')\n\t\tsetMessage('')\n\n\t\ttry {\n\t\t\tconst result = await rpc.cliDevice.approve({ userCode })\n\n\t\t\tif (result.success) {\n\t\t\t\tsetState('success')\n\t\t\t\tsetMessage(\n\t\t\t\t\t'Device authorized successfully! You can close this window and return to your terminal.'\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tsetState('error')\n\t\t\t\tsetMessage(\n\t\t\t\t\tresult.message || 'Failed to authorize device. Please check the code and try again.'\n\t\t\t\t)\n\t\t\t}\n\t\t} catch (error: unknown) {\n\t\t\tconsole.error('Device activation error:', error)\n\t\t\tif (error instanceof Error && error.message.includes('401')) {\n\t\t\t\twindow.location.href = '/sign-in?redirect=/cli/activate'\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsetState('error')\n\t\t\tsetMessage('Network error. Please try again.')\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className=\"min-h-screen bg-background flex items-center justify-center p-6\">\n\t\t\t<div className=\"w-full max-w-md\">\n\t\t\t\t<div className=\"bg-card border border-border rounded-2xl p-8\">\n\t\t\t\t\t<div className=\"text-center mb-8\">\n\t\t\t\t\t\t<div className=\"w-12 h-12 rounded-xl bg-primary flex items-center justify-center mx-auto mb-4\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclassName=\"w-6 h-6 text-primary-foreground\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\t\tstrokeWidth={2}\n\t\t\t\t\t\t\t\t\td=\"M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h1 className=\"text-2xl font-bold text-foreground mb-2\">Activate CLI Access</h1>\n\t\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\t\tEnter the code displayed in your terminal to authorize CLI access\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{state === 'success' ? (\n\t\t\t\t\t\t<div className=\"text-center\">\n\t\t\t\t\t\t\t<div className=\"w-16 h-16 rounded-full bg-[hsl(var(--status-success)/0.2)] flex items-center justify-center mx-auto mb-4\">\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\tclassName=\"w-8 h-8 text-[hsl(var(--status-success))]\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\tstrokeWidth={2}\n\t\t\t\t\t\t\t\t\t\td=\"M5 13l4 4L19 7\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p className=\"text-[hsl(var(--status-success))] font-medium mb-2\">Success!</p>\n\t\t\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">{message}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t\t\t\t<div className=\"mb-6\">\n\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\thtmlFor=\"userCode\"\n\t\t\t\t\t\t\t\t\tclassName=\"block text-sm font-medium text-foreground mb-2\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tActivation Code\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tid=\"userCode\"\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tvalue={userCode}\n\t\t\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t\t\t\tplaceholder=\"XXXX-XXXX\"\n\t\t\t\t\t\t\t\t\tmaxLength={9}\n\t\t\t\t\t\t\t\t\tdisabled={state === 'loading'}\n\t\t\t\t\t\t\t\t\tclassName=\"w-full px-4 py-3 rounded-xl bg-muted border border-border text-foreground text-center text-2xl font-mono tracking-widest placeholder:text-muted-foreground/50 focus:outline-none focus:border-primary/50 focus:ring-2 focus:ring-primary/20 transition-all disabled:opacity-50\"\n\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{state === 'error' && message && (\n\t\t\t\t\t\t\t\t<div className=\"mb-4 p-3 rounded-lg bg-destructive/10 border border-destructive/20\">\n\t\t\t\t\t\t\t\t\t<p className=\"text-destructive text-sm text-center\">{message}</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tdisabled={state === 'loading' || userCode.replace(/-/g, '').length !== 8}\n\t\t\t\t\t\t\t\tclassName=\"w-full px-6 py-3 rounded-xl bg-primary font-medium text-primary-foreground hover:bg-primary/90 transition-all disabled:opacity-50 disabled:cursor-not-allowed\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{state === 'loading' ? 'Authorizing...' : 'Authorize Device'}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<p className=\"text-muted-foreground/60 text-xs text-center mt-6\">\n\t\t\t\t\t\tThis will grant CLI access to your account for 90 days\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import { defineKuckitClientModule, type KuckitClientModuleContext } from '@kuckit/sdk-react'\nimport { ActivatePage } from './pages/ActivatePage'\n\nexport const kuckitClientModule = defineKuckitClientModule({\n\tid: 'kuckit.cli-auth',\n\tdisplayName: 'CLI Authentication',\n\tversion: '0.1.0',\n\n\tregister(ctx: KuckitClientModuleContext) {\n\t\tctx.registerComponent('ActivatePage', ActivatePage)\n\n\t\tctx.addRoute({\n\t\t\tid: 'cli-activate',\n\t\t\tpath: '/cli/activate',\n\t\t\tcomponent: ActivatePage,\n\t\t\tmeta: {\n\t\t\t\ttitle: 'Activate CLI Access',\n\t\t\t\trequiresAuth: true,\n\t\t\t},\n\t\t})\n\t},\n})\n\nexport { ActivatePage } from './pages/ActivatePage'\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kuckit/cli-auth-module",
3
- "version": "3.0.0",
3
+ "version": "3.0.3",
4
4
  "description": "Device flow authentication module for Kuckit CLI tools",
5
5
  "type": "module",
6
6
  "main": "dist/server/module.js",
@@ -28,16 +28,16 @@
28
28
  "prepublishOnly": "npm run build && node ../../scripts/resolve-workspace-protocols.cjs && node ../../scripts/check-no-workspace-protocol.cjs"
29
29
  },
30
30
  "peerDependencies": {
31
- "@kuckit/sdk": "^3.0.0",
32
- "@kuckit/sdk-react": "^3.0.0",
31
+ "@kuckit/sdk": "^3.0.3",
32
+ "@kuckit/sdk-react": "^3.0.3",
33
33
  "react": "^18 || ^19",
34
34
  "typescript": "^5",
35
35
  "express": "^4 || ^5",
36
36
  "drizzle-orm": "^0.44.2"
37
37
  },
38
38
  "dependencies": {
39
- "@kuckit/api": "^3.0.0",
40
- "@kuckit/domain": "^3.0.0",
39
+ "@kuckit/api": "^3.0.3",
40
+ "@kuckit/domain": "^3.0.3",
41
41
  "zod": "^4.1.11"
42
42
  },
43
43
  "devDependencies": {