diff --git a/src/main/frontend/components/command_palette.css b/src/main/frontend/components/command_palette.css index c5d7d7f4d2..d54385769b 100644 --- a/src/main/frontend/components/command_palette.css +++ b/src/main/frontend/components/command_palette.css @@ -53,6 +53,10 @@ .search-result { @apply text-sm font-medium flex items-baseline; } + + .ui__icon { + font-size: 16px; + } } &-input { diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index db12eabd52..cb2e312ab9 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -630,7 +630,7 @@ (defn sync-switcher-row [enabled?] (row-with-button-action - {:left-label (str (t :settings-page/sync) " 🔐") + {:left-label (t :settings-page/sync) :action (sync-enabled-switcher enabled?)})) (rum/defc whiteboards-enabled-switcher @@ -653,7 +653,8 @@ enable-encryption? (state/enable-encryption? current-repo) enable-flashcards? (state/enable-flashcards? current-repo) enable-sync? (state/enable-sync?) - enable-whiteboards? (state/enable-whiteboards? current-repo)] + enable-whiteboards? (state/enable-whiteboards? current-repo) + logged-in? (user-handler/logged-in?)] [:div.panel-wrap.is-features.mb-8 (journal-row enable-journals?) (when (not enable-journals?) @@ -675,10 +676,26 @@ (encryption-row enable-encryption?) (when-not web-platform? - [:div + [:<> [:hr] - [:h2.mb-4 "Alpha test (sponsors only)"] + [:div.it.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start + [:label.flex.font-medium.leading-5.self-start.mt-1 (ui/icon (if logged-in? "lock-open" "lock") {:class "mr-1"}) (t :settings-page/alpha-features)] + [:div.mt-1.sm:mt-0.sm:col-span-2 + (if logged-in? + [:div + (user-handler/email) + [:p (ui/button (t :logout) {:class "p-1" + :icon "logout" + :on-click user-handler/logout})]] + [:div + (ui/button (t :login) {:class "p-1" + :icon "login" + :on-click (fn [] + (state/close-settings!) + (js/window.open config/LOGIN-URL))}) + [:p.text-sm.opacity-50 (t :settings-page/login-prompt)]])]] [:div.flex.flex-col.gap-4 + {:class (when-not user-handler/alpha-user? "opacity-50 pointer-events-none cursor-not-allowed")} (sync-switcher-row enable-sync?) (whiteboards-switcher-row enable-whiteboards?)]])])) diff --git a/src/main/frontend/dicts.cljc b/src/main/frontend/dicts.cljc index 5a35c2326a..8459d55742 100644 --- a/src/main/frontend/dicts.cljc +++ b/src/main/frontend/dicts.cljc @@ -204,6 +204,8 @@ :settings-page/plugin-system "Plugins" :settings-page/enable-flashcards "Flashcards" :settings-page/network-proxy "Network proxy" + :settings-page/alpha-features "Alpha features" + :settings-page/login-prompt "To access new features before anyone else you must be a financial supporter or alpha tester of Logseq and therefore log in first." :settings-page/sync "Sync" :settings-page/enable-whiteboards "Whiteboards" :logseq "Logseq" diff --git a/src/main/frontend/ui.cljs b/src/main/frontend/ui.cljs index 6f85529661..4057cb2cd6 100644 --- a/src/main/frontend/ui.cljs +++ b/src/main/frontend/ui.cljs @@ -200,26 +200,6 @@ wrapper-children))) opts)) -(defn button - [text & {:keys [background href class intent on-click small? large? title] - :or {small? false large? false} - :as option}] - (let [klass (when-not intent ".bg-indigo-600.hover:bg-indigo-700.focus:border-indigo-700.active:bg-indigo-700.text-center") - klass (if background (string/replace klass "indigo" background) klass) - klass (if small? (str klass ".px-2.py-1") klass) - klass (if large? (str klass ".text-base") klass)] - [:button.ui__button - (merge - {:type "button" - :title title - :class (str (util/hiccup->class klass) " " class)} - (dissoc option :background :class :small? :large?) - (when href - {:on-click (fn [] - (util/open-url href) - (when (fn? on-click) (on-click)))})) - text])) - (rum/defc notification-content [state content status uid] (when (and content status) @@ -962,6 +942,27 @@ {:class (str "ls-icon-" class)} (f (merge {:size 18} (r/map-keys->camel-case opts)))]))))))) +(defn button + [text & {:keys [background href class intent on-click small? large? title icon] + :or {small? false large? false} + :as option}] + (let [klass (when-not intent ".bg-indigo-600.hover:bg-indigo-700.focus:border-indigo-700.active:bg-indigo-700.text-center") + klass (if background (string/replace klass "indigo" background) klass) + klass (if small? (str klass ".px-2.py-1") klass) + klass (if large? (str klass ".text-base") klass)] + [:button.ui__button + (merge + {:type "button" + :title title + :class (str (util/hiccup->class klass) " " class)} + (dissoc option :background :class :small? :large?) + (when href + {:on-click (fn [] + (util/open-url href) + (when (fn? on-click) (on-click)))})) + (when icon (frontend.ui/icon icon {:class "mr-1"})) + text])) + (rum/defc type-icon [{:keys [name class title extension?]}] [:.type-icon {:class class