diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 97ca46087..ec04aa0de 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -2948,9 +2948,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001214", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001214.tgz", - "integrity": "sha512-O2/SCpuaU3eASWVaesQirZv1MSjUNOvmugaD8zNSJqw6Vv5SGwoOpA9LJs3pNPfM745nxqPvfZY3MQKY4AKHYg==" + "version": "1.0.30001216", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001216.tgz", + "integrity": "sha512-1uU+ww/n5WCJRwUcc9UH/W6925Se5aNnem/G5QaSDga2HzvjYMs8vRbekGUN/PnTZ7ezTHcxxTEb9fgiMYwH6Q==" }, "node_modules/chai": { "version": "4.3.4", @@ -6419,9 +6419,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", + "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==", "funding": [ { "type": "individual", @@ -17730,9 +17730,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001214", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001214.tgz", - "integrity": "sha512-O2/SCpuaU3eASWVaesQirZv1MSjUNOvmugaD8zNSJqw6Vv5SGwoOpA9LJs3pNPfM745nxqPvfZY3MQKY4AKHYg==" + "version": "1.0.30001216", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001216.tgz", + "integrity": "sha512-1uU+ww/n5WCJRwUcc9UH/W6925Se5aNnem/G5QaSDga2HzvjYMs8vRbekGUN/PnTZ7ezTHcxxTEb9fgiMYwH6Q==" }, "chai": { "version": "4.3.4", @@ -20484,9 +20484,9 @@ } }, "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", + "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==" }, "for-in": { "version": "1.0.2", diff --git a/frontend/src/css/themes.css b/frontend/src/css/themes.css index 8209237ab..7c4841203 100644 --- a/frontend/src/css/themes.css +++ b/frontend/src/css/themes.css @@ -201,4 +201,98 @@ body.dark-theme { #photoprism.theme-shadow .theme--light.v-list .v-list__tile__mask { color: #cccccc; background: transparent; +} + +/* Yellowstone Theme */ + +.theme-yellowstone .v-content__wrap, +.theme-yellowstone .p-page, +.theme-yellowstone .form, +.theme-yellowstone .v-content { + background: #444 !important; +} + +#photoprism.theme-yellowstone .theme--light.v-small-dialog__content, +#photoprism.theme-yellowstone .theme--light.v-sheet, +#photoprism.theme-yellowstone .theme--light.v-card { + background: #444; +} + +.theme-yellowstone .application.theme--light { + background: #444; +} + +#photoprism.theme-yellowstone .theme--light .v-table { + background: #4E4E4E; +} + +#photoprism.theme-yellowstone .theme--light.v-table thead th, +#photoprism.theme-yellowstone .theme--light.v-table tbody td { + color: #fff; +} + +#photoprism.theme-yellowstone .theme--light.v-table tbody tr:hover { + background: #666; +} + +#photoprism.theme-yellowstone .theme--light.v-chip, +#photoprism.theme-yellowstone .v-card__actions .theme--light.v-text-field--solo>.v-input__control>.v-input__slot { + background: #333; +} + +#photoprism.theme-yellowstone .theme--light.v-text-field--solo>.v-input__control>.v-input__slot { + background: #4E4E4E; +} + +#photoprism.theme-yellowstone .theme--light.v-input--selection-controls.v-input--is-disabled .v-icon { + color: #999 !important; +} + +#photoprism.theme-yellowstone .theme--light.v-input--selection-controls.v-input--is-disabled .v-icon, +#photoprism.theme-yellowstone .theme--light.v-input--is-disabled .v-label, +#photoprism.theme-yellowstone .theme--light.v-input--is-disabled input, +#photoprism.theme-yellowstone .theme--light.v-input--is-disabled textarea { + color: #ccc; +} + +#photoprism.theme-yellowstone, +#photoprism.theme-yellowstone .p-page a, +#photoprism.theme-yellowstone .v-datatable a, +#photoprism.theme-yellowstone .theme--light.v-expansion-panel .v-expansion-panel__container, +#photoprism.theme-yellowstone .theme--light.v-tabs__bar .v-tabs__div, +#photoprism.theme-yellowstone .theme--light { + color: #fff; +} + +#photoprism.theme-yellowstone .theme--light.v-list { + background: #555; +} + +#photoprism.theme-yellowstone a.text-link { + color: #ffb700 !important; +} + +#photoprism.theme-yellowstone .theme--light.v-select .v-select__selections { + color: #eee; +} + +#photoprism.theme-yellowstone .theme--light.v-list .v-list__tile__sub-title, +#photoprism.theme-yellowstone .accent--text { + color: #ffb700 !important; +} + +#photoprism.theme-yellowstone .theme--light.v-input:not(.v-input--is-disabled) input, +#photoprism.theme-yellowstone .theme--light.v-input:not(.v-input--is-disabled) textarea { + color: #fff; +} + +#photoprism.theme-yellowstone .theme--light.v-btn.v-btn--disabled, +#photoprism.theme-yellowstone .theme--light.v-btn.v-btn--disabled .v-btn__loading, +#photoprism.theme-yellowstone .theme--light.v-btn.v-btn--disabled .v-icon { + color: #999 !important; +} + +#photoprism.theme-yellowstone .theme--light.v-list .v-list__tile__mask { + color: #cccccc; + background: transparent; } \ No newline at end of file diff --git a/frontend/src/options/options.js b/frontend/src/options/options.js index b23c0d89b..014de763d 100644 --- a/frontend/src/options/options.js +++ b/frontend/src/options/options.js @@ -230,6 +230,11 @@ export const Themes = () => [ value: "shadow", disabled: false, }, + { + text: $gettext("Yellowstone"), + value: "yellowstone", + disabled: false, + }, ]; export const MapsAnimate = () => [ { diff --git a/frontend/src/options/themes.json b/frontend/src/options/themes.json index 26f8fd951..4dcd69a01 100644 --- a/frontend/src/options/themes.json +++ b/frontend/src/options/themes.json @@ -30,7 +30,7 @@ }, "grayscale": { "dark": true, - "sponsor": true, + "sponsor": false, "colors": { "application": "#525252", "form": "#e5e4e2", @@ -259,5 +259,34 @@ "navigation": "#212121", "navigation-home": "#000000" } + }, + "yellowstone": { + "dark": true, + "sponsor": true, + "colors": { + "application": "#444", + "form": "#eeeeee", + "primary": "#ffb700", + "primary-button": "#918c7d", + "secondary-dark": "#ffb700", + "secondary": "#585858", + "secondary-light": "#666", + "accent": "#333", + "error": "#e57373", + "info": "#00acc1", + "success": "#4db6ac", + "warning": "#ffd740", + "remove": "#e57373", + "restore": "#64b5f6", + "album": "#ffab00", + "download": "#00bfa5", + "private": "#00b8d4", + "edit": "#00b8d4", + "share": "#9575cd", + "love": "#ef5350", + "terminal": "#333333", + "navigation": "#111", + "navigation-home": "#000000" + } } } diff --git a/go.mod b/go.mod index 2e03ba5f8..50006c552 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/go-playground/validator/v10 v10.5.0 // indirect github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 github.com/golang/protobuf v1.5.2 // indirect - github.com/google/open-location-code/go v0.0.0-20201229230907-d47d9f9b95e9 + github.com/google/open-location-code/go v0.0.0-20210421170257-a9fdf9fced04 github.com/gorilla/websocket v1.4.2 github.com/gosimple/slug v1.9.0 github.com/h2non/filetype v1.1.1 @@ -53,14 +53,13 @@ require ( github.com/stretchr/testify v1.7.0 github.com/studio-b12/gowebdav v0.0.0-20210203212356-8244b5a5f51a github.com/tensorflow/tensorflow v1.15.2 - github.com/tidwall/gjson v1.7.4 + github.com/tidwall/gjson v1.7.5 github.com/ugorji/go v1.2.5 // indirect github.com/ulule/deepcopier v0.0.0-20200430083143-45decc6639b6 github.com/urfave/cli v1.22.5 - golang.org/x/crypto v0.0.0-20210415154028-4f45737414dc + golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b golang.org/x/image v0.0.0-20200618115811-c13761719519 // indirect - golang.org/x/net v0.0.0-20210415231046-e915ea6b2b7d - golang.org/x/sys v0.0.0-20210415045647-66c3f260301c // indirect + golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 gopkg.in/ugjka/go-tz.v2 v2.0.12 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect diff --git a/go.sum b/go.sum index 7e930db0e..e52605e42 100644 --- a/go.sum +++ b/go.sum @@ -137,8 +137,8 @@ github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/open-location-code/go v0.0.0-20201229230907-d47d9f9b95e9 h1:9giiAmczhkdgh1p9riU7PFmLXpJkq1D4wkIWmEJFMEk= -github.com/google/open-location-code/go v0.0.0-20201229230907-d47d9f9b95e9/go.mod h1:eJfRN6aj+kR/rnua/rw9jAgYhqoMHldQkdTi+sePRKk= +github.com/google/open-location-code/go v0.0.0-20210421170257-a9fdf9fced04 h1:vSi4tnVMSPrjIS+5VgoWe1OSfeIZNG+p1AsysRZeNns= +github.com/google/open-location-code/go v0.0.0-20210421170257-a9fdf9fced04/go.mod h1:eJfRN6aj+kR/rnua/rw9jAgYhqoMHldQkdTi+sePRKk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -254,8 +254,8 @@ github.com/studio-b12/gowebdav v0.0.0-20210203212356-8244b5a5f51a h1:Zq18I/ONL/y github.com/studio-b12/gowebdav v0.0.0-20210203212356-8244b5a5f51a/go.mod h1:gCcfDlA1Y7GqOaeEKw5l9dOGx1VLdc/HuQSlQAaZ30s= github.com/tensorflow/tensorflow v1.15.2 h1:7/f/A664Tml/nRJg04+p3StcrsT53mkcvmxYHXI21Qo= github.com/tensorflow/tensorflow v1.15.2/go.mod h1:itOSERT4trABok4UOoG+X4BoKds9F3rIsySdn+Lvu90= -github.com/tidwall/gjson v1.7.4 h1:19cchw8FOxkG5mdLRkGf9jqIqEyqdZhPqW60XfyFxk8= -github.com/tidwall/gjson v1.7.4/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk= +github.com/tidwall/gjson v1.7.5 h1:zmAN/xmX7OtpAkv4Ovfso60r/BiCi5IErCDYGNJu+uc= +github.com/tidwall/gjson v1.7.5/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk= github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.1.0 h1:K3hMW5epkdAVwibsQEfR/7Zj0Qgt4DxtNumTq/VloO8= @@ -283,8 +283,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210415154028-4f45737414dc h1:+q90ECDSAQirdykUN6sPEiBXBsp8Csjcca8Oy7bgLTA= -golang.org/x/crypto v0.0.0-20210415154028-4f45737414dc/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -334,8 +334,8 @@ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210415231046-e915ea6b2b7d h1:BgJvlyh+UqCUaPlscHJ+PN8GcpfrFdr7NHjd1JL0+Gs= -golang.org/x/net v0.0.0-20210415231046-e915ea6b2b7d/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 h1:0PC75Fz/kyMGhL0e1QnypqK2kQMqKt9csD1GnMJR+Zk= +golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -365,9 +365,8 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210415045647-66c3f260301c h1:6L+uOeS3OQt/f4eFHXZcTxeZrGCuz+CLElgEBjbcTA4= -golang.org/x/sys v0.0.0-20210415045647-66c3f260301c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/internal/commands/convert.go b/internal/commands/convert.go index e468ee057..b977d88e4 100644 --- a/internal/commands/convert.go +++ b/internal/commands/convert.go @@ -2,11 +2,12 @@ package commands import ( "context" - "github.com/photoprism/photoprism/pkg/txt" "path/filepath" "strings" "time" + "github.com/photoprism/photoprism/pkg/txt" + "github.com/photoprism/photoprism/internal/config" "github.com/photoprism/photoprism/internal/service" "github.com/urfave/cli" diff --git a/internal/meta/keywords.go b/internal/meta/keywords.go index 0bda39d16..95ab1fc71 100644 --- a/internal/meta/keywords.go +++ b/internal/meta/keywords.go @@ -1,8 +1,9 @@ package meta import ( - "github.com/photoprism/photoprism/pkg/txt" "strings" + + "github.com/photoprism/photoprism/pkg/txt" ) const (