Spaces:
Build error
Build error
Merge pull request #33 from maribakulj/claude/find-commit-dcec666-sI5Qn
Browse files- frontend/src/components/SearchBar.tsx +1 -0
- frontend/src/components/retro/RetroButton.tsx +2 -0
- frontend/src/components/retro/RetroIcon.tsx +1 -1
- frontend/src/components/retro/RetroMenuBar.tsx +1 -0
- frontend/src/components/retro/RetroWindow.tsx +2 -1
- frontend/src/pages/Admin.tsx +3 -1
- frontend/src/pages/Editor.tsx +1 -1
- frontend/src/pages/Home.tsx +4 -8
- frontend/src/pages/Reader.tsx +2 -1
frontend/src/components/SearchBar.tsx
CHANGED
|
@@ -96,6 +96,7 @@ export default function SearchBar({ onSelectResult }: Props) {
|
|
| 96 |
{results.map((r) => (
|
| 97 |
<li key={r.page_id}>
|
| 98 |
<button
|
|
|
|
| 99 |
onClick={() => {
|
| 100 |
setOpen(false)
|
| 101 |
onSelectResult?.(r)
|
|
|
|
| 96 |
{results.map((r) => (
|
| 97 |
<li key={r.page_id}>
|
| 98 |
<button
|
| 99 |
+
type="button"
|
| 100 |
onClick={() => {
|
| 101 |
setOpen(false)
|
| 102 |
onSelectResult?.(r)
|
frontend/src/components/retro/RetroButton.tsx
CHANGED
|
@@ -14,6 +14,7 @@ export default function RetroButton({
|
|
| 14 |
pressed = false,
|
| 15 |
className = '',
|
| 16 |
disabled,
|
|
|
|
| 17 |
...rest
|
| 18 |
}: Props) {
|
| 19 |
const padding = size === 'sm' ? 'px-2 py-[1px]' : 'px-3 py-[3px]'
|
|
@@ -21,6 +22,7 @@ export default function RetroButton({
|
|
| 21 |
|
| 22 |
return (
|
| 23 |
<button
|
|
|
|
| 24 |
className={`
|
| 25 |
${padding} ${fontSize}
|
| 26 |
font-retro font-medium
|
|
|
|
| 14 |
pressed = false,
|
| 15 |
className = '',
|
| 16 |
disabled,
|
| 17 |
+
type = 'button',
|
| 18 |
...rest
|
| 19 |
}: Props) {
|
| 20 |
const padding = size === 'sm' ? 'px-2 py-[1px]' : 'px-3 py-[3px]'
|
|
|
|
| 22 |
|
| 23 |
return (
|
| 24 |
<button
|
| 25 |
+
type={type}
|
| 26 |
className={`
|
| 27 |
${padding} ${fontSize}
|
| 28 |
font-retro font-medium
|
frontend/src/components/retro/RetroIcon.tsx
CHANGED
|
@@ -20,6 +20,7 @@ export default function RetroIcon({
|
|
| 20 |
}: Props) {
|
| 21 |
return (
|
| 22 |
<button
|
|
|
|
| 23 |
onClick={onClick}
|
| 24 |
className={`
|
| 25 |
flex flex-col items-center gap-1
|
|
@@ -27,7 +28,6 @@ export default function RetroIcon({
|
|
| 27 |
cursor-pointer select-none
|
| 28 |
${className}
|
| 29 |
`}
|
| 30 |
-
onDoubleClick={onClick}
|
| 31 |
>
|
| 32 |
{/* Icon box */}
|
| 33 |
<div
|
|
|
|
| 20 |
}: Props) {
|
| 21 |
return (
|
| 22 |
<button
|
| 23 |
+
type="button"
|
| 24 |
onClick={onClick}
|
| 25 |
className={`
|
| 26 |
flex flex-col items-center gap-1
|
|
|
|
| 28 |
cursor-pointer select-none
|
| 29 |
${className}
|
| 30 |
`}
|
|
|
|
| 31 |
>
|
| 32 |
{/* Icon box */}
|
| 33 |
<div
|
frontend/src/components/retro/RetroMenuBar.tsx
CHANGED
|
@@ -30,6 +30,7 @@ export default function RetroMenuBar({ items = [], right, className = '' }: Prop
|
|
| 30 |
>
|
| 31 |
{items.map((item, i) => (
|
| 32 |
<button
|
|
|
|
| 33 |
key={i}
|
| 34 |
onClick={item.onClick}
|
| 35 |
disabled={item.disabled}
|
|
|
|
| 30 |
>
|
| 31 |
{items.map((item, i) => (
|
| 32 |
<button
|
| 33 |
+
type="button"
|
| 34 |
key={i}
|
| 35 |
onClick={item.onClick}
|
| 36 |
disabled={item.disabled}
|
frontend/src/components/retro/RetroWindow.tsx
CHANGED
|
@@ -29,7 +29,7 @@ export default function RetroWindow({
|
|
| 29 |
return (
|
| 30 |
<div
|
| 31 |
className={`
|
| 32 |
-
flex flex-col
|
| 33 |
border-retro border-retro-black bg-retro-gray
|
| 34 |
shadow-retro
|
| 35 |
${className}
|
|
@@ -45,6 +45,7 @@ export default function RetroWindow({
|
|
| 45 |
>
|
| 46 |
{onClose && (
|
| 47 |
<button
|
|
|
|
| 48 |
onClick={onClose}
|
| 49 |
className="
|
| 50 |
w-[14px] h-[14px] flex items-center justify-center
|
|
|
|
| 29 |
return (
|
| 30 |
<div
|
| 31 |
className={`
|
| 32 |
+
flex flex-col min-h-0
|
| 33 |
border-retro border-retro-black bg-retro-gray
|
| 34 |
shadow-retro
|
| 35 |
${className}
|
|
|
|
| 45 |
>
|
| 46 |
{onClose && (
|
| 47 |
<button
|
| 48 |
+
type="button"
|
| 49 |
onClick={onClose}
|
| 50 |
className="
|
| 51 |
w-[14px] h-[14px] flex items-center justify-center
|
frontend/src/pages/Admin.tsx
CHANGED
|
@@ -574,11 +574,12 @@ export default function Admin({ onHome }: Props) {
|
|
| 574 |
]}
|
| 575 |
/>
|
| 576 |
|
| 577 |
-
<div className="flex flex-1 overflow-hidden p-1 gap-1">
|
| 578 |
{/* Sidebar */}
|
| 579 |
<RetroWindow title="Corpus" className="w-56 shrink-0" scrollable>
|
| 580 |
<div className="flex flex-col">
|
| 581 |
<button
|
|
|
|
| 582 |
onClick={() => { setShowCreate(true); setSelectedCorpusId(null) }}
|
| 583 |
className={`
|
| 584 |
w-full text-left px-2 py-[4px] text-retro-sm font-bold
|
|
@@ -593,6 +594,7 @@ export default function Admin({ onHome }: Props) {
|
|
| 593 |
)}
|
| 594 |
{corpora.map((c) => (
|
| 595 |
<button
|
|
|
|
| 596 |
key={c.id}
|
| 597 |
onClick={() => { setSelectedCorpusId(c.id); setShowCreate(false) }}
|
| 598 |
className={`
|
|
|
|
| 574 |
]}
|
| 575 |
/>
|
| 576 |
|
| 577 |
+
<div className="flex flex-1 min-h-0 overflow-hidden p-1 gap-1">
|
| 578 |
{/* Sidebar */}
|
| 579 |
<RetroWindow title="Corpus" className="w-56 shrink-0" scrollable>
|
| 580 |
<div className="flex flex-col">
|
| 581 |
<button
|
| 582 |
+
type="button"
|
| 583 |
onClick={() => { setShowCreate(true); setSelectedCorpusId(null) }}
|
| 584 |
className={`
|
| 585 |
w-full text-left px-2 py-[4px] text-retro-sm font-bold
|
|
|
|
| 594 |
)}
|
| 595 |
{corpora.map((c) => (
|
| 596 |
<button
|
| 597 |
+
type="button"
|
| 598 |
key={c.id}
|
| 599 |
onClick={() => { setSelectedCorpusId(c.id); setShowCreate(false) }}
|
| 600 |
className={`
|
frontend/src/pages/Editor.tsx
CHANGED
|
@@ -176,7 +176,7 @@ export default function Editor({ pageId, onBack }: Props) {
|
|
| 176 |
/>
|
| 177 |
|
| 178 |
{/* ββ Main layout 50/50 ββββββββββββββββββββββββββββββββββββββββ */}
|
| 179 |
-
<div className="flex flex-1 overflow-hidden p-1 gap-1">
|
| 180 |
|
| 181 |
{/* ββ Viewer window (left) βββββββββββββββββββββββββββββββββ */}
|
| 182 |
<RetroWindow
|
|
|
|
| 176 |
/>
|
| 177 |
|
| 178 |
{/* ββ Main layout 50/50 ββββββββββββββββββββββββββββββββββββββββ */}
|
| 179 |
+
<div className="flex flex-1 min-h-0 overflow-hidden p-1 gap-1">
|
| 180 |
|
| 181 |
{/* ββ Viewer window (left) βββββββββββββββββββββββββββββββββ */}
|
| 182 |
<RetroWindow
|
frontend/src/pages/Home.tsx
CHANGED
|
@@ -1,5 +1,4 @@
|
|
| 1 |
import { useEffect, useState } from 'react'
|
| 2 |
-
import AdminNav from '../components/AdminNav.tsx'
|
| 3 |
import SearchBar from '../components/SearchBar.tsx'
|
| 4 |
import { RetroMenuBar, RetroWindow, RetroIcon } from '../components/retro'
|
| 5 |
import {
|
|
@@ -94,15 +93,10 @@ export default function Home({ onOpenManuscript, onOpenPage, onAdmin }: Props) {
|
|
| 94 |
<RetroMenuBar
|
| 95 |
items={[
|
| 96 |
{ label: 'IIIF Studio' },
|
| 97 |
-
{ label: '
|
| 98 |
-
{ label: 'Corpus' },
|
| 99 |
-
{ label: 'Aide' },
|
| 100 |
]}
|
| 101 |
right={
|
| 102 |
-
<
|
| 103 |
-
<SearchBar onSelectResult={onOpenPage ? (r) => onOpenPage(r.page_id) : undefined} />
|
| 104 |
-
<AdminNav onClick={onAdmin} />
|
| 105 |
-
</div>
|
| 106 |
}
|
| 107 |
/>
|
| 108 |
|
|
@@ -126,6 +120,7 @@ export default function Home({ onOpenManuscript, onOpenPage, onAdmin }: Props) {
|
|
| 126 |
{corpora.map((corpus) => (
|
| 127 |
<div key={corpus.id}>
|
| 128 |
<button
|
|
|
|
| 129 |
onClick={() => void handleCorpusClick(corpus)}
|
| 130 |
className={`
|
| 131 |
w-full text-left px-3 py-[6px] flex items-center gap-3
|
|
@@ -172,6 +167,7 @@ export default function Home({ onOpenManuscript, onOpenPage, onAdmin }: Props) {
|
|
| 172 |
<div className="divide-y divide-retro-gray">
|
| 173 |
{selectedMs.map((ms) => (
|
| 174 |
<button
|
|
|
|
| 175 |
key={ms.id}
|
| 176 |
onClick={() => onOpenManuscript(ms.id, selectedCorpus.profile_id)}
|
| 177 |
className="
|
|
|
|
| 1 |
import { useEffect, useState } from 'react'
|
|
|
|
| 2 |
import SearchBar from '../components/SearchBar.tsx'
|
| 3 |
import { RetroMenuBar, RetroWindow, RetroIcon } from '../components/retro'
|
| 4 |
import {
|
|
|
|
| 93 |
<RetroMenuBar
|
| 94 |
items={[
|
| 95 |
{ label: 'IIIF Studio' },
|
| 96 |
+
{ label: 'Administration', onClick: onAdmin },
|
|
|
|
|
|
|
| 97 |
]}
|
| 98 |
right={
|
| 99 |
+
<SearchBar onSelectResult={onOpenPage ? (r) => onOpenPage(r.page_id) : undefined} />
|
|
|
|
|
|
|
|
|
|
| 100 |
}
|
| 101 |
/>
|
| 102 |
|
|
|
|
| 120 |
{corpora.map((corpus) => (
|
| 121 |
<div key={corpus.id}>
|
| 122 |
<button
|
| 123 |
+
type="button"
|
| 124 |
onClick={() => void handleCorpusClick(corpus)}
|
| 125 |
className={`
|
| 126 |
w-full text-left px-3 py-[6px] flex items-center gap-3
|
|
|
|
| 167 |
<div className="divide-y divide-retro-gray">
|
| 168 |
{selectedMs.map((ms) => (
|
| 169 |
<button
|
| 170 |
+
type="button"
|
| 171 |
key={ms.id}
|
| 172 |
onClick={() => onOpenManuscript(ms.id, selectedCorpus.profile_id)}
|
| 173 |
className="
|
frontend/src/pages/Reader.tsx
CHANGED
|
@@ -144,7 +144,7 @@ export default function Reader({ manuscriptId, profileId, onBack, onEdit }: Prop
|
|
| 144 |
/>
|
| 145 |
|
| 146 |
{/* ββ Main content βββββββββββββββββββββββββββββββββββββββββββββ */}
|
| 147 |
-
<div className="flex flex-1 overflow-hidden p-1 gap-1">
|
| 148 |
|
| 149 |
{/* ββ Viewer window (left, 70%) ββββββββββββββββββββββββββββ */}
|
| 150 |
<RetroWindow
|
|
@@ -179,6 +179,7 @@ export default function Reader({ manuscriptId, profileId, onBack, onEdit }: Prop
|
|
| 179 |
{selectedRegion.type.replace(/_/g, ' ')}
|
| 180 |
</span>
|
| 181 |
<button
|
|
|
|
| 182 |
onClick={() => setSelectedRegion(null)}
|
| 183 |
className="text-retro-black font-bold hover:bg-retro-black hover:text-retro-white px-1"
|
| 184 |
>
|
|
|
|
| 144 |
/>
|
| 145 |
|
| 146 |
{/* ββ Main content βββββββββββββββββββββββββββββββββββββββββββββ */}
|
| 147 |
+
<div className="flex flex-1 min-h-0 overflow-hidden p-1 gap-1">
|
| 148 |
|
| 149 |
{/* ββ Viewer window (left, 70%) ββββββββββββββββββββββββββββ */}
|
| 150 |
<RetroWindow
|
|
|
|
| 179 |
{selectedRegion.type.replace(/_/g, ' ')}
|
| 180 |
</span>
|
| 181 |
<button
|
| 182 |
+
type="button"
|
| 183 |
onClick={() => setSelectedRegion(null)}
|
| 184 |
className="text-retro-black font-bold hover:bg-retro-black hover:text-retro-white px-1"
|
| 185 |
>
|