9c9c34fccf
Migrates `twenty-front`, `twenty-sdk`, and `twenty-front-component-renderer` from `twenty-ui-deprecated` to `twenty-ui` (mechanical import swap — the packages have API parity) and deletes the deprecated package along with its workspace/CI/config wiring. Also adds `@linaria/react`/`@linaria/core` as direct deps of `twenty-front` (it used them transitively via the deprecated package). Note: move the required status check from `ci-ui-status-check` to `ci-new-ui-status-check`. Argos: the Storybook box-model/button-reset baseline shift (the bulk of the visual diffs) is isolated in #21665 — Storybook now loads twenty-ui's global `reset.scss`, which the production app already ships. Once #21665 merges and this branch is rebased, the remaining Argos diffs are component-level visual-parity items only.
16 lines
485 B
TypeScript
16 lines
485 B
TypeScript
import { isDefined } from 'twenty-shared/utils';
|
|
import { type Nullable } from 'twenty-ui/utilities';
|
|
|
|
// TODO: we should create a custom oxlint rule that enforces the use of this function
|
|
// instead of using the `===` operator where a and b are | undefined | null
|
|
export const compareStrictlyExceptForNullAndUndefined = <A, B>(
|
|
valueA: Nullable<A>,
|
|
valueB: Nullable<B>,
|
|
) => {
|
|
if (!isDefined(valueA) && !isDefined(valueB)) {
|
|
return true;
|
|
}
|
|
|
|
return valueA === valueB;
|
|
};
|