chore: Dioxus-0.7-Projekt mit Tailwind-Setup aufsetzen

Cargo-, Dioxus- und Tailwind-Konfiguration, Clippy-Regeln, Assets und
Stylesheets (tokens/base/layout/components). Cargo.lock wird eingecheckt,
da es sich um ein Binary-Crate handelt.

node_modules/ und .idea/ per .gitignore ausgeschlossen.
This commit is contained in:
2026-08-27 13:59:20 +02:00
commit 2a1d5528cd
24 changed files with 9289 additions and 0 deletions

172
assets/css/base.css Normal file
View File

@@ -0,0 +1,172 @@
/* ==========================================================================
Baseline — reset and element defaults. No component styling below this line.
========================================================================== */
*,
*::before,
*::after {
box-sizing: border-box;
}
* {
margin: 0;
}
html {
color-scheme: dark;
-webkit-text-size-adjust: 100%;
/* App chrome should not feel like a document. */
-webkit-user-select: none;
user-select: none;
}
body {
min-height: 100dvh;
background-color: var(--dn-bg-app);
color: var(--dn-fg);
font-family: var(--dn-font-ui);
font-size: var(--dn-text-base);
line-height: var(--dn-leading-normal);
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
overflow: hidden; /* the editor and sidebar scroll, the shell does not */
}
/* Text the user is meant to read or copy opts back in. */
input,
textarea,
[contenteditable],
.selectable {
-webkit-user-select: text;
user-select: text;
}
/* --- Typographic elements ------------------------------------------------- */
h1, h2, h3, h4 {
font-weight: 600;
line-height: var(--dn-leading-tight);
text-wrap: balance;
}
h1 { font-size: var(--dn-text-xl); }
h2 { font-size: var(--dn-text-lg); }
h3 { font-size: var(--dn-text-md); }
h4 { font-size: var(--dn-text-base); }
p {
text-wrap: pretty;
max-width: var(--dn-measure);
}
small {
font-size: var(--dn-text-xs);
color: var(--dn-fg-muted);
}
code, kbd, samp, pre {
font-family: var(--dn-font-code);
font-size: 0.9375em;
}
hr {
border: 0;
border-top: 1px solid var(--dn-border);
}
a {
color: var(--dn-accent);
text-decoration-color: var(--dn-accent-muted);
text-underline-offset: 2px;
transition: color var(--dn-dur-fast) var(--dn-ease);
}
a:hover {
text-decoration-color: currentColor;
}
/* --- Form and media defaults ---------------------------------------------- */
img, svg, video, canvas {
display: block;
max-width: 100%;
}
button, input, select, textarea {
font: inherit;
color: inherit;
}
button {
background: none;
border: 0;
padding: 0;
cursor: pointer;
}
:disabled {
opacity: 0.5;
cursor: not-allowed;
}
::placeholder {
color: var(--dn-fg-faint);
}
::selection {
background: var(--dn-accent-muted);
color: var(--dn-fg);
}
/* --- Focus ---------------------------------------------------------------- */
:focus-visible {
outline: 2px solid var(--dn-accent);
outline-offset: 2px;
border-radius: var(--dn-radius-sm);
}
:focus:not(:focus-visible) {
outline: none;
}
/* --- Scrollbars ------------------------------------------------------------ */
* {
scrollbar-width: thin;
scrollbar-color: var(--dn-border-strong) transparent;
}
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: var(--dn-border);
border: 3px solid transparent;
background-clip: content-box;
border-radius: 999px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--dn-border-strong);
background-clip: content-box;
}
/* --- Reduced motion --------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}