Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
44325f9
Refactor auth confirmation route and enhance URL handling
ben-fornefeld Dec 5, 2025
e739b5a
only allow absolute urls in schema
ben-fornefeld Dec 5, 2025
80c88f4
Refactor OTP verification process and enhance confirmation page
ben-fornefeld Dec 5, 2025
a1445c3
Refactor OTP verification response handling and enhance error management
ben-fornefeld Dec 5, 2025
f8d126e
Enhance OTP verification process with improved redirect handling and …
ben-fornefeld Dec 5, 2025
aa6f28b
chore
ben-fornefeld Dec 5, 2025
b9a3e87
fix: possible undefined ui behavior
ben-fornefeld Dec 6, 2025
b4cef9c
Refactor authentication utility functions and enhance origin checks
ben-fornefeld Dec 6, 2025
bfedbe9
chore: cleanup
ben-fornefeld Dec 6, 2025
a28a81a
chore: sync lroute and component contract
ben-fornefeld Dec 6, 2025
3ebd306
improve: confirm page prose
ben-fornefeld Dec 6, 2025
d96ae85
wip: integrate components
ben-fornefeld Dec 9, 2025
7663286
wip
ben-fornefeld Dec 15, 2025
4d34f40
wip
ben-fornefeld Dec 17, 2025
fdff303
Merge branch 'integrate-design-system-primitives' of https://github.c…
ben-fornefeld Feb 4, 2026
f1baddf
Merge branch 'main' into integrate-design-system-primitives
ben-fornefeld Feb 4, 2026
4efddc8
fix: unauthorised page UI registry update
vojtabohm Feb 5, 2026
6cab25b
feat: update UI registry not found screen
vojtabohm Feb 5, 2026
06d1d10
fix: sizing of icon button variant, remove redundant sizing from icon…
vojtabohm Feb 5, 2026
8775bde
feat: update ui buttons + spacing in Account screen
vojtabohm Feb 5, 2026
96ab68b
feat: update ui buttons + padding in budget view
vojtabohm Feb 5, 2026
4fc1de9
feat: introduce a link button variant, apply everywhere
vojtabohm Feb 5, 2026
01b3287
Merge branch 'main' into integrate-design-system-primitives
vojtabohm Feb 21, 2026
0998a17
feat: introduce iconbutton component and conform copybutton to it
vojtabohm Feb 22, 2026
b7f678d
fix: icon button shrinking in flex containers
vojtabohm Feb 22, 2026
2d3b170
fix: copy button on account screen
vojtabohm Feb 22, 2026
9f55890
feat: tweak template build page
vojtabohm Feb 22, 2026
9d78939
feat: tweak the member screen
vojtabohm Feb 22, 2026
a452404
feat: tweak couple of complex components including a button primitive
vojtabohm Feb 22, 2026
ffa7925
feat: add auto-shrink feature to icon button
vojtabohm Feb 22, 2026
2d69ac1
feat: update sandbox/header views to new primitives
vojtabohm Feb 22, 2026
610db20
feat: tweak and integrate ui for sandbox detail
vojtabohm Feb 23, 2026
7524228
feat: integrate ui in the sandboxes monitoring
vojtabohm Feb 23, 2026
7814601
feat: integrate ui in settings
vojtabohm Feb 23, 2026
a635b4f
feat: integrate ui in sidebar
vojtabohm Feb 23, 2026
88bbf55
feat: integrate ui in templates list
vojtabohm Feb 23, 2026
89e8240
feat: integrate ui in usage
vojtabohm Feb 23, 2026
e825bd6
feat: integrate ui in billing
vojtabohm Feb 23, 2026
a084d35
feat: integrate ui in auth
vojtabohm Feb 23, 2026
603f735
feat: update ui components to new design system
vojtabohm Feb 24, 2026
b98adde
fix: remove mocks
vojtabohm Feb 24, 2026
b5ae9b2
feat: integrate ui in remaining primitives
vojtabohm Feb 24, 2026
2984d34
feat: integrate ui in account
vojtabohm Feb 24, 2026
e96445b
feat: update icon-button and integrate survey
vojtabohm Feb 24, 2026
f626b32
refactor: remove unused sizes from button
vojtabohm Feb 24, 2026
5faeea7
feat: increase in loading state of a button
vojtabohm Feb 24, 2026
dec28de
feat: make loading state of a button always respect its variant
vojtabohm Feb 24, 2026
6e7f3e9
feat: improve the UI/UX for CopyButtonInline
vojtabohm Feb 26, 2026
4bbd64c
feat: tweak styling of copybuttoninline
vojtabohm Mar 5, 2026
5597b64
feat: tweak styling of template build header
vojtabohm Mar 5, 2026
c126358
feat: update the design of the sidebar
vojtabohm Mar 6, 2026
8ca133a
feat: replace all remaining sidebar icons + tweak header gap
vojtabohm Mar 10, 2026
778aa64
fix: prevent layout jumping when collapsing the sidebar
vojtabohm Mar 10, 2026
732e154
feat: update the default card variant styling
vojtabohm Mar 16, 2026
1e6dfea
feat: tweak the look of the account switcher dropdown
vojtabohm Mar 16, 2026
67865d2
fix: font sizing in account switcher dropdown
vojtabohm Mar 16, 2026
fd6b59a
feat: replace lucide icons with our custom ones (part 1)
vojtabohm Mar 16, 2026
5b10ec9
feat: replace lucide icons with our custom ones (part 2)
vojtabohm Mar 17, 2026
85b3d19
feat: finish replacing lucide icons with custom ones
vojtabohm Apr 13, 2026
3e724d5
refactor: replace LucideIcon with custom Icon
vojtabohm Apr 13, 2026
69477fa
refactor: get rid of lucide-react package
vojtabohm Apr 13, 2026
fd07ef1
feat: make icons 16x16 by default
vojtabohm Apr 13, 2026
87416f2
fix: incorrect transparent error tooltip
vojtabohm Apr 13, 2026
3250f30
refactor: use classname instead of direct unsuported props
vojtabohm Apr 14, 2026
cbbf24d
refactor: nitpicks
vojtabohm Apr 14, 2026
9533387
fix: dangling old icon reference
vojtabohm Apr 14, 2026
3f9f711
fix: out of range animation value
vojtabohm Apr 14, 2026
14ddeba
Merge branch 'main' into integrate-design-system-primitives
vojtabohm Apr 14, 2026
06c6218
refactor: formatting
vojtabohm Apr 14, 2026
71b2c64
fix: build issues, old variants
vojtabohm Apr 14, 2026
79e925b
fix: formatting
vojtabohm Apr 14, 2026
0b2fd9e
fix: visual regressions since merge
vojtabohm Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,16 @@
"@opentelemetry/semantic-conventions": "^1.36.0",
"@radix-ui/react-avatar": "^1.1.4",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-dialog": "^1.1.7",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.7",
"@radix-ui/react-label": "^2.1.3",
"@radix-ui/react-popover": "^1.1.7",
"@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-radio-group": "^1.3.8",
"@radix-ui/react-scroll-area": "^1.2.4",
"@radix-ui/react-select": "^2.1.7",
"@radix-ui/react-separator": "^1.1.3",
"@radix-ui/react-slider": "^1.2.4",
"@radix-ui/react-slot": "^1.2.3",
"@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-tabs": "^1.1.12",
"@radix-ui/react-toast": "^1.2.7",
"@radix-ui/react-tooltip": "^1.2.0",
Expand Down Expand Up @@ -117,9 +117,8 @@
"file-type": "^21.3.0",
"geist": "^1.3.1",
"immer": "^10.1.1",
"lucide-react": "^0.525.0",
"micromatch": "^4.0.8",
"motion": "^12.18.1",
"motion": "^12.23.25",
"nanoid": "^5.0.9",
"next": "16.1.5",
"next-safe-action": "^8.0.11",
Expand Down
8 changes: 4 additions & 4 deletions src/app/(auth)/auth/cli/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { CloudIcon, LaptopIcon, Link2Icon } from 'lucide-react'
import { redirect } from 'next/navigation'
import { Suspense } from 'react'
import { AUTH_URLS, PROTECTED_URLS } from '@/configs/urls'
Expand All @@ -8,6 +7,7 @@ import { createClient } from '@/core/shared/clients/supabase/server'
import { encodedRedirect } from '@/lib/utils/auth'
import { generateE2BUserAccessToken } from '@/lib/utils/server'
import { Alert, AlertDescription, AlertTitle } from '@/ui/primitives/alert'
import { CloudIcon, LinkIcon, SystemIcon } from '@/ui/primitives/icons'

// Types
type CLISearchParams = Promise<{
Expand Down Expand Up @@ -59,13 +59,13 @@ function CLIIcons() {
return (
<p className="flex items-center justify-center gap-4 text-3xl tracking-tight sm:text-4xl">
<span className="text-fg-tertiary">
<LaptopIcon size={50} />
<SystemIcon className="size-8" />
</span>
<span className="text-fg-secondary">
<Link2Icon size={30} />
<LinkIcon className="size-4" />
</span>
<span className="text-fg-tertiary">
<CloudIcon size={50} />
<CloudIcon className="size-8" />
</span>
</p>
)
Expand Down
4 changes: 3 additions & 1 deletion src/app/(auth)/confirm/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,9 @@ export default function ConfirmPage() {
<div className="mt-5">
<Button
onClick={handleConfirm}
loading={mutation.isPending || isPending}
loading={
mutation.isPending || isPending ? 'Confirming...' : undefined
}
disabled={!isValidParams}
className="w-full"
>
Expand Down
2 changes: 1 addition & 1 deletion src/app/(auth)/forgot-password/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ export default function ForgotPassword() {
placeholder="you@example.com"
required
/>
<Button type="submit" loading={isExecuting}>
<Button type="submit" loading={isExecuting ? 'Sending...' : undefined}>
Reset Password
</Button>
</form>
Expand Down
5 changes: 4 additions & 1 deletion src/app/(auth)/sign-in/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,10 @@ export default function Login() {

<input type="hidden" {...form.register('returnTo')} />

<Button type="submit" loading={isExecuting}>
<Button
type="submit"
loading={isExecuting ? 'Signing in...' : undefined}
>
Sign in
</Button>
</form>
Expand Down
2 changes: 1 addition & 1 deletion src/app/(auth)/sign-up/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ export default function SignUp() {

<Button
type="submit"
loading={isExecuting}
loading={isExecuting ? 'Signing up...' : undefined}
disabled={CAPTCHA_REQUIRED_CLIENT && !turnstile.captchaToken}
>
Sign up
Expand Down
4 changes: 2 additions & 2 deletions src/app/dashboard/[teamSlug]/keys/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { Plus } from 'lucide-react'
import CreateApiKeyDialog from '@/features/dashboard/settings/keys/create-api-key-dialog'
import ApiKeysTable from '@/features/dashboard/settings/keys/table'
import Frame from '@/ui/frame'
Expand All @@ -10,6 +9,7 @@ import {
CardHeader,
CardTitle,
} from '@/ui/primitives/card'
import { AddIcon } from '@/ui/primitives/icons'

interface KeysPageClientProps {
params: Promise<{
Expand Down Expand Up @@ -38,7 +38,7 @@ export default async function KeysPage({ params }: KeysPageClientProps) {

<CreateApiKeyDialog>
<Button className="w-full sm:w-auto sm:self-start">
<Plus className="size-4" /> CREATE KEY
<AddIcon className="size-4" /> CREATE KEY
</Button>
</CreateApiKeyDialog>
</div>
Expand Down
4 changes: 2 additions & 2 deletions src/app/dashboard/[teamSlug]/webhooks/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { Plus } from 'lucide-react'
import { notFound } from 'next/navigation'
import { INCLUDE_ARGUS } from '@/configs/flags'
import WebhookAddEditDialog from '@/features/dashboard/settings/webhooks/add-edit-dialog'
Expand All @@ -11,6 +10,7 @@ import {
CardDescription,
CardHeader,
} from '@/ui/primitives/card'
import { AddIcon } from '@/ui/primitives/icons'

interface WebhooksPageClientProps {
params: Promise<{
Expand Down Expand Up @@ -43,7 +43,7 @@ export default async function WebhooksPage({

<WebhookAddEditDialog mode="add">
<Button className="w-full sm:w-auto sm:self-start">
<Plus className="size-4" /> Add Webhook
<AddIcon className="size-4" /> Add Webhook
</Button>
</WebhookAddEditDialog>
</div>
Expand Down
31 changes: 18 additions & 13 deletions src/app/dashboard/unauthorized.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'use client'

import { ArrowLeft, HomeIcon, ShieldX, UsersIcon } from 'lucide-react'
import Link from 'next/link'
import { PROTECTED_URLS } from '@/configs/urls'
import { AsciiBackgroundPattern } from '@/ui/patterns'
Expand All @@ -12,6 +11,12 @@ import {
CardFooter,
CardHeader,
} from '@/ui/primitives/card'
import {
ArrowLeftIcon,
HomeIcon,
PersonsIcon,
ShieldXIcon,
} from '@/ui/primitives/icons'

export default function Unauthorized() {
return (
Expand All @@ -20,7 +25,7 @@ export default function Unauthorized() {
<Card className="w-full max-w-md border border-stroke bg-bg-1/40 backdrop-blur-lg z-10">
<CardHeader className="text-center">
<div className="flex justify-center mb-2">
<ShieldX className="h-12 w-12 text-fg-tertiary" />
<ShieldXIcon className="h-12 w-12 text-fg-tertiary" />
</div>
<span className="prose-value-big">403</span>
<CardDescription>Access denied.</CardDescription>
Expand All @@ -31,27 +36,27 @@ export default function Unauthorized() {
team owner or administrator to request access.
</p>
</CardContent>
<CardFooter className="flex flex-col gap-4 pt-4">
<div className="flex w-full justify-between gap-4">
<Button variant="outline" asChild className="flex-1">
<Link href="/" className="gap-2">
<HomeIcon className="h-4 w-4 text-fg-tertiary" />
<CardFooter className="flex flex-col gap-1">
<div className="flex w-full gap-1">
<Button variant="secondary" asChild className="flex-1">
<Link href="/">
<HomeIcon />
Home
</Link>
</Button>
<Button variant="outline" asChild className="flex-1">
<Link href={PROTECTED_URLS.DASHBOARD} className="gap-2">
<UsersIcon className="h-4 w-4 text-fg-tertiary" />
<Button variant="secondary" asChild className="flex-1">
<Link href={PROTECTED_URLS.DASHBOARD}>
<PersonsIcon />
My Teams
</Link>
</Button>
</div>
<Button
variant="outline"
variant="secondary"
onClick={() => window.history.back()}
className="w-full gap-2"
className="w-full"
>
<ArrowLeft className="h-4 w-4 text-fg-tertiary" />
<ArrowLeftIcon />
Go Back
</Button>
</CardFooter>
Expand Down
47 changes: 22 additions & 25 deletions src/configs/sidebar.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { JSX } from 'react'
import {
Activity,
Box,
Container,
CreditCard,
Key,
type LucideProps,
Settings,
UserRoundCog,
Users,
} from 'lucide-react'
import type { ForwardRefExoticComponent, JSX, RefAttributes } from 'react'
import { GaugeIcon, WebhookIcon } from '@/ui/primitives/icons'
AccountSettingsIcon,
CardIcon,
GaugeIcon,
KeyIcon,
PersonsIcon,
SandboxIcon,
SettingsIcon,
TemplateIcon,
UsageIcon,
WebhookIcon,
} from '@/ui/primitives/icons'
import { INCLUDE_ARGUS, INCLUDE_BILLING } from './flags'
import { PROTECTED_URLS } from './urls'

Expand All @@ -21,11 +21,8 @@ type SidebarNavArgs = {
export type SidebarNavItem = {
label: string
href: (args: SidebarNavArgs) => string
icon:
| ForwardRefExoticComponent<
Omit<LucideProps, 'ref'> & RefAttributes<SVGSVGElement>
>
| ((...args: any[]) => JSX.Element)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
icon: (...args: any[]) => JSX.Element
group?: string
activeMatch?: string
}
Expand All @@ -35,13 +32,13 @@ export const SIDEBAR_MAIN_LINKS: SidebarNavItem[] = [
{
label: 'Sandboxes',
href: (args) => PROTECTED_URLS.SANDBOXES(args.teamSlug!),
icon: Box,
icon: SandboxIcon,
activeMatch: `/dashboard/*/sandboxes/**`,
},
{
label: 'Templates',
href: (args) => PROTECTED_URLS.TEMPLATES(args.teamSlug!),
icon: Container,
icon: TemplateIcon,
activeMatch: `/dashboard/*/templates/**`,
},

Expand All @@ -63,21 +60,21 @@ export const SIDEBAR_MAIN_LINKS: SidebarNavItem[] = [
{
label: 'General',
href: (args) => PROTECTED_URLS.GENERAL(args.teamSlug!),
icon: Settings,
icon: SettingsIcon,
group: 'team',
activeMatch: `/dashboard/*/general`,
},
{
label: 'API Keys',
href: (args) => PROTECTED_URLS.KEYS(args.teamSlug!),
icon: Key,
icon: KeyIcon,
group: 'team',
activeMatch: `/dashboard/*/keys`,
},
{
label: 'Members',
href: (args) => PROTECTED_URLS.MEMBERS(args.teamSlug!),
icon: Users,
icon: PersonsIcon,
group: 'team',
activeMatch: `/dashboard/*/members`,
},
Expand All @@ -88,7 +85,7 @@ export const SIDEBAR_MAIN_LINKS: SidebarNavItem[] = [
{
label: 'Usage',
href: (args: SidebarNavArgs) => PROTECTED_URLS.USAGE(args.teamSlug!),
icon: Activity,
icon: UsageIcon,
group: 'billing',
activeMatch: `/dashboard/*/usage/**`,
},
Expand All @@ -103,7 +100,7 @@ export const SIDEBAR_MAIN_LINKS: SidebarNavItem[] = [
label: 'Billing',
href: (args: SidebarNavArgs) =>
PROTECTED_URLS.BILLING(args.teamSlug!),
icon: CreditCard,
icon: CardIcon,
group: 'billing',
activeMatch: `/dashboard/*/billing/**`,
},
Expand All @@ -115,7 +112,7 @@ export const SIDEBAR_EXTRA_LINKS: SidebarNavItem[] = [
{
label: 'Account Settings',
href: () => PROTECTED_URLS.ACCOUNT_SETTINGS,
icon: UserRoundCog,
icon: AccountSettingsIcon,
},
]

Expand Down
Loading
Loading