diff --git a/feature-flow.css b/feature-flow.css index 96b1c02..e45b0ed 100644 --- a/feature-flow.css +++ b/feature-flow.css @@ -2,3 +2,33 @@ ul { list-style: none; padding: 0; } + +.bin { + margin-top: 1rem; + border: 3px solid var(--background-color); + color: var(--background-color); + background-color: white; + height: 62px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + font-size: 12pt; + padding: 0 0.5rem; + text-align: center; + transition-property: border, color, background-color, font-size; + transition-duration: 1s; +} + +.blue-bin { + background-color: var(--background-color); + color: white; + font-size: 18pt; +} + +.green-bin { + background-color: var(--success-color); + border: 3px solid var(--success-color); + color: white; + transition-delay: 3s; +} diff --git a/package.json b/package.json index bc9f9c4..baa54a6 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "author": "Julien Calixte ", "license": "ISC", "dependencies": { - "vue": "^3.3.4" + "vue": "^3.3.4", + "vue-starport": "^0.3.0" }, "devDependencies": { "@faker-js/faker": "^8.0.2", @@ -21,7 +22,7 @@ "@vitejs/plugin-vue": "^4.2.3", "sass": "^1.64.0", "typescript": "^5.1.6", - "vitest": "^0.33.0", - "vite": "^4.4.1" + "vite": "^4.4.1", + "vitest": "^0.33.0" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3adc174..e6cdcca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,12 +5,12 @@ settings: excludeLinksFromLockfile: false dependencies: - vite: - specifier: ^4.4.1 - version: 4.4.1(@types/node@20.4.2)(sass@1.64.0) vue: specifier: ^3.3.4 version: 3.3.4 + vue-starport: + specifier: ^0.3.0 + version: 0.3.0 devDependencies: '@faker-js/faker': @@ -28,6 +28,9 @@ devDependencies: typescript: specifier: ^5.1.6 version: 5.1.6 + vite: + specifier: ^4.4.1 + version: 4.4.1(@types/node@20.4.2)(sass@1.64.0) vitest: specifier: ^0.33.0 version: 0.33.0(sass@1.64.0) @@ -63,6 +66,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm@0.18.11: @@ -71,6 +75,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-x64@0.18.11: @@ -79,6 +84,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/darwin-arm64@0.18.11: @@ -87,6 +93,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-x64@0.18.11: @@ -95,6 +102,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-arm64@0.18.11: @@ -103,6 +111,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-x64@0.18.11: @@ -111,6 +120,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm64@0.18.11: @@ -119,6 +129,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm@0.18.11: @@ -127,6 +138,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ia32@0.18.11: @@ -135,6 +147,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.18.11: @@ -143,6 +156,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-mips64el@0.18.11: @@ -151,6 +165,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ppc64@0.18.11: @@ -159,6 +174,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-riscv64@0.18.11: @@ -167,6 +183,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-s390x@0.18.11: @@ -175,6 +192,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-x64@0.18.11: @@ -183,6 +201,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/netbsd-x64@0.18.11: @@ -191,6 +210,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true optional: true /@esbuild/openbsd-x64@0.18.11: @@ -199,6 +219,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true optional: true /@esbuild/sunos-x64@0.18.11: @@ -207,6 +228,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true optional: true /@esbuild/win32-arm64@0.18.11: @@ -215,6 +237,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-ia32@0.18.11: @@ -223,6 +246,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-x64@0.18.11: @@ -231,6 +255,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@faker-js/faker@8.0.2: @@ -264,6 +289,11 @@ packages: /@types/node@20.4.2: resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} + dev: true + + /@types/web-bluetooth@0.0.14: + resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==} + dev: false /@vitejs/plugin-vue@4.2.3(vite@4.4.1)(vue@3.3.4): resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} @@ -387,6 +417,43 @@ packages: /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + /@vueuse/core@8.9.4(vue@3.3.4): + resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + dependencies: + '@types/web-bluetooth': 0.0.14 + '@vueuse/metadata': 8.9.4 + '@vueuse/shared': 8.9.4(vue@3.3.4) + vue: 3.3.4 + vue-demi: 0.14.5(vue@3.3.4) + dev: false + + /@vueuse/metadata@8.9.4: + resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==} + dev: false + + /@vueuse/shared@8.9.4(vue@3.3.4): + resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + dependencies: + vue: 3.3.4 + vue-demi: 0.14.5(vue@3.3.4) + dev: false + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} @@ -409,6 +476,7 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: true /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} @@ -417,12 +485,14 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + dev: true /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + dev: true /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} @@ -459,6 +529,7 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 + dev: true /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -515,6 +586,7 @@ packages: '@esbuild/win32-arm64': 0.18.11 '@esbuild/win32-ia32': 0.18.11 '@esbuild/win32-x64': 0.18.11 + dev: true /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -524,12 +596,14 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + dev: true /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true optional: true /get-func-name@2.0.0: @@ -541,29 +615,35 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true /immutable@4.3.1: resolution: {integrity: sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==} + dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + dev: true /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + dev: true /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -607,6 +687,7 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + dev: true /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -629,6 +710,7 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + dev: true /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} @@ -664,6 +746,7 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true /rollup@3.26.2: resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} @@ -671,6 +754,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.2 + dev: true /sass@1.64.0: resolution: {integrity: sha512-m7YtAGmQta9uANIUJwXesAJMSncqH+3INc8kdVXs6eV6GUC8Qu2IYKQSN8PRLgiQfpca697G94klm2leYMxSHw==} @@ -680,6 +764,7 @@ packages: chokidar: 3.5.3 immutable: 4.3.1 source-map-js: 1.0.2 + dev: true /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -726,6 +811,7 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + dev: true /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} @@ -799,6 +885,7 @@ packages: sass: 1.64.0 optionalDependencies: fsevents: 2.3.2 + dev: true /vitest@0.33.0(sass@1.64.0): resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} @@ -865,6 +952,30 @@ packages: - terser dev: true + /vue-demi@0.14.5(vue@3.3.4): + resolution: {integrity: sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.4 + dev: false + + /vue-starport@0.3.0: + resolution: {integrity: sha512-CfwYVxJDFqj7zoDw0TAMdNdpefuTdUH3rtupsadSa1je5Z7S/XwUCdxN0vVjBEEvWh33HmqjdK0IRQMWDlV7VQ==} + dependencies: + '@vueuse/core': 8.9.4(vue@3.3.4) + vue: 3.3.4 + transitivePeerDependencies: + - '@vue/composition-api' + dev: false + /vue@3.3.4: resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} dependencies: diff --git a/src/App.vue b/src/App.vue index 4927b34..2c5bb4d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,10 +1,13 @@ diff --git a/src/modules/feature/FeatureStep.vue b/src/modules/feature/FeatureStep.vue index 0489789..5f337b6 100644 --- a/src/modules/feature/FeatureStep.vue +++ b/src/modules/feature/FeatureStep.vue @@ -2,6 +2,7 @@ import { Feature } from '@/modules/feature/feature' import { FeatureStep } from '@/modules/feature/feature-steps' import { computed } from 'vue' +import { Starport } from 'vue-starport' const props = defineProps<{ step: FeatureStep @@ -32,33 +33,20 @@ const isLive = computed(
📝⌛
📝✅
-
Blue bucket
+
@@ -85,6 +85,8 @@ const isLive = computed( section { margin: 1rem 0; flex: 1; + display: flex; + flex-direction: column; } h5 { @@ -94,30 +96,6 @@ const isLive = computed( text-align: center; } - .bin { - margin-top: 1rem; - border: 3px solid var(--background-color); - height: 62px; - display: flex; - justify-content: center; - align-items: center; - font-size: 12pt; - padding: 0 0.5rem; - text-align: center; - } - - .blue-bin { - background-color: var(--background-color); - color: white; - font-size: 18pt; - } - - .green-bin { - background-color: var(--success-color); - border: 3px solid var(--success-color); - color: white; - } - li { flex-direction: column; } @@ -126,5 +104,10 @@ const isLive = computed( font-family: 'Cutive Mono', monospace; font-weight: bold; } + + .done-list { + flex: 1; + overflow-y: auto; + } } diff --git a/src/modules/feature/FeatureSteps.vue b/src/modules/feature/FeatureSteps.vue index 5309a11..d6e1ce3 100644 --- a/src/modules/feature/FeatureSteps.vue +++ b/src/modules/feature/FeatureSteps.vue @@ -93,7 +93,7 @@ pre { li { flex: 1; - height: 100%; + min-height: 100%; margin: 0; color: var(--background-color); display: flex; diff --git a/src/modules/feature/feature-steps.ts b/src/modules/feature/feature-steps.ts index f7d259a..2b30f56 100644 --- a/src/modules/feature/feature-steps.ts +++ b/src/modules/feature/feature-steps.ts @@ -21,7 +21,7 @@ export const featureSteps: FeatureStep[] = [ blueBuckets: 1 }, { - title: 'Product design', + title: 'Product', stepIndex: 3, blueBuckets: 2 },