Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
fdce3bb
Replaced legacy color aqua-pale
dan-rukas Aug 21, 2025
5022c03
Replaced legacy color primary-dark (muted)
dan-rukas Aug 21, 2025
dc58fcd
Replaced legacy color primary-light (highlight)
dan-rukas Aug 21, 2025
065920e
Replaced legacy color primary-active (primary)
dan-rukas Aug 22, 2025
6139605
Replaced legacy color secondary-dark (popover)
dan-rukas Aug 22, 2025
a6ae67e
Replaced legacy inputfield-main (input)
dan-rukas Aug 22, 2025
2f6fb44
Replaced legacy color secondary-light (input)
dan-rukas Aug 22, 2025
b026363
Replaced legacy color bkg-low (background)
dan-rukas Aug 22, 2025
21abad7
Replaced legacy color bkg-med (muted)
dan-rukas Aug 22, 2025
3610c50
Replaced legacy color common-bright (various)
dan-rukas Aug 22, 2025
17907df
Fix: Tooltip
dan-rukas Aug 22, 2025
7a261ee
Replaced legacy color actions-primary (primary)
dan-rukas Aug 22, 2025
333b13e
Legacy Display bug fix: Instance Number Label in Dicom Tag Browser
dan-rukas Aug 29, 2025
02693ea
Fix: adjusted width for tag browser cols
dan-rukas Aug 29, 2025
ef9314e
Progress component now matches other Dropdowns
dan-rukas Aug 29, 2025
a10fe95
Legacy component color updates
dan-rukas Aug 29, 2025
7a2b886
Merge branch 'master' into fix/replace-legacy-colors
dan-rukas Dec 16, 2025
c9434a0
Update legacy colors
dan-rukas Dec 16, 2025
6c7fb47
Color updates and fixes
dan-rukas Dec 16, 2025
fd623d6
Replaced generic text-white with text-foreground
dan-rukas Dec 16, 2025
b22a216
Replaced generic white with foreground
dan-rukas Dec 16, 2025
0e15cff
Removed hard coded colors from US and others
dan-rukas Dec 16, 2025
915db7a
Fix tables on Worklist breaking
dan-rukas Dec 16, 2025
399ec1a
Added migration guide for colors
dan-rukas Dec 16, 2025
ed3af00
Merge branch 'OHIF:master' into fix/replace-legacy-colors
dan-rukas Dec 17, 2025
eb20015
Button now uses secondary for color
dan-rukas Dec 18, 2025
2d50226
Merge branch 'OHIF:master' into fix/replace-legacy-colors
dan-rukas Dec 22, 2025
2a6b7a3
Merge branch 'OHIF:master' into fix/replace-legacy-colors
dan-rukas Jan 7, 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
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ function LogicalContourOperationOptions() {
</Tabs>
<div>{t(operation.label)}</div>
</div>
<div className="bg-primary-dark flex h-[62px] w-[88px] items-center justify-center rounded-lg">
<div className="bg-muted flex h-[62px] w-[88px] items-center justify-center rounded-lg">
<Icons.ByName name={operation.helperIcon}></Icons.ByName>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ function OHIFCornerstoneSRTextViewport(props: withAppTypes) {
const instance = displaySet.instances[0];

return (
<div className="relative flex h-full w-full flex-col overflow-auto p-4 text-white">
<div className="text-foreground relative flex h-full w-full flex-col overflow-auto p-4">
<div>
{/* The root level is always a container */}
<OHIFCornerstoneSRContainer container={instance} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function DynamicDataPanel({ servicesManager, commandsManager, tab }: withAppType
return (
<>
<div
className="flex flex-col text-white"
className="text-foreground flex flex-col"
data-cy={'dynamic-volume-panel'}
>
<PanelGenerateImage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ function WorkflowPanel({ servicesManager }: { servicesManager: ServicesManager }
return (
<div
data-cy={'workflow-panel'}
className="bg-secondary-dark mb-1 px-3 py-4"
className="bg-popover mb-1 px-3 py-4"
>
<div className="mb-1">Workflow</div>
<div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ function ViewportImageSliceLoadingIndicator({ viewportData, element }) {
<>
<div className="absolute top-0 left-0 h-full w-full bg-black opacity-50">
<div className="transparent flex h-full w-full items-center justify-center">
<p className="text-primary-light text-xl font-light">
<p className="text-highlight text-xl font-light">
<h4>Error Loading Image</h4>
<p>An error has occurred.</p>
<p>{error}</p>
Expand All @@ -68,7 +68,7 @@ function ViewportImageSliceLoadingIndicator({ viewportData, element }) {
// interacting with the mouse, since scrolling should propagate to the viewport underneath
<div className="pointer-events-none absolute top-0 left-0 h-full w-full bg-black opacity-50">
<div className="transparent flex h-full w-full items-center justify-center">
<p className="text-primary-light text-xl font-light">Loading...</p>
<p className="text-highlight text-xl font-light">Loading...</p>
</div>
</div>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,14 @@ function DefaultAccordion(props) {
return null;
}

if (Boolean(asChild)) {
if (asChild) {
return React.cloneElement(props.children, props);
}

return (
<Accordion
type={grouping.type || 'multiple'}
className="text-white"
className="text-foreground"
defaultValue={defaultValue}
>
{[...groups.entries()].map(([key, group]) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ function DicomUploadProgress({

const getNumCompletedAndTimeRemainingComponent = (): ReactElement => {
return (
<div className="bg-muted flex h-14 items-center px-1 pb-4 text-lg text-white">
<div className="bg-muted text-foreground flex h-14 items-center px-1 pb-4 text-lg">
{numFilesCompleted === dicomFileUploaderArr.length ? (
<>
<span className={NO_WRAP_ELLIPSIS_CLASS_NAMES}>{`${dicomFileUploaderArr.length} ${
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ const DicomUploadProgressItem = memo(
<div className="self-top flex w-0 shrink grow flex-col gap-1">
<div className="flex gap-4">
<div className="flex w-6 shrink-0 items-center justify-center">{getStatusIcon()}</div>
<div className="overflow-hidden text-ellipsis whitespace-nowrap text-white">
<div className="text-foreground overflow-hidden text-ellipsis whitespace-nowrap">
{dicomFileUploader.getFileName()}
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,9 @@ function ModalityLoadBadge({ viewportId }: { viewportId: string }) {
return (
<div
data-cy={`ModalityLoadBadge-${viewportId}`}
className="flex h-6 cursor-default text-sm leading-6 text-white"
className="text-foreground flex h-6 cursor-default text-sm leading-6"
>
<div className="bg-customgray-100 flex min-w-[45px] items-center rounded-l-xl rounded-r p-1">
<div className="bg-popover flex min-w-[45px] items-center rounded-l-xl rounded-r p-1">
<StatusIcon />
<span className="ml-1">{statusInfo.type}</span>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ function ViewportOrientationMenu({
<div className="flex-1 text-left">Acquisition</div>
</Button>
{/* Divider */}
<div className="mx-1 my-2 border-t border-white/20" />
<div className="border-input mx-1 my-2 border-t" />
<Button
variant="ghost"
className="flex h-7 w-full flex-shrink-0 items-center justify-start self-stretch px-1 py-0"
Expand Down
2 changes: 1 addition & 1 deletion extensions/cornerstone/src/panels/PanelMeasurement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export default function PanelMeasurement(props): React.ReactNode {
return EmptyComponent ? (
<EmptyComponent items={displayMeasurements} />
) : (
<span className="text-white">No Measurements</span>
<span className="text-foreground">No Measurements</span>
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ function DataSourceConfigurationComponent({
}, [configurationAPI, configuredItems, showConfigurationModal]);

return configuredItems ? (
<div className="text-aqua-pale flex items-center overflow-hidden">
<div className="text-muted-foreground flex items-center overflow-hidden">
<Icons.Settings
className="mr-2.5 h-3.5 w-3.5 shrink-0 cursor-pointer"
onClick={showConfigurationModal}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,24 +101,24 @@ function DataSourceConfigurationModalComponent({
itemIndex < selectedItems.length
? classNames(
'bg-black/[.4]',
itemIndex !== itemLabels.length - 1 ? 'hover:bg-transparent active:bg-secondary-dark' : ''
itemIndex !== itemLabels.length - 1 ? 'hover:bg-transparent active:bg-popover' : ''
)
: 'bg-transparent';

const getSelectedItemBorderClasses = itemIndex =>
itemIndex === currentSelectedItemIndex + 1
? classNames('border-2', 'border-solid', 'border-primary-light')
? classNames('border-2', 'border-solid', 'border-highlight')
: itemIndex < selectedItems.length
? 'border border-solid border-primary-active hover:border-primary-light active:border-white'
: 'border border-dashed border-secondary-light';
? 'border border-solid border-primary hover:border-highlight active:border-white'
: 'border border-dashed border-input';

const getSelectedItemTextClasses = itemIndex =>
itemIndex <= selectedItems.length ? 'text-primary-light' : 'text-primary';
itemIndex <= selectedItems.length ? 'text-highlight' : 'text-primary';

const getErrorComponent = (): ReactElement => {
return (
<div className="flex min-h-[1px] grow flex-col gap-4">
<div className="text-primary-light text-[20px]">
<div className="text-highlight text-[20px]">
{t(`Error fetching ${itemLabels[selectedItems.length]} list`)}
</div>
<div className="grow bg-black p-4 text-[14px]">{errorMessage}</div>
Expand Down Expand Up @@ -159,7 +159,12 @@ function DataSourceConfigurationModalComponent({
<div className={classNames(NO_WRAP_ELLIPSIS_CLASS_NAMES)}>{t(itemLabel)}</div>
</div>
{itemLabelIndex < selectedItems.length ? (
<div className={classNames('text-[14px] text-white', NO_WRAP_ELLIPSIS_CLASS_NAMES)}>
<div
className={classNames(
'text-foreground text-[14px]',
NO_WRAP_ELLIPSIS_CLASS_NAMES
)}
>
{selectedItems[itemLabelIndex].name}
</div>
) : (
Expand Down
4 changes: 2 additions & 2 deletions extensions/default/src/DicomTagBrowser/DicomTagBrowser.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ const DicomTagBrowser = ({
return (
<div className="dicom-tag-browser-content bg-muted">
<div className="mb-6 flex flex-row items-start pl-1">
<div className="flex w-full flex-row items-start gap-4">
<div className="flex w-full flex-row items-start gap-6">
<div className="flex w-1/3 flex-col">
<span className="text-muted-foreground flex h-6 items-center pb-2 text-base">
Series
Expand Down Expand Up @@ -167,7 +167,7 @@ const DicomTagBrowser = ({
min={1}
max={activeDisplaySet?.images?.length}
step={1}
className="pt-4"
className="pt-3"
/>
</div>
)}
Expand Down
14 changes: 6 additions & 8 deletions extensions/default/src/DicomTagBrowser/DicomTagTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const RowComponent = ({
<div
style={{ ...style, ...rowStyle }}
className={classNames(
'hover:bg-secondary-main border-secondary-light text-foreground flex w-full flex-row items-center break-all bg-black text-base transition duration-300',
'hover:bg-primary/25 border-input text-foreground flex w-full flex-row items-center break-all bg-black text-base',
lineHeightClassName
)}
key={keyPrefix}
Expand Down Expand Up @@ -74,39 +74,37 @@ const RowComponent = ({
function ColumnHeaders({ tagRef, vrRef, keywordRef, valueRef }) {
return (
<div
className={classNames(
'bg-secondary-dark ohif-scrollbar flex w-full flex-row overflow-y-scroll'
)}
className={classNames('bg-popover ohif-scrollbar flex w-full flex-row overflow-y-scroll')}
style={rowVerticalPaddingStyle}
>
<div className="w-4/24 px-3">
<label
ref={tagRef}
className="flex flex-1 select-none flex-col pl-1 text-lg text-white"
className="text-foreground flex flex-1 select-none flex-col pl-1 text-lg"
>
<span className="flex flex-row items-center focus:outline-none">Tag</span>
</label>
</div>
<div className="w-2/24 px-3">
<label
ref={vrRef}
className="flex flex-1 select-none flex-col pl-1 text-lg text-white"
className="text-foreground flex flex-1 select-none flex-col pl-1 text-lg"
>
<span className="flex flex-row items-center focus:outline-none">VR</span>
</label>
</div>
<div className="w-6/24 px-3">
<label
ref={keywordRef}
className="flex flex-1 select-none flex-col pl-1 text-lg text-white"
className="text-foreground flex flex-1 select-none flex-col pl-1 text-lg"
>
<span className="flex flex-row items-center focus:outline-none">Keyword</span>
</label>
</div>
<div className="w-5/24 grow px-3">
<label
ref={valueRef}
className="flex flex-1 select-none flex-col pl-1 text-lg text-white"
className="text-foreground flex flex-1 select-none flex-col pl-1 text-lg"
>
<span className="flex flex-row items-center focus:outline-none">Value</span>
</label>
Expand Down
4 changes: 2 additions & 2 deletions extensions/default/src/Panels/DataSourceSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ function DataSourceSelector() {
return (
<div style={{ width: '100%', height: '100%' }}>
<div className="flex h-screen w-screen items-center justify-center">
<div className="bg-secondary-dark mx-auto space-y-2 rounded-lg py-8 px-8 drop-shadow-md">
<div className="bg-popover mx-auto space-y-2 rounded-lg py-8 px-8 drop-shadow-md">
<img
className="mx-auto block h-14"
src="./ohif-logo.svg"
Expand All @@ -27,7 +27,7 @@ function DataSourceSelector() {
.filter(it => it.sourceName !== 'dicomjson' && it.sourceName !== 'dicomlocal')
.map(ds => (
<div key={ds.sourceName}>
<h1 className="text-white">
<h1 className="text-foreground">
{ds.configuration?.friendlyName || ds.friendlyName}
</h1>
<Button
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ function PanelStudyBrowserHeader({
key={index}
aria-label={viewPreset.id}
value={viewPreset.id}
className="text-actions-primary"
className="text-primary"
>
{React.createElement(Icons[viewPreset.iconName] || Icons.MissingIcon)}
</ToggleGroupItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ function HeaderPatientInfo({ servicesManager, appConfig }: withAppTypes) {

return (
<div
className="hover:bg-primary-dark flex cursor-pointer items-center justify-center gap-1 rounded-lg"
className="hover:bg-muted flex cursor-pointer items-center justify-center gap-1 rounded-lg"
onClick={handleOnClick}
>
{isMixedPatients ? (
Expand All @@ -51,10 +51,10 @@ function HeaderPatientInfo({ servicesManager, appConfig }: withAppTypes) {
<div className="flex flex-col justify-center">
{expanded ? (
<>
<div className="self-start text-[13px] font-bold text-white">
<div className="text-foreground self-start text-[13px] font-bold">
{formattedPatientName}
</div>
<div className="text-aqua-pale flex gap-2 text-[11px]">
<div className="text-muted-foreground flex gap-2 text-[11px]">
<div>{formattedPatientID}</div>
<div>{patientInfo.PatientSex}</div>
<div>{patientInfo.PatientDOB}</div>
Expand Down
4 changes: 2 additions & 2 deletions extensions/default/src/ViewerLayout/ViewerHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ function ViewerHeader({ appConfig }: withAppTypes<{ appConfig: AppTypes.Config }
<div className="text-primary flex cursor-pointer items-center">
<Button
variant="ghost"
className="hover:bg-primary-dark"
className="hover:bg-muted"
onClick={() => {
commandsManager.run('undo');
}}
Expand All @@ -109,7 +109,7 @@ function ViewerHeader({ appConfig }: withAppTypes<{ appConfig: AppTypes.Config }
</Button>
<Button
variant="ghost"
className="hover:bg-primary-dark"
className="hover:bg-muted"
onClick={() => {
commandsManager.run('redo');
}}
Expand Down
2 changes: 1 addition & 1 deletion extensions/default/src/utils/Toolbox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ export function Toolbox({ buttonSectionId, title }: ToolboxProps) {
);
})}
{activeToolOptions && (
<div className="bg-primary-dark mt-1 h-auto px-2">
<div className="bg-muted mt-1 h-auto px-2">
<ToolSettings options={activeToolOptions} />
</div>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
pointer-events: none !important;
}

.DicomMicroscopyViewer .text-primary-light {
.DicomMicroscopyViewer .text-highlight {
font-size: 14px;
color: yellow;
font-weight: normal;
}

.DicomMicroscopyViewer .text-primary-light span {
.DicomMicroscopyViewer .text-highlight span {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ export const generateFromConfig = ({ config, overlayData, ...props }) => {
bottomLeft?: OverlayItem[];
bottomRight?: OverlayItem[];
} = overlayData ?? {};
const topLeftClass = 'top-viewport left-viewport text-primary-light';
const topRightClass = 'top-viewport right-viewport-scrollbar text-primary-light';
const bottomRightClass = 'bottom-viewport right-viewport-scrollbar text-primary-light';
const bottomLeftClass = 'bottom-viewport left-viewport text-primary-light';
const topLeftClass = 'top-viewport left-viewport text-highlight';
const topRightClass = 'top-viewport right-viewport-scrollbar text-highlight';
const bottomRightClass = 'bottom-viewport right-viewport-scrollbar text-highlight';
const bottomLeftClass = 'bottom-viewport left-viewport text-highlight';
const overlay = 'absolute pointer-events-none microscopy-viewport-overlay';

return (
Expand Down
4 changes: 2 additions & 2 deletions extensions/dicom-microscopy/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ const extension: Types.Extensions.Extension = {
return {
disabled: false,
className: isPrimaryActive
? '!text-black bg-primary-light'
: '!text-common-bright hover:!bg-primary-dark hover:!text-primary-light',
? '!text-black bg-highlight'
: '!text-foreground/80 hover:!bg-muted hover:!text-highlight',
// Todo: isActive right now is used for nested buttons where the primary
// button needs to be fully rounded (vs partial rounded) when active
// otherwise it does not have any other use
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,13 @@ function OHIFCornerstonePdfViewport({ displaySets, viewportId = 'pdf-viewport' }

return (
<div
className="bg-primary-black h-full w-full text-white"
className="bg-primary-black text-foreground h-full w-full"
onClick={makePdfScrollable}
ref={el => {
viewportElementRef.current = el;
if (el) viewportRef.register(el);
if (el) {
viewportRef.register(el);
}
}}
data-viewport-id={viewportId}
>
Expand Down
2 changes: 1 addition & 1 deletion extensions/tmtv/src/Panels/PanelPetSUV.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ export default function PanelPetSUV() {
<PanelSection defaultOpen={true}>
<PanelSection.Header>{t('Patient Information')}</PanelSection.Header>
<PanelSection.Content>
<div className="bg-primary-dark flex flex-col gap-3 p-2">
<div className="bg-muted flex flex-col gap-3 p-2">
<InputRow>
<InputRow.Label>{t('Patient Sex')}</InputRow.Label>
<InputRow.Input
Expand Down
Loading
Loading