├── .gitignore ├── README.md ├── build ├── 06f25b43e8541059ce64630a93577413.png ├── 0aab6e6c080ab3742989bd6086e95f22.png ├── 2d00c03a137fdf8ac5efaf782201da9c.png ├── 4e03c4e8edceb16f5c5ae0cbb561183c.png ├── 5170f1df8fcd0ac315aeef8d711f21ff.png ├── 6a7aaefd15a2b35bf11700bd61880a7a.png ├── a11c1362fb27355b80abf2cf0eb0646f.png ├── a1941073c3eb1a2ee439b53eb7aec9c2.png ├── bundle.js ├── bundle.js.LICENSE.txt ├── e83cdceacb8109aac8d7b27cf6b4a2a9.png └── index.html ├── client ├── components │ ├── App.jsx │ ├── Board.jsx │ ├── Instructions.jsx │ └── Tile.jsx ├── img │ ├── fish-empty.png │ ├── fish-fill.png │ ├── fish.png │ ├── starfish-empty.png │ ├── starfish-fill.png │ ├── starfish.png │ ├── turtle-empty.png │ ├── turtle-fill.png │ └── turtle.png ├── index.html ├── index.js ├── slices │ ├── appSlice.js │ └── tileSlice.js ├── store.js └── styles │ ├── reset.css │ └── style.scss ├── package-lock.json ├── package.json ├── server └── server.js └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Turtle Set 2 | -------------------------------------------------------------------------------- /build/06f25b43e8541059ce64630a93577413.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marsbird/turtle-set/cdaa40b566920b8763c40989a3aa68abf169953d/build/06f25b43e8541059ce64630a93577413.png -------------------------------------------------------------------------------- /build/0aab6e6c080ab3742989bd6086e95f22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marsbird/turtle-set/cdaa40b566920b8763c40989a3aa68abf169953d/build/0aab6e6c080ab3742989bd6086e95f22.png -------------------------------------------------------------------------------- /build/2d00c03a137fdf8ac5efaf782201da9c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marsbird/turtle-set/cdaa40b566920b8763c40989a3aa68abf169953d/build/2d00c03a137fdf8ac5efaf782201da9c.png -------------------------------------------------------------------------------- /build/4e03c4e8edceb16f5c5ae0cbb561183c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marsbird/turtle-set/cdaa40b566920b8763c40989a3aa68abf169953d/build/4e03c4e8edceb16f5c5ae0cbb561183c.png -------------------------------------------------------------------------------- /build/5170f1df8fcd0ac315aeef8d711f21ff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marsbird/turtle-set/cdaa40b566920b8763c40989a3aa68abf169953d/build/5170f1df8fcd0ac315aeef8d711f21ff.png -------------------------------------------------------------------------------- /build/6a7aaefd15a2b35bf11700bd61880a7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marsbird/turtle-set/cdaa40b566920b8763c40989a3aa68abf169953d/build/6a7aaefd15a2b35bf11700bd61880a7a.png -------------------------------------------------------------------------------- /build/a11c1362fb27355b80abf2cf0eb0646f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marsbird/turtle-set/cdaa40b566920b8763c40989a3aa68abf169953d/build/a11c1362fb27355b80abf2cf0eb0646f.png -------------------------------------------------------------------------------- /build/a1941073c3eb1a2ee439b53eb7aec9c2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marsbird/turtle-set/cdaa40b566920b8763c40989a3aa68abf169953d/build/a1941073c3eb1a2ee439b53eb7aec9c2.png -------------------------------------------------------------------------------- /build/bundle.js: -------------------------------------------------------------------------------- 1 | /*! For license information please see bundle.js.LICENSE.txt */ 2 | (()=>{"use strict";var e,t,n={773:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(601),a=n.n(r),o=n(314),l=n.n(o)()(a());l.push([e.id,'html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}',""]);const i=l},935:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(601),a=n.n(r),o=n(314),l=n.n(o)()(a());l.push([e.id,'html{font-family:"Concert One";font-size:24px;color:#e4f0ff;text-shadow:0 0 2rem #000,0 0 .2rem #3855a4;height:100%;background-image:linear-gradient(rgb(56, 85, 164), rgb(228, 240, 255)),url("https://cdn.pixabay.com/photo/2014/03/04/19/51/dark-279694_1280.png");background-blend-mode:lighten}body{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:space-between}body h1{font-size:3rem;margin:1rem;text-align:center}footer{text-align:center;margin:1rem}footer .marselena{font-size:.6rem}footer .other{font-size:.4rem}footer p{margin:.2rem}footer a{color:inherit}.game-board{display:flex;flex-direction:column;align-items:center}.game-board h2{font-size:2rem}button{margin:1rem;padding:.5rem 1rem;border-radius:.5rem;border:none;font-family:inherit;font-size:1rem;background-color:#e4f0ff;color:#3855a4}button:hover{box-shadow:0 0 1rem #3855a4;background-color:#3855a4;color:#e4f0ff}img{width:5.5vw}.icon-color-0{filter:invert(27%) sepia(93%) saturate(7493%) hue-rotate(327deg) brightness(99%) contrast(109%)}.icon-color-1{filter:invert(39%) sepia(87%) saturate(1164%) hue-rotate(201deg) brightness(100%) contrast(104%)}.icon-color-2{filter:invert(86%) sepia(23%) saturate(6168%) hue-rotate(351deg) brightness(103%) contrast(101%)}.tiles-container{display:grid;grid-template:auto/repeat(4, 1fr);width:85vw;height:42.5vw;gap:2vw 2vw}#instructions-container{text-align:center;max-width:min(600px,85vw)}#instructions-container .spacer{min-width:1rem}#instructions-container p,#instructions-container h1,#instructions-container div{padding:.3rem;font-size:1.2rem}#instructions-container .tile.instructions{height:2rem;width:4rem;margin-left:.2rem;margin-right:.2rem;border-radius:.2rem}#instructions-container img{height:1.5rem;width:1.5rem}#instructions-container .instructions-example-container{display:flex;align-items:center;justify-content:center}#instructions-container .instructions-set-container{display:flex;flex-direction:row}@media screen and (width < 650px){.tiles-container{grid-template:auto/repeat(3, 1fr);height:70.8333333333vw}img{width:8vw}body h1{font-size:2rem}.game-board h2{font-size:1.5rem}button{padding:.25rem .75rem;border-radius:.5rem;font-size:.75rem}#instructions-container .tile.instructions{height:1rem;width:2.6rem;margin-left:.1rem;margin-right:.1rem;border-radius:.2rem}#instructions-container p,#instructions-container h1,#instructions-container div{padding:.3rem;font-size:.8rem}#instructions-container img{height:1rem;width:1rem}#instructions-container .instructions-example-container{flex-direction:column}}@media screen and (width > 1000px){.tiles-container{height:425px;width:850px;gap:20px}.tile{border-radius:20px}img{width:55px}}.tile{display:flex;align-items:center;justify-content:center;background-color:#e4f0ff;border-radius:2vw;box-shadow:.2rem .2rem .5rem .1rem #3855a4}.selected{filter:brightness(70%)}',""]);const i=l},314:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,a,o){"string"==typeof e&&(e=[[null,e,void 0]]);var l={};if(r)for(var i=0;i0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=o),n&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=n):s[2]=n),a&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=a):s[4]="".concat(a)),t.push(s))}},t}},601:e=>{e.exports=function(e){return e[1]}},551:(e,t,n)=>{var r=n(540),a=n(982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n