From 73827b592b28e110d97a041bab2fea9912a7c4fb Mon Sep 17 00:00:00 2001 From: TheMany172 Date: Tue, 2 Jun 2026 11:19:45 +0100 Subject: [PATCH] initial commit --- ...tract-win32-x64-npm-2.1.1-b206bdfc73-8.zip | Bin 0 -> 117002 bytes packages/api/package.json | 2 +- packages/snjs/package.json | 2 +- packages/web/package.json | 2 +- .../NoteGroupView/NoteGroupView.tsx | 81 +++++- .../Components/NoteGroupView/TabBar.tsx | 198 ++++++++++++++ .../Controller/ItemGroupController.ts | 185 ++++++++++++- .../Components/NotesOptions/NotesOptions.tsx | 31 +++ .../ItemList/ItemListController.ts | 20 +- packages/web/src/stylesheets/_tabs.scss | 252 ++++++++++++++++++ packages/web/src/stylesheets/index.css.scss | 1 + 11 files changed, 740 insertions(+), 34 deletions(-) create mode 100644 .yarn/cache/@cbor-extract-cbor-extract-win32-x64-npm-2.1.1-b206bdfc73-8.zip create mode 100644 packages/web/src/javascripts/Components/NoteGroupView/TabBar.tsx create mode 100644 packages/web/src/stylesheets/_tabs.scss diff --git a/.yarn/cache/@cbor-extract-cbor-extract-win32-x64-npm-2.1.1-b206bdfc73-8.zip b/.yarn/cache/@cbor-extract-cbor-extract-win32-x64-npm-2.1.1-b206bdfc73-8.zip new file mode 100644 index 0000000000000000000000000000000000000000..d4141549c162e8d001a56ead39df0fbed2ab1275 GIT binary patch literal 117002 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]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¨|ST|oT^0y7DAiq?y>L9pv%cLKE_sL-PfPJ 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�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 { constructor(props: Props) { super(props, props.application) + const controllerGroup = props.application.itemControllerGroup this.state = { showMultipleSelectedNotes: false, showMultipleSelectedFiles: false, controllers: [], + activeControllerIndex: controllerGroup.activeControllerIndex || 0, + splitControllerIndex: controllerGroup.splitControllerIndex, + focusedPane: controllerGroup.focusedPane || 'primary', selectedFile: undefined, } } @@ -44,6 +52,9 @@ class NoteGroupView extends AbstractComponent { const controllers = controllerGroup.itemControllers this.setState({ controllers: controllers, + activeControllerIndex: controllerGroup.activeControllerIndex, + splitControllerIndex: controllerGroup.splitControllerIndex, + focusedPane: controllerGroup.focusedPane, }) }) @@ -91,23 +102,75 @@ class NoteGroupView extends AbstractComponent { !this.state.showMultipleSelectedNotes && !this.state.showMultipleSelectedFiles const hasControllers = this.state.controllers.length > 0 + const itemControllerGroup = this.application.itemControllerGroup + + const primaryController = this.state.controllers[this.state.activeControllerIndex] + const secondaryController = this.state.splitControllerIndex !== undefined + ? this.state.controllers[this.state.splitControllerIndex] + : undefined + + const renderController = (controller: NoteViewController | FileViewController) => { + return controller instanceof NoteViewController ? ( + + ) : ( + + ) + } return ( <> + {shouldNotShowMultipleSelectedItems && hasControllers && ( + + )} + {this.state.showMultipleSelectedNotes && } {this.state.showMultipleSelectedFiles && ( )} + {shouldNotShowMultipleSelectedItems && hasControllers && ( - <> - {this.state.controllers.map((controller) => { - return controller instanceof NoteViewController ? ( - - ) : ( - - ) - })} - +

+ {secondaryController !== undefined ? ( +
+
{ + if (itemControllerGroup.focusedPane !== 'primary') { + itemControllerGroup.focusedPane = 'primary' + itemControllerGroup.notifyObservers() + } + }} + > +
+ {primaryController && renderController(primaryController)} +
+
{ + if (itemControllerGroup.focusedPane !== 'secondary') { + itemControllerGroup.focusedPane = 'secondary' + itemControllerGroup.notifyObservers() + } + }} + > +
+ {renderController(secondaryController)} +
+
+ ) : ( + primaryController && renderController(primaryController) + )} +
)} ) diff --git a/packages/web/src/javascripts/Components/NoteGroupView/TabBar.tsx b/packages/web/src/javascripts/Components/NoteGroupView/TabBar.tsx new file mode 100644 index 00000000000..7e107c05166 --- /dev/null +++ b/packages/web/src/javascripts/Components/NoteGroupView/TabBar.tsx @@ -0,0 +1,198 @@ +import React, { useState, useEffect, useRef } from 'react' +import { WebApplication } from '@/Application/WebApplication' +import { NoteViewController } from '../NoteView/Controller/NoteViewController' +import { FileViewController } from '../NoteView/Controller/FileViewController' + +type TabBarProps = { + application: WebApplication + activeControllerIndex: number + splitControllerIndex: number | undefined + focusedPane: 'primary' | 'secondary' + controllers: (NoteViewController | FileViewController)[] +} + +export const TabBar: React.FC = ({ + application, + activeControllerIndex, + splitControllerIndex, + focusedPane, + controllers, +}) => { + const itemControllerGroup = application.itemControllerGroup + const [contextMenu, setContextMenu] = useState<{ + x: number + y: number + index: number + } | null>(null) + + const menuRef = useRef(null) + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (menuRef.current && !menuRef.current.contains(event.target as Node)) { + setContextMenu(null) + } + } + document.addEventListener('mousedown', handleClickOutside) + return () => document.removeEventListener('mousedown', handleClickOutside) + }, []) + + if (controllers.length === 0) { + return null + } + + const handleTabClick = (index: number) => { + // If split screen is active, determine which pane we are clicking in + // For simplicity, clicking a tab will focus that index as the primary tab + if (splitControllerIndex !== undefined && index === splitControllerIndex) { + itemControllerGroup.focusedPane = 'secondary' + } else { + itemControllerGroup.activeControllerIndex = index + itemControllerGroup.focusedPane = 'primary' + } + itemControllerGroup.notifyObservers() + } + + const handleCloseClick = (e: React.MouseEvent, index: number) => { + e.stopPropagation() + itemControllerGroup.closeTab(index) + } + + const handleContextMenu = (e: React.MouseEvent, index: number) => { + e.preventDefault() + setContextMenu({ + x: e.clientX, + y: e.clientY, + index, + }) + } + + const handleCloseTab = () => { + if (contextMenu !== null) { + itemControllerGroup.closeTab(contextMenu.index) + setContextMenu(null) + } + } + + const handleCloseOthers = () => { + if (contextMenu !== null) { + const targetController = controllers[contextMenu.index] + for (const controller of [...controllers]) { + if (controller !== targetController) { + itemControllerGroup.closeItemController(controller, { notify: false }) + } + } + itemControllerGroup.activeControllerIndex = 0 + itemControllerGroup.splitControllerIndex = undefined + itemControllerGroup.focusedPane = 'primary' + itemControllerGroup.notifyObservers() + setContextMenu(null) + } + } + + const handleSplitTab = () => { + if (contextMenu !== null) { + itemControllerGroup.splitTab(contextMenu.index) + setContextMenu(null) + } + } + + const getTabTitle = (controller: NoteViewController | FileViewController) => { + if (controller instanceof NoteViewController) { + return controller.item?.title || 'Untitled note' + } else { + return (controller.item as any)?.title || (controller.item as any)?.name || 'Untitled file' + } + } + + return ( +
+
+ {controllers.map((controller, index) => { + const isPrimaryActive = activeControllerIndex === index + const isSecondaryActive = splitControllerIndex === index + const isFocused = (focusedPane === 'primary' && isPrimaryActive) || + (focusedPane === 'secondary' && isSecondaryActive) + const isOpened = isPrimaryActive || isSecondaryActive + + let tabClassName = 'tab-item' + if (isOpened) { + tabClassName += ' tab-item-active' + } + if (isFocused) { + tabClassName += ' tab-item-focused' + } + + return ( +
handleTabClick(index)} + onContextMenu={(e) => handleContextMenu(e, index)} + > + {getTabTitle(controller)} + {controllers.length > 1 && ( + + )} +
+ ) + })} + + +
+ +
+ +
+ + {contextMenu && ( +
+
+ Close Tab +
+
+ Close Other Tabs +
+
+ Split Screen +
+
+ )} +
+ ) +} diff --git a/packages/web/src/javascripts/Components/NoteView/Controller/ItemGroupController.ts b/packages/web/src/javascripts/Components/NoteView/Controller/ItemGroupController.ts index 101c80404c4..11454b85cce 100644 --- a/packages/web/src/javascripts/Components/NoteView/Controller/ItemGroupController.ts +++ b/packages/web/src/javascripts/Components/NoteView/Controller/ItemGroupController.ts @@ -22,6 +22,10 @@ export class ItemGroupController { changeObservers: ItemControllerGroupChangeCallback[] = [] eventObservers: (() => void)[] = [] + public activeControllerIndex = 0 + public splitControllerIndex: number | undefined = undefined + public focusedPane: 'primary' | 'secondary' = 'primary' + constructor( private items: ItemManagerInterface, private mutator: MutatorClientInterface, @@ -42,20 +46,35 @@ export class ItemGroupController { this.changeObservers.length = 0 - for (const controller of this.itemControllers) { + for (const controller of [...this.itemControllers]) { this.closeItemController(controller, { notify: false }) } this.itemControllers.length = 0 } - async createItemController(context: { - file?: FileItem - note?: SNNote - templateOptions?: TemplateNoteViewControllerOptions - }): Promise { - if (this.activeItemViewController) { - this.closeItemController(this.activeItemViewController, { notify: false }) + async createItemController( + context: { + file?: FileItem + note?: SNNote + templateOptions?: TemplateNoteViewControllerOptions + }, + options: { openInNewTab?: boolean; forceNewTab?: boolean } = {} + ): Promise { + // Check if the item is already open in any existing tab + if (!options.forceNewTab && (context.note || context.file)) { + const targetUuid = context.note?.uuid || context.file?.uuid + const existingIndex = this.itemControllers.findIndex((c) => c.item?.uuid === targetUuid) + if (existingIndex !== -1) { + if (this.splitControllerIndex !== undefined && existingIndex === this.splitControllerIndex) { + this.focusedPane = 'secondary' + } else { + this.activeControllerIndex = existingIndex + this.focusedPane = 'primary' + } + this.notifyObservers() + return this.itemControllers[existingIndex] + } } let controller!: NoteViewController | FileViewController @@ -91,25 +110,160 @@ export class ItemGroupController { throw Error('Invalid input to createItemController') } - this.itemControllers.push(controller) - await controller.initialize() + const shouldNewTab = options.openInNewTab || this.itemControllers.length === 0 + + if (shouldNewTab) { + this.itemControllers.push(controller) + if (this.focusedPane === 'secondary' && this.splitControllerIndex !== undefined) { + this.splitControllerIndex = this.itemControllers.length - 1 + } else { + this.activeControllerIndex = this.itemControllers.length - 1 + this.focusedPane = 'primary' + } + } else { + const targetIndex = (this.focusedPane === 'secondary' && this.splitControllerIndex !== undefined) + ? this.splitControllerIndex + : this.activeControllerIndex + + const oldController = this.itemControllers[targetIndex] + if (oldController) { + if (oldController instanceof NoteViewController) { + oldController.syncOnlyIfLargeNote() + } + oldController.deinit() + } + + this.itemControllers[targetIndex] = controller + } + this.notifyObservers() return controller } + public selectControllerIndex(index: number): void { + if (index >= 0 && index < this.itemControllers.length) { + this.activeControllerIndex = index + this.focusedPane = 'primary' + this.notifyObservers() + } + } + + public async openNewTemplateTab(): Promise { + await this.createItemController({ + templateOptions: { + title: '', + autofocusBehavior: 'editor', + } + }, { openInNewTab: true }) + } + + public splitTab(index: number): void { + if (index >= 0 && index < this.itemControllers.length) { + this.splitControllerIndex = index + this.focusedPane = 'secondary' + this.notifyObservers() + } + } + + public toggleSplitScreen(): void { + if (this.splitControllerIndex !== undefined) { + this.splitControllerIndex = undefined + this.focusedPane = 'primary' + } else { + if (this.itemControllers.length > 1) { + const otherIndex = this.itemControllers.findIndex((_, idx) => idx !== this.activeControllerIndex) + this.splitControllerIndex = otherIndex !== -1 ? otherIndex : undefined + } else { + const currentController = this.itemControllers[this.activeControllerIndex] + if (currentController) { + void this.createItemController({ + note: currentController.item instanceof SNNote ? currentController.item : undefined, + file: currentController.item instanceof FileItem ? currentController.item : undefined, + }, { openInNewTab: true, forceNewTab: true }).then((newController) => { + const newIndex = this.itemControllers.indexOf(newController) + this.splitControllerIndex = newIndex + this.focusedPane = 'secondary' + this.notifyObservers() + }) + return + } + } + } + this.notifyObservers() + } + + public closeTab(index: number): void { + if (index < 0 || index >= this.itemControllers.length) { + return + } + + const controller = this.itemControllers[index] + if (controller instanceof NoteViewController) { + controller.syncOnlyIfLargeNote() + } + controller.deinit() + + this.itemControllers.splice(index, 1) + + if (this.activeControllerIndex >= this.itemControllers.length) { + this.activeControllerIndex = Math.max(0, this.itemControllers.length - 1) + } + + if (this.splitControllerIndex !== undefined) { + if (this.splitControllerIndex === index) { + this.splitControllerIndex = undefined + this.focusedPane = 'primary' + } else if (this.splitControllerIndex > index) { + this.splitControllerIndex-- + } + } + + if (this.itemControllers.length === 0) { + this.activeControllerIndex = 0 + this.splitControllerIndex = undefined + this.focusedPane = 'primary' + } + + this.notifyObservers() + } + public closeItemController( controller: NoteViewController | FileViewController, { notify = true }: { notify: boolean } = { notify: true }, ): void { + const index = this.itemControllers.indexOf(controller) + if (index === -1) { + return + } + if (controller instanceof NoteViewController) { controller.syncOnlyIfLargeNote() } controller.deinit() - removeFromArray(this.itemControllers, controller) + this.itemControllers.splice(index, 1) + + if (this.activeControllerIndex >= this.itemControllers.length) { + this.activeControllerIndex = Math.max(0, this.itemControllers.length - 1) + } + + if (this.splitControllerIndex !== undefined) { + if (this.splitControllerIndex === index) { + this.splitControllerIndex = undefined + this.focusedPane = 'primary' + } else if (this.splitControllerIndex > index) { + this.splitControllerIndex-- + } + } + + if (this.itemControllers.length === 0) { + this.activeControllerIndex = 0 + this.splitControllerIndex = undefined + this.focusedPane = 'primary' + } if (notify) { this.notifyObservers() @@ -125,7 +279,7 @@ export class ItemGroupController { } closeAllItemControllers(): void { - for (const controller of this.itemControllers) { + for (const controller of [...this.itemControllers]) { this.closeItemController(controller, { notify: false }) } @@ -133,7 +287,10 @@ export class ItemGroupController { } get activeItemViewController(): NoteViewController | FileViewController | undefined { - return this.itemControllers[0] + if (this.focusedPane === 'secondary' && this.splitControllerIndex !== undefined) { + return this.itemControllers[this.splitControllerIndex] + } + return this.itemControllers[this.activeControllerIndex] } /** @@ -152,7 +309,7 @@ export class ItemGroupController { } } - private notifyObservers(): void { + public notifyObservers(): void { for (const observer of this.changeObservers) { observer(this.activeItemViewController) } diff --git a/packages/web/src/javascripts/Components/NotesOptions/NotesOptions.tsx b/packages/web/src/javascripts/Components/NotesOptions/NotesOptions.tsx index c5fee3d2e77..7737f455ee4 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/NotesOptions.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/NotesOptions.tsx @@ -97,6 +97,27 @@ const NotesOptions = ({ notes, closeMenu }: NotesOptionsProps) => { closeMenuAndToggleNotesList() }, [closeMenuAndToggleNotesList, notesController]) + const openInNewTab = useCallback(async () => { + if (notes[0]) { + await application.itemListController.openNote(notes[0].uuid, true) + closeMenu() + } + }, [application, notes, closeMenu]) + + const openInSplitScreen = useCallback(async () => { + if (notes[0]) { + const newController = await application.itemControllerGroup.createItemController( + { note: notes[0] }, + { openInNewTab: true } + ) + const newIndex = application.itemControllerGroup.itemControllers.indexOf(newController) + if (newIndex !== -1) { + application.itemControllerGroup.splitTab(newIndex) + } + closeMenu() + } + }, [application, notes, closeMenu]) + const openRevisionHistoryModal = useCallback(() => { application.historyModalController.openModal(notesController.firstSelectedNote) }, [application.historyModalController, notesController.firstSelectedNote]) @@ -150,6 +171,16 @@ const NotesOptions = ({ notes, closeMenu }: NotesOptionsProps) => { <> {notes.length === 1 && ( <> + + + + Open in new tab + + + + Open in split screen + + diff --git a/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts b/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts index e407a8262b4..e50413eb0a8 100644 --- a/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts +++ b/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts @@ -371,8 +371,8 @@ export class ItemListController return this.getActiveItemController()?.item } - async openNote(uuid: string): Promise { - if (this.activeControllerItem?.uuid === uuid) { + async openNote(uuid: string, openInNewTab?: boolean): Promise { + if (!openInNewTab && this.activeControllerItem?.uuid === uuid) { return } @@ -382,13 +382,13 @@ export class ItemListController return } - await this.itemControllerGroup.createItemController({ note }) + await this.itemControllerGroup.createItemController({ note }, { openInNewTab }) await this.publishCrossControllerEventSync(CrossControllerEvent.ActiveEditorChanged) } - async openFile(fileUuid: string): Promise { - if (this.getActiveItemController()?.item.uuid === fileUuid) { + async openFile(fileUuid: string, openInNewTab?: boolean): Promise { + if (!openInNewTab && this.getActiveItemController()?.item.uuid === fileUuid) { return } @@ -398,7 +398,7 @@ export class ItemListController return } - await this.itemControllerGroup.createItemController({ file }) + await this.itemControllerGroup.createItemController({ file }, { openInNewTab }) } setCompletedFullSync = (completed: boolean) => { @@ -1157,10 +1157,14 @@ export class ItemListController if (this.selectedItemsCount === 1) { const item = this.firstSelectedItem + const hasMeta = this.keyboardService.activeModifiers.has(KeyboardModifier.Meta) + const hasCtrl = this.keyboardService.activeModifiers.has(KeyboardModifier.Ctrl) + const openInNewTab = userTriggered && (hasMeta || hasCtrl) + if (item.content_type === ContentType.TYPES.Note) { - await this.openNote(item.uuid) + await this.openNote(item.uuid, openInNewTab) } else if (item.content_type === ContentType.TYPES.File) { - await this.openFile(item.uuid) + await this.openFile(item.uuid, openInNewTab) } this.recents.add(item.uuid) diff --git a/packages/web/src/stylesheets/_tabs.scss b/packages/web/src/stylesheets/_tabs.scss new file mode 100644 index 00000000000..efb64d3b47a --- /dev/null +++ b/packages/web/src/stylesheets/_tabs.scss @@ -0,0 +1,252 @@ +.tab-bar-container { + display: flex; + align-items: center; + justify-content: space-between; + background-color: var(--sn-stylekit-bg-contrast-low, #f4f4f5); + border-bottom: 1px solid var(--sn-stylekit-border-color, #e4e4e7); + padding: 0 8px; + height: 38px; + user-select: none; + z-index: 20; + + // Adapt to dark themes dynamically + .theme-dark & { + background-color: var(--sn-stylekit-bg-contrast-low, #18181b); + border-bottom: 1px solid var(--sn-stylekit-border-color, #27272a); + } +} + +.tab-bar-tabs { + display: flex; + overflow-x: auto; + height: 100%; + align-items: flex-end; + gap: 4px; + scrollbar-width: none; // Hide scrollbar for standard Firefox + + &::-webkit-scrollbar { + display: none; // Hide scrollbar for Chrome/Safari + } +} + +.tab-item { + display: flex; + align-items: center; + height: 32px; + padding: 0 12px; + border-radius: 6px 6px 0 0; + background-color: transparent; + cursor: pointer; + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 13px; + max-width: 160px; + border: 1px solid transparent; + border-bottom: none; + color: var(--sn-stylekit-input-placeholder-color, #71717a); + position: relative; + + &:hover { + background-color: var(--sn-stylekit-bg-contrast-medium, rgba(0, 0, 0, 0.05)); + color: var(--sn-stylekit-text-color, #18181b); + + .theme-dark & { + background-color: var(--sn-stylekit-bg-contrast-medium, rgba(255, 255, 255, 0.05)); + color: var(--sn-stylekit-text-color, #f4f4f5); + } + } +} + +.tab-item-active { + background-color: var(--editor-background-color, #ffffff) !important; + color: var(--editor-foreground-color, #18181b) !important; + border-color: var(--sn-stylekit-border-color, #e4e4e7) !important; + border-bottom: 1px solid var(--editor-background-color, #ffffff) !important; + margin-bottom: -1px; + font-weight: 500; + z-index: 21; + + .theme-dark & { + background-color: var(--editor-background-color, #09090b) !important; + color: var(--editor-foreground-color, #f4f4f5) !important; + border-color: var(--sn-stylekit-border-color, #27272a) !important; + border-bottom: 1px solid var(--editor-background-color, #09090b) !important; + } +} + +.tab-item-focused { + border-top: 2px solid var(--sn-stylekit-primary-color, #3b82f6) !important; +} + +.tab-add-btn { + background: none; + border: none; + color: var(--sn-stylekit-input-placeholder-color, #71717a); + cursor: pointer; + height: 28px; + width: 28px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 6px; + font-size: 14px; + margin-bottom: 2px; + align-self: center; + transition: all 0.2s; + + &:hover { + background-color: var(--sn-stylekit-bg-contrast-medium, rgba(0, 0, 0, 0.05)); + color: var(--sn-stylekit-text-color, #18181b); + + .theme-dark & { + background-color: var(--sn-stylekit-bg-contrast-medium, rgba(255, 255, 255, 0.05)); + color: var(--sn-stylekit-text-color, #f4f4f5); + } + } +} + +.tab-title-text { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-right: 8px; +} + +.tab-close-btn { + background: none; + border: none; + color: inherit; + cursor: pointer; + padding: 2px 4px; + border-radius: 4px; + font-size: 9px; + opacity: 0.4; + transition: opacity 0.2s, background-color 0.2s; + display: flex; + align-items: center; + justify-content: center; + + &:hover { + opacity: 1; + background-color: rgba(0, 0, 0, 0.08); + + .theme-dark & { + background-color: rgba(255, 255, 255, 0.15); + } + } +} + +.tab-bar-actions { + display: flex; + align-items: center; + gap: 4px; + padding-left: 8px; + border-left: 1px solid var(--sn-stylekit-border-color, #e4e4e7); + + .theme-dark & { + border-left-color: var(--sn-stylekit-border-color, #27272a); + } +} + +.tab-action-btn { + background: none; + border: none; + color: var(--sn-stylekit-input-placeholder-color, #71717a); + cursor: pointer; + padding: 6px; + border-radius: 6px; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s; + + &:hover { + background-color: var(--sn-stylekit-bg-contrast-medium, rgba(0, 0, 0, 0.05)); + color: var(--sn-stylekit-text-color, #18181b); + + .theme-dark & { + background-color: var(--sn-stylekit-bg-contrast-medium, rgba(255, 255, 255, 0.05)); + color: var(--sn-stylekit-text-color, #f4f4f5); + } + } +} + +.tab-action-btn-active { + color: var(--sn-stylekit-primary-color, #3b82f6) !important; +} + +.tab-context-menu { + position: fixed; + z-index: 10000; + background-color: var(--sn-stylekit-editor-background-color, #ffffff); + border: 1px solid var(--sn-stylekit-border-color, #e4e4e7); + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); + border-radius: 6px; + padding: 4px 0; + min-width: 140px; + + .theme-dark & { + background-color: var(--sn-stylekit-editor-background-color, #18181b); + border-color: var(--sn-stylekit-border-color, #27272a); + } +} + +.context-menu-item { + padding: 8px 12px; + font-size: 13px; + cursor: pointer; + color: var(--sn-stylekit-text-color, #18181b); + transition: background-color 0.2s; + + &:hover { + background-color: var(--sn-stylekit-bg-contrast-medium, rgba(0, 0, 0, 0.05)); + + .theme-dark & { + background-color: var(--sn-stylekit-bg-contrast-medium, rgba(255, 255, 255, 0.05)); + } + } + + .theme-dark & { + color: var(--sn-stylekit-text-color, #f4f4f5); + } +} + +// Split pane layout styles +.editors-split-container { + display: flex; + width: 100%; + height: 100%; + flex-direction: row; + + .split-pane-wrapper { + flex: 1; + height: 100%; + min-width: 0; // prevent flex children from overflowing + position: relative; + display: flex; + flex-direction: column; + + &:not(:last-child) { + border-right: 1px solid var(--sn-stylekit-border-color, #e4e4e7); + + .theme-dark & { + border-right-color: var(--sn-stylekit-border-color, #27272a); + } + } + } + + .split-pane-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + pointer-events: none; + border: 2px solid transparent; + transition: border-color 0.2s; + z-index: 10; + } + + .split-pane-focused .split-pane-overlay { + border-color: rgba(59, 130, 246, 0.2); // subtle light highlight + } +} diff --git a/packages/web/src/stylesheets/index.css.scss b/packages/web/src/stylesheets/index.css.scss index 41012126d02..603128f7eb6 100644 --- a/packages/web/src/stylesheets/index.css.scss +++ b/packages/web/src/stylesheets/index.css.scss @@ -9,6 +9,7 @@ @import 'navigation'; @import 'items-column'; @import 'editor'; +@import 'tabs'; @import 'menus'; @import 'modals'; @import 'stylekit-sub';