@skyroc/scripts 2.5.1 → 2.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/cli.mjs +2 -2
- package/dist/{config-BKkdncJS.mjs → config-DWrHl2hS.mjs} +106 -5
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/templates/admin/README.md +1 -2
- package/templates/admin/package.json +9 -2
- package/templates/admin/src/App.tsx +2 -2
- package/templates/admin/src/assets/svg-icon/logo.svg +1 -1
- package/templates/admin/src/config.ts +1 -1
- package/templates/admin/src/main.tsx +1 -1
- package/templates/admin/uno.config.ts +1 -1
- package/templates/admin-root/.agents/skills/component-doc/SKILL.md +304 -0
- package/templates/admin-root/.agents/skills/component-refactoring/SKILL.md +483 -0
- package/templates/admin-root/.agents/skills/component-refactoring/references/complexity-patterns.md +493 -0
- package/templates/admin-root/.agents/skills/component-refactoring/references/component-splitting.md +477 -0
- package/templates/admin-root/.agents/skills/component-refactoring/references/hook-extraction.md +317 -0
- package/templates/admin-root/.agents/skills/doc-coauthoring/SKILL.md +375 -0
- package/templates/admin-root/.agents/skills/feature-dev/SKILL.md +78 -0
- package/templates/admin-root/.agents/skills/frontend-code-review/SKILL.md +73 -0
- package/templates/admin-root/.agents/skills/frontend-code-review/references/business-logic.md +15 -0
- package/templates/admin-root/.agents/skills/frontend-code-review/references/code-quality.md +44 -0
- package/templates/admin-root/.agents/skills/frontend-code-review/references/performance.md +45 -0
- package/templates/admin-root/.agents/skills/frontend-design/LICENSE.txt +177 -0
- package/templates/admin-root/.agents/skills/frontend-design/SKILL.md +42 -0
- package/templates/admin-root/.agents/skills/frontend-testing/SKILL.md +325 -0
- package/templates/admin-root/.agents/skills/frontend-testing/assets/component-test.template.tsx +293 -0
- package/templates/admin-root/.agents/skills/frontend-testing/assets/hook-test.template.ts +207 -0
- package/templates/admin-root/.agents/skills/frontend-testing/assets/utility-test.template.ts +154 -0
- package/templates/admin-root/.agents/skills/frontend-testing/references/async-testing.md +345 -0
- package/templates/admin-root/.agents/skills/frontend-testing/references/checklist.md +205 -0
- package/templates/admin-root/.agents/skills/frontend-testing/references/common-patterns.md +449 -0
- package/templates/admin-root/.agents/skills/frontend-testing/references/domain-components.md +523 -0
- package/templates/admin-root/.agents/skills/frontend-testing/references/mocking.md +512 -0
- package/templates/admin-root/.agents/skills/frontend-testing/references/workflow.md +269 -0
- package/templates/admin-root/.agents/skills/migrate-nativewind-to-uniwind/SKILL.md +734 -0
- package/templates/admin-root/.agents/skills/migrate-oxfmt/SKILL.md +202 -0
- package/templates/admin-root/.agents/skills/migrate-oxlint/SKILL.md +196 -0
- package/templates/admin-root/.agents/skills/native-component-doc/SKILL.md +245 -0
- package/templates/admin-root/.agents/skills/senior-frontend/SKILL.md +209 -0
- package/templates/admin-root/.agents/skills/senior-frontend/references/frontend_best_practices.md +103 -0
- package/templates/admin-root/.agents/skills/senior-frontend/references/nextjs_optimization_guide.md +103 -0
- package/templates/admin-root/.agents/skills/senior-frontend/references/react_patterns.md +103 -0
- package/templates/admin-root/.agents/skills/senior-frontend/scripts/bundle_analyzer.py +114 -0
- package/templates/admin-root/.agents/skills/senior-frontend/scripts/component_generator.py +114 -0
- package/templates/admin-root/.agents/skills/senior-frontend/scripts/frontend_scaffolder.py +114 -0
- package/templates/admin-root/.agents/skills/skill-creator/SKILL.md +355 -0
- package/templates/admin-root/.agents/skills/skill-creator/references/output-patterns.md +86 -0
- package/templates/admin-root/.agents/skills/skill-creator/references/workflows.md +28 -0
- package/templates/admin-root/.agents/skills/skill-creator/scripts/init_skill.py +300 -0
- package/templates/admin-root/.agents/skills/skill-creator/scripts/package_skill.py +110 -0
- package/templates/admin-root/.agents/skills/skill-creator/scripts/quick_validate.py +97 -0
- package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/SKILL.md +163 -0
- package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/references/acceptance-checklist.md +75 -0
- package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/references/evidence-order.md +109 -0
- package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/references/prd-rules.md +103 -0
- package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/references/prototype-rules.md +85 -0
- package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/scripts/verify-prototypes.mjs +144 -0
- package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/templates/admin-page.html +771 -0
- package/templates/admin-root/.agents/skills/skyroc-admin-prd-prototype/templates/prd.md +182 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/SKILL.md +292 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/templates/admin-root/.agents/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/templates/admin-root/.agents/skills/uniwind/SKILL.md +64 -0
- package/templates/admin-root/.agents/skills/uniwind/references/component-bindings.md +338 -0
- package/templates/admin-root/.agents/skills/uniwind/references/css-and-utilities.md +325 -0
- package/templates/admin-root/.agents/skills/uniwind/references/integrations.md +75 -0
- package/templates/admin-root/.agents/skills/uniwind/references/pro.md +354 -0
- package/templates/admin-root/.agents/skills/uniwind/references/setup.md +144 -0
- package/templates/admin-root/.agents/skills/uniwind/references/styling-patterns.md +237 -0
- package/templates/admin-root/.agents/skills/uniwind/references/theming.md +309 -0
- package/templates/admin-root/.agents/skills/uniwind/references/troubleshooting.md +179 -0
- package/templates/admin-root/.agents/skills/uniwind/references/variants-and-selectors.md +224 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/templates/admin-root/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/templates/admin-root/.claude/settings.json +5 -0
- package/templates/admin-root/.claude/skills/component-doc/SKILL.md +304 -0
- package/templates/admin-root/.claude/skills/component-refactoring/SKILL.md +483 -0
- package/templates/admin-root/.claude/skills/component-refactoring/references/complexity-patterns.md +493 -0
- package/templates/admin-root/.claude/skills/component-refactoring/references/component-splitting.md +477 -0
- package/templates/admin-root/.claude/skills/component-refactoring/references/hook-extraction.md +317 -0
- package/templates/admin-root/.claude/skills/doc-coauthoring/SKILL.md +375 -0
- package/templates/admin-root/.claude/skills/feature-dev/SKILL.md +78 -0
- package/templates/admin-root/.claude/skills/frontend-code-review/SKILL.md +73 -0
- package/templates/admin-root/.claude/skills/frontend-code-review/references/business-logic.md +15 -0
- package/templates/admin-root/.claude/skills/frontend-code-review/references/code-quality.md +44 -0
- package/templates/admin-root/.claude/skills/frontend-code-review/references/performance.md +45 -0
- package/templates/admin-root/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/templates/admin-root/.claude/skills/frontend-design/SKILL.md +42 -0
- package/templates/admin-root/.claude/skills/frontend-testing/SKILL.md +325 -0
- package/templates/admin-root/.claude/skills/frontend-testing/assets/component-test.template.tsx +293 -0
- package/templates/admin-root/.claude/skills/frontend-testing/assets/hook-test.template.ts +207 -0
- package/templates/admin-root/.claude/skills/frontend-testing/assets/utility-test.template.ts +154 -0
- package/templates/admin-root/.claude/skills/frontend-testing/references/async-testing.md +345 -0
- package/templates/admin-root/.claude/skills/frontend-testing/references/checklist.md +205 -0
- package/templates/admin-root/.claude/skills/frontend-testing/references/common-patterns.md +449 -0
- package/templates/admin-root/.claude/skills/frontend-testing/references/domain-components.md +523 -0
- package/templates/admin-root/.claude/skills/frontend-testing/references/mocking.md +512 -0
- package/templates/admin-root/.claude/skills/frontend-testing/references/workflow.md +269 -0
- package/templates/admin-root/.claude/skills/migrate-nativewind-to-uniwind +1 -0
- package/templates/admin-root/.claude/skills/migrate-oxfmt +1 -0
- package/templates/admin-root/.claude/skills/migrate-oxlint +1 -0
- package/templates/admin-root/.claude/skills/native-component-doc/SKILL.md +245 -0
- package/templates/admin-root/.claude/skills/senior-frontend/SKILL.md +209 -0
- package/templates/admin-root/.claude/skills/senior-frontend/references/frontend_best_practices.md +103 -0
- package/templates/admin-root/.claude/skills/senior-frontend/references/nextjs_optimization_guide.md +103 -0
- package/templates/admin-root/.claude/skills/senior-frontend/references/react_patterns.md +103 -0
- package/templates/admin-root/.claude/skills/senior-frontend/scripts/bundle_analyzer.py +114 -0
- package/templates/admin-root/.claude/skills/senior-frontend/scripts/component_generator.py +114 -0
- package/templates/admin-root/.claude/skills/senior-frontend/scripts/frontend_scaffolder.py +114 -0
- package/templates/admin-root/.claude/skills/skill-creator/SKILL.md +355 -0
- package/templates/admin-root/.claude/skills/skill-creator/references/output-patterns.md +86 -0
- package/templates/admin-root/.claude/skills/skill-creator/references/workflows.md +28 -0
- package/templates/admin-root/.claude/skills/skill-creator/scripts/init_skill.py +300 -0
- package/templates/admin-root/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/templates/admin-root/.claude/skills/skill-creator/scripts/quick_validate.py +97 -0
- package/templates/admin-root/.claude/skills/ui-ux-pro-max/SKILL.md +386 -0
- package/templates/admin-root/.claude/skills/ui-ux-pro-max/data +1 -0
- package/templates/admin-root/.claude/skills/ui-ux-pro-max/scripts +1 -0
- package/templates/admin-root/.claude/skills/uniwind +1 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/templates/admin-root/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/templates/admin-root/.cursor/settings.json +10 -0
- package/templates/admin-root/.editorconfig +19 -0
- package/templates/admin-root/.gitattributes +16 -0
- package/templates/admin-root/.oxfmtrc.json +35 -0
- package/templates/admin-root/AGENTS.md +297 -0
- package/templates/admin-root/CLAUDE.md +1 -0
- package/templates/admin-root/skills-lock.json +27 -0
- package/templates/admin-root.manifest.json +1317 -0
- package/templates/admin-shell/devtools/AdminDevtools.css +27 -0
- package/templates/admin-shell/devtools/AdminDevtools.tsx +253 -0
- package/templates/admin-shell/devtools/index.ts +7 -0
- package/templates/admin-shell/devtools/jotai.ts +2 -0
- package/templates/admin.meta.json +14 -6
- package/LICENSE +0 -21
package/README.md
CHANGED
|
@@ -144,10 +144,13 @@ pnpm sa create-admin my-admin --install
|
|
|
144
144
|
|
|
145
145
|
从 `apps/admin` 生成 `packages/@core/scripts/templates/admin`。`apps/admin` 是唯一源码,模板目录是发布快照,不手工维护。
|
|
146
146
|
|
|
147
|
-
|
|
147
|
+
同步产出三样东西:
|
|
148
148
|
|
|
149
|
-
1. `templates/admin/`
|
|
150
|
-
2. `templates/admin
|
|
149
|
+
1. `templates/admin-root/` + `templates/admin-root.manifest.json` —— 仓库根级工程文件快照。包含 Git 已跟踪的根级点文件/点目录,以及 `AGENTS.md`、`CLAUDE.md`、`skills-lock.json`;排除 `.git`、缓存、构建产物、本机文件,以及 admin 模板已经自带的 `.oxlintrc.json`。manifest 用于还原 npm 固定忽略的 `.npmignore`、`.npmrc` 等点文件及符号链接。
|
|
150
|
+
2. `templates/admin/` —— `apps/admin` 的逐字节镜像。跳过 `node_modules`、`dist`、`.turbo`、`.tanstack`、`coverage`、`.DS_Store`、本地 `.env.*.local` 和 `src/features/router/routeTree.gen.ts`,再根据模板自身的 `src/pages` 重新生成 `routeTree.gen.ts`。
|
|
151
|
+
3. `templates/admin.meta.json` —— 物化元数据。**只有在 monorepo 内才解析得出**,所以必须在同步期算好:解析后的依赖版本、展平后的 tsconfig 与 oxlint 配置、根级 `overrides`、以及未发布的 workspace 包清单。`create-admin` 的 standalone 模式只读这份文件做替换,不需要 monorepo 在场。
|
|
152
|
+
|
|
153
|
+
`create-admin` 会先复制 `admin-root`,再覆盖 `admin`。因此协作说明、编辑器配置、skills 和格式化配置会进入新项目;`package.json`、`README.md`、`.oxlintrc.json` 等应用已有文件只取 admin 模板版本。
|
|
151
154
|
|
|
152
155
|
元数据放在 `templates/admin/` **外层**,这样快照目录仍是纯镜像,逐字节比对不需要为 sidecar 开特例。
|
|
153
156
|
|
package/dist/cli.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { h as genChangelog, i as release, l as createAdminTemplate, m as cleanup, n as updatePkg, o as gitCommit, r as syncAdminTemplate, s as gitCommitVerify, t as loadCliOptions } from "./config-
|
|
1
|
+
import { h as genChangelog, i as release, l as createAdminTemplate, m as cleanup, n as updatePkg, o as gitCommit, r as syncAdminTemplate, s as gitCommitVerify, t as loadCliOptions } from "./config-DWrHl2hS.mjs";
|
|
2
2
|
import process from "node:process";
|
|
3
3
|
import { blue, lightGreen, red } from "kolorist";
|
|
4
4
|
import { cac } from "cac";
|
|
5
5
|
|
|
6
6
|
//#region package.json
|
|
7
|
-
var version = "2.5.
|
|
7
|
+
var version = "2.5.3";
|
|
8
8
|
|
|
9
9
|
//#endregion
|
|
10
10
|
//#region src/cli.ts
|
|
@@ -2,7 +2,7 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
import { generateChangelog, generateTotalChangelog } from "@soybeanjs/changelog";
|
|
3
3
|
import { rimraf } from "rimraf";
|
|
4
4
|
import { existsSync, readFileSync } from "node:fs";
|
|
5
|
-
import { cp, mkdir, mkdtemp, readFile, readdir, rm, stat, writeFile } from "node:fs/promises";
|
|
5
|
+
import { cp, lstat, mkdir, mkdtemp, readFile, readdir, readlink, rm, stat, symlink, writeFile } from "node:fs/promises";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import process from "node:process";
|
|
8
8
|
import { bgRed, cyan, green, red, yellow } from "kolorist";
|
|
@@ -249,6 +249,12 @@ function toStoragePrefix(name) {
|
|
|
249
249
|
function getTemplateDir() {
|
|
250
250
|
return path.join(getPackageRoot(), "templates", TEMPLATE_NAME$1);
|
|
251
251
|
}
|
|
252
|
+
function getRootTemplateDir() {
|
|
253
|
+
return path.join(getPackageRoot(), "templates", "admin-root");
|
|
254
|
+
}
|
|
255
|
+
function getRootTemplateManifestPath() {
|
|
256
|
+
return path.join(getPackageRoot(), "templates", "admin-root.manifest.json");
|
|
257
|
+
}
|
|
252
258
|
function getShellTemplateDir() {
|
|
253
259
|
return path.join(getPackageRoot(), "templates", "admin-shell");
|
|
254
260
|
}
|
|
@@ -288,6 +294,28 @@ async function installDependencies(cwd) {
|
|
|
288
294
|
stdio: "inherit"
|
|
289
295
|
});
|
|
290
296
|
}
|
|
297
|
+
async function restoreRootTemplateFiles(targetDir) {
|
|
298
|
+
const manifestPath = getRootTemplateManifestPath();
|
|
299
|
+
if (!existsSync(manifestPath)) throw new Error(`Admin root template manifest is missing: ${manifestPath}`);
|
|
300
|
+
const entries = JSON.parse(await readFile(manifestPath, "utf8"));
|
|
301
|
+
await Promise.all(entries.map(async (entry) => {
|
|
302
|
+
const target = path.resolve(targetDir, entry.path);
|
|
303
|
+
const relativeTarget = path.relative(targetDir, target);
|
|
304
|
+
if (path.isAbsolute(entry.path) || relativeTarget.startsWith("..") || path.isAbsolute(relativeTarget)) throw new Error(`Invalid admin root template path: ${entry.path}`);
|
|
305
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
306
|
+
if (entry.type === "symlink") {
|
|
307
|
+
if (!entry.target) throw new Error(`Admin root template symlink target is missing: ${entry.path}`);
|
|
308
|
+
await rm(target, {
|
|
309
|
+
force: true,
|
|
310
|
+
recursive: true
|
|
311
|
+
});
|
|
312
|
+
await symlink(entry.target, target);
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
if (entry.content === void 0) throw new Error(`Admin root template content is missing: ${entry.path}`);
|
|
316
|
+
await writeFile(target, Buffer.from(entry.content, "base64"));
|
|
317
|
+
}));
|
|
318
|
+
}
|
|
291
319
|
/** 独立模式下把 monorepo 协议物化掉,并把物化过程中发现的隐患打印出来。 */
|
|
292
320
|
async function applyStandaloneMaterialization(targetDir, packageName, description) {
|
|
293
321
|
const metaPath = getTemplateMetaPath();
|
|
@@ -309,7 +337,9 @@ async function createAdminTemplate(name, options = {}) {
|
|
|
309
337
|
const directoryName = packageName.replace(/^@[^/]+\//, "");
|
|
310
338
|
const targetDir = path.resolve(process.cwd(), options.target || path.join("apps", directoryName));
|
|
311
339
|
const templateDir = getTemplateDir();
|
|
340
|
+
const rootTemplateDir = getRootTemplateDir();
|
|
312
341
|
if (!existsSync(templateDir)) throw new Error(`Admin template is missing: ${templateDir}`);
|
|
342
|
+
if (!existsSync(rootTemplateDir)) throw new Error(`Admin root template is missing: ${rootTemplateDir}`);
|
|
313
343
|
if (existsSync(targetDir) && !await isDirectoryEmpty(targetDir)) {
|
|
314
344
|
if (!options.force) throw new Error(`Target directory is not empty: ${targetDir}. Use --force to overwrite it.`);
|
|
315
345
|
await rm(targetDir, {
|
|
@@ -318,6 +348,11 @@ async function createAdminTemplate(name, options = {}) {
|
|
|
318
348
|
});
|
|
319
349
|
}
|
|
320
350
|
await mkdir(path.dirname(targetDir), { recursive: true });
|
|
351
|
+
await cp(rootTemplateDir, targetDir, {
|
|
352
|
+
recursive: true,
|
|
353
|
+
verbatimSymlinks: true
|
|
354
|
+
});
|
|
355
|
+
await restoreRootTemplateFiles(targetDir);
|
|
321
356
|
await cp(templateDir, targetDir, { recursive: true });
|
|
322
357
|
if (options.workspace) await updatePackageJson(targetDir, packageName, description);
|
|
323
358
|
else {
|
|
@@ -698,10 +733,23 @@ async function resolveTemplateMeta(options) {
|
|
|
698
733
|
//#endregion
|
|
699
734
|
//#region src/commands/sync-admin-template.ts
|
|
700
735
|
const TEMPLATE_NAME = "admin";
|
|
701
|
-
/**
|
|
736
|
+
/** 仓库根级工程文件模板目录;生成项目时先铺这一层,再由 admin 应用文件覆盖同名项。 */
|
|
737
|
+
const ROOT_TEMPLATE_NAME = "admin-root";
|
|
738
|
+
/** Npm 会主动忽略部分点文件,因此另存一份可完整还原根快照的清单。 */
|
|
739
|
+
const ROOT_TEMPLATE_MANIFEST_FILE = "admin-root.manifest.json";
|
|
740
|
+
/** 不以点开头、但应随新项目保留的仓库根级文件。 */
|
|
741
|
+
const ROOT_TEMPLATE_FILES = [
|
|
742
|
+
"AGENTS.md",
|
|
743
|
+
"CLAUDE.md",
|
|
744
|
+
"skills-lock.json"
|
|
745
|
+
];
|
|
746
|
+
/** Admin 应用模板已有自己的版本,不再从仓库根重复复制。 */
|
|
747
|
+
const ROOT_TEMPLATE_EXCLUDED_FILES = new Set([".oxlintrc.json"]);
|
|
748
|
+
/** Shell 源码模板目录名,与 templates/admin 平级,保持 admin/ 仍是 apps/admin 的逐字节镜像。 */
|
|
702
749
|
const SHELL_TEMPLATE_NAME = "admin-shell";
|
|
703
|
-
/**
|
|
750
|
+
/** Shell 里会被复制进生成项目 src/framework 的运行时目录;配置、测试与文档不属于产物。 */
|
|
704
751
|
const SHELL_RUNTIME_DIRS = [
|
|
752
|
+
"devtools",
|
|
705
753
|
"i18n",
|
|
706
754
|
"layouts",
|
|
707
755
|
"notification",
|
|
@@ -716,6 +764,7 @@ const MAX_REPORTED_DIFFERENCES = 20;
|
|
|
716
764
|
const TECHNICAL_DIRS = new Set([
|
|
717
765
|
".tanstack",
|
|
718
766
|
".turbo",
|
|
767
|
+
"__pycache__",
|
|
719
768
|
"coverage",
|
|
720
769
|
"dist",
|
|
721
770
|
"node_modules"
|
|
@@ -731,7 +780,7 @@ function isTechnicalGeneratedPath(relativePath) {
|
|
|
731
780
|
if (!relativePath) return false;
|
|
732
781
|
const segments = relativePath.split("/");
|
|
733
782
|
const basename = segments.at(-1);
|
|
734
|
-
return basename === ".DS_Store" || basename?.endsWith(".tsbuildinfo") || basename?.endsWith(".log") || isLocalEnvFile(relativePath) || segments.some((segment) => TECHNICAL_DIRS.has(segment));
|
|
783
|
+
return basename === ".DS_Store" || basename?.endsWith(".pyc") || basename?.endsWith(".tsbuildinfo") || basename?.endsWith(".log") || isLocalEnvFile(relativePath) || segments.some((segment) => TECHNICAL_DIRS.has(segment));
|
|
735
784
|
}
|
|
736
785
|
function isRouteTreeFile(relativePath) {
|
|
737
786
|
return relativePath === "src/features/router/routeTree.gen.ts";
|
|
@@ -748,6 +797,46 @@ function resolveSourceDir(workspaceRoot, source) {
|
|
|
748
797
|
function resolveTargetDir(target) {
|
|
749
798
|
return path.resolve(process.cwd(), target || path.join(getPackageRoot(), "templates", TEMPLATE_NAME));
|
|
750
799
|
}
|
|
800
|
+
async function collectTrackedRootTemplateFiles(workspaceRoot) {
|
|
801
|
+
const { execa } = await import("execa");
|
|
802
|
+
const { stdout } = await execa("git", [
|
|
803
|
+
"ls-files",
|
|
804
|
+
"-z",
|
|
805
|
+
"--",
|
|
806
|
+
".*",
|
|
807
|
+
...ROOT_TEMPLATE_FILES
|
|
808
|
+
], { cwd: workspaceRoot });
|
|
809
|
+
return stdout.split("\0").map(normalizeRelativePath).filter(Boolean).filter((relativePath) => !ROOT_TEMPLATE_EXCLUDED_FILES.has(relativePath)).filter((relativePath) => !isTechnicalGeneratedPath(relativePath));
|
|
810
|
+
}
|
|
811
|
+
async function copyRootSource(workspaceRoot, targetDir) {
|
|
812
|
+
await rm(targetDir, {
|
|
813
|
+
force: true,
|
|
814
|
+
recursive: true
|
|
815
|
+
});
|
|
816
|
+
const files = await collectTrackedRootTemplateFiles(workspaceRoot);
|
|
817
|
+
const manifestEntries = [];
|
|
818
|
+
for (const relativePath of files) {
|
|
819
|
+
const source = path.join(workspaceRoot, relativePath);
|
|
820
|
+
const target = path.join(targetDir, relativePath);
|
|
821
|
+
const sourceStat = await lstat(source);
|
|
822
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
823
|
+
await cp(source, target, {
|
|
824
|
+
recursive: true,
|
|
825
|
+
verbatimSymlinks: true
|
|
826
|
+
});
|
|
827
|
+
if (sourceStat.isSymbolicLink()) manifestEntries.push({
|
|
828
|
+
path: relativePath,
|
|
829
|
+
target: await readlink(source),
|
|
830
|
+
type: "symlink"
|
|
831
|
+
});
|
|
832
|
+
else if (sourceStat.isFile()) manifestEntries.push({
|
|
833
|
+
content: (await readFile(source)).toString("base64"),
|
|
834
|
+
path: relativePath,
|
|
835
|
+
type: "file"
|
|
836
|
+
});
|
|
837
|
+
}
|
|
838
|
+
await writeFile(path.join(path.dirname(targetDir), ROOT_TEMPLATE_MANIFEST_FILE), `${JSON.stringify(manifestEntries, null, 2)}\n`);
|
|
839
|
+
}
|
|
751
840
|
async function copyAdminSource(sourceDir, targetDir) {
|
|
752
841
|
await rm(targetDir, {
|
|
753
842
|
force: true,
|
|
@@ -861,6 +950,7 @@ async function generateSnapshot(workspaceRoot, sourceDir, targetDir) {
|
|
|
861
950
|
if (!existsSync(sourceDir)) throw new Error(`Admin source is missing: ${sourceDir}`);
|
|
862
951
|
const shellSourceDir = path.join(workspaceRoot, "packages/web/admin");
|
|
863
952
|
const shellTargetDir = path.join(path.dirname(targetDir), SHELL_TEMPLATE_NAME);
|
|
953
|
+
await copyRootSource(workspaceRoot, path.join(path.dirname(targetDir), ROOT_TEMPLATE_NAME));
|
|
864
954
|
await copyAdminSource(sourceDir, targetDir);
|
|
865
955
|
await copyShellSource(shellSourceDir, shellTargetDir);
|
|
866
956
|
await generateRouteTree(targetDir);
|
|
@@ -891,11 +981,22 @@ async function checkAdminTemplate(workspaceRoot, sourceDir, targetDir) {
|
|
|
891
981
|
const { metaContent } = await generateSnapshot(workspaceRoot, sourceDir, generatedDir);
|
|
892
982
|
const differences = await compareDirectories(targetDir, generatedDir);
|
|
893
983
|
const shellDifferences = await compareDirectories(path.join(path.dirname(targetDir), SHELL_TEMPLATE_NAME), path.join(tempDir, SHELL_TEMPLATE_NAME));
|
|
894
|
-
|
|
984
|
+
const rootDifferences = await compareDirectories(path.join(path.dirname(targetDir), ROOT_TEMPLATE_NAME), path.join(tempDir, ROOT_TEMPLATE_NAME));
|
|
985
|
+
differences.push(...rootDifferences.map((item) => ({
|
|
986
|
+
...item,
|
|
987
|
+
path: `${ROOT_TEMPLATE_NAME}/${item.path}`
|
|
988
|
+
})), ...shellDifferences.map((item) => ({
|
|
895
989
|
...item,
|
|
896
990
|
path: `${SHELL_TEMPLATE_NAME}/${item.path}`
|
|
897
991
|
})));
|
|
898
992
|
const currentMetaContent = await readMetaContent(path.join(path.dirname(targetDir), TEMPLATE_META_FILE));
|
|
993
|
+
const rootManifestPath = path.join(path.dirname(targetDir), ROOT_TEMPLATE_MANIFEST_FILE);
|
|
994
|
+
const generatedRootManifestPath = path.join(tempDir, ROOT_TEMPLATE_MANIFEST_FILE);
|
|
995
|
+
const [currentRootManifest, generatedRootManifest] = await Promise.all([readMetaContent(rootManifestPath), readMetaContent(generatedRootManifestPath)]);
|
|
996
|
+
if (currentRootManifest !== generatedRootManifest) differences.push({
|
|
997
|
+
path: ROOT_TEMPLATE_MANIFEST_FILE,
|
|
998
|
+
type: currentRootManifest ? "changed" : "added"
|
|
999
|
+
});
|
|
899
1000
|
if (currentMetaContent !== metaContent) differences.push({
|
|
900
1001
|
path: TEMPLATE_META_FILE,
|
|
901
1002
|
type: currentMetaContent ? "changed" : "added"
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as createCommitMessageRegExp, c as locales, d as replaceEnvValue, f as toStoragePrefix, h as genChangelog, i as release, l as createAdminTemplate, m as cleanup, n as updatePkg, o as gitCommit, p as toTitle, r as syncAdminTemplate, s as gitCommitVerify, t as loadCliOptions, u as normalizePackageName } from "./config-
|
|
1
|
+
import { a as createCommitMessageRegExp, c as locales, d as replaceEnvValue, f as toStoragePrefix, h as genChangelog, i as release, l as createAdminTemplate, m as cleanup, n as updatePkg, o as gitCommit, p as toTitle, r as syncAdminTemplate, s as gitCommitVerify, t as loadCliOptions, u as normalizePackageName } from "./config-DWrHl2hS.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/index.ts
|
|
4
4
|
/**
|
package/package.json
CHANGED
|
@@ -77,10 +77,9 @@
|
|
|
77
77
|
- 🏠 **admin shell**(`packages/web/admin`,经 `@shell/*` 别名引用)- 后台应用壳源码:
|
|
78
78
|
布局与菜单权限(`@shell/layouts`)、主题与 antd 集成(`@shell/theme`)、国际化
|
|
79
79
|
(`@shell/i18n`)、通知(`@shell/notification`)、启动插件(`@shell/runtime`)、
|
|
80
|
-
|
|
80
|
+
开发调试面板(`@shell/devtools`)、全局样式(`@shell/styles`)与全局类型。不发布;`sa create-admin` 生成独立项目时
|
|
81
81
|
整目录复制进 `src/framework`,代码归你所有、可随意修改
|
|
82
82
|
- ⚡️ **@skyroc/web-admin-vite** - Vite 构建辅助与插件预设
|
|
83
|
-
- 🛠️ **@skyroc/web-admin-devtools** - 仅开发态的 devtools 面板
|
|
84
83
|
- 🌈 **@skyroc/web-ui** - 基于 Radix UI + Tailwind 的现代 React 组件库
|
|
85
84
|
- 🎯 **@shell/ui/antd** - Ant Design 复合组件(admin shell 的一部分)
|
|
86
85
|
- 🔲 **@shell/ui/compose** - 无状态复合组件(admin shell 的一部分)
|
|
@@ -39,16 +39,22 @@
|
|
|
39
39
|
"update-pkg": "sa update-pkg"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
+
"@better-scroll/core": "catalog:web",
|
|
43
|
+
"@dnd-kit/core": "^6.3.1",
|
|
44
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
45
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
42
46
|
"@skyroc/axios": "workspace:*",
|
|
43
47
|
"@skyroc/color": "workspace:*",
|
|
44
48
|
"@skyroc/core-state": "workspace:*",
|
|
45
49
|
"@skyroc/hooks": "workspace:*",
|
|
46
50
|
"@skyroc/service": "workspace:*",
|
|
47
51
|
"@skyroc/utils": "workspace:*",
|
|
48
|
-
"@skyroc/web-admin-devtools": "workspace:*",
|
|
49
52
|
"@skyroc/web-ui": "workspace:*",
|
|
53
|
+
"@tanstack/react-devtools": "catalog:web",
|
|
50
54
|
"@tanstack/react-query": "catalog:core",
|
|
55
|
+
"@tanstack/react-query-devtools": "catalog:web",
|
|
51
56
|
"@tanstack/react-router": "catalog:web",
|
|
57
|
+
"@tanstack/react-router-devtools": "catalog:web",
|
|
52
58
|
"ahooks": "catalog:utils",
|
|
53
59
|
"antd": "catalog:web",
|
|
54
60
|
"clsx": "catalog:utils",
|
|
@@ -56,6 +62,7 @@
|
|
|
56
62
|
"defu": "catalog:utils",
|
|
57
63
|
"i18next": "catalog:i18n",
|
|
58
64
|
"jotai": "catalog:core",
|
|
65
|
+
"jotai-devtools": "catalog:web",
|
|
59
66
|
"motion": "catalog:ui-shared",
|
|
60
67
|
"nprogress": "catalog:ui-shared",
|
|
61
68
|
"react": "catalog:core",
|
|
@@ -68,7 +75,7 @@
|
|
|
68
75
|
"@iconify/json": "catalog:ui-shared",
|
|
69
76
|
"@iconify/react": "catalog:ui-shared",
|
|
70
77
|
"@iconify/types": "catalog:ui-shared",
|
|
71
|
-
"@
|
|
78
|
+
"@skyroc/uno-config": "workspace:*",
|
|
72
79
|
"@skyroc/scripts": "workspace:*",
|
|
73
80
|
"@skyroc/web-admin-vite": "workspace:*",
|
|
74
81
|
"@svgr/core": "catalog:web",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JotaiProvider, globalStore } from '@skyroc/core-state';
|
|
2
|
-
import type { AdminDevtoolsProps } from '@
|
|
2
|
+
import type { AdminDevtoolsProps } from '@shell/devtools';
|
|
3
3
|
import { NotificationProvider } from '@shell/notification';
|
|
4
4
|
import { useSettingsTheme } from '@shell/theme';
|
|
5
5
|
import { LazyAnimate } from '@shell/ui/compose';
|
|
@@ -22,7 +22,7 @@ interface ProviderProps {
|
|
|
22
22
|
|
|
23
23
|
// 开发环境才加载 Devtools,生产环境会被 tree-shaking 移除
|
|
24
24
|
const AdminDevtools = import.meta.env.DEV
|
|
25
|
-
? lazy(() => import('@
|
|
25
|
+
? lazy(() => import('@shell/devtools').then(mod => ({ default: mod.AdminDevtools })))
|
|
26
26
|
: (_props: AdminDevtoolsProps) => null;
|
|
27
27
|
|
|
28
28
|
const Devtools = () => {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" role="img" aria-label="Skyroc 天鹏">
|
|
2
|
-
<path fill="
|
|
2
|
+
<path fill="currentColor" fill-rule="evenodd" d="M 8.31 49.69 Q 8.00 51.38 8.00 54.15 Q 8.00 56.92 8.46 59.08 Q 8.92 61.23 9.85 63.54 Q 10.77 65.85 12.31 68.15 Q 13.85 70.46 15.77 72.38 Q 17.69 74.31 19.85 75.85 Q 22.00 77.38 24.46 78.62 Q 26.92 79.85 30.85 81.00 Q 34.77 82.15 31.92 82.23 Q 29.08 82.31 27.38 82.00 Q 25.69 81.69 23.85 81.08 Q 22.00 80.46 19.23 78.92 Q 16.46 77.38 16.38 78.08 Q 16.31 78.77 16.77 80.15 Q 17.23 81.54 18.15 83.23 Q 19.08 84.92 22.08 87.92 Q 25.08 90.92 28.15 92.46 Q 31.23 94.00 36.00 94.77 Q 40.77 95.54 44.62 95.23 Q 48.46 94.92 53.85 93.69 Q 59.23 92.46 62.15 92.46 Q 65.08 92.46 67.38 93.38 Q 69.69 94.31 70.85 95.46 Q 72.00 96.62 72.46 97.54 Q 72.92 98.46 72.77 100.77 Q 72.62 103.08 71.54 105.38 Q 70.46 107.69 66.92 113.23 Q 63.38 118.77 62.92 120.31 Q 62.46 121.85 62.46 123.54 Q 62.46 125.23 63.08 126.92 Q 63.69 128.62 64.69 129.62 Q 65.69 130.62 69.00 123.92 Q 72.31 117.23 73.92 111.15 Q 75.54 105.08 75.62 108.38 Q 75.69 111.69 74.31 118.31 Q 72.92 124.92 72.77 126.92 Q 72.62 128.92 72.92 130.62 Q 73.23 132.31 74.15 134.31 Q 75.08 136.31 77.31 139.00 Q 79.54 141.69 80.00 141.69 Q 80.46 141.69 81.31 140.85 Q 82.15 140.00 83.85 137.69 Q 85.54 135.38 86.46 132.46 Q 87.38 129.54 87.23 127.08 Q 87.08 124.62 85.69 117.54 Q 84.31 110.46 84.38 107.62 Q 84.46 104.77 86.23 111.31 Q 88.00 117.85 91.00 124.23 Q 94.00 130.62 95.00 129.77 Q 96.00 128.92 96.77 127.23 Q 97.54 125.54 97.54 123.38 Q 97.54 121.23 97.08 119.85 Q 96.62 118.46 93.38 113.54 Q 90.15 108.62 88.77 105.54 Q 87.38 102.46 87.23 100.77 Q 87.08 99.08 88.00 97.38 Q 88.92 95.69 90.08 94.69 Q 91.23 93.69 93.23 92.92 Q 95.23 92.15 97.54 92.15 Q 99.85 92.15 107.08 93.69 Q 114.31 95.23 118.31 95.23 Q 122.31 95.23 126.31 94.15 Q 130.31 93.08 133.08 91.38 Q 135.85 89.69 138.69 86.54 Q 141.54 83.38 142.69 80.38 Q 143.85 77.38 139.08 79.54 Q 134.31 81.69 132.62 82.00 Q 130.92 82.31 128.23 82.23 Q 125.54 82.15 129.00 81.15 Q 132.46 80.15 135.54 78.62 Q 138.62 77.08 140.31 75.85 Q 142.00 74.62 144.69 71.77 Q 147.38 68.92 148.77 66.46 Q 150.15 64.00 150.92 61.54 Q 151.69 59.08 151.85 55.08 Q 152.00 51.08 151.54 49.08 Q 151.08 47.08 150.77 47.08 Q 150.46 47.08 147.85 51.08 Q 145.23 55.08 140.69 59.15 Q 136.15 63.23 131.08 66.00 Q 126.00 68.77 119.69 70.92 Q 113.38 73.08 109.69 74.77 Q 106.00 76.46 101.85 79.85 Q 97.69 83.23 97.46 83.15 Q 97.23 83.08 98.77 80.92 Q 100.31 78.77 103.62 75.92 Q 106.92 73.08 110.62 71.08 Q 114.31 69.08 119.54 67.08 Q 124.77 65.08 129.54 62.46 Q 134.31 59.85 137.31 57.15 Q 140.31 54.46 141.85 52.31 Q 143.38 50.15 144.77 46.31 Q 146.15 42.46 146.15 38.62 Q 146.15 34.77 145.38 32.00 Q 144.62 29.23 143.54 26.92 Q 142.46 24.62 139.92 21.46 Q 137.38 18.31 136.54 22.69 Q 135.69 27.08 134.62 29.85 Q 133.54 32.62 130.00 38.00 Q 126.46 43.38 121.62 48.08 Q 116.77 52.77 108.15 59.38 Q 99.54 66.00 95.08 70.77 Q 90.62 75.54 89.92 75.00 Q 89.23 74.46 88.46 73.08 Q 87.69 71.69 87.38 68.92 Q 87.08 66.15 88.15 63.69 Q 89.23 61.23 90.54 60.08 Q 91.85 58.92 93.15 58.54 Q 94.46 58.15 93.77 57.15 Q 93.08 56.15 88.92 56.31 Q 84.77 56.46 82.62 57.69 Q 80.46 58.92 78.69 60.85 Q 76.92 62.77 77.85 62.77 Q 78.77 62.77 76.62 66.77 Q 74.46 70.77 72.85 72.38 Q 71.23 74.00 70.15 74.46 Q 69.08 74.92 64.46 70.15 Q 59.85 65.38 51.23 58.77 Q 42.62 52.15 38.08 47.77 Q 33.54 43.38 31.54 40.77 Q 29.54 38.15 27.85 35.08 Q 26.15 32.00 25.08 28.92 Q 24.00 25.85 23.31 22.08 Q 22.62 18.31 20.23 21.31 Q 17.85 24.31 16.77 26.46 Q 15.69 28.62 14.77 31.85 Q 13.85 35.08 13.85 38.77 Q 13.85 42.46 15.23 46.31 Q 16.62 50.15 18.15 52.31 Q 19.69 54.46 23.62 57.77 Q 27.54 61.08 30.77 62.77 Q 34.00 64.46 40.00 66.77 Q 46.00 69.08 50.46 71.54 Q 54.92 74.00 57.77 76.69 Q 60.62 79.38 61.77 81.46 Q 62.92 83.54 60.46 81.23 Q 58.00 78.92 55.23 77.08 Q 52.46 75.23 49.69 74.00 Q 46.92 72.77 39.85 70.46 Q 32.77 68.15 27.69 65.23 Q 22.62 62.31 19.00 59.00 Q 15.38 55.69 12.38 51.31 Q 9.38 46.92 9.00 47.46 Q 8.62 48.00 8.31 49.69 Z"/>
|
|
3
3
|
</svg>
|