Merge branch 'dev'
# Conflicts: # backend/src/app.ts # backend/src/db/schema.ts # backend/src/queues/adoptionReportQueue.ts # backend/src/reports/adoptionReport.ts # backend/src/reports/adoptionReportJob.ts # backend/src/repositories/birdRepository.ts # backend/src/types.ts # frontend/src/App.tsx # frontend/src/index.css
This commit is contained in:
+330
-11
@@ -1,3 +1,4 @@
|
||||
|
||||
:root {
|
||||
--ink: #1f2a2a;
|
||||
--muted: #5d5f59;
|
||||
@@ -616,14 +617,6 @@ textarea {
|
||||
break-inside: avoid;
|
||||
}
|
||||
|
||||
.settings-card-bird-profiles {
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.settings-card-bird-profiles[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.settings-card-collaborators {
|
||||
order: 2;
|
||||
}
|
||||
@@ -1215,6 +1208,264 @@ textarea {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.bird-timeline-card {
|
||||
grid-template-columns: 18px minmax(0, 1fr);
|
||||
gap: 0.75rem;
|
||||
border: 1px solid rgba(39, 105, 179, 0.12);
|
||||
border-radius: 8px;
|
||||
background: rgba(255, 255, 255, 0.76);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-card {
|
||||
padding: 0.85rem;
|
||||
border: 1px solid rgba(39, 105, 179, 0.12);
|
||||
border-radius: 8px;
|
||||
background: rgba(255, 255, 255, 0.72);
|
||||
}
|
||||
|
||||
.bird-timeline-graph {
|
||||
position: relative;
|
||||
min-height: 340px;
|
||||
isolation: isolate;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-line {
|
||||
position: absolute;
|
||||
left: calc(8.125% + 18px);
|
||||
right: 8.125%;
|
||||
top: 50%;
|
||||
height: 4px;
|
||||
border-radius: 999px;
|
||||
background: var(--timeline-color, var(--accent-green));
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-scale {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-tick {
|
||||
position: absolute;
|
||||
top: calc(50% + 78px);
|
||||
transform: translateX(-50%);
|
||||
color: var(--muted);
|
||||
font-size: 0.68rem;
|
||||
font-weight: 600;
|
||||
line-height: 1;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-tick::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: calc(100% + 0.35rem);
|
||||
width: 1px;
|
||||
height: 68px;
|
||||
background: linear-gradient(to bottom, rgba(39, 105, 179, 0.22), rgba(39, 105, 179, 0));
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-tick.today {
|
||||
color: var(--accent-green);
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-tick.today::before {
|
||||
background: linear-gradient(to bottom, rgba(35, 138, 90, 0.42), rgba(35, 138, 90, 0));
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 136px;
|
||||
height: 0;
|
||||
transform: translateX(-50%);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-dot {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
z-index: 2;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.above .bird-timeline-graph-dot {
|
||||
left: calc(50% + var(--branch-offset, 0px));
|
||||
bottom: var(--branch-distance, 34px);
|
||||
transform: translate(-50%, 50%);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.below .bird-timeline-graph-dot {
|
||||
left: calc(50% + var(--branch-offset, 0px));
|
||||
top: var(--branch-distance, 34px);
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.on-line .bird-timeline-graph-dot {
|
||||
top: 0;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
|
||||
|
||||
.bird-timeline-graph-point.hatch_date .bird-timeline-graph-dot {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
border: 0;
|
||||
border-radius: 50%;
|
||||
background: #fffdf9;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-connector {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
width: 2px;
|
||||
height: var(--branch-connector-length, var(--branch-distance, 34px));
|
||||
background: repeating-linear-gradient(
|
||||
to bottom,
|
||||
rgba(39, 105, 179, 0.18) 0 4px,
|
||||
transparent 4px 9px
|
||||
);
|
||||
transform: translateX(-50%) rotate(var(--branch-angle, 0deg));
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.above .bird-timeline-graph-connector {
|
||||
bottom: 0;
|
||||
transform-origin: bottom center;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.below .bird-timeline-graph-connector {
|
||||
top: 0;
|
||||
transform-origin: top center;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.on-line .bird-timeline-graph-connector {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-icon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
color: var(--accent-green);
|
||||
fill: currentColor;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.hatch_date .bird-timeline-graph-icon {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
color: var(--accent-gold);
|
||||
font-size: 34px;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.owner_changed .bird-timeline-graph-icon {
|
||||
color: var(--accent-blue);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.transferred .bird-timeline-graph-icon {
|
||||
color: var(--accent-red);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-copy {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
width: 124px;
|
||||
transform: translateX(-50%);
|
||||
display: grid;
|
||||
gap: 0.08rem;
|
||||
justify-items: center;
|
||||
text-align: center;
|
||||
color: var(--ink);
|
||||
font-size: 0.68rem;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-copy strong {
|
||||
font-weight: 700;
|
||||
line-height: 1.15;
|
||||
max-width: 100%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
overflow-wrap: anywhere;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-copy span {
|
||||
color: var(--muted);
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.above .bird-timeline-graph-copy {
|
||||
left: calc(50% + var(--branch-offset, 0px));
|
||||
bottom: calc(var(--branch-distance, 34px) + 24px);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.below .bird-timeline-graph-copy {
|
||||
left: calc(50% + var(--branch-offset, 0px));
|
||||
top: calc(var(--branch-distance, 34px) + 24px);
|
||||
}
|
||||
|
||||
.bird-timeline-graph-point.on-line .bird-timeline-graph-copy {
|
||||
bottom: 28px;
|
||||
}
|
||||
|
||||
.bird-timeline-form {
|
||||
padding: 0.85rem;
|
||||
border: 1px solid rgba(35, 138, 90, 0.14);
|
||||
border-radius: 8px;
|
||||
background: rgba(240, 248, 244, 0.54);
|
||||
}
|
||||
|
||||
.bird-timeline-marker {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin-top: 0.25rem;
|
||||
border-radius: 999px;
|
||||
background: var(--accent-green);
|
||||
box-shadow: 0 0 0 4px rgba(35, 138, 90, 0.12);
|
||||
}
|
||||
|
||||
.bird-timeline-content {
|
||||
display: grid;
|
||||
gap: 0.3rem;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.bird-timeline-content > div {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.bird-timeline-content strong,
|
||||
.bird-timeline-content span,
|
||||
.bird-timeline-content small,
|
||||
.bird-timeline-content p {
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.bird-timeline-content span,
|
||||
.bird-timeline-content small {
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.bird-timeline-content p {
|
||||
margin: 0;
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
.legend-grid,
|
||||
.detail-grid,
|
||||
.summary-grid {
|
||||
@@ -1314,6 +1565,7 @@ textarea {
|
||||
.bird-detail-tab .info-tab-icon,
|
||||
.bird-detail-tab .note-tab-icon,
|
||||
.bird-detail-tab .report-tab-icon,
|
||||
.bird-detail-tab .timeline-tab-icon,
|
||||
.bird-detail-tab .audit-tab-icon,
|
||||
.bird-detail-tab .vet-tab-icon {
|
||||
width: 24px;
|
||||
@@ -1342,7 +1594,7 @@ textarea {
|
||||
|
||||
.profile-copy {
|
||||
display: grid;
|
||||
gap: 0.3rem;
|
||||
gap: 0.18rem;
|
||||
}
|
||||
|
||||
.profile-copy h3 {
|
||||
@@ -1350,6 +1602,10 @@ textarea {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
.profile-copy p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.profile-title {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
@@ -1798,6 +2054,60 @@ label {
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.verified-location-field {
|
||||
display: grid;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.verified-location-label {
|
||||
display: grid;
|
||||
gap: 0.35rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.verified-location-search-row {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
gap: 0.65rem;
|
||||
align-items: end;
|
||||
}
|
||||
|
||||
.verified-location-search-row.has-selected-location {
|
||||
grid-template-columns: minmax(0, 1fr) auto auto;
|
||||
}
|
||||
|
||||
.verified-location-search-row.has-selected-location input {
|
||||
border-color: rgba(35, 138, 90, 0.45);
|
||||
background: rgba(35, 138, 90, 0.08);
|
||||
box-shadow: 0 0 0 3px rgba(35, 138, 90, 0.08);
|
||||
}
|
||||
|
||||
.verified-location-result small {
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.verified-location-results {
|
||||
display: grid;
|
||||
gap: 0.45rem;
|
||||
}
|
||||
|
||||
.verified-location-result {
|
||||
display: grid;
|
||||
gap: 0.15rem;
|
||||
width: 100%;
|
||||
padding: 0.8rem 0.9rem;
|
||||
text-align: left;
|
||||
color: var(--ink);
|
||||
border: 1px solid rgba(53, 129, 98, 0.2);
|
||||
border-radius: 8px;
|
||||
background: rgba(255, 255, 255, 0.55);
|
||||
}
|
||||
|
||||
.verified-location-result:hover {
|
||||
border-color: rgba(39, 105, 179, 0.28);
|
||||
background: rgba(255, 255, 255, 0.78);
|
||||
}
|
||||
|
||||
.toggle-card input[type="checkbox"] {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
@@ -2127,7 +2437,8 @@ label {
|
||||
.inline-form,
|
||||
.profile-hero,
|
||||
.photo-editor,
|
||||
.settings-nested-grid {
|
||||
.settings-nested-grid,
|
||||
.verified-location-search-row {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
@@ -2204,17 +2515,25 @@ label {
|
||||
}
|
||||
|
||||
.page-tabs {
|
||||
grid-template-columns: repeat(auto-fit, minmax(64px, 1fr));
|
||||
grid-auto-flow: column;
|
||||
grid-auto-columns: minmax(5.5rem, max-content);
|
||||
grid-template-columns: none;
|
||||
gap: 0.4rem;
|
||||
min-width: 0;
|
||||
overflow-x: auto;
|
||||
padding-bottom: 0.1rem;
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.page-tab {
|
||||
min-height: 42px;
|
||||
min-width: 5.5rem;
|
||||
padding: 0.55rem 0.65rem;
|
||||
border-radius: 14px;
|
||||
text-align: center;
|
||||
font-size: 0.92rem;
|
||||
font-weight: 700;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.side-nav .secondary-button {
|
||||
|
||||
Reference in New Issue
Block a user