diff --git a/package-lock.json b/package-lock.json index 2b76bc3..4531f97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,33 +5,147 @@ "requires": true, "dependencies": { "@ionic/core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-4.10.3.tgz", - "integrity": "sha512-xae/YyiqDCFCDCpnYJSYWbqn49vg35wItLto9W0blCpMFNBYB3F+Is+I465yBuXWNO35//yL4x76pJ9Gd/Dl+A==", + "version": "5.8.5", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-5.8.5.tgz", + "integrity": "sha512-KUT3kKcON606FBJBZcAZn2c62OfPhVR/LQO260FH3znUmpZbqD2/Zm1LOTCxluiG9H6UIe8TVo9n8BgsKxCygA==", + "dev": true, "requires": { - "ionicons": "^4.6.3", - "tslib": "^1.10.0" + "@stencil/core": "^2.4.0", + "ionicons": "^5.5.3", + "tslib": "^2.1.0" } }, - "@stencil/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-1.8.1.tgz", - "integrity": "sha512-VV8bJF6ZeOZyVUQEK4a24O+V4RXUxgAWSHonkNgbJVk7Z+hxfJMBTLGy6uZa9/5/IcKXqrTutIL9giV8WeNkHA==", + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "requires": { - "typescript": "3.7.2" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" } }, + "@stencil/core": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-2.10.0.tgz", + "integrity": "sha512-15rWMTPQ/sp0lSV82HVCXkIya3QLN+uBl7pqK4JnTrp4HiLrzLmNbWjbvgCs55gw0lULbCIGbRIEsFz+Pe/Q+A==", + "dev": true + }, + "@stencil/helmet": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@stencil/helmet/-/helmet-0.3.2.tgz", + "integrity": "sha512-Ii3jGAJubiXzkKd+sn5VsjFzSFz5IToREsdq3suywM5VYhc4eRfWKfvTswuXghSeWHTHwUErozYYze05Jp7IsA==", + "dev": true + }, "@stencil/sass": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-1.1.1.tgz", - "integrity": "sha512-Nny3JiFkpQa0RdXWCa4pzhKQYnHuDNzC9c4w35FcaZHXBVuZ1UHSHc7wI7By9SS1auYcySqpPOBVzgoCqXcYVQ==" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-1.5.2.tgz", + "integrity": "sha512-nJ93pUSylsGsMX0eLmhxh1oEljcUjj5mYjhB9ziCdoaydAdjukrUoqDCC7tdVbOcBo2hKptQyWqCtETnBGYsXQ==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.23", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", + "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/node": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.3.tgz", + "integrity": "sha512-/WbxFeBU+0F79z9RdEOXH4CsDga+ibi5M8uEYr91u3CkT/pdWcV8MCook+4wDPnZBexRdwWS+PiVZ2xJviAzcQ==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", @@ -58,15 +172,31 @@ "which": "^1.2.9" } }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ionicons": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.6.3.tgz", - "integrity": "sha512-cgP+VIr2cTJpMfFyVHTerq6n2jeoiGboVoe3GlaAo5zoSBDAEXORwUZhv6m+lCyxlsHCS3nqPUE+MKyZU71t8Q==" + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-5.5.4.tgz", + "integrity": "sha512-3ph8X9my3inhabWEZ7N0XRA0MnnNQ1v9a602mLNgWsIXnxE9G5BybIZ/pws/OZZ/hoNlvSjk801N03yL9/FNgQ==", + "dev": true, + "requires": { + "@stencil/core": "~2.10.0" + } }, "isarray": { "version": "1.0.0", @@ -78,6 +208,24 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -107,6 +255,18 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.1.tgz", "integrity": "sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg==" }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -117,6 +277,12 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -166,22 +332,26 @@ "safe-buffer": "~5.1.0" } }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "typescript": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", - "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 5cfc145..bd7410b 100644 --- a/package.json +++ b/package.json @@ -9,21 +9,25 @@ ], "scripts": { "build": "stencil build", + "build.ci": "stencil build --prerender --ci", "start": "stencil build --dev --watch --serve", "test": "stencil test --spec --e2e", "test.watch": "stencil test --spec --e2e --watch", - "formatter": "prettier --parser typescript --write \"./**/*.ts\"" + "generate": "stencil generate", + "fmt": "prettier --parser typescript --write \"./**/*.ts\"" }, "dependencies": { - "@ionic/core": "4.10.3", - "@stencil/sass": "1.1.1", "pre-commit": "^1.2.2", "prettier": "^1.17.1" }, "devDependencies": { - "@stencil/core": "1.8.1" + "@ionic/core": "^5.8.5", + "@stencil/core": "^2.10.0", + "@stencil/helmet": "^0.3.2", + "@stencil/sass": "^1.5.2", + "@types/jest": "^26.0.23" }, "pre-commit": [ - "formatter" + "fmt" ] } diff --git a/prerender.config.ts b/prerender.config.ts new file mode 100644 index 0000000..e29a944 --- /dev/null +++ b/prerender.config.ts @@ -0,0 +1,18 @@ +import { PrerenderConfig } from "@stencil/core"; + +export const config: PrerenderConfig = { + filterUrl(url) { + if (url.pathname.startsWith("/docs") || url.pathname.startsWith("/case")) { + return false; + } + return true; + }, + afterHydrate(document) { + document.getElementsByTagName("html")[0].classList.remove("hydrated"); + }, + hydrateOptions() { + return { + hashAssets: undefined + }; + } +}; diff --git a/src/assets/data.json b/src/assets/data.json deleted file mode 100644 index b4ab308..0000000 --- a/src/assets/data.json +++ /dev/null @@ -1,822 +0,0 @@ -{ - "products": [ - { - "name": "パパダッシュ!!", - "image": "https://i.imgur.com/A2ZrPee.png", - "description": "家庭のタスク共有アプリ", - "author": "@maki_saki", - "websiteUrl": "http://papa-dash.com/", - "platform": { - "ios": "", - "android": "", - "web": "http://app.papa-dash.com/" - } - }, - { - "name": "FrontConf2019アプリ", - "image": "./assets/images/frontconf2019.png", - "description": "デモアプリ", - "author": "Ionic Japan User Group", - "websiteUrl": "https://ionicframework.jp", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://kfug2019.ionicframework.jp/" - } - }, - { - "name": "Untappd", - "image": "https://imgur.com/XuHahrT.png", - "description": "ビールのSNS", - "author": "Untappd", - "websiteUrl": "https://untappd.com/", - "country": "US", - "platform": { - "ios": "https://itunes.apple.com/jp/app/untappd-discover-beer/id449141888?mt=8", - "android": "https://play.google.com/store/apps/details?id=com.untappdllc.app&hl=ja", - "web": "https://untappd.com/" - } - }, - { - "name": "Pacifica", - "image": "https://imgur.com/8PVZnME.png", - "description": "瞑想アプリ", - "author": "Pacifica Labs", - "websiteUrl": "https://www.thinkpacifica.com/", - "country": "US", - "platform": { - "ios": "https://itunes.apple.com/us/app/pacifica-tools-for-stress/id922968861?mt=8&ign-mpt=uo%3D6", - "android": "https://play.google.com/store/apps/details?id=com.pacificalabs.pacifica", - "web": "https://www.thinkpacifica.com/app" - } - }, - { - "name": "JustWatch", - "image": "https://imgur.com/LdGbNRG.png", - "description": "動画配信検索エンジン", - "author": "JustWatch, inc.", - "websiteUrl": "https://www.justwatch.com/jp", - "country": "US", - "platform": { - "ios": "https://itunes.apple.com/jp/app/justwatch%E6%98%A0%E7%94%BB-%E3%83%86%E3%83%AC%E3%83%93%E7%95%AA%E7%B5%84/id979227482?mt=8", - "android": "https://play.google.com/store/apps/details?id=com.justwatch.justwatch&hl=ja", - "web": "https://www.justwatch.com/jp" - } - }, - { - "name": "Sworkit", - "image": "https://imgur.com/6TznFRa.png", - "description": "筋トレアプリ", - "author": "Nexercise Apps, Inc.", - "websiteUrl": "https://sworkit.com/", - "country": "US", - "platform": { - "ios": "https://itunes.apple.com/jp/app/sworkit-%E3%83%91%E3%83%BC%E3%82%BD%E3%83%8A%E3%83%AB%E3%83%88%E3%83%AC%E3%83%BC%E3%83%8A%E3%83%BC/id527219710?mt=8", - "android": "https://play.google.com/store/apps/details?id=sworkitapp.sworkit.com&hl=ja", - "web": "https://app.sworkit.com/" - } - }, - { - "name": "Techfeed", - "image": "https://imgur.com/8O34AdD.png", - "description": "ニュースアプリ", - "author": "Techfeed", - "websiteUrl": "https://techfeed.io", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/techfeed/id1135796018?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.co.openweb.TechFeed&hl=ja", - "web": "https://techfeed.io/" - } - }, - { - "name": "tipsys", - "image": "https://imgur.com/3pUDnUN.png", - "description": "女性専用SNS", - "author": "一般社団法人リレーションデザイン研究所", - "websiteUrl": "https://www.tipsys.me/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/tipsys/id1142546640?l=jp&mt=8/", - "android": "https://play.google.com/store/apps/details?id=jp.rdlabo.tipsys", - "web": "https://app.tipsys.me/" - } - }, - { - "name": "MarketWatch", - "description": "ニュースアプリ", - "image": "https://imgur.com/p5c9hSp.png", - "author": "Dow Jones & Company, Inc.", - "websiteUrl": "https://www.marketwatch.com/", - "country": "US", - "platform": { - "ios": "https://itunes.apple.com/jp/app/marketwatch-news-data/id336693422?mt=8", - "android": "https://play.google.com/store/apps/details?id=com.marketwatch&hl=ja", - "web": "https://www.marketwatch.com/" - } - }, - { - "name": "PicoWallet", - "image": "https://imgur.com/TCXOhCP.png", - "description": "仮想通貨NEMウォレット", - "author": "@scrpgil", - "websiteUrl": "https://picowallet.net", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://app.picowallet.net/" - } - }, - { - "name": "pato", - "image": "https://imgur.com/9o1n9Jr.png", - "description": "マッチングアプリ", - "author": "kineca", - "websiteUrl": "https://pato.today/", - "country": "JP", - "platform": { - "ios": "", - "android": "https://play.google.com/store/apps/details?id=jp.hikaruyamamoto.pato", - "web": "https://pato.today/web/" - } - }, - { - "name": "noel", - "image": "https://imgur.com/fsQLTwG.png", - "description": "女性向けニュースアプリ", - "author": "mostyplace", - "websiteUrl": "https://noel-media.jp/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/noel-%E3%83%8E%E3%82%A8%E3%83%AB-%E5%A5%B3%E6%80%A7%E5%90%91%E3%81%91%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2/id1447207168", - "android": "https://play.google.com/store/apps/details?id=jp.mostyplace.noel", - "web": "https://noel-media.jp/" - } - }, - { - "name": "paddy67", - "image": "https://imgur.com/LDJHu02.png", - "description": "マッチングアプリ", - "author": "paddy67", - "websiteUrl": "https://paddy67.today/", - "country": "JP", - "platform": { - "ios": "", - "android": "https://play.google.com/store/apps/details?id=jp.jun.yoshida.paddy&hl=ja", - "web": "https://paddy67.today/web/" - } - }, - { - "name": "Tsundoku", - "description": "読書管理アプリ", - "author": "@0918nobita", - "websiteUrl": "https://tsundoku.tech/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://tsundoku.tech/" - } - }, - { - "name": "都市経営プロフェッショナルスクール", - "image": "https://imgur.com/N5xBDKK.png", - "description": "公式サイト", - "author": "@rdlabo", - "websiteUrl": "https://www.ppp-ps.net/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://www.ppp-ps.net/" - } - }, - { - "name": "rabify公式サイト", - "description": "公式サイト", - "author": "@rdlabo", - "websiteUrl": "https://www.rabify.me/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://www.rabify.me/" - } - }, - { - "name": "rdlabo公式サイト", - "description": "公式サイト", - "author": "@rdlabo", - "websiteUrl": "https://www.rdlabo.jp/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://www.rdlabo.jp/" - } - }, - { - "name": "AAHub", - "image": "https://imgur.com/8LqMpdf.png", - "description": "アスキーアート まとめサイト", - "author": "@scrpgil", - "websiteUrl": "https://aahub.org", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://aahub.org" - } - }, - { - "name": "AA箱", - "image": "https://imgur.com/ZUJPnbw.png", - "description": "アスキーアート 投稿サイト", - "author": "@scrpgil", - "websiteUrl": "https://b.aahub.org", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://b.aahub.org" - } - }, - { - "name": "AAHub Fonts", - "description": "AA用フォントまとめサイト", - "author": "@scrpgil", - "websiteUrl": "https://fonts.aahub.org", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://fonts.aahub.org" - } - }, - { - "name": "アイテマス", - "image": "https://imgur.com/5iklPGB.png", - "description": "日程調整アプリ", - "author": "@__shinji__", - "websiteUrl": "https://aitemasu.me/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/%E3%82%A2%E3%82%A4%E3%83%86%E3%83%9E%E3%82%B9-%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-%E6%97%A5%E7%A8%8B%E8%AA%BF%E6%95%B4%E3%82%A2%E3%83%97%E3%83%AA/id1439282801?mt=8", - "android": "https://play.google.com/store/apps/details?id=me.aitemasu.app", - "web": "https://app.aitemasu.me/index" - } - }, - { - "name": "RIGHTS", - "image": "https://imgur.com/bTR8L3P.png", - "description": "アイドルのカード購入サイト", - "author": "@biga816", - "websiteUrl": "https://demo.rights-dapp.net", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://demo.rights-dapp.net/" - } - }, - { - "name": "三井住友銀行", - "image": "./assets/images/smbc.png", - "description": "三井住友銀行アプリ", - "author": "三井住友銀行", - "websiteUrl": "https://www.smbc.co.jp/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/%E4%B8%89%E4%BA%95%E4%BD%8F%E5%8F%8B%E9%8A%80%E8%A1%8C%E3%82%A2%E3%83%97%E3%83%AA/id594457652?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.co.smbc.direct&hl=ja", - "web": "" - } - }, - { - "name": "nempass", - "description": "NEMを使ったチケット管理demo", - "author": "@scrpgil", - "websiteUrl": "https://nempass.com/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://nempass.com/" - } - }, - { - "name": "nem-p2p", - "description": "NEMを使ったファイル保存システム", - "author": "@scrpgil", - "websiteUrl": "http://p2p.nempass.com/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "http://p2p.nempass.com/" - } - }, - { - "name": "33Tab ミミタブ", - "image": "https://imgur.com/17BqS8b.png", - "description": "音声ARアプリ", - "author": "Hakuhodo DY media partners Inc.", - "websiteUrl": "https://33tab.jp/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/33tab-%E3%83%9F%E3%83%9F%E3%82%BF%E3%83%96-%E9%9F%B3%E5%A3%B0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%A2%E3%83%97%E3%83%AA/id1435718418?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.co.hakuhodody_media.mimitab", - "web": "" - } - }, - { - "name": "みんなで地図", - "description": "みんなで地図が作れるアプリ", - "author": "@minnanochizu", - "websiteUrl": "https://mchizu.tabiji.life/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://mchizu.tabiji.life/" - } - }, - { - "name": "ホッピングリンク", - "description": "地元応援・地域情報アプリ", - "author": "ホッピングリンク", - "websiteUrl": "https://hopping.link/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/id1394432726?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.webta.hopping", - "web": "" - } - }, - { - "name": "dately", - "description": "マッチングアプリ", - "author": "STRACT, Inc.", - "websiteUrl": "http://dately.jp/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "" - } - }, - { - "name": "Payke 日本でのショッピング・旅行を楽しく、便利に", - "description": "外国人観光客向けアプリ", - "author": "Payke ", - "websiteUrl": "https://payke.co.jp/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/payke!/id1040452788?mt=8&ign-mpt=uo%3D4", - "android": "https://play.google.com/store/apps/details?id=jp.co.payke.Payke1&hl=ja", - "web": "" - } - }, - { - "name": "Workoutholic", - "description": "筋トレ管理アプリ", - "author": "Workoutholic", - "websiteUrl": "", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/us/app/workoutholic/id1276603791?mt=8", - "android": "", - "web": "" - } - }, - { - "name": "イカすロット for Splatoon2", - "description": "スプラトゥーンっていうゲームの使用武器をランダムに選んでワイワイするツール", - "author": "shinya saiho", - "websiteUrl": "", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/%E3%82%A4%E3%82%AB%E3%81%99%E3%83%AD%E3%83%83%E3%83%88-for-splatoon2/id1327350262?mt=8", - "android": "", - "web": "" - } - }, - { - "name": "iChain", - "image": "https://imgur.com/IKHG8Kt.png", - "description": "保険管理アプリ", - "author": "iChain", - "websiteUrl": "https://www.ichain.co.jp/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/ichain%E4%BF%9D%E9%99%BA%E3%82%A6%E3%82%A9%E3%83%AC%E3%83%83%E3%83%88/id1383149670?l=ja&ls=1&mt=8", - "android": "https://play.google.com/store/apps/details?id=com.love.ichain&hl=ja", - "web": "" - } - }, - { - "name": "Petit Clothes", - "description": "プチプラファッションのコーディネートアプリ", - "author": "chiaki", - "websiteUrl": "https://chiilog.com/2018/03/19/925/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://petit.clothlog.com/#/home" - } - }, - { - "name": "Meily", - "image": "https://imgur.com/QX9cfXh.png", - "description": "美容医療・整形SNSアプリ", - "author": "株式会社Meily", - "websiteUrl": "https://about.meily.co.jp/about/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/id1348238335?mt=8", - "android": "", - "web": "" - } - }, - { - "name": "イイコトイウネエ", - "image": "https://imgur.com/Am6VVic.png", - "description": "名言シェアアプリ", - "author": "@kenishhhhh", - "websiteUrl": "", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/%E3%82%A4%E3%82%A4%E3%82%B3%E3%83%88%E3%82%A4%E3%82%A6%E3%83%8D%E3%82%A8/id1450746419?mt=8", - "android": "", - "web": "" - } - }, - { - "name": "非常時持ち出し備品", - "description": "非常時に持ち出すリスト", - "author": "@maki_saki", - "websiteUrl": "https://saigai.netlify.com/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://saigai.netlify.com/" - } - }, - { - "name": "e-建築用語集", - "description": "建築用語集", - "author": "SOGO SHIKAKU CO., LTD.", - "websiteUrl": "", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/e-%E5%BB%BA%E7%AF%89%E7%94%A8%E8%AA%9E%E9%9B%86/id850287060?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.co.shikaku.android.glossary", - "web": "" - } - }, - { - "name": "ホテルストリートビュー", - "description": "ホテルのストリートビュー", - "author": "@a_zumii", - "websiteUrl": "https://twitter.com/a_zumii/status/977330695088435200", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://hotelstreetview.netlify.com/#/home" - } - }, - { - "name": "levelup", - "description": "RPGアプリっぽいのをIonicのデモとしてつくりまし", - "author": "@rdlabo", - "websiteUrl": "https://twitter.com/rdlabo/status/976333215290937344", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://levelup.netlify.com/" - } - }, - { - "name": "gamers' planet", - "description": "機械学習によるゲームの予測スコア提供アプリ", - "author": "@i_terashima", - "websiteUrl": "https://twitter.com/i_terashima/status/973457912088547328", - "country": "JP", - "platform": { - "ios": "", - "android": "https://play.google.com/store/apps/details?id=io.iterashima.gp", - "web": "" - } - }, - { - "name": "ホウビンゴ", - "image": "./assets/images/houbingo.png", - "description": "タスクアプリ", - "author": "@maki_saki", - "websiteUrl": "https://houbingo.com/", - "country": "JP", - "platform": { - "ios": "", - "android": "https://play.google.com/store/apps/details?id=com.houbingo&rdid=com.houbingo", - "web": "https://app.houbingo.com/" - } - }, - { - "name": "ゲーマガ", - "image": "./assets/images/gamaga.png", - "description": "ゲームマガジンのアプリ", - "author": "株式会社バカー", - "websiteUrl": "https://gamemaga.denfaminicogamer.jp/", - "country": "JP", - "platform": { - "ios": "", - "android": "https://play.google.com/store/apps/details?id=jp.co.dwango.gamemaga&hl=ja&rdid=jp.co.dwango.gamemaga", - "web": "" - } - }, - { - "name": "Altafonte Back Office 4", - "description": "バックオフィス管理ツール", - "author": "altafonte", - "websiteUrl": "https://altafonte.com/", - "country": "ES", - "platform": { - "ios": "", - "android": "", - "web": "https://backoffice.altafonte.com/login" - } - }, - { - "name": "الوپیک - سامانه حمل و نقل آنلاین‎", - "description": "イランで第1位のオンデマンド配達および輸送サービス", - "author": "ALOPEYK LTD", - "websiteUrl": "https://dashboard.alopeyk.com/#", - "country": "IR", - "platform": { - "ios": "", - "android": "", - "web": "" - } - }, - { - "name": "betshah", - "description": "オンラインカジノ", - "author": "betshah", - "websiteUrl": "http://endlessaisle.eat.aceturtle.in/", - "country": "CW", - "platform": { - "ios": "", - "android": "", - "web": "http://beta.betshah.com/" - } - }, - { - "name": "Go Ranger", - "description": "ポケモンGoのコンパニオンアプリ", - "author": "Matt\tKremer ", - "websiteUrl": "https://blog.ionicframework.com/how-i-built-launched-an-app-in-2-weeks-to-40000-users-with-ionic/", - "country": "US", - "platform": { - "ios": "https://itunes.apple.com/us/app/go-ranger/id1415152537", - "android": "https://play.google.com/store/apps/details?id=app.goranger.android", - "web": "https://goranger.app/" - } - }, - { - "name": "IdentiDog", - "description": "Azureを使った犬種識別アプリのデモ", - "author": "@Justinwillis96", - "websiteUrl": "", - "country": "US", - "platform": { - "ios": "", - "android": "", - "web": "https://github.com/jgw96/IdentiDog" - } - }, - { - "name": "eventOne", - "description": "イベント管理アプリ", - "author": "eventOne", - "websiteUrl": "https://event1.io/app", - "country": "US", - "platform": { - "ios": "https://play.google.com/store/apps/details?id=io.event1.shared", - "android": "https://play.google.com/store/apps/details?id=io.event1.shared", - "web": "" - } - }, - { - "name": "DiegY", - "description": "Elm + GraphQL+ Yelpのデモアプリ", - "author": "@ciekawy", - "websiteUrl": "", - "country": "US", - "platform": { - "ios": "", - "android": "", - "web": "https://diegy.gitlab.io/" - } - }, - { - "name": "俺の嫁が可愛い", - "description": "嫁や彼女の惚気投稿をするサイト", - "author": "@maki_saki", - "websiteUrl": "", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/us/app//id1261036550?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.rdlabo.orenoyome&hl=ja", - "web": "" - } - }, - { - "name": "Area Innovation Review", - "image": "./assets/images/area_innovation_review.png", - "description": "まちを本気で変える人のためのWebマガジン", - "author": "AreaInnovationAlliance, Inc", - "websiteUrl": "http://air.areaia.jp/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/areainnovationreview/id1247339173?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.areaia.areainnovationreview&rdid=jp.areaia.areainnovationreview", - "web": "https://air2.areaia.jp/main/article/list" - } - }, - { - "name": "ししゃモバ SHISHAMO公式アプリ", - "image": "./assets/images/shishamo.png", - "description": "3ピースロックバンド「SHISHAMO」の公式アプリ(通称「ししゃモバ」)", - "author": "CRAYON Inc.", - "websiteUrl": "https://c-rayon.com/shishamo/app/index.html", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/id1440170137", - "android": "https://play.google.com/store/apps/details?id=com.c_rayon.shishamo", - "web": "" - } - }, - { - "name": "HouseGate", - "image": "./assets/images/housegate.png", - "description": "業者と施主をつなぐ施工管理アプリ", - "author": "TwoGate inc.", - "websiteUrl": "https://housegate.jp/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/house-gate/id1258061724", - "android": "https://play.google.com/store/apps/details?id=jp.housegate.app", - "web": "https://app.housegate.jp" - } - }, - { - "name": "攻略アプリ〜逆転の書〜 for 逆転オセロニア", - "image": "", - "description": "大人気ゲーム「逆転オセロニア」の攻略アプリです。", - "author": "ICS INC.", - "websiteUrl": "", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/%E6%94%BB%E7%95%A5%E3%82%A2%E3%83%97%E3%83%AA-%E9%80%86%E8%BB%A2%E3%81%AE%E6%9B%B8-for-%E9%80%86%E8%BB%A2%E3%82%AA%E3%82%BB%E3%83%AD%E3%83%8B%E3%82%A2/id1149258978?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.icsweb.othelloniastrategy&hl=ja", - "web": "" - } - }, - { - "name": "バイトアプリ「an」", - "image": "./assets/images/an.jpg", - "description": "自分にピッタリなバイトを探せるアプリ", - "author": "PERSOL CAREER CO., LTD.", - "websiteUrl": "https://weban.jp/contents/c/smartphone_apri/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/app/id543829599?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.weban.anapp&hl=ja", - "web": "" - } - }, - { - "name": "web-whiteboard", - "image": "./assets/images/web-whiteboard.png", - "description": "Ionicµsoftgraphで作られたホワイトボード", - "author": "@Justinwillis96", - "websiteUrl": "https://github.com/jgw96/web-whiteboard", - "country": "US", - "platform": { - "ios": "", - "android": "", - "web": "https://webboard-app.web.app/" - } - }, - { - "name": "はたらく言葉たちジェネレーター", - "image": "./assets/images/hatakoto.png", - "description": "某つり革広告のジェネレーター", - "author": "@scrpgil", - "websiteUrl": "https://mobile.twitter.com/scrpgil/status/1138631892108947456", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://hatakoto.senju.dev/" - } - }, - { - "name": "金町の北上で幻魔大戦を叫んだけもの", - "image": "./assets/images/kanamachi-genma-taisen.png", - "description": "スマホ対応の幻魔大戦ブログ", - "author": "WO8TimeSpace175ZERO2", - "websiteUrl": "https://github.com/WO8TimeSpace175ZERO2/genma-taisen-to-the-north-of-kanamachi", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://eager-kilby-e6c21f.netlify.com/" - } - }, - { - "name": "広島の謎1 宮島の謎", - "image": "./assets/images/mistery-of-hiroshima.png", - "description": "1本ずつ広島の全貌を解き明かしていくシリーズアプリ", - "author": "峰山進", - "websiteUrl": "https://rakunet.org/nazo/", - "country": "JP", - "platform": { - "ios": "https://apps.apple.com/jp/app/mistery-of-hiroshima-1/id1481022754", - "android": "https://play.google.com/store/apps/details?id=org.rakunet.nazo1", - "web": "https://rakunet.org/nazo/" - } - }, - { - "name": "日本酒ゴーアラウンド大阪 2019 公式サイト", - "image": "", - "description": "毎年10月1日に行われる日本酒イベントのサイト", - "author": "タダフラ", - "websiteUrl": "https://nga-osaka.com", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://nga-osaka.com" - } - }, - { - "name": "性活カレンダー", - "image": "./assets/images/hCalendar.jpeg", - "description": "パートナーとの営みをカレンダーで記録", - "author": "Gento", - "websiteUrl": "", - "country": "JP", - "platform": { - "ios": "https://apps.apple.com/jp/app/性活カレンダー/id1484151444?mt=8", - "android": "https://play.google.com/store/apps/details?id=com.hCalendar.app", - "web": "" - } - }, - { - "name": "Developers.IO CAFE", - "image": "", - "description": "キャッシュレスカフェアプリ", - "author": "クラスメソッド株式会社", - "websiteUrl": "https://cafe.classmethod.jp/", - "country": "JP", - "platform": { - "ios": "", - "android": "", - "web": "https://sprout.devio.jp/" - } - }, - { - "name": "週末モデル", - "image": "", - "description": "副業モデル活動を支援アプリ", - "author": "株式会社MONOKROM", - "websiteUrl": "https://weekend-model.com/", - "country": "JP", - "platform": { - "ios": "https://itunes.apple.com/jp/app/id1284035393?mt=8", - "android": "https://play.google.com/store/apps/details?id=jp.monokrom.wemodel.android", - "web": "" - } - }, - { - "name": "ペットじまん", - "image": "./assets/images/petjiman.png", - "description": "ペット好きが集まるペット専用SNSアプリ", - "author": "ryo.naruse", - "websiteUrl": "https://twitter.com/petjiman_app", - "country": "JP", - "platform": { - "ios": "https://apps.apple.com/jp/app/id1494069672", - "android": "https://play.google.com/store/apps/details?id=pet.jiman.production", - "web": "https://jiman.pet/" - } - }, - ] -} diff --git a/src/assets/images/bunsyouanki.png b/src/assets/images/bunsyouanki.png new file mode 100644 index 0000000..635ab5b Binary files /dev/null and b/src/assets/images/bunsyouanki.png differ diff --git a/src/assets/images/firtee.png b/src/assets/images/firtee.png new file mode 100644 index 0000000..7e349bb Binary files /dev/null and b/src/assets/images/firtee.png differ diff --git a/src/assets/images/funny_one.png b/src/assets/images/funny_one.png new file mode 100644 index 0000000..571c824 Binary files /dev/null and b/src/assets/images/funny_one.png differ diff --git a/src/assets/images/nounaigoban.png b/src/assets/images/nounaigoban.png new file mode 100644 index 0000000..5dd2618 Binary files /dev/null and b/src/assets/images/nounaigoban.png differ diff --git a/src/assets/images/routehub.png b/src/assets/images/routehub.png new file mode 100644 index 0000000..f144358 Binary files /dev/null and b/src/assets/images/routehub.png differ diff --git a/src/assets/images/shyokuhin.png b/src/assets/images/shyokuhin.png new file mode 100644 index 0000000..ff978c5 Binary files /dev/null and b/src/assets/images/shyokuhin.png differ diff --git a/src/assets/images/tanonda.png b/src/assets/images/tanonda.png new file mode 100644 index 0000000..f447e80 Binary files /dev/null and b/src/assets/images/tanonda.png differ diff --git a/src/assets/logo/ionic_japan.svg b/src/assets/logo/ionic_japan.svg new file mode 100644 index 0000000..f4328b2 --- /dev/null +++ b/src/assets/logo/ionic_japan.svg @@ -0,0 +1,44 @@ + + + + + + + + +ionic-logo-landscape + + + + + + + + + + + + + + + + diff --git a/src/assets/logo/slack.svg b/src/assets/logo/slack.svg new file mode 100644 index 0000000..464e951 --- /dev/null +++ b/src/assets/logo/slack.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components.d.ts b/src/components.d.ts index c22c17b..fb5def1 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -4,73 +4,119 @@ * This is an autogenerated file created by the Stencil compiler. * It contains typing information for all components that exist in this project. */ - - -import { HTMLStencilElement, JSXBase } from '@stencil/core/internal'; -import { - IProduct, -} from './models/product'; - +import { HTMLStencilElement, JSXBase } from "@stencil/core/internal"; +import { IProduct } from "./models/product"; export namespace Components { - interface AppHome {} - interface AppRoot {} - interface ProductCard { - 'product': IProduct; - } + interface AppCase { + } + interface AppFooter { + } + interface AppHeader { + } + interface AppHome { + } + interface AppNavMobile { + "show": boolean; + } + interface AppRoot { + } + interface ProductCard { + "dir": string; + "product": IProduct; + } } - declare global { - - - interface HTMLAppHomeElement extends Components.AppHome, HTMLStencilElement {} - var HTMLAppHomeElement: { - prototype: HTMLAppHomeElement; - new (): HTMLAppHomeElement; - }; - - interface HTMLAppRootElement extends Components.AppRoot, HTMLStencilElement {} - var HTMLAppRootElement: { - prototype: HTMLAppRootElement; - new (): HTMLAppRootElement; - }; - - interface HTMLProductCardElement extends Components.ProductCard, HTMLStencilElement {} - var HTMLProductCardElement: { - prototype: HTMLProductCardElement; - new (): HTMLProductCardElement; - }; - interface HTMLElementTagNameMap { - 'app-home': HTMLAppHomeElement; - 'app-root': HTMLAppRootElement; - 'product-card': HTMLProductCardElement; - } + interface HTMLAppCaseElement extends Components.AppCase, HTMLStencilElement { + } + var HTMLAppCaseElement: { + prototype: HTMLAppCaseElement; + new (): HTMLAppCaseElement; + }; + interface HTMLAppFooterElement extends Components.AppFooter, HTMLStencilElement { + } + var HTMLAppFooterElement: { + prototype: HTMLAppFooterElement; + new (): HTMLAppFooterElement; + }; + interface HTMLAppHeaderElement extends Components.AppHeader, HTMLStencilElement { + } + var HTMLAppHeaderElement: { + prototype: HTMLAppHeaderElement; + new (): HTMLAppHeaderElement; + }; + interface HTMLAppHomeElement extends Components.AppHome, HTMLStencilElement { + } + var HTMLAppHomeElement: { + prototype: HTMLAppHomeElement; + new (): HTMLAppHomeElement; + }; + interface HTMLAppNavMobileElement extends Components.AppNavMobile, HTMLStencilElement { + } + var HTMLAppNavMobileElement: { + prototype: HTMLAppNavMobileElement; + new (): HTMLAppNavMobileElement; + }; + interface HTMLAppRootElement extends Components.AppRoot, HTMLStencilElement { + } + var HTMLAppRootElement: { + prototype: HTMLAppRootElement; + new (): HTMLAppRootElement; + }; + interface HTMLProductCardElement extends Components.ProductCard, HTMLStencilElement { + } + var HTMLProductCardElement: { + prototype: HTMLProductCardElement; + new (): HTMLProductCardElement; + }; + interface HTMLElementTagNameMap { + "app-case": HTMLAppCaseElement; + "app-footer": HTMLAppFooterElement; + "app-header": HTMLAppHeaderElement; + "app-home": HTMLAppHomeElement; + "app-nav-mobile": HTMLAppNavMobileElement; + "app-root": HTMLAppRootElement; + "product-card": HTMLProductCardElement; + } } - declare namespace LocalJSX { - interface AppHome {} - interface AppRoot {} - interface ProductCard { - 'product'?: IProduct; - } - - interface IntrinsicElements { - 'app-home': AppHome; - 'app-root': AppRoot; - 'product-card': ProductCard; - } + interface AppCase { + } + interface AppFooter { + } + interface AppHeader { + } + interface AppHome { + } + interface AppNavMobile { + "show"?: boolean; + } + interface AppRoot { + } + interface ProductCard { + "dir"?: string; + "product"?: IProduct; + } + interface IntrinsicElements { + "app-case": AppCase; + "app-footer": AppFooter; + "app-header": AppHeader; + "app-home": AppHome; + "app-nav-mobile": AppNavMobile; + "app-root": AppRoot; + "product-card": ProductCard; + } } - export { LocalJSX as JSX }; - - declare module "@stencil/core" { - export namespace JSX { - interface IntrinsicElements { - 'app-home': LocalJSX.AppHome & JSXBase.HTMLAttributes; - 'app-root': LocalJSX.AppRoot & JSXBase.HTMLAttributes; - 'product-card': LocalJSX.ProductCard & JSXBase.HTMLAttributes; + export namespace JSX { + interface IntrinsicElements { + "app-case": LocalJSX.AppCase & JSXBase.HTMLAttributes; + "app-footer": LocalJSX.AppFooter & JSXBase.HTMLAttributes; + "app-header": LocalJSX.AppHeader & JSXBase.HTMLAttributes; + "app-home": LocalJSX.AppHome & JSXBase.HTMLAttributes; + "app-nav-mobile": LocalJSX.AppNavMobile & JSXBase.HTMLAttributes; + "app-root": LocalJSX.AppRoot & JSXBase.HTMLAttributes; + "product-card": LocalJSX.ProductCard & JSXBase.HTMLAttributes; + } } - } } - - diff --git a/src/components/app-footer/app-footer.scss b/src/components/app-footer/app-footer.scss new file mode 100644 index 0000000..43a87a3 --- /dev/null +++ b/src/components/app-footer/app-footer.scss @@ -0,0 +1,15 @@ +:host { + display: block; + background-color: var(--ion-color-primary, #3880ff); + + p { + font-size: 0.9rem; + padding: 16px 16px; + margin: 32px 0 0; + color: #ffffff; + & > a { + color: #ffffff; + } + text-align: center; + } +} diff --git a/src/components/app-footer/app-footer.tsx b/src/components/app-footer/app-footer.tsx new file mode 100644 index 0000000..2ab6805 --- /dev/null +++ b/src/components/app-footer/app-footer.tsx @@ -0,0 +1,18 @@ +import { Component, Host, h } from '@stencil/core'; + +@Component({ + tag: 'app-footer', + styleUrl: 'app-footer.scss', + shadow: true, +}) +export class AppFooter { + + render() { + return ( + +

Caught a mistake or want to contribute to the documentation? Edit this on GitHub! Deployed on Netlify.

+
+ ); + } + +} diff --git a/src/components/app-footer/test/app-footer.e2e.ts b/src/components/app-footer/test/app-footer.e2e.ts new file mode 100644 index 0000000..24c03f3 --- /dev/null +++ b/src/components/app-footer/test/app-footer.e2e.ts @@ -0,0 +1,11 @@ +import { newE2EPage } from "@stencil/core/testing"; + +describe("app-footer", () => { + it("renders", async () => { + const page = await newE2EPage(); + await page.setContent(""); + + const element = await page.find("app-footer"); + expect(element).toHaveClass("hydrated"); + }); +}); diff --git a/src/components/app-footer/test/app-footer.spec.tsx b/src/components/app-footer/test/app-footer.spec.tsx new file mode 100644 index 0000000..54ec403 --- /dev/null +++ b/src/components/app-footer/test/app-footer.spec.tsx @@ -0,0 +1,18 @@ +import { newSpecPage } from '@stencil/core/testing'; +import { AppFooter } from '../app-footer'; + +describe('app-footer', () => { + it('renders', async () => { + const page = await newSpecPage({ + components: [AppFooter], + html: ``, + }); + expect(page.root).toEqualHtml(` + + + + + + `); + }); +}); diff --git a/src/components/app-header/app-header.scss b/src/components/app-header/app-header.scss new file mode 100644 index 0000000..0a31abf --- /dev/null +++ b/src/components/app-header/app-header.scss @@ -0,0 +1,24 @@ +:host { + display: block; + ion-header > ion-toolbar > ion-buttons[slot="end"] { + @media (max-width: 575.98px) { + display: none !important; + } + } + + h1 { + font-size: inherit; + margin: inherit; + padding: inherit; + } + .default-hide { + display: none; + } + .dom-hide { + display: none; + } + ion-header > ion-toolbar > ion-buttons[slot="end"], + .dom-show { + display: block !important; + } +} diff --git a/src/components/app-header/app-header.tsx b/src/components/app-header/app-header.tsx new file mode 100644 index 0000000..9996423 --- /dev/null +++ b/src/components/app-header/app-header.tsx @@ -0,0 +1,102 @@ +import { Component, Host, h, State } from "@stencil/core"; + +@Component({ + tag: "app-header", + styleUrl: "app-header.scss", + shadow: true +}) +export class AppHeader { + /** + * スマホ用のナビゲーションの表示切り替え + */ + @State() mobileNav: boolean = false; + + /** + * ナビゲーションのモード切替 + */ + @State() mode: "short"; + + private toggleMobileNav = () => { + this.mobileNav = !this.mobileNav; + }; + + componentDidLoad() { + if (document.documentElement.clientWidth < 690) { + this.mode = "short"; + } + } + + render() { + return ( + + + + + + + Ionic Japan + + + + 日本語ドキュメンテーション + + + 利用事例 + + + + + + + + + + + + イベント + + + + + + + + + + ); + } +} diff --git a/src/components/app-header/test/app-header.e2e.ts b/src/components/app-header/test/app-header.e2e.ts new file mode 100644 index 0000000..d2eef8e --- /dev/null +++ b/src/components/app-header/test/app-header.e2e.ts @@ -0,0 +1,11 @@ +import { newE2EPage } from "@stencil/core/testing"; + +describe("app-header", () => { + it("renders", async () => { + const page = await newE2EPage(); + await page.setContent(""); + + const element = await page.find("app-header"); + expect(element).toHaveClass("hydrated"); + }); +}); diff --git a/src/components/app-header/test/app-header.spec.tsx b/src/components/app-header/test/app-header.spec.tsx new file mode 100644 index 0000000..bcc55d8 --- /dev/null +++ b/src/components/app-header/test/app-header.spec.tsx @@ -0,0 +1,18 @@ +import { newSpecPage } from '@stencil/core/testing'; +import { AppHeader } from '../app-header'; + +describe('app-header', () => { + it('renders', async () => { + const page = await newSpecPage({ + components: [AppHeader], + html: ``, + }); + expect(page.root).toEqualHtml(` + + + + + + `); + }); +}); diff --git a/src/components/app-home/app-home.scss b/src/components/app-home/app-home.scss deleted file mode 100644 index b3de697..0000000 --- a/src/components/app-home/app-home.scss +++ /dev/null @@ -1,7 +0,0 @@ -app-home { - .products-wrapper { - display: flex; - flex-wrap: wrap; - } -} - diff --git a/src/components/app-home/app-home.spec.ts b/src/components/app-home/app-home.spec.ts deleted file mode 100644 index 8b2b852..0000000 --- a/src/components/app-home/app-home.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { AppHome } from "./app-home"; - -describe("app", () => { - it("builds", () => { - expect(new AppHome()).toBeTruthy(); - }); -}); diff --git a/src/components/app-home/app-home.tsx b/src/components/app-home/app-home.tsx deleted file mode 100644 index 7894cae..0000000 --- a/src/components/app-home/app-home.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { Component, h, Prop, State } from "@stencil/core"; -import { DataProvider } from "../../providers/data"; -import { IProduct } from "../../models/product"; - -@Component({ - tag: "app-home", - styleUrl: "app-home.scss" -}) -export class AppHome { - @State() products: IProduct[] = []; - - @Prop({ connect: "ion-alert-controller" }) - alertCtrl: HTMLIonAlertControllerElement; - - @State() countryCode: string = "ALL"; - - async componentWillLoad() { - await this.getData(); - const loading: HTMLElement = document.querySelector( - ".install-loading-spinner" - ); - loading.style.display = "none"; - } - - async showSortAlert() { - const alert = await this.alertCtrl.create({ - header: "国で絞り込み", - inputs: [ - { - name: "all", - type: "radio", - label: "すべて", - value: "ALL", - checked: this.countryCode == "ALL" - }, - { - name: "jp", - type: "radio", - label: "日本", - value: "JP", - checked: this.countryCode == "JP" - }, - { - name: "us", - type: "radio", - label: "アメリカ", - value: "US", - checked: this.countryCode == "US" - }, - { - name: "es", - type: "radio", - label: "スペイン", - value: "ES", - checked: this.countryCode == "ES" - }, - { - name: "ir", - type: "radio", - label: "イラン", - value: "IR", - checked: this.countryCode == "IR" - }, - { - name: "cw", - type: "radio", - label: "キュラソー", - value: "CW", - checked: this.countryCode == "CW" - }, - ], - buttons: [ - { - text: "キャンセル", - role: "cancel", - cssClass: "secondary", - handler: () => {} - }, - { - text: "絞り込む", - handler: data => { - this.countryCode = data; - } - } - ] - }); - await alert.present(); - } - - async getData() { - this.products = await DataProvider.get(); - } - render() { - return [ - - - - - - - - Who use Ionic? - - - - - - - , - - -
- {(() => { - const list = []; - for (const product of this.products) { - if (this.countryCode == "ALL") { - list.push(); - } else if (this.countryCode == product.country) { - list.push(); - } - } - return list; - })()} -
- - this.showSortAlert()}> - - - -
- ]; - } -} diff --git a/src/components/app-nav-mobile/app-nav-mobile.scss b/src/components/app-nav-mobile/app-nav-mobile.scss new file mode 100644 index 0000000..ea1223e --- /dev/null +++ b/src/components/app-nav-mobile/app-nav-mobile.scss @@ -0,0 +1,6 @@ +:host { + display: none; +} +:host(.show) { + display: block; +} diff --git a/src/components/app-nav-mobile/app-nav-mobile.tsx b/src/components/app-nav-mobile/app-nav-mobile.tsx new file mode 100644 index 0000000..bc81489 --- /dev/null +++ b/src/components/app-nav-mobile/app-nav-mobile.tsx @@ -0,0 +1,63 @@ +import { Component, Host, h, Prop } from "@stencil/core"; + +@Component({ + tag: "app-nav-mobile", + styleUrl: "app-nav-mobile.scss", + shadow: true +}) +export class AppNavMobile { + @Prop() show: boolean; + techs = [ + { + title: "日本語ドキュメーション", + icon: "library-outline", + url: "https://ionicframework.jp/docs", + target: "_self" + }, + { + title: "利用事例", + icon: "albums-outline", + url: "/case", + target: "_self" + }, + { + title: "Github", + icon: "logo-github", + url: "https://github.com/ionic-jp/community-site", + target: "_blank" + }, + { + title: "Twitter", + icon: "logo-twitter", + url: "https://twitter.com/ionic_japan", + target: "_blank" + }, + { + title: "イベント", + icon: "ticket-outline", + url: "https://ionic-jp.connpass.com/", + target: "_blank" + } + ]; + + render() { + return ( + + + {this.techs.map((tech, i) => ( + + + +

{tech.title}

+
+
+ ))} +
+
+ ); + } +} diff --git a/src/components/app-nav-mobile/test/app-nav-mobile.e2e.ts b/src/components/app-nav-mobile/test/app-nav-mobile.e2e.ts new file mode 100644 index 0000000..a4a0f1a --- /dev/null +++ b/src/components/app-nav-mobile/test/app-nav-mobile.e2e.ts @@ -0,0 +1,11 @@ +import { newE2EPage } from "@stencil/core/testing"; + +describe("app-nav-mobile", () => { + it("renders", async () => { + const page = await newE2EPage(); + await page.setContent(""); + + const element = await page.find("app-nav-mobile"); + expect(element).toHaveClass("hydrated"); + }); +}); diff --git a/src/components/app-nav-mobile/test/app-nav-mobile.spec.tsx b/src/components/app-nav-mobile/test/app-nav-mobile.spec.tsx new file mode 100644 index 0000000..bb72a68 --- /dev/null +++ b/src/components/app-nav-mobile/test/app-nav-mobile.spec.tsx @@ -0,0 +1,18 @@ +import { newSpecPage } from '@stencil/core/testing'; +import { AppNavMobile } from '../app-nav-mobile'; + +describe('app-nav-mobile', () => { + it('renders', async () => { + const page = await newSpecPage({ + components: [AppNavMobile], + html: ``, + }); + expect(page.root).toEqualHtml(` + + + + + + `); + }); +}); diff --git a/src/components/app-root/app-root.tsx b/src/components/app-root/app-root.tsx index 002e494..48abfe0 100644 --- a/src/components/app-root/app-root.tsx +++ b/src/components/app-root/app-root.tsx @@ -5,13 +5,16 @@ import { Component, h } from '@stencil/core'; styleUrl: 'app-root.scss' }) export class AppRoot { - render() { + const loader = document.querySelector('#routerLoading'); + if (loader) { + loader.parentNode.removeChild(loader) + } return ( - + diff --git a/src/components/pages/app-case/app-case.scss b/src/components/pages/app-case/app-case.scss new file mode 100644 index 0000000..da90945 --- /dev/null +++ b/src/components/pages/app-case/app-case.scss @@ -0,0 +1,12 @@ +:host { + display: block; + .products-wrapper { + display: flex; + flex-wrap: wrap; + + product-card { + margin: 16px 0; + } + } +} + diff --git a/src/components/pages/app-case/app-case.tsx b/src/components/pages/app-case/app-case.tsx new file mode 100644 index 0000000..6583791 --- /dev/null +++ b/src/components/pages/app-case/app-case.tsx @@ -0,0 +1,77 @@ +import { Component, h, State, Host } from "@stencil/core"; +import { IProduct } from "../../../models/product"; +import { caseFilterAlertOption } from '../../../helpers/utils'; +import Helmet from '@stencil/helmet'; +import { productData } from '../../../providers/product'; + +@Component({ + tag: "app-case", + styleUrl: "app-case.scss", + shadow: true, +}) +export class AppCase { + @State() countryCode: string = "ALL"; + @State() products: IProduct[] = []; + + async showSortAlert() { + const alert = Object.assign(document.createElement("ion-alert"), + caseFilterAlertOption(this.countryCode),{ + buttons: [ + { + text: "キャンセル", + }, + { + text: "絞り込む", + handler: data => this.countryCode = data + } + ] + }); + document.body.appendChild(alert); + return alert.present(); + } + + componentWillLoad() { + this.products = productData; + } + + render() { + return ( + + + Ionic利用事例集 + + + + + + + + + + + + +
+ {(() => { + const list = []; + for (const product of this.products) { + if (this.countryCode == "ALL") { + list.push(); + } else if (this.countryCode == product.country) { + list.push(); + } + } + return list; + })()} +
+ + this.showSortAlert()}> + + + + +
+
+ ) + } +} diff --git a/src/components/app-home/app-home.e2e.ts b/src/components/pages/app-case/test/app-case.e2e.ts similarity index 100% rename from src/components/app-home/app-home.e2e.ts rename to src/components/pages/app-case/test/app-case.e2e.ts diff --git a/src/components/pages/app-case/test/app-case.spec.ts b/src/components/pages/app-case/test/app-case.spec.ts new file mode 100644 index 0000000..c0de7a6 --- /dev/null +++ b/src/components/pages/app-case/test/app-case.spec.ts @@ -0,0 +1,7 @@ +import { AppCase } from "../app-case"; + +describe("app", () => { + it("builds", () => { + expect(new AppCase()).toBeTruthy(); + }); +}); diff --git a/src/components/pages/app-home/app-home.scss b/src/components/pages/app-home/app-home.scss new file mode 100644 index 0000000..93aa960 --- /dev/null +++ b/src/components/pages/app-home/app-home.scss @@ -0,0 +1,177 @@ +:host { + display: block; + + .lead { + display: flex; + align-items: center; + + @media (max-width: 575.98px) { + display: block; + text-align: center; + } + + max-width: 650px; + margin: 80px auto 48px; + color: #333333; + .hero-image { + width: 120px; + display: block; + margin: auto; + } + p { + margin-left: 40px; + font-size: 1.8rem; + font-weight: bold; + + @media (max-width: 575.98px) { + font-size: 1.4rem; + margin: 0; + padding: 16px; + } + } + } + + .list-native { + list-style-type: none; + display: flex; + flex-wrap: wrap; + margin: 0 auto 0; + padding: 0; + justify-content: center; + + ion-button { + --color: var(--ion-color-dark); + } + } + + .slack-card { + max-width: 650px; + margin: 32px auto 60px; + ion-card { + --background: #4a154b; + ion-card-content { + display: flex; + flex-wrap: wrap; + align-items: center; + img { + width: 120px; + display: block; + } + p { + margin-left: 16px; + color: #ffffff; + font-size: 1.2rem; + } + + @media (max-width: 575.98px) { + padding-bottom: 32px; + } + } + } + } + + .contribute { + clip-path: polygon(0 0, 100% 12%, 100% 100%, 0 100%); + + @media (max-width: 575.98px) { + clip-path: polygon(0 0, 100% 2%, 100% 100%, 0 100%); + } + + background-color: var(--ion-color-primary, #3880ff); + color: #ffffff; + padding: 80px 0 10px 0; + + & > div { + max-width: 1024px; + margin: auto; + + & > h2 { + margin-top: 24px; + text-align: center; + } + + & > p { + max-width: 650px; + font-size: 1.2rem; + margin: 32px auto 32px; + padding: 0 16px + } + + ul { + list-style-type: none; + display: flex; + flex-wrap: wrap; + margin: 0 auto 80px; + padding: 0; + justify-content: center; + + @media (max-width: 575.98px) { + display: block; + } + li { + flex: 1; + ion-card-header { + text-align: center; + font-size: 2rem; + color: var(--ion-color-primary, #3880ff); + ion-icon { + position: relative; + top: 8px; + } + } + h3 { + text-align: center; + font-size: 1.2rem; + margin: 0 0 16px; + color: #333333; + font-weight: bold; + } + p { + color: #333333; + font-size: 1.1rem; + margin-bottom: 16px; + } + } + } + } + } + + .policy { + display: flex; + align-items: center; + max-width: 1024px; + margin: 60px auto; + padding-right: 16px; + + @media (max-width: 575.98px) { + display: block; + } + + h2 { + min-width: 240px; + color: var(--ion-color-primary, #3880ff); + margin-left: 24px; + span { + padding-right: 16px; + border-right: 4px solid var(--ion-color-primary, #3880ff); + } + } + + & > div { + margin-left: 24px; + + ul { + list-style-type: none; + padding: 0; + + li { + border-bottom: 1px solid #f0f0f0; + padding: 8px 0; + } + } + } + } + hr { + border: 1px solid var(--ion-color-light); + } +} diff --git a/src/components/pages/app-home/app-home.tsx b/src/components/pages/app-home/app-home.tsx new file mode 100644 index 0000000..71e34dc --- /dev/null +++ b/src/components/pages/app-home/app-home.tsx @@ -0,0 +1,112 @@ +import { Component, Host, h } from '@stencil/core'; +import Helmet from '@stencil/helmet'; +import { policyData } from '../../../providers/policy'; + +@Component({ + tag: 'app-home', + styleUrl: 'app-home.scss', + shadow: true, +}) +export class AppHome { + render() { + return ( + + + Ionic Japan User Group + + + + + + + + + + + + +
+
+ +

Ionic Japan User Groupは、
Web技術を使ったアプリ開発について情報交換するコミュニティです。

+
+ +
    +
  • + + Ionic Framework + +
  • +
  • + + Capacitor + +
  • +
  • + + Stencil + +
  • +
+
+ + + +

興味がある方は、まずはslackにご参加ください!

+
+
+
+
+ +
+
+

Contribute

+

+ 誰でもOSSに貢献することができます。 + 以前Ionicの日本語情報が少なかったことから組織したユーザコミュニティですので、情報を発信する側にまわっていたくことを歓迎します。 +

+
    +
  • + + + +

    ドキュメント翻訳

    +

    Ionic/Capacitor/Stencilのドキュメントの翻訳をお手伝いいただける方を募集しています。

    +
    +
    +
  • +
  • + + + +

    登壇

    +

    Ionic Meetupでは登壇者を募集しています。あなたの取組について教えてくれませんか?

    +
    +
    +
  • +
  • + + + +

    ブログ

    +

    困ったことをどう解決したかを記事にすると、同じ問題に直面した人の助けになります。

    +
    +
    +
  • +
+
+
+
+

Community Policy

+
+

Ionic Japan User Groupは、 Web技術を使ったアプリ開発について情報交換するユーザコミュニティです。 コミュニティとしての健全性・持続性を保つために、以下の行動を禁止します。これらの行動を繰り返す参加者がいましたら、運営メンバーにご連絡ください。

+
    policyData.map(d => `
  • ${d}
  • `).join(''))()}> +
+
+
+ +
+
+ ); + } +} diff --git a/src/components/pages/app-home/test/app-home.e2e.ts b/src/components/pages/app-home/test/app-home.e2e.ts new file mode 100644 index 0000000..c5e8cf3 --- /dev/null +++ b/src/components/pages/app-home/test/app-home.e2e.ts @@ -0,0 +1,11 @@ +import { newE2EPage } from "@stencil/core/testing"; + +describe("app-home", () => { + it("renders", async () => { + const page = await newE2EPage(); + await page.setContent(""); + + const element = await page.find("app-home"); + expect(element).toHaveClass("hydrated"); + }); +}); diff --git a/src/components/pages/app-home/test/app-home.spec.tsx b/src/components/pages/app-home/test/app-home.spec.tsx new file mode 100644 index 0000000..1e6da3d --- /dev/null +++ b/src/components/pages/app-home/test/app-home.spec.tsx @@ -0,0 +1,18 @@ +import { newSpecPage } from '@stencil/core/testing'; +import { AppHome } from '../app-home'; + +describe('app-home', () => { + it('renders', async () => { + const page = await newSpecPage({ + components: [AppHome], + html: ``, + }); + expect(page.root).toEqualHtml(` + + + + + + `); + }); +}); diff --git a/src/components/product-card/product-card.scss b/src/components/product-card/product-card.scss index 933ddfa..514065d 100644 --- a/src/components/product-card/product-card.scss +++ b/src/components/product-card/product-card.scss @@ -22,6 +22,12 @@ product-card { ion-img { min-height: 150px; } + .card-description { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + } .card-footer { padding-top: 16px; width: 100%; diff --git a/src/components/product-card/product-card.tsx b/src/components/product-card/product-card.tsx index 53a8d57..8a367b7 100644 --- a/src/components/product-card/product-card.tsx +++ b/src/components/product-card/product-card.tsx @@ -7,6 +7,7 @@ import { IProduct } from "../../models/product"; }) export class AppHome { @Prop() product: IProduct; + @Prop() dir: string = ""; render() { return ( @@ -42,12 +43,14 @@ export class AppHome { ); } })()} -
{this.product.description}
+
{this.product.description}
@@ -66,6 +70,7 @@ export class AppHome { ? this.product.platform.android : "#" }`} + target="_blank" > @@ -75,6 +80,7 @@ export class AppHome { href={`${ this.product.platform.web ? this.product.platform.web : "#" }`} + target="_blank" > diff --git a/src/global/app.scss b/src/global/app.scss index 440fa11..d764f09 100644 --- a/src/global/app.scss +++ b/src/global/app.scss @@ -7,19 +7,19 @@ */ /** Core CSS required for ionic components to work property */ -@import "~@ionic/core/css/core.css"; +@import '~@ionic/core/css/core.css'; /** Basic CSS for apps built with Ionic */ -@import "~@ionic/core/css/normalize.css"; -@import "~@ionic/core/css/structure.css"; -@import "~@ionic/core/css/typography.css"; +@import '~@ionic/core/css/normalize.css'; +@import '~@ionic/core/css/structure.css'; +@import '~@ionic/core/css/typography.css'; /** Optional CSS utils that can be commented out */ -@import "~@ionic/core/css/padding.css"; -@import "~@ionic/core/css/float-elements.css"; -@import "~@ionic/core/css/text-alignment.css"; -@import "~@ionic/core/css/text-transformation.css"; -@import "~@ionic/core/css/flex-utils.css"; +@import '~@ionic/core/css/padding.css'; +@import '~@ionic/core/css/float-elements.css'; +@import '~@ionic/core/css/text-alignment.css'; +@import '~@ionic/core/css/text-transformation.css'; +@import '~@ionic/core/css/flex-utils.css'; /* The CSS Variables below can be used to theme your app. @@ -27,5 +27,7 @@ https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables More info about color theming using Ionic: - https://beta.ionicframework.com/docs/theming/color-generator + https://ionicframework.com/docs/theming/color-generator */ + +@import 'theme'; diff --git a/src/global/app.ts b/src/global/app.ts index 9b8b93a..aaa5271 100644 --- a/src/global/app.ts +++ b/src/global/app.ts @@ -1,7 +1,9 @@ import "@ionic/core"; -// import { setupConfig } from '@ionic/core'; +import { setupConfig } from "@ionic/core"; -// setupConfig({ -// mode: 'ios' -// }); +export default () => { + setupConfig({ + mode: "md" + }); +}; diff --git a/src/global/theme.scss b/src/global/theme.scss new file mode 100644 index 0000000..0e9fe1f --- /dev/null +++ b/src/global/theme.scss @@ -0,0 +1,64 @@ +:root { + --ion-color-primary: #3880ff; + --ion-color-primary-rgb: 56,128,255; + --ion-color-primary-contrast: #ffffff; + --ion-color-primary-contrast-rgb: 255,255,255; + --ion-color-primary-shade: #3171e0; + --ion-color-primary-tint: #4c8dff; + + --ion-color-secondary: #3dc2ff; + --ion-color-secondary-rgb: 61,194,255; + --ion-color-secondary-contrast: #ffffff; + --ion-color-secondary-contrast-rgb: 255,255,255; + --ion-color-secondary-shade: #36abe0; + --ion-color-secondary-tint: #50c8ff; + + --ion-color-tertiary: #5260ff; + --ion-color-tertiary-rgb: 82,96,255; + --ion-color-tertiary-contrast: #ffffff; + --ion-color-tertiary-contrast-rgb: 255,255,255; + --ion-color-tertiary-shade: #4854e0; + --ion-color-tertiary-tint: #6370ff; + + --ion-color-success: #2dd36f; + --ion-color-success-rgb: 45,211,111; + --ion-color-success-contrast: #ffffff; + --ion-color-success-contrast-rgb: 255,255,255; + --ion-color-success-shade: #28ba62; + --ion-color-success-tint: #42d77d; + + --ion-color-warning: #ffc409; + --ion-color-warning-rgb: 255,196,9; + --ion-color-warning-contrast: #000000; + --ion-color-warning-contrast-rgb: 0,0,0; + --ion-color-warning-shade: #e0ac08; + --ion-color-warning-tint: #ffca22; + + --ion-color-danger: #eb445a; + --ion-color-danger-rgb: 235,68,90; + --ion-color-danger-contrast: #ffffff; + --ion-color-danger-contrast-rgb: 255,255,255; + --ion-color-danger-shade: #cf3c4f; + --ion-color-danger-tint: #ed576b; + + --ion-color-dark: #222428; + --ion-color-dark-rgb: 34,36,40; + --ion-color-dark-contrast: #ffffff; + --ion-color-dark-contrast-rgb: 255,255,255; + --ion-color-dark-shade: #1e2023; + --ion-color-dark-tint: #383a3e; + + --ion-color-medium: #92949c; + --ion-color-medium-rgb: 146,148,156; + --ion-color-medium-contrast: #ffffff; + --ion-color-medium-contrast-rgb: 255,255,255; + --ion-color-medium-shade: #808289; + --ion-color-medium-tint: #9d9fa6; + + --ion-color-light: #f4f5f8; + --ion-color-light-rgb: 244,245,248; + --ion-color-light-contrast: #000000; + --ion-color-light-contrast-rgb: 0,0,0; + --ion-color-light-shade: #d7d8da; + --ion-color-light-tint: #f5f6f9; +} diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index 2147184..6883014 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -1,3 +1,55 @@ +import { AlertOptions } from "@ionic/core"; + export function sayHello() { return Math.random() < 0.5 ? "Hello" : "Hola"; } + +export const caseFilterAlertOption = (countryCode: string): AlertOptions => { + return { + header: "国で絞り込み", + inputs: [ + { + name: "all", + type: "radio", + label: "すべて", + value: "ALL", + checked: countryCode == "ALL" + }, + { + name: "jp", + type: "radio", + label: "日本", + value: "JP", + checked: countryCode == "JP" + }, + { + name: "us", + type: "radio", + label: "アメリカ", + value: "US", + checked: countryCode == "US" + }, + { + name: "es", + type: "radio", + label: "スペイン", + value: "ES", + checked: countryCode == "ES" + }, + { + name: "ir", + type: "radio", + label: "イラン", + value: "IR", + checked: countryCode == "IR" + }, + { + name: "cw", + type: "radio", + label: "キュラソー", + value: "CW", + checked: countryCode == "CW" + } + ] + }; +}; diff --git a/src/index.html b/src/index.html index bd6140e..2f248dc 100644 --- a/src/index.html +++ b/src/index.html @@ -1,82 +1,83 @@ + + + Ionic Japan User Group - Ionic日本ユーザ会 - - - Who use Ionic + + + - - - + + - - + + + - - - + - - - + + - - - - - - - - - - - - - + - - - - - - - - - - + + + + + + + - -
- - - - - - + +
+ + + diff --git a/src/manifest.json b/src/manifest.json index d39dc3e..84f951d 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { - "name": "who-use-ionic", - "short_name": "who-use-ionic", - "start_url": "/case/", + "name": "Ionic Japan User Group", + "short_name": "ionic-japan", + "start_url": "/", "display": "standalone", "icons": [{ "src": "assets/icon/icon192.png", diff --git a/src/providers/data.ts b/src/providers/data.ts deleted file mode 100644 index 4feb0a1..0000000 --- a/src/providers/data.ts +++ /dev/null @@ -1,24 +0,0 @@ -export class DataController { - constructor() {} - - async get() { - const method = "GET"; - const headers = { - Accept: "application/json", - "Content-Type": "application/json" - }; - try { - const res = await fetch("./assets/data.json", { - method, - headers - }); - const obj = await res.json(); - return obj.products; - } catch (e) { - console.log(e); - return null; - } - } -} - -export const DataProvider = new DataController(); diff --git a/src/providers/policy.ts b/src/providers/policy.ts new file mode 100644 index 0000000..3196803 --- /dev/null +++ b/src/providers/policy.ts @@ -0,0 +1,10 @@ +export const policyData: string[] = [ + "法令または公序良俗に違反する行為", + "犯罪行為に関連する行為", + "他のユーザに関する個人情報等を収集または蓄積する行為", + "他のユーザに成りすます行為", + "反社会的勢力に対して直接または間接に利益を供与する行為", + "過度に暴力的な表現・行為、露骨な性的表現、人種、国籍、信条、性別、社会的身分、門地等による差別につながる表現・行為、自殺、自傷行為、薬物乱用を誘引または助長する表現・行為、その他反社会的な内容を含み他人に不快感を与える表現・行為", + "営業、宣伝、広告、求人、勧誘、その他営利を目的とする行為(事前にコミュニティで認めたものを除きます。)、性行為やわいせつな行為を目的とする行為、他のお客様に対する嫌がらせや誹謗中傷を目的とする行為", + "宗教活動または宗教団体への勧誘行為" +]; diff --git a/src/providers/product.ts b/src/providers/product.ts new file mode 100644 index 0000000..6916909 --- /dev/null +++ b/src/providers/product.ts @@ -0,0 +1,1029 @@ +import { IProduct } from "../models/product"; + +export const productData: IProduct[] = [ + { + name: "たのんだー", + image: "/assets/images/tanonda.png", + description: "やること管理&送信アプリ", + author: "@jsalt_0525", + websiteUrl: "https://mnitta220.github.io/bnan/", + country: "JP", + platform: { + ios: + "https://apps.apple.com/jp/app/%E3%81%9F%E3%81%AE%E3%82%93%E3%81%A0%E3%83%BC/id1500995068", + android: + "https://play.google.com/store/apps/details?id=jp.JShiota.Sentifer", + web: "" + } + }, + { + name: "文章暗記", + image: "/assets/images/bunsyouanki.png", + description: + "「 文章暗記ぶんしょうあんき」は、スマートフォン、タブレット向けのアプリです。 このアプリは、暗記したい文章がある時に、それを暗記できるようにサポートします。 たとえば、古典、経典、 詩歌しいか、スピーチ原稿、台本などの文章を、暗記・ 暗誦あんしょうしたい時に、このアプリを使ってトレーニングすることができます。", + author: "mnitta220", + websiteUrl: "https://mnitta220.github.io/bnan/", + country: "JP", + platform: { + ios: + "https://apps.apple.com/jp/app/%E6%96%87%E7%AB%A0%E6%9A%97%E8%A8%98/id1532800981", + android: + "https://play.google.com/store/apps/details?id=com.github.mnitta220.bnan", + web: "" + } + }, + { + name: "脳内碁盤", + image: "/assets/images/nounaigoban.png", + description: "", + author: "mnitta220", + websiteUrl: "https://github.com/mnitta220/nngb/", + country: "JP", + platform: { + ios: + "https://apps.apple.com/jp/app/%E8%84%B3%E5%86%85%E7%A2%81%E7%9B%A4/id1519572562", + android: + "https://play.google.com/store/apps/details?id=com.nifty.jcc02505", + web: "" + } + }, + { + name: "食後のタイマー", + image: "./assets/blank.png", + description: "食後の時間で健康管理 - 歯磨き、睡眠、断食...", + author: "@papuujp", + websiteUrl: "https://savaps.com/after-meal-timer-application/", + country: "JP", + platform: { + ios: + "https://apps.apple.com/jp/app/%25E9%25A3%259F%25E5%25BE%258C%25E3%2581%25AE%25E3%2582%25BF%25E3%2582%25A4%25E3%2583%259E%25E3%2583%25BC/id1521903524?ign-mpt=uo%3D4", + android: + "https://play.google.com/store/apps/details?id=com.savaps.SavapsAfterMealTimer", + web: "" + } + }, + { + name: "食品表示印刷", + image: "/assets/images/shyokuhin.png", + description: "食品表示ラベルをシンプルに印刷。", + author: "@rdlabo.", + websiteUrl: "", + country: "JP", + platform: { + ios: "https://apps.apple.com/jp/app/id1526012504?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.rdlabo.foodlabel", + web: "https://app.foodlabel.rdlabo.jp/main" + } + }, + { + name: "FunnyOne(ファニーワン) 写真で一言リモート大喜利", + image: "/assets/images/funny_one.png", + description: "写真で一言リモート爆笑コンテンツ", + author: "popbits Inc.", + websiteUrl: "", + country: "JP", + platform: { + ios: "https://apps.apple.com/jp/app/funny-one/id1515018792", + android: + "https://play.google.com/store/apps/details?id=jp.co.popbits.funnyapp", + web: "" + } + }, + { + name: "UpDown Timer", + image: "./assets/blank.png", + description: + "使い方は簡単、タッチして時分秒を設定し、スタートボタンを押すだけ。 あとはゲージが減っていくので、残り時間が一目瞭然。 アラーム音も太鼓やドラなどいろいろ選べます。", + author: "@papuujp", + websiteUrl: "https://savaps.com/updown-timer-application/", + country: "JP", + platform: { + ios: + "https://apps.apple.com/jp/app/updown-timer-s/id1517515089?ign-mpt=uo%3D4", + android: + "https://play.google.com/store/apps/details?id=com.savaps.SavapsSimpleTimer", + web: "" + } + }, + { + name: "勉強タイマー: 勉強に集中したい人におすすめのポモドーロ タイマー", + image: "./assets/blank.png", + description: + "勉強が長く続かない−−。』 そんな悩みを減らすための、勉強用のタイマーです。ポモドーロ テクニックという集中と休憩を繰り返す方法があるのですが、 このタイマーを使うと、ポモドーロ テクニックを利用して勉強に集中することができます。", + author: "@papuujp", + websiteUrl: "https://savaps.com/study-timer-application/", + country: "JP", + platform: { + ios: + "https://apps.apple.com/jp/app/%25E5%258B%2589%25E5%25BC%25B7%25E3%2582%25BF%25E3%2582%25A4%25E3%2583%259E%25E3%2583%25BC-s/id1512323958?ign-mpt=uo%3D4", + android: + "https://play.google.com/store/apps/details?id=com.savaps.SavapsStudyTimer", + web: "" + } + }, + { + name: "ルートハブ", + image: "/assets/images/routehub.png", + description: + "いいルートを共有できるよう、ルートラボの代替機能と、ちょっと+αを目指します", + author: "@routehubapp", + websiteUrl: "https://github.com/routehub/route_web", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://routehub.app/" + } + }, + { + name: "ふせんトレーニング", + description: "家庭のタスク共有アプリ", + author: "@likr", + websiteUrl: "https://sticky-note-training.netlify.com/about", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://sticky-note-training.netlify.com/about" + } + }, + { + name: "パパの子育てソーシャルサービス firtee", + image: "/assets/images/firtee.png", + description: "家庭のタスク共有アプリ", + author: "@rdlabo", + websiteUrl: "https://app.firtee.net/auth/signin", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://app.firtee.net/auth/signin" + } + }, + { + name: "ペットじまん", + image: "/assets/images/petjiman.png", + description: "ペット好きが集まるペット専用SNSアプリ", + author: "ryo.naruse", + websiteUrl: "https://twitter.com/petjiman_app", + country: "JP", + platform: { + ios: "https://apps.apple.com/jp/app/id1494069672", + android: + "https://play.google.com/store/apps/details?id=pet.jiman.production", + web: "https://jiman.pet/" + } + }, + { + name: "パパダッシュ!!", + image: "https://i.imgur.com/A2ZrPee.png", + description: "家庭のタスク共有アプリ", + author: "@maki_saki", + websiteUrl: "http://papa-dash.com/", + country: "JP", + platform: { + ios: "", + android: "", + web: "http://app.papa-dash.com/" + } + }, + { + name: "FrontConf2019アプリ", + image: "/assets/images/frontconf2019.png", + description: "デモアプリ", + author: "Ionic Japan User Group", + websiteUrl: "https://kfug2019.ionicframework.jp/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://kfug2019.ionicframework.jp/" + } + }, + { + name: "Untappd", + image: "https://imgur.com/XuHahrT.png", + description: "ビールのSNS", + author: "Untappd", + websiteUrl: "https://untappd.com/", + country: "US", + platform: { + ios: + "https://itunes.apple.com/jp/app/untappd-discover-beer/id449141888?mt=8", + android: + "https://play.google.com/store/apps/details?id=com.untappdllc.app&hl=ja", + web: "https://untappd.com/" + } + }, + { + name: "Pacifica", + image: "https://imgur.com/8PVZnME.png", + description: "瞑想アプリ", + author: "Pacifica Labs", + websiteUrl: "https://www.thinkpacifica.com/", + country: "US", + platform: { + ios: + "https://itunes.apple.com/us/app/pacifica-tools-for-stress/id922968861?mt=8&ign-mpt=uo%3D6", + android: + "https://play.google.com/store/apps/details?id=com.pacificalabs.pacifica", + web: "https://www.thinkpacifica.com/app" + } + }, + { + name: "JustWatch", + image: "https://imgur.com/LdGbNRG.png", + description: "動画配信検索エンジン", + author: "JustWatch, inc.", + websiteUrl: "https://www.justwatch.com/jp", + country: "US", + platform: { + ios: + "https://itunes.apple.com/jp/app/justwatch%E6%98%A0%E7%94%BB-%E3%83%86%E3%83%AC%E3%83%93%E7%95%AA%E7%B5%84/id979227482?mt=8", + android: + "https://play.google.com/store/apps/details?id=com.justwatch.justwatch&hl=ja", + web: "https://www.justwatch.com/jp" + } + }, + { + name: "Sworkit", + image: "https://imgur.com/6TznFRa.png", + description: "筋トレアプリ", + author: "Nexercise Apps, Inc.", + websiteUrl: "https://sworkit.com/", + country: "US", + platform: { + ios: + "https://itunes.apple.com/jp/app/sworkit-%E3%83%91%E3%83%BC%E3%82%BD%E3%83%8A%E3%83%AB%E3%83%88%E3%83%AC%E3%83%BC%E3%83%8A%E3%83%BC/id527219710?mt=8", + android: + "https://play.google.com/store/apps/details?id=sworkitapp.sworkit.com&hl=ja", + web: "https://app.sworkit.com/" + } + }, + { + name: "Techfeed", + image: "https://imgur.com/8O34AdD.png", + description: "ニュースアプリ", + author: "Techfeed", + websiteUrl: "https://techfeed.io", + country: "JP", + platform: { + ios: "https://itunes.apple.com/jp/app/techfeed/id1135796018?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.co.openweb.TechFeed&hl=ja", + web: "https://techfeed.io/" + } + }, + { + name: "tipsys", + image: "https://imgur.com/3pUDnUN.png", + description: "女性専用SNS", + author: "一般社団法人リレーションデザイン研究所", + websiteUrl: "https://www.tipsys.me/", + country: "JP", + platform: { + ios: "https://itunes.apple.com/jp/app/tipsys/id1142546640?l=jp&mt=8/", + android: "https://play.google.com/store/apps/details?id=jp.rdlabo.tipsys", + web: "https://app.tipsys.me/" + } + }, + { + name: "MarketWatch", + description: "ニュースアプリ", + image: "https://imgur.com/p5c9hSp.png", + author: "Dow Jones & Company, Inc.", + websiteUrl: "https://www.marketwatch.com/", + country: "US", + platform: { + ios: + "https://itunes.apple.com/jp/app/marketwatch-news-data/id336693422?mt=8", + android: + "https://play.google.com/store/apps/details?id=com.marketwatch&hl=ja", + web: "https://www.marketwatch.com/" + } + }, + { + name: "PicoWallet", + image: "https://imgur.com/TCXOhCP.png", + description: "仮想通貨NEMウォレット", + author: "@scrpgil", + websiteUrl: "https://picowallet.net", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://app.picowallet.net/" + } + }, + { + name: "pato", + image: "https://imgur.com/9o1n9Jr.png", + description: "マッチングアプリ", + author: "kineca", + websiteUrl: "https://pato.today/", + country: "JP", + platform: { + ios: "", + android: + "https://play.google.com/store/apps/details?id=jp.hikaruyamamoto.pato", + web: "https://pato.today/web/" + } + }, + { + name: "noel", + image: "https://imgur.com/fsQLTwG.png", + description: "女性向けニュースアプリ", + author: "mostyplace", + websiteUrl: "https://noel-media.jp/", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/noel-%E3%83%8E%E3%82%A8%E3%83%AB-%E5%A5%B3%E6%80%A7%E5%90%91%E3%81%91%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2/id1447207168", + android: + "https://play.google.com/store/apps/details?id=jp.mostyplace.noel", + web: "https://noel-media.jp/" + } + }, + { + name: "paddy67", + image: "https://imgur.com/LDJHu02.png", + description: "マッチングアプリ", + author: "paddy67", + websiteUrl: "https://paddy67.today/", + country: "JP", + platform: { + ios: "", + android: + "https://play.google.com/store/apps/details?id=jp.jun.yoshida.paddy&hl=ja", + web: "https://paddy67.today/web/" + } + }, + { + name: "Tsundoku", + description: "読書管理アプリ", + author: "@0918nobita", + websiteUrl: "https://tsundoku.tech/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://tsundoku.tech/" + } + }, + { + name: "都市経営プロフェッショナルスクール", + image: "https://imgur.com/N5xBDKK.png", + description: "公式サイト", + author: "@rdlabo", + websiteUrl: "https://www.ppp-ps.net/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://www.ppp-ps.net/" + } + }, + { + name: "rabify公式サイト", + description: "公式サイト", + author: "@rdlabo", + websiteUrl: "https://www.rabify.me/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://www.rabify.me/" + } + }, + { + name: "rdlabo公式サイト", + description: "公式サイト", + author: "@rdlabo", + websiteUrl: "https://www.rdlabo.jp/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://www.rdlabo.jp/" + } + }, + { + name: "AAHub", + image: "https://imgur.com/8LqMpdf.png", + description: "アスキーアート まとめサイト", + author: "@scrpgil", + websiteUrl: "https://aahub.org", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://aahub.org" + } + }, + { + name: "AA箱", + image: "https://imgur.com/ZUJPnbw.png", + description: "アスキーアート 投稿サイト", + author: "@scrpgil", + websiteUrl: "https://b.aahub.org", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://b.aahub.org" + } + }, + { + name: "AAHub Fonts", + description: "AA用フォントまとめサイト", + author: "@scrpgil", + websiteUrl: "https://fonts.aahub.org", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://fonts.aahub.org" + } + }, + { + name: "アイテマス", + image: "https://imgur.com/5iklPGB.png", + description: "日程調整アプリ", + author: "@__shinji__", + websiteUrl: "https://aitemasu.me/", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/%E3%82%A2%E3%82%A4%E3%83%86%E3%83%9E%E3%82%B9-%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-%E6%97%A5%E7%A8%8B%E8%AA%BF%E6%95%B4%E3%82%A2%E3%83%97%E3%83%AA/id1439282801?mt=8", + android: "https://play.google.com/store/apps/details?id=me.aitemasu.app", + web: "https://app.aitemasu.me/index" + } + }, + { + name: "RIGHTS", + image: "https://imgur.com/bTR8L3P.png", + description: "アイドルのカード購入サイト", + author: "@biga816", + websiteUrl: "https://demo.rights-dapp.net", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://demo.rights-dapp.net/" + } + }, + { + name: "三井住友銀行", + image: "/assets/images/smbc.png", + description: "三井住友銀行アプリ", + author: "三井住友銀行", + websiteUrl: "https://www.smbc.co.jp/", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/%E4%B8%89%E4%BA%95%E4%BD%8F%E5%8F%8B%E9%8A%80%E8%A1%8C%E3%82%A2%E3%83%97%E3%83%AA/id594457652?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.co.smbc.direct&hl=ja", + web: "" + } + }, + { + name: "nempass", + description: "NEMを使ったチケット管理demo", + author: "@scrpgil", + websiteUrl: "https://nempass.com/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://nempass.com/" + } + }, + { + name: "nem-p2p", + description: "NEMを使ったファイル保存システム", + author: "@scrpgil", + websiteUrl: "http://p2p.nempass.com/", + country: "JP", + platform: { + ios: "", + android: "", + web: "http://p2p.nempass.com/" + } + }, + { + name: "33Tab ミミタブ", + image: "https://imgur.com/17BqS8b.png", + description: "音声ARアプリ", + author: "Hakuhodo DY media partners Inc.", + websiteUrl: "https://33tab.jp/", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/33tab-%E3%83%9F%E3%83%9F%E3%82%BF%E3%83%96-%E9%9F%B3%E5%A3%B0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%A2%E3%83%97%E3%83%AA/id1435718418?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.co.hakuhodody_media.mimitab", + web: "" + } + }, + { + name: "みんなで地図", + description: "みんなで地図が作れるアプリ", + author: "@minnanochizu", + websiteUrl: "https://mchizu.tabiji.life/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://mchizu.tabiji.life/" + } + }, + { + name: "ホッピングリンク", + description: "地元応援・地域情報アプリ", + author: "ホッピングリンク", + websiteUrl: "https://hopping.link/", + country: "JP", + platform: { + ios: "https://itunes.apple.com/jp/app/id1394432726?mt=8", + android: "https://play.google.com/store/apps/details?id=jp.webta.hopping", + web: "" + } + }, + { + name: "dately", + description: "マッチングアプリ", + author: "STRACT, Inc.", + websiteUrl: "http://dately.jp/", + country: "JP", + platform: { + ios: "", + android: "", + web: "" + } + }, + { + name: "Payke 日本でのショッピング・旅行を楽しく、便利に", + description: "外国人観光客向けアプリ", + author: "Payke ", + websiteUrl: "https://payke.co.jp/", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/payke!/id1040452788?mt=8&ign-mpt=uo%3D4", + android: + "https://play.google.com/store/apps/details?id=jp.co.payke.Payke1&hl=ja", + web: "" + } + }, + { + name: "Workoutholic", + description: "筋トレ管理アプリ", + author: "Workoutholic", + websiteUrl: "", + country: "JP", + platform: { + ios: "https://itunes.apple.com/us/app/workoutholic/id1276603791?mt=8", + android: "", + web: "" + } + }, + { + name: "イカすロット for Splatoon2", + description: + "スプラトゥーンっていうゲームの使用武器をランダムに選んでワイワイするツール", + author: "shinya saiho", + websiteUrl: "", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/%E3%82%A4%E3%82%AB%E3%81%99%E3%83%AD%E3%83%83%E3%83%88-for-splatoon2/id1327350262?mt=8", + android: "", + web: "" + } + }, + { + name: "iChain", + image: "https://imgur.com/IKHG8Kt.png", + description: "保険管理アプリ", + author: "iChain", + websiteUrl: "https://www.ichain.co.jp/", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/ichain%E4%BF%9D%E9%99%BA%E3%82%A6%E3%82%A9%E3%83%AC%E3%83%83%E3%83%88/id1383149670?l=ja&ls=1&mt=8", + android: + "https://play.google.com/store/apps/details?id=com.love.ichain&hl=ja", + web: "" + } + }, + { + name: "Petit Clothes", + description: "プチプラファッションのコーディネートアプリ", + author: "chiaki", + websiteUrl: "https://chiilog.com/2018/03/19/925/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://petit.clothlog.com/#/home" + } + }, + { + name: "Meily", + image: "https://imgur.com/QX9cfXh.png", + description: "美容医療・整形SNSアプリ", + author: "株式会社Meily", + websiteUrl: "https://about.meily.co.jp/about/", + country: "JP", + platform: { + ios: "https://itunes.apple.com/jp/app/id1348238335?mt=8", + android: "", + web: "" + } + }, + { + name: "イイコトイウネエ", + image: "https://imgur.com/Am6VVic.png", + description: "名言シェアアプリ", + author: "@kenishhhhh", + websiteUrl: "", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/%E3%82%A4%E3%82%A4%E3%82%B3%E3%83%88%E3%82%A4%E3%82%A6%E3%83%8D%E3%82%A8/id1450746419?mt=8", + android: "", + web: "" + } + }, + { + name: "非常時持ち出し備品", + description: "非常時に持ち出すリスト", + author: "@maki_saki", + websiteUrl: "https://saigai.netlify.com/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://saigai.netlify.com/" + } + }, + { + name: "e-建築用語集", + description: "建築用語集", + author: "SOGO SHIKAKU CO., LTD.", + websiteUrl: "", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/e-%E5%BB%BA%E7%AF%89%E7%94%A8%E8%AA%9E%E9%9B%86/id850287060?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.co.shikaku.android.glossary", + web: "" + } + }, + { + name: "ホテルストリートビュー", + description: "ホテルのストリートビュー", + author: "@a_zumii", + websiteUrl: "https://twitter.com/a_zumii/status/977330695088435200", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://hotelstreetview.netlify.com/#/home" + } + }, + { + name: "levelup", + description: "RPGアプリっぽいのをIonicのデモとしてつくりまし", + author: "@rdlabo", + websiteUrl: "https://twitter.com/rdlabo/status/976333215290937344", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://levelup.netlify.com/" + } + }, + { + name: "gamers' planet", + description: "機械学習によるゲームの予測スコア提供アプリ", + author: "@i_terashima", + websiteUrl: "https://twitter.com/i_terashima/status/973457912088547328", + country: "JP", + platform: { + ios: "", + android: "https://play.google.com/store/apps/details?id=io.iterashima.gp", + web: "" + } + }, + { + name: "ホウビンゴ", + image: "/assets/images/houbingo.png", + description: "タスクアプリ", + author: "@maki_saki", + websiteUrl: "https://houbingo.com/", + country: "JP", + platform: { + ios: "", + android: + "https://play.google.com/store/apps/details?id=com.houbingo&rdid=com.houbingo", + web: "https://app.houbingo.com/" + } + }, + { + name: "ゲーマガ", + image: "/assets/images/gamaga.png", + description: "ゲームマガジンのアプリ", + author: "株式会社バカー", + websiteUrl: "https://gamemaga.denfaminicogamer.jp/", + country: "JP", + platform: { + ios: "", + android: + "https://play.google.com/store/apps/details?id=jp.co.dwango.gamemaga&hl=ja&rdid=jp.co.dwango.gamemaga", + web: "" + } + }, + { + name: "Altafonte Back Office 4", + description: "バックオフィス管理ツール", + author: "altafonte", + websiteUrl: "https://altafonte.com/", + country: "ES", + platform: { + ios: "", + android: "", + web: "https://backoffice.altafonte.com/login" + } + }, + { + name: "الوپیک - سامانه حمل و نقل آنلاین‎", + description: "イランで第1位のオンデマンド配達および輸送サービス", + author: "ALOPEYK LTD", + websiteUrl: "https://dashboard.alopeyk.com/#", + country: "IR", + platform: { + ios: "", + android: "", + web: "" + } + }, + { + name: "betshah", + description: "オンラインカジノ", + author: "betshah", + websiteUrl: "http://endlessaisle.eat.aceturtle.in/", + country: "CW", + platform: { + ios: "", + android: "", + web: "http://beta.betshah.com/" + } + }, + { + name: "Go Ranger", + description: "ポケモンGoのコンパニオンアプリ", + author: "Matt\tKremer ", + websiteUrl: + "https://blog.ionicframework.com/how-i-built-launched-an-app-in-2-weeks-to-40000-users-with-ionic/", + country: "US", + platform: { + ios: "https://itunes.apple.com/us/app/go-ranger/id1415152537", + android: + "https://play.google.com/store/apps/details?id=app.goranger.android", + web: "https://goranger.app/" + } + }, + { + name: "IdentiDog", + description: "Azureを使った犬種識別アプリのデモ", + author: "@Justinwillis96", + websiteUrl: "", + country: "US", + platform: { + ios: "", + android: "", + web: "https://github.com/jgw96/IdentiDog" + } + }, + { + name: "eventOne", + description: "イベント管理アプリ", + author: "eventOne", + websiteUrl: "https://event1.io/app", + country: "US", + platform: { + ios: "https://play.google.com/store/apps/details?id=io.event1.shared", + android: "https://play.google.com/store/apps/details?id=io.event1.shared", + web: "" + } + }, + { + name: "DiegY", + description: "Elm + GraphQL+ Yelpのデモアプリ", + author: "@ciekawy", + websiteUrl: "", + country: "US", + platform: { + ios: "", + android: "", + web: "https://diegy.gitlab.io/" + } + }, + { + name: "俺の嫁が可愛い", + description: "嫁や彼女の惚気投稿をするサイト", + author: "@maki_saki", + websiteUrl: "", + country: "JP", + platform: { + ios: "https://itunes.apple.com/us/app//id1261036550?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.rdlabo.orenoyome&hl=ja", + web: "" + } + }, + { + name: "Area Innovation Review", + image: "/assets/images/area_innovation_review.png", + description: "まちを本気で変える人のためのWebマガジン", + author: "AreaInnovationAlliance, Inc", + websiteUrl: "http://air.areaia.jp/", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/areainnovationreview/id1247339173?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.areaia.areainnovationreview&rdid=jp.areaia.areainnovationreview", + web: "https://air2.areaia.jp/main/article/list" + } + }, + { + name: "ししゃモバ SHISHAMO公式アプリ", + image: "/assets/images/shishamo.png", + description: + "3ピースロックバンド「SHISHAMO」の公式アプリ(通称「ししゃモバ」)", + author: "CRAYON Inc.", + websiteUrl: "https://c-rayon.com/shishamo/app/index.html", + country: "JP", + platform: { + ios: "https://itunes.apple.com/jp/app/id1440170137", + android: + "https://play.google.com/store/apps/details?id=com.c_rayon.shishamo", + web: "" + } + }, + { + name: "HouseGate", + image: "/assets/images/housegate.png", + description: "業者と施主をつなぐ施工管理アプリ", + author: "TwoGate inc.", + websiteUrl: "https://housegate.jp/", + country: "JP", + platform: { + ios: "https://itunes.apple.com/jp/app/house-gate/id1258061724", + android: "https://play.google.com/store/apps/details?id=jp.housegate.app", + web: "https://app.housegate.jp" + } + }, + { + name: "攻略アプリ〜逆転の書〜 for 逆転オセロニア", + image: "", + description: "大人気ゲーム「逆転オセロニア」の攻略アプリです。", + author: "ICS INC.", + websiteUrl: "", + country: "JP", + platform: { + ios: + "https://itunes.apple.com/jp/app/%E6%94%BB%E7%95%A5%E3%82%A2%E3%83%97%E3%83%AA-%E9%80%86%E8%BB%A2%E3%81%AE%E6%9B%B8-for-%E9%80%86%E8%BB%A2%E3%82%AA%E3%82%BB%E3%83%AD%E3%83%8B%E3%82%A2/id1149258978?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.icsweb.othelloniastrategy&hl=ja", + web: "" + } + }, + { + name: "バイトアプリ「an」", + image: "/assets/images/an.jpg", + description: "自分にピッタリなバイトを探せるアプリ", + author: "PERSOL CAREER CO., LTD.", + websiteUrl: "https://weban.jp/contents/c/smartphone_apri/", + country: "JP", + platform: { + ios: "https://itunes.apple.com/app/id543829599?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.weban.anapp&hl=ja", + web: "" + } + }, + { + name: "web-whiteboard", + image: "/assets/images/web-whiteboard.png", + description: "Ionicµsoftgraphで作られたホワイトボード", + author: "@Justinwillis96", + websiteUrl: "https://github.com/jgw96/web-whiteboard", + country: "US", + platform: { + ios: "", + android: "", + web: "https://webboard-app.web.app/" + } + }, + { + name: "はたらく言葉たちジェネレーター", + image: "/assets/images/hatakoto.png", + description: "某つり革広告のジェネレーター", + author: "@scrpgil", + websiteUrl: "https://mobile.twitter.com/scrpgil/status/1138631892108947456", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://hatakoto.senju.dev/" + } + }, + { + name: "金町の北上で幻魔大戦を叫んだけもの", + image: "/assets/images/kanamachi-genma-taisen.png", + description: "スマホ対応の幻魔大戦ブログ", + author: "WO8TimeSpace175ZERO2", + websiteUrl: + "https://github.com/WO8TimeSpace175ZERO2/genma-taisen-to-the-north-of-kanamachi", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://eager-kilby-e6c21f.netlify.com/" + } + }, + { + name: "広島の謎1 宮島の謎", + image: "/assets/images/mistery-of-hiroshima.png", + description: "1本ずつ広島の全貌を解き明かしていくシリーズアプリ", + author: "峰山進", + websiteUrl: "https://rakunet.org/nazo/", + country: "JP", + platform: { + ios: "https://apps.apple.com/jp/app/mistery-of-hiroshima-1/id1481022754", + android: + "https://play.google.com/store/apps/details?id=org.rakunet.nazo1", + web: "https://rakunet.org/nazo/" + } + }, + { + name: "日本酒ゴーアラウンド大阪 2019 公式サイト", + image: "", + description: "毎年10月1日に行われる日本酒イベントのサイト", + author: "タダフラ", + websiteUrl: "https://nga-osaka.com", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://nga-osaka.com" + } + }, + { + name: "性活カレンダー", + image: "/assets/images/hCalendar.jpeg", + description: "パートナーとの営みをカレンダーで記録", + author: "Gento", + websiteUrl: "", + country: "JP", + platform: { + ios: "https://apps.apple.com/jp/app/性活カレンダー/id1484151444?mt=8", + android: + "https://play.google.com/store/apps/details?id=com.hCalendar.app", + web: "" + } + }, + { + name: "Developers.IO CAFE", + image: "", + description: "キャッシュレスカフェアプリ", + author: "クラスメソッド株式会社", + websiteUrl: "https://cafe.classmethod.jp/", + country: "JP", + platform: { + ios: "", + android: "", + web: "https://sprout.devio.jp/" + } + }, + { + name: "週末モデル", + image: "", + description: "副業モデル活動を支援アプリ", + author: "株式会社MONOKROM", + websiteUrl: "https://weekend-model.com/", + country: "JP", + platform: { + ios: "https://itunes.apple.com/jp/app/id1284035393?mt=8", + android: + "https://play.google.com/store/apps/details?id=jp.monokrom.wemodel.android", + web: "" + } + } +]; diff --git a/stencil.config.ts b/stencil.config.ts index 3c38904..b51cd68 100644 --- a/stencil.config.ts +++ b/stencil.config.ts @@ -5,12 +5,15 @@ import { sass } from "@stencil/sass"; export const config: Config = { plugins: [sass()], + globalScript: "src/global/app.ts", + globalStyle: "src/global/app.scss", + taskQueue: "async", outputTargets: [ { type: "www", - serviceWorker: null + serviceWorker: null, + prerenderConfig: "./prerender.config.ts", + baseUrl: "https://capacitorjs.com/" } - ], - globalScript: "src/global/app.ts", - globalStyle: "src/global/app.scss" + ] }; diff --git a/tsconfig.json b/tsconfig.json index 09367ce..e7ca22a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,8 @@ "noUnusedLocals": true, "noUnusedParameters": true, "jsx": "react", - "jsxFactory": "h" + "jsxFactory": "h", + "resolveJsonModule": true }, "include": [ "src"