Skip to content
Draft
Show file tree
Hide file tree
Changes from all 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
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
"@types/prop-types": "^15.7.4",
"cheerio": "^1.0.0-rc.10",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"dompurify": "^3.4.0",
"fast-glob": "^3.3.3",
"front-matter": "^4.0.2",
Expand Down Expand Up @@ -96,6 +97,7 @@
"react-medium-image-zoom": "^5.4.1",
"react-select": "^5.7.0",
"remark-gfm": "^1.0.0",
"tailwind-merge": "^2.5.5",
"typescript": "^4.6.3",
"use-keyboard-shortcut": "^1.1.6",
"util": "^0.12.4"
Expand Down
2 changes: 1 addition & 1 deletion src/components/ButtonWithTooltip/ButtonWithTooltip.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { HTMLAttributes, MouseEvent, useState, useRef } from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { button, tooltipClass, isVisible, notificationClass } from './ButtonWithTooltip.module.css';

interface Props extends HTMLAttributes<HTMLButtonElement> {
Expand Down
2 changes: 1 addition & 1 deletion src/components/CodeEditor/Chrome.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import React from 'react';
import { SmallMenuLabel } from 'src/components/Menu/Label';
import APIKeyIndicator from 'src/components/blocks/software/Code/ApiKeyIndicator';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Examples/ExamplesCheckbox.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import Icon from '@ably/ui/core/Icon';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

const ExamplesCheckbox = ({
label,
Expand Down
2 changes: 1 addition & 1 deletion src/components/Examples/ExamplesFilter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import Icon from '@ably/ui/core/Icon';
import { Input } from 'src/components/ui/Input';
import { products } from '../../data/examples';
import Button from '@ably/ui/core/Button';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import Badge from '@ably/ui/core/Badge';
import ExamplesCheckbox from './ExamplesCheckbox';
import { SelectedFilters } from './ExamplesContent';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Examples/ExamplesGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Badge from '@ably/ui/core/Badge';
import Icon from '@ably/ui/core/Icon';
import { IconName } from '@ably/ui/core/Icon/types';
import { ProductName, products as dataProducts } from '@ably/ui/core/ProductTile/data';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { Image, ImageProps } from '../Image';
import { DEFAULT_EXAMPLE_LANGUAGES } from '../../data/examples/';
import { Example } from '../../data/examples/types';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Examples/ExamplesRenderer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { updateAblyConnectionKey } from 'src/utilities/update-ably-connection-ke
import { IconName } from '@ably/ui/core/Icon/types';
import SegmentedControl from '@ably/ui/core/SegmentedControl';
import dotGrid from './images/dot-grid.svg';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { getRandomChannelName } from '../../utilities/get-random-channel-name';
// Shared tsconfig for proper ES2020+ transpilation in Sandpack
import examplesTsConfig from '../../../examples/tsconfig.json';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Homepage/PlatformAndProducts.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import ProductTile from '@ably/ui/core/ProductTile';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { Image, ImageProps, getImageFromList } from 'src/components/Image';
import type { PlatformProductsSectionData, PlatformCardData } from 'src/data/content/types';
import { navigate } from '../Link';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/Breadcrumbs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React from 'react';
import { useLayoutContext } from 'src/contexts/layout-context';
import Link from '../Link';
import Icon from '@ably/ui/core/Icon';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { hierarchicalKey } from './utils/nav';

const linkStyles =
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/CopyForLLM.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useLocation } from '@reach/router';
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import Icon from '@ably/ui/core/Icon';
import { IconName } from '@ably/ui/core/Icon/types';
import { track } from '@ably/ui/core/insights';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { useLocation } from '@reach/router';
import Icon from '@ably/ui/core/Icon';
import { IconName } from '@ably/ui/core/Icon/types';
import Status, { StatusUrl } from '@ably/ui/core/Status';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import type { PageContextType } from './Layout';
import { useLayoutContext } from 'src/contexts/layout-context';
import Button from '@ably/ui/core/Button';
Expand Down
4 changes: 2 additions & 2 deletions src/components/Layout/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import { graphql, useStaticQuery } from 'gatsby';
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
import * as Tooltip from '@radix-ui/react-tooltip';
import { throttle } from 'es-toolkit/compat';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import Icon from '@ably/ui/core/Icon';
import TabMenu from '@ably/ui/core/TabMenu';
import Logo from '@ably/ui/core/images/logo/ably-logo.svg';
import { track } from '@ably/ui/core/insights';
import { componentMaxHeight, HEADER_BOTTOM_MARGIN, HEADER_HEIGHT } from '@ably/ui/core/utils/heights';
import { componentMaxHeight, HEADER_BOTTOM_MARGIN, HEADER_HEIGHT } from 'src/utilities/heights';
import { IconName } from '@ably/ui/core/Icon/types';
import LeftSidebar from './LeftSidebar';
import ProductBar from './ProductBar';
Expand Down
4 changes: 2 additions & 2 deletions src/components/Layout/LanguageSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { useLocation } from '@reach/router';
import Badge from '@ably/ui/core/Badge';
import Icon from '@ably/ui/core/Icon';
import { IconName } from '@ably/ui/core/Icon/types';
import cn from '@ably/ui/core/utils/cn';
import { componentMaxHeight, HEADER_BOTTOM_MARGIN, HEADER_HEIGHT } from '@ably/ui/core/utils/heights';
import cn from 'src/utilities/cn';
import { componentMaxHeight, HEADER_BOTTOM_MARGIN, HEADER_HEIGHT } from 'src/utilities/heights';
import { track } from '@ably/ui/core/insights';
import { languageData, languageInfo } from 'src/data/languages';
import { LanguageKey } from 'src/data/languages/types';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/Layout.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { PageProps } from 'gatsby';
import { useLocation } from '@reach/router';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

import '../../styles/global.css';
import { Container } from 'src/components/Container';
Expand Down
4 changes: 2 additions & 2 deletions src/components/Layout/LeftSidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { useEffect, useMemo, useRef, useState } from 'react';
import { graphql, useStaticQuery } from 'gatsby';
import { useLocation } from '@reach/router';
import * as Accordion from '@radix-ui/react-accordion';
import cn from '@ably/ui/core/utils/cn';
import { HEADER_HEIGHT } from '@ably/ui/core/utils/heights';
import cn from 'src/utilities/cn';
import { HEADER_HEIGHT } from 'src/utilities/heights';
import Icon from '@ably/ui/core/Icon';

import { productData } from 'src/data';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/MDXWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import React, {
import { navigate, PageProps } from 'gatsby';
import CodeSnippet from '@ably/ui/core/CodeSnippet';
import type { CodeSnippetProps, SDKType } from '@ably/ui/core/CodeSnippet';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

import { getRandomChannelName } from '../../utilities/get-random-channel-name';

Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/ProductBar.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useMemo } from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import Icon from '@ably/ui/core/Icon';
import { IconName } from '@ably/ui/core/Icon/types';

Expand Down
4 changes: 2 additions & 2 deletions src/components/Layout/RightSidebar.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useEffect, useMemo, useRef, useState, useCallback } from 'react';
import { useLocation } from '@reach/router';
import cn from '@ably/ui/core/utils/cn';
import { componentMaxHeight, HEADER_HEIGHT, HEADER_BOTTOM_MARGIN } from '@ably/ui/core/utils/heights';
import cn from 'src/utilities/cn';
import { componentMaxHeight, HEADER_HEIGHT, HEADER_BOTTOM_MARGIN } from 'src/utilities/heights';
import { PRODUCT_BAR_HEIGHT } from './utils/heights';
import { useLayoutContext } from 'src/contexts/layout-context';
import { languageData } from 'src/data/languages';
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/mdx/Admonition.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import Aside from '../../blocks/dividers/Aside';

const LEGACY_ADMONITION_TYPES = ['new', 'updated', 'experimental', 'public-preview'];
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/mdx/MethodSignature.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useRef, useLayoutEffect, useState } from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

interface MethodSignatureProps {
children: React.ReactNode;
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/mdx/NestedTable/NestedTable.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useEffect, useMemo } from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { TableData, useNestedTable } from './NestedTableContext';
import { parseTableChildren } from './parseTable';
import { NestedTablePropertyRow } from './NestedTablePropertyRow';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

interface NestedTableExpandButtonProps {
typeName: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useMemo } from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { TableData, TableProperty, useNestedTable } from './NestedTableContext';
import { NestedTableExpandButton } from './NestedTableExpandButton';

Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/mdx/PageHeader.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

type PageHeaderProps = {
title: string;
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/mdx/Table.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

// Table Root Component
export interface TableRootProps extends React.HTMLAttributes<HTMLDivElement> {
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/mdx/Tabs.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { isValidElement, ReactNode } from 'react';
import * as RadixTabs from '@radix-ui/react-tabs';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

interface TabProps {
value: string;
Expand Down
2 changes: 1 addition & 1 deletion src/components/Layout/utils/styles.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

export const tooltipContentClassName = cn(
'px-2 py-1 bg-neutral-1000 dark:bg-neutral-300 text-neutral-200 dark:text-neutral-1100 ui-text-p3 font-medium rounded-lg relative z-50 mt-2',
Expand Down
2 changes: 1 addition & 1 deletion src/components/Menu/Label/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { FunctionComponent as FC, HTMLProps } from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

import { smallMenuLabel } from './Label.module.css';

Expand Down
2 changes: 1 addition & 1 deletion src/components/SDKsPage/Card/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Icon from '@ably/ui/core/Icon';
import Link from 'src/components/Link';
import { btn_sdks } from '../sdks.module.css';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

type ImagesSDK = {
src: string;
Expand Down
2 changes: 1 addition & 1 deletion src/components/SDKsPage/MainSection/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { container } from '../sdks.module.css';
import CardGrid from '../Card/CardGrid';
import { data } from '../data';
Expand Down
2 changes: 1 addition & 1 deletion src/components/ui/ButtonGroup.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from 'react';
import { cva, type VariantProps } from 'class-variance-authority';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';
import { Separator } from './Separator';

const buttonGroupVariants = cva(
Expand Down
2 changes: 1 addition & 1 deletion src/components/ui/Input.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

function Input({ className, type, ...props }: React.ComponentProps<'input'>) {
return (
Expand Down
2 changes: 1 addition & 1 deletion src/components/ui/Separator.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from 'react';
import * as SeparatorPrimitive from '@radix-ui/react-separator';
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

function Separator({
className,
Expand Down
2 changes: 1 addition & 1 deletion src/components/ui/Skeleton.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import cn from '@ably/ui/core/utils/cn';
import cn from 'src/utilities/cn';

function Skeleton({ className, ...props }: React.ComponentProps<'div'>) {
return (
Expand Down
10 changes: 10 additions & 0 deletions src/utilities/cn.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import clsx, { type ClassValue } from 'clsx';
import { twMerge } from 'tailwind-merge';

/**
* Merge class names with clsx and resolve Tailwind class conflicts with
* tailwind-merge. Local replacement for @ably/ui/core/utils/cn (DX-1128).
*/
const cn = (...inputs: ClassValue[]): string => twMerge(clsx(inputs));

export default cn;
11 changes: 11 additions & 0 deletions src/utilities/heights.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/**
* Layout height helpers. Local replacement for @ably/ui/core/utils/heights
* (DX-1128).
*/
export const HEADER_HEIGHT = 64;
export const HEADER_BOTTOM_MARGIN = 24;

export const componentMaxHeight = (...heights: number[]): string => {
const totalHeight = `${heights.reduce((sum, height) => sum + height, 0)}px`;
return `calc(min(100dvh, 100vh) - ${totalHeight})`;
};