From ebcf87ea93bde882765348d0d77964d232bf0364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Fri, 23 Dec 2022 10:54:56 +0100 Subject: [PATCH] feat(wip): polish settings ui for subscriptions --- README.md | 1 + config/config.go | 1 + models/view/settings.go | 20 +++++---- routes/settings.go | 20 +++++---- routes/subscription.go | 3 +- scripts/bundle_icons.js | 1 + static/assets/css/app.dist.css | 2 +- static/assets/css/app.dist.css.br | Bin 3379 -> 3411 bytes static/assets/js/icons.dist.js | 46 ++++++++++---------- static/assets/js/icons.dist.js.br | Bin 19800 -> 19548 bytes views/settings.tpl.html | 70 ++++++++++++++++++++---------- 11 files changed, 97 insertions(+), 67 deletions(-) diff --git a/README.md b/README.md index bb3685e..36dc3a0 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,7 @@ You can specify configuration options either via a config file (default: `config | `app.heartbeat_max_age /`
`WAKAPI_HEARTBEAT_MAX_AGE` | `4320h` | Maximum acceptable age of a heartbeat (see [`ParseDuration`](https://pkg.go.dev/time#ParseDuration)) | | `app.custom_languages` | - | Map from file endings to language names | | `app.avatar_url_template` /
`WAKAPI_AVATAR_URL_TEMPLATE` | (see [`config.default.yml`](config.default.yml)) | URL template for external user avatar images (e.g. from [Dicebear](https://dicebear.com) or [Gravatar](https://gravatar.com)) | +| `app.support_contact` /
`WAKAPI_SUPPORT_CONTACT` | `hostmaster@wakapi.dev` | E-Mail address to display as a support contact on the page | | `server.port` /
`WAKAPI_PORT` | `3000` | Port to listen on | | `server.listen_ipv4` /
`WAKAPI_LISTEN_IPV4` | `127.0.0.1` | IPv4 network address to listen on (leave blank to disable IPv4) | | `server.listen_ipv6` /
`WAKAPI_LISTEN_IPV6` | `::1` | IPv6 network address to listen on (leave blank to disable IPv6) | diff --git a/config/config.go b/config/config.go index 14c15d9..616b8e3 100644 --- a/config/config.go +++ b/config/config.go @@ -79,6 +79,7 @@ type appConfig struct { CountCacheTTLMin int `yaml:"count_cache_ttl_min" default:"30" env:"WAKAPI_COUNT_CACHE_TTL_MIN"` DataRetentionMonths int `yaml:"data_retention_months" default:"-1" env:"WAKAPI_DATA_RETENTION_MONTHS"` AvatarURLTemplate string `yaml:"avatar_url_template" default:"api/avatar/{username_hash}.svg" env:"WAKAPI_AVATAR_URL_TEMPLATE"` + SupportContact string `yaml:"support_contact" default:"hostmaster@wakapi.dev" env:"WAKAPI_SUPPORT_CONTACT"` CustomLanguages map[string]string `yaml:"custom_languages"` Colors map[string]map[string]string `yaml:"-"` } diff --git a/models/view/settings.go b/models/view/settings.go index 314abdb..d0430b2 100644 --- a/models/view/settings.go +++ b/models/view/settings.go @@ -3,15 +3,17 @@ package view import "github.com/muety/wakapi/models" type SettingsViewModel struct { - User *models.User - LanguageMappings []*models.LanguageMapping - Aliases []*SettingsVMCombinedAlias - Labels []*SettingsVMCombinedLabel - Projects []string - SubscriptionPrice string - ApiKey string - Success string - Error string + User *models.User + LanguageMappings []*models.LanguageMapping + Aliases []*SettingsVMCombinedAlias + Labels []*SettingsVMCombinedLabel + Projects []string + SubscriptionPrice string + DataRetentionMonths int + SupportContact string + ApiKey string + Success string + Error string } type SettingsVMCombinedAlias struct { diff --git a/routes/settings.go b/routes/settings.go index d6d47e4..82c8ef1 100644 --- a/routes/settings.go +++ b/routes/settings.go @@ -740,14 +740,16 @@ func (h *SettingsHandler) buildViewModel(r *http.Request) *view.SettingsViewMode } return &view.SettingsViewModel{ - User: user, - LanguageMappings: mappings, - Aliases: combinedAliases, - Labels: combinedLabels, - Projects: projects, - ApiKey: user.ApiKey, - SubscriptionPrice: subscriptionPrice, - Success: r.URL.Query().Get("success"), - Error: r.URL.Query().Get("error"), + User: user, + LanguageMappings: mappings, + Aliases: combinedAliases, + Labels: combinedLabels, + Projects: projects, + ApiKey: user.ApiKey, + SubscriptionPrice: subscriptionPrice, + SupportContact: h.config.App.SupportContact, + DataRetentionMonths: h.config.App.DataRetentionMonths, + Success: r.URL.Query().Get("success"), + Error: r.URL.Query().Get("error"), } } diff --git a/routes/subscription.go b/routes/subscription.go index ce72d2a..f694713 100644 --- a/routes/subscription.go +++ b/routes/subscription.go @@ -18,6 +18,7 @@ import ( "github.com/stripe/stripe-go/v74/webhook" "io/ioutil" "net/http" + "strings" "time" ) @@ -41,7 +42,7 @@ func NewSubscriptionHandler( if err != nil { logbuch.Fatal("failed to fetch stripe plan details: %v", err) } - config.Subscriptions.StandardPrice = fmt.Sprintf("%2.f €", price.UnitAmountDecimal/100.0) // TODO: respect actual currency + config.Subscriptions.StandardPrice = strings.TrimSpace(fmt.Sprintf("%2.f €", price.UnitAmountDecimal/100.0)) // TODO: respect actual currency logbuch.Info("enabling subscriptions with stripe payment for %s / month", config.Subscriptions.StandardPrice) } diff --git a/scripts/bundle_icons.js b/scripts/bundle_icons.js index 5b60ee8..97c5ef4 100755 --- a/scripts/bundle_icons.js +++ b/scripts/bundle_icons.js @@ -77,6 +77,7 @@ let icons = [ 'mdi:code-json', 'mdi:bash', 'twemoji:frowning-face', + 'ci:dot-03-m' ] const output = path.normalize(path.join(__dirname, '../static/assets/js/icons.dist.js')) diff --git a/static/assets/css/app.dist.css b/static/assets/css/app.dist.css index dbe5fa0..0d42a2d 100644 --- a/static/assets/css/app.dist.css +++ b/static/assets/css/app.dist.css @@ -1 +1 @@ -/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.right-0{right:0}.z-10{z-index:10}.row-span-2{grid-row:span 2/span 2}.float-right{float:right}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mt-16{margin-top:4rem}.mt-20{margin-top:5rem}.mb-10{margin-bottom:2.5rem}.mt-10{margin-top:2.5rem}.mb-14{margin-bottom:3.5rem}.-mt-4{margin-top:-1rem}.mt-8{margin-top:2rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.mt-4{margin-top:1rem}.mt-12{margin-top:3rem}.mb-8{margin-bottom:2rem}.mr-1{margin-right:.25rem}.mr-4{margin-right:1rem}.mr-8{margin-right:2rem}.mb-16{margin-bottom:4rem}.ml-4{margin-left:1rem}.-ml-1{margin-left:-.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mt-6{margin-top:1.5rem}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.-mb-1{margin-bottom:-.25rem}.ml-2{margin-left:.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-full{width:100%}.w-1\/12{width:8.333333%}.w-3\/12{width:25%}.w-5\/12{width:41.666667%}.w-1\/2{width:50%}.w-4{width:1rem}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-40{width:10rem}.w-12{width:3rem}.max-w-lg{max-width:32rem}.max-w-screen-lg{max-width:1024px}.max-w-4xl{max-width:56rem}.max-w-screen-xl{max-width:1280px}.max-w-screen-sm{max-width:640px}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-6{row-gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-green-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.p-4{padding:1rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-8{padding-left:2rem;padding-right:2rem}.pt-10{padding-top:2.5rem}.pt-8{padding-top:2rem}.pb-10{padding-bottom:2.5rem}.pb-4{padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-8xl{font-size:6rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.leading-snug{line-height:1.375}.leading-none{line-height:1}.leading-6{line-height:1.5rem}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.outline-none{outline:2px solid #0000;outline-offset:2px}body{font-family:Source Sans\ 3,Roboto,Helvetica Neue,Helvetica,Arial,sans-serif}[v-cloak]{display:none}.bg-gray-850{background-color:#242b3a}.hover\:bg-gray-850:hover{--bg-opacity:1;background-color:#242b3a}.text-xxs{font-size:.65rem}.mt-14{margin-top:3.5rem}.text-7xl{font-size:4.5rem;line-height:1.1}.text-8xl{font-size:5rem;line-height:1.1}.imp\:cursor-not-allowed{cursor:not-allowed!important}.h1{margin:0;font-size:1.875rem;line-height:2.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.h1-subcaption{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.btn-default{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-default:hover{--bg-opacity:1;background-color:#242b3a}.btn-disabled{background-color:rgb(31 41 55/var(--tw-bg-opacity));color:rgb(75 85 99/var(--tw-text-opacity))}.btn-disabled,.btn-primary{border-radius:.25rem;--tw-bg-opacity:1;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1}.btn-primary{background-color:rgb(4 120 87/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.btn-danger{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-danger:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.btn-small{padding:.25rem .5rem}.input-default{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px;background-color:#242b3a}.input-default:focus{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.select-default{cursor:pointer;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px;background-color:#242b3a}.select-default:focus{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.menu-item{display:flex;cursor:pointer;align-items:center}.menu-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.menu-item{border-radius:.25rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.menu-item:hover{--bg-opacity:1;background-color:#242b3a}.submenu-item{border-radius:.25rem;padding:.25rem;text-align:right}.submenu-item:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.chip{margin-bottom:.25rem;display:inline-block;border-radius:.25rem;border-radius:9999px;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;background-color:#242b3a}.chip,.link{font-weight:600}.link{color:rgb(156 163 175/var(--tw-text-opacity))}.link,.link:hover{--tw-text-opacity:1}.link:hover{color:rgb(209 213 219/var(--tw-text-opacity))}.newsbox{border-radius:.375rem;border-width:2px;--tw-border-opacity:1;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));background-color:#242b3a}.newsbox,.newsbox-default{border-color:rgb(4 120 87/var(--tw-border-opacity))}.newsbox-default,.newsbox-warning{--tw-border-opacity:1}.newsbox-warning{border-color:rgb(202 138 4/var(--tw-border-opacity))}.newsbox-danger{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.leaderboard-default{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.leaderboard-self{margin-left:-10px;margin-right:-10px;padding-left:calc(1rem + 10px);padding-right:calc(1rem + 10px);--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.leaderboard-gold{border-color:gold}.leaderboard-silver{border-color:silver}.leaderboard-bronze{border-color:#cd7f32}::-webkit-calendar-picker-indicator{filter:invert(1);cursor:pointer}.max-available{max-width:-moz-available;max-width:-webkit-fill-available;max-width:fill-available}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.focus\:bg-gray-800:focus{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}@media (min-width:640px){.sm\:flex{display:flex}}@media (min-width:768px){.md\:mb-0{margin-bottom:0}.md\:flex{display:flex}.md\:w-3\/4{width:75%}.md\:w-1\/3{width:33.333333%}.md\:w-2\/3{width:66.666667%}.md\:w-1\/2{width:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-nowrap{flex-wrap:nowrap}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}}@media (min-width:1024px){.lg\:inline-block{display:inline-block}.lg\:w-3\/4{width:75%}.lg\:px-24{padding-left:6rem;padding-right:6rem}} \ No newline at end of file +/*! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.right-0{right:0}.z-10{z-index:10}.row-span-2{grid-row:span 2/span 2}.float-right{float:right}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mt-16{margin-top:4rem}.mt-20{margin-top:5rem}.mb-10{margin-bottom:2.5rem}.mt-10{margin-top:2.5rem}.mb-14{margin-bottom:3.5rem}.-mt-4{margin-top:-1rem}.mt-8{margin-top:2rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.mt-4{margin-top:1rem}.mt-12{margin-top:3rem}.mb-8{margin-bottom:2rem}.mr-1{margin-right:.25rem}.mr-4{margin-right:1rem}.mr-8{margin-right:2rem}.mb-16{margin-bottom:4rem}.ml-4{margin-left:1rem}.-ml-1{margin-left:-.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mt-6{margin-top:1.5rem}.mb-2{margin-bottom:.5rem}.mt-1{margin-top:.25rem}.-mb-1{margin-bottom:-.25rem}.ml-2{margin-left:.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-full{width:100%}.w-1\/12{width:8.333333%}.w-3\/12{width:25%}.w-5\/12{width:41.666667%}.w-1\/2{width:50%}.w-4{width:1rem}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-40{width:10rem}.w-12{width:3rem}.max-w-lg{max-width:32rem}.max-w-screen-lg{max-width:1024px}.max-w-4xl{max-width:56rem}.max-w-screen-xl{max-width:1280px}.max-w-screen-sm{max-width:640px}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-6{row-gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.border-green-700{--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.p-4{padding:1rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-8{padding-left:2rem;padding-right:2rem}.pt-10{padding-top:2.5rem}.pt-8{padding-top:2rem}.pb-10{padding-bottom:2.5rem}.pb-4{padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-8xl{font-size:6rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.leading-snug{line-height:1.375}.leading-none{line-height:1}.leading-6{line-height:1.5rem}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}body{font-family:Source Sans\ 3,Roboto,Helvetica Neue,Helvetica,Arial,sans-serif}[v-cloak]{display:none}.bg-gray-850{background-color:#242b3a}.hover\:bg-gray-850:hover{--bg-opacity:1;background-color:#242b3a}.text-xxs{font-size:.65rem}.mt-14{margin-top:3.5rem}.text-7xl{font-size:4.5rem;line-height:1.1}.text-8xl{font-size:5rem;line-height:1.1}.imp\:cursor-not-allowed{cursor:not-allowed!important}.h1{margin:0;font-size:1.875rem;line-height:2.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.h1-subcaption{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.btn-default{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-default:hover{--bg-opacity:1;background-color:#242b3a}.btn-disabled{background-color:rgb(31 41 55/var(--tw-bg-opacity));color:rgb(75 85 99/var(--tw-text-opacity))}.btn-disabled,.btn-primary{border-radius:.25rem;--tw-bg-opacity:1;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1}.btn-primary{background-color:rgb(4 120 87/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.btn-danger{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-danger:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.btn-small{padding:.25rem .5rem}.input-default{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px;background-color:#242b3a}.input-default:focus{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.select-default{cursor:pointer;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px;background-color:#242b3a}.select-default:focus{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.menu-item{display:flex;cursor:pointer;align-items:center}.menu-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.menu-item{border-radius:.25rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.menu-item:hover{--bg-opacity:1;background-color:#242b3a}.submenu-item{border-radius:.25rem;padding:.25rem;text-align:right}.submenu-item:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.chip{margin-bottom:.25rem;display:inline-block;border-radius:.25rem;border-radius:9999px;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;background-color:#242b3a}.chip,.link{font-weight:600}.link{color:rgb(156 163 175/var(--tw-text-opacity))}.link,.link:hover{--tw-text-opacity:1}.link:hover{color:rgb(209 213 219/var(--tw-text-opacity))}.newsbox{border-radius:.375rem;border-width:2px;--tw-border-opacity:1;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));background-color:#242b3a}.newsbox,.newsbox-default{border-color:rgb(4 120 87/var(--tw-border-opacity))}.newsbox-default,.newsbox-warning{--tw-border-opacity:1}.newsbox-warning{border-color:rgb(202 138 4/var(--tw-border-opacity))}.newsbox-danger{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.leaderboard-default{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.leaderboard-self{margin-left:-10px;margin-right:-10px;padding-left:calc(1rem + 10px);padding-right:calc(1rem + 10px);--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.leaderboard-gold{border-color:gold}.leaderboard-silver{border-color:silver}.leaderboard-bronze{border-color:#cd7f32}::-webkit-calendar-picker-indicator{filter:invert(1);cursor:pointer}.max-available{max-width:-moz-available;max-width:-webkit-fill-available;max-width:fill-available}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.focus\:bg-gray-800:focus{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}@media (min-width:640px){.sm\:flex{display:flex}}@media (min-width:768px){.md\:mb-0{margin-bottom:0}.md\:flex{display:flex}.md\:w-3\/4{width:75%}.md\:w-1\/3{width:33.333333%}.md\:w-2\/3{width:66.666667%}.md\:w-1\/2{width:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-nowrap{flex-wrap:nowrap}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}}@media (min-width:1024px){.lg\:inline-block{display:inline-block}.lg\:w-3\/4{width:75%}.lg\:w-1\/2{width:50%}.lg\:px-24{padding-left:6rem;padding-right:6rem}} \ No newline at end of file diff --git a/static/assets/css/app.dist.css.br b/static/assets/css/app.dist.css.br index 6536ed600991c39d1bf1fa32db817a3972cdc6e3..eaecea1ecdd845c260e1310a1611aee18796c74b 100644 GIT binary patch literal 3411 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 JL(j-H$Q8z$zzqNZ diff --git a/static/assets/js/icons.dist.js b/static/assets/js/icons.dist.js index 96668ca..f1c35d5 100644 --- a/static/assets/js/icons.dist.js +++ b/static/assets/js/icons.dist.js @@ -1,23 +1,23 @@ -Iconify.addCollection({"prefix":"fxemoji","icons":{"key":{"body":""},"rocket":{"body":""},"satelliteantenna":{"body":""},"lockandkey":{"body":""},"clipboard":{"body":""},"running":{"body":""}},"lastModified":1656182158,"width":512,"height":512}); -Iconify.addCollection({"prefix":"flat-color-icons","icons":{"donate":{"body":""},"clock":{"body":""}},"lastModified":1656182045,"width":48,"height":48}); -Iconify.addCollection({"prefix":"codicon","icons":{"github-inverted":{"body":""}},"lastModified":1664948546}); -Iconify.addCollection({"prefix":"ant-design","icons":{"check-square-filled":{"body":""}},"lastModified":1656181339,"width":1024,"height":1024}); -Iconify.addCollection({"prefix":"emojione-v1","icons":{"white-heavy-check-mark":{"body":""},"alarm-clock":{"body":""},"warning":{"body":""},"backhand-index-pointing-right":{"body":""}},"lastModified":1656181746,"width":64,"height":64}); -Iconify.addCollection({"prefix":"twemoji","icons":{"light-bulb":{"body":""},"gear":{"body":""},"frowning-face":{"body":""}},"lastModified":1656183328,"width":36,"height":36}); -Iconify.addCollection({"prefix":"noto","icons":{"play-button":{"body":""},"stop-button":{"body":""}},"lastModified":1663655351,"width":128,"height":128}); -Iconify.addCollection({"prefix":"eva","icons":{"corner-right-down-fill":{"body":""},"checkmark-circle-2-fill":{"body":""}},"lastModified":1656181844,"width":24,"height":24}); -Iconify.addCollection({"prefix":"bi","icons":{"heart-fill":{"body":""},"people-fill":{"body":""}},"lastModified":1668153111}); -Iconify.addCollection({"prefix":"ic","icons":{"round-person":{"body":""},"round-dashboard":{"body":""}},"lastModified":1660374224,"width":24,"height":24}); -Iconify.addCollection({"prefix":"bx","icons":{"bxs-bar-chart-alt-2":{"body":"","hidden":true},"code-curly":{"body":""},"bxs-heart":{"body":"","hidden":true}},"aliases":{"bx-code-curly":{"parent":"code-curly"}},"lastModified":1663655035,"width":24,"height":24}); -Iconify.addCollection({"prefix":"fluent","icons":{"data-bar-horizontal-24-filled":{"body":""},"key-32-filled":{"body":"","width":32,"height":32},"key-24-filled":{"body":""}},"lastModified":1661146680,"width":24,"height":24}); -Iconify.addCollection({"prefix":"ci","icons":{"settings-filled":{"body":""}},"lastModified":1665515631,"width":24,"height":24}); -Iconify.addCollection({"prefix":"akar-icons","icons":{"chevron-down":{"body":""}},"lastModified":1667372991,"width":24,"height":24}); -Iconify.addCollection({"prefix":"ls","icons":{"logout":{"body":"","height":672}},"lastModified":1656182593,"width":717,"height":717}); -Iconify.addCollection({"prefix":"majesticons","icons":{"clipboard-copy":{"body":"","hidden":true}},"lastModified":1657087337,"width":24,"height":24}); -Iconify.addCollection({"prefix":"fa-regular","icons":{"calendar-alt":{"body":"","width":448}},"lastModified":1656181869,"width":512,"height":512}); -Iconify.addCollection({"prefix":"ph","icons":{"books-bold":{"body":""}},"lastModified":1656183091,"width":256,"height":256}); -Iconify.addCollection({"prefix":"fa-solid","icons":{"external-link-alt":{"body":""}},"lastModified":1656181888,"width":512,"height":512}); -Iconify.addCollection({"prefix":"simple-icons","icons":{"wakatime":{"body":""}},"lastModified":1667769085,"width":24,"height":24}); -Iconify.addCollection({"prefix":"heroicons-solid","icons":{"light-bulb":{"body":""},"server":{"body":""}},"lastModified":1661525143,"width":20,"height":20}); -Iconify.addCollection({"prefix":"ion","icons":{"rocket":{"body":""}},"lastModified":1656182492,"width":512,"height":512}); -Iconify.addCollection({"prefix":"mdi","icons":{"language-c":{"body":""},"language-cpp":{"body":""},"language-go":{"body":""},"language-haskell":{"body":""},"language-html5":{"body":""},"language-java":{"body":""},"language-javascript":{"body":""},"language-kotlin":{"body":""},"language-lua":{"body":""},"language-php":{"body":""},"language-python":{"body":""},"language-r":{"body":""},"language-ruby":{"body":""},"language-rust":{"body":""},"language-swift":{"body":""},"language-typescript":{"body":""},"language-markdown":{"body":""},"vuejs":{"body":""},"react":{"body":""},"code-json":{"body":""},"bash":{"body":""}},"lastModified":1665726087,"width":24,"height":24}); +Iconify.addCollection({"prefix":"fxemoji","icons":{"key":{"body":""},"rocket":{"body":""},"satelliteantenna":{"body":""},"lockandkey":{"body":""},"clipboard":{"body":""},"running":{"body":""}},"width":512,"height":512}); +Iconify.addCollection({"prefix":"flat-color-icons","icons":{"donate":{"body":""},"clock":{"body":""}},"width":48,"height":48}); +Iconify.addCollection({"prefix":"codicon","icons":{"github-inverted":{"body":""}},"width":16,"height":16}); +Iconify.addCollection({"prefix":"ant-design","icons":{"check-square-filled":{"body":""}},"width":1024,"height":1024}); +Iconify.addCollection({"prefix":"emojione-v1","icons":{"white-heavy-check-mark":{"body":""},"alarm-clock":{"body":""},"warning":{"body":""},"backhand-index-pointing-right":{"body":""}},"width":64,"height":64}); +Iconify.addCollection({"prefix":"twemoji","icons":{"light-bulb":{"body":""},"gear":{"body":""},"frowning-face":{"body":""}},"width":36,"height":36}); +Iconify.addCollection({"prefix":"noto","icons":{"play-button":{"body":""},"stop-button":{"body":""}},"width":128,"height":128}); +Iconify.addCollection({"prefix":"eva","icons":{"corner-right-down-fill":{"body":""},"checkmark-circle-2-fill":{"body":""}},"width":24,"height":24}); +Iconify.addCollection({"prefix":"bi","icons":{"heart-fill":{"body":""},"people-fill":{"body":""}},"width":16,"height":16}); +Iconify.addCollection({"prefix":"ic","icons":{"round-person":{"body":""},"round-dashboard":{"body":""}},"width":24,"height":24}); +Iconify.addCollection({"prefix":"bx","icons":{"bxs-bar-chart-alt-2":{"body":""},"bx-code-curly":{"body":""},"bxs-heart":{"body":""}},"width":24,"height":24}); +Iconify.addCollection({"prefix":"fluent","icons":{"data-bar-horizontal-24-filled":{"body":""},"key-32-filled":{"body":"","width":32,"height":32},"key-24-filled":{"body":""}},"width":24,"height":24}); +Iconify.addCollection({"prefix":"ci","icons":{"settings-filled":{"body":""},"dot-03-m":{"body":""}},"width":24,"height":24}); +Iconify.addCollection({"prefix":"akar-icons","icons":{"chevron-down":{"body":""}},"width":24,"height":24}); +Iconify.addCollection({"prefix":"ls","icons":{"logout":{"body":"","height":672}},"width":717,"height":717,"inlineHeight":1086,"inlineTop":-205,"verticalAlign":-0.2}); +Iconify.addCollection({"prefix":"majesticons","icons":{"clipboard-copy":{"body":""}},"width":24,"height":24}); +Iconify.addCollection({"prefix":"fa-regular","icons":{"calendar-alt":{"body":"","width":448}},"width":512,"height":512}); +Iconify.addCollection({"prefix":"ph","icons":{"books-bold":{"body":""}},"width":256,"height":256}); +Iconify.addCollection({"prefix":"fa-solid","icons":{"external-link-alt":{"body":""}},"width":512,"height":512}); +Iconify.addCollection({"prefix":"simple-icons","icons":{"wakatime":{"body":""}},"width":24,"height":24}); +Iconify.addCollection({"prefix":"heroicons-solid","icons":{"light-bulb":{"body":""},"server":{"body":""}},"width":20,"height":20}); +Iconify.addCollection({"prefix":"ion","icons":{"rocket":{"body":""}},"width":512,"height":512}); +Iconify.addCollection({"prefix":"mdi","icons":{"language-c":{"body":""},"language-cpp":{"body":""},"language-go":{"body":""},"language-haskell":{"body":""},"language-html5":{"body":""},"language-java":{"body":""},"language-javascript":{"body":""},"language-kotlin":{"body":""},"language-lua":{"body":""},"language-php":{"body":""},"language-python":{"body":""},"language-r":{"body":""},"language-ruby":{"body":""},"language-rust":{"body":""},"language-swift":{"body":""},"language-typescript":{"body":""},"language-markdown":{"body":""},"vuejs":{"body":""},"react":{"body":""},"code-json":{"body":""},"bash":{"body":""}},"width":24,"height":24}); diff --git a/static/assets/js/icons.dist.js.br b/static/assets/js/icons.dist.js.br index 3616d26be291912b5bb89cb5f4fd1c620a3d8cb3..b2b41d213c715d742083bce550e6e5940f6454ab 100644 GIT binary patch literal 19548 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 L_hg@sp*a>X5U}lv literal 19800 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 D;u(q6 diff --git a/views/settings.tpl.html b/views/settings.tpl.html index de40b54..8c09024 100644 --- a/views/settings.tpl.html +++ b/views/settings.tpl.html @@ -555,7 +555,7 @@
- + You can connect Wakapi with the official WakaTime (or another Wakapi instance, when optionally specifying a custom API URL) in a way that all heartbeats sent to Wakapi are relayed. This way, you can use both services at the same time. To get started, get your API key and paste it here.

To forward data to another Wakapi instance, use https://<your-server>/api/compat/wakatime/v1 as a URL.

@@ -594,7 +594,7 @@
- + This integration with allows to generate badges for README pages or forums. To enable this feature, you need to grant public, unauthorized access to the respective endpoints. See Permissions. Adapt the URL's label and color parameters for customized badges.

In addition, there is an endpoint compatible with Shields.IO to allow for even more customization (e.g. different styles). Only available on public instances, not on localhost. @@ -651,7 +651,7 @@
- + Wakapi intregrates with GitHub Readme Stats to generate fancy cards for you. To enable this feature, you need to grant public, unauthorized access to the respective endpoints. See Permissions.

Only available on public instances, not on localhost. @@ -676,30 +676,52 @@ {{ if .SubscriptionsEnabled }}
-
+
+ Subscription + + By default, this Wakapi instance will only store historical coding activity for {{ .DataRetentionMonths }} months. + However, if you want to support the project, you can opt for a paid subscription for {{ .SubscriptionPrice }} / month to get unlimited history with no restrictions. + You can cancel your subscription at any times!
+ Read more about the idea of adding paid subscriptions to Wakapi here.
+
+
+ {{ if not .User.HasActiveSubscription }} -
-
- Subscription - - By default, this Wakapi instance will only store historical coding activity for 12 months. However, if you want to support the project, you can opt for a paid subscription for {{ .SubscriptionPrice }} / month to get unlimited history with no restrictions. - -
-
- -
+ How it works + + Without a subscription, your coding activity older than {{ .DataRetentionMonths }} months will get deleted by a routine that is run every day. + If you do have an active subscription at the time of checking, your data is kept.
+ In other words, for every point in time X, where you do not currently have an active subscription, all data older than X - {{ .DataRetentionMonths }} months gets dropped. +
+
+ Please note + + If you just purchased a subscription, it might take a moment until it's active. Try refresh this page in a minute. Otherwise, please contact {{ .SupportContact }}. + +
+ {{ end }} + + + Your currently oldest data point is from 2022-01-01. + +
+ + Subscription status: + + {{ if .User.HasActiveSubscription }} + Active (until {{ .User.SubscribedUntil.T | date }}) + {{ else }} + Inactive + {{ end }} + + + {{ if not .User.HasActiveSubscription }} + +
{{ else }} -
-
- Subscription - - Congratulations! You have an active subscription until {{ .User.SubscribedUntil.T | date }}. - -
-
- -
+ +
{{ end }}