Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
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
9 changes: 1 addition & 8 deletions ui/src/components/filtering/default-filter-control.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,20 +49,13 @@ export const DefaultFiltersControl = ({ field }: { field: string }) => {
}

export const DefaultFiltersTooltip = ({
className,
project,
}: {
className?: string
project: ProjectDetails
}) => (
<Popover.Root>
<Popover.Trigger asChild>
<Button
aria-label={translate(STRING.INFO)}
className={className}
size="icon"
variant="ghost"
>
<Button aria-label={translate(STRING.INFO)} size="icon" variant="ghost">
<InfoIcon className="w-4 h-4" />
</Button>
</Popover.Trigger>
Expand Down
16 changes: 0 additions & 16 deletions ui/src/nova-ui-kit/components/checkbox/checkbox.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@
border: 1px solid var(--color-border);
flex-shrink: 0;

&.neutral {
border-color: var(--color-neutral-400);
}

&:focus-visible {
box-shadow: 0 0 0 2px var(--color-generic-black);
}
Expand Down Expand Up @@ -50,18 +46,6 @@
color: var(--color-muted-foreground);
margin-left: 6px;

&.success {
color: var(--color-success);
}

&.alert {
color: var(--color-accent);
}

&.neutral {
color: var(--color-generic-white);
}

&.disabled {
opacity: 0.5;
}
Expand Down
16 changes: 1 addition & 15 deletions ui/src/nova-ui-kit/components/checkbox/checkbox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,11 @@ import classNames from 'classnames'
import { CheckIcon, MinusIcon } from 'lucide-react'
import styles from './checkbox.module.scss'

export enum CheckboxTheme {
Default = 'default',
Success = 'success',
Alert = 'alert',
Neutral = 'neutral',
}

interface CheckboxProps {
checked: boolean | 'indeterminate'
disabled?: boolean
id?: string
label?: string
theme?: CheckboxTheme
onCheckedChange?: (checked: boolean) => void
}

Expand All @@ -24,15 +16,12 @@ export const Checkbox = ({
disabled,
id,
label,
theme = CheckboxTheme.Default,
onCheckedChange,
}: CheckboxProps) => (
<div className={styles.wrapper}>
<_Checkbox.Root
checked={checked}
className={classNames(styles.checkboxRoot, {
[styles.neutral]: theme === CheckboxTheme.Neutral,
})}
className={styles.checkboxRoot}
disabled={disabled}
id={id}
onCheckedChange={onCheckedChange}
Expand All @@ -48,9 +37,6 @@ export const Checkbox = ({
<label
htmlFor={id}
className={classNames(styles.label, {
[styles.success]: theme === CheckboxTheme.Success,
[styles.alert]: theme === CheckboxTheme.Alert,
[styles.neutral]: theme === CheckboxTheme.Neutral,
[styles.disabled]: disabled,
})}
>
Expand Down
2 changes: 1 addition & 1 deletion ui/src/nova-ui-kit/components/info-block/info-block.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const InfoBlockFieldValue = ({
</span>
</Link>
) : (
<span className="body-base">{valueLabel}</span>
<span className="body-base break-all">{valueLabel}</span>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Prefer break-words/overflow-wrap:anywhere here.

break-all will split filenames and paths in the middle of tokens, which makes the new capture metadata panel much harder to scan. A softer wrap mode still prevents overflow without mangling the text.

Suggested fix
-        <span className="body-base break-all">{valueLabel}</span>
+        <span className="body-base break-words">{valueLabel}</span>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<span className="body-base break-all">{valueLabel}</span>
<span className="body-base break-words">{valueLabel}</span>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ui/src/nova-ui-kit/components/info-block/info-block.tsx` at line 65, Replace
the hard wrap class on the value label span so tokens aren't split mid-word: in
the InfoBlock component update the span rendering {valueLabel} (the <span
className="body-base break-all"> element) to use a softer wrap, e.g. replace
"break-all" with "break-words" or add/replace with CSS that applies
"overflow-wrap: anywhere" (or "overflow-wrap: break-word") so long paths and
filenames wrap without being mangled.

)}
</>
)
Expand Down
3 changes: 0 additions & 3 deletions ui/src/nova-ui-kit/components/slider/dial.svg

This file was deleted.

46 changes: 0 additions & 46 deletions ui/src/nova-ui-kit/components/slider/timestamp-slider.tsx

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.statusMarker {
width: 12px;
height: 12px;
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--color-border);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { Columns3CogIcon } from 'lucide-react'
import { BasicTooltip, Button, Checkbox, Popover } from 'nova-ui-kit'
import { STRING, translate } from 'utils/language'
import styles from './column-settings.module.scss'

interface ColumnSettingsProps {
columns: { id: string; name: string }[]
Expand All @@ -27,29 +26,27 @@ export const ColumnSettings = ({
</Button>
</Popover.Trigger>
</BasicTooltip>
<Popover.Content className={styles.wrapper} align="end" side="bottom">
<div>
<span className={styles.description}>
{translate(STRING.TABLE_COLUMNS)}
</span>
<div className={styles.settings}>
{columns.map((column) =>
column.name.length ? (
<Checkbox
key={column.id}
checked={columnSettings[column.id]}
id={column.id}
label={column.name}
onCheckedChange={(checked) => {
onColumnSettingsChange({
...columnSettings,
[column.id]: checked,
})
}}
/>
) : null
)}
</div>
<Popover.Content className="grid gap-4" align="end" side="bottom">
<span className="body-base font-semibold text-muted-foreground">
{translate(STRING.TABLE_COLUMNS)}
</span>
<div className="grid gap-2">
{columns.map((column) =>
column.name.length ? (
<Checkbox
key={column.id}
checked={columnSettings[column.id]}
id={column.id}
label={column.name}
onCheckedChange={(checked) => {
onColumnSettingsChange({
...columnSettings,
[column.id]: checked,
})
}}
/>
) : null
)}
</div>
</Popover.Content>
</Popover.Root>
Expand Down
8 changes: 5 additions & 3 deletions ui/src/nova-ui-kit/components/tabs/tabs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,15 @@ const Trigger = ({ value, label }: { value: string; label: string }) => (
)

const Content = ({
value,
children,
className,
value,
}: {
value: string
children: ReactNode
className?: string
value: string
}) => (
<Tabs.Content value={value} tabIndex={-1}>
<Tabs.Content className={className} tabIndex={-1} value={value}>
{children}
</Tabs.Content>
)
Expand Down
2 changes: 1 addition & 1 deletion ui/src/nova-ui-kit/global.scss
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,5 @@
}

.bubble-label {
@include body-number-small();
@include bubble-label();
Comment thread
annavik marked this conversation as resolved.
Outdated
}
2 changes: 1 addition & 1 deletion ui/src/nova-ui-kit/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export { Button } from './components/button/index'
export { SaveButton } from './components/button/save-button'
export { Calendar } from './components/calendar'
export { Card, CardSize } from './components/card/card'
export { Checkbox, CheckboxTheme } from './components/checkbox/checkbox'
export { Checkbox } from './components/checkbox/checkbox'
export { CodeBlock } from './components/code-block'
export * as Collapsible from './components/collapsible'
export { ComboBox } from './components/combo-box/combo-box'
Expand Down
2 changes: 1 addition & 1 deletion ui/src/pages/deployments/deployment-columns.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export const columns = ({
},
{
id: 'status',
name: 'Latest job status',
name: translate(STRING.FIELD_LABEL_LATEST_JOB_STATUS),
tooltip: translate(STRING.TOOLTIP_LATEST_JOB_STATUS, {
type: translate(STRING.ENTITY_TYPE_DEPLOYMENT),
}),
Expand Down
2 changes: 1 addition & 1 deletion ui/src/pages/project/capture-sets/capture-set-columns.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const columns = ({
},
{
id: 'status',
name: 'Latest job status',
name: translate(STRING.FIELD_LABEL_LATEST_JOB_STATUS),
tooltip: translate(STRING.TOOLTIP_LATEST_JOB_STATUS, {
type: translate(STRING.ENTITY_TYPE_CAPTURE_SET),
}),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@
import { SessionDetails } from 'data-services/models/session-details'
import { TimelineTick } from 'data-services/models/timeline-tick'
import { CONSTANTS } from 'nova-ui-kit'
import { useRef } from 'react'
import Plot from 'react-plotly.js'
import { getCompactTimespanString } from 'utils/date/getCompactTimespanString/getCompactTimespanString'
import { findClosestCaptureId } from '../utils'
import { ActivityPlotProps } from './types'
import { useDynamicPlotWidth } from './useDynamicPlotWidth'

const fontFamily = 'Mazzard, sans-serif'
const lineColorCaptures = CONSTANTS.COLORS.neutral[500]
const lineColorDetections = CONSTANTS.COLORS.secondary[500]
const spikeColor = CONSTANTS.COLORS.generic.white
const textColor = CONSTANTS.COLOR_THEME.muted.foreground
const tooltipBgColor = CONSTANTS.COLORS.generic.white
const tooltipBorderColor = CONSTANTS.COLOR_THEME.muted.foreground
const fontFamily = 'Mazzard'
const fontSize = 14
const lineColorCaptures = CONSTANTS.COLORS.neutral[300]
const lineColorDetections = CONSTANTS.COLOR_THEME.secondary.DEFAULT
const spikeColor = CONSTANTS.COLOR_THEME.foreground
const textColor = CONSTANTS.COLOR_THEME.foreground
const tooltipBgColor = CONSTANTS.COLOR_THEME.background
const tooltipBorderColor = CONSTANTS.COLOR_THEME.border

const ActivityPlot = ({
export interface ActivityPlotProps {
session: SessionDetails
setActiveCaptureId: (captureId: string) => void
snapToDetections?: boolean
timeline: TimelineTick[]
}

export const ActivityPlot = ({
session,
snapToDetections,
timeline,
Expand Down Expand Up @@ -130,7 +139,7 @@ const ActivityPlot = ({
bordercolor: tooltipBorderColor,
font: {
family: fontFamily,
size: 12,
size: fontSize,
color: textColor,
},
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { ErrorBoundary } from 'components/error-boundary/error-boundary'
import { LoadingSpinner } from 'nova-ui-kit'
import React, { Suspense } from 'react'
import styles from './lazy-activity-plot.module.scss'
import { ActivityPlotProps } from './types'
import { ActivityPlotProps } from './activity-plot'

const _ActivityPlot = React.lazy(() => import('./activity-plot'))

export const ActivityPlot = (props: ActivityPlotProps) => (
<Suspense
fallback={
<div className={styles.loadingWrapper}>
<div>
<LoadingSpinner size={32} />
</div>
}
Expand Down
Loading