@forgeax/app-shell 0.51.0 → 0.53.0

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/react.d.ts CHANGED
@@ -168,10 +168,16 @@ interface DockTabFrameProps extends HTMLAttributes<HTMLDivElement> {
168
168
  action?: ReactNode;
169
169
  }
170
170
  type DockTabActionProps = HTMLAttributes<HTMLDivElement>;
171
+ type DockTabIconProps = HTMLAttributes<HTMLSpanElement>;
172
+ type DockTabTitleProps = HTMLAttributes<HTMLSpanElement>;
171
173
  /** Product-neutral Dock tab frame with stable Dockview-compatible DOM hooks. */
172
174
  declare const DockTabFrame: react.ForwardRefExoticComponent<DockTabFrameProps & react.RefAttributes<HTMLDivElement>>;
173
175
  /** Product-neutral trailing-action wrapper for a Dock tab frame. */
174
176
  declare const DockTabAction: react.ForwardRefExoticComponent<DockTabActionProps & react.RefAttributes<HTMLDivElement>>;
177
+ /** Product-neutral leading-icon wrapper with a stable styling hook. */
178
+ declare const DockTabIcon: react.ForwardRefExoticComponent<DockTabIconProps & react.RefAttributes<HTMLSpanElement>>;
179
+ /** Product-neutral tab-title wrapper with a stable styling hook. */
180
+ declare const DockTabTitle: react.ForwardRefExoticComponent<DockTabTitleProps & react.RefAttributes<HTMLSpanElement>>;
175
181
 
176
182
  type DockTabStatusTone = 'neutral' | 'error' | 'warning';
177
183
  interface DockTabStatusSummaryItem {
@@ -191,6 +197,15 @@ interface DockTabStatusSummaryProps extends HTMLAttributes<HTMLSpanElement> {
191
197
  */
192
198
  declare const DockTabStatusSummary: react.ForwardRefExoticComponent<DockTabStatusSummaryProps & react.RefAttributes<HTMLSpanElement>>;
193
199
 
200
+ /** Stable opt-in hook for portalled controls that belong to an interaction. */
201
+ declare const OWNED_INTERACTION_SURFACE_SELECTOR = "[data-fx-interaction-scope]";
202
+ /**
203
+ * Report whether a pointer/focus target belongs to an owned or caller-exempt
204
+ * interaction surface. Each caller selector is isolated so one malformed host
205
+ * selector cannot suppress a later valid match or escape the dismissal guard.
206
+ */
207
+ declare function isDismissExemptInteractionTarget(target: Element | null, additionalSelectors?: readonly string[]): boolean;
208
+
194
209
  type PanelContentPadding = 'none' | 'sm' | 'md';
195
210
  type PanelContentScroll = 'none' | 'auto';
196
211
  type PanelContentTone = 'default' | 'surface' | 'tool';
@@ -332,4 +347,4 @@ interface ShellSlotProps extends HTMLAttributes<HTMLElement> {
332
347
  /** Structural shell marker that preserves the caller's semantic element. */
333
348
  declare function ShellSlot({ as, name, ...props }: ShellSlotProps): ReactElement;
334
349
 
335
- export { type AnchoredResizeDirection, AnchoredResizeHandle, type AnchoredResizeHandleProps, type AnchoredResizeSession, DetachedPanelBoundary, type DetachedPanelBoundaryProps, DetachedSurfaceFrame, type DetachedSurfaceFrameProps, DetachedSurfaceStatus, type DetachedSurfaceStatusProps, type DetachedSurfaceStatusTone, type DockLayoutControlBinding, type DockLayoutControlBindingOptions, DockLayoutMenu, type DockLayoutMenuPanel, type DockLayoutMenuProps, DockTabAction, type DockTabActionProps, DockTabFrame, type DockTabFrameProps, DockTabStatusSummary, type DockTabStatusSummaryItem, type DockTabStatusSummaryProps, type DockTabStatusTone, FloatingMenu, type FloatingMenuAnchor, type FloatingMenuPoint, type FloatingMenuProps, type LiveTabPlacement, type LiveTabPlacementSource, type LiveTabTitleSource, type PanelContentPadding, type PanelContentPolicy, type PanelContentScroll, type PanelContentTone, PanelEmptyState, type PanelEmptyStateProps, PanelSurface, type PanelSurfaceProps, type PersistentSizeStorage, type PersistentSizeStore, type PersistentSizeStoreOptions, type PersistentSizeUpdate, type PointerDragFinishReason, type PointerDragSessionOptions, type PointerReorderFinishReason, type PointerReorderSession, type PointerReorderSessionOptions, ResizeHandle, type ResizeHandleProps, ShellSlot, type ShellSlotElement, type ShellSlotProps, SlotDebugOverlay, SurfacePlaceholder, type SurfacePlaceholderProps, SurfaceRegion, type SurfaceRegionProps, type TabCloseInteractions, type TabCloseInteractionsOptions, type TabPinnedStateSource, type ThresholdPointerDragFinishReason, type ThresholdPointerDragSession, type ThresholdPointerDragSessionOptions, applyAnchoredResizeDelta, beginAnchoredResize, createPersistentSizeStore, hashSlotHue, installPointerDragSession, installPointerReorderSession, installThresholdPointerDragSession, isSlotDebugEnabled, useDockLayoutControlBinding, useLiveTabPlacement, useLiveTabTitle, useLocalSize, usePersistentSizeStore, useTabCloseInteractions, useTabPinnedState };
350
+ export { type AnchoredResizeDirection, AnchoredResizeHandle, type AnchoredResizeHandleProps, type AnchoredResizeSession, DetachedPanelBoundary, type DetachedPanelBoundaryProps, DetachedSurfaceFrame, type DetachedSurfaceFrameProps, DetachedSurfaceStatus, type DetachedSurfaceStatusProps, type DetachedSurfaceStatusTone, type DockLayoutControlBinding, type DockLayoutControlBindingOptions, DockLayoutMenu, type DockLayoutMenuPanel, type DockLayoutMenuProps, DockTabAction, type DockTabActionProps, DockTabFrame, type DockTabFrameProps, DockTabIcon, type DockTabIconProps, DockTabStatusSummary, type DockTabStatusSummaryItem, type DockTabStatusSummaryProps, type DockTabStatusTone, DockTabTitle, type DockTabTitleProps, FloatingMenu, type FloatingMenuAnchor, type FloatingMenuPoint, type FloatingMenuProps, type LiveTabPlacement, type LiveTabPlacementSource, type LiveTabTitleSource, OWNED_INTERACTION_SURFACE_SELECTOR, type PanelContentPadding, type PanelContentPolicy, type PanelContentScroll, type PanelContentTone, PanelEmptyState, type PanelEmptyStateProps, PanelSurface, type PanelSurfaceProps, type PersistentSizeStorage, type PersistentSizeStore, type PersistentSizeStoreOptions, type PersistentSizeUpdate, type PointerDragFinishReason, type PointerDragSessionOptions, type PointerReorderFinishReason, type PointerReorderSession, type PointerReorderSessionOptions, ResizeHandle, type ResizeHandleProps, ShellSlot, type ShellSlotElement, type ShellSlotProps, SlotDebugOverlay, SurfacePlaceholder, type SurfacePlaceholderProps, SurfaceRegion, type SurfaceRegionProps, type TabCloseInteractions, type TabCloseInteractionsOptions, type TabPinnedStateSource, type ThresholdPointerDragFinishReason, type ThresholdPointerDragSession, type ThresholdPointerDragSessionOptions, applyAnchoredResizeDelta, beginAnchoredResize, createPersistentSizeStore, hashSlotHue, installPointerDragSession, installPointerReorderSession, installThresholdPointerDragSession, isDismissExemptInteractionTarget, isSlotDebugEnabled, useDockLayoutControlBinding, useLiveTabPlacement, useLiveTabTitle, useLocalSize, usePersistentSizeStore, useTabCloseInteractions, useTabPinnedState };
package/dist/react.js CHANGED
@@ -1485,6 +1485,32 @@ var DockTabAction = forwardRef(
1485
1485
  }
1486
1486
  );
1487
1487
  DockTabAction.displayName = "DockTabAction";
1488
+ var DockTabIcon = forwardRef(
1489
+ function DockTabIcon2({ className, ...props }, ref) {
1490
+ return /* @__PURE__ */ jsx3(
1491
+ "span",
1492
+ {
1493
+ ...props,
1494
+ ref,
1495
+ className: joinClassName("fx-dock-tab-icon", className)
1496
+ }
1497
+ );
1498
+ }
1499
+ );
1500
+ DockTabIcon.displayName = "DockTabIcon";
1501
+ var DockTabTitle = forwardRef(
1502
+ function DockTabTitle2({ className, ...props }, ref) {
1503
+ return /* @__PURE__ */ jsx3(
1504
+ "span",
1505
+ {
1506
+ ...props,
1507
+ ref,
1508
+ className: joinClassName("fx-dock-tab-title", className)
1509
+ }
1510
+ );
1511
+ }
1512
+ );
1513
+ DockTabTitle.displayName = "DockTabTitle";
1488
1514
 
1489
1515
  // src/dock-tab-status-summary.tsx
1490
1516
  import {
@@ -1518,6 +1544,19 @@ var DockTabStatusSummary = forwardRef2(function DockTabStatusSummary2({ classNam
1518
1544
  });
1519
1545
  DockTabStatusSummary.displayName = "DockTabStatusSummary";
1520
1546
 
1547
+ // src/dismiss-exemption.ts
1548
+ var OWNED_INTERACTION_SURFACE_SELECTOR = "[data-fx-interaction-scope]";
1549
+ function isDismissExemptInteractionTarget(target, additionalSelectors = []) {
1550
+ if (!target) return false;
1551
+ for (const selector of [OWNED_INTERACTION_SURFACE_SELECTOR, ...additionalSelectors]) {
1552
+ try {
1553
+ if (target.closest(selector) !== null) return true;
1554
+ } catch {
1555
+ }
1556
+ }
1557
+ return false;
1558
+ }
1559
+
1521
1560
  // src/panel.tsx
1522
1561
  import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
1523
1562
  function PanelEmptyState({
@@ -1875,8 +1914,11 @@ export {
1875
1914
  DockLayoutMenu,
1876
1915
  DockTabAction,
1877
1916
  DockTabFrame,
1917
+ DockTabIcon,
1878
1918
  DockTabStatusSummary,
1919
+ DockTabTitle,
1879
1920
  FloatingMenu,
1921
+ OWNED_INTERACTION_SURFACE_SELECTOR,
1880
1922
  PanelEmptyState,
1881
1923
  PanelSurface,
1882
1924
  ResizeHandle,
@@ -1891,6 +1933,7 @@ export {
1891
1933
  installPointerDragSession,
1892
1934
  installPointerReorderSession,
1893
1935
  installThresholdPointerDragSession,
1936
+ isDismissExemptInteractionTarget,
1894
1937
  isSlotDebugEnabled,
1895
1938
  useDockLayoutControlBinding,
1896
1939
  useLiveTabPlacement,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgeax/app-shell",
3
- "version": "0.51.0",
3
+ "version": "0.53.0",
4
4
  "description": "Generic Dock, Panel, Window, and Slot composition primitives",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",