diff --git a/src/fonts.scss b/src/fonts.scss new file mode 100644 index 0000000000000000000000000000000000000000..a6910ed3b4cc81f5bc2480531bc92f7f9348bfea --- /dev/null +++ b/src/fonts.scss @@ -0,0 +1,17 @@ +/* latin-ext */ +@font-face { + font-family: 'Zilla Slab'; + font-style: normal; + font-weight: 400; + src: local('Zilla Slab'), local('ZillaSlab-Regular'), url('./fonts/zilla-slab_latin-ext.woff2') format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* latin */ +@font-face { + font-family: 'Zilla Slab'; + font-style: normal; + font-weight: 400; + src: local('Zilla Slab'), local('ZillaSlab-Regular'), url('./fonts/zilla-slab_latin.woff2') format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/src/fonts/zilla-slab_latin-ext.woff2 b/src/fonts/zilla-slab_latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..60259781df0d9a85f8e9f88ef7ed3dcf8b69b12b Binary files /dev/null and b/src/fonts/zilla-slab_latin-ext.woff2 differ diff --git a/src/fonts/zilla-slab_latin.woff2 b/src/fonts/zilla-slab_latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..18b5d6e8f5f3bd37ffe7effde8414b7ff3ed0409 Binary files /dev/null and b/src/fonts/zilla-slab_latin.woff2 differ diff --git a/src/react-components/name-entry-panel.js b/src/react-components/name-entry-panel.js index fb0022efc02e8694d11beafdef83198399db94bf..3e39a73669358cc2f7b682c31b8eb7ed5281d27b 100644 --- a/src/react-components/name-entry-panel.js +++ b/src/react-components/name-entry-panel.js @@ -30,18 +30,27 @@ export default class NameEntryPanel extends Component { render () { return ( - <div> - Name Entry - <form onSubmit={this.saveName}> - <label>Name: - <input - value={this.state.name} onChange={(e) => this.setState({name: e.target.value})} - required pattern={SCHEMA.definitions.profile.properties.display_name.pattern} - title="Alphanumerics and hyphens. At least 3 characters, no more than 32" - ref={inp => this.nameInput = inp}/> - </label> - <input type="submit" value="Save" /> - </form> + <div class="name-entry"> + <div class="name-entry__box name-entry__box--darkened"> + <div class="name-entry__subtitle"> + Set your identity + </div> + <div class="name-entry__form"> + <form onSubmit={this.saveName}> + <div class="name-entry__form-fields"> + <input + class="name-entry__form-field-text" + value={this.state.name} onChange={(e) => this.setState({name: e.target.value})} + required pattern={SCHEMA.definitions.profile.properties.display_name.pattern} + title="Alphanumerics and hyphens. At least 3 characters, no more than 32" + ref={inp => this.nameInput = inp}/> + <div class="name-entry__form-submit"> + <input type="submit" value="Save" /> + </div> + </div> + </form> + </div> + </div> </div> ); } diff --git a/src/react-components/ui-root.js b/src/react-components/ui-root.js index 3d079883e9a1c09e26af057f31abe2b0dc2f18b7..4d897fa8afa80828827a7229ad8fe03cc0adf227 100644 --- a/src/react-components/ui-root.js +++ b/src/react-components/ui-root.js @@ -107,7 +107,9 @@ class UIRoot extends Component { secondsRemainingBeforeAutoExit: Infinity, sceneLoaded: false, - exited: false + exited: false, + + showingNameEntry: true } componentDidMount() { @@ -401,12 +403,10 @@ class UIRoot extends Component { const dialogContents = this.isWaitingForAutoExit() ? (<AutoExitWarning secondsRemaining={this.state.secondsRemainingBeforeAutoExit} onCancel={this.endAutoExitTimer} />) : ( - <div> + <div class="entry-dialog"> {entryPanel} {micPanel} {audioSetupPanel} - - <NameEntryPanel store={this.props.store}></NameEntryPanel> </div> ); @@ -415,13 +415,20 @@ class UIRoot extends Component { 'ui-dialog--darkened': this.state.entryStep !== ENTRY_STEPS.finished }); + const dialogBoxClassNames = classNames({ + 'ui-dialog-box': true, + 'ui-dialog-box--lighter': this.state.showingNameEntry + }); + return !this.state.exited ? ( <div className={dialogClassNames}> { this.state.entryStep !== ENTRY_STEPS.finished && ( - <div className='ui-dialog-box'> + <div className={dialogBoxClassNames}> + {this.state.showingNameEntry && ( + <NameEntryPanel store={this.props.store}></NameEntryPanel>)} {dialogContents} </div> ) diff --git a/src/room.scss b/src/room.scss index 5ff47a719ddd7ed8441532d86593657694c25250..94ead21b3efefe4f521027e2c07d59fc286c4802 100644 --- a/src/room.scss +++ b/src/room.scss @@ -1,5 +1,11 @@ -$dark-transparent: rgba(0, 0, 0, 0.5); -$darker-transparent: rgba(0, 0, 0, 0.7); +@import 'src/fonts'; + +$dark-transparent: rgba(0, 0, 0, 0.4); +$darker-transparent: rgba(0, 0, 0, 0.6); +$grey-text: rgba(192, 192, 192, 1.0); +$light-text: rgba(240, 240, 240, 1.0); +$dark-grey: rgba(128, 128, 128, 1.0); +$darker-grey: rgba(64, 64, 64, 1.0); .a-enter-vr { display: none; @@ -12,6 +18,7 @@ $darker-transparent: rgba(0, 0, 0, 0.7); left: 0; position: absolute; pointer-events: none; + font-family: 'Zilla Slab', sans-serif; color: white; } @@ -38,6 +45,11 @@ $darker-transparent: rgba(0, 0, 0, 0.7); border-radius: 4px; pointer-events: auto; padding: 10px; + position: relative; +} + +.ui-dialog-box--lighter { + background-color: $dark-transparent; } .loading-panel { @@ -50,3 +62,59 @@ $darker-transparent: rgba(0, 0, 0, 0.7); top: auto; bottom: 20px; } + +.entry-dialog { + display: flex; +} + +.name-entry { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + justify-content: center; + align-items: center; + display: flex; +} + +.name-entry__box { + width: 80%; + height: 20%; + border-radius: 4px; + max-height: 200px; + display: flex; + flex-direction: column; +} + +.name-entry__box--darkened { + background-color: $darker-transparent; +} + +.name-entry__subtitle { + width: 100%; + text-align: center; + color: $grey-text; +} + +.name-entry__form-fields { + display: flex; + justify-content: flex-start; +} + +.name-entry__form-field-text { + color: $light-text; + font-size: 0.8em; + background-color: $darker-grey; + border: 3px solid white; + box-sizing: border-box; + border-radius: 12px; + line-height: 2.0em; + padding-left: 1.25em; + padding-right: 1.25em; + font-family: 'Zilla Slab', sans-serif; +} + +.name-entry__form-submit { + flex: 1 1 30%; +} diff --git a/webpack.config.js b/webpack.config.js index 7626670bf1877522b6f5d7a087c56612d031a5bc..ead5eb9228be58fa9fc96f4ea593e58cbb8357aa 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -166,7 +166,7 @@ const config = { }) }, { - test: /\.(png|jpg|gif|glb|ogg)$/, + test: /\.(png|jpg|gif|glb|ogg|woff2)$/, use: { loader: "file-loader", options: {