Files
SkinbaseNova/resources/css/app.css
Gregor Klevze a875203482 feat: Nova UI component library + Studio dropdown/picker polish
- Add Nova UI library: Button, TextInput, Textarea, FormField, Select,
  NovaSelect, Checkbox, Radio/RadioGroup, Toggle, DatePicker,
  DateRangePicker, Modal + barrel index.js
- Replace all native <select> in Studio with NovaSelect (StudioFilters,
  StudioToolbar, BulkActionsBar) including frosted-glass portal and
  category group headers
- Replace native checkboxes in StudioGridCard, StudioTable, UploadSidebar,
  UploadWizard, Upload/Index with custom Checkbox component
- Add nova-scrollbar CSS utility (thin 4px, semi-transparent)
- Fix portal position drift: use viewport-relative coords (no scrollY offset)
  for NovaSelect, DatePicker and DateRangePicker
- Close portals on external scroll instead of remeasuring
- Improve hover highlight visibility in NovaSelect (bg-white/[0.13])
- Move search icon to right side in NovaSelect dropdown
- Reduce Studio layout top spacing (py-6 -> pt-4 pb-8)
- Add StudioCheckbox and SquareCheckbox backward-compat shims
- Add sync.sh rsync deploy script
2026-03-01 10:41:43 +01:00

90 lines
2.2 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
.form-label {
@apply block text-sm text-soft mb-1;
}
.form-input {
@apply w-full bg-deep border border-nova-500/30 rounded-lg px-4 py-2
text-white placeholder-gray-500
focus:outline-none focus:ring-2 focus:ring-accent;
}
.form-textarea {
@apply w-full bg-deep border border-nova-500/30 rounded-lg px-4 py-2
text-white resize-none
focus:outline-none focus:ring-2 focus:ring-accent;
}
.form-file {
@apply w-full text-sm text-soft
file:bg-panel file:border-0 file:px-4 file:py-2
file:rounded-lg file:text-white
hover:file:bg-nova-600/40;
}
.btn-primary {
@apply bg-accent text-deep px-6 py-2 rounded-lg
font-medium hover:brightness-110 transition;
}
.btn-secondary {
@apply bg-nova-500/30 text-white px-5 py-2 rounded-lg
hover:bg-nova-500/50 transition;
}
@layer components {
/* Ensure plain inputs, textareas and selects match the dark form styles
so we don't end up with white backgrounds + white text. */
input,
input[type="text"],
input[type="email"],
input[type="password"],
textarea,
select {
@apply bg-deep text-white border border-nova-500/30 rounded-lg px-4 py-2
placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-accent;
}
/* Keep file inputs styled separately (file controls use .form-file class).
This prevents the native file button from inheriting the same padding. */
input[type="file"] {
@apply bg-transparent text-soft p-0;
}
}
@layer base {
*,:before,:after {
box-sizing: border-box;
border: 0 solid transparent;
}
}
@layer utilities {
.nova-scrollbar {
scrollbar-width: thin;
scrollbar-color: rgba(255,255,255,0.14) transparent;
}
.nova-scrollbar::-webkit-scrollbar {
width: 4px;
height: 4px;
}
.nova-scrollbar::-webkit-scrollbar-track {
background: transparent;
}
.nova-scrollbar::-webkit-scrollbar-thumb {
background-color: rgba(255,255,255,0.14);
border-radius: 999px;
}
.nova-scrollbar::-webkit-scrollbar-thumb:hover {
background-color: rgba(255,255,255,0.28);
}
.nova-scrollbar::-webkit-scrollbar-corner {
background: transparent;
}
}