@12-apps/ui 1.4.1 → 1.5.1
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/package.json +17 -8
- package/src/button/index.ts +1 -0
- package/src/social-login-button/index.ts +1 -0
- package/src/{social-login-button.tsx → social-login-button/social-login-button.tsx} +5 -5
- package/src/user-avatar/index.ts +1 -0
- package/src/{user-avatar.tsx → user-avatar/user-avatar.tsx} +4 -4
- package/eslint.config.js +0 -77
- package/src/__tests__/data-grid.test.tsx +0 -125
- package/src/__tests__/package-wiring.test.ts +0 -41
- package/src/__tests__/setup.ts +0 -1
- package/src/__tests__/social-login-button.test.tsx +0 -186
- package/src/__tests__/user-avatar.test.tsx +0 -195
- package/src/__tests__/viewport.test.ts +0 -50
- package/src/components/command/__tests__/command.test.tsx +0 -112
- package/src/components/data-display/Alert/Alert.stories.tsx +0 -559
- package/src/components/data-display/Alert/Alert.test.stories.tsx +0 -707
- package/src/components/data-display/AlertDialog/AlertDialog.stories.tsx +0 -362
- package/src/components/data-display/AlertDialog/AlertDialog.test.stories.tsx +0 -753
- package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.stories.tsx +0 -230
- package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.test.stories.tsx +0 -270
- package/src/components/data-display/Avatar/Avatar.stories.tsx +0 -721
- package/src/components/data-display/Avatar/Avatar.test.stories.tsx +0 -822
- package/src/components/data-display/Badge/Badge.stories.tsx +0 -1134
- package/src/components/data-display/Badge/Badge.test.stories.tsx +0 -1194
- package/src/components/data-display/Banner/Banner.stories.tsx +0 -528
- package/src/components/data-display/Banner/Banner.test.stories.tsx +0 -503
- package/src/components/data-display/Carousel/Carousel.stories.tsx +0 -607
- package/src/components/data-display/Carousel/Carousel.test.stories.tsx +0 -691
- package/src/components/data-display/Chart/Chart.stories.tsx +0 -568
- package/src/components/data-display/Chart/Chart.test.stories.tsx +0 -174
- package/src/components/data-display/Chart/SpecChart.stories.tsx +0 -150
- package/src/components/data-display/Chart/SpecChart.test.stories.tsx +0 -56
- package/src/components/data-display/Chart/__tests__/SpecChart.test.tsx +0 -60
- package/src/components/data-display/Chart/__tests__/chart-format.test.ts +0 -43
- package/src/components/data-display/Chart/__tests__/chart-spec.test.ts +0 -119
- package/src/components/data-display/Chip/Chip.stories.tsx +0 -252
- package/src/components/data-display/Chip/Chip.test.stories.tsx +0 -266
- package/src/components/data-display/DataGrid/DataGrid.stories.tsx +0 -515
- package/src/components/data-display/DataGrid/DataGrid.test.stories.tsx +0 -653
- package/src/components/data-display/DataViews/__tests__/DataViewsGrid.test.tsx +0 -271
- package/src/components/data-display/DataViews/__tests__/DataViewsTableBase.test.tsx +0 -134
- package/src/components/data-display/DataViews/__tests__/SaveViewModal.test.tsx +0 -83
- package/src/components/data-display/DataViews/__tests__/data-views-filter.test.ts +0 -115
- package/src/components/data-display/DataViews/__tests__/data-views-preview.test.ts +0 -53
- package/src/components/data-display/DataViews/__tests__/range-pill.test.tsx +0 -114
- package/src/components/data-display/DataViews/base-card.stories.tsx +0 -136
- package/src/components/data-display/DescriptionItem/DescriptionItem.stories.tsx +0 -254
- package/src/components/data-display/EmptyState/EmptyState.stories.tsx +0 -282
- package/src/components/data-display/EmptyState/EmptyState.test.stories.tsx +0 -441
- package/src/components/data-display/ErrorState/ErrorState.stories.tsx +0 -110
- package/src/components/data-display/ErrorState/ErrorState.test.stories.tsx +0 -133
- package/src/components/data-display/HoverCard/HoverCard.stories.tsx +0 -650
- package/src/components/data-display/HoverCard/HoverCard.test.stories.tsx +0 -929
- package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.stories.tsx +0 -411
- package/src/components/data-display/LazyImage/LazyImage.stories.tsx +0 -387
- package/src/components/data-display/Lightbox/Lightbox.stories.tsx +0 -315
- package/src/components/data-display/Lightbox/Lightbox.test.stories.tsx +0 -598
- package/src/components/data-display/LoadingState/LoadingState.stories.tsx +0 -124
- package/src/components/data-display/LoadingState/LoadingState.test.stories.tsx +0 -99
- package/src/components/data-display/MapPreview/MapPreview.stories.tsx +0 -458
- package/src/components/data-display/MapPreview/MapPreview.test.stories.tsx +0 -394
- package/src/components/data-display/Popover/Popover.stories.tsx +0 -295
- package/src/components/data-display/Popover/Popover.test.stories.tsx +0 -1162
- package/src/components/data-display/Progress/Progress.stories.tsx +0 -481
- package/src/components/data-display/Progress/Progress.test.stories.tsx +0 -2070
- package/src/components/data-display/SectionOnboarding/SectionOnboarding.stories.tsx +0 -160
- package/src/components/data-display/SectionOnboarding/SectionOnboarding.test.stories.tsx +0 -190
- package/src/components/data-display/Sheet/Sheet.stories.tsx +0 -883
- package/src/components/data-display/Sheet/Sheet.test.stories.tsx +0 -1101
- package/src/components/data-display/StatCard/StatCard.stories.tsx +0 -167
- package/src/components/data-display/StatCard/StatCard.test.stories.tsx +0 -240
- package/src/components/data-display/Stepper/Stepper.stories.tsx +0 -540
- package/src/components/data-display/Stepper/Stepper.test.stories.tsx +0 -600
- package/src/components/data-display/Table/Table.stories.tsx +0 -803
- package/src/components/data-display/Table/Table.test.stories.tsx +0 -369
- package/src/components/data-display/Timeline/Timeline.stories.tsx +0 -442
- package/src/components/data-display/Timeline/Timeline.test.stories.tsx +0 -930
- package/src/components/data-display/TimingDiagram/TimingDiagram.stories.tsx +0 -475
- package/src/components/data-display/TimingDiagram/TimingDiagram.test.stories.tsx +0 -734
- package/src/components/data-display/Tooltip/Tooltip.stories.tsx +0 -468
- package/src/components/data-display/Tooltip/Tooltip.test.stories.tsx +0 -1154
- package/src/components/feedback/ConfirmAction/ConfirmAction.stories.tsx +0 -146
- package/src/components/feedback/ConfirmAction/ConfirmAction.test.stories.tsx +0 -114
- package/src/components/feedback/ConfirmAction/__tests__/confirm-action.test.tsx +0 -288
- package/src/components/feedback/Dialog/Dialog.stories.tsx +0 -833
- package/src/components/feedback/Dialog/Dialog.test.stories.tsx +0 -955
- package/src/components/feedback/Dialog/__tests__/dialog-content-spacing.test.tsx +0 -66
- package/src/components/feedback/Modal/Modal.stories.tsx +0 -765
- package/src/components/feedback/Modal/Modal.test.stories.tsx +0 -251
- package/src/components/feedback/Sonner/Sonner.stories.tsx +0 -698
- package/src/components/feedback/Sonner/Sonner.test.stories.tsx +0 -896
- package/src/components/feedback/StackedModal/StackedModal.stories.tsx +0 -1783
- package/src/components/feedback/StackedModal/StackedModal.test.stories.tsx +0 -975
- package/src/components/feedback/StackedModal/__tests__/stacked-modal-viewport.test.tsx +0 -104
- package/src/components/feedback/Toast/Toast.stories.tsx +0 -548
- package/src/components/feedback/Toast/Toast.test.stories.tsx +0 -834
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.stories.tsx +0 -691
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.test.stories.tsx +0 -634
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.stories.tsx +0 -665
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.test.stories.tsx +0 -727
- package/src/components/form/Autocomplete/Autocomplete.stories.tsx +0 -715
- package/src/components/form/Autocomplete/Autocomplete.test.stories.tsx +0 -825
- package/src/components/form/Button/Button.stories.tsx +0 -365
- package/src/components/form/Button/Button.test.stories.tsx +0 -607
- package/src/components/form/Calendar/Calendar.stories.tsx +0 -349
- package/src/components/form/Calendar/Calendar.test.stories.tsx +0 -464
- package/src/components/form/CepField/CepField.stories.tsx +0 -138
- package/src/components/form/CepField/CepField.test.stories.tsx +0 -281
- package/src/components/form/Checkbox/Checkbox.stories.tsx +0 -265
- package/src/components/form/Checkbox/Checkbox.test.stories.tsx +0 -181
- package/src/components/form/CodeEditor/CodeEditor.stories.tsx +0 -871
- package/src/components/form/CodeEditor/CodeEditor.test.stories.tsx +0 -574
- package/src/components/form/Command/Command.stories.tsx +0 -580
- package/src/components/form/Command/Command.test.stories.tsx +0 -215
- package/src/components/form/CreatableSelect/CreatableSelect.stories.tsx +0 -112
- package/src/components/form/CreatableSelect/CreatableSelect.test.stories.tsx +0 -134
- package/src/components/form/Form/Form.stories.tsx +0 -687
- package/src/components/form/Form/Form.test.stories.tsx +0 -601
- package/src/components/form/Input/Input.stories.tsx +0 -260
- package/src/components/form/Input/Input.test.stories.tsx +0 -1191
- package/src/components/form/InputOTP/InputOTP.stories.tsx +0 -774
- package/src/components/form/InputOTP/InputOTP.test.stories.tsx +0 -588
- package/src/components/form/Label/Label.stories.tsx +0 -473
- package/src/components/form/Label/Label.test.stories.tsx +0 -909
- package/src/components/form/Menubar/Menubar.stories.tsx +0 -472
- package/src/components/form/Menubar/Menubar.test.stories.tsx +0 -584
- package/src/components/form/PasswordStrength/PasswordStrength.stories.tsx +0 -562
- package/src/components/form/PasswordStrength/PasswordStrength.test.stories.tsx +0 -327
- package/src/components/form/PhoneInput/PhoneInput.stories.tsx +0 -495
- package/src/components/form/PhoneInput/PhoneInput.test.stories.tsx +0 -666
- package/src/components/form/RadioGroup/RadioGroup.stories.tsx +0 -518
- package/src/components/form/RadioGroup/RadioGroup.test.stories.tsx +0 -685
- package/src/components/form/RichTextEditor/RichTextEditor.stories.tsx +0 -261
- package/src/components/form/RichTextEditor/RichTextEditor.test.stories.tsx +0 -491
- package/src/components/form/SearchPalette/SearchPalette.stories.tsx +0 -135
- package/src/components/form/Select/Select.stories.tsx +0 -364
- package/src/components/form/Select/Select.test.stories.tsx +0 -985
- package/src/components/form/Slider/Slider.stories.tsx +0 -418
- package/src/components/form/Slider/Slider.test.stories.tsx +0 -1042
- package/src/components/form/Switch/Switch.stories.tsx +0 -697
- package/src/components/form/Switch/Switch.test.stories.tsx +0 -597
- package/src/components/form/Textarea/Textarea.stories.tsx +0 -473
- package/src/components/form/Textarea/Textarea.test.stories.tsx +0 -702
- package/src/components/form/Toggle/Toggle.stories.tsx +0 -638
- package/src/components/form/Toggle/Toggle.test.stories.tsx +0 -1159
- package/src/components/form/ToggleGroup/ToggleGroup.stories.tsx +0 -617
- package/src/components/form/ToggleGroup/ToggleGroup.test.stories.tsx +0 -918
- package/src/components/form/UploadButton/UploadButton.stories.tsx +0 -367
- package/src/components/form/UploadButton/UploadButton.test.stories.tsx +0 -573
- package/src/components/form/total-form/total-form.test.tsx +0 -214
- package/src/components/layout/Accordion/Accordion.stories.tsx +0 -694
- package/src/components/layout/Accordion/Accordion.test.stories.tsx +0 -1344
- package/src/components/layout/Card/Card.stories.tsx +0 -591
- package/src/components/layout/Card/Card.test.stories.tsx +0 -1134
- package/src/components/layout/CardGrid/__tests__/CardGrid.test.tsx +0 -92
- package/src/components/layout/Collapsible/Collapsible.stories.tsx +0 -180
- package/src/components/layout/Collapsible/Collapsible.test.stories.tsx +0 -308
- package/src/components/layout/Container/Container.stories.tsx +0 -557
- package/src/components/layout/Container/Container.test.stories.tsx +0 -745
- package/src/components/layout/ContentToolbar/ContentToolbar.stories.tsx +0 -129
- package/src/components/layout/ContentToolbar/ContentToolbar.test.stories.tsx +0 -251
- package/src/components/layout/ContentToolbar/__tests__/ColumnsMenu.test.tsx +0 -39
- package/src/components/layout/ContentToolbar/__tests__/MultiSelectDropdown.test.tsx +0 -131
- package/src/components/layout/ContentToolbar/__tests__/SavedViewsMenu.test.tsx +0 -99
- package/src/components/layout/Dashboard/Dashboard.stories.tsx +0 -104
- package/src/components/layout/Dashboard/Dashboard.test.stories.tsx +0 -190
- package/src/components/layout/Drawer/Drawer.stories.tsx +0 -658
- package/src/components/layout/Drawer/Drawer.test.stories.tsx +0 -1343
- package/src/components/layout/Resizable/Resizable.stories.tsx +0 -1039
- package/src/components/layout/Resizable/Resizable.test.stories.tsx +0 -750
- package/src/components/layout/ScrollArea/ScrollArea.stories.tsx +0 -651
- package/src/components/layout/ScrollArea/ScrollArea.test.stories.tsx +0 -619
- package/src/components/layout/Separator/Separator.stories.tsx +0 -563
- package/src/components/layout/Separator/Separator.test.stories.tsx +0 -518
- package/src/components/layout/SettingsLayout/SettingsLayout.stories.tsx +0 -192
- package/src/components/layout/SettingsLayout/SettingsLayout.test.stories.tsx +0 -175
- package/src/components/layout/Sidebar/Sidebar.stories.tsx +0 -609
- package/src/components/layout/Sidebar/Sidebar.test.stories.tsx +0 -1324
- package/src/components/layout/Skeleton/Skeleton.stories.tsx +0 -689
- package/src/components/layout/Skeleton/Skeleton.test.stories.tsx +0 -521
- package/src/components/layout/Spacer/Spacer.stories.tsx +0 -502
- package/src/components/layout/Spacer/Spacer.test.stories.tsx +0 -472
- package/src/components/layout/TableFilter/TableFilter.stories.tsx +0 -82
- package/src/components/layout/TableFilter/TableFilter.test.stories.tsx +0 -87
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.stories.tsx +0 -638
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.test.stories.tsx +0 -1008
- package/src/components/navigation/CommandPalette/CommandPalette.stories.tsx +0 -386
- package/src/components/navigation/CommandPalette/CommandPalette.test.stories.tsx +0 -435
- package/src/components/navigation/ContextMenu/ContextMenu.stories.tsx +0 -614
- package/src/components/navigation/ContextMenu/ContextMenu.test.stories.tsx +0 -845
- package/src/components/navigation/DropdownMenu/DropdownMenu.stories.tsx +0 -578
- package/src/components/navigation/DropdownMenu/DropdownMenu.test.stories.tsx +0 -660
- package/src/components/navigation/NavigationMenu/stories/NavigationMenu.stories.tsx +0 -516
- package/src/components/navigation/NavigationMenu/stories/NavigationMenu.test.stories.tsx +0 -935
- package/src/components/navigation/NavigationMenu/stories/NavigationMenuHorizontal.stories.tsx +0 -501
- package/src/components/navigation/NavigationMenu/stories/NavigationMenuVertical.stories.tsx +0 -453
- package/src/components/navigation/Pagination/Pagination.stories.tsx +0 -602
- package/src/components/navigation/Pagination/Pagination.test.stories.tsx +0 -520
- package/src/components/navigation/Tabs/Tabs.stories.tsx +0 -1004
- package/src/components/navigation/Tabs/Tabs.test.stories.tsx +0 -1225
- package/src/components/typography/Blockquote/Blockquote.stories.tsx +0 -359
- package/src/components/typography/Blockquote/Blockquote.test.stories.tsx +0 -432
- package/src/components/typography/Code/Code.stories.tsx +0 -686
- package/src/components/typography/Code/Code.test.stories.tsx +0 -703
- package/src/components/typography/Heading/Heading.stories.tsx +0 -451
- package/src/components/typography/Heading/Heading.test.stories.tsx +0 -830
- package/src/components/typography/Paragraph/Paragraph.stories.tsx +0 -280
- package/src/components/typography/Paragraph/Paragraph.test.stories.tsx +0 -231
- package/src/components/typography/Text/Text.stories.tsx +0 -359
- package/src/components/typography/Text/Text.test.stories.tsx +0 -762
- package/src/components/utility/AnimatedIcon/AnimatedIcon.stories.tsx +0 -945
- package/src/components/utility/AnimatedIcon/AnimatedIcon.test.stories.tsx +0 -603
- package/src/components/utility/AspectRatio/AspectRatio.stories.tsx +0 -414
- package/src/components/utility/AspectRatio/AspectRatio.test.stories.tsx +0 -859
- package/src/components/utility/InfiniteScroll/InfiniteScroll.stories.tsx +0 -620
- package/src/components/utility/InfiniteScroll/InfiniteScroll.test.stories.tsx +0 -361
- package/src/components/utility/InstallPrompt/InstallPrompt.stories.tsx +0 -118
- package/src/components/utility/InstallPrompt/InstallPrompt.test.stories.tsx +0 -83
- package/src/components/utility/InstallPrompt/__tests__/InstallPrompt.ios.test.tsx +0 -65
- package/src/components/utility/InstallPrompt/__tests__/usePwaInstall.test.tsx +0 -271
- package/src/components/utility/Portal/Portal.stories.tsx +0 -340
- package/src/components/utility/Portal/Portal.test.stories.tsx +0 -2086
- package/src/components/utility/Transition/Transition.stories.tsx +0 -493
- package/src/components/utility/Transition/Transition.test.stories.tsx +0 -854
- package/src/components/utility/VirtualList/VirtualList.stories.tsx +0 -1073
- package/src/components/utility/VirtualList/VirtualList.test.stories.tsx +0 -1085
- package/src/components/utility/WorkflowStep/WorkflowStep.stories.tsx +0 -431
- package/src/components/utility/WorkflowStep/WorkflowStep.test.stories.tsx +0 -364
- /package/src/{button.tsx → button/button.tsx} +0 -0
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
import { Box,Paper, Stack } from '@mui/material';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
|
|
5
|
-
import { Paragraph } from './Paragraph';
|
|
6
|
-
|
|
7
|
-
const meta: Meta<typeof Paragraph> = {
|
|
8
|
-
title: 'Typography/Paragraph',
|
|
9
|
-
component: Paragraph,
|
|
10
|
-
parameters: {
|
|
11
|
-
layout: 'padded',
|
|
12
|
-
docs: {
|
|
13
|
-
description: {
|
|
14
|
-
component:
|
|
15
|
-
'A semantic paragraph component with multiple visual variants for different content contexts. Features lead text styling, muted text, small text, and configurable sizing options.',
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
tags: ['autodocs', 'component:Paragraph'],
|
|
20
|
-
argTypes: {
|
|
21
|
-
variant: {
|
|
22
|
-
control: { type: 'select' },
|
|
23
|
-
options: ['default', 'lead', 'muted', 'small'],
|
|
24
|
-
description: 'Paragraph style variant',
|
|
25
|
-
},
|
|
26
|
-
color: {
|
|
27
|
-
control: { type: 'select' },
|
|
28
|
-
options: ['primary', 'secondary', 'success', 'warning', 'danger', 'neutral'],
|
|
29
|
-
description: 'Theme color',
|
|
30
|
-
},
|
|
31
|
-
size: {
|
|
32
|
-
control: { type: 'select' },
|
|
33
|
-
options: ['xs', 'sm', 'md', 'lg', 'xl'],
|
|
34
|
-
description: 'Size variant',
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export default meta;
|
|
40
|
-
type Story = StoryObj<typeof meta>;
|
|
41
|
-
|
|
42
|
-
const sampleText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.`;
|
|
43
|
-
|
|
44
|
-
const longText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.`;
|
|
45
|
-
|
|
46
|
-
export const Default: Story = {
|
|
47
|
-
args: {
|
|
48
|
-
children: sampleText,
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export const AllVariants: Story = {
|
|
53
|
-
render: () => (
|
|
54
|
-
<Stack spacing={3}>
|
|
55
|
-
<Box>
|
|
56
|
-
<Paper sx={{ p: 2 }}>
|
|
57
|
-
<h4>Default Paragraph</h4>
|
|
58
|
-
<Paragraph variant="default">{sampleText}</Paragraph>
|
|
59
|
-
</Paper>
|
|
60
|
-
</Box>
|
|
61
|
-
|
|
62
|
-
<Box>
|
|
63
|
-
<Paper sx={{ p: 2 }}>
|
|
64
|
-
<h4>Lead Paragraph</h4>
|
|
65
|
-
<Paragraph variant="lead">{sampleText}</Paragraph>
|
|
66
|
-
</Paper>
|
|
67
|
-
</Box>
|
|
68
|
-
|
|
69
|
-
<Box>
|
|
70
|
-
<Paper sx={{ p: 2 }}>
|
|
71
|
-
<h4>Small Paragraph</h4>
|
|
72
|
-
<Paragraph variant="small">{sampleText}</Paragraph>
|
|
73
|
-
</Paper>
|
|
74
|
-
</Box>
|
|
75
|
-
|
|
76
|
-
<Box>
|
|
77
|
-
<Paper sx={{ p: 2 }}>
|
|
78
|
-
<h4>Muted Paragraph</h4>
|
|
79
|
-
<Paragraph variant="muted">{sampleText}</Paragraph>
|
|
80
|
-
</Paper>
|
|
81
|
-
</Box>
|
|
82
|
-
</Stack>
|
|
83
|
-
),
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
export const AllSizes: Story = {
|
|
87
|
-
render: () => (
|
|
88
|
-
<Stack spacing={3}>
|
|
89
|
-
<Box>
|
|
90
|
-
<Paper sx={{ p: 2 }}>
|
|
91
|
-
<h4>Extra Small (xs)</h4>
|
|
92
|
-
<Paragraph size="xs">{sampleText}</Paragraph>
|
|
93
|
-
</Paper>
|
|
94
|
-
</Box>
|
|
95
|
-
|
|
96
|
-
<Box>
|
|
97
|
-
<Paper sx={{ p: 2 }}>
|
|
98
|
-
<h4>Small (sm)</h4>
|
|
99
|
-
<Paragraph size="sm">{sampleText}</Paragraph>
|
|
100
|
-
</Paper>
|
|
101
|
-
</Box>
|
|
102
|
-
|
|
103
|
-
<Box>
|
|
104
|
-
<Paper sx={{ p: 2 }}>
|
|
105
|
-
<h4>Medium (md) - Default</h4>
|
|
106
|
-
<Paragraph size="md">{sampleText}</Paragraph>
|
|
107
|
-
</Paper>
|
|
108
|
-
</Box>
|
|
109
|
-
|
|
110
|
-
<Box>
|
|
111
|
-
<Paper sx={{ p: 2 }}>
|
|
112
|
-
<h4>Large (lg)</h4>
|
|
113
|
-
<Paragraph size="lg">{sampleText}</Paragraph>
|
|
114
|
-
</Paper>
|
|
115
|
-
</Box>
|
|
116
|
-
|
|
117
|
-
<Box>
|
|
118
|
-
<Paper sx={{ p: 2 }}>
|
|
119
|
-
<h4>Extra Large (xl)</h4>
|
|
120
|
-
<Paragraph size="xl">{sampleText}</Paragraph>
|
|
121
|
-
</Paper>
|
|
122
|
-
</Box>
|
|
123
|
-
</Stack>
|
|
124
|
-
),
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
export const AllStates: Story = {
|
|
128
|
-
render: () => (
|
|
129
|
-
<Stack spacing={3}>
|
|
130
|
-
<Box>
|
|
131
|
-
<Paper sx={{ p: 2 }}>
|
|
132
|
-
<h4>Neutral (default)</h4>
|
|
133
|
-
<Paragraph color="neutral">{sampleText}</Paragraph>
|
|
134
|
-
</Paper>
|
|
135
|
-
</Box>
|
|
136
|
-
|
|
137
|
-
<Box>
|
|
138
|
-
<Paper sx={{ p: 2 }}>
|
|
139
|
-
<h4>Primary Color</h4>
|
|
140
|
-
<Paragraph color="primary">{sampleText}</Paragraph>
|
|
141
|
-
</Paper>
|
|
142
|
-
</Box>
|
|
143
|
-
|
|
144
|
-
<Box>
|
|
145
|
-
<Paper sx={{ p: 2 }}>
|
|
146
|
-
<h4>Secondary Color</h4>
|
|
147
|
-
<Paragraph color="secondary">{sampleText}</Paragraph>
|
|
148
|
-
</Paper>
|
|
149
|
-
</Box>
|
|
150
|
-
|
|
151
|
-
<Box>
|
|
152
|
-
<Paper sx={{ p: 2 }}>
|
|
153
|
-
<h4>Success Color</h4>
|
|
154
|
-
<Paragraph color="success">{sampleText}</Paragraph>
|
|
155
|
-
</Paper>
|
|
156
|
-
</Box>
|
|
157
|
-
|
|
158
|
-
<Box>
|
|
159
|
-
<Paper sx={{ p: 2 }}>
|
|
160
|
-
<h4>Warning Color</h4>
|
|
161
|
-
<Paragraph color="warning">{sampleText}</Paragraph>
|
|
162
|
-
</Paper>
|
|
163
|
-
</Box>
|
|
164
|
-
|
|
165
|
-
<Box>
|
|
166
|
-
<Paper sx={{ p: 2 }}>
|
|
167
|
-
<h4>Danger Color</h4>
|
|
168
|
-
<Paragraph color="danger">{sampleText}</Paragraph>
|
|
169
|
-
</Paper>
|
|
170
|
-
</Box>
|
|
171
|
-
</Stack>
|
|
172
|
-
),
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
export const InteractiveStates: Story = {
|
|
176
|
-
render: () => (
|
|
177
|
-
<Stack spacing={3}>
|
|
178
|
-
<Box>
|
|
179
|
-
<Paper sx={{ p: 3 }}>
|
|
180
|
-
<h3>Article Example</h3>
|
|
181
|
-
<Paragraph variant="lead" size="lg" color="primary">
|
|
182
|
-
This is a lead paragraph with large size and primary color. It's designed to grab
|
|
183
|
-
attention and introduce the main content.
|
|
184
|
-
</Paragraph>
|
|
185
|
-
|
|
186
|
-
<Paragraph>
|
|
187
|
-
This is a regular paragraph that follows the lead paragraph. It uses default styling for
|
|
188
|
-
comfortable reading.
|
|
189
|
-
</Paragraph>
|
|
190
|
-
|
|
191
|
-
<Paragraph variant="small" color="secondary">
|
|
192
|
-
This is a small paragraph with secondary color, often used for additional information or
|
|
193
|
-
footnotes.
|
|
194
|
-
</Paragraph>
|
|
195
|
-
|
|
196
|
-
<Paragraph variant="muted">
|
|
197
|
-
This is a muted paragraph that provides supplementary information without competing for
|
|
198
|
-
attention.
|
|
199
|
-
</Paragraph>
|
|
200
|
-
</Paper>
|
|
201
|
-
</Box>
|
|
202
|
-
</Stack>
|
|
203
|
-
),
|
|
204
|
-
};
|
|
205
|
-
|
|
206
|
-
export const Responsive: Story = {
|
|
207
|
-
render: () => (
|
|
208
|
-
<Stack spacing={3}>
|
|
209
|
-
<Box>
|
|
210
|
-
<Paper sx={{ p: 2 }}>
|
|
211
|
-
<h4>Responsive Behavior</h4>
|
|
212
|
-
<Paragraph
|
|
213
|
-
sx={{
|
|
214
|
-
fontSize: { xs: '14px', sm: '16px', md: '18px' },
|
|
215
|
-
lineHeight: { xs: 1.5, md: 1.7 },
|
|
216
|
-
}}
|
|
217
|
-
>
|
|
218
|
-
This paragraph adjusts its font size and line height based on screen size for optimal
|
|
219
|
-
readability across devices.
|
|
220
|
-
</Paragraph>
|
|
221
|
-
</Paper>
|
|
222
|
-
</Box>
|
|
223
|
-
</Stack>
|
|
224
|
-
),
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
// Additional helpful stories
|
|
228
|
-
export const LongContent: Story = {
|
|
229
|
-
render: () => (
|
|
230
|
-
<Stack spacing={3}>
|
|
231
|
-
<Box>
|
|
232
|
-
<Paper sx={{ p: 3 }}>
|
|
233
|
-
<h4>Long Content Handling</h4>
|
|
234
|
-
<Paragraph variant="lead">{longText}</Paragraph>
|
|
235
|
-
|
|
236
|
-
<Paragraph>{longText}</Paragraph>
|
|
237
|
-
|
|
238
|
-
<Paragraph variant="small">{longText}</Paragraph>
|
|
239
|
-
</Paper>
|
|
240
|
-
</Box>
|
|
241
|
-
</Stack>
|
|
242
|
-
),
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
export const WithCustomStyling: Story = {
|
|
246
|
-
render: () => (
|
|
247
|
-
<Stack spacing={3}>
|
|
248
|
-
<Box>
|
|
249
|
-
<Paper sx={{ p: 3 }}>
|
|
250
|
-
<h4>Custom Styling Examples</h4>
|
|
251
|
-
<Paragraph
|
|
252
|
-
variant="lead"
|
|
253
|
-
sx={{
|
|
254
|
-
textAlign: 'center',
|
|
255
|
-
background: 'linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)',
|
|
256
|
-
WebkitBackgroundClip: 'text',
|
|
257
|
-
WebkitTextFillColor: 'transparent',
|
|
258
|
-
backgroundClip: 'text',
|
|
259
|
-
}}
|
|
260
|
-
>
|
|
261
|
-
This paragraph demonstrates custom styling with gradient text and center alignment.
|
|
262
|
-
</Paragraph>
|
|
263
|
-
|
|
264
|
-
<Paragraph
|
|
265
|
-
sx={{
|
|
266
|
-
border: '1px solid',
|
|
267
|
-
borderColor: 'divider',
|
|
268
|
-
borderRadius: 2,
|
|
269
|
-
p: 2,
|
|
270
|
-
backgroundColor: 'grey.50',
|
|
271
|
-
}}
|
|
272
|
-
>
|
|
273
|
-
This paragraph has a custom border and background, making it stand out from the rest of
|
|
274
|
-
the content.
|
|
275
|
-
</Paragraph>
|
|
276
|
-
</Paper>
|
|
277
|
-
</Box>
|
|
278
|
-
</Stack>
|
|
279
|
-
),
|
|
280
|
-
};
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { expect, userEvent, waitFor, within } from 'storybook/test';
|
|
3
|
-
|
|
4
|
-
import { Paragraph } from './Paragraph';
|
|
5
|
-
|
|
6
|
-
const meta: Meta<typeof Paragraph> = {
|
|
7
|
-
title: 'Typography/Paragraph/Tests',
|
|
8
|
-
component: Paragraph,
|
|
9
|
-
parameters: { layout: 'centered', chromatic: { disableSnapshot: false } },
|
|
10
|
-
tags: ['autodocs', 'test', 'component:Paragraph'],
|
|
11
|
-
};
|
|
12
|
-
export default meta;
|
|
13
|
-
export type Story = StoryObj<typeof meta>;
|
|
14
|
-
|
|
15
|
-
const sampleText = 'This is a sample paragraph text for testing purposes.';
|
|
16
|
-
|
|
17
|
-
export const BasicInteraction: Story = {
|
|
18
|
-
args: {
|
|
19
|
-
children: sampleText,
|
|
20
|
-
},
|
|
21
|
-
play: async ({ canvasElement }) => {
|
|
22
|
-
const canvas = within(canvasElement);
|
|
23
|
-
|
|
24
|
-
const paragraph = canvas.getByText(sampleText);
|
|
25
|
-
expect(paragraph).toBeInTheDocument();
|
|
26
|
-
expect(paragraph.tagName).toBe('P');
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const KeyboardNavigation: Story = {
|
|
31
|
-
args: {
|
|
32
|
-
children: sampleText,
|
|
33
|
-
},
|
|
34
|
-
play: async ({ canvasElement }) => {
|
|
35
|
-
const canvas = within(canvasElement);
|
|
36
|
-
|
|
37
|
-
const paragraph = canvas.getByText(sampleText);
|
|
38
|
-
|
|
39
|
-
// Paragraph should not be focusable by default
|
|
40
|
-
await userEvent.click(paragraph);
|
|
41
|
-
await waitFor(() => expect(paragraph).not.toHaveFocus());
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export const ScreenReader: Story = {
|
|
46
|
-
args: {
|
|
47
|
-
children: sampleText,
|
|
48
|
-
'aria-label': 'Sample paragraph',
|
|
49
|
-
},
|
|
50
|
-
play: async ({ canvasElement }) => {
|
|
51
|
-
const canvas = within(canvasElement);
|
|
52
|
-
|
|
53
|
-
const paragraph = canvas.getByText(sampleText);
|
|
54
|
-
expect(paragraph).toHaveAttribute('aria-label', 'Sample paragraph');
|
|
55
|
-
expect(paragraph).toBeInTheDocument();
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export const FocusManagement: Story = {
|
|
60
|
-
args: {
|
|
61
|
-
children: sampleText,
|
|
62
|
-
tabIndex: 0,
|
|
63
|
-
},
|
|
64
|
-
play: async ({ canvasElement }) => {
|
|
65
|
-
const canvas = within(canvasElement);
|
|
66
|
-
|
|
67
|
-
const paragraph = canvas.getByText(sampleText);
|
|
68
|
-
|
|
69
|
-
// When tabIndex is set, paragraph should be focusable
|
|
70
|
-
await userEvent.click(paragraph);
|
|
71
|
-
await waitFor(() => expect(paragraph).toHaveFocus());
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
export const ResponsiveDesign: Story = {
|
|
76
|
-
args: {
|
|
77
|
-
children: sampleText,
|
|
78
|
-
size: 'md',
|
|
79
|
-
},
|
|
80
|
-
parameters: {
|
|
81
|
-
viewport: {
|
|
82
|
-
viewports: {
|
|
83
|
-
mobile: { name: 'Mobile', styles: { width: '375px', height: '667px' } },
|
|
84
|
-
tablet: { name: 'Tablet', styles: { width: '768px', height: '1024px' } },
|
|
85
|
-
desktop: { name: 'Desktop', styles: { width: '1024px', height: '768px' } },
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
play: async ({ canvasElement }) => {
|
|
90
|
-
const canvas = within(canvasElement);
|
|
91
|
-
|
|
92
|
-
const paragraph = canvas.getByText(sampleText);
|
|
93
|
-
expect(paragraph).toBeInTheDocument();
|
|
94
|
-
|
|
95
|
-
// Test that paragraph renders properly at different screen sizes
|
|
96
|
-
const computedStyle = window.getComputedStyle(paragraph);
|
|
97
|
-
expect(computedStyle.fontSize).toBeTruthy();
|
|
98
|
-
},
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
export const ThemeVariations: Story = {
|
|
102
|
-
args: {
|
|
103
|
-
children: sampleText,
|
|
104
|
-
color: 'primary',
|
|
105
|
-
},
|
|
106
|
-
play: async ({ canvasElement }) => {
|
|
107
|
-
const canvas = within(canvasElement);
|
|
108
|
-
|
|
109
|
-
const paragraph = canvas.getByText(sampleText);
|
|
110
|
-
expect(paragraph).toBeInTheDocument();
|
|
111
|
-
|
|
112
|
-
// Test that paragraph has the correct color styling
|
|
113
|
-
const computedStyle = window.getComputedStyle(paragraph);
|
|
114
|
-
expect(computedStyle.color).toBeTruthy();
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
export const VisualStates: Story = {
|
|
119
|
-
render: () => (
|
|
120
|
-
<div>
|
|
121
|
-
<Paragraph variant="default">{sampleText} - Default</Paragraph>
|
|
122
|
-
<Paragraph variant="lead">{sampleText} - Lead</Paragraph>
|
|
123
|
-
<Paragraph variant="small">{sampleText} - Small</Paragraph>
|
|
124
|
-
<Paragraph variant="muted">{sampleText} - Muted</Paragraph>
|
|
125
|
-
</div>
|
|
126
|
-
),
|
|
127
|
-
play: async ({ canvasElement }) => {
|
|
128
|
-
const canvas = within(canvasElement);
|
|
129
|
-
|
|
130
|
-
const defaultParagraph = canvas.getByText(`${sampleText} - Default`);
|
|
131
|
-
const leadParagraph = canvas.getByText(`${sampleText} - Lead`);
|
|
132
|
-
const smallParagraph = canvas.getByText(`${sampleText} - Small`);
|
|
133
|
-
const mutedParagraph = canvas.getByText(`${sampleText} - Muted`);
|
|
134
|
-
|
|
135
|
-
expect(defaultParagraph).toBeInTheDocument();
|
|
136
|
-
expect(leadParagraph).toBeInTheDocument();
|
|
137
|
-
expect(smallParagraph).toBeInTheDocument();
|
|
138
|
-
expect(mutedParagraph).toBeInTheDocument();
|
|
139
|
-
|
|
140
|
-
// Test that different variants have different styling
|
|
141
|
-
const defaultStyle = window.getComputedStyle(defaultParagraph);
|
|
142
|
-
const leadStyle = window.getComputedStyle(leadParagraph);
|
|
143
|
-
|
|
144
|
-
expect(defaultStyle.fontSize).not.toBe(leadStyle.fontSize);
|
|
145
|
-
},
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
export const Performance: Story = {
|
|
149
|
-
args: {
|
|
150
|
-
children: sampleText,
|
|
151
|
-
},
|
|
152
|
-
play: async ({ canvasElement }) => {
|
|
153
|
-
const canvas = within(canvasElement);
|
|
154
|
-
|
|
155
|
-
const paragraph = canvas.getByText(sampleText);
|
|
156
|
-
expect(paragraph).toBeInTheDocument();
|
|
157
|
-
|
|
158
|
-
},
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
export const EdgeCases: Story = {
|
|
162
|
-
render: () => (
|
|
163
|
-
<div>
|
|
164
|
-
<Paragraph>{''}</Paragraph>
|
|
165
|
-
<Paragraph>
|
|
166
|
-
{
|
|
167
|
-
'Very long text that should wrap properly and maintain readability even when it extends beyond the normal width of the container and continues for multiple lines to test text wrapping behavior.'
|
|
168
|
-
}
|
|
169
|
-
</Paragraph>
|
|
170
|
-
<Paragraph>{'Special chars: !@#$%^&*()_+-=[]{}|;":,./<>?'}</Paragraph>
|
|
171
|
-
<Paragraph>{'Numbers: 123456789'}</Paragraph>
|
|
172
|
-
</div>
|
|
173
|
-
),
|
|
174
|
-
play: async ({ canvasElement }) => {
|
|
175
|
-
const canvas = within(canvasElement);
|
|
176
|
-
|
|
177
|
-
// Test empty content
|
|
178
|
-
const paragraphs = canvas.getAllByRole('generic', { hidden: true }) || [];
|
|
179
|
-
expect(paragraphs.length).toBeGreaterThanOrEqual(1);
|
|
180
|
-
|
|
181
|
-
// Test special characters
|
|
182
|
-
const specialCharsText = canvas.getByText(/Special chars:/);
|
|
183
|
-
expect(specialCharsText).toBeInTheDocument();
|
|
184
|
-
|
|
185
|
-
// Test numbers
|
|
186
|
-
const numbersText = canvas.getByText(/Numbers:/);
|
|
187
|
-
expect(numbersText).toBeInTheDocument();
|
|
188
|
-
},
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
export const Integration: Story = {
|
|
192
|
-
render: () => (
|
|
193
|
-
<div>
|
|
194
|
-
<h3>Article with Multiple Paragraphs</h3>
|
|
195
|
-
<Paragraph variant="lead" color="primary">
|
|
196
|
-
This is a lead paragraph that introduces the content.
|
|
197
|
-
</Paragraph>
|
|
198
|
-
<Paragraph>This is a regular paragraph that provides the main content.</Paragraph>
|
|
199
|
-
<Paragraph variant="small" color="secondary">
|
|
200
|
-
This is a small paragraph with additional information.
|
|
201
|
-
</Paragraph>
|
|
202
|
-
<Paragraph variant="muted">This is a muted paragraph for supplementary content.</Paragraph>
|
|
203
|
-
</div>
|
|
204
|
-
),
|
|
205
|
-
play: async ({ canvasElement }) => {
|
|
206
|
-
const canvas = within(canvasElement);
|
|
207
|
-
|
|
208
|
-
const heading = canvas.getByText('Article with Multiple Paragraphs');
|
|
209
|
-
const leadParagraph = canvas.getByText('This is a lead paragraph that introduces the content.');
|
|
210
|
-
const regularParagraph = canvas.getByText(
|
|
211
|
-
'This is a regular paragraph that provides the main content.',
|
|
212
|
-
);
|
|
213
|
-
const smallParagraph = canvas.getByText(
|
|
214
|
-
'This is a small paragraph with additional information.',
|
|
215
|
-
);
|
|
216
|
-
const mutedParagraph = canvas.getByText('This is a muted paragraph for supplementary content.');
|
|
217
|
-
|
|
218
|
-
expect(heading).toBeInTheDocument();
|
|
219
|
-
expect(leadParagraph).toBeInTheDocument();
|
|
220
|
-
expect(regularParagraph).toBeInTheDocument();
|
|
221
|
-
expect(smallParagraph).toBeInTheDocument();
|
|
222
|
-
expect(mutedParagraph).toBeInTheDocument();
|
|
223
|
-
|
|
224
|
-
// Test that all paragraphs render with proper spacing
|
|
225
|
-
const allParagraphs = [leadParagraph, regularParagraph, smallParagraph, mutedParagraph];
|
|
226
|
-
allParagraphs.forEach((p) => {
|
|
227
|
-
const computedStyle = window.getComputedStyle(p);
|
|
228
|
-
expect(computedStyle.marginBottom).toBeTruthy();
|
|
229
|
-
});
|
|
230
|
-
},
|
|
231
|
-
};
|