From 688feb8991bd530d4282c9464e927c6104fa21d9 Mon Sep 17 00:00:00 2001 From: Alex Dunae Date: Fri, 12 Jun 2026 10:55:36 -0700 Subject: [PATCH 1/4] Move MUI components --- .../src/{ => mui}/components/MoreMenuMUI.tsx | 0 .../components/baseCard/BaseCard.tsx | 4 ++-- .../components/baseCard/BaseCardLoading.tsx | 0 .../baseCard/BaseCardThumbnailArea.tsx | 0 .../components/baseCard/StatusIcon.tsx | 0 .../components/baseCard/SvgThumbnail.tsx | 0 .../baseCard/ThumbnailIconButton.tsx | 0 .../components/noResults/NoResultsMUI.tsx | 0 .../tileFavoriteIcon/FavoriteIconMUI.tsx | 4 +++- .../containers/ITwinGrid/ITwinGridMUI.tsx | 21 +++++++++-------- .../containers/ITwinGrid/ITwinTableMUI.tsx | 12 +++++----- .../containers/ITwinGrid/ITwinTileMUI.tsx | 16 ++++++------- .../containers/iModelGrid/IModelGridMUI.tsx | 23 +++++++++++-------- .../containers/iModelGrid/IModelTableMUI.tsx | 14 +++++------ .../iModelGrid/clientSideIModelSort.ts | 2 +- .../iModelThumbnail/IModelThumbnailMUI.tsx | 4 ++-- .../containers/iModelTiles/IModelTileMUI.tsx | 16 ++++++------- .../modules/imodel-browser/src/mui/index.ts | 18 +++++++-------- .../src/{ => mui}/utils/spreadSx.ts | 0 19 files changed, 71 insertions(+), 63 deletions(-) rename packages/modules/imodel-browser/src/{ => mui}/components/MoreMenuMUI.tsx (100%) rename packages/modules/imodel-browser/src/{ => mui}/components/baseCard/BaseCard.tsx (99%) rename packages/modules/imodel-browser/src/{ => mui}/components/baseCard/BaseCardLoading.tsx (100%) rename packages/modules/imodel-browser/src/{ => mui}/components/baseCard/BaseCardThumbnailArea.tsx (100%) rename packages/modules/imodel-browser/src/{ => mui}/components/baseCard/StatusIcon.tsx (100%) rename packages/modules/imodel-browser/src/{ => mui}/components/baseCard/SvgThumbnail.tsx (100%) rename packages/modules/imodel-browser/src/{ => mui}/components/baseCard/ThumbnailIconButton.tsx (100%) rename packages/modules/imodel-browser/src/{ => mui}/components/noResults/NoResultsMUI.tsx (100%) rename packages/modules/imodel-browser/src/{ => mui}/components/tileFavoriteIcon/FavoriteIconMUI.tsx (98%) rename packages/modules/imodel-browser/src/{ => mui}/containers/ITwinGrid/ITwinGridMUI.tsx (95%) rename packages/modules/imodel-browser/src/{ => mui}/containers/ITwinGrid/ITwinTableMUI.tsx (97%) rename packages/modules/imodel-browser/src/{ => mui}/containers/ITwinGrid/ITwinTileMUI.tsx (94%) rename packages/modules/imodel-browser/src/{ => mui}/containers/iModelGrid/IModelGridMUI.tsx (96%) rename packages/modules/imodel-browser/src/{ => mui}/containers/iModelGrid/IModelTableMUI.tsx (96%) rename packages/modules/imodel-browser/src/{ => mui}/containers/iModelGrid/clientSideIModelSort.ts (99%) rename packages/modules/imodel-browser/src/{ => mui}/containers/iModelThumbnail/IModelThumbnailMUI.tsx (92%) rename packages/modules/imodel-browser/src/{ => mui}/containers/iModelTiles/IModelTileMUI.tsx (94%) rename packages/modules/imodel-browser/src/{ => mui}/utils/spreadSx.ts (100%) diff --git a/packages/modules/imodel-browser/src/components/MoreMenuMUI.tsx b/packages/modules/imodel-browser/src/mui/components/MoreMenuMUI.tsx similarity index 100% rename from packages/modules/imodel-browser/src/components/MoreMenuMUI.tsx rename to packages/modules/imodel-browser/src/mui/components/MoreMenuMUI.tsx diff --git a/packages/modules/imodel-browser/src/components/baseCard/BaseCard.tsx b/packages/modules/imodel-browser/src/mui/components/baseCard/BaseCard.tsx similarity index 99% rename from packages/modules/imodel-browser/src/components/baseCard/BaseCard.tsx rename to packages/modules/imodel-browser/src/mui/components/baseCard/BaseCard.tsx index 2fd7cc7b..dd3c6f8d 100644 --- a/packages/modules/imodel-browser/src/components/baseCard/BaseCard.tsx +++ b/packages/modules/imodel-browser/src/mui/components/baseCard/BaseCard.tsx @@ -17,9 +17,9 @@ import { Icon } from "@stratakit/mui"; import React, { type ReactNode } from "react"; import { - getPrimaryCardAction, type ResolvedCardActionItem, -} from "../../utils/_buildMenuOptions"; + getPrimaryCardAction, +} from "../../../utils/_buildMenuOptions"; import { spreadSx } from "../../utils/spreadSx"; import MoreMenuMUI, { type MoreMenuHandle, diff --git a/packages/modules/imodel-browser/src/components/baseCard/BaseCardLoading.tsx b/packages/modules/imodel-browser/src/mui/components/baseCard/BaseCardLoading.tsx similarity index 100% rename from packages/modules/imodel-browser/src/components/baseCard/BaseCardLoading.tsx rename to packages/modules/imodel-browser/src/mui/components/baseCard/BaseCardLoading.tsx diff --git a/packages/modules/imodel-browser/src/components/baseCard/BaseCardThumbnailArea.tsx b/packages/modules/imodel-browser/src/mui/components/baseCard/BaseCardThumbnailArea.tsx similarity index 100% rename from packages/modules/imodel-browser/src/components/baseCard/BaseCardThumbnailArea.tsx rename to packages/modules/imodel-browser/src/mui/components/baseCard/BaseCardThumbnailArea.tsx diff --git a/packages/modules/imodel-browser/src/components/baseCard/StatusIcon.tsx b/packages/modules/imodel-browser/src/mui/components/baseCard/StatusIcon.tsx similarity index 100% rename from packages/modules/imodel-browser/src/components/baseCard/StatusIcon.tsx rename to packages/modules/imodel-browser/src/mui/components/baseCard/StatusIcon.tsx diff --git a/packages/modules/imodel-browser/src/components/baseCard/SvgThumbnail.tsx b/packages/modules/imodel-browser/src/mui/components/baseCard/SvgThumbnail.tsx similarity index 100% rename from packages/modules/imodel-browser/src/components/baseCard/SvgThumbnail.tsx rename to packages/modules/imodel-browser/src/mui/components/baseCard/SvgThumbnail.tsx diff --git a/packages/modules/imodel-browser/src/components/baseCard/ThumbnailIconButton.tsx b/packages/modules/imodel-browser/src/mui/components/baseCard/ThumbnailIconButton.tsx similarity index 100% rename from packages/modules/imodel-browser/src/components/baseCard/ThumbnailIconButton.tsx rename to packages/modules/imodel-browser/src/mui/components/baseCard/ThumbnailIconButton.tsx diff --git a/packages/modules/imodel-browser/src/components/noResults/NoResultsMUI.tsx b/packages/modules/imodel-browser/src/mui/components/noResults/NoResultsMUI.tsx similarity index 100% rename from packages/modules/imodel-browser/src/components/noResults/NoResultsMUI.tsx rename to packages/modules/imodel-browser/src/mui/components/noResults/NoResultsMUI.tsx diff --git a/packages/modules/imodel-browser/src/components/tileFavoriteIcon/FavoriteIconMUI.tsx b/packages/modules/imodel-browser/src/mui/components/tileFavoriteIcon/FavoriteIconMUI.tsx similarity index 98% rename from packages/modules/imodel-browser/src/components/tileFavoriteIcon/FavoriteIconMUI.tsx rename to packages/modules/imodel-browser/src/mui/components/tileFavoriteIcon/FavoriteIconMUI.tsx index d3e6deb2..64976e92 100644 --- a/packages/modules/imodel-browser/src/components/tileFavoriteIcon/FavoriteIconMUI.tsx +++ b/packages/modules/imodel-browser/src/mui/components/tileFavoriteIcon/FavoriteIconMUI.tsx @@ -64,7 +64,9 @@ export const FavoriteIconMUI = ({ onMouseLeave={() => setHovered(false)} onClick={async (event: React.MouseEvent) => { // debounce - if (pending) return; + if (pending) { + return; + } setPending(true); try { diff --git a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGridMUI.tsx b/packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinGridMUI.tsx similarity index 95% rename from packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGridMUI.tsx rename to packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinGridMUI.tsx index 481b562c..9f6bea7b 100644 --- a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinGridMUI.tsx +++ b/packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinGridMUI.tsx @@ -6,21 +6,24 @@ import Box from "@mui/material/Box"; import React from "react"; import { InView } from "react-intersection-observer"; -import { BaseCardLoading } from "../../components/baseCard/BaseCardLoading"; -import { NoResultsMUI } from "../../components/noResults/NoResultsMUI"; -import { type ITwinTableOverridesMUI } from "../../mui/types"; -import { type ITwinFull, DataStatus } from "../../types"; -import { _mergeStrings } from "../../utils/_apiOverrides"; +import type { + ITwinGridProps, + ITwinGridStrings, +} from "../../../containers/ITwinGrid/ITwinGrid"; +import { useITwinData } from "../../../containers/ITwinGrid/useITwinData"; +import { useITwinFavorites } from "../../../containers/ITwinGrid/useITwinFavorites"; +import { type ITwinFull, DataStatus } from "../../../types"; +import { _mergeStrings } from "../../../utils/_apiOverrides"; import { type CardActionsItemMUI, MoreActionsMenuItemMUI, resolveCardActionsItemsMUI, -} from "../../utils/_buildMenuOptions"; -import type { ITwinGridProps, ITwinGridStrings } from "./ITwinGrid"; +} from "../../../utils/_buildMenuOptions"; +import { BaseCardLoading } from "../../components/baseCard/BaseCardLoading"; +import { NoResultsMUI } from "../../components/noResults/NoResultsMUI"; +import { type ITwinTableOverridesMUI } from "../../types"; import { type ITwinTableMUIStrings, ITwinTableMUI } from "./ITwinTableMUI"; import { type ITwinTilePropsMUI, ITwinTileMUI } from "./ITwinTileMUI"; -import { useITwinData } from "./useITwinData"; -import { useITwinFavorites } from "./useITwinFavorites"; /** @alpha */ export type IndividualITwinStateHookMUI = ( diff --git a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinTableMUI.tsx b/packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinTableMUI.tsx similarity index 97% rename from packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinTableMUI.tsx rename to packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinTableMUI.tsx index 591de3d7..a5c93f7e 100644 --- a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinTableMUI.tsx +++ b/packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinTableMUI.tsx @@ -11,17 +11,17 @@ import svgMore from "@stratakit/icons/more-vertical.svg"; import { Icon } from "@stratakit/mui"; import React from "react"; -import MoreMenuMUI from "../../components/MoreMenuMUI"; -import { FavoriteIconMUI } from "../../components/tileFavoriteIcon/FavoriteIconMUI"; -import { type ITwinTableOverridesMUI } from "../../mui/types"; -import { ITwinCellColumn, ITwinFull } from "../../types"; +import { ITwinCellColumn, ITwinFull } from "../../../types"; import { type MoreActionsMenuItemMUI, type ResolvedCardActionItem, getPrimaryCardAction, resolveMoreActionsMenuItemsMUI, -} from "../../utils/_buildMenuOptions"; -import { formatDate } from "../../utils/formatDate"; +} from "../../../utils/_buildMenuOptions"; +import { formatDate } from "../../../utils/formatDate"; +import MoreMenuMUI from "../../components/MoreMenuMUI"; +import { FavoriteIconMUI } from "../../components/tileFavoriteIcon/FavoriteIconMUI"; +import { type ITwinTableOverridesMUI } from "../../types"; const EMPTY_COLUMN_OVERRIDES: NonNullable< ITwinTableOverridesMUI["columnOverrides"] diff --git a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinTileMUI.tsx b/packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinTileMUI.tsx similarity index 94% rename from packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinTileMUI.tsx rename to packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinTileMUI.tsx index 02fd0ceb..dae8d3f3 100644 --- a/packages/modules/imodel-browser/src/containers/ITwinGrid/ITwinTileMUI.tsx +++ b/packages/modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinTileMUI.tsx @@ -6,20 +6,20 @@ import Chip from "@mui/material/Chip"; import svgItwin from "@stratakit/icons/itwin.svg"; import React from "react"; +import { ITwinTileProps } from "../../../containers/ITwinGrid/ITwinTile"; +import { ITwinFull } from "../../../types"; +import { _mergeStrings } from "../../../utils/_apiOverrides"; +import { + type MoreActionsMenuItemMUI, + type ResolvedMoreActionsMenuItem, +} from "../../../utils/_buildMenuOptions"; +import { formatDate } from "../../../utils/formatDate"; import { type BaseCardProps, BaseCard, } from "../../components/baseCard/BaseCard"; import { SvgThumbnail } from "../../components/baseCard/SvgThumbnail"; import { FavoriteIconMUI } from "../../components/tileFavoriteIcon/FavoriteIconMUI"; -import { ITwinFull } from "../../types"; -import { _mergeStrings } from "../../utils/_apiOverrides"; -import { - type MoreActionsMenuItemMUI, - type ResolvedMoreActionsMenuItem, -} from "../../utils/_buildMenuOptions"; -import { formatDate } from "../../utils/formatDate"; -import { ITwinTileProps } from "./ITwinTile"; /** @alpha */ export interface ITwinTilePropsMUI diff --git a/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGridMUI.tsx b/packages/modules/imodel-browser/src/mui/containers/iModelGrid/IModelGridMUI.tsx similarity index 96% rename from packages/modules/imodel-browser/src/containers/iModelGrid/IModelGridMUI.tsx rename to packages/modules/imodel-browser/src/mui/containers/iModelGrid/IModelGridMUI.tsx index 32112862..12d45c0c 100644 --- a/packages/modules/imodel-browser/src/containers/iModelGrid/IModelGridMUI.tsx +++ b/packages/modules/imodel-browser/src/mui/containers/iModelGrid/IModelGridMUI.tsx @@ -6,35 +6,38 @@ import Box from "@mui/material/Box"; import React from "react"; import { InView } from "react-intersection-observer"; -import { BaseCardLoading } from "../../components/baseCard/BaseCardLoading"; -import { NoResultsMUI as NoResults } from "../../components/noResults/NoResultsMUI"; -import { IModelFavoritesProvider } from "../../contexts/IModelFavoritesContext"; -import { type IModelTableOverridesMUI } from "../../mui/types"; +import type { IModelGridProps } from "../../../containers/iModelGrid/IModelGrid"; +import { + DEFAULT_PAGE_SIZE, + useIModelData, +} from "../../../containers/iModelGrid/useIModelData"; +import { IModelFavoritesProvider } from "../../../contexts/IModelFavoritesContext"; import { type AccessTokenProvider, type ApiOverrides, type IModelFull, DataStatus, IModelSortOptions, -} from "../../types"; -import { _mergeStrings } from "../../utils/_apiOverrides"; +} from "../../../types"; +import { _mergeStrings } from "../../../utils/_apiOverrides"; import { type CardActionsItemMUI, MoreActionsMenuItemMUI, resolveCardActionsItemsMUI, -} from "../../utils/_buildMenuOptions"; +} from "../../../utils/_buildMenuOptions"; import { addIModelToRecents, removeIModelFromRecents, -} from "../../utils/iModelApi"; +} from "../../../utils/iModelApi"; +import { BaseCardLoading } from "../../components/baseCard/BaseCardLoading"; +import { NoResultsMUI as NoResults } from "../../components/noResults/NoResultsMUI"; +import { type IModelTableOverridesMUI } from "../../types"; import { type IModelTileMUIProps, IModelTileMUI, } from "../iModelTiles/IModelTileMUI"; import { clientSideIModelSort } from "./clientSideIModelSort"; -import type { IModelGridProps } from "./IModelGrid"; import { type IModelTableMUIStrings, IModelTableMUI } from "./IModelTableMUI"; -import { DEFAULT_PAGE_SIZE, useIModelData } from "./useIModelData"; /** * Localized strings for the MUI IModelGrid. Extends the table-level strings diff --git a/packages/modules/imodel-browser/src/containers/iModelGrid/IModelTableMUI.tsx b/packages/modules/imodel-browser/src/mui/containers/iModelGrid/IModelTableMUI.tsx similarity index 96% rename from packages/modules/imodel-browser/src/containers/iModelGrid/IModelTableMUI.tsx rename to packages/modules/imodel-browser/src/mui/containers/iModelGrid/IModelTableMUI.tsx index f856e496..82d86087 100644 --- a/packages/modules/imodel-browser/src/containers/iModelGrid/IModelTableMUI.tsx +++ b/packages/modules/imodel-browser/src/mui/containers/iModelGrid/IModelTableMUI.tsx @@ -11,18 +11,18 @@ import svgMore from "@stratakit/icons/more-vertical.svg"; import { Icon } from "@stratakit/mui"; import React from "react"; -import MoreMenuMUI from "../../components/MoreMenuMUI"; -import { FavoriteIconMUI } from "../../components/tileFavoriteIcon/FavoriteIconMUI"; -import { useIModelFavoritesContext } from "../../contexts/IModelFavoritesContext"; -import { type IModelTableOverridesMUI } from "../../mui/types"; -import { type IModelFull, IModelCellColumn } from "../../types"; +import { useIModelFavoritesContext } from "../../../contexts/IModelFavoritesContext"; +import { type IModelFull, IModelCellColumn } from "../../../types"; import { type MoreActionsMenuItemMUI, type ResolvedCardActionItem, getPrimaryCardAction, resolveMoreActionsMenuItemsMUI, -} from "../../utils/_buildMenuOptions"; -import { formatDate } from "../../utils/formatDate"; +} from "../../../utils/_buildMenuOptions"; +import { formatDate } from "../../../utils/formatDate"; +import MoreMenuMUI from "../../components/MoreMenuMUI"; +import { FavoriteIconMUI } from "../../components/tileFavoriteIcon/FavoriteIconMUI"; +import { type IModelTableOverridesMUI } from "../../types"; const EMPTY_COLUMN_OVERRIDES: NonNullable< IModelTableOverridesMUI["columnOverrides"] diff --git a/packages/modules/imodel-browser/src/containers/iModelGrid/clientSideIModelSort.ts b/packages/modules/imodel-browser/src/mui/containers/iModelGrid/clientSideIModelSort.ts similarity index 99% rename from packages/modules/imodel-browser/src/containers/iModelGrid/clientSideIModelSort.ts rename to packages/modules/imodel-browser/src/mui/containers/iModelGrid/clientSideIModelSort.ts index 91239475..cfa4180e 100644 --- a/packages/modules/imodel-browser/src/containers/iModelGrid/clientSideIModelSort.ts +++ b/packages/modules/imodel-browser/src/mui/containers/iModelGrid/clientSideIModelSort.ts @@ -2,7 +2,7 @@ * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ -import type { IModelFull, IModelSortOptions, ViewType } from "../../types"; +import type { IModelFull, IModelSortOptions, ViewType } from "../../../types"; export interface ClientSideIModelSortOptions { viewMode: ViewType | undefined; diff --git a/packages/modules/imodel-browser/src/containers/iModelThumbnail/IModelThumbnailMUI.tsx b/packages/modules/imodel-browser/src/mui/containers/iModelThumbnail/IModelThumbnailMUI.tsx similarity index 92% rename from packages/modules/imodel-browser/src/containers/iModelThumbnail/IModelThumbnailMUI.tsx rename to packages/modules/imodel-browser/src/mui/containers/iModelThumbnail/IModelThumbnailMUI.tsx index 7d3105e5..2f3e889a 100644 --- a/packages/modules/imodel-browser/src/containers/iModelThumbnail/IModelThumbnailMUI.tsx +++ b/packages/modules/imodel-browser/src/mui/containers/iModelThumbnail/IModelThumbnailMUI.tsx @@ -9,8 +9,8 @@ import classNames from "classnames"; import React from "react"; import { useInView } from "react-intersection-observer"; -import { AccessTokenProvider, ApiOverrides } from "../../types"; -import { useIModelThumbnail } from "./useIModelThumbnail"; +import { useIModelThumbnail } from "../../../containers/iModelThumbnail/useIModelThumbnail"; +import { AccessTokenProvider, ApiOverrides } from "../../../types"; /** @alpha */ export interface IModelThumbnailMUIProps { diff --git a/packages/modules/imodel-browser/src/containers/iModelTiles/IModelTileMUI.tsx b/packages/modules/imodel-browser/src/mui/containers/iModelTiles/IModelTileMUI.tsx similarity index 94% rename from packages/modules/imodel-browser/src/containers/iModelTiles/IModelTileMUI.tsx rename to packages/modules/imodel-browser/src/mui/containers/iModelTiles/IModelTileMUI.tsx index a8334ac7..05139b92 100644 --- a/packages/modules/imodel-browser/src/containers/iModelTiles/IModelTileMUI.tsx +++ b/packages/modules/imodel-browser/src/mui/containers/iModelTiles/IModelTileMUI.tsx @@ -5,20 +5,20 @@ import svgImodel from "@stratakit/icons/imodel.svg"; import React from "react"; +import { IModelTileProps } from "../../../containers/iModelTiles/IModelTile"; +import { IModelFavoritesContext } from "../../../contexts/IModelFavoritesContext"; +import { AccessTokenProvider, ApiOverrides, IModelFull } from "../../../types"; +import { _mergeStrings } from "../../../utils/_apiOverrides"; +import { + type MoreActionsMenuItemMUI, + type ResolvedMoreActionsMenuItem, +} from "../../../utils/_buildMenuOptions"; import { type BaseCardProps, BaseCard, } from "../../components/baseCard/BaseCard"; import { FavoriteIconMUI } from "../../components/tileFavoriteIcon/FavoriteIconMUI"; -import { IModelFavoritesContext } from "../../contexts/IModelFavoritesContext"; -import { AccessTokenProvider, ApiOverrides, IModelFull } from "../../types"; -import { _mergeStrings } from "../../utils/_apiOverrides"; -import { - type MoreActionsMenuItemMUI, - type ResolvedMoreActionsMenuItem, -} from "../../utils/_buildMenuOptions"; import { IModelThumbnailMUI } from "../iModelThumbnail/IModelThumbnailMUI"; -import { IModelTileProps } from "./IModelTile"; /** @alpha */ export interface IModelTileMUIProps diff --git a/packages/modules/imodel-browser/src/mui/index.ts b/packages/modules/imodel-browser/src/mui/index.ts index 77cc6c6a..0402e731 100644 --- a/packages/modules/imodel-browser/src/mui/index.ts +++ b/packages/modules/imodel-browser/src/mui/index.ts @@ -11,47 +11,47 @@ export { IModelGridMUI as IModelGrid, type IModelGridMUIProps as IModelGridProps, type IModelGridStringsMUI as IModelGridStrings, -} from "../containers/iModelGrid/IModelGridMUI"; +} from "./containers/iModelGrid/IModelGridMUI"; export { IModelTileMUI as IModelTile, type IModelTileMUIProps as IModelTileProps, -} from "../containers/iModelTiles/IModelTileMUI"; +} from "./containers/iModelTiles/IModelTileMUI"; export { IModelThumbnailMUI as IModelThumbnail, type IModelThumbnailMUIProps as IModelThumbnailProps, -} from "../containers/iModelThumbnail/IModelThumbnailMUI"; +} from "./containers/iModelThumbnail/IModelThumbnailMUI"; export { ITwinGridMUI as ITwinGrid, type ITwinGridPropsMUI as ITwinGridProps, type IndividualITwinStateHookMUI as IndividualITwinStateHook, type ITwinGridStringsMUI as ITwinGridStrings, -} from "../containers/ITwinGrid/ITwinGridMUI"; +} from "./containers/ITwinGrid/ITwinGridMUI"; export { ITwinTileMUI as ITwinTile, type ITwinTilePropsMUI as ITwinTileProps, -} from "../containers/ITwinGrid/ITwinTileMUI"; +} from "./containers/ITwinGrid/ITwinTileMUI"; export { NoResultsMUI as NoResults, type NoResultsMUIProps as NoResultsProps, -} from "../components/noResults/NoResultsMUI"; +} from "./components/noResults/NoResultsMUI"; export { BaseCardLoading as IModelGhostTile, type BaseCardLoadingProps as IModelGhostTileProps, -} from "../components/baseCard/BaseCardLoading"; +} from "./components/baseCard/BaseCardLoading"; export type { MoreActionsMenuItemMUI as MoreActionsMenuItem } from "../utils/_buildMenuOptions"; export type { CardActionsItemMUI as CardActionsItem } from "../utils/_buildMenuOptions"; -export { ThumbnailIconButton } from "../components/baseCard/ThumbnailIconButton"; +export { ThumbnailIconButton } from "./components/baseCard/ThumbnailIconButton"; export { SvgThumbnail, type SvgThumbnailProps, -} from "../components/baseCard/SvgThumbnail"; +} from "./components/baseCard/SvgThumbnail"; export type { IModelFull, diff --git a/packages/modules/imodel-browser/src/utils/spreadSx.ts b/packages/modules/imodel-browser/src/mui/utils/spreadSx.ts similarity index 100% rename from packages/modules/imodel-browser/src/utils/spreadSx.ts rename to packages/modules/imodel-browser/src/mui/utils/spreadSx.ts From be9488a52deda7cc99db236acb79aa7641bda69e Mon Sep 17 00:00:00 2001 From: Alex Dunae Date: Fri, 12 Jun 2026 10:55:49 -0700 Subject: [PATCH 2/4] Specify codeowners for MUI components --- .github/CODEOWNERS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 33d72c51..789b3cb6 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -13,6 +13,9 @@ packages/modules/imodel-browser/ @aruniverse @ben-polinsky common/changes/@itwin/imodel-browser-react/ @aruniverse @ben-polinsky packages/apps/storybook/src/imodel-browser/ @aruniverse @ben-polinsky +# imodel-browser MUI/Stratakit components (alpha) +packages/modules/imodel-browser/src/mui/ @alexdunae @toddsouthenbentley @kckst8 + # delete-imodel packages/modules/delete-imodel/ @veekeys common/changes/@itwin/delete-imodel-react/ @veekeys From 089177a5b6fbc5f64345daa741a2d4d3e95b34a7 Mon Sep 17 00:00:00 2001 From: Alex Dunae Date: Fri, 12 Jun 2026 12:10:52 -0700 Subject: [PATCH 3/4] Move Storybook as well --- .github/CODEOWNERS | 1 + .../alex-mui-codeowners_2026-06-12-19-03.json | 10 ++++++++++ .../src/imodel-browser/{ => mui}/BaseCard.stories.tsx | 8 ++++---- .../imodel-browser/{ => mui}/IModelGridMUI.stories.tsx | 6 +++--- .../{ => mui}/IModelGridMUI.storybook-helpers.tsx | 9 +++++---- .../imodel-browser/{ => mui}/IModelTileMUI.stories.tsx | 4 ++-- .../imodel-browser/{ => mui}/ITwinGridMUI.stories.tsx | 10 +++++----- .../imodel-browser/{ => mui}/ITwinTileMUI.stories.tsx | 6 +++--- .../imodel-browser/{ => mui}/NoResultsMUI.stories.tsx | 2 +- 9 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 common/changes/@itwin/imodel-browser-react/alex-mui-codeowners_2026-06-12-19-03.json rename packages/apps/storybook/src/imodel-browser/{ => mui}/BaseCard.stories.tsx (96%) rename packages/apps/storybook/src/imodel-browser/{ => mui}/IModelGridMUI.stories.tsx (98%) rename packages/apps/storybook/src/imodel-browser/{ => mui}/IModelGridMUI.storybook-helpers.tsx (92%) rename packages/apps/storybook/src/imodel-browser/{ => mui}/IModelTileMUI.stories.tsx (97%) rename packages/apps/storybook/src/imodel-browser/{ => mui}/ITwinGridMUI.stories.tsx (97%) rename packages/apps/storybook/src/imodel-browser/{ => mui}/ITwinTileMUI.stories.tsx (95%) rename packages/apps/storybook/src/imodel-browser/{ => mui}/NoResultsMUI.stories.tsx (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 789b3cb6..00dfcb5d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -15,6 +15,7 @@ packages/apps/storybook/src/imodel-browser/ @aruniverse @ben-polinsky # imodel-browser MUI/Stratakit components (alpha) packages/modules/imodel-browser/src/mui/ @alexdunae @toddsouthenbentley @kckst8 +packages/apps/storybook/src/imodel-browser/mui/ @alexdunae @toddsouthenbentley @kckst8 # delete-imodel packages/modules/delete-imodel/ @veekeys diff --git a/common/changes/@itwin/imodel-browser-react/alex-mui-codeowners_2026-06-12-19-03.json b/common/changes/@itwin/imodel-browser-react/alex-mui-codeowners_2026-06-12-19-03.json new file mode 100644 index 00000000..b54895cf --- /dev/null +++ b/common/changes/@itwin/imodel-browser-react/alex-mui-codeowners_2026-06-12-19-03.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@itwin/imodel-browser-react", + "comment": "Reorganize internal paths of Stratakit MUI components", + "type": "patch" + } + ], + "packageName": "@itwin/imodel-browser-react" +} \ No newline at end of file diff --git a/packages/apps/storybook/src/imodel-browser/BaseCard.stories.tsx b/packages/apps/storybook/src/imodel-browser/mui/BaseCard.stories.tsx similarity index 96% rename from packages/apps/storybook/src/imodel-browser/BaseCard.stories.tsx rename to packages/apps/storybook/src/imodel-browser/mui/BaseCard.stories.tsx index 9562a053..89d46459 100644 --- a/packages/apps/storybook/src/imodel-browser/BaseCard.stories.tsx +++ b/packages/apps/storybook/src/imodel-browser/mui/BaseCard.stories.tsx @@ -20,10 +20,10 @@ import React from "react"; import { BaseCard, BaseCardProps, -} from "../../../../modules/imodel-browser/src/components/baseCard/BaseCard"; -import { ThumbnailIconButton } from "../../../../modules/imodel-browser/src/components/baseCard/ThumbnailIconButton"; -import bridgeThumbnail from "../utils/bridge.jpg"; -import nightThumbnail from "../utils/night.jpg"; +} from "../../../../../modules/imodel-browser/src/mui/components/baseCard/BaseCard"; +import { ThumbnailIconButton } from "../../../../../modules/imodel-browser/src/mui/components/baseCard/ThumbnailIconButton"; +import bridgeThumbnail from "../../utils/bridge.jpg"; +import nightThumbnail from "../../utils/night.jpg"; const InConstrainedContainer = ({ children, diff --git a/packages/apps/storybook/src/imodel-browser/IModelGridMUI.stories.tsx b/packages/apps/storybook/src/imodel-browser/mui/IModelGridMUI.stories.tsx similarity index 98% rename from packages/apps/storybook/src/imodel-browser/IModelGridMUI.stories.tsx rename to packages/apps/storybook/src/imodel-browser/mui/IModelGridMUI.stories.tsx index de284f53..c5584528 100644 --- a/packages/apps/storybook/src/imodel-browser/IModelGridMUI.stories.tsx +++ b/packages/apps/storybook/src/imodel-browser/mui/IModelGridMUI.stories.tsx @@ -18,13 +18,13 @@ import { Meta, Story } from "@storybook/react/types-6-0"; import SvgDelete from "@stratakit/icons/delete.svg"; import React from "react"; -import bridgeThumbnail from "../utils/bridge.jpg"; -import nightThumbnail from "../utils/night.jpg"; +import bridgeThumbnail from "../../utils/bridge.jpg"; +import nightThumbnail from "../../utils/night.jpg"; import { accessTokenArgTypes, withAccessTokenOverride, withITwinIdOverride, -} from "../utils/storyHelp"; +} from "../../utils/storyHelp"; import { additionalData, initialData, diff --git a/packages/apps/storybook/src/imodel-browser/IModelGridMUI.storybook-helpers.tsx b/packages/apps/storybook/src/imodel-browser/mui/IModelGridMUI.storybook-helpers.tsx similarity index 92% rename from packages/apps/storybook/src/imodel-browser/IModelGridMUI.storybook-helpers.tsx rename to packages/apps/storybook/src/imodel-browser/mui/IModelGridMUI.storybook-helpers.tsx index 09b55586..2972bdc2 100644 --- a/packages/apps/storybook/src/imodel-browser/IModelGridMUI.storybook-helpers.tsx +++ b/packages/apps/storybook/src/imodel-browser/mui/IModelGridMUI.storybook-helpers.tsx @@ -7,10 +7,11 @@ import { type IModelTileProps, } from "@itwin/imodel-browser-react/mui"; import React from "react"; -import bridgeThumbnail from "../utils/bridge.jpg"; -import nightThumbnail from "../utils/night.jpg"; -import overpassThumbnail from "../utils/overpass.jpg"; -import powerThumbnail from "../utils/power.jpg"; + +import bridgeThumbnail from "../../utils/bridge.jpg"; +import nightThumbnail from "../../utils/night.jpg"; +import overpassThumbnail from "../../utils/overpass.jpg"; +import powerThumbnail from "../../utils/power.jpg"; export const initialData: IModelFull[] = [ { diff --git a/packages/apps/storybook/src/imodel-browser/IModelTileMUI.stories.tsx b/packages/apps/storybook/src/imodel-browser/mui/IModelTileMUI.stories.tsx similarity index 97% rename from packages/apps/storybook/src/imodel-browser/IModelTileMUI.stories.tsx rename to packages/apps/storybook/src/imodel-browser/mui/IModelTileMUI.stories.tsx index da09c32a..1d36775a 100644 --- a/packages/apps/storybook/src/imodel-browser/IModelTileMUI.stories.tsx +++ b/packages/apps/storybook/src/imodel-browser/mui/IModelTileMUI.stories.tsx @@ -18,8 +18,8 @@ import svgRoad from "@stratakit/icons/road.svg"; import SvgShare from "@stratakit/icons/share.svg"; import React from "react"; -import bridgeThumbnail from "../utils/bridge.jpg"; -import overpassThumbnail from "../utils/overpass.jpg"; +import bridgeThumbnail from "../../utils/bridge.jpg"; +import overpassThumbnail from "../../utils/overpass.jpg"; const InConstrainedContainer = ({ children, diff --git a/packages/apps/storybook/src/imodel-browser/ITwinGridMUI.stories.tsx b/packages/apps/storybook/src/imodel-browser/mui/ITwinGridMUI.stories.tsx similarity index 97% rename from packages/apps/storybook/src/imodel-browser/ITwinGridMUI.stories.tsx rename to packages/apps/storybook/src/imodel-browser/mui/ITwinGridMUI.stories.tsx index 16419f33..8a9acff1 100644 --- a/packages/apps/storybook/src/imodel-browser/ITwinGridMUI.stories.tsx +++ b/packages/apps/storybook/src/imodel-browser/mui/ITwinGridMUI.stories.tsx @@ -22,14 +22,14 @@ import { action } from "@storybook/addon-actions"; import { Meta, Story } from "@storybook/react/types-6-0"; import React from "react"; -import bridgeThumbnail from "../utils/bridge.jpg"; -import nightThumbnail from "../utils/night.jpg"; -import overpassThumbnail from "../utils/overpass.jpg"; -import powerThumbnail from "../utils/power.jpg"; +import bridgeThumbnail from "../../utils/bridge.jpg"; +import nightThumbnail from "../../utils/night.jpg"; +import overpassThumbnail from "../../utils/overpass.jpg"; +import powerThumbnail from "../../utils/power.jpg"; import { accessTokenArgTypes, withAccessTokenOverride, -} from "../utils/storyHelp"; +} from "../../utils/storyHelp"; type ITwinTileType = React.ComponentPropsWithoutRef; diff --git a/packages/apps/storybook/src/imodel-browser/ITwinTileMUI.stories.tsx b/packages/apps/storybook/src/imodel-browser/mui/ITwinTileMUI.stories.tsx similarity index 95% rename from packages/apps/storybook/src/imodel-browser/ITwinTileMUI.stories.tsx rename to packages/apps/storybook/src/imodel-browser/mui/ITwinTileMUI.stories.tsx index 78bb34b1..5fe99b5c 100644 --- a/packages/apps/storybook/src/imodel-browser/ITwinTileMUI.stories.tsx +++ b/packages/apps/storybook/src/imodel-browser/mui/ITwinTileMUI.stories.tsx @@ -15,9 +15,9 @@ import { Meta, Story } from "@storybook/react/types-6-0"; import svgMagnet from "@stratakit/icons/magnet.svg"; import React from "react"; -import { DefaultThumbnail } from "../../../../modules/imodel-browser/src/containers/ITwinGrid/ITwinTileMUI"; -import bridgeThumbnail from "../utils/bridge.jpg"; -import powerThumbnail from "../utils/power.jpg"; +import { DefaultThumbnail } from "../../../../../modules/imodel-browser/src/mui/containers/ITwinGrid/ITwinTileMUI"; +import bridgeThumbnail from "../../utils/bridge.jpg"; +import powerThumbnail from "../../utils/power.jpg"; const InConstrainedContainer = ({ children, diff --git a/packages/apps/storybook/src/imodel-browser/NoResultsMUI.stories.tsx b/packages/apps/storybook/src/imodel-browser/mui/NoResultsMUI.stories.tsx similarity index 100% rename from packages/apps/storybook/src/imodel-browser/NoResultsMUI.stories.tsx rename to packages/apps/storybook/src/imodel-browser/mui/NoResultsMUI.stories.tsx index abe95dda..3276aee6 100644 --- a/packages/apps/storybook/src/imodel-browser/NoResultsMUI.stories.tsx +++ b/packages/apps/storybook/src/imodel-browser/mui/NoResultsMUI.stories.tsx @@ -3,8 +3,8 @@ * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ import { - NoResults as ExternalComponent, type NoResultsProps as NoResultsMUIProps, + NoResults as ExternalComponent, } from "@itwin/imodel-browser-react/mui"; import { Meta, Story } from "@storybook/react/types-6-0"; import React from "react"; From 59e9a4f702bc5e98bef8213a0dfec939de625a98 Mon Sep 17 00:00:00 2001 From: Alex Dunae Date: Fri, 12 Jun 2026 12:55:47 -0700 Subject: [PATCH 4/4] type: none --- .../alex-mui-codeowners_2026-06-12-19-03.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/changes/@itwin/imodel-browser-react/alex-mui-codeowners_2026-06-12-19-03.json b/common/changes/@itwin/imodel-browser-react/alex-mui-codeowners_2026-06-12-19-03.json index b54895cf..29c877ba 100644 --- a/common/changes/@itwin/imodel-browser-react/alex-mui-codeowners_2026-06-12-19-03.json +++ b/common/changes/@itwin/imodel-browser-react/alex-mui-codeowners_2026-06-12-19-03.json @@ -3,8 +3,8 @@ { "packageName": "@itwin/imodel-browser-react", "comment": "Reorganize internal paths of Stratakit MUI components", - "type": "patch" + "type": "none" } ], "packageName": "@itwin/imodel-browser-react" -} \ No newline at end of file +}