초기 커밋.
103
App.xaml
Normal file
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<Application
|
||||
x:Class="TornadoAce_GSShop.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="using:TornadoAce_GSShop"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
|
||||
<!-- Other merged dictionaries here -->
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<SolidColorBrush x:Key="AppCanvasBrush" Color="#F4F6F8" />
|
||||
<SolidColorBrush x:Key="AppSurfaceBrush" Color="#FBFCFD" />
|
||||
<SolidColorBrush x:Key="AppSurfaceElevatedBrush" Color="#FFFFFF" />
|
||||
<SolidColorBrush x:Key="AppSurfaceSubtleBrush" Color="#EEF3F7" />
|
||||
<SolidColorBrush x:Key="AppLineBrush" Color="#D7DEE7" />
|
||||
<SolidColorBrush x:Key="AppTextBrush" Color="#18212F" />
|
||||
<SolidColorBrush x:Key="AppTextSecondaryBrush" Color="#596579" />
|
||||
<SolidColorBrush x:Key="AppTextMutedBrush" Color="#7B8798" />
|
||||
<SolidColorBrush x:Key="AppAccentBrush" Color="#2563EB" />
|
||||
<SolidColorBrush x:Key="AppAccentSoftBrush" Color="#E6EEFF" />
|
||||
<SolidColorBrush x:Key="AppMintBrush" Color="#00A884" />
|
||||
<SolidColorBrush x:Key="AppMintSoftBrush" Color="#DFF8F1" />
|
||||
<SolidColorBrush x:Key="AppCoralBrush" Color="#F05A4F" />
|
||||
<SolidColorBrush x:Key="AppCoralSoftBrush" Color="#FFE8E5" />
|
||||
<SolidColorBrush x:Key="AppAmberBrush" Color="#B7791F" />
|
||||
<SolidColorBrush x:Key="AppAmberSoftBrush" Color="#FFF3D8" />
|
||||
<SolidColorBrush x:Key="AppInkBrush" Color="#111827" />
|
||||
|
||||
<Style x:Key="HeroTitleTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontFamily" Value="Segoe UI Variable Display" />
|
||||
<Setter Property="FontSize" Value="30" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
<Setter Property="Foreground" Value="{StaticResource AppTextBrush}" />
|
||||
<Setter Property="TextWrapping" Value="WrapWholeWords" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="SectionTitleTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontFamily" Value="Segoe UI Variable Display" />
|
||||
<Setter Property="FontSize" Value="18" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
<Setter Property="Foreground" Value="{StaticResource AppTextBrush}" />
|
||||
<Setter Property="TextWrapping" Value="WrapWholeWords" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MetricTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontFamily" Value="Segoe UI Variable Display" />
|
||||
<Setter Property="FontSize" Value="26" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
<Setter Property="Foreground" Value="{StaticResource AppTextBrush}" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="LabelTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="12" />
|
||||
<Setter Property="Foreground" Value="{StaticResource AppTextMutedBrush}" />
|
||||
<Setter Property="TextWrapping" Value="WrapWholeWords" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="BodyTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="14" />
|
||||
<Setter Property="Foreground" Value="{StaticResource AppTextSecondaryBrush}" />
|
||||
<Setter Property="TextWrapping" Value="WrapWholeWords" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MonoTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontFamily" Value="Cascadia Mono" />
|
||||
<Setter Property="FontSize" Value="12" />
|
||||
<Setter Property="Foreground" Value="{StaticResource AppTextMutedBrush}" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PanelBorderStyle" TargetType="Border">
|
||||
<Setter Property="Background" Value="{StaticResource AppSurfaceElevatedBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{StaticResource AppLineBrush}" />
|
||||
<Setter Property="BorderThickness" Value="1" />
|
||||
<Setter Property="CornerRadius" Value="8" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PrimaryActionButtonStyle"
|
||||
TargetType="Button"
|
||||
BasedOn="{StaticResource DefaultButtonStyle}">
|
||||
<Setter Property="Background" Value="{StaticResource AppInkBrush}" />
|
||||
<Setter Property="Foreground" Value="White" />
|
||||
<Setter Property="CornerRadius" Value="8" />
|
||||
<Setter Property="Padding" Value="14,9" />
|
||||
<Setter Property="FontWeight" Value="SemiBold" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="QuietButtonStyle"
|
||||
TargetType="Button"
|
||||
BasedOn="{StaticResource DefaultButtonStyle}">
|
||||
<Setter Property="Background" Value="{StaticResource AppSurfaceSubtleBrush}" />
|
||||
<Setter Property="Foreground" Value="{StaticResource AppTextBrush}" />
|
||||
<Setter Property="BorderBrush" Value="{StaticResource AppLineBrush}" />
|
||||
<Setter Property="CornerRadius" Value="8" />
|
||||
<Setter Property="Padding" Value="12,8" />
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
74
App.xaml.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
using Microsoft.UI.Windowing;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using Microsoft.UI.Xaml.Navigation;
|
||||
using System;
|
||||
using Windows.Graphics;
|
||||
using WinRT.Interop;
|
||||
|
||||
namespace TornadoAce_GSShop
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides application-specific behavior to supplement the default Application class.
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
private Window? window;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes the singleton application object. This is the first line of authored code
|
||||
/// executed, and as such is the logical equivalent of main() or WinMain().
|
||||
/// </summary>
|
||||
public App()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when the application is launched normally by the end user. Other entry points
|
||||
/// will be used such as when the application is launched to open a specific file.
|
||||
/// </summary>
|
||||
/// <param name="e">Details about the launch request and process.</param>
|
||||
protected override void OnLaunched(LaunchActivatedEventArgs e)
|
||||
{
|
||||
window ??= new Window
|
||||
{
|
||||
Title = "TornadoAce GS Shop"
|
||||
};
|
||||
window.SystemBackdrop = new MicaBackdrop();
|
||||
|
||||
if (window.Content is not Frame rootFrame)
|
||||
{
|
||||
rootFrame = new Frame();
|
||||
rootFrame.NavigationFailed += OnNavigationFailed;
|
||||
window.Content = rootFrame;
|
||||
}
|
||||
|
||||
_ = rootFrame.Navigate(typeof(MainPage), e.Arguments);
|
||||
ConfigureWindow(window);
|
||||
window.Activate();
|
||||
}
|
||||
|
||||
private static void ConfigureWindow(Window targetWindow)
|
||||
{
|
||||
var windowHandle = WindowNative.GetWindowHandle(targetWindow);
|
||||
if (windowHandle == IntPtr.Zero)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var windowId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(windowHandle);
|
||||
var appWindow = AppWindow.GetFromWindowId(windowId);
|
||||
appWindow.Resize(new SizeInt32(1440, 900));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when Navigation to a certain page fails
|
||||
/// </summary>
|
||||
/// <param name="sender">The Frame which failed navigation</param>
|
||||
/// <param name="e">Details about the navigation failure</param>
|
||||
void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
|
||||
{
|
||||
throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
Assets/LockScreenLogo.scale-200.png
Normal file
|
After Width: | Height: | Size: 432 B |
BIN
Assets/SplashScreen.scale-200.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
Assets/Square150x150Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
Assets/Square44x44Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
Assets/Square44x44Logo.targetsize-24_altform-unplated.png
Normal file
|
After Width: | Height: | Size: 283 B |
BIN
Assets/StoreLogo.png
Normal file
|
After Width: | Height: | Size: 456 B |
BIN
Assets/Wide310x150Logo.scale-200.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
4
Imports.cs
Normal file
@@ -0,0 +1,4 @@
|
||||
global using TornadoAce_GSShop.Views;
|
||||
|
||||
global using Microsoft.UI.Xaml;
|
||||
global using Microsoft.UI.Xaml.Controls;
|
||||
51
Package.appxmanifest
Normal file
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<Package
|
||||
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
|
||||
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
|
||||
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
||||
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
|
||||
IgnorableNamespaces="uap rescap">
|
||||
|
||||
<Identity
|
||||
Name="a20f29f2-bfdb-4b01-9066-4df46dfad86c"
|
||||
Publisher="CN=User Name"
|
||||
Version="1.0.0.0" />
|
||||
|
||||
<mp:PhoneIdentity PhoneProductId="a20f29f2-bfdb-4b01-9066-4df46dfad86c" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
|
||||
|
||||
<Properties>
|
||||
<DisplayName>TornadoAce_GSShop</DisplayName>
|
||||
<PublisherDisplayName>User Name</PublisherDisplayName>
|
||||
<Logo>Assets\StoreLogo.png</Logo>
|
||||
</Properties>
|
||||
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
|
||||
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
|
||||
</Dependencies>
|
||||
|
||||
<Resources>
|
||||
<Resource Language="x-generate"/>
|
||||
</Resources>
|
||||
|
||||
<Applications>
|
||||
<Application Id="App"
|
||||
Executable="$targetnametoken$.exe"
|
||||
EntryPoint="$targetentrypoint$">
|
||||
<uap:VisualElements
|
||||
DisplayName="TornadoAce_GSShop"
|
||||
Description="TornadoAce_GSShop"
|
||||
BackgroundColor="transparent"
|
||||
Square150x150Logo="Assets\Square150x150Logo.png"
|
||||
Square44x44Logo="Assets\Square44x44Logo.png">
|
||||
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" />
|
||||
<uap:SplashScreen Image="Assets\SplashScreen.png" />
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
|
||||
<Capabilities>
|
||||
<rescap:Capability Name="runFullTrust" />
|
||||
</Capabilities>
|
||||
</Package>
|
||||
10
Properties/launchSettings.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"profiles": {
|
||||
"TornadoAce_GSShop (Package)": {
|
||||
"commandName": "MsixPackage"
|
||||
},
|
||||
"TornadoAce_GSShop (Unpackaged)": {
|
||||
"commandName": "Project"
|
||||
}
|
||||
}
|
||||
}
|
||||
76
TornadoAce_GSShop.csproj
Normal file
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
|
||||
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
|
||||
<OutputType>WinExe</OutputType>
|
||||
|
||||
<!-- WinUI 3 -->
|
||||
<UseWinUI>true</UseWinUI>
|
||||
<WinUISDKReferences>false</WinUISDKReferences>
|
||||
<EnableMsixTooling>true</EnableMsixTooling>
|
||||
|
||||
<!-- Project Options -->
|
||||
<Nullable>enable</Nullable>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>TornadoAce_GSShop</RootNamespace>
|
||||
|
||||
<!-- App Options -->
|
||||
<UseRidGraph>true</UseRidGraph>
|
||||
<Platforms>x64</Platforms>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
<RuntimeIdentifiers>win-x64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(RuntimeIdentifier)'==''">
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="Exists('Properties\PublishProfiles\win-$(Platform).pubxml')">
|
||||
<PublishProfile>win-$(Platform).pubxml</PublishProfile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="Assets\SplashScreen.scale-200.png" />
|
||||
<Content Include="Assets\LockScreenLogo.scale-200.png" />
|
||||
<Content Include="Assets\Square150x150Logo.scale-200.png" />
|
||||
<Content Include="Assets\Square44x44Logo.scale-200.png" />
|
||||
<Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
|
||||
<Content Include="Assets\StoreLogo.png" />
|
||||
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="TornadoAce_GSShop.slnx" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.260209005" />
|
||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7705" />
|
||||
|
||||
<Manifest Include="$(ApplicationManifest)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!--
|
||||
Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
|
||||
Tools extension to be activated for this project even if the Windows App SDK Nuget
|
||||
package has not yet been restored.
|
||||
-->
|
||||
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
|
||||
<ProjectCapability Include="Msix"/>
|
||||
</ItemGroup>
|
||||
|
||||
<!--
|
||||
Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
|
||||
Explorer "Package and Publish" context menu entry to be enabled for this project even if
|
||||
the Windows App SDK Nuget package has not yet been restored.
|
||||
-->
|
||||
<PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
|
||||
<HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="Globals">
|
||||
<WebView2EnableCsWinRTProjection>False</WebView2EnableCsWinRTProjection>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
9
TornadoAce_GSShop.slnx
Normal file
@@ -0,0 +1,9 @@
|
||||
<Solution>
|
||||
<Project Path="TornadoAce_GSShop.csproj">
|
||||
<Deploy />
|
||||
</Project>
|
||||
<Properties Name="Visual Studio">
|
||||
<!-- Support is provisionally available on Visual Studio 17.10 and later versions. -->
|
||||
<Property Name="OpenWith" Value="17" />
|
||||
</Properties>
|
||||
</Solution>
|
||||
525
Views/MainPage.xaml
Normal file
@@ -0,0 +1,525 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<Page
|
||||
x:Class="TornadoAce_GSShop.Views.MainPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="using:TornadoAce_GSShop"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
Background="{StaticResource AppCanvasBrush}"
|
||||
Loaded="Page_Loaded"
|
||||
mc:Ignorable="d">
|
||||
<NavigationView
|
||||
x:Name="MainNavigation"
|
||||
AlwaysShowHeader="False"
|
||||
Background="{StaticResource AppCanvasBrush}"
|
||||
IsBackButtonVisible="Collapsed"
|
||||
IsSettingsVisible="False"
|
||||
OpenPaneLength="248"
|
||||
PaneDisplayMode="Left"
|
||||
RequestedTheme="Light">
|
||||
<NavigationView.PaneHeader>
|
||||
<Grid Margin="12,16,12,8">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="38" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border
|
||||
Width="34"
|
||||
Height="34"
|
||||
Background="{StaticResource AppInkBrush}"
|
||||
CornerRadius="8">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="15"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="White"
|
||||
Text="GS" />
|
||||
</Border>
|
||||
<StackPanel Grid.Column="1" Spacing="0">
|
||||
<TextBlock
|
||||
FontFamily="Segoe UI Variable Display"
|
||||
FontSize="17"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppTextBrush}"
|
||||
Text="TornadoAce" />
|
||||
<TextBlock
|
||||
Style="{StaticResource LabelTextStyle}"
|
||||
Text="GS Shop Control" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</NavigationView.PaneHeader>
|
||||
|
||||
<NavigationView.MenuItems>
|
||||
<NavigationViewItem Content="홈" IsSelected="True" Tag="home">
|
||||
<NavigationViewItem.Icon>
|
||||
<SymbolIcon Symbol="Home" />
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem Content="상품" Tag="products">
|
||||
<NavigationViewItem.Icon>
|
||||
<SymbolIcon Symbol="Library" />
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem Content="주문" Tag="orders">
|
||||
<NavigationViewItem.Icon>
|
||||
<SymbolIcon Symbol="Document" />
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem Content="고객" Tag="customers">
|
||||
<NavigationViewItem.Icon>
|
||||
<SymbolIcon Symbol="Contact" />
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem Content="편성" Tag="schedule">
|
||||
<NavigationViewItem.Icon>
|
||||
<SymbolIcon Symbol="Calendar" />
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
<NavigationViewItem Content="설정" Tag="settings">
|
||||
<NavigationViewItem.Icon>
|
||||
<SymbolIcon Symbol="Setting" />
|
||||
</NavigationViewItem.Icon>
|
||||
</NavigationViewItem>
|
||||
</NavigationView.MenuItems>
|
||||
|
||||
<NavigationView.PaneFooter>
|
||||
<Border
|
||||
Margin="12"
|
||||
Padding="12"
|
||||
Background="{StaticResource AppSurfaceBrush}"
|
||||
BorderBrush="{StaticResource AppLineBrush}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="8">
|
||||
<StackPanel Spacing="8">
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="채널 상태" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<Ellipse
|
||||
Width="9"
|
||||
Height="9"
|
||||
VerticalAlignment="Center"
|
||||
Fill="{StaticResource AppMintBrush}" />
|
||||
<TextBlock
|
||||
FontSize="13"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppTextBrush}"
|
||||
Text="Live Preview" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</NavigationView.PaneFooter>
|
||||
|
||||
<Grid Padding="26" RowSpacing="20">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid ColumnSpacing="20">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Spacing="6">
|
||||
<TextBlock Style="{StaticResource HeroTitleTextStyle}" Text="GS Shop 운영 홈" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<TextBlock Style="{StaticResource BodyTextStyle}" Text="상품, 주문, 웹 미리보기를 한 화면에서 확인" />
|
||||
<TextBlock Style="{StaticResource BodyTextStyle}" Text="·" />
|
||||
<TextBlock x:Name="UpdatedTextBlock" Style="{StaticResource BodyTextStyle}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Orientation="Horizontal"
|
||||
Spacing="8"
|
||||
VerticalAlignment="Top">
|
||||
<Button Style="{StaticResource QuietButtonStyle}" ToolTipService.ToolTip="새로 고침">
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<SymbolIcon Symbol="Refresh" />
|
||||
<TextBlock Text="동기화" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Style="{StaticResource QuietButtonStyle}" ToolTipService.ToolTip="내보내기">
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<SymbolIcon Symbol="Download" />
|
||||
<TextBlock Text="내보내기" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Style="{StaticResource PrimaryActionButtonStyle}" ToolTipService.ToolTip="라이브 적용">
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<SymbolIcon Foreground="White" Symbol="Play" />
|
||||
<TextBlock Foreground="White" Text="적용" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" ColumnSpacing="20">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="380" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid RowSpacing="16">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid ColumnSpacing="12">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Border Padding="16" Style="{StaticResource PanelBorderStyle}">
|
||||
<StackPanel Spacing="10">
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="오늘 주문" />
|
||||
<TextBlock Style="{StaticResource MetricTextStyle}" Text="1,284" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<Border
|
||||
Padding="8,3"
|
||||
Background="{StaticResource AppMintSoftBrush}"
|
||||
CornerRadius="8">
|
||||
<TextBlock
|
||||
FontSize="12"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppMintBrush}"
|
||||
Text="+12.8%" />
|
||||
</Border>
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource LabelTextStyle}"
|
||||
Text="전일 대비" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Column="1"
|
||||
Padding="16"
|
||||
Style="{StaticResource PanelBorderStyle}">
|
||||
<StackPanel Spacing="10">
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="방송 상품" />
|
||||
<TextBlock Style="{StaticResource MetricTextStyle}" Text="36" />
|
||||
<ProgressBar
|
||||
Height="5"
|
||||
Foreground="{StaticResource AppAccentBrush}"
|
||||
Maximum="100"
|
||||
Value="68" />
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="68% 준비 완료" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Column="2"
|
||||
Padding="16"
|
||||
Style="{StaticResource PanelBorderStyle}">
|
||||
<StackPanel Spacing="10">
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="승인 대기" />
|
||||
<TextBlock Style="{StaticResource MetricTextStyle}" Text="7" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<Border
|
||||
Padding="8,3"
|
||||
Background="{StaticResource AppAmberSoftBrush}"
|
||||
CornerRadius="8">
|
||||
<TextBlock
|
||||
FontSize="12"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppAmberBrush}"
|
||||
Text="검수" />
|
||||
</Border>
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource LabelTextStyle}"
|
||||
Text="콘텐츠 확인" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Column="3"
|
||||
Padding="16"
|
||||
Style="{StaticResource PanelBorderStyle}">
|
||||
<StackPanel Spacing="10">
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="알림" />
|
||||
<TextBlock Style="{StaticResource MetricTextStyle}" Text="3" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<Border
|
||||
Padding="8,3"
|
||||
Background="{StaticResource AppCoralSoftBrush}"
|
||||
CornerRadius="8">
|
||||
<TextBlock
|
||||
FontSize="12"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppCoralBrush}"
|
||||
Text="주의" />
|
||||
</Border>
|
||||
<TextBlock
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource LabelTextStyle}"
|
||||
Text="가격 변경" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<Border Grid.Row="1" Style="{StaticResource PanelBorderStyle}">
|
||||
<Grid RowSpacing="12">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Padding="16" ColumnSpacing="12">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Spacing="8" VerticalAlignment="Center">
|
||||
<Button
|
||||
MinWidth="36"
|
||||
Padding="0"
|
||||
Style="{StaticResource QuietButtonStyle}"
|
||||
ToolTipService.ToolTip="뒤로">
|
||||
<SymbolIcon Symbol="Back" />
|
||||
</Button>
|
||||
<Button
|
||||
MinWidth="36"
|
||||
Padding="0"
|
||||
Style="{StaticResource QuietButtonStyle}"
|
||||
ToolTipService.ToolTip="앞으로">
|
||||
<SymbolIcon Symbol="Forward" />
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
<Border
|
||||
Grid.Column="1"
|
||||
Height="38"
|
||||
Padding="12,0"
|
||||
Background="{StaticResource AppSurfaceSubtleBrush}"
|
||||
BorderBrush="{StaticResource AppLineBrush}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="8">
|
||||
<Grid ColumnSpacing="8">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<SymbolIcon
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource AppTextMutedBrush}"
|
||||
Symbol="Globe" />
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource MonoTextStyle}"
|
||||
Text="webview2://preview/gs-shop-home" />
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<StackPanel
|
||||
Grid.Column="2"
|
||||
Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<Button Style="{StaticResource QuietButtonStyle}" ToolTipService.ToolTip="미리보기 새로 고침">
|
||||
<SymbolIcon Symbol="Refresh" />
|
||||
</Button>
|
||||
<Button Style="{StaticResource QuietButtonStyle}" ToolTipService.ToolTip="새 창">
|
||||
<SymbolIcon Symbol="OpenPane" />
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid
|
||||
x:Name="PreviewHost"
|
||||
Grid.Row="1"
|
||||
Margin="16,0,16,16">
|
||||
<Border
|
||||
Background="#101620"
|
||||
BorderBrush="#202B39"
|
||||
BorderThickness="1"
|
||||
CornerRadius="8" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<ScrollViewer
|
||||
Grid.Column="1"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
VerticalScrollMode="Auto">
|
||||
<StackPanel Spacing="16">
|
||||
<Border Padding="16" Style="{StaticResource PanelBorderStyle}">
|
||||
<StackPanel Spacing="14">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Style="{StaticResource SectionTitleTextStyle}" Text="운영 큐" />
|
||||
<Border
|
||||
Grid.Column="1"
|
||||
Padding="8,4"
|
||||
Background="{StaticResource AppAccentSoftBrush}"
|
||||
CornerRadius="8">
|
||||
<TextBlock
|
||||
FontSize="12"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppAccentBrush}"
|
||||
Text="ON AIR" />
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<Grid RowSpacing="12">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid ColumnSpacing="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="32" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border
|
||||
Width="28"
|
||||
Height="28"
|
||||
Background="{StaticResource AppMintSoftBrush}"
|
||||
CornerRadius="8">
|
||||
<SymbolIcon
|
||||
Foreground="{StaticResource AppMintBrush}"
|
||||
Symbol="Accept" />
|
||||
</Border>
|
||||
<StackPanel Grid.Column="1" Spacing="2">
|
||||
<TextBlock
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppTextBrush}"
|
||||
Text="프라임 상품 카드" />
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="완료 · 14:20" />
|
||||
</StackPanel>
|
||||
<TextBlock
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource MonoTextStyle}"
|
||||
Text="A-01" />
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" ColumnSpacing="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="32" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border
|
||||
Width="28"
|
||||
Height="28"
|
||||
Background="{StaticResource AppAccentSoftBrush}"
|
||||
CornerRadius="8">
|
||||
<SymbolIcon
|
||||
Foreground="{StaticResource AppAccentBrush}"
|
||||
Symbol="Play" />
|
||||
</Border>
|
||||
<StackPanel Grid.Column="1" Spacing="2">
|
||||
<TextBlock
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppTextBrush}"
|
||||
Text="라이브 상세 배너" />
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="진행 중 · 14:32" />
|
||||
</StackPanel>
|
||||
<TextBlock
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource MonoTextStyle}"
|
||||
Text="B-04" />
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="2" ColumnSpacing="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="32" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border
|
||||
Width="28"
|
||||
Height="28"
|
||||
Background="{StaticResource AppAmberSoftBrush}"
|
||||
CornerRadius="8">
|
||||
<SymbolIcon
|
||||
Foreground="{StaticResource AppAmberBrush}"
|
||||
Symbol="Clock" />
|
||||
</Border>
|
||||
<StackPanel Grid.Column="1" Spacing="2">
|
||||
<TextBlock
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{StaticResource AppTextBrush}"
|
||||
Text="가격 비교 모듈" />
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="대기 · 15:00" />
|
||||
</StackPanel>
|
||||
<TextBlock
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource MonoTextStyle}"
|
||||
Text="C-11" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="16" Style="{StaticResource PanelBorderStyle}">
|
||||
<StackPanel Spacing="14">
|
||||
<TextBlock Style="{StaticResource SectionTitleTextStyle}" Text="화면 옵션" />
|
||||
<ComboBox
|
||||
Header="미리보기 채널"
|
||||
HorizontalAlignment="Stretch"
|
||||
SelectedIndex="0">
|
||||
<ComboBoxItem Content="메인 홈" />
|
||||
<ComboBoxItem Content="상품 상세" />
|
||||
<ComboBoxItem Content="주문 흐름" />
|
||||
</ComboBox>
|
||||
<ToggleSwitch
|
||||
Header="라이브 톤"
|
||||
IsOn="True"
|
||||
OffContent="기본"
|
||||
OnContent="활성" />
|
||||
<StackPanel Spacing="6">
|
||||
<TextBlock Style="{StaticResource LabelTextStyle}" Text="패널 밀도" />
|
||||
<Slider
|
||||
Maximum="100"
|
||||
Minimum="0"
|
||||
Value="64" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Padding="16" Style="{StaticResource PanelBorderStyle}">
|
||||
<StackPanel Spacing="14">
|
||||
<TextBlock Style="{StaticResource SectionTitleTextStyle}" Text="출시 체크" />
|
||||
<CheckBox Content="대표 이미지 확인" IsChecked="True" />
|
||||
<CheckBox Content="가격/혜택 문구 확인" IsChecked="True" />
|
||||
<CheckBox Content="모바일 미리보기 확인" />
|
||||
<Button
|
||||
HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource PrimaryActionButtonStyle}">
|
||||
<StackPanel
|
||||
HorizontalAlignment="Center"
|
||||
Orientation="Horizontal"
|
||||
Spacing="8">
|
||||
<SymbolIcon Foreground="White" Symbol="Send" />
|
||||
<TextBlock Foreground="White" Text="검수 요청" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</NavigationView>
|
||||
</Page>
|
||||
360
Views/MainPage.xaml.cs
Normal file
@@ -0,0 +1,360 @@
|
||||
namespace TornadoAce_GSShop.Views
|
||||
{
|
||||
public partial class MainPage : Page
|
||||
{
|
||||
private WebView2? previewWebView;
|
||||
|
||||
public MainPage()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
|
||||
private void Page_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
UpdatedTextBlock.Text = DateTime.Now.ToString("yyyy.MM.dd HH:mm");
|
||||
|
||||
previewWebView ??= new WebView2
|
||||
{
|
||||
Margin = new Thickness(1)
|
||||
};
|
||||
|
||||
if (PreviewHost.Children.Count == 1)
|
||||
{
|
||||
PreviewHost.Children.Add(previewWebView);
|
||||
}
|
||||
|
||||
previewWebView.NavigateToString(BuildPreviewHtml());
|
||||
}
|
||||
|
||||
private static string BuildPreviewHtml() =>
|
||||
"""
|
||||
<!doctype html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style>
|
||||
:root {
|
||||
color-scheme: light;
|
||||
--ink: #111827;
|
||||
--muted: #667085;
|
||||
--line: #d8e0ea;
|
||||
--blue: #2563eb;
|
||||
--mint: #00a884;
|
||||
--coral: #f05a4f;
|
||||
--amber: #b7791f;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
min-height: 100vh;
|
||||
font-family: "Segoe UI Variable", "Segoe UI", system-ui, sans-serif;
|
||||
color: var(--ink);
|
||||
background:
|
||||
radial-gradient(circle at 16% 18%, rgba(37, 99, 235, .15), transparent 30%),
|
||||
linear-gradient(135deg, #f7fafc 0%, #eef4f8 52%, #fbf2ef 100%);
|
||||
}
|
||||
|
||||
.page {
|
||||
min-height: 100vh;
|
||||
padding: 42px;
|
||||
display: grid;
|
||||
grid-template-rows: auto 1fr auto;
|
||||
gap: 28px;
|
||||
}
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 14px;
|
||||
}
|
||||
|
||||
.mark {
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
border-radius: 14px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
color: white;
|
||||
font-weight: 800;
|
||||
background: #111827;
|
||||
box-shadow: 0 18px 40px rgba(17, 24, 39, .18);
|
||||
}
|
||||
|
||||
.brand h1 {
|
||||
margin: 0;
|
||||
font-size: 26px;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.brand p {
|
||||
margin: 2px 0 0;
|
||||
color: var(--muted);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.chip-row {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.chip {
|
||||
padding: 8px 12px;
|
||||
border: 1px solid rgba(17, 24, 39, .08);
|
||||
border-radius: 999px;
|
||||
background: rgba(255, 255, 255, .78);
|
||||
backdrop-filter: blur(18px);
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
font-weight: 650;
|
||||
}
|
||||
|
||||
main {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) 310px;
|
||||
gap: 24px;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.hero {
|
||||
min-height: 430px;
|
||||
border: 1px solid rgba(17, 24, 39, .08);
|
||||
border-radius: 24px;
|
||||
padding: 34px;
|
||||
background: rgba(255, 255, 255, .72);
|
||||
backdrop-filter: blur(24px);
|
||||
box-shadow: 0 24px 70px rgba(28, 38, 55, .14);
|
||||
display: grid;
|
||||
grid-template-rows: auto 1fr auto;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.hero::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 320px;
|
||||
height: 320px;
|
||||
right: -110px;
|
||||
bottom: -140px;
|
||||
background: conic-gradient(from 40deg, rgba(37, 99, 235, .22), rgba(0, 168, 132, .22), rgba(240, 90, 79, .18), rgba(37, 99, 235, .22));
|
||||
filter: blur(12px);
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
color: var(--blue);
|
||||
font-size: 13px;
|
||||
font-weight: 800;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.hero h2 {
|
||||
max-width: 720px;
|
||||
margin: 12px 0 0;
|
||||
font-size: 46px;
|
||||
line-height: 1.04;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.hero-copy {
|
||||
max-width: 560px;
|
||||
margin-top: 16px;
|
||||
color: var(--muted);
|
||||
font-size: 17px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.tiles {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 14px;
|
||||
align-self: end;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.tile {
|
||||
min-height: 122px;
|
||||
padding: 18px;
|
||||
border-radius: 18px;
|
||||
border: 1px solid rgba(17, 24, 39, .08);
|
||||
background: rgba(255, 255, 255, .82);
|
||||
}
|
||||
|
||||
.tile strong {
|
||||
display: block;
|
||||
font-size: 26px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.tile span {
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
aside {
|
||||
display: grid;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.panel {
|
||||
border: 1px solid rgba(17, 24, 39, .08);
|
||||
border-radius: 20px;
|
||||
padding: 18px;
|
||||
background: rgba(255, 255, 255, .76);
|
||||
backdrop-filter: blur(24px);
|
||||
box-shadow: 0 18px 44px rgba(28, 38, 55, .10);
|
||||
}
|
||||
|
||||
.panel h3 {
|
||||
margin: 0 0 14px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.list {
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.row {
|
||||
display: grid;
|
||||
grid-template-columns: 10px 1fr auto;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.dot {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
background: var(--blue);
|
||||
}
|
||||
|
||||
.dot.mint {
|
||||
background: var(--mint);
|
||||
}
|
||||
|
||||
.dot.coral {
|
||||
background: var(--coral);
|
||||
}
|
||||
|
||||
.row b {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.row small {
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.pill {
|
||||
padding: 5px 9px;
|
||||
border-radius: 999px;
|
||||
background: #eef4ff;
|
||||
color: var(--blue);
|
||||
font-weight: 800;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
footer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
color: var(--muted);
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
@media (max-width: 860px) {
|
||||
.page {
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
header,
|
||||
footer {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
main,
|
||||
.tiles {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.hero h2 {
|
||||
font-size: 34px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page">
|
||||
<header>
|
||||
<div class="brand">
|
||||
<div class="mark">GS</div>
|
||||
<div>
|
||||
<h1>GS Shop Studio</h1>
|
||||
<p>Live commerce workspace</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chip-row">
|
||||
<div class="chip">WebView2</div>
|
||||
<div class="chip">Preview</div>
|
||||
<div class="chip">Ready</div>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<section class="hero">
|
||||
<div>
|
||||
<div class="eyebrow">Today at a glance</div>
|
||||
<h2>빠르게 확인하고 바로 운영하는 쇼핑 콘솔</h2>
|
||||
<p class="hero-copy">상품 노출, 주문 흐름, 라이브 배너 상태가 한 화면 안에서 정리되는 샘플 미리보기입니다.</p>
|
||||
</div>
|
||||
<div></div>
|
||||
<div class="tiles">
|
||||
<div class="tile"><strong>36</strong><span>방송 상품</span></div>
|
||||
<div class="tile"><strong>1.2K</strong><span>오늘 주문</span></div>
|
||||
<div class="tile"><strong>98%</strong><span>미리보기 정상</span></div>
|
||||
</div>
|
||||
</section>
|
||||
<aside>
|
||||
<section class="panel">
|
||||
<h3>운영 상태</h3>
|
||||
<div class="list">
|
||||
<div class="row"><i class="dot mint"></i><span><b>메인 홈</b><small>게시 준비</small></span><em class="pill">OK</em></div>
|
||||
<div class="row"><i class="dot"></i><span><b>상품 상세</b><small>배너 검수</small></span><em class="pill">LIVE</em></div>
|
||||
<div class="row"><i class="dot coral"></i><span><b>모바일 뷰</b><small>이미지 교체</small></span><em class="pill">TODO</em></div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="panel">
|
||||
<h3>다음 편성</h3>
|
||||
<div class="list">
|
||||
<div class="row"><i class="dot"></i><span><b>14:40</b><small>프라임 딜</small></span><em class="pill">A-01</em></div>
|
||||
<div class="row"><i class="dot mint"></i><span><b>15:00</b><small>리빙 특가</small></span><em class="pill">B-04</em></div>
|
||||
</div>
|
||||
</section>
|
||||
</aside>
|
||||
</main>
|
||||
<footer>
|
||||
<span>TornadoAce GS Shop</span>
|
||||
<span>Rendered inside Microsoft Edge WebView2</span>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
""";
|
||||
}
|
||||
}
|
||||
24
app.manifest
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="TornadoAce_GSShop.app"/>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!--The ID below informs the system that this application is compatible with OS features first introduced in Windows 8.
|
||||
For more info see https://learn.microsoft.com/windows/win32/sysinfo/targeting-your-application-at-windows-8-1
|
||||
|
||||
It is also necessary to support features in unpackaged applications, for example the custom titlebar implementation.-->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<!-- The combination of below two tags have the following effect:
|
||||
1) Per-Monitor for >= Windows 10 Anniversary Update
|
||||
2) System < Windows 10 Anniversary Update
|
||||
-->
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
</assembly>
|
||||