@12-apps/ui 1.5.0 → 1.5.2
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 -9
- 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 -89
- 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 -763
- 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 -511
- package/src/components/data-display/Carousel/Carousel.stories.tsx +0 -607
- package/src/components/data-display/Carousel/Carousel.test.stories.tsx +0 -701
- 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 -1105
- 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 -964
- 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 -973
- 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 -915
- 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 -915
- 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 -754
- 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 -474
- 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 -759
- 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,686 +0,0 @@
|
|
|
1
|
-
import { Box, Paper, Stack, Typography } from '@mui/material';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
|
|
5
|
-
import { Code } from './Code';
|
|
6
|
-
|
|
7
|
-
const meta: Meta<typeof Code> = {
|
|
8
|
-
title: 'Typography/Code',
|
|
9
|
-
component: Code,
|
|
10
|
-
parameters: {
|
|
11
|
-
layout: 'padded',
|
|
12
|
-
docs: {
|
|
13
|
-
description: {
|
|
14
|
-
component:
|
|
15
|
-
'A code typography component for displaying inline code, code blocks, and syntax-highlighted snippets with various styling options.',
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
tags: ['autodocs', 'component:Code'],
|
|
20
|
-
argTypes: {
|
|
21
|
-
variant: {
|
|
22
|
-
control: { type: 'select' },
|
|
23
|
-
options: ['inline', 'block', 'highlight'],
|
|
24
|
-
description: 'Code display variant',
|
|
25
|
-
},
|
|
26
|
-
language: {
|
|
27
|
-
control: { type: 'text' },
|
|
28
|
-
description: 'Programming language label for display',
|
|
29
|
-
},
|
|
30
|
-
copyable: {
|
|
31
|
-
control: 'boolean',
|
|
32
|
-
description: 'Enable copy to clipboard (block and highlight variants only)',
|
|
33
|
-
},
|
|
34
|
-
lineNumbers: {
|
|
35
|
-
control: 'boolean',
|
|
36
|
-
description: 'Show line numbers (block and highlight variants only)',
|
|
37
|
-
},
|
|
38
|
-
size: {
|
|
39
|
-
control: { type: 'select' },
|
|
40
|
-
options: ['xs', 'sm', 'md', 'lg'],
|
|
41
|
-
description: 'Size of the code text',
|
|
42
|
-
},
|
|
43
|
-
children: {
|
|
44
|
-
control: 'text',
|
|
45
|
-
description: 'Code content to display',
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export default meta;
|
|
51
|
-
type Story = StoryObj<typeof meta>;
|
|
52
|
-
|
|
53
|
-
export const Default: Story = {
|
|
54
|
-
args: {
|
|
55
|
-
children: 'const greeting = "Hello, World!";',
|
|
56
|
-
variant: 'inline',
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
export const InlineCode: Story = {
|
|
61
|
-
render: () => (
|
|
62
|
-
<Stack spacing={2}>
|
|
63
|
-
<Typography>
|
|
64
|
-
Use the <Code variant="inline">useState</Code> hook to manage component state.
|
|
65
|
-
</Typography>
|
|
66
|
-
|
|
67
|
-
<Typography>
|
|
68
|
-
Install the package with <Code variant="inline">npm install react</Code> or{' '}
|
|
69
|
-
<Code variant="inline">yarn add react</Code>.
|
|
70
|
-
</Typography>
|
|
71
|
-
|
|
72
|
-
<Typography>
|
|
73
|
-
The function <Code variant="inline">calculateTotal()</Code> returns a{' '}
|
|
74
|
-
<Code variant="inline">number</Code> value.
|
|
75
|
-
</Typography>
|
|
76
|
-
|
|
77
|
-
<Typography>
|
|
78
|
-
Press <Code variant="inline">Ctrl+S</Code> to save or <Code variant="inline">Cmd+S</Code> on
|
|
79
|
-
Mac.
|
|
80
|
-
</Typography>
|
|
81
|
-
</Stack>
|
|
82
|
-
),
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
export const BlockCode: Story = {
|
|
86
|
-
render: () => (
|
|
87
|
-
<Stack spacing={3}>
|
|
88
|
-
<Code variant="block" language="javascript">
|
|
89
|
-
{`function fibonacci(n) {
|
|
90
|
-
if (n <= 1) return n;
|
|
91
|
-
return fibonacci(n - 1) + fibonacci(n - 2);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// Output: 55`}
|
|
95
|
-
</Code>
|
|
96
|
-
|
|
97
|
-
<Code variant="block" language="typescript">
|
|
98
|
-
{`interface User {
|
|
99
|
-
id: number;
|
|
100
|
-
name: string;
|
|
101
|
-
email: string;
|
|
102
|
-
role: 'admin' | 'user';
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const getUser = async (id: number): Promise<User> => {
|
|
106
|
-
const response = await fetch(\`/api/users/\${id}\`);
|
|
107
|
-
return response.json();
|
|
108
|
-
};`}
|
|
109
|
-
</Code>
|
|
110
|
-
|
|
111
|
-
<Code variant="block" language="python">
|
|
112
|
-
{`def quick_sort(arr):
|
|
113
|
-
if len(arr) <= 1:
|
|
114
|
-
return arr
|
|
115
|
-
pivot = arr[len(arr) // 2]
|
|
116
|
-
left = [x for x in arr if x < pivot]
|
|
117
|
-
middle = [x for x in arr if x == pivot]
|
|
118
|
-
right = [x for x in arr if x > pivot]
|
|
119
|
-
return quick_sort(left) + middle + quick_sort(right)
|
|
120
|
-
|
|
121
|
-
print(quick_sort([3, 6, 8, 10, 1, 2, 1]))`}
|
|
122
|
-
</Code>
|
|
123
|
-
</Stack>
|
|
124
|
-
),
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
export const AllVariants: Story = {
|
|
128
|
-
render: () => (
|
|
129
|
-
<Stack spacing={3}>
|
|
130
|
-
<Box>
|
|
131
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
132
|
-
Inline Variant
|
|
133
|
-
</Typography>
|
|
134
|
-
<Typography>
|
|
135
|
-
Use the{' '}
|
|
136
|
-
<Code variant="inline" size="md">
|
|
137
|
-
useState()
|
|
138
|
-
</Code>{' '}
|
|
139
|
-
hook for state management.
|
|
140
|
-
</Typography>
|
|
141
|
-
</Box>
|
|
142
|
-
|
|
143
|
-
<Box>
|
|
144
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
145
|
-
Block Variant
|
|
146
|
-
</Typography>
|
|
147
|
-
<Code variant="block" size="md">
|
|
148
|
-
{`const greeting = "Hello, World!";
|
|
149
|
-
console.log(greeting);`}
|
|
150
|
-
</Code>
|
|
151
|
-
</Box>
|
|
152
|
-
|
|
153
|
-
<Box>
|
|
154
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
155
|
-
Highlight Variant
|
|
156
|
-
</Typography>
|
|
157
|
-
<Code variant="highlight" size="md" language="javascript">
|
|
158
|
-
{`function important() {
|
|
159
|
-
return "This code is highlighted";
|
|
160
|
-
}`}
|
|
161
|
-
</Code>
|
|
162
|
-
</Box>
|
|
163
|
-
</Stack>
|
|
164
|
-
),
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
export const AllSizes: Story = {
|
|
168
|
-
render: () => (
|
|
169
|
-
<Stack spacing={3}>
|
|
170
|
-
<Box>
|
|
171
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
172
|
-
Extra Small (xs)
|
|
173
|
-
</Typography>
|
|
174
|
-
<Code variant="inline" size="xs">
|
|
175
|
-
size="xs"
|
|
176
|
-
</Code>
|
|
177
|
-
</Box>
|
|
178
|
-
|
|
179
|
-
<Box>
|
|
180
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
181
|
-
Small (sm)
|
|
182
|
-
</Typography>
|
|
183
|
-
<Code variant="inline" size="sm">
|
|
184
|
-
size="sm"
|
|
185
|
-
</Code>
|
|
186
|
-
</Box>
|
|
187
|
-
|
|
188
|
-
<Box>
|
|
189
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
190
|
-
Medium (md)
|
|
191
|
-
</Typography>
|
|
192
|
-
<Code variant="inline" size="md">
|
|
193
|
-
size="md"
|
|
194
|
-
</Code>
|
|
195
|
-
</Box>
|
|
196
|
-
|
|
197
|
-
<Box>
|
|
198
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
199
|
-
Large (lg)
|
|
200
|
-
</Typography>
|
|
201
|
-
<Code variant="inline" size="lg">
|
|
202
|
-
size="lg"
|
|
203
|
-
</Code>
|
|
204
|
-
</Box>
|
|
205
|
-
|
|
206
|
-
<Typography variant="subtitle2" gutterBottom sx={{ mt: 2 }}>
|
|
207
|
-
Block Sizes
|
|
208
|
-
</Typography>
|
|
209
|
-
<Stack spacing={2}>
|
|
210
|
-
<Code variant="block" size="xs">
|
|
211
|
-
Extra small block
|
|
212
|
-
</Code>
|
|
213
|
-
<Code variant="block" size="sm">
|
|
214
|
-
Small block
|
|
215
|
-
</Code>
|
|
216
|
-
<Code variant="block" size="md">
|
|
217
|
-
Medium block
|
|
218
|
-
</Code>
|
|
219
|
-
<Code variant="block" size="lg">
|
|
220
|
-
Large block
|
|
221
|
-
</Code>
|
|
222
|
-
</Stack>
|
|
223
|
-
</Stack>
|
|
224
|
-
),
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
export const AllStates: Story = {
|
|
228
|
-
render: () => (
|
|
229
|
-
<Stack spacing={3}>
|
|
230
|
-
<Box>
|
|
231
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
232
|
-
Default State
|
|
233
|
-
</Typography>
|
|
234
|
-
<Code variant="block">Default code block</Code>
|
|
235
|
-
</Box>
|
|
236
|
-
|
|
237
|
-
<Box>
|
|
238
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
239
|
-
With Copy Button
|
|
240
|
-
</Typography>
|
|
241
|
-
<Code variant="block" copyable>
|
|
242
|
-
{`// Copyable code
|
|
243
|
-
const copyMe = true;`}
|
|
244
|
-
</Code>
|
|
245
|
-
</Box>
|
|
246
|
-
|
|
247
|
-
<Box>
|
|
248
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
249
|
-
With Line Numbers
|
|
250
|
-
</Typography>
|
|
251
|
-
<Code variant="block" lineNumbers>
|
|
252
|
-
{`// Line 1
|
|
253
|
-
// Line 2
|
|
254
|
-
// Line 3`}
|
|
255
|
-
</Code>
|
|
256
|
-
</Box>
|
|
257
|
-
|
|
258
|
-
<Box>
|
|
259
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
260
|
-
With Language Label
|
|
261
|
-
</Typography>
|
|
262
|
-
<Code variant="block" language="TypeScript">
|
|
263
|
-
{`interface Example {
|
|
264
|
-
id: number;
|
|
265
|
-
}`}
|
|
266
|
-
</Code>
|
|
267
|
-
</Box>
|
|
268
|
-
|
|
269
|
-
<Box>
|
|
270
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
271
|
-
All Features Combined
|
|
272
|
-
</Typography>
|
|
273
|
-
<Code variant="highlight" language="JavaScript" copyable lineNumbers>
|
|
274
|
-
{`function allFeatures() {
|
|
275
|
-
return "Copy, line numbers, and language";
|
|
276
|
-
}`}
|
|
277
|
-
</Code>
|
|
278
|
-
</Box>
|
|
279
|
-
</Stack>
|
|
280
|
-
),
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
export const InteractiveStates: Story = {
|
|
284
|
-
render: () => (
|
|
285
|
-
<Stack spacing={3}>
|
|
286
|
-
<Typography variant="h6">Interactive Elements</Typography>
|
|
287
|
-
|
|
288
|
-
<Box>
|
|
289
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
290
|
-
Hover over the copy button to see tooltip:
|
|
291
|
-
</Typography>
|
|
292
|
-
<Code variant="block" copyable>
|
|
293
|
-
{`// Hover over the copy button
|
|
294
|
-
const interactive = true;`}
|
|
295
|
-
</Code>
|
|
296
|
-
</Box>
|
|
297
|
-
|
|
298
|
-
<Box>
|
|
299
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
300
|
-
Click to copy (watch for feedback):
|
|
301
|
-
</Typography>
|
|
302
|
-
<Code variant="highlight" copyable language="bash">
|
|
303
|
-
{`npm install
|
|
304
|
-
npm start`}
|
|
305
|
-
</Code>
|
|
306
|
-
</Box>
|
|
307
|
-
|
|
308
|
-
<Box>
|
|
309
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
310
|
-
Long content with scroll:
|
|
311
|
-
</Typography>
|
|
312
|
-
<Code variant="block" copyable lineNumbers>
|
|
313
|
-
{`// This is a longer code block to demonstrate scrolling
|
|
314
|
-
const longContent = [
|
|
315
|
-
"Line 1 with some content",
|
|
316
|
-
"Line 2 with more content",
|
|
317
|
-
"Line 3 with even more content",
|
|
318
|
-
"Line 4 continues the pattern",
|
|
319
|
-
"Line 5 keeps going",
|
|
320
|
-
"Line 6 and still more",
|
|
321
|
-
"Line 7 almost there",
|
|
322
|
-
"Line 8 getting close",
|
|
323
|
-
"Line 9 nearly done",
|
|
324
|
-
"Line 10 the final line"
|
|
325
|
-
].join('\n');`}
|
|
326
|
-
</Code>
|
|
327
|
-
</Box>
|
|
328
|
-
</Stack>
|
|
329
|
-
),
|
|
330
|
-
};
|
|
331
|
-
|
|
332
|
-
export const Responsive: Story = {
|
|
333
|
-
parameters: {
|
|
334
|
-
viewport: {
|
|
335
|
-
defaultViewport: 'mobile1',
|
|
336
|
-
},
|
|
337
|
-
},
|
|
338
|
-
render: () => (
|
|
339
|
-
<Box sx={{ width: '100%', p: 2 }}>
|
|
340
|
-
<Stack spacing={2}>
|
|
341
|
-
<Typography variant="h6">Responsive Code Display</Typography>
|
|
342
|
-
|
|
343
|
-
<Typography>
|
|
344
|
-
Inline code adjusts to text:{' '}
|
|
345
|
-
<Code variant="inline" size="md">
|
|
346
|
-
responsive()
|
|
347
|
-
</Code>
|
|
348
|
-
</Typography>
|
|
349
|
-
|
|
350
|
-
<Code variant="block" copyable>
|
|
351
|
-
{`// This block adapts to container width
|
|
352
|
-
const mobileFirst = true;`}
|
|
353
|
-
</Code>
|
|
354
|
-
|
|
355
|
-
<Code variant="highlight" language="CSS" copyable lineNumbers>
|
|
356
|
-
{`@media (max-width: 768px) {
|
|
357
|
-
.container {
|
|
358
|
-
padding: 1rem;
|
|
359
|
-
}
|
|
360
|
-
}`}
|
|
361
|
-
</Code>
|
|
362
|
-
|
|
363
|
-
<Typography variant="caption">
|
|
364
|
-
View on different screen sizes to see responsive behavior
|
|
365
|
-
</Typography>
|
|
366
|
-
</Stack>
|
|
367
|
-
</Box>
|
|
368
|
-
),
|
|
369
|
-
};
|
|
370
|
-
|
|
371
|
-
export const HighlightCode: Story = {
|
|
372
|
-
render: () => (
|
|
373
|
-
<Stack spacing={3}>
|
|
374
|
-
<Code variant="highlight" language="bash" copyable>
|
|
375
|
-
{`$ npm install @mui/material @emotion/react @emotion/styled
|
|
376
|
-
$ npm run dev
|
|
377
|
-
|
|
378
|
-
> procurement-ui@1.0.0 dev
|
|
379
|
-
> vite dev
|
|
380
|
-
|
|
381
|
-
VITE v4.5.0 ready in 432 ms
|
|
382
|
-
|
|
383
|
-
➜ Local: http://localhost:5173/
|
|
384
|
-
➜ Network: http://192.168.1.100:5173/
|
|
385
|
-
➜ press h to show help`}
|
|
386
|
-
</Code>
|
|
387
|
-
|
|
388
|
-
<Code variant="terminal">
|
|
389
|
-
{`$ git status
|
|
390
|
-
On branch main
|
|
391
|
-
Your branch is up to date with 'origin/main'.
|
|
392
|
-
|
|
393
|
-
Changes to be committed:
|
|
394
|
-
(use "git restore --staged <file>..." to unstage)
|
|
395
|
-
new file: src/components/Code.tsx
|
|
396
|
-
modified: src/index.ts
|
|
397
|
-
|
|
398
|
-
$ git commit -m "Add Code component"
|
|
399
|
-
[main abc1234] Add Code component
|
|
400
|
-
2 files changed, 150 insertions(+)`}
|
|
401
|
-
</Code>
|
|
402
|
-
</Stack>
|
|
403
|
-
),
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
export const WithLineNumbers: Story = {
|
|
407
|
-
render: () => (
|
|
408
|
-
<Stack spacing={3}>
|
|
409
|
-
<Code variant="block" language="javascript" lineNumbers>
|
|
410
|
-
{`// React component with hooks
|
|
411
|
-
import React, { useState, useEffect } from 'react';
|
|
412
|
-
|
|
413
|
-
function Counter() {
|
|
414
|
-
const [count, setCount] = useState(0);
|
|
415
|
-
|
|
416
|
-
useEffect(() => {
|
|
417
|
-
document.title = \`Count: \${count}\`;
|
|
418
|
-
}, [count]);
|
|
419
|
-
|
|
420
|
-
return (
|
|
421
|
-
<div>
|
|
422
|
-
<p>You clicked {count} times</p>
|
|
423
|
-
<button onClick={() => setCount(count + 1)}>
|
|
424
|
-
Click me
|
|
425
|
-
</button>
|
|
426
|
-
</div>
|
|
427
|
-
);
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
export default Counter;`}
|
|
431
|
-
</Code>
|
|
432
|
-
</Stack>
|
|
433
|
-
),
|
|
434
|
-
};
|
|
435
|
-
|
|
436
|
-
export const CopyableCode: Story = {
|
|
437
|
-
render: () => (
|
|
438
|
-
<Stack spacing={3}>
|
|
439
|
-
<Paper sx={{ p: 2 }}>
|
|
440
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
441
|
-
Click the copy button to copy this code:
|
|
442
|
-
</Typography>
|
|
443
|
-
<Code variant="block" language="bash" copyable>
|
|
444
|
-
{`npm install
|
|
445
|
-
npm run build
|
|
446
|
-
npm run test`}
|
|
447
|
-
</Code>
|
|
448
|
-
</Paper>
|
|
449
|
-
|
|
450
|
-
<Paper sx={{ p: 2 }}>
|
|
451
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
452
|
-
Configuration example:
|
|
453
|
-
</Typography>
|
|
454
|
-
<Code variant="block" language="json" copyable>
|
|
455
|
-
{`{
|
|
456
|
-
"name": "my-app",
|
|
457
|
-
"version": "1.0.0",
|
|
458
|
-
"scripts": {
|
|
459
|
-
"dev": "vite",
|
|
460
|
-
"build": "vite build",
|
|
461
|
-
"preview": "vite preview"
|
|
462
|
-
}
|
|
463
|
-
}`}
|
|
464
|
-
</Code>
|
|
465
|
-
</Paper>
|
|
466
|
-
</Stack>
|
|
467
|
-
),
|
|
468
|
-
};
|
|
469
|
-
|
|
470
|
-
export const ColorThemes: Story = {
|
|
471
|
-
render: () => {
|
|
472
|
-
const sampleCode = `const greeting = "Hello, World!";
|
|
473
|
-
`;
|
|
474
|
-
|
|
475
|
-
return (
|
|
476
|
-
<Stack spacing={3}>
|
|
477
|
-
<Box>
|
|
478
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
479
|
-
Light Theme
|
|
480
|
-
</Typography>
|
|
481
|
-
<Code variant="block" language="javascript">
|
|
482
|
-
{sampleCode}
|
|
483
|
-
</Code>
|
|
484
|
-
</Box>
|
|
485
|
-
|
|
486
|
-
<Box>
|
|
487
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
488
|
-
Dark Theme
|
|
489
|
-
</Typography>
|
|
490
|
-
<Code variant="highlight" language="javascript">
|
|
491
|
-
{sampleCode}
|
|
492
|
-
</Code>
|
|
493
|
-
</Box>
|
|
494
|
-
|
|
495
|
-
<Box>
|
|
496
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
497
|
-
GitHub Theme
|
|
498
|
-
</Typography>
|
|
499
|
-
<Code variant="block" language="javascript">
|
|
500
|
-
{sampleCode}
|
|
501
|
-
</Code>
|
|
502
|
-
</Box>
|
|
503
|
-
|
|
504
|
-
<Box>
|
|
505
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
506
|
-
Monokai Theme
|
|
507
|
-
</Typography>
|
|
508
|
-
<Code variant="block" language="javascript">
|
|
509
|
-
{sampleCode}
|
|
510
|
-
</Code>
|
|
511
|
-
</Box>
|
|
512
|
-
</Stack>
|
|
513
|
-
);
|
|
514
|
-
},
|
|
515
|
-
};
|
|
516
|
-
|
|
517
|
-
export const DifferentLanguages: Story = {
|
|
518
|
-
render: () => (
|
|
519
|
-
<Stack spacing={3}>
|
|
520
|
-
<Box>
|
|
521
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
522
|
-
HTML
|
|
523
|
-
</Typography>
|
|
524
|
-
<Code variant="block" language="html">
|
|
525
|
-
{`<!DOCTYPE html>
|
|
526
|
-
<html lang="en">
|
|
527
|
-
<head>
|
|
528
|
-
<meta charset="UTF-8">
|
|
529
|
-
<title>My Page</title>
|
|
530
|
-
</head>
|
|
531
|
-
<body>
|
|
532
|
-
<h1>Hello World</h1>
|
|
533
|
-
</body>
|
|
534
|
-
</html>`}
|
|
535
|
-
</Code>
|
|
536
|
-
</Box>
|
|
537
|
-
|
|
538
|
-
<Box>
|
|
539
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
540
|
-
CSS
|
|
541
|
-
</Typography>
|
|
542
|
-
<Code variant="block" language="css">
|
|
543
|
-
{`.container {
|
|
544
|
-
display: flex;
|
|
545
|
-
justify-content: center;
|
|
546
|
-
align-items: center;
|
|
547
|
-
padding: 2rem;
|
|
548
|
-
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
549
|
-
}`}
|
|
550
|
-
</Code>
|
|
551
|
-
</Box>
|
|
552
|
-
|
|
553
|
-
<Box>
|
|
554
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
555
|
-
JSON
|
|
556
|
-
</Typography>
|
|
557
|
-
<Code variant="block" language="json">
|
|
558
|
-
{`{
|
|
559
|
-
"users": [
|
|
560
|
-
{
|
|
561
|
-
"id": 1,
|
|
562
|
-
"name": "John Doe",
|
|
563
|
-
"email": "john@example.com"
|
|
564
|
-
}
|
|
565
|
-
]
|
|
566
|
-
}`}
|
|
567
|
-
</Code>
|
|
568
|
-
</Box>
|
|
569
|
-
</Stack>
|
|
570
|
-
),
|
|
571
|
-
};
|
|
572
|
-
|
|
573
|
-
export const DocumentationExample: Story = {
|
|
574
|
-
render: () => (
|
|
575
|
-
<Stack spacing={3}>
|
|
576
|
-
<Box>
|
|
577
|
-
<Typography variant="h6" gutterBottom>
|
|
578
|
-
Installation
|
|
579
|
-
</Typography>
|
|
580
|
-
<Typography paragraph>To get started, install the package using npm or yarn:</Typography>
|
|
581
|
-
<Code variant="block" language="bash" copyable>
|
|
582
|
-
{`npm install @company/ui-components
|
|
583
|
-
# or
|
|
584
|
-
yarn add @company/ui-components`}
|
|
585
|
-
</Code>
|
|
586
|
-
</Box>
|
|
587
|
-
|
|
588
|
-
<Box>
|
|
589
|
-
<Typography variant="h6" gutterBottom>
|
|
590
|
-
Basic Usage
|
|
591
|
-
</Typography>
|
|
592
|
-
<Typography paragraph>
|
|
593
|
-
Import and use the <Code variant="inline">Button</Code> component:
|
|
594
|
-
</Typography>
|
|
595
|
-
<Code variant="block" language="javascript" lineNumbers copyable>
|
|
596
|
-
{`import { Button } from '@company/ui-components';
|
|
597
|
-
|
|
598
|
-
function App() {
|
|
599
|
-
return (
|
|
600
|
-
<Button variant="primary" onClick={() => alert('Clicked!')}>
|
|
601
|
-
Click Me
|
|
602
|
-
</Button>
|
|
603
|
-
);
|
|
604
|
-
}`}
|
|
605
|
-
</Code>
|
|
606
|
-
</Box>
|
|
607
|
-
|
|
608
|
-
<Box>
|
|
609
|
-
<Typography variant="h6" gutterBottom>
|
|
610
|
-
API Reference
|
|
611
|
-
</Typography>
|
|
612
|
-
<Typography paragraph>
|
|
613
|
-
The <Code variant="inline">Button</Code> component accepts the following props:
|
|
614
|
-
</Typography>
|
|
615
|
-
<Code variant="block" language="typescript">
|
|
616
|
-
{`interface ButtonProps {
|
|
617
|
-
variant?: 'primary' | 'secondary' | 'danger';
|
|
618
|
-
size?: 'small' | 'medium' | 'large';
|
|
619
|
-
disabled?: boolean;
|
|
620
|
-
onClick?: () => void;
|
|
621
|
-
children: React.ReactNode;
|
|
622
|
-
}`}
|
|
623
|
-
</Code>
|
|
624
|
-
</Box>
|
|
625
|
-
</Stack>
|
|
626
|
-
),
|
|
627
|
-
};
|
|
628
|
-
|
|
629
|
-
export const LongCodeWithWrap: Story = {
|
|
630
|
-
render: () => (
|
|
631
|
-
<Stack spacing={3}>
|
|
632
|
-
<Box>
|
|
633
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
634
|
-
Without wrapping (scrollable)
|
|
635
|
-
</Typography>
|
|
636
|
-
<Code variant="block" language="javascript" wrap={false}>
|
|
637
|
-
{`const veryLongVariableName = "This is a very long string that would normally cause horizontal scrolling in the code block without wrapping enabled";`}
|
|
638
|
-
</Code>
|
|
639
|
-
</Box>
|
|
640
|
-
|
|
641
|
-
<Box>
|
|
642
|
-
<Typography variant="subtitle2" gutterBottom>
|
|
643
|
-
With wrapping enabled
|
|
644
|
-
</Typography>
|
|
645
|
-
<Code variant="block" language="javascript" wrap={true}>
|
|
646
|
-
{`const veryLongVariableName = "This is a very long string that will wrap to the next line when wrapping is enabled in the code block";`}
|
|
647
|
-
</Code>
|
|
648
|
-
</Box>
|
|
649
|
-
</Stack>
|
|
650
|
-
),
|
|
651
|
-
};
|
|
652
|
-
|
|
653
|
-
export const MixedContent: Story = {
|
|
654
|
-
render: () => (
|
|
655
|
-
<Paper sx={{ p: 3 }}>
|
|
656
|
-
<Typography variant="h6" gutterBottom>
|
|
657
|
-
Working with Arrays in JavaScript
|
|
658
|
-
</Typography>
|
|
659
|
-
|
|
660
|
-
<Typography paragraph>
|
|
661
|
-
JavaScript provides many useful array methods. The <Code variant="inline">map()</Code>{' '}
|
|
662
|
-
method creates a new array by transforming each element:
|
|
663
|
-
</Typography>
|
|
664
|
-
|
|
665
|
-
<Code variant="block" language="javascript" lineNumbers>
|
|
666
|
-
{`const numbers = [1, 2, 3, 4, 5];
|
|
667
|
-
const doubled = numbers.map(n => n * 2);
|
|
668
|
-
// [2, 4, 6, 8, 10]`}
|
|
669
|
-
</Code>
|
|
670
|
-
|
|
671
|
-
<Typography paragraph sx={{ mt: 2 }}>
|
|
672
|
-
You can also use <Code variant="inline">filter()</Code> to select specific elements and{' '}
|
|
673
|
-
<Code variant="inline">reduce()</Code> to compute a single value:
|
|
674
|
-
</Typography>
|
|
675
|
-
|
|
676
|
-
<Code variant="block" language="javascript" lineNumbers>
|
|
677
|
-
{`const evens = numbers.filter(n => n % 2 === 0);
|
|
678
|
-
const sum = numbers.reduce((acc, n) => acc + n, 0);`}
|
|
679
|
-
</Code>
|
|
680
|
-
|
|
681
|
-
<Typography variant="caption" display="block" sx={{ mt: 2 }}>
|
|
682
|
-
💡 Tip: These methods don't modify the original array
|
|
683
|
-
</Typography>
|
|
684
|
-
</Paper>
|
|
685
|
-
),
|
|
686
|
-
};
|