mirror of
https://github.com/bfloydd/streams.git
synced 2026-07-22 05:49:02 +00:00
rename
This commit is contained in:
parent
444c76264b
commit
0c73691262
7 changed files with 125 additions and 112 deletions
12
main.ts
12
main.ts
|
|
@ -3,8 +3,8 @@ import { Stream, StreamsSettings } from './src/shared/types';
|
|||
import { sliceContainer, serviceRegistry, DEFAULT_SETTINGS, ServiceLoader } from './src/shared';
|
||||
import { StreamsAPI } from './src/slices/api';
|
||||
import { CreateFileView, CREATE_FILE_VIEW_TYPE } from './src/slices/file-operations/CreateFileView';
|
||||
import { EncryptedFileView, ENCRYPTED_FILE_VIEW_TYPE } from './src/slices/file-operations/EncryptedFileView';
|
||||
import { EncryptedCreateFileView, ENCRYPTED_CREATE_FILE_VIEW_TYPE } from './src/slices/file-operations/EncryptedCreateFileView';
|
||||
import { InstallMeldView, INSTALL_MELD_VIEW_TYPE } from './src/slices/file-operations/InstallMeldView';
|
||||
import { CreateFileViewEncrypted, CREATE_FILE_VIEW_ENCRYPTED_TYPE } from './src/slices/file-operations/CreateFileViewEncrypted';
|
||||
|
||||
|
||||
export default class StreamsPlugin extends Plugin implements StreamsAPI {
|
||||
|
|
@ -31,8 +31,8 @@ export default class StreamsPlugin extends Plugin implements StreamsAPI {
|
|||
);
|
||||
|
||||
this.registerView(
|
||||
ENCRYPTED_FILE_VIEW_TYPE,
|
||||
(leaf) => new EncryptedFileView(leaf, this.app, '', {
|
||||
INSTALL_MELD_VIEW_TYPE,
|
||||
(leaf) => new InstallMeldView(leaf, this.app, '', {
|
||||
id: '',
|
||||
name: '',
|
||||
folder: '',
|
||||
|
|
@ -44,8 +44,8 @@ export default class StreamsPlugin extends Plugin implements StreamsAPI {
|
|||
);
|
||||
|
||||
this.registerView(
|
||||
ENCRYPTED_CREATE_FILE_VIEW_TYPE,
|
||||
(leaf) => new EncryptedCreateFileView(leaf, this.app, '', {
|
||||
CREATE_FILE_VIEW_ENCRYPTED_TYPE,
|
||||
(leaf) => new CreateFileViewEncrypted(leaf, this.app, '', {
|
||||
id: '',
|
||||
name: '',
|
||||
folder: '',
|
||||
|
|
|
|||
|
|
@ -117,6 +117,20 @@ export class CalendarNavigationService extends SettingsAwareSliceService {
|
|||
this.updateStreamsBarComponent(event.data);
|
||||
}
|
||||
});
|
||||
|
||||
// Update calendar when install meld view is opened
|
||||
eventBus.subscribe('install-meld-view-opened', (event) => {
|
||||
if (event.data) {
|
||||
this.updateStreamsBarComponent(event.data);
|
||||
}
|
||||
});
|
||||
|
||||
// Update calendar when create file view encrypted is opened
|
||||
eventBus.subscribe('create-file-view-encrypted-opened', (event) => {
|
||||
if (event.data) {
|
||||
this.updateStreamsBarComponent(event.data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private registerPluginViews(): void {
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ interface AppWithPlugins extends App {
|
|||
};
|
||||
}
|
||||
|
||||
export const ENCRYPTED_CREATE_FILE_VIEW_TYPE = 'streams-encrypted-create-file-view';
|
||||
export const CREATE_FILE_VIEW_ENCRYPTED_TYPE = 'streams-create-file-view-encrypted';
|
||||
|
||||
export class EncryptedCreateFileView extends ItemView {
|
||||
export class CreateFileViewEncrypted extends ItemView {
|
||||
private filePath: string;
|
||||
private stream: Stream;
|
||||
private dateStateManager: DateStateManager;
|
||||
|
|
@ -39,7 +39,7 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
}
|
||||
|
||||
getViewType(): string {
|
||||
return ENCRYPTED_CREATE_FILE_VIEW_TYPE;
|
||||
return CREATE_FILE_VIEW_ENCRYPTED_TYPE;
|
||||
}
|
||||
|
||||
getDisplayText(): string {
|
||||
|
|
@ -97,12 +97,12 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
// Refresh the view with new state
|
||||
if (this.contentEl) {
|
||||
this.contentEl.empty();
|
||||
this.contentEl.addClass('streams-encrypted-create-file-container');
|
||||
this.createEncryptedFileViewContent(this.contentEl);
|
||||
this.contentEl.addClass('streams-create-file-encrypted-container');
|
||||
this.createFileViewEncryptedContent(this.contentEl);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
centralizedLogger.error(`Error in EncryptedCreateFileView setState:`, error);
|
||||
centralizedLogger.error(`Error in CreateFileViewEncrypted setState:`, error);
|
||||
// Don't rethrow - just log and continue
|
||||
}
|
||||
}
|
||||
|
|
@ -116,8 +116,8 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
// Refresh the view content
|
||||
if (this.contentEl) {
|
||||
this.contentEl.empty();
|
||||
this.contentEl.addClass('streams-encrypted-create-file-container');
|
||||
this.createEncryptedFileViewContent(this.contentEl);
|
||||
this.contentEl.addClass('streams-create-file-encrypted-container');
|
||||
this.createFileViewEncryptedContent(this.contentEl);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -142,7 +142,7 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
|
||||
// Prepare our content element
|
||||
this.contentEl.empty();
|
||||
this.contentEl.addClass('streams-encrypted-create-file-container');
|
||||
this.contentEl.addClass('streams-create-file-encrypted-container');
|
||||
|
||||
// Set up the content element styling
|
||||
this.contentEl.style.height = '100%';
|
||||
|
|
@ -181,8 +181,8 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
// Store observer for cleanup
|
||||
(this as any).emptyStateObserver = observer;
|
||||
|
||||
// Create our encrypted create file view content
|
||||
this.createEncryptedFileViewContent(this.contentEl);
|
||||
// Create our create file view encrypted content
|
||||
this.createFileViewEncryptedContent(this.contentEl);
|
||||
}
|
||||
|
||||
async onClose(): Promise<void> {
|
||||
|
|
@ -208,37 +208,37 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
this.leaf = null as any;
|
||||
}
|
||||
|
||||
private createEncryptedFileViewContent(container: HTMLElement): void {
|
||||
private createFileViewEncryptedContent(container: HTMLElement): void {
|
||||
// Create the content box
|
||||
const contentBox = container.createDiv('streams-encrypted-create-file-content');
|
||||
const contentBox = container.createDiv('streams-create-file-encrypted-content');
|
||||
|
||||
// Add icon
|
||||
const iconContainer = contentBox.createDiv('streams-encrypted-create-file-icon');
|
||||
const iconContainer = contentBox.createDiv('streams-create-file-encrypted-icon');
|
||||
setIcon(iconContainer, 'lock');
|
||||
|
||||
// Stream info display
|
||||
const streamContainer = contentBox.createDiv('streams-encrypted-create-file-stream-container');
|
||||
const streamIcon = streamContainer.createSpan('streams-encrypted-create-file-stream-icon');
|
||||
const streamContainer = contentBox.createDiv('streams-create-file-encrypted-stream-container');
|
||||
const streamIcon = streamContainer.createSpan('streams-create-file-encrypted-stream-icon');
|
||||
setIcon(streamIcon, this.stream.icon || 'book');
|
||||
|
||||
const streamName = streamContainer.createSpan('streams-encrypted-create-file-stream');
|
||||
const streamName = streamContainer.createSpan('streams-create-file-encrypted-stream');
|
||||
streamName.setText(this.stream.name);
|
||||
|
||||
// Encryption indicator
|
||||
const encryptionIndicator = contentBox.createDiv('streams-encrypted-create-file-encryption-indicator');
|
||||
const encryptionIndicator = contentBox.createDiv('streams-create-file-encrypted-encryption-indicator');
|
||||
encryptionIndicator.setText('This stream is encrypted');
|
||||
|
||||
// Date display
|
||||
const dateEl = contentBox.createDiv('streams-encrypted-create-file-date');
|
||||
const dateEl = contentBox.createDiv('streams-create-file-encrypted-date');
|
||||
|
||||
const state = this.dateStateManager.getState();
|
||||
const formattedDate = this.formatDate(state.currentDate);
|
||||
dateEl.setText(formattedDate);
|
||||
|
||||
// Create button
|
||||
const buttonContainer = contentBox.createDiv('streams-encrypted-create-file-button-container');
|
||||
const buttonContainer = contentBox.createDiv('streams-create-file-encrypted-button-container');
|
||||
const createButton = buttonContainer.createEl('button', {
|
||||
cls: 'mod-cta streams-encrypted-create-file-button',
|
||||
cls: 'mod-cta streams-create-file-encrypted-button',
|
||||
text: 'Create Encrypted File'
|
||||
});
|
||||
|
||||
|
|
@ -251,7 +251,7 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
// Trigger the streams bar component to be added to this view
|
||||
try {
|
||||
import('../../shared/event-bus').then(({ eventBus }) => {
|
||||
eventBus.emit('encrypted-create-file-view-opened', this.leaf);
|
||||
eventBus.emit('create-file-view-encrypted-opened', this.leaf);
|
||||
});
|
||||
} catch (error) {
|
||||
// Calendar component trigger failed - not critical
|
||||
|
|
@ -303,7 +303,7 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
const file = await this.createFileNormally();
|
||||
|
||||
if (file instanceof TFile) {
|
||||
// Open the file in the current leaf (this will replace EncryptedCreateFileView)
|
||||
// Open the file in the current leaf (this will replace CreateFileViewEncrypted)
|
||||
await this.leaf.openFile(file);
|
||||
|
||||
// Trigger encryption after the file is opened
|
||||
|
|
@ -405,4 +405,3 @@ export class EncryptedCreateFileView extends ItemView {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5,7 +5,7 @@ import { OpenStreamDateCommand } from './OpenStreamDateCommand';
|
|||
import { OpenTodayStreamCommand } from './OpenTodayStreamCommand';
|
||||
import { OpenTodayCurrentStreamCommand } from './OpenTodayCurrentStreamCommand';
|
||||
import { CreateFileView, CREATE_FILE_VIEW_TYPE } from './CreateFileView';
|
||||
import { EncryptedFileView, ENCRYPTED_FILE_VIEW_TYPE } from './EncryptedFileView';
|
||||
import { InstallMeldView, INSTALL_MELD_VIEW_TYPE } from './InstallMeldView';
|
||||
import { FileCreationInterface, NormalFileStrategy, MeldEncryptedFileStrategy } from './file-creation-strategies';
|
||||
import { MeldDetectionService } from '../meld-integration';
|
||||
import { centralizedLogger } from '../../shared/centralized-logger';
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ import { Stream } from '../../shared/types';
|
|||
import { centralizedLogger } from '../../shared/centralized-logger';
|
||||
import { DateStateManager } from '../../shared/date-state-manager';
|
||||
|
||||
export const ENCRYPTED_FILE_VIEW_TYPE = 'streams-encrypted-file-view';
|
||||
export const INSTALL_MELD_VIEW_TYPE = 'streams-install-meld-view';
|
||||
|
||||
export class EncryptedFileView extends ItemView {
|
||||
export class InstallMeldView extends ItemView {
|
||||
private filePath: string;
|
||||
private stream: Stream;
|
||||
private date: Date;
|
||||
|
|
@ -28,16 +28,16 @@ export class EncryptedFileView extends ItemView {
|
|||
}
|
||||
|
||||
getViewType(): string {
|
||||
return ENCRYPTED_FILE_VIEW_TYPE;
|
||||
return INSTALL_MELD_VIEW_TYPE;
|
||||
}
|
||||
|
||||
getDisplayText(): string {
|
||||
try {
|
||||
const dateString = this.formatTitleDate(this.date);
|
||||
return `${dateString} (Encrypted)`;
|
||||
return `${dateString} (Install Meld)`;
|
||||
} catch (error) {
|
||||
centralizedLogger.error('Error formatting display text:', error);
|
||||
return 'Encrypted File';
|
||||
return 'Install Meld Plugin';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -76,12 +76,12 @@ export class EncryptedFileView extends ItemView {
|
|||
// Refresh the view with new state
|
||||
if (this.contentEl) {
|
||||
this.contentEl.empty();
|
||||
this.contentEl.addClass('streams-encrypted-file-container');
|
||||
this.createEncryptedFileViewContent(this.contentEl);
|
||||
this.contentEl.addClass('streams-install-meld-container');
|
||||
this.createInstallMeldViewContent(this.contentEl);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
centralizedLogger.error(`Error in EncryptedFileView setState:`, error);
|
||||
centralizedLogger.error(`Error in InstallMeldView setState:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -96,7 +96,7 @@ export class EncryptedFileView extends ItemView {
|
|||
|
||||
// Prepare our content element
|
||||
this.contentEl.empty();
|
||||
this.contentEl.addClass('streams-encrypted-file-container');
|
||||
this.contentEl.addClass('streams-install-meld-container');
|
||||
|
||||
// Set up the content element styling
|
||||
this.contentEl.style.height = '100%';
|
||||
|
|
@ -108,8 +108,8 @@ export class EncryptedFileView extends ItemView {
|
|||
// Hide any empty-state elements that might still be present
|
||||
this.hideEmptyStates();
|
||||
|
||||
// Create our encrypted file view content
|
||||
this.createEncryptedFileViewContent(this.contentEl);
|
||||
// Create our install meld view content
|
||||
this.createInstallMeldViewContent(this.contentEl);
|
||||
}
|
||||
|
||||
async onClose(): Promise<void> {
|
||||
|
|
@ -129,31 +129,31 @@ export class EncryptedFileView extends ItemView {
|
|||
this.leaf = null as any;
|
||||
}
|
||||
|
||||
private createEncryptedFileViewContent(container: HTMLElement): void {
|
||||
private createInstallMeldViewContent(container: HTMLElement): void {
|
||||
// Create the content box
|
||||
const contentBox = container.createDiv('streams-encrypted-file-content');
|
||||
const contentBox = container.createDiv('streams-install-meld-content');
|
||||
|
||||
// Add icon
|
||||
const iconContainer = contentBox.createDiv('streams-encrypted-file-icon');
|
||||
const iconContainer = contentBox.createDiv('streams-install-meld-icon');
|
||||
setIcon(iconContainer, 'lock');
|
||||
|
||||
// Stream info display
|
||||
const streamContainer = contentBox.createDiv('streams-encrypted-file-stream-container');
|
||||
const streamIcon = streamContainer.createSpan('streams-encrypted-file-stream-icon');
|
||||
const streamContainer = contentBox.createDiv('streams-install-meld-stream-container');
|
||||
const streamIcon = streamContainer.createSpan('streams-install-meld-stream-icon');
|
||||
setIcon(streamIcon, this.stream.icon || 'book');
|
||||
|
||||
const streamName = streamContainer.createSpan('streams-encrypted-file-stream');
|
||||
const streamName = streamContainer.createSpan('streams-install-meld-stream');
|
||||
streamName.setText(this.stream.name);
|
||||
|
||||
// Date display
|
||||
const dateEl = contentBox.createDiv('streams-encrypted-file-date');
|
||||
const dateEl = contentBox.createDiv('streams-install-meld-date');
|
||||
const formattedDate = this.formatDate(this.date);
|
||||
dateEl.setText(formattedDate);
|
||||
|
||||
// Create button
|
||||
const buttonContainer = contentBox.createDiv('streams-encrypted-file-button-container');
|
||||
const buttonContainer = contentBox.createDiv('streams-install-meld-button-container');
|
||||
const createButton = buttonContainer.createEl('button', {
|
||||
cls: 'mod-cta streams-encrypted-file-button',
|
||||
cls: 'mod-cta streams-install-meld-button',
|
||||
text: 'Install Meld Encrypt Plugin'
|
||||
});
|
||||
|
||||
|
|
@ -167,7 +167,7 @@ export class EncryptedFileView extends ItemView {
|
|||
// Trigger the streams bar component to be added to this view
|
||||
try {
|
||||
import('../../shared/event-bus').then(({ eventBus }) => {
|
||||
eventBus.emit('encrypted-file-view-opened', this.leaf);
|
||||
eventBus.emit('install-meld-view-opened', this.leaf);
|
||||
});
|
||||
} catch (error) {
|
||||
// Calendar component trigger failed - not critical
|
||||
|
|
@ -232,8 +232,8 @@ export class EncryptedFileView extends ItemView {
|
|||
// Refresh the view content
|
||||
if (this.contentEl) {
|
||||
this.contentEl.empty();
|
||||
this.contentEl.addClass('streams-encrypted-file-container');
|
||||
this.createEncryptedFileViewContent(this.contentEl);
|
||||
this.contentEl.addClass('streams-install-meld-container');
|
||||
this.createInstallMeldViewContent(this.contentEl);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2,8 +2,8 @@ import { App, TFolder, TFile, MarkdownView, WorkspaceLeaf, normalizePath } from
|
|||
import { Stream } from '../../shared/types';
|
||||
import { centralizedLogger } from '../../shared/centralized-logger';
|
||||
import { CreateFileView, CREATE_FILE_VIEW_TYPE } from './CreateFileView';
|
||||
import { EncryptedFileView, ENCRYPTED_FILE_VIEW_TYPE } from './EncryptedFileView';
|
||||
import { EncryptedCreateFileView, ENCRYPTED_CREATE_FILE_VIEW_TYPE } from './EncryptedCreateFileView';
|
||||
import { InstallMeldView, INSTALL_MELD_VIEW_TYPE } from './InstallMeldView';
|
||||
import { CreateFileViewEncrypted, CREATE_FILE_VIEW_ENCRYPTED_TYPE } from './CreateFileViewEncrypted';
|
||||
import { DateStateManager } from '../../shared/date-state-manager';
|
||||
|
||||
/**
|
||||
|
|
@ -47,9 +47,9 @@ function isMeldPluginAvailable(app: App): boolean {
|
|||
}
|
||||
|
||||
/**
|
||||
* Show the EncryptedFileView when Meld is not available
|
||||
* Show the InstallMeldView when Meld is not available
|
||||
*/
|
||||
async function showEncryptedFileView(app: App, file: TFile, stream: Stream, date: Date, reuseCurrentTab: boolean): Promise<void> {
|
||||
async function showInstallMeldView(app: App, file: TFile, stream: Stream, date: Date, reuseCurrentTab: boolean): Promise<void> {
|
||||
try {
|
||||
// Handle leaf selection based on reuseCurrentTab setting
|
||||
let leaf: WorkspaceLeaf | null = null;
|
||||
|
|
@ -86,7 +86,7 @@ async function showEncryptedFileView(app: App, file: TFile, stream: Stream, date
|
|||
|
||||
// Check if leaf is null before proceeding
|
||||
if (!leaf) {
|
||||
centralizedLogger.error('Failed to create or find a workspace leaf for EncryptedFileView');
|
||||
centralizedLogger.error('Failed to create or find a workspace leaf for InstallMeldView');
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -104,7 +104,7 @@ async function showEncryptedFileView(app: App, file: TFile, stream: Stream, date
|
|||
// Use the proper Obsidian view system instead of direct DOM manipulation
|
||||
try {
|
||||
await leaf.setViewState({
|
||||
type: ENCRYPTED_FILE_VIEW_TYPE,
|
||||
type: INSTALL_MELD_VIEW_TYPE,
|
||||
state: {
|
||||
stream: stream,
|
||||
date: date.toISOString(),
|
||||
|
|
@ -112,7 +112,7 @@ async function showEncryptedFileView(app: App, file: TFile, stream: Stream, date
|
|||
}
|
||||
});
|
||||
} catch (error) {
|
||||
centralizedLogger.error(`Error setting view state for EncryptedFileView:`, error);
|
||||
centralizedLogger.error(`Error setting view state for InstallMeldView:`, error);
|
||||
// If setViewState fails, we can't proceed
|
||||
return;
|
||||
}
|
||||
|
|
@ -121,7 +121,7 @@ async function showEncryptedFileView(app: App, file: TFile, stream: Stream, date
|
|||
app.workspace.setActiveLeaf(leaf, { focus: true });
|
||||
|
||||
} catch (error) {
|
||||
centralizedLogger.error('Error setting up EncryptedFileView:', error);
|
||||
centralizedLogger.error('Error setting up InstallMeldView:', error);
|
||||
return;
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -304,7 +304,7 @@ export async function openStreamDate(app: App, stream: Stream, date: Date = new
|
|||
|
||||
// Use the proper Obsidian view system instead of direct DOM manipulation
|
||||
// Choose the appropriate view type based on whether the stream is encrypted
|
||||
const viewType = stream.encryptThisStream ? ENCRYPTED_CREATE_FILE_VIEW_TYPE : CREATE_FILE_VIEW_TYPE;
|
||||
const viewType = stream.encryptThisStream ? CREATE_FILE_VIEW_ENCRYPTED_TYPE : CREATE_FILE_VIEW_TYPE;
|
||||
|
||||
try {
|
||||
await leaf.setViewState({
|
||||
|
|
@ -340,8 +340,8 @@ export async function openStreamDate(app: App, stream: Stream, date: Date = new
|
|||
if (isMdencFile) {
|
||||
// For .mdenc files, check if Meld is available first
|
||||
if (!isMeldPluginAvailable(app)) {
|
||||
// Show the EncryptedFileView instead of just an error
|
||||
await showEncryptedFileView(app, file, stream, date, reuseCurrentTab);
|
||||
// Show the InstallMeldView instead of just an error
|
||||
await showInstallMeldView(app, file, stream, date, reuseCurrentTab);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
94
styles.css
94
styles.css
|
|
@ -1457,7 +1457,7 @@
|
|||
/*********************************************************
|
||||
* ENCRYPTED FILE VIEW STYLES
|
||||
*********************************************************/
|
||||
.streams-encrypted-file-container {
|
||||
.streams-install-meld-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
|
@ -1470,7 +1470,7 @@
|
|||
position: relative;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-content {
|
||||
.streams-install-meld-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
|
@ -1485,7 +1485,7 @@
|
|||
position: relative;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-content::before {
|
||||
.streams-install-meld-content::before {
|
||||
content: '🔒 ENCRYPTED';
|
||||
position: absolute;
|
||||
top: -8px;
|
||||
|
|
@ -1502,11 +1502,11 @@
|
|||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-icon {
|
||||
.streams-install-meld-icon {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-icon svg {
|
||||
.streams-install-meld-icon svg {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
color: var(--text-accent);
|
||||
|
|
@ -1515,7 +1515,7 @@
|
|||
}
|
||||
|
||||
|
||||
.streams-encrypted-file-title {
|
||||
.streams-install-meld-title {
|
||||
font-size: 1.2em;
|
||||
font-weight: 600;
|
||||
color: var(--text-muted);
|
||||
|
|
@ -1523,7 +1523,7 @@
|
|||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-description {
|
||||
.streams-install-meld-description {
|
||||
font-size: 0.9em;
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 20px;
|
||||
|
|
@ -1531,31 +1531,31 @@
|
|||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-stream-container {
|
||||
.streams-install-meld-stream-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-stream-icon {
|
||||
.streams-install-meld-stream-icon {
|
||||
margin-right: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-stream-icon svg {
|
||||
.streams-install-meld-stream-icon svg {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.streams-encrypted-file-stream {
|
||||
.streams-install-meld-stream {
|
||||
font-size: 1em;
|
||||
font-weight: 600;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.streams-encrypted-file-date {
|
||||
.streams-install-meld-date {
|
||||
font-size: 1.4em;
|
||||
font-weight: 700;
|
||||
color: var(--text-normal);
|
||||
|
|
@ -1563,7 +1563,7 @@
|
|||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-path {
|
||||
.streams-install-meld-path {
|
||||
font-family: var(--font-monospace);
|
||||
font-size: 0.8em;
|
||||
color: var(--text-muted);
|
||||
|
|
@ -1575,11 +1575,11 @@
|
|||
border: 1px solid rgba(var(--background-modifier-border-rgb), 0.3);
|
||||
}
|
||||
|
||||
.streams-encrypted-file-button-container {
|
||||
.streams-install-meld-button-container {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-button {
|
||||
.streams-install-meld-button {
|
||||
padding: 12px 28px;
|
||||
font-size: 1em;
|
||||
border-radius: 8px;
|
||||
|
|
@ -1598,60 +1598,60 @@
|
|||
box-shadow: 0 4px 12px rgba(var(--interactive-accent-rgb), 0.3);
|
||||
}
|
||||
|
||||
.streams-encrypted-file-button::before {
|
||||
.streams-install-meld-button::before {
|
||||
content: '🔓';
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-button:hover {
|
||||
.streams-install-meld-button:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 20px rgba(var(--interactive-accent-rgb), 0.4);
|
||||
background: linear-gradient(135deg, var(--interactive-accent-hover) 0%, var(--interactive-accent) 100%);
|
||||
}
|
||||
|
||||
.streams-encrypted-file-button:active {
|
||||
.streams-install-meld-button:active {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 12px rgba(var(--interactive-accent-rgb), 0.3);
|
||||
}
|
||||
|
||||
.streams-encrypted-file-button-text {
|
||||
.streams-install-meld-button-text {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.streams-encrypted-file-button svg {
|
||||
.streams-install-meld-button svg {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
/* Mobile responsiveness */
|
||||
.is-mobile .streams-encrypted-file-content {
|
||||
.is-mobile .streams-install-meld-content {
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
padding: 30px 20px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.is-mobile .streams-encrypted-file-container {
|
||||
.is-mobile .streams-install-meld-container {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.is-phone .streams-encrypted-file-date {
|
||||
.is-phone .streams-install-meld-date {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
* ENCRYPTED CREATE FILE VIEW STYLES
|
||||
*********************************************************/
|
||||
.workspace-leaf-content:has(.streams-encrypted-create-file-container) {
|
||||
.workspace-leaf-content:has(.streams-create-file-encrypted-container) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Prevent scrollbars on EncryptedCreateFileView */
|
||||
.workspace-leaf-content:has(.streams-encrypted-create-file-container) .view-content {
|
||||
.workspace-leaf-content:has(.streams-create-file-encrypted-container) .view-content {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-container {
|
||||
.streams-create-file-encrypted-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
|
@ -1665,7 +1665,7 @@
|
|||
z-index: 1;
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-content {
|
||||
.streams-create-file-encrypted-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
|
@ -1684,18 +1684,18 @@
|
|||
border: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-icon {
|
||||
.streams-create-file-encrypted-icon {
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-icon svg {
|
||||
.streams-create-file-encrypted-icon svg {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
color: var(--text-accent);
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-stream-container {
|
||||
.streams-create-file-encrypted-stream-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
|
@ -1706,25 +1706,25 @@
|
|||
border: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-stream-icon {
|
||||
.streams-create-file-encrypted-stream-icon {
|
||||
margin-right: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-stream-icon svg {
|
||||
.streams-create-file-encrypted-stream-icon svg {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-stream {
|
||||
.streams-create-file-encrypted-stream {
|
||||
font-size: 1em;
|
||||
font-weight: 600;
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-encryption-indicator {
|
||||
.streams-create-file-encrypted-encryption-indicator {
|
||||
font-size: 0.9em;
|
||||
font-weight: 500;
|
||||
color: var(--text-accent);
|
||||
|
|
@ -1740,12 +1740,12 @@
|
|||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-encryption-indicator::before {
|
||||
.streams-create-file-encrypted-encryption-indicator::before {
|
||||
content: "🔒";
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-date {
|
||||
.streams-create-file-encrypted-date {
|
||||
font-size: 1.4em;
|
||||
font-weight: 700;
|
||||
color: var(--text-normal);
|
||||
|
|
@ -1753,11 +1753,11 @@
|
|||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-button-container {
|
||||
.streams-create-file-encrypted-button-container {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-button {
|
||||
.streams-create-file-encrypted-button {
|
||||
padding: 12px 28px;
|
||||
font-size: 1em;
|
||||
border-radius: 8px;
|
||||
|
|
@ -1770,26 +1770,26 @@
|
|||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-button:hover {
|
||||
.streams-create-file-encrypted-button:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
|
||||
background-color: var(--interactive-accent-hover);
|
||||
border-color: var(--interactive-accent-hover);
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-button:active {
|
||||
.streams-create-file-encrypted-button:active {
|
||||
transform: translateY(0);
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.streams-encrypted-create-file-button svg {
|
||||
.streams-create-file-encrypted-button svg {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
/* Mobile responsiveness for encrypted create file view */
|
||||
.is-mobile .streams-encrypted-create-file-content {
|
||||
.is-mobile .streams-create-file-encrypted-content {
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
padding: 36px 24px;
|
||||
|
|
@ -1797,25 +1797,25 @@
|
|||
margin: 16px;
|
||||
}
|
||||
|
||||
.is-mobile .streams-encrypted-create-file-container {
|
||||
.is-mobile .streams-create-file-encrypted-container {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.is-phone .streams-encrypted-create-file-content {
|
||||
.is-phone .streams-create-file-encrypted-content {
|
||||
padding: 32px 20px;
|
||||
margin: 12px;
|
||||
}
|
||||
|
||||
.is-phone .streams-encrypted-create-file-date {
|
||||
.is-phone .streams-create-file-encrypted-date {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.is-phone .streams-encrypted-create-file-encryption-indicator {
|
||||
.is-phone .streams-create-file-encrypted-encryption-indicator {
|
||||
font-size: 0.85em;
|
||||
padding: 6px 12px;
|
||||
}
|
||||
|
||||
.is-phone .streams-encrypted-create-file-button {
|
||||
.is-phone .streams-create-file-encrypted-button {
|
||||
padding: 10px 24px;
|
||||
font-size: 0.95em;
|
||||
}
|
||||
Loading…
Reference in a new issue