From 35d7e1b32e1ffd34f0b0a30e79b8b0e9d3703e12 Mon Sep 17 00:00:00 2001 From: NBTX Date: Sat, 24 Aug 2019 15:51:03 +0100 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=94=8C=20Add=20websocket=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/styles.scss | 11 +- layouts/default.vue | 47 +++++++++ pages/index.vue | 2 +- pages/websocket.vue | 225 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 282 insertions(+), 3 deletions(-) create mode 100644 pages/websocket.vue diff --git a/assets/css/styles.scss b/assets/css/styles.scss index ed3e08281..05e894ed2 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -70,6 +70,12 @@ footer { justify-content: space-between; } +nav { + a:not(:last-of-type) { + margin-right: 15px; + } +} + body.sticky-footer footer { position: fixed; bottom: 0; @@ -104,7 +110,7 @@ legend { cursor: pointer; } -fieldset textarea { +fieldset textarea, fieldset pre { resize: vertical; } @@ -163,7 +169,8 @@ fieldset.response legend { select, input, option, -textarea { +textarea, +pre { margin: 4px; padding: 8px 16px; width: calc(100% - 8px); diff --git a/layouts/default.vue b/layouts/default.vue index 6a17733d9..d3f92bedc 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -7,6 +7,11 @@

Lightweight API request builder

+ + @@ -41,6 +46,43 @@ margin: 0 auto; max-width: 1200px; } + + header { padding-right: 0; } + + nav { + a { + display: inline-block; + position: relative; + padding: 8px 16px; + + &.nuxt-link-exact-active { + color: black; + &:before { width: 100%; height: 100% } + } + + &:before { + content: ""; + position: absolute; + bottom: 0; + left: 0; + right: 0; + z-index: -1; + + background-color: var(--ac-color); + border-radius: 4px; + margin: auto; + } + + &:not(.nuxt-link-exact-active):hover:before { + animation: linkHover 0.3s forwards ease-in-out; + } + + @keyframes linkHover { + 0% { width: 0; height: 2px; } + 100% { width: 100%; height: 2px; } + } + } + } From 67f0600702a7f66a62f1d6b726b5954aeba518ae Mon Sep 17 00:00:00 2001 From: NBTX Date: Sat, 24 Aug 2019 19:35:39 +0100 Subject: [PATCH 2/4] Improve mobile navigation --- assets/css/styles.scss | 16 +++++++++++++++- layouts/default.vue | 15 +++++++++++++-- pages/settings.vue | 3 +++ 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 pages/settings.vue diff --git a/assets/css/styles.scss b/assets/css/styles.scss index 05e894ed2..7aa80149a 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -5,6 +5,8 @@ --err-color: #393939; } +$responsiveWidth: 720px; + ::selection { background-color: var(--ac-color); color: var(--bg-color); @@ -70,6 +72,18 @@ footer { justify-content: space-between; } +@media(max-width: $responsiveWidth){ + header { + display: block; + text-align: center; + + nav { + display: inline-flex; + margin-top: 20px; + } + } +} + nav { a:not(:last-of-type) { margin-right: 15px; @@ -210,7 +224,7 @@ ol li { flex-grow: 1; } -@media (max-width: 720px) { +@media (max-width: $responsiveWidth) { ul, ol { diff --git a/layouts/default.vue b/layouts/default.vue index d3f92bedc..9b9fd5f12 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -11,6 +11,12 @@ @@ -47,16 +53,21 @@ max-width: 1200px; } - header { padding-right: 0; } - nav { + svg { + vertical-align: sub; + } + a { display: inline-block; position: relative; padding: 8px 16px; + fill: white; + color: white; &.nuxt-link-exact-active { color: black; + fill: black; &:before { width: 100%; height: 100% } } diff --git a/pages/settings.vue b/pages/settings.vue new file mode 100644 index 000000000..af9fa97fa --- /dev/null +++ b/pages/settings.vue @@ -0,0 +1,3 @@ + \ No newline at end of file From 02ef69f0f7190ca319d8754773b882cfe76113b2 Mon Sep 17 00:00:00 2001 From: NBTX Date: Sun, 25 Aug 2019 00:42:41 +0100 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=8E=A8=20Add=20theme=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Move root (var) style properties to `/assets/css/themes.scss` - Improve mobile navigation - Create section component for the collapsable sections. - Create logo component, so color can be changed. - Add settings page - Add option to select theme color - Add option to select theme background - Add option to enable/disable multi-colored frames. - Add settings to VueX Store - Persist VueX store in LocalStorage. --- assets/css/styles.scss | 54 +++-- assets/css/themes.scss | 39 ++++ components/logo.vue | 29 +++ components/section.vue | 47 ++++ components/settings/swatch.vue | 67 ++++++ layouts/default.vue | 36 ++- nuxt.config.js | 3 + package-lock.json | 19 ++ package.json | 3 +- pages/index.vue | 387 ++++++++++++++++----------------- pages/settings.vue | 125 ++++++++++- pages/websocket.vue | 346 ++++++++++++++--------------- plugins/vuex-persist.js | 5 + store/index.js | 3 + store/postwoman.js | 51 +++++ 15 files changed, 810 insertions(+), 404 deletions(-) create mode 100644 assets/css/themes.scss create mode 100644 components/logo.vue create mode 100644 components/section.vue create mode 100644 components/settings/swatch.vue create mode 100644 plugins/vuex-persist.js create mode 100644 store/index.js create mode 100644 store/postwoman.js diff --git a/assets/css/styles.scss b/assets/css/styles.scss index 7aa80149a..20c3c6781 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -1,15 +1,8 @@ -:root { - --bg-color: #121212; - --fg-color: #FFF; - --ac-color: #51FF0D; - --err-color: #393939; -} - $responsiveWidth: 720px; ::selection { background-color: var(--ac-color); - color: var(--bg-color); + color: var(--act-color); } ::-webkit-scrollbar { @@ -106,7 +99,7 @@ button { padding: 8px 16px; border-radius: 4px; background-color: var(--ac-color); - color: var(--bg-color); + color: var(--act-color); font-weight: 700; font-size: 16px; cursor: pointer; @@ -128,55 +121,55 @@ fieldset textarea, fieldset pre { resize: vertical; } -fieldset.request { +fieldset.blue { border-color: #57b5f9; } -fieldset.request legend { +fieldset.blue legend { color: #57b5f9; } -fieldset.history { +fieldset.gray { border-color: #9B9B9B; } -fieldset.history legend { +fieldset.gray legend { color: #9B9B9B; } -fieldset.authentication { +fieldset.green { border-color: #B8E986; } -fieldset.authentication legend { +fieldset.green legend { color: #B8E986; } -fieldset.parameters { +fieldset.cyan { border-color: #50E3C2; } -fieldset.parameters legend { +fieldset.cyan legend { color: #50E3C2; } -fieldset.reqbody { +fieldset.blue-dark { border-color: #4A90E2; } -fieldset.reqbody legend { +fieldset.blue-dark legend { color: #4A90E2; } -fieldset.response { +fieldset.purple { border-color: #C198FB; } -fieldset.response legend { +fieldset.purple legend { color: #C198FB; } -.hidden .collapsible { +.collapsible.hidden { display: none; } @@ -189,13 +182,28 @@ pre { padding: 8px 16px; width: calc(100% - 8px); border-radius: 4px; - background-color: #000; + background-color: var(--bg-dark-color); color: var(--fg-color); font-weight: 700; font-size: 18px; font-family: monospace; } +// Force the same height, for dropdowns and regular input boxes. +select, +input, +option { + height: 38px; +} + +input[type="checkbox"] { + width: initial; + + &, & + label { + vertical-align: middle; + } +} + .error { background-color: var(--err-color); } diff --git a/assets/css/themes.scss b/assets/css/themes.scss new file mode 100644 index 000000000..11606549b --- /dev/null +++ b/assets/css/themes.scss @@ -0,0 +1,39 @@ +/** + Main Themes: + + - dark (default) + - light + */ + +// Dark is the default theme variant. +:root { + --bg-dark-color: #000000; + // Background color + --bg-color: #121212; + // Text color + --fg-color: #FFF; + + // Error color + --err-color: #393939; + + // Active color + --ac-color: #51FF0D; + // Active text color + --act-color: #121212; +} + +:root.light { + --bg-dark-color: #ffffff; + // Background color + --bg-color: #F6F8FA; + // Text color + --fg-color: #121212; + + // Error color + --err-color: invert(#393939, 1); + + // Active color + --ac-color: #51FF0D; + // Active text color + --act-color: #121212; +} \ No newline at end of file diff --git a/components/logo.vue b/components/logo.vue new file mode 100644 index 000000000..d3af5f4a7 --- /dev/null +++ b/components/logo.vue @@ -0,0 +1,29 @@ + + + + + \ No newline at end of file diff --git a/components/section.vue b/components/section.vue new file mode 100644 index 000000000..4d2af5b5e --- /dev/null +++ b/components/section.vue @@ -0,0 +1,47 @@ + + + + + \ No newline at end of file diff --git a/components/settings/swatch.vue b/components/settings/swatch.vue new file mode 100644 index 000000000..262c718f2 --- /dev/null +++ b/components/settings/swatch.vue @@ -0,0 +1,67 @@ + + + + + \ No newline at end of file diff --git a/layouts/default.vue b/layouts/default.vue index 9b9fd5f12..10af963b6 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -3,7 +3,7 @@
-

Postwoman

+

Postwoman

Lightweight API request builder

@@ -23,7 +23,10 @@