@kurot/cli 3.4.0 → 3.6.0

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +49 -8
  3. package/dist/core/kui/kui-parser.d.ts.map +1 -1
  4. package/dist/core/kui/kui-parser.js +2 -0
  5. package/dist/core/kui/kui-parser.js.map +1 -1
  6. package/dist/core/kui/validate-flip-properties.d.ts +7 -0
  7. package/dist/core/kui/validate-flip-properties.d.ts.map +1 -0
  8. package/dist/core/kui/validate-flip-properties.js +33 -0
  9. package/dist/core/kui/validate-flip-properties.js.map +1 -0
  10. package/dist/core/plugins/compile-custom-namespaces.js +1 -1
  11. package/dist/core/plugins/compile-custom-namespaces.js.map +1 -1
  12. package/dist/core/plugins/compile-engine.js +3 -3
  13. package/dist/core/plugins/compile-engine.js.map +1 -1
  14. package/dist/core/plugins/copy-assets.d.ts +2 -0
  15. package/dist/core/plugins/copy-assets.d.ts.map +1 -1
  16. package/dist/core/plugins/copy-assets.js +3 -1
  17. package/dist/core/plugins/copy-assets.js.map +1 -1
  18. package/dist/utils/fs.d.ts +7 -1
  19. package/dist/utils/fs.d.ts.map +1 -1
  20. package/dist/utils/fs.js +10 -3
  21. package/dist/utils/fs.js.map +1 -1
  22. package/docs/ai-context.md +40 -10
  23. package/docs/architecture.md +7 -1
  24. package/docs/default-ui-skins.md +123 -0
  25. package/docs/game-template.md +28 -4
  26. package/docs/label-text-layout.md +3 -1
  27. package/docs/text-components.md +4 -1
  28. package/package.json +2 -2
  29. package/templates/game/resource/assets/ui/kui/kui.json +240 -0
  30. package/templates/game/resource/assets/ui/kui/kui.png +0 -0
  31. package/templates/game/resource/config/style.json +26 -4
  32. package/templates/game/resource/default.res.json +70 -3
  33. package/templates/game/resource/ui/skins/ButtonSkin.kui.xml +4 -4
  34. package/templates/game/resource/ui/skins/CheckBoxSkin.kui.xml +4 -4
  35. package/templates/game/resource/ui/skins/CloseButtonSkin.kui.xml +4 -0
  36. package/templates/game/resource/ui/skins/ComboBoxSkin.kui.xml +5 -5
  37. package/templates/game/resource/ui/skins/HScrollBarSkin.kui.xml +1 -1
  38. package/templates/game/resource/ui/skins/HSliderSkin.kui.xml +3 -3
  39. package/templates/game/resource/ui/skins/ItemRendererSkin.kui.xml +3 -3
  40. package/templates/game/resource/ui/skins/PanelSkin.kui.xml +5 -6
  41. package/templates/game/resource/ui/skins/ProgressBarSkin.kui.xml +4 -4
  42. package/templates/game/resource/ui/skins/RadioButtonSkin.kui.xml +4 -4
  43. package/templates/game/resource/ui/skins/TextInputSkin.kui.xml +4 -4
  44. package/templates/game/resource/ui/skins/ToggleButtonSkin.kui.xml +3 -3
  45. package/templates/game/resource/ui/skins/ToggleSwitchSkin.kui.xml +3 -3
  46. package/templates/game/resource/ui/skins/VScrollBarSkin.kui.xml +1 -1
  47. package/templates/game/resource/ui/skins/VSliderSkin.kui.xml +3 -3
  48. package/templates/game/src/Main.ts +1 -1
  49. package/templates/game/template/web/index.html +117 -34
  50. package/templates/game/template/web/logo.png +0 -0
  51. package/templates/game/resource/assets/ui/eui/eui.json +0 -24
  52. package/templates/game/resource/assets/ui/eui/eui.png +0 -0
  53. package/templates/game/resource/ui/skins/GroupSkin.kui.xml +0 -4
  54. package/templates/game/resource/ui/skins/ImageSkin.kui.xml +0 -4
  55. package/templates/game/resource/ui/skins/LabelSkin.kui.xml +0 -4
  56. package/templates/game/resource/ui/skins/ListSkin.kui.xml +0 -7
  57. package/templates/game/resource/ui/skins/TabBarSkin.kui.xml +0 -5
  58. package/templates/game/resource/ui/skins/ViewStackSkin.kui.xml +0 -4
@@ -1,4 +1,4 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <Skin xmlns="https://kurot.dev/ui/1" class="skins.HScrollBarSkin" minHeight="8" minWidth="20">
3
- <Image id="thumb" height="8" scale9Grid="3,3,2,2" source="roundthumb_png" verticalCenter="0" width="30" />
3
+ <Image id="thumb" height="8" source="kui.scroll_thumb" verticalCenter="0" width="30" />
4
4
  </Skin>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.HSliderSkin" minHeight="8" minWidth="20">
3
- <Image id="track" height="6" scale9Grid="1,1,4,4" source="track_sb_png" verticalCenter="0" width="100%" />
4
- <Image id="thumb" source="thumb_png" verticalCenter="0" />
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.HSliderSkin" states="disabled" minHeight="44" minWidth="80">
3
+ <Image id="track" height="8" source="kui.track" verticalCenter="0" width="100%" />
4
+ <Image id="thumb" width="28" height="28" source="kui.slider_thumb" source.disabled="kui.slider_thumb_disabled" verticalCenter="0" />
5
5
  </Skin>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.ItemRendererSkin" states="disabled,down,up" minHeight="50" minWidth="100">
3
- <Image height="100%" scale9Grid="1,3,8,8" source="button_up_png" width="100%" alpha.disabled="0.5" source.down="button_down_png" />
4
- <Label id="labelDisplay" bottom="8" left="8" right="8" size="20" textAlign="center" textColor="#FFFFFF" top="8" verticalAlign="middle" />
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.ItemRendererSkin" states="disabled,down,up,downAndSelected,upAndSelected" minHeight="48" minWidth="96">
3
+ <Image height="100%" width="100%" source="kui.surface_up" source.down="kui.surface_down" source.disabled="kui.button_disabled" source.downAndSelected="kui.surface_selected_down" source.upAndSelected="kui.surface_selected" touchEnabled="false" />
4
+ <Label id="labelDisplay" bottom="10" left="14" right="14" top="10" size="18" multiline="false" textFit="shrink" minFontSize="14" textAlign="left" textColor="@style:colors:text" textColor.disabled="@style:colors:disabled-text" verticalAlign="middle" />
5
5
  </Skin>
@@ -1,9 +1,8 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.PanelSkin" minHeight="230" minWidth="450">
3
- <Image bottom="0" left="0" right="0" scale9Grid="2,2,12,12" source="border_png" top="0" />
4
- <Group id="moveArea" height="45" left="0" right="0" top="0">
5
- <Image bottom="0" left="0" right="0" scale9Grid="2,2,12,12" source="header_png" top="0" />
6
- <Label id="titleDisplay" left="15" right="5" size="20" textColor="#FFFFFF" verticalCenter="0" wordWrap="false" />
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.PanelSkin" minHeight="160" minWidth="240">
3
+ <Image bottom="0" left="0" right="0" source="kui.panel" top="0" touchEnabled="false" />
4
+ <Group id="moveArea" height="56" left="0" right="0" top="0">
5
+ <Label id="titleDisplay" left="20" right="60" size="20" bold="true" textColor="@style:colors:text" verticalCenter="0" verticalAlign="middle" multiline="false" textFit="shrink" minFontSize="16" />
7
6
  </Group>
8
- <Button id="closeButton" bottom="5" horizontalCenter="0" label="close" />
7
+ <Button id="closeButton" top="6" right="8" width="44" height="44" skinName="skins.CloseButtonSkin" />
9
8
  </Skin>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.ProgressBarSkin" minHeight="18" minWidth="30">
3
- <Image height="100%" scale9Grid="1,1,4,4" source="track_pb_png" verticalCenter="0" width="100%" />
4
- <Image id="thumb" height="100%" scale9Grid="1,1,4,4" source="thumb_pb_png" width="100%" />
5
- <Label id="labelDisplay" horizontalCenter="0" size="15" textAlign="center" textColor="#707070" verticalAlign="middle" verticalCenter="0" />
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.ProgressBarSkin" minHeight="44" minWidth="80">
3
+ <Image height="12" source="kui.progress_track" verticalCenter="8" width="100%" />
4
+ <Image id="thumb" height="12" source="kui.progress" verticalCenter="8" width="100%" />
5
+ <Label id="labelDisplay" top="0" right="0" size="14" textAlign="right" textColor="@style:colors:muted-text" />
6
6
  </Skin>
@@ -1,10 +1,10 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.RadioButtonSkin" states="disabled,disabledAndSelected,down,downAndSelected,up,upAndSelected">
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.RadioButtonSkin" states="disabled,disabledAndSelected,down,downAndSelected,up,upAndSelected" minHeight="44">
3
3
  <Group height="100%" width="100%">
4
4
  <layout>
5
- <HorizontalLayout verticalAlign="middle" />
5
+ <HorizontalLayout gap="10" paddingTop="8" paddingBottom="8" verticalAlign="middle" />
6
6
  </layout>
7
- <Image alpha="1" fillMode="scale" source="radiobutton_unselect_png" alpha.disabled="0.5" source.disabledAndSelected="radiobutton_select_disabled_png" alpha.down="0.7" source.downAndSelected="radiobutton_select_down_png" source.upAndSelected="radiobutton_select_up_png" />
8
- <Label id="labelDisplay" size="20" textAlign="center" textColor="#707070" verticalAlign="middle" />
7
+ <Image width="28" height="28" source="kui.radio_up" source.down="kui.radio_down" source.disabled="kui.radio_disabled" source.disabledAndSelected="kui.radio_selected_disabled" source.downAndSelected="kui.radio_selected_down" source.upAndSelected="kui.radio_selected" />
8
+ <Label id="labelDisplay" size="18" multiline="false" textColor="@style:colors:text" textColor.disabled="@style:colors:disabled-text" textColor.disabledAndSelected="@style:colors:disabled-text" verticalAlign="middle" />
9
9
  </Group>
10
10
  </Skin>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.TextInputSkin" states="disabled,disabledWithPrompt,normal,normalWithPrompt" minHeight="40" minWidth="300">
3
- <Rect fillColor="#FFFFFF" height="100%" width="100%" alpha.disabled="0.5" />
4
- <EditableText id="textDisplay" height="24" left="10" right="10" size="20" textColor="#000000" verticalAlign="middle" verticalCenter="0" textColor.disabled="@style:colors:disabled-text" />
5
- <Label id="promptDisplay" height="24" left="10" multiline="false" right="10" size="20" textColor="#A9A9A9" touchEnabled="false" verticalAlign="middle" verticalCenter="0" visible="false" wordWrap="false" visible.disabledWithPrompt="true" visible.normalWithPrompt="true" />
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.TextInputSkin" states="disabled,disabledWithPrompt,normal,normalWithPrompt" minHeight="48" minWidth="160">
3
+ <Image height="100%" width="100%" source="kui.surface_up" source.disabled="kui.button_disabled" source.disabledWithPrompt="kui.button_disabled" touchEnabled="false" />
4
+ <EditableText id="textDisplay" height="28" left="14" right="14" size="18" textColor="@style:colors:text" verticalAlign="middle" verticalCenter="0" textColor.disabled="@style:colors:disabled-text" textColor.disabledWithPrompt="@style:colors:disabled-text" />
5
+ <Label id="promptDisplay" height="28" left="14" right="14" size="18" multiline="false" textColor="@style:colors:muted-text" textColor.disabledWithPrompt="@style:colors:disabled-text" touchEnabled="false" verticalAlign="middle" verticalCenter="0" visible="false" visible.disabledWithPrompt="true" visible.normalWithPrompt="true" />
6
6
  </Skin>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.ToggleButtonSkin" states="disabled,disabledAndSelected,down,downAndSelected,up,upAndSelected" minHeight="50" minWidth="100">
3
- <Rect fillColor="#636E72" height="100%" strokeColor="#4A5459" strokeWeight="1" width="100%" fillColor.disabled="#2D3436" fillColor.disabledAndSelected="#2D3436" fillColor.down="#4A5459" fillColor.downAndSelected="#5A4BD1" fillColor.upAndSelected="#6C5CE7" />
4
- <Label id="labelDisplay" bottom="8" left="8" right="8" size="16" textAlign="center" textColor="#DFE6E9" top="8" verticalAlign="middle" textColor.disabled="@style:colors:disabled-text" textColor.upAndSelected="#FFFFFF" />
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.ToggleButtonSkin" states="disabled,disabledAndSelected,down,downAndSelected,up,upAndSelected" minHeight="48" minWidth="96">
3
+ <Image height="100%" width="100%" source="kui.surface_up" source.down="kui.surface_down" source.disabled="kui.button_disabled" source.disabledAndSelected="kui.surface_disabled_selected" source.downAndSelected="kui.surface_selected_down" source.upAndSelected="kui.surface_selected" touchEnabled="false" />
4
+ <Label id="labelDisplay" bottom="10" left="16" right="16" top="10" size="18" bold="true" multiline="false" textFit="shrink" minFontSize="14" textAlign="center" textColor="@style:colors:text" verticalAlign="middle" textColor.disabled="@style:colors:disabled-text" textColor.disabledAndSelected="@style:colors:disabled-text" />
5
5
  </Skin>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.ToggleSwitchSkin" states="disabled,disabledAndSelected,down,downAndSelected,up,upAndSelected">
3
- <Image source="on_png" source.disabled="off_png" source.down="off_png" source.up="off_png" />
4
- <Image horizontalCenter="-18" source="handle_png" verticalCenter="0" horizontalCenter.disabledAndSelected="18" horizontalCenter.downAndSelected="18" horizontalCenter.upAndSelected="18" />
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.ToggleSwitchSkin" states="disabled,disabledAndSelected,down,downAndSelected,up,upAndSelected" width="56" height="44" minWidth="56" minHeight="44">
3
+ <Image width="56" height="32" horizontalCenter="0" verticalCenter="0" source="kui.switch_off" source.disabled="kui.switch_disabled_off" source.disabledAndSelected="kui.switch_disabled_on" source.downAndSelected="kui.switch_on" source.upAndSelected="kui.switch_on" />
4
+ <Image width="24" height="24" horizontalCenter="-12" verticalCenter="0" source="kui.switch_handle" source.disabled="kui.switch_handle_disabled" source.disabledAndSelected="kui.switch_handle_disabled" horizontalCenter.disabledAndSelected="12" horizontalCenter.downAndSelected="12" horizontalCenter.upAndSelected="12" />
5
5
  </Skin>
@@ -1,4 +1,4 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <Skin xmlns="https://kurot.dev/ui/1" class="skins.VScrollBarSkin" minHeight="20" minWidth="8">
3
- <Image id="thumb" height="30" horizontalCenter="0" scale9Grid="3,3,2,2" source="roundthumb_png" width="8" />
3
+ <Image id="thumb" height="30" horizontalCenter="0" source="kui.scroll_thumb" width="8" />
4
4
  </Skin>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.VSliderSkin" minHeight="30" minWidth="25">
3
- <Image id="track" height="100%" horizontalCenter="0" scale9Grid="1,1,4,4" source="track_png" width="7" />
4
- <Image id="thumb" horizontalCenter="0" source="thumb_png" />
2
+ <Skin xmlns="https://kurot.dev/ui/1" class="skins.VSliderSkin" states="disabled" minHeight="80" minWidth="44">
3
+ <Image id="track" height="100%" horizontalCenter="0" source="kui.track" width="8" />
4
+ <Image id="thumb" width="28" height="28" horizontalCenter="0" source="kui.slider_thumb" source.disabled="kui.slider_thumb_disabled" />
5
5
  </Skin>
@@ -88,7 +88,7 @@ class Main extends UILayer {
88
88
  /**
89
89
  * Create the game scene.
90
90
  *
91
- * Build a responsive view with EUI components and constraint-based layout.
91
+ * Build a responsive view with Kurot UI components and constraint-based layout.
92
92
  */
93
93
  private _createGameScene(): void {
94
94
  // Responsive background
@@ -24,60 +24,138 @@
24
24
  display: block;
25
25
  }
26
26
 
27
- .web-loading {
27
+ .web-splash {
28
28
  position: fixed;
29
29
  inset: 0;
30
30
  z-index: 10;
31
31
  display: flex;
32
- flex-direction: column;
33
32
  align-items: center;
34
33
  justify-content: center;
35
34
  background: #000000;
36
35
  transition: opacity 240ms ease;
37
36
  }
38
37
 
39
- .web-loading--hidden {
38
+ .web-splash--hidden {
40
39
  opacity: 0;
41
40
  pointer-events: none;
42
41
  }
43
42
 
44
- .web-loading__logo {
43
+ .web-splash__brand {
44
+ display: flex;
45
+ flex-direction: column;
46
+ align-items: center;
47
+ gap: 28px;
48
+ }
49
+
50
+ .web-splash__caption {
51
+ color: rgba(205, 230, 255, 0.6);
52
+ font: 600 11px/1.4 'Arial Rounded MT Bold', 'Trebuchet MS', sans-serif;
53
+ letter-spacing: 0.04em;
54
+ }
55
+
56
+ .web-splash__mascot {
57
+ position: relative;
58
+ width: min(52vw, 50vh, 240px);
59
+ isolation: isolate;
60
+ }
61
+
62
+ .web-splash__mascot::before {
63
+ content: '';
64
+ position: absolute;
65
+ inset: -18%;
66
+ z-index: -1;
67
+ background: radial-gradient(circle, rgba(30, 145, 255, 0.14), transparent 68%);
68
+ animation: web-splash-glow 3.2s ease-in-out 1200ms infinite;
69
+ }
70
+
71
+ .web-splash__logo {
45
72
  display: block;
46
- width: min(42vw, 220px);
73
+ width: 100%;
47
74
  height: auto;
48
- animation: web-loading-pulse 1.8s ease-in-out infinite;
75
+ transform-origin: 50% 80%;
76
+ animation: web-splash-arrive 720ms ease-out both,
77
+ web-splash-play 3.2s ease-in-out 1200ms infinite;
78
+ }
79
+
80
+ .web-splash__spark {
81
+ position: absolute;
82
+ width: 14px;
83
+ height: 14px;
84
+ opacity: 0;
85
+ animation: web-splash-spark 900ms ease-out 260ms both,
86
+ web-splash-twinkle 3.2s ease-in-out 1200ms infinite;
87
+ }
88
+
89
+ .web-splash__spark::before,
90
+ .web-splash__spark::after {
91
+ content: '';
92
+ position: absolute;
93
+ inset: 0;
94
+ margin: auto;
95
+ border-radius: 999px;
96
+ background: #91e5ff;
97
+ }
98
+
99
+ .web-splash__spark::before {
100
+ width: 100%;
101
+ height: 3px;
102
+ }
103
+
104
+ .web-splash__spark::after {
105
+ width: 3px;
106
+ height: 100%;
107
+ }
108
+
109
+ .web-splash__spark--left {
110
+ left: -4%;
111
+ top: 24%;
112
+ }
113
+
114
+ .web-splash__spark--right {
115
+ right: -4%;
116
+ top: 52%;
117
+ width: 10px;
118
+ height: 10px;
119
+ animation-delay: 460ms, 1400ms;
120
+ }
121
+
122
+ @keyframes web-splash-arrive {
123
+ 0% { transform: translateY(12px) scale(0.92) rotate(-4deg); }
124
+ 60% { transform: translateY(-6px) scale(1.025) rotate(2deg); }
125
+ 100% { transform: translateY(0) scale(1) rotate(0); }
49
126
  }
50
127
 
51
- .web-loading__indicator {
52
- width: 26px;
53
- height: 26px;
54
- margin-top: 20px;
55
- border: 2px solid rgba(143, 225, 235, 0.18);
56
- border-top-color: #8fe1eb;
57
- border-radius: 50%;
58
- animation: web-loading-spin 800ms linear infinite;
128
+ @keyframes web-splash-play {
129
+ 0%, 90%, 100% { transform: translateY(0) scale(1) rotate(0); }
130
+ 12% { transform: translateY(3px) scale(1.04, 0.96) rotate(-2deg); }
131
+ 28% { transform: translateY(-16px) scale(1.025) rotate(-5deg); }
132
+ 46% { transform: translateY(2px) scale(1.035, 0.97) rotate(2deg); }
133
+ 62% { transform: translateY(-9px) scale(1) rotate(4deg); }
134
+ 80% { transform: translateY(0) scale(1) rotate(-1deg); }
59
135
  }
60
136
 
61
- .web-loading__text {
62
- margin-top: 12px;
63
- color: rgba(255, 255, 255, 0.58);
64
- font: 11px/1 Arial, sans-serif;
65
- letter-spacing: 0.28em;
66
- text-indent: 0.28em;
137
+ @keyframes web-splash-spark {
138
+ 0% { opacity: 0; transform: scale(0.4) rotate(-20deg); }
139
+ 35% { opacity: 0.85; transform: scale(1) rotate(10deg); }
140
+ 100% { opacity: 0; transform: scale(0.6) rotate(30deg); }
67
141
  }
68
142
 
69
- @keyframes web-loading-pulse {
70
- 0%, 100% { opacity: 0.72; transform: scale(0.98); }
71
- 50% { opacity: 1; transform: scale(1); }
143
+ @keyframes web-splash-twinkle {
144
+ 0%, 12% { opacity: 0; transform: scale(0.4) rotate(-20deg); }
145
+ 28% { opacity: 0.9; transform: scale(1.15) rotate(10deg); }
146
+ 48%, 100% { opacity: 0; transform: scale(0.6) rotate(35deg); }
72
147
  }
73
148
 
74
- @keyframes web-loading-spin {
75
- to { transform: rotate(360deg); }
149
+ @keyframes web-splash-glow {
150
+ 0%, 100% { opacity: 0.75; transform: scale(0.96); }
151
+ 28% { opacity: 1; transform: scale(1.08); }
152
+ 62% { opacity: 0.9; transform: scale(1.02); }
76
153
  }
77
154
 
78
155
  @media (prefers-reduced-motion: reduce) {
79
- .web-loading__logo,
80
- .web-loading__indicator {
156
+ .web-splash__mascot::before,
157
+ .web-splash__logo,
158
+ .web-splash__spark {
81
159
  animation: none;
82
160
  }
83
161
  }
@@ -85,10 +163,15 @@
85
163
  {{KUROT_IMPORT_MAP}}
86
164
  </head>
87
165
  <body>
88
- <div id="webLoading" class="web-loading" role="status" aria-label="Loading">
89
- <img class="web-loading__logo" src="logo.png" alt="">
90
- <div class="web-loading__indicator" aria-hidden="true"></div>
91
- <div class="web-loading__text">LOADING</div>
166
+ <div id="webSplash" class="web-splash" role="img" aria-label="Made with Kurot">
167
+ <div class="web-splash__brand">
168
+ <span class="web-splash__caption">Made with</span>
169
+ <div class="web-splash__mascot">
170
+ <img class="web-splash__logo" src="logo.png" alt="">
171
+ <span class="web-splash__spark web-splash__spark--left" aria-hidden="true"></span>
172
+ <span class="web-splash__spark web-splash__spark--right" aria-hidden="true"></span>
173
+ </div>
174
+ </div>
92
175
  </div>
93
176
  <canvas id="gameCanvas"
94
177
  data-content-width="{{KUROT_STAGE_WIDTH}}"
@@ -99,10 +182,10 @@
99
182
  <script type="module">
100
183
  import './{{KUROT_ENTRY_SCRIPT}}';
101
184
 
102
- const loading = document.getElementById('webLoading');
185
+ const splash = document.getElementById('webSplash');
103
186
  requestAnimationFrame(() => {
104
- loading.classList.add('web-loading--hidden');
105
- loading.addEventListener('transitionend', () => loading.remove(), { once: true });
187
+ splash.classList.add('web-splash--hidden');
188
+ splash.addEventListener('transitionend', () => splash.remove(), { once: true });
106
189
  });
107
190
  </script>
108
191
  </body>
@@ -1,24 +0,0 @@
1
- {"file":"eui.png","frames":{
2
- "button_down_png":{"x":200,"y":76,"w":16,"h":16,"offX":0,"offY":0,"sourceW":16,"sourceH":16},
3
- "button_up_png":{"x":236,"y":58,"w":16,"h":16,"offX":0,"offY":0,"sourceW":16,"sourceH":16},
4
- "checkbox_select_disabled_png":{"x":127,"y":49,"w":23,"h":23,"offX":0,"offY":0,"sourceW":23,"sourceH":23},
5
- "checkbox_select_down_png":{"x":102,"y":49,"w":23,"h":23,"offX":0,"offY":0,"sourceW":23,"sourceH":23},
6
- "checkbox_select_up_png":{"x":77,"y":49,"w":23,"h":23,"offX":0,"offY":0,"sourceW":23,"sourceH":23},
7
- "checkbox_unselect_png":{"x":52,"y":49,"w":23,"h":23,"offX":0,"offY":0,"sourceW":23,"sourceH":23},
8
- "selected_png":{"x":218,"y":58,"w":16,"h":16,"offX":0,"offY":0,"sourceW":16,"sourceH":16},
9
- "border_png":{"x":0,"y":0,"w":177,"h":47,"offX":0,"offY":0,"sourceW":177,"sourceH":47},
10
- "header_png":{"x":200,"y":58,"w":16,"h":16,"offX":0,"offY":0,"sourceW":16,"sourceH":16},
11
- "thumb_pb_png":{"x":246,"y":16,"w":6,"h":6,"offX":0,"offY":0,"sourceW":6,"sourceH":6},
12
- "track_pb_png":{"x":246,"y":8,"w":6,"h":6,"offX":0,"offY":0,"sourceW":6,"sourceH":6},
13
- "radiobutton_select_disabled_png":{"x":152,"y":73,"w":22,"h":22,"offX":0,"offY":0,"sourceW":22,"sourceH":22},
14
- "radiobutton_select_down_png":{"x":176,"y":58,"w":22,"h":22,"offX":0,"offY":0,"sourceW":22,"sourceH":22},
15
- "radiobutton_select_up_png":{"x":152,"y":49,"w":22,"h":22,"offX":0,"offY":0,"sourceW":22,"sourceH":22},
16
- "radiobutton_unselect_png":{"x":176,"y":82,"w":22,"h":22,"offX":0,"offY":0,"sourceW":22,"sourceH":22},
17
- "roundthumb_png":{"x":246,"y":0,"w":6,"h":6,"offX":0,"offY":0,"sourceW":6,"sourceH":6},
18
- "track_sb_png":{"x":246,"y":40,"w":6,"h":6,"offX":0,"offY":0,"sourceW":6,"sourceH":6},
19
- "thumb_png":{"x":0,"y":49,"w":25,"h":25,"offX":0,"offY":0,"sourceW":25,"sourceH":25},
20
- "track_png":{"x":246,"y":24,"w":6,"h":6,"offX":0,"offY":0,"sourceW":6,"sourceH":6},
21
- "tracklight_png":{"x":246,"y":32,"w":6,"h":6,"offX":0,"offY":0,"sourceW":6,"sourceH":6},
22
- "handle_png":{"x":27,"y":49,"w":23,"h":23,"offX":0,"offY":0,"sourceW":23,"sourceH":23},
23
- "off_png":{"x":179,"y":0,"w":65,"h":27,"offX":0,"offY":0,"sourceW":65,"sourceH":27},
24
- "on_png":{"x":179,"y":29,"w":65,"h":27,"offX":0,"offY":0,"sourceW":65,"sourceH":27}}}
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.GroupSkin">
3
- <Group id="contentGroup" height="100%" width="100%" />
4
- </Skin>
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.ImageSkin">
3
- <Image id="imageDisplay" height="100%" width="100%" />
4
- </Skin>
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.LabelSkin">
3
- <Label id="labelDisplay" height="100%" size="14" textColor="#DFE6E9" width="100%" />
4
- </Skin>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.ListSkin" minHeight="20" minWidth="20">
3
- <Rect fillColor="#1A1A2E" height="100%" strokeColor="#0F3460" strokeWeight="1" width="100%" />
4
- <Scroller id="scroller" height="100%" width="100%">
5
- <DataGroup id="dataGroup" height="100%" width="100%" />
6
- </Scroller>
7
- </Skin>
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.TabBarSkin" minHeight="40" minWidth="100">
3
- <Rect fillColor="#16213E" height="100%" width="100%" />
4
- <DataGroup id="dataGroup" height="100%" width="100%" />
5
- </Skin>
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <Skin xmlns="https://kurot.dev/ui/1" class="skins.ViewStackSkin">
3
- <Group id="contentGroup" height="100%" width="100%" />
4
- </Skin>