@shipfox/client-auth 13.0.0 → 14.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shipfox/client-auth",
3
3
  "license": "MIT",
4
- "version": "13.0.0",
4
+ "version": "14.0.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/ShipfoxHQ/shipfox.git",
@@ -39,10 +39,10 @@
39
39
  "@shipfox/api-auth-dto": "12.0.0",
40
40
  "@shipfox/api-workspaces-dto": "12.0.0",
41
41
  "@shipfox/client-api": "6.0.1",
42
- "@shipfox/client-invitations": "13.0.0",
43
- "@shipfox/client-shell": "13.0.0",
44
- "@shipfox/client-ui": "13.0.0",
45
- "@shipfox/react-ui": "0.4.0"
42
+ "@shipfox/client-invitations": "14.0.1",
43
+ "@shipfox/client-shell": "14.0.1",
44
+ "@shipfox/client-ui": "14.0.1",
45
+ "@shipfox/react-ui": "1.0.0"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@tanstack/react-query": "^5.101.0",
@@ -127,7 +127,7 @@ export function EmailCodeVerification({
127
127
  This verification code has expired. Use another email to try again.
128
128
  </Callout>
129
129
  ) : null}
130
- <form className="flex flex-col gap-8" noValidate onSubmit={submit}>
130
+ <form className="flex flex-col gap-inline" noValidate onSubmit={submit}>
131
131
  <FormField label="Verification code" id="verification-code" error={codeError}>
132
132
  <FormFieldInput
133
133
  autoComplete="one-time-code"
@@ -74,7 +74,7 @@ export function PasswordLoginForm({children, invitationEmail}: PasswordLoginForm
74
74
 
75
75
  return (
76
76
  <form
77
- className="flex flex-col gap-18"
77
+ className="flex flex-col gap-group"
78
78
  noValidate
79
79
  onSubmit={(event) => {
80
80
  event.preventDefault();
@@ -45,7 +45,7 @@ export function WorkspaceSwitcher({activeWorkspaceId, onSelect}: WorkspaceSwitch
45
45
  <Command>
46
46
  <CommandInput placeholder="Search workspaces..." />
47
47
  <CommandList className="max-h-none overflow-visible overflow-y-visible p-0">
48
- <div className="max-h-300 overflow-y-auto overflow-x-hidden p-4 scrollbar">
48
+ <div className="max-h-300 overflow-y-auto overflow-x-hidden p-menu-surface scrollbar">
49
49
  <CommandEmpty>No workspaces found.</CommandEmpty>
50
50
  <CommandGroup heading="Workspaces">
51
51
  {workspaces.map((workspace) => (
@@ -57,7 +57,7 @@ export function WorkspaceSwitcher({activeWorkspaceId, onSelect}: WorkspaceSwitch
57
57
  >
58
58
  <Icon
59
59
  name="check"
60
- className={`size-16 mr-8 ${
60
+ className={`size-16 ${
61
61
  activeWorkspaceId === workspace.id ? 'opacity-100' : 'opacity-0'
62
62
  }`}
63
63
  />
@@ -67,7 +67,7 @@ export function WorkspaceSwitcher({activeWorkspaceId, onSelect}: WorkspaceSwitch
67
67
  </CommandGroup>
68
68
  </div>
69
69
  <CommandSeparator alwaysRender className="mx-0" />
70
- <CommandGroup forceMount className="p-4">
70
+ <CommandGroup forceMount className="p-menu-surface">
71
71
  <CommandItem value="__create" onSelect={handleCreate} forceMount>
72
72
  <Icon name="addLine" className="size-16" />
73
73
  Create workspace
@@ -28,7 +28,7 @@ export function LoginPage() {
28
28
  return (
29
29
  <AuthShell title={headerTitle} description={headerDescription}>
30
30
  <PasswordLoginForm invitationEmail={invitationPending?.email}>
31
- <ButtonLink asChild variant="subtle" className="-mt-8 self-end">
31
+ <ButtonLink asChild variant="subtle" className="-mt-inline self-end">
32
32
  <Link to="/auth/reset">Forgot password?</Link>
33
33
  </ButtonLink>
34
34
  </PasswordLoginForm>
@@ -95,7 +95,7 @@ function PasswordResetRequest() {
95
95
  return (
96
96
  <AuthShell title="Reset your password" description="Enter your email to get a reset link.">
97
97
  <form
98
- className="flex flex-col gap-18"
98
+ className="flex flex-col gap-group"
99
99
  noValidate
100
100
  onSubmit={(event) => {
101
101
  event.preventDefault();
@@ -174,7 +174,7 @@ function PasswordResetConfirm({token}: {token: string}) {
174
174
  return (
175
175
  <AuthShell title="Set a new password" description="Choose a password for your Shipfox account.">
176
176
  <form
177
- className="flex flex-col gap-18"
177
+ className="flex flex-col gap-group"
178
178
  noValidate
179
179
  onSubmit={(event) => {
180
180
  event.preventDefault();
@@ -206,7 +206,7 @@ export function SignupPage() {
206
206
  description="Your account was created, but we could not finish signing you in."
207
207
  >
208
208
  <Callout role="alert" type="error">
209
- <div className="flex flex-col gap-8">
209
+ <div className="flex flex-col gap-inline">
210
210
  <Text size="sm">
211
211
  Try again to finish joining your workspace. You can safely retry this step.
212
212
  </Text>
@@ -285,7 +285,7 @@ export function SignupPage() {
285
285
  return (
286
286
  <AuthShell title={headerTitle} description={headerDescription}>
287
287
  <form
288
- className="flex flex-col gap-18"
288
+ className="flex flex-col gap-group"
289
289
  noValidate
290
290
  onSubmit={(event) => {
291
291
  event.preventDefault();
@@ -78,10 +78,10 @@ export function WorkspaceOnboardingPage() {
78
78
  });
79
79
 
80
80
  return (
81
- <main className="min-h-screen bg-background-subtle-base px-24 py-32 max-[520px]:px-16">
82
- <div className="mx-auto flex min-h-[calc(100vh-64px)] w-full max-w-[1120px] flex-col gap-24">
81
+ <main className="min-h-screen bg-background-subtle-base px-frame py-frame max-[520px]:px-row">
82
+ <div className="mx-auto flex min-h-[calc(100vh-64px)] w-full max-w-[1120px] flex-col gap-section">
83
83
  <header className="flex items-center justify-between">
84
- <div className="flex items-center gap-10">
84
+ <div className="flex items-center gap-inline">
85
85
  <div className="flex size-36 items-center justify-center rounded-8 border border-border-neutral-base bg-background-neutral-base shadow-button-neutral">
86
86
  <Icon name="shipfox" className="size-24 text-background-highlight-interactive" />
87
87
  </div>
@@ -91,7 +91,7 @@ export function WorkspaceOnboardingPage() {
91
91
  </div>
92
92
  </header>
93
93
 
94
- <section className="grid flex-1 items-center gap-32 lg:grid-cols-[minmax(0,440px)_minmax(0,1fr)]">
94
+ <section className="grid flex-1 items-center gap-region lg:grid-cols-[minmax(0,440px)_minmax(0,1fr)]">
95
95
  <form
96
96
  className="relative z-10 w-full"
97
97
  noValidate
@@ -102,8 +102,8 @@ export function WorkspaceOnboardingPage() {
102
102
  void form.handleSubmit();
103
103
  }}
104
104
  >
105
- <Card className="gap-20 p-24 shadow-button-neutral">
106
- <CardHeader className="gap-8">
105
+ <Card className="gap-section p-panel shadow-button-neutral">
106
+ <CardHeader className="gap-inline">
107
107
  <CardTitle id="workspace-onboarding-title" variant="h1">
108
108
  Create your workspace
109
109
  </CardTitle>
@@ -116,7 +116,7 @@ export function WorkspaceOnboardingPage() {
116
116
  </Callout>
117
117
  ) : null}
118
118
 
119
- <CardContent className="flex flex-col gap-8">
119
+ <CardContent className="flex flex-col gap-inline">
120
120
  <form.Field
121
121
  name="name"
122
122
  validators={{
@@ -201,11 +201,11 @@ export function WorkspaceOnboardingPage() {
201
201
  </Card>
202
202
  </form>
203
203
 
204
- <div className="hidden flex-col gap-18 lg:flex" aria-hidden="true">
205
- <div className="grid grid-cols-4 gap-12">
204
+ <div className="hidden flex-col gap-group lg:flex" aria-hidden="true">
205
+ <div className="grid grid-cols-4 gap-cluster">
206
206
  {previewMetrics.map((metric) => (
207
207
  <div
208
- className="rounded-8 border border-border-neutral-base bg-background-neutral-base p-14 shadow-button-neutral"
208
+ className="rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact shadow-button-neutral"
209
209
  key={metric.label}
210
210
  >
211
211
  <Text size="xs" className="text-foreground-neutral-muted">
@@ -217,18 +217,18 @@ export function WorkspaceOnboardingPage() {
217
217
  </div>
218
218
  ))}
219
219
  </div>
220
- <div className="grid grid-cols-2 gap-18">
220
+ <div className="grid grid-cols-2 gap-group">
221
221
  <PreviewPanel title="Performance over time" />
222
222
  <PreviewPanel title="Duration distribution" bars />
223
223
  </div>
224
- <div className="rounded-8 border border-border-neutral-base bg-background-neutral-base p-16 shadow-button-neutral">
224
+ <div className="flex flex-col gap-cluster rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact shadow-button-neutral">
225
225
  <Text size="sm" bold>
226
226
  Jobs breakdown
227
227
  </Text>
228
- <div className="mt-14 flex flex-col gap-10">
228
+ <div className="flex flex-col gap-inline">
229
229
  {[0, 1, 2, 3].map((row) => (
230
230
  <div
231
- className="grid grid-cols-[1fr_80px_80px] gap-12 border-t border-border-neutral-base pt-10"
231
+ className="grid grid-cols-[1fr_80px_80px] gap-cluster border-t border-border-neutral-base pt-[10px]"
232
232
  key={row}
233
233
  >
234
234
  <div className="h-12 rounded-full bg-background-neutral-disabled" />
@@ -247,11 +247,11 @@ export function WorkspaceOnboardingPage() {
247
247
 
248
248
  function PreviewPanel({title, bars = false}: {title: string; bars?: boolean}) {
249
249
  return (
250
- <div className="rounded-8 border border-border-neutral-base bg-background-neutral-base p-16 shadow-button-neutral">
250
+ <div className="flex flex-col gap-group rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact shadow-button-neutral">
251
251
  <Text size="sm" bold>
252
252
  {title}
253
253
  </Text>
254
- <div className="mt-16 flex h-[220px] items-end gap-8 border-b border-l border-border-neutral-base px-12 pb-10">
254
+ <div className="flex h-[220px] items-end gap-inline border-b border-l border-border-neutral-base px-row pb-[10px]">
255
255
  {previewBars.map((bar) => (
256
256
  <div
257
257
  className={