@franklinhelp/sdk-react
Version:
Embeddable AI-native help center for modern SaaS applications
154 lines (134 loc) • 3.56 kB
CSS
/* Franklin SDK Styles */
@tailwind base;
@tailwind components;
@tailwind utilities;
/* CSS Variables with Franklin prefix to avoid collisions */
:root {
/* Layout */
--franklin-width: 420px;
--franklin-radius: 8px;
--franklin-font: "Inter", sans-serif;
--franklin-z-index: 9999;
/* Light Mode Colors (Franklin Design System) */
--franklin-background: #0b0d11;
--franklin-surface: #111418;
--franklin-surface-subtle: #161a20;
--franklin-foreground: #f5f7fa;
--franklin-muted: #9ba3b0;
--franklin-accent: #3b82f6;
--franklin-border: rgba(255, 255, 255, 0.08);
--franklin-success: #22c55e;
--franklin-warning: #facc15;
--franklin-danger: #f87171;
}
body[data-franklin-theme="light"] {
--franklin-background: #0b0d11;
--franklin-surface: #111418;
--franklin-surface-subtle: #161a20;
--franklin-foreground: #f5f7fa;
--franklin-muted: #9ba3b0;
--franklin-accent: #3b82f6;
--franklin-border: rgba(255, 255, 255, 0.08);
--franklin-success: #22c55e;
--franklin-warning: #facc15;
--franklin-danger: #f87171;
}
body.dark,
.dark,
body[data-franklin-theme="dark"] {
/* Dark Mode Colors (Franklin Design System) */
--franklin-background: #050608;
--franklin-surface: #0c0f13;
--franklin-surface-subtle: #0f1318;
--franklin-foreground: #f8fafc;
--franklin-muted: #8a92a1;
--franklin-accent: #60a5fa;
--franklin-border: rgba(255, 255, 255, 0.12);
--franklin-success: #4ade80;
--franklin-warning: #fbbf24;
--franklin-danger: #fca5a5;
}
@media (prefers-color-scheme: dark) {
body:not([data-franklin-theme]) {
--franklin-background: #050608;
--franklin-surface: #0c0f13;
--franklin-surface-subtle: #0f1318;
--franklin-foreground: #f8fafc;
--franklin-muted: #8a92a1;
--franklin-accent: #60a5fa;
--franklin-border: rgba(255, 255, 255, 0.12);
--franklin-success: #4ade80;
--franklin-warning: #fbbf24;
--franklin-danger: #fca5a5;
}
}
/* Base styles for Franklin components */
.franklin-sidebar {
font-family: var(--franklin-font);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Push sidebar behavior - shifts content instead of overlaying */
body.franklin-sidebar-open {
overflow-x: hidden;
}
[data-franklin-shift] {
transition: margin-right 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
body.franklin-sidebar-open [data-franklin-shift] {
margin-right: var(--franklin-width);
}
body[data-franklin-shift] {
transition: margin-right 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
body.franklin-sidebar-open[data-franklin-shift] {
margin-right: var(--franklin-width);
}
/* Animation keyframes */
@keyframes franklin-fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes franklin-slide-in {
from {
transform: translateX(100%);
}
to {
transform: translateX(0);
}
}
/* Utility classes */
.franklin-scroll-smooth {
scroll-behavior: smooth;
}
.franklin-no-scrollbar::-webkit-scrollbar {
display: none;
}
.franklin-no-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
}
/* Focus visible styles */
.franklin-focus-visible:focus-visible {
outline: 2px solid var(--franklin-accent);
outline-offset: 2px;
}
/* Responsive behavior */
@media (max-width: 768px) {
/* On mobile, use overlay instead of push */
body.franklin-sidebar-open [data-franklin-shift] {
margin-right: 0;
}
body.franklin-sidebar-open::after {
content: "";
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.2);
backdrop-filter: blur(4px);
z-index: 9998;
}
}