diff --git a/.agents/skills/generate-frontend-forms/SKILL.md b/.agents/skills/generate-frontend-forms/SKILL.md index 0c6e078b5993..b1a4db5d2cef 100644 --- a/.agents/skills/generate-frontend-forms/SKILL.md +++ b/.agents/skills/generate-frontend-forms/SKILL.md @@ -1113,13 +1113,13 @@ When creating auto-save fields: ## File References -| File | Purpose | -| ------------------------------------------------------ | --------------------------- | -| `static/app/components/core/form/scrapsForm.tsx` | Main form hook | -| `static/app/components/core/form/autoSaveForm.tsx` | Auto-save wrapper | -| `static/app/components/core/form/formErrorContext.tsx` | Host error-mapper contract | -| `static/app/scrapsProviders/formError.tsx` | Sentry request-error mapper | -| `static/app/components/core/form/field/*.tsx` | Individual field components | -| `static/app/components/core/form/layout/index.tsx` | Layout components | -| `static/app/components/core/form/displayField.tsx` | Display-only layouts | -| `static/app/components/core/form/form.stories.tsx` | Usage examples | +| File | Purpose | +| ------------------------------------------------------------ | --------------------------- | +| `static/packages/scraps/src/form/scrapsForm.tsx` | Main form hook | +| `static/packages/scraps/src/form/autoSaveForm.tsx` | Auto-save wrapper | +| `static/packages/scraps/src/form/formErrorContext/index.tsx` | Host error-mapper contract | +| `static/app/scrapsProviders/formError.tsx` | Sentry request-error mapper | +| `static/packages/scraps/src/form/field/*.tsx` | Individual field components | +| `static/packages/scraps/src/form/layout/index.tsx` | Layout components | +| `static/packages/scraps/src/form/displayField.tsx` | Display-only layouts | +| `static/app/components/core/form/form.mdx` | Usage examples | diff --git a/.agents/skills/migrate-frontend-forms/SKILL.md b/.agents/skills/migrate-frontend-forms/SKILL.md index c79015228ad5..66dc992939e9 100644 --- a/.agents/skills/migrate-frontend-forms/SKILL.md +++ b/.agents/skills/migrate-frontend-forms/SKILL.md @@ -619,7 +619,7 @@ Sentry's SettingsSearch allows users to search for individual settings fields. W `FormSearch` is a **build-time marker component** — it has zero runtime behavior and simply renders its children unchanged. Its `route` prop is read by a static extraction script to associate form fields with their navigation route, enabling them to appear in SettingsSearch results. ```tsx -import {FormSearch} from 'sentry/components/core/form'; +import {FormSearch} from '@sentry/scraps/form'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 700637fdd47b..81fc5bcb2bed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1236,6 +1236,9 @@ importers: '@tanstack/react-hotkeys': specifier: 0.18.0 version: 0.18.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@tanstack/react-pacer': + specifier: ^0.22.1 + version: 0.22.1(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tanstack/react-virtual': specifier: 3.14.6 version: 3.14.6(react-dom@19.3.0(react@19.3.0))(react@19.3.0) @@ -1309,6 +1312,9 @@ importers: '@tanstack/react-form': specifier: 1.28.6 version: 1.28.6(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + '@tanstack/react-query': + specifier: 5.101.4 + version: 5.101.4(react@19.3.0) '@testing-library/dom': specifier: 10.4.1 version: 10.4.1 @@ -1354,6 +1360,9 @@ importers: typescript: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' + zod: + specifier: 4.6.7 + version: 4.6.7 static/packages/search-syntax: devDependencies: diff --git a/static/app/components/actions/archive.tsx b/static/app/components/actions/archive.tsx index 188144b09862..afae3724022e 100644 --- a/static/app/components/actions/archive.tsx +++ b/static/app/components/actions/archive.tsx @@ -2,6 +2,7 @@ import styled from '@emotion/styled'; import {IconChevron} from '@sentry/icons/chevron'; import {Button, ButtonBar} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {Flex} from '@sentry/scraps/layout'; @@ -10,7 +11,6 @@ import {openModal} from '@sentry/scraps/modal'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; import type {SelectValue} from '@sentry/scraps/select'; -import {openConfirmModal} from 'sentry/components/confirm'; import {CustomIgnoreCountModal} from 'sentry/components/customIgnoreCountModal'; import {CustomIgnoreDurationModal} from 'sentry/components/customIgnoreDurationModal'; import {t, tct, tn} from 'sentry/locale'; diff --git a/static/app/components/actions/confirmableAction.tsx b/static/app/components/actions/confirmableAction.tsx index 0ec38c12c849..9c8545b03588 100644 --- a/static/app/components/actions/confirmableAction.tsx +++ b/static/app/components/actions/confirmableAction.tsx @@ -1,6 +1,6 @@ import {Fragment} from 'react'; -import {Confirm} from 'sentry/components/confirm'; +import {Confirm} from '@sentry/scraps/confirm'; type ConfirmProps = React.ComponentProps; type Props = { diff --git a/static/app/components/actions/resolve.tsx b/static/app/components/actions/resolve.tsx index f7728d4282fa..6d7fcd7aabbc 100644 --- a/static/app/components/actions/resolve.tsx +++ b/static/app/components/actions/resolve.tsx @@ -5,6 +5,7 @@ import {IconChevron} from '@sentry/icons/chevron'; import {IconReleases} from '@sentry/icons/releases'; import {Button, ButtonBar, LinkButton} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {Flex} from '@sentry/scraps/layout'; @@ -12,7 +13,6 @@ import {useModal} from '@sentry/scraps/modal'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; import {Tooltip} from '@sentry/scraps/tooltip'; -import {openConfirmModal} from 'sentry/components/confirm'; import {CustomCommitsResolutionModal} from 'sentry/components/customCommitsResolutionModal'; import {CustomResolutionModal} from 'sentry/components/customResolutionModal'; import {t} from 'sentry/locale'; diff --git a/static/app/components/backendJsonFormAdapter/tableAdapter.tsx b/static/app/components/backendJsonFormAdapter/tableAdapter.tsx index 805dd1134db2..b934bdc5445c 100644 --- a/static/app/components/backendJsonFormAdapter/tableAdapter.tsx +++ b/static/app/components/backendJsonFormAdapter/tableAdapter.tsx @@ -3,12 +3,12 @@ import {IconDelete} from '@sentry/icons/delete'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Input} from '@sentry/scraps/input'; import {Flex, Stack} from '@sentry/scraps/layout'; import {singleLineRenderer} from '@sentry/scraps/markdown'; import {Text} from '@sentry/scraps/text'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {JsonFormAdapterFieldConfig} from './types'; diff --git a/static/app/components/confirm.spec.tsx b/static/app/components/confirm.spec.tsx index 14b27c450ed6..c4be66b72411 100644 --- a/static/app/components/confirm.spec.tsx +++ b/static/app/components/confirm.spec.tsx @@ -9,7 +9,7 @@ import { waitFor, } from 'sentry-test/reactTestingLibrary'; -import {Confirm} from './confirm'; +import {Confirm} from '@sentry/scraps/confirm'; describe('Confirm', () => { beforeEach(() => { diff --git a/static/app/components/confirm.stories.tsx b/static/app/components/confirm.stories.tsx index e21d44e07498..880705a5cf6a 100644 --- a/static/app/components/confirm.stories.tsx +++ b/static/app/components/confirm.stories.tsx @@ -2,12 +2,11 @@ import {Fragment, useState} from 'react'; import styled from '@emotion/styled'; import {Button} from '@sentry/scraps/button'; +import {Confirm, openConfirmModal} from '@sentry/scraps/confirm'; import {Link} from '@sentry/scraps/link'; import * as Storybook from 'sentry/stories'; -import {Confirm, openConfirmModal} from './confirm'; - export default Storybook.story('Confirm', story => { story('Triggers', () => { const [state, setState] = useState('empty'); diff --git a/static/app/components/confirmDelete.tsx b/static/app/components/confirmDelete.tsx index 21c2a103ad66..9f69b57869ca 100644 --- a/static/app/components/confirmDelete.tsx +++ b/static/app/components/confirmDelete.tsx @@ -2,12 +2,12 @@ import {Fragment, useId} from 'react'; import {Alert} from '@sentry/scraps/alert'; import {InlineCode} from '@sentry/scraps/code'; +import {Confirm} from '@sentry/scraps/confirm'; import {Input} from '@sentry/scraps/input'; import {t} from 'sentry/locale'; import {FieldGroup} from './forms/fieldGroup'; -import {Confirm} from './confirm'; interface Props extends Omit< React.ComponentProps, diff --git a/static/app/components/core/form/autoSaveForm.mdx b/static/app/components/core/form/autoSaveForm.mdx index bc743135fb16..fb6450bca57f 100644 --- a/static/app/components/core/form/autoSaveForm.mdx +++ b/static/app/components/core/form/autoSaveForm.mdx @@ -4,7 +4,7 @@ description: A field component that automatically saves changes individually, fo category: forms source: '@sentry/scraps/form' resources: - js: https://github.com/getsentry/sentry/blob/master/static/app/components/core/form/autoSaveForm.tsx + js: https://github.com/getsentry/sentry/blob/master/static/packages/scraps/src/form/autoSaveForm.tsx --- import {Container} from '@sentry/scraps/layout'; diff --git a/static/app/components/core/form/displayField.mdx b/static/app/components/core/form/displayField.mdx index b34fee953b26..bfcb7d5b7ffe 100644 --- a/static/app/components/core/form/displayField.mdx +++ b/static/app/components/core/form/displayField.mdx @@ -2,24 +2,24 @@ title: DisplayField description: Display information alongside form inputs with matching responsive layouts. category: forms -source: '@sentry/scraps/formPresentation' +source: '@sentry/scraps/form' resources: - js: https://github.com/getsentry/sentry/blob/master/static/packages/scraps/src/formPresentation/displayField.tsx + js: https://github.com/getsentry/sentry/blob/master/static/packages/scraps/src/form/displayField.tsx --- -import {DisplayField} from '@sentry/scraps/formPresentation'; +import {DisplayField} from '@sentry/scraps/form'; import {Container} from '@sentry/scraps/layout'; import * as Storybook from 'sentry/stories'; -import documentation from '!!type-loader!@sentry/scraps/formPresentation'; +import documentation from '!!type-loader!@sentry/scraps/form/displayField'; export {documentation}; Use `DisplayField.Row` or `DisplayField.Stack` for information such as creation dates and account metadata shown alongside form inputs. Both render a description list with a term and its details. They work without a form provider and do not register a value, run validation, or manage focus. ```jsx -import {DisplayField} from '@sentry/scraps/formPresentation'; +import {DisplayField} from '@sentry/scraps/form'; January 1, 2025; ``` diff --git a/static/app/components/core/form/field/inputField.spec.tsx b/static/app/components/core/form/field/inputField.spec.tsx index ea8bcc1ff4de..6358a08c75da 100644 --- a/static/app/components/core/form/field/inputField.spec.tsx +++ b/static/app/components/core/form/field/inputField.spec.tsx @@ -3,8 +3,7 @@ import {expectTypeOf} from 'expect-type'; import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import {defaultFormOptions, useScrapsForm} from '@sentry/scraps/form'; - -import type {InputFieldProps} from './inputField'; +import type {InputFieldProps} from '@sentry/scraps/form/field/inputField'; function TestForm() { const form = useScrapsForm({ diff --git a/static/app/components/core/form/fields.mdx b/static/app/components/core/form/fields.mdx index c701fe5f53ac..4dabc763f9b8 100644 --- a/static/app/components/core/form/fields.mdx +++ b/static/app/components/core/form/fields.mdx @@ -4,7 +4,7 @@ description: Reference for all available form field components and how to create category: forms source: '@sentry/scraps/form' resources: - js: https://github.com/getsentry/sentry/blob/master/static/app/components/core/form/field + js: https://github.com/getsentry/sentry/blob/master/static/packages/scraps/src/form/field --- import {Container} from '@sentry/scraps/layout'; diff --git a/static/app/components/core/form/form.mdx b/static/app/components/core/form/form.mdx index be618c886964..889954aba596 100644 --- a/static/app/components/core/form/form.mdx +++ b/static/app/components/core/form/form.mdx @@ -4,7 +4,7 @@ description: A form system built on TanStack React Form and Zod for building val category: forms source: '@sentry/scraps/form' resources: - js: https://github.com/getsentry/sentry/blob/master/static/app/components/core/form/scrapsForm.tsx + js: https://github.com/getsentry/sentry/blob/master/static/packages/scraps/src/form/scrapsForm.tsx --- import {Container} from '@sentry/scraps/layout'; diff --git a/static/app/components/core/form/layout/fieldGroup.tsx b/static/app/components/core/form/layout/fieldGroup.tsx deleted file mode 100644 index bad0254a6156..000000000000 --- a/static/app/components/core/form/layout/fieldGroup.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import styled from '@emotion/styled'; - -import {Container} from '@sentry/scraps/layout'; - -import {Panel} from 'sentry/components/panels/panel'; -import {PanelHeader} from 'sentry/components/panels/panelHeader'; - -export function FieldGroup({ - title, - children, - hasButtons, -}: { - children: React.ReactNode; - hasButtons?: boolean; - title?: React.ReactNode; -}) { - return ( - - {title ? {title} : null} - {children} - - ); -} - -const PanelBody = styled(Container)` - > * { - padding: ${p => p.theme.space.xl}; - border-bottom: 1px solid ${p => p.theme.tokens.border.primary}; - - &:last-child { - border-bottom: none; - } - } -`; diff --git a/static/app/components/events/eventAttachmentActions.tsx b/static/app/components/events/eventAttachmentActions.tsx index 197e97e44f99..fc1ffe36133e 100644 --- a/static/app/components/events/eventAttachmentActions.tsx +++ b/static/app/components/events/eventAttachmentActions.tsx @@ -3,10 +3,10 @@ import {IconDownload} from '@sentry/icons/download'; import {IconShow} from '@sentry/icons/show'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Grid} from '@sentry/scraps/layout'; import {useRole} from 'sentry/components/acl/useRole'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {IssueAttachment} from 'sentry/types/group'; import {useOrganization} from 'sentry/utils/useOrganization'; diff --git a/static/app/components/events/eventTagsAndScreenshot/screenshot/index.tsx b/static/app/components/events/eventTagsAndScreenshot/screenshot/index.tsx index f3d676f357d5..0f47874fa315 100644 --- a/static/app/components/events/eventTagsAndScreenshot/screenshot/index.tsx +++ b/static/app/components/events/eventTagsAndScreenshot/screenshot/index.tsx @@ -4,6 +4,7 @@ import {IconChevron} from '@sentry/icons/chevron'; import {IconEllipsis} from '@sentry/icons/ellipsis'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {Container, Flex, Grid, Stack} from '@sentry/scraps/layout'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; @@ -11,7 +12,6 @@ import {PanelProvider} from '@sentry/scraps/panelProvider'; import {Text} from '@sentry/scraps/text'; import {useRole} from 'sentry/components/acl/useRole'; -import {openConfirmModal} from 'sentry/components/confirm'; import {ImageViewer} from 'sentry/components/events/attachmentViewers/imageViewer'; import { imageMimeTypes, diff --git a/static/app/components/events/eventTagsAndScreenshot/screenshot/modal.tsx b/static/app/components/events/eventTagsAndScreenshot/screenshot/modal.tsx index 5c2d318f446d..e5baa2bb1a03 100644 --- a/static/app/components/events/eventTagsAndScreenshot/screenshot/modal.tsx +++ b/static/app/components/events/eventTagsAndScreenshot/screenshot/modal.tsx @@ -4,11 +4,11 @@ import {css} from '@emotion/react'; import styled from '@emotion/styled'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {useHotkeys} from '@sentry/scraps/hotkey'; import {Stack, Grid} from '@sentry/scraps/layout'; import type {ModalRenderProps} from '@sentry/scraps/modal'; -import {Confirm} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {ImageViewer} from 'sentry/components/events/attachmentViewers/imageViewer'; import {webmMimeTypes} from 'sentry/components/events/attachmentViewers/previewAttachmentTypes'; diff --git a/static/app/components/events/interfaces/debugMeta/debugImageDetails/candidate/actions.tsx b/static/app/components/events/interfaces/debugMeta/debugImageDetails/candidate/actions.tsx index 62b18325c2a3..88e8b64eca28 100644 --- a/static/app/components/events/interfaces/debugMeta/debugImageDetails/candidate/actions.tsx +++ b/static/app/components/events/interfaces/debugMeta/debugImageDetails/candidate/actions.tsx @@ -2,12 +2,12 @@ import {IconDelete} from '@sentry/icons/delete'; import {IconDownload} from '@sentry/icons/download'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Grid} from '@sentry/scraps/layout'; import {Tooltip} from '@sentry/scraps/tooltip'; import {Access} from 'sentry/components/acl/access'; import {useRole} from 'sentry/components/acl/useRole'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {ImageCandidate} from 'sentry/types/debugImage'; import {CandidateDownloadStatus} from 'sentry/types/debugImage'; diff --git a/static/app/components/feedback/feedbackItem/screenshotSection.tsx b/static/app/components/feedback/feedbackItem/screenshotSection.tsx index 694aa241b767..fa5f8bd300df 100644 --- a/static/app/components/feedback/feedbackItem/screenshotSection.tsx +++ b/static/app/components/feedback/feedbackItem/screenshotSection.tsx @@ -2,10 +2,10 @@ import styled from '@emotion/styled'; import {IconDelete} from '@sentry/icons/delete'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {useModal} from '@sentry/scraps/modal'; import {useDeleteEventAttachmentOptimistic} from 'sentry/actionCreators/events'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {Event} from 'sentry/types/event'; import type {Organization} from 'sentry/types/organization'; diff --git a/static/app/components/feedback/list/useBulkEditFeedbacks.tsx b/static/app/components/feedback/list/useBulkEditFeedbacks.tsx index efe5c585199e..e881a21034e6 100644 --- a/static/app/components/feedback/list/useBulkEditFeedbacks.tsx +++ b/static/app/components/feedback/list/useBulkEditFeedbacks.tsx @@ -1,9 +1,9 @@ import {useCallback, useMemo} from 'react'; import {useQueryState} from 'nuqs'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import {useDeleteFeedback} from 'sentry/components/feedback/useDeleteFeedback'; import {useMutateFeedback} from 'sentry/components/feedback/useMutateFeedback'; import {t, tct, tn} from 'sentry/locale'; diff --git a/static/app/components/feedback/useDeleteFeedback.tsx b/static/app/components/feedback/useDeleteFeedback.tsx index 66fa7407e576..a2d502ae893b 100644 --- a/static/app/components/feedback/useDeleteFeedback.tsx +++ b/static/app/components/feedback/useDeleteFeedback.tsx @@ -1,9 +1,9 @@ import {useCallback} from 'react'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {toast} from '@sentry/scraps/toast'; import {bulkDelete} from 'sentry/actionCreators/group'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import {normalizeUrl} from 'sentry/utils/url/normalizeUrl'; import {useApi} from 'sentry/utils/useApi'; diff --git a/static/app/components/forms/fields/booleanField.tsx b/static/app/components/forms/fields/booleanField.tsx index 9080b9155d49..27b37301bc40 100644 --- a/static/app/components/forms/fields/booleanField.tsx +++ b/static/app/components/forms/fields/booleanField.tsx @@ -1,9 +1,9 @@ import type {FormEvent, ReactNode} from 'react'; +import {Confirm} from '@sentry/scraps/confirm'; import {Switch, type SwitchProps} from '@sentry/scraps/switch'; import {Tooltip} from '@sentry/scraps/tooltip'; -import {Confirm} from 'sentry/components/confirm'; import {FormField} from 'sentry/components/forms/formField'; // XXX(epurkhiser): This is wrong, it should not be inheriting these props diff --git a/static/app/components/forms/fields/selectField.tsx b/static/app/components/forms/fields/selectField.tsx index c8202bb29778..fe6267cfa7ef 100644 --- a/static/app/components/forms/fields/selectField.tsx +++ b/static/app/components/forms/fields/selectField.tsx @@ -1,11 +1,11 @@ import {Component, createContext, useContext} from 'react'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import type {ControlProps, SelectValue} from '@sentry/scraps/select'; import {Select} from '@sentry/scraps/select'; import {Tooltip} from '@sentry/scraps/tooltip'; -import {openConfirmModal} from 'sentry/components/confirm'; import {FormField} from 'sentry/components/forms/formField'; import {FormFieldControlState} from 'sentry/components/forms/formField/controlState'; import {t} from 'sentry/locale'; diff --git a/static/app/components/forms/fields/tableField.tsx b/static/app/components/forms/fields/tableField.tsx index 5538e924e385..5064cd01936f 100644 --- a/static/app/components/forms/fields/tableField.tsx +++ b/static/app/components/forms/fields/tableField.tsx @@ -5,11 +5,11 @@ import {IconDelete} from '@sentry/icons/delete'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Input} from '@sentry/scraps/input'; import {Flex} from '@sentry/scraps/layout'; import {singleLineRenderer} from '@sentry/scraps/markdown'; -import {Confirm} from 'sentry/components/confirm'; import {FormField} from 'sentry/components/forms/formField'; import type {TableType} from 'sentry/components/forms/types'; import {t} from 'sentry/locale'; diff --git a/static/app/components/notificationActions/notificationActionItem.tsx b/static/app/components/notificationActions/notificationActionItem.tsx index d26b10b6af9d..27365e7773dc 100644 --- a/static/app/components/notificationActions/notificationActionItem.tsx +++ b/static/app/components/notificationActions/notificationActionItem.tsx @@ -6,6 +6,7 @@ import {useMutation} from '@tanstack/react-query'; import {Badge} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {Flex, Grid} from '@sentry/scraps/layout'; @@ -14,7 +15,6 @@ import {toast} from '@sentry/scraps/toast'; import {Tooltip} from '@sentry/scraps/tooltip'; import {Card} from 'sentry/components/card'; -import {openConfirmModal} from 'sentry/components/confirm'; import {PluginIcon} from 'sentry/icons/pluginIcon'; import {t} from 'sentry/locale'; import type { diff --git a/static/app/components/replays/table/deleteReplays.tsx b/static/app/components/replays/table/deleteReplays.tsx index 795b3b4f170e..679112157f7e 100644 --- a/static/app/components/replays/table/deleteReplays.tsx +++ b/static/app/components/replays/table/deleteReplays.tsx @@ -8,6 +8,7 @@ import {useQueryState} from 'nuqs'; import {UserAvatar} from '@sentry/scraps/avatar'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; import type {TableColumnConfig} from '@sentry/scraps/table'; @@ -16,7 +17,6 @@ import {toast} from '@sentry/scraps/toast'; import {Tooltip} from '@sentry/scraps/tooltip'; import {useAnalyticsArea} from 'sentry/components/analyticsArea'; -import {openConfirmModal} from 'sentry/components/confirm'; import {Duration} from 'sentry/components/duration/duration'; import {ErrorBoundary} from 'sentry/components/errorBoundary'; import {replayBulkDeleteAuditLogApiOptions} from 'sentry/components/replays/bulkDelete/replayBulkDeleteAuditLogApiOptions'; diff --git a/static/app/components/seer/projectDetails/autofixRepositoriesItem.tsx b/static/app/components/seer/projectDetails/autofixRepositoriesItem.tsx index 373d715a34b1..fcbfaa4426e0 100644 --- a/static/app/components/seer/projectDetails/autofixRepositoriesItem.tsx +++ b/static/app/components/seer/projectDetails/autofixRepositoriesItem.tsx @@ -7,6 +7,7 @@ import {useMutation, useQueryClient} from '@tanstack/react-query'; import {z} from 'zod'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import { AutoSaveContextProvider, AutoSaveForm, @@ -17,7 +18,6 @@ import {InfoTip} from '@sentry/scraps/info'; import {Flex, Stack} from '@sentry/scraps/layout'; import {Heading, Text} from '@sentry/scraps/text'; -import {Confirm} from 'sentry/components/confirm'; import {RepoProviderIcon} from 'sentry/components/repositories/repoProviderIcon'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {t, tct, tn} from 'sentry/locale'; diff --git a/static/app/utils/replays/hooks/useDeleteReplay.tsx b/static/app/utils/replays/hooks/useDeleteReplay.tsx index e0645f968662..04e4eccee112 100644 --- a/static/app/utils/replays/hooks/useDeleteReplay.tsx +++ b/static/app/utils/replays/hooks/useDeleteReplay.tsx @@ -3,9 +3,9 @@ import * as Sentry from '@sentry/react'; import {useMutation} from '@tanstack/react-query'; import {parseAsString, useQueryState} from 'nuqs'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import {getApiUrl} from 'sentry/utils/api/getApiUrl'; import {fetchMutation} from 'sentry/utils/queryClient'; diff --git a/static/app/views/admin/adminRelays.tsx b/static/app/views/admin/adminRelays.tsx index 979b16198ad5..8146dc0a78a4 100644 --- a/static/app/views/admin/adminRelays.tsx +++ b/static/app/views/admin/adminRelays.tsx @@ -4,9 +4,9 @@ import {useMutation} from '@tanstack/react-query'; import moment from 'moment-timezone'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {toast} from '@sentry/scraps/toast'; -import {Confirm} from 'sentry/components/confirm'; import {ResultGrid, type ResultGridColumn} from 'sentry/components/resultGrid'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {t} from 'sentry/locale'; diff --git a/static/app/views/automations/components/automationListTable/actions.tsx b/static/app/views/automations/components/automationListTable/actions.tsx index 45bb64f0d5eb..5dd83ccc455b 100644 --- a/static/app/views/automations/components/automationListTable/actions.tsx +++ b/static/app/views/automations/components/automationListTable/actions.tsx @@ -4,9 +4,9 @@ import {parseAsString, useQueryState} from 'nuqs'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; import {Checkbox} from '@sentry/scraps/checkbox'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; -import {openConfirmModal} from 'sentry/components/confirm'; import {usePageFilters} from 'sentry/components/pageFilters/usePageFilters'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {t, tct, tn} from 'sentry/locale'; diff --git a/static/app/views/automations/components/editAutomationActions.tsx b/static/app/views/automations/components/editAutomationActions.tsx index dbac35fe7952..da988bcd0bb2 100644 --- a/static/app/views/automations/components/editAutomationActions.tsx +++ b/static/app/views/automations/components/editAutomationActions.tsx @@ -1,11 +1,11 @@ import {Observer} from 'mobx-react-lite'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Grid} from '@sentry/scraps/layout'; import {Separator} from '@sentry/scraps/separator'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import type {FormModel} from 'sentry/components/forms/model'; import {t} from 'sentry/locale'; import type {Automation} from 'sentry/types/workflowEngine/automations'; diff --git a/static/app/views/dashboards/dashboardBreadcrumbTitle.tsx b/static/app/views/dashboards/dashboardBreadcrumbTitle.tsx index df340ef1a0fe..b14cdc844083 100644 --- a/static/app/views/dashboards/dashboardBreadcrumbTitle.tsx +++ b/static/app/views/dashboards/dashboardBreadcrumbTitle.tsx @@ -10,10 +10,10 @@ import {IconStar} from '@sentry/icons/star'; import {useQueryClient} from '@tanstack/react-query'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {updateDashboardFavorite} from 'sentry/actionCreators/dashboards'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t, tct} from 'sentry/locale'; import type {Organization} from 'sentry/types/organization'; import {trackAnalytics} from 'sentry/utils/analytics'; diff --git a/static/app/views/dashboards/manage/dashboardTable.tsx b/static/app/views/dashboards/manage/dashboardTable.tsx index a478e7481310..3915512f3674 100644 --- a/static/app/views/dashboards/manage/dashboardTable.tsx +++ b/static/app/views/dashboards/manage/dashboardTable.tsx @@ -11,6 +11,7 @@ import cloneDeep from 'lodash/cloneDeep'; import {UserAvatar} from '@sentry/scraps/avatar'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu, type MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {Flex} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; @@ -22,7 +23,6 @@ import {Tooltip} from '@sentry/scraps/tooltip'; import {showDashboardPermissionsError} from 'sentry/actionCreators/dashboards'; import {ActivityAvatar} from 'sentry/components/activity/item/avatar'; -import {openConfirmModal} from 'sentry/components/confirm'; import {EmptyStateWarning} from 'sentry/components/emptyStateWarning'; import { DataGrid, diff --git a/static/app/views/dashboards/widgetBuilder/components/widgetBuilderSlideout.tsx b/static/app/views/dashboards/widgetBuilder/components/widgetBuilderSlideout.tsx index dd16d93e209c..9569f5b5eab9 100644 --- a/static/app/views/dashboards/widgetBuilder/components/widgetBuilderSlideout.tsx +++ b/static/app/views/dashboards/widgetBuilder/components/widgetBuilderSlideout.tsx @@ -14,6 +14,7 @@ import {createSerializer, useQueryStates} from 'nuqs'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {useHotkeys} from '@sentry/scraps/hotkey'; import {Container, Flex, Stack} from '@sentry/scraps/layout'; import {ExternalLink, Link} from '@sentry/scraps/link'; @@ -22,7 +23,6 @@ import {SlideOverPanel} from '@sentry/scraps/slideOverPanel'; import {Heading} from '@sentry/scraps/text'; import {useMedia} from '@sentry/scraps/useMedia'; -import {openConfirmModal} from 'sentry/components/confirm'; import {ErrorBoundary} from 'sentry/components/errorBoundary'; import {Placeholder} from 'sentry/components/placeholder'; import {t, tct} from 'sentry/locale'; diff --git a/static/app/views/dashboards/widgetCard/widgetCardContextMenu.tsx b/static/app/views/dashboards/widgetCard/widgetCardContextMenu.tsx index e50103b621c2..140c73a77afb 100644 --- a/static/app/views/dashboards/widgetCard/widgetCardContextMenu.tsx +++ b/static/app/views/dashboards/widgetCard/widgetCardContextMenu.tsx @@ -3,6 +3,7 @@ import styled from '@emotion/styled'; import type {Location} from 'history'; import qs from 'query-string'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {Link} from '@sentry/scraps/link'; import {Text} from '@sentry/scraps/text'; @@ -11,7 +12,6 @@ import { openAddToDashboardModal, openDashboardWidgetQuerySelectorModal, } from 'sentry/actionCreators/modal'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t, tct} from 'sentry/locale'; import type {PageFilters} from 'sentry/types/core'; import type {Organization} from 'sentry/types/organization'; diff --git a/static/app/views/detectors/components/details/common/actions.tsx b/static/app/views/detectors/components/details/common/actions.tsx index e8cef77502d6..de45305e7d41 100644 --- a/static/app/views/detectors/components/details/common/actions.tsx +++ b/static/app/views/detectors/components/details/common/actions.tsx @@ -2,10 +2,10 @@ import {IconCopy} from '@sentry/icons/copy'; import {IconEdit} from '@sentry/icons/edit'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {toast} from '@sentry/scraps/toast'; import {Tooltip} from '@sentry/scraps/tooltip'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {Detector} from 'sentry/types/workflowEngine/detectors'; import {useNavigate} from 'sentry/utils/useNavigate'; diff --git a/static/app/views/detectors/components/detectorListTable/actions.tsx b/static/app/views/detectors/components/detectorListTable/actions.tsx index 32c5a4485d31..4e4deb51b775 100644 --- a/static/app/views/detectors/components/detectorListTable/actions.tsx +++ b/static/app/views/detectors/components/detectorListTable/actions.tsx @@ -4,10 +4,10 @@ import {parseAsString, useQueryState} from 'nuqs'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; import {Checkbox} from '@sentry/scraps/checkbox'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {Tooltip} from '@sentry/scraps/tooltip'; -import {openConfirmModal} from 'sentry/components/confirm'; import {usePageFilters} from 'sentry/components/pageFilters/usePageFilters'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {t, tct, tn} from 'sentry/locale'; diff --git a/static/app/views/detectors/components/uptime/uptimeAlertForm.tsx b/static/app/views/detectors/components/uptime/uptimeAlertForm.tsx index a5834e2be663..2cd9e4835ad8 100644 --- a/static/app/views/detectors/components/uptime/uptimeAlertForm.tsx +++ b/static/app/views/detectors/components/uptime/uptimeAlertForm.tsx @@ -7,11 +7,11 @@ import {Observer} from 'mobx-react-lite'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {ExternalLink} from '@sentry/scraps/link'; import {Text} from '@sentry/scraps/text'; -import {Confirm} from 'sentry/components/confirm'; import {FieldWrapper} from 'sentry/components/forms/fieldGroup/fieldWrapper'; import {BooleanField} from 'sentry/components/forms/fields/booleanField'; import {HiddenField} from 'sentry/components/forms/fields/hiddenField'; diff --git a/static/app/views/discover/results.tsx b/static/app/views/discover/results.tsx index e694989628d4..035177ab69be 100644 --- a/static/app/views/discover/results.tsx +++ b/static/app/views/discover/results.tsx @@ -10,6 +10,7 @@ import omit from 'lodash/omit'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {Flex, Stack} from '@sentry/scraps/layout'; @@ -24,7 +25,6 @@ import {fetchProjectsCount} from 'sentry/actionCreators/projects'; import {loadOrganizationTags} from 'sentry/actionCreators/tags'; import {Client} from 'sentry/api'; import {Banner} from 'sentry/components/banner'; -import {Confirm} from 'sentry/components/confirm'; import * as Layout from 'sentry/components/layouts/thirds'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; diff --git a/static/app/views/explore/releases/detail/header/useReleaseMenuItems.tsx b/static/app/views/explore/releases/detail/header/useReleaseMenuItems.tsx index 1ffc72522506..25984fe3d592 100644 --- a/static/app/views/explore/releases/detail/header/useReleaseMenuItems.tsx +++ b/static/app/views/explore/releases/detail/header/useReleaseMenuItems.tsx @@ -1,5 +1,6 @@ import {Fragment} from 'react'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {InfoText} from '@sentry/scraps/info'; import {Grid} from '@sentry/scraps/layout'; @@ -7,7 +8,6 @@ import {Heading} from '@sentry/scraps/text'; import {archiveRelease, restoreRelease} from 'sentry/actionCreators/release'; import {Client} from 'sentry/api'; -import {openConfirmModal} from 'sentry/components/confirm'; import ProjectBadge from 'sentry/components/idBadge/projectBadge'; import {t, tct, tn} from 'sentry/locale'; import type {Organization} from 'sentry/types/organization'; diff --git a/static/app/views/explore/savedFormulas/savedFormulasTable.tsx b/static/app/views/explore/savedFormulas/savedFormulasTable.tsx index 2e8867316e58..2774d9533f39 100644 --- a/static/app/views/explore/savedFormulas/savedFormulasTable.tsx +++ b/static/app/views/explore/savedFormulas/savedFormulasTable.tsx @@ -1,6 +1,7 @@ import {Fragment} from 'react'; import {UserAvatar} from '@sentry/scraps/avatar'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import type {TableColumnConfig} from '@sentry/scraps/table'; import {Text} from '@sentry/scraps/text'; @@ -8,7 +9,6 @@ import {toast} from '@sentry/scraps/toast'; import {Tooltip} from '@sentry/scraps/tooltip'; import {ActivityAvatar} from 'sentry/components/activity/item/avatar'; -import {openConfirmModal} from 'sentry/components/confirm'; import {SavedEntityTable} from 'sentry/components/savedEntityTable'; import {getNextSort} from 'sentry/components/tables/getNextSort'; import {t} from 'sentry/locale'; diff --git a/static/app/views/explore/utils.tsx b/static/app/views/explore/utils.tsx index 5729731fa1e8..66d670949a9d 100644 --- a/static/app/views/explore/utils.tsx +++ b/static/app/views/explore/utils.tsx @@ -2,9 +2,10 @@ import * as Sentry from '@sentry/react'; import type {Location} from 'history'; import * as qs from 'query-string'; +import {openConfirmModal} from '@sentry/scraps/confirm'; + import {Expression} from 'sentry/components/arithmeticBuilder/expression'; import {isTokenFunction} from 'sentry/components/arithmeticBuilder/token'; -import {openConfirmModal} from 'sentry/components/confirm'; import {getTooltipText as getAnnotatedTooltipText} from 'sentry/components/events/meta/annotatedText/utils'; import {normalizeDateTimeString} from 'sentry/components/pageFilters/parse'; import type {CaseInsensitive} from 'sentry/components/searchQueryBuilder/hooks'; diff --git a/static/app/views/insights/crons/components/detailsTimeline.tsx b/static/app/views/insights/crons/components/detailsTimeline.tsx index 37f7f16c896b..3e39687162d5 100644 --- a/static/app/views/insights/crons/components/detailsTimeline.tsx +++ b/static/app/views/insights/crons/components/detailsTimeline.tsx @@ -6,6 +6,7 @@ import {useQueryClient} from '@tanstack/react-query'; import {createSerializer, useQueryStates} from 'nuqs'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; import {Table, type TableColumnConfig} from '@sentry/scraps/table'; @@ -22,7 +23,6 @@ import { GridLineOverlay, } from 'sentry/components/checkInTimeline/gridLines'; import {useTimeWindowConfig} from 'sentry/components/checkInTimeline/hooks/useTimeWindowConfig'; -import {openConfirmModal} from 'sentry/components/confirm'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {t, tct} from 'sentry/locale'; import {fadeIn} from 'sentry/styles/animations'; diff --git a/static/app/views/insights/crons/components/monitorHeaderActions.tsx b/static/app/views/insights/crons/components/monitorHeaderActions.tsx index 9f655f40f1dd..c7bb6570ded3 100644 --- a/static/app/views/insights/crons/components/monitorHeaderActions.tsx +++ b/static/app/views/insights/crons/components/monitorHeaderActions.tsx @@ -4,12 +4,12 @@ import {IconSubscribed} from '@sentry/icons/subscribed'; import {IconUnsubscribed} from '@sentry/icons/unsubscribed'; import {Button, LinkButton, type ButtonProps} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; import {deleteMonitor, updateMonitor} from 'sentry/actionCreators/monitors'; import {hasEveryAccess} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {FeedbackButton} from 'sentry/components/feedbackButton/feedbackButton'; import {usePageFilters} from 'sentry/components/pageFilters/usePageFilters'; import {t, tct} from 'sentry/locale'; diff --git a/static/app/views/insights/crons/components/processingErrors/monitorProcessingErrors.tsx b/static/app/views/insights/crons/components/processingErrors/monitorProcessingErrors.tsx index a62c8e46ef37..1e2c4e125205 100644 --- a/static/app/views/insights/crons/components/processingErrors/monitorProcessingErrors.tsx +++ b/static/app/views/insights/crons/components/processingErrors/monitorProcessingErrors.tsx @@ -7,9 +7,9 @@ import groupBy from 'lodash/groupBy'; import {Alert} from '@sentry/scraps/alert'; import {Tag} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; -import {openConfirmModal} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {Hovercard} from 'sentry/components/hovercard'; import ProjectBadge from 'sentry/components/idBadge/projectBadge'; diff --git a/static/app/views/investigations/comments/commentActions.tsx b/static/app/views/investigations/comments/commentActions.tsx index f9b30c15f2a5..d7b6eaecb661 100644 --- a/static/app/views/investigations/comments/commentActions.tsx +++ b/static/app/views/investigations/comments/commentActions.tsx @@ -1,11 +1,11 @@ import {mergeRefs} from '@react-aria/utils'; import {IconEllipsis} from '@sentry/icons/ellipsis'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import {useOrganization} from 'sentry/utils/useOrganization'; import {useDeleteInvestigationCommentMutation} from 'sentry/views/investigations/api'; diff --git a/static/app/views/investigations/detail/block.tsx b/static/app/views/investigations/detail/block.tsx index 3fea2f15bac8..491941d45f33 100644 --- a/static/app/views/investigations/detail/block.tsx +++ b/static/app/views/investigations/detail/block.tsx @@ -8,6 +8,7 @@ import {useQuery, useQueryClient} from '@tanstack/react-query'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Disclosure} from '@sentry/scraps/disclosure'; import {DropdownMenu, type MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {Container, Flex, Grid, Stack} from '@sentry/scraps/layout'; @@ -20,7 +21,6 @@ import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; import {Heading, Text} from '@sentry/scraps/text'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import {Duration} from 'sentry/components/duration'; import {SeerMarkdown} from 'sentry/components/seer/markdown'; import {ChartContent} from 'sentry/components/seer/markdown/embeds/components/chart'; diff --git a/static/app/views/investigations/detail/index.tsx b/static/app/views/investigations/detail/index.tsx index 37bf88811994..b5d5cb76b67c 100644 --- a/static/app/views/investigations/detail/index.tsx +++ b/static/app/views/investigations/detail/index.tsx @@ -3,11 +3,11 @@ import {IconEllipsis} from '@sentry/icons/ellipsis'; import {IconStack} from '@sentry/icons/stack'; import {useQueryClient} from '@tanstack/react-query'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Stack} from '@sentry/scraps/layout'; import {toast} from '@sentry/scraps/toast'; import {AnalyticsArea} from 'sentry/components/analyticsArea'; -import {openConfirmModal} from 'sentry/components/confirm'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {SentryDocumentTitle} from 'sentry/components/sentryDocumentTitle'; import {t} from 'sentry/locale'; diff --git a/static/app/views/investigations/index.tsx b/static/app/views/investigations/index.tsx index 28b8821eb9de..0ccad8021113 100644 --- a/static/app/views/investigations/index.tsx +++ b/static/app/views/investigations/index.tsx @@ -9,6 +9,7 @@ import {UserAvatar} from '@sentry/scraps/avatar'; import {FeatureBadge} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; import {CompactSelect} from '@sentry/scraps/compactSelect'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {Container, Flex, Grid, Stack} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; @@ -21,7 +22,6 @@ import {toast} from '@sentry/scraps/toast'; import {Feature} from 'sentry/components/acl/feature'; import {FeatureDisabled} from 'sentry/components/acl/featureDisabled'; import {AnalyticsArea} from 'sentry/components/analyticsArea'; -import {openConfirmModal} from 'sentry/components/confirm'; import {EmptyStateWarning} from 'sentry/components/emptyStateWarning'; import {ErrorBoundary} from 'sentry/components/errorBoundary'; import * as Layout from 'sentry/components/layouts/thirds'; diff --git a/static/app/views/issueDetails/actions/index.tsx b/static/app/views/issueDetails/actions/index.tsx index 5aa6cb813788..789967aa874e 100644 --- a/static/app/views/issueDetails/actions/index.tsx +++ b/static/app/views/issueDetails/actions/index.tsx @@ -12,6 +12,7 @@ import {useMutation, useQueryClient} from '@tanstack/react-query'; import {parseAsString, useQueryStates} from 'nuqs'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {Flex} from '@sentry/scraps/layout'; import {useModal} from '@sentry/scraps/modal'; @@ -27,7 +28,6 @@ import {ArchiveActions} from 'sentry/components/actions/archive'; import {ResolveActions} from 'sentry/components/actions/resolve'; import {CMDKAction} from 'sentry/components/commandPalette/ui/cmdk'; import {CommandPaletteSlot} from 'sentry/components/commandPalette/ui/commandPaletteSlot'; -import {openConfirmModal} from 'sentry/components/confirm'; import ProjectBadge from 'sentry/components/idBadge/projectBadge'; import {t} from 'sentry/locale'; import {IssueListCacheStore} from 'sentry/stores/IssueListCacheStore'; diff --git a/static/app/views/issueDetails/activitySection/commentActionsDropdown.tsx b/static/app/views/issueDetails/activitySection/commentActionsDropdown.tsx index e86f38e57743..43ad346d2ef9 100644 --- a/static/app/views/issueDetails/activitySection/commentActionsDropdown.tsx +++ b/static/app/views/issueDetails/activitySection/commentActionsDropdown.tsx @@ -1,10 +1,10 @@ import styled from '@emotion/styled'; import {IconEllipsis} from '@sentry/icons/ellipsis'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {User} from 'sentry/types/user'; import {useUser} from 'sentry/utils/useUser'; diff --git a/static/app/views/issueDetails/groupEventAttachments/screenshotCard.tsx b/static/app/views/issueDetails/groupEventAttachments/screenshotCard.tsx index dc4145e16e74..e6f6fe4ee3b2 100644 --- a/static/app/views/issueDetails/groupEventAttachments/screenshotCard.tsx +++ b/static/app/views/issueDetails/groupEventAttachments/screenshotCard.tsx @@ -2,6 +2,7 @@ import {useState} from 'react'; import styled from '@emotion/styled'; import {IconEllipsis} from '@sentry/icons/ellipsis'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {Flex, Stack} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; @@ -10,7 +11,6 @@ import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; import {Tooltip} from '@sentry/scraps/tooltip'; import {Card} from 'sentry/components/card'; -import {openConfirmModal} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {ImageVisualization} from 'sentry/components/events/eventTagsAndScreenshot/screenshot/imageVisualization'; import { diff --git a/static/app/views/issueDetails/groupMerged/mergedToolbar.tsx b/static/app/views/issueDetails/groupMerged/mergedToolbar.tsx index 8bdf62a35435..d5fb091d102b 100644 --- a/static/app/views/issueDetails/groupMerged/mergedToolbar.tsx +++ b/static/app/views/issueDetails/groupMerged/mergedToolbar.tsx @@ -1,8 +1,8 @@ import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Grid} from '@sentry/scraps/layout'; import {openDiffModal} from 'sentry/actionCreators/modal'; -import {Confirm} from 'sentry/components/confirm'; import {PanelHeader} from 'sentry/components/panels/panelHeader'; import {t, tct} from 'sentry/locale'; import type {Group} from 'sentry/types/group'; diff --git a/static/app/views/issueDetails/groupSimilarIssues/similarStackTrace/list.tsx b/static/app/views/issueDetails/groupSimilarIssues/similarStackTrace/list.tsx index 86df63dd5840..3e5239cb96e9 100644 --- a/static/app/views/issueDetails/groupSimilarIssues/similarStackTrace/list.tsx +++ b/static/app/views/issueDetails/groupSimilarIssues/similarStackTrace/list.tsx @@ -2,12 +2,12 @@ import {Fragment, useState} from 'react'; import styled from '@emotion/styled'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex, Stack} from '@sentry/scraps/layout'; import {Pagination} from '@sentry/scraps/pagination'; import type {TableColumnConfig} from '@sentry/scraps/table'; import {Text} from '@sentry/scraps/text'; -import {Confirm} from 'sentry/components/confirm'; import {SimilarSpectrum} from 'sentry/components/similarSpectrum'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {t, tn} from 'sentry/locale'; diff --git a/static/app/views/issueList/actions/actionSet.tsx b/static/app/views/issueList/actions/actionSet.tsx index 6b960bf507d1..8e0e226e108b 100644 --- a/static/app/views/issueList/actions/actionSet.tsx +++ b/static/app/views/issueList/actions/actionSet.tsx @@ -2,6 +2,7 @@ import {Fragment, useCallback} from 'react'; import {IconEllipsis} from '@sentry/icons/ellipsis'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; @@ -9,7 +10,6 @@ import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; import {ArchiveActions} from 'sentry/components/actions/archive'; import {useAnalyticsArea} from 'sentry/components/analyticsArea'; import {makeGroupPriorityDropdownOptions} from 'sentry/components/badge/groupPriority'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t, tn} from 'sentry/locale'; import {GroupStore} from 'sentry/stores/groupStore'; import type {BaseGroup} from 'sentry/types/group'; diff --git a/static/app/views/issueList/issueListBulkCommandPaletteActions.tsx b/static/app/views/issueList/issueListBulkCommandPaletteActions.tsx index 35c266dfec47..696b5d48d055 100644 --- a/static/app/views/issueList/issueListBulkCommandPaletteActions.tsx +++ b/static/app/views/issueList/issueListBulkCommandPaletteActions.tsx @@ -6,11 +6,11 @@ import {IconUser} from '@sentry/icons/user'; import {useQuery, useQueryClient} from '@tanstack/react-query'; import {ActorAvatar, TeamAvatar, UserAvatar} from '@sentry/scraps/avatar'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {IconCellSignal} from 'sentry/components/badge/iconCellSignal'; import {CMDKAction} from 'sentry/components/commandPalette/ui/cmdk'; import {CommandPaletteSlot} from 'sentry/components/commandPalette/ui/commandPaletteSlot'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t, tn} from 'sentry/locale'; import {GroupStore} from 'sentry/stores/groupStore'; import type {PageFilters} from 'sentry/types/core'; diff --git a/static/app/views/issueList/issueViews/utils.tsx b/static/app/views/issueList/issueViews/utils.tsx index 80b6647fa64f..f7b2cadbae2e 100644 --- a/static/app/views/issueList/issueViews/utils.tsx +++ b/static/app/views/issueList/issueViews/utils.tsx @@ -1,4 +1,5 @@ -import {openConfirmModal} from 'sentry/components/confirm'; +import {openConfirmModal} from '@sentry/scraps/confirm'; + import {t} from 'sentry/locale'; import type {PageFilterDatetime} from 'sentry/types/core'; import type {Organization} from 'sentry/types/organization'; diff --git a/static/app/views/preprod/snapshots/header/useSnapshotActions.tsx b/static/app/views/preprod/snapshots/header/useSnapshotActions.tsx index 000cc346b150..963861df689c 100644 --- a/static/app/views/preprod/snapshots/header/useSnapshotActions.tsx +++ b/static/app/views/preprod/snapshots/header/useSnapshotActions.tsx @@ -7,12 +7,12 @@ import {IconSettings} from '@sentry/icons/settings'; import {IconThumb} from '@sentry/icons/thumb'; import {useMutation, useQueryClient} from '@tanstack/react-query'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {Flex} from '@sentry/scraps/layout'; import {Text} from '@sentry/scraps/text'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import {trackAnalytics} from 'sentry/utils/analytics'; import type {ApiResponse} from 'sentry/utils/api/apiFetch'; diff --git a/static/app/views/seerWorkflows/automations/detail/index.tsx b/static/app/views/seerWorkflows/automations/detail/index.tsx index 3e21aada23a2..6cef1addad57 100644 --- a/static/app/views/seerWorkflows/automations/detail/index.tsx +++ b/static/app/views/seerWorkflows/automations/detail/index.tsx @@ -6,12 +6,12 @@ import {IconPlay} from '@sentry/icons/play'; import {Tag} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Container, Flex, Stack} from '@sentry/scraps/layout'; import {TabList, Tabs} from '@sentry/scraps/tabs'; import {Heading, Text} from '@sentry/scraps/text'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import {NotFound} from 'sentry/components/errors/notFound'; import {UserBadge} from 'sentry/components/idBadge/userBadge'; import {LoadingError} from 'sentry/components/loadingError'; diff --git a/static/app/views/settings/account/accountEmails.tsx b/static/app/views/settings/account/accountEmails.tsx index c4d496bba382..f86394869e74 100644 --- a/static/app/views/settings/account/accountEmails.tsx +++ b/static/app/views/settings/account/accountEmails.tsx @@ -8,12 +8,12 @@ import {z} from 'zod'; import {AlertLink} from '@sentry/scraps/alert'; import {Tag} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {defaultFormOptions, FormSearch, useScrapsForm} from '@sentry/scraps/form'; import {Container, Flex, Grid} from '@sentry/scraps/layout'; import {toast} from '@sentry/scraps/toast'; import type {RequestOptions} from 'sentry/api'; -import {Confirm} from 'sentry/components/confirm'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {Panel} from 'sentry/components/panels/panel'; diff --git a/static/app/views/settings/account/accountIdentities.tsx b/static/app/views/settings/account/accountIdentities.tsx index b9d14d8cf542..2b0fd0b92585 100644 --- a/static/app/views/settings/account/accountIdentities.tsx +++ b/static/app/views/settings/account/accountIdentities.tsx @@ -6,10 +6,10 @@ import moment from 'moment-timezone'; import {Alert} from '@sentry/scraps/alert'; import {Tag} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {disconnectIdentity} from 'sentry/actionCreators/account'; -import {Confirm} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {LoadingError} from 'sentry/components/loadingError'; diff --git a/static/app/views/settings/account/accountSecurity/components/recoveryCodes.tsx b/static/app/views/settings/account/accountSecurity/components/recoveryCodes.tsx index 1ae3edbe2656..3147dbdfc4c6 100644 --- a/static/app/views/settings/account/accountSecurity/components/recoveryCodes.tsx +++ b/static/app/views/settings/account/accountSecurity/components/recoveryCodes.tsx @@ -5,9 +5,9 @@ import {IconPrint} from '@sentry/icons/print'; import {Button, LinkButton} from '@sentry/scraps/button'; import {CopyToClipboardButton} from '@sentry/scraps/clipboard'; +import {Confirm} from '@sentry/scraps/confirm'; import {Grid} from '@sentry/scraps/layout'; -import {Confirm} from 'sentry/components/confirm'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {Panel} from 'sentry/components/panels/panel'; import {PanelAlert} from 'sentry/components/panels/panelAlert'; diff --git a/static/app/views/settings/account/accountSecurity/components/removeConfirm.tsx b/static/app/views/settings/account/accountSecurity/components/removeConfirm.tsx index e4782c337e36..82e72d32667b 100644 --- a/static/app/views/settings/account/accountSecurity/components/removeConfirm.tsx +++ b/static/app/views/settings/account/accountSecurity/components/removeConfirm.tsx @@ -1,4 +1,5 @@ -import {Confirm} from 'sentry/components/confirm'; +import {Confirm} from '@sentry/scraps/confirm'; + import {t} from 'sentry/locale'; type Props = React.ComponentProps; diff --git a/static/app/views/settings/account/accountSecurity/components/u2fEnrolledDetails.tsx b/static/app/views/settings/account/accountSecurity/components/u2fEnrolledDetails.tsx index 8ba3c42eccee..b6b54e6ccdc8 100644 --- a/static/app/views/settings/account/accountSecurity/components/u2fEnrolledDetails.tsx +++ b/static/app/views/settings/account/accountSecurity/components/u2fEnrolledDetails.tsx @@ -4,10 +4,10 @@ import {IconClose} from '@sentry/icons/close'; import {IconDelete} from '@sentry/icons/delete'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Input} from '@sentry/scraps/input'; import {Grid} from '@sentry/scraps/layout'; -import {Confirm} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {Panel} from 'sentry/components/panels/panel'; diff --git a/static/app/views/settings/account/accountSecurity/index.tsx b/static/app/views/settings/account/accountSecurity/index.tsx index c4e00298d5c7..31db5720dbb6 100644 --- a/static/app/views/settings/account/accountSecurity/index.tsx +++ b/static/app/views/settings/account/accountSecurity/index.tsx @@ -4,13 +4,13 @@ import {useMutation} from '@tanstack/react-query'; import {Tag} from '@sentry/scraps/badge'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Grid, Container} from '@sentry/scraps/layout'; import {TabList, Tabs} from '@sentry/scraps/tabs'; import {toast} from '@sentry/scraps/toast'; import {openEmailVerification} from 'sentry/actionCreators/modal'; import {CircleIndicator} from 'sentry/components/circleIndicator'; -import {Confirm} from 'sentry/components/confirm'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {FieldGroup} from 'sentry/components/forms/fieldGroup'; import {Panel} from 'sentry/components/panels/panel'; diff --git a/static/app/views/settings/account/apiApplications/details.tsx b/static/app/views/settings/account/apiApplications/details.tsx index 16003486a3c7..9044836c72af 100644 --- a/static/app/views/settings/account/apiApplications/details.tsx +++ b/static/app/views/settings/account/apiApplications/details.tsx @@ -7,6 +7,7 @@ import {z} from 'zod'; import {Alert} from '@sentry/scraps/alert'; import {Tag} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import { AutoSaveForm, FieldGroup as FormFieldGroup, @@ -15,7 +16,6 @@ import { import {useModal} from '@sentry/scraps/modal'; import {toast} from '@sentry/scraps/toast'; -import {Confirm} from 'sentry/components/confirm'; import {FieldGroup} from 'sentry/components/forms/fieldGroup'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; diff --git a/static/app/views/settings/account/apiTokenRow.tsx b/static/app/views/settings/account/apiTokenRow.tsx index bb6fff078ebd..671511bcc512 100644 --- a/static/app/views/settings/account/apiTokenRow.tsx +++ b/static/app/views/settings/account/apiTokenRow.tsx @@ -2,8 +2,8 @@ import styled from '@emotion/styled'; import {IconDelete} from '@sentry/icons/delete'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; -import {Confirm} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {t} from 'sentry/locale'; diff --git a/static/app/views/settings/account/confirmAccountClose.tsx b/static/app/views/settings/account/confirmAccountClose.tsx index ec3155d97017..e8c41d94241e 100644 --- a/static/app/views/settings/account/confirmAccountClose.tsx +++ b/static/app/views/settings/account/confirmAccountClose.tsx @@ -1,8 +1,8 @@ import {Fragment} from 'react'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; export function ConfirmAccountClose({ diff --git a/static/app/views/settings/components/teamSelect/teamSelectForProject.tsx b/static/app/views/settings/components/teamSelect/teamSelectForProject.tsx index 1b5682751d8e..5b071654b82c 100644 --- a/static/app/views/settings/components/teamSelect/teamSelectForProject.tsx +++ b/static/app/views/settings/components/teamSelect/teamSelectForProject.tsx @@ -3,9 +3,9 @@ import styled from '@emotion/styled'; import {IconSubtract} from '@sentry/icons/subtract'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Link} from '@sentry/scraps/link'; -import {Confirm} from 'sentry/components/confirm'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {TeamBadge} from 'sentry/components/idBadge/teamBadge'; import {Panel} from 'sentry/components/panels/panel'; diff --git a/static/app/views/settings/featureFlags/changeTracking/organizationFeatureFlagsProviderRow.tsx b/static/app/views/settings/featureFlags/changeTracking/organizationFeatureFlagsProviderRow.tsx index c80d93b86d54..cbb78772e6cc 100644 --- a/static/app/views/settings/featureFlags/changeTracking/organizationFeatureFlagsProviderRow.tsx +++ b/static/app/views/settings/featureFlags/changeTracking/organizationFeatureFlagsProviderRow.tsx @@ -1,10 +1,10 @@ import {IconSubtract} from '@sentry/icons/subtract'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Text} from '@sentry/scraps/text'; import {Tooltip} from '@sentry/scraps/tooltip'; -import {Confirm} from 'sentry/components/confirm'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {TimeSince} from 'sentry/components/timeSince'; diff --git a/static/app/views/settings/organizationApiKeys/organizationApiKeysList.tsx b/static/app/views/settings/organizationApiKeys/organizationApiKeysList.tsx index a921355c9afb..c5a74c3d373f 100644 --- a/static/app/views/settings/organizationApiKeys/organizationApiKeysList.tsx +++ b/static/app/views/settings/organizationApiKeys/organizationApiKeysList.tsx @@ -3,10 +3,10 @@ import {IconDelete} from '@sentry/icons/delete'; import {AlertLink} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {ExternalLink, Link} from '@sentry/scraps/link'; import type {TableColumnConfig} from '@sentry/scraps/table'; -import {Confirm} from 'sentry/components/confirm'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {TextCopyInput} from 'sentry/components/textCopyInput'; import {t, tct} from 'sentry/locale'; diff --git a/static/app/views/settings/organizationAuthTokens/authTokenRow.tsx b/static/app/views/settings/organizationAuthTokens/authTokenRow.tsx index a6e697b88c75..496f7db717d7 100644 --- a/static/app/views/settings/organizationAuthTokens/authTokenRow.tsx +++ b/static/app/views/settings/organizationAuthTokens/authTokenRow.tsx @@ -1,11 +1,11 @@ import {IconDelete} from '@sentry/icons/delete'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Link} from '@sentry/scraps/link'; import {Text} from '@sentry/scraps/text'; import {Tooltip} from '@sentry/scraps/tooltip'; -import {Confirm} from 'sentry/components/confirm'; import {Placeholder} from 'sentry/components/placeholder'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {TimeSince} from 'sentry/components/timeSince'; diff --git a/static/app/views/settings/organizationDataForwarding/components/dataForwarderDeleteConfirm.tsx b/static/app/views/settings/organizationDataForwarding/components/dataForwarderDeleteConfirm.tsx index ef814521af57..46a0b331422a 100644 --- a/static/app/views/settings/organizationDataForwarding/components/dataForwarderDeleteConfirm.tsx +++ b/static/app/views/settings/organizationDataForwarding/components/dataForwarderDeleteConfirm.tsx @@ -1,5 +1,6 @@ +import {Confirm} from '@sentry/scraps/confirm'; + import {Access} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import {trackAnalytics} from 'sentry/utils/analytics'; import {useNavigate} from 'sentry/utils/useNavigate'; diff --git a/static/app/views/settings/organizationDeveloperSettings/sentryApplicationDetails.tsx b/static/app/views/settings/organizationDeveloperSettings/sentryApplicationDetails.tsx index 89d9f78883d2..23351d7681b3 100644 --- a/static/app/views/settings/organizationDeveloperSettings/sentryApplicationDetails.tsx +++ b/static/app/views/settings/organizationDeveloperSettings/sentryApplicationDetails.tsx @@ -8,6 +8,7 @@ import {z} from 'zod'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {defaultFormOptions, setFieldErrors, useScrapsForm} from '@sentry/scraps/form'; import {Flex, Stack} from '@sentry/scraps/layout'; import {ExternalLink, Link} from '@sentry/scraps/link'; @@ -23,7 +24,6 @@ import { sentryAppTokensApiOptions, } from 'sentry/actionCreators/sentryApps'; import {AvatarChooser} from 'sentry/components/avatarChooser'; -import {Confirm} from 'sentry/components/confirm'; import {ConfirmDelete} from 'sentry/components/confirmDelete'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; diff --git a/static/app/views/settings/organizationGeneralSettings/index.tsx b/static/app/views/settings/organizationGeneralSettings/index.tsx index 8edf4dfa572d..d969692d6b87 100644 --- a/static/app/views/settings/organizationGeneralSettings/index.tsx +++ b/static/app/views/settings/organizationGeneralSettings/index.tsx @@ -1,6 +1,7 @@ import {Fragment} from 'react'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {toast} from '@sentry/scraps/toast'; import { @@ -8,7 +9,6 @@ import { removeAndRedirectToRemainingOrganization, updateOrganization, } from 'sentry/actionCreators/organizations'; -import {Confirm} from 'sentry/components/confirm'; import {FieldGroup} from 'sentry/components/forms/fieldGroup'; import {List} from 'sentry/components/list'; import {ListItem} from 'sentry/components/list/listItem'; diff --git a/static/app/views/settings/organizationIntegrations/installedIntegration.tsx b/static/app/views/settings/organizationIntegrations/installedIntegration.tsx index 1b51c2585c8b..7f12176bfe90 100644 --- a/static/app/views/settings/organizationIntegrations/installedIntegration.tsx +++ b/static/app/views/settings/organizationIntegrations/installedIntegration.tsx @@ -7,11 +7,11 @@ import {IconWarning} from '@sentry/icons/warning'; import {Alert} from '@sentry/scraps/alert'; import {Tag} from '@sentry/scraps/badge'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {Tooltip} from '@sentry/scraps/tooltip'; import {Access} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {ObjectStatus} from 'sentry/types/core'; import type { diff --git a/static/app/views/settings/organizationIntegrations/integrationExternalMappings.tsx b/static/app/views/settings/organizationIntegrations/integrationExternalMappings.tsx index ab4f94c1c8f0..c42495a6618b 100644 --- a/static/app/views/settings/organizationIntegrations/integrationExternalMappings.tsx +++ b/static/app/views/settings/organizationIntegrations/integrationExternalMappings.tsx @@ -5,11 +5,11 @@ import {IconArrow} from '@sentry/icons/arrow'; import {IconDelete} from '@sentry/icons/delete'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {InfoTip} from '@sentry/scraps/info'; import {Pagination} from '@sentry/scraps/pagination'; import type {TableColumnConfig} from '@sentry/scraps/table'; -import {Confirm} from 'sentry/components/confirm'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; diff --git a/static/app/views/settings/organizationIntegrations/repositoryProjectPathConfigRow.tsx b/static/app/views/settings/organizationIntegrations/repositoryProjectPathConfigRow.tsx index 060de0a79b4e..52d133ff0a77 100644 --- a/static/app/views/settings/organizationIntegrations/repositoryProjectPathConfigRow.tsx +++ b/static/app/views/settings/organizationIntegrations/repositoryProjectPathConfigRow.tsx @@ -2,12 +2,12 @@ import {IconDelete} from '@sentry/icons/delete'; import {IconEdit} from '@sentry/icons/edit'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {Text} from '@sentry/scraps/text'; import {Tooltip} from '@sentry/scraps/tooltip'; import {Access} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {IdBadge} from 'sentry/components/idBadge'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {t} from 'sentry/locale'; diff --git a/static/app/views/settings/organizationIntegrations/sentryAppDetailedView.tsx b/static/app/views/settings/organizationIntegrations/sentryAppDetailedView.tsx index 4638dbf0c74f..71ebf074559b 100644 --- a/static/app/views/settings/organizationIntegrations/sentryAppDetailedView.tsx +++ b/static/app/views/settings/organizationIntegrations/sentryAppDetailedView.tsx @@ -6,6 +6,7 @@ import {useQuery, useQueryClient} from '@tanstack/react-query'; import {SentryAppAvatar} from '@sentry/scraps/avatar'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {useModal} from '@sentry/scraps/modal'; import {toast} from '@sentry/scraps/toast'; @@ -16,7 +17,6 @@ import { } from 'sentry/actionCreators/sentryAppInstallations'; import {sentryAppApiOptions} from 'sentry/actionCreators/sentryApps'; import {CircleIndicator} from 'sentry/components/circleIndicator'; -import {Confirm} from 'sentry/components/confirm'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {t, tct} from 'sentry/locale'; diff --git a/static/app/views/settings/organizationIntegrations/vercelIntegrationForm.tsx b/static/app/views/settings/organizationIntegrations/vercelIntegrationForm.tsx index bac697acdd5e..3007e5d19e54 100644 --- a/static/app/views/settings/organizationIntegrations/vercelIntegrationForm.tsx +++ b/static/app/views/settings/organizationIntegrations/vercelIntegrationForm.tsx @@ -11,6 +11,7 @@ import {z} from 'zod'; import {Alert} from '@sentry/scraps/alert'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {defaultFormOptions, useScrapsForm} from '@sentry/scraps/form'; import {useFormErrorMapper} from '@sentry/scraps/form/formErrorContext'; import {InfoTip} from '@sentry/scraps/info'; @@ -21,7 +22,6 @@ import type {TableColumnConfig} from '@sentry/scraps/table'; import {Heading, Text} from '@sentry/scraps/text'; import {toast} from '@sentry/scraps/toast'; -import {Confirm} from 'sentry/components/confirm'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {IdBadge} from 'sentry/components/idBadge'; import {LoadingError} from 'sentry/components/loadingError'; diff --git a/static/app/views/settings/organizationIntegrations/webhookConfigurations.tsx b/static/app/views/settings/organizationIntegrations/webhookConfigurations.tsx index c2fc4d57138e..3c72788b6cf9 100644 --- a/static/app/views/settings/organizationIntegrations/webhookConfigurations.tsx +++ b/static/app/views/settings/organizationIntegrations/webhookConfigurations.tsx @@ -4,12 +4,12 @@ import {IconSettings} from '@sentry/icons/settings'; import {useMutation, useQueryClient} from '@tanstack/react-query'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Container, Flex, Stack} from '@sentry/scraps/layout'; import {Switch} from '@sentry/scraps/switch'; import {toast} from '@sentry/scraps/toast'; import {hasEveryAccess} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import ProjectBadge from 'sentry/components/idBadge/projectBadge'; import {Panel} from 'sentry/components/panels/panel'; diff --git a/static/app/views/settings/organizationMembers/inviteBanner.tsx b/static/app/views/settings/organizationMembers/inviteBanner.tsx index 381b6ec23dea..dc431611004a 100644 --- a/static/app/views/settings/organizationMembers/inviteBanner.tsx +++ b/static/app/views/settings/organizationMembers/inviteBanner.tsx @@ -7,6 +7,7 @@ import {IconMail} from '@sentry/icons/mail'; import {parseAsString, useQueryState} from 'nuqs'; import {Button} from '@sentry/scraps/button'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import type {MenuItemProps} from '@sentry/scraps/dropdownMenu'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {InfoTip} from '@sentry/scraps/info'; @@ -19,7 +20,6 @@ import {openInviteMissingMembersModal} from 'sentry/actionCreators/modal'; import {promptsCheck, promptsUpdate} from 'sentry/actionCreators/prompts'; import {Card} from 'sentry/components/card'; import {Carousel} from 'sentry/components/carousel'; -import {openConfirmModal} from 'sentry/components/confirm'; import {FloatingFeedbackButton} from 'sentry/components/feedbackButton/floatingFeedbackButton'; import {t, tct} from 'sentry/locale'; import type {MissingMember, OrgRole} from 'sentry/types/organization'; diff --git a/static/app/views/settings/organizationMembers/inviteRequestRow.tsx b/static/app/views/settings/organizationMembers/inviteRequestRow.tsx index 0395c42c154f..a0ea3bb8aafb 100644 --- a/static/app/views/settings/organizationMembers/inviteRequestRow.tsx +++ b/static/app/views/settings/organizationMembers/inviteRequestRow.tsx @@ -4,11 +4,11 @@ import {IconClose} from '@sentry/icons/close'; import {Tag} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {InfoText} from '@sentry/scraps/info'; import {Container} from '@sentry/scraps/layout'; import {Text} from '@sentry/scraps/text'; -import {Confirm} from 'sentry/components/confirm'; import type {InviteModalRenderFunc} from 'sentry/components/modals/memberInviteModalCustomization'; import {InviteModalHook} from 'sentry/components/modals/memberInviteModalCustomization'; import {RoleSelectControl} from 'sentry/components/roleSelectControl'; diff --git a/static/app/views/settings/organizationMembers/organizationMemberDetail.tsx b/static/app/views/settings/organizationMembers/organizationMemberDetail.tsx index beccca487449..ef71d345af62 100644 --- a/static/app/views/settings/organizationMembers/organizationMemberDetail.tsx +++ b/static/app/views/settings/organizationMembers/organizationMemberDetail.tsx @@ -6,6 +6,7 @@ import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'; import isEqual from 'lodash/isEqual'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex, Grid, useResponsivePropValue} from '@sentry/scraps/layout'; import {ExternalLink} from '@sentry/scraps/link'; import {toast} from '@sentry/scraps/toast'; @@ -13,7 +14,6 @@ import {Tooltip} from '@sentry/scraps/tooltip'; import {removeAuthenticator} from 'sentry/actionCreators/account'; import {resendMemberInvite, updateMember} from 'sentry/actionCreators/members'; -import {Confirm} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {NotFound} from 'sentry/components/errors/notFound'; import {FieldGroup} from 'sentry/components/forms/fieldGroup'; diff --git a/static/app/views/settings/organizationMembers/organizationMemberRow.tsx b/static/app/views/settings/organizationMembers/organizationMemberRow.tsx index fa74b8c96132..6429b967a6c2 100644 --- a/static/app/views/settings/organizationMembers/organizationMemberRow.tsx +++ b/static/app/views/settings/organizationMembers/organizationMemberRow.tsx @@ -7,11 +7,11 @@ import {IconSubtract} from '@sentry/icons/subtract'; import {UserAvatar} from '@sentry/scraps/avatar'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex, Stack} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; import {Text} from '@sentry/scraps/text'; -import {Confirm} from 'sentry/components/confirm'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {OverrideOrDefault} from 'sentry/components/overrideOrDefault'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; diff --git a/static/app/views/settings/organizationRepositories/hooks/useDeleteIntegration.tsx b/static/app/views/settings/organizationRepositories/hooks/useDeleteIntegration.tsx index 0b20c0b734f6..33e4e7f2152e 100644 --- a/static/app/views/settings/organizationRepositories/hooks/useDeleteIntegration.tsx +++ b/static/app/views/settings/organizationRepositories/hooks/useDeleteIntegration.tsx @@ -1,8 +1,8 @@ import {useMutation} from '@tanstack/react-query'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {Integration} from 'sentry/types/integrations'; import {getApiUrl} from 'sentry/utils/api/getApiUrl'; diff --git a/static/app/views/settings/organizationTeams/teamNotifications.tsx b/static/app/views/settings/organizationTeams/teamNotifications.tsx index 7488182ee88f..17c0e013a953 100644 --- a/static/app/views/settings/organizationTeams/teamNotifications.tsx +++ b/static/app/views/settings/organizationTeams/teamNotifications.tsx @@ -4,13 +4,13 @@ import {IconDelete} from '@sentry/icons/delete'; import {useMutation, useQuery} from '@tanstack/react-query'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {ExternalLink} from '@sentry/scraps/link'; import {toast} from '@sentry/scraps/toast'; import {Tooltip} from '@sentry/scraps/tooltip'; import {hasEveryAccess} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {TextField} from 'sentry/components/forms/fields/textField'; import {LoadingError} from 'sentry/components/loadingError'; diff --git a/static/app/views/settings/organizationTeams/teamSettings/index.tsx b/static/app/views/settings/organizationTeams/teamSettings/index.tsx index c4b8434c3329..dab99d9284c1 100644 --- a/static/app/views/settings/organizationTeams/teamSettings/index.tsx +++ b/static/app/views/settings/organizationTeams/teamSettings/index.tsx @@ -4,6 +4,7 @@ import {z} from 'zod'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import { defaultFormOptions, FieldGroup, @@ -16,7 +17,6 @@ import {toast} from '@sentry/scraps/toast'; import {removeTeam, updateTeamSuccess} from 'sentry/actionCreators/teams'; import {hasEveryAccess} from 'sentry/components/acl/access'; import {AvatarChooser} from 'sentry/components/avatarChooser'; -import {Confirm} from 'sentry/components/confirm'; import {FieldGroup as LegacyFieldGroup} from 'sentry/components/forms/fieldGroup'; import {Panel} from 'sentry/components/panels/panel'; import {PanelHeader} from 'sentry/components/panels/panelHeader'; diff --git a/static/app/views/settings/project/preprod/statusCheckRuleForm.tsx b/static/app/views/settings/project/preprod/statusCheckRuleForm.tsx index ed2116e40786..ad439e4621c6 100644 --- a/static/app/views/settings/project/preprod/statusCheckRuleForm.tsx +++ b/static/app/views/settings/project/preprod/statusCheckRuleForm.tsx @@ -3,11 +3,11 @@ import styled from '@emotion/styled'; import {Button} from '@sentry/scraps/button'; import {CompactSelect} from '@sentry/scraps/compactSelect'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {Flex, Stack} from '@sentry/scraps/layout'; import {NumberInput} from '@sentry/scraps/numberInput'; import {Text} from '@sentry/scraps/text'; -import {openConfirmModal} from 'sentry/components/confirm'; import {PreprodSearchBar} from 'sentry/components/preprod/preprodSearchBar'; import {t} from 'sentry/locale'; import {useProjectSettingsOutlet} from 'sentry/views/settings/project/projectSettingsLayout'; diff --git a/static/app/views/settings/project/projectFilters/customFilters.tsx b/static/app/views/settings/project/projectFilters/customFilters.tsx index 507dff635401..bd8498691744 100644 --- a/static/app/views/settings/project/projectFilters/customFilters.tsx +++ b/static/app/views/settings/project/projectFilters/customFilters.tsx @@ -10,6 +10,7 @@ import startCase from 'lodash/startCase'; import {Tag} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {InfoText} from '@sentry/scraps/info'; import {InputGroup} from '@sentry/scraps/input'; import {Container, Flex, Stack} from '@sentry/scraps/layout'; @@ -23,7 +24,6 @@ import {Feature} from 'sentry/components/acl/feature'; import {FeatureDisabled} from 'sentry/components/acl/featureDisabled'; import {markLine as createMarkLine} from 'sentry/components/charts/components/markLine'; import {MiniBarChart} from 'sentry/components/charts/miniBarChart'; -import {Confirm} from 'sentry/components/confirm'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {Placeholder} from 'sentry/components/placeholder'; diff --git a/static/app/views/settings/project/projectFilters/groupTombstones.tsx b/static/app/views/settings/project/projectFilters/groupTombstones.tsx index 874e2dff1b84..b7a3ced7a672 100644 --- a/static/app/views/settings/project/projectFilters/groupTombstones.tsx +++ b/static/app/views/settings/project/projectFilters/groupTombstones.tsx @@ -4,13 +4,13 @@ import {useMutation, useQuery} from '@tanstack/react-query'; import {UserAvatar} from '@sentry/scraps/avatar'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Pagination} from '@sentry/scraps/pagination'; import type {TableColumnConfig} from '@sentry/scraps/table'; import {Heading} from '@sentry/scraps/text'; import {toast} from '@sentry/scraps/toast'; import {Access} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {Count} from 'sentry/components/count'; import {ErrorBoundary} from 'sentry/components/errorBoundary'; import {EventMessage} from 'sentry/components/events/eventMessage'; diff --git a/static/app/views/settings/project/projectKeys/details/keySettings.tsx b/static/app/views/settings/project/projectKeys/details/keySettings.tsx index df94b48dce75..45d60631dd1d 100644 --- a/static/app/views/settings/project/projectKeys/details/keySettings.tsx +++ b/static/app/views/settings/project/projectKeys/details/keySettings.tsx @@ -4,13 +4,13 @@ import {z} from 'zod'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {AutoSaveForm, DisplayField, FieldGroup} from '@sentry/scraps/form'; import {Flex, Stack} from '@sentry/scraps/layout'; import {Text} from '@sentry/scraps/text'; import {toast} from '@sentry/scraps/toast'; import {Access} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {Panel} from 'sentry/components/panels/panel'; import {PanelHeader} from 'sentry/components/panels/panelHeader'; diff --git a/static/app/views/settings/project/projectKeys/list/keyRow.tsx b/static/app/views/settings/project/projectKeys/list/keyRow.tsx index 8cbf3b535b5e..c663d49c57b2 100644 --- a/static/app/views/settings/project/projectKeys/list/keyRow.tsx +++ b/static/app/views/settings/project/projectKeys/list/keyRow.tsx @@ -3,12 +3,12 @@ import styled from '@emotion/styled'; import {IconDelete} from '@sentry/icons/delete'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {FieldGroup} from '@sentry/scraps/form'; import {Grid} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; import {ClippedBox} from 'sentry/components/clippedBox'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import type {RouteComponentProps} from 'sentry/types/legacyReactRouter'; import type {Project, ProjectKey} from 'sentry/types/project'; diff --git a/static/app/views/settings/project/projectReleaseTracking.tsx b/static/app/views/settings/project/projectReleaseTracking.tsx index e08524843e22..d87a8aeb1460 100644 --- a/static/app/views/settings/project/projectReleaseTracking.tsx +++ b/static/app/views/settings/project/projectReleaseTracking.tsx @@ -3,6 +3,7 @@ import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; import {CodeBlock} from '@sentry/scraps/codeBlock'; +import {Confirm} from '@sentry/scraps/confirm'; import {FieldGroup as FormFieldGroup} from '@sentry/scraps/form'; import {Container, Stack} from '@sentry/scraps/layout'; import {ExternalLink} from '@sentry/scraps/link'; @@ -10,7 +11,6 @@ import {Text} from '@sentry/scraps/text'; import {toast} from '@sentry/scraps/toast'; import {hasEveryAccess} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {FieldGroup} from 'sentry/components/forms/fieldGroup'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; diff --git a/static/app/views/settings/project/tempest/CredentialRow.tsx b/static/app/views/settings/project/tempest/CredentialRow.tsx index 4246d54de5eb..0464b5408cf2 100644 --- a/static/app/views/settings/project/tempest/CredentialRow.tsx +++ b/static/app/views/settings/project/tempest/CredentialRow.tsx @@ -2,9 +2,9 @@ import {IconSubtract} from '@sentry/icons/subtract'; import {Tag} from '@sentry/scraps/badge'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Tooltip} from '@sentry/scraps/tooltip'; -import {Confirm} from 'sentry/components/confirm'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {TimeSince} from 'sentry/components/timeSince'; diff --git a/static/app/views/settings/projectDebugFiles/debugFileRow.tsx b/static/app/views/settings/projectDebugFiles/debugFileRow.tsx index 6972760853e2..a03052448ed0 100644 --- a/static/app/views/settings/projectDebugFiles/debugFileRow.tsx +++ b/static/app/views/settings/projectDebugFiles/debugFileRow.tsx @@ -5,6 +5,7 @@ import {IconDownload} from '@sentry/icons/download'; import {Tag} from '@sentry/scraps/badge'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex, Grid, Stack} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; import {Text} from '@sentry/scraps/text'; @@ -12,7 +13,6 @@ import {Tooltip} from '@sentry/scraps/tooltip'; import {Access} from 'sentry/components/acl/access'; import {useRole} from 'sentry/components/acl/useRole'; -import {Confirm} from 'sentry/components/confirm'; import {FileSize} from 'sentry/components/fileSize'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {TimeSince} from 'sentry/components/timeSince'; diff --git a/static/app/views/settings/projectDebugFiles/sources/customRepositories/actions.tsx b/static/app/views/settings/projectDebugFiles/sources/customRepositories/actions.tsx index 7cfef0b19929..75aa81f5466a 100644 --- a/static/app/views/settings/projectDebugFiles/sources/customRepositories/actions.tsx +++ b/static/app/views/settings/projectDebugFiles/sources/customRepositories/actions.tsx @@ -1,10 +1,10 @@ import {Fragment} from 'react'; import {IconEllipsis} from '@sentry/icons/ellipsis'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {DropdownMenu} from '@sentry/scraps/dropdownMenu'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; -import {openConfirmModal} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import {TextBlock} from 'sentry/views/settings/components/text/textBlock'; diff --git a/static/app/views/settings/projectGeneralSettings/index.tsx b/static/app/views/settings/projectGeneralSettings/index.tsx index c2cdbe94b261..8d79019b89dd 100644 --- a/static/app/views/settings/projectGeneralSettings/index.tsx +++ b/static/app/views/settings/projectGeneralSettings/index.tsx @@ -6,6 +6,7 @@ import {z} from 'zod'; import {Alert} from '@sentry/scraps/alert'; import {Button} from '@sentry/scraps/button'; import {CodeBlock} from '@sentry/scraps/codeBlock'; +import {Confirm} from '@sentry/scraps/confirm'; import { AutoSaveForm, defaultFormOptions, @@ -26,7 +27,6 @@ import { transferProject, } from 'sentry/actionCreators/projects'; import {hasEveryAccess} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {FieldGroup as SettingsFieldGroup} from 'sentry/components/forms/fieldGroup'; import {TextField} from 'sentry/components/forms/fields/textField'; import {Form} from 'sentry/components/forms/form'; diff --git a/static/app/views/settings/projectPerformance/detectors/detectorThresholdsSection.tsx b/static/app/views/settings/projectPerformance/detectors/detectorThresholdsSection.tsx index e23d46b2e9d6..f2b4c14488f6 100644 --- a/static/app/views/settings/projectPerformance/detectors/detectorThresholdsSection.tsx +++ b/static/app/views/settings/projectPerformance/detectors/detectorThresholdsSection.tsx @@ -1,9 +1,9 @@ import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Disclosure} from '@sentry/scraps/disclosure'; import {AutoSaveForm, FieldGroup} from '@sentry/scraps/form'; import {Container, Flex, Stack} from '@sentry/scraps/layout'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; import {useParams} from 'sentry/utils/useParams'; diff --git a/static/app/views/settings/projectProguard/projectProguardRow.tsx b/static/app/views/settings/projectProguard/projectProguardRow.tsx index f8047327c8e0..59f7f2906a2d 100644 --- a/static/app/views/settings/projectProguard/projectProguardRow.tsx +++ b/static/app/views/settings/projectProguard/projectProguardRow.tsx @@ -4,13 +4,13 @@ import {IconDelete} from '@sentry/icons/delete'; import {IconDownload} from '@sentry/icons/download'; import {Button, LinkButton} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Grid} from '@sentry/scraps/layout'; import {Link} from '@sentry/scraps/link'; import {Tooltip} from '@sentry/scraps/tooltip'; import {Access} from 'sentry/components/acl/access'; import {useRole} from 'sentry/components/acl/useRole'; -import {Confirm} from 'sentry/components/confirm'; import {FileSize} from 'sentry/components/fileSize'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; import {TimeSince} from 'sentry/components/timeSince'; diff --git a/static/app/views/settings/projectSourceMaps/debugIdBundleDeleteButton.tsx b/static/app/views/settings/projectSourceMaps/debugIdBundleDeleteButton.tsx index 412d92953e5a..37f5849cbcd5 100644 --- a/static/app/views/settings/projectSourceMaps/debugIdBundleDeleteButton.tsx +++ b/static/app/views/settings/projectSourceMaps/debugIdBundleDeleteButton.tsx @@ -2,10 +2,10 @@ import {IconDelete} from '@sentry/icons/delete'; import type {ButtonProps} from '@sentry/scraps/button'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Tooltip} from '@sentry/scraps/tooltip'; import {Access} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {t} from 'sentry/locale'; interface DebugIdBundleDeleteButtonProps { diff --git a/static/app/views/settings/projectSourceMaps/sourceMapsList.tsx b/static/app/views/settings/projectSourceMaps/sourceMapsList.tsx index b908c0f39656..e905204f49b6 100644 --- a/static/app/views/settings/projectSourceMaps/sourceMapsList.tsx +++ b/static/app/views/settings/projectSourceMaps/sourceMapsList.tsx @@ -8,13 +8,13 @@ import {parseAsString, useQueryStates} from 'nuqs'; import {Button} from '@sentry/scraps/button'; import {CodeBlock} from '@sentry/scraps/codeBlock'; +import {Confirm} from '@sentry/scraps/confirm'; import {Grid, Container} from '@sentry/scraps/layout'; import {ExternalLink, Link} from '@sentry/scraps/link'; import {Pagination} from '@sentry/scraps/pagination'; import {Tooltip} from '@sentry/scraps/tooltip'; import {Access} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {DateTime} from 'sentry/components/dateTime'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import { diff --git a/static/app/views/settings/projectTags/index.tsx b/static/app/views/settings/projectTags/index.tsx index 83cc61d43633..2657ce875b2e 100644 --- a/static/app/views/settings/projectTags/index.tsx +++ b/static/app/views/settings/projectTags/index.tsx @@ -4,12 +4,12 @@ import {IconDelete} from '@sentry/icons/delete'; import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Flex} from '@sentry/scraps/layout'; import {ExternalLink} from '@sentry/scraps/link'; import {toast} from '@sentry/scraps/toast'; import {Access} from 'sentry/components/acl/access'; -import {Confirm} from 'sentry/components/confirm'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {TAGS_DOCS_LINK} from 'sentry/components/events/eventTags/util'; import {HighlightsSettingsForm} from 'sentry/components/events/highlights/highlightsSettingsForm'; diff --git a/static/gsAdmin/components/adminConfirmationModal.tsx b/static/gsAdmin/components/adminConfirmationModal.tsx index 4a84ab6d1628..3e7000bc98f9 100644 --- a/static/gsAdmin/components/adminConfirmationModal.tsx +++ b/static/gsAdmin/components/adminConfirmationModal.tsx @@ -1,12 +1,9 @@ import {Fragment, isValidElement, useCallback, useEffect, useRef, useState} from 'react'; +import type {ConfirmMessageRenderProps, OpenConfirmOptions} from '@sentry/scraps/confirm'; +import {Confirm, openConfirmModal} from '@sentry/scraps/confirm'; import {Container} from '@sentry/scraps/layout'; -import type { - ConfirmMessageRenderProps, - OpenConfirmOptions, -} from 'sentry/components/confirm'; -import {Confirm, openConfirmModal} from 'sentry/components/confirm'; import {InputField} from 'sentry/components/forms/fields/inputField'; import {TextareaField} from 'sentry/components/forms/fields/textareaField'; diff --git a/static/gsAdmin/views/userDetails.tsx b/static/gsAdmin/views/userDetails.tsx index 917611903ade..741496c7bcb2 100644 --- a/static/gsAdmin/views/userDetails.tsx +++ b/static/gsAdmin/views/userDetails.tsx @@ -1,9 +1,9 @@ import {useMutation, useQueryClient, useQuery} from '@tanstack/react-query'; +import {openConfirmModal} from '@sentry/scraps/confirm'; import {useModal} from '@sentry/scraps/modal'; import {toast} from '@sentry/scraps/toast'; -import {openConfirmModal} from 'sentry/components/confirm'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {ConfigStore} from 'sentry/stores/configStore'; diff --git a/static/gsApp/components/upsellProvider.tsx b/static/gsApp/components/upsellProvider.tsx index 8ec33ad2a7cc..1eb972605b54 100644 --- a/static/gsApp/components/upsellProvider.tsx +++ b/static/gsApp/components/upsellProvider.tsx @@ -1,9 +1,9 @@ import {useState} from 'react'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {toast} from '@sentry/scraps/toast'; -import {Confirm} from 'sentry/components/confirm'; import {t, tct} from 'sentry/locale'; import {normalizeUrl} from 'sentry/utils/url/normalizeUrl'; import {useApi} from 'sentry/utils/useApi'; diff --git a/static/gsApp/overrides/disabledMemberView.tsx b/static/gsApp/overrides/disabledMemberView.tsx index df8d5e01ae7d..96a8bd21c22d 100644 --- a/static/gsApp/overrides/disabledMemberView.tsx +++ b/static/gsApp/overrides/disabledMemberView.tsx @@ -3,11 +3,11 @@ import styled from '@emotion/styled'; import {useMutation, useQuery} from '@tanstack/react-query'; import {Button} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {Grid, Stack, type GridProps} from '@sentry/scraps/layout'; import {toast} from '@sentry/scraps/toast'; import {redirectToRemainingOrganization} from 'sentry/actionCreators/organizations'; -import {Confirm} from 'sentry/components/confirm'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {PageOverlay} from 'sentry/components/pageOverlay'; diff --git a/static/gsApp/views/spendAllocations/index.tsx b/static/gsApp/views/spendAllocations/index.tsx index 625d5d5269b4..5165daf5a2c5 100644 --- a/static/gsApp/views/spendAllocations/index.tsx +++ b/static/gsApp/views/spendAllocations/index.tsx @@ -5,13 +5,13 @@ import {IconBroadcast} from '@sentry/icons/broadcast'; import {Button, LinkButton} from '@sentry/scraps/button'; import {CompactSelect} from '@sentry/scraps/compactSelect'; +import {Confirm} from '@sentry/scraps/confirm'; import {Container, Flex, Grid, Stack, type GridProps} from '@sentry/scraps/layout'; import {ExternalLink} from '@sentry/scraps/link'; import {useModal} from '@sentry/scraps/modal'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; import {Pagination} from '@sentry/scraps/pagination'; -import {Confirm} from 'sentry/components/confirm'; import {EmptyMessage} from 'sentry/components/emptyMessage'; import {LoadingError} from 'sentry/components/loadingError'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; diff --git a/static/gsApp/views/spikeProtection/spikeProtectionProjects.tsx b/static/gsApp/views/spikeProtection/spikeProtectionProjects.tsx index b0175835cbe6..b7ace8f9506f 100644 --- a/static/gsApp/views/spikeProtection/spikeProtectionProjects.tsx +++ b/static/gsApp/views/spikeProtection/spikeProtectionProjects.tsx @@ -4,6 +4,7 @@ import * as Sentry from '@sentry/react'; import debounce from 'lodash/debounce'; import {Button, ButtonBar} from '@sentry/scraps/button'; +import {Confirm} from '@sentry/scraps/confirm'; import {InfoTip} from '@sentry/scraps/info'; import {Flex} from '@sentry/scraps/layout'; import {Pagination} from '@sentry/scraps/pagination'; @@ -11,7 +12,6 @@ import type {TableColumnConfig} from '@sentry/scraps/table'; import {Text} from '@sentry/scraps/text'; import {toast} from '@sentry/scraps/toast'; -import {Confirm} from 'sentry/components/confirm'; import {NotificationActionManager} from 'sentry/components/notificationActions/notificationActionManager'; import {SearchBar} from 'sentry/components/searchBar'; import {SimpleTable} from 'sentry/components/tables/simpleTable'; diff --git a/static/oxlint/eslintPluginScraps/src/rules/requireRenderPropSpread.ts b/static/oxlint/eslintPluginScraps/src/rules/requireRenderPropSpread.ts index 62211b26979a..d2bc484850bb 100644 --- a/static/oxlint/eslintPluginScraps/src/rules/requireRenderPropSpread.ts +++ b/static/oxlint/eslintPluginScraps/src/rules/requireRenderPropSpread.ts @@ -8,6 +8,7 @@ import { // These render props receive APIs or state, not props for the rendered JSX element. const SCRAPS_SOURCE_EXCEPTIONS = new Set([ + '@sentry/scraps/confirm', '@sentry/scraps/form', '@sentry/scraps/slideOverPanel', ]); diff --git a/static/packages/scraps/package.json b/static/packages/scraps/package.json index ae699911af9a..0e5c64a8cede 100644 --- a/static/packages/scraps/package.json +++ b/static/packages/scraps/package.json @@ -23,9 +23,17 @@ "types": "./dist/theme/index.d.ts", "import": "./dist/theme/index.js" }, - "./formPresentation": { - "types": "./dist/formPresentation/index.d.ts", - "import": "./dist/formPresentation/index.js" + "./form": { + "types": "./dist/form/index.d.ts", + "import": "./dist/form/index.js" + }, + "./form/formErrorContext": { + "types": "./dist/form/formErrorContext/index.d.ts", + "import": "./dist/form/formErrorContext/index.js" + }, + "./confirm": { + "types": "./dist/confirm/index.d.ts", + "import": "./dist/confirm/index.js" }, "./tokens": { "types": "./dist/tokens/index.d.ts", @@ -352,6 +360,7 @@ "@sentry/icons": "workspace:*", "@sentry/react": "11.7.0", "@tanstack/react-hotkeys": "0.18.0", + "@tanstack/react-pacer": "^0.22.1", "@tanstack/react-virtual": "3.14.6", "@types/react": "19.3.0", "@types/react-select": "4.0.18", @@ -376,6 +385,7 @@ "@swc/core": "1.16.13", "@swc/jest": "0.2.39", "@tanstack/react-form": "1.28.6", + "@tanstack/react-query": "5.101.4", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "7.0.1", "@testing-library/react": "16.3.2", @@ -390,12 +400,15 @@ "oxlint": "1.90.0", "oxlint-tsgolint": "7.0.2005", "stylelint": "16.26.1", - "typescript": "npm:@typescript/typescript6@6.0.2" + "typescript": "npm:@typescript/typescript6@6.0.2", + "zod": "4.6.7" }, "peerDependencies": { "@emotion/react": "^11.14.0", "@tanstack/react-form": "^1.28.6", + "@tanstack/react-query": "^5.101.4", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "zod": "^4.6.7" } } diff --git a/static/app/components/confirm.tsx b/static/packages/scraps/src/confirm/index.tsx similarity index 97% rename from static/app/components/confirm.tsx rename to static/packages/scraps/src/confirm/index.tsx index 7ed7018398a8..a1fad0594ac0 100644 --- a/static/app/components/confirm.tsx +++ b/static/packages/scraps/src/confirm/index.tsx @@ -1,3 +1,4 @@ +import type * as React from 'react'; import {cloneElement, Fragment, isValidElement, useRef, useState} from 'react'; import {Alert} from '@sentry/scraps/alert'; @@ -6,8 +7,7 @@ import {Button} from '@sentry/scraps/button'; import {Grid} from '@sentry/scraps/layout'; import type {ModalRenderProps} from '@sentry/scraps/modal'; import {openModal} from '@sentry/scraps/modal'; - -import {t} from 'sentry/locale'; +import {useTranslation} from '@sentry/scraps/translation/useTranslation'; export type ConfirmMessageRenderProps = { /** @@ -159,8 +159,8 @@ export const openConfirmModal = ({ bypass, onConfirming, priority = 'primary', - cancelText = t('Cancel'), - confirmText = t('Confirm'), + cancelText, + confirmText, disableConfirmButton = false, onClose, ...rest @@ -214,8 +214,7 @@ export function Confirm({ return null; } - // TODO(ts): Understand why the return type of `cloneElement` is strange - return cloneElement(children, {disabled, onClick: triggerModal}) as any; + return cloneElement(children, {disabled, onClick: triggerModal}); } type ModalProps = ModalRenderProps & @@ -253,9 +252,10 @@ function ConfirmModal({ onConfirm, renderMessage, message, - errorMessage = t('Something went wrong. Please try again.'), + errorMessage, closeModal, }: ModalProps) { + const {t} = useTranslation(); const confirmCallbackRef = useRef<() => void>(() => {}); const [shouldDisableConfirmButton, setShouldDisableConfirmButton] = useState(disableConfirmButton); @@ -319,7 +319,7 @@ function ConfirmModal({ {isError && ( - {errorMessage} + {errorMessage ?? t('Something went wrong. Please try again.')} )} diff --git a/static/app/components/core/form/FormSearch.tsx b/static/packages/scraps/src/form/FormSearch.tsx similarity index 100% rename from static/app/components/core/form/FormSearch.tsx rename to static/packages/scraps/src/form/FormSearch.tsx diff --git a/static/packages/scraps/src/formPresentation/autoSaveContext.tsx b/static/packages/scraps/src/form/autoSaveContext.tsx similarity index 100% rename from static/packages/scraps/src/formPresentation/autoSaveContext.tsx rename to static/packages/scraps/src/form/autoSaveContext.tsx diff --git a/static/app/components/core/form/autoSaveForm.tsx b/static/packages/scraps/src/form/autoSaveForm.tsx similarity index 98% rename from static/app/components/core/form/autoSaveForm.tsx rename to static/packages/scraps/src/form/autoSaveForm.tsx index 25fccc4e900d..1c65f3caa3ab 100644 --- a/static/app/components/core/form/autoSaveForm.tsx +++ b/static/packages/scraps/src/form/autoSaveForm.tsx @@ -1,20 +1,20 @@ +import type * as React from 'react'; import {useId, useRef} from 'react'; // eslint-disable-next-line no-restricted-imports import type {DeepKeys, DeepValue, FieldApi} from '@tanstack/react-form'; import {useMutation, type UseMutationOptions} from '@tanstack/react-query'; import {type z} from 'zod'; +import {openConfirmModal} from '@sentry/scraps/confirm'; +import {AutoSaveContextProvider} from '@sentry/scraps/form/autoSaveContext'; import {useFormErrorMapper} from '@sentry/scraps/form/formErrorContext'; import { setFieldErrors, useScrapsForm, type BoundFieldComponents, } from '@sentry/scraps/form/scrapsForm'; -import {AutoSaveContextProvider} from '@sentry/scraps/formPresentation'; import {useTranslation} from '@sentry/scraps/translation/useTranslation'; -import {openConfirmModal} from 'sentry/components/confirm'; - /** * Configuration for confirmation dialogs before applying changes. * Used for dangerous operations like security settings. diff --git a/static/packages/scraps/src/formPresentation/displayField.tsx b/static/packages/scraps/src/form/displayField.tsx similarity index 94% rename from static/packages/scraps/src/formPresentation/displayField.tsx rename to static/packages/scraps/src/form/displayField.tsx index 9633baaf792a..a5a4caa7759e 100644 --- a/static/packages/scraps/src/formPresentation/displayField.tsx +++ b/static/packages/scraps/src/form/displayField.tsx @@ -5,8 +5,8 @@ import {InfoText} from '@sentry/scraps/info'; import {Container, Stack, type ContainerProps} from '@sentry/scraps/layout'; import {Text} from '@sentry/scraps/text'; -import {BaseLayout, LayoutLabel} from './base'; -import {useStackedLayout} from './useStackedLayout'; +import {BaseLayout, LayoutLabel} from './layout/base'; +import {useStackedLayout} from './layout/useStackedLayout'; interface DisplayFieldProps { children: React.ReactNode; diff --git a/static/app/components/core/form/field/baseField.tsx b/static/packages/scraps/src/form/field/baseField.tsx similarity index 87% rename from static/app/components/core/form/field/baseField.tsx rename to static/packages/scraps/src/form/field/baseField.tsx index d766ab2a42df..03a0482df8e1 100644 --- a/static/app/components/core/form/field/baseField.tsx +++ b/static/packages/scraps/src/form/field/baseField.tsx @@ -1,18 +1,14 @@ +import type * as React from 'react'; import {useEffect, useRef, type Ref} from 'react'; import {mergeRefs} from '@react-aria/utils'; -import { - useAutoSaveContext, - useFieldContext, - Checkmark, - Spinner, - useFieldId, - useHintTextId, - FieldMeta, -} from '@sentry/scraps/formPresentation'; +import {useAutoSaveContext} from '@sentry/scraps/form/autoSaveContext'; +import {useFieldId, useHintTextId} from '@sentry/scraps/form/field/fieldIds'; +import {FieldMeta} from '@sentry/scraps/form/field/meta'; +import {useFieldContext} from '@sentry/scraps/form/formContext'; +import {Checkmark, Spinner} from '@sentry/scraps/form/icons'; import {Flex} from '@sentry/scraps/layout'; - -import {useLocation} from 'sentry/utils/useLocation'; +import {useOverlayContext} from '@sentry/scraps/overlayContext'; export type BaseFieldProps = { disabled?: boolean | string; @@ -46,11 +42,11 @@ export const useAutoSaveIndicator = () => { }; function useScrollToHash(fieldName: string, ref: React.RefObject) { - const location = useLocation(); + const locationHash = useOverlayContext().location?.hash ?? ''; useEffect(() => { let hash: string; try { - hash = decodeURIComponent(location.hash.slice(1)); + hash = decodeURIComponent(locationHash.slice(1)); } catch { return; } @@ -60,7 +56,7 @@ function useScrollToHash(fieldName: string, ref: React.RefObject) { diff --git a/static/app/components/core/form/field/checkboxField.tsx b/static/packages/scraps/src/form/field/checkboxField.tsx similarity index 93% rename from static/app/components/core/form/field/checkboxField.tsx rename to static/packages/scraps/src/form/field/checkboxField.tsx index 7e238b13a6e3..e73a1c4fd74c 100644 --- a/static/app/components/core/form/field/checkboxField.tsx +++ b/static/packages/scraps/src/form/field/checkboxField.tsx @@ -1,5 +1,7 @@ +import type * as React from 'react'; + import {Checkbox, type CheckboxProps} from '@sentry/scraps/checkbox'; -import {FieldMeta} from '@sentry/scraps/formPresentation'; +import {FieldMeta} from '@sentry/scraps/form/field/meta'; import {Container, Flex, Grid} from '@sentry/scraps/layout'; import {BaseField, type BaseFieldProps} from './baseField'; diff --git a/static/app/components/core/form/field/checkboxGroupField.tsx b/static/packages/scraps/src/form/field/checkboxGroupField.tsx similarity index 89% rename from static/app/components/core/form/field/checkboxGroupField.tsx rename to static/packages/scraps/src/form/field/checkboxGroupField.tsx index afa2a914e8d1..69d8dbcbb1a7 100644 --- a/static/app/components/core/form/field/checkboxGroupField.tsx +++ b/static/packages/scraps/src/form/field/checkboxGroupField.tsx @@ -1,13 +1,11 @@ +import type * as React from 'react'; import {useId} from 'react'; import {Checkbox} from '@sentry/scraps/checkbox'; -import { - useAutoSaveContext, - useFieldContext, - useLabelId, - GroupProvider, - useGroupItemContext, -} from '@sentry/scraps/formPresentation'; +import {useAutoSaveContext} from '@sentry/scraps/form/autoSaveContext'; +import {useLabelId} from '@sentry/scraps/form/field/fieldIds'; +import {GroupProvider, useGroupItemContext} from '@sentry/scraps/form/field/groupContext'; +import {useFieldContext} from '@sentry/scraps/form/formContext'; import {Flex, Stack} from '@sentry/scraps/layout'; import {Text} from '@sentry/scraps/text'; diff --git a/static/app/components/core/form/field/compactSelectField.tsx b/static/packages/scraps/src/form/field/compactSelectField.tsx similarity index 96% rename from static/app/components/core/form/field/compactSelectField.tsx rename to static/packages/scraps/src/form/field/compactSelectField.tsx index 93bdcb640751..68f514fac59f 100644 --- a/static/app/components/core/form/field/compactSelectField.tsx +++ b/static/packages/scraps/src/form/field/compactSelectField.tsx @@ -8,7 +8,8 @@ import { type SelectOption, type SingleSelectProps, } from '@sentry/scraps/compactSelect'; -import {useAutoSaveContext, useFieldContext} from '@sentry/scraps/formPresentation'; +import {useAutoSaveContext} from '@sentry/scraps/form/autoSaveContext'; +import {useFieldContext} from '@sentry/scraps/form/formContext'; import {Container} from '@sentry/scraps/layout'; import {OverlayTrigger} from '@sentry/scraps/overlayTrigger'; diff --git a/static/packages/scraps/src/formPresentation/fieldIds.tsx b/static/packages/scraps/src/form/field/fieldIds.tsx similarity index 82% rename from static/packages/scraps/src/formPresentation/fieldIds.tsx rename to static/packages/scraps/src/form/field/fieldIds.tsx index 9ddeb62d390a..c573f561f926 100644 --- a/static/packages/scraps/src/formPresentation/fieldIds.tsx +++ b/static/packages/scraps/src/form/field/fieldIds.tsx @@ -1,4 +1,4 @@ -import {useFieldContext} from './formContext'; +import {useFieldContext} from '@sentry/scraps/form/formContext'; export const useFieldId = () => { const field = useFieldContext(); diff --git a/static/packages/scraps/src/formPresentation/groupContext.tsx b/static/packages/scraps/src/form/field/groupContext.tsx similarity index 100% rename from static/packages/scraps/src/formPresentation/groupContext.tsx rename to static/packages/scraps/src/form/field/groupContext.tsx diff --git a/static/app/components/core/form/field/inputField.tsx b/static/packages/scraps/src/form/field/inputField.tsx similarity index 97% rename from static/app/components/core/form/field/inputField.tsx rename to static/packages/scraps/src/form/field/inputField.tsx index 940d7f5b90e7..9d04e22abcf2 100644 --- a/static/app/components/core/form/field/inputField.tsx +++ b/static/packages/scraps/src/form/field/inputField.tsx @@ -1,3 +1,5 @@ +import type * as React from 'react'; + import {type InputProps} from '@sentry/scraps/input'; import {InputGroup} from '@sentry/scraps/input'; diff --git a/static/packages/scraps/src/formPresentation/meta.tsx b/static/packages/scraps/src/form/field/meta.tsx similarity index 95% rename from static/packages/scraps/src/formPresentation/meta.tsx rename to static/packages/scraps/src/form/field/meta.tsx index 143329a81c7f..181c9970c77d 100644 --- a/static/packages/scraps/src/formPresentation/meta.tsx +++ b/static/packages/scraps/src/form/field/meta.tsx @@ -1,15 +1,15 @@ import type * as React from 'react'; import {VisuallyHidden} from '@react-aria/visually-hidden'; +import {useFieldContext} from '@sentry/scraps/form/formContext'; +import {RequiredIndicator, Warning} from '@sentry/scraps/form/icons'; import {DisabledTip, InfoText} from '@sentry/scraps/info'; import {Container, Flex} from '@sentry/scraps/layout'; import {Text} from '@sentry/scraps/text'; import {Tooltip} from '@sentry/scraps/tooltip'; import {useFieldId, useHintTextId, useLabelId} from './fieldIds'; -import {useFieldContext} from './formContext'; import {useGroupContext} from './groupContext'; -import {RequiredIndicator, Warning} from './icons'; function HintText(props: {children: React.ReactNode}) { const id = useHintTextId(); diff --git a/static/app/components/core/form/field/numberField.tsx b/static/packages/scraps/src/form/field/numberField.tsx similarity index 100% rename from static/app/components/core/form/field/numberField.tsx rename to static/packages/scraps/src/form/field/numberField.tsx diff --git a/static/app/components/core/form/field/passwordField.tsx b/static/packages/scraps/src/form/field/passwordField.tsx similarity index 100% rename from static/app/components/core/form/field/passwordField.tsx rename to static/packages/scraps/src/form/field/passwordField.tsx diff --git a/static/app/components/core/form/field/radioField.tsx b/static/packages/scraps/src/form/field/radioField.tsx similarity index 88% rename from static/app/components/core/form/field/radioField.tsx rename to static/packages/scraps/src/form/field/radioField.tsx index bf8d742e302f..fd05a5182285 100644 --- a/static/app/components/core/form/field/radioField.tsx +++ b/static/packages/scraps/src/form/field/radioField.tsx @@ -1,14 +1,15 @@ +import type * as React from 'react'; import {useId} from 'react'; +import {useAutoSaveContext} from '@sentry/scraps/form/autoSaveContext'; +import {useLabelId} from '@sentry/scraps/form/field/fieldIds'; import { - useAutoSaveContext, - useFieldContext, - useLabelId, GroupProvider, useGroupItemContext, type GroupContextValue, - FieldMeta, -} from '@sentry/scraps/formPresentation'; +} from '@sentry/scraps/form/field/groupContext'; +import {FieldMeta} from '@sentry/scraps/form/field/meta'; +import {useFieldContext} from '@sentry/scraps/form/formContext'; import {Flex, Stack} from '@sentry/scraps/layout'; import {Radio} from '@sentry/scraps/radio'; import {Text} from '@sentry/scraps/text'; diff --git a/static/app/components/core/form/field/rangeField.tsx b/static/packages/scraps/src/form/field/rangeField.tsx similarity index 89% rename from static/app/components/core/form/field/rangeField.tsx rename to static/packages/scraps/src/form/field/rangeField.tsx index 1ddcef570c1c..b258a4cef22d 100644 --- a/static/app/components/core/form/field/rangeField.tsx +++ b/static/packages/scraps/src/form/field/rangeField.tsx @@ -1,7 +1,8 @@ import {Fragment} from 'react'; import type {DistributedOmit} from 'type-fest'; -import {useAutoSaveContext, useLabelId} from '@sentry/scraps/formPresentation'; +import {useAutoSaveContext} from '@sentry/scraps/form/autoSaveContext'; +import {useLabelId} from '@sentry/scraps/form/field/fieldIds'; import {Flex} from '@sentry/scraps/layout'; import {Slider, type SliderProps} from '@sentry/scraps/slider'; diff --git a/static/app/components/core/form/field/selectAsyncField.tsx b/static/packages/scraps/src/form/field/selectAsyncField.tsx similarity index 100% rename from static/app/components/core/form/field/selectAsyncField.tsx rename to static/packages/scraps/src/form/field/selectAsyncField.tsx diff --git a/static/app/components/core/form/field/selectField.tsx b/static/packages/scraps/src/form/field/selectField.tsx similarity index 97% rename from static/app/components/core/form/field/selectField.tsx rename to static/packages/scraps/src/form/field/selectField.tsx index d7d0d3495d8c..e9fe5e3a6acf 100644 --- a/static/app/components/core/form/field/selectField.tsx +++ b/static/packages/scraps/src/form/field/selectField.tsx @@ -1,6 +1,7 @@ +import type * as React from 'react'; import {useRef} from 'react'; -import {useAutoSaveContext} from '@sentry/scraps/formPresentation'; +import {useAutoSaveContext} from '@sentry/scraps/form/autoSaveContext'; import {Container, Flex} from '@sentry/scraps/layout'; import {Select} from '@sentry/scraps/select'; import type { diff --git a/static/app/components/core/form/field/switchField.tsx b/static/packages/scraps/src/form/field/switchField.tsx similarity index 94% rename from static/app/components/core/form/field/switchField.tsx rename to static/packages/scraps/src/form/field/switchField.tsx index c7a2d5b741e5..bdb19cab01b0 100644 --- a/static/app/components/core/form/field/switchField.tsx +++ b/static/packages/scraps/src/form/field/switchField.tsx @@ -1,4 +1,4 @@ -import {useAutoSaveContext} from '@sentry/scraps/formPresentation'; +import {useAutoSaveContext} from '@sentry/scraps/form/autoSaveContext'; import {Flex} from '@sentry/scraps/layout'; import {Switch, type SwitchProps} from '@sentry/scraps/switch'; diff --git a/static/app/components/core/form/field/textAreaField.tsx b/static/packages/scraps/src/form/field/textAreaField.tsx similarity index 100% rename from static/app/components/core/form/field/textAreaField.tsx rename to static/packages/scraps/src/form/field/textAreaField.tsx diff --git a/static/packages/scraps/src/formPresentation/formContext.ts b/static/packages/scraps/src/form/formContext.ts similarity index 100% rename from static/packages/scraps/src/formPresentation/formContext.ts rename to static/packages/scraps/src/form/formContext.ts diff --git a/static/app/components/core/form/formErrorContext/index.tsx b/static/packages/scraps/src/form/formErrorContext/index.tsx similarity index 100% rename from static/app/components/core/form/formErrorContext/index.tsx rename to static/packages/scraps/src/form/formErrorContext/index.tsx diff --git a/static/packages/scraps/src/formPresentation/formPresentation.spec.tsx b/static/packages/scraps/src/form/formPresentation.spec.tsx similarity index 91% rename from static/packages/scraps/src/formPresentation/formPresentation.spec.tsx rename to static/packages/scraps/src/form/formPresentation.spec.tsx index 140da41eafcb..7b036b1fcece 100644 --- a/static/packages/scraps/src/formPresentation/formPresentation.spec.tsx +++ b/static/packages/scraps/src/form/formPresentation.spec.tsx @@ -8,16 +8,16 @@ import userEvent from '@testing-library/user-event'; import { AutoSaveContextProvider, useAutoSaveContext, - DisplayField, - useFieldId, - useHintTextId, - useLabelId, +} from '@sentry/scraps/form/autoSaveContext'; +import {DisplayField} from '@sentry/scraps/form/displayField'; +import {useFieldId, useHintTextId, useLabelId} from '@sentry/scraps/form/field/fieldIds'; +import { GroupProvider, type GroupContextValue, - FieldMeta, - fieldContext as FieldContext, - FieldLayout, -} from '@sentry/scraps/formPresentation'; +} from '@sentry/scraps/form/field/groupContext'; +import {FieldMeta} from '@sentry/scraps/form/field/meta'; +import {fieldContext as FieldContext} from '@sentry/scraps/form/formContext'; +import {FieldLayout} from '@sentry/scraps/form/layout'; import {lightTheme} from '@sentry/scraps/theme'; function ThemeWrapper({children}: {children: React.ReactNode}) { diff --git a/static/packages/scraps/src/formPresentation/icons.tsx b/static/packages/scraps/src/form/icons.tsx similarity index 100% rename from static/packages/scraps/src/formPresentation/icons.tsx rename to static/packages/scraps/src/form/icons.tsx diff --git a/static/app/components/core/form/index.ts b/static/packages/scraps/src/form/index.ts similarity index 74% rename from static/app/components/core/form/index.ts rename to static/packages/scraps/src/form/index.ts index f888b1750529..add7743a4809 100644 --- a/static/app/components/core/form/index.ts +++ b/static/packages/scraps/src/form/index.ts @@ -9,9 +9,9 @@ export { withForm, } from './scrapsForm'; export {AutoSaveForm} from './autoSaveForm'; -export {AutoSaveContextProvider} from '@sentry/scraps/formPresentation'; +export {AutoSaveContextProvider} from './autoSaveContext'; export {FieldGroup} from './layout/fieldGroup'; -export {DisplayField} from '@sentry/scraps/formPresentation'; +export {DisplayField} from './displayField'; export {FormSearch} from './FormSearch'; // eslint-disable-next-line no-restricted-imports export {useStore} from '@tanstack/react-form'; diff --git a/static/packages/scraps/src/formPresentation/base.tsx b/static/packages/scraps/src/form/layout/base.tsx similarity index 100% rename from static/packages/scraps/src/formPresentation/base.tsx rename to static/packages/scraps/src/form/layout/base.tsx diff --git a/static/packages/scraps/src/form/layout/fieldGroup.tsx b/static/packages/scraps/src/form/layout/fieldGroup.tsx new file mode 100644 index 000000000000..c94edc4acf0b --- /dev/null +++ b/static/packages/scraps/src/form/layout/fieldGroup.tsx @@ -0,0 +1,68 @@ +import type * as React from 'react'; +import styled from '@emotion/styled'; + +import {Container} from '@sentry/scraps/layout'; +import {PanelProvider} from '@sentry/scraps/panelProvider'; + +export function FieldGroup({ + title, + children, + hasButtons, +}: { + children: React.ReactNode; + hasButtons?: boolean; + title?: React.ReactNode; +}) { + return ( + + + {title ? {title} : null} + {children} + + + ); +} + +// Matches the app's `Panel` and `PanelHeader`, which Scraps cannot import. +const Panel = styled('div')` + background: ${p => p.theme.tokens.background.primary}; + border-radius: ${p => p.theme.radius.md}; + border: 1px solid ${p => p.theme.tokens.border.primary}; + margin-bottom: ${p => p.theme.space.xl}; + position: relative; +`; + +const PanelHeader = styled('div')<{hasButtons?: boolean}>` + display: flex; + align-items: center; + justify-content: space-between; + + /* Do not apply text styles to overlay elements such as dropdowns */ + > *:not(:has([data-overlay], button, a[role='button']), button, a[role='button']), + &:not(:has(> *)) { + color: ${p => p.theme.tokens.content.primary}; + font-size: ${p => p.theme.font.size.sm}; + font-weight: ${p => p.theme.font.weight.sans.medium}; + text-transform: uppercase; + line-height: 1; + } + + border-bottom: 1px solid ${p => p.theme.tokens.border.primary}; + border-radius: calc(${p => p.theme.radius.md} + 1px) + calc(${p => p.theme.radius.md} + 1px) 0 0; + background: ${p => p.theme.tokens.background.secondary}; + position: relative; + padding: ${p => (p.hasButtons ? p.theme.space.md : p.theme.space.xl)} + ${p => p.theme.space.xl}; +`; + +const PanelBody = styled(Container)` + > * { + padding: ${p => p.theme.space.xl}; + border-bottom: 1px solid ${p => p.theme.tokens.border.primary}; + + &:last-child { + border-bottom: none; + } + } +`; diff --git a/static/packages/scraps/src/formPresentation/fieldLayout.tsx b/static/packages/scraps/src/form/layout/index.tsx similarity index 94% rename from static/packages/scraps/src/formPresentation/fieldLayout.tsx rename to static/packages/scraps/src/form/layout/index.tsx index b235e475a5d0..b438127b78bd 100644 --- a/static/packages/scraps/src/formPresentation/fieldLayout.tsx +++ b/static/packages/scraps/src/form/layout/index.tsx @@ -1,10 +1,10 @@ import type * as React from 'react'; +import {FieldMeta} from '@sentry/scraps/form/field/meta'; +import {useFieldContext} from '@sentry/scraps/form/formContext'; import {Container, Flex, type FlexProps} from '@sentry/scraps/layout'; import {BaseLayout, LayoutLabel} from './base'; -import {useFieldContext} from './formContext'; -import {FieldMeta} from './meta'; import {useStackedLayout} from './useStackedLayout'; interface LayoutProps { diff --git a/static/packages/scraps/src/formPresentation/useStackedLayout.ts b/static/packages/scraps/src/form/layout/useStackedLayout.ts similarity index 100% rename from static/packages/scraps/src/formPresentation/useStackedLayout.ts rename to static/packages/scraps/src/form/layout/useStackedLayout.ts diff --git a/static/app/components/core/form/scrapsForm.tsx b/static/packages/scraps/src/form/scrapsForm.tsx similarity index 96% rename from static/app/components/core/form/scrapsForm.tsx rename to static/packages/scraps/src/form/scrapsForm.tsx index 0fec7671e601..8538490236e0 100644 --- a/static/app/components/core/form/scrapsForm.tsx +++ b/static/packages/scraps/src/form/scrapsForm.tsx @@ -1,3 +1,4 @@ +import type * as React from 'react'; // eslint-disable-next-line no-restricted-imports import { createFormHook, @@ -10,16 +11,16 @@ import { import {Button, type ButtonProps} from '@sentry/scraps/button'; import {BaseField} from '@sentry/scraps/form/field/baseField'; import {CheckboxField} from '@sentry/scraps/form/field/checkboxField'; -import {FieldGroup} from '@sentry/scraps/form/layout/fieldGroup'; +import {FieldMeta} from '@sentry/scraps/form/field/meta'; import { - FieldMeta, - FieldLayout, FormElementContext, fieldContext, formContext, useFormContext, useIsInsideFormElement, -} from '@sentry/scraps/formPresentation'; +} from '@sentry/scraps/form/formContext'; +import {FieldLayout} from '@sentry/scraps/form/layout'; +import {FieldGroup} from '@sentry/scraps/form/layout/fieldGroup'; import {CompactSelectField} from './field/compactSelectField'; import {InputField} from './field/inputField'; diff --git a/static/packages/scraps/src/formPresentation/index.ts b/static/packages/scraps/src/formPresentation/index.ts deleted file mode 100644 index 080940184582..000000000000 --- a/static/packages/scraps/src/formPresentation/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -export {AutoSaveContextProvider, useAutoSaveContext} from './autoSaveContext'; -export {DisplayField} from './displayField'; -export {useFieldId, useHintTextId, useLabelId} from './fieldIds'; -export {GroupProvider, useGroupItemContext, type GroupContextValue} from './groupContext'; -export {FieldMeta} from './meta'; -export { - fieldContext, - formContext, - useFormContext, - useFieldContext, - FormElementContext, - useIsInsideFormElement, -} from './formContext'; -export {Checkmark, Spinner} from './icons'; -export {FieldLayout} from './fieldLayout';