diff --git a/packages/web/components/elements/DropdownElements.tsx b/packages/web/components/elements/DropdownElements.tsx
index ed8528544..d1fccf24e 100644
--- a/packages/web/components/elements/DropdownElements.tsx
+++ b/packages/web/components/elements/DropdownElements.tsx
@@ -185,6 +185,9 @@ export function Dropdown(
sideOffset={sideOffset}
align={align ? align : 'center'}
alignOffset={alignOffset}
+ onCloseAutoFocus={(event) => {
+ event.preventDefault()
+ }}
>
{labelText && {labelText}}
{children}
diff --git a/packages/web/components/elements/EditLabelChip.tsx b/packages/web/components/elements/EditLabelChip.tsx
index bf6fefcfc..1ec3a1062 100644
--- a/packages/web/components/elements/EditLabelChip.tsx
+++ b/packages/web/components/elements/EditLabelChip.tsx
@@ -14,8 +14,10 @@ type EditLabelChipProps = {
export function EditLabelLabelChip(props: EditLabelChipProps): JSX.Element {
const isDark = isDarkTheme()
- const selectedBorder = '#FFEA9F'
- const unSelectedBorder = 'transparent'
+ const selectedBorder = isDark ? '#FFEA9F' : '#D9D9D9'
+ const unSelectedBorder = isDark ? 'transparent' : '#DEDEDE'
+ const xUnselectedColor = isDark ? '#6A6968' : '#DEDEDE'
+
return (
@@ -49,11 +51,7 @@ export function EditLabelLabelChip(props: EditLabelChipProps): JSX.Element {
>
diff --git a/packages/web/components/elements/LabelsPicker.tsx b/packages/web/components/elements/LabelsPicker.tsx
index 3b4b59c75..61aac142d 100644
--- a/packages/web/components/elements/LabelsPicker.tsx
+++ b/packages/web/components/elements/LabelsPicker.tsx
@@ -48,7 +48,7 @@ export const LabelsPicker = (props: LabelsPickerProps): JSX.Element => {
if (!isTouchScreenDevice() && focused && inputRef.current) {
inputRef.current.focus()
}
- }, [focused])
+ }, [inputRef.current, focused])
const autoComplete = useCallback(() => {
const lowerCasedValue = inputValue.toLowerCase()
@@ -104,7 +104,7 @@ export const LabelsPicker = (props: LabelsPickerProps): JSX.Element => {
{
lineHeight: '2',
width: '100%',
cursor: 'text',
- color: '#EBEBEB',
+ color: '$thTextContrast2',
fontSize: '12px',
fontFamily: '$inter',
input: {
@@ -124,7 +124,7 @@ export const LabelsPicker = (props: LabelsPickerProps): JSX.Element => {
},
'&:focus-within': {
outline: 'none',
- border: '1px solid $thLibraryMenuUnselected',
+ border: '1px solid #898989',
},
'>span': {
marginTop: '0px',
diff --git a/packages/web/components/patterns/CardMenu.tsx b/packages/web/components/patterns/CardMenu.tsx
index c28b62097..27b1207b4 100644
--- a/packages/web/components/patterns/CardMenu.tsx
+++ b/packages/web/components/patterns/CardMenu.tsx
@@ -10,6 +10,7 @@ export type CardMenuDropdownAction =
| 'unarchive'
| 'delete'
| 'set-labels'
+ | 'open-notebook'
| 'showOriginal'
| 'unsubscribe'
| 'editTitle'
@@ -45,6 +46,12 @@ export function CardMenu(props: CardMenuProps): JSX.Element {
}}
title="Set Labels"
/>
+ {
+ props.actionHandler('open-notebook')
+ }}
+ title="Open Notebook"
+ />
props.actionHandler('showOriginal')}
title="Open Original"
diff --git a/packages/web/components/patterns/LibraryCards/CardTypes.tsx b/packages/web/components/patterns/LibraryCards/CardTypes.tsx
index 2833d724d..2c9077661 100644
--- a/packages/web/components/patterns/LibraryCards/CardTypes.tsx
+++ b/packages/web/components/patterns/LibraryCards/CardTypes.tsx
@@ -12,6 +12,7 @@ export type LinkedItemCardAction =
| 'mark-read'
| 'mark-unread'
| 'set-labels'
+ | 'open-notebook'
| 'unsubscribe'
| 'update-item'
diff --git a/packages/web/components/templates/article/NotebookModal.tsx b/packages/web/components/templates/article/NotebookModal.tsx
index c6a8f4282..25281f854 100644
--- a/packages/web/components/templates/article/NotebookModal.tsx
+++ b/packages/web/components/templates/article/NotebookModal.tsx
@@ -82,6 +82,7 @@ export function NotebookModal(props: NotebookModalProps): JSX.Element {
{
event.preventDefault()
}}
diff --git a/packages/web/components/templates/article/NotebookPresenter.tsx b/packages/web/components/templates/article/NotebookPresenter.tsx
new file mode 100644
index 000000000..c76aad2e5
--- /dev/null
+++ b/packages/web/components/templates/article/NotebookPresenter.tsx
@@ -0,0 +1,33 @@
+import { Highlight } from '../../../lib/networking/fragments/highlightFragment'
+import { ReadableItem } from '../../../lib/networking/queries/useGetLibraryItemsQuery'
+import {
+ UserBasicData,
+ useGetViewerQuery,
+} from '../../../lib/networking/queries/useGetViewerQuery'
+import { NotebookModal } from './NotebookModal'
+
+type NotebookPresenterProps = {
+ viewer: UserBasicData
+
+ item: ReadableItem
+ highlights: Highlight[]
+
+ onClose: (highlights: Highlight[]) => void
+}
+
+export const NotebookPresenter = (props: NotebookPresenterProps) => {
+ return (
+ {
+ console.log('NotebookModal: ', highlights, deletedAnnotations)
+ props.onClose(highlights)
+ }}
+ viewHighlightInReader={(highlightId) => {
+ window.location.href = `/${props.viewer.profile.username}/${props.item.slug}#${highlightId}`
+ }}
+ />
+ )
+}
diff --git a/packages/web/components/templates/article/SetLabelsControl.tsx b/packages/web/components/templates/article/SetLabelsControl.tsx
index c02c8e1e3..087e128e2 100644
--- a/packages/web/components/templates/article/SetLabelsControl.tsx
+++ b/packages/web/components/templates/article/SetLabelsControl.tsx
@@ -241,9 +241,7 @@ export function SetLabelsControl(props: SetLabelsControlProps): JSX.Element {
props
const { labels, revalidate } = useGetLabelsQuery()
// Move focus through the labels list on tab or arrow up/down keys
- const [focusedIndex, setFocusedIndex] = useState(
- undefined
- )
+ const [focusedIndex, setFocusedIndex] = useState(0)
useEffect(() => {
setFocusedIndex(undefined)
diff --git a/packages/web/components/templates/article/SetLabelsModal.tsx b/packages/web/components/templates/article/SetLabelsModal.tsx
index d88698b98..d71cbc714 100644
--- a/packages/web/components/templates/article/SetLabelsModal.tsx
+++ b/packages/web/components/templates/article/SetLabelsModal.tsx
@@ -173,6 +173,7 @@ export function SetLabelsModal(props: SetLabelsModalProps): JSX.Element {
(
+ undefined
+ )
+
const [showAddLinkModal, setShowAddLinkModal] = useState(false)
const [showEditTitleModal, setShowEditTitleModal] = useState(false)
const [linkToRemove, setLinkToRemove] = useState()
@@ -328,6 +334,9 @@ export function HomeFeedContainer(): JSX.Element {
case 'set-labels':
setLabelsTarget(item)
break
+ case 'open-notebook':
+ setNotebookTarget(item)
+ break
case 'unsubscribe':
performActionOnItem('unsubscribe', item)
case 'update-item':
@@ -464,6 +473,9 @@ export function HomeFeedContainer(): JSX.Element {
case 'showEditLabelsModal':
handleCardAction('set-labels', activeItem)
break
+ case 'openNotebook':
+ handleCardAction('open-notebook', activeItem)
+ break
case 'sortDescending':
setQueryInputs({ ...queryInputs, sortDescending: true })
break
@@ -510,6 +522,12 @@ export function HomeFeedContainer(): JSX.Element {
shortcut: ['l'],
perform: () => handleCardAction('set-labels', activeItem),
}),
+ createAction({
+ section: 'Library',
+ name: 'Open Notebook',
+ shortcut: ['t'],
+ perform: () => handleCardAction('open-notebook', activeItem),
+ }),
createAction({
section: 'Library',
name: 'Mark item as read',
@@ -705,6 +723,8 @@ export function HomeFeedContainer(): JSX.Element {
isValidating={isValidating}
labelsTarget={labelsTarget}
setLabelsTarget={setLabelsTarget}
+ notebookTarget={notebookTarget}
+ setNotebookTarget={setNotebookTarget}
showAddLinkModal={showAddLinkModal}
setShowAddLinkModal={setShowAddLinkModal}
showEditTitleModal={showEditTitleModal}
@@ -740,6 +760,10 @@ type HomeFeedContentProps = {
loadMore: () => void
labelsTarget: LibraryItem | undefined
setLabelsTarget: (target: LibraryItem | undefined) => void
+
+ notebookTarget: LibraryItem | undefined
+ setNotebookTarget: (target: LibraryItem | undefined) => void
+
showAddLinkModal: boolean
setShowAddLinkModal: (show: boolean) => void
showEditTitleModal: boolean
@@ -1015,6 +1039,19 @@ function LibraryItemsLayout(props: LibraryItemsLayoutProps): JSX.Element {
}}
/>
)}
+ {props.viewer && props.notebookTarget?.node.id && (
+ {
+ if (props.notebookTarget?.node.highlights) {
+ props.notebookTarget.node.highlights = highlights
+ }
+ props.setNotebookTarget(undefined)
+ }}
+ />
+ )}
{showUploadModal && (
setShowUploadModal(false)} />
)}
@@ -1055,13 +1092,17 @@ function LibraryItems(props: LibraryItemsProps): JSX.Element {
display: 'grid',
width: '100%',
gridAutoRows: 'auto',
- borderRadius: '5px',
+ borderRadius: '6px',
gridGap: props.layout == 'LIST_LAYOUT' ? '0' : '20px',
marginTop: '10px',
marginBottom: '0px',
paddingTop: '0',
paddingBottom: '0px',
overflow: 'hidden',
+ boxShadow:
+ props.layout == 'LIST_LAYOUT'
+ ? '0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);'
+ : 'unset',
'@xlgDown': {
border: 'unset',
borderRadius: props.layout == 'LIST_LAYOUT' ? 0 : undefined,
diff --git a/packages/web/components/templates/homeFeed/LibraryHeader.tsx b/packages/web/components/templates/homeFeed/LibraryHeader.tsx
index 83c3f561b..e30bd73d6 100644
--- a/packages/web/components/templates/homeFeed/LibraryHeader.tsx
+++ b/packages/web/components/templates/homeFeed/LibraryHeader.tsx
@@ -83,7 +83,7 @@ export function LibraryHeader(props: LibraryHeaderProps): JSX.Element {
zIndex: 5,
position: 'fixed',
height: HEADER_HEIGHT,
- bg: showBackground ? '$thBackground' : 'transparent',
+ bg: '$thLibraryBackground',
'@mdDown': {
left: '0px',
right: '0',
@@ -242,14 +242,6 @@ export function SearchBox(props: SearchBoxProps): JSX.Element {
setSearchTerm(props.searchTerm ?? '')
}, [props.searchTerm])
- const border = props.compact
- ? focused
- ? '1px solid $omnivoreCtaYellow'
- : '1px solid black'
- : focused
- ? '1px solid $omnivoreCtaYellow'
- : '1px solid $thBorderColor'
-
useKeyboardShortcuts(
searchBarCommands((action) => {
if (action === 'focusSearchBar' && inputRef.current) {
@@ -270,7 +262,12 @@ export function SearchBox(props: SearchBoxProps): JSX.Element {
maxWidth: '521px',
bg: '$thLibrarySearchbox',
borderRadius: '6px',
- border: border,
+ border: focused
+ ? '2px solid $omnivoreCtaYellow'
+ : '2px solid transparent',
+ boxShadow: focused
+ ? 'none'
+ : '0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);',
}}
>