diff --git a/packages/grafana-ui/src/components/Collapse/CollapsableSection.tsx b/packages/grafana-ui/src/components/Collapse/CollapsableSection.tsx index 6d60737b511..8c166852039 100644 --- a/packages/grafana-ui/src/components/Collapse/CollapsableSection.tsx +++ b/packages/grafana-ui/src/components/Collapse/CollapsableSection.tsx @@ -4,9 +4,10 @@ import React, { ReactNode, useRef, useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; -import { Icon, Spinner } from '..'; import { useStyles2 } from '../../themes'; import { getFocusStyles } from '../../themes/mixins'; +import { Icon } from '../Icon/Icon'; +import { Spinner } from '../Spinner/Spinner'; export interface Props { label: ReactNode; diff --git a/packages/grafana-ui/src/components/ConfirmModal/ConfirmModal.tsx b/packages/grafana-ui/src/components/ConfirmModal/ConfirmModal.tsx index 664b8da8ee6..52cccc03221 100644 --- a/packages/grafana-ui/src/components/ConfirmModal/ConfirmModal.tsx +++ b/packages/grafana-ui/src/components/ConfirmModal/ConfirmModal.tsx @@ -4,10 +4,11 @@ import React, { useEffect, useRef, useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { HorizontalGroup, Input } from '..'; import { useStyles2 } from '../../themes'; import { IconName } from '../../types/icon'; import { Button, ButtonVariant } from '../Button'; +import { Input } from '../Input/Input'; +import { HorizontalGroup } from '../Layout/Layout'; import { Modal } from '../Modal/Modal'; export interface ConfirmModalProps { diff --git a/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx b/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx index bee5cc80bbe..55186d2352f 100644 --- a/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx +++ b/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx @@ -9,13 +9,12 @@ import { Editor } from 'slate-react'; import { DataLinkBuiltInVars, GrafanaTheme2, VariableOrigin, VariableSuggestion } from '@grafana/data'; -import { makeValue } from '../../index'; import { SlatePrism } from '../../slate-plugins'; import { useStyles2 } from '../../themes'; -import { SCHEMA } from '../../utils/slate'; +import { SCHEMA, makeValue } from '../../utils/slate'; import CustomScrollbar from '../CustomScrollbar/CustomScrollbar'; import { getInputStyles } from '../Input/Input'; -import { Portal } from '../index'; +import { Portal } from '../Portal/Portal'; import { DataLinkSuggestions } from './DataLinkSuggestions'; import { SelectionReference } from './SelectionReference'; diff --git a/packages/grafana-ui/src/components/DataLinks/DataLinkSuggestions.tsx b/packages/grafana-ui/src/components/DataLinks/DataLinkSuggestions.tsx index 37cf32e690f..2e6c1fc1855 100644 --- a/packages/grafana-ui/src/components/DataLinks/DataLinkSuggestions.tsx +++ b/packages/grafana-ui/src/components/DataLinks/DataLinkSuggestions.tsx @@ -6,7 +6,7 @@ import useClickAway from 'react-use/lib/useClickAway'; import { VariableSuggestion, GrafanaTheme2 } from '@grafana/data'; import { useStyles2 } from '../../themes'; -import { List } from '../index'; +import { List } from '../List/List'; interface DataLinkSuggestionsProps { activeRef?: React.RefObject; diff --git a/packages/grafana-ui/src/components/DataSourceSettings/BasicAuthSettings.tsx b/packages/grafana-ui/src/components/DataSourceSettings/BasicAuthSettings.tsx index e03e2d9b5d1..7086c9b7148 100644 --- a/packages/grafana-ui/src/components/DataSourceSettings/BasicAuthSettings.tsx +++ b/packages/grafana-ui/src/components/DataSourceSettings/BasicAuthSettings.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { InlineField } from '../..'; +import { InlineField } from '../../components/Forms/InlineField'; import { FormField } from '../FormField/FormField'; import { SecretFormField } from '../SecretFormField/SecretFormField'; diff --git a/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx b/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx index ea1562627c5..c6d18567228 100644 --- a/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx +++ b/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx @@ -9,9 +9,14 @@ import { useMedia } from 'react-use'; import { dateTimeFormat, DateTime, dateTime, GrafanaTheme2, isDateTime } from '@grafana/data'; -import { Button, HorizontalGroup, Icon, InlineField, Input, Portal } from '../..'; import { useStyles2, useTheme2 } from '../../../themes'; +import { Button } from '../../Button/Button'; +import { InlineField } from '../../Forms/InlineField'; +import { Icon } from '../../Icon/Icon'; +import { Input } from '../../Input/Input'; +import { HorizontalGroup } from '../../Layout/Layout'; import { getModalStyles } from '../../Modal/getModalStyles'; +import { Portal } from '../../Portal/Portal'; import { TimeOfDayPicker, POPUP_CLASS_NAME } from '../TimeOfDayPicker'; import { getBodyStyles } from '../TimeRangePicker/CalendarBody'; import { isValid } from '../utils'; diff --git a/packages/grafana-ui/src/components/DateTimePickers/TimeOfDayPicker.tsx b/packages/grafana-ui/src/components/DateTimePickers/TimeOfDayPicker.tsx index ed5ec3cfdec..7e0a4d848a8 100644 --- a/packages/grafana-ui/src/components/DateTimePickers/TimeOfDayPicker.tsx +++ b/packages/grafana-ui/src/components/DateTimePickers/TimeOfDayPicker.tsx @@ -4,10 +4,11 @@ import React from 'react'; import { dateTime, DateTime, dateTimeAsMoment, GrafanaTheme2, isDateTimeInput } from '@grafana/data'; -import { Icon, useStyles2 } from '../../index'; +import { useStyles2 } from '../../themes/ThemeContext'; import { getFocusStyles } from '../../themes/mixins'; import { inputSizes } from '../Forms/commonStyles'; import { FormInputSize } from '../Forms/types'; +import { Icon } from '../Icon/Icon'; export interface Props { onChange: (value: DateTime) => void; diff --git a/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimePickerContent.tsx b/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimePickerContent.tsx index 40c321f158c..48d28f1e2fe 100644 --- a/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimePickerContent.tsx +++ b/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimePickerContent.tsx @@ -4,11 +4,11 @@ import React, { memo, useMemo, useState } from 'react'; import { GrafanaTheme2, isDateTime, rangeUtil, RawTimeRange, TimeOption, TimeRange, TimeZone } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { FilterInput } from '../..'; import { stylesFactory, useTheme2 } from '../../../themes'; import { getFocusStyles } from '../../../themes/mixins'; import { t, Trans } from '../../../utils/i18n'; import { CustomScrollbar } from '../../CustomScrollbar/CustomScrollbar'; +import { FilterInput } from '../../FilterInput/FilterInput'; import { Icon } from '../../Icon/Icon'; import { TimePickerFooter } from './TimePickerFooter'; diff --git a/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimePickerFooter.tsx b/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimePickerFooter.tsx index 80b82fada32..3286314f7ef 100644 --- a/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimePickerFooter.tsx +++ b/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimePickerFooter.tsx @@ -5,10 +5,12 @@ import React, { useCallback, useState } from 'react'; import { getTimeZoneInfo, GrafanaTheme2, TimeZone } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { Field, RadioButtonGroup, Select } from '../..'; import { stylesFactory, useTheme2 } from '../../../themes'; import { t, Trans } from '../../../utils/i18n'; import { Button } from '../../Button'; +import { Field } from '../../Forms/Field'; +import { RadioButtonGroup } from '../../Forms/RadioButtonGroup/RadioButtonGroup'; +import { Select } from '../../Select/Select'; import { TimeZonePicker } from '../TimeZonePicker'; import { TimeZoneDescription } from '../TimeZonePicker/TimeZoneDescription'; import { TimeZoneOffset } from '../TimeZonePicker/TimeZoneOffset'; diff --git a/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimeRangeContent.tsx b/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimeRangeContent.tsx index ddcca4161c3..a91d10282ae 100644 --- a/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimeRangeContent.tsx +++ b/packages/grafana-ui/src/components/DateTimePickers/TimeRangePicker/TimeRangeContent.tsx @@ -14,12 +14,13 @@ import { } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { Icon, Tooltip } from '../..'; -import { useStyles2 } from '../../..'; +import { useStyles2 } from '../../../themes/ThemeContext'; import { t, Trans } from '../../../utils/i18n'; import { Button } from '../../Button'; import { Field } from '../../Forms/Field'; +import { Icon } from '../../Icon/Icon'; import { Input } from '../../Input/Input'; +import { Tooltip } from '../../Tooltip/Tooltip'; import { isValid } from '../utils'; import TimePickerCalendar from './TimePickerCalendar'; diff --git a/packages/grafana-ui/src/components/FileUpload/FileUpload.tsx b/packages/grafana-ui/src/components/FileUpload/FileUpload.tsx index 514a8a233fb..c4d7baf95a5 100644 --- a/packages/grafana-ui/src/components/FileUpload/FileUpload.tsx +++ b/packages/grafana-ui/src/components/FileUpload/FileUpload.tsx @@ -10,7 +10,7 @@ import { getFocusStyles } from '../../themes/mixins'; import { ComponentSize } from '../../types/size'; import { trimFileName } from '../../utils/file'; import { getButtonStyles } from '../Button'; -import { Icon } from '../index'; +import { Icon } from '../Icon/Icon'; export interface Props { /** Callback function to handle uploaded file */ diff --git a/packages/grafana-ui/src/components/Forms/Legacy/Switch/Switch.tsx b/packages/grafana-ui/src/components/Forms/Legacy/Switch/Switch.tsx index c54a0ef44c0..043a6b08891 100644 --- a/packages/grafana-ui/src/components/Forms/Legacy/Switch/Switch.tsx +++ b/packages/grafana-ui/src/components/Forms/Legacy/Switch/Switch.tsx @@ -2,7 +2,7 @@ import { Placement } from '@popperjs/core'; import { uniqueId } from 'lodash'; import React, { PureComponent } from 'react'; -import { Icon } from '../../..'; +import { Icon } from '../../../Icon/Icon'; import { Tooltip } from '../../../Tooltip/Tooltip'; export interface Props { diff --git a/packages/grafana-ui/src/components/Menu/MenuItem.tsx b/packages/grafana-ui/src/components/Menu/MenuItem.tsx index d3d85181596..0b8033b4f5c 100644 --- a/packages/grafana-ui/src/components/Menu/MenuItem.tsx +++ b/packages/grafana-ui/src/components/Menu/MenuItem.tsx @@ -5,7 +5,7 @@ import { GrafanaTheme2, LinkTarget } from '@grafana/data'; import { useStyles2 } from '../../themes'; import { getFocusStyles } from '../../themes/mixins'; -import { IconName } from '../../types'; +import { IconName } from '../../types/icon'; import { Icon } from '../Icon/Icon'; import { SubMenu } from './SubMenu'; diff --git a/packages/grafana-ui/src/components/Monaco/ReactMonacoEditorLazy.tsx b/packages/grafana-ui/src/components/Monaco/ReactMonacoEditorLazy.tsx index 5075f66242d..339d718505e 100644 --- a/packages/grafana-ui/src/components/Monaco/ReactMonacoEditorLazy.tsx +++ b/packages/grafana-ui/src/components/Monaco/ReactMonacoEditorLazy.tsx @@ -1,7 +1,8 @@ import React from 'react'; -import { ErrorWithStack, LoadingPlaceholder } from '..'; import { useAsyncDependency } from '../../utils/useAsyncDependency'; +import { ErrorWithStack } from '../ErrorBoundary/ErrorWithStack'; +import { LoadingPlaceholder } from '../LoadingPlaceholder/LoadingPlaceholder'; // we only use import type so it will not be included in the bundle import type { ReactMonacoEditorProps } from './types'; diff --git a/packages/grafana-ui/src/components/PageLayout/PageToolbar.tsx b/packages/grafana-ui/src/components/PageLayout/PageToolbar.tsx index 80a6ff7aff6..c7d70c49188 100644 --- a/packages/grafana-ui/src/components/PageLayout/PageToolbar.tsx +++ b/packages/grafana-ui/src/components/PageLayout/PageToolbar.tsx @@ -4,12 +4,13 @@ import React, { ReactNode } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { Link, ToolbarButtonRow } from '..'; import { useStyles2 } from '../../themes/ThemeContext'; import { getFocusStyles } from '../../themes/mixins'; import { IconName } from '../../types'; import { Icon } from '../Icon/Icon'; import { IconButton } from '../IconButton/IconButton'; +import { Link } from '../Link/Link'; +import { ToolbarButtonRow } from '../ToolbarButton/ToolbarButtonRow'; export interface Props { pageIcon?: IconName; diff --git a/packages/grafana-ui/src/components/PanelChrome/PanelContext.ts b/packages/grafana-ui/src/components/PanelChrome/PanelContext.ts index a09418d720c..ede3ffbe4eb 100644 --- a/packages/grafana-ui/src/components/PanelChrome/PanelContext.ts +++ b/packages/grafana-ui/src/components/PanelChrome/PanelContext.ts @@ -14,7 +14,7 @@ import { import { AdHocFilterItem } from '../Table/types'; -import { SeriesVisibilityChangeMode } from '.'; +import { SeriesVisibilityChangeMode } from './types'; /** @alpha */ export interface PanelContext { diff --git a/packages/grafana-ui/src/components/QueryField/QueryField.tsx b/packages/grafana-ui/src/components/QueryField/QueryField.tsx index 6a76bb0da48..cfb9ef7c5ac 100644 --- a/packages/grafana-ui/src/components/QueryField/QueryField.tsx +++ b/packages/grafana-ui/src/components/QueryField/QueryField.tsx @@ -9,15 +9,6 @@ import { Editor, EventHook, Plugin } from 'slate-react'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { - makeValue, - SCHEMA, - CompletionItemGroup, - TypeaheadOutput, - TypeaheadInput, - SuggestionsState, - Themeable2, -} from '../..'; import { ClearPlugin, NewlinePlugin, @@ -29,6 +20,9 @@ import { } from '../../slate-plugins'; import { withTheme2 } from '../../themes'; import { getFocusStyles } from '../../themes/mixins'; +import { CompletionItemGroup, SuggestionsState, TypeaheadInput, TypeaheadOutput } from '../../types/completion'; +import { Themeable2 } from '../../types/theme'; +import { makeValue, SCHEMA } from '../../utils/slate'; export interface QueryFieldProps extends Themeable2 { additionalPlugins?: Plugin[]; diff --git a/packages/grafana-ui/src/components/Segment/Segment.tsx b/packages/grafana-ui/src/components/Segment/Segment.tsx index 9f25ceb6243..cb74127cdca 100644 --- a/packages/grafana-ui/src/components/Segment/Segment.tsx +++ b/packages/grafana-ui/src/components/Segment/Segment.tsx @@ -7,9 +7,10 @@ import { SelectableValue } from '@grafana/data'; import { useStyles2 } from '../../themes'; import { InlineLabel } from '../Forms/InlineLabel'; +import { SegmentSelect } from './SegmentSelect'; import { getSegmentStyles } from './styles'; - -import { SegmentSelect, useExpandableLabel, SegmentProps } from './'; +import { SegmentProps } from './types'; +import { useExpandableLabel } from './useExpandableLabel'; export interface SegmentSyncProps extends SegmentProps, Omit, 'value' | 'onChange'> { value?: T | SelectableValue; diff --git a/packages/grafana-ui/src/components/Segment/SegmentAsync.tsx b/packages/grafana-ui/src/components/Segment/SegmentAsync.tsx index e3f11a28566..29408d1b319 100644 --- a/packages/grafana-ui/src/components/Segment/SegmentAsync.tsx +++ b/packages/grafana-ui/src/components/Segment/SegmentAsync.tsx @@ -12,8 +12,8 @@ import { InlineLabel } from '../Forms/InlineLabel'; import { SegmentSelect } from './SegmentSelect'; import { getSegmentStyles } from './styles'; - -import { useExpandableLabel, SegmentProps } from '.'; +import { SegmentProps } from './types'; +import { useExpandableLabel } from './useExpandableLabel'; export interface SegmentAsyncProps extends SegmentProps, Omit, 'value' | 'onChange'> { value?: T | SelectableValue; diff --git a/packages/grafana-ui/src/components/Segment/SegmentInput.tsx b/packages/grafana-ui/src/components/Segment/SegmentInput.tsx index 23de1309c2e..49bfe8454e4 100644 --- a/packages/grafana-ui/src/components/Segment/SegmentInput.tsx +++ b/packages/grafana-ui/src/components/Segment/SegmentInput.tsx @@ -7,8 +7,8 @@ import { measureText } from '../../utils/measureText'; import { InlineLabel } from '../Forms/InlineLabel'; import { getSegmentStyles } from './styles'; - -import { useExpandableLabel, SegmentProps } from '.'; +import { SegmentProps } from './types'; +import { useExpandableLabel } from './useExpandableLabel'; export interface SegmentInputProps extends Omit, diff --git a/packages/grafana-ui/src/components/TabbedContainer/TabbedContainer.tsx b/packages/grafana-ui/src/components/TabbedContainer/TabbedContainer.tsx index 5b8927eb1b7..86973201467 100644 --- a/packages/grafana-ui/src/components/TabbedContainer/TabbedContainer.tsx +++ b/packages/grafana-ui/src/components/TabbedContainer/TabbedContainer.tsx @@ -3,8 +3,11 @@ import React, { useState } from 'react'; import { SelectableValue, GrafanaTheme2 } from '@grafana/data'; -import { IconName, TabsBar, Tab, IconButton, CustomScrollbar, TabContent } from '../..'; +import { IconButton } from '../../components/IconButton/IconButton'; +import { TabsBar, Tab, TabContent } from '../../components/Tabs'; import { stylesFactory, useTheme2 } from '../../themes'; +import { IconName } from '../../types/icon'; +import { CustomScrollbar } from '../CustomScrollbar/CustomScrollbar'; export interface TabConfig { label: string; diff --git a/packages/grafana-ui/src/components/Tabs/index.ts b/packages/grafana-ui/src/components/Tabs/index.ts new file mode 100644 index 00000000000..0ee2245e140 --- /dev/null +++ b/packages/grafana-ui/src/components/Tabs/index.ts @@ -0,0 +1,3 @@ +export { Tab } from './Tab'; +export { TabsBar } from './TabsBar'; +export { TabContent } from './TabContent'; diff --git a/packages/grafana-ui/src/components/VizLegend/utils.ts b/packages/grafana-ui/src/components/VizLegend/utils.ts index 68cfa418fcd..eff81da2dbf 100644 --- a/packages/grafana-ui/src/components/VizLegend/utils.ts +++ b/packages/grafana-ui/src/components/VizLegend/utils.ts @@ -1,4 +1,4 @@ -import { SeriesVisibilityChangeMode } from '..'; +import { SeriesVisibilityChangeMode } from '../PanelChrome/types'; export function mapMouseEventToMode(event: React.MouseEvent): SeriesVisibilityChangeMode { if (event.ctrlKey || event.metaKey || event.shiftKey) { diff --git a/packages/grafana-ui/src/options/builder/axis.tsx b/packages/grafana-ui/src/options/builder/axis.tsx index cf2b90aca21..70b2876bfb8 100644 --- a/packages/grafana-ui/src/options/builder/axis.tsx +++ b/packages/grafana-ui/src/options/builder/axis.tsx @@ -9,7 +9,11 @@ import { } from '@grafana/data'; import { AxisColorMode, AxisConfig, AxisPlacement, ScaleDistribution, ScaleDistributionConfig } from '@grafana/schema'; -import { graphFieldOptions, Select, RadioButtonGroup, Input, Field } from '../../index'; +import { Field } from '../../components/Forms/Field'; +import { RadioButtonGroup } from '../../components/Forms/RadioButtonGroup/RadioButtonGroup'; +import { Input } from '../../components/Input/Input'; +import { Select } from '../../components/Select/Select'; +import { graphFieldOptions } from '../../components/uPlot/config'; /** * @alpha diff --git a/packages/grafana-ui/src/options/builder/hideSeries.tsx b/packages/grafana-ui/src/options/builder/hideSeries.tsx index b0a52168fab..a70dfe74885 100644 --- a/packages/grafana-ui/src/options/builder/hideSeries.tsx +++ b/packages/grafana-ui/src/options/builder/hideSeries.tsx @@ -4,7 +4,8 @@ import React, { useCallback } from 'react'; import { FieldConfigEditorBuilder, FieldConfigEditorProps } from '@grafana/data'; import { HideableFieldConfig, HideSeriesConfig } from '@grafana/schema'; -import { FilterPill, HorizontalGroup } from '../../index'; +import { FilterPill } from '../../components/FilterPill/FilterPill'; +import { HorizontalGroup } from '../../components/Layout/Layout'; const SeriesConfigEditor = ({ value, onChange }: FieldConfigEditorProps) => { const onChangeToggle = useCallback( diff --git a/packages/grafana-ui/src/options/builder/stacking.tsx b/packages/grafana-ui/src/options/builder/stacking.tsx index e3728c5e8f0..7ab189c398e 100644 --- a/packages/grafana-ui/src/options/builder/stacking.tsx +++ b/packages/grafana-ui/src/options/builder/stacking.tsx @@ -6,9 +6,13 @@ import { FieldType, identityOverrideProcessor, } from '@grafana/data'; -import { StackingConfig, StackingMode } from '@grafana/schema'; +import { GraphFieldConfig, StackingConfig, StackingMode } from '@grafana/schema'; -import { GraphFieldConfig, graphFieldOptions, HorizontalGroup, IconButton, Input, RadioButtonGroup } from '../..'; +import { RadioButtonGroup } from '../../components/Forms/RadioButtonGroup/RadioButtonGroup'; +import { IconButton } from '../../components/IconButton/IconButton'; +import { Input } from '../../components/Input/Input'; +import { HorizontalGroup } from '../../components/Layout/Layout'; +import { graphFieldOptions } from '../../components/uPlot/config'; export const StackingEditor = ({ value, context, onChange, item }: FieldOverrideEditorProps) => { return ( diff --git a/packages/grafana-ui/src/themes/GlobalStyles/GlobalStyles.tsx b/packages/grafana-ui/src/themes/GlobalStyles/GlobalStyles.tsx index 44567187aea..996ab956201 100644 --- a/packages/grafana-ui/src/themes/GlobalStyles/GlobalStyles.tsx +++ b/packages/grafana-ui/src/themes/GlobalStyles/GlobalStyles.tsx @@ -1,7 +1,7 @@ import { Global } from '@emotion/react'; import React from 'react'; -import { useTheme2 } from '..'; +import { useTheme2 } from '../ThemeContext'; import { getAgularPanelStyles } from './angularPanelStyles'; import { getCardStyles } from './card';