c5200c7d45
## 变更内容 - 新增基于 shadcn open-code 模式的共享 UI canonical 组件、样式与导出。 - 新增 `/components` 共享组件展示页,并覆盖平台组件、Token、状态和移动端布局。 - 补齐平台展示页的筛选、排序、上传预览、标签、开关和异步状态交互。 - 修复排序导致预览主题变化、筛选弹窗误关闭和入口状态不更新的问题。 - 同步网站与客户端构建别名、依赖、路由测试和项目文档。 ## 验证 - `npm run test -- src/components/shared-components/SharedComponentsShowcasePage.test.tsx` - `npm run typecheck` - `npm run check:encoding` - `npm run build:raw` - `git diff --check` - pre-push 门禁通过 Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/202 Co-authored-by: kdletters <kdletters@qq.com> Co-committed-by: kdletters <kdletters@qq.com>
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
/* eslint-disable react-refresh/only-export-components */
|
|
|
|
import '@genarrative/image-canvas-react/styles.css';
|
|
import './index.css';
|
|
|
|
import { StrictMode, Suspense } from 'react';
|
|
import { createRoot } from 'react-dom/client';
|
|
|
|
import { FloatingFeedbackEntry } from './components/common/FloatingFeedbackEntry';
|
|
import { stabilizeMobileViewportKeyboardFocus } from './mobileViewportKeyboardFocus';
|
|
import { lockMobileViewportZoom } from './mobileViewportZoomLock';
|
|
import { resolveAppRoute } from './routing/activeAppRoutes';
|
|
import {
|
|
getHostRuntime,
|
|
refreshNativeAppHostRuntime,
|
|
} from './services/host-bridge/hostBridge';
|
|
|
|
type AppRoot = ReturnType<typeof createRoot>;
|
|
|
|
declare global {
|
|
interface Window {
|
|
__tavernRealmsRoot__?: AppRoot;
|
|
}
|
|
}
|
|
|
|
const route = resolveAppRoute(window.location.pathname);
|
|
const rootElement = document.getElementById('root');
|
|
|
|
if (!rootElement) {
|
|
throw new Error('Missing #root container');
|
|
}
|
|
|
|
function markWechatMiniProgramRuntime() {
|
|
if (getHostRuntime().kind === 'wechat_mini_program') {
|
|
document.documentElement.dataset.wechatMiniProgramRuntime = 'true';
|
|
}
|
|
}
|
|
|
|
const root = (window.__tavernRealmsRoot__ ??= createRoot(rootElement));
|
|
const RouteComponent = route.Component;
|
|
const routeElement = <RouteComponent />;
|
|
|
|
lockMobileViewportZoom();
|
|
stabilizeMobileViewportKeyboardFocus();
|
|
markWechatMiniProgramRuntime();
|
|
void refreshNativeAppHostRuntime();
|
|
|
|
root.render(
|
|
<StrictMode>
|
|
<Suspense fallback={null}>{routeElement}</Suspense>
|
|
{route.kind === 'platform' ? <FloatingFeedbackEntry /> : null}
|
|
</StrictMode>,
|
|
);
|