- 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
90 lines
2.2 KiB
CSS
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;
|
|
}
|
|
}
|
|
|