Skip to content

Commit 374b5ee

Browse files
committed
feat: enhance ExtensionsPanel with mobile support and external link handling
- Added mobile detail view toggle in ExtensionsPanel. - Implemented external link opening functionality using Tauri's openUrl. - Refactored rendering of extension details and changelog to improve loading states. - Introduced star rating display for extensions. - Updated UI styles for better link visibility and hover effects. - Improved category filtering UI in ExtensionsPanel. - Added new color theme variables for link styling. - Updated package version to 0.1.26 and added react-icons dependency.
1 parent 881e2f2 commit 374b5ee

10 files changed

Lines changed: 707 additions & 471 deletions

File tree

packages/ui/lib/components/Tabs/Tabs.tsx

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { cx } from "@/utils/cssModules";
2-
import { memo, useCallback, useEffect, useRef, useState } from "react";
2+
import { memo, useCallback, useRef, useState } from "react";
33
import styles from "./Tabs.module.css";
44

55
export type TabsVariant = "panel" | "subtle" | "terminal";
@@ -80,7 +80,12 @@ export const Tabs = memo(function Tabs<T extends TabsItem>({
8080
const handleWheel = useCallback((event: React.WheelEvent) => {
8181
const element = listRef.current;
8282
if (!element) return;
83-
element.scrollLeft += event.deltaY !== 0 ? event.deltaY : event.deltaX;
83+
const canScrollHorizontally = element.scrollWidth > element.clientWidth + 1;
84+
if (!canScrollHorizontally) return;
85+
const delta = Math.abs(event.deltaX) > Math.abs(event.deltaY) ? event.deltaX : event.deltaY;
86+
if (delta === 0) return;
87+
event.preventDefault();
88+
element.scrollLeft += delta;
8489
}, []);
8590

8691
const getDropIndex = useCallback((clientX: number): number | null => {
@@ -143,14 +148,6 @@ export const Tabs = memo(function Tabs<T extends TabsItem>({
143148
setDropIndex(null);
144149
}, []);
145150

146-
useEffect(() => {
147-
const element = listRef.current;
148-
if (!element) return;
149-
const suppress = (event: WheelEvent) => event.preventDefault();
150-
element.addEventListener("wheel", suppress, { passive: false });
151-
return () => element.removeEventListener("wheel", suppress);
152-
}, []);
153-
154151
return (
155152
<div className={cx(styles, "tabs", classes.root)}>
156153
<div

packages/ui/lib/features/bridge/bridge.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ export interface Bridge {
204204
getHomePath(): Promise<string>;
205205
getAppDirs(): Promise<AppDirs>;
206206
getEnv(): Promise<Record<string, string>>;
207+
openExternal?(url: string): Promise<void>;
207208
};
208209
systemTheme: {
209210
get(): Promise<SystemThemeKind>;

0 commit comments

Comments
 (0)