import React from 'react' import { type Meta, type StoryObj } from '@storybook/react' import isChromatic from 'chromatic' import { Button } from '~components/Button' import { FieldMessage } from '~components/FieldMessage' import { Focusable } from '~components/Focusable' import { Icon } from '~components/Icon' import { Input } from '~components/Input' import { Label } from '~components/Label' import { Text } from '~components/Text' import { Tooltip, TooltipTrigger } from '../index' import * as TestStories from './Tooltip.spec.stories' const meta = { title: 'Components/Tooltip/Docs Assets', component: Tooltip, parameters: { layout: 'centered', a11y: { disable: true }, }, args: { defaultOpen: isChromatic(), }, argTypes: { UNSTABLE_portalContainer: { control: false, table: { disable: true }, }, triggerRef: { control: false }, }, } satisfies Meta export default meta type Story = StoryObj export const Playground: Story = { render: ({ defaultOpen: _, isOpen, ...args }) => ( Tooltip content ), } export const Primary: Story = { render: () => ( Add something ), } export const Placement: Story = { ...TestStories.Placement, } export const DoFieldTooltip: Story = { render: () => (
), } export const DontFieldTooltip: Story = { parameters: { docs: { source: { type: 'dynamic' }, }, }, render: () => (
Password must be at least 8 characters
), } export const DoConcise: Story = { parameters: { docs: { source: { type: 'dynamic' }, }, }, render: () => (
Add topic to agenda
), } export const DontConcise: Story = { parameters: { docs: { source: { type: 'dynamic' }, }, }, render: () => (
Add Topic to agenda. This will create a new topic where you can discuss recent work with your manager.
), } export const ShouldFlip: Story = { play: undefined, render: () => (
Tooltip content Tooltip content
), parameters: { viewport: { viewports: { small: { name: 'small', styles: { width: '300px', height: '300px', }, }, }, defaultViewport: 'small', }, }, } export const UncontrolledState: Story = { play: undefined, args: { placement: 'end', shouldFlip: false }, render: () => { const [isOpen, setIsOpen] = React.useState(false) return (
Tooltip content
) }, } export const TriggerDo: Story = { play: undefined, args: { placement: 'end', shouldFlip: false }, render: () => ( This is an example of an inline{' '} tooltip Tooltip label ), } export const TriggerDont: Story = { play: undefined, args: { placement: 'end', shouldFlip: false }, render: () => ( This is an example of an inline{' '} tooltip Tooltip label ), } export const TriggerLinkDescription: Story = { play: undefined, args: { placement: 'end', shouldFlip: false }, render: () => ( Use tooltips inline when you want to{' '} describe a link Tooltip label . ), }