diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..d6471a3 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a1879fc --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..ff99e80 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,27 @@ +module.exports = { + root: true, + env: { + node: true + }, + 'extends': [ + 'plugin:vue/essential', + '@vue/standard' + ], + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-trailing-spaces': ["error", {"skipBlankLines": true}], + 'space-before-function-paren': ['error', 'never'], + 'indent': 'off', + 'vue/script-indent': [ + 'error', + 4, + { + 'baseIndent': 1 + } + ] + }, + parserOptions: { + parser: 'babel-eslint' + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7f44722 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +.DS_Store +node_modules +/dist +/bu +、 + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..0542595 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,13 @@ +module.exports = { + presets: [ + '@vue/app' + ], + plugins: [ + [ + '@babel/plugin-transform-modules-commonjs', + { + allowTopLevelThis: true, + }, + ] + ] +} diff --git a/console.js b/console.js new file mode 100644 index 0000000..f9c55c0 --- /dev/null +++ b/console.js @@ -0,0 +1,34 @@ +/** + * 重写console.log方法 + * 通过设置isLog来控制是否输出日志 + * 对于object,array引用类型已进行深拷贝,确保打印出的值是执行时的值 + * 重写后在整个程序的生命周期都有效,在程序的所有地方都可以调用 + * 可在程序的第一行就调用,确保后续的console.log改写后的 + * 如:vue在main.js中引入,小程序可在app.js第一行引入 + * dev: isLog = true + * prod: isLog = false + * console.trace()为打印程序调用的堆栈,因为改写后打印的值是在改写后的堆栈中 + * 如果觉得太长可设置isLogStack = false + */ + +console.log = (function (logFunc, isLog = true, isLogStack = false) { + return function () { + if (!isLog) { + return + } + try { + let arr = [] + arr.push(...arguments) + arr.forEach((item, index) => { + if (Object.prototype.toString.call(item) === '[object Object]' || + Object.prototype.toString.call(item) === '[object Array]') { + arr[index] = JSON.parse(JSON.stringify(item)) + } + }) + logFunc.call(console, ...arr) + isLogStack ? console.trace() : null + } catch (e) { + console.log(`a log error: ${e}`) + } + } +})(console.log) diff --git a/package.json b/package.json new file mode 100644 index 0000000..0ce512f --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "cat-mall", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "btoa": "^1.2.1", + "btoa-atob": "^0.1.2", + "core-js": "^2.6.5", + "element-china-area-data": "^4.1.2", + "element-ui": "^2.13.0", + "vue": "^2.6.10", + "vue-infinite-scroll": "^2.0.2", + "vue-router": "^3.0.3", + "vuex": "^3.0.1" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^3.11.0", + "@vue/cli-plugin-eslint": "^3.11.0", + "@vue/cli-service": "^3.11.0", + "@vue/eslint-config-standard": "^4.0.0", + "axios": "^0.19.0", + "babel-eslint": "^10.0.1", + "eslint": "^5.16.0", + "eslint-plugin-vue": "^5.0.0", + "sass": "^1.18.0", + "sass-loader": "^7.1.0", + "vue-template-compiler": "^2.6.10" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..961986e --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/public/audio/cat-01.mp3 b/public/audio/cat-01.mp3 new file mode 100644 index 0000000..ce9a24d Binary files /dev/null and b/public/audio/cat-01.mp3 differ diff --git a/public/data.js b/public/data.js new file mode 100644 index 0000000..f31a26b --- /dev/null +++ b/public/data.js @@ -0,0 +1,409 @@ +// const goods = [ +// { +// goodsId: '100001', +// goodsName: '缅因猫', +// masterImg: 'https://img.alicdn.com/imgextra/i3/3360749321/O1CN01i5Su1Z2Ij4IHLfckK_!!3360749321.jpg', +// intro: '宠爱天下 俄血缅因猫 进口幼猫 银虎斑 纯种猫咪活体宠物猫', +// imgList: [ +// 'https://img.alicdn.com/imgextra/i3/3360749321/O1CN01i5Su1Z2Ij4IHLfckK_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i1/3360749321/O1CN01qkHNe02Ij4IBVMFTU_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i1/3360749321/O1CN01g86grv2Ij4ILgdVC8_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i3/3360749321/O1CN01PTZIe12Ij4INEX4So_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i3/3360749321/O1CN01LPlcCB2Ij4IJEuXBq_!!3360749321.jpg' +// ], +// address: '四川成都' +// }, +// { +// goodsId: '100002', +// goodsName: '布偶猫', +// masterImg: 'https://img.alicdn.com/imgextra/i2/3360749321/O1CN018kbTKx2Ij4EovJglw_!!3360749321.jpg', +// intro: '宠爱天下 布偶猫活体猫咪幼猫 纯种双色布偶猫活体', +// imgList: [ +// 'https://img.alicdn.com/imgextra/i2/3360749321/O1CN018kbTKx2Ij4EovJglw_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i1/3360749321/O1CN01wdVF8E2Ij4ErmcymR_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i2/3360749321/O1CN01Y3Qkyd2Ij4ErVSI9c_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i3/3360749321/O1CN01PTZIe12Ij4INEX4So_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i2/3360749321/O1CN0171x5Zh2Ij4EqzAbta_!!3360749321.jpg' +// ], +// address: '河北廊坊' +// }, +// { +// goodsId: '100003', +// goodsName: '短尾猫', +// masterImg: 'https://img.alicdn.com/imgextra/i4/3360749321/O1CN01QIoQwr2Ij4JQztbKQ_!!0-item_pic.jpg', +// intro: '宠爱天下英短蓝白猫咪活体幼猫纯种英国短毛猫宠物猫幼崽活体ZY', +// imgList: [ +// 'https://img.alicdn.com/imgextra/i4/3360749321/O1CN01QIoQwr2Ij4JQztbKQ_!!0-item_pic.jpg', +// 'https://img.alicdn.com/imgextra/i4/3360749321/O1CN01SeR5Jj2Ij4GkI0DrG_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i4/3360749321/O1CN01vzCbbE2Ij4Gcrlsig_!!3360749321.jpg', +// ], +// address: '北京' +// }, +// { +// goodsId: '100004', +// goodsName: '短毛猫', +// masterImg: 'https://img.alicdn.com/imgextra/i4/3360749321/O1CN01qcuaeT2Ij4HlIZXGU_!!0-item_pic.jpg_60x60q90.jpg', +// intro: '宠爱天下 纯种英国短毛猫咪幼崽幼蓝金英短金渐层纯种活体', +// imgList: [ +// 'https://img.alicdn.com/imgextra/i4/3360749321/O1CN01qcuaeT2Ij4HlIZXGU_!!0-item_pic.jpg_60x60q90.jpg', +// 'https://img.alicdn.com/imgextra/i4/3360749321/O1CN01nQPVsJ2Ij4HlRykMP_!!3360749321.jpg_60x60q90.jpg', +// 'https://img.alicdn.com/imgextra/i2/3360749321/O1CN01QvGTkO2Ij4Hp1pXAi_!!3360749321.jpg_60x60q90.jpg', +// ], +// address: '上海' +// }, +// { +// goodsId: '100005', +// goodsName: '矮脚猫', +// masterImg: 'https://img.alicdn.com/imgextra/i1/3360749321/O1CN01m0JZp32Ij4JdJtpJw_!!0-item_pic.jpg_60x60q90.jpg', +// intro: '英短蓝猫美短加白宠物活体物金银渐层毛纯种猫咪幼猫矮脚曼基康', +// imgList: [ +// 'https://img.alicdn.com/imgextra/i1/3360749321/O1CN01m0JZp32Ij4JdJtpJw_!!0-item_pic.jpg_60x60q90.jpg', +// 'https://img.alicdn.com/imgextra/i3/3360749321/O1CN01aPSE1d2Ij4Jec5o7G_!!3360749321.png_60x60q90.jpg', +// 'https://img.alicdn.com/imgextra/i2/3360749321/O1CN01FtBHEG2Ij4Ji5e1Ry_!!3360749321.jpg_60x60q90.jpg', +// ], +// address: '广州' +// }, +// { +// goodsId: '100006', +// goodsName: '猫仙', +// masterImg: 'https://img.alicdn.com/imgextra/i1/3360749321/O1CN01KFqGSQ2Ij4JSKJH5D_!!0-item_pic.jpg', +// intro: '宠爱天下布偶猫幼猫纯种活体宠物猫仙女猫布偶猫双色幼猫活体ZY', +// imgList: [ +// 'https://img.alicdn.com/imgextra/i1/3360749321/O1CN01m0JZp32Ij4JdJtpJw_!!0-item_pic.jpg', +// 'https://img.alicdn.com/imgextra/i3/3360749321/O1CN010KwG1U2Ij4IvLvDNt_!!3360749321.jpg', +// 'https://img.alicdn.com/imgextra/i3/3360749321/O1CN01D1kzdn2Ij4GX22X6Q_!!3360749321.jpg', +// ], +// address: '北京' +// }, +// ] + +const goods = [ + { + goodsId: '100001', + goodsName: '英短蓝猫', + originalPrice: 2500, + discountPrice: 1500, + memberPrice: 1499, + masterImg: 'https://gd2.alicdn.com/imgextra/i3/2200828121620/O1CN018Anp4u1Nq0BYAaqyv_!!2200828121620.jpg_50x50.jpg_.webp', + intro: '纯种英国短毛猫蓝猫猫咪活物幼猫宠物猫 上海可实地挑选', + imgList: [ + 'https://gd2.alicdn.com/imgextra/i3/2200828121620/O1CN018Anp4u1Nq0BYAaqyv_!!2200828121620.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2200828121620/O1CN01sqP54e1Nq0BW6v1Y8_!!2200828121620.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2200828121620/O1CN01yxZFXi1Nq0BYAbBsY_!!2200828121620.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2200828121620/O1CN0189cqJN1Nq0BQMGA4i_!!2200828121620.jpg_50x50.jpg_.webp', + ], + address: '上海' + }, + { + goodsId: '100002', + goodsName: '蓝猫', + originalPrice: 1500, + discountPrice: 300, + memberPrice: 299, + masterImg: 'https://gd3.alicdn.com/imgextra/i3/3630267353/O1CN01hJTdzB24BipU3nyN5_!!3630267353.jpg_50x50.jpg_.webp', + intro: '英短活体蓝猫纯种短毛猫英国短毛蓝猫幼猫猫崽蓝胖子宠物家养猫咪', + imgList: [ + 'https://gd3.alicdn.com/imgextra/i3/3630267353/O1CN01hJTdzB24BipU3nyN5_!!3630267353.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3630267353/O1CN01efFiWP24BipcahzmF_!!3630267353.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/3630267353/O1CN01w0N0oa24Bipd7x1ce_!!3630267353.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/3630267353/O1CN01N5EPLK24BipfVeuUu_!!3630267353.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/3630267353/O1CN0190grUR24BipfVcpcj_!!3630267353.jpg_50x50.jpg_.webp' + ], + address: '江苏苏州' + }, + { + goodsId: '100003', + goodsName: '金渐层幼猫', + originalPrice: 6800, + discountPrice: 680, + memberPrice: 599, + masterImg: 'https://gd2.alicdn.com/imgextra/i3/2200735262068/O1CN01ckuOuX1R9Bdhdjx7A_!!2200735262068.png_50x50.jpg_.webp', + intro: '纯种金渐层 英短金渐层 金渐层幼猫 金渐层幼猫 上海可上门挑选', + imgList: [ + 'https://gd2.alicdn.com/imgextra/i3/2200735262068/O1CN01ckuOuX1R9Bdhdjx7A_!!2200735262068.png_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/2200735262068/O1CN010O46dM1R9BdiRZceM_!!2200735262068.png_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2200735262068/O1CN01Azh1nh1R9Bdi9Xp3Z_!!2200735262068.png_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2200735262068/O1CN01eUtmM81R9BdlJjnmF_!!2200735262068.png_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/2200735262068/O1CN01bHTohu1R9Bdi9caRo_!!2200735262068.png_50x50.jpg_.webp' + ], + address: '上海' + }, + { + goodsId: '100004', + goodsName: '海豹猫', + originalPrice: 8800, + discountPrice: 1099, + memberPrice: 888, + masterImg: 'https://gd3.alicdn.com/imgextra/i1/2200735262068/O1CN01Y6FJ8o1R9Bcnyingg_!!2200735262068.png_50x50.jpg_.webp', + intro: '纯种蓝双色布偶猫幼猫 活体宠物 海豹双色布偶猫 上海可实体挑选', + imgList: [ + 'https://gd3.alicdn.com/imgextra/i1/2200735262068/O1CN01Y6FJ8o1R9Bcnyingg_!!2200735262068.png_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/2200735262068/O1CN01yLLWBY1R9BcpbHJjC_!!2200735262068.png_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/2200735262068/O1CN0112Eqnx1R9BcqlVamM_!!2200735262068.png_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2200735262068/O1CN01awJxQD1R9BcrL1sFp_!!2200735262068.png_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2200735262068/O1CN01RuntwE1R9Bctj3EEo_!!2200735262068.png_50x50.jpg_.webp' + ], + address: '上海' + }, + { + goodsId: '100005', + goodsName: '布偶猫咪', + originalPrice: 688, + discountPrice: 288, + memberPrice: 199, + masterImg: 'https://gd2.alicdn.com/imgextra/i2/2200735262068/O1CN01Qr6YlD1R9BcAIn9zA_!!2200735262068.jpg_50x50.jpg_.webp', + intro: '纯种布偶猫咪海豹双色蓝双山猫色宠物活体幼猫 上海可实地挑选', + imgList: [ + 'https://gd2.alicdn.com/imgextra/i2/2200735262068/O1CN01Qr6YlD1R9BcAIn9zA_!!2200735262068.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2200735262068/O1CN01uchTAD1R9BcACeUug_!!2200735262068.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2200735262068/O1CN01iJHQRh1R9Bc2cKC5B_!!2200735262068.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2200735262068/O1CN01PdmR0w1R9BcDiZwAp_!!2200735262068.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2200735262068/O1CN01SvAkdd1R9BcCqHsbF_!!2200735262068.jpg_50x50.jpg_.webp' + ], + address: '上海' + }, + { + goodsId: '100006', + goodsName: '小奶猫', + originalPrice: 800, + discountPrice: 399, + memberPrice: 149, + masterImg: 'https://gd1.alicdn.com/imgextra/i3/3968164891/O1CN01t6RFQd1m07kRE7I0C_!!3968164891.jpg_50x50.jpg_.webp', + intro: '英短银渐层小奶猫宠物幼崽渐层猫咪活物纯种英国短毛小型可爱蓝猫', + imgList: [ + 'https://gd1.alicdn.com/imgextra/i3/3968164891/O1CN01t6RFQd1m07kRE7I0C_!!3968164891.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3968164891/O1CN01UbXnPm1m07kQr1Il7_!!3968164891.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3968164891/O1CN01YFsYgm1m07kRE85ul_!!3968164891.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3968164891/O1CN01D5PzRS1m07kV3Ua5j_!!3968164891.jpg_50x50.jpg_.webp', + ], + address: '苏州' + }, + { + goodsId: '100007', + goodsName: '幼猫', + originalPrice: 1500, + discountPrice: 809, + memberPrice: 666, + masterImg: 'https://gd1.alicdn.com/imgextra/i1/2200775366029/O1CN014CT6gN1uPKPsmcGNu_!!2200775366029.jpg_50x50.jpg_.webp', + intro: '纯种英短银渐层猫幼猫活体折耳宠物猫咪 基地繁殖', + imgList: [ + 'https://gd1.alicdn.com/imgextra/i1/2200775366029/O1CN014CT6gN1uPKPsmcGNu_!!2200775366029.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2200775366029/O1CN01I90NqK1uPKPwwBMCY_!!2200775366029.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2200775366029/O1CN01Gwnysh1uPKPwFDewo_!!2200775366029.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/2200775366029/O1CN01rH54Wh1uPKPtiaiDV_!!2200775366029.jpg_50x50.jpg_.webp', + ], + address: '杭州' + }, + { + goodsId: '100008', + goodsName: '小奶猫', + originalPrice: 5000, + discountPrice: 2999, + memberPrice: 2599, + masterImg: 'https://gd3.alicdn.com/imgextra/i4/3316892311/O1CN0169Mr9S1SwTtlhU49Y_!!3316892311.jpg_50x50.jpg_.webp', + intro: '英短金渐层猫活体幼猫宠物猫咪活物幼崽纯种小奶猫', + imgList: [ + 'https://gd3.alicdn.com/imgextra/i4/3316892311/O1CN0169Mr9S1SwTtlhU49Y_!!3316892311.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/3316892311/O1CN01ILNXKo1SwTtj7nGlv_!!3316892311.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/3316892311/O1CN01cEEhEu1SwTtiki9m6_!!3316892311.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/3316892311/O1CN01HJUBkF1SwTthS4Jte_!!3316892311.jpg_50x50.jpg_.webp', + ], + address: '上海' + }, + { + goodsId: '100009', + goodsName: '布偶猫', + originalPrice: 460, + discountPrice: 99, + memberPrice: 88, + masterImg: 'https://gd3.alicdn.com/imgextra/i4/3382216290/O1CN01IsyuFJ1wKrojBEdhU_!!3382216290.jpg_50x50.jpg_.webp', + intro: '纯种布偶猫活体幼猫宠物猫咪活物 上海杭州苏州武汉 可实地挑选', + imgList: [ + 'https://gd3.alicdn.com/imgextra/i4/3382216290/O1CN01IsyuFJ1wKrojBEdhU_!!3382216290.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/3382216290/O1CN01fddKsT1wKrohJts8A_!!3382216290.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3382216290/O1CN01L858kp1wKrohWzOfp_!!3382216290.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3382216290/O1CN01XBaKsy1wKrojcdcOh_!!3382216290.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/3382216290/O1CN01wlV4Um1wKrokwXbRB_!!3382216290.jpg_50x50.jpg_.webp' + ], + address: '武汉' + }, + { + goodsId: '100010', + goodsName: '黑猫', + originalPrice: 800, + discountPrice: 500, + memberPrice: 400, + masterImg: 'https://gd4.alicdn.com/imgextra/i1/2201241610038/O1CN01vNPAAD1C9RbQIR2iD_!!2201241610038.jpg_50x50.jpg_.webp', + intro: '纯种孟买猫活体 宠物猫咪活体黑猫 可爱幼猫辟邪招财玄猫幼崽猫咪', + imgList: [ + 'https://gd4.alicdn.com/imgextra/i1/2201241610038/O1CN01vNPAAD1C9RbQIR2iD_!!2201241610038.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2201241610038/O1CN015Tq77w1C9RbSSbQmQ_!!2201241610038.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2201241610038/O1CN01zdvn2B1C9RbSSfFqK_!!2201241610038.jpg_50x50.jpg_.webp', + ], + address: '广州' + }, + { + goodsId: '100011', + goodsName: '加菲猫', + originalPrice: 12000, + discountPrice: 100, + memberPrice: 88, + masterImg: 'https://gd3.alicdn.com/imgextra/i2/2207264875257/O1CN01j7mLYX1ohkhnEM8Mi_!!2207264875257.jpg_50x50.jpg_.webp', + intro: '布偶猫幼猫纯种海双蓝双幼崽加菲暹罗金吉拉折耳猫矮脚小猫咪活物', + imgList: [ + 'https://gd3.alicdn.com/imgextra/i2/2207264875257/O1CN01j7mLYX1ohkhnEM8Mi_!!2207264875257.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2207264875257/O1CN01Q3FiQz1ohkhw1ZGrF_!!2207264875257.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2207264875257/O1CN01TADEPU1ohkhszIJl5_!!2207264875257.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2207264875257/O1CN01KKWepM1ohkhwEsLaJ_!!2207264875257.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2207264875257/O1CN01lr3gJS1ohkhuS6Drh_!!2207264875257.jpg_50x50.jpg_.webp' + ], + address: '浙江' + }, + { + goodsId: '100012', + goodsName: '米粒猫', + originalPrice: 7660, + discountPrice: 3888, + memberPrice: 3588, + masterImg: 'https://gd1.alicdn.com/imgextra/i2/2201499782317/O1CN01IDRfHj1SzEE9XNujF_!!2201499782317.jpg_50x50.jpg_.webp', + intro: '布偶猫幼猫布偶猫活体布偶猫纯种CFA认证海双蓝双布偶双血统认证', + imgList: [ + 'https://gd1.alicdn.com/imgextra/i2/2201499782317/O1CN01IDRfHj1SzEE9XNujF_!!2201499782317.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2201499782317/O1CN01BhPHK51SzEE5jmutu_!!2201499782317.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2201499782317/O1CN01fY80Io1SzEE9XPnF4_!!2201499782317.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2201499782317/O1CN01EGqnTs1SzEE6ciiOb_!!2201499782317.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2201499782317/O1CN01I3kqSP1SzEDxMIXTn_!!2201499782317.jpg_50x50.jpg_.webp' + ], + address: '广州' + }, + { + goodsId: '100013', + goodsName: '暹罗猫', + originalPrice: 3000, + discountPrice: 2000, + memberPrice: 1999, + masterImg: 'https://gd1.alicdn.com/imgextra/i2/2201203844242/O1CN01xkIEgb1hCshCOdb6j_!!2201203844242.jpg_50x50.jpg_.webp', + intro: '纯种泰国暹罗猫活体幼猫挖煤猫家养幼猫蓝眼睛重点色暹罗宠物猫咪', + imgList: [ + 'https://gd1.alicdn.com/imgextra/i2/2201203844242/O1CN01xkIEgb1hCshCOdb6j_!!2201203844242.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/2201203844242/O1CN01kr7BEX1hCshEEsZ6A_!!2201203844242.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2201203844242/O1CN019NGZ3k1hCshEEshQO_!!2201203844242.png_50x50.jpg_.webp', + ], + address: '四川成都' + }, + { + goodsId: '100014', + goodsName: '包子猫', + originalPrice: 1500, + discountPrice: 500, + memberPrice: 388, + masterImg: 'https://gd1.alicdn.com/imgextra/i4/2201438747449/O1CN01OurXfM24tgsglcyQr_!!2201438747449.jpg_50x50.jpg_.webp', + intro: '英短蓝猫幼猫活体宠物猫正宗包子脸幼崽英短矮脚蓝猫猫咪活体宠物', + imgList: [ + 'https://gd1.alicdn.com/imgextra/i4/2201438747449/O1CN01OurXfM24tgsglcyQr_!!2201438747449.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2201438747449/O1CN01QVg66824tgsfqtzkq_!!2201438747449.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2201438747449/O1CN01QnfBeC24tgshacfpG_!!2201438747449.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/2201438747449/O1CN012TlCMx24tgsfqsaT7_!!2201438747449.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2201438747449/O1CN01m79Yys24tgsXbRBHr_!!2201438747449.jpg_50x50.jpg_.webp' + ], + address: '西藏拉萨' + }, + { + goodsId: '100015', + goodsName: '仙女猫', + originalPrice: 9800, + discountPrice: 1800, + memberPrice: 1699, + masterImg: 'https://gd4.alicdn.com/imgextra/i2/1974944047/O1CN01kWWKrL1flZT6NQiUP_!!1974944047.jpg_50x50.jpg_.webp', + intro: '布偶猫幼猫宠物猫幼崽活体活物拿破仑猫咪小奶猫波斯纯种猫咪仙女', + imgList: [ + 'https://gd4.alicdn.com/imgextra/i2/1974944047/O1CN01kWWKrL1flZT6NQiUP_!!1974944047.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/1974944047/O1CN01exUmWT1flZT1fw8js_!!1974944047.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/1974944047/O1CN01p7LvVl1flZT9YVmyf_!!1974944047.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/1974944047/O1CN01LdCb4B1flZTAt16yR_!!1974944047.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/1974944047/O1CN01d4CPHb1flZT9YV7P9_!!1974944047.jpg_50x50.jpg_.webp' + ], + address: '北京' + }, + { + goodsId: '100016', + goodsName: '波斯猫', + originalPrice: 9800, + discountPrice: 6800, + memberPrice: 5799, + masterImg: 'https://gd1.alicdn.com/imgextra/i2/0/TB1o.g9a_1z01JjSZFCXXXY.XXa_!!0-item_pic.jpg_50x50.jpg_.webp', + intro: '梵娅宠物猫咪活体 纯白色异国短毛猫加菲猫 高地波斯猫布偶猫幼猫', + imgList: [ + 'https://gd1.alicdn.com/imgextra/i2/0/TB1o.g9a_1z01JjSZFCXXXY.XXa_!!0-item_pic.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3387833466/TB2rz8ifvNNTKJjSspfXXbXIFXa_!!3387833466.jpg_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3387833466/TB2z0chlwn.PuJjSZFkXXc_lpXa_!!3387833466.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/3387833466/TB2FaHWool7MKJjSZFDXXaOEpXa_!!3387833466.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/3387833466/TB22sxBklUSMeJjy1zjXXc0dXXa_!!3387833466.jpg_50x50.jpg_.webp' + ], + address: '北京' + }, + { + goodsId: '100017', + goodsName: '小胖猫', + originalPrice: 2000, + discountPrice: 199, + memberPrice: 168, + masterImg: 'https://gd3.alicdn.com/imgextra/i2/1868725912/O1CN01JWp9d81tXk7UdOsZE_!!1868725912.png_50x50.jpg_.webp', + intro: '纯种加菲猫宠物猫异国短毛猫幼崽猫咪活体纯白红小胖净梵加菲猫咪', + imgList: [ + 'https://gd3.alicdn.com/imgextra/i2/1868725912/O1CN01JWp9d81tXk7UdOsZE_!!1868725912.png_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/1868725912/O1CN01qcNkNG1tXk7S82kpx_!!1868725912.png_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/1868725912/O1CN01biPHKu1tXk7SHoNMC_!!1868725912.jpg_50x50.jpg_.webp', + 'https://gd2.alicdn.com/imgextra/i2/1868725912/O1CN01bi4jzO1tXk7UbMCIL_!!1868725912.png_50x50.jpg_.webp', + ], + address: '广东深圳' + }, + { + goodsId: '100018', + goodsName: '折耳猫', + originalPrice: 3888, + discountPrice: 1200, + memberPrice: 1108, + masterImg: 'https://gd1.alicdn.com/imgextra/i2/2207264875257/O1CN01TADEPU1ohkhszIJl5_!!2207264875257.jpg_50x50.jpg_.webp', + intro: '蓝白幼猫纯种英短蓝猫银渐层折耳猫幼崽曼基康矮脚宠物小猫咪活物', + imgList: [ + 'https://gd1.alicdn.com/imgextra/i2/2207264875257/O1CN01TADEPU1ohkhszIJl5_!!2207264875257.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2207264875257/O1CN01DaWGPm1ohkhrfvhWx_!!2207264875257.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2207264875257/O1CN01KKWepM1ohkhwEsLaJ_!!2207264875257.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/2207264875257/O1CN01qWZItZ1ohkhwEsgQi_!!2207264875257.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/2207264875257/O1CN01moQGTq1ohkhtjBY3t_!!2207264875257.jpg_50x50.jpg_.webp' + ], + address: '上海' + }, + { + goodsId: '100019', + goodsName: '纯种蓝猫活体蓝猫幼猫英短蓝猫 蓝猫英短英国短毛猫 蓝猫宠物猫咪', + originalPrice: 800, + discountPrice: 403, + memberPrice: 203, + masterImg: 'https://gd4.alicdn.com/imgextra/i4/2206709760453/O1CN01QR4SxS1FDVzv9CxEb_!!2206709760453.jpg_50x50.jpg_.webp', + intro: '', + imgList: [ + 'https://gd4.alicdn.com/imgextra/i4/2206709760453/O1CN01QR4SxS1FDVzv9CxEb_!!2206709760453.jpg_50x50.jpg_.webp', + 'https://gd1.alicdn.com/imgextra/i1/2206709760453/O1CN0183wzWY1FDVzr7uqX0_!!2206709760453.jpg_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/2206709760453/O1CN01VmnGzR1FDVzvI5GH9_!!2206709760453.jpg_50x50.jpg_.webp', + ], + address: '四川成都' + }, + { + goodsId: '100020', + goodsName: '蓝眼猫', + originalPrice: 2300, + discountPrice: 1799, + memberPrice: 1599, + masterImg: 'https://gd1.alicdn.com/imgextra/i1/3435629636/O1CN01uyLDbu2L3L1k30L1b_!!3435629636.png_50x50.jpg_.webp', + intro: '天津实体猫舍英短蓝猫宠物猫 CFA专业认证纯种双血统包健康可上门', + imgList: [ + 'https://gd1.alicdn.com/imgextra/i1/3435629636/O1CN01uyLDbu2L3L1k30L1b_!!3435629636.png_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/3435629636/O1CN01Pgthek2L3L1k6oBMo_!!3435629636.png_50x50.jpg_.webp', + 'https://gd4.alicdn.com/imgextra/i4/3435629636/O1CN01ERtZgQ2L3L1k6o7C9_!!3435629636.png_50x50.jpg_.webp', + 'https://gd3.alicdn.com/imgextra/i3/3435629636/O1CN01FmnNmF2L3L1kufKDz_!!3435629636.png_50x50.jpg_.webp', + ], + address: '天津' + }, +] diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..df36fcf Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/font/DFPHaiBaoW12-GB.ttf b/public/font/DFPHaiBaoW12-GB.ttf new file mode 100644 index 0000000..c482ed6 Binary files /dev/null and b/public/font/DFPHaiBaoW12-GB.ttf differ diff --git a/public/font/FZMiaoWuS-GB.ttf b/public/font/FZMiaoWuS-GB.ttf new file mode 100644 index 0000000..335c354 Binary files /dev/null and b/public/font/FZMiaoWuS-GB.ttf differ diff --git a/public/images/banner/banner_01.png b/public/images/banner/banner_01.png new file mode 100644 index 0000000..c5804b2 Binary files /dev/null and b/public/images/banner/banner_01.png differ diff --git a/public/images/banner/banner_02.png b/public/images/banner/banner_02.png new file mode 100644 index 0000000..32d9552 Binary files /dev/null and b/public/images/banner/banner_02.png differ diff --git a/public/images/banner/banner_03.png b/public/images/banner/banner_03.png new file mode 100644 index 0000000..d034596 Binary files /dev/null and b/public/images/banner/banner_03.png differ diff --git a/public/images/cart/del-active.png b/public/images/cart/del-active.png new file mode 100644 index 0000000..5290417 Binary files /dev/null and b/public/images/cart/del-active.png differ diff --git a/public/images/cart/del.png b/public/images/cart/del.png new file mode 100644 index 0000000..d43373f Binary files /dev/null and b/public/images/cart/del.png differ diff --git a/public/images/cart/discount-btn.png b/public/images/cart/discount-btn.png new file mode 100644 index 0000000..a158b58 Binary files /dev/null and b/public/images/cart/discount-btn.png differ diff --git a/public/images/cart/discount.png b/public/images/cart/discount.png new file mode 100644 index 0000000..7c702db Binary files /dev/null and b/public/images/cart/discount.png differ diff --git a/public/images/cart/left.png b/public/images/cart/left.png new file mode 100644 index 0000000..57786ca Binary files /dev/null and b/public/images/cart/left.png differ diff --git a/public/images/cart/none-data.svg b/public/images/cart/none-data.svg new file mode 100644 index 0000000..435a94a --- /dev/null +++ b/public/images/cart/none-data.svg @@ -0,0 +1 @@ + diff --git a/public/images/cart/right.png b/public/images/cart/right.png new file mode 100644 index 0000000..3a69422 Binary files /dev/null and b/public/images/cart/right.png differ diff --git a/public/images/cart/sort.png b/public/images/cart/sort.png new file mode 100644 index 0000000..f3b18a8 Binary files /dev/null and b/public/images/cart/sort.png differ diff --git a/public/images/cart/trumpet.svg b/public/images/cart/trumpet.svg new file mode 100644 index 0000000..d6c50fb --- /dev/null +++ b/public/images/cart/trumpet.svg @@ -0,0 +1 @@ + diff --git a/public/images/cart/up.png b/public/images/cart/up.png new file mode 100644 index 0000000..62f938d Binary files /dev/null and b/public/images/cart/up.png differ diff --git a/public/images/cat/cat1/cat1_1.jpg b/public/images/cat/cat1/cat1_1.jpg new file mode 100644 index 0000000..23efb1b Binary files /dev/null and b/public/images/cat/cat1/cat1_1.jpg differ diff --git a/public/images/cat/cat1/cat1_2.jpg b/public/images/cat/cat1/cat1_2.jpg new file mode 100644 index 0000000..fca43a9 Binary files /dev/null and b/public/images/cat/cat1/cat1_2.jpg differ diff --git a/public/images/cat/cat1/cat1_3.jpg b/public/images/cat/cat1/cat1_3.jpg new file mode 100644 index 0000000..f441dc0 Binary files /dev/null and b/public/images/cat/cat1/cat1_3.jpg differ diff --git a/public/images/cat/cat1/cat1_4.jpg b/public/images/cat/cat1/cat1_4.jpg new file mode 100644 index 0000000..0a7b4a4 Binary files /dev/null and b/public/images/cat/cat1/cat1_4.jpg differ diff --git a/public/images/cat/cat1/cat1_5.jpg b/public/images/cat/cat1/cat1_5.jpg new file mode 100644 index 0000000..322b096 Binary files /dev/null and b/public/images/cat/cat1/cat1_5.jpg differ diff --git a/public/images/cat/cat_01.png b/public/images/cat/cat_01.png new file mode 100644 index 0000000..d84cbc8 Binary files /dev/null and b/public/images/cat/cat_01.png differ diff --git a/public/images/cat/cat_02.png b/public/images/cat/cat_02.png new file mode 100644 index 0000000..f411bcf Binary files /dev/null and b/public/images/cat/cat_02.png differ diff --git a/public/images/detail/comment.png b/public/images/detail/comment.png new file mode 100644 index 0000000..70c3433 Binary files /dev/null and b/public/images/detail/comment.png differ diff --git a/public/images/detail/crown.png b/public/images/detail/crown.png new file mode 100644 index 0000000..fc67e61 Binary files /dev/null and b/public/images/detail/crown.png differ diff --git a/public/images/detail/edit.png b/public/images/detail/edit.png new file mode 100644 index 0000000..2f453a4 Binary files /dev/null and b/public/images/detail/edit.png differ diff --git a/public/images/detail/no-comment.png b/public/images/detail/no-comment.png new file mode 100644 index 0000000..5d2991c Binary files /dev/null and b/public/images/detail/no-comment.png differ diff --git a/public/images/detail/star-0.png b/public/images/detail/star-0.png new file mode 100644 index 0000000..261e67d Binary files /dev/null and b/public/images/detail/star-0.png differ diff --git a/public/images/detail/star-1.png b/public/images/detail/star-1.png new file mode 100644 index 0000000..5dc7c8d Binary files /dev/null and b/public/images/detail/star-1.png differ diff --git a/public/images/detail/star-2.png b/public/images/detail/star-2.png new file mode 100644 index 0000000..51ddd69 Binary files /dev/null and b/public/images/detail/star-2.png differ diff --git a/public/images/detail/star-3.png b/public/images/detail/star-3.png new file mode 100644 index 0000000..6576230 Binary files /dev/null and b/public/images/detail/star-3.png differ diff --git a/public/images/detail/vip.png b/public/images/detail/vip.png new file mode 100644 index 0000000..42a7d52 Binary files /dev/null and b/public/images/detail/vip.png differ diff --git a/public/images/detail/zan-down-1.svg b/public/images/detail/zan-down-1.svg new file mode 100644 index 0000000..599cf85 --- /dev/null +++ b/public/images/detail/zan-down-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/detail/zan-up-1.svg b/public/images/detail/zan-up-1.svg new file mode 100644 index 0000000..8eb6b3b --- /dev/null +++ b/public/images/detail/zan-up-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/home/member.png b/public/images/home/member.png new file mode 100644 index 0000000..0a9014f Binary files /dev/null and b/public/images/home/member.png differ diff --git a/public/images/home/sort-btn.png b/public/images/home/sort-btn.png new file mode 100644 index 0000000..a5aac55 Binary files /dev/null and b/public/images/home/sort-btn.png differ diff --git a/public/images/home/sort-btn.svg b/public/images/home/sort-btn.svg new file mode 100644 index 0000000..4d81f3c --- /dev/null +++ b/public/images/home/sort-btn.svg @@ -0,0 +1 @@ + diff --git a/public/images/my/circle.png b/public/images/my/circle.png new file mode 100644 index 0000000..8e358fb Binary files /dev/null and b/public/images/my/circle.png differ diff --git a/public/images/my/comment.png b/public/images/my/comment.png new file mode 100644 index 0000000..4cf1bd6 Binary files /dev/null and b/public/images/my/comment.png differ diff --git a/public/images/my/man.png b/public/images/my/man.png new file mode 100644 index 0000000..ff03640 Binary files /dev/null and b/public/images/my/man.png differ diff --git a/public/images/my/none-data.svg b/public/images/my/none-data.svg new file mode 100644 index 0000000..3ba61da --- /dev/null +++ b/public/images/my/none-data.svg @@ -0,0 +1 @@ + diff --git a/public/images/my/reload.png b/public/images/my/reload.png new file mode 100644 index 0000000..a302c4d Binary files /dev/null and b/public/images/my/reload.png differ diff --git a/public/images/my/select_0.png b/public/images/my/select_0.png new file mode 100644 index 0000000..48266b6 Binary files /dev/null and b/public/images/my/select_0.png differ diff --git a/public/images/my/select_1.png b/public/images/my/select_1.png new file mode 100644 index 0000000..64a02a9 Binary files /dev/null and b/public/images/my/select_1.png differ diff --git a/public/images/my/woman.png b/public/images/my/woman.png new file mode 100644 index 0000000..8ed1ce9 Binary files /dev/null and b/public/images/my/woman.png differ diff --git a/public/images/order/border-0.png b/public/images/order/border-0.png new file mode 100644 index 0000000..5216ece Binary files /dev/null and b/public/images/order/border-0.png differ diff --git a/public/images/order/border-1.png b/public/images/order/border-1.png new file mode 100644 index 0000000..47073a3 Binary files /dev/null and b/public/images/order/border-1.png differ diff --git a/public/images/order/border-add.png b/public/images/order/border-add.png new file mode 100644 index 0000000..4896dcc Binary files /dev/null and b/public/images/order/border-add.png differ diff --git a/public/images/order/cancel.svg b/public/images/order/cancel.svg new file mode 100644 index 0000000..2a6a922 --- /dev/null +++ b/public/images/order/cancel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/order/down-more.png b/public/images/order/down-more.png new file mode 100644 index 0000000..d9d0936 Binary files /dev/null and b/public/images/order/down-more.png differ diff --git a/public/images/order/edit.svg b/public/images/order/edit.svg new file mode 100644 index 0000000..2816a5d --- /dev/null +++ b/public/images/order/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/order/head-photo.png b/public/images/order/head-photo.png new file mode 100644 index 0000000..0788f09 Binary files /dev/null and b/public/images/order/head-photo.png differ diff --git a/public/images/order/location.svg b/public/images/order/location.svg new file mode 100644 index 0000000..676a2b3 --- /dev/null +++ b/public/images/order/location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/order/order-success.png b/public/images/order/order-success.png new file mode 100644 index 0000000..c933c25 Binary files /dev/null and b/public/images/order/order-success.png differ diff --git a/public/images/order/phone.svg b/public/images/order/phone.svg new file mode 100644 index 0000000..d8b1de8 --- /dev/null +++ b/public/images/order/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/public/default.png b/public/images/public/default.png new file mode 100644 index 0000000..563b45f Binary files /dev/null and b/public/images/public/default.png differ diff --git a/public/images/public/edit.png b/public/images/public/edit.png new file mode 100644 index 0000000..4de3ef9 Binary files /dev/null and b/public/images/public/edit.png differ diff --git a/public/images/public/email.png b/public/images/public/email.png new file mode 100644 index 0000000..4659059 Binary files /dev/null and b/public/images/public/email.png differ diff --git a/public/images/public/github.png b/public/images/public/github.png new file mode 100644 index 0000000..52a1e76 Binary files /dev/null and b/public/images/public/github.png differ diff --git a/public/images/public/github1.png b/public/images/public/github1.png new file mode 100644 index 0000000..a799b1e Binary files /dev/null and b/public/images/public/github1.png differ diff --git a/public/images/public/head-photo.png b/public/images/public/head-photo.png new file mode 100644 index 0000000..0788f09 Binary files /dev/null and b/public/images/public/head-photo.png differ diff --git a/public/images/public/login.png b/public/images/public/login.png new file mode 100644 index 0000000..2023c4c Binary files /dev/null and b/public/images/public/login.png differ diff --git a/public/images/public/pwd.png b/public/images/public/pwd.png new file mode 100644 index 0000000..e9b5a93 Binary files /dev/null and b/public/images/public/pwd.png differ diff --git a/public/images/public/qq.png b/public/images/public/qq.png new file mode 100644 index 0000000..79f9833 Binary files /dev/null and b/public/images/public/qq.png differ diff --git a/public/images/public/qrcode.png b/public/images/public/qrcode.png new file mode 100644 index 0000000..2a5e539 Binary files /dev/null and b/public/images/public/qrcode.png differ diff --git a/public/images/public/register.png b/public/images/public/register.png new file mode 100644 index 0000000..a984148 Binary files /dev/null and b/public/images/public/register.png differ diff --git a/public/images/public/showfalse.png b/public/images/public/showfalse.png new file mode 100644 index 0000000..cd71e45 Binary files /dev/null and b/public/images/public/showfalse.png differ diff --git a/public/images/public/showtrue.png b/public/images/public/showtrue.png new file mode 100644 index 0000000..dd3db3a Binary files /dev/null and b/public/images/public/showtrue.png differ diff --git a/public/images/public/wx.png b/public/images/public/wx.png new file mode 100644 index 0000000..014b207 Binary files /dev/null and b/public/images/public/wx.png differ diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..e9a2efc --- /dev/null +++ b/public/index.html @@ -0,0 +1,18 @@ + + + + + + + + + cat-mall + + + +
+ + + diff --git a/public/svgs/add.svg b/public/svgs/add.svg new file mode 100644 index 0000000..fc20eee --- /dev/null +++ b/public/svgs/add.svg @@ -0,0 +1 @@ + diff --git a/public/svgs/cart.svg b/public/svgs/cart.svg new file mode 100644 index 0000000..0ad0573 --- /dev/null +++ b/public/svgs/cart.svg @@ -0,0 +1 @@ + diff --git a/public/svgs/like_0.svg b/public/svgs/like_0.svg new file mode 100644 index 0000000..7acf95d --- /dev/null +++ b/public/svgs/like_0.svg @@ -0,0 +1 @@ + diff --git a/public/svgs/like_1.svg b/public/svgs/like_1.svg new file mode 100644 index 0000000..fc8a9f7 --- /dev/null +++ b/public/svgs/like_1.svg @@ -0,0 +1 @@ + diff --git a/public/svgs/minus.svg b/public/svgs/minus.svg new file mode 100644 index 0000000..56ae5ac --- /dev/null +++ b/public/svgs/minus.svg @@ -0,0 +1 @@ + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..b82c9de --- /dev/null +++ b/src/App.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/assets/conf/routerList.js b/src/assets/conf/routerList.js new file mode 100644 index 0000000..2d1c86e --- /dev/null +++ b/src/assets/conf/routerList.js @@ -0,0 +1,27 @@ +export default { + '/': { + name: '首页', + path: '/', + fullPath: '/' + }, + '/cart': { + name: '购物车', + path: '/cart', + fullPath: '' + }, + '/detail': { + name: '宠物详情', + path: '/detail', + fullPath: '' + }, + '/order': { + name: '下单', + path: '/order', + fullPath: '' + }, + '/my': { + name: '我的', + path: '/my', + fullPath: '' + } +} diff --git a/src/assets/loading-svg/dual-ball-gray.svg b/src/assets/loading-svg/dual-ball-gray.svg new file mode 100644 index 0000000..f9bca21 --- /dev/null +++ b/src/assets/loading-svg/dual-ball-gray.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/loading-svg/dual-ball.svg b/src/assets/loading-svg/dual-ball.svg new file mode 100644 index 0000000..f8313d5 --- /dev/null +++ b/src/assets/loading-svg/dual-ball.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/loading-svg/loading-balls.svg b/src/assets/loading-svg/loading-balls.svg new file mode 100644 index 0000000..9f3d96d --- /dev/null +++ b/src/assets/loading-svg/loading-balls.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/loading-svg/loading-bars.svg b/src/assets/loading-svg/loading-bars.svg new file mode 100644 index 0000000..614f7d8 --- /dev/null +++ b/src/assets/loading-svg/loading-bars.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/loading-svg/loading-bubbles.svg b/src/assets/loading-svg/loading-bubbles.svg new file mode 100644 index 0000000..75a1e3e --- /dev/null +++ b/src/assets/loading-svg/loading-bubbles.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/src/assets/loading-svg/loading-cubes.svg b/src/assets/loading-svg/loading-cubes.svg new file mode 100644 index 0000000..850bdab --- /dev/null +++ b/src/assets/loading-svg/loading-cubes.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/loading-svg/loading-cylon-red.svg b/src/assets/loading-svg/loading-cylon-red.svg new file mode 100644 index 0000000..67140a4 --- /dev/null +++ b/src/assets/loading-svg/loading-cylon-red.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/loading-svg/loading-cylon.svg b/src/assets/loading-svg/loading-cylon.svg new file mode 100644 index 0000000..dc8f122 --- /dev/null +++ b/src/assets/loading-svg/loading-cylon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/loading-svg/loading-spin.svg b/src/assets/loading-svg/loading-spin.svg new file mode 100644 index 0000000..328c75f --- /dev/null +++ b/src/assets/loading-svg/loading-spin.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/loading-svg/loading-spinning-bubbles.svg b/src/assets/loading-svg/loading-spinning-bubbles.svg new file mode 100644 index 0000000..8cbf326 --- /dev/null +++ b/src/assets/loading-svg/loading-spinning-bubbles.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/loading-svg/loading-spokes.svg b/src/assets/loading-svg/loading-spokes.svg new file mode 100644 index 0000000..b47a79c --- /dev/null +++ b/src/assets/loading-svg/loading-spokes.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/src/assets/logo.png differ diff --git a/src/assets/scss/css/font-awesome.css b/src/assets/scss/css/font-awesome.css new file mode 100644 index 0000000..ee906a8 --- /dev/null +++ b/src/assets/scss/css/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/src/assets/scss/css/font-awesome.min.css b/src/assets/scss/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/src/assets/scss/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/src/assets/scss/font-awesome.min.css b/src/assets/scss/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/src/assets/scss/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/src/assets/scss/fonts/FontAwesome.otf b/src/assets/scss/fonts/FontAwesome.otf new file mode 100644 index 0000000..401ec0f Binary files /dev/null and b/src/assets/scss/fonts/FontAwesome.otf differ diff --git a/src/assets/scss/fonts/fontawesome-webfont.eot b/src/assets/scss/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/src/assets/scss/fonts/fontawesome-webfont.eot differ diff --git a/src/assets/scss/fonts/fontawesome-webfont.svg b/src/assets/scss/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/src/assets/scss/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/scss/fonts/fontawesome-webfont.ttf b/src/assets/scss/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/src/assets/scss/fonts/fontawesome-webfont.ttf differ diff --git a/src/assets/scss/fonts/fontawesome-webfont.woff b/src/assets/scss/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/src/assets/scss/fonts/fontawesome-webfont.woff differ diff --git a/src/assets/scss/fonts/fontawesome-webfont.woff2 b/src/assets/scss/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/src/assets/scss/fonts/fontawesome-webfont.woff2 differ diff --git a/src/assets/scss/media.scss b/src/assets/scss/media.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/scss/public.scss b/src/assets/scss/public.scss new file mode 100644 index 0000000..0ebc164 --- /dev/null +++ b/src/assets/scss/public.scss @@ -0,0 +1,127 @@ +html,body { + margin: 0; + padding: 0; +} + +.container { + width: 1200px; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto; +} + +.x-center { + display: flex; + justify-content: center; +} + +.y-center { + display: flex; + align-items: center; +} + +//垂直方向居中 +.yx-center { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; +} + +.xy-center { + display: flex; + align-items: center; + justify-content: center; +} + +.y-center__between { + display: flex; + align-items: center; + justify-content: space-between; +} + + +.bottom-line { + width: 100%; + height: 3px; + background: #f2f2f2; +} + +@font-face { + font-family: 'DFPHaiBaoW12-GB'; + src: url("./../../../public/font/DFPHaiBaoW12-GB.ttf"); +} + +@font-face { + font-family: 'FZMiaoWuS-GB'; + src: url("./../../../public/font/FZMiaoWuS-GB.ttf"); +} + +@keyframes fade { + from { + opacity: 1.0; + } + 50% { + opacity: .6; + } + to { + opacity: 1.0; + } +} + +@-webkit-keyframes fade { + from { + opacity: 1.0; + } + 50% { + opacity: .6; + } + to { + opacity: 1.0; + } +} + +// 选择180度 +@keyframes rotate-opposite { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(180deg); + } +} + +@-webkit-keyframes rotate-opposite { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(180deg); + } +} + +@font-face { + font-family: 'iconfont'; /* project id 1541787 */ + src: url('//at.alicdn.com/t/font_1541787_5m1rtt5vyqq.eot'); + src: url('//at.alicdn.com/t/font_1541787_5m1rtt5vyqq.eot?#iefix') format('embedded-opentype'), + url('//at.alicdn.com/t/font_1541787_5m1rtt5vyqq.woff2') format('woff2'), + url('//at.alicdn.com/t/font_1541787_5m1rtt5vyqq.woff') format('woff'), + url('//at.alicdn.com/t/font_1541787_5m1rtt5vyqq.ttf') format('truetype'), + url('//at.alicdn.com/t/font_1541787_5m1rtt5vyqq.svg#iconfont') format('svg'); +} + +.paying-tips { + background-color: #f0f9eb; + border-color: #e1f3d8; + color: #67C23A !important; + + p { + margin-left: 15px; + } +} + + + diff --git a/src/components/pages/cart/c-cart-total.vue b/src/components/pages/cart/c-cart-total.vue new file mode 100644 index 0000000..6ec4451 --- /dev/null +++ b/src/components/pages/cart/c-cart-total.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/pages/cart/c-discount.vue b/src/components/pages/cart/c-discount.vue new file mode 100644 index 0000000..ff78e96 --- /dev/null +++ b/src/components/pages/cart/c-discount.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/components/pages/cart/c-good-list-item.vue b/src/components/pages/cart/c-good-list-item.vue new file mode 100644 index 0000000..5e365c8 --- /dev/null +++ b/src/components/pages/cart/c-good-list-item.vue @@ -0,0 +1,515 @@ + + + + + diff --git a/src/components/pages/cart/c-good-list.vue b/src/components/pages/cart/c-good-list.vue new file mode 100644 index 0000000..83c7e03 --- /dev/null +++ b/src/components/pages/cart/c-good-list.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/src/components/pages/detail/c-barrage.vue b/src/components/pages/detail/c-barrage.vue new file mode 100644 index 0000000..934c2f3 --- /dev/null +++ b/src/components/pages/detail/c-barrage.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/components/pages/detail/c-comment-container.vue b/src/components/pages/detail/c-comment-container.vue new file mode 100644 index 0000000..7a9878f --- /dev/null +++ b/src/components/pages/detail/c-comment-container.vue @@ -0,0 +1,284 @@ + + + + + + diff --git a/src/components/pages/detail/c-comment-item.vue b/src/components/pages/detail/c-comment-item.vue new file mode 100644 index 0000000..caaafc2 --- /dev/null +++ b/src/components/pages/detail/c-comment-item.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src/components/pages/detail/c-comment-modal.vue b/src/components/pages/detail/c-comment-modal.vue new file mode 100644 index 0000000..2cb55a9 --- /dev/null +++ b/src/components/pages/detail/c-comment-modal.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/src/components/pages/detail/c-image-picker.vue b/src/components/pages/detail/c-image-picker.vue new file mode 100644 index 0000000..73b1c0c --- /dev/null +++ b/src/components/pages/detail/c-image-picker.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/pages/detail/c-input-tag.vue b/src/components/pages/detail/c-input-tag.vue new file mode 100644 index 0000000..8b23065 --- /dev/null +++ b/src/components/pages/detail/c-input-tag.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/components/pages/detail/c-like-pro.vue b/src/components/pages/detail/c-like-pro.vue new file mode 100644 index 0000000..4e31025 --- /dev/null +++ b/src/components/pages/detail/c-like-pro.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/src/components/pages/detail/c-progress.vue b/src/components/pages/detail/c-progress.vue new file mode 100644 index 0000000..2eb49ff --- /dev/null +++ b/src/components/pages/detail/c-progress.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/src/components/pages/detail/c-see-more.vue b/src/components/pages/detail/c-see-more.vue new file mode 100644 index 0000000..31f4f9e --- /dev/null +++ b/src/components/pages/detail/c-see-more.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/components/pages/detail/c-star.vue b/src/components/pages/detail/c-star.vue new file mode 100644 index 0000000..f57747b --- /dev/null +++ b/src/components/pages/detail/c-star.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/pages/detail/c-tag.vue b/src/components/pages/detail/c-tag.vue new file mode 100644 index 0000000..aba6859 --- /dev/null +++ b/src/components/pages/detail/c-tag.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/components/pages/home/c-good-item.vue b/src/components/pages/home/c-good-item.vue new file mode 100644 index 0000000..aa6bb5b --- /dev/null +++ b/src/components/pages/home/c-good-item.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/src/components/pages/home/c-paging.vue b/src/components/pages/home/c-paging.vue new file mode 100644 index 0000000..572045a --- /dev/null +++ b/src/components/pages/home/c-paging.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/components/pages/home/c-price-range.vue b/src/components/pages/home/c-price-range.vue new file mode 100644 index 0000000..cfa68b0 --- /dev/null +++ b/src/components/pages/home/c-price-range.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/pages/home/c-sort-btn.vue b/src/components/pages/home/c-sort-btn.vue new file mode 100644 index 0000000..840b6bf --- /dev/null +++ b/src/components/pages/home/c-sort-btn.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/components/pages/my-tab-container/c-address-container.vue b/src/components/pages/my-tab-container/c-address-container.vue new file mode 100644 index 0000000..9767548 --- /dev/null +++ b/src/components/pages/my-tab-container/c-address-container.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/components/pages/my/c-address-popover.vue b/src/components/pages/my/c-address-popover.vue new file mode 100644 index 0000000..bab1881 --- /dev/null +++ b/src/components/pages/my/c-address-popover.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/components/pages/my/c-edit-address.vue b/src/components/pages/my/c-edit-address.vue new file mode 100644 index 0000000..c310c80 --- /dev/null +++ b/src/components/pages/my/c-edit-address.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/components/pages/my/c-edit-info.vue b/src/components/pages/my/c-edit-info.vue new file mode 100644 index 0000000..338f503 --- /dev/null +++ b/src/components/pages/my/c-edit-info.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/src/components/pages/my/c-order-container.vue b/src/components/pages/my/c-order-container.vue new file mode 100644 index 0000000..30a217d --- /dev/null +++ b/src/components/pages/my/c-order-container.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/components/pages/my/c-order-item.vue b/src/components/pages/my/c-order-item.vue new file mode 100644 index 0000000..4f0d002 --- /dev/null +++ b/src/components/pages/my/c-order-item.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/src/components/pages/my/c-statistics.vue b/src/components/pages/my/c-statistics.vue new file mode 100644 index 0000000..a844fbe --- /dev/null +++ b/src/components/pages/my/c-statistics.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/components/pages/my/c-tab.vue b/src/components/pages/my/c-tab.vue new file mode 100644 index 0000000..c91ed3c --- /dev/null +++ b/src/components/pages/my/c-tab.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/pages/my/c-upload.vue b/src/components/pages/my/c-upload.vue new file mode 100644 index 0000000..086c5c0 --- /dev/null +++ b/src/components/pages/my/c-upload.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/pages/my/c-user-info.vue b/src/components/pages/my/c-user-info.vue new file mode 100644 index 0000000..d82ca28 --- /dev/null +++ b/src/components/pages/my/c-user-info.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/pages/order/c-new-address.vue b/src/components/pages/order/c-new-address.vue new file mode 100644 index 0000000..67277ca --- /dev/null +++ b/src/components/pages/order/c-new-address.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/components/pages/order/c-order-success.vue b/src/components/pages/order/c-order-success.vue new file mode 100644 index 0000000..8028fb9 --- /dev/null +++ b/src/components/pages/order/c-order-success.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/components/pages/order/c-timeline.vue b/src/components/pages/order/c-timeline.vue new file mode 100644 index 0000000..7cec938 --- /dev/null +++ b/src/components/pages/order/c-timeline.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/public/c-address.vue b/src/components/public/c-address.vue new file mode 100644 index 0000000..a15e617 --- /dev/null +++ b/src/components/public/c-address.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/components/public/c-banner.vue b/src/components/public/c-banner.vue new file mode 100644 index 0000000..9a8befa --- /dev/null +++ b/src/components/public/c-banner.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/public/c-bread.vue b/src/components/public/c-bread.vue new file mode 100644 index 0000000..f00770b --- /dev/null +++ b/src/components/public/c-bread.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/components/public/c-cart.vue b/src/components/public/c-cart.vue new file mode 100644 index 0000000..ec4b303 --- /dev/null +++ b/src/components/public/c-cart.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/public/c-foot.vue b/src/components/public/c-foot.vue new file mode 100644 index 0000000..85654a5 --- /dev/null +++ b/src/components/public/c-foot.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/components/public/c-head.vue b/src/components/public/c-head.vue new file mode 100644 index 0000000..40bc20c --- /dev/null +++ b/src/components/public/c-head.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/src/components/public/c-header-image.vue b/src/components/public/c-header-image.vue new file mode 100644 index 0000000..84d65c6 --- /dev/null +++ b/src/components/public/c-header-image.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/components/public/c-input-number.vue b/src/components/public/c-input-number.vue new file mode 100644 index 0000000..27033a1 --- /dev/null +++ b/src/components/public/c-input-number.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/components/public/c-like.vue b/src/components/public/c-like.vue new file mode 100644 index 0000000..32bff65 --- /dev/null +++ b/src/components/public/c-like.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/components/public/c-login.vue b/src/components/public/c-login.vue new file mode 100644 index 0000000..fe452b1 --- /dev/null +++ b/src/components/public/c-login.vue @@ -0,0 +1,331 @@ + + + + + diff --git a/src/components/public/c-modal.vue b/src/components/public/c-modal.vue new file mode 100644 index 0000000..001e5c2 --- /dev/null +++ b/src/components/public/c-modal.vue @@ -0,0 +1,262 @@ + + + + + diff --git a/src/components/public/c-money.vue b/src/components/public/c-money.vue new file mode 100644 index 0000000..5b82432 --- /dev/null +++ b/src/components/public/c-money.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/public/c-pay-modal.vue b/src/components/public/c-pay-modal.vue new file mode 100644 index 0000000..e0b416a --- /dev/null +++ b/src/components/public/c-pay-modal.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/components/public/c-recharge-item.vue b/src/components/public/c-recharge-item.vue new file mode 100644 index 0000000..e24be9b --- /dev/null +++ b/src/components/public/c-recharge-item.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/components/public/c-recharge-modal.vue b/src/components/public/c-recharge-modal.vue new file mode 100644 index 0000000..424c596 --- /dev/null +++ b/src/components/public/c-recharge-modal.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/js/console.js b/src/js/console.js new file mode 100644 index 0000000..4ccebe8 --- /dev/null +++ b/src/js/console.js @@ -0,0 +1,55 @@ +/** + * 重写console.log方法 + * 通过设置isLog来控制是否输出日志 + * 对于object,array引用类型已进行深拷贝,确保打印出的值是执行时的值 + * 重写后在整个程序的生命周期都有效,在程序的所有地方都可以调用 + * 可在程序的第一行就调用,确保后续的console.log改写后的 + * 如:vue在main.js中引入,小程序可在app.js第一行引入 + * dev: isLog = true + * prod: isLog = false + * console.trace()为打印程序调用的堆栈,因为改写后打印的值是在改写后的堆栈中 + * 如果觉得太长可设置isLogStack = false + */ + +const getStackTrace = function () { + var obj = {} + Error.captureStackTrace(obj, getStackTrace) + let stackArr = obj.stack.split('\n') + let str = stackArr[2] + // 数组分割后,第二个堆栈才是console,log调用的堆栈 + // str = + // try { + // // 判断是否是浏览器环境 + // if (window) { + // str = stackArr[2].substring(stackArr[2].indexOf('http://'), stackArr[2].length) + // } + // }catch (e) { + // // 非浏览器环境,即为node.js环境 + // str = stackArr[2].substring(stackArr[2].indexOf('('), stackArr[2].indexOf(')')) + // } + // str = str.replace('(','').replace(')','') + return 'Stack: ' + str +} + +console.log = ((logFunc, isLog = true, isLogStack = true) => { + return function () { + if (!isLog) { + return + } + try { + let arr = [] + arr.push(...arguments) + arr.forEach((item, index) => { + // 引用类型深拷贝 + if (Object.prototype.toString.call(item) === '[object Object]' || + Object.prototype.toString.call(item) === '[object Array]') { + arr[index] = JSON.parse(JSON.stringify(item)) + } + }) + logFunc.call(console, ...arr) + logFunc.call(console, getStackTrace()) + } catch (e) { + console.error(`a log error: ${e}`) + } + } +})(console.log) diff --git a/src/js/const-table.js b/src/js/const-table.js new file mode 100644 index 0000000..36e5feb --- /dev/null +++ b/src/js/const-table.js @@ -0,0 +1,56 @@ +export const tipType = Object.freeze({ + INFO: 'info', + SUCCESS: 'success', + WARNING: 'warning', + ERROR: 'error' +}) + +// export const PRICE_RANGE = Object.freeze({ +// ALL: 'ALL', +// CHEEPER: 'CHEEPER', +// CHEEP: 'CHEEP', +// EXPENSIVE: 'EXPENSIVE', +// EXPENSIVER: 'EXPENSIVER' +// }) + +const MAX_PRICE = 1000000000 +export const PRICE_RANGE = Object.freeze({ + ALL: { + start: 0, + limit: MAX_PRICE, + label: 'ALL', + value: 'ALL' + }, + CHEEPER: { + start: 0, + limit: 100, + label: '0.00 - 100.00', + value: 'CHEEPER' + }, + CHEEP: { + start: 100, + limit: 500, + label: '100.00 - 500.00', + value: 'CHEEP' + }, + EXPENSIVE: { + start: 500, + limit: 1000, + label: '500.00 - 1000.00', + value: 'EXPENSIVE' + }, + EXPENSIVER: { + start: 1000, + limit: MAX_PRICE, + label: '1000+', + value: 'EXPENSIVER' + } +}) + +export const SORT_TYPE = Object.freeze({ + ASC: 'ASC', + DESC: 'DESC' +}) + +export const PAGE_SIZE = 6 + diff --git a/src/js/data-store.js b/src/js/data-store.js new file mode 100644 index 0000000..ad502d6 --- /dev/null +++ b/src/js/data-store.js @@ -0,0 +1,57 @@ +class DataStore { + static getInstance() { + if (!DataStore.instance) { + DataStore.instance = new DataStore() + } + return DataStore.instance + } + + constructor() { + this.token = this._getTokenFromLocal() + this.userInfo = this._getUserInfoFromLocal() + } + + // 保存token + saveToken(token) { + localStorage.setItem('token', token) + this.token = token + } + + saveUserInfo(userInfo) { + localStorage.setItem('userInfo', JSON.stringify(userInfo)) + this.userInfo = userInfo + } + + // 删除token + deleteToken() { + localStorage.removeItem('token') + localStorage.removeItem('userInfo') + this.token = '' + this.userInfo = {} + } + + // 保存token + getToken() { + return this.token + } + + // 获取用户信息 + getUserInfo() { + console.log(this.userInfo) + return this.userInfo + } + + // 从缓存中取token + _getTokenFromLocal() { + return localStorage.getItem('token') + } + + // 缓存中取用户信息 + _getUserInfoFromLocal() { + const temp = localStorage.getItem('userInfo') + return temp ? JSON.parse(temp) : null + } +} + +const dataStore = DataStore.getInstance() +export default dataStore diff --git a/src/js/filters.js b/src/js/filters.js new file mode 100644 index 0000000..e23392b --- /dev/null +++ b/src/js/filters.js @@ -0,0 +1,74 @@ +import { HTTP_CONFIG } from './http/config' +/** + * 过滤器 + */ + +// 格式化钱 +const formatMoney = function(money) { + money = String(money) + money = money.split('') + money = money.reverse() + let pointIndex = money.indexOf('.') + if (pointIndex === -1) { + money.unshift('0', '0', '.') + } + if (pointIndex === 1) { + money.unshift('0') + } + pointIndex = money.indexOf('.') + const length = money.length - pointIndex + let current = pointIndex + for (let i = 1; i < length / 3; i++) { + current = i * 3 + i + pointIndex + money.splice(current, 0, ',') + } + if (money[money.length - 1] === ',') { + --money.length + } + return money.reverse().join('') +} + +// 格式化点赞数量 +const formatLikeNum = function(likeNum) { + if (likeNum < 1000) { + return likeNum + } + return (likeNum / 1000) + 'k' +} + +// 格式化超过长度的字符串 +const formatString = function(str, maxLength = 20) { + if (str.length <= maxLength) { + return str + } + // 从中间截取 + const midLength = Math.floor(maxLength / 2) + // maxLength + 2 为 '**' 的长度 + return str.substring(0, midLength) + '**' + str.substring(str.length - (midLength - 2)) +} + +// 格式化日期 +const formatDate = (dateStr) => { + const date = new Date(dateStr) + return `${date.getFullYear()}-${String(date.getMonth() + 1).addZero()}-${String(date.getDate()).addZero()} ${String(date.getHours()).addZero()}:${String(date.getMinutes()).addZero()}:${String(date.getSeconds()).addZero()}` + +} + +// 格式化昵称,保护用户的隐私 +const formatNickName = (nickName) => { + return `${nickName.substring(0,1)}***${nickName.substring(nickName.length - 1)}` +} + +// 照片路径加上前缀 +const addImagePrefix = (imgUrl) => { + return HTTP_CONFIG.IMAGE_BASE_URL + imgUrl +} + +module.exports = { + formatMoney, + formatLikeNum, + formatString, + formatDate, + formatNickName, + addImagePrefix +} diff --git a/src/js/http/api.js b/src/js/http/api.js new file mode 100644 index 0000000..6ac813a --- /dev/null +++ b/src/js/http/api.js @@ -0,0 +1,159 @@ +import {get, post, put, del} from './http' + +const login = params => post('/user/login', params, { + showTip: true, + tipMsg: '登录成功' +}) + +const register = params => post('/user/register', params, { + showTip: true, + tipMsg: '注册成功,请重新登录' +}) + +const getVerifyCode = params => post('/public/get-verify-code', params) + +const resetPassword = params => post('/user/reset-password', params, { + showTip: true, + tipMsg: '修改密码成功' +}) + +const checkFieldCanUse = params => post('/user/check-field-can-use', params) + +const updateUserInfo = params => post('/user/update-user-info', params, { + showTip: true, + tipMsg: '更新资料成功' +}) + +const addAddress = params => post('/user/address', params, { + showTip: true, + tipMsg: '新增地址成功' +}) + +const getAddress = () => get('/user/address') + +const updateAddress = params => put('/user/address', params, { + showTip: true, + tipMsg: '修改地址成功' +}) + +const deleteAddress = params => del('/user/address', params, { + showTip: true, + tipMsg: '删除地址成功' +}) + +const getGoodsList = params => get('/goods/goods-list', params) + +const getGoodsDetail = params => get('/goods/goods-detail', params) + +const getMoreGoods = params => get('/goods/get-more-goods-list', params) + +const createOrder = params => post('/order/create-order', params) + +const payForOrder = params => post('/order/pay-for-order', params) + +const getGoodsInfoList = params => get('/goods/goods-info-list', params) + +const getBalance = () => get('/account/balance') + +const getOrderList = params => get('order/order-list', params) + +const getCartList = params => get('/cart/cart', params) + +const addToCart = params => post('/cart/cart', params) + +const updateCart = params => put('/cart/cart', params) + +const deleteFromCart = params => del('/cart/cart', params, { + showTip: true, + tipMsg: '删除购物车成功' +}) + +// 批量获取商品信息 +const batchGetGoodsInfo = params => get('/goods/goods-info-list', params) + +const getGoodsLikeList = () => get('/user/goods-like-list') + +// 给商店点赞 +const likeForGoods = params => post('/user/goods-like', params) + +// 短评 +const getBriefList = params => get('/comment/brief-list', params) + +const writeBrief = params => post('/comment/write-brief', params) + +const likeForBrief = params => post('/comment/like-for-brief', params) + +// 评论 +const getCommentList = params => get('/comment/comment-list', params) + +const writeComment = params => post('/comment/write-comment', params, { + showTip: true, + tipMsg: '评论成功' +}) + +const likeForComment = params => post('/comment/like-for-comment', params) + +const getCommentLikeList = () => get('/user/comment-like-list') + +const deleteOrder = params => del('/order/order', params,{ + showTip: true, + tipMsg: '删除订单成功' +}) + +const getRechargeList = () => get('/account/recharge-list') + +const recharge = params => put('/account/recharge', params, { + showTip: true, + tipMsg: '充值成功' +}) + +const checkHasPaykey = () => get('/account/check-has-paykey') + +const updatePaykey = params => put('/account/paykey', params, { + showTip: true, + tipMsg: '设置支付密码成功' +}) + +const getCartLength = () => get('/cart/cart-length') + +export default { + login, + register, + getVerifyCode, + resetPassword, + checkFieldCanUse, + updateUserInfo, + addAddress, + getAddress, + updateAddress, + deleteAddress, + getGoodsList, + getGoodsDetail, + getMoreGoods, + createOrder, + getGoodsInfoList, + payForOrder, + getBalance, + getOrderList, + getCartList, + addToCart, + updateCart, + deleteFromCart, + batchGetGoodsInfo, + getGoodsLikeList, + likeForGoods, + getBriefList, + writeBrief, + likeForBrief, + getCommentList, + writeComment, + likeForComment, + getCommentLikeList, + deleteOrder, + getRechargeList, + recharge, + checkHasPaykey, + updatePaykey, + getCartLength +} + diff --git a/src/js/http/base.js b/src/js/http/base.js new file mode 100644 index 0000000..501f2a9 --- /dev/null +++ b/src/js/http/base.js @@ -0,0 +1,79 @@ +import axios from 'axios' +import { HTTP_CONFIG } from './config' +import { tEmptyParam, tInvalidParam, tErrorTip } from '../tips' +import dataStore from '../data-store' +import Vue from './../../main' + +// 不拦截的路由列表 +const unLessList = [ + '/user/goods-like-list' +] + +const httpInstance = axios.create({ + timeout: 10 * 1000, + baseURL: HTTP_CONFIG.BASE_URL, + headers: { + 'content-type': 'application/json;charset=UTF-8' + } +}) + +httpInstance.interceptors.request.use(config => { + console.log({ + url: config.url, + data: config.data || config.params + }) + config.headers['Authorization'] = dataStore.getToken() || '' + return config +}, error => { + console.log(error) +}) + +httpInstance.interceptors.response.use(response => { + // data里面的数据要解析,而params里的则不用 + const reqData = JSON.parse(response.config.data || null) || response.config.params + const resData = response.data + console.log({ + url: response.config.url, + req: reqData, + res: response.data, + resDetail: resData.data + }) + console.log(response.status) + if (response.status === 200) { + console.log(resData) + if (resData.code === HTTP_CONFIG.SUCCESS_CODE) { + return resData.data + } + switch (resData.code) { + case HTTP_CONFIG.EMPTY_PARAM_CODE: + tEmptyParam(resData.data.detail) + break + case HTTP_CONFIG.INVALID_PARAM_CODE: + tInvalidParam(resData.data.detail) + break + default: + tErrorTip(resData.msg) + } + return Promise.reject(resData) + } + return response.data +}, error => { + console.log(error.response) + const response = error.response + if (response.status === 401) { + console.log(unLessList.includes(response.config.url)) + if(unLessList.includes(response.config.url)) { + console.log('存在') + return Promise.reject(response.data) + } + tErrorTip('您还未登录或登录已过期,请重新登录') + if(Vue.$route.path !== '/') { + Vue.$router.replace('/') + } + // console.log('token已过期,请重新登录') + dataStore.deleteToken() + return Promise.reject(response.data) + } +}) + +export default httpInstance diff --git a/src/js/http/config.js b/src/js/http/config.js new file mode 100644 index 0000000..a95b1ff --- /dev/null +++ b/src/js/http/config.js @@ -0,0 +1,8 @@ +export const HTTP_CONFIG = Object.freeze({ + BASE_URL: 'https://mall.cxmmao.com/api-mall', + IMAGE_BASE_URL: 'https://mall.cxmmao.com/cat-mall-images/', + SUCCESS_CODE: 10000, + FAIL_CODE: 40999, // 未知错误 + INVALID_PARAM_CODE: 40099, // 参数不合法 + EMPTY_PARAM_CODE: 40009 // 请求参数不能为空 +}) diff --git a/src/js/http/http.js b/src/js/http/http.js new file mode 100644 index 0000000..582faa1 --- /dev/null +++ b/src/js/http/http.js @@ -0,0 +1,92 @@ +import httpInstance from './base' +import { tipType } from './../const-table' +import { tCommon } from './../tips' + +const extendOptions = Object.seal({ + showTip: false, + tipMsg: '', + tipType: tipType.SUCCESS +}) + +export const get = (url, params, configOptions = null) => { + return new Promise((resolve, reject) => { + httpInstance.get(url, { + params + }).then(res => { + resolve(res) + if (configOptions) { + _executeExtend(configOptions) + } + }).catch(reject) + }) +} + +export const post = (url, params, configOptions = null) => { + return new Promise((resolve, reject) => { + httpInstance.post(url, params).then(res => { + resolve(res) + if (configOptions) { + _executeExtend(configOptions) + } + }).catch(err => { + reject(err) + }) + }) +} + +export const put = (url, params, configOptions = null) => { + return new Promise((resolve, reject) => { + httpInstance.put(url, params).then(res => { + resolve(res) + if (configOptions) { + _executeExtend(configOptions) + } + }).catch(err => { + reject(err) + }) + }) +} + +export const del = (url, params, configOptions = null) => { + return new Promise((resolve, reject) => { + httpInstance.delete(url, { + data: params + }).then(res => { + resolve(res) + if (configOptions) { + _executeExtend(configOptions) + } + }).catch(err => { + reject(err) + }) + }) +} + +/** + * 合并扩展数据 + * @param configOptions // 请求的扩展选项,合并了就相当于赋值默认参数 + * @returns {{}} + * @private + */ +const _mergeExtendOptions = (configOptions) => { + const temp = {} + for (let key in extendOptions) { + temp[key] = configOptions[key] || extendOptions[key] + } + return temp +} + +const _executeExtend = (configOptions) => { + configOptions = _mergeExtendOptions(configOptions) + console.log(configOptions) + if (configOptions.showTip) { + tCommon(configOptions.tipMsg, configOptions.tipType) + } +} + +export default { + get, + post, + put, + del +} diff --git a/src/js/http/param.js b/src/js/http/param.js new file mode 100644 index 0000000..109f5d3 --- /dev/null +++ b/src/js/http/param.js @@ -0,0 +1,182 @@ +/** + * 请求参数列表 + * 用object.seal来约束请求参数 + * 防止在代码中对请求参数添加其他数据 + * 请求参数以p开头 + * 即params的意思 + */ + +export const pLogin = Object.seal({ + email: '', + password: '' +}) + +export const pRegister = Object.seal({ + email: '', + password: '', + verifyCode: '' +}) + +export const pGetVerifyCode = Object.seal({ + email: '' +}) + +export const pResetPassword = Object.seal({ + email: '', + password: '', + verifyCode: '' +}) + +export const pCheckFieldCanUse = Object.seal({ + field: '', + value: '' +}) + +export const pUpdateUserInfo = Object.seal({ + nickName: '', + gender: 0, // 0:男,1:女 + avatarUrl: '' +}) + +export const pAddAddress = { + name: '', + phone: '', + detailedAddress: '', + completedAddress: '', + regionList: [], + addressTable: { + province: { + value: '', + label: '' + }, + city: { + value: '', + label: '' + }, + area: { + value: '', + label: '' + } + } +} + +export const pDeleteAddress = Object.seal({ + addressId: '' +}) + +export const pGetGoodsList = Object.seal({ + priceRange: "ALL", + currentPage: 0, + pagingSize: 6, + sortType: "ASC" +}) + +export const pGetGoodsDetail = Object.seal({ + goodsId: '' +}) + +export const pGetMoreGoods = Object.seal({ + maxLength: 6 +}) + +export const pCreateOrder = Object.seal({ + addressId: '', + orderList: [] +}) + +export const pCreateOrderItem = Object.seal({ + goodsId: '', + purchaseNum: 0 +}) + +export const pGetGoodsInfoList = Object.seal({ + goodsIdList: [] +}) + +export const pPayForOrder = Object.seal({ + orderId: '', + paykey: '' +}) + +export const pAddToCart = Object.seal({ + goodsId: '', + goodsNum: null +}) + +export const pUpdateCart = Object.seal({ + goodsId: '', + goodsNum: null +}) + +export const pDeleteFromCart = Object.seal(({ + goodsId: '' +})) + +export const pBatchGoodsInfo = Object.seal({ + goodsIdList: [] +}) + +export const pGetCartList = Object.seal({ + pageSize: 6, + curPage: 0 +}) + +export const pLikeForGoods = Object.seal({ + goodsId: '' +}) + +// 短评 +export const pGetBriefList = Object.seal({ + goodsId: '', +}) + +export const pWriteBrief = Object.seal({ + goodsId: '', + brief: '', + color: '' +}) + +export const pLikeForBrief = Object.seal({ + goodsId: '', + briefId: '', +}) + + +export const pGetCommentList = Object.seal({ + goodsId: '', + pageSize: null, + curPage: null +}) + +export const pWriteComment = Object.seal({ + goodsId: '', + comment: '', + rate: null +}) + +export const pLikeForComment = Object.seal({ + goodsId: '', + commentId: '', + commentListId: '', + likeState: null +}) + +export const pGetOrderList = Object.seal({ + currentPage: 0, + pageSize: 6 +}) + +export const pDeleteOrder = Object.seal({ + orderId: '' +}) + +export const pRecharge = Object.seal({ + rechargeKey: '', + verifyCode: '' +}) + +export const pUpdatePaykey = Object.seal({ + email: '', + paykey: '', + verifyCode: '' +}) diff --git a/src/js/model/card-model.js b/src/js/model/card-model.js new file mode 100644 index 0000000..e69de29 diff --git a/src/js/model/detail-model.js b/src/js/model/detail-model.js new file mode 100644 index 0000000..e69de29 diff --git a/src/js/model/home-model.js b/src/js/model/home-model.js new file mode 100644 index 0000000..e69de29 diff --git a/src/js/model/my-model.js b/src/js/model/my-model.js new file mode 100644 index 0000000..e69de29 diff --git a/src/js/model/order-model.js b/src/js/model/order-model.js new file mode 100644 index 0000000..e69de29 diff --git a/src/js/model/public-model.js b/src/js/model/public-model.js new file mode 100644 index 0000000..e69de29 diff --git a/src/js/prototype.js b/src/js/prototype.js new file mode 100644 index 0000000..86683c1 --- /dev/null +++ b/src/js/prototype.js @@ -0,0 +1,7 @@ +Object.deepCopy = function(obj) { + return JSON.parse(JSON.stringify(obj)) +} + +String.prototype.addZero = function() { + return this >= 10 ? this : '0' + this +} diff --git a/src/js/resize.js b/src/js/resize.js new file mode 100644 index 0000000..fc0c592 --- /dev/null +++ b/src/js/resize.js @@ -0,0 +1,14 @@ +// 监听屏幕的变化 +export default (function (doc, win) { + const docEl = doc.documentElement + const resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize' + const recalc = function () { + var clientWidth = docEl.clientWidth + if (!clientWidth) return + console.log(clientWidth) + docEl.style.fontSize = 32 * (clientWidth / 1920) + 'px' + } + if (!doc.addEventListener) return + win.addEventListener(resizeEvt, recalc, false) + doc.addEventListener('DOMContentLoaded', recalc, false) +})(document, window) diff --git a/src/js/tips.js b/src/js/tips.js new file mode 100644 index 0000000..99a2905 --- /dev/null +++ b/src/js/tips.js @@ -0,0 +1,81 @@ +import { Message } from 'element-ui' +import { tipType } from './const-table' + +const tCommon = (message, type = tipType.SUCCESS) => { + Message({ + message, + type, + duration: 3000 + }) +} + +const tSuccess = message => tCommon(message) + +const tWarn = message => tCommon(message, tipType.WARNING) + +const tError = message => tCommon(message, tipType.ERROR) + +const tEmptyParam = message => { + return Message({ + message, + type: tipType.ERROR, + duration: 5000 + }) +} + +const tInvalidParam = message => { + return Message({ + message, + type: tipType.ERROR, + duration: 5000 + }) +} + +const tErrorTip = message => { + return Message({ + message, + type: tipType.ERROR, + duration: 3000 + }) +} + +const tSendVerifyCode = () => { + return Message({ + message: '验证码已发送至您的邮箱,请注意查收', + type: tipType.WARNING, + duration: 3000 + }) +} + +const tLoading = (message) => { + return Message({ + message, + type: tipType.SUCCESS, + duration: 3000000, + iconClass: 'el-icon-loading', + customClass: 'paying-tips' + }) +} + + +// export default { +// tCommon, +// tSuccess, +// tErrorTip, +// tError, +// tEmptyParam, +// tInvalidParam, +// tSendVerifyCode +// } + +module.exports = { + tCommon, + tSuccess, + tWarn, + tErrorTip, + tError, + tEmptyParam, + tInvalidParam, + tSendVerifyCode, + tLoading +} diff --git a/src/js/utils.js b/src/js/utils.js new file mode 100644 index 0000000..cbdeeee --- /dev/null +++ b/src/js/utils.js @@ -0,0 +1,32 @@ +// 验证邮箱 +export const testEmail = (email) => { + const reg = /[\w]+(\.[\w]+)*@[\w]+(\.[\w])+/ + return reg.test(email) +} + +// 验证密码 +export const testPassword = (password) => { + const reg = /^(\w){6,20}$/ + return reg.test(password) +} + +// 验证验证码 +export const testVerifyCode = (verifyCode)=> { + const reg = /^[0-9]{6}$/ + return reg.test(verifyCode) +} + +// 保存token +export const saveToken = token => { + localStorage.setItem('token', token) +} + +// 删除token +export const deleteToken = () => { + localStorage.removeItem('token') +} + +// 保存token +export const getToken = () => { + return localStorage.getItem('token') +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..3dd0bcb --- /dev/null +++ b/src/main.js @@ -0,0 +1,73 @@ +import Vue from 'vue' +import App from './App.vue' +import './js/prototype' +import router from './router' +// import './js/console' +import store from './store' +import './assets/scss/css/font-awesome.min.css' +import ElementUI from 'element-ui' +import 'element-ui/lib/theme-chalk/index.css' +import './assets/scss/public.scss' +import './js/resize' +import axios from 'axios' +import { + formatMoney, + formatLikeNum, + formatString, + formatDate, + formatNickName, + addImagePrefix +} from './js/filters.js' +import api from './js/http/api' +import tips from './js/tips' +import tokenInstance from './js/data-store' +const infiniteScroll = require('vue-infinite-scroll') + +Vue.config.productionTip = false +Vue.prototype.$api = api +Vue.prototype.$tips = tips +Vue.prototype.bus = new Vue() +Vue.use(ElementUI) +Vue.filter('formatMoney', formatMoney) +Vue.filter('formatLikeNum', formatLikeNum) +Vue.filter('formatString', formatString) +Vue.filter('formatDate', formatDate) +Vue.filter('formatNickName', formatNickName) +Vue.filter('addImagePrefix', addImagePrefix) +Vue.use(infiniteScroll) + +const vue = new Vue({ + router, + store, + // 监听路由的变化,有变化就加入path数组里面 + watch: { + $route(to, from) { + console.log(to.path, from.path) + console.log(this.$route) + store.dispatch('changeRouter', { + to: to.path, + from: from.path, + fullPath: this.$route.fullPath + }) + } + }, + methods: { + getCartList() { + this.$api.getCartLength().then(res => { + this.$store.dispatch('saveUserInfo', {...res}) + }).catch(err => { + console.error(err) + }) + } + }, + mounted() { + this.$store.dispatch('saveUserInfo', tokenInstance.getUserInfo()) + this.getCartList() + this.bus.$on('updateCartLength', () => { + this.getCartList() + }) + }, + render: h => h(App) +}).$mount('#app') + +export default vue diff --git a/src/mixins/mLike.js b/src/mixins/mLike.js new file mode 100644 index 0000000..6a34ba5 --- /dev/null +++ b/src/mixins/mLike.js @@ -0,0 +1,42 @@ +// m代表mixins +import { pLikeForGoods } from './../js/http/param' +export const mLike = { + data() { + return { + likeList: [] + } + }, + computed: { + checkIsLike() { + this.likeList = this.$store.getters.getGoodsLikeList + // 为了和详情区分开 + const goodsId = this.goodsInfo ? this.goodsInfo.goodsId : this.goodsDetail.goodsId + return this.likeList.includes(goodsId) + } + }, + methods: { + likeForGoods(goodsId) { + console.log('开始点赞') + pLikeForGoods.goodsId = goodsId + this.$api.likeForGoods(pLikeForGoods).then(res => { + console.log(res) + if(this.goodsInfo) { + this.goodsInfo.likeNum = res.likeNum + }else { + this.goodsDetail.likeNum = res.likeNum + } + this._updateLikeList(goodsId, res.likeState) + }).catch(err => { + console.error(err) + }) + }, + // 更新点赞列表 + _updateLikeList(goodsId, likeState) { + if(likeState) { + this.likeList.push(goodsId) + }else { + this.likeList.splice(this.likeList.indexOf(goodsId)) + } + } + } +} diff --git a/src/router.js b/src/router.js new file mode 100644 index 0000000..79df48f --- /dev/null +++ b/src/router.js @@ -0,0 +1,41 @@ +import Vue from 'vue' +import Router from 'vue-router' +import home from './views/home.vue' +import cart from './views/cart' +import detail from './views/detail' +import my from './views/my' +import order from './views/order' + +Vue.use(Router) + +export default new Router({ + mode: 'hash', + base: process.env.BASE_URL, + routes: [ + { + path: '/', + name: 'home', + component: home + }, + { + path: '/cart', + name: 'cart', + component: cart + }, + { + path: '/detail', + name: 'detail', + component: detail + }, + { + path: '/order', + name: 'order', + component: order + }, + { + path: '/my', + name: 'my', + component: my + } + ] +}) diff --git a/src/store.js b/src/store.js new file mode 100644 index 0000000..af4e18c --- /dev/null +++ b/src/store.js @@ -0,0 +1,96 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import routerList from './assets/conf/routerList' +import dataStore from './js/data-store' + +const defaultRouter = { + path: '/', + name: '宠物列表', + query: {} +} + +Vue.use(Vuex) + +export default new Vuex.Store({ + state: { + routerList: [routerList['/'], defaultRouter], + userInfo: {}, + goodsInfoList: [], + goodsLikeList: [] + }, + mutations: { + changeRouter(state, list) { + state.routerList = list + console.log(list) + }, + saveUserInfo(state, data) { + // 用了微信的setData,这样子设置值的时候不必再传整个对象进来 + // 没有数据时则是清空对象 + console.log(data) + if(!data) { + state.userInfo = {} + }else { + state.userInfo = { + ...state.userInfo, + ...data + } + } + dataStore.saveUserInfo(state.userInfo) + }, + setGoodsInfoList(state, goodsInfoList) { + state.goodsInfoList = goodsInfoList + }, + setGoodsLikeList(state, goodsLikeList) { + state.goodsLikeList = goodsLikeList + } + }, + getters: { + getRouters: state => { + return state.routerList + }, + getUserInfo: state => { + return state.userInfo + }, + getGoodsInfoList: state => { + return state.goodsInfoList + }, + getGoodsLikeList: state => { + return state.goodsLikeList + } + }, + actions: { + changeRouter(context, params) { + let arr = this.state.routerList + if (arr[1].path === '/') { + arr[1] = routerList[params.to] + } else { + let isExit = false + for (let i = 0; i < arr.length; i++) { + if (arr[i].path === params.to) { + isExit = true + arr.splice(i + 1, arr.length - i) + break + } + } + if (!isExit) { + console.log(routerList[params.to]) + arr.push(routerList[params.to]) + } + } + if (params.to === '/') { + arr = [routerList['/'], defaultRouter] + } + routerList[params.to].fullPath = params.fullPath + context.commit('changeRouter', arr) + }, + saveUserInfo(context, data) { + context.commit('saveUserInfo', data) + }, + setGoodsInfoList(context, goodsInfoList) { + context.commit('setGoodsInfoList', goodsInfoList) + }, + setGoodsLikeList(context, goodsLikeList) { + context.commit('setGoodsLikeList', goodsLikeList) + } + } +}) diff --git a/src/views/cart.vue b/src/views/cart.vue new file mode 100644 index 0000000..e5dbd91 --- /dev/null +++ b/src/views/cart.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/views/detail.vue b/src/views/detail.vue new file mode 100644 index 0000000..7717d96 --- /dev/null +++ b/src/views/detail.vue @@ -0,0 +1,394 @@ + + + + + diff --git a/src/views/home.vue b/src/views/home.vue new file mode 100644 index 0000000..fa44244 --- /dev/null +++ b/src/views/home.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/src/views/my.vue b/src/views/my.vue new file mode 100644 index 0000000..69794d7 --- /dev/null +++ b/src/views/my.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/order.vue b/src/views/order.vue new file mode 100644 index 0000000..99f71b5 --- /dev/null +++ b/src/views/order.vue @@ -0,0 +1,432 @@ + + + + + diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..6e453cb --- /dev/null +++ b/vue.config.js @@ -0,0 +1,14 @@ +module.exports = { + configureWebpack: { + resolve: { + alias: { + '@assets': '@/assets', + '@components': '@/components', + '@common': '@/common', + '@views': '@/views', + '@images': '/public/images' + } + } + }, + publicPath: './', // 公共路径 +}