commit b148a8a181737313229842f01fbb1c835538dac0 Author: wood Date: Thu Aug 10 01:58:07 2023 +0800 update diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..42a78bd --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 wood chen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..05b77a0 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# ChatGPT-Tailwind + +基于openai接口,Tailwind CSS + DaisyUI开发的用于chatgpt单页面应用,超轻超快,可以来回问答 + +可以自定义修改模型参数,不过请求方式都是openai接口 + +*练手页面,有问题请进群反馈* + +Telegram交流群:https://t.me/ai_cn2023 + + +## 例子 + +![1691602575992.png](https://cdn-img.czl.net/2023/08/10/64d3cea9db3be.png) + +![1691602613726.png](https://cdn-img.czl.net/2023/08/10/64d3cecf903b7.png) + + +## 使用方法 + +1. 直接访问右侧域名,在页面中填入自己的代理地址、key、选择模型,发送消息即可。 +2. 如果无法访问,可自行下载index.html,本地打开即可。 + +## 优点 + +1. 左右布局,看起来更美观 +2. 单页面应用,访问速度快 +3. 现代化UI + + +# 广告 +- [CZLChat](https://chat.czl.net),稳定商业版AI服务。 +- [CZLOapi](https://oapi.czl.net),AI接口代理服务,无需翻墙。 diff --git a/css.css b/css.css new file mode 100644 index 0000000..d909805 --- /dev/null +++ b/css.css @@ -0,0 +1,655 @@ +.prose{ + color: var(--tw-prose-body); + /* max-width: 65ch; */ + } + + .prose :where([class~="lead"]):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-lead); + font-size: 1.25em; + line-height: 1.6; + margin-top: 1.2em; + margin-bottom: 1.2em + } + + .prose :where(a):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-links); + text-decoration: underline; + font-weight: 500 + } + + .prose :where(strong):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-bold); + font-weight: 600 + } + + .prose :where(ol):not(:where([class~="not-prose"] *)){ + list-style-type: decimal; + padding-left: 1.625em + } + + .prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)){ + list-style-type: upper-alpha + } + + .prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)){ + list-style-type: lower-alpha + } + + .prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)){ + list-style-type: upper-alpha + } + + .prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)){ + list-style-type: lower-alpha + } + + .prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)){ + list-style-type: upper-roman + } + + .prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)){ + list-style-type: lower-roman + } + + .prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)){ + list-style-type: upper-roman + } + + .prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)){ + list-style-type: lower-roman + } + + .prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)){ + list-style-type: decimal + } + + .prose :where(ul):not(:where([class~="not-prose"] *)){ + list-style-type: disc; + padding-left: 1.625em + } + + .prose :where(ol > li):not(:where([class~="not-prose"] *))::marker{ + font-weight: 400; + color: var(--tw-prose-counters) + } + + .prose :where(ul > li):not(:where([class~="not-prose"] *))::marker{ + color: var(--tw-prose-bullets) + } + + .prose :where(hr):not(:where([class~="not-prose"] *)){ + border-color: var(--tw-prose-hr); + border-top-width: 1px; + margin-top: 3em; + margin-bottom: 3em + } + + .prose :where(blockquote):not(:where([class~="not-prose"] *)){ + font-weight: 500; + font-style: italic; + color: var(--tw-prose-quotes); + border-left-width: 0.25rem; + border-left-color: var(--tw-prose-quote-borders); + quotes: "\201C""\201D""\2018""\2019"; + margin-top: 1.6em; + margin-bottom: 1.6em; + padding-left: 1em + } + + .prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *))::before{ + content: open-quote + } + + .prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"] *))::after{ + content: close-quote + } + + .prose :where(h1):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-headings); + font-weight: 800; + font-size: 2.25em; + margin-top: 0; + margin-bottom: 0.8888889em; + line-height: 1.1111111 + } + + .prose :where(h1 strong):not(:where([class~="not-prose"] *)){ + font-weight: 900 + } + + .prose :where(h2):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-headings); + font-weight: 700; + font-size: 1.5em; + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3333333 + } + + .prose :where(h2 strong):not(:where([class~="not-prose"] *)){ + font-weight: 800 + } + + .prose :where(h3):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-headings); + font-weight: 600; + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6 + } + + .prose :where(h3 strong):not(:where([class~="not-prose"] *)){ + font-weight: 700 + } + + .prose :where(h4):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5 + } + + .prose :where(h4 strong):not(:where([class~="not-prose"] *)){ + font-weight: 700 + } + + .prose :where(figure > *):not(:where([class~="not-prose"] *)){ + margin-top: 0; + margin-bottom: 0 + } + + .prose :where(figcaption):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-captions); + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em + } + + .prose :where(code):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-code); + font-weight: 600; + font-size: 0.875em + } + + .prose :where(code):not(:where([class~="not-prose"] *))::before{ + content: "`" + } + + .prose :where(code):not(:where([class~="not-prose"] *))::after{ + content: "`" + } + + .prose :where(a code):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-links) + } + + .prose :where(pre):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-pre-code); + background-color: var(--tw-prose-pre-bg); + overflow-x: auto; + font-weight: 400; + font-size: 0.875em; + line-height: 1.7142857; + margin-top: 1.7142857em; + margin-bottom: 1.7142857em; + border-radius: 0.375rem; + padding-top: 0.8571429em; + padding-right: 1.1428571em; + padding-bottom: 0.8571429em; + padding-left: 1.1428571em + } + + .prose :where(pre code):not(:where([class~="not-prose"] *)){ + background-color: transparent; + border-width: 0; + border-radius: 0; + padding: 0; + font-weight: inherit; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit + } + + .prose :where(pre code):not(:where([class~="not-prose"] *))::before{ + content: none + } + + .prose :where(pre code):not(:where([class~="not-prose"] *))::after{ + content: none + } + + .prose :where(table):not(:where([class~="not-prose"] *)){ + width: 100%; + table-layout: auto; + text-align: left; + margin-top: 2em; + margin-bottom: 2em; + font-size: 0.875em; + line-height: 1.7142857 + } + + .prose :where(thead):not(:where([class~="not-prose"] *)){ + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-th-borders) + } + + .prose :where(thead th):not(:where([class~="not-prose"] *)){ + color: var(--tw-prose-headings); + font-weight: 600; + vertical-align: bottom; + padding-right: 0.5714286em; + padding-bottom: 0.5714286em; + padding-left: 0.5714286em + } + + .prose :where(tbody tr):not(:where([class~="not-prose"] *)){ + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-td-borders) + } + + .prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)){ + border-bottom-width: 0 + } + + .prose :where(tbody td):not(:where([class~="not-prose"] *)){ + vertical-align: baseline; + padding-top: 0.5714286em; + padding-right: 0.5714286em; + padding-bottom: 0.5714286em; + padding-left: 0.5714286em + } + + .prose{ + --tw-prose-body: #374151; + --tw-prose-headings: #111827; + --tw-prose-lead: #4b5563; + --tw-prose-links: #111827; + --tw-prose-bold: #111827; + --tw-prose-counters: #6b7280; + --tw-prose-bullets: #d1d5db; + --tw-prose-hr: #e5e7eb; + --tw-prose-quotes: #111827; + --tw-prose-quote-borders: #e5e7eb; + --tw-prose-captions: #6b7280; + --tw-prose-code: #111827; + --tw-prose-pre-code: #e5e7eb; + --tw-prose-pre-bg: #1f2937; + --tw-prose-th-borders: #d1d5db; + --tw-prose-td-borders: #e5e7eb; + --tw-prose-invert-body: #d1d5db; + --tw-prose-invert-headings: #fff; + --tw-prose-invert-lead: #9ca3af; + --tw-prose-invert-links: #fff; + --tw-prose-invert-bold: #fff; + --tw-prose-invert-counters: #9ca3af; + --tw-prose-invert-bullets: #4b5563; + --tw-prose-invert-hr: #374151; + --tw-prose-invert-quotes: #f3f4f6; + --tw-prose-invert-quote-borders: #374151; + --tw-prose-invert-captions: #9ca3af; + --tw-prose-invert-code: #fff; + --tw-prose-invert-pre-code: #d1d5db; + --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); + --tw-prose-invert-th-borders: #4b5563; + --tw-prose-invert-td-borders: #374151; + font-size: 1rem; + line-height: 1.75 + } + + .prose :where(p):not(:where([class~="not-prose"] *)){ + margin-top: 1.25em; + margin-bottom: 1.25em + } + + .prose :where(img):not(:where([class~="not-prose"] *)){ + margin-top: 2em; + margin-bottom: 2em + } + + .prose :where(video):not(:where([class~="not-prose"] *)){ + margin-top: 2em; + margin-bottom: 2em + } + + .prose :where(figure):not(:where([class~="not-prose"] *)){ + margin-top: 2em; + margin-bottom: 2em + } + + .prose :where(h2 code):not(:where([class~="not-prose"] *)){ + font-size: 0.875em + } + + .prose :where(h3 code):not(:where([class~="not-prose"] *)){ + font-size: 0.9em + } + + .prose :where(li):not(:where([class~="not-prose"] *)){ + margin-top: 0.5em; + margin-bottom: 0.5em + } + + .prose :where(ol > li):not(:where([class~="not-prose"] *)){ + padding-left: 0.375em + } + + .prose :where(ul > li):not(:where([class~="not-prose"] *)){ + padding-left: 0.375em + } + + .prose > :where(ul > li p):not(:where([class~="not-prose"] *)){ + margin-top: 0.75em; + margin-bottom: 0.75em + } + + .prose > :where(ul > li > *:first-child):not(:where([class~="not-prose"] *)){ + margin-top: 1.25em + } + + .prose > :where(ul > li > *:last-child):not(:where([class~="not-prose"] *)){ + margin-bottom: 1.25em + } + + .prose > :where(ol > li > *:first-child):not(:where([class~="not-prose"] *)){ + margin-top: 1.25em + } + + .prose > :where(ol > li > *:last-child):not(:where([class~="not-prose"] *)){ + margin-bottom: 1.25em + } + + .prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"] *)){ + margin-top: 0.75em; + margin-bottom: 0.75em + } + + .prose :where(hr + *):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .prose :where(h2 + *):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .prose :where(h3 + *):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .prose :where(h4 + *):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .prose :where(thead th:first-child):not(:where([class~="not-prose"] *)){ + padding-left: 0 + } + + .prose :where(thead th:last-child):not(:where([class~="not-prose"] *)){ + padding-right: 0 + } + + .prose :where(tbody td:first-child):not(:where([class~="not-prose"] *)){ + padding-left: 0 + } + + .prose :where(tbody td:last-child):not(:where([class~="not-prose"] *)){ + padding-right: 0 + } + + .prose > :where(:first-child):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .prose > :where(:last-child):not(:where([class~="not-prose"] *)){ + margin-bottom: 0 + } + + .prose-slate{ + --tw-prose-body: #334155; + --tw-prose-headings: #0f172a; + --tw-prose-lead: #475569; + --tw-prose-links: #0f172a; + --tw-prose-bold: #0f172a; + --tw-prose-counters: #64748b; + --tw-prose-bullets: #cbd5e1; + --tw-prose-hr: #e2e8f0; + --tw-prose-quotes: #0f172a; + --tw-prose-quote-borders: #e2e8f0; + --tw-prose-captions: #64748b; + --tw-prose-code: #0f172a; + --tw-prose-pre-code: #e2e8f0; + --tw-prose-pre-bg: #1e293b; + --tw-prose-th-borders: #cbd5e1; + --tw-prose-td-borders: #e2e8f0; + --tw-prose-invert-body: #cbd5e1; + --tw-prose-invert-headings: #fff; + --tw-prose-invert-lead: #94a3b8; + --tw-prose-invert-links: #fff; + --tw-prose-invert-bold: #fff; + --tw-prose-invert-counters: #94a3b8; + --tw-prose-invert-bullets: #475569; + --tw-prose-invert-hr: #334155; + --tw-prose-invert-quotes: #f1f5f9; + --tw-prose-invert-quote-borders: #334155; + --tw-prose-invert-captions: #94a3b8; + --tw-prose-invert-code: #fff; + --tw-prose-invert-pre-code: #cbd5e1; + --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); + --tw-prose-invert-th-borders: #475569; + --tw-prose-invert-td-borders: #334155 + } + + @media (min-width: 1024px){ + .lg\:prose-lg{ + font-size: 1.125rem; + line-height: 1.7777778; + } + + .lg\:prose-lg :where(p):not(:where([class~="not-prose"] *)){ + margin-top: 1.3333333em; + margin-bottom: 1.3333333em + } + + .lg\:prose-lg :where([class~="lead"]):not(:where([class~="not-prose"] *)){ + font-size: 1.2222222em; + line-height: 1.4545455; + margin-top: 1.0909091em; + margin-bottom: 1.0909091em + } + + .lg\:prose-lg :where(blockquote):not(:where([class~="not-prose"] *)){ + margin-top: 1.6666667em; + margin-bottom: 1.6666667em; + padding-left: 1em + } + + .lg\:prose-lg :where(h1):not(:where([class~="not-prose"] *)){ + font-size: 2.6666667em; + margin-top: 0; + margin-bottom: 0.8333333em; + line-height: 1 + } + + .lg\:prose-lg :where(h2):not(:where([class~="not-prose"] *)){ + font-size: 1.6666667em; + margin-top: 1.8666667em; + margin-bottom: 1.0666667em; + line-height: 1.3333333 + } + + .lg\:prose-lg :where(h3):not(:where([class~="not-prose"] *)){ + font-size: 1.3333333em; + margin-top: 1.6666667em; + margin-bottom: 0.6666667em; + line-height: 1.5 + } + + .lg\:prose-lg :where(h4):not(:where([class~="not-prose"] *)){ + margin-top: 1.7777778em; + margin-bottom: 0.4444444em; + line-height: 1.5555556 + } + + .lg\:prose-lg :where(img):not(:where([class~="not-prose"] *)){ + margin-top: 1.7777778em; + margin-bottom: 1.7777778em + } + + .lg\:prose-lg :where(video):not(:where([class~="not-prose"] *)){ + margin-top: 1.7777778em; + margin-bottom: 1.7777778em + } + + .lg\:prose-lg :where(figure):not(:where([class~="not-prose"] *)){ + margin-top: 1.7777778em; + margin-bottom: 1.7777778em + } + + .lg\:prose-lg :where(figure > *):not(:where([class~="not-prose"] *)){ + margin-top: 0; + margin-bottom: 0 + } + + .lg\:prose-lg :where(figcaption):not(:where([class~="not-prose"] *)){ + font-size: 0.8888889em; + line-height: 1.5; + margin-top: 1em + } + + .lg\:prose-lg :where(code):not(:where([class~="not-prose"] *)){ + font-size: 0.8888889em + } + + .lg\:prose-lg :where(h2 code):not(:where([class~="not-prose"] *)){ + font-size: 0.8666667em + } + + .lg\:prose-lg :where(h3 code):not(:where([class~="not-prose"] *)){ + font-size: 0.875em + } + + .lg\:prose-lg :where(pre):not(:where([class~="not-prose"] *)){ + font-size: 0.8888889em; + line-height: 1.75; + margin-top: 2em; + margin-bottom: 2em; + border-radius: 0.375rem; + padding-top: 1em; + padding-right: 1.5em; + padding-bottom: 1em; + padding-left: 1.5em + } + + .lg\:prose-lg :where(ol):not(:where([class~="not-prose"] *)){ + padding-left: 1.5555556em + } + + .lg\:prose-lg :where(ul):not(:where([class~="not-prose"] *)){ + padding-left: 1.5555556em + } + + .lg\:prose-lg :where(li):not(:where([class~="not-prose"] *)){ + margin-top: 0.6666667em; + margin-bottom: 0.6666667em + } + + .lg\:prose-lg :where(ol > li):not(:where([class~="not-prose"] *)){ + padding-left: 0.4444444em + } + + .lg\:prose-lg :where(ul > li):not(:where([class~="not-prose"] *)){ + padding-left: 0.4444444em + } + + .lg\:prose-lg > :where(ul > li p):not(:where([class~="not-prose"] *)){ + margin-top: 0.8888889em; + margin-bottom: 0.8888889em + } + + .lg\:prose-lg > :where(ul > li > *:first-child):not(:where([class~="not-prose"] *)){ + margin-top: 1.3333333em + } + + .lg\:prose-lg > :where(ul > li > *:last-child):not(:where([class~="not-prose"] *)){ + margin-bottom: 1.3333333em + } + + .lg\:prose-lg > :where(ol > li > *:first-child):not(:where([class~="not-prose"] *)){ + margin-top: 1.3333333em + } + + .lg\:prose-lg > :where(ol > li > *:last-child):not(:where([class~="not-prose"] *)){ + margin-bottom: 1.3333333em + } + + .lg\:prose-lg :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"] *)){ + margin-top: 0.8888889em; + margin-bottom: 0.8888889em + } + + .lg\:prose-lg :where(hr):not(:where([class~="not-prose"] *)){ + margin-top: 3.1111111em; + margin-bottom: 3.1111111em + } + + .lg\:prose-lg :where(hr + *):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .lg\:prose-lg :where(h2 + *):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .lg\:prose-lg :where(h3 + *):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .lg\:prose-lg :where(h4 + *):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .lg\:prose-lg :where(table):not(:where([class~="not-prose"] *)){ + font-size: 0.8888889em; + line-height: 1.5 + } + + .lg\:prose-lg :where(thead th):not(:where([class~="not-prose"] *)){ + padding-right: 0.75em; + padding-bottom: 0.75em; + padding-left: 0.75em + } + + .lg\:prose-lg :where(thead th:first-child):not(:where([class~="not-prose"] *)){ + padding-left: 0 + } + + .lg\:prose-lg :where(thead th:last-child):not(:where([class~="not-prose"] *)){ + padding-right: 0 + } + + .lg\:prose-lg :where(tbody td):not(:where([class~="not-prose"] *)){ + padding-top: 0.75em; + padding-right: 0.75em; + padding-bottom: 0.75em; + padding-left: 0.75em + } + + .lg\:prose-lg :where(tbody td:first-child):not(:where([class~="not-prose"] *)){ + padding-left: 0 + } + + .lg\:prose-lg :where(tbody td:last-child):not(:where([class~="not-prose"] *)){ + padding-right: 0 + } + + .lg\:prose-lg > :where(:first-child):not(:where([class~="not-prose"] *)){ + margin-top: 0 + } + + .lg\:prose-lg > :where(:last-child):not(:where([class~="not-prose"] *)){ + margin-bottom: 0 + } + } + \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..385421c Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..813c994 --- /dev/null +++ b/index.html @@ -0,0 +1,232 @@ + + + + + + ChatGPT-Tailwind + + + + + + + + + + +
+

ChatGPT-Tailwind

+
+ + +
+
+
+
+
+ 网址: + +
+ +

*代理域名,无需"https://"

+
+
+
+
+
+ Key: + +
+
*填写你的key,获取国内可用key
+
+
+ +
+
+
+ 模型: + +
+
*选择模型
+
+
+
+
+
+
+
+
+ 本项目由woodchen开源于Github, 欢迎给个star +
+
+ + +
+
+ + +
+
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..e2057a4 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,14 @@ +module.exports = { + //... + theme: { + // ... + }, + + // add daisyUI plugin + plugins: [ + require("daisyui") + ], + + + //... +} \ No newline at end of file