Skip to content

Commit c501c53

Browse files
committed
refactor(ui): migrate settings & workspace UI to chip design system
Migrate modals to ChipModal (showDivider, hint, resizable, size, leading, ChipModalTabs), standardize Chip variants, add ChipCombobox wrapper, and apply chip inputs/dropdowns across settings, knowledge, logs, tables, inbox, EE tabs. Render ChipModalTabs as a ChipSwitch segmented control. Align /settings/secrets detail with /integrations, refresh whitelabeling, and restore file-editor autofocus and CSV import error toasts.
1 parent 314dcb0 commit c501c53

73 files changed

Lines changed: 3677 additions & 3593 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/docs/app/api/og/route.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const OG_FOOTER_STYLE = {
3333
width: '100%',
3434
} satisfies CSSProperties
3535
const OG_DOMAIN_STYLE = {
36-
fontSize: 20,
36+
fontSize: 24,
3737
fontWeight: 400,
3838
color: '#71717a',
3939
} satisfies CSSProperties
@@ -84,7 +84,7 @@ async function loadGoogleFont(font: string, weights: string, text: string): Prom
8484
*/
8585
function SimLogoFull() {
8686
return (
87-
<svg height='28' viewBox='720 440 1020 320' fill='none'>
87+
<svg height='34' viewBox='720 440 1020 320' fill='none'>
8888
{/* Green icon - top left shape with cutout */}
8989
<path
9090
fillRule='evenodd'

apps/docs/app/favicon.ico

12.6 KB
Binary file not shown.

apps/docs/app/layout.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export const metadata = {
4545
classification: 'Developer Documentation',
4646
manifest: '/favicon/site.webmanifest',
4747
icons: {
48+
icon: [{ url: '/icon.svg', type: 'image/svg+xml', sizes: 'any' }],
4849
apple: '/favicon/apple-touch-icon.png',
4950
},
5051
appleWebApp: {

apps/docs/public/icon.svg

Lines changed: 1 addition & 0 deletions
Loading

apps/sim/app/(auth)/login/login-form.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -381,11 +381,11 @@ export default function LoginPage({
381381
className={cn(
382382
showEmailValidationError &&
383383
emailErrors.length > 0 &&
384-
'border-red-500 focus:border-red-500'
384+
'border-[var(--text-error)] focus:border-[var(--text-error)]'
385385
)}
386386
/>
387387
{showEmailValidationError && emailErrors.length > 0 && (
388-
<div className='mt-1 space-y-1 text-red-400 text-xs'>
388+
<div className='mt-1 space-y-1 text-[var(--text-error)] text-xs'>
389389
{emailErrors.map((error) => (
390390
<p key={error}>{error}</p>
391391
))}
@@ -419,7 +419,7 @@ export default function LoginPage({
419419
'pr-10',
420420
showValidationError &&
421421
passwordErrors.length > 0 &&
422-
'border-red-500 focus:border-red-500'
422+
'border-[var(--text-error)] focus:border-[var(--text-error)]'
423423
)}
424424
/>
425425
<button
@@ -432,7 +432,7 @@ export default function LoginPage({
432432
</button>
433433
</div>
434434
{showValidationError && passwordErrors.length > 0 && (
435-
<div className='mt-1 space-y-1 text-red-400 text-xs'>
435+
<div className='mt-1 space-y-1 text-[var(--text-error)] text-xs'>
436436
{passwordErrors.map((error) => (
437437
<p key={error}>{error}</p>
438438
))}
@@ -448,7 +448,7 @@ export default function LoginPage({
448448
)}
449449

450450
{formError && (
451-
<div className='text-red-400 text-xs'>
451+
<div className='text-[var(--text-error)] text-xs'>
452452
<p>{formError}</p>
453453
</div>
454454
)}

apps/sim/app/(landing)/components/demo-request/demo-request-modal.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { useState } from 'react'
44
import { useMutation } from '@tanstack/react-query'
55
import {
6-
Combobox,
6+
ChipCombobox,
77
Input,
88
Modal,
99
ModalBody,
@@ -56,7 +56,7 @@ const INITIAL_FORM_STATE: DemoRequestFormState = {
5656
}
5757

5858
const LANDING_INPUT =
59-
'h-[32px] rounded-[5px] border border-[var(--border-1)] bg-[var(--surface-5)] px-2.5 font-[430] font-season text-[13.5px] text-[var(--text-primary)] transition-colors placeholder:text-[var(--text-muted)] outline-none'
59+
'rounded-[5px] border border-[var(--border-1)] bg-[var(--surface-5)] px-2.5 font-[430] font-season text-[var(--text-primary)] transition-colors placeholder:text-[var(--text-muted)] outline-none'
6060

6161
async function submitDemoRequest(payload: DemoRequestPayload) {
6262
return requestJson(submitDemoRequestContract, { body: payload })
@@ -161,6 +161,7 @@ export function DemoRequestModal({ children, theme = 'dark' }: DemoRequestModalP
161161
<LandingField htmlFor='firstName' label='First name' error={errors.firstName}>
162162
<Input
163163
id='firstName'
164+
variant='chip'
164165
value={form.firstName}
165166
onChange={(event) => updateField('firstName', event.target.value)}
166167
placeholder='First'
@@ -170,6 +171,7 @@ export function DemoRequestModal({ children, theme = 'dark' }: DemoRequestModalP
170171
<LandingField htmlFor='lastName' label='Last name' error={errors.lastName}>
171172
<Input
172173
id='lastName'
174+
variant='chip'
173175
value={form.lastName}
174176
onChange={(event) => updateField('lastName', event.target.value)}
175177
placeholder='Last'
@@ -185,6 +187,7 @@ export function DemoRequestModal({ children, theme = 'dark' }: DemoRequestModalP
185187
>
186188
<Input
187189
id='companyEmail'
190+
variant='chip'
188191
type='email'
189192
value={form.companyEmail}
190193
onChange={(event) => updateField('companyEmail', event.target.value)}
@@ -201,6 +204,7 @@ export function DemoRequestModal({ children, theme = 'dark' }: DemoRequestModalP
201204
>
202205
<Input
203206
id='phoneNumber'
207+
variant='chip'
204208
type='tel'
205209
value={form.phoneNumber}
206210
onChange={(event) => updateField('phoneNumber', event.target.value)}
@@ -210,7 +214,7 @@ export function DemoRequestModal({ children, theme = 'dark' }: DemoRequestModalP
210214
</LandingField>
211215

212216
<LandingField htmlFor='companySize' label='Company size' error={errors.companySize}>
213-
<Combobox
217+
<ChipCombobox
214218
options={COMBOBOX_COMPANY_SIZES}
215219
value={form.companySize}
216220
selectedValue={form.companySize}
@@ -220,7 +224,7 @@ export function DemoRequestModal({ children, theme = 'dark' }: DemoRequestModalP
220224
placeholder='Select'
221225
editable={false}
222226
filterOptions={false}
223-
className='h-[32px] rounded-[5px] px-2.5 font-[430] font-season text-[13.5px]'
227+
className='rounded-[5px] px-2.5 font-[430] font-season'
224228
/>
225229
</LandingField>
226230

apps/sim/app/(landing)/integrations/components/integration-grid.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export function IntegrationGrid({ integrations }: IntegrationGridProps) {
5858
<path d='m21 21-4.35-4.35' />
5959
</svg>
6060
<Input
61+
variant='chip'
6162
type='search'
6263
placeholder='Search integrations, tools, or triggers…'
6364
value={query}

apps/sim/app/api/v1/audit-logs/query.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,11 @@ export function buildFilterConditions(params: AuditLogFilterParams): SQL<unknown
3838
const conditions: SQL<unknown>[] = []
3939

4040
if (params.action) conditions.push(eq(auditLog.action, params.action))
41-
if (params.resourceType) conditions.push(eq(auditLog.resourceType, params.resourceType))
41+
if (params.resourceType) {
42+
const types = params.resourceType.split(',').filter(Boolean)
43+
if (types.length === 1) conditions.push(eq(auditLog.resourceType, types[0]))
44+
else if (types.length > 1) conditions.push(inArray(auditLog.resourceType, types))
45+
}
4246
if (params.resourceId) conditions.push(eq(auditLog.resourceId, params.resourceId))
4347
if (params.workspaceId) conditions.push(eq(auditLog.workspaceId, params.workspaceId))
4448
if (params.actorId) conditions.push(eq(auditLog.actorId, params.actorId))

apps/sim/app/api/v1/audit-logs/route.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* Query Parameters:
88
* - action: string (optional) - Filter by action (e.g., "workflow.created")
9-
* - resourceType: string (optional) - Filter by resource type (e.g., "workflow")
9+
* - resourceType: string (optional) - Filter by resource type(s), comma-separated (e.g., "workflow,api_key")
1010
* - resourceId: string (optional) - Filter by resource ID
1111
* - workspaceId: string (optional) - Filter by workspace ID
1212
* - actorId: string (optional) - Filter by actor user ID (must be an org member)

apps/sim/app/workspace/[workspaceId]/components/resource/components/resource-options-bar/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ export type {
55
SearchTag,
66
SortConfig,
77
} from './resource-options-bar'
8-
export { ResourceOptionsBar } from './resource-options-bar'
8+
export { ResourceOptionsBar, SortDropdown } from './resource-options-bar'

0 commit comments

Comments
 (0)