@windstream/react-shared-components 0.0.93 → 0.0.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +635 -635
- package/dist/contentful/index.d.ts +28 -31
- package/dist/contentful/index.esm.js +1 -1
- package/dist/contentful/index.esm.js.map +1 -1
- package/dist/contentful/index.js +1 -1
- package/dist/contentful/index.js.map +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +177 -177
- package/src/components/accordion/Accordion.stories.tsx +230 -230
- package/src/components/accordion/index.tsx +9 -2
- package/src/components/accordion/types.ts +11 -10
- package/src/components/alert-card/AlertCard.stories.tsx +171 -171
- package/src/components/alert-card/index.tsx +33 -33
- package/src/components/alert-card/types.ts +11 -11
- package/src/components/brand-button/BrandButton.stories.tsx +223 -223
- package/src/components/brand-button/helpers.ts +35 -35
- package/src/components/brand-button/index.tsx +115 -115
- package/src/components/brand-button/types.ts +37 -37
- package/src/components/button/Button.stories.tsx +108 -108
- package/src/components/button/index.tsx +27 -27
- package/src/components/button/types.ts +14 -14
- package/src/components/call-button/CallButton.stories.tsx +324 -324
- package/src/components/call-button/index.tsx +86 -86
- package/src/components/call-button/types.ts +11 -11
- package/src/components/checkbox/Checkbox.stories.tsx +247 -247
- package/src/components/checkbox/index.tsx +197 -197
- package/src/components/checkbox/types.ts +27 -27
- package/src/components/checklist/Checklist.stories.tsx +150 -150
- package/src/components/checklist/index.tsx +55 -55
- package/src/components/checklist/types.ts +14 -14
- package/src/components/collapse/Collapse.stories.tsx +255 -255
- package/src/components/collapse/index.tsx +46 -46
- package/src/components/collapse/types.ts +6 -6
- package/src/components/divider/Divider.stories.tsx +205 -205
- package/src/components/divider/index.tsx +22 -22
- package/src/components/divider/type.ts +3 -3
- package/src/components/image/Image.stories.tsx +113 -113
- package/src/components/image/index.tsx +25 -25
- package/src/components/image/types.ts +40 -40
- package/src/components/input/Input.stories.tsx +325 -325
- package/src/components/input/index.tsx +177 -177
- package/src/components/input/types.ts +37 -37
- package/src/components/link/Link.stories.tsx +163 -163
- package/src/components/link/types.ts +25 -25
- package/src/components/list/List.stories.tsx +272 -272
- package/src/components/list/index.tsx +88 -88
- package/src/components/list/list-item/index.tsx +38 -38
- package/src/components/list/list-item/types.ts +13 -13
- package/src/components/list/types.ts +29 -29
- package/src/components/material-icon/MaterialIcon.stories.tsx +322 -322
- package/src/components/material-icon/constants.ts +98 -98
- package/src/components/material-icon/index.tsx +47 -47
- package/src/components/material-icon/types.ts +31 -31
- package/src/components/modal/Modal.stories.tsx +171 -171
- package/src/components/modal/index.tsx +164 -164
- package/src/components/modal/types.ts +24 -24
- package/src/components/next-image/index.tsx +32 -32
- package/src/components/next-image/types.ts +1 -1
- package/src/components/radio-button/RadioButton.stories.tsx +307 -307
- package/src/components/radio-button/index.tsx +75 -75
- package/src/components/radio-button/types.ts +21 -21
- package/src/components/see-more/SeeMore.stories.tsx +181 -181
- package/src/components/see-more/index.tsx +44 -44
- package/src/components/see-more/types.ts +4 -4
- package/src/components/select/Select.stories.tsx +411 -411
- package/src/components/select/index.tsx +150 -150
- package/src/components/select/types.ts +35 -35
- package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
- package/src/components/select-plan-button/index.tsx +31 -31
- package/src/components/select-plan-button/types.ts +5 -5
- package/src/components/skeleton/Skeleton.stories.tsx +179 -179
- package/src/components/skeleton/index.tsx +61 -61
- package/src/components/skeleton/types.ts +4 -4
- package/src/components/spinner/Spinner.stories.tsx +335 -335
- package/src/components/spinner/index.tsx +44 -44
- package/src/components/spinner/types.ts +5 -5
- package/src/components/text/Text.stories.tsx +321 -321
- package/src/components/text/index.tsx +25 -25
- package/src/components/text/types.ts +45 -45
- package/src/components/tooltip/Tooltip.stories.tsx +219 -219
- package/src/components/tooltip/index.tsx +74 -74
- package/src/components/tooltip/types.ts +7 -7
- package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
- package/src/components/view-cart-button/index.tsx +42 -42
- package/src/components/view-cart-button/types.ts +5 -5
- package/src/contentful/blocks/accordion/index.tsx +3 -1
- package/src/contentful/blocks/button/Button.stories.tsx +40 -40
- package/src/contentful/blocks/button/index.tsx +3 -1
- package/src/contentful/blocks/button/types.ts +32 -31
- package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
- package/src/contentful/blocks/callout/index.tsx +66 -66
- package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
- package/src/contentful/blocks/cards/index.tsx +13 -13
- package/src/contentful/blocks/cards/product-card/index.tsx +199 -199
- package/src/contentful/blocks/cards/product-card/types.ts +21 -21
- package/src/contentful/blocks/cards/simple-card/index.tsx +12 -1
- package/src/contentful/blocks/cards/simple-card/types.ts +2 -5
- package/src/contentful/blocks/cards/testimonial-card/index.tsx +88 -88
- package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
- package/src/contentful/blocks/cards/types.ts +1 -1
- package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
- package/src/contentful/blocks/carousel/helper.tsx +348 -349
- package/src/contentful/blocks/carousel/index.tsx +68 -68
- package/src/contentful/blocks/carousel/types.ts +139 -139
- package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
- package/src/contentful/blocks/cta-callout/index.tsx +54 -54
- package/src/contentful/blocks/cta-callout/types.ts +22 -22
- package/src/contentful/blocks/find-kinetic/index.tsx +124 -124
- package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
- package/src/contentful/blocks/floating-banner/types.ts +22 -22
- package/src/contentful/blocks/footer/Footer.stories.tsx +30 -30
- package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
- package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -28
- package/src/contentful/blocks/image-promo-bar/index.tsx +231 -231
- package/src/contentful/blocks/image-promo-bar/types.ts +44 -44
- package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -93
- package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -46
- package/src/contentful/blocks/modal/constants.ts +53 -53
- package/src/contentful/blocks/modal/index.tsx +91 -91
- package/src/contentful/blocks/modal/types.ts +12 -12
- package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +111 -111
- package/src/contentful/blocks/navigation/index.tsx +385 -385
- package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +80 -80
- package/src/contentful/blocks/navigation/types.ts +41 -41
- package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
- package/src/contentful/blocks/primary-hero/index.tsx +228 -228
- package/src/contentful/blocks/primary-hero/types.ts +35 -35
- package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
- package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
- package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
- package/src/contentful/blocks/text/Text.stories.tsx +23 -23
- package/src/contentful/blocks/text/index.tsx +12 -12
- package/src/contentful/blocks/text/types.ts +1 -1
- package/src/contentful/index.ts +57 -57
- package/src/hooks/use-body-scroll-lock.ts +34 -34
- package/src/hooks/use-outside-click.ts +17 -17
- package/src/index.ts +96 -96
- package/src/next/index.ts +5 -5
- package/src/setupTests.ts +46 -46
- package/src/stories/DocsTemplate.tsx +24 -24
- package/src/styles/globals.css +343 -343
- package/src/types/global.d.ts +9 -9
- package/src/types/micro-components.ts +89 -89
- package/src/utils/index.ts +49 -49
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import React, { forwardRef } from "react";
|
|
4
|
-
import { TextProps, TextVariant } from "./types";
|
|
5
|
-
|
|
6
|
-
export const Text = forwardRef<HTMLElement, TextProps>(
|
|
7
|
-
({ children, as, className = "", style, ...props }, ref) => {
|
|
8
|
-
const elementType = as || "p";
|
|
9
|
-
|
|
10
|
-
return React.createElement(
|
|
11
|
-
elementType,
|
|
12
|
-
{
|
|
13
|
-
ref,
|
|
14
|
-
className,
|
|
15
|
-
style,
|
|
16
|
-
...props,
|
|
17
|
-
},
|
|
18
|
-
children
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
);
|
|
22
|
-
|
|
23
|
-
Text.displayName = "Text";
|
|
24
|
-
|
|
25
|
-
export type { TextProps, TextVariant };
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import React, { forwardRef } from "react";
|
|
4
|
+
import { TextProps, TextVariant } from "./types";
|
|
5
|
+
|
|
6
|
+
export const Text = forwardRef<HTMLElement, TextProps>(
|
|
7
|
+
({ children, as, className = "", style, ...props }, ref) => {
|
|
8
|
+
const elementType = as || "p";
|
|
9
|
+
|
|
10
|
+
return React.createElement(
|
|
11
|
+
elementType,
|
|
12
|
+
{
|
|
13
|
+
ref,
|
|
14
|
+
className,
|
|
15
|
+
style,
|
|
16
|
+
...props,
|
|
17
|
+
},
|
|
18
|
+
children
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
Text.displayName = "Text";
|
|
24
|
+
|
|
25
|
+
export type { TextProps, TextVariant };
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import { type CSSProperties, type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
-
|
|
3
|
-
export type TextVariant =
|
|
4
|
-
| "heading1"
|
|
5
|
-
| "heading2"
|
|
6
|
-
| "heading3"
|
|
7
|
-
| "heading4"
|
|
8
|
-
| "heading5"
|
|
9
|
-
| "heading6"
|
|
10
|
-
| "subheading1"
|
|
11
|
-
| "subheading2"
|
|
12
|
-
| "subheading3"
|
|
13
|
-
| "subheading4"
|
|
14
|
-
| "subheading5"
|
|
15
|
-
| "subheading6"
|
|
16
|
-
| "body1"
|
|
17
|
-
| "body2"
|
|
18
|
-
| "body3"
|
|
19
|
-
| "footnote"
|
|
20
|
-
| "micro"
|
|
21
|
-
| "label1"
|
|
22
|
-
| "label2"
|
|
23
|
-
| "label3"
|
|
24
|
-
| "label4"
|
|
25
|
-
| "error"
|
|
26
|
-
| "unstyled";
|
|
27
|
-
export type TextWeight =
|
|
28
|
-
| "thin"
|
|
29
|
-
| "normal"
|
|
30
|
-
| "medium"
|
|
31
|
-
| "semibold"
|
|
32
|
-
| "bold"
|
|
33
|
-
| "extrabold"
|
|
34
|
-
| "black"
|
|
35
|
-
| undefined;
|
|
36
|
-
export interface TextProps extends HTMLAttributes<HTMLElement> {
|
|
37
|
-
/** Content to render inside the text element */
|
|
38
|
-
children?: ReactNode;
|
|
39
|
-
/** Custom HTML element to render as */
|
|
40
|
-
as?: keyof import("react").JSX.IntrinsicElements;
|
|
41
|
-
/** Custom className for the text */
|
|
42
|
-
className?: string;
|
|
43
|
-
/** Custom styles */
|
|
44
|
-
style?: CSSProperties;
|
|
45
|
-
}
|
|
1
|
+
import { type CSSProperties, type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
export type TextVariant =
|
|
4
|
+
| "heading1"
|
|
5
|
+
| "heading2"
|
|
6
|
+
| "heading3"
|
|
7
|
+
| "heading4"
|
|
8
|
+
| "heading5"
|
|
9
|
+
| "heading6"
|
|
10
|
+
| "subheading1"
|
|
11
|
+
| "subheading2"
|
|
12
|
+
| "subheading3"
|
|
13
|
+
| "subheading4"
|
|
14
|
+
| "subheading5"
|
|
15
|
+
| "subheading6"
|
|
16
|
+
| "body1"
|
|
17
|
+
| "body2"
|
|
18
|
+
| "body3"
|
|
19
|
+
| "footnote"
|
|
20
|
+
| "micro"
|
|
21
|
+
| "label1"
|
|
22
|
+
| "label2"
|
|
23
|
+
| "label3"
|
|
24
|
+
| "label4"
|
|
25
|
+
| "error"
|
|
26
|
+
| "unstyled";
|
|
27
|
+
export type TextWeight =
|
|
28
|
+
| "thin"
|
|
29
|
+
| "normal"
|
|
30
|
+
| "medium"
|
|
31
|
+
| "semibold"
|
|
32
|
+
| "bold"
|
|
33
|
+
| "extrabold"
|
|
34
|
+
| "black"
|
|
35
|
+
| undefined;
|
|
36
|
+
export interface TextProps extends HTMLAttributes<HTMLElement> {
|
|
37
|
+
/** Content to render inside the text element */
|
|
38
|
+
children?: ReactNode;
|
|
39
|
+
/** Custom HTML element to render as */
|
|
40
|
+
as?: keyof import("react").JSX.IntrinsicElements;
|
|
41
|
+
/** Custom className for the text */
|
|
42
|
+
className?: string;
|
|
43
|
+
/** Custom styles */
|
|
44
|
+
style?: CSSProperties;
|
|
45
|
+
}
|
|
@@ -1,219 +1,219 @@
|
|
|
1
|
-
import { Tooltip } from "./index";
|
|
2
|
-
|
|
3
|
-
import { DocsPage } from "@shared/stories/DocsTemplate";
|
|
4
|
-
import type { Meta, StoryObj } from "@storybook/react";
|
|
5
|
-
|
|
6
|
-
const meta: Meta<typeof Tooltip> = {
|
|
7
|
-
title: "Components/Tooltip",
|
|
8
|
-
component: Tooltip,
|
|
9
|
-
tags: ["autodocs"],
|
|
10
|
-
parameters: {
|
|
11
|
-
layout: "centered",
|
|
12
|
-
docs: {
|
|
13
|
-
page: DocsPage,
|
|
14
|
-
description: {
|
|
15
|
-
component:
|
|
16
|
-
"A tooltip component that displays additional information when hovering over an element.",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
argTypes: {
|
|
21
|
-
tooltipMsg: {
|
|
22
|
-
control: { type: "text" },
|
|
23
|
-
description: "Tooltip message to display",
|
|
24
|
-
},
|
|
25
|
-
className: {
|
|
26
|
-
control: { type: "text" },
|
|
27
|
-
description: "Additional CSS classes",
|
|
28
|
-
},
|
|
29
|
-
children: {
|
|
30
|
-
control: { type: "text" },
|
|
31
|
-
description: "Element that triggers the tooltip",
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
args: {
|
|
35
|
-
tooltipMsg: "This is a tooltip message",
|
|
36
|
-
children: "Hover me",
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export default meta;
|
|
41
|
-
type Story = StoryObj<typeof meta>;
|
|
42
|
-
|
|
43
|
-
// Default tooltip
|
|
44
|
-
export const Default: Story = {
|
|
45
|
-
args: {},
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
// With message
|
|
49
|
-
export const WithMessage: Story = {
|
|
50
|
-
args: {
|
|
51
|
-
tooltipMsg: "This is a helpful tooltip message",
|
|
52
|
-
children: "Hover to see tooltip",
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// With button
|
|
57
|
-
export const WithButton: Story = {
|
|
58
|
-
args: {
|
|
59
|
-
tooltipMsg: "Click to submit the form",
|
|
60
|
-
children: (
|
|
61
|
-
<button className="bg-fill-brand text-inverse rounded px-4 py-2">
|
|
62
|
-
Submit
|
|
63
|
-
</button>
|
|
64
|
-
),
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// With icon
|
|
69
|
-
export const WithIcon: Story = {
|
|
70
|
-
args: {
|
|
71
|
-
tooltipMsg: "More information",
|
|
72
|
-
children: (
|
|
73
|
-
<span className="bg-surface-secondary inline-flex h-8 w-8 cursor-help items-center justify-center rounded-full text-icon-info">
|
|
74
|
-
i
|
|
75
|
-
</span>
|
|
76
|
-
),
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
// With link
|
|
81
|
-
export const WithLink: Story = {
|
|
82
|
-
args: {
|
|
83
|
-
tooltipMsg: "Visit our documentation",
|
|
84
|
-
children: (
|
|
85
|
-
<a
|
|
86
|
-
href="#"
|
|
87
|
-
className="text-text-brand underline hover:text-text-brand-hover"
|
|
88
|
-
>
|
|
89
|
-
Learn more
|
|
90
|
-
</a>
|
|
91
|
-
),
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
// Long message
|
|
96
|
-
export const LongMessage: Story = {
|
|
97
|
-
args: {
|
|
98
|
-
tooltipMsg:
|
|
99
|
-
"This is a longer tooltip message that demonstrates how the tooltip handles extended text content. It should wrap appropriately to remain readable.",
|
|
100
|
-
children: "Hover for long message",
|
|
101
|
-
},
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
// Different children
|
|
105
|
-
export const DifferentChildren: Story = {
|
|
106
|
-
render: () => (
|
|
107
|
-
<div className="flex flex-wrap items-center gap-4">
|
|
108
|
-
<Tooltip tooltipMsg="Text tooltip">
|
|
109
|
-
<span className="cursor-help underline">Text</span>
|
|
110
|
-
</Tooltip>
|
|
111
|
-
<Tooltip tooltipMsg="Button tooltip">
|
|
112
|
-
<button className="bg-fill-brand text-inverse rounded px-4 py-2">
|
|
113
|
-
Button
|
|
114
|
-
</button>
|
|
115
|
-
</Tooltip>
|
|
116
|
-
<Tooltip tooltipMsg="Icon tooltip">
|
|
117
|
-
<span className="bg-surface-secondary inline-flex h-8 w-8 cursor-help items-center justify-center rounded-full text-icon-info">
|
|
118
|
-
?
|
|
119
|
-
</span>
|
|
120
|
-
</Tooltip>
|
|
121
|
-
<Tooltip tooltipMsg="Link tooltip">
|
|
122
|
-
<a href="#" className="text-text-brand underline">
|
|
123
|
-
Link
|
|
124
|
-
</a>
|
|
125
|
-
</Tooltip>
|
|
126
|
-
</div>
|
|
127
|
-
),
|
|
128
|
-
parameters: {
|
|
129
|
-
docs: {
|
|
130
|
-
description: {
|
|
131
|
-
story: "Tooltip with different types of children elements.",
|
|
132
|
-
},
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
// Custom styling
|
|
138
|
-
export const CustomStyling: Story = {
|
|
139
|
-
args: {
|
|
140
|
-
tooltipMsg: "Custom styled tooltip",
|
|
141
|
-
className: "custom-tooltip",
|
|
142
|
-
children: "Hover me",
|
|
143
|
-
},
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
// Multiple tooltips
|
|
147
|
-
export const Multiple: Story = {
|
|
148
|
-
render: () => (
|
|
149
|
-
<div className="space-y-4">
|
|
150
|
-
<div className="flex gap-4">
|
|
151
|
-
<Tooltip tooltipMsg="First tooltip">
|
|
152
|
-
<button className="bg-surface-secondary rounded px-4 py-2 text-text">
|
|
153
|
-
Button 1
|
|
154
|
-
</button>
|
|
155
|
-
</Tooltip>
|
|
156
|
-
<Tooltip tooltipMsg="Second tooltip">
|
|
157
|
-
<button className="bg-surface-secondary rounded px-4 py-2 text-text">
|
|
158
|
-
Button 2
|
|
159
|
-
</button>
|
|
160
|
-
</Tooltip>
|
|
161
|
-
<Tooltip tooltipMsg="Third tooltip">
|
|
162
|
-
<button className="bg-surface-secondary rounded px-4 py-2 text-text">
|
|
163
|
-
Button 3
|
|
164
|
-
</button>
|
|
165
|
-
</Tooltip>
|
|
166
|
-
</div>
|
|
167
|
-
</div>
|
|
168
|
-
),
|
|
169
|
-
parameters: {
|
|
170
|
-
docs: {
|
|
171
|
-
description: {
|
|
172
|
-
story: "Multiple tooltips displayed together.",
|
|
173
|
-
},
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
// All variants showcase
|
|
179
|
-
export const AllVariants: Story = {
|
|
180
|
-
render: () => (
|
|
181
|
-
<div className="max-w-2xl w-full space-y-8">
|
|
182
|
-
<div>
|
|
183
|
-
<h3 className="mb-3 text-lg font-semibold">With Text</h3>
|
|
184
|
-
<Tooltip tooltipMsg="This is a tooltip message">
|
|
185
|
-
<span className="cursor-help underline">Hover me</span>
|
|
186
|
-
</Tooltip>
|
|
187
|
-
</div>
|
|
188
|
-
<div>
|
|
189
|
-
<h3 className="mb-3 text-lg font-semibold">With Button</h3>
|
|
190
|
-
<Tooltip tooltipMsg="Click to submit">
|
|
191
|
-
<button className="bg-fill-brand text-inverse rounded px-4 py-2">
|
|
192
|
-
Submit
|
|
193
|
-
</button>
|
|
194
|
-
</Tooltip>
|
|
195
|
-
</div>
|
|
196
|
-
<div>
|
|
197
|
-
<h3 className="mb-3 text-lg font-semibold">With Icon</h3>
|
|
198
|
-
<Tooltip tooltipMsg="More information">
|
|
199
|
-
<span className="bg-surface-secondary inline-flex h-8 w-8 cursor-help items-center justify-center rounded-full text-icon-info">
|
|
200
|
-
i
|
|
201
|
-
</span>
|
|
202
|
-
</Tooltip>
|
|
203
|
-
</div>
|
|
204
|
-
<div>
|
|
205
|
-
<h3 className="mb-3 text-lg font-semibold">Long Message</h3>
|
|
206
|
-
<Tooltip tooltipMsg="This is a longer tooltip message that demonstrates how the tooltip handles extended text content.">
|
|
207
|
-
<span className="cursor-help underline">Hover for long message</span>
|
|
208
|
-
</Tooltip>
|
|
209
|
-
</div>
|
|
210
|
-
</div>
|
|
211
|
-
),
|
|
212
|
-
parameters: {
|
|
213
|
-
docs: {
|
|
214
|
-
description: {
|
|
215
|
-
story: "Showcase of all tooltip variants and use cases.",
|
|
216
|
-
},
|
|
217
|
-
},
|
|
218
|
-
},
|
|
219
|
-
};
|
|
1
|
+
import { Tooltip } from "./index";
|
|
2
|
+
|
|
3
|
+
import { DocsPage } from "@shared/stories/DocsTemplate";
|
|
4
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof Tooltip> = {
|
|
7
|
+
title: "Components/Tooltip",
|
|
8
|
+
component: Tooltip,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: "centered",
|
|
12
|
+
docs: {
|
|
13
|
+
page: DocsPage,
|
|
14
|
+
description: {
|
|
15
|
+
component:
|
|
16
|
+
"A tooltip component that displays additional information when hovering over an element.",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
argTypes: {
|
|
21
|
+
tooltipMsg: {
|
|
22
|
+
control: { type: "text" },
|
|
23
|
+
description: "Tooltip message to display",
|
|
24
|
+
},
|
|
25
|
+
className: {
|
|
26
|
+
control: { type: "text" },
|
|
27
|
+
description: "Additional CSS classes",
|
|
28
|
+
},
|
|
29
|
+
children: {
|
|
30
|
+
control: { type: "text" },
|
|
31
|
+
description: "Element that triggers the tooltip",
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
args: {
|
|
35
|
+
tooltipMsg: "This is a tooltip message",
|
|
36
|
+
children: "Hover me",
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default meta;
|
|
41
|
+
type Story = StoryObj<typeof meta>;
|
|
42
|
+
|
|
43
|
+
// Default tooltip
|
|
44
|
+
export const Default: Story = {
|
|
45
|
+
args: {},
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// With message
|
|
49
|
+
export const WithMessage: Story = {
|
|
50
|
+
args: {
|
|
51
|
+
tooltipMsg: "This is a helpful tooltip message",
|
|
52
|
+
children: "Hover to see tooltip",
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// With button
|
|
57
|
+
export const WithButton: Story = {
|
|
58
|
+
args: {
|
|
59
|
+
tooltipMsg: "Click to submit the form",
|
|
60
|
+
children: (
|
|
61
|
+
<button className="bg-fill-brand text-inverse rounded px-4 py-2">
|
|
62
|
+
Submit
|
|
63
|
+
</button>
|
|
64
|
+
),
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// With icon
|
|
69
|
+
export const WithIcon: Story = {
|
|
70
|
+
args: {
|
|
71
|
+
tooltipMsg: "More information",
|
|
72
|
+
children: (
|
|
73
|
+
<span className="bg-surface-secondary inline-flex h-8 w-8 cursor-help items-center justify-center rounded-full text-icon-info">
|
|
74
|
+
i
|
|
75
|
+
</span>
|
|
76
|
+
),
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// With link
|
|
81
|
+
export const WithLink: Story = {
|
|
82
|
+
args: {
|
|
83
|
+
tooltipMsg: "Visit our documentation",
|
|
84
|
+
children: (
|
|
85
|
+
<a
|
|
86
|
+
href="#"
|
|
87
|
+
className="text-text-brand underline hover:text-text-brand-hover"
|
|
88
|
+
>
|
|
89
|
+
Learn more
|
|
90
|
+
</a>
|
|
91
|
+
),
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
// Long message
|
|
96
|
+
export const LongMessage: Story = {
|
|
97
|
+
args: {
|
|
98
|
+
tooltipMsg:
|
|
99
|
+
"This is a longer tooltip message that demonstrates how the tooltip handles extended text content. It should wrap appropriately to remain readable.",
|
|
100
|
+
children: "Hover for long message",
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// Different children
|
|
105
|
+
export const DifferentChildren: Story = {
|
|
106
|
+
render: () => (
|
|
107
|
+
<div className="flex flex-wrap items-center gap-4">
|
|
108
|
+
<Tooltip tooltipMsg="Text tooltip">
|
|
109
|
+
<span className="cursor-help underline">Text</span>
|
|
110
|
+
</Tooltip>
|
|
111
|
+
<Tooltip tooltipMsg="Button tooltip">
|
|
112
|
+
<button className="bg-fill-brand text-inverse rounded px-4 py-2">
|
|
113
|
+
Button
|
|
114
|
+
</button>
|
|
115
|
+
</Tooltip>
|
|
116
|
+
<Tooltip tooltipMsg="Icon tooltip">
|
|
117
|
+
<span className="bg-surface-secondary inline-flex h-8 w-8 cursor-help items-center justify-center rounded-full text-icon-info">
|
|
118
|
+
?
|
|
119
|
+
</span>
|
|
120
|
+
</Tooltip>
|
|
121
|
+
<Tooltip tooltipMsg="Link tooltip">
|
|
122
|
+
<a href="#" className="text-text-brand underline">
|
|
123
|
+
Link
|
|
124
|
+
</a>
|
|
125
|
+
</Tooltip>
|
|
126
|
+
</div>
|
|
127
|
+
),
|
|
128
|
+
parameters: {
|
|
129
|
+
docs: {
|
|
130
|
+
description: {
|
|
131
|
+
story: "Tooltip with different types of children elements.",
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
// Custom styling
|
|
138
|
+
export const CustomStyling: Story = {
|
|
139
|
+
args: {
|
|
140
|
+
tooltipMsg: "Custom styled tooltip",
|
|
141
|
+
className: "custom-tooltip",
|
|
142
|
+
children: "Hover me",
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
// Multiple tooltips
|
|
147
|
+
export const Multiple: Story = {
|
|
148
|
+
render: () => (
|
|
149
|
+
<div className="space-y-4">
|
|
150
|
+
<div className="flex gap-4">
|
|
151
|
+
<Tooltip tooltipMsg="First tooltip">
|
|
152
|
+
<button className="bg-surface-secondary rounded px-4 py-2 text-text">
|
|
153
|
+
Button 1
|
|
154
|
+
</button>
|
|
155
|
+
</Tooltip>
|
|
156
|
+
<Tooltip tooltipMsg="Second tooltip">
|
|
157
|
+
<button className="bg-surface-secondary rounded px-4 py-2 text-text">
|
|
158
|
+
Button 2
|
|
159
|
+
</button>
|
|
160
|
+
</Tooltip>
|
|
161
|
+
<Tooltip tooltipMsg="Third tooltip">
|
|
162
|
+
<button className="bg-surface-secondary rounded px-4 py-2 text-text">
|
|
163
|
+
Button 3
|
|
164
|
+
</button>
|
|
165
|
+
</Tooltip>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
),
|
|
169
|
+
parameters: {
|
|
170
|
+
docs: {
|
|
171
|
+
description: {
|
|
172
|
+
story: "Multiple tooltips displayed together.",
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// All variants showcase
|
|
179
|
+
export const AllVariants: Story = {
|
|
180
|
+
render: () => (
|
|
181
|
+
<div className="max-w-2xl w-full space-y-8">
|
|
182
|
+
<div>
|
|
183
|
+
<h3 className="mb-3 text-lg font-semibold">With Text</h3>
|
|
184
|
+
<Tooltip tooltipMsg="This is a tooltip message">
|
|
185
|
+
<span className="cursor-help underline">Hover me</span>
|
|
186
|
+
</Tooltip>
|
|
187
|
+
</div>
|
|
188
|
+
<div>
|
|
189
|
+
<h3 className="mb-3 text-lg font-semibold">With Button</h3>
|
|
190
|
+
<Tooltip tooltipMsg="Click to submit">
|
|
191
|
+
<button className="bg-fill-brand text-inverse rounded px-4 py-2">
|
|
192
|
+
Submit
|
|
193
|
+
</button>
|
|
194
|
+
</Tooltip>
|
|
195
|
+
</div>
|
|
196
|
+
<div>
|
|
197
|
+
<h3 className="mb-3 text-lg font-semibold">With Icon</h3>
|
|
198
|
+
<Tooltip tooltipMsg="More information">
|
|
199
|
+
<span className="bg-surface-secondary inline-flex h-8 w-8 cursor-help items-center justify-center rounded-full text-icon-info">
|
|
200
|
+
i
|
|
201
|
+
</span>
|
|
202
|
+
</Tooltip>
|
|
203
|
+
</div>
|
|
204
|
+
<div>
|
|
205
|
+
<h3 className="mb-3 text-lg font-semibold">Long Message</h3>
|
|
206
|
+
<Tooltip tooltipMsg="This is a longer tooltip message that demonstrates how the tooltip handles extended text content.">
|
|
207
|
+
<span className="cursor-help underline">Hover for long message</span>
|
|
208
|
+
</Tooltip>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
),
|
|
212
|
+
parameters: {
|
|
213
|
+
docs: {
|
|
214
|
+
description: {
|
|
215
|
+
story: "Showcase of all tooltip variants and use cases.",
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
};
|