@@ -38,12 +38,19 @@ const terms = css`
38
38
margin- to p: ${ Spacing . s } px;
39
39
` ;
40
40
41
+ const warning = css `
42
+ ${ Typography . XS } ;
43
+ color : ${ Colors . white } ;
44
+ margin- to p: ${ Spacing . s } px;
45
+ ` ;
46
+
41
47
// Components
42
48
43
49
export const ExhibitionTitleScreen = dynamic ( ( ) =>
44
50
Promise . resolve ( ( { onReady } : { onReady : ( ) => void } ) => {
45
51
const { orientation } = useScreenOrientation ( ) ;
46
52
const [ agreed , setAgreed ] = useState ( false ) ;
53
+ const [ agreedFadeOut , setAgreedFadeOut ] = useState ( false ) ;
47
54
const [ ready , setReady ] = useState ( false ) ;
48
55
49
56
// Side Effects
@@ -56,10 +63,6 @@ export const ExhibitionTitleScreen = dynamic(() =>
56
63
}
57
64
} , [ onReady , ready ] ) ;
58
65
59
- useEffect ( ( ) => {
60
- setAgreed ( ! ! localStorage . getItem ( "metaneno.art-agreed_to_terms" ) ) ;
61
- } , [ ] ) ;
62
-
63
66
// Events
64
67
65
68
const handleClickAgreeToTermsButton = useCallback ( ( ) => {
@@ -70,9 +73,15 @@ export const ExhibitionTitleScreen = dynamic(() =>
70
73
) ;
71
74
}
72
75
73
- setReady ( true ) ;
76
+ setAgreedFadeOut ( true ) ;
77
+
78
+ setTimeout ( ( ) => {
79
+ setAgreed ( true ) ;
80
+ } , Mixin . ANIMATION_DURATION . milliseconds ) ;
74
81
} , [ ] ) ;
75
82
83
+ const handleReady = useCallback ( ( ) => setReady ( true ) , [ ] ) ;
84
+
76
85
// Render
77
86
78
87
return (
@@ -93,43 +102,63 @@ export const ExhibitionTitleScreen = dynamic(() =>
93
102
) }
94
103
css = { container }
95
104
>
96
- < div
97
- className = "w-full"
98
- css = { css `
99
- ${ contents } ;
100
- ${ ready ? fadeOut : fadeIn }
101
- ` }
102
- >
103
- < img
104
- alt = "ロゴ"
105
- src = "/lp/logo.svg"
106
- style = { isMobile ? { maxHeight : "192px" } : { } }
107
- />
105
+ { ! agreed && (
108
106
< div
109
- className = "cursor-pointer"
110
- css = { button }
111
- onClick = { handleClickAgreeToTermsButton }
112
- style = {
113
- isMobile
114
- ? { maxHeight : "36px" , marginTop : `${ Spacing . s } px` }
115
- : { }
116
- }
107
+ className = "w-full"
108
+ css = { css `
109
+ ${ contents } ;
110
+ ${ agreedFadeOut ? fadeOut : fadeIn }
111
+ ` }
117
112
>
118
113
< img
119
- alt = "はじめる "
120
- className = "mx-auto "
121
- src = "/lp/main-content-link/button.svg"
114
+ alt = "ロゴ "
115
+ src = "/lp/logo.svg "
116
+ style = { isMobile ? { maxHeight : "192px" } : { } }
122
117
/>
118
+ < div
119
+ className = "cursor-pointer"
120
+ css = { button }
121
+ onClick = { handleClickAgreeToTermsButton }
122
+ style = {
123
+ isMobile
124
+ ? { maxHeight : "36px" , marginTop : `${ Spacing . s } px` }
125
+ : { }
126
+ }
127
+ >
128
+ < img
129
+ alt = "はじめる"
130
+ className = "mx-auto"
131
+ src = "/lp/main-content-link/button.svg"
132
+ />
133
+ </ div >
134
+ < div className = "text-center" css = { terms } >
135
+ < a className = "underline" href = "/terms" target = "_blank" >
136
+ 利用規約
137
+ </ a >
138
+ をご確認の上、{ isMobile ? < br /> : "" }
139
+ ご同意頂ける場合にのみ「Trip」ボタンを
140
+ { isMobile ? "タップ" : "クリック" } してください
141
+ </ div >
123
142
</ div >
124
- < div className = "text-center" css = { terms } >
125
- < a className = "underline" href = "/terms" target = "_blank" >
126
- 利用規約
127
- </ a >
128
- をご確認の上、{ isMobile ? < br /> : "" }
129
- ご同意頂ける場合にのみ「Trip」ボタンを
130
- { isMobile ? "タップ" : "クリック" } してください
143
+ ) }
144
+ { agreed && (
145
+ < div
146
+ className = "grid w-full h-full text-center cursor-pointer place-items-center"
147
+ onClick = { handleReady }
148
+ >
149
+ < div
150
+ css = { css `
151
+ ${ warning } ;
152
+ ${ ready ? fadeOut : fadeIn }
153
+ ` }
154
+ >
155
+ ここから先、音声が再生されます。
156
+ < br />
157
+ 音量を調整の上{ isMobile ? "タップ" : "クリック" }
158
+ してお進みください。
159
+ </ div >
131
160
</ div >
132
- </ div >
161
+ ) }
133
162
</ div >
134
163
</ >
135
164
) ;
0 commit comments