New Feature: Keyword Grouping / One-Click Keyword Addition

新功能:关键词分组 / 一键添加关键词
pull/174/head
Physton 2023-08-15 15:56:26 +08:00
parent ec53d79bc6
commit 787575aca2
36 changed files with 54071 additions and 60 deletions

View File

@ -129,6 +129,10 @@ Translation supports almost all national languages, but the UI interface of most
![](https://s1.imagehub.cc/images/2023/06/06/demo.custom_theme.gif)
- [One-Click Keyword Addition](https://aiodoc.physton.com/GroupTags.html)
![](https://s1.imagehub.cc/images/2023/08/15/demo.group_tags.gif)
## Donate
[Donation list](https://aiodoc.physton.com/Donate.html)

View File

@ -135,6 +135,10 @@ sd-webui-prompt-all-in-one 是一个基于 [stable-diffusion-webui](https://gith
![](https://s1.imagehub.cc/images/2023/06/06/demo.custom_theme.gif)
- [一键添加关键词](https://aiodoc.physton.com/zh-CN/GroupTags.html)
![](https://s1.imagehub.cc/images/2023/08/15/demo.group_tags.gif)
## 捐赠
[捐赠列表](https://aiodoc.physton.com/zh-CN/Donate.html)

View File

@ -129,6 +129,10 @@ sd-webui-prompt-all-in-one - это расширение, основанное
![](https://s1.imagehub.cc/images/2023/06/06/demo.custom_theme.gif)
- [Добавление ключевых слов в один клик](https://aiodoc.physton.com/ru/GroupTags.html)
![](https://s1.imagehub.cc/images/2023/08/15/demo.group_tags.gif)
## Пожертвования
[Список пожертвований](https://aiodoc.physton.com/ru/Donate.html)

View File

@ -135,6 +135,10 @@ sd-webui-prompt-all-in-one 是一個基於 [stable-diffusion-webui](https://gith
![](https://s1.imagehub.cc/images/2023/06/06/demo.custom_theme.gif)
- [一鍵添加關鍵詞](https://aiodoc.physton.com/zh-TW/GroupTags.html)
![](https://s1.imagehub.cc/images/2023/08/15/demo.group_tags.gif)
## 捐贈
[捐贈列表](https://aiodoc.physton.com/zh-TW/Donate.html)

4413
group_tags/de_DE.yaml Normal file

File diff suppressed because it is too large Load Diff

4408
group_tags/default.yaml Normal file

File diff suppressed because it is too large Load Diff

4412
group_tags/es_ES.yaml Normal file

File diff suppressed because it is too large Load Diff

4419
group_tags/fr_FR.yaml Normal file

File diff suppressed because it is too large Load Diff

4414
group_tags/it_IT.yaml Normal file

File diff suppressed because it is too large Load Diff

4304
group_tags/ja_JP.yaml Normal file

File diff suppressed because it is too large Load Diff

4412
group_tags/ko_KR.yaml Normal file

File diff suppressed because it is too large Load Diff

4414
group_tags/pt_PT.yaml Normal file

File diff suppressed because it is too large Load Diff

4413
group_tags/ru_RU.yaml Normal file

File diff suppressed because it is too large Load Diff

4490
group_tags/zh_CN.yaml Normal file

File diff suppressed because it is too large Load Diff

4490
group_tags/zh_HK.yaml Normal file

File diff suppressed because it is too large Load Diff

4490
group_tags/zh_TW.yaml Normal file

File diff suppressed because it is too large Load Diff

117
i18n.json
View File

@ -132,7 +132,14 @@
"disabled": "禁止",
"last_input_prompt": "最后输入的提示词",
"is_break_before_wrap": "是否在 “BREAK” 关键词前面加换行符。<br/>勾选后自动添加换行符。<br/>取消勾选将不做任何处理。",
"is_break_after_wrap": "是否在 “BREAK” 关键词后面加换行符。<br/>勾选后自动添加换行符。<br/>取消勾选将不做任何处理。"
"is_break_after_wrap": "是否在 “BREAK” 关键词后面加换行符。<br/>勾选后自动添加换行符。<br/>取消勾选将不做任何处理。",
"show_panel": "显示面板",
"hide_panel": "隐藏面板",
"show_group_tags": "显示分组标签",
"hide_group_tags": "隐藏分组标签",
"tags-copyright": "提示词整合来源 路过银河(知乎)、未知作者(Google Drive)、互联网等等,感谢这些作者的无私奉献!",
"reset_default_color": "重置为默认颜色",
"clear_color": "清除颜色"
}
},
{
@ -266,7 +273,14 @@
"disabled": "禁止",
"last_input_prompt": "最後輸入的提示詞",
"is_break_before_wrap": "是否在“BREAK”關鍵詞前面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。",
"is_break_after_wrap": "是否在“BREAK”關鍵詞後面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。"
"is_break_after_wrap": "是否在“BREAK”關鍵詞後面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。",
"show_panel": "顯示面板",
"hide_panel": "隱藏面板",
"show_group_tags": "顯示分組標籤",
"hide_group_tags": "隱藏分組標籤",
"tags-copyright": "提示詞整合來源 路過銀河(知乎)、未知作者(Google Drive)、互聯網等等,感謝這些作者的無私奉獻!",
"reset_default_color": "重置為預設顏色",
"clear_color": "清除顏色"
}
},
{
@ -400,7 +414,14 @@
"disabled": "禁止",
"last_input_prompt": "最後輸入的提示詞",
"is_break_before_wrap": "是否在「BREAK」關鍵詞前面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。",
"is_break_after_wrap": "是否在「BREAK」關鍵詞後面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。"
"is_break_after_wrap": "是否在「BREAK」關鍵詞後面加換行符。<br/>勾選後自動添加換行符。<br/>取消勾選將不做任何處理。",
"show_panel": "顯示面板",
"hide_panel": "隱藏面板",
"show_group_tags": "顯示分組標籤",
"hide_group_tags": "隱藏分組標籤",
"tags-copyright": "提示詞整合來源 路過銀河(知乎)、未知作者(Google Drive)、互聯網等等,感謝這些作者的無私奉獻!",
"reset_default_color": "重置為預設顏色",
"clear_color": "清除顏色"
}
},
{
@ -534,7 +555,14 @@
"disabled": "Disabled",
"last_input_prompt": "Last input prompt",
"is_break_before_wrap": "Whether to add a line break before the \"BREAK\" keyword.<br/>When selected, a line break will be automatically added.<br/>Deselecting will not perform any action.",
"is_break_after_wrap": "Whether to add a line break after the \"BREAK\" keyword.<br/>When selected, a line break will be automatically added.<br/>Deselecting will not perform any action."
"is_break_after_wrap": "Whether to add a line break after the \"BREAK\" keyword.<br/>When selected, a line break will be automatically added.<br/>Deselecting will not perform any action.",
"show_panel": "Show Panel",
"hide_panel": "Hide Panel",
"show_group_tags": "Show Group Tags",
"hide_group_tags": "Hide Group Tags",
"tags-copyright": "Prompt words integration source from 路过银河(知乎)、unknown author(Google Drive)、internet, etc. Thanks to these selfless contributors!",
"reset_default_color": "Reset to Default Color",
"clear_color": "Clear Color"
}
},
{
@ -679,7 +707,14 @@
"disabled": "معطل",
"last_input_prompt": "آخر تلميح مدخل",
"is_break_before_wrap": "هل ترغب في إضافة فاصلة قبل كلمة \"BREAK\".<br/>عند تحديدها، سيتم إضافة فاصلة تلقائيًا.<br/>عند إلغاء التحديد، لن يتم أي تغيير.",
"is_break_after_wrap": "هل ترغب في إضافة فاصلة بعد كلمة \"BREAK\".<br/>عند تحديدها، سيتم إضافة فاصلة تلقائيًا.<br/>عند إلغاء التحديد، لن يتم أي تغيير."
"is_break_after_wrap": "هل ترغب في إضافة فاصلة بعد كلمة \"BREAK\".<br/>عند تحديدها، سيتم إضافة فاصلة تلقائيًا.<br/>عند إلغاء التحديد، لن يتم أي تغيير.",
"show_panel": "عرض اللوحة",
"hide_panel": "إخفاء اللوحة",
"show_group_tags": "عرض علامات المجموعة",
"hide_group_tags": "إخفاء علامات المجموعة",
"tags-copyright": "مصدر دمج كلمات التلميح من لُطْفٍ بالمجرّة (زهو)، مؤلف غير معروف (جوجل درايف)، الإنترنت، وما إلى ذلك. شكرًا لهؤلاء المساهمين الذين يعملون بلا مقابل!",
"reset_default_color": "إعادة تعيين اللون الافتراضي",
"clear_color": "مسح اللون"
}
},
{
@ -912,7 +947,14 @@
"disabled": "Désactivé",
"last_input_prompt": "Dernier prompt d'entrée",
"is_break_before_wrap": "Ajouter un saut de ligne avant le mot clé \"BREAK\".<br/>Lorsqu'il est sélectionné, un saut de ligne sera automatiquement ajouté.<br/>La désélection n'effectuera aucune action.",
"is_break_after_wrap": "Ajouter un saut de ligne après le mot clé \"BREAK\".<br/>Lorsqu'il est sélectionné, un saut de ligne sera automatiquement ajouté.<br/>La désélection n'effectuera aucune action."
"is_break_after_wrap": "Ajouter un saut de ligne après le mot clé \"BREAK\".<br/>Lorsqu'il est sélectionné, un saut de ligne sera automatiquement ajouté.<br/>La désélection n'effectuera aucune action.",
"show_panel": "Afficher le panneau",
"hide_panel": "Masquer le panneau",
"show_group_tags": "Afficher les balises de groupe",
"hide_group_tags": "Masquer les balises de groupe",
"tags-copyright": "Source d'intégration des mots d'invite provenant de 路过银河(知乎)、auteur inconnu(Google Drive)、internet, etc. Merci à ces contributeurs altruistes !",
"reset_default_color": "Réinitialiser la couleur par défaut",
"clear_color": "Effacer la couleur"
}
},
{
@ -1060,7 +1102,14 @@
"disabled": "Deaktiviert",
"last_input_prompt": "Letzte Eingabeaufforderung",
"is_break_before_wrap": "Ob vor dem Schlüsselwort \"BREAK\" ein Zeilenumbruch hinzugefügt werden soll.<br/>Wenn ausgewählt, wird automatisch ein Zeilenumbruch hinzugefügt.<br/>Durch Abwählen wird keine Aktion durchgeführt.",
"is_break_after_wrap": "Ob nach dem Schlüsselwort \"BREAK\" ein Zeilenumbruch hinzugefügt werden soll.<br/>Wenn ausgewählt, wird automatisch ein Zeilenumbruch hinzugefügt.<br/>Durch Abwählen wird keine Aktion durchgeführt."
"is_break_after_wrap": "Ob nach dem Schlüsselwort \"BREAK\" ein Zeilenumbruch hinzugefügt werden soll.<br/>Wenn ausgewählt, wird automatisch ein Zeilenumbruch hinzugefügt.<br/>Durch Abwählen wird keine Aktion durchgeführt.",
"show_panel": "Panel anzeigen",
"hide_panel": "Panel ausblenden",
"show_group_tags": "Gruppentags anzeigen",
"hide_group_tags": "Gruppentags ausblenden",
"tags-copyright": "Quelle für die Integration von Hinweiswörtern von 路过银河(知乎)、unbekannter Autor(Google Drive)、Internet usw. Vielen Dank an diese selbstlosen Beitragenden!",
"reset_default_color": "Auf Standardfarbe zurücksetzen",
"clear_color": "Farbe löschen"
}
},
{
@ -1258,7 +1307,14 @@
"disabled": "Disabilitato",
"last_input_prompt": "Ultimo prompt di input",
"is_break_before_wrap": "Se aggiungere un'interruzione di riga prima della parola chiave \"BREAK\".<br/>Quando selezionato, verrà aggiunta automaticamente un'interruzione di riga.<br/>La deselezione non eseguirà alcuna azione.",
"is_break_after_wrap": "Se aggiungere un'interruzione di riga dopo la parola chiave \"BREAK\".<br/>Quando selezionato, verrà aggiunta automaticamente un'interruzione di riga.<br/>La deselezione non eseguirà alcuna azione."
"is_break_after_wrap": "Se aggiungere un'interruzione di riga dopo la parola chiave \"BREAK\".<br/>Quando selezionato, verrà aggiunta automaticamente un'interruzione di riga.<br/>La deselezione non eseguirà alcuna azione.",
"show_panel": "Mostra pannello",
"hide_panel": "Nascondi pannello",
"show_group_tags": "Mostra tag di gruppo",
"hide_group_tags": "Nascondi tag di gruppo",
"tags-copyright": "Fonte di integrazione delle parole di suggerimento da 路过银河(知乎)、autore sconosciuto(Google Drive)、internet, ecc. Grazie a questi generosi contributori!",
"reset_default_color": "Ripristina colore predefinito",
"clear_color": "Cancella colore"
}
},
{
@ -1391,7 +1447,14 @@
"disabled": "無効",
"last_input_prompt": "最後の入力プロンプト",
"is_break_before_wrap": "「BREAK」キーワードの前に改行を追加するかどうか。<br/>選択すると自動的に改行が追加されます。<br/>選択を解除すると何も行われません。",
"is_break_after_wrap": "「BREAK」キーワードの後に改行を追加するかどうか。<br/>選択すると自動的に改行が追加されます。<br/>選択を解除すると何も行われません。"
"is_break_after_wrap": "「BREAK」キーワードの後に改行を追加するかどうか。<br/>選択すると自動的に改行が追加されます。<br/>選択を解除すると何も行われません。",
"show_panel": "パネルを表示",
"hide_panel": "パネルを非表示",
"show_group_tags": "グループタグを表示",
"hide_group_tags": "グループタグを非表示",
"tags-copyright": "プロンプトの単語統合元 路过银河(知乎)、不明な作者(Google Drive)、インターネットなど、これらの無私の貢献者に感謝します!",
"reset_default_color": "デフォルトの色にリセット",
"clear_color": "色をクリア"
}
},
{
@ -1549,7 +1612,14 @@
"disabled": "비활성화됨",
"last_input_prompt": "마지막 입력 프롬프트",
"is_break_before_wrap": "\"BREAK\" 키워드 앞에 줄 바꿈을 추가하시겠습니까?<br/>선택하면 자동으로 줄 바꿈이 추가됩니다.<br/>선택 취소 시 아무 작업도 수행되지 않습니다.",
"is_break_after_wrap": "\"BREAK\" 키워드 뒤에 줄 바꿈을 추가하시겠습니까?<br/>선택하면 자동으로 줄 바꿈이 추가됩니다.<br/>선택 취소 시 아무 작업도 수행되지 않습니다."
"is_break_after_wrap": "\"BREAK\" 키워드 뒤에 줄 바꿈을 추가하시겠습니까?<br/>선택하면 자동으로 줄 바꿈이 추가됩니다.<br/>선택 취소 시 아무 작업도 수행되지 않습니다.",
"show_panel": "패널 표시",
"hide_panel": "패널 숨기기",
"show_group_tags": "그룹 태그 표시",
"hide_group_tags": "그룹 태그 숨기기",
"tags-copyright": "프롬프트 단어 통합 출처: 路过银河(知乎)、알 수 없는 작성자(Google Drive)、인터넷 등. 이러한 무비한 기여자들에게 감사드립니다!",
"reset_default_color": "기본 색상으로 재설정",
"clear_color": "색상 지우기"
}
},
{
@ -1797,7 +1867,14 @@
"disabled": "Desativado",
"last_input_prompt": "Último prompt de entrada",
"is_break_before_wrap": "Se deseja adicionar uma quebra de linha antes da palavra-chave \"BREAK\".<br/>Quando selecionado, uma quebra de linha será adicionada automaticamente.<br/>Desmarcar não executará nenhuma ação.",
"is_break_after_wrap": "Se deseja adicionar uma quebra de linha após a palavra-chave \"BREAK\".<br/>Quando selecionado, uma quebra de linha será adicionada automaticamente.<br/>Desmarcar não executará nenhuma ação."
"is_break_after_wrap": "Se deseja adicionar uma quebra de linha após a palavra-chave \"BREAK\".<br/>Quando selecionado, uma quebra de linha será adicionada automaticamente.<br/>Desmarcar não executará nenhuma ação.",
"show_panel": "Mostrar painel",
"hide_panel": "Ocultar painel",
"show_group_tags": "Mostrar etiquetas de grupo",
"hide_group_tags": "Ocultar etiquetas de grupo",
"tags-copyright": "Fonte de integração de palavras-chave de 路过银河(知乎)、autor desconhecido(Google Drive)、internet, etc. Obrigado a esses contribuidores altruístas!",
"reset_default_color": "Redefinir para cor padrão",
"clear_color": "Limpar cor"
}
},
{
@ -1945,7 +2022,14 @@
"disabled": "Отключено",
"last_input_prompt": "Последний запрос на ввод",
"is_break_before_wrap": "Добавить перенос строки перед ключевым словом \"BREAK\".<br/>При выборе автоматически будет добавлен перенос строки.<br/>Снятие выбора не приведет к выполнению никаких действий.",
"is_break_after_wrap": "Добавить перенос строки после ключевого слова \"BREAK\".<br/>При выборе автоматически будет добавлен перенос строки.<br/>Снятие выбора не приведет к выполнению никаких действий."
"is_break_after_wrap": "Добавить перенос строки после ключевого слова \"BREAK\".<br/>При выборе автоматически будет добавлен перенос строки.<br/>Снятие выбора не приведет к выполнению никаких действий.",
"show_panel": "Показать панель",
"hide_panel": "Скрыть панель",
"show_group_tags": "Показать групповые теги",
"hide_group_tags": "Скрыть групповые теги",
"tags-copyright": "Источник интеграции ключевых слов от 路过银河(知乎)、неизвестный автор(Google Drive)、интернет и т.д. Благодарим этих бескорыстных участников!",
"reset_default_color": "Сбросить настройки цвета",
"clear_color": "Очистить цвет"
}
},
{
@ -2108,7 +2192,14 @@
"disabled": "Deshabilitado",
"last_input_prompt": "Última indicación de entrada",
"is_break_before_wrap": "Si agregar un salto de línea antes de la palabra clave \"BREAK\".<br/>Cuando está seleccionado, se agregará automáticamente un salto de línea.<br/>Si no está seleccionado, no se realizará ninguna acción.",
"is_break_after_wrap": "Si agregar un salto de línea después de la palabra clave \"BREAK\".<br/>Cuando está seleccionado, se agregará automáticamente un salto de línea.<br/>Si no está seleccionado, no se realizará ninguna acción."
"is_break_after_wrap": "Si agregar un salto de línea después de la palabra clave \"BREAK\".<br/>Cuando está seleccionado, se agregará automáticamente un salto de línea.<br/>Si no está seleccionado, no se realizará ninguna acción.",
"show_panel": "Mostrar panel",
"hide_panel": "Ocultar panel",
"show_group_tags": "Mostrar etiquetas de grupo",
"hide_group_tags": "Ocultar etiquetas de grupo",
"tags-copyright": "Fuente de integración de palabras clave de 路过银河(知乎)、autor desconocido(Google Drive)、internet, etc. ¡Gracias a estos generosos colaboradores!",
"reset_default_color": "Restablecer a color predeterminado",
"clear_color": "Borrar color"
}
},
{

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -20,6 +20,7 @@ from scripts.physton_prompt.gen_openai import gen_openai
from scripts.physton_prompt.get_lang import get_lang
from scripts.physton_prompt.get_version import get_git_commit_version, get_git_remote_versions, get_latest_version
from scripts.physton_prompt.mbart50 import initialize as mbart50_initialize, translate as mbart50_translate
from scripts.physton_prompt.get_group_tags import get_group_tags
try:
from modules.shared import cmd_opts
@ -368,6 +369,10 @@ def on_app_started(_: gr.Blocks, app: FastAPI):
except Exception as e:
return {"success": False, 'message': str(e)}
@app.get("/physton_prompt/get_group_tags")
async def _get_group_tags(lang: str):
return {"tags": get_group_tags(lang)}
try:
translate_api = st.get('translateApi')
if translate_api == 'mbart50':

View File

@ -0,0 +1,21 @@
import os
def get_group_tags(lang):
current_dir = os.path.dirname(os.path.abspath(__file__))
tags_file = os.path.join(current_dir, '../../group_tags/', 'custom.yaml')
if not os.path.exists(tags_file):
tags_file = os.path.join(current_dir, '../../group_tags/', lang + '.yaml')
if not os.path.exists(tags_file):
tags_file = os.path.join(current_dir, '../../group_tags/', 'default.yaml')
if not os.path.exists(tags_file):
return ''
tags_file = os.path.normpath(tags_file)
tags = ''
try:
with open(tags_file, 'r', encoding='utf8') as f:
tags = f.read()
except:
pass
return tags

View File

@ -10,17 +10,21 @@
"dependencies": {
"autosize-input": "^1.0.2",
"axios": "^1.4.0",
"js-yaml": "^4.1.0",
"papaparse": "^5.4.1",
"sortablejs": "^1.15.0",
"tinycolor2": "^1.6.0",
"tippy.js": "^6.3.7",
"toastr": "^2.1.4",
"vue": "^3.2.47",
"vue-clipboard3": "^2.0.0"
"vue-clipboard3": "^2.0.0",
"vue3-colorpicker": "^2.2.2"
},
"devDependencies": {
"@vitejs/plugin-vue": "^4.0.0",
"less": "^4.1.3",
"less-loader": "^11.1.0",
"sass": "^1.65.1",
"vite": "^4.1.4"
}
}

View File

@ -44,6 +44,10 @@
@click:show-about="onShowAbout"
:theme="theme"
@click:switch-theme="onSwitchTheme"
:group-tags="groupTags"
:hide-group-tags="item.hideGroupTags"
v-model:group-tags-color="groupTagsColor"
@update:hide-group-tags="onUpdateHideGroupTags(item.id, $event)"
></physton-prompt>
</template>
<translate-setting ref="translateSetting" v-model:language-code="languageCode"
@ -123,6 +127,8 @@ import PackagesState from "@/components/packagesState.vue";
import ChatgptPrompt from "@/components/chatgptPrompt.vue";
import About from "@/components/about.vue";
import globals from "../globals";
import jsYaml from "js-yaml";
import {ref} from "vue";
export default {
name: 'App',
@ -160,6 +166,8 @@ export default {
hideDefaultInput: false,
hidePanelKey: 'txt2ImgHidePanel',
hidePanel: false,
hideGroupTagsKey: 'txt2ImgHideGroupTags',
hideGroupTags: false,
id: 'phystonPrompt_txt2img_prompt'
},
{
@ -179,6 +187,8 @@ export default {
hideDefaultInput: false,
hidePanelKey: 'txt2ImgNegHidePanel',
hidePanel: false,
hideGroupTagsKey: 'txt2ImgNegHideGroupTags',
hideGroupTags: false,
id: 'phystonPrompt_txt2img_neg_prompt'
},
{
@ -198,6 +208,8 @@ export default {
hideDefaultInput: false,
hidePanelKey: 'img2ImgHidePanel',
hidePanel: false,
hideGroupTagsKey: 'img2ImgHideGroupTags',
hideGroupTags: false,
id: 'phystonPrompt_img2img_prompt'
},
{
@ -217,6 +229,8 @@ export default {
hideDefaultInput: false,
hidePanelKey: 'img2ImgNegHidePanel',
hidePanel: false,
hideGroupTagsKey: 'img2ImgNegHideGroupTags',
hideGroupTags: false,
id: 'phystonPrompt_img2img_neg_prompt'
},
],
@ -265,6 +279,9 @@ export default {
isLatestVersion: true,
theme: 'dark',
groupTags: [],
groupTagsColor: {},
}
},
watch: {
@ -276,6 +293,7 @@ export default {
this.gradioAPI.setData('languageCode', val).then(data => {
}).catch(err => {
})
this.loadGroupTags()
},
immediate: false,
},
@ -428,6 +446,17 @@ export default {
},
immediate: false,
},
groupTagsColor: {
handler: function (val, oldVal) {
if (!this.startWatchSave) return
console.log('onGroupTagsColorChange', val, oldVal)
this.gradioAPI.setData('groupTagsColor', val).then(data => {
}).catch(err => {
})
},
deep: true,
immediate: false,
},
onlyCsvOnAuto() {
if (!this.startWatchSave) return
console.log('onOnlyCsvOnAutoChange', this.onlyCsvOnAuto)
@ -439,6 +468,7 @@ export default {
mounted() {
common.loadCSS('toastr.min.css', 'physton-prompt-toastr', true, true, false)
common.loadCSS('tippy.css', 'physton-prompt-tippy', true, true, false)
common.loadCSS('vue3-colorpicker.css', 'physton-prompt-vue3-colorpicker', true, true, false)
common.loadCSS('main.min.css', 'physton-prompt-main', true)
const urlParams = new URLSearchParams(window.location.search);
@ -482,10 +512,11 @@ export default {
},
init() {
this.loadExtraNetworks()
let dataListsKeys = ['languageCode', 'autoTranslate', 'autoTranslateToEnglish', 'autoTranslateToLocal', 'autoRemoveSpace', 'autoRemoveLastComma', 'autoKeepWeightZero', 'autoKeepWeightOne', 'autoBreakBeforeWrap', 'autoBreakAfterWrap', /*'hideDefaultInput', */'translateApi', 'enableTooltip', 'tagCompleteFile', 'onlyCsvOnAuto', 'extensionSelect.minimalist']
let dataListsKeys = ['languageCode', 'autoTranslate', 'autoTranslateToEnglish', 'autoTranslateToLocal', 'autoRemoveSpace', 'autoRemoveLastComma', 'autoKeepWeightZero', 'autoKeepWeightOne', 'autoBreakBeforeWrap', 'autoBreakAfterWrap', /*'hideDefaultInput', */'translateApi', 'enableTooltip', 'tagCompleteFile', 'onlyCsvOnAuto', 'extensionSelect.minimalist', 'groupTagsColor']
this.prompts.forEach(item => {
dataListsKeys.push(item.hideDefaultInputKey)
dataListsKeys.push(item.hidePanelKey)
dataListsKeys.push(item.hideGroupTagsKey)
})
this.gradioAPI.getDatas(dataListsKeys).then(data => {
@ -596,6 +627,16 @@ export default {
this.gradioAPI.setData('extensionSelect.minimalist', true)
}
if (data.groupTagsColor !== null) {
if (typeof data.groupTagsColor === 'object') {
this.groupTagsColor = {}
for (let key in data.groupTagsColor) {
let color = data.groupTagsColor[key]
this.groupTagsColor[key] = ref(common.fitterInputColor(color))
}
}
}
this.updateTranslateApiConfig()
this.$refs.extensionCss.init()
@ -606,6 +647,9 @@ export default {
if (data[item.hidePanelKey] !== null) {
item.hidePanel = data[item.hidePanelKey]
}
if (data[item.hideGroupTagsKey] !== null) {
item.hideGroupTags = data[item.hideGroupTagsKey]
}
item.$prompt = common.gradioApp().querySelector("#" + item.prompt)
item.$textarea = item.$prompt.getElementsByTagName("textarea")[0]
item.$steps = common.gradioApp().querySelector("#" + item.steps)
@ -622,6 +666,7 @@ export default {
})
this.handlePaste()
this.loadGroupTags()
/*this.gradioAPI.getVersion().then(res => {
this.version = res.version
@ -640,6 +685,23 @@ export default {
})*/
})
},
loadGroupTags() {
this.gradioAPI.getGroupTags(this.languageCode).then(data => {
if (!data || data === '') {
this.groupTags = []
} else {
try {
this.groupTags = jsYaml.load(data)
if (!Array.isArray(this.groupTags)) {
this.groupTags = []
}
} catch (e) {
console.log(e)
this.groupTags = []
}
}
})
},
updateTippyState() {
for (const $tippy of this.$tippyList) {
if (this.enableTooltip) {
@ -778,6 +840,12 @@ export default {
item.hidePanel = value
this.gradioAPI.setData(item.hidePanelKey, item.hidePanel)
},
onUpdateHideGroupTags(id, value) {
const item = this.prompts.find(item => item.id == id)
if (!item) return
item.hideGroupTags = value
this.gradioAPI.setData(item.hideGroupTagsKey, item.hideGroupTags)
},
onShowHistory(id, e) {
this.$refs.favorite.hide()
this.historyCurrentPrompt = id

View File

@ -2,7 +2,7 @@
<div class="physton-prompt" :name="name">
<div :class="['prompt-main', hidePanel ? 'fold': '']" @click="onPromptMainClick">
<div class="prompt-header">
<div class="prompt-unfold" @click="onUnfoldClick">
<div class="prompt-unfold" @click="onUnfoldClick" v-tooltip="getLang(hidePanel ? 'show_panel' : 'hide_panel')">
<icon-svg class="hover-scale-120" name="unfold"/>
</div>
<div class="prompt-header-title">{{ neg ? getLang('negative_prompt') : getLang('prompt') }}</div>
@ -276,6 +276,7 @@
<template v-else>
<div v-show="!editing[tag.id]"
:class="tag.classes"
:style="getTagColorStyle(tag)"
:ref="'promptTagValue-' + tag.id"
v-tooltip="getLang('click_to_edit') + '<br/>' + getLang('dblclick_to_disable') + '<br/>' + getLang('drop_to_order')"
@click="onTagClick(tag.id, $event)" @dblclick="onTagDblclick(tag.id)"
@ -402,6 +403,58 @@
</button>
</div>
</div>
<div v-if="groupTags.length" :class="['show-group-tags', hideGroupTags ? 'hided': '']" @click="onClickHideGroupTags"
v-tooltip="getLang(hideGroupTags ? 'show_group_tags' : 'hide_group_tags')">
<icon-svg class="hover-scale-120" name="unfold"/>
</div>
<div class="group-tabs" v-show="!hideGroupTags && groupTags.length">
<div class="group-header" ref="groupTabsHeader">
<div v-for="(item, index) in groupTags" :key="index" :class="['group-tab', index == groupTagsActive ? 'active' : '']" @click="activeGroupTab(index)">{{ item.name }}</div>
</div>
<div class="group-body">
<div v-for="(item, index) in groupTags" :key="index" :class="['group-main', index == groupTagsActive ? 'active' : '']">
<div class="sub-group-header" v-if="index == groupTagsActive">
<div class="sub-group-tab" v-for="(group, subIndex) in item.groups" :key="subIndex" :class="['sub-group-tab', subIndex == subGroupTagsActive ? 'active' : '']" @click="activeSubGroupTab(subIndex)">{{ group.name }}</div>
</div>
<div class="sub-group-body" v-if="index == groupTagsActive">
<div v-for="(group, subIndex) in item.groups" :key="subIndex" :class="['sub-group-main', subIndex == subGroupTagsActive ? 'active' : '']">
<div class="group-tags" v-if="subIndex == subGroupTagsActive">
<div class="tag-item" v-for="(local, en) in group.tags"
v-tooltip="getGroupTagTooltip(local, en)" unaffected="true"
@click="onClickGroupTag(local, en)" v-html="renderGroupTag(local, en, item.name, group.name)">
</div>
</div>
<div class="tags-footer">
<div class="tags-color">
<div>标签颜色:</div>
<div class="tags-color-picker hover-scale-120"
v-tooltip="groupTagsColor[getTagsColorKey(item.name, group.name)]"
unaffected="true">
<color-picker
:theme="theme == 'dark' ? 'black' : 'white'"
v-model:pureColor="groupTagsColor[getTagsColorKey(item.name, group.name)]"
@pureColorChange="onTagsColorChange(getTagsColorKey(item.name, group.name))"
/>
</div>
<div class="tags-color-reset hover-scale-120"
v-tooltip="getLang('reset_default_color')"
@click="onClickResetTagsColor(getTagsColorKey(item.name, group.name))">
<icon-svg name="reset"/>
</div>
<div class="tags-color-clear hover-scale-120"
v-tooltip="getLang('clear_color')"
@click="onClickClearTagsColor(getTagsColorKey(item.name, group.name))">
<icon-svg name="clear"/>
</div>
</div>
<div class="tags-copyright">{{ getLang('tags-copyright') }}</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<highlight-prompt ref="highlightPrompt" :textarea="textarea" :hide-default-input="hideDefaultInput"/>
</div>
@ -417,17 +470,20 @@ import VueNumberInput from '@/components/vue-number-input.vue'
import HeaderMixin from "@/mixins/phystonPrompt/headerMixin"
import DropMixin from "@/mixins/phystonPrompt/dropMixin"
import TagMixin from "@/mixins/phystonPrompt/tagMixin"
import GroupTagsMixin from "@/mixins/phystonPrompt/groupTagsMixin"
import IconSvg from "@/components/iconSvg.vue"
import HighlightPrompt from "@/components/highlightPrompt.vue";
import HighlightPrompt from "@/components/highlightPrompt.vue"
import {ColorPicker} from "vue3-colorpicker"
export default {
name: 'PhystonPrompt',
components: {
HighlightPrompt,
VueNumberInput,
IconSvg
IconSvg,
ColorPicker,
},
mixins: [LanguageMixin, HeaderMixin, DropMixin, TagMixin],
mixins: [LanguageMixin, HeaderMixin, DropMixin, TagMixin, GroupTagsMixin],
props: {
name: {
type: String,
@ -537,8 +593,20 @@ export default {
type: String,
default: 'dark',
},
groupTags: {
type: Array,
default: () => [],
},
emits: ['update:languageCode', 'update:autoTranslate', 'update:autoTranslateToEnglish', 'update:autoTranslateToLocal', 'update:autoRemoveSpace', 'update:autoRemoveLastComma', 'update:autoKeepWeightZero', 'update:autoKeepWeightOne', 'update:hideDefaultInput', 'update:hidePanel', 'update:enableTooltip', 'update:translateApi', 'click:translateApi', 'click:promptFormat', 'click:selectTheme', 'click:switchTheme', 'click:showAbout', 'click:selectLanguage', 'click:showHistory', 'click:showFavorite', 'refreshFavorites', 'click:showChatgpt'],
hideGroupTags: {
type: Boolean,
default: false,
},
groupTagsColor: {
type: Object,
default: () => ({}),
},
},
emits: ['update:languageCode', 'update:autoTranslate', 'update:autoTranslateToEnglish', 'update:autoTranslateToLocal', 'update:autoRemoveSpace', 'update:autoRemoveLastComma', 'update:autoKeepWeightZero', 'update:autoKeepWeightOne', 'update:hideDefaultInput', 'update:hidePanel', 'update:enableTooltip', 'update:translateApi', 'click:translateApi', 'click:promptFormat', 'click:selectTheme', 'click:switchTheme', 'click:showAbout', 'click:selectLanguage', 'click:showHistory', 'click:showFavorite', 'refreshFavorites', 'click:showChatgpt', 'update:hideGroupTags', 'update:groupTagsColor'],
data() {
return {
prompt: '',

View File

@ -21,11 +21,15 @@ onUiLoaded(() => {
mounted(el, binding) {
// data-tippy-content
el.setAttribute('data-tippy-content', binding.value)
// 如果有 unaffected 属性,则不受 localStorage 控制
let unaffected = el.getAttribute('unaffected')
unaffected = unaffected === null ? false : unaffected === 'true'
const instance = tippy(el, {
placement: 'bottom',
theme: 'light',
allowHTML: true,
onCreate(instance, partialProps) {
if (unaffected) return
const enable = localStorage.getItem('phystonPromptEnableTooltip') === 'true'
if (!enable) {
instance.disable()
@ -33,7 +37,7 @@ onUiLoaded(() => {
},
})
el.$tippyInstance = instance
app.config.globalProperties.$tippyList.push(instance)
if (!unaffected) app.config.globalProperties.$tippyList.push(instance)
},
updated(el, binding) {
el.setAttribute('data-tippy-content', binding.value)

View File

@ -0,0 +1,112 @@
import common from "@/utils/common"
import {ref} from "vue"
export default {
data() {
return {
groupTagsActive: 0,
subGroupTagsActive: 0,
groupTagsColorKeyCache: {},
}
},
watch: {
groupTags: {
handler() {
for (let item of this.groupTags) {
for (let group of item.groups) {
let key = this.getTagsColorKey(item.name, group.name)
if (!this.groupTagsColor[key]) {
this.groupTagsColor[key] = ref(common.fitterInputColor(group.color))
}
for (let en in group.tags) {
this.groupTagsColorKeyCache[en] = key
}
}
}
},
deep: true,
immediate: true,
},
},
methods: {
activeGroupTab(index) {
this.groupTagsActive = index
this.subGroupTagsActive = 0
let scrollLeft = this.$refs.groupTabsHeader.children[index].offsetLeft - this.$refs.groupTabsHeader.offsetWidth / 2 + this.$refs.groupTabsHeader.children[index].offsetWidth / 2
this.$refs.groupTabsHeader.scrollTo({
left: scrollLeft,
behavior: 'smooth'
})
},
activeSubGroupTab(index) {
this.subGroupTagsActive = index
},
onClickHideGroupTags() {
this.$emit('update:hideGroupTags', !this.hideGroupTags)
},
onClickGroupTag(local, en) {
this._appendTag(en, local, false, -1, 'text')
},
getGroupTagTooltip(local, en) {
let html = ''
if (local && local !== en) {
html += local + '<br/>'
}
html += en
return html
},
renderGroupTag(local, en, groupName = '', subGroupName = '') {
let html = ''
let style = ''
let colorKey = this.getTagsColorKey(groupName, subGroupName)
let color = ''
if (this.groupTagsColor[colorKey]) {
color = this.groupTagsColor[colorKey]
if (common.isColorTransparent(color)) {
// 如果是纯透明,则设为空
color = ''
}
}
if (color) {
style = 'style="background: ' + color + '"'
}
if (local && local !== en) {
html += '<div class="tag-local" ' + style + '>' + local + '</div>'
html += '<div class="tag-en">' + en + '</div>'
} else {
html += '<div class="tag-local" ' + style + '>' + en + '</div>'
}
return html
},
getTagsColorKey(groupName, subGroupName) {
return groupName + '||' + subGroupName
},
onTagsColorChange(key) {
this.$emit('update:groupTagsColor', this.groupTagsColor)
},
onClickResetTagsColor(key) {
for (let item of this.groupTags) {
for (let group of item.groups) {
let key2 = this.getTagsColorKey(item.name, group.name)
if (key === key2) {
this.groupTagsColor[key] = ref(common.fitterInputColor(group.color))
}
}
}
this.onTagsColorChange(key)
},
onClickClearTagsColor(key) {
this.groupTagsColor[key] = ref('rgba(0,0,0,0)')
this.onTagsColorChange(key)
},
getTagColorStyle(tag) {
if (tag.isLora || tag.isLyco || tag.isEmbedding) return {}
if (!this.groupTagsColorKeyCache[tag.value]) return {}
let key = this.groupTagsColorKeyCache[tag.value]
if (!this.groupTagsColor[key]) return {}
let color = this.groupTagsColor[key]
if (common.isColorTransparent(color)) return {}
return {background: color}
},
}
}

View File

@ -1,5 +1,8 @@
import splitTags from "@/utils/splitTags";
import globals from "../../globals";
import tinycolor from "tinycolor2";
const cache = {}
export default {
loraRegex: /^\<lora:\s*([^\:]+)\s*(:)?\s*([0-9\.]+)?\>$/,
@ -597,4 +600,28 @@ export default {
return document.body
}
},
fitterInputColor(color, defaultColor = 'rgba(0,0,0,0)') {
let cacheKey = 'fitterInputColor:' + color + ':' + defaultColor
if (cache[cacheKey]) return cache[cacheKey]
if (!color || color === '' || color === 'default' || color === 'none' || color === 'null' || color === 'undefined' || color === 'false' || color === 'true') {
cache[cacheKey] = defaultColor
return defaultColor
}
if (!tinycolor(color).isValid()) {
cache[cacheKey] = defaultColor
return defaultColor
}
cache[cacheKey] = color
return color
},
isColorTransparent(color) {
let cacheKey = 'isColorTransparent:' + color
if (cache[cacheKey]) return cache[cacheKey]
let result = tinycolor(color).getAlpha() === 0
cache[cacheKey] = result
return result
},
}

View File

@ -179,4 +179,8 @@ export default class GradioAPI {
const config = {timeout: 100000000000}
return (await this.api.post("/mbart50_initialize", {}, config)).data
}
async getGroupTags(lang) {
return (await this.api.get("/get_group_tags", {params: {lang}})).data.tags
}
}

View File

@ -191,6 +191,21 @@
}
}
}
// .physton-prompt .prompt-tags .show-group-tags icon-unfold
--pp-pt-pal-sgt-iconSvgUnfold-color: #4d4f4d;
// .physton-prompt .prompt-tags .group-tabs .group-header
--pp-pt-gt-groupHeader-background: rgba(0, 0, 0, 0.06);
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab:hover.active
--pp-pt-gt-gh-groupTabHoverActive-background: #999999;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab
--pp-pt-gt-gb-gm-sgh-subGroupTab-background: rgba(0, 0, 0, 0.06);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab:hover.active
--pp-pt-gt-gb-gm-sgh-subGroupTabHoverActive-border-bottom: 2px solid #999999;
}
&.dark {
@ -287,6 +302,21 @@
}
}
}
// .physton-prompt .prompt-tags .show-group-tags icon-unfold
--pp-pt-pal-sgt-iconSvgUnfold-color: #b3b3b3;
// .physton-prompt .prompt-tags .group-tabs .group-header
--pp-pt-gt-groupHeader-background: rgba(255, 255, 255, 0.12);
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab:hover.active
--pp-pt-gt-gh-groupTabHoverActive-background: #636363;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab
--pp-pt-gt-gb-gm-sgh-subGroupTab-background: rgba(255, 255, 255, 0.12);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab:hover.active
--pp-pt-gt-gb-gm-sgh-subGroupTabHoverActive-border-bottom: 2px solid #636363;
}
}

File diff suppressed because one or more lines are too long

4
styles/icons/clear.svg Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="uuid-29d31e47-8da9-4f3b-8d2f-4d64199acd89" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 103.38 112">
<path d="m93.91,112H10.35c-5.17,0-8.61-3.44-8.61-8.61v-.86l6.02-42.22c-4.31-.86-7.76-4.31-7.76-8.61v-17.23c0-5.17,3.45-8.61,8.61-8.61h25.85V8.61c0-5.17,3.45-8.61,8.61-8.61h17.23c5.17,0,8.61,3.44,8.61,8.61v17.23h25.85c5.17,0,8.61,3.44,8.61,8.61v17.23c0,4.31-3.45,7.75-7.76,8.62l6.02,42.22c.86,4.31-2.59,9.48-6.9,9.48,0,0-.84,0-.84,0Zm-15.51-21.54v12.92h15.51l-6.02-43.08H16.37l-6.02,43.08h15.51v-12.92c0-2.38,1.93-4.31,4.31-4.31s4.31,1.93,4.31,4.31v12.92h12.92v-12.92c0-2.38,1.93-4.31,4.31-4.31s4.31,1.93,4.31,4.31v12.92h12.92v-12.92c0-2.38,1.93-4.31,4.31-4.31h.84c2.38,0,4.31,1.93,4.31,4.31ZM9.47,34.46v17.23h86.15v-17.23H9.47ZM43.93,8.61v17.23h17.23V8.61h-17.23Z"/>
</svg>

After

Width:  |  Height:  |  Size: 848 B

6
styles/icons/reset.svg Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="uuid-403228a1-4a37-4731-b179-5bc02baf0e16" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96.06 93.75">
<path d="m49.19,37.44c2.56,0,4.94,1.06,6.62,2.75s2.75,4.06,2.75,6.62-1.06,4.94-2.75,6.62-4.06,2.75-6.62,2.75-4.94-1.06-6.62-2.75-2.75-4.06-2.75-6.62,1.06-4.94,2.75-6.62,4.06-2.75,6.62-2.75Z"/>
<path d="m7.25,25.94c3.5-7.06,8.81-13.19,15.38-17.69C30.44,2.88,39.69,0,49.19,0c12.44,0,24.31,4.94,33.12,13.75s13.75,20.69,13.75,33.12-4.94,24.31-13.75,33.12-20.69,13.75-33.12,13.75c-11.75,0-23-4.38-31.69-12.31S3.5,62.69,2.5,51l-.19-1.88,7.44-.62.19,1.88c.88,9.81,5.31,18.94,12.62,25.62,7.25,6.69,16.75,10.31,26.56,10.31,10.5,0,20.44-4.12,27.81-11.5s11.5-17.38,11.5-27.81-4.12-20.44-11.5-27.81-17.38-11.5-27.81-11.5c-8,0-15.75,2.44-22.31,6.94-5.12,3.56-9.31,8.19-12.25,13.62l-7.31-2.12v-.19Z"/>
<path d="m25.94,29l-17.62,5.94-1.75.56-.62-1.75L0,16.06l25.94,12.94Z"/>
</svg>

After

Width:  |  Height:  |  Size: 946 B

View File

@ -133,6 +133,12 @@
// .physton-prompt .prompt-main.fold .prompt-tags
--pp-pmf-promptTags-display: none;
// .physton-prompt .prompt-main.fold .show-group-tags
--pp-pmf-showGroupTags-display: none;
// .physton-prompt .prompt-main.fold .group-tabs
--pp-pmf-groupTabs-display: none;
// .physton-prompt .prompt-header
--pp-promptHeader-margin: 0;
//--pp-promptHeader-padding: 5px 10px;
@ -885,6 +891,184 @@
--pp-pt-pal-pag-td-tl-ti-itemTagLocalValue-font-size: 12px;
--pp-pt-pal-pag-td-tl-ti-itemTagLocalValue-margin-top: 2px;
// .physton-prompt .prompt-tags .show-group-tags
--pp-pt-pal-showGroupTags-position: relative;
--pp-pt-pal-showGroupTags-width: 20px;
--pp-pt-pal-showGroupTags-height: 20px;
--pp-pt-pal-showGroupTags-margin-top: -10px;
--pp-pt-pal-showGroupTags-margin-left: calc(100% - 22px);
--pp-pt-pal-showGroupTags-cursor: pointer;
// .physton-prompt .prompt-tags .show-group-tags icon-unfold
--pp-pt-pal-sgt-iconSvgUnfold-width: 20px;
--pp-pt-pal-sgt-iconSvgUnfold-height: 20px;
--pp-pt-pal-sgt-iconSvgUnfold-color: rgba(39, 105, 155, .5);
// .physton-prompt .prompt-tags .show-group-tags.hided
--pp-pt-pal-showGroupTagsHided-transform: rotate(180deg);
// .physton-prompt .prompt-tags .group-tabs
--pp-pt-groupTabs-margin-top: 2px;
// .physton-prompt .prompt-tags .group-tabs .group-header
--pp-pt-gt-groupHeader-display: flex;
--pp-pt-gt-groupHeader-flex-wrap: nowrap;
--pp-pt-gt-groupHeader-background: rgba(39, 105, 155, 0.1);
--pp-pt-gt-groupHeader-border-radius: 6px;
--pp-pt-gt-groupHeader-border-bottom-left-radius: 0;
--pp-pt-gt-groupHeader-border-bottom-right-radius: 0;
--pp-pt-gt-groupHeader-overflow: hidden;
--pp-pt-gt-groupHeader-overflow-x: auto;
// .physton-prompt .prompt-tags .group-tabs .group-header::-webkit-scrollbar
--pp-pt-gt-groupHeaderWebkitScrollbar-height: 4px;
--pp-pt-gt-groupHeaderWebkitScrollbar-background: rgba(39, 105, 155, 0.3);
// .physton-prompt .prompt-tags .group-tabs .group-header::-webkit-scrollbar-thumb
--pp-pt-gt-groupHeaderWebkitScrollbarThumb-background: rgba(39, 105, 155, 0.5);
--pp-pt-gt-groupHeaderWebkitScrollbarThumb-border-radius: 2px;
// .physton-prompt .prompt-tags .group-tabs .group-header::-webkit-scrollbar-thumb:hover
--pp-pt-gt-groupHeaderWebkitScrollbarThumbHover-background: rgba(39, 105, 155, 0.7);
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab
--pp-pt-gt-gh-groupTab-cursor: pointer;
--pp-pt-gt-gh-groupTab-padding: 8px 14px;
--pp-pt-gt-gh-groupTab-border-right: 1px solid #e0e0e0;
--pp-pt-gt-gh-groupTab-font-size: 14px;
--pp-pt-gt-gh-groupTab-color: #000;
--pp-pt-gt-gh-groupTab-white-space: nowrap;
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab:hover.active
--pp-pt-gt-gh-groupTabHoverActive-background: #262d97;
--pp-pt-gt-gh-groupTabHoverActive-color: #fff;
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab:last-child
--pp-pt-gt-gh-groupTabLastChild-border-right: 0;
// .physton-prompt .prompt-tags .group-tabs .group-body
--pp-pt-gt-groupBody-padding: 4px;
--pp-pt-gt-groupBody-border: 1px dashed rgba(39, 105, 155, .3);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main
--pp-pt-gt-gb-groupMain-display: none;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main.active
--pp-pt-gt-gb-groupMainActive-display: block;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header
--pp-pt-gt-gb-gm-subGroupHeader-display: flex;
--pp-pt-gt-gb-gm-subGroupHeader-flex-wrap: wrap;
--pp-pt-gt-gb-gm-subGroupHeader-align-items: center;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab
--pp-pt-gt-gb-gm-sgh-subGroupTab-cursor: pointer;
--pp-pt-gt-gb-gm-sgh-subGroupTab-padding: 6px 10px;
--pp-pt-gt-gb-gm-sgh-subGroupTab-border-bottom: 2px solid transparent;
--pp-pt-gt-gb-gm-sgh-subGroupTab-background: rgba(28, 71, 104, 0.1);
--pp-pt-gt-gb-gm-sgh-subGroupTab-border-radius: 2px;
--pp-pt-gt-gb-gm-sgh-subGroupTab-margin-bottom: 4px;
--pp-pt-gt-gb-gm-sgh-subGroupTab-font-size: 14px;
--pp-pt-gt-gb-gm-sgh-subGroupTab-color: #000;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab:hover.active
--pp-pt-gt-gb-gm-sgh-subGroupTabHoverActive-border-bottom: 2px solid @common-blue;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main
--pp-pt-gt-gb-gm-subGroupMain-display: none;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main.active
--pp-pt-gt-gb-gm-subGroupMainActive-display: block;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags
--pp-pt-gt-gb-gm-sgm-groupTags-display: flex;
--pp-pt-gt-gb-gm-sgm-groupTags-flex-wrap: wrap;
--pp-pt-gt-gb-gm-sgm-groupTags-align-items: self-start;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item
--pp-pt-gt-gb-gm-sgm-gt-tagItem-margin: 4px;
--pp-pt-gt-gb-gm-sgm-gt-tagItem-cursor: pointer;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item:hover
--pp-pt-gt-gb-gm-sgm-gt-tagItemHover-background: rgba(0, 0, 0, .1);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item .tag-local
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-padding: 4px 10px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-background: rgba(0, 187, 255, .1);
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-border-top-left-radius: 4px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-border-bottom-left-radius: 4px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-text-align: center;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-font-size: 14px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-color: #2c2c2c;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-max-width: 300px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-white-space: nowrap;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-text-overflow: ellipsis;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-overflow: hidden;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item .tag-en
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-padding: 4px 10px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-background: rgba(0, 0, 0, .06);
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-border-top-right-radius: 4px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-border-bottom-right-radius: 4px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-text-align: center;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-font-size: 12px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-color: #7f7f7f;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-max-width: 300px;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-white-space: nowrap;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-text-overflow: ellipsis;
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-overflow: hidden;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer
--pp-pt-gt-gb-gm-sgm-tagsFooter-margin-top: 5px;
--pp-pt-gt-gb-gm-sgm-tagsFooter-padding-top: 5px;
--pp-pt-gt-gb-gm-sgm-tagsFooter-display: flex;
--pp-pt-gt-gb-gm-sgm-tagsFooter-justify-content: space-between;
--pp-pt-gt-gb-gm-sgm-tagsFooter-align-items: center;
--pp-pt-gt-gb-gm-sgm-tagsFooter-border-top: 1px dashed rgba(0, 0, 0, 0.04);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color
--pp-pt-gt-gb-gm-sgm-tf-tagsColor-display: flex;
--pp-pt-gt-gb-gm-sgm-tf-tagsColor-justify-content: flex-start;
--pp-pt-gt-gb-gm-sgm-tf-tagsColor-align-items: center;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color > div
--pp-pt-gt-gb-gm-sgm-tf-tc-div-font-size: 14px;
--pp-pt-gt-gb-gm-sgm-tf-tc-div-color: #7f7f7f;
--pp-pt-gt-gb-gm-sgm-tf-tc-div-white-space: nowrap;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .tags-color-reset, .tags-color-clear
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-width: 20px;
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-height: 20px;
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-border-radius: 2px;
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-border: 1px solid #ccc;
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-display: flex;
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-justify-content: center;
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-align-items: center;
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-margin-left: 5px;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .tags-color-reset, .tags-color-clear icon-svg-reset, icon-svg-clear
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-width: 16px;
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-height: 16px;
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-color: #7f7f7f;
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-width: 16px;
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-height: 16px;
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-color: #7f7f7f;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .tags-color-picker
--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorPicker-margin-left: 5px;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .vc-color-wrap
--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-width: 20px;
--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-height: 20px;
--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-border: 1px solid #ccc;
--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-margin-right: 0;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-copyright
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-color: #7f7f7f;
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-font-size: 12px;
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-transform-origin: top right;
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-transform: scale(.9);
// .physton-prompt-favorite, .physton-prompt-history
--ppfpph-width: 500px;
--ppfpph-padding: 0;
@ -2088,6 +2272,14 @@
.prompt-tags {
display: var(--pp-pmf-promptTags-display);
}
.show-group-tags {
display: var(--pp-pmf-showGroupTags-display);
}
.group-tabs {
display: var(--pp-pmf-groupTabs-display);
}
}
}
@ -2914,6 +3106,209 @@
}
}
}
.show-group-tags {
position: var(--pp-pt-pal-showGroupTags-position);
width: var(--pp-pt-pal-showGroupTags-width);
height: var(--pp-pt-pal-showGroupTags-height);
margin-top: var(--pp-pt-pal-showGroupTags-margin-top);
margin-left: var(--pp-pt-pal-showGroupTags-margin-left);
cursor: var(--pp-pt-pal-showGroupTags-cursor);
.set-icon-svg(var(--pp-pt-pal-sgt-iconSvgUnfold-width), var(--pp-pt-pal-sgt-iconSvgUnfold-height), var(--pp-pt-pal-sgt-iconSvgUnfold-color), icon-svg-unfold);
&.hided {
transform: var(--pp-pt-pal-showGroupTagsHided-transform);
}
}
.group-tabs {
margin-top: var(--pp-pt-groupTabs-margin-top);
.group-header {
display: var(--pp-pt-gt-groupHeader-display);
flex-wrap: var(--pp-pt-gt-groupHeader-flex-wrap);
background: var(--pp-pt-gt-groupHeader-background);
border-radius: var(--pp-pt-gt-groupHeader-border-radius);
border-bottom-left-radius: var(--pp-pt-gt-groupHeader-border-bottom-left-radius);
border-bottom-right-radius: var(--pp-pt-gt-groupHeader-border-bottom-right-radius);
overflow: var(--pp-pt-gt-groupHeader-overflow);
overflow-x: var(--pp-pt-gt-groupHeader-overflow-x);
&::-webkit-scrollbar {
height: var(--pp-pt-gt-groupHeaderWebkitScrollbar-height);
background: var(--pp-pt-gt-groupHeaderWebkitScrollbar-background);
}
&::-webkit-scrollbar-thumb {
background: var(--pp-pt-gt-groupHeaderWebkitScrollbarThumb-background);
border-radius: var(--pp-pt-gt-groupHeaderWebkitScrollbarThumb-border-radius);
&:hover {
background: var(--pp-pt-gt-groupHeaderWebkitScrollbarThumbHover-background);
}
}
.group-tab {
cursor: var(--pp-pt-gt-gh-groupTab-cursor);
padding: var(--pp-pt-gt-gh-groupTab-padding);
border-right: var(--pp-pt-gt-gh-groupTab-border-right);
font-size: var(--pp-pt-gt-gh-groupTab-font-size);
color: var(--pp-pt-gt-gh-groupTab-color);
white-space: var(--pp-pt-gt-gh-groupTab-white-space);
&:hover, &.active {
background: var(--pp-pt-gt-gh-groupTabHoverActive-background);
color: var(--pp-pt-gt-gh-groupTabHoverActive-color);
}
&:last-child {
border-right: var(--pp-pt-gt-gh-groupTabLastChild-border-right);
}
}
}
.group-body {
padding: var(--pp-pt-gt-groupBody-padding);
border: var(--pp-pt-gt-groupBody-border);
.group-main {
display: var(--pp-pt-gt-gb-groupMain-display);
&.active {
display: var(--pp-pt-gt-gb-groupMainActive-display);
}
.sub-group-header {
display: var(--pp-pt-gt-gb-gm-subGroupHeader-display);
flex-wrap: var(--pp-pt-gt-gb-gm-subGroupHeader-flex-wrap);
align-items: var(--pp-pt-gt-gb-gm-subGroupHeader-align-items);
.sub-group-tab {
cursor: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-cursor);
padding: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-padding);
border-bottom: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-border-bottom);
background: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-background);
border-radius: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-border-radius);
margin-bottom: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-margin-bottom);
font-size: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-font-size);
color: var(--pp-pt-gt-gb-gm-sgh-subGroupTab-color);
&:hover, &.active {
border-bottom: var(--pp-pt-gt-gb-gm-sgh-subGroupTabHoverActive-border-bottom);
}
}
}
.sub-group-body {
}
.sub-group-main {
display: var(--pp-pt-gt-gb-gm-subGroupMain-display);
&.active {
display: var(--pp-pt-gt-gb-gm-subGroupMainActive-display);
}
.group-tags {
display: var(--pp-pt-gt-gb-gm-sgm-groupTags-display);
flex-wrap: var(--pp-pt-gt-gb-gm-sgm-groupTags-flex-wrap);
align-items: var(--pp-pt-gt-gb-gm-sgm-groupTags-align-items);
.tag-item {
margin: var(--pp-pt-gt-gb-gm-sgm-gt-tagItem-margin);
cursor: var(--pp-pt-gt-gb-gm-sgm-gt-tagItem-cursor);
&:hover {
background: var(--pp-pt-gt-gb-gm-sgm-gt-tagItemHover-background);
}
.tag-local {
padding: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-padding);
background: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-background);
border-top-left-radius: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-border-top-left-radius);
border-bottom-left-radius: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-border-bottom-left-radius);
text-align: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-text-align);
font-size: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-font-size);
color: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-color);
max-width: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-max-width);
white-space: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-white-space);
text-overflow: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-text-overflow);
overflow: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-overflow);
}
.tag-en {
padding: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-padding);
background: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-background);
border-top-right-radius: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-border-top-right-radius);
border-bottom-right-radius: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-border-bottom-right-radius);
text-align: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-text-align);
font-size: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-font-size);
color: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-color);
max-width: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-max-width);
white-space: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-white-space);
text-overflow: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-text-overflow);
overflow: var(--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-overflow);
}
}
}
.tags-footer {
margin-top: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-margin-top);
padding-top: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-padding-top);
display: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-display);
justify-content: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-justify-content);
align-items: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-align-items);
border-top: var(--pp-pt-gt-gb-gm-sgm-tagsFooter-border-top);
.tags-color {
display: var(--pp-pt-gt-gb-gm-sgm-tf-tagsColor-display);
justify-content: var(--pp-pt-gt-gb-gm-sgm-tf-tagsColor-justify-content);
align-items: var(--pp-pt-gt-gb-gm-sgm-tf-tagsColor-align-items);
> div {
font-size: var(--pp-pt-gt-gb-gm-sgm-tf-tc-div-font-size);
color: var(--pp-pt-gt-gb-gm-sgm-tf-tc-div-color);
white-space: var(--pp-pt-gt-gb-gm-sgm-tf-tc-div-white-space);
}
.tags-color-reset, .tags-color-clear {
width: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-width);
height: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-height);
border-radius: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-border-radius);
border: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-border);
display: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-display);
justify-content: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-justify-content);
align-items: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-align-items);
margin-left: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorResetClear-margin-left);
.set-icon-svg(var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-width), var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-height), var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-color), icon-svg-reset);
.set-icon-svg(var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-width), var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-height), var(--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-color), icon-svg-clear);
}
.tags-color-picker {
margin-left: var(--pp-pt-gt-gb-gm-sgm-tf-tc-tagsColorPicker-margin-left);
}
.vc-color-wrap {
width: var(--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-width) !important;
height: var(--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-height) !important;
border: var(--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-border);
margin-right: var(--pp-pt-gt-gb-gm-sgm-tf-tc-vcColorWrap-margin-right) !important;
}
}
.tags-copyright {
color: var(--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-color);
font-size: var(--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-font-size);
transform-origin: var(--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-transform-origin);
transform: var(--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-transform);
}
}
}
}
}
}
}
.physton-prompt-favorite, .physton-prompt-history {
@ -3976,7 +4371,6 @@
}
.physton-gradio-container {
&.light {
// 浅色主题
@ -4070,5 +4464,35 @@
}
}
}
// .physton-prompt .prompt-tags .show-group-tags icon-unfold
--pp-pt-pal-sgt-iconSvgUnfold-color: rgba(28, 71, 104, 1);
// .physton-prompt .prompt-tags .group-tabs .group-header
--pp-pt-gt-groupHeader-background: rgba(28, 71, 104, 0.5);
// .physton-prompt .prompt-tags .group-tabs .group-header .group-tab
--pp-pt-gt-gh-groupTab-color: rgba(255, 255, 255, 0.85);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-header .sub-group-tab
--pp-pt-gt-gb-gm-sgh-subGroupTab-background: rgba(28, 71, 104, 0.5);
--pp-pt-gt-gb-gm-sgh-subGroupTab-color: rgba(255, 255, 255, 0.85);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item .tag-local
--pp-pt-gt-gb-gm-sgm-gt-ti-tagLocal-color: rgba(255, 255, 255, 0.85);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .group-tags .tag-item .tag-en
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-background: rgba(255, 255, 255, 0.12);
--pp-pt-gt-gb-gm-sgm-gt-ti-tagEn-color: #a6a6a6;
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color > div
--pp-pt-gt-gb-gm-sgm-tf-tc-div-color: rgba(255, 255, 255, 0.85);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-color .tags-color-reset, .tags-color-clear icon-svg-reset, icon-svg-clear
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgReset-color: rgba(255, 255, 255, 0.85);
--pp-pt-gt-gb-gm-sgm-tf-tc-tcrc-iconSvgClear-color: rgba(255, 255, 255, 0.85);
// .physton-prompt .prompt-tags .group-tabs .group-body .group-main .sub-group-main .tags-footer .tags-copyright
--pp-pt-gt-gb-gm-sgm-tf-tagsCopyRight-color: rgba(255, 255, 255, 0.85);
}
}

2
styles/main.min.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -3395,6 +3395,7 @@
"support": {
"zh_CN": "cn",
"zh_HK": "yue",
"zh_TW": "yue",
"en_US": "en",
"en_GB": "en",
"af_ZA": "af",
@ -3504,6 +3505,7 @@
"support": {
"zh_CN": "cn",
"zh_HK": "yue",
"zh_TW": "yue",
"en_US": "en",
"en_GB": "en",
"ar_SA": "ar",