* refactor: move Electron app to main directory and enforce ts strict mode * chore: add pre-install plugins * remove duplicated initModel function Signed-off-by: James <james@jan.ai> * chore: correct module path * fix: dynamic import does not work with ts * chore: web should be able to run on target host browser * fix: history panel, should display conversations rather just blank state * chore: init default model * chore: pluggin in ts * fix: pre-pack model management * fix: compiled core should not include plugins * chore: refactor - invoke plugin function * refactor download/delete file Signed-off-by: James <james@jan.ai> * update prebuild lib Signed-off-by: James <james@jan.ai> * chore: yarn workspace * chore: update yarn workspace * chore: yarn workspace with nohoist * fix: llama-cpp-import * chore: fix data-plugin wrong module path * chore: correct build step * chore: - separate inference service (#212) - remove base-plugin Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> * chore: update core plugins * chore: hide installation prompt and fix model load - management plugin * chore: remove legacy files; update readme * fix: refresh page lost the download state Signed-off-by: James <james@jan.ai> * fix: ai prompt not passed to plugin Signed-off-by: James <james@jan.ai> * chore: module import fix for production * chore: auto updater * chore: package is public * chore: fix yarn workspace config * update: model management uses Q4_K_M * chore: fix yarn scripts for publishing * chore: app updater - progress update message * chore: user confirms update action * adding some state for changing page store downloaded model to database Signed-off-by: James <james@jan.ai> * chore: refactor plugins into yarn workspace - a single command to publish all base plugins * chore update readme (#218) Co-authored-by: Hien To <tominhhien97@gmail.com> * change app name and app icon Signed-off-by: James <james@jan.ai> * remove: go-to-nowhere actions * chore: bundle core plugins from root and scan default plugins * fix: app crashes on different field name lookup * chore: css fix * chore: bind download progress to app ui * chore: bind active model * chore: simplify app splash-screen only centered jan icon * feature: system monitoring plugin (#196) * feat: Add function for system monitoring * chore: register plugin functions * chore: move to corresponding directory * chore: bind system monitoring data to UI --------- Co-authored-by: Louis <louis@jan.ai> * chore: add build:plugins step to README * chore: model searching and fix model name * fix: plugin file selected appearance * fix: create new conversation does not work * fix: delete conversation not update state - messages still exist * chore: fix asset path prefix * Add CICD for macos (#221) Co-authored-by: Hien To <tominhhien97@gmail.com> * chore: fix production plugin path * chore: add shell open url in external browser --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: NamH <NamNh0122@gmail.com> Co-authored-by: 0xSage <n@pragmatic.vc> Co-authored-by: hiento09 <136591877+hiento09@users.noreply.github.com> Co-authored-by: Hien To <tominhhien97@gmail.com> Co-authored-by: namvuong <22463238+vuonghoainam@users.noreply.github.com>
429 lines
8.9 KiB
CSS
429 lines
8.9 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");
|
|
|
|
:root {
|
|
/* Your default theme */
|
|
--background: white;
|
|
--foreground: black;
|
|
--gray-50: #f7f7f8;
|
|
--gray-100: #ececf1;
|
|
--gray-300: #c5c5d2;
|
|
--gray-500: #8e8ea0;
|
|
}
|
|
|
|
[data-theme="dark"] {
|
|
--background: rgb(55 65 81);
|
|
--foreground: white;
|
|
--text-primary: var(--gray-100);
|
|
--text-secondary: var(--gray-300);
|
|
--text-tertiary: var(--gray-500);
|
|
}
|
|
|
|
@layer base {
|
|
body {
|
|
@apply dark:bg-gray-900 dark:text-white;
|
|
}
|
|
}
|
|
|
|
body {
|
|
font-family: "Inter", sans-serif;
|
|
color: rgb(var(--foreground-rgb));
|
|
background: linear-gradient(
|
|
to bottom,
|
|
transparent,
|
|
rgb(var(--background-end-rgb))
|
|
)
|
|
rgb(var(--background-start-rgb));
|
|
overflow: hidden;
|
|
height: 100vh;
|
|
}
|
|
|
|
.hidden-text {
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: 1;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.hidden-text-model {
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: 2;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.scroll::-webkit-scrollbar {
|
|
width: 4px;
|
|
height: 4px;
|
|
background: transparent !;
|
|
}
|
|
.scroll:hover::-webkit-scrollbar-thumb {
|
|
background-color: #d1d5db;
|
|
}
|
|
.scroll::-webkit-scrollbar-thumb {
|
|
border-radius: 10px;
|
|
}
|
|
.scroll::-webkit-scrollbar-track {
|
|
background-color: transparent;
|
|
border-radius: 10px;
|
|
}
|
|
.scroll {
|
|
scrollbar-gutter: stable;
|
|
}
|
|
.embla {
|
|
--slide-spacing: 1rem;
|
|
--slide-size: 100%;
|
|
--slide-height: 19rem;
|
|
}
|
|
.embla__viewport {
|
|
overflow: hidden;
|
|
}
|
|
.embla__container {
|
|
backface-visibility: hidden;
|
|
display: flex;
|
|
touch-action: pan-y;
|
|
}
|
|
.embla__slide {
|
|
flex: 0 0 var(--slide-size);
|
|
min-width: 0;
|
|
position: relative;
|
|
}
|
|
.embla__slide__img {
|
|
display: block;
|
|
height: var(--slide-height);
|
|
width: 100%;
|
|
object-fit: cover;
|
|
}
|
|
.embla__slide__number {
|
|
width: 4.6rem;
|
|
height: 4.6rem;
|
|
z-index: 1;
|
|
position: absolute;
|
|
top: 0.6rem;
|
|
right: 0.6rem;
|
|
border-radius: 50%;
|
|
background-color: rgba(var(--background-site-rgb-value), 0.85);
|
|
line-height: 4.6rem;
|
|
font-weight: 900;
|
|
text-align: center;
|
|
pointer-events: none;
|
|
}
|
|
.embla__slide__number > span {
|
|
color: var(--brand-primary);
|
|
background-image: linear-gradient(
|
|
45deg,
|
|
var(--brand-primary),
|
|
var(--brand-secondary)
|
|
);
|
|
background-clip: text;
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
font-size: 1.6rem;
|
|
display: block;
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
}
|
|
.embla__button {
|
|
-webkit-appearance: none;
|
|
background-color: transparent;
|
|
touch-action: manipulation;
|
|
display: inline-flex;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
border: 0;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
.embla__buttons {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
position: absolute;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
padding: 27.44px;
|
|
left: 0;
|
|
width: 100%;
|
|
}
|
|
.embla__button {
|
|
z-index: 1;
|
|
color: var(--background-site);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
padding: 10px;
|
|
border-radius: 12px;
|
|
gap: 10px;
|
|
background-color: white;
|
|
}
|
|
.embla__button:disabled {
|
|
opacity: 0;
|
|
}
|
|
.embla__button__svg {
|
|
width: 65%;
|
|
height: 65%;
|
|
}
|
|
|
|
/* TODO: Move to a separated css later */
|
|
/* Typography Utilities */
|
|
@layer utilities {
|
|
/* Regular */
|
|
.text-xs-regular {
|
|
/* text-xs/leading-4/font-normal */
|
|
font-family: Inter;
|
|
font-size: 12px;
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
line-height: 16px; /* 133.333% */
|
|
}
|
|
.text-sm-regular {
|
|
/* text-sm/leading-5/font-normal */
|
|
font-family: Inter;
|
|
font-size: 14px;
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
line-height: 20px; /* 142.857% */
|
|
}
|
|
.text-base-regular {
|
|
/* text-base/leading-6/font-normal */
|
|
font-family: Inter;
|
|
font-size: 16px;
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
line-height: 24px; /* 150% */
|
|
}
|
|
.text-lg-regular {
|
|
/* text-lg/leading-7/font-normal */
|
|
font-family: Inter;
|
|
font-size: 18px;
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
line-height: 28px; /* 155.556% */
|
|
}
|
|
.text-xl-regular {
|
|
/* text-xl/leading-7/font-normal */
|
|
font-family: Inter;
|
|
font-size: 20px;
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
line-height: 28px; /* 140% */
|
|
}
|
|
.text-2xl-regular {
|
|
/* text-2xl/leading-8/font-normal */
|
|
font-family: Inter;
|
|
font-size: 24px;
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
line-height: 32px; /* 133.333% */
|
|
}
|
|
.text-3xl-regular {
|
|
/* text-3xl/leading-9/font-normal */
|
|
font-family: Inter;
|
|
font-size: 30px;
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
line-height: 36px; /* 120% */
|
|
}
|
|
.text-4xl-regular {
|
|
/* text-4xl/leading-10/font-normal */
|
|
font-family: Inter;
|
|
font-size: 36px;
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
line-height: 40px; /* 111.111% */
|
|
}
|
|
/* Medium */
|
|
.text-xs-medium {
|
|
/* text-xs/leading-4/font-normal */
|
|
font-family: Inter;
|
|
font-size: 12px;
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
line-height: 16px; /* 133.333% */
|
|
}
|
|
.text-sm-medium {
|
|
/* text-sm/leading-5/font-normal */
|
|
font-family: Inter;
|
|
font-size: 14px;
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
line-height: 20px; /* 142.857% */
|
|
}
|
|
.text-base-medium {
|
|
/* text-base/leading-6/font-normal */
|
|
font-family: Inter;
|
|
font-size: 16px;
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
line-height: 24px; /* 150% */
|
|
}
|
|
.text-lg-medium {
|
|
/* text-lg/leading-7/font-normal */
|
|
font-family: Inter;
|
|
font-size: 18px;
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
line-height: 28px; /* 155.556% */
|
|
}
|
|
.text-xl-medium {
|
|
/* text-xl/leading-7/font-normal */
|
|
font-family: Inter;
|
|
font-size: 20px;
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
line-height: 28px; /* 140% */
|
|
}
|
|
.text-2xl-medium {
|
|
/* text-2xl/leading-8/font-normal */
|
|
font-family: Inter;
|
|
font-size: 24px;
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
line-height: 32px; /* 133.333% */
|
|
}
|
|
.text-3xl-medium {
|
|
/* text-3xl/leading-9/font-normal */
|
|
font-family: Inter;
|
|
font-size: 30px;
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
line-height: 36px; /* 120% */
|
|
}
|
|
.text-4xl-medium {
|
|
/* text-4xl/leading-10/font-normal */
|
|
font-family: Inter;
|
|
font-size: 36px;
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
line-height: 40px; /* 111.111% */
|
|
}
|
|
|
|
/* Semibold */
|
|
.text-xs-semibold {
|
|
/* text-xs/leading-4/font-normal */
|
|
font-family: Inter;
|
|
font-size: 12px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
line-height: 16px; /* 133.333% */
|
|
}
|
|
.text-sm-semibold {
|
|
/* text-sm/leading-5/font-normal */
|
|
font-family: Inter;
|
|
font-size: 14px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
line-height: 20px; /* 142.857% */
|
|
}
|
|
.text-base-semibold {
|
|
/* text-base/leading-6/font-normal */
|
|
font-family: Inter;
|
|
font-size: 16px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
line-height: 24px; /* 150% */
|
|
}
|
|
.text-lg-semibold {
|
|
/* text-lg/leading-7/font-normal */
|
|
font-family: Inter;
|
|
font-size: 18px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
line-height: 28px; /* 155.556% */
|
|
}
|
|
.text-xl-semibold {
|
|
/* text-xl/leading-7/font-normal */
|
|
font-family: Inter;
|
|
font-size: 20px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
line-height: 28px; /* 140% */
|
|
}
|
|
.text-2xl-semibold {
|
|
/* text-2xl/leading-8/font-normal */
|
|
font-family: Inter;
|
|
font-size: 24px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
line-height: 32px; /* 133.333% */
|
|
}
|
|
.text-3xl-semibold {
|
|
/* text-3xl/leading-9/font-normal */
|
|
font-family: Inter;
|
|
font-size: 30px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
line-height: 36px; /* 120% */
|
|
}
|
|
.text-4xl-semibold {
|
|
/* text-4xl/leading-10/font-normal */
|
|
font-family: Inter;
|
|
font-size: 36px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
line-height: 40px; /* 111.111% */
|
|
}
|
|
}
|
|
|
|
/* Typing indicator */
|
|
.typingIndicatorContainer {
|
|
display: flex;
|
|
flex: none;
|
|
align-items: flex-end;
|
|
margin: 4 0;
|
|
}
|
|
|
|
.typingIndicatorBubble {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 52px;
|
|
height: 34px;
|
|
margin: 0px 8px;
|
|
background-color: #f0f1f1;
|
|
border-radius: 12px;
|
|
}
|
|
|
|
.typingIndicatorBubbleDot {
|
|
width: 4px;
|
|
height: 4px;
|
|
margin-right: 4px;
|
|
background-color: #57585a;
|
|
border-radius: 50%;
|
|
animation-name: bounce;
|
|
animation-duration: 1.3s;
|
|
animation-timing-function: linear;
|
|
animation-iteration-count: infinite;
|
|
}
|
|
|
|
.typingIndicatorBubbleDot:first-of-type {
|
|
margin: 0px 4px;
|
|
}
|
|
|
|
.typingIndicatorBubbleDot:nth-of-type(2) {
|
|
animation-delay: 0.15s;
|
|
}
|
|
|
|
.typingIndicatorBubbleDot:nth-of-type(3) {
|
|
animation-delay: 0.3s;
|
|
}
|
|
|
|
@keyframes bounce {
|
|
0%,
|
|
60%,
|
|
100% {
|
|
transform: translateY(0);
|
|
}
|
|
30% {
|
|
transform: translateY(-4px);
|
|
}
|
|
}
|