@industry-theme/github-panels 0.1.60 → 0.1.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/panels/GitHubIssueDetailPanel.d.ts +2 -2
- package/dist/panels/GitHubIssueDetailPanel.d.ts.map +1 -1
- package/dist/panels/GitHubIssuesPanel.d.ts +2 -2
- package/dist/panels/GitHubIssuesPanel.d.ts.map +1 -1
- package/dist/panels/GitHubMessagesPanel.d.ts +2 -2
- package/dist/panels/GitHubMessagesPanel.d.ts.map +1 -1
- package/dist/panels/GitHubProjectsPanel.d.ts +2 -2
- package/dist/panels/GitHubProjectsPanel.d.ts.map +1 -1
- package/dist/panels/GitHubSearchPanel.d.ts +2 -2
- package/dist/panels/GitHubSearchPanel.d.ts.map +1 -1
- package/dist/panels/OwnerRepositoriesPanel.d.ts +2 -2
- package/dist/panels/OwnerRepositoriesPanel.d.ts.map +1 -1
- package/dist/panels/RecentRepositoriesPanel.d.ts +2 -3
- package/dist/panels/RecentRepositoriesPanel.d.ts.map +1 -1
- package/dist/panels.bundle.css +1 -1
- package/dist/panels.bundle.js +59 -54
- package/dist/panels.bundle.js.map +1 -1
- package/dist/types/github.d.ts +101 -1
- package/dist/types/github.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { PanelDefinition } from './types';
|
|
|
3
3
|
* Export array of panel definitions.
|
|
4
4
|
* This is the required export for panel extensions.
|
|
5
5
|
*/
|
|
6
|
-
export declare const panels: PanelDefinition[];
|
|
6
|
+
export declare const panels: PanelDefinition<any, any>[];
|
|
7
7
|
/**
|
|
8
8
|
* Optional: Called once when the entire package is loaded.
|
|
9
9
|
* Use this for package-level initialization.
|
|
@@ -23,7 +23,7 @@ export { GitHubMessagesPanel } from './panels/GitHubMessagesPanel';
|
|
|
23
23
|
export { OwnerRepositoriesPanel, type OwnerRepositoriesPanelProps } from './panels/OwnerRepositoriesPanel';
|
|
24
24
|
export { RecentRepositoriesPanel, addRecentRepository, addRecentOwner } from './panels/RecentRepositoriesPanel';
|
|
25
25
|
export type { OwnerInfo } from './panels/RecentRepositoriesPanel';
|
|
26
|
-
export type { GitHubOwner, GitHubRepository, GitHubOrganization, GitHubRepositoriesSliceData, RepositorySelectedEventPayload, RepositoryPreviewEventPayload, GitHubPanelEventType, GitHubIssue, GitHubIssueLabel, GitHubIssueUser, GitHubIssuesSliceData, IssueSelectedEventPayload, GitHubPullRequest, GitHubPullRequestRef, PullRequestSelectedEventPayload, GitHubComment, GitHubReview, GitHubReviewComment, GitHubReactions, GitHubApp, GitHubTimelineEvent, GitHubTimelineCommentEvent, GitHubTimelineReviewEvent, GitHubTimelineCommitEvent, GitHubTimelineLabelEvent, GitHubTimelineAssignEvent, GitHubTimelineReviewRequestEvent, GitHubTimelineMergeEvent, GitHubTimelineStateEvent, GitHubTimelineRefEvent, GitHubTimelineDeployEvent, GitHubTimelineRenameEvent, GitHubTimelineMilestoneEvent, GitHubTimelineCrossReferenceEvent, GitHubCommitAuthor, GitHubCommitVerification, GitHubMessagesTarget, GitHubMessagesSliceData, MessagesRequestEventPayload, } from './types/github';
|
|
26
|
+
export type { GitHubOwner, GitHubRepository, GitHubOrganization, GitHubRepositoriesSliceData, RepositorySelectedEventPayload, RepositoryPreviewEventPayload, GitHubPanelEventType, GitHubIssue, GitHubIssueLabel, GitHubIssueUser, GitHubIssuesSliceData, IssueSelectedEventPayload, GitHubPullRequest, GitHubPullRequestRef, PullRequestSelectedEventPayload, GitHubComment, GitHubReview, GitHubReviewComment, GitHubReactions, GitHubApp, GitHubTimelineEvent, GitHubTimelineCommentEvent, GitHubTimelineReviewEvent, GitHubTimelineCommitEvent, GitHubTimelineLabelEvent, GitHubTimelineAssignEvent, GitHubTimelineReviewRequestEvent, GitHubTimelineMergeEvent, GitHubTimelineStateEvent, GitHubTimelineRefEvent, GitHubTimelineDeployEvent, GitHubTimelineRenameEvent, GitHubTimelineMilestoneEvent, GitHubTimelineCrossReferenceEvent, GitHubCommitAuthor, GitHubCommitVerification, GitHubMessagesTarget, GitHubMessagesSliceData, MessagesRequestEventPayload, OwnerRepositoriesSliceData, WorkspaceRepositoriesSlice, } from './types/github';
|
|
27
27
|
export { getTimelineEventType, isCommentEvent, isReviewEvent, isCommitEvent, } from './types/github';
|
|
28
28
|
export { githubTools, githubToolsMetadata, listRepositoriesTool, selectRepositoryTool, previewRepositoryTool, searchRepositoriesTool, openRepositorySwitcherTool, requestGitHubLoginTool, listIssuesTool, refreshIssuesTool, viewIssueMessagesTool, viewPullRequestMessagesTool, refreshMessagesTool, } from './tools';
|
|
29
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAG7E;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAG7E;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAkH7C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAGzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,qBAG3B,CAAC;AAGF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,KAAK,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAChH,YAAY,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAGlE,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,EAC7B,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EAEzB,iBAAiB,EACjB,oBAAoB,EACpB,+BAA+B,EAE/B,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,SAAS,EAET,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,kBAAkB,EAClB,wBAAwB,EAExB,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAE3B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { GitHubIssueDetailPanelProps } from '../types/github';
|
|
3
3
|
/**
|
|
4
4
|
* GitHubIssueDetailPanel - A panel for viewing GitHub issue details
|
|
5
5
|
*
|
|
@@ -10,7 +10,7 @@ import type { PanelComponentProps } from '../types';
|
|
|
10
10
|
*
|
|
11
11
|
* Listens for 'issue:selected' events from other panels (e.g., GitHubIssuesPanel)
|
|
12
12
|
*/
|
|
13
|
-
export declare const GitHubIssueDetailPanel: React.FC<
|
|
13
|
+
export declare const GitHubIssueDetailPanel: React.FC<GitHubIssueDetailPanelProps>;
|
|
14
14
|
/**
|
|
15
15
|
* Panel metadata for registration
|
|
16
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubIssueDetailPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubIssueDetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GitHubIssueDetailPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubIssueDetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAe3D,OAAO,KAAK,EAGV,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAumCzB;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAExE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;CAQ1C,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { GitHubIssuesPanelProps } from '../types/github';
|
|
3
3
|
/**
|
|
4
4
|
* GitHubIssuesPanel - A panel for viewing GitHub repository issues
|
|
5
5
|
*
|
|
@@ -9,7 +9,7 @@ import type { PanelComponentProps } from '../types';
|
|
|
9
9
|
* - Emits 'issue:selected' event for detail panel
|
|
10
10
|
* - External links to GitHub
|
|
11
11
|
*/
|
|
12
|
-
export declare const GitHubIssuesPanel: React.FC<
|
|
12
|
+
export declare const GitHubIssuesPanel: React.FC<GitHubIssuesPanelProps>;
|
|
13
13
|
/**
|
|
14
14
|
* Panel metadata for registration
|
|
15
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubIssuesPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubIssuesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAepE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"GitHubIssuesPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubIssuesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAepE,OAAO,KAAK,EAIV,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAgoBzB;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;CAQrC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { GitHubMessagesPanelProps } from '../types/github';
|
|
3
3
|
/**
|
|
4
4
|
* GitHubMessagesPanel - A panel for viewing GitHub issue/PR conversation threads
|
|
5
5
|
*
|
|
@@ -12,7 +12,7 @@ import type { PanelComponentProps } from '../types';
|
|
|
12
12
|
* Requests data via 'github-messages:request' event
|
|
13
13
|
* Receives data from 'github-messages' data slice
|
|
14
14
|
*/
|
|
15
|
-
export declare const GitHubMessagesPanel: React.FC<
|
|
15
|
+
export declare const GitHubMessagesPanel: React.FC<GitHubMessagesPanelProps>;
|
|
16
16
|
/**
|
|
17
17
|
* Panel metadata for registration
|
|
18
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubMessagesPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubMessagesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GitHubMessagesPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubMessagesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAyBxE,OAAO,KAAK,EAEV,wBAAwB,EAgBzB,MAAM,iBAAiB,CAAC;AA8+DzB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAElE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;CAQvC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { GitHubProjectsPanelProps } from '../types/github';
|
|
3
3
|
/**
|
|
4
4
|
* GitHubProjectsPanel - A panel for browsing GitHub repositories
|
|
5
5
|
*
|
|
@@ -11,7 +11,7 @@ import type { PanelComponentProps } from '../types';
|
|
|
11
11
|
*
|
|
12
12
|
* Required data slice: 'github-repositories' (GitHubRepositoriesSliceData)
|
|
13
13
|
*/
|
|
14
|
-
export declare const GitHubProjectsPanel: React.FC<
|
|
14
|
+
export declare const GitHubProjectsPanel: React.FC<GitHubProjectsPanelProps>;
|
|
15
15
|
/**
|
|
16
16
|
* Panel metadata for registration
|
|
17
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubProjectsPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubProjectsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAajF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"GitHubProjectsPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubProjectsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAajF,OAAO,KAAK,EAIV,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAyfzB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAElE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;CAQvC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { GitHubSearchPanelProps } from '../types/github';
|
|
3
3
|
/**
|
|
4
4
|
* GitHubSearchPanel - A panel for searching GitHub repositories
|
|
5
5
|
*
|
|
@@ -15,7 +15,7 @@ import type { PanelComponentProps } from '../types';
|
|
|
15
15
|
* Optional actions:
|
|
16
16
|
* - addToCollection: (repo) => Promise<void>
|
|
17
17
|
*/
|
|
18
|
-
export declare const GitHubSearchPanel: React.FC<
|
|
18
|
+
export declare const GitHubSearchPanel: React.FC<GitHubSearchPanelProps>;
|
|
19
19
|
/**
|
|
20
20
|
* Panel metadata for registration
|
|
21
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitHubSearchPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubSearchPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAIjF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"GitHubSearchPanel.d.ts","sourceRoot":"","sources":["../../src/panels/GitHubSearchPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAIjF,OAAO,KAAK,EAMV,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAuWzB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;CAQrC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
3
|
-
export interface OwnerRepositoriesPanelProps extends
|
|
2
|
+
import type { OwnerRepositoriesPanelPropsTyped } from '../types/github';
|
|
3
|
+
export interface OwnerRepositoriesPanelProps extends OwnerRepositoriesPanelPropsTyped {
|
|
4
4
|
owner?: string;
|
|
5
5
|
selectedRepository?: string;
|
|
6
6
|
/** Whether to show the search bar by default */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwnerRepositoriesPanel.d.ts","sourceRoot":"","sources":["../../src/panels/OwnerRepositoriesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAazE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"OwnerRepositoriesPanel.d.ts","sourceRoot":"","sources":["../../src/panels/OwnerRepositoriesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAazE,OAAO,KAAK,EAIV,gCAAgC,EACjC,MAAM,iBAAiB,CAAC;AAKzB,MAAM,WAAW,2BAA4B,SAAQ,gCAAgC;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAupBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAExE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;CAQ1C,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
3
|
-
import type { GitHubRepository } from '../types/github';
|
|
2
|
+
import type { GitHubRepository, RecentRepositoriesPanelProps } from '../types/github';
|
|
4
3
|
/**
|
|
5
4
|
* Add a repository to the recent list
|
|
6
5
|
*/
|
|
@@ -33,7 +32,7 @@ export declare function addRecentOwner(owner: OwnerInfo): void;
|
|
|
33
32
|
* - Click to preview, double-click to open
|
|
34
33
|
* - Remove individual items or clear all history
|
|
35
34
|
*/
|
|
36
|
-
export declare const RecentRepositoriesPanel: React.FC<
|
|
35
|
+
export declare const RecentRepositoriesPanel: React.FC<RecentRepositoriesPanelProps & {
|
|
37
36
|
onNavigate?: (path: string) => void;
|
|
38
37
|
}>;
|
|
39
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecentRepositoriesPanel.d.ts","sourceRoot":"","sources":["../../src/panels/RecentRepositoriesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAgBhE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"RecentRepositoriesPanel.d.ts","sourceRoot":"","sources":["../../src/panels/RecentRepositoriesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAgBhE,OAAO,KAAK,EACV,gBAAgB,EAEhB,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAkGzB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CA8BhE;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CA0BrD;AAypBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,GAAG;IAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,CAEA,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;CAQ3C,CAAC"}
|
package/dist/panels.bundle.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.animated-resizable-layout{width:100%;height:100%;position:relative;background-color:var(--panel-background)}.hybrid-panel{overflow:auto;height:100%;background-color:var(--panel-background)}.resize-handle{width:8px;background-color:var(--panel-handle);display:flex;justify-content:center;align-items:center;cursor:col-resize;position:relative;transition:background-color .2s,opacity .3s,width .3s}.resize-handle.collapsed{opacity:0;pointer-events:none}.resize-handle:hover{background-color:var(--panel-handle-hover)}.resize-handle:active{background-color:var(--panel-handle-active)}.handle-bar{height:100%;width:100%;display:flex;align-items:center;justify-content:center;position:relative}.collapse-toggle{position:absolute;background:var(--panel-button-bg);border:1px solid var(--panel-button-border);padding:4px 8px;cursor:pointer;color:var(--panel-button-icon);font-size:14px;outline:none;display:flex;align-items:center;justify-content:center;border-radius:4px;z-index:10;transition:all .2s;box-shadow:0 2px 4px #0000001a}.animated-vertical-layout{width:100%;height:100%;position:relative;background-color:var(--panel-background)}.vertical-panel{overflow:auto;width:100%;background-color:var(--panel-background)}.panel-content-wrapper{width:100%;height:100%;overflow:auto}.vertical-resize-handle{height:8px;background-color:var(--panel-handle);display:flex;justify-content:center;align-items:center;cursor:row-resize;position:relative;transition:background-color .2s,opacity .3s,height .3s}.vertical-resize-handle.collapsed{opacity:0;pointer-events:none}.vertical-resize-handle:hover{background-color:var(--panel-handle-hover)}.vertical-resize-handle:active{background-color:var(--panel-handle-active)}.handle-bar{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:8px;position:relative}.collapse-toggle{background:var(--panel-button-bg);border:1px solid var(--panel-button-border);padding:4px 8px;cursor:pointer;color:var(--panel-button-icon);font-size:14px;outline:none;display:flex;align-items:center;justify-content:center;border-radius:4px;z-index:10;transition:all .2s;box-shadow:0 2px 4px #0000001a}.collapse-toggle:hover:not(:disabled){background-color:var(--panel-button-hover);box-shadow:0 2px 6px #00000026}.collapse-toggle:active:not(:disabled){opacity:.8}.tab-group{display:flex;height:100%;width:100%;overflow:hidden}.tab-group.tab-position-top,.tab-group.tab-position-bottom{flex-direction:column}.tab-group.tab-position-left,.tab-group.tab-position-right{flex-direction:row}.tab-list{display:flex;background:var(--tab-list-bg, #f5f5f5);border-bottom:1px solid var(--tab-border, #ddd);gap:0;padding:0;flex-shrink:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.tab-list::-webkit-scrollbar{display:none}.tab-position-top .tab-list,.tab-position-bottom .tab-list{width:100%}.tab-list.centered{justify-content:flex-start}@media (min-width:0){.tab-list.centered{justify-content:center}.tab-list.centered:has(.tab-button:nth-child(n)){justify-content:flex-start}}.tab-position-bottom .tab-list{border-bottom:none;border-top:none}.tab-position-left .tab-list,.tab-position-right .tab-list{flex-direction:column;border-bottom:none;border-right:none;width:auto;min-width:120px}.tab-position-top .tab-button,.tab-position-bottom .tab-button{flex:1 1 0;min-width:40px;max-width:100%}.tab-button{background:var(--tab-bg, #fff);border:1px solid var(--tab-border, #ddd);border-radius:0;padding:8px 16px;cursor:pointer;font-family:var(--tab-font-family, inherit);font-size:var(--tab-font-size, 14px);font-weight:var(--tab-font-weight, 500);color:var(--tab-text, #333);transition:all .2s ease;white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:6px;height:39px;line-height:1;box-sizing:border-box;container-type:inline-size}.tab-position-top .tab-button{border-bottom:none;border-top:none;border-left:none}.tab-position-top .tab-button:last-child{border-right:none}.tab-position-bottom .tab-button{border-top:none;border-bottom:none;border-left:none}.tab-position-bottom .tab-button:last-child{border-right:none}.tab-position-left .tab-button{border-right:none;border-bottom:none}.tab-position-left .tab-button:last-child{border-bottom:1px solid var(--tab-border, #ddd)}.tab-position-right .tab-button{border-left:none;border-bottom:none}.tab-position-right .tab-button:last-child{border-bottom:1px solid var(--tab-border, #ddd)}.tab-icon{display:inline-flex;align-items:center;justify-content:center}.tab-label{display:none}@container (min-width: 100px){.tab-label{display:inline}.tab-icon{display:none}}.tab-button:hover{background:var(--tab-bg-hover, #f9f9f9)}.tab-button.active{background:var(--tab-bg-active, #007bff);color:var(--tab-text-active, #fff);border-color:var(--tab-border-active, #007bff)}.tab-button:focus-visible{outline:2px solid var(--tab-focus, #007bff);outline-offset:2px}.tab-content{flex:1;overflow:auto;background:var(--tab-content-bg, #fff)}.tab-group-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--tab-empty-text, #999);font-style:italic}.three-panel-layout{height:100%;width:100%;display:flex;flex-direction:column;position:relative;background-color:var(--panel-background);box-sizing:border-box}.three-panel-item{display:flex;flex-direction:column;overflow:hidden;position:relative;background-color:var(--panel-background);box-sizing:border-box}.three-panel-item[data-edit-mode=true]{background-color:var(--panel-accent-bg);border-radius:12px}.three-panel-item.collapsible-panel{will-change:flex}.three-panel-item.collapsible-panel.animating{pointer-events:none}.three-panel-item.collapsible-panel.collapsed{flex:0!important;min-width:0!important;max-width:0!important;width:0!important;overflow:hidden!important;visibility:hidden}.three-panel-item.middle-panel{flex:1;min-width:200px}.panel-content-wrapper{flex:1;overflow-x:hidden;overflow-y:auto;will-change:opacity;box-sizing:border-box}.resize-handle{position:relative;display:flex;align-items:center;justify-content:center;width:1px!important;cursor:col-resize;background:var(--panel-border);overflow:visible!important}.resize-handle:before{content:"";position:absolute;top:0;right:-10px;bottom:0;left:-10px;background:transparent}.resize-handle:after{content:"";position:absolute;top:0;right:-10px;bottom:0;left:-10px;background:var(--panel-handle);opacity:0;transition:opacity .2s ease;z-index:-1}.resize-handle:hover:after{opacity:1}.resize-handle:hover{background:var(--panel-handle-hover)}.resize-handle:active:after{opacity:1;background:var(--panel-handle-active)}.resize-handle:active{background:var(--panel-handle-active)}.resize-handle.collapsed{width:0!important;visibility:hidden}.resize-handle.left-handle.collapsed{margin-right:-1px}.resize-handle.right-handle.collapsed{margin-left:-1px}.handle-bar{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;z-index:2}.collapse-toggle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:20px;height:40px;background:var(--panel-button-bg);border:1px solid var(--panel-button-border);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;color:var(--panel-button-icon);transition:all .2s ease;z-index:10;padding:0;line-height:1}.collapse-toggle:hover{background:var(--panel-button-hover)}.collapse-toggle:active{opacity:.8}.collapse-toggle:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.resize-handle:before{left:-8px;right:-8px}.resize-handle:after{left:-8px;right:-8px}.collapse-toggle{width:24px;height:48px;font-size:14px}}.snap-carousel-container{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;gap:var(--snap-carousel-gap, 0px);padding:0;margin:0;width:100%;height:100%;background-color:var(--panel-background);box-sizing:border-box;position:relative;left:0;transform:none;container-type:inline-size;-ms-overflow-style:none;scrollbar-width:none}.snap-carousel-container::-webkit-scrollbar{display:none}.snap-carousel-container.swipe-disabled{touch-action:pan-y pinch-zoom;overscroll-behavior-x:none}.snap-carousel-panel{flex:0 0 auto;scroll-snap-align:start;scroll-snap-stop:always;width:var(--snap-carousel-panel-width, 33.33%);height:100%;box-sizing:border-box;overflow:hidden}@media (max-width:540px){.snap-carousel-panel{min-width:280px}}.mobile-tab-layout{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}.mobile-tab-content{flex:1;overflow:hidden;min-height:0}.mobile-tab-nav{display:flex;background:var(--tab-list-bg, #f5f5f5);border-top:1px solid var(--tab-border, #ddd);flex-shrink:0;padding:0;margin:0}.mobile-tab-button{flex:1;background:var(--tab-bg, #fff);border:none;border-left:1px solid var(--tab-border, #ddd);padding:12px 8px;cursor:pointer;font-family:var(--tab-font-family, inherit);font-size:var(--tab-font-size, 14px);font-weight:var(--tab-font-weight, 500);color:var(--tab-text, #333);transition:background-color .2s ease,color .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.mobile-tab-button:first-child{border-left:none}.mobile-tab-button:hover{background:var(--tab-bg-hover, #f9f9f9)}.mobile-tab-button.active{background:var(--tab-bg-active, #007bff);color:var(--tab-text-active, #fff)}.mobile-tab-button:focus-visible{outline:2px solid var(--tab-focus, #007bff);outline-offset:-2px;z-index:1}@keyframes wiggle{0%{transform:rotate(0)}25%{transform:rotate(1deg)}50%{transform:rotate(0)}75%{transform:rotate(-1deg)}to{transform:rotate(0)}}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}@keyframes pulse{0%,to{box-shadow:0 0 #3b82f666}50%{box-shadow:0 0 0 8px #3b82f600}}.editable-panel-layout{position:relative;width:100%;height:100%}.editable-panel-layout.edit-mode-active{background:#0000000d}[data-slot][data-edit-mode=true]{transform:scale(.95);transform-origin:center center;cursor:grab;will-change:transform;transition:transform .3s cubic-bezier(.4,0,.2,1)}[data-slot][data-edit-mode=true]:active{cursor:grabbing}[data-slot][data-dragging=true]{cursor:grabbing!important;transform:scale(.95)!important;transition:none!important}.edit-mode-active [data-slot][data-edit-mode=true]{transform-origin:center center}.slot-with-overlay{position:relative;width:100%;height:100%}.slot-with-overlay.dragging{opacity:0;pointer-events:none}.slot-edit-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;border:none;pointer-events:auto;cursor:grab;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center}.slot-edit-overlay:hover{background:#3b82f608}.slot-edit-overlay:active{cursor:grabbing}.drag-indicator,.slot-position-label{display:none}.edit-mode-toggle{position:absolute;top:16px;right:16px;z-index:1000;padding:8px 16px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#374151;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.edit-mode-toggle:hover{background:#f9fafb;box-shadow:0 4px 6px #0000001a}.edit-mode-toggle.active{background:#3b82f6;color:#fff;border-color:#2563eb}.edit-mode-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:998;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.edit-mode-configurator{position:relative;z-index:999;padding:20px;animation:scaleIn .3s ease}.panel-slot{position:relative;min-height:120px;border:2px dashed transparent;border-radius:12px;transition:all .3s ease;padding:12px}.panel-slot.edit-mode{border-color:#d1d5db;background:#ffffff80}.panel-slot.drag-over{border-color:#3b82f6;background:#3b82f61a;box-shadow:0 0 0 4px #3b82f61a}.panel-slot.empty{display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:14px}.draggable-panel{position:relative;padding:12px 16px;margin:8px 0;border-radius:8px;background:#fff;border:1px solid #e5e7eb;cursor:grab;transition:all .2s ease;-webkit-user-select:none;user-select:none}.draggable-panel:hover{border-color:#3b82f6;box-shadow:0 2px 8px #0000001a}.draggable-panel.dragging{opacity:.5;cursor:grabbing}.draggable-panel.edit-mode{animation:wiggle .4s ease-in-out infinite;transform-origin:center}.draggable-panel.edit-mode:nth-child(odd){animation-delay:.1s}.draggable-panel.edit-mode:nth-child(2n){animation-delay:.2s}.remove-button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:#ef4444;color:#fff;border:2px solid white;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;font-weight:700;opacity:0;transform:scale(0);transition:all .2s ease;z-index:10;box-shadow:0 2px 4px #0003}.draggable-panel.edit-mode .remove-button{opacity:1;transform:scale(1);animation:pulse 2s infinite}.remove-button:hover{background:#dc2626;transform:scale(1.1)}.panel-label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:#374151}.panel-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.drag-handle{display:none;width:24px;height:24px;opacity:.4;cursor:grab}.edit-mode .drag-handle{display:flex;align-items:center;justify-content:center}.drag-overlay{padding:12px 16px;border-radius:8px;background:#fff;border:2px solid #3b82f6;box-shadow:0 8px 16px #0003;cursor:grabbing;opacity:.9}.panel-group{border:2px solid #e5e7eb;border-radius:12px;padding:8px;background:#fff}.panel-group.edit-mode{animation:wiggle .5s ease-in-out infinite;border-color:#3b82f6}.panel-group-header{display:flex;justify-content:space-between;align-items:center;padding:8px;border-bottom:1px solid #e5e7eb;margin-bottom:8px}.panel-group-title{font-size:12px;font-weight:600;color:#6b7280;text-transform:uppercase}.available-panels{background:#fff;border-radius:12px;padding:16px;box-shadow:0 4px 6px #0000001a}.available-panels-title{font-size:16px;font-weight:600;color:#374151;margin-bottom:12px}.available-panels-list{display:flex;flex-direction:column;gap:8px}.slot-label{font-size:12px;font-weight:600;color:#6b7280;text-transform:uppercase;margin-bottom:8px;display:flex;align-items:center;gap:8px}.slot-indicator{width:8px;height:8px;border-radius:50%;background:#d1d5db}.slot-indicator.active{background:#3b82f6}.action-buttons{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:1001;display:flex;gap:12px;padding:12px 24px;background:#fff;border-radius:12px;box-shadow:0 8px 16px #00000026;animation:scaleIn .3s ease}.action-button{padding:10px 20px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#374151;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.action-button:hover{background:#f9fafb}.action-button.primary{background:#3b82f6;color:#fff;border-color:#2563eb}.action-button.primary:hover{background:#2563eb}@media (max-width:768px){.edit-mode-toggle{top:8px;right:8px;padding:6px 12px;font-size:12px}.action-buttons{bottom:16px;padding:10px 16px}.action-button{padding:8px 16px;font-size:13px}}@media (prefers-color-scheme:dark){.edit-mode-toggle{background:#1f2937;color:#f9fafb;border-color:#374151}.edit-mode-toggle:hover{background:#374151}.draggable-panel{background:#1f2937;color:#f9fafb;border-color:#374151}.available-panels{background:#1f2937}.panel-label{color:#f9fafb}.action-buttons{background:#1f2937}.action-button{background:#1f2937;color:#f9fafb;border-color:#374151}.action-button:hover{background:#374151}}.panel-configurator{display:flex;flex-direction:column;gap:2rem;padding:1.5rem;background:var(--configurator-bg);border-radius:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.configurator-section{display:flex;flex-direction:column;gap:1rem}.section-title{margin:0;font-size:.875rem;font-weight:600;color:var(--configurator-title);text-transform:uppercase;letter-spacing:.05em;text-align:center}.slots-container{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;width:75%;margin:0 auto;align-items:start}.slot{position:relative;aspect-ratio:1 / 1.3;width:100%;padding:2.5rem 1rem 1rem;background:var(--slot-bg);border:2px solid var(--slot-border);border-radius:6px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:.5rem;overflow:hidden;box-sizing:border-box}.slot:hover{border-color:var(--slot-border-hover);box-shadow:0 2px 4px #0000000d}.slot.selected{border-color:var(--slot-border-selected);background:var(--slot-bg-selected);box-shadow:0 0 0 3px var(--slot-bg-selected)}.slot.empty{border-style:dashed}.slot-label{font-size:.75rem;font-weight:600;color:var(--slot-label);text-transform:capitalize;text-align:left}.slot[data-position=middle] .slot-label,.slot[data-position=middle] .slot-panel-name,.slot[data-position=middle] .slot-empty-state{text-align:center}.slot[data-position=right] .slot-label,.slot[data-position=right] .slot-panel-name,.slot[data-position=right] .slot-empty-state{text-align:right}.slot-content{flex:1;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;min-height:0}.slot-panel-name{font-weight:600;color:var(--slot-content-text);font-size:.875rem}.slot-preview{flex:1;display:flex;align-items:center;justify-content:center;padding:.5rem;background:var(--slot-preview-bg);border-radius:4px;border:1px solid var(--slot-preview-border);font-size:.75rem;color:var(--slot-preview-text)}.slot-empty-state{flex:1;display:flex;align-items:center;justify-content:center;color:var(--slot-empty-text);font-size:.875rem;font-style:italic;min-height:0}.slot-clear-btn{position:absolute;top:.25rem;right:.25rem;width:24px;height:24px;padding:0;background:var(--clear-btn-bg);color:var(--clear-btn-text);border:none;border-radius:4px;cursor:pointer;font-size:1.25rem;line-height:1;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.slot:hover .slot-clear-btn{opacity:1}.slot-clear-btn:hover{background:var(--clear-btn-hover);transform:scale(1.1)}.available-panels{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;width:75%;margin:0 auto}.available-panel{min-height:80px;padding:.75rem;background:var(--panel-bg);border:2px solid var(--panel-border);border-radius:6px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:.5rem}.available-panel:hover{border-color:var(--panel-border-hover);box-shadow:0 2px 4px #0000000d;transform:translateY(-2px)}.available-panel.selected{border-color:var(--panel-border-selected);background:var(--panel-bg-selected);box-shadow:0 0 0 3px var(--panel-bg-selected)}.available-panel.in-use{opacity:.5;border-style:dashed}.available-panel.in-use:hover{transform:translateY(0);opacity:.6}.panel-label{font-weight:600;color:var(--panel-label-text);font-size:.875rem}.panel-preview{flex:1;display:flex;align-items:center;justify-content:center;padding:.5rem;background:var(--panel-preview-bg);border-radius:4px;font-size:.75rem;color:var(--panel-preview-text)}.selection-hint{padding:.75rem 1rem;background:var(--hint-bg);border:1px solid var(--hint-border);border-radius:6px;color:var(--hint-text);font-size:.875rem;text-align:center}.available-panel.multi-selected{border-color:var(--panel-border-selected);background:var(--panel-bg-selected);box-shadow:0 0 0 2px var(--panel-bg-selected)}.multi-select-badge{margin-left:.5rem;padding:.25rem .5rem;background:var(--panel-border-selected);color:#fff;font-size:.75rem;border-radius:12px;font-weight:400}.multi-select-hint{background:var(--panel-bg-selected);border-color:var(--panel-border-selected)}.slot.tab-group{border-style:solid}.group-content{position:relative;overflow-y:auto;min-height:0}.group-badge{font-size:.75rem;font-weight:600;color:var(--panel-border-selected);margin-bottom:.5rem}.group-panels{display:flex;flex-direction:column;gap:.25rem;flex:1;overflow-y:auto;min-height:0}.group-panel-label{font-size:.75rem;color:var(--slot-content-text);padding:.25rem .5rem;background:var(--slot-preview-bg);border-radius:3px;border-left:3px solid var(--panel-border-selected)}.slot-panel-label{font-weight:600;color:var(--slot-content-text);font-size:.875rem;text-align:center}.create-tab-group-btn{margin-top:.5rem;padding:.5rem .75rem;background:var(--panel-border-selected);color:#fff;border:none;border-radius:4px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s ease}.create-tab-group-btn:hover{transform:scale(1.05);box-shadow:0 2px 4px #0000001a}.tab-mode-toggle{position:absolute;top:.5rem;left:.5rem;padding:.25rem .5rem;background:var(--slot-bg);border:1px solid var(--slot-border);border-radius:4px;font-size:.85rem;cursor:pointer;transition:all .2s ease;z-index:10;opacity:.7;color:var(--slot-content-text)}.tab-mode-toggle svg{display:block}.tab-mode-toggle:hover{opacity:1;border-color:var(--slot-border-hover);background:var(--slot-preview-bg)}.tab-mode-toggle.active{opacity:1;background:var(--panel-border-selected);color:#fff;border-color:var(--panel-border-selected)}.tab-config-controls{margin-bottom:.5rem}.tab-config-label{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--slot-label)}.tab-config-label select{padding:.25rem .5rem;border:1px solid var(--slot-border);border-radius:3px;background:var(--slot-bg);color:var(--slot-content-text);font-size:.7rem;cursor:pointer}.group-panel-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem .5rem;background:var(--slot-preview-bg);border-radius:3px;border-left:3px solid var(--panel-border-selected)}.group-panel-label{flex:1;font-size:.75rem;color:var(--slot-content-text);display:flex;align-items:center;gap:.25rem}.default-badge{color:var(--panel-border-selected);font-size:.9em}.remove-from-group-btn{width:18px;height:18px;padding:0;background:var(--clear-btn-bg);color:var(--clear-btn-text);border:none;border-radius:3px;cursor:pointer;font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center;opacity:.7;transition:all .2s ease}.remove-from-group-btn:hover{opacity:1;transform:scale(1.1)}.usage-hint{padding:.75rem 1rem;background:var(--slot-preview-bg);border:1px solid var(--slot-border);border-radius:6px;color:var(--hint-text);font-size:.875rem;text-align:center}
|
|
1
|
+
.animated-resizable-layout{width:100%;height:100%;position:relative;background-color:var(--panel-background)}.hybrid-panel{overflow:auto;height:100%;background-color:var(--panel-background)}.resize-handle{width:8px;background-color:var(--panel-handle);display:flex;justify-content:center;align-items:center;cursor:col-resize;position:relative;transition:background-color .2s,opacity .3s,width .3s}.resize-handle.collapsed{opacity:0;pointer-events:none}.resize-handle:hover{background-color:var(--panel-handle-hover)}.resize-handle:active{background-color:var(--panel-handle-active)}.handle-bar{height:100%;width:100%;display:flex;align-items:center;justify-content:center;position:relative}.collapse-toggle{position:absolute;background:var(--panel-button-bg);border:1px solid var(--panel-button-border);padding:4px 8px;cursor:pointer;color:var(--panel-button-icon);font-size:14px;outline:none;display:flex;align-items:center;justify-content:center;border-radius:4px;z-index:10;transition:all .2s;box-shadow:0 2px 4px #0000001a}.animated-vertical-layout{width:100%;height:100%;position:relative;background-color:var(--panel-background)}.vertical-panel{overflow:auto;width:100%;background-color:var(--panel-background)}.panel-content-wrapper{width:100%;height:100%;overflow:auto}.vertical-resize-handle{height:8px;background-color:var(--panel-handle);display:flex;justify-content:center;align-items:center;cursor:row-resize;position:relative;transition:background-color .2s,opacity .3s,height .3s}.vertical-resize-handle.collapsed{opacity:0;pointer-events:none}.vertical-resize-handle:hover{background-color:var(--panel-handle-hover)}.vertical-resize-handle:active{background-color:var(--panel-handle-active)}.handle-bar{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:8px;position:relative}.collapse-toggle{background:var(--panel-button-bg);border:1px solid var(--panel-button-border);padding:4px 8px;cursor:pointer;color:var(--panel-button-icon);font-size:14px;outline:none;display:flex;align-items:center;justify-content:center;border-radius:4px;z-index:10;transition:all .2s;box-shadow:0 2px 4px #0000001a}.collapse-toggle:hover:not(:disabled){background-color:var(--panel-button-hover);box-shadow:0 2px 6px #00000026}.collapse-toggle:active:not(:disabled){opacity:.8}.tab-group{display:flex;height:100%;width:100%;overflow:hidden}.tab-group.tab-position-top,.tab-group.tab-position-bottom{flex-direction:column}.tab-group.tab-position-left,.tab-group.tab-position-right{flex-direction:row}.tab-list{display:flex;background:var(--tab-list-bg, #f5f5f5);border-bottom:1px solid var(--tab-border, #ddd);gap:0;padding:0;flex-shrink:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.tab-list::-webkit-scrollbar{display:none}.tab-position-top .tab-list,.tab-position-bottom .tab-list{width:100%}.tab-list.centered{justify-content:flex-start}@media (min-width:0){.tab-list.centered{justify-content:center}.tab-list.centered:has(.tab-button:nth-child(n)){justify-content:flex-start}}.tab-position-bottom .tab-list{border-bottom:none;border-top:none}.tab-position-left .tab-list,.tab-position-right .tab-list{flex-direction:column;border-bottom:none;border-right:none;width:auto;min-width:120px}.tab-position-top .tab-button,.tab-position-bottom .tab-button{flex:1 1 0;min-width:40px;max-width:100%}.tab-button{background:var(--tab-bg, #fff);border:1px solid var(--tab-border, #ddd);border-radius:0;padding:8px 16px;cursor:pointer;font-family:var(--tab-font-family, inherit);font-size:var(--tab-font-size, 14px);font-weight:var(--tab-font-weight, 500);color:var(--tab-text, #333);transition:all .2s ease;white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:6px;height:39px;line-height:1;box-sizing:border-box;container-type:inline-size}.tab-position-top .tab-button{border-bottom:none;border-top:none;border-left:none}.tab-position-top .tab-button:last-child{border-right:none}.tab-position-bottom .tab-button{border-top:none;border-bottom:none;border-left:none}.tab-position-bottom .tab-button:last-child{border-right:none}.tab-position-left .tab-button{border-right:none;border-bottom:none}.tab-position-left .tab-button:last-child{border-bottom:1px solid var(--tab-border, #ddd)}.tab-position-right .tab-button{border-left:none;border-bottom:none}.tab-position-right .tab-button:last-child{border-bottom:1px solid var(--tab-border, #ddd)}.tab-icon{display:inline-flex;align-items:center;justify-content:center}.tab-label{display:none}@container (min-width: 100px){.tab-label{display:inline}.tab-icon{display:none}}.tab-button:hover{background:var(--tab-bg-hover, #f9f9f9)}.tab-button.active{background:var(--tab-bg-active, #007bff);color:var(--tab-text-active, #fff);border-color:var(--tab-border-active, #007bff)}.tab-button:focus-visible{outline:2px solid var(--tab-focus, #007bff);outline-offset:2px}.tab-content{flex:1;overflow:auto;background:var(--tab-content-bg, #fff)}.tab-group-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--tab-empty-text, #999);font-style:italic}.three-panel-layout{height:100%;width:100%;display:flex;flex-direction:column;position:relative;background-color:var(--panel-background);box-sizing:border-box}.three-panel-item{display:flex;flex-direction:column;overflow:hidden;position:relative;background-color:var(--panel-background);box-sizing:border-box}.three-panel-item[data-edit-mode=true]{background-color:var(--panel-accent-bg);border-radius:12px}.three-panel-item.collapsible-panel{will-change:flex}.three-panel-item.collapsible-panel.animating{pointer-events:none}.three-panel-item.collapsible-panel.collapsed{flex:0!important;min-width:0!important;max-width:0!important;width:0!important;overflow:hidden!important;visibility:hidden}.three-panel-item.middle-panel{flex:1;min-width:200px}.panel-content-wrapper{flex:1;overflow-x:hidden;overflow-y:auto;will-change:opacity;box-sizing:border-box}.resize-handle{position:relative;display:flex;align-items:center;justify-content:center;width:1px!important;cursor:col-resize;background:var(--panel-border);overflow:visible!important}.resize-handle:before{content:"";position:absolute;top:0;right:-10px;bottom:0;left:-10px;background:transparent}.resize-handle:after{content:"";position:absolute;top:0;right:-10px;bottom:0;left:-10px;background:var(--panel-handle);opacity:0;transition:opacity .2s ease;z-index:-1}.resize-handle:hover:after{opacity:1}.resize-handle:hover{background:var(--panel-handle-hover)}.resize-handle:active:after{opacity:1;background:var(--panel-handle-active)}.resize-handle:active{background:var(--panel-handle-active)}.resize-handle.collapsed{width:0!important;visibility:hidden}.resize-handle.left-handle.collapsed{margin-right:-1px}.resize-handle.right-handle.collapsed{margin-left:-1px}.handle-bar{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;z-index:2}.collapse-toggle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:20px;height:40px;background:var(--panel-button-bg);border:1px solid var(--panel-button-border);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;color:var(--panel-button-icon);transition:all .2s ease;z-index:10;padding:0;line-height:1}.collapse-toggle:hover{background:var(--panel-button-hover)}.collapse-toggle:active{opacity:.8}.collapse-toggle:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.resize-handle:before{left:-8px;right:-8px}.resize-handle:after{left:-8px;right:-8px}.collapse-toggle{width:24px;height:48px;font-size:14px}}.snap-carousel-container{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;gap:var(--snap-carousel-gap, 0px);padding:0;margin:0;width:100%;height:100%;background-color:var(--panel-background);box-sizing:border-box;position:relative;left:0;transform:none;container-type:inline-size;-ms-overflow-style:none;scrollbar-width:none}.snap-carousel-container::-webkit-scrollbar{display:none}.snap-carousel-container.swipe-disabled{touch-action:pan-y pinch-zoom;overscroll-behavior-x:none}.snap-carousel-panel{flex:0 0 auto;scroll-snap-align:start;scroll-snap-stop:always;width:var(--snap-carousel-panel-width, 33.33%);height:100%;box-sizing:border-box;overflow:hidden}@media (max-width:540px){.snap-carousel-panel{min-width:280px}}.mobile-tab-layout{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}.mobile-tab-content{flex:1;overflow:hidden;min-height:0}.mobile-tab-nav{display:flex;background:var(--tab-list-bg, #f5f5f5);border-top:1px solid var(--tab-border, #ddd);flex-shrink:0;padding:0;margin:0}.mobile-tab-button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:transparent;border:none;padding:14px 4px;padding-bottom:calc(14px + min(12px,env(safe-area-inset-bottom,0px)));cursor:pointer;font-family:var(--tab-font-family, inherit);font-size:var(--tab-font-size, 11px);font-weight:var(--tab-font-weight, 500);color:var(--tab-text, #666);transition:color .2s ease;min-width:0}.mobile-tab-button:hover{color:var(--tab-text-hover, #333)}.mobile-tab-button.active{color:var(--mobile-tab-text-active, #007bff)}.mobile-tab-button .tab-icon{display:flex;align-items:center;justify-content:center;font-size:24px;color:var(--tab-icon-color, #999);transition:color .2s ease}.mobile-tab-button.active .tab-icon{color:var(--mobile-tab-icon-active, #007bff)}.mobile-tab-button .tab-label{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.2;color:inherit;opacity:1}.mobile-tab-button:focus-visible{outline:2px solid var(--tab-focus, #007bff);outline-offset:-2px;z-index:1}@keyframes wiggle{0%{transform:rotate(0)}25%{transform:rotate(1deg)}50%{transform:rotate(0)}75%{transform:rotate(-1deg)}to{transform:rotate(0)}}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}@keyframes pulse{0%,to{box-shadow:0 0 #3b82f666}50%{box-shadow:0 0 0 8px #3b82f600}}.editable-panel-layout{position:relative;width:100%;height:100%}.editable-panel-layout.edit-mode-active{background:#0000000d}[data-slot][data-edit-mode=true]{transform:scale(.95);transform-origin:center center;cursor:grab;will-change:transform;transition:transform .3s cubic-bezier(.4,0,.2,1)}[data-slot][data-edit-mode=true]:active{cursor:grabbing}[data-slot][data-dragging=true]{cursor:grabbing!important;transform:scale(.95)!important;transition:none!important}.edit-mode-active [data-slot][data-edit-mode=true]{transform-origin:center center}.slot-with-overlay{position:relative;width:100%;height:100%}.slot-with-overlay.dragging{opacity:0;pointer-events:none}.slot-edit-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;border:none;pointer-events:auto;cursor:grab;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center}.slot-edit-overlay:hover{background:#3b82f608}.slot-edit-overlay:active{cursor:grabbing}.drag-indicator,.slot-position-label{display:none}.edit-mode-toggle{position:absolute;top:16px;right:16px;z-index:1000;padding:8px 16px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#374151;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.edit-mode-toggle:hover{background:#f9fafb;box-shadow:0 4px 6px #0000001a}.edit-mode-toggle.active{background:#3b82f6;color:#fff;border-color:#2563eb}.edit-mode-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:998;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.edit-mode-configurator{position:relative;z-index:999;padding:20px;animation:scaleIn .3s ease}.panel-slot{position:relative;min-height:120px;border:2px dashed transparent;border-radius:12px;transition:all .3s ease;padding:12px}.panel-slot.edit-mode{border-color:#d1d5db;background:#ffffff80}.panel-slot.drag-over{border-color:#3b82f6;background:#3b82f61a;box-shadow:0 0 0 4px #3b82f61a}.panel-slot.empty{display:flex;align-items:center;justify-content:center;color:#9ca3af;font-size:14px}.draggable-panel{position:relative;padding:12px 16px;margin:8px 0;border-radius:8px;background:#fff;border:1px solid #e5e7eb;cursor:grab;transition:all .2s ease;-webkit-user-select:none;user-select:none}.draggable-panel:hover{border-color:#3b82f6;box-shadow:0 2px 8px #0000001a}.draggable-panel.dragging{opacity:.5;cursor:grabbing}.draggable-panel.edit-mode{animation:wiggle .4s ease-in-out infinite;transform-origin:center}.draggable-panel.edit-mode:nth-child(odd){animation-delay:.1s}.draggable-panel.edit-mode:nth-child(2n){animation-delay:.2s}.remove-button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:#ef4444;color:#fff;border:2px solid white;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;font-weight:700;opacity:0;transform:scale(0);transition:all .2s ease;z-index:10;box-shadow:0 2px 4px #0003}.draggable-panel.edit-mode .remove-button{opacity:1;transform:scale(1);animation:pulse 2s infinite}.remove-button:hover{background:#dc2626;transform:scale(1.1)}.panel-label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:#374151}.panel-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.drag-handle{display:none;width:24px;height:24px;opacity:.4;cursor:grab}.edit-mode .drag-handle{display:flex;align-items:center;justify-content:center}.drag-overlay{padding:12px 16px;border-radius:8px;background:#fff;border:2px solid #3b82f6;box-shadow:0 8px 16px #0003;cursor:grabbing;opacity:.9}.panel-group{border:2px solid #e5e7eb;border-radius:12px;padding:8px;background:#fff}.panel-group.edit-mode{animation:wiggle .5s ease-in-out infinite;border-color:#3b82f6}.panel-group-header{display:flex;justify-content:space-between;align-items:center;padding:8px;border-bottom:1px solid #e5e7eb;margin-bottom:8px}.panel-group-title{font-size:12px;font-weight:600;color:#6b7280;text-transform:uppercase}.available-panels{background:#fff;border-radius:12px;padding:16px;box-shadow:0 4px 6px #0000001a}.available-panels-title{font-size:16px;font-weight:600;color:#374151;margin-bottom:12px}.available-panels-list{display:flex;flex-direction:column;gap:8px}.slot-label{font-size:12px;font-weight:600;color:#6b7280;text-transform:uppercase;margin-bottom:8px;display:flex;align-items:center;gap:8px}.slot-indicator{width:8px;height:8px;border-radius:50%;background:#d1d5db}.slot-indicator.active{background:#3b82f6}.action-buttons{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:1001;display:flex;gap:12px;padding:12px 24px;background:#fff;border-radius:12px;box-shadow:0 8px 16px #00000026;animation:scaleIn .3s ease}.action-button{padding:10px 20px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#374151;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.action-button:hover{background:#f9fafb}.action-button.primary{background:#3b82f6;color:#fff;border-color:#2563eb}.action-button.primary:hover{background:#2563eb}@media (max-width:768px){.edit-mode-toggle{top:8px;right:8px;padding:6px 12px;font-size:12px}.action-buttons{bottom:16px;padding:10px 16px}.action-button{padding:8px 16px;font-size:13px}}@media (prefers-color-scheme:dark){.edit-mode-toggle{background:#1f2937;color:#f9fafb;border-color:#374151}.edit-mode-toggle:hover{background:#374151}.draggable-panel{background:#1f2937;color:#f9fafb;border-color:#374151}.available-panels{background:#1f2937}.panel-label{color:#f9fafb}.action-buttons{background:#1f2937}.action-button{background:#1f2937;color:#f9fafb;border-color:#374151}.action-button:hover{background:#374151}}.panel-configurator{display:flex;flex-direction:column;gap:2rem;padding:1.5rem;background:var(--configurator-bg);border-radius:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.configurator-section{display:flex;flex-direction:column;gap:1rem}.section-title{margin:0;font-size:.875rem;font-weight:600;color:var(--configurator-title);text-transform:uppercase;letter-spacing:.05em;text-align:center}.slots-container{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;width:75%;margin:0 auto;align-items:start}.slot{position:relative;aspect-ratio:1 / 1.3;width:100%;padding:2.5rem 1rem 1rem;background:var(--slot-bg);border:2px solid var(--slot-border);border-radius:6px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:.5rem;overflow:hidden;box-sizing:border-box}.slot:hover{border-color:var(--slot-border-hover);box-shadow:0 2px 4px #0000000d}.slot.selected{border-color:var(--slot-border-selected);background:var(--slot-bg-selected);box-shadow:0 0 0 3px var(--slot-bg-selected)}.slot.empty{border-style:dashed}.slot-label{font-size:.75rem;font-weight:600;color:var(--slot-label);text-transform:capitalize;text-align:left}.slot[data-position=middle] .slot-label,.slot[data-position=middle] .slot-panel-name,.slot[data-position=middle] .slot-empty-state{text-align:center}.slot[data-position=right] .slot-label,.slot[data-position=right] .slot-panel-name,.slot[data-position=right] .slot-empty-state{text-align:right}.slot-content{flex:1;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;min-height:0}.slot-panel-name{font-weight:600;color:var(--slot-content-text);font-size:.875rem}.slot-preview{flex:1;display:flex;align-items:center;justify-content:center;padding:.5rem;background:var(--slot-preview-bg);border-radius:4px;border:1px solid var(--slot-preview-border);font-size:.75rem;color:var(--slot-preview-text)}.slot-empty-state{flex:1;display:flex;align-items:center;justify-content:center;color:var(--slot-empty-text);font-size:.875rem;font-style:italic;min-height:0}.slot-clear-btn{position:absolute;top:.25rem;right:.25rem;width:24px;height:24px;padding:0;background:var(--clear-btn-bg);color:var(--clear-btn-text);border:none;border-radius:4px;cursor:pointer;font-size:1.25rem;line-height:1;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.slot:hover .slot-clear-btn{opacity:1}.slot-clear-btn:hover{background:var(--clear-btn-hover);transform:scale(1.1)}.available-panels{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;width:75%;margin:0 auto}.available-panel{min-height:80px;padding:.75rem;background:var(--panel-bg);border:2px solid var(--panel-border);border-radius:6px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:.5rem}.available-panel:hover{border-color:var(--panel-border-hover);box-shadow:0 2px 4px #0000000d;transform:translateY(-2px)}.available-panel.selected{border-color:var(--panel-border-selected);background:var(--panel-bg-selected);box-shadow:0 0 0 3px var(--panel-bg-selected)}.available-panel.in-use{opacity:.5;border-style:dashed}.available-panel.in-use:hover{transform:translateY(0);opacity:.6}.panel-label{font-weight:600;color:var(--panel-label-text);font-size:.875rem}.panel-preview{flex:1;display:flex;align-items:center;justify-content:center;padding:.5rem;background:var(--panel-preview-bg);border-radius:4px;font-size:.75rem;color:var(--panel-preview-text)}.selection-hint{padding:.75rem 1rem;background:var(--hint-bg);border:1px solid var(--hint-border);border-radius:6px;color:var(--hint-text);font-size:.875rem;text-align:center}.available-panel.multi-selected{border-color:var(--panel-border-selected);background:var(--panel-bg-selected);box-shadow:0 0 0 2px var(--panel-bg-selected)}.multi-select-badge{margin-left:.5rem;padding:.25rem .5rem;background:var(--panel-border-selected);color:#fff;font-size:.75rem;border-radius:12px;font-weight:400}.multi-select-hint{background:var(--panel-bg-selected);border-color:var(--panel-border-selected)}.slot.tab-group{border-style:solid}.group-content{position:relative;overflow-y:auto;min-height:0}.group-badge{font-size:.75rem;font-weight:600;color:var(--panel-border-selected);margin-bottom:.5rem}.group-panels{display:flex;flex-direction:column;gap:.25rem;flex:1;overflow-y:auto;min-height:0}.group-panel-label{font-size:.75rem;color:var(--slot-content-text);padding:.25rem .5rem;background:var(--slot-preview-bg);border-radius:3px;border-left:3px solid var(--panel-border-selected)}.slot-panel-label{font-weight:600;color:var(--slot-content-text);font-size:.875rem;text-align:center}.create-tab-group-btn{margin-top:.5rem;padding:.5rem .75rem;background:var(--panel-border-selected);color:#fff;border:none;border-radius:4px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s ease}.create-tab-group-btn:hover{transform:scale(1.05);box-shadow:0 2px 4px #0000001a}.tab-mode-toggle{position:absolute;top:.5rem;left:.5rem;padding:.25rem .5rem;background:var(--slot-bg);border:1px solid var(--slot-border);border-radius:4px;font-size:.85rem;cursor:pointer;transition:all .2s ease;z-index:10;opacity:.7;color:var(--slot-content-text)}.tab-mode-toggle svg{display:block}.tab-mode-toggle:hover{opacity:1;border-color:var(--slot-border-hover);background:var(--slot-preview-bg)}.tab-mode-toggle.active{opacity:1;background:var(--panel-border-selected);color:#fff;border-color:var(--panel-border-selected)}.tab-config-controls{margin-bottom:.5rem}.tab-config-label{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--slot-label)}.tab-config-label select{padding:.25rem .5rem;border:1px solid var(--slot-border);border-radius:3px;background:var(--slot-bg);color:var(--slot-content-text);font-size:.7rem;cursor:pointer}.group-panel-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem .5rem;background:var(--slot-preview-bg);border-radius:3px;border-left:3px solid var(--panel-border-selected)}.group-panel-label{flex:1;font-size:.75rem;color:var(--slot-content-text);display:flex;align-items:center;gap:.25rem}.default-badge{color:var(--panel-border-selected);font-size:.9em}.remove-from-group-btn{width:18px;height:18px;padding:0;background:var(--clear-btn-bg);color:var(--clear-btn-text);border:none;border-radius:3px;cursor:pointer;font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center;opacity:.7;transition:all .2s ease}.remove-from-group-btn:hover{opacity:1;transform:scale(1.1)}.usage-hint{padding:.75rem 1rem;background:var(--slot-preview-bg);border:1px solid var(--slot-border);border-radius:6px;color:var(--hint-text);font-size:.875rem;text-align:center}
|
package/dist/panels.bundle.js
CHANGED
|
@@ -1041,10 +1041,10 @@ const GitHubProjectsPanelContent = ({
|
|
|
1041
1041
|
const [expandedSections, setExpandedSections] = useState(
|
|
1042
1042
|
/* @__PURE__ */ new Set(["owned", "starred"])
|
|
1043
1043
|
);
|
|
1044
|
-
const
|
|
1045
|
-
const isLoading =
|
|
1046
|
-
const hasData =
|
|
1047
|
-
const data =
|
|
1044
|
+
const { githubRepositories } = context;
|
|
1045
|
+
const isLoading = (githubRepositories == null ? void 0 : githubRepositories.loading) ?? false;
|
|
1046
|
+
const hasData = !!githubRepositories;
|
|
1047
|
+
const data = githubRepositories == null ? void 0 : githubRepositories.data;
|
|
1048
1048
|
useEffect(() => {
|
|
1049
1049
|
const container = containerRef.current;
|
|
1050
1050
|
if (!container) return;
|
|
@@ -1427,7 +1427,8 @@ const GitHubProjectsPanelMetadata = {
|
|
|
1427
1427
|
description: "Browse and manage your GitHub repositories",
|
|
1428
1428
|
icon: "github",
|
|
1429
1429
|
version: "0.1.0",
|
|
1430
|
-
slices: ["
|
|
1430
|
+
slices: ["githubRepositories"],
|
|
1431
|
+
// Typed context slice declaration
|
|
1431
1432
|
surfaces: ["sidebar", "panel"]
|
|
1432
1433
|
};
|
|
1433
1434
|
const RepositoryAvatar = ({
|
|
@@ -1986,8 +1987,7 @@ const GitHubSearchPanelContent = ({ context, actions, events }) => {
|
|
|
1986
1987
|
const [selectedRepoId, setSelectedRepoId] = useState(null);
|
|
1987
1988
|
const searchTimeoutRef = useRef(null);
|
|
1988
1989
|
const inputRef = useRef(null);
|
|
1989
|
-
const workspaceSlice = context
|
|
1990
|
-
const workspaceReposSlice = context.getSlice("workspaceRepositories");
|
|
1990
|
+
const { workspace: workspaceSlice, workspaceRepositories: workspaceReposSlice } = context;
|
|
1991
1991
|
const currentWorkspace = (_a = workspaceSlice == null ? void 0 : workspaceSlice.data) == null ? void 0 : _a.workspace;
|
|
1992
1992
|
const collectionName = currentWorkspace == null ? void 0 : currentWorkspace.name;
|
|
1993
1993
|
const collectionRepos = useMemo(
|
|
@@ -3804,13 +3804,16 @@ function C$1(e) {
|
|
|
3804
3804
|
return { "--panel-background": e.colors.background, "--panel-border": e.colors.border, "--panel-handle": e.colors.backgroundSecondary, "--panel-handle-hover": e.colors.backgroundHover, "--panel-handle-active": e.colors.primary, "--panel-button-bg": e.colors.surface, "--panel-button-hover": e.colors.backgroundHover, "--panel-button-border": e.colors.border, "--panel-button-icon": e.colors.textSecondary, "--panel-accent-bg": e.colors.primary + "15" };
|
|
3805
3805
|
}
|
|
3806
3806
|
const z$1 = forwardRef(({ panels: o, className: a = "", style: s2, theme: d, minPanelWidth: u = 350, idealPanelWidth: p2 = 0.333, showSeparator: h2 = false, onPanelChange: m, preventKeyboardScroll: f = true, disableSwipe: g = false }, v) => {
|
|
3807
|
-
const b = useRef(null), y = C$1(d);
|
|
3807
|
+
const b = useRef(null), y = useRef(false), w = useRef(null), x = C$1(d);
|
|
3808
3808
|
useImperativeHandle(v, () => ({ scrollToPanel: (e) => {
|
|
3809
3809
|
if (!b.current) return;
|
|
3810
3810
|
const t = b.current, n = t.children[e];
|
|
3811
3811
|
if (n) {
|
|
3812
|
+
y.current = true, w.current && clearTimeout(w.current);
|
|
3812
3813
|
const e2 = n.offsetLeft;
|
|
3813
|
-
t.scrollTo({ left: e2, behavior: "smooth" })
|
|
3814
|
+
t.scrollTo({ left: e2, behavior: "smooth" }), w.current = setTimeout(() => {
|
|
3815
|
+
y.current = false;
|
|
3816
|
+
}, 500);
|
|
3814
3817
|
}
|
|
3815
3818
|
}, getCurrentPanel: () => {
|
|
3816
3819
|
if (!b.current || 0 === b.current.children.length) return 0;
|
|
@@ -3832,24 +3835,27 @@ const z$1 = forwardRef(({ panels: o, className: a = "", style: s2, theme: d, min
|
|
|
3832
3835
|
return e.addEventListener("keydown", t), () => {
|
|
3833
3836
|
e.removeEventListener("keydown", t);
|
|
3834
3837
|
};
|
|
3835
|
-
}, [f])
|
|
3836
|
-
|
|
3837
|
-
|
|
3838
|
-
S =
|
|
3839
|
-
|
|
3838
|
+
}, [f]), useEffect(() => () => {
|
|
3839
|
+
w.current && clearTimeout(w.current);
|
|
3840
|
+
}, []);
|
|
3841
|
+
const S = o.length, R = 2 * u;
|
|
3842
|
+
let N;
|
|
3843
|
+
N = 1 === S || 2 === S ? "100%" : `max(${u}px, ${100 * p2}%)`;
|
|
3844
|
+
const E = React2__default.useId().replace(/:/g, "_");
|
|
3840
3845
|
return jsxs(Fragment, { children: [
|
|
3841
|
-
2 ===
|
|
3842
|
-
.snap-carousel-container[data-carousel-id="${
|
|
3846
|
+
2 === S && /* @__PURE__ */ jsx("style", { children: `
|
|
3847
|
+
.snap-carousel-container[data-carousel-id="${E}"][data-panel-count="2"] .snap-carousel-panel {
|
|
3843
3848
|
width: 100%;
|
|
3844
3849
|
}
|
|
3845
|
-
@container (min-width: ${
|
|
3846
|
-
.snap-carousel-container[data-carousel-id="${
|
|
3850
|
+
@container (min-width: ${R}px) {
|
|
3851
|
+
.snap-carousel-container[data-carousel-id="${E}"][data-panel-count="2"] .snap-carousel-panel {
|
|
3847
3852
|
width: 50%;
|
|
3848
3853
|
}
|
|
3849
3854
|
}
|
|
3850
3855
|
` }),
|
|
3851
|
-
/* @__PURE__ */ jsx("div", { ref: b, className: `snap-carousel-container ${g ? "swipe-disabled" : ""} ${a}`, style: { ...
|
|
3856
|
+
/* @__PURE__ */ jsx("div", { ref: b, className: `snap-carousel-container ${g ? "swipe-disabled" : ""} ${a}`, style: { ...x, ...s2, "--snap-carousel-min-width": `${u}px`, "--snap-carousel-ideal-width": 100 * p2 + "%", "--snap-carousel-gap": h2 ? "1px" : "0px", "--snap-carousel-panel-width": N, "--snap-carousel-panel-count": S, "--snap-carousel-two-panel-threshold": `${R}px` }, onScroll: (e) => {
|
|
3852
3857
|
if (!m || !b.current || 0 === b.current.children.length) return;
|
|
3858
|
+
if (y.current) return;
|
|
3853
3859
|
const t = b.current, n = t.getBoundingClientRect().left;
|
|
3854
3860
|
let r2 = 0, o2 = 1 / 0;
|
|
3855
3861
|
for (let i = 0; i < t.children.length; i++) {
|
|
@@ -3857,7 +3863,7 @@ const z$1 = forwardRef(({ panels: o, className: a = "", style: s2, theme: d, min
|
|
|
3857
3863
|
a2 < o2 && (o2 = a2, r2 = i);
|
|
3858
3864
|
}
|
|
3859
3865
|
m(r2);
|
|
3860
|
-
}, "data-panel-count":
|
|
3866
|
+
}, "data-panel-count": S, "data-carousel-id": E, children: o.map((t, n) => /* @__PURE__ */ jsx("div", { className: "snap-carousel-panel", children: t }, n)) })
|
|
3861
3867
|
] });
|
|
3862
3868
|
});
|
|
3863
3869
|
z$1.displayName = "SnapCarousel";
|
|
@@ -3866,8 +3872,8 @@ var le$2, se$1;
|
|
|
3866
3872
|
const de$1 = /* @__PURE__ */ Object.freeze({ x: 0, y: 0 });
|
|
3867
3873
|
var Te$1, Ae$1;
|
|
3868
3874
|
(Ae$1 = Te$1 || (Te$1 = {}))[Ae$1.Forward = 1] = "Forward", Ae$1[Ae$1.Backward = -1] = "Backward";
|
|
3869
|
-
var _e$
|
|
3870
|
-
(je$1 = _e$
|
|
3875
|
+
var _e$1, je$1, He$1, Ke$1;
|
|
3876
|
+
(je$1 = _e$1 || (_e$1 = {})).Click = "click", je$1.DragStart = "dragstart", je$1.Keydown = "keydown", je$1.ContextMenu = "contextmenu", je$1.Resize = "resize", je$1.SelectionChange = "selectionchange", je$1.VisibilityChange = "visibilitychange", (Ke$1 = He$1 || (He$1 = {})).Space = "Space", Ke$1.Down = "ArrowDown", Ke$1.Right = "ArrowRight", Ke$1.Left = "ArrowLeft", Ke$1.Up = "ArrowUp", Ke$1.Esc = "Escape", Ke$1.Enter = "Enter", Ke$1.Tab = "Tab";
|
|
3871
3877
|
({ start: [He$1.Space, He$1.Enter], cancel: [He$1.Esc], end: [He$1.Space, He$1.Enter, He$1.Tab] });
|
|
3872
3878
|
var rt$1, ot$1;
|
|
3873
3879
|
(ot$1 = rt$1 || (rt$1 = {}))[ot$1.RightClick = 2] = "RightClick";
|
|
@@ -3888,10 +3894,10 @@ var Ut$1;
|
|
|
3888
3894
|
}
|
|
3889
3895
|
return Ut$1 || (Ut$1 = createContext(void 0)), Ut$1;
|
|
3890
3896
|
})();
|
|
3891
|
-
var
|
|
3892
|
-
var
|
|
3893
|
-
var le$1 = (o, e, t) =>
|
|
3894
|
-
class
|
|
3897
|
+
var Ee = Object.defineProperty;
|
|
3898
|
+
var Re = (o, e, t) => e in o ? Ee(o, e, { enumerable: true, configurable: true, writable: true, value: t }) : o[e] = t;
|
|
3899
|
+
var le$1 = (o, e, t) => Re(o, typeof e != "symbol" ? e + "" : e, t);
|
|
3900
|
+
class Me {
|
|
3895
3901
|
constructor() {
|
|
3896
3902
|
le$1(this, "PRESETS_KEY", "panel-layouts:workspace-presets");
|
|
3897
3903
|
le$1(this, "REPO_STATE_PREFIX", "panel-layouts:repo-state:");
|
|
@@ -3958,10 +3964,10 @@ class De {
|
|
|
3958
3964
|
if (i)
|
|
3959
3965
|
try {
|
|
3960
3966
|
e[s2] = JSON.parse(i);
|
|
3961
|
-
} catch (
|
|
3967
|
+
} catch (a) {
|
|
3962
3968
|
console.error(
|
|
3963
3969
|
`Failed to parse repository state for ${s2}:`,
|
|
3964
|
-
|
|
3970
|
+
a
|
|
3965
3971
|
);
|
|
3966
3972
|
}
|
|
3967
3973
|
}
|
|
@@ -4032,11 +4038,11 @@ class O {
|
|
|
4032
4038
|
createdAt: s2.createdAt,
|
|
4033
4039
|
// Preserve creation time
|
|
4034
4040
|
updatedAt: Date.now()
|
|
4035
|
-
},
|
|
4041
|
+
}, a = {
|
|
4036
4042
|
...r2,
|
|
4037
4043
|
[e]: i
|
|
4038
4044
|
};
|
|
4039
|
-
return await this.adapter.saveWorkspacePresets(
|
|
4045
|
+
return await this.adapter.saveWorkspacePresets(a), i;
|
|
4040
4046
|
}
|
|
4041
4047
|
/**
|
|
4042
4048
|
* Delete a workspace layout
|
|
@@ -4361,13 +4367,13 @@ class O {
|
|
|
4361
4367
|
Object.keys(e).length;
|
|
4362
4368
|
}
|
|
4363
4369
|
}
|
|
4364
|
-
le$1(O, "adapter", new
|
|
4370
|
+
le$1(O, "adapter", new Me());
|
|
4365
4371
|
function gt(o, e, t, r2) {
|
|
4366
4372
|
useEffect(() => {
|
|
4367
4373
|
const s2 = e.on(
|
|
4368
4374
|
"panel:focus",
|
|
4369
|
-
(
|
|
4370
|
-
|
|
4375
|
+
(a) => {
|
|
4376
|
+
a.payload.panelId === o && t();
|
|
4371
4377
|
}
|
|
4372
4378
|
);
|
|
4373
4379
|
return () => {
|
|
@@ -4831,9 +4837,9 @@ const GitHubIssuesPanelContent = ({
|
|
|
4831
4837
|
return (_a2 = panelRef.current) == null ? void 0 : _a2.focus();
|
|
4832
4838
|
}
|
|
4833
4839
|
);
|
|
4834
|
-
const issuesSlice = context
|
|
4835
|
-
const isLoading =
|
|
4836
|
-
const hasData =
|
|
4840
|
+
const { githubIssues: issuesSlice } = context;
|
|
4841
|
+
const isLoading = (issuesSlice == null ? void 0 : issuesSlice.loading) ?? false;
|
|
4842
|
+
const hasData = !!issuesSlice;
|
|
4837
4843
|
const issues = ((_a = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _a.issues) ?? [];
|
|
4838
4844
|
const owner = ((_b = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _b.owner) ?? "";
|
|
4839
4845
|
const repo = ((_c = issuesSlice == null ? void 0 : issuesSlice.data) == null ? void 0 : _c.repo) ?? "";
|
|
@@ -5444,7 +5450,8 @@ const GitHubIssuesPanelMetadata = {
|
|
|
5444
5450
|
description: "View and manage GitHub repository issues",
|
|
5445
5451
|
icon: "circle-dot",
|
|
5446
5452
|
version: "0.1.0",
|
|
5447
|
-
slices: ["
|
|
5453
|
+
slices: ["githubIssues"],
|
|
5454
|
+
// Typed context slice declaration
|
|
5448
5455
|
surfaces: ["panel"]
|
|
5449
5456
|
};
|
|
5450
5457
|
const VOID = -1;
|
|
@@ -51530,6 +51537,7 @@ const TimelineEventRenderer = ({ event, onToggleReaction, getMergedReactions })
|
|
|
51530
51537
|
};
|
|
51531
51538
|
const GitHubMessagesPanelContent = ({ context, events }) => {
|
|
51532
51539
|
var _a;
|
|
51540
|
+
const { githubMessages: messagesSlice } = context;
|
|
51533
51541
|
const { theme: theme2 } = useTheme();
|
|
51534
51542
|
const panelRef = useRef(null);
|
|
51535
51543
|
const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);
|
|
@@ -51547,8 +51555,7 @@ const GitHubMessagesPanelContent = ({ context, events }) => {
|
|
|
51547
51555
|
const [sendError, setSendError] = useState(null);
|
|
51548
51556
|
const textareaRef = useRef(null);
|
|
51549
51557
|
const handleDelete2 = () => {
|
|
51550
|
-
const
|
|
51551
|
-
const messagesData2 = messagesSlice2 == null ? void 0 : messagesSlice2.data;
|
|
51558
|
+
const messagesData2 = messagesSlice == null ? void 0 : messagesSlice.data;
|
|
51552
51559
|
if ((messagesData2 == null ? void 0 : messagesData2.target) && events) {
|
|
51553
51560
|
const { target: target2, owner, repo } = messagesData2;
|
|
51554
51561
|
events.emit({
|
|
@@ -51565,8 +51572,7 @@ const GitHubMessagesPanelContent = ({ context, events }) => {
|
|
|
51565
51572
|
setShowDeleteConfirm(false);
|
|
51566
51573
|
};
|
|
51567
51574
|
const handleToggleReaction = useCallback((itemId, itemType, reactionType, currentReactionId) => {
|
|
51568
|
-
const
|
|
51569
|
-
const messagesData2 = messagesSlice2 == null ? void 0 : messagesSlice2.data;
|
|
51575
|
+
const messagesData2 = messagesSlice == null ? void 0 : messagesSlice.data;
|
|
51570
51576
|
if (!(messagesData2 == null ? void 0 : messagesData2.target) || !events) return;
|
|
51571
51577
|
const { owner, repo, target: target2 } = messagesData2;
|
|
51572
51578
|
const key = `${itemType}-${itemId}`;
|
|
@@ -51639,8 +51645,7 @@ const GitHubMessagesPanelContent = ({ context, events }) => {
|
|
|
51639
51645
|
}
|
|
51640
51646
|
}, [context, events]);
|
|
51641
51647
|
const handleSendComment = useCallback(() => {
|
|
51642
|
-
const
|
|
51643
|
-
const messagesData2 = messagesSlice2 == null ? void 0 : messagesSlice2.data;
|
|
51648
|
+
const messagesData2 = messagesSlice == null ? void 0 : messagesSlice.data;
|
|
51644
51649
|
if (!events || !(messagesData2 == null ? void 0 : messagesData2.target) || !commentText.trim() || isSending) return;
|
|
51645
51650
|
const { owner, repo, target: target2 } = messagesData2;
|
|
51646
51651
|
setIsSending(true);
|
|
@@ -51705,9 +51710,8 @@ const GitHubMessagesPanelContent = ({ context, events }) => {
|
|
|
51705
51710
|
return (_a2 = panelRef.current) == null ? void 0 : _a2.focus();
|
|
51706
51711
|
}
|
|
51707
51712
|
);
|
|
51708
|
-
const
|
|
51709
|
-
const
|
|
51710
|
-
const hasData = context.hasSlice("github-messages");
|
|
51713
|
+
const isLoading = (messagesSlice == null ? void 0 : messagesSlice.loading) ?? false;
|
|
51714
|
+
const hasData = !!messagesSlice;
|
|
51711
51715
|
const messagesData = messagesSlice == null ? void 0 : messagesSlice.data;
|
|
51712
51716
|
useEffect(() => {
|
|
51713
51717
|
if (!events) return;
|
|
@@ -51760,8 +51764,7 @@ const GitHubMessagesPanelContent = ({ context, events }) => {
|
|
|
51760
51764
|
}, [commentText]);
|
|
51761
51765
|
useEffect(() => {
|
|
51762
51766
|
if (!events) return;
|
|
51763
|
-
const
|
|
51764
|
-
const messagesData2 = messagesSlice2 == null ? void 0 : messagesSlice2.data;
|
|
51767
|
+
const messagesData2 = messagesSlice == null ? void 0 : messagesSlice.data;
|
|
51765
51768
|
const unsubscribers = [
|
|
51766
51769
|
events.on("github-messages:comment:created", (event) => {
|
|
51767
51770
|
const payload = event.payload;
|
|
@@ -52395,7 +52398,8 @@ const GitHubMessagesPanelMetadata = {
|
|
|
52395
52398
|
description: "View conversation threads for GitHub issues and pull requests",
|
|
52396
52399
|
icon: "message-square",
|
|
52397
52400
|
version: "0.1.0",
|
|
52398
|
-
slices: ["
|
|
52401
|
+
slices: ["githubMessages"],
|
|
52402
|
+
// Typed context slice declaration
|
|
52399
52403
|
surfaces: ["panel"]
|
|
52400
52404
|
};
|
|
52401
52405
|
const OwnerRepositoriesPanelContent = ({
|
|
@@ -52424,8 +52428,8 @@ const OwnerRepositoriesPanelContent = ({
|
|
|
52424
52428
|
setFilter("");
|
|
52425
52429
|
}, []);
|
|
52426
52430
|
const owner = propOwner || ((_b = (_a = context == null ? void 0 : context.currentScope) == null ? void 0 : _a.repository) == null ? void 0 : _b.name);
|
|
52427
|
-
const ownerSlice = context
|
|
52428
|
-
const isLoading =
|
|
52431
|
+
const { ownerRepositories: ownerSlice } = context;
|
|
52432
|
+
const isLoading = (ownerSlice == null ? void 0 : ownerSlice.loading) ?? false;
|
|
52429
52433
|
((_c = ownerSlice == null ? void 0 : ownerSlice.data) == null ? void 0 : _c.owner) ?? null;
|
|
52430
52434
|
const repositories = ((_d = ownerSlice == null ? void 0 : ownerSlice.data) == null ? void 0 : _d.repositories) ?? [];
|
|
52431
52435
|
const error = ((_e2 = ownerSlice == null ? void 0 : ownerSlice.data) == null ? void 0 : _e2.error) ?? null;
|
|
@@ -53046,7 +53050,8 @@ const OwnerRepositoriesPanelMetadata = {
|
|
|
53046
53050
|
description: "Browse repositories for a GitHub user or organization",
|
|
53047
53051
|
icon: "github",
|
|
53048
53052
|
version: "0.2.0",
|
|
53049
|
-
slices: ["
|
|
53053
|
+
slices: ["ownerRepositories"],
|
|
53054
|
+
// Typed context slice declaration
|
|
53050
53055
|
surfaces: ["panel"]
|
|
53051
53056
|
};
|
|
53052
53057
|
const STORAGE_KEY = "recent-repositories";
|
|
@@ -54064,7 +54069,7 @@ const panels = [
|
|
|
54064
54069
|
component: GitHubProjectsPanel,
|
|
54065
54070
|
onMount: async (context) => {
|
|
54066
54071
|
console.log("GitHub Projects Panel mounted");
|
|
54067
|
-
const slice = context.getSlice("
|
|
54072
|
+
const slice = context.getSlice("githubRepositories");
|
|
54068
54073
|
if (slice && !slice.loading) {
|
|
54069
54074
|
await slice.refresh();
|
|
54070
54075
|
}
|
|
@@ -54088,7 +54093,7 @@ const panels = [
|
|
|
54088
54093
|
component: GitHubIssuesPanel,
|
|
54089
54094
|
onMount: async (context) => {
|
|
54090
54095
|
console.log("GitHub Issues Panel mounted");
|
|
54091
|
-
const slice = context.getSlice("
|
|
54096
|
+
const slice = context.getSlice("githubIssues");
|
|
54092
54097
|
if (slice && !slice.loading) {
|
|
54093
54098
|
await slice.refresh();
|
|
54094
54099
|
}
|