@keboola/design 2.0.1 → 3.0.0
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 +64 -5
- package/dist/icons.cjs +13 -733
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.d.cts +7 -0
- package/dist/icons.d.ts +7 -0
- package/dist/icons.js +8 -2
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +13605 -12713
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10462 -0
- package/dist/index.d.ts +10462 -0
- package/dist/index.js +13437 -12576
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.cjs +146 -82
- package/dist/markdown-editor.cjs.map +1 -1
- package/dist/markdown-editor.d.cts +74 -0
- package/dist/markdown-editor.d.ts +74 -0
- package/dist/markdown-editor.js +146 -83
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.cjs +85 -19
- package/dist/mermaid.cjs.map +1 -1
- package/dist/mermaid.d.cts +11 -0
- package/dist/mermaid.d.ts +11 -0
- package/dist/mermaid.js +68 -21
- package/dist/mermaid.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/testing.cjs +106 -0
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.cts +19 -0
- package/dist/testing.d.ts +19 -0
- package/dist/testing.js +104 -0
- package/dist/testing.js.map +1 -0
- package/package.json +94 -15
- package/dist/icon-names.cjs +0 -18
- package/dist/icon-names.cjs.map +0 -1
- package/dist/icon-names.js +0 -16
- package/dist/icon-names.js.map +0 -1
- package/src/blocks/AIKit/AnswerSummary.stories.tsx +0 -38
- package/src/blocks/AIKit/AnswerSummary.tsx +0 -63
- package/src/blocks/AIKit/CollapsibleStepHeader.stories.tsx +0 -53
- package/src/blocks/AIKit/CollapsibleStepHeader.tsx +0 -64
- package/src/blocks/AIKit/InlineStepDetail.stories.tsx +0 -25
- package/src/blocks/AIKit/InlineStepDetail.tsx +0 -13
- package/src/blocks/AIKit/InlineStepLabel.stories.tsx +0 -37
- package/src/blocks/AIKit/InlineStepLabel.tsx +0 -36
- package/src/blocks/AIKit/MessageBubble.stories.tsx +0 -145
- package/src/blocks/AIKit/MessageBubble.tsx +0 -68
- package/src/blocks/AIKit/PlanApproval.stories.tsx +0 -121
- package/src/blocks/AIKit/PlanApproval.test.tsx +0 -241
- package/src/blocks/AIKit/PlanApproval.tsx +0 -363
- package/src/blocks/AIKit/PlanRewritingIndicator.test.tsx +0 -17
- package/src/blocks/AIKit/PlanRewritingIndicator.tsx +0 -20
- package/src/blocks/AIKit/PromptInput.stories.tsx +0 -106
- package/src/blocks/AIKit/PromptInput.test.tsx +0 -53
- package/src/blocks/AIKit/PromptInput.tsx +0 -218
- package/src/blocks/AIKit/PromptInputAction.tsx +0 -18
- package/src/blocks/AIKit/PromptInputSubmit.tsx +0 -59
- package/src/blocks/AIKit/Question.stories.tsx +0 -235
- package/src/blocks/AIKit/Question.tsx +0 -350
- package/src/blocks/AIKit/QuestionBlock.stories.tsx +0 -99
- package/src/blocks/AIKit/QuestionBlock.tsx +0 -83
- package/src/blocks/AIKit/SuggestedPrompt.stories.tsx +0 -82
- package/src/blocks/AIKit/SuggestedPrompt.tsx +0 -42
- package/src/blocks/AIKit/ThinkingIndicator.stories.tsx +0 -21
- package/src/blocks/AIKit/ThinkingIndicator.tsx +0 -14
- package/src/blocks/AIKit/index.ts +0 -12
- package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.stories.tsx +0 -78
- package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx +0 -103
- package/src/blocks/AutoSaveTextarea/index.ts +0 -1
- package/src/blocks/ClipboardButton/ClipboardButton.stories.tsx +0 -28
- package/src/blocks/ClipboardButton/ClipboardButton.tsx +0 -43
- package/src/blocks/ClipboardButton/ClipboardInline.tsx +0 -40
- package/src/blocks/ClipboardButton/index.ts +0 -2
- package/src/blocks/ColorInput/ColorInput.stories.tsx +0 -109
- package/src/blocks/ColorInput/ColorInput.test.tsx +0 -163
- package/src/blocks/ColorInput/ColorInput.tsx +0 -171
- package/src/blocks/ColorInput/ColorPicker.tsx +0 -42
- package/src/blocks/ColorInput/index.ts +0 -1
- package/src/blocks/ColorInput/utils.test.ts +0 -189
- package/src/blocks/ColorInput/utils.ts +0 -74
- package/src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.stories.tsx +0 -30
- package/src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.tsx +0 -20
- package/src/blocks/EmptyConfigurationActionCard/index.ts +0 -1
- package/src/blocks/EmptyState/EmptyState.stories.tsx +0 -93
- package/src/blocks/EmptyState/EmptyState.tsx +0 -146
- package/src/blocks/EmptyState/index.ts +0 -1
- package/src/blocks/ErrorState/ErrorState.stories.tsx +0 -125
- package/src/blocks/ErrorState/ErrorState.tsx +0 -162
- package/src/blocks/ErrorState/index.ts +0 -1
- package/src/blocks/Form/components/FormBody.tsx +0 -27
- package/src/blocks/Form/components/SubmitButton.tsx +0 -30
- package/src/blocks/Form/connectors/CheckboxField.tsx +0 -34
- package/src/blocks/Form/connectors/FieldShell.tsx +0 -46
- package/src/blocks/Form/connectors/NumberField.tsx +0 -36
- package/src/blocks/Form/connectors/PasswordField.tsx +0 -38
- package/src/blocks/Form/connectors/SelectField.tsx +0 -73
- package/src/blocks/Form/connectors/SwitchField.tsx +0 -34
- package/src/blocks/Form/connectors/TextAreaField.tsx +0 -36
- package/src/blocks/Form/connectors/TextField.tsx +0 -36
- package/src/blocks/Form/contexts.ts +0 -4
- package/src/blocks/Form/formHook.ts +0 -45
- package/src/blocks/Form/index.ts +0 -2
- package/src/blocks/Form/setServerFieldErrors.test.ts +0 -38
- package/src/blocks/Form/setServerFieldErrors.ts +0 -21
- package/src/blocks/InputOtp/InputOtp.stories.tsx +0 -214
- package/src/blocks/InputOtp/InputOtp.test.tsx +0 -162
- package/src/blocks/InputOtp/InputOtp.tsx +0 -62
- package/src/blocks/InputOtp/InputOtpGroup.tsx +0 -13
- package/src/blocks/InputOtp/InputOtpSeparator.tsx +0 -23
- package/src/blocks/InputOtp/InputOtpSlot.styles.ts +0 -52
- package/src/blocks/InputOtp/InputOtpSlot.tsx +0 -44
- package/src/blocks/InputOtp/context.ts +0 -23
- package/src/blocks/InputOtp/index.ts +0 -23
- package/src/blocks/MermaidDiagram/MermaidDiagram.stories.tsx +0 -87
- package/src/blocks/MermaidDiagram/MermaidDiagram.tsx +0 -266
- package/src/blocks/MermaidDiagram/index.ts +0 -1
- package/src/blocks/MultiActionButtonGroup/MultiActionButton.stories.tsx +0 -119
- package/src/blocks/MultiActionButtonGroup/MultiActionButton.tsx +0 -41
- package/src/blocks/MultiActionButtonGroup/MultiActionButtonGroup.tsx +0 -16
- package/src/blocks/MultiActionButtonGroup/index.ts +0 -1
- package/src/blocks/MultiCombobox/MultiCombobox.stories.tsx +0 -324
- package/src/blocks/MultiCombobox/MultiCombobox.tsx +0 -257
- package/src/blocks/MultiCombobox/index.ts +0 -1
- package/src/blocks/NumberInput/NumberInput.stories.tsx +0 -112
- package/src/blocks/NumberInput/NumberInput.test.tsx +0 -148
- package/src/blocks/NumberInput/NumberInput.tsx +0 -89
- package/src/blocks/NumberInput/index.ts +0 -1
- package/src/blocks/PageHeader/AGENTS.md +0 -137
- package/src/blocks/PageHeader/PageHeader.stories.tsx +0 -371
- package/src/blocks/PageHeader/PageHeader.tsx +0 -22
- package/src/blocks/PageHeader/PageHeaderDetail.tsx +0 -84
- package/src/blocks/PageHeader/PageHeaderIndex.tsx +0 -75
- package/src/blocks/PageHeader/index.ts +0 -1
- package/src/blocks/PageHeader/styles.ts +0 -6
- package/src/blocks/PageLayout/AGENTS.md +0 -94
- package/src/blocks/PageLayout/PageLayout.stories.tsx +0 -146
- package/src/blocks/PageLayout/PageLayout.tsx +0 -139
- package/src/blocks/PageLayout/index.ts +0 -1
- package/src/blocks/PageToolbar/PageToolbar.stories.tsx +0 -353
- package/src/blocks/PageToolbar/PageToolbar.tsx +0 -160
- package/src/blocks/PageToolbar/PageToolbarToken.tsx +0 -61
- package/src/blocks/PageToolbar/index.ts +0 -1
- package/src/blocks/PasswordInput/PasswordInput.stories.tsx +0 -114
- package/src/blocks/PasswordInput/PasswordInput.test.tsx +0 -219
- package/src/blocks/PasswordInput/PasswordInput.tsx +0 -180
- package/src/blocks/PasswordInput/index.ts +0 -1
- package/src/blocks/SearchInput/SearchInput.stories.tsx +0 -127
- package/src/blocks/SearchInput/SearchInput.test.tsx +0 -162
- package/src/blocks/SearchInput/SearchInput.tsx +0 -172
- package/src/blocks/SearchInput/index.ts +0 -1
- package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.stories.tsx +0 -73
- package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx +0 -92
- package/src/blocks/SearchInputWithNavigation/index.ts +0 -1
- package/src/blocks/SplitButton/SplitButton.stories.tsx +0 -91
- package/src/blocks/SplitButton/SplitButton.tsx +0 -81
- package/src/blocks/SplitButton/index.ts +0 -1
- package/src/blocks/Tagger/TagItem.tsx +0 -32
- package/src/blocks/Tagger/TagSelectPopover/TagSelectCreateItem.tsx +0 -44
- package/src/blocks/Tagger/TagSelectPopover/TagSelectItem.tsx +0 -31
- package/src/blocks/Tagger/TagSelectPopover/TagSelectList.tsx +0 -67
- package/src/blocks/Tagger/TagSelectPopover/TagSelectPopover.tsx +0 -34
- package/src/blocks/Tagger/TagSelectPopover/TagSelectValue.tsx +0 -47
- package/src/blocks/Tagger/TagSelectPopover/index.ts +0 -1
- package/src/blocks/Tagger/Tagger.stories.tsx +0 -80
- package/src/blocks/Tagger/Tagger.tsx +0 -101
- package/src/blocks/Tagger/index.ts +0 -1
- package/src/blocks/Tagger/types.ts +0 -11
- package/src/blocks/Textarea/Textarea.stories.tsx +0 -47
- package/src/blocks/Textarea/Textarea.tsx +0 -50
- package/src/blocks/Textarea/index.ts +0 -1
- package/src/components/Alert/Alert.stories.tsx +0 -101
- package/src/components/Alert/Alert.tsx +0 -121
- package/src/components/Alert/AlertAction.tsx +0 -31
- package/src/components/Alert/AlertCollapsibleIcon.tsx +0 -25
- package/src/components/Alert/AlertDescription.tsx +0 -36
- package/src/components/Alert/AlertIcon.tsx +0 -40
- package/src/components/Alert/AlertRoot.tsx +0 -64
- package/src/components/Alert/AlertTitle.tsx +0 -25
- package/src/components/Alert/index.ts +0 -1
- package/src/components/Avatar.stories.tsx +0 -22
- package/src/components/Avatar.tsx +0 -88
- package/src/components/Badge/Badge.stories.tsx +0 -122
- package/src/components/Badge/Badge.tsx +0 -71
- package/src/components/Badge/BadgeAddon.tsx +0 -63
- package/src/components/Badge/BadgeButton.tsx +0 -40
- package/src/components/Badge/BadgeLabel.tsx +0 -37
- package/src/components/Badge/BadgeRoot.tsx +0 -21
- package/src/components/Badge/index.ts +0 -1
- package/src/components/Badge/styles.ts +0 -74
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -135
- package/src/components/Breadcrumb/Breadcrumb.tsx +0 -23
- package/src/components/Breadcrumb/BreadcrumbEllipsis.tsx +0 -43
- package/src/components/Breadcrumb/BreadcrumbItem.tsx +0 -9
- package/src/components/Breadcrumb/BreadcrumbLink.tsx +0 -48
- package/src/components/Breadcrumb/BreadcrumbList.tsx +0 -26
- package/src/components/Breadcrumb/BreadcrumbPage.tsx +0 -22
- package/src/components/Breadcrumb/BreadcrumbSeparator.tsx +0 -28
- package/src/components/Breadcrumb/index.ts +0 -1
- package/src/components/Button/Button.stories.tsx +0 -80
- package/src/components/Button/Button.tsx +0 -110
- package/src/components/Button/ButtonInline.stories.tsx +0 -54
- package/src/components/Button/ButtonInline.tsx +0 -77
- package/src/components/Button/index.ts +0 -3
- package/src/components/Button/styles.ts +0 -313
- package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -140
- package/src/components/ButtonGroup/ButtonGroup.tsx +0 -79
- package/src/components/ButtonGroup/index.ts +0 -1
- package/src/components/Calendar/Calendar.stories.tsx +0 -101
- package/src/components/Calendar/Calendar.tsx +0 -44
- package/src/components/Calendar/index.ts +0 -2
- package/src/components/Card/Card.stories.tsx +0 -60
- package/src/components/Card/Card.tsx +0 -42
- package/src/components/Card/CardContent.tsx +0 -5
- package/src/components/Card/CardHeader.tsx +0 -5
- package/src/components/Card/CardTitle.tsx +0 -13
- package/src/components/Card/index.ts +0 -1
- package/src/components/Card/styles.ts +0 -32
- package/src/components/Checkbox/Checkbox.stories.tsx +0 -210
- package/src/components/Checkbox/Checkbox.test.tsx +0 -140
- package/src/components/Checkbox/Checkbox.tsx +0 -83
- package/src/components/Checkbox/index.ts +0 -1
- package/src/components/Checkbox/styles.ts +0 -77
- package/src/components/Clipboard/Clipboard.stories.tsx +0 -44
- package/src/components/Clipboard/Clipboard.tsx +0 -89
- package/src/components/Clipboard/index.ts +0 -1
- package/src/components/CodeEditor/ButtonToolbar.tsx +0 -14
- package/src/components/CodeEditor/CodeEditor.tsx +0 -155
- package/src/components/CodeEditor/SqlEditor.stories.tsx +0 -76
- package/src/components/CodeEditor/SqlEditor.tsx +0 -206
- package/src/components/CodeEditor/ToggleComponentHelp.tsx +0 -7
- package/src/components/CodeEditor/activeQueryHighlight.test.ts +0 -178
- package/src/components/CodeEditor/activeQueryHighlight.ts +0 -245
- package/src/components/CodeEditor/helpers.ts +0 -100
- package/src/components/CodeEditor/highlighting.ts +0 -184
- package/src/components/CodeEditor/index.ts +0 -3
- package/src/components/CodeEditor/search.ts +0 -186
- package/src/components/Collapse.stories.tsx +0 -56
- package/src/components/Collapse.tsx +0 -61
- package/src/components/Collapsible/Collapsible.stories.tsx +0 -55
- package/src/components/Collapsible/Collapsible.tsx +0 -11
- package/src/components/Collapsible/CollapsibleContent.tsx +0 -25
- package/src/components/Collapsible/index.ts +0 -1
- package/src/components/CollapsiblePanel.stories.tsx +0 -25
- package/src/components/CollapsiblePanel.tsx +0 -127
- package/src/components/Combobox/Combobox.stories.tsx +0 -426
- package/src/components/Combobox/Combobox.test.tsx +0 -165
- package/src/components/Combobox/Combobox.tsx +0 -345
- package/src/components/Combobox/ComboboxChips.tsx +0 -68
- package/src/components/Combobox/ComboboxContent.tsx +0 -95
- package/src/components/Combobox/ComboboxEmpty.tsx +0 -30
- package/src/components/Combobox/ComboboxInput.tsx +0 -10
- package/src/components/Combobox/ComboboxInputGroup.tsx +0 -38
- package/src/components/Combobox/ComboboxItem.tsx +0 -70
- package/src/components/Combobox/ComboboxItemIndicator.tsx +0 -78
- package/src/components/Combobox/ComboboxList.tsx +0 -32
- package/src/components/Combobox/ComboboxRoot.tsx +0 -5
- package/src/components/Combobox/ComboboxSeparator.tsx +0 -20
- package/src/components/Combobox/Group/ComboboxCollection.tsx +0 -7
- package/src/components/Combobox/Group/ComboboxGroup.tsx +0 -23
- package/src/components/Combobox/Group/ComboboxGroupLabel.tsx +0 -38
- package/src/components/Combobox/Group/index.ts +0 -3
- package/src/components/Combobox/index.ts +0 -1
- package/src/components/Combobox/types.ts +0 -22
- package/src/components/Combobox/utils.test.ts +0 -95
- package/src/components/Combobox/utils.ts +0 -103
- package/src/components/Command/Command.stories.tsx +0 -367
- package/src/components/Command/Command.tsx +0 -37
- package/src/components/Command/CommandContent.tsx +0 -19
- package/src/components/Command/CommandEmpty.tsx +0 -6
- package/src/components/Command/CommandGroup.tsx +0 -26
- package/src/components/Command/CommandInput.tsx +0 -27
- package/src/components/Command/CommandItem/CheckIndicator.tsx +0 -86
- package/src/components/Command/CommandItem/CommandItem.tsx +0 -94
- package/src/components/Command/CommandItem/index.ts +0 -1
- package/src/components/Command/CommandList.tsx +0 -32
- package/src/components/Command/CommandSeparator.tsx +0 -13
- package/src/components/Command/index.ts +0 -6
- package/src/components/DatePicker/DatePicker.tsx +0 -37
- package/src/components/DatePicker/index.ts +0 -1
- package/src/components/DiffView/DiffView.stories.tsx +0 -80
- package/src/components/DiffView/DiffView.tsx +0 -131
- package/src/components/DiffView/DiffViewMark.tsx +0 -21
- package/src/components/DiffView/DiffViewTd.tsx +0 -84
- package/src/components/DiffView/DiffViewTh.tsx +0 -23
- package/src/components/DiffView/index.ts +0 -11
- package/src/components/DiffView/util.test.ts +0 -231
- package/src/components/DiffView/util.ts +0 -311
- package/src/components/DotsLoader.tsx +0 -22
- package/src/components/DropdownMenu/DropdownMenu.stories.tsx +0 -310
- package/src/components/DropdownMenu/DropdownMenu.tsx +0 -61
- package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +0 -55
- package/src/components/DropdownMenu/DropdownMenuContent.tsx +0 -52
- package/src/components/DropdownMenu/DropdownMenuContext.tsx +0 -13
- package/src/components/DropdownMenu/DropdownMenuItem.tsx +0 -80
- package/src/components/DropdownMenu/DropdownMenuItemDescription.tsx +0 -42
- package/src/components/DropdownMenu/DropdownMenuItemIndicator.tsx +0 -104
- package/src/components/DropdownMenu/DropdownMenuLabel.tsx +0 -21
- package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.tsx +0 -31
- package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx +0 -67
- package/src/components/DropdownMenu/DropdownMenuRadioGroup/index.ts +0 -2
- package/src/components/DropdownMenu/DropdownMenuSeparator.tsx +0 -35
- package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSub.tsx +0 -3
- package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubContent.tsx +0 -21
- package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx +0 -17
- package/src/components/DropdownMenu/DropdownMenuSub/index.ts +0 -3
- package/src/components/DropdownMenu/DropdownMenuTrigger.tsx +0 -19
- package/src/components/DropdownMenu/ItemIcon.tsx +0 -30
- package/src/components/DropdownMenu/index.ts +0 -1
- package/src/components/DropdownMenu/styles.ts +0 -82
- package/src/components/EmptySearchContent.stories.tsx +0 -12
- package/src/components/EmptySearchContent.tsx +0 -13
- package/src/components/FieldBox/FieldBox.stories.tsx +0 -138
- package/src/components/FieldBox/FieldBox.tsx +0 -43
- package/src/components/FieldBox/FieldBoxDescription.tsx +0 -18
- package/src/components/FieldBox/FieldBoxTitle.tsx +0 -20
- package/src/components/FieldBox/index.ts +0 -1
- package/src/components/FieldBox/styles.ts +0 -37
- package/src/components/FormGroup/FormGroup.stories.tsx +0 -120
- package/src/components/FormGroup/FormGroup.tsx +0 -48
- package/src/components/FormGroup/FormGroupColorInput.tsx +0 -15
- package/src/components/FormGroup/FormGroupHelp.tsx +0 -17
- package/src/components/FormGroup/FormGroupNumberInput.tsx +0 -15
- package/src/components/FormGroup/FormGroupTextInput.tsx +0 -15
- package/src/components/FormGroup/FormGroupTextarea.tsx +0 -12
- package/src/components/FormGroup/context.ts +0 -11
- package/src/components/FormGroup/index.ts +0 -2
- package/src/components/FormGroup/types.ts +0 -5
- package/src/components/FullScreenModal/FullScreenModal.tsx +0 -8
- package/src/components/FullScreenModal/FullScreenModalBody.tsx +0 -16
- package/src/components/FullScreenModal/FullScreenModalHeader.tsx +0 -92
- package/src/components/FullScreenModal/FullScreenModalRoot.tsx +0 -79
- package/src/components/FullScreenModal/index.ts +0 -3
- package/src/components/HelpBlock/HelpBlock.stories.tsx +0 -28
- package/src/components/HelpBlock/HelpBlock.tsx +0 -31
- package/src/components/HelpBlock/index.ts +0 -1
- package/src/components/HoverCard/HoverCard.stories.tsx +0 -77
- package/src/components/HoverCard/HoverCard.tsx +0 -13
- package/src/components/HoverCard/HoverCardContent.tsx +0 -68
- package/src/components/HoverCard/index.ts +0 -1
- package/src/components/Icon/Icon.stories.tsx +0 -26
- package/src/components/Icon/Icon.tsx +0 -10
- package/src/components/Icon/Icons.mdx +0 -28
- package/src/components/Icon/constants.ts +0 -1
- package/src/components/Icon/index.ts +0 -27
- package/src/components/Input/DateInput/DateInput.stories.tsx +0 -58
- package/src/components/Input/DateInput/DateInput.tsx +0 -143
- package/src/components/Input/DateInput/helpers.test.ts +0 -102
- package/src/components/Input/DateInput/helpers.ts +0 -59
- package/src/components/Input/DateInput/index.ts +0 -1
- package/src/components/Input/DateRangeInput/DateRangeInput.stories.tsx +0 -66
- package/src/components/Input/DateRangeInput/DateRangeInput.tsx +0 -139
- package/src/components/Input/DateRangeInput/helpers.test.ts +0 -146
- package/src/components/Input/DateRangeInput/helpers.ts +0 -36
- package/src/components/Input/DateRangeInput/index.ts +0 -1
- package/src/components/Input/Input.stories.tsx +0 -93
- package/src/components/Input/Input.test.tsx +0 -112
- package/src/components/Input/Input.tsx +0 -163
- package/src/components/Input/TextInput/TextInput.stories.tsx +0 -68
- package/src/components/Input/TextInput/TextInput.test.tsx +0 -52
- package/src/components/Input/TextInput/TextInput.tsx +0 -73
- package/src/components/Input/TextInput/index.ts +0 -1
- package/src/components/Input/TimeInput/TimeInput.stories.tsx +0 -89
- package/src/components/Input/TimeInput/TimeInput.tsx +0 -106
- package/src/components/Input/TimeInput/index.ts +0 -1
- package/src/components/Input/index.ts +0 -4
- package/src/components/Input/utils.ts +0 -11
- package/src/components/InputGroup/InputGroup.stories.tsx +0 -215
- package/src/components/InputGroup/InputGroup.tsx +0 -228
- package/src/components/InputGroup/InputGroupAddon.tsx +0 -57
- package/src/components/InputGroup/InputGroupButton.tsx +0 -25
- package/src/components/InputGroup/InputGroupInput.tsx +0 -34
- package/src/components/InputGroup/InputGroupText.tsx +0 -21
- package/src/components/InputGroup/InputGroupTextArea.tsx +0 -78
- package/src/components/InputGroup/index.ts +0 -1
- package/src/components/Kbd/Kbd.stories.tsx +0 -82
- package/src/components/Kbd/Kbd.tsx +0 -17
- package/src/components/Kbd/KbdGroup.tsx +0 -35
- package/src/components/Kbd/KbdSeparator.tsx +0 -9
- package/src/components/Kbd/index.ts +0 -3
- package/src/components/Kbd/keyboardKeys.ts +0 -40
- package/src/components/Kbd/styles.ts +0 -39
- package/src/components/Label/Label.stories.tsx +0 -53
- package/src/components/Label/Label.tsx +0 -31
- package/src/components/Label/index.ts +0 -1
- package/src/components/Link.stories.tsx +0 -19
- package/src/components/Link.tsx +0 -37
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +0 -182
- package/src/components/MarkdownEditor/MarkdownEditor.test.ts +0 -171
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +0 -245
- package/src/components/MarkdownEditor/context.ts +0 -10
- package/src/components/MarkdownEditor/index.ts +0 -1
- package/src/components/MarkdownEditor/nodes/ImageNode.tsx +0 -115
- package/src/components/MarkdownEditor/nodes/ImageNodeComponent.tsx +0 -18
- package/src/components/MarkdownEditor/nodes/MermaidNode.tsx +0 -72
- package/src/components/MarkdownEditor/nodes/MermaidNodeComponent.tsx +0 -35
- package/src/components/MarkdownEditor/plugins/ImagePastePlugin.tsx +0 -149
- package/src/components/MarkdownEditor/plugins/KeyboardPlugin.tsx +0 -81
- package/src/components/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx +0 -65
- package/src/components/MarkdownEditor/plugins/ToolbarPlugin.tsx +0 -284
- package/src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx +0 -99
- package/src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx +0 -142
- package/src/components/MarkdownEditor/plugins/toolbar/LinkPanel.tsx +0 -160
- package/src/components/MarkdownEditor/plugins/toolbar/ToolbarButton.tsx +0 -36
- package/src/components/MarkdownEditor/plugins/toolbar/ToolbarDivider.tsx +0 -1
- package/src/components/MarkdownEditor/theme.ts +0 -39
- package/src/components/MarkdownEditor/transformers.ts +0 -189
- package/src/components/MarkedText/MarkedText.stories.tsx +0 -46
- package/src/components/MarkedText/MarkedText.tsx +0 -36
- package/src/components/MarkedText/index.ts +0 -1
- package/src/components/MarkedText/utils.test.ts +0 -193
- package/src/components/MarkedText/utils.ts +0 -37
- package/src/components/MergeEditor/AcceptControls/AcceptButton.tsx +0 -25
- package/src/components/MergeEditor/AcceptControls/AcceptControls.tsx +0 -77
- package/src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx +0 -38
- package/src/components/MergeEditor/MergeEditor.stories.tsx +0 -226
- package/src/components/MergeEditor/MergeEditor.tsx +0 -125
- package/src/components/MergeEditor/MergePane.tsx +0 -113
- package/src/components/MergeEditor/PaneHeader.tsx +0 -11
- package/src/components/MergeEditor/constants.ts +0 -48
- package/src/components/MergeEditor/decorations.ts +0 -126
- package/src/components/MergeEditor/helpers.test.ts +0 -172
- package/src/components/MergeEditor/helpers.ts +0 -118
- package/src/components/MergeEditor/index.ts +0 -5
- package/src/components/MergeEditor/useMergeDiff.ts +0 -573
- package/src/components/MergeEditor/useScrollSync.ts +0 -79
- package/src/components/Modal/Modal.stories.tsx +0 -680
- package/src/components/Modal/Modal.tsx +0 -49
- package/src/components/Modal/ModalBody.tsx +0 -33
- package/src/components/Modal/ModalCloseIcon.tsx +0 -31
- package/src/components/Modal/ModalContent.tsx +0 -95
- package/src/components/Modal/ModalDescription.tsx +0 -20
- package/src/components/Modal/ModalFooter.tsx +0 -20
- package/src/components/Modal/ModalHeader.tsx +0 -61
- package/src/components/Modal/ModalIcon.tsx +0 -109
- package/src/components/Modal/ModalOverlay.tsx +0 -42
- package/src/components/Modal/ModalTitle.tsx +0 -12
- package/src/components/Modal/index.ts +0 -1
- package/src/components/Navbar/Navbar.stories.tsx +0 -191
- package/src/components/Navbar/Navbar.tsx +0 -80
- package/src/components/Navbar/NavbarContent.tsx +0 -20
- package/src/components/Navbar/NavbarFooter.tsx +0 -11
- package/src/components/Navbar/NavbarHeader.tsx +0 -11
- package/src/components/Navbar/NavbarMenu.tsx +0 -30
- package/src/components/Navbar/NavbarMenuAvatar.tsx +0 -67
- package/src/components/Navbar/NavbarMenuButton.tsx +0 -135
- package/src/components/Navbar/NavbarMenuItem.tsx +0 -9
- package/src/components/Navbar/NavbarMenuItemAdornment.tsx +0 -65
- package/src/components/Navbar/index.ts +0 -1
- package/src/components/Pagination/Pagination.stories.tsx +0 -131
- package/src/components/Pagination/Pagination.tsx +0 -34
- package/src/components/Pagination/PaginationButton.tsx +0 -36
- package/src/components/Pagination/PaginationContent.tsx +0 -12
- package/src/components/Pagination/PaginationEllipsis.tsx +0 -26
- package/src/components/Pagination/PaginationItem.tsx +0 -9
- package/src/components/Pagination/PaginationNext.tsx +0 -20
- package/src/components/Pagination/PaginationPrevious.tsx +0 -14
- package/src/components/Pagination/index.ts +0 -1
- package/src/components/PanelWithDetails.stories.tsx +0 -28
- package/src/components/PanelWithDetails.tsx +0 -65
- package/src/components/Popconfirm/Popconfirm.stories.tsx +0 -373
- package/src/components/Popconfirm/Popconfirm.tsx +0 -82
- package/src/components/Popconfirm/PopconfirmBody.tsx +0 -5
- package/src/components/Popconfirm/PopconfirmCancel.tsx +0 -45
- package/src/components/Popconfirm/PopconfirmConfirm.tsx +0 -57
- package/src/components/Popconfirm/PopconfirmContent.tsx +0 -33
- package/src/components/Popconfirm/PopconfirmFooter.tsx +0 -9
- package/src/components/Popconfirm/PopconfirmTrigger.tsx +0 -22
- package/src/components/Popconfirm/context.ts +0 -19
- package/src/components/Popconfirm/index.ts +0 -1
- package/src/components/Popover/Popover.stories.tsx +0 -85
- package/src/components/Popover/Popover.tsx +0 -15
- package/src/components/Popover/PopoverContent.tsx +0 -103
- package/src/components/Popover/index.ts +0 -1
- package/src/components/Progress/Progress.stories.tsx +0 -67
- package/src/components/Progress/Progress.tsx +0 -45
- package/src/components/Progress/index.ts +0 -1
- package/src/components/RadioGroup/Radio.tsx +0 -61
- package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -300
- package/src/components/RadioGroup/RadioGroup.tsx +0 -64
- package/src/components/RadioGroup/RadioGroupItem.tsx +0 -60
- package/src/components/RadioGroup/RadioGroupItemButton.tsx +0 -79
- package/src/components/RadioGroup/RadioGroupSeparator.tsx +0 -12
- package/src/components/RadioGroup/context.ts +0 -13
- package/src/components/RadioGroup/index.ts +0 -1
- package/src/components/Resizable/Resizable.stories.tsx +0 -50
- package/src/components/Resizable/ResizableHandle.tsx +0 -50
- package/src/components/Resizable/ResizablePanel.tsx +0 -12
- package/src/components/Resizable/ResizablePanelGroup.tsx +0 -19
- package/src/components/Resizable/index.ts +0 -3
- package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -43
- package/src/components/ScrollArea/ScrollArea.tsx +0 -50
- package/src/components/ScrollArea/ScrollBar.tsx +0 -32
- package/src/components/ScrollArea/index.ts +0 -2
- package/src/components/Search/ClearButton.tsx +0 -42
- package/src/components/Search/Search.stories.tsx +0 -77
- package/src/components/Search/Search.test.tsx +0 -224
- package/src/components/Search/Search.tsx +0 -139
- package/src/components/Search/SearchForm.tsx +0 -37
- package/src/components/Search/index.ts +0 -2
- package/src/components/Search/styles.ts +0 -88
- package/src/components/Search/utils.ts +0 -11
- package/src/components/Select/Select.stories.tsx +0 -109
- package/src/components/Select/Select.tsx +0 -141
- package/src/components/Select/SelectContent.tsx +0 -110
- package/src/components/Select/SelectGroup.tsx +0 -10
- package/src/components/Select/SelectItem.tsx +0 -72
- package/src/components/Select/SelectLabel.tsx +0 -32
- package/src/components/Select/SelectRoot.tsx +0 -6
- package/src/components/Select/SelectSeparator.tsx +0 -13
- package/src/components/Select/SelectTrigger.tsx +0 -161
- package/src/components/Select/index.ts +0 -1
- package/src/components/Separator/Separator.stories.tsx +0 -60
- package/src/components/Separator/Separator.test.tsx +0 -39
- package/src/components/Separator/Separator.tsx +0 -115
- package/src/components/Separator/index.ts +0 -1
- package/src/components/Sheet/Sheet.stories.tsx +0 -63
- package/src/components/Sheet/Sheet.tsx +0 -21
- package/src/components/Sheet/SheetBody.tsx +0 -12
- package/src/components/Sheet/SheetContent.tsx +0 -131
- package/src/components/Sheet/SheetFooter.tsx +0 -9
- package/src/components/Sheet/SheetHeader.tsx +0 -39
- package/src/components/Sheet/SheetOverlay.tsx +0 -11
- package/src/components/Sheet/SheetTitle.tsx +0 -12
- package/src/components/Sheet/index.ts +0 -1
- package/src/components/Sidebar/Sidebar.stories.tsx +0 -849
- package/src/components/Sidebar/Sidebar.tsx +0 -225
- package/src/components/Sidebar/SidebarContent.tsx +0 -61
- package/src/components/Sidebar/SidebarFillTrigger.tsx +0 -25
- package/src/components/Sidebar/SidebarFooter.tsx +0 -13
- package/src/components/Sidebar/SidebarGroup/SidebarGroup.tsx +0 -23
- package/src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx +0 -53
- package/src/components/Sidebar/SidebarGroup/SidebarGroupContent.tsx +0 -20
- package/src/components/Sidebar/SidebarGroup/SidebarGroupLabel.tsx +0 -76
- package/src/components/Sidebar/SidebarGroup/index.ts +0 -4
- package/src/components/Sidebar/SidebarHeader.tsx +0 -20
- package/src/components/Sidebar/SidebarInstanceContext.ts +0 -18
- package/src/components/Sidebar/SidebarMenu/SidebarMenu.tsx +0 -28
- package/src/components/Sidebar/SidebarMenu/SidebarMenuAction.tsx +0 -69
- package/src/components/Sidebar/SidebarMenu/SidebarMenuBadge.tsx +0 -56
- package/src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx +0 -110
- package/src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx +0 -108
- package/src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx +0 -30
- package/src/components/Sidebar/SidebarMenu/SidebarMenuItem.tsx +0 -9
- package/src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx +0 -139
- package/src/components/Sidebar/SidebarMenu/SidebarMenuSubItem.tsx +0 -106
- package/src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx +0 -88
- package/src/components/Sidebar/SidebarMenu/index.ts +0 -10
- package/src/components/Sidebar/SidebarProvider/SidebarProvider.tsx +0 -171
- package/src/components/Sidebar/SidebarProvider/context.ts +0 -35
- package/src/components/Sidebar/SidebarProvider/index.ts +0 -2
- package/src/components/Sidebar/SidebarProvider/useHoverTracking.test.ts +0 -199
- package/src/components/Sidebar/SidebarProvider/useHoverTracking.ts +0 -72
- package/src/components/Sidebar/SidebarProvider/useSidebarState.ts +0 -50
- package/src/components/Sidebar/SidebarProvider/useTransitionPresence.test.ts +0 -179
- package/src/components/Sidebar/SidebarProvider/useTransitionPresence.ts +0 -53
- package/src/components/Sidebar/SidebarResizeHandle.tsx +0 -28
- package/src/components/Sidebar/SidebarSeparator.tsx +0 -15
- package/src/components/Sidebar/SidebarTrigger.tsx +0 -40
- package/src/components/Sidebar/index.ts +0 -3
- package/src/components/Sidebar/types.ts +0 -6
- package/src/components/Sidebar/useResizeSidebar.ts +0 -112
- package/src/components/Sidebar/utils.test.ts +0 -178
- package/src/components/Sidebar/utils.ts +0 -70
- package/src/components/Skeleton/Skeleton.stories.tsx +0 -106
- package/src/components/Skeleton/Skeleton.tsx +0 -77
- package/src/components/Skeleton/SkeletonList.stories.tsx +0 -11
- package/src/components/Skeleton/SkeletonList.tsx +0 -65
- package/src/components/Slider/Slider.stories.tsx +0 -99
- package/src/components/Slider/Slider.tsx +0 -85
- package/src/components/Slider/SliderThumb.tsx +0 -57
- package/src/components/Slider/SliderTrack.tsx +0 -49
- package/src/components/Slider/index.ts +0 -1
- package/src/components/Slider/useInteracting.test.ts +0 -159
- package/src/components/Slider/useInteracting.ts +0 -64
- package/src/components/Switch/Switch.stories.tsx +0 -177
- package/src/components/Switch/Switch.tsx +0 -58
- package/src/components/Switch/index.ts +0 -1
- package/src/components/Switch/styles.ts +0 -173
- package/src/components/Table/Table.stories.tsx +0 -328
- package/src/components/Table/Table.tsx +0 -68
- package/src/components/Table/TableBody.tsx +0 -22
- package/src/components/Table/TableCell.tsx +0 -7
- package/src/components/Table/TableFooter.tsx +0 -15
- package/src/components/Table/TableHead.tsx +0 -15
- package/src/components/Table/TableHeader.tsx +0 -20
- package/src/components/Table/TableRow.tsx +0 -11
- package/src/components/Table/index.ts +0 -1
- package/src/components/Tabs.stories.tsx +0 -123
- package/src/components/Tabs.tsx +0 -134
- package/src/components/ThemeProvider/AIGradientSvg.tsx +0 -18
- package/src/components/ThemeProvider/ThemeProvider.tsx +0 -25
- package/src/components/ThemeProvider/index.ts +0 -1
- package/src/components/TimePicker/TimePicker.tsx +0 -95
- package/src/components/TimePicker/TimePickerButton.tsx +0 -39
- package/src/components/TimePicker/index.ts +0 -1
- package/src/components/TimePicker/utils.ts +0 -31
- package/src/components/Timeline/Timeline.stories.tsx +0 -246
- package/src/components/Timeline/Timeline.tsx +0 -35
- package/src/components/Timeline/TimelineConnector.tsx +0 -158
- package/src/components/Timeline/TimelineContent.tsx +0 -18
- package/src/components/Timeline/TimelineItem.tsx +0 -14
- package/src/components/Timeline/index.ts +0 -1
- package/src/components/Timeline/useLastLineHeight.ts +0 -36
- package/src/components/Toast/Toast.stories.tsx +0 -178
- package/src/components/Toast/ToastAction.tsx +0 -40
- package/src/components/Toast/ToastDescription.tsx +0 -28
- package/src/components/Toast/ToastDismiss.tsx +0 -36
- package/src/components/Toast/ToastDuration.tsx +0 -43
- package/src/components/Toast/ToastRoot.tsx +0 -135
- package/src/components/Toast/ToastTitle.tsx +0 -33
- package/src/components/Toast/Toaster.tsx +0 -25
- package/src/components/Toast/index.ts +0 -3
- package/src/components/Toast/toast.tsx +0 -94
- package/src/components/Toast/useNotification.tsx +0 -33
- package/src/components/Toggle/Toggle.stories.tsx +0 -67
- package/src/components/Toggle/Toggle.tsx +0 -202
- package/src/components/Toggle/index.ts +0 -1
- package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -60
- package/src/components/ToggleGroup/ToggleGroup.tsx +0 -99
- package/src/components/ToggleGroup/index.ts +0 -1
- package/src/components/Tooltip/Tooltip.stories.tsx +0 -82
- package/src/components/Tooltip/Tooltip.tsx +0 -110
- package/src/components/Tooltip/TooltipContent.tsx +0 -90
- package/src/components/Tooltip/TooltipRoot.tsx +0 -12
- package/src/components/Tooltip/TooltipTrigger.tsx +0 -42
- package/src/components/Tooltip/index.ts +0 -1
- package/src/components/Truncated.stories.tsx +0 -72
- package/src/components/Truncated.tsx +0 -78
- package/src/components/ZoomableSvg/ZoomableSvg.stories.tsx +0 -53
- package/src/components/ZoomableSvg/ZoomableSvg.tsx +0 -200
- package/src/components/ZoomableSvg/index.ts +0 -1
- package/src/constants/keyCodes.ts +0 -5
- package/src/docs/Colors.mdx +0 -19
- package/src/docs/Spacing.mdx +0 -35
- package/src/docs/Typography.mdx +0 -63
- package/src/docs/components/Typeset.tsx +0 -35
- package/src/hooks/useAutosizeInput.stories.tsx +0 -142
- package/src/hooks/useAutosizeInput.test.tsx +0 -77
- package/src/hooks/useAutosizeInput.tsx +0 -107
- package/src/hooks/useElement.ts +0 -16
- package/src/hooks/useScrollbarPosition.ts +0 -68
- package/src/icon-names.ts +0 -20
- package/src/icons/Keboola.tsx +0 -28
- package/src/icons/icons.stories.tsx +0 -174
- package/src/icons/index.ts +0 -188
- package/src/index.ts +0 -90
- package/src/patterns/AlertWithAction.stories.tsx +0 -30
- package/src/patterns/CardWithEmptyState.stories.tsx +0 -66
- package/src/patterns/ConfirmDialog.stories.tsx +0 -72
- package/src/patterns/CreatableMultiCombobox.stories.tsx +0 -33
- package/src/patterns/DataCardWithSkeleton.stories.tsx +0 -48
- package/src/patterns/DisabledButtonTooltip.stories.tsx +0 -30
- package/src/patterns/FilterToolbar.stories.tsx +0 -275
- package/src/patterns/InfoTooltip.stories.tsx +0 -56
- package/src/patterns/ListDetail.stories.tsx +0 -65
- package/src/patterns/ModalForm.stories.tsx +0 -59
- package/src/patterns/PageHeaderTabs.stories.tsx +0 -48
- package/src/utils/classNames.test.ts +0 -16
- package/src/utils/classNames.ts +0 -27
- package/src/utils/copyToClipboard.ts +0 -3
- package/src/utils/createChangeInputEvent.ts +0 -28
- package/src/utils/createPrefixedString.ts +0 -2
- package/src/utils/debounce.test.ts +0 -63
- package/src/utils/debounce.ts +0 -17
- package/src/utils/decorators.tsx +0 -16
- package/src/utils/escapeStringRegexp.ts +0 -4
- package/src/utils/index.ts +0 -11
- package/src/utils/isMac.ts +0 -26
- package/src/utils/legacyIcon.tsx +0 -28
- package/src/utils/mergeRefs.ts +0 -23
- package/src/utils/noop.ts +0 -1
- package/src/utils/useSHA256.ts +0 -21
- package/src/vite-env.d.ts +0 -1
|
@@ -1,680 +0,0 @@
|
|
|
1
|
-
import { useReducer } from 'react';
|
|
2
|
-
import type { ComponentProps, FormEventHandler } from 'react';
|
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
4
|
-
import { action } from 'storybook/actions';
|
|
5
|
-
|
|
6
|
-
import { Rocket } from '@keboola/design/icons';
|
|
7
|
-
|
|
8
|
-
import { Alert } from '../Alert';
|
|
9
|
-
import { Button } from '../Button';
|
|
10
|
-
import { ButtonGroup } from '../ButtonGroup';
|
|
11
|
-
import { FormGroup } from '../FormGroup';
|
|
12
|
-
import { Label } from '../Label';
|
|
13
|
-
import { Tabs, TabsContent } from '../Tabs';
|
|
14
|
-
|
|
15
|
-
import { Modal } from './Modal';
|
|
16
|
-
import { ModalContent } from './ModalContent';
|
|
17
|
-
|
|
18
|
-
const meta = {
|
|
19
|
-
component: Modal,
|
|
20
|
-
} satisfies Meta<typeof Modal>;
|
|
21
|
-
|
|
22
|
-
export default meta;
|
|
23
|
-
|
|
24
|
-
type Story = StoryObj<typeof meta>;
|
|
25
|
-
|
|
26
|
-
const ModalDefault = (props: ComponentProps<typeof Modal>) => (
|
|
27
|
-
<Modal {...props}>
|
|
28
|
-
<Modal.Trigger asChild>
|
|
29
|
-
<Button>Open Modal</Button>
|
|
30
|
-
</Modal.Trigger>
|
|
31
|
-
|
|
32
|
-
<Modal.Content>
|
|
33
|
-
<Modal.Icon color="red" icon={<Rocket />} />
|
|
34
|
-
<Modal.Header title="Default Modal" description="Opens default modal">
|
|
35
|
-
<Alert variant="info">Additional Header stuff</Alert>
|
|
36
|
-
</Modal.Header>
|
|
37
|
-
|
|
38
|
-
<Modal.Body>
|
|
39
|
-
<p>Some contents...</p>
|
|
40
|
-
<p>Some contents...</p>
|
|
41
|
-
<p>Some contents...</p>
|
|
42
|
-
</Modal.Body>
|
|
43
|
-
|
|
44
|
-
<Modal.Footer>
|
|
45
|
-
<ButtonGroup variant="block">
|
|
46
|
-
<Modal.Close asChild>
|
|
47
|
-
<Button type="button" variant="secondary">
|
|
48
|
-
Close
|
|
49
|
-
</Button>
|
|
50
|
-
</Modal.Close>
|
|
51
|
-
|
|
52
|
-
<Button type="button">Ok</Button>
|
|
53
|
-
</ButtonGroup>
|
|
54
|
-
</Modal.Footer>
|
|
55
|
-
</Modal.Content>
|
|
56
|
-
</Modal>
|
|
57
|
-
);
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Default Modal component in uncontrolled mode __(Recommended)__
|
|
61
|
-
*/
|
|
62
|
-
export const Default: Story = {
|
|
63
|
-
render: ModalDefault,
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const ModalLongContent = (props: ComponentProps<typeof Modal>) => (
|
|
67
|
-
<Modal {...props}>
|
|
68
|
-
<Modal.Trigger asChild>
|
|
69
|
-
<Button>Open Modal</Button>
|
|
70
|
-
</Modal.Trigger>
|
|
71
|
-
|
|
72
|
-
<Modal.Content>
|
|
73
|
-
<Modal.Icon color="red" icon={<Rocket />} />
|
|
74
|
-
<Modal.Header title="Default Modal" description="Opens default modal">
|
|
75
|
-
<Alert variant="info">Addiitonal Header staff</Alert>
|
|
76
|
-
</Modal.Header>
|
|
77
|
-
|
|
78
|
-
<Modal.Body>
|
|
79
|
-
<p>
|
|
80
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris fringilla, risus ut
|
|
81
|
-
imperdiet pellentesque, justo augue placerat dui, eget porta augue justo sed enim. Vivamus
|
|
82
|
-
dui nulla, interdum vitae dolor vitae, condimentum sagittis odio. Sed sit amet nisi
|
|
83
|
-
pulvinar, lacinia nibh at, pulvinar velit. Etiam arcu eros, consequat in volutpat nec,
|
|
84
|
-
scelerisque at risus. Donec nibh ipsum, tristique ut nisi vitae, auctor vulputate erat.
|
|
85
|
-
Fusce egestas augue eu nisl euismod, non mattis massa lacinia. Nulla facilisi. Mauris
|
|
86
|
-
gravida tincidunt tristique. Morbi sollicitudin laoreet enim, at rutrum libero volutpat
|
|
87
|
-
eu. Nunc accumsan viverra dolor, id dapibus tortor sodales sed. In sit amet viverra magna.
|
|
88
|
-
Suspendisse eget quam vulputate, imperdiet massa ac, volutpat sem. Ut sit amet tortor
|
|
89
|
-
mollis, imperdiet nisi vel, gravida urna. Mauris quis consectetur turpis. Phasellus vel
|
|
90
|
-
tortor ornare, finibus velit sed, vestibulum mauris. Suspendisse efficitur nulla enim,
|
|
91
|
-
eget congue urna iaculis ut. In hac habitasse platea dictumst. Mauris quis finibus sapien,
|
|
92
|
-
in pretium justo. Etiam gravida orci eget tincidunt ornare. Suspendisse eget malesuada
|
|
93
|
-
lorem. Fusce pretium orci tempor ante consectetur laoreet. Morbi placerat dignissim massa
|
|
94
|
-
sed rhoncus. Duis eu leo ac justo egestas faucibus. Quisque risus justo, mattis sed
|
|
95
|
-
lobortis et, fringilla eu nibh. Donec tempor arcu a est rhoncus, non tempor mauris tempor.
|
|
96
|
-
Etiam auctor aliquet ipsum, vitae tincidunt mauris aliquam sit amet. In fermentum molestie
|
|
97
|
-
felis, vel tincidunt mi sodales egestas. Fusce in nibh vitae tortor hendrerit mollis nec
|
|
98
|
-
et enim. Donec euismod orci eu consectetur volutpat. Vivamus at mauris eget elit aliquet
|
|
99
|
-
venenatis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
|
|
100
|
-
cubilia curae; Cras lobortis, purus at dignissim viverra, tortor mauris lobortis urna,
|
|
101
|
-
consequat facilisis dolor lacus imperdiet est. In sit amet viverra est. Vestibulum a diam
|
|
102
|
-
a purus commodo gravida vitae eleifend dui. Pellentesque vitae eros ut libero sodales
|
|
103
|
-
vulputate et sed risus. Mauris et sapien efficitur, sollicitudin ipsum quis, volutpat
|
|
104
|
-
nisl. Mauris pellentesque, ipsum in accumsan laoreet, sem est mollis nibh, in dictum lacus
|
|
105
|
-
diam lacinia tellus. Quisque sit amet ante vitae odio congue molestie. Lorem ipsum dolor
|
|
106
|
-
sit amet, consectetur adipiscing elit. Phasellus ut quam ut nisl faucibus feugiat non id
|
|
107
|
-
urna. Pellentesque rutrum justo at egestas egestas. In elementum purus dapibus, dapibus
|
|
108
|
-
risus eget, viverra tortor. Pellentesque volutpat cursus faucibus. Vivamus laoreet, tellus
|
|
109
|
-
id fringilla luctus, elit tellus convallis mauris, non finibus nisl magna a libero.
|
|
110
|
-
Integer porta euismod pellentesque. Morbi porta accumsan nibh ut molestie. Proin mattis
|
|
111
|
-
eros sed mauris fringilla ornare. Suspendisse ut rutrum ligula. Sed in laoreet tortor, eu
|
|
112
|
-
congue elit. Morbi accumsan tincidunt arcu, vitae dapibus orci tincidunt sit amet. Duis
|
|
113
|
-
efficitur ipsum nec cursus feugiat. Etiam lacinia felis ut ligula suscipit vehicula.
|
|
114
|
-
Aliquam vitae luctus erat. Pellentesque lacinia ante et odio semper tincidunt. Quisque
|
|
115
|
-
volutpat sem in nunc faucibus, eget pulvinar nisi molestie. Etiam nec placerat eros. Donec
|
|
116
|
-
viverra eros porta imperdiet condimentum. Integer neque mauris, convallis in nisi at,
|
|
117
|
-
vestibulum porta lacus. Pellentesque tristique dictum felis, scelerisque pulvinar sem
|
|
118
|
-
semper sit amet. Sed sollicitudin maximus purus, sit amet lacinia enim aliquam
|
|
119
|
-
condimentum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris fringilla,
|
|
120
|
-
risus ut imperdiet pellentesque, justo augue placerat dui, eget porta augue justo sed
|
|
121
|
-
enim. Vivamus dui nulla, interdum vitae dolor vitae, condimentum sagittis odio. Sed sit
|
|
122
|
-
amet nisi pulvinar, lacinia nibh at, pulvinar velit. Etiam arcu eros, consequat in
|
|
123
|
-
volutpat nec, scelerisque at risus. Donec nibh ipsum, tristique ut nisi vitae, auctor
|
|
124
|
-
vulputate erat. Fusce egestas augue eu nisl euismod, non mattis massa lacinia. Nulla
|
|
125
|
-
facilisi. Mauris gravida tincidunt tristique. Morbi sollicitudin laoreet enim, at rutrum
|
|
126
|
-
libero volutpat eu. Nunc accumsan viverra dolor, id dapibus tortor sodales sed. In sit
|
|
127
|
-
amet viverra magna. Suspendisse eget quam vulputate, imperdiet massa ac, volutpat sem. Ut
|
|
128
|
-
sit amet tortor mollis, imperdiet nisi vel, gravida urna. Mauris quis consectetur turpis.
|
|
129
|
-
Phasellus vel tortor ornare, finibus velit sed, vestibulum mauris. Suspendisse efficitur
|
|
130
|
-
nulla enim, eget congue urna iaculis ut. In hac habitasse platea dictumst. Mauris quis
|
|
131
|
-
finibus sapien, in pretium justo. Etiam gravida orci eget tincidunt ornare. Suspendisse
|
|
132
|
-
eget malesuada lorem. Fusce pretium orci tempor ante consectetur laoreet. Morbi placerat
|
|
133
|
-
dignissim massa sed rhoncus. Duis eu leo ac justo egestas faucibus. Quisque risus justo,
|
|
134
|
-
mattis sed lobortis et, fringilla eu nibh. Donec tempor arcu a est rhoncus, non tempor
|
|
135
|
-
mauris tempor. Etiam auctor aliquet ipsum, vitae tincidunt mauris aliquam sit amet. In
|
|
136
|
-
fermentum molestie felis, vel tincidunt mi sodales egestas. Fusce in nibh vitae tortor
|
|
137
|
-
hendrerit mollis nec et enim. Donec euismod orci eu consectetur volutpat. Vivamus at
|
|
138
|
-
mauris eget elit aliquet venenatis. Vestibulum ante ipsum primis in faucibus orci luctus
|
|
139
|
-
et ultrices posuere cubilia curae; Cras lobortis, purus at dignissim viverra, tortor
|
|
140
|
-
mauris lobortis urna, consequat facilisis dolor lacus imperdiet est. In sit amet viverra
|
|
141
|
-
est. Vestibulum a diam a purus commodo gravida vitae eleifend dui. Pellentesque vitae eros
|
|
142
|
-
ut libero sodales vulputate et sed risus. Mauris et sapien efficitur, sollicitudin ipsum
|
|
143
|
-
quis, volutpat nisl. Mauris pellentesque, ipsum in accumsan laoreet, sem est mollis nibh,
|
|
144
|
-
in dictum lacus diam lacinia tellus. Quisque sit amet ante vitae odio congue molestie.
|
|
145
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut quam ut nisl
|
|
146
|
-
faucibus feugiat non id urna. Pellentesque rutrum justo at egestas egestas. In elementum
|
|
147
|
-
purus dapibus, dapibus risus eget, viverra tortor. Pellentesque volutpat cursus faucibus.
|
|
148
|
-
Vivamus laoreet, tellus id fringilla luctus, elit tellus convallis mauris, non finibus
|
|
149
|
-
nisl magna a libero. Integer porta euismod pellentesque. Morbi porta accumsan nibh ut
|
|
150
|
-
molestie. Proin mattis eros sed mauris fringilla ornare. Suspendisse ut rutrum ligula. Sed
|
|
151
|
-
in laoreet tortor, eu congue elit. Morbi accumsan tincidunt arcu, vitae dapibus orci
|
|
152
|
-
tincidunt sit amet. Duis efficitur ipsum nec cursus feugiat. Etiam lacinia felis ut ligula
|
|
153
|
-
suscipit vehicula. Aliquam vitae luctus erat. Pellentesque lacinia ante et odio semper
|
|
154
|
-
tincidunt. Quisque volutpat sem in nunc faucibus, eget pulvinar nisi molestie. Etiam nec
|
|
155
|
-
placerat eros. Donec viverra eros porta imperdiet condimentum. Integer neque mauris,
|
|
156
|
-
convallis in nisi at, vestibulum porta lacus. Pellentesque tristique dictum felis,
|
|
157
|
-
scelerisque pulvinar sem semper sit amet. Sed sollicitudin maximus purus, sit amet lacinia
|
|
158
|
-
enim aliquam condimentum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris
|
|
159
|
-
fringilla, risus ut imperdiet pellentesque, justo augue placerat dui, eget porta augue
|
|
160
|
-
justo sed enim. Vivamus dui nulla, interdum vitae dolor vitae, condimentum sagittis odio.
|
|
161
|
-
Sed sit amet nisi pulvinar, lacinia nibh at, pulvinar velit. Etiam arcu eros, consequat in
|
|
162
|
-
volutpat nec, scelerisque at risus. Donec nibh ipsum, tristique ut nisi vitae, auctor
|
|
163
|
-
vulputate erat. Fusce egestas augue eu nisl euismod, non mattis massa lacinia. Nulla
|
|
164
|
-
facilisi. Mauris gravida tincidunt tristique. Morbi sollicitudin laoreet enim, at rutrum
|
|
165
|
-
libero volutpat eu. Nunc accumsan viverra dolor, id dapibus tortor sodales sed. In sit
|
|
166
|
-
amet viverra magna. Suspendisse eget quam vulputate, imperdiet massa ac, volutpat sem. Ut
|
|
167
|
-
sit amet tortor mollis, imperdiet nisi vel, gravida urna. Mauris quis consectetur turpis.
|
|
168
|
-
Phasellus vel tortor ornare, finibus velit sed, vestibulum mauris. Suspendisse efficitur
|
|
169
|
-
nulla enim, eget congue urna iaculis ut. In hac habitasse platea dictumst. Mauris quis
|
|
170
|
-
finibus sapien, in pretium justo. Etiam gravida orci eget tincidunt ornare. Suspendisse
|
|
171
|
-
eget malesuada lorem. Fusce pretium orci tempor ante consectetur laoreet. Morbi placerat
|
|
172
|
-
dignissim massa sed rhoncus. Duis eu leo ac justo egestas faucibus. Quisque risus justo,
|
|
173
|
-
mattis sed lobortis et, fringilla eu nibh. Donec tempor arcu a est rhoncus, non tempor
|
|
174
|
-
mauris tempor. Etiam auctor aliquet ipsum, vitae tincidunt mauris aliquam sit amet. In
|
|
175
|
-
fermentum molestie felis, vel tincidunt mi sodales egestas. Fusce in nibh vitae tortor
|
|
176
|
-
hendrerit mollis nec et enim. Donec euismod orci eu consectetur volutpat. Vivamus at
|
|
177
|
-
mauris eget elit aliquet venenatis. Vestibulum ante ipsum primis in faucibus orci luctus
|
|
178
|
-
et ultrices posuere cubilia curae; Cras lobortis, purus at dignissim viverra, tortor
|
|
179
|
-
mauris lobortis urna, consequat facilisis dolor lacus imperdiet est. In sit amet viverra
|
|
180
|
-
est. Vestibulum a diam a purus commodo gravida vitae eleifend dui. Pellentesque vitae eros
|
|
181
|
-
ut libero sodales vulputate et sed risus. Mauris et sapien efficitur, sollicitudin ipsum
|
|
182
|
-
quis, volutpat nisl. Mauris pellentesque, ipsum in accumsan laoreet, sem est mollis nibh,
|
|
183
|
-
in dictum lacus diam lacinia tellus. Quisque sit amet ante vitae odio congue molestie.
|
|
184
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut quam ut nisl
|
|
185
|
-
faucibus feugiat non id urna. Pellentesque rutrum justo at egestas egestas. In elementum
|
|
186
|
-
purus dapibus, dapibus risus eget, viverra tortor. Pellentesque volutpat cursus faucibus.
|
|
187
|
-
Vivamus laoreet, tellus id fringilla luctus, elit tellus convallis mauris, non finibus
|
|
188
|
-
nisl magna a libero. Integer porta euismod pellentesque. Morbi porta accumsan nibh ut
|
|
189
|
-
molestie. Proin mattis eros sed mauris fringilla ornare. Suspendisse ut rutrum ligula. Sed
|
|
190
|
-
in laoreet tortor, eu congue elit. Morbi accumsan tincidunt arcu, vitae dapibus orci
|
|
191
|
-
tincidunt sit amet. Duis efficitur ipsum nec cursus feugiat. Etiam lacinia felis ut ligula
|
|
192
|
-
suscipit vehicula. Aliquam vitae luctus erat. Pellentesque lacinia ante et odio semper
|
|
193
|
-
tincidunt. Quisque volutpat sem in nunc faucibus, eget pulvinar nisi molestie. Etiam nec
|
|
194
|
-
placerat eros. Donec viverra eros porta imperdiet condimentum. Integer neque mauris,
|
|
195
|
-
convallis in nisi at, vestibulum porta lacus. Pellentesque tristique dictum felis,
|
|
196
|
-
scelerisque pulvinar sem semper sit amet. Sed sollicitudin maximus purus, sit amet lacinia
|
|
197
|
-
enim aliquam condimentum.
|
|
198
|
-
</p>
|
|
199
|
-
</Modal.Body>
|
|
200
|
-
|
|
201
|
-
<Modal.Footer>
|
|
202
|
-
<ButtonGroup variant="block">
|
|
203
|
-
<Modal.Close asChild>
|
|
204
|
-
<Button type="button" variant="secondary">
|
|
205
|
-
Close
|
|
206
|
-
</Button>
|
|
207
|
-
</Modal.Close>
|
|
208
|
-
|
|
209
|
-
<Button type="button">Ok</Button>
|
|
210
|
-
</ButtonGroup>
|
|
211
|
-
</Modal.Footer>
|
|
212
|
-
</Modal.Content>
|
|
213
|
-
</Modal>
|
|
214
|
-
);
|
|
215
|
-
|
|
216
|
-
export const LongContent: Story = {
|
|
217
|
-
render: ModalLongContent,
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
const FORM_NAME = 'user-form';
|
|
221
|
-
|
|
222
|
-
const ModalRemoteFormSubmission = (props: ComponentProps<typeof Modal>) => {
|
|
223
|
-
const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {
|
|
224
|
-
event.preventDefault();
|
|
225
|
-
const formData = new FormData(event.currentTarget);
|
|
226
|
-
const formValues = Object.fromEntries(formData.entries());
|
|
227
|
-
action('onSubmit')(formValues);
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
return (
|
|
231
|
-
<Modal {...props}>
|
|
232
|
-
<Modal.Trigger asChild>
|
|
233
|
-
<Button>Create User</Button>
|
|
234
|
-
</Modal.Trigger>
|
|
235
|
-
|
|
236
|
-
<Modal.Content>
|
|
237
|
-
<Modal.Icon color="red" icon={<Rocket />} />
|
|
238
|
-
|
|
239
|
-
<Modal.Header title="Crate User" description="Opens modal with remote form submission" />
|
|
240
|
-
|
|
241
|
-
<Modal.Body className="tw-flex tw-flex-col tw-gap-4">
|
|
242
|
-
<form onSubmit={handleSubmit} id={FORM_NAME}>
|
|
243
|
-
<FormGroup>
|
|
244
|
-
<Label htmlFor="name">Name</Label>
|
|
245
|
-
<FormGroup.TextInput name="name" id="name" variant="secondary" />
|
|
246
|
-
</FormGroup>
|
|
247
|
-
</form>
|
|
248
|
-
</Modal.Body>
|
|
249
|
-
|
|
250
|
-
<Modal.Footer>
|
|
251
|
-
<ButtonGroup variant="block">
|
|
252
|
-
<Modal.Close asChild>
|
|
253
|
-
<Button type="button" variant="secondary">
|
|
254
|
-
Close
|
|
255
|
-
</Button>
|
|
256
|
-
</Modal.Close>
|
|
257
|
-
|
|
258
|
-
<Button form={FORM_NAME} type="submit">
|
|
259
|
-
Save changes
|
|
260
|
-
</Button>
|
|
261
|
-
</ButtonGroup>
|
|
262
|
-
</Modal.Footer>
|
|
263
|
-
</Modal.Content>
|
|
264
|
-
</Modal>
|
|
265
|
-
);
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Modal with remote form submission
|
|
270
|
-
* It is not recommended to wrap Modal.Body and Modal.Footer in a single form tag as it can break the styling, use remote a form submission.
|
|
271
|
-
*/
|
|
272
|
-
export const RemoteFormSubmission: Story = {
|
|
273
|
-
render: ModalRemoteFormSubmission,
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
const ModalReusableOwnContentComponent = () => (
|
|
277
|
-
<>
|
|
278
|
-
<Modal.Header title="Reusable Modal With Own Content Component" />
|
|
279
|
-
<Modal.Body>Here defined reusable layout</Modal.Body>
|
|
280
|
-
</>
|
|
281
|
-
);
|
|
282
|
-
|
|
283
|
-
const ModalReusableWithOwnContentComponent = (props: Record<string, unknown>) => (
|
|
284
|
-
<Modal {...props}>
|
|
285
|
-
<Modal.Trigger asChild>
|
|
286
|
-
<Button>Open Modal</Button>
|
|
287
|
-
</Modal.Trigger>
|
|
288
|
-
|
|
289
|
-
<Modal.Content>
|
|
290
|
-
<ModalReusableOwnContentComponent />
|
|
291
|
-
</Modal.Content>
|
|
292
|
-
</Modal>
|
|
293
|
-
);
|
|
294
|
-
|
|
295
|
-
export const ReusableModalWithOwnContentComponent: Story = {
|
|
296
|
-
render: ModalReusableWithOwnContentComponent,
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
const ModalReusableTriggerAsChild = (props: ComponentProps<typeof Modal>) => (
|
|
300
|
-
<Modal>
|
|
301
|
-
<Modal.Trigger asChild>{props.children}</Modal.Trigger>
|
|
302
|
-
<ModalContent>
|
|
303
|
-
<Modal.Header title="Reusable Modal With Trigger as Child" />
|
|
304
|
-
<Modal.Body>
|
|
305
|
-
<p>Some contents...</p>
|
|
306
|
-
<p>Some contents...</p>
|
|
307
|
-
<p>Some contents...</p>
|
|
308
|
-
</Modal.Body>
|
|
309
|
-
</ModalContent>
|
|
310
|
-
</Modal>
|
|
311
|
-
);
|
|
312
|
-
|
|
313
|
-
export const ReusableModalWithTriggerAsChild: Story = {
|
|
314
|
-
render: (props) => (
|
|
315
|
-
<ModalReusableTriggerAsChild {...props}>
|
|
316
|
-
<Button>Open Modal</Button>
|
|
317
|
-
</ModalReusableTriggerAsChild>
|
|
318
|
-
),
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
type StepProps = {
|
|
322
|
-
id: string;
|
|
323
|
-
onSubmit: FormEventHandler<HTMLFormElement>;
|
|
324
|
-
defaultValues?: Record<string, string> | null;
|
|
325
|
-
};
|
|
326
|
-
|
|
327
|
-
// Steps are exclusive, we can safely use the same id for each step
|
|
328
|
-
const WIZARD_FORM_NAME = 'WIZARD_FORM_NAME';
|
|
329
|
-
const FIRST_NAME_FIELD_NAME = 'firstName';
|
|
330
|
-
const USERNAME_FIELD_NAME = 'username';
|
|
331
|
-
const FIRST_STEP = 1;
|
|
332
|
-
const LAST_STEP = 3;
|
|
333
|
-
|
|
334
|
-
const Step1 = ({ id, onSubmit, defaultValues }: StepProps) => (
|
|
335
|
-
<form id={id} onSubmit={onSubmit}>
|
|
336
|
-
<FormGroup>
|
|
337
|
-
<Label htmlFor={FIRST_NAME_FIELD_NAME}>Fist Name</Label>
|
|
338
|
-
<FormGroup.TextInput
|
|
339
|
-
name={FIRST_NAME_FIELD_NAME}
|
|
340
|
-
defaultValue={defaultValues?.[FIRST_NAME_FIELD_NAME]}
|
|
341
|
-
placeholder="Enter your first name"
|
|
342
|
-
/>
|
|
343
|
-
</FormGroup>
|
|
344
|
-
</form>
|
|
345
|
-
);
|
|
346
|
-
|
|
347
|
-
const Step2 = ({ id, onSubmit, defaultValues }: StepProps) => (
|
|
348
|
-
<form id={id} onSubmit={onSubmit}>
|
|
349
|
-
<FormGroup>
|
|
350
|
-
<Label htmlFor={USERNAME_FIELD_NAME}>Username</Label>
|
|
351
|
-
<FormGroup.TextInput
|
|
352
|
-
name={USERNAME_FIELD_NAME}
|
|
353
|
-
defaultValue={defaultValues?.[USERNAME_FIELD_NAME]}
|
|
354
|
-
placeholder="Enter your username"
|
|
355
|
-
/>
|
|
356
|
-
</FormGroup>
|
|
357
|
-
</form>
|
|
358
|
-
);
|
|
359
|
-
|
|
360
|
-
type StepperState = {
|
|
361
|
-
step: number;
|
|
362
|
-
values: Record<number, Record<string, string>>;
|
|
363
|
-
};
|
|
364
|
-
|
|
365
|
-
type Action =
|
|
366
|
-
| {
|
|
367
|
-
type: 'NEXT';
|
|
368
|
-
values: Record<string, string>;
|
|
369
|
-
}
|
|
370
|
-
| {
|
|
371
|
-
type: 'PREVIOUS';
|
|
372
|
-
};
|
|
373
|
-
|
|
374
|
-
const reducer = (state: StepperState, action: Action) => {
|
|
375
|
-
switch (action.type) {
|
|
376
|
-
case 'NEXT': {
|
|
377
|
-
const currStep = state.step;
|
|
378
|
-
return {
|
|
379
|
-
...state,
|
|
380
|
-
step: Math.min(currStep + 1, LAST_STEP),
|
|
381
|
-
values: {
|
|
382
|
-
...state.values,
|
|
383
|
-
[currStep]: action.values,
|
|
384
|
-
},
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
case 'PREVIOUS': {
|
|
388
|
-
return {
|
|
389
|
-
...state,
|
|
390
|
-
step: Math.max(state.step - 1, FIRST_STEP),
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
|
-
default:
|
|
394
|
-
return state;
|
|
395
|
-
}
|
|
396
|
-
};
|
|
397
|
-
|
|
398
|
-
const ModalMultiStepContent = () => {
|
|
399
|
-
const [state, dispatch] = useReducer(reducer, {
|
|
400
|
-
step: 1,
|
|
401
|
-
values: {},
|
|
402
|
-
});
|
|
403
|
-
const isLastStep = state.step === LAST_STEP;
|
|
404
|
-
const isFirstStep = state.step === FIRST_STEP;
|
|
405
|
-
|
|
406
|
-
const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {
|
|
407
|
-
event.preventDefault();
|
|
408
|
-
const formData = new FormData(event.currentTarget);
|
|
409
|
-
const formValues = Object.fromEntries(formData.entries()) as Record<string, string>;
|
|
410
|
-
dispatch({ type: 'NEXT', values: formValues });
|
|
411
|
-
};
|
|
412
|
-
|
|
413
|
-
const handlePreviousClick = () => {
|
|
414
|
-
dispatch({ type: 'PREVIOUS' });
|
|
415
|
-
};
|
|
416
|
-
|
|
417
|
-
const handleSubmitClick = () => {
|
|
418
|
-
action('onSubmit')(state.values);
|
|
419
|
-
};
|
|
420
|
-
|
|
421
|
-
return (
|
|
422
|
-
<>
|
|
423
|
-
<Modal.Icon color="blue" icon={<Rocket />} />
|
|
424
|
-
<Modal.Header title="Wizard Form" description="Opens modal with multi-step form" />
|
|
425
|
-
|
|
426
|
-
<Modal.Body>
|
|
427
|
-
{state.step === 1 && (
|
|
428
|
-
<Step1
|
|
429
|
-
id={WIZARD_FORM_NAME}
|
|
430
|
-
onSubmit={handleSubmit}
|
|
431
|
-
defaultValues={state.values?.[state.step]}
|
|
432
|
-
/>
|
|
433
|
-
)}
|
|
434
|
-
{state.step === 2 && (
|
|
435
|
-
<Step2
|
|
436
|
-
id={WIZARD_FORM_NAME}
|
|
437
|
-
onSubmit={handleSubmit}
|
|
438
|
-
defaultValues={state.values?.[state.step]}
|
|
439
|
-
/>
|
|
440
|
-
)}
|
|
441
|
-
|
|
442
|
-
{state.step === 3 && (
|
|
443
|
-
<>
|
|
444
|
-
<h3>Wizard is Done</h3>
|
|
445
|
-
<pre>{JSON.stringify(state.values, null, 4)}</pre>
|
|
446
|
-
</>
|
|
447
|
-
)}
|
|
448
|
-
</Modal.Body>
|
|
449
|
-
|
|
450
|
-
<Modal.Footer>
|
|
451
|
-
<ButtonGroup variant="block">
|
|
452
|
-
<Button type="button" onClick={handlePreviousClick} disabled={isFirstStep}>
|
|
453
|
-
Previous
|
|
454
|
-
</Button>
|
|
455
|
-
|
|
456
|
-
{isLastStep ? (
|
|
457
|
-
<Button type="button" onClick={handleSubmitClick}>
|
|
458
|
-
Submit
|
|
459
|
-
</Button>
|
|
460
|
-
) : (
|
|
461
|
-
<Button form={WIZARD_FORM_NAME} type="submit">
|
|
462
|
-
Next
|
|
463
|
-
</Button>
|
|
464
|
-
)}
|
|
465
|
-
</ButtonGroup>
|
|
466
|
-
</Modal.Footer>
|
|
467
|
-
</>
|
|
468
|
-
);
|
|
469
|
-
};
|
|
470
|
-
|
|
471
|
-
/**
|
|
472
|
-
* Example of a multi-step (wizard form) inside modal.
|
|
473
|
-
* 1. State should be manged in a component inside Modal.Content, which is re-mounted on each open. No need to for state reset.
|
|
474
|
-
* 2. If state reset is needed, you can use `<Modal.Content onEscapeKeyDown={} onPointerDownOutside={}/>` callbacks.
|
|
475
|
-
*/
|
|
476
|
-
export const WizardFormInsideModal: Story = {
|
|
477
|
-
render: (props) => (
|
|
478
|
-
<Modal {...props}>
|
|
479
|
-
<Modal.Trigger asChild>
|
|
480
|
-
<Button>Open modal</Button>
|
|
481
|
-
</Modal.Trigger>
|
|
482
|
-
|
|
483
|
-
<Modal.Content>
|
|
484
|
-
<ModalMultiStepContent />
|
|
485
|
-
</Modal.Content>
|
|
486
|
-
</Modal>
|
|
487
|
-
),
|
|
488
|
-
};
|
|
489
|
-
|
|
490
|
-
const ModalMediumSize = (props: ComponentProps<typeof Modal>) => (
|
|
491
|
-
<Modal {...props}>
|
|
492
|
-
<Modal.Trigger asChild>
|
|
493
|
-
<Button>Open Modal</Button>
|
|
494
|
-
</Modal.Trigger>
|
|
495
|
-
<Modal.Content>
|
|
496
|
-
<Modal.Header title="Medium Modal" description="This is a medium-sized modal (default)" />
|
|
497
|
-
<Modal.Body>
|
|
498
|
-
<p>This modal uses the default medium size (max-width: 672px / 42rem).</p>
|
|
499
|
-
<p>Some contents...</p>
|
|
500
|
-
<p>Some contents...</p>
|
|
501
|
-
</Modal.Body>
|
|
502
|
-
<Modal.Footer>
|
|
503
|
-
<ButtonGroup variant="block">
|
|
504
|
-
<Modal.Close asChild>
|
|
505
|
-
<Button type="button" variant="secondary">
|
|
506
|
-
Close
|
|
507
|
-
</Button>
|
|
508
|
-
</Modal.Close>
|
|
509
|
-
<Button type="button">Ok</Button>
|
|
510
|
-
</ButtonGroup>
|
|
511
|
-
</Modal.Footer>
|
|
512
|
-
</Modal.Content>
|
|
513
|
-
</Modal>
|
|
514
|
-
);
|
|
515
|
-
|
|
516
|
-
/**
|
|
517
|
-
* Modal with medium size (default)
|
|
518
|
-
*/
|
|
519
|
-
export const MediumSize: Story = {
|
|
520
|
-
render: ModalMediumSize,
|
|
521
|
-
};
|
|
522
|
-
|
|
523
|
-
const ModalLargeSize = (props: ComponentProps<typeof Modal>) => (
|
|
524
|
-
<Modal {...props}>
|
|
525
|
-
<Modal.Trigger asChild>
|
|
526
|
-
<Button>Open Modal</Button>
|
|
527
|
-
</Modal.Trigger>
|
|
528
|
-
<Modal.Content size="large">
|
|
529
|
-
<Modal.Header title="Large Modal" description="This is a large-sized modal" />
|
|
530
|
-
<Modal.Body>
|
|
531
|
-
<p>This modal uses the large size (max-width: 896px / 56rem).</p>
|
|
532
|
-
<p>
|
|
533
|
-
Large modals are useful for content that needs more horizontal space, such as wide forms,
|
|
534
|
-
tables, or detailed information displays.
|
|
535
|
-
</p>
|
|
536
|
-
<p>Some contents...</p>
|
|
537
|
-
</Modal.Body>
|
|
538
|
-
<Modal.Footer>
|
|
539
|
-
<ButtonGroup variant="block">
|
|
540
|
-
<Modal.Close asChild>
|
|
541
|
-
<Button type="button" variant="secondary">
|
|
542
|
-
Close
|
|
543
|
-
</Button>
|
|
544
|
-
</Modal.Close>
|
|
545
|
-
<Button type="button">Ok</Button>
|
|
546
|
-
</ButtonGroup>
|
|
547
|
-
</Modal.Footer>
|
|
548
|
-
</Modal.Content>
|
|
549
|
-
</Modal>
|
|
550
|
-
);
|
|
551
|
-
|
|
552
|
-
/**
|
|
553
|
-
* Modal with large size
|
|
554
|
-
*/
|
|
555
|
-
export const LargeSize: Story = {
|
|
556
|
-
render: ModalLargeSize,
|
|
557
|
-
};
|
|
558
|
-
|
|
559
|
-
const ModalWithImageIcon = (props: ComponentProps<typeof Modal>) => (
|
|
560
|
-
<Modal {...props}>
|
|
561
|
-
<Modal.Trigger asChild>
|
|
562
|
-
<Button>Open Modal</Button>
|
|
563
|
-
</Modal.Trigger>
|
|
564
|
-
<Modal.Content>
|
|
565
|
-
<Modal.Icon
|
|
566
|
-
iconUrl="https://ui.keboola-assets.com/developer-portal/icons/keboola.ex-db-snowflake/64/1576250365598.png"
|
|
567
|
-
iconAlt="Snowflake extractor"
|
|
568
|
-
/>
|
|
569
|
-
<Modal.Header
|
|
570
|
-
title="Modal with Image Icon"
|
|
571
|
-
description="This modal uses an image URL instead of a FontAwesome icon"
|
|
572
|
-
/>
|
|
573
|
-
<Modal.Body>
|
|
574
|
-
<p>The icon displays a custom image from a URL with a white background and shadow.</p>
|
|
575
|
-
<p>You can optionally provide an iconAlt prop for accessibility.</p>
|
|
576
|
-
</Modal.Body>
|
|
577
|
-
<Modal.Footer>
|
|
578
|
-
<ButtonGroup variant="block">
|
|
579
|
-
<Modal.Close asChild>
|
|
580
|
-
<Button type="button" variant="secondary">
|
|
581
|
-
Close
|
|
582
|
-
</Button>
|
|
583
|
-
</Modal.Close>
|
|
584
|
-
<Button type="button">Ok</Button>
|
|
585
|
-
</ButtonGroup>
|
|
586
|
-
</Modal.Footer>
|
|
587
|
-
</Modal.Content>
|
|
588
|
-
</Modal>
|
|
589
|
-
);
|
|
590
|
-
|
|
591
|
-
/**
|
|
592
|
-
* Modal with an image icon (iconUrl) instead of a FontAwesome icon.
|
|
593
|
-
* By default, the image icon has a white background with shadow.
|
|
594
|
-
*/
|
|
595
|
-
export const WithImageIcon: Story = {
|
|
596
|
-
render: ModalWithImageIcon,
|
|
597
|
-
};
|
|
598
|
-
|
|
599
|
-
const ModalWithImageIconError = (props: ComponentProps<typeof Modal>) => (
|
|
600
|
-
<Modal {...props}>
|
|
601
|
-
<Modal.Trigger asChild>
|
|
602
|
-
<Button>Open Modal</Button>
|
|
603
|
-
</Modal.Trigger>
|
|
604
|
-
<Modal.Content>
|
|
605
|
-
<Modal.Icon iconUrl="xxx" />
|
|
606
|
-
<Modal.Header
|
|
607
|
-
title="Modal with Failed Image"
|
|
608
|
-
description="The icon is hidden because the image failed to load"
|
|
609
|
-
/>
|
|
610
|
-
<Modal.Body>
|
|
611
|
-
<p>When the image URL is invalid or fails to load, the icon is automatically hidden.</p>
|
|
612
|
-
</Modal.Body>
|
|
613
|
-
<Modal.Footer>
|
|
614
|
-
<ButtonGroup variant="block">
|
|
615
|
-
<Modal.Close asChild>
|
|
616
|
-
<Button type="button" variant="secondary">
|
|
617
|
-
Close
|
|
618
|
-
</Button>
|
|
619
|
-
</Modal.Close>
|
|
620
|
-
<Button type="button">Ok</Button>
|
|
621
|
-
</ButtonGroup>
|
|
622
|
-
</Modal.Footer>
|
|
623
|
-
</Modal.Content>
|
|
624
|
-
</Modal>
|
|
625
|
-
);
|
|
626
|
-
|
|
627
|
-
/**
|
|
628
|
-
* Modal with an image icon that fails to load.
|
|
629
|
-
* The icon is hidden when the image cannot be loaded.
|
|
630
|
-
*/
|
|
631
|
-
export const WithImageIconError: Story = {
|
|
632
|
-
render: ModalWithImageIconError,
|
|
633
|
-
};
|
|
634
|
-
|
|
635
|
-
const ModalWithTabs = (props: ComponentProps<typeof Modal>) => (
|
|
636
|
-
<Modal {...props}>
|
|
637
|
-
<Modal.Trigger asChild>
|
|
638
|
-
<Button>Open Modal</Button>
|
|
639
|
-
</Modal.Trigger>
|
|
640
|
-
<Modal.Content>
|
|
641
|
-
<Modal.Header
|
|
642
|
-
title="Modal With Tabs"
|
|
643
|
-
description="Header border collapses automatically because Tabs render their own bottom border."
|
|
644
|
-
/>
|
|
645
|
-
<Modal.Body>
|
|
646
|
-
<Tabs
|
|
647
|
-
triggers={[
|
|
648
|
-
{ value: 'first', title: 'First Tab' },
|
|
649
|
-
{ value: 'second', title: 'Second Tab' },
|
|
650
|
-
]}
|
|
651
|
-
>
|
|
652
|
-
<TabsContent value="first">
|
|
653
|
-
<p>Content of the first tab.</p>
|
|
654
|
-
</TabsContent>
|
|
655
|
-
<TabsContent value="second">
|
|
656
|
-
<p>Content of the second tab.</p>
|
|
657
|
-
</TabsContent>
|
|
658
|
-
</Tabs>
|
|
659
|
-
</Modal.Body>
|
|
660
|
-
<Modal.Footer>
|
|
661
|
-
<ButtonGroup variant="block">
|
|
662
|
-
<Modal.Close asChild>
|
|
663
|
-
<Button type="button" variant="secondary">
|
|
664
|
-
Close
|
|
665
|
-
</Button>
|
|
666
|
-
</Modal.Close>
|
|
667
|
-
<Button type="button">Ok</Button>
|
|
668
|
-
</ButtonGroup>
|
|
669
|
-
</Modal.Footer>
|
|
670
|
-
</Modal.Content>
|
|
671
|
-
</Modal>
|
|
672
|
-
);
|
|
673
|
-
|
|
674
|
-
/**
|
|
675
|
-
* Modal with Tabs inside the body — Modal.Header automatically drops its bottom border
|
|
676
|
-
* and padding so the Tabs' own bottom border is the single visual separator.
|
|
677
|
-
*/
|
|
678
|
-
export const WithTabs: Story = {
|
|
679
|
-
render: ModalWithTabs,
|
|
680
|
-
};
|