From 8cd9f8c8e8a83fd7364089f38fb56602bc157371 Mon Sep 17 00:00:00 2001 From: anapnoe <124302297+anapnoe@users.noreply.github.com> Date: Tue, 31 Oct 2023 14:32:29 +0200 Subject: [PATCH] anapnoe webui-ux sdxl --- .../javascript/ui_theme.js | 455 +++ .../scripts/ui_theme.py | 163 + .../anapnoe-sd-theme-editor/style.css | 36 + .../themes/sdxl_alpha.css | 1 + .../themes/sdxl_default.css | 1 + .../themes/sdxl_light.css | 1 + .../themes/sdxl_minimal.css | 1 + .../themes/sdxl_minimal_orange.css | 1 + .../themes/sdxl_moonlight.css | 1 + .../themes/sdxl_orange.css | 1 + .../themes/sdxl_quad.css | 1 + .../themes/sdxl_thick_group_green.css | 1 + .../themes/sdxl_thin_cyan.css | 1 + .../themes/sdxl_tron2.css | 1 + .../anapnoe-sd-uiux/html/favicon.svg | 6 + .../html/images/Guru_meditation.gif | Bin 0 -> 2548 bytes .../anapnoe-gradio-app-visual-builder.png | Bin 0 -> 429217 bytes .../html/images/anapnoe-ui-ux-orange.png | Bin 0 -> 969871 bytes .../html/images/anapnoe-ui-ux.png | Bin 0 -> 1485518 bytes .../html/images/workspaces.png | Bin 0 -> 1638731 bytes .../anapnoe-sd-uiux/html/svg/add-box-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/ai-generate.svg | 1 + .../html/svg/arrow-down-s-line.svg | 1 + .../html/svg/arrow-go-back-line.svg | 1 + .../html/svg/arrow-right-s-line.svg | 1 + .../html/svg/arrow-right-up-line.svg | 1 + .../html/svg/arrow-up-circle-fill.svg | 1 + .../html/svg/arrow-up-circle-line.svg | 1 + .../html/svg/arrow-up-down-line.svg | 1 + .../html/svg/arrow-up-line.svg | 1 + .../html/svg/arrow-up-s-line.svg | 1 + .../html/svg/artboard-line.svg | 1 + .../html/svg/aspect-ratio-line.svg | 1 + .../html/svg/ball-pen-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/bard-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/bill-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/bmc-logo2.svg | 17 + .../anapnoe-sd-uiux/html/svg/box-1-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/box-1-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/box-2-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/box-2-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/box-3-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/box-3-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/boxing-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/brush-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/bug-2-line.svg | 1 + .../html/svg/camera-lens-line.svg | 1 + .../html/svg/checkbox-blank-line.svg | 1 + .../html/svg/checkbox-indeterminate-line.svg | 1 + .../html/svg/checkbox-multiple-line.svg | 1 + .../html/svg/clipboard-line.svg | 1 + .../html/svg/close-circle-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/close-line.svg | 1 + .../html/svg/compass-4-line.svg | 1 + .../html/svg/computer-fill.svg | 1 + .../html/svg/contract-left-right-line.svg | 1 + .../html/svg/contract-up-down-line.svg | 1 + .../html/svg/contrast-drop-2-line.svg | 1 + .../html/svg/corner-up-right-fill.svg | 1 + .../html/svg/corner-up-right-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/cpu-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/cpu-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/crop-line.svg | 1 + .../html/svg/delete-bin-2-line.svg | 1 + .../html/svg/delete-bin-5-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/dice-1.svg | 15 + .../html/svg/download-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/draft-line.svg | 1 + .../html/svg/drag-drop-line.svg | 1 + .../html/svg/drag-move-2-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/drop-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/dvd-line.svg | 1 + .../html/svg/edit-box-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/edit-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/emotion-line.svg | 1 + .../html/svg/equalizer-fill.svg | 1 + .../html/svg/equalizer-line.svg | 1 + .../html/svg/file-download-line.svg | 1 + .../html/svg/file-edit-fill.svg | 1 + .../html/svg/file-info-fill.svg | 1 + .../html/svg/file-info-line.svg | 1 + .../html/svg/file-zip-line.svg | 1 + .../html/svg/flashlight-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/focus-2-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/focus-2-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/focus-line.svg | 1 + .../html/svg/folder-open-line.svg | 1 + .../html/svg/fullscreen-exit-line.svg | 1 + .../html/svg/fullscreen-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/github-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/github-fill.xml | 2 + .../anapnoe-sd-uiux/html/svg/gradio-fill.svg | 4 + .../anapnoe-sd-uiux/html/svg/gradio-fill.xml | 2 + .../anapnoe-sd-uiux/html/svg/grid-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/grid-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/group-2-line.svg | 1 + .../html/svg/heart-add-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/heart-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/heart-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/image-2-line.svg | 1 + .../html/svg/image-add-line.svg | 1 + .../html/svg/image-edit-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/image-icon.svg | 1 + .../anapnoe-sd-uiux/html/svg/image-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/image-update.svg | 7 + .../html/svg/infinity-fill.svg | 14 + .../html/svg/information-fill.svg | 1 + .../html/svg/information-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/install-line.svg | 1 + .../html/svg/landscape-line.svg | 1 + .../html/svg/layout-2-line.svg | 1 + .../html/svg/layout-grid-line.svg | 1 + .../html/svg/list-settings-line.svg | 1 + .../html/svg/loop-right-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/magic-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/markup-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/menu-4-fill.svg | 1 + .../html/svg/menu-add-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/menu-line.svg | 1 + .../html/svg/menu-search-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/meteor-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/more-2-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/node-tree.svg | 1 + .../html/svg/organization-chart.svg | 1 + .../html/svg/paint-brush-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/paint-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/pantone-line.svg | 1 + .../html/svg/picture-in-picture-exit-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/planet-line.svg | 1 + .../html/svg/play-circle-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/play-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/plug-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/pulse-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/pushpin-line.svg | 1 + .../html/svg/question-answer-fill.svg | 1 + .../html/svg/question-answer-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/recycle-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/refresh-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/reply-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/reply-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/restart-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/robot-2-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/rocket-fill.svg | 2 + .../anapnoe-sd-uiux/html/svg/ruler-2-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/run-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/save-2-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/save-3-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/seo-line.svg | 1 + .../html/svg/settings-3-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/shape-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/shapes-line.svg | 1 + .../html/svg/shut-down-line.svg | 1 + .../html/svg/skip-forward-line.svg | 1 + .../html/svg/skip-forward-mini-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/sort-asc.svg | 1 + .../anapnoe-sd-uiux/html/svg/sort-desc.svg | 1 + .../html/svg/sound-module-line.svg | 1 + .../html/svg/sparkling-2-line.svg | 1 + .../html/svg/sparkling-line.svg | 1 + .../html/svg/spotlight/arrow.svg | 1 + .../html/svg/spotlight/error.svg | 1 + .../html/svg/spotlight/pause.svg | 1 + .../html/svg/spotlight/pixel.gif | Bin 0 -> 43 bytes .../html/svg/spotlight/play.svg | 1 + .../html/svg/spotlight/preloader.svg | 1 + .../html/svg/spotlight/theme.svg | 1 + .../anapnoe-sd-uiux/html/svg/stack-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/star-line.svg | 1 + .../html/svg/stop-circle-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/stop-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/t-box-fill.svg | 1 + .../anapnoe-sd-uiux/html/svg/t-box-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/team-line.svg | 1 + .../html/svg/terminal-box-fill.svg | 1 + .../html/svg/terminal-box-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/text.svg | 1 + .../anapnoe-sd-uiux/html/svg/trophy-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/unpin-line.svg | 1 + .../html/svg/user-smile-line.svg | 1 + .../html/svg/variation-settings.svg | 1 + .../anapnoe-sd-uiux/html/svg/video-line.svg | 1 + .../html/svg/vip-diamond-line.svg | 1 + .../anapnoe-sd-uiux/html/svg/zoom-in-line.svg | 1 + .../html/svg/zoom-out-line.svg | 1 + .../html/templates/template-about.html | 127 + .../html/templates/template-app-root.html | 323 ++ .../template-aside-extra-networks.html | 123 + .../html/templates/template-extensions.html | 15 + .../templates/template-extra-networks.html | 55 + .../templates/template-extras-params.html | 97 + .../templates/template-extras-results.html | 51 + .../templates/template-img2img-params.html | 384 ++ .../templates/template-img2img-results.html | 65 + .../html/templates/template-model-merger.html | 129 + .../html/templates/template-pnginfo.html | 47 + .../templates/template-quicksettings.html | 21 + .../html/templates/template-settings.html | 35 + .../html/templates/template-sponsors.html | 13 + .../html/templates/template-theme.html | 22 + .../templates/template-train-results.html | 17 + .../templates/template-txt2img-params.html | 302 ++ .../templates/template-txt2img-results.html | 66 + .../javascript/anapnoe_sd_uiux_core.js | 1213 ++++++ .../scripts/anapnoe_sd_uiux.py | 111 + extensions-builtin/anapnoe-sd-uiux/style.css | 3247 +++++++++++++++++ screenshot.png | Bin 420577 -> 1485518 bytes 206 files changed, 7352 insertions(+) create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/javascript/ui_theme.js create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/scripts/ui_theme.py create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/style.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_alpha.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_default.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_light.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_minimal.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_minimal_orange.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_moonlight.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_orange.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_quad.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_thick_group_green.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_thin_cyan.css create mode 100644 extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_tron2.css create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/favicon.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/images/Guru_meditation.gif create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/images/anapnoe-gradio-app-visual-builder.png create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/images/anapnoe-ui-ux-orange.png create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/images/anapnoe-ui-ux.png create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/images/workspaces.png create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/add-box-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/ai-generate.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-down-s-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-go-back-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-right-s-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-right-up-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-up-circle-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-up-circle-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-up-down-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-up-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/arrow-up-s-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/artboard-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/aspect-ratio-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/ball-pen-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/bard-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/bill-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/bmc-logo2.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/box-1-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/box-1-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/box-2-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/box-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/box-3-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/box-3-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/boxing-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/brush-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/bug-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/camera-lens-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/checkbox-blank-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/checkbox-indeterminate-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/checkbox-multiple-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/clipboard-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/close-circle-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/close-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/compass-4-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/computer-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/contract-left-right-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/contract-up-down-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/contrast-drop-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/corner-up-right-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/corner-up-right-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/cpu-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/cpu-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/crop-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/delete-bin-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/delete-bin-5-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/dice-1.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/download-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/draft-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/drag-drop-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/drag-move-2-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/drop-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/dvd-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/edit-box-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/edit-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/emotion-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/equalizer-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/equalizer-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/file-download-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/file-edit-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/file-info-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/file-info-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/file-zip-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/flashlight-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/focus-2-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/focus-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/focus-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/folder-open-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/fullscreen-exit-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/fullscreen-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/github-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/github-fill.xml create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/gradio-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/gradio-fill.xml create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/grid-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/grid-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/group-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/heart-add-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/heart-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/heart-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/image-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/image-add-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/image-edit-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/image-icon.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/image-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/image-update.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/infinity-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/information-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/information-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/install-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/landscape-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/layout-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/layout-grid-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/list-settings-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/loop-right-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/magic-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/markup-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/menu-4-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/menu-add-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/menu-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/menu-search-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/meteor-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/more-2-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/node-tree.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/organization-chart.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/paint-brush-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/paint-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/pantone-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/picture-in-picture-exit-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/planet-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/play-circle-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/play-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/plug-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/pulse-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/pushpin-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/question-answer-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/question-answer-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/recycle-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/refresh-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/reply-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/reply-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/restart-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/robot-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/rocket-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/ruler-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/run-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/save-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/save-3-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/seo-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/settings-3-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/shape-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/shapes-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/shut-down-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/skip-forward-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/skip-forward-mini-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/sort-asc.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/sort-desc.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/sound-module-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/sparkling-2-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/sparkling-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/spotlight/arrow.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/spotlight/error.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/spotlight/pause.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/spotlight/pixel.gif create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/spotlight/play.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/spotlight/preloader.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/spotlight/theme.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/stack-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/star-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/stop-circle-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/stop-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/t-box-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/t-box-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/team-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/terminal-box-fill.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/terminal-box-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/text.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/trophy-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/unpin-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/user-smile-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/variation-settings.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/video-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/vip-diamond-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/zoom-in-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/svg/zoom-out-line.svg create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-about.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-app-root.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-aside-extra-networks.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-extensions.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-extra-networks.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-extras-params.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-extras-results.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-img2img-params.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-img2img-results.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-model-merger.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-pnginfo.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-quicksettings.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-settings.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-sponsors.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-theme.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-train-results.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-txt2img-params.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/html/templates/template-txt2img-results.html create mode 100644 extensions-builtin/anapnoe-sd-uiux/javascript/anapnoe_sd_uiux_core.js create mode 100644 extensions-builtin/anapnoe-sd-uiux/scripts/anapnoe_sd_uiux.py create mode 100644 extensions-builtin/anapnoe-sd-uiux/style.css diff --git a/extensions-builtin/anapnoe-sd-theme-editor/javascript/ui_theme.js b/extensions-builtin/anapnoe-sd-theme-editor/javascript/ui_theme.js new file mode 100644 index 00000000..2b8f1cd2 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/javascript/ui_theme.js @@ -0,0 +1,455 @@ +function hexToRgb(color) { + let hex = color[0] === "#" ? color.slice(1) : color; + let c; + + // expand the short hex by doubling each character, fc0 -> ffcc00 + if (hex.length !== 6) { + hex = (() => { + const result = []; + for (c of Array.from(hex)) { + result.push(`${c}${c}`); + } + return result; + })().join(""); + } + const colorStr = hex.match(/#?(.{2})(.{2})(.{2})/).slice(1); + const rgb = colorStr.map((col) => parseInt(col, 16)); + rgb.push(1); + return rgb; +} + +function rgbToHsl(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + const diff = max - min; + const add = max + min; + + const hue = + min === max + ? 0 + : r === max + ? ((60 * (g - b)) / diff + 360) % 360 + : g === max + ? (60 * (b - r)) / diff + 120 + : (60 * (r - g)) / diff + 240; + + const lum = 0.5 * add; + + const sat = + lum === 0 ? 0 : lum === 1 ? 1 : lum <= 0.5 ? diff / add : diff / (2 - add); + + const h = Math.round(hue); + const s = Math.round(sat * 100); + const l = Math.round(lum * 100); + const a = rgb[3] || 1; + + return [h, s, l, a]; +} + +function hexToHsl(color) { + const rgb = hexToRgb(color); + const hsl = rgbToHsl(rgb); + return "hsl(" + hsl[0] + "deg " + hsl[1] + "% " + hsl[2] + "%)"; +} + +function hslToHex(h, s, l) { + l /= 100; + const a = (s * Math.min(l, 1 - l)) / 100; + const f = (n) => { + const k = (n + h / 30) % 12; + const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); + return Math.round(255 * Math.max(0, Math.min(color, 1))) + .toString(16) + .padStart(2, "0"); // convert to Hex and prefix "0" if needed + }; + return `#${f(0)}${f(8)}${f(4)}`; +} + +function hsl2rgb(h, s, l) { + let a = s * Math.min(l, 1 - l); + let f = (n, k = (n + h / 30) % 12) => + l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); + return [f(0), f(8), f(4)]; +} + +function invertColor(hex) { + if (hex.indexOf("#") === 0) { + hex = hex.slice(1); + } + // convert 3-digit hex to 6-digits. + if (hex.length === 3) { + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + if (hex.length !== 6) { + throw new Error("Invalid HEX color."); + } + // invert color components + var r = (255 - parseInt(hex.slice(0, 2), 16)).toString(16), + g = (255 - parseInt(hex.slice(2, 4), 16)).toString(16), + b = (255 - parseInt(hex.slice(4, 6), 16)).toString(16); + // pad each with zeros and return + return "#" + padZero(r) + padZero(g) + padZero(b); +} + +function padZero(str, len) { + len = len || 2; + var zeros = new Array(len).join("0"); + return (zeros + str).slice(-len); +} + +function getValsWrappedIn(str, c1, c2) { + var rg = new RegExp("(?<=\\" + c1 + ")(.*?)(?=\\" + c2 + ")", "g"); + return str.match(rg); +} + +let styleobj = {}; +let hslobj = {}; +let isColorsInv; + +const toHSLArray = (hslStr) => hslStr.match(/\d+/g).map(Number); + +function offsetColorsHSV(ohsl) { + let inner_styles = ""; + + for (const key in styleobj) { + let keyVal = styleobj[key]; + + if (keyVal.indexOf("#") != -1 || keyVal.indexOf("hsl") != -1) { + let colcomp = document.body.querySelector("#" + key + " input"); + if (colcomp) { + let hsl; + + if (keyVal.indexOf("#") != -1) { + keyVal = keyVal.replace(/\s+/g, ""); + //inv ? keyVal = invertColor(keyVal) : 0; + if (isColorsInv) { + keyVal = invertColor(keyVal); + styleobj[key] = keyVal; + } + hsl = rgbToHsl(hexToRgb(keyVal)); + } else { + if (isColorsInv) { + let c = toHSLArray(keyVal); + let hex = hslToHex(c[0], c[1], c[2]); + keyVal = invertColor(hex); + styleobj[key] = keyVal; + hsl = rgbToHsl(hexToRgb(keyVal)); + } else { + hsl = toHSLArray(keyVal); + } + } + + let h = (parseInt(hsl[0]) + parseInt(ohsl[0])) % 360; + let s = parseInt(hsl[1]) + parseInt(ohsl[1]); + let l = parseInt(hsl[2]) + parseInt(ohsl[2]); + + let hex = hslToHex( + h, + Math.min(Math.max(s, 0), 100), + Math.min(Math.max(l, 0), 100) + ); + + colcomp.value = hex; + + hslobj[key] = "hsl(" + h + "deg " + s + "% " + l + "%)"; + inner_styles += key + ":" + hslobj[key] + ";"; + } + } else { + inner_styles += key + ":" + styleobj[key] + ";"; + } + } + + isColorsInv = false; + + const preview_styles = document.body.querySelector("#preview-styles"); + preview_styles.innerHTML = ":root {" + inner_styles + "}"; + preview_styles.innerHTML += + "@media only screen and (max-width: 860px) {:root{--ae-outside-gap-size: var(--ae-mobile-outside-gap-size);--ae-inside-padding-size: var(--ae-mobile-inside-padding-size);}}"; + + const vars_textarea = document.body.querySelector("#theme_vars textarea"); + vars_textarea.value = inner_styles; + window.updateInput(vars_textarea); + /* + const inputEvent = new Event("input"); + Object.defineProperty(inputEvent, "target", { value: vars_textarea }); + vars_textarea.dispatchEvent(inputEvent); + */ + +} + +function updateTheme(vars) { + let inner_styles = ""; + + for (let i = 0; i < vars.length - 1; i++) { + let key = vars[i].split(":"); + let id = key[0].replace(/\s+/g, ""); + let val = key[1].trim(); + + styleobj[id] = val; + inner_styles += id + ":" + val + ";"; + + document.body + .querySelectorAll("#" + id + " input") + .forEach((elem) => { + if (val.indexOf("hsl") != -1) { + let hsl = toHSLArray(val); + let hex = hslToHex(hsl[0], hsl[1], hsl[2]); + elem.value = hex; + } else { + elem.value = val.split("px")[0]; + } + }); + } + + const preview_styles = document.body.querySelector("#preview-styles"); + + if (preview_styles) { + preview_styles.innerHTML = ":root {" + inner_styles + "}"; + preview_styles.innerHTML += + "@media only screen and (max-width: 860px) {:root{--ae-outside-gap-size: var(--ae-mobile-outside-gap-size);--ae-inside-padding-size: var(--ae-mobile-inside-padding-size);}}"; + } else { + const r = document.body; + const style = document.createElement("style"); + style.id = "preview-styles"; + style.innerHTML = ":root {" + inner_styles + "}"; + style.innerHTML += + "@media only screen and (max-width: 860px) {:root{--ae-outside-gap-size: var(--ae-mobile-outside-gap-size);--ae-inside-padding-size: var(--ae-mobile-inside-padding-size);}}"; + r.appendChild(style); + } + + const vars_textarea = document.body.querySelector("#theme_vars textarea"); + const css_textarea = document.body.querySelector("#theme_css textarea"); + + vars_textarea.value = inner_styles; + css_textarea.value = css_textarea.value; + + //console.log(Object); + + /* + const vEvent = new Event("input"); + const cEvent = new Event("input"); + Object.defineProperty(vEvent, "target", { value: vars_textarea }); + Object.defineProperty(cEvent, "target", { value: css_textarea }); + vars_textarea.dispatchEvent(vEvent); + css_textarea.dispatchEvent(cEvent); + */ + + window.updateInput(vars_textarea); + window.updateInput(css_textarea); +} + +function applyTheme() { + console.log("apply"); +} + +function initTheme(styles) { + + const css_styles = styles.split( + "/*BREAKPOINT_CSS_CONTENT*/" + ); + + let init_css_vars = css_styles[0].split("}")[0].split("{")[1]; + init_css_vars = init_css_vars.replace(/\n|\r/g, ""); + + let init_vars = init_css_vars.split(";"); + let vars = init_vars; + + //console.log(vars); + + const vars_textarea = document.body.querySelector("#theme_vars textarea"); + const css_textarea = document.body.querySelector("#theme_css textarea"); + + vars_textarea.value = init_css_vars; + const additional_styles = css_styles[1] !== undefined ? css_styles[1] : ""; + + css_textarea.value = + "/*BREAKPOINT_CSS_CONTENT*/" + additional_styles + "/*BREAKPOINT_CSS_CONTENT*/"; + + updateTheme(vars); + + const preview_styles = document.body.querySelector("#preview-styles"); + if(!preview_styles){ + const style = document.createElement('style'); + style.id = 'preview-styles'; + style.innerHTML = styles; + document.body.appendChild(style); + } + + + let intervalChange; + + document.body + .querySelectorAll("#ui_theme_settings input") + .forEach((elem) => { + elem.addEventListener("input", function (e) { + let celem = e.currentTarget; + let val = e.currentTarget.value; + let curr_val; + + switch (e.currentTarget.type) { + case "range": + celem = celem.parentElement; + val = e.currentTarget.value + "px"; + break; + case "color": + celem = celem.parentElement.parentElement; + val = e.currentTarget.value; + break; + case "number": + celem = celem.parentElement.parentElement.parentElement; + val = e.currentTarget.value + "px"; + break; + } + + + if(celem.id === "--ae-input-slider-height"){ + val = e.currentTarget.value; + } + + styleobj[celem.id] = val; + + //console.log(styleobj); + + if (intervalChange != null) clearInterval(intervalChange); + intervalChange = setTimeout(() => { + let inner_styles = ""; + + for (const key in styleobj) { + inner_styles += key + ":" + styleobj[key] + ";"; + } + + vars = inner_styles.split(";"); + preview_styles.innerHTML = ":root {" + inner_styles + "}"; + preview_styles.innerHTML += + "@media only screen and (max-width: 860px) {:root{--ae-outside-gap-size: var(--ae-mobile-outside-gap-size);--ae-inside-padding-size: var(--ae-mobile-inside-padding-size);}}"; + + vars_textarea.value = inner_styles; + window.updateInput(vars_textarea); + /* + const vEvent = new Event("input"); + Object.defineProperty(vEvent, "target", { value: vars_textarea }); + vars_textarea.dispatchEvent(vEvent); + */ + + offsetColorsHSV(hsloffset); + }, 1000); + }); + }); + + const reset_btn = document.getElementById("theme_reset_btn"); + reset_btn.addEventListener("click", function (e) { + e.preventDefault(); + e.stopPropagation(); + document.body + .querySelectorAll("#ui_theme_hsv input") + .forEach((elem) => { + elem.value = 0; + }); + hsloffset = [0, 0, 0]; + updateTheme(init_vars); + }); + + + let intervalCheck; + + function dropDownOnChange() { + if (init_css_vars !== vars_textarea.value) { + clearInterval(intervalCheck); + init_css_vars = vars_textarea.value.replace(/\n|\r/g, ""); + vars_textarea.value = init_css_vars; + init_vars = init_css_vars.split(";"); + vars = init_vars; + updateTheme(vars); + } + } + + const drop_down = document.body.querySelector("#themes_drop_down input"); + drop_down.addEventListener("click", function (e) { + if (intervalCheck !== null) clearInterval(intervalCheck); + vars_textarea.value = init_css_vars; + intervalCheck = setInterval(dropDownOnChange, 500); + }); + + let hsloffset = [0, 0, 0]; + + const hue = document.body + .querySelectorAll("#theme_hue input") + .forEach((elem) => { + elem.addEventListener("change", function (e) { + e.preventDefault(); + e.stopPropagation(); + hsloffset[0] = e.currentTarget.value; + offsetColorsHSV(hsloffset); + }); + }); + + const sat = document.body + .querySelectorAll("#theme_sat input") + .forEach((elem) => { + elem.addEventListener("change", function (e) { + e.preventDefault(); + e.stopPropagation(); + hsloffset[1] = e.currentTarget.value; + offsetColorsHSV(hsloffset); + }); + }); + + const brt = document.body + .querySelectorAll("#theme_brt input") + .forEach((elem) => { + elem.addEventListener("change", function (e) { + e.preventDefault(); + e.stopPropagation(); + hsloffset[2] = e.currentTarget.value; + offsetColorsHSV(hsloffset); + }); + }); + + const inv_btn = document.getElementById("theme_invert_btn"); + inv_btn.addEventListener("click", function (e) { + e.preventDefault(); + e.stopPropagation(); + isColorsInv = !isColorsInv; + offsetColorsHSV(hsloffset); + }); +} + +/* +function getRootVarsFromStylesheet(){ + + const rootCssVariables = Array.from(document.styleSheets) + .flatMap((styleSheet) => Array.from(styleSheet.cssRules)) + .filter((cssRule) => cssRule instanceof CSSStyleRule && cssRule.selectorText === ':root',) + .flatMap((cssRule) => Array.from(cssRule.style)) + .filter((style) => style.startsWith('--')); + + console.log(rootCssVariables) + +} +*/ + +function observeGradioApp() { + const observer = new MutationObserver(() => { + + const css = document.querySelector(`[rel="stylesheet"][href*="user"]`); + const block = gradioApp().getElementById("tab_ui_theme"); + if (css && block) { + observer.disconnect(); + setTimeout(() => { + const rootRules = Array.from(css.sheet.cssRules).filter((cssRule) => cssRule instanceof CSSStyleRule && cssRule.selectorText === ':root',); + const rootCssText = rootRules[0].cssText; + //console.log("Loading theme vars", rootCssText); + initTheme(rootCssText); + }, "500"); + } + }); + observer.observe(gradioApp(), { childList: true, subtree: true }); +} + +document.addEventListener("DOMContentLoaded", () => { + observeGradioApp(); +}); diff --git a/extensions-builtin/anapnoe-sd-theme-editor/scripts/ui_theme.py b/extensions-builtin/anapnoe-sd-theme-editor/scripts/ui_theme.py new file mode 100644 index 00000000..399798e1 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/scripts/ui_theme.py @@ -0,0 +1,163 @@ +import os +import shutil +from pathlib import Path +import gradio as gr +import modules.scripts as scripts +from modules import script_callbacks, shared + +basedir = scripts.basedir() +webui_dir = Path(basedir).parents[1] + +themes_folder = os.path.join(basedir, "themes") +javascript_folder = os.path.join(basedir, "javascript") +webui_style_path = os.path.join(webui_dir, "user.css") + +def get_files(folder, file_filter=[], file_list=[], split=False): + file_list = [file_name if not split else os.path.splitext(file_name)[0] for file_name in os.listdir(folder) if os.path.isfile(os.path.join(folder, file_name)) and file_name not in file_filter] + return file_list + + +def on_ui_tabs(): + + with gr.Blocks(analytics_enabled=False) as ui_theme: + with gr.Row(): + with gr.Column(): + with gr.Row(): + themes_dropdown = gr.Dropdown(label="Themes", elem_id="themes_drop_down", interactive=True, choices=get_files(themes_folder,[".css, .txt"]), type="value") + save_as_filename = gr.Text(label="Save / Save as") + with gr.Row(): + reset_button = gr.Button(elem_id="theme_reset_btn", value="Reset", variant="primary") + #apply_button = gr.Button(elem_id="theme_apply_btn", value="Apply", variant="primary") + save_button = gr.Button(value="Save", variant="primary") + #delete_button = gr.Button(value="Delete", variant="primary") + + #with gr.Accordion(label="Debug View", open=True): + with gr.Row(elem_id="theme_hidden"): + vars_text = gr.Textbox(label="Vars", elem_id="theme_vars", show_label=True, lines=7, interactive=False, visible=True) + css_text = gr.Textbox(label="Css", elem_id="theme_css", show_label=True, lines=7, interactive=False, visible=True) + #result_text = gr.Text(elem_id="theme_result", interactive=False, visible=False) + + with gr.Accordion(label="Theme Color adjustments", open=True): + with gr.Row(): + with gr.Column(elem_id="ui_theme_hsv"): + gr.Slider(elem_id="theme_hue", label='Hue', minimum=0, maximum=360, step=1) + gr.Slider(elem_id="theme_sat", label='Saturation', minimum=-100, maximum=100, step=1, value=0, interactive=True) + gr.Slider(elem_id="theme_brt", label='Lightness', minimum=-50, maximum=50, step=1, value=0, interactive=True) + + gr.Button(elem_id="theme_invert_btn", value="Invert", variant="primary") + + with gr.Column(elem_id="ui_theme_settings"): + with gr.Accordion(label="Main", open=False): + gr.ColorPicker(elem_id="--ae-main-bg-color", interactive=True, label="Background color") + gr.ColorPicker(elem_id="--ae-primary-color", label="Primary color") + gr.ColorPicker(elem_id="--ae-secondary-color", label="Secondary color") + + with gr.Accordion(label="Spacing", open=False): + gr.Slider(elem_id="--ae-gap-size-val", label='Gap size', minimum=0, maximum=8, step=1) + + """ with gr.Accordion(elem_classes="hidden", label="Spacing (Mobile)", open=False): + gr.Slider(elem_id="--ae-mobile-gap-size-val", label='Gap size', minimum=0, maximum=8, step=1) """ + + with gr.Accordion(label="Panel", open=False): + gr.ColorPicker(elem_id="--ae-panel-bg-color", label="Panel background color") + gr.ColorPicker(elem_id="--ae-panel-border-color", label="Panel border color") + gr.Slider(elem_id="--ae-panel-padding", label='Panel padding', minimum=0, maximum=10, step=1) + gr.Slider(elem_id="--ae-border-radius", label='Panel border radius', minimum=0, maximum=8, step=1) + gr.Slider(elem_id="--ae-border-size", label='Panel border size', minimum=0, maximum=4, step=1) + + with gr.Accordion(label="Component", open=False): + + gr.Slider(elem_id="--ae-input-height", label='Component size', minimum=28, maximum=45, step=1) + gr.Slider(elem_id="--ae-input-slider-height", label='Slider height', minimum=0.1, maximum=1, step=0.1) + gr.Slider(elem_id="--ae-input-padding", label='Padding', minimum=0, maximum=10, step=1) + gr.Slider(elem_id="--ae-input-font-size", label='Font size', minimum=10, maximum=16, step=1) + gr.Slider(elem_id="--ae-input-line-height", label='Line height', minimum=10, maximum=40, step=1) + gr.Slider(elem_id="--ae-input-border-size", label='Border size', minimum=0, maximum=4, step=1) + gr.Slider(elem_id="--ae-input-border-radius", label='Border radius', minimum=0, maximum=8, step=1) + + gr.ColorPicker(elem_id="--ae-input-bg-color", label="Input background color") + gr.ColorPicker(elem_id="--ae-input-border-color", label="Input border color") + gr.ColorPicker(elem_id="--ae-input-text-color", label="Input text color") + gr.ColorPicker(elem_id="--ae-input-placeholder-color", label="Input placeholder color") + + gr.ColorPicker(elem_id="--ae-label-color", label="Label color") + gr.ColorPicker(elem_id="--ae-secondary-label-color", label="Secondary label color") + + gr.ColorPicker(elem_id="--ae-input-hover-text-color", label="Input hover text color") + + + + with gr.Accordion(label="Group", open=False): + gr.ColorPicker(elem_id="--ae-group-bg-color", label="Group background color") + gr.ColorPicker(elem_id="--ae-group-border-color", label="Group border color") + gr.Slider(elem_id="--ae-group-padding", label='Group padding', minimum=0, maximum=10, step=1) + gr.Slider(elem_id="--ae-group-radius", label='Group border radius', minimum=0, maximum=8, step=1) + gr.Slider(elem_id="--ae-group-border-size", label='Group border size', minimum=0, maximum=4, step=1) + gr.Slider(elem_id="--ae-group-gap", label='Group gap size', minimum=0, maximum=8, step=1) + + + + + def save_theme( vars_text, css_text, filename): + style_data= ":root{" + vars_text + "}" + css_text + with open(os.path.join(themes_folder, f"{filename}.css"), 'w', encoding="utf-8") as file: + file.write(vars_text) + file.close() + with open(webui_style_path, 'w', encoding="utf-8") as file: + file.write(style_data) + file.close() + themes_dropdown.choices=get_files(themes_folder,[".css, .txt"]) + return gr.update(choices=themes_dropdown.choices, value=f"{filename}.css") + + def open_theme(filename, css_text): + with open(os.path.join(themes_folder, f"{filename}"), 'r') as file: + vars_text=file.read() + no_ext=filename.rsplit('.', 1)[0] + #save_theme( vars_text, css_text, no_ext) + # shared.state.interrupt() + # shared.state.need_restart = True + return [vars_text, no_ext] + + # def delete_theme(filename): + # try: + # os.remove(os.path.join(themes_folder, filename)) + # except FileNotFoundError: + # pass + + # delete_button.click( + # fn = lambda: delete_theme() + # ) + + save_button.click( + fn=save_theme, + inputs=[vars_text, css_text, save_as_filename], + outputs=themes_dropdown + ) + + themes_dropdown.change( + fn=open_theme, + #_js = "applyTheme", + inputs=[themes_dropdown, css_text], + outputs=[vars_text, save_as_filename] + ) + + # apply_button.click( + # fn=None, + # _js = "applyTheme" + # ) + + # vars_text.change( + # fn=None, + # _js = "applyTheme", + # inputs=[], + # outputs=[vars_text, css_text] + # ) + + + + + return (ui_theme, 'Theme', 'ui_theme'), + + + +script_callbacks.on_ui_tabs(on_ui_tabs) \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/style.css b/extensions-builtin/anapnoe-sd-theme-editor/style.css new file mode 100644 index 00000000..3e19ab0d --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/style.css @@ -0,0 +1,36 @@ +#theme_hidden, +#setting_ui_header_tabs .theme, +#setting_ui_hidden_tabs .theme { + display: none !important; +} + +#tab_ui_theme [id*="color"] label { + display: flex; + align-items: center; + pointer-events: none; +} +#tab_ui_theme [id*="color"] label span { + min-width: 50% !important; +} +#tab_ui_theme [id*="color"] label input { + flex-grow: 1; + pointer-events: all; + cursor: pointer; +} + +#settings_ui_theme > div > div { + flex-direction: row; + flex-wrap: wrap; +} +#settings_ui_theme > div > div > div { + max-width: 30%; +} + +#tab_ui_theme > div { + padding: 16px !important; + padding-top: 0 !important; +} + +#ui_theme_hsv + button { + min-width: unset; +} diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_alpha.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_alpha.css new file mode 100644 index 00000000..ebaf8380 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_alpha.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(205deg 83% 46%);--ae-secondary-color:hsl(325deg 83% 46%);--ae-main-bg-color:rgb(32 32 32);--ae-input-height:35px;--ae-input-slider-height:0.6;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:14px;--ae-input-line-height:23px;--ae-label-color:rgba(255, 255, 255, 0.75);--ae-secondary-label-color:rgba(255, 255, 255, 0.5);--ae-input-border-size:2px;--ae-input-border-radius:0px;--ae-input-text-color:rgba(255, 255, 255, 0.75);--ae-input-placeholder-color:rgba(255, 255, 255, 0.35);--ae-input-bg-color:rgba(0, 0, 0, 0.25);--ae-input-border-color:rgba(0, 0, 0, 0.1);--ae-input-hover-text-color:rgba(255, 255, 255, 0.75);--ae-panel-bg-color:rgba(64, 64, 64, 0.5);--ae-panel-border-color:rgba(64, 64, 64, 0.75);--ae-panel-padding:5px;--ae-border-radius:5px;--ae-border-size:2px;--ae-gap-size-val:5px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(0deg 0% 16%);--ae-group-padding:2px;--ae-group-radius:7px;--ae-group-border-size:2px;--ae-group-border-color:hsl(0deg 0% 16%);--ae-group-gap:6px;--ae-panel-border-radius:0px;--ae-subpanel-border-radius:8px;--ae-outside-gap-size:8px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max( var(--ae-outside-gap-size), var(--ae-inside-padding-size) );--ae-icon-size:22px;--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:2px;--panel-border-radius:4px;--subpanel-border-radius:8px;--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-size:22px;--mobile-outside-gap-size:3px;--mobile-inside-padding-size:3px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_default.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_default.css new file mode 100644 index 00000000..5ad1606b --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_default.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(168deg 97% 41%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(0deg 0% 10%);--ae-input-height:35px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:12px;--ae-input-line-height:24px;--ae-label-color:hsl(216deg 5% 60%);--ae-secondary-label-color:hsl(216deg 5% 60%);--ae-input-border-size:0px;--ae-input-border-radius:0px;--ae-input-text-color:hsl(216deg 5% 60%);--ae-input-placeholder-color:hsl(168deg 97% 41%);--ae-input-bg-color:hsl(225deg 6% 13%);--ae-input-border-color:hsl(228deg 6% 17%);--ae-input-hover-text-color:hsl(225deg 6% 13%);--ae-panel-bg-color:hsl(225deg 5% 17%);--ae-panel-border-color:hsl(214deg 5% 30%);--ae-panel-padding:5px;--ae-border-radius:0px;--ae-border-size:1px;--ae-gap-size-val:5px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(225deg 6% 13%);--ae-group-padding:2px;--ae-group-radius:0px;--ae-group-border-size:1px;--ae-group-border-color:hsl(225deg 6% 13%);--ae-group-gap:5px;--ae-panel-border-radius:0px;--ae-subpanel-border-radius:8px;--ae-outside-gap-size:8px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max( var(--ae-outside-gap-size), var(--ae-inside-padding-size) );--ae-icon-size:22px;--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:2px;--panel-border-radius:4px;--subpanel-border-radius:8px;--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-size:22px;--mobile-outside-gap-size:3px;--mobile-inside-padding-size:3px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_light.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_light.css new file mode 100644 index 00000000..d046467b --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_light.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(0deg 0% 0%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(0deg 0% 95%);--ae-input-height:28px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:12px;--ae-input-line-height:16px;--ae-label-color:hsl(0deg 0% 15%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-border-size:1px;--ae-input-border-radius:0px;--ae-input-text-color:hsl(0deg 0% 0%);--ae-input-placeholder-color:hsl(0deg 0% 89%);--ae-input-bg-color:hsl(0deg 100% 100%);--ae-input-border-color:hsl(0deg 0% 95%);--ae-input-hover-text-color:hsl(0deg 100% 100%);--ae-panel-bg-color:hsl(0deg 0% 98%);--ae-panel-border-color:hsl(0deg 0% 87%);--ae-panel-padding:5px;--ae-border-radius:5px;--ae-border-size:0px;--ae-gap-size-val:3px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(0deg 0% 94%);--ae-group-padding:2px;--ae-group-radius:6px;--ae-group-border-size:0px;--ae-group-border-color:hsl(0deg 0% 94%);--ae-group-gap:2px;--ae-panel-border-radius:0px;--ae-subpanel-border-radius:8px;--ae-outside-gap-size:8px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max( var(--ae-outside-gap-size), var(--ae-inside-padding-size) );--ae-icon-size:22px;--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:2px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_minimal.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_minimal.css new file mode 100644 index 00000000..04696bb0 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_minimal.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(168deg 96% 42%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(0deg 0% 8%);--ae-input-height:35px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:14px;--ae-input-line-height:20px;--ae-label-color:hsl(0deg 0% 65%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-border-size:2px;--ae-input-border-radius:5px;--ae-input-text-color:hsl(168deg 96% 42%);--ae-input-placeholder-color:hsl(168deg 96% 42%);--ae-input-bg-color:hsl(0deg 0% 10%);--ae-input-border-color:hsl(0deg 0% 10%);--ae-input-hover-text-color:hsl(240deg 18% 12%);--ae-panel-bg-color:hsl(0deg 0% 17%);--ae-panel-border-color:hsl(0deg 0% 17%);--ae-panel-padding:5px;--ae-border-radius:0px;--ae-border-size:2px;--ae-gap-size-val:6px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(225deg 7% 11%);--ae-group-padding:0px;--ae-group-radius:0px;--ae-group-border-size:0px;--ae-group-border-color:hsl(240deg 16% 16%);--ae-group-gap:2px;--ae-panel-border-radius:4px;--ae-subpanel-border-radius:4px;--ae-outside-gap-size:1px;--ae-inside-padding-size:5px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max(var(--ae-outside-gap-size),var(--ae-inside-padding-size));--ae-icon-size:22px;--ae-mobile-outside-gap-size:3px;--ae-mobile-inside-padding-size:3px;--panel-border-radius:4px;--subpanel-border-radius:8px;--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-size:22px;--mobile-outside-gap-size:3px;--mobile-inside-padding-size:3px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_minimal_orange.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_minimal_orange.css new file mode 100644 index 00000000..7d84204c --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_minimal_orange.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(18deg 124% 42%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(210deg 28% 8%);--ae-input-height:35px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:14px;--ae-input-line-height:20px;--ae-label-color:hsl(210deg 28% 65%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-border-size:2px;--ae-input-border-radius:5px;--ae-input-text-color:hsl(18deg 100% 42%);--ae-input-placeholder-color:hsl(18deg 100% 42%);--ae-input-bg-color:hsl(210deg 28% 10%);--ae-input-border-color:hsl(210deg 28% 10%);--ae-input-hover-text-color:hsl(240deg 18% 12%);--ae-panel-bg-color:hsl(210deg 28% 17%);--ae-panel-border-color:hsl(210deg 28% 17%);--ae-panel-padding:5px;--ae-border-radius:0px;--ae-border-size:2px;--ae-gap-size-val:6px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(225deg 7% 11%);--ae-group-padding:0px;--ae-group-radius:0px;--ae-group-border-size:0px;--ae-group-border-color:hsl(240deg 16% 16%);--ae-group-gap:2px;--ae-panel-border-radius:4px;--ae-subpanel-border-radius:4px;--ae-outside-gap-size:4px;--ae-inside-padding-size:4px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max(var(--ae-outside-gap-size),var(--ae-inside-padding-size));--ae-icon-size:22px;--ae-mobile-outside-gap-size:3px;--ae-mobile-inside-padding-size:3px;--panel-border-radius:4px;--subpanel-border-radius:8px;--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-size:22px;--mobile-outside-gap-size:3px;--mobile-inside-padding-size:3px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_moonlight.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_moonlight.css new file mode 100644 index 00000000..5bde3e5e --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_moonlight.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(222deg 75% 62%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(240deg 16% 6%);--ae-input-height:35px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:14px;--ae-input-line-height:20px;--ae-label-color:hsl(185deg 66% 85%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-border-size:2px;--ae-input-border-radius:5px;--ae-input-text-color:hsl(222deg 75% 62%);--ae-input-placeholder-color:hsl(222deg 75% 62%);--ae-input-bg-color:hsl(240deg 17% 8%);--ae-input-border-color:hsl(240deg 20% 16%);--ae-input-hover-text-color:hsl(240deg 18% 12%);--ae-panel-bg-color:hsl(240deg 18% 12%);--ae-panel-border-color:hsl(240deg 16% 16%);--ae-panel-padding:5px;--ae-border-radius:0px;--ae-border-size:2px;--ae-gap-size-val:6px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(225deg 7% 11%);--ae-group-padding:0px;--ae-group-radius:0px;--ae-group-border-size:0px;--ae-group-border-color:hsl(240deg 16% 16%);--ae-group-gap:2px;--ae-panel-border-radius:0px;--ae-subpanel-border-radius:8px;--ae-outside-gap-size:8px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max(var(--ae-outside-gap-size),var(--ae-inside-padding-size));--ae-icon-size:22px;--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:2px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_orange.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_orange.css new file mode 100644 index 00000000..715c5624 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_orange.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(15deg 77% 58%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(0deg 0% 10%);--ae-input-height:28px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:12px;--ae-input-line-height:16px;--ae-label-color:hsl(216deg 5% 60%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-border-size:1px;--ae-input-border-radius:0px;--ae-input-text-color:hsl(15deg 77% 58%);--ae-input-placeholder-color:hsl(216deg 5% 60%);--ae-input-bg-color:hsl(225deg 6% 13%);--ae-input-border-color:hsl(228deg 6% 17%);--ae-input-hover-text-color:hsl(16deg 94% 93%);--ae-panel-bg-color:hsl(225deg 5% 17%);--ae-panel-border-color:hsl(214deg 5% 30%);--ae-panel-padding:5px;--ae-border-radius:5px;--ae-border-size:0px;--ae-gap-size-val:3px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(225deg 6% 13%);--ae-group-padding:2px;--ae-group-radius:6px;--ae-group-border-size:0px;--ae-group-border-color:hsl(225deg 6% 13%);--ae-group-gap:2px;--ae-panel-border-radius:0px;--ae-subpanel-border-radius:8px;--ae-outside-gap-size:8px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max( var(--ae-outside-gap-size), var(--ae-inside-padding-size) );--ae-icon-size:22px;--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:2px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_quad.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_quad.css new file mode 100644 index 00000000..97442448 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_quad.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(168deg 97% 41%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(0deg 0% 10%);--ae-input-height:35px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:14px;--ae-input-line-height:23px;--ae-label-color:hsl(210deg 4% 80%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-border-size:1px;--ae-input-border-radius:5px;--ae-input-text-color:hsl(168deg 97% 41%);--ae-input-placeholder-color:hsl(168deg 97% 41%);--ae-input-bg-color:hsl(225deg 6% 13%);--ae-input-border-color:hsl(210deg 6% 20%);--ae-input-hover-text-color:hsl(240deg 18% 12%);--ae-panel-bg-color:hsl(225deg 5% 17%);--ae-panel-border-color:hsl(220deg 5% 25%);--ae-panel-padding:5px;--ae-border-radius:0px;--ae-border-size:1px;--ae-gap-size-val:6px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(225deg 7% 11%);--ae-group-padding:0px;--ae-group-radius:0px;--ae-group-border-size:0px;--ae-group-border-color:hsl(240deg 16% 16%);--ae-group-gap:1px;--ae-panel-border-radius:0px;--ae-subpanel-border-radius:8px;--ae-outside-gap-size:8px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max(var(--ae-outside-gap-size),var(--ae-inside-padding-size));--ae-icon-size:22px;--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:2px;--panel-border-radius:4px;--subpanel-border-radius:8px;--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-size:22px;--mobile-outside-gap-size:3px;--mobile-inside-padding-size:3px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_thick_group_green.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_thick_group_green.css new file mode 100644 index 00000000..3deb6d32 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_thick_group_green.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(168deg 97% 41%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(0deg 0% 10%);--ae-input-height:35px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:14px;--ae-input-line-height:20px;--ae-label-color:hsl(216deg 5% 60%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-border-size:0px;--ae-input-border-radius:5px;--ae-input-text-color:hsl(168deg 97% 41%);--ae-input-placeholder-color:hsl(168deg 97% 41%);--ae-input-bg-color:hsl(225deg 6% 13%);--ae-input-border-color:hsl(228deg 6% 17%);--ae-input-hover-text-color:hsl(168deg 96% 80%);--ae-panel-bg-color:hsl(225deg 5% 17%);--ae-panel-border-color:hsl(210deg 6% 20%);--ae-panel-padding:5px;--ae-border-radius:5px;--ae-border-size:2px;--ae-gap-size-val:5px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(225deg 6% 13%);--ae-group-padding:3px;--ae-group-radius:8px;--ae-group-border-size:1px;--ae-group-border-color:hsl(225deg 6% 13%);--ae-group-gap:5px;--ae-panel-border-radius:0px;--ae-subpanel-border-radius:8px;--ae-outside-gap-size:8px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max( var(--ae-outside-gap-size), var(--ae-inside-padding-size) );--ae-icon-size:22px;--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:2px;--panel-border-radius:4px;--subpanel-border-radius:8px;--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-size:22px;--mobile-outside-gap-size:3px;--mobile-inside-padding-size:3px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_thin_cyan.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_thin_cyan.css new file mode 100644 index 00000000..7de81f79 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_thin_cyan.css @@ -0,0 +1 @@ +--ae-primary-color:hsl(190deg 75% 60%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-main-bg-color:hsl(0deg 0% 10%);--ae-input-height:35px;--ae-input-slider-height:0.5;--ae-input-icon-height:calc(var(--ae-input-height) - var(--ae-input-border-size) * 2);--ae-input-padding:5px;--ae-input-font-size:12px;--ae-input-line-height:23px;--ae-label-color:hsl(216deg 5% 60%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-border-size:1px;--ae-input-border-radius:0px;--ae-input-text-color:hsl(216deg 5% 60%);--ae-input-placeholder-color:hsl(190deg 75% 60%);--ae-input-bg-color:hsl(225deg 6% 13%);--ae-input-border-color:hsl(228deg 6% 17%);--ae-input-hover-text-color:hsl(225deg 6% 13%);--ae-panel-bg-color:hsl(225deg 5% 17%);--ae-panel-border-color:hsl(214deg 5% 30%);--ae-panel-padding:5px;--ae-border-radius:0px;--ae-border-size:1px;--ae-gap-size-val:5px;--ae-gap-size:max(var(--ae-gap-size-val), var(--ae-border-size));--ae-border-size-neg:calc(var(--ae-border-size) * -1);--ae-border-size-x2:calc((var(--ae-border-size) * 2) + 0px);--ae-group-bg-color:hsl(225deg 6% 13%);--ae-group-padding:2px;--ae-group-radius:0px;--ae-group-border-size:1px;--ae-group-border-color:hsl(225deg 6% 13%);--ae-group-gap:5px;--ae-panel-border-radius:0px;--ae-subpanel-border-radius:8px;--ae-outside-gap-size:8px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max( var(--ae-outside-gap-size), var(--ae-inside-padding-size) );--ae-icon-size:22px;--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:2px;--panel-border-radius:4px;--subpanel-border-radius:8px;--outside-gap-size:8px;--inside-padding-size:8px;--tool-button-size:34px;--tool-button-radius:16px;--generate-button-height:70px;--max-padding:max(var(--outside-gap-size),var(--inside-padding-size));--icon-size:22px;--mobile-outside-gap-size:3px;--mobile-inside-padding-size:3px; \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_tron2.css b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_tron2.css new file mode 100644 index 00000000..b48ad837 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-theme-editor/themes/sdxl_tron2.css @@ -0,0 +1 @@ +--ae-main-bg-color:hsl(185deg 75% 3%);--ae-primary-color:hsl(182deg 95% 51%);--ae-input-bg-color:hsl(184deg 89% 7%);--ae-input-border-color:hsl(185deg 72% 25%);--ae-panel-bg-color:hsl(185deg 73% 3%);--ae-panel-border-color:hsl(185deg 72% 25%);--ae-panel-border-radius:0px;--ae-subpanel-border-radius:0px;--ae-outside-gap-size:2px;--ae-inside-padding-size:8px;--ae-tool-button-size:34px;--ae-tool-button-radius:16px;--ae-generate-button-height:70px;--ae-max-padding:max(var(--ae-outside-gap-size),var(--ae-inside-padding-size));--ae-icon-size:22px;--ae-label-color:hsl(182deg 95% 75%);--ae-mobile-outside-gap-size:2px;--ae-mobile-inside-padding-size:8px;--ae-input-height:35px;--ae-input-slider-height:0.5;--ae-gap-size-val:1px;--ae-input-font-size:11px;--ae-input-line-height:23px;--ae-input-border-size:1px;--ae-input-border-radius:0px;--ae-input-padding:5px;--ae-panel-padding:5px;--ae-border-radius:0px;--ae-border-size:1px;--ae-group-padding:0px;--ae-group-radius:0px;--ae-group-border-size:0px;--ae-group-gap:1px;--ae-group-bg-color:hsl(185deg 73% 3%);--ae-group-border-color:hsl(185deg 73% 3%);--ae-secondary-color:hsl(225deg 6% 13%);--ae-input-text-color:hsl(168deg 75% 70%);--ae-input-placeholder-color:hsl(185deg 72% 25%);--ae-secondary-label-color:hsl(0deg 100% 50%);--ae-input-hover-text-color:hsl(182deg 94% 80%); \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-uiux/html/favicon.svg b/extensions-builtin/anapnoe-sd-uiux/html/favicon.svg new file mode 100644 index 00000000..0cd7e9a2 --- /dev/null +++ b/extensions-builtin/anapnoe-sd-uiux/html/favicon.svg @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/extensions-builtin/anapnoe-sd-uiux/html/images/Guru_meditation.gif b/extensions-builtin/anapnoe-sd-uiux/html/images/Guru_meditation.gif new file mode 100644 index 0000000000000000000000000000000000000000..66e9dcd426af5c6f78b7ecc1c33f8034c4e8e4a2 GIT binary patch literal 2548 zcmb`|X*d*$8VB%6shD9LWv9bXmKc{P%sAF;F*%y7*%JoC5wb5Q%P?k?C0Wym8q3&4 z29
<5V{
zXqst$VfxvZHxJObGH8G`O@ss5L9*pZ 3~)k1Za@4U8xlA(NKk7#b)=NB
zoL+c2BFT*>ZP_N^!RxsI*!^!4LJvRJBY_knnzHj&B=r`hg0K4WSI$cwfQnD`Vt~_1
zE89MEFY)u2o_Si`bQ8?!lB?@eVN47aKIB&o=es{PG<)zMBRflGzNgbN!9d+k)nU?9
z0AVTcZrkh2p-fJ`J$ZMvA1=}Nt@%)8dF+#7n&l-pY}k7+?U8}b^L9UCQp^o-l5OZJ
zJs}P&=6FfThdR{i>qnXl4%{Ab9b)xyXS>oqkBNmbaS7ug9Y 4fj1z
z&(;diDNxk#x&ybe<7ghVyKVTP@DTWxoyh!&wbA#-Xk<#_)64!zWJHjR7XHbAN=GgZ
zVsacE9q?yEa0r7}vd$D6ujymC_`AM)76Y&(E+G#!Zh{usw_#70ZJU3CxHp@w5_iH4
z;TwLCD0Hd3O~tNPPvvpJ^yqWvdo+`WzMe83v`d2ZC2pLClBzG9@WWR#VofLPAzxW`
z?2AJ!$allGqyRxEi^z!G=7a2ioQ;CsL$;=$9bcoN`7R08gA|trzWr+b4OWwc9|m>>
zvbd_T6Z`^p0hpKrggxaQJ^*NN=CZL51?a!(k%#W_)osNrI_SQs;QZ_iD#`5;&{t*`
zfQ|#AA5dNve+E7%2N&fr?F0WHm`f-~z`#_;qCFTQ0{^3c-)lL+z+m>g{J{3x7n#7oJpYt?
zC-K=`|ELWq(?Bil+0W~-exE0eR}x$D;}6DgSn0SmZS3JZDx;oeb~Rnd&(e;NXXfxd
zBQ0gZTK}U@y&p7jxWbKKscB#X-g*}JEk3UJo<4hwHSwg$5C4!y^;q$465L&K8W%mT
z9~aprbLa|0gp
_Tx;uul%aNuvIbDN>C}BqU)MAVU*^|QQ9o3
Y6^;c+Yed#=}8boiT}
zcRszgzW9u@`M#Rv!$(1`(yu3dlB@$NtC16B9AYg6bxn;&M*
2fQKoWvy?*D*-~2vWU*AS#Yotv3Df)YwkS_oc0}KFY1cUZ#;jHL%
zVmx3Ah|f7UJBD3^q@NQ?rc4E^)ZD;5(5KxNCTDN%+}&qL&P+*XDa8SeXGDIAnrY2pYqtCz
z_`Xz&GaCOz$%FiziwU16XW;x23f
4M%*T}klce6+Sla1FoYM)&Y7sM3)R#rH7Q+WBL&TCq~oSoj{C`IDz_NlvKfML
zhQ@pUl)+u+3fX}BK(iZ#e1Pd4P~<3$leZ+JFSTUK7*($Er`CPspTM1Vkn6tlD@f4N
z;XHKqWAo4J7_rH~Khcg~Bj42$j|b{Gfxb#NC)pk_&i-8N0{&3gE@YiQK3kf9!TjdT
z=E&BKTPCr0_{-Ox-ZlB1Zjg1^pCY}-|AzlG-B9d$)bEWaf_!h^VDO
*r%@5s~kJLq}{uUv|R`^SlIXzs|3^@EA#W3l