+
diff --git a/packages/stage-ui/src/components/Layouts/index.ts b/packages/stage-ui/src/components/Layouts/index.ts
new file mode 100644
index 000000000..539f3e070
--- /dev/null
+++ b/packages/stage-ui/src/components/Layouts/index.ts
@@ -0,0 +1 @@
+export { default as PageHeader } from './PageHeader.vue'
diff --git a/packages/stage-ui/src/components/Menu/IconItem.vue b/packages/stage-ui/src/components/Menu/IconItem.vue
index 34ae50673..db0f87910 100644
--- a/packages/stage-ui/src/components/Menu/IconItem.vue
+++ b/packages/stage-ui/src/components/Menu/IconItem.vue
@@ -63,9 +63,9 @@ defineProps<{
z-index: -1;
width: 25%;
height: 100%;
- transition: all 0.4s ease-in-out;
mask-image: linear-gradient(120deg, white 30%, transparent 50%);
opacity: 0;
+ transition: all 0.4s ease-in-out;
}
.menu-icon-item:hover::before,
diff --git a/packages/stage-ui/src/components/Providers/ProviderSettingsLayout.vue b/packages/stage-ui/src/components/Providers/ProviderSettingsLayout.vue
index 605c6233e..ee26fc368 100644
--- a/packages/stage-ui/src/components/Providers/ProviderSettingsLayout.vue
+++ b/packages/stage-ui/src/components/Providers/ProviderSettingsLayout.vue
@@ -1,33 +1,22 @@
-
-
-
-
- Provider
-
-
- {{ providerName }}
-
-
-
+
-import { computed } from 'vue'
+import { PageHeader } from '@proj-airi/stage-ui/components'
import { useI18n } from 'vue-i18n'
-const props = defineProps<{
- /**
- * Provider name to display in the header
- */
- providerName?: string
-
- /**
- * Provider icon CSS class
- */
+defineProps<{
+ providerName: string
providerIcon?: string
-
- /**
- * Provider icon color CSS class
- */
providerIconColor?: string
-
- /**
- * Optional handler for back button
- */
onBack?: () => void
-
- /**
- * Optional title to display (overrides providerName)
- */
- title?: string
-
- /**
- * Optional subtitle to display
- */
- subtitle?: string
-
- /**
- * Optional category label to display above the title
- */
- categoryLabel?: string
-}>()
-
-// Expose event handlers
-const emit = defineEmits<{
- back: []
-}>()
-
-// Define slots
-defineSlots<{
- default: () => any
- title: () => any
- subtitle: () => any
- backButton: () => any
- headerExtra: () => any
- header: () => any
}>()
const { t } = useI18n()
-
-// Compute effective title
-const effectiveTitle = computed(() => props.title || props.providerName || '')
-
-// Compute effective category label
-const effectiveCategoryLabel = computed(() => props.categoryLabel || t('settings.pages.providers.title'))
-
-// Handle back button click
-function handleBackClick() {
- if (props.onBack) {
- props.onBack()
- }
- emit('back')
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ effectiveCategoryLabel }}
-
-
- {{ effectiveTitle }}
-
-
-
-
-
-
- {{ subtitle }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/packages/stage-ui/src/components/index.ts b/packages/stage-ui/src/components/index.ts
index a8f1eecee..7e32af7c6 100644
--- a/packages/stage-ui/src/components/index.ts
+++ b/packages/stage-ui/src/components/index.ts
@@ -4,6 +4,7 @@ export { default as Collapsable } from './Collapsable.vue'
export * from './Form'
export * from './Gadgets'
export * from './Graphics'
+export * from './Layouts'
export { default as Live2DCanvas } from './Live2D/Canvas.vue'
export { default as Live2DModel } from './Live2D/Model.vue'
export * from './Menu'