@@ -209,25 +202,19 @@ export default function Rundown(props) {
}
const isLast = index === entries.length - 1;
return (
-
-
+
+
{((showQuickEntry && index === cursor) || isLast) && (
@@ -239,7 +226,7 @@ export default function Rundown(props) {
disableAddBlock={entry.type === 'block'}
/>
)}
-
+
);
})}
{provided.placeholder}
diff --git a/client/src/features/rundown/Rundown.module.scss b/client/src/features/rundown/Rundown.module.scss
index 410a5e754..e13d287ad 100644
--- a/client/src/features/rundown/Rundown.module.scss
+++ b/client/src/features/rundown/Rundown.module.scss
@@ -20,17 +20,6 @@
align-self: center;
}
-.cursor {
- border-radius: 3px;
- outline: 1px solid $action-blue;
-}
-
-.bgElement {
- &.delayed {
- background: rgba($block-delay-color, 0.3);
- }
-}
-
.alignCenter {
text-align: center;
flex-direction: column;
diff --git a/client/src/features/rundown/RundownEntry.tsx b/client/src/features/rundown/RundownEntry.tsx
index 7c29ea571..64c930774 100644
--- a/client/src/features/rundown/RundownEntry.tsx
+++ b/client/src/features/rundown/RundownEntry.tsx
@@ -32,6 +32,7 @@ interface RundownEntryProps {
eventIndex: number;
data: OntimeRundownEntry;
selected: boolean;
+ hasCursor: boolean;
next: boolean;
delay: number;
previousEnd: number;
@@ -39,7 +40,7 @@ interface RundownEntryProps {
}
export default function RundownEntry(props: RundownEntryProps) {
- const { index, eventIndex, data, selected, next, delay, previousEnd, playback } = props;
+ const { index, eventIndex, data, selected, hasCursor, next, delay, previousEnd, playback } = props;
const { emitError } = useContext(LoggingContext);
const startTimeIsLastEnd = useAtomValue(startTimeIsLastEndAtom);
const defaultPublic = useAtomValue(defaultPublicAtom);
@@ -53,7 +54,7 @@ export default function RundownEntry(props: RundownEntryProps) {
value: unknown;
}
const actionHandler = useCallback(
- (action: EventItemActions, payload: number | FieldValue) => {
+ (action: EventItemActions, payload?: number | FieldValue) => {
switch (action) {
case 'set-cursor': {
moveCursorTo(payload as number);
@@ -151,6 +152,7 @@ export default function RundownEntry(props: RundownEntryProps) {
next={next}
skip={data.skip}
selected={selected}
+ hasCursor={hasCursor}
playback={playback}
actionHandler={actionHandler}
/>
diff --git a/client/src/features/rundown/RundownExport.tsx b/client/src/features/rundown/RundownExport.tsx
index 138c5df54..c50ba4fb4 100644
--- a/client/src/features/rundown/RundownExport.tsx
+++ b/client/src/features/rundown/RundownExport.tsx
@@ -1,5 +1,5 @@
import { Box } from '@chakra-ui/react';
-import { FiArrowUpRight } from '@react-icons/all-files/fi/FiArrowUpRight';
+import { IoArrowUp } from '@react-icons/all-files/io5/IoArrowUp';
import ErrorBoundary from 'common/components/errorBoundary/ErrorBoundary';
import { CursorProvider } from 'common/context/CursorContext';
import { handleLinks } from 'common/utils/linkUtils';
@@ -12,7 +12,7 @@ export default function RundownExport() {
return (
- handleLinks(event, 'rundown')}
/>
diff --git a/client/src/features/rundown/_blockMixins.scss b/client/src/features/rundown/_blockMixins.scss
index 658201ad9..f16e5c817 100644
--- a/client/src/features/rundown/_blockMixins.scss
+++ b/client/src/features/rundown/_blockMixins.scss
@@ -1,31 +1,33 @@
+@use '../../theme/ontimeColours' as *;
+@use '../../theme/v2Styles' as *;
+
$block-gap: 4px;
-$element-spacing: 4px;
-$binder-width: 32px;
-$clearance: 8px;
-$block-border-radius: 3px;
+$block-element-spacing: 4px;
+$block-binder-width: 32px;
+$block-clearance: 8px;
+$block-border-radius: 8px;
+$block-text-color: $gray-50;
+$block-bg: $gray-1200;
+$block-box-shadow: rgba(0, 0, 0, 0.5) 0 0 3px 2px;
+$secondary-block-height: 40px;
+
+@mixin block-styling() {
+ box-sizing: content-box;
+ background-color: $block-bg;
+ border: 1px solid #383838;
+ box-shadow: $block-box-shadow;
+ font-family: $ontime-font-family;
+ border-radius: $block-border-radius;
+}
@mixin block-spacing() {
padding: 4px 10px 4px 2px;
gap: 2px;
}
-@mixin action-overlay() {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- align-content: center;
- opacity: 0.6;
- transition: linear 0.1s;
-}
-
-@mixin block-hover() {
- opacity: 1;
- transition: linear 0.1s;
-}
-
@mixin drag-style() {
font-size: 20px;
- text-align: center;
+ justify-self: center;
opacity: 0.3;
cursor: grab;
transition: opacity 0.3s;
diff --git a/client/src/features/rundown/block-block/BlockBlock.jsx b/client/src/features/rundown/block-block/BlockBlock.jsx
deleted file mode 100644
index e551fe28b..000000000
--- a/client/src/features/rundown/block-block/BlockBlock.jsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import { Draggable } from 'react-beautiful-dnd';
-import { HStack } from '@chakra-ui/react';
-import { IoRemove } from '@react-icons/all-files/io5/IoRemove';
-import { IoReorderTwo } from '@react-icons/all-files/io5/IoReorderTwo';
-import PropTypes from 'prop-types';
-
-import ActionButtons from '../../../common/components/buttons/ActionButtons';
-import TooltipLoadingActionBtn from '../../../common/components/buttons/TooltipLoadingActionBtn';
-
-import style from './BlockBlock.module.scss';
-
-export default function BlockBlock(props) {
- const { index, data, actionHandler } = props;
-
- return (
-
- {(provided) => (
-
-
-
-
-
- actionHandler('delete')}
- icon={}
- tooltip='Delete'
- variant='outline'
- colorScheme='white'
- size='sm'
- aria-label='Delete'
- />
-
-
-
- )}
-
- );
-}
-
-BlockBlock.propTypes = {
- index: PropTypes.number.isRequired,
- data: PropTypes.object.isRequired,
- actionHandler: PropTypes.func.isRequired,
-};
diff --git a/client/src/features/rundown/block-block/BlockBlock.module.scss b/client/src/features/rundown/block-block/BlockBlock.module.scss
index 44d25be79..661924724 100644
--- a/client/src/features/rundown/block-block/BlockBlock.module.scss
+++ b/client/src/features/rundown/block-block/BlockBlock.module.scss
@@ -1,39 +1,20 @@
-@use '../../../theme/main' as *;
@use '../blockMixins' as *;
-/* ============= COMMON ============= */
-
.block {
@include block-spacing;
+ @include block-styling;
box-sizing: content-box;
display: grid;
- grid-template-columns: 40px 1fr;
+ grid-template-columns: 32px 1fr;
align-items: center;
- height: 40px;
- border-radius: 2px;
- border: $border-l3;
- border-bottom: 4px solid $block-block-color;
- background-color: $bg-container-l2;
+ height: $secondary-block-height;
}
-/* ================ DRAG ================ */
.drag {
@include drag-style;
- color: $block-block-color;
}
-/* ============== ACTION ================ */
.actionOverlay {
- @include action-overlay;
- justify-self: end;
-}
-
-.block:hover > .actionOverlay {
- @include block-hover;
-}
-
-/* NA */
-.actionOverlay:hover {
- opacity: 1;
+ justify-self: flex-end;
}
diff --git a/client/src/features/rundown/block-block/BlockBlock.tsx b/client/src/features/rundown/block-block/BlockBlock.tsx
new file mode 100644
index 000000000..9cdeb3818
--- /dev/null
+++ b/client/src/features/rundown/block-block/BlockBlock.tsx
@@ -0,0 +1,37 @@
+import { Draggable } from 'react-beautiful-dnd';
+import { IoReorderTwo } from '@react-icons/all-files/io5/IoReorderTwo';
+
+import { OntimeBlock, OntimeEvent } from '../../../common/models/EventTypes';
+import BlockActionMenu from '../event-block/composite/BlockActionMenu';
+import { EventItemActions } from '../RundownEntry';
+
+import style from './BlockBlock.module.scss';
+
+interface BlockBlockProps {
+ index: number;
+ data: OntimeBlock;
+ actionHandler: (action: EventItemActions, payload?: number | { field: keyof OntimeEvent, value: unknown }) => void;
+}
+
+export default function BlockBlock(props: BlockBlockProps) {
+ const { index, data, actionHandler } = props;
+
+ return (
+
+ {(provided) => (
+
+
+
+
+
+
+ )}
+
+ );
+}
diff --git a/client/src/features/rundown/delay-block/DelayBlock.module.scss b/client/src/features/rundown/delay-block/DelayBlock.module.scss
index cca87c0a0..70dafac31 100644
--- a/client/src/features/rundown/delay-block/DelayBlock.module.scss
+++ b/client/src/features/rundown/delay-block/DelayBlock.module.scss
@@ -1,49 +1,18 @@
-@use '../../../theme/main' as *;
@use '../blockMixins' as *;
-/* ============= COMMON ============= */
-
.delay {
@include block-spacing;
+ @include block-styling;
- box-sizing: content-box;
display: grid;
grid-template-columns: 32px 1fr auto;
grid-template-areas: 'drag inpt btns';
align-items: center;
- height: 40px;
- border-radius: 2px;
- border: $border-l3;
- border-top: 4px solid $block-delay-color;
- background-color: $bg-container-l2;
-
+ height: $secondary-block-height;
+ gap: 8px;
}
-/* ================ DRAG ================ */
-
.drag {
- grid-area: drag;
@include drag-style;
- color: $block-delay-color;
-}
-
-/* =============== INPUT ================ */
-
-.input {
- grid-area: inpt;
-}
-
-/* ============== ACTION ================ */
-
-.actionOverlay {
- @include action-overlay;
-}
-
-.delay:hover > .actionOverlay {
- @include block-hover;
-}
-
-/* NA */
-.actionOverlay:hover {
- opacity: 1;
+ grid-area: drag;
}
diff --git a/client/src/features/rundown/delay-block/DelayBlock.jsx b/client/src/features/rundown/delay-block/DelayBlock.tsx
similarity index 51%
rename from client/src/features/rundown/delay-block/DelayBlock.jsx
rename to client/src/features/rundown/delay-block/DelayBlock.tsx
index 992c3ab2d..92de955a2 100644
--- a/client/src/features/rundown/delay-block/DelayBlock.jsx
+++ b/client/src/features/rundown/delay-block/DelayBlock.tsx
@@ -1,32 +1,34 @@
import { useCallback } from 'react';
import { Draggable } from 'react-beautiful-dnd';
import { Button, HStack } from '@chakra-ui/react';
-import { FiCheck } from '@react-icons/all-files/fi/FiCheck';
-import { IoRemove } from '@react-icons/all-files/io5/IoRemove';
+import { IoCheckmark } from '@react-icons/all-files/io5/IoCheckmark';
import { IoReorderTwo } from '@react-icons/all-files/io5/IoReorderTwo';
-import ActionButtons from 'common/components/buttons/ActionButtons';
-import TooltipLoadingActionBtn from 'common/components/buttons/TooltipLoadingActionBtn';
-import DelayInput from 'common/components/input/DelayInput';
+import DelayInput from 'common/components/input/delay-input/DelayInput';
import { useEventAction } from 'common/hooks/useEventAction';
import { millisToMinutes } from 'common/utils/dateConfig';
-import PropTypes from 'prop-types';
+
+import { OntimeDelay, OntimeEvent } from '../../../common/models/EventTypes';
+import BlockActionMenu from '../event-block/composite/BlockActionMenu';
+import { EventItemActions } from '../RundownEntry';
import style from './DelayBlock.module.scss';
-export default function DelayBlock(props) {
+interface DelayBlockProps {
+ data: OntimeDelay,
+ index: number;
+ actionHandler: (action: EventItemActions, payload?: number | { field: keyof OntimeEvent, value: unknown }) => void;
+}
+
+export default function DelayBlock(props: DelayBlockProps) {
const { data, index, actionHandler } = props;
- const { applyDelay, deleteEvent, updateEvent } = useEventAction();
+ const { applyDelay, updateEvent } = useEventAction();
const applyDelayHandler = useCallback(() => {
applyDelay(data.id);
}, [data.id, applyDelay]);
- const deleteHandler = useCallback(() => {
- deleteEvent(data.id);
- }, [data.id, deleteEvent]);
-
const delaySubmitHandler = useCallback(
- (value) => {
+ (value: number) => {
const newEvent = {
id: data.id,
duration: value * 60000,
@@ -34,7 +36,7 @@ export default function DelayBlock(props) {
updateEvent(newEvent);
},
- [data.id, updateEvent]
+ [data.id, updateEvent],
);
const delayValue = data.duration != null ? millisToMinutes(data.duration) : undefined;
@@ -47,39 +49,22 @@ export default function DelayBlock(props) {
-
+
}
- variant='outline'
+ leftIcon={}
+ variant='ontime-subtle-white'
>
Apply delay
- }
- tooltip='Delete'
- variant='outline'
- colorScheme='white'
- size='sm'
- />
-
+
)}
);
}
-
-DelayBlock.propTypes = {
- data: PropTypes.object.isRequired,
- index: PropTypes.number.isRequired,
- actionHandler: PropTypes.func.isRequired,
-};
diff --git a/client/src/features/rundown/event-block/EventBlock.module.scss b/client/src/features/rundown/event-block/EventBlock.module.scss
index 4aa9bb8e2..a83fb0880 100644
--- a/client/src/features/rundown/event-block/EventBlock.module.scss
+++ b/client/src/features/rundown/event-block/EventBlock.module.scss
@@ -1,6 +1,130 @@
-@use '../../../theme/main' as *;
+@use '../../../theme/v2Styles' as *;
@use '../blockMixins' as *;
+.eventBlock {
+ @include block-styling;
+
+ display: grid;
+ grid-template-areas:
+ "binder ... ... ..."
+ "binder pb-actions times actions"
+ "binder pb-actions title title"
+ "binder pb-actions estatus estatus"
+ "binder ... ... ...";
+
+ grid-template-columns: $block-binder-width auto 1fr auto;
+ grid-template-rows: 4px 36px 36px 36px 4px;
+ align-items: center;
+ margin: 4px 2px;
+ padding-right: $block-clearance;
+ gap: 2px;
+
+ &.selected {
+ background-color: #101010;
+ }
+
+ &.hasCursor {
+ outline: 1px solid #779BE7;
+ }
+
+ &.skip {
+ border: 1px solid rgba(white, 0.03);
+ box-shadow: none;
+
+ .delayNote,
+ .eventTitle,
+ .eventNote,
+ .binder,
+ .eventTimers,
+ .eventStatus {
+ opacity: $opacity-disabled;
+ }
+ }
+}
+
+.binder {
+ grid-area: binder;
+ height: 100%;
+ display: grid;
+ place-content: center;
+ position: relative;
+ cursor: pointer;
+
+ border-radius: $block-border-radius 0 0 $block-border-radius;
+
+ background-color: #303030; // to override inline
+ color: $section-white;
+ font-size: 17px;
+
+ .drag {
+ @include drag-style;
+ position: absolute;
+ margin-top: 4px;
+ }
+}
+
+.playbackActions {
+ grid-area: pb-actions;
+ display: flex;
+ flex-direction: column;
+ margin: 0 8px;
+ gap: 6px;
+}
+
+.eventTimers {
+ grid-area: times;
+ display: flex;
+ align-items: center;
+ gap: $block-clearance;
+ height: 100%;
+
+ .delayNote {
+ font-size: 12px;
+ line-height: 14px;
+ color: #E69056;
+ }
+}
+
+.eventTitle {
+ grid-area: title;
+ display: block;
+ font-size: 18px;
+
+ &.noTitle {
+ .preview {
+ opacity: $opacity-disabled;
+ }
+ }
+}
+
+.eventActions {
+ grid-area: actions;
+ display: flex;
+ gap: $block-clearance;
+ justify-content: flex-end;
+}
+
+
+.eventOptions {
+ margin: $element-spacing 16px $element-spacing 0;
+}
+
+.progressBg {
+ grid-area: progb;
+ border-radius: 2px;
+ background-color: #282828;
+ opacity: 1;
+ height: 100%;
+}
+
+.progressBg.hidden {
+ opacity: 0;
+}
+
+.flip {
+ transform: rotateY(180deg);
+}
+
.statusElements {
grid-area: estatus;
display: grid;
@@ -9,189 +133,40 @@
"progb progb";
gap: 2px;
grid-template-rows: auto 4px;
-
- .eventNote {
- grid-area: notes;
- display: block;
- font-size: 15px;
- color: $notes-color;
- line-height: 15px;
- }
-
- .eventStatus {
- grid-area: status;
-
- display: flex;
- justify-content: flex-end;
- gap: $element-spacing;
-
- .statusIcon {
- width: 24px;
- height: 24px;
- border-radius: 12px;
- padding: 4px;
- color: $text-gray-disabled;
- }
-
- .statusIcon.statusNext {
- border: 1px solid transparent;
-
- &.enabled {
- color: $text-white;
- background-color: $ontime-accent;
- }
- }
-
- .statusIcon.statusDelay {
- &.enabled {
- color: $text-white;
- background-color: $ontime-delay;
- }
- }
-
- .statusIcon.statusPublic {
- &.enabled {
- color: $text-white;
- background-color: $ontime-roll;
- }
- }
- }
-}
-
-.eventBlock {
- // layout
- display: grid;
- grid-template-areas:
- "binder pb-actions times actions"
- "binder pb-actions title title"
- "binder pb-actions estatus estatus";
- grid-template-columns: $binder-width auto 1fr auto;
- grid-template-rows: 36px 36px 36px;
align-items: center;
- margin: 4px 2px;
- padding-right: $clearance;
-
- // style - general
- border-radius: $block-border-radius;
- gap: 2px;
-
- // style - colour
- background-color: $bg-container-l2;
- border: $border-l3;
-
- // variant
- &.selected {
- background-color: $bg-container-l3;
- }
-
- &.skip {
- background-color: $bg-gray-1000;
- border: 1px solid transparent;
-
- .eventTimers > .delayNote,
- .eventTitle,
- .eventNote {
- color: $text-gray-disabled;
- }
-
- .binder,
- .eventTimers,
- .eventStatus {
- opacity: $opacity-disabled;
- }
- }
-
- .binder {
- // layout
- grid-area: binder;
- height: 100%;
- display: grid;
- place-content: center;
- position: relative;
- cursor: pointer;
-
- // style - general
- border-radius: 3px 0 0 3px;
- border-right: 1px solid $bg-gray-900;
-
- // style - colour
- background-color: $bg-container-l3; // override inline
- color: $text-white;
-
- .drag {
- @include drag-style;
- position: absolute;
- }
- }
-
- .playbackActions {
- // layout
- grid-area: pb-actions;
- display: flex;
- flex-direction: column;
- margin: $element-spacing $clearance $element-spacing $element-spacing;
- // style - general
- gap: 6px;
- }
-
- .eventTimers {
- grid-area: times;
- display: flex;
- align-items: center;
- gap: $clearance;
- height: 100%;
-
- .delayNote {
- font-size: 11px;
- color: $text-delay;
- }
- }
-
- .eventTitle {
- grid-area: title;
- display: block;
- font-size: 18px;
-
- .eventTitle__preview {
- width: 100%;
- }
-
- &.noTitle {
- span {
- opacity: $opacity-disabled;
- }
- }
-
- input {
- border-radius: 2px;
- border: 1px;
- }
- }
-
- .eventActions {
- grid-area: actions;
-
- display: flex;
- gap: $element-spacing;
- justify-content: flex-end;
- }
-
-
- .eventOptions {
- margin: $element-spacing 16px $element-spacing 0;
- }
-}
-
-.progressBg {
- grid-area: progb;
- border-radius: 1px;
- background-color: $bg-container-l1;
- opacity: 1;
-
- // layout
height: 100%;
+ padding: 2px 0;
}
-.progressBg.hidden {
- opacity: 0;
-}
\ No newline at end of file
+.eventNote {
+ grid-area: notes;
+ display: block;
+ font-size: 13px;
+ color: $block-text-color;
+ line-height: 13px;
+}
+
+.eventStatus {
+ grid-area: status;
+ display: flex;
+ justify-content: flex-end;
+ gap: 8px;
+
+ .statusIcon {
+ width: 16px;
+ height: 16px;
+ color: #404040;
+ }
+
+ .statusNext.enabled {
+ color: $playback-start;
+ }
+
+ .statusDelay.enabled {
+ color: $ontime-delay;
+ }
+
+ .statusPublic.enabled {
+ color: $action-blue;
+ }
+}
diff --git a/client/src/features/rundown/event-block/EventBlock.tsx b/client/src/features/rundown/event-block/EventBlock.tsx
index 26b05e0a8..e37736cff 100644
--- a/client/src/features/rundown/event-block/EventBlock.tsx
+++ b/client/src/features/rundown/event-block/EventBlock.tsx
@@ -4,17 +4,16 @@ import { Editable, EditableInput, EditablePreview, Tooltip } from '@chakra-ui/re
import { FiUsers } from '@react-icons/all-files/fi/FiUsers';
import { IoOptions } from '@react-icons/all-files/io5/IoOptions';
import { IoPlay } from '@react-icons/all-files/io5/IoPlay';
-import { IoPlayBackOutline } from '@react-icons/all-files/io5/IoPlayBackOutline';
import { IoPlayOutline } from '@react-icons/all-files/io5/IoPlayOutline';
+import { IoPlaySkipForward } from '@react-icons/all-files/io5/IoPlaySkipForward';
import { IoReload } from '@react-icons/all-files/io5/IoReload';
import { IoRemoveCircle } from '@react-icons/all-files/io5/IoRemoveCircle';
import { IoRemoveCircleOutline } from '@react-icons/all-files/io5/IoRemoveCircleOutline';
import { IoReorderTwo } from '@react-icons/all-files/io5/IoReorderTwo';
-import { IoReturnDownForward } from '@react-icons/all-files/io5/IoReturnDownForward';
import { IoTimerOutline } from '@react-icons/all-files/io5/IoTimerOutline';
import { editorEventId } from 'common/atoms/LocalEventSettings';
import TooltipActionBtn from 'common/components/buttons/TooltipActionBtn';
-import { getAccessibleColour } from 'common/utils/styleUtils';
+import { cx, getAccessibleColour } from 'common/utils/styleUtils';
import { useAtom } from 'jotai';
import { useEventAction } from '../../../common/hooks/useEventAction';
@@ -23,7 +22,7 @@ import { Playstate } from '../../../common/models/OntimeTypes';
import { tooltipDelayMid } from '../../../ontimeConfig';
import { EventItemActions } from '../RundownEntry';
-import EventBlockActionMenu from './composite/EventBlockActionMenu';
+import BlockActionMenu from './composite/BlockActionMenu';
import EventBlockProgressBar from './composite/EventBlockProgressBar';
import EventBlockTimers from './composite/EventBlockTimers';
@@ -31,9 +30,6 @@ import style from './EventBlock.module.scss';
const blockBtnStyle = {
size: 'sm',
- colorScheme: 'white',
- variant: 'ghost',
- fontSize: '20px',
};
const tooltipProps = {
@@ -56,8 +52,9 @@ interface EventBlockProps {
next: boolean;
skip: boolean;
selected: boolean;
+ hasCursor: boolean;
playback?: Playstate;
- actionHandler: (action: EventItemActions, payload: any) => void;
+ actionHandler: (action: EventItemActions, payload?: any) => void;
}
export default function EventBlock(props: EventBlockProps) {
@@ -77,6 +74,7 @@ export default function EventBlock(props: EventBlockProps) {
next,
skip = false,
selected,
+ hasCursor,
playback,
actionHandler,
} = props;
@@ -89,6 +87,7 @@ export default function EventBlock(props: EventBlockProps) {
const hasDelay = delay !== 0 && delay !== null;
// Todo: could I re-render the item without causing a state change here?
+ // ?? use refs instead?
useEffect(() => {
setBlockTitle(title);
}, [title]);
@@ -115,13 +114,18 @@ export default function EventBlock(props: EventBlockProps) {
playBtnStyles._hover = {};
}
+ const blockClasses = cx([
+ style.eventBlock,
+ skip ? style.skip : null,
+ selected ? style.selected : null,
+ hasCursor ? style.hasCursor : null,
+ ]);
+
return (
{(provided) => (
@@ -138,36 +142,38 @@ export default function EventBlock(props: EventBlockProps) {
: }
{...blockBtnStyle}
- variant={skip ? 'solid' : 'ghost'}
clickHandler={() => actionHandler('update', { field: 'skip', value: !skip })}
tabIndex={-1}
disabled={selected}
/>
: }
+ icon={}
disabled={skip}
{...blockBtnStyle}
clickHandler={() => setEventPlayback.loadEvent(eventId)}
tabIndex={-1}
/>
: }
disabled={skip}
{...blockBtnStyle}
- variant={eventIsPlaying ? 'solid' : 'ghost'}
clickHandler={() => setEventPlayback.startEvent(eventId)}
backgroundColor={eventIsPlaying ? '#58A151' : undefined}
+ _hover={{backgroundColor: eventIsPlaying ? '#58A151' : undefined}}
tabIndex={-1}
/>
@@ -186,7 +192,7 @@ export default function EventBlock(props: EventBlockProps) {
onChange={(value) => setBlockTitle(value)}
onSubmit={(value) => handleTitle(value)}
>
-
+
@@ -195,54 +201,53 @@ export default function EventBlock(props: EventBlockProps) {
-
-
-
-
+
-
-
-
-
+
-
-
-
+ }`} />