Init AxoTooltip component

This commit is contained in:
Jamie
2026-02-09 14:26:46 -08:00
committed by GitHub
parent b11bf88244
commit d34ebaab46
17 changed files with 653 additions and 54 deletions
+19 -14
View File
@@ -1,6 +1,6 @@
// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import React, { memo, useMemo } from 'react';
import React, { memo, useMemo, useState } from 'react';
import type { CSSProperties, FC, ReactNode } from 'react';
import type { TailwindStyles } from './tw.dom.js';
import { tw } from './tw.dom.js';
@@ -8,6 +8,7 @@ import {
createStrictContext,
useStrictContext,
} from './_internal/StrictContext.dom.js';
import { AxoTooltip } from './AxoTooltip.dom.js';
const Namespace = 'AxoScrollArea';
@@ -216,6 +217,7 @@ export namespace AxoScrollArea {
scrollbarVisibility,
scrollBehavior,
} = useStrictContext(ScrollAreaConfigContext);
const [boundary, setBoundary] = useState<HTMLDivElement | null>(null);
const style = useMemo((): CSSProperties => {
const hasVerticalScrollbar = orientation !== 'horizontal';
@@ -261,19 +263,22 @@ export namespace AxoScrollArea {
}, [orientation, scrollbarWidth, scrollbarGutter]);
return (
<div
data-axo-scroll-area-viewport
className={tw(
baseViewportStyles,
ViewportScrollbarWidths[scrollbarWidth],
ViewportScrollbarGutters[scrollbarGutter],
ViewportScrollbarVisibilities[scrollbarVisibility],
ViewportScrollBehaviors[scrollBehavior]
)}
style={style}
>
{props.children}
</div>
<AxoTooltip.CollisionBoundary boundary={boundary}>
<div
ref={setBoundary}
data-axo-scroll-area-viewport
className={tw(
baseViewportStyles,
ViewportScrollbarWidths[scrollbarWidth],
ViewportScrollbarGutters[scrollbarGutter],
ViewportScrollbarVisibilities[scrollbarVisibility],
ViewportScrollBehaviors[scrollBehavior]
)}
style={style}
>
{props.children}
</div>
</AxoTooltip.CollisionBoundary>
);
});