feat(frontend): add API client, layout, and routing
- Create Axios-based API client with sources, jobs, and dashboard endpoints - Add responsive Layout component with navigation sidebar - Set up React Router with Dashboard, Backups, and Settings routes - Configure TanStack Query provider with default options - Use lucide-react for navigation icons
This commit is contained in:
+697
@@ -0,0 +1,697 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.eventMap = exports.eventAliasMap = void 0;
|
||||
const eventMap = exports.eventMap = {
|
||||
// Clipboard Events
|
||||
copy: {
|
||||
EventType: 'ClipboardEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
cut: {
|
||||
EventType: 'ClipboardEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
paste: {
|
||||
EventType: 'ClipboardEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
// Composition Events
|
||||
compositionEnd: {
|
||||
EventType: 'CompositionEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
compositionStart: {
|
||||
EventType: 'CompositionEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
compositionUpdate: {
|
||||
EventType: 'CompositionEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
// Keyboard Events
|
||||
keyDown: {
|
||||
EventType: 'KeyboardEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
charCode: 0,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
keyPress: {
|
||||
EventType: 'KeyboardEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
charCode: 0,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
keyUp: {
|
||||
EventType: 'KeyboardEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
charCode: 0,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
// Focus Events
|
||||
focus: {
|
||||
EventType: 'FocusEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
blur: {
|
||||
EventType: 'FocusEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
focusIn: {
|
||||
EventType: 'FocusEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
focusOut: {
|
||||
EventType: 'FocusEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
// Form Events
|
||||
change: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
input: {
|
||||
EventType: 'InputEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
invalid: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: true
|
||||
}
|
||||
},
|
||||
submit: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true
|
||||
}
|
||||
},
|
||||
reset: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true
|
||||
}
|
||||
},
|
||||
// Mouse Events
|
||||
click: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
button: 0,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
contextMenu: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
dblClick: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
drag: {
|
||||
EventType: 'DragEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
dragEnd: {
|
||||
EventType: 'DragEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
dragEnter: {
|
||||
EventType: 'DragEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
dragExit: {
|
||||
EventType: 'DragEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
dragLeave: {
|
||||
EventType: 'DragEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
dragOver: {
|
||||
EventType: 'DragEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
dragStart: {
|
||||
EventType: 'DragEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
drop: {
|
||||
EventType: 'DragEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
mouseDown: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
mouseEnter: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
mouseLeave: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
mouseMove: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
mouseOut: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
mouseOver: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
mouseUp: {
|
||||
EventType: 'MouseEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
// Selection Events
|
||||
select: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
// Touch Events
|
||||
touchCancel: {
|
||||
EventType: 'TouchEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
touchEnd: {
|
||||
EventType: 'TouchEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
touchMove: {
|
||||
EventType: 'TouchEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
touchStart: {
|
||||
EventType: 'TouchEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
// UI Events
|
||||
resize: {
|
||||
EventType: 'UIEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
scroll: {
|
||||
EventType: 'UIEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
// Wheel Events
|
||||
wheel: {
|
||||
EventType: 'WheelEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
// Media Events
|
||||
abort: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
canPlay: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
canPlayThrough: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
durationChange: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
emptied: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
encrypted: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
ended: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
loadedData: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
loadedMetadata: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
loadStart: {
|
||||
EventType: 'ProgressEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
pause: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
play: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
playing: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
progress: {
|
||||
EventType: 'ProgressEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
rateChange: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
seeked: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
seeking: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
stalled: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
suspend: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
timeUpdate: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
volumeChange: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
waiting: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
// Events
|
||||
load: {
|
||||
// TODO: load events can be UIEvent or Event depending on what generated them
|
||||
// This is where this abstraction breaks down.
|
||||
// But the common targets are <img />, <script /> and window.
|
||||
// Neither of these targets receive a UIEvent
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
error: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
// Animation Events
|
||||
animationStart: {
|
||||
EventType: 'AnimationEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
animationEnd: {
|
||||
EventType: 'AnimationEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
animationIteration: {
|
||||
EventType: 'AnimationEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
// Transition Events
|
||||
transitionCancel: {
|
||||
EventType: 'TransitionEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
transitionEnd: {
|
||||
EventType: 'TransitionEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true
|
||||
}
|
||||
},
|
||||
transitionRun: {
|
||||
EventType: 'TransitionEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
transitionStart: {
|
||||
EventType: 'TransitionEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
// pointer events
|
||||
pointerOver: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
pointerEnter: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
pointerDown: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
pointerMove: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
pointerUp: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
pointerCancel: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
pointerOut: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
pointerLeave: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
gotPointerCapture: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
lostPointerCapture: {
|
||||
EventType: 'PointerEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false,
|
||||
composed: true
|
||||
}
|
||||
},
|
||||
// history events
|
||||
popState: {
|
||||
EventType: 'PopStateEvent',
|
||||
defaultInit: {
|
||||
bubbles: true,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
// window events
|
||||
offline: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
},
|
||||
online: {
|
||||
EventType: 'Event',
|
||||
defaultInit: {
|
||||
bubbles: false,
|
||||
cancelable: false
|
||||
}
|
||||
}
|
||||
};
|
||||
const eventAliasMap = exports.eventAliasMap = {
|
||||
doubleClick: 'dblClick'
|
||||
};
|
||||
Reference in New Issue
Block a user