@dxos/react-ui-tabs 0.8.4-main.ead640a → 0.8.4-main.effb148878

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.
@@ -1,218 +1,180 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // src/Tabs.tsx
4
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
5
4
  import { useArrowNavigationGroup, useFocusFinders, useFocusableGroup } from "@fluentui/react-tabster";
6
5
  import { createContext } from "@radix-ui/react-context";
7
6
  import * as TabsPrimitive from "@radix-ui/react-tabs";
8
7
  import { useControllableState } from "@radix-ui/react-use-controllable-state";
9
- import React, { useCallback, useLayoutEffect, useRef } from "react";
10
- import { Button, IconButton } from "@dxos/react-ui";
8
+ import React, { Activity, forwardRef, useCallback, useLayoutEffect } from "react";
9
+ import { Button, IconButton, useForwardedRef } from "@dxos/react-ui";
11
10
  import { useAttention } from "@dxos/react-ui-attention";
12
- import { ghostSelectedContainerMd, mx } from "@dxos/react-ui-theme";
11
+ import { mx } from "@dxos/ui-theme";
13
12
  var TABS_NAME = "Tabs";
14
13
  var [TabsContextProvider, useTabsContext] = createContext(TABS_NAME, {
14
+ orientation: "vertical",
15
15
  activePart: "list",
16
16
  setActivePart: () => {
17
- },
18
- orientation: "vertical"
19
- });
20
- var TabsRoot = ({ children, classNames, activePart: propsActivePart, onActivePartChange, defaultActivePart, value: propsValue, onValueChange, defaultValue, orientation = "vertical", activationMode = "manual", verticalVariant = "stateful", attendableId, ...props }) => {
21
- var _effect = _useSignals();
22
- try {
23
- const _1 = useArrowNavigationGroup();
24
- const _2 = useFocusableGroup();
25
- const [activePart = "list", setActivePart] = useControllableState({
26
- prop: propsActivePart,
27
- onChange: onActivePartChange,
28
- defaultProp: defaultActivePart
29
- });
30
- const [value, setValue] = useControllableState({
31
- prop: propsValue,
32
- onChange: onValueChange,
33
- defaultProp: defaultValue
34
- });
35
- const handleValueChange = useCallback((nextValue) => {
36
- setActivePart("panel");
37
- setValue(nextValue);
38
- }, [
39
- value
40
- ]);
41
- const { findFirstFocusable } = useFocusFinders();
42
- const tabsRoot = useRef(null);
43
- useLayoutEffect(() => {
44
- if (tabsRoot.current) {
45
- findFirstFocusable(tabsRoot.current)?.focus();
46
- }
47
- }, [
48
- activePart
49
- ]);
50
- return /* @__PURE__ */ React.createElement(TabsContextProvider, {
51
- orientation,
52
- activePart,
53
- setActivePart,
54
- value,
55
- attendableId,
56
- verticalVariant
57
- }, /* @__PURE__ */ React.createElement(TabsPrimitive.Root, {
58
- activationMode,
59
- "data-active": activePart,
60
- orientation,
61
- ...props,
62
- value,
63
- onValueChange: handleValueChange,
64
- className: mx("overflow-hidden", orientation === "vertical" && verticalVariant === "stateful" && "[&[data-active=list]_[role=tabpanel]]:invisible @md:[&[data-active=list]_[role=tabpanel]]:visible", classNames),
65
- ref: tabsRoot
66
- }, children));
67
- } finally {
68
- _effect.f();
69
- }
70
- };
71
- var TabsViewport = ({ classNames, children, ...props }) => {
72
- var _effect = _useSignals();
73
- try {
74
- const { orientation, activePart, verticalVariant } = useTabsContext("TabsViewport");
75
- return /* @__PURE__ */ React.createElement("div", {
76
- role: "none",
77
- ...props,
78
- "data-active": activePart,
79
- className: mx(orientation === "vertical" && verticalVariant === "stateful" && [
80
- "grid is-[200%] grid-cols-2 data-[active=panel]:mis-[-100%]",
81
- "@md:is-auto @md:data-[active=panel]:mis-0 @md:grid-cols-[minmax(min-content,1fr)_3fr] @md:gap-1"
82
- ], classNames)
83
- }, children);
84
- } finally {
85
- _effect.f();
86
- }
87
- };
88
- var TabsTablist = ({ children, classNames, ...props }) => {
89
- var _effect = _useSignals();
90
- try {
91
- const { orientation, verticalVariant } = useTabsContext("TabsTablist");
92
- return /* @__PURE__ */ React.createElement(TabsPrimitive.List, {
93
- ...props,
94
- "data-arrow-keys": orientation === "vertical" ? "up down" : "left right",
95
- className: mx(
96
- "max-bs-full is-full",
97
- // NOTE: Padding should be common to Toolbar.
98
- orientation === "vertical" ? "overflow-y-auto" : "flex items-stretch justify-start overflow-x-auto p-1 gap-1",
99
- orientation === "vertical" && verticalVariant === "stateful" && "place-self-start p-1",
100
- classNames
101
- )
102
- }, children);
103
- } finally {
104
- _effect.f();
105
- }
106
- };
107
- var TabsBackButton = ({ onClick, classNames, ...props }) => {
108
- var _effect = _useSignals();
109
- try {
110
- const { setActivePart } = useTabsContext("TabsBackButton");
111
- const handleClick = useCallback((event) => {
112
- setActivePart("list");
113
- return onClick?.(event);
114
- }, [
115
- onClick,
116
- setActivePart
117
- ]);
118
- return /* @__PURE__ */ React.createElement(Button, {
119
- ...props,
120
- classNames: [
121
- "is-full text-start @md:hidden mbe-2",
122
- classNames
123
- ],
124
- onClick: handleClick
125
- });
126
- } finally {
127
- _effect.f();
128
- }
129
- };
130
- var TabsTabGroupHeading = ({ children, classNames, ...props }) => {
131
- var _effect = _useSignals();
132
- try {
133
- return /* @__PURE__ */ React.createElement("h2", {
134
- ...props,
135
- className: mx("mlb-1 pli-2 text-sm text-unAccent", classNames)
136
- }, children);
137
- } finally {
138
- _effect.f();
139
- }
140
- };
141
- var TabsTab = ({ value, classNames, children, onClick, ...props }) => {
142
- var _effect = _useSignals();
143
- try {
144
- const { setActivePart, orientation, value: contextValue, attendableId } = useTabsContext("TabsTab");
145
- const { hasAttention } = useAttention(attendableId);
146
- const handleClick = useCallback(
147
- // NOTE: This handler is only called if the tab is *already active*.
148
- (event) => {
149
- setActivePart("panel");
150
- onClick?.(event);
151
- },
152
- [
153
- setActivePart,
154
- onClick
155
- ]
156
- );
157
- return /* @__PURE__ */ React.createElement(TabsPrimitive.Trigger, {
158
- value,
159
- asChild: true
160
- }, /* @__PURE__ */ React.createElement(Button, {
161
- density: "fine",
162
- variant: orientation === "horizontal" && contextValue === value ? hasAttention ? "primary" : "default" : "ghost",
163
- ...props,
164
- onClick: handleClick,
165
- classNames: [
166
- orientation === "vertical" && "block justify-start text-start is-full",
167
- orientation === "vertical" && ghostSelectedContainerMd,
168
- classNames
169
- ]
170
- }, children));
171
- } finally {
172
- _effect.f();
173
17
  }
174
- };
175
- var TabsIconTab = ({ value, classNames, onClick, ...props }) => {
176
- var _effect = _useSignals();
177
- try {
178
- const { setActivePart, orientation, value: contextValue, attendableId } = useTabsContext("TabsTab");
179
- const { hasAttention } = useAttention(attendableId);
180
- const handleClick = useCallback((event) => {
18
+ });
19
+ var TabsRoot = /* @__PURE__ */ forwardRef(({ children, classNames, activePart: propsActivePart, onActivePartChange, defaultActivePart, value: propsValue, onValueChange, defaultValue, orientation = "vertical", activationMode = "manual", attendableId, ...props }, forwardedRef) => {
20
+ const tabsRoot = useForwardedRef(forwardedRef);
21
+ const _1 = useArrowNavigationGroup();
22
+ const _2 = useFocusableGroup();
23
+ const [activePart = "list", setActivePart] = useControllableState({
24
+ prop: propsActivePart,
25
+ onChange: onActivePartChange,
26
+ defaultProp: defaultActivePart
27
+ });
28
+ const [value, setValue] = useControllableState({
29
+ prop: propsValue,
30
+ onChange: onValueChange,
31
+ defaultProp: defaultValue
32
+ });
33
+ const handleValueChange = useCallback((nextValue) => {
34
+ setActivePart("panel");
35
+ setValue(nextValue);
36
+ }, [
37
+ value
38
+ ]);
39
+ const { findFirstFocusable } = useFocusFinders();
40
+ useLayoutEffect(() => {
41
+ if (tabsRoot.current) {
42
+ findFirstFocusable(tabsRoot.current)?.focus();
43
+ }
44
+ }, [
45
+ activePart
46
+ ]);
47
+ return /* @__PURE__ */ React.createElement(TabsContextProvider, {
48
+ orientation,
49
+ activePart,
50
+ setActivePart,
51
+ value,
52
+ attendableId
53
+ }, /* @__PURE__ */ React.createElement(TabsPrimitive.Root, {
54
+ ...props,
55
+ className: mx("overflow-hidden", classNames),
56
+ orientation,
57
+ activationMode,
58
+ "data-active": activePart,
59
+ value,
60
+ onValueChange: handleValueChange,
61
+ ref: tabsRoot
62
+ }, children));
63
+ });
64
+ TabsRoot.displayName = "Tabs.Root";
65
+ function TabsViewport({ classNames, children, ...props }) {
66
+ const { activePart } = useTabsContext("TabsViewport");
67
+ return /* @__PURE__ */ React.createElement("div", {
68
+ ...props,
69
+ "data-active": activePart,
70
+ className: mx(classNames)
71
+ }, children);
72
+ }
73
+ TabsViewport.displayName = "Tabs.Viewport";
74
+ function TabsTablist({ children, classNames, ...props }) {
75
+ const { orientation } = useTabsContext("TabsTablist");
76
+ return /* @__PURE__ */ React.createElement(TabsPrimitive.List, {
77
+ ...props,
78
+ "data-arrow-keys": orientation === "vertical" ? "up down" : "left right",
79
+ className: mx(
80
+ "max-h-full w-full",
81
+ // TODO(burdon): Should be embeddable inside Toolbar (if horizontal).
82
+ orientation === "vertical" ? "overflow-y-auto" : "flex p-1 gap-1 items-stretch justify-start overflow-x-auto",
83
+ classNames
84
+ )
85
+ }, children);
86
+ }
87
+ TabsTablist.displayName = "Tabs.Tablist";
88
+ function TabsBackButton({ onClick, classNames, ...props }) {
89
+ const { setActivePart } = useTabsContext("TabsBackButton");
90
+ const handleClick = useCallback((event) => {
91
+ setActivePart("list");
92
+ return onClick?.(event);
93
+ }, [
94
+ setActivePart,
95
+ onClick
96
+ ]);
97
+ return /* @__PURE__ */ React.createElement(Button, {
98
+ ...props,
99
+ classNames: [
100
+ "@md:hidden text-start",
101
+ classNames
102
+ ],
103
+ onClick: handleClick
104
+ });
105
+ }
106
+ TabsBackButton.displayName = "Tabs.BackButton";
107
+ function TabsTabGroupHeading({ children, classNames, ...props }) {
108
+ return /* @__PURE__ */ React.createElement("h2", {
109
+ ...props,
110
+ className: mx("my-1 px-2 text-sm text-un-accent", classNames)
111
+ }, children);
112
+ }
113
+ TabsTabGroupHeading.displayName = "Tabs.TabGroupHeading";
114
+ function TabsTab({ value, classNames, children, onClick, ...props }) {
115
+ const { setActivePart, orientation, value: contextValue, attendableId } = useTabsContext("TabsTab");
116
+ const { hasAttention } = useAttention(attendableId);
117
+ const handleClick = useCallback(
118
+ // NOTE: This handler is only called if the tab is *already active*.
119
+ (event) => {
181
120
  setActivePart("panel");
182
121
  onClick?.(event);
183
- }, [
122
+ },
123
+ [
184
124
  setActivePart,
185
125
  onClick
186
- ]);
187
- return /* @__PURE__ */ React.createElement(TabsPrimitive.Trigger, {
188
- value,
189
- asChild: true
190
- }, /* @__PURE__ */ React.createElement(IconButton, {
191
- density: "fine",
192
- variant: orientation === "horizontal" && contextValue === value ? hasAttention ? "primary" : "default" : "ghost",
193
- ...props,
194
- onClick: handleClick,
195
- classNames: [
196
- orientation === "vertical" && "justify-start text-start is-full",
197
- orientation === "vertical" && ghostSelectedContainerMd,
198
- classNames
199
- ]
200
- }));
201
- } finally {
202
- _effect.f();
203
- }
204
- };
205
- var TabsTabpanel = ({ classNames, children, ...props }) => {
206
- var _effect = _useSignals();
207
- try {
208
- return /* @__PURE__ */ React.createElement(TabsPrimitive.Content, {
209
- ...props,
210
- className: mx("dx-focus-ring-inset-over-all", classNames)
211
- }, children);
212
- } finally {
213
- _effect.f();
214
- }
215
- };
126
+ ]
127
+ );
128
+ return /* @__PURE__ */ React.createElement(TabsPrimitive.Trigger, {
129
+ value,
130
+ asChild: true
131
+ }, /* @__PURE__ */ React.createElement(Button, {
132
+ ...props,
133
+ variant: orientation === "horizontal" && contextValue === value ? hasAttention ? "primary" : "default" : "ghost",
134
+ classNames: [
135
+ orientation === "vertical" && "block justify-start text-start w-full",
136
+ orientation === "vertical" && "dx-selected",
137
+ classNames
138
+ ],
139
+ onClick: handleClick
140
+ }, children));
141
+ }
142
+ TabsTab.displayName = "Tabs.Tab";
143
+ function TabsIconTab({ value, classNames, onClick, ...props }) {
144
+ const { setActivePart, orientation, value: contextValue, attendableId } = useTabsContext("TabsTab");
145
+ const { hasAttention } = useAttention(attendableId);
146
+ const handleClick = useCallback((event) => {
147
+ setActivePart("panel");
148
+ onClick?.(event);
149
+ }, [
150
+ setActivePart,
151
+ onClick
152
+ ]);
153
+ return /* @__PURE__ */ React.createElement(TabsPrimitive.Trigger, {
154
+ value,
155
+ asChild: true
156
+ }, /* @__PURE__ */ React.createElement(IconButton, {
157
+ ...props,
158
+ variant: orientation === "horizontal" && contextValue === value ? hasAttention ? "primary" : "default" : "ghost",
159
+ classNames: [
160
+ orientation === "vertical" && "justify-start text-start w-full",
161
+ orientation === "vertical" && "dx-selected",
162
+ classNames
163
+ ],
164
+ onClick: handleClick
165
+ }));
166
+ }
167
+ TabsIconTab.displayName = "Tabs.IconTab";
168
+ function TabsPanel({ classNames, children, ...props }) {
169
+ const { value: contextValue } = useTabsContext("TabsTab");
170
+ return /* @__PURE__ */ React.createElement(Activity, {
171
+ mode: contextValue === props.value ? "visible" : "hidden"
172
+ }, /* @__PURE__ */ React.createElement(TabsPrimitive.Content, {
173
+ ...props,
174
+ className: mx("p-0! dx-focus-ring-inset-over-all", classNames)
175
+ }, children));
176
+ }
177
+ TabsPanel.displayName = "Tabs.Panel";
216
178
  var Tabs = {
217
179
  Root: TabsRoot,
218
180
  Tablist: TabsTablist,
@@ -220,7 +182,7 @@ var Tabs = {
220
182
  IconTab: TabsIconTab,
221
183
  TabPrimitive: TabsPrimitive.Trigger,
222
184
  TabGroupHeading: TabsTabGroupHeading,
223
- Tabpanel: TabsTabpanel,
185
+ Panel: TabsPanel,
224
186
  BackButton: TabsBackButton,
225
187
  Viewport: TabsViewport
226
188
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/Tabs.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useArrowNavigationGroup, useFocusFinders, useFocusableGroup } from '@fluentui/react-tabster';\nimport { createContext } from '@radix-ui/react-context';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { type ComponentPropsWithoutRef, type MouseEvent, useCallback, useLayoutEffect, useRef } from 'react';\n\nimport { Button, type ButtonProps, IconButton, type IconButtonProps, type ThemedClassName } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { ghostSelectedContainerMd, mx } from '@dxos/react-ui-theme';\n\ntype TabsActivePart = 'list' | 'panel';\n\nconst TABS_NAME = 'Tabs';\n\ntype TabsContextValue = {\n activePart: TabsActivePart;\n setActivePart: (nextActivePart: TabsActivePart) => void;\n attendableId?: string;\n verticalVariant?: 'stateful' | 'stateless';\n} & Pick<TabsPrimitive.TabsProps, 'orientation' | 'value'>;\n\nconst [TabsContextProvider, useTabsContext] = createContext<TabsContextValue>(TABS_NAME, {\n activePart: 'list',\n setActivePart: () => {},\n orientation: 'vertical',\n});\n\ntype TabsRootProps = ThemedClassName<TabsPrimitive.TabsProps> &\n Partial<Pick<TabsContextValue, 'activePart' | 'verticalVariant' | 'attendableId'>> &\n Partial<{\n onActivePartChange: (nextActivePart: TabsActivePart) => void;\n defaultActivePart: TabsActivePart;\n }>;\n\nconst TabsRoot = ({\n children,\n classNames,\n activePart: propsActivePart,\n onActivePartChange,\n defaultActivePart,\n value: propsValue,\n onValueChange,\n defaultValue,\n orientation = 'vertical',\n activationMode = 'manual',\n verticalVariant = 'stateful',\n attendableId,\n ...props\n}: TabsRootProps) => {\n // TODO(thure): Without these, we get Groupper/Mover `API used before initialization`, but why?\n const _1 = useArrowNavigationGroup();\n const _2 = useFocusableGroup();\n const [activePart = 'list', setActivePart] = useControllableState({\n prop: propsActivePart,\n onChange: onActivePartChange,\n defaultProp: defaultActivePart,\n });\n\n const [value, setValue] = useControllableState({\n prop: propsValue,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n const handleValueChange = useCallback(\n (nextValue: string) => {\n setActivePart('panel');\n setValue(nextValue);\n },\n [value],\n );\n\n const { findFirstFocusable } = useFocusFinders();\n const tabsRoot = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (tabsRoot.current) {\n findFirstFocusable(tabsRoot.current)?.focus();\n }\n }, [activePart]);\n\n return (\n <TabsContextProvider\n orientation={orientation}\n activePart={activePart}\n setActivePart={setActivePart}\n value={value}\n attendableId={attendableId}\n verticalVariant={verticalVariant}\n >\n <TabsPrimitive.Root\n activationMode={activationMode}\n data-active={activePart}\n orientation={orientation}\n {...props}\n value={value}\n onValueChange={handleValueChange}\n className={mx(\n 'overflow-hidden',\n orientation === 'vertical' &&\n verticalVariant === 'stateful' &&\n '[&[data-active=list]_[role=tabpanel]]:invisible @md:[&[data-active=list]_[role=tabpanel]]:visible',\n classNames,\n )}\n ref={tabsRoot}\n >\n {children}\n </TabsPrimitive.Root>\n </TabsContextProvider>\n );\n};\n\ntype TabsViewportProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;\n\nconst TabsViewport = ({ classNames, children, ...props }: TabsViewportProps) => {\n const { orientation, activePart, verticalVariant } = useTabsContext('TabsViewport');\n return (\n <div\n role='none'\n {...props}\n data-active={activePart}\n className={mx(\n orientation === 'vertical' &&\n verticalVariant === 'stateful' && [\n 'grid is-[200%] grid-cols-2 data-[active=panel]:mis-[-100%]',\n '@md:is-auto @md:data-[active=panel]:mis-0 @md:grid-cols-[minmax(min-content,1fr)_3fr] @md:gap-1',\n ],\n classNames,\n )}\n >\n {children}\n </div>\n );\n};\n\ntype TabsTablistProps = ThemedClassName<TabsPrimitive.TabsListProps>;\n\nconst TabsTablist = ({ children, classNames, ...props }: TabsTablistProps) => {\n const { orientation, verticalVariant } = useTabsContext('TabsTablist');\n return (\n <TabsPrimitive.List\n {...props}\n data-arrow-keys={orientation === 'vertical' ? 'up down' : 'left right'}\n className={mx(\n 'max-bs-full is-full',\n // NOTE: Padding should be common to Toolbar.\n orientation === 'vertical' ? 'overflow-y-auto' : 'flex items-stretch justify-start overflow-x-auto p-1 gap-1',\n orientation === 'vertical' && verticalVariant === 'stateful' && 'place-self-start p-1',\n classNames,\n )}\n >\n {children}\n </TabsPrimitive.List>\n );\n};\n\nconst TabsBackButton = ({ onClick, classNames, ...props }: ButtonProps) => {\n const { setActivePart } = useTabsContext('TabsBackButton');\n const handleClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n setActivePart('list');\n return onClick?.(event);\n },\n [onClick, setActivePart],\n );\n\n return <Button {...props} classNames={['is-full text-start @md:hidden mbe-2', classNames]} onClick={handleClick} />;\n};\n\ntype TabsTabGroupHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'h2'>>;\n\nconst TabsTabGroupHeading = ({ children, classNames, ...props }: ThemedClassName<TabsTabGroupHeadingProps>) => {\n return (\n <h2 {...props} className={mx('mlb-1 pli-2 text-sm text-unAccent', classNames)}>\n {children}\n </h2>\n );\n};\n\ntype TabsTabProps = ButtonProps & Pick<TabsPrimitive.TabsTriggerProps, 'value'>;\n\nconst TabsTab = ({ value, classNames, children, onClick, ...props }: TabsTabProps) => {\n const { setActivePart, orientation, value: contextValue, attendableId } = useTabsContext('TabsTab');\n const { hasAttention } = useAttention(attendableId);\n\n const handleClick = useCallback(\n // NOTE: This handler is only called if the tab is *already active*.\n (event: MouseEvent<HTMLButtonElement>) => {\n setActivePart('panel');\n onClick?.(event);\n },\n [setActivePart, onClick],\n );\n\n return (\n <TabsPrimitive.Trigger value={value} asChild>\n <Button\n density='fine'\n variant={\n orientation === 'horizontal' && contextValue === value ? (hasAttention ? 'primary' : 'default') : 'ghost'\n }\n {...props}\n onClick={handleClick}\n classNames={[\n orientation === 'vertical' && 'block justify-start text-start is-full',\n orientation === 'vertical' && ghostSelectedContainerMd,\n classNames,\n ]}\n >\n {children}\n </Button>\n </TabsPrimitive.Trigger>\n );\n};\n\ntype TabsIconTabProps = IconButtonProps & Pick<TabsPrimitive.TabsTriggerProps, 'value'>;\n\nconst TabsIconTab = ({ value, classNames, onClick, ...props }: TabsIconTabProps) => {\n const { setActivePart, orientation, value: contextValue, attendableId } = useTabsContext('TabsTab');\n const { hasAttention } = useAttention(attendableId);\n\n // NOTE: This handler is only called if the tab is *already active*.\n const handleClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n setActivePart('panel');\n onClick?.(event);\n },\n [setActivePart, onClick],\n );\n\n return (\n <TabsPrimitive.Trigger value={value} asChild>\n <IconButton\n density='fine'\n variant={\n orientation === 'horizontal' && contextValue === value ? (hasAttention ? 'primary' : 'default') : 'ghost'\n }\n {...props}\n onClick={handleClick}\n classNames={[\n orientation === 'vertical' && 'justify-start text-start is-full',\n orientation === 'vertical' && ghostSelectedContainerMd,\n classNames,\n ]}\n />\n </TabsPrimitive.Trigger>\n );\n};\n\ntype TabsTabpanelProps = ThemedClassName<TabsPrimitive.TabsContentProps>;\n\nconst TabsTabpanel = ({ classNames, children, ...props }: TabsTabpanelProps) => {\n return (\n <TabsPrimitive.Content {...props} className={mx('dx-focus-ring-inset-over-all', classNames)}>\n {children}\n </TabsPrimitive.Content>\n );\n};\n\ntype TabsTabPrimitiveProps = TabsPrimitive.TabsTriggerProps;\n\nexport const Tabs = {\n Root: TabsRoot,\n Tablist: TabsTablist,\n Tab: TabsTab,\n IconTab: TabsIconTab,\n TabPrimitive: TabsPrimitive.Trigger,\n TabGroupHeading: TabsTabGroupHeading,\n Tabpanel: TabsTabpanel,\n BackButton: TabsBackButton,\n Viewport: TabsViewport,\n};\n\nexport type {\n TabsActivePart,\n TabsRootProps,\n TabsTablistProps,\n TabsTabProps,\n TabsTabPrimitiveProps,\n TabsTabGroupHeadingProps,\n TabsTabpanelProps,\n TabsViewportProps,\n};\n"],
5
- "mappings": ";;;;AAIA,SAASA,yBAAyBC,iBAAiBC,yBAAyB;AAC5E,SAASC,qBAAqB;AAC9B,YAAYC,mBAAmB;AAC/B,SAASC,4BAA4B;AACrC,OAAOC,SAAyDC,aAAaC,iBAAiBC,cAAc;AAE5G,SAASC,QAA0BC,kBAA8D;AACjG,SAASC,oBAAoB;AAC7B,SAASC,0BAA0BC,UAAU;AAI7C,IAAMC,YAAY;AASlB,IAAM,CAACC,qBAAqBC,cAAAA,IAAkBC,cAAgCH,WAAW;EACvFI,YAAY;EACZC,eAAe,MAAA;EAAO;EACtBC,aAAa;AACf,CAAA;AASA,IAAMC,WAAW,CAAC,EAChBC,UACAC,YACAL,YAAYM,iBACZC,oBACAC,mBACAC,OAAOC,YACPC,eACAC,cACAV,cAAc,YACdW,iBAAiB,UACjBC,kBAAkB,YAClBC,cACA,GAAGC,MAAAA,MACW;;;AAEd,UAAMC,KAAKC,wBAAAA;AACX,UAAMC,KAAKC,kBAAAA;AACX,UAAM,CAACpB,aAAa,QAAQC,aAAAA,IAAiBoB,qBAAqB;MAChEC,MAAMhB;MACNiB,UAAUhB;MACViB,aAAahB;IACf,CAAA;AAEA,UAAM,CAACC,OAAOgB,QAAAA,IAAYJ,qBAAqB;MAC7CC,MAAMZ;MACNa,UAAUZ;MACVa,aAAaZ;IACf,CAAA;AAEA,UAAMc,oBAAoBC,YACxB,CAACC,cAAAA;AACC3B,oBAAc,OAAA;AACdwB,eAASG,SAAAA;IACX,GACA;MAACnB;KAAM;AAGT,UAAM,EAAEoB,mBAAkB,IAAKC,gBAAAA;AAC/B,UAAMC,WAAWC,OAA8B,IAAA;AAE/CC,oBAAgB,MAAA;AACd,UAAIF,SAASG,SAAS;AACpBL,2BAAmBE,SAASG,OAAO,GAAGC,MAAAA;MACxC;IACF,GAAG;MAACnC;KAAW;AAEf,WACE,sBAAA,cAACH,qBAAAA;MACCK;MACAF;MACAC;MACAQ;MACAM;MACAD;OAEA,sBAAA,cAAesB,oBAAI;MACjBvB;MACAwB,eAAarC;MACbE;MACC,GAAGc;MACJP;MACAE,eAAee;MACfY,WAAWC,GACT,mBACArC,gBAAgB,cACdY,oBAAoB,cACpB,qGACFT,UAAAA;MAEFmC,KAAKT;OAEJ3B,QAAAA,CAAAA;;;;AAIT;AAIA,IAAMqC,eAAe,CAAC,EAAEpC,YAAYD,UAAU,GAAGY,MAAAA,MAA0B;;;AACzE,UAAM,EAAEd,aAAaF,YAAYc,gBAAe,IAAKhB,eAAe,cAAA;AACpE,WACE,sBAAA,cAAC4C,OAAAA;MACCC,MAAK;MACJ,GAAG3B;MACJqB,eAAarC;MACbsC,WAAWC,GACTrC,gBAAgB,cACdY,oBAAoB,cAAc;QAChC;QACA;SAEJT,UAAAA;OAGDD,QAAAA;;;;AAGP;AAIA,IAAMwC,cAAc,CAAC,EAAExC,UAAUC,YAAY,GAAGW,MAAAA,MAAyB;;;AACvE,UAAM,EAAEd,aAAaY,gBAAe,IAAKhB,eAAe,aAAA;AACxD,WACE,sBAAA,cAAe+C,oBAAI;MAChB,GAAG7B;MACJ8B,mBAAiB5C,gBAAgB,aAAa,YAAY;MAC1DoC,WAAWC;QACT;;QAEArC,gBAAgB,aAAa,oBAAoB;QACjDA,gBAAgB,cAAcY,oBAAoB,cAAc;QAChET;MAAAA;OAGDD,QAAAA;;;;AAGP;AAEA,IAAM2C,iBAAiB,CAAC,EAAEC,SAAS3C,YAAY,GAAGW,MAAAA,MAAoB;;;AACpE,UAAM,EAAEf,cAAa,IAAKH,eAAe,gBAAA;AACzC,UAAMmD,cAActB,YAClB,CAACuB,UAAAA;AACCjD,oBAAc,MAAA;AACd,aAAO+C,UAAUE,KAAAA;IACnB,GACA;MAACF;MAAS/C;KAAc;AAG1B,WAAO,sBAAA,cAACkD,QAAAA;MAAQ,GAAGnC;MAAOX,YAAY;QAAC;QAAuCA;;MAAa2C,SAASC;;;;;AACtG;AAIA,IAAMG,sBAAsB,CAAC,EAAEhD,UAAUC,YAAY,GAAGW,MAAAA,MAAkD;;;AACxG,WACE,sBAAA,cAACqC,MAAAA;MAAI,GAAGrC;MAAOsB,WAAWC,GAAG,qCAAqClC,UAAAA;OAC/DD,QAAAA;;;;AAGP;AAIA,IAAMkD,UAAU,CAAC,EAAE7C,OAAOJ,YAAYD,UAAU4C,SAAS,GAAGhC,MAAAA,MAAqB;;;AAC/E,UAAM,EAAEf,eAAeC,aAAaO,OAAO8C,cAAcxC,aAAY,IAAKjB,eAAe,SAAA;AACzF,UAAM,EAAE0D,aAAY,IAAKC,aAAa1C,YAAAA;AAEtC,UAAMkC,cAActB;;MAElB,CAACuB,UAAAA;AACCjD,sBAAc,OAAA;AACd+C,kBAAUE,KAAAA;MACZ;MACA;QAACjD;QAAe+C;;IAAQ;AAG1B,WACE,sBAAA,cAAeU,uBAAO;MAACjD;MAAckD,SAAAA;OACnC,sBAAA,cAACR,QAAAA;MACCS,SAAQ;MACRC,SACE3D,gBAAgB,gBAAgBqD,iBAAiB9C,QAAS+C,eAAe,YAAY,YAAa;MAEnG,GAAGxC;MACJgC,SAASC;MACT5C,YAAY;QACVH,gBAAgB,cAAc;QAC9BA,gBAAgB,cAAc4D;QAC9BzD;;OAGDD,QAAAA,CAAAA;;;;AAIT;AAIA,IAAM2D,cAAc,CAAC,EAAEtD,OAAOJ,YAAY2C,SAAS,GAAGhC,MAAAA,MAAyB;;;AAC7E,UAAM,EAAEf,eAAeC,aAAaO,OAAO8C,cAAcxC,aAAY,IAAKjB,eAAe,SAAA;AACzF,UAAM,EAAE0D,aAAY,IAAKC,aAAa1C,YAAAA;AAGtC,UAAMkC,cAActB,YAClB,CAACuB,UAAAA;AACCjD,oBAAc,OAAA;AACd+C,gBAAUE,KAAAA;IACZ,GACA;MAACjD;MAAe+C;KAAQ;AAG1B,WACE,sBAAA,cAAeU,uBAAO;MAACjD;MAAckD,SAAAA;OACnC,sBAAA,cAACK,YAAAA;MACCJ,SAAQ;MACRC,SACE3D,gBAAgB,gBAAgBqD,iBAAiB9C,QAAS+C,eAAe,YAAY,YAAa;MAEnG,GAAGxC;MACJgC,SAASC;MACT5C,YAAY;QACVH,gBAAgB,cAAc;QAC9BA,gBAAgB,cAAc4D;QAC9BzD;;;;;;AAKV;AAIA,IAAM4D,eAAe,CAAC,EAAE5D,YAAYD,UAAU,GAAGY,MAAAA,MAA0B;;;AACzE,WACE,sBAAA,cAAekD,uBAAO;MAAE,GAAGlD;MAAOsB,WAAWC,GAAG,gCAAgClC,UAAAA;OAC7ED,QAAAA;;;;AAGP;AAIO,IAAM+D,OAAO;EAClB/B,MAAMjC;EACNiE,SAASxB;EACTyB,KAAKf;EACLgB,SAASP;EACTQ,cAA4Bb;EAC5Bc,iBAAiBpB;EACjBqB,UAAUR;EACVS,YAAY3B;EACZ4B,UAAUlC;AACZ;",
6
- "names": ["useArrowNavigationGroup", "useFocusFinders", "useFocusableGroup", "createContext", "TabsPrimitive", "useControllableState", "React", "useCallback", "useLayoutEffect", "useRef", "Button", "IconButton", "useAttention", "ghostSelectedContainerMd", "mx", "TABS_NAME", "TabsContextProvider", "useTabsContext", "createContext", "activePart", "setActivePart", "orientation", "TabsRoot", "children", "classNames", "propsActivePart", "onActivePartChange", "defaultActivePart", "value", "propsValue", "onValueChange", "defaultValue", "activationMode", "verticalVariant", "attendableId", "props", "_1", "useArrowNavigationGroup", "_2", "useFocusableGroup", "useControllableState", "prop", "onChange", "defaultProp", "setValue", "handleValueChange", "useCallback", "nextValue", "findFirstFocusable", "useFocusFinders", "tabsRoot", "useRef", "useLayoutEffect", "current", "focus", "Root", "data-active", "className", "mx", "ref", "TabsViewport", "div", "role", "TabsTablist", "List", "data-arrow-keys", "TabsBackButton", "onClick", "handleClick", "event", "Button", "TabsTabGroupHeading", "h2", "TabsTab", "contextValue", "hasAttention", "useAttention", "Trigger", "asChild", "density", "variant", "ghostSelectedContainerMd", "TabsIconTab", "IconButton", "TabsTabpanel", "Content", "Tabs", "Tablist", "Tab", "IconTab", "TabPrimitive", "TabGroupHeading", "Tabpanel", "BackButton", "Viewport"]
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useArrowNavigationGroup, useFocusFinders, useFocusableGroup } from '@fluentui/react-tabster';\nimport { createContext } from '@radix-ui/react-context';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, {\n Activity,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n forwardRef,\n useCallback,\n useLayoutEffect,\n} from 'react';\n\nimport {\n Button,\n type ButtonProps,\n IconButton,\n type IconButtonProps,\n type ThemedClassName,\n useForwardedRef,\n} from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/ui-theme';\n\ntype TabsActivePart = 'list' | 'panel';\n\nconst TABS_NAME = 'Tabs';\n\ntype TabsContextValue = {\n activePart: TabsActivePart;\n setActivePart: (nextActivePart: TabsActivePart) => void;\n attendableId?: string;\n} & Pick<TabsPrimitive.TabsProps, 'orientation' | 'value'>;\n\nconst [TabsContextProvider, useTabsContext] = createContext<TabsContextValue>(TABS_NAME, {\n orientation: 'vertical',\n activePart: 'list',\n setActivePart: () => {},\n});\n\ntype TabsRootProps = ThemedClassName<TabsPrimitive.TabsProps> &\n Partial<\n Pick<TabsContextValue, 'activePart' | 'attendableId'> & {\n onActivePartChange: (nextActivePart: TabsActivePart) => void;\n defaultActivePart: TabsActivePart;\n }\n >;\n\nconst TabsRoot = forwardRef<HTMLDivElement, TabsRootProps>(\n (\n {\n children,\n classNames,\n activePart: propsActivePart,\n onActivePartChange,\n defaultActivePart,\n value: propsValue,\n onValueChange,\n defaultValue,\n orientation = 'vertical',\n activationMode = 'manual',\n attendableId,\n ...props\n },\n forwardedRef,\n ) => {\n // const tabsRoot = useRef<HTMLDivElement | null>(null);\n const tabsRoot = useForwardedRef(forwardedRef);\n\n // TODO(thure): Without these, we get Groupper/Mover `API used before initialization`, but why?\n const _1 = useArrowNavigationGroup();\n const _2 = useFocusableGroup();\n const [activePart = 'list', setActivePart] = useControllableState({\n prop: propsActivePart,\n onChange: onActivePartChange,\n defaultProp: defaultActivePart,\n });\n\n const [value, setValue] = useControllableState({\n prop: propsValue,\n onChange: onValueChange,\n defaultProp: defaultValue,\n });\n\n const handleValueChange = useCallback(\n (nextValue: string) => {\n setActivePart('panel');\n setValue(nextValue);\n },\n [value],\n );\n\n const { findFirstFocusable } = useFocusFinders();\n\n useLayoutEffect(() => {\n if (tabsRoot.current) {\n findFirstFocusable(tabsRoot.current)?.focus();\n }\n }, [activePart]);\n\n return (\n <TabsContextProvider\n orientation={orientation}\n activePart={activePart}\n setActivePart={setActivePart}\n value={value}\n attendableId={attendableId}\n >\n <TabsPrimitive.Root\n {...props}\n className={mx('overflow-hidden', classNames)}\n orientation={orientation}\n activationMode={activationMode}\n data-active={activePart}\n value={value}\n onValueChange={handleValueChange}\n ref={tabsRoot}\n >\n {children}\n </TabsPrimitive.Root>\n </TabsContextProvider>\n );\n },\n);\n\nTabsRoot.displayName = 'Tabs.Root';\n\ntype TabsViewportProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;\n\nfunction TabsViewport({ classNames, children, ...props }: TabsViewportProps) {\n const { activePart } = useTabsContext('TabsViewport');\n return (\n <div {...props} data-active={activePart} className={mx(classNames)}>\n {children}\n </div>\n );\n}\n\nTabsViewport.displayName = 'Tabs.Viewport';\n\ntype TabsTablistProps = ThemedClassName<TabsPrimitive.TabsListProps>;\n\nfunction TabsTablist({ children, classNames, ...props }: TabsTablistProps) {\n const { orientation } = useTabsContext('TabsTablist');\n return (\n <TabsPrimitive.List\n {...props}\n data-arrow-keys={orientation === 'vertical' ? 'up down' : 'left right'}\n className={mx(\n 'max-h-full w-full',\n // TODO(burdon): Should be embeddable inside Toolbar (if horizontal).\n orientation === 'vertical' ? 'overflow-y-auto' : 'flex p-1 gap-1 items-stretch justify-start overflow-x-auto',\n classNames,\n )}\n >\n {children}\n </TabsPrimitive.List>\n );\n}\n\nTabsTablist.displayName = 'Tabs.Tablist';\n\nfunction TabsBackButton({ onClick, classNames, ...props }: ButtonProps) {\n const { setActivePart } = useTabsContext('TabsBackButton');\n const handleClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n setActivePart('list');\n return onClick?.(event);\n },\n [setActivePart, onClick],\n );\n\n return <Button {...props} classNames={['@md:hidden text-start', classNames]} onClick={handleClick} />;\n}\n\nTabsBackButton.displayName = 'Tabs.BackButton';\n\ntype TabsTabGroupHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'h2'>>;\n\nfunction TabsTabGroupHeading({ children, classNames, ...props }: ThemedClassName<TabsTabGroupHeadingProps>) {\n return (\n <h2 {...props} className={mx('my-1 px-2 text-sm text-un-accent', classNames)}>\n {children}\n </h2>\n );\n}\n\nTabsTabGroupHeading.displayName = 'Tabs.TabGroupHeading';\n\ntype TabsTabProps = ButtonProps & Pick<TabsPrimitive.TabsTriggerProps, 'value'>;\n\nfunction TabsTab({ value, classNames, children, onClick, ...props }: TabsTabProps) {\n const { setActivePart, orientation, value: contextValue, attendableId } = useTabsContext('TabsTab');\n const { hasAttention } = useAttention(attendableId);\n\n const handleClick = useCallback(\n // NOTE: This handler is only called if the tab is *already active*.\n (event: MouseEvent<HTMLButtonElement>) => {\n setActivePart('panel');\n onClick?.(event);\n },\n [setActivePart, onClick],\n );\n\n return (\n <TabsPrimitive.Trigger value={value} asChild>\n <Button\n {...props}\n variant={\n orientation === 'horizontal' && contextValue === value ? (hasAttention ? 'primary' : 'default') : 'ghost'\n }\n classNames={[\n orientation === 'vertical' && 'block justify-start text-start w-full',\n orientation === 'vertical' && 'dx-selected',\n classNames,\n ]}\n onClick={handleClick}\n >\n {children}\n </Button>\n </TabsPrimitive.Trigger>\n );\n}\n\nTabsTab.displayName = 'Tabs.Tab';\n\ntype TabsIconTabProps = IconButtonProps & Pick<TabsPrimitive.TabsTriggerProps, 'value'>;\n\nfunction TabsIconTab({ value, classNames, onClick, ...props }: TabsIconTabProps) {\n const { setActivePart, orientation, value: contextValue, attendableId } = useTabsContext('TabsTab');\n const { hasAttention } = useAttention(attendableId);\n\n // NOTE: This handler is only called if the tab is *already active*.\n const handleClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n setActivePart('panel');\n onClick?.(event);\n },\n [setActivePart, onClick],\n );\n\n return (\n <TabsPrimitive.Trigger value={value} asChild>\n <IconButton\n {...props}\n variant={\n orientation === 'horizontal' && contextValue === value ? (hasAttention ? 'primary' : 'default') : 'ghost'\n }\n classNames={[\n orientation === 'vertical' && 'justify-start text-start w-full',\n orientation === 'vertical' && 'dx-selected',\n classNames,\n ]}\n onClick={handleClick}\n />\n </TabsPrimitive.Trigger>\n );\n}\n\nTabsIconTab.displayName = 'Tabs.IconTab';\n\ntype TabsPanelProps = ThemedClassName<TabsPrimitive.TabsContentProps>;\n\nfunction TabsPanel({ classNames, children, ...props }: TabsPanelProps) {\n const { value: contextValue } = useTabsContext('TabsTab');\n return (\n <Activity mode={contextValue === props.value ? 'visible' : 'hidden'}>\n <TabsPrimitive.Content {...props} className={mx('p-0! dx-focus-ring-inset-over-all', classNames)}>\n {children}\n </TabsPrimitive.Content>\n </Activity>\n );\n}\n\nTabsPanel.displayName = 'Tabs.Panel';\n\ntype TabsTabPrimitiveProps = TabsPrimitive.TabsTriggerProps;\n\nexport const Tabs = {\n Root: TabsRoot,\n Tablist: TabsTablist,\n Tab: TabsTab,\n IconTab: TabsIconTab,\n TabPrimitive: TabsPrimitive.Trigger,\n TabGroupHeading: TabsTabGroupHeading,\n Panel: TabsPanel,\n BackButton: TabsBackButton,\n Viewport: TabsViewport,\n};\n\nexport type {\n TabsActivePart,\n TabsRootProps,\n TabsTablistProps,\n TabsTabProps,\n TabsTabPrimitiveProps,\n TabsTabGroupHeadingProps,\n TabsPanelProps,\n TabsViewportProps,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["useArrowNavigationGroup", "useFocusFinders", "useFocusableGroup", "createContext", "TabsPrimitive", "useControllableState", "React", "Activity", "forwardRef", "useCallback", "useLayoutEffect", "Button", "IconButton", "useForwardedRef", "useAttention", "mx", "TABS_NAME", "TabsContextProvider", "useTabsContext", "orientation", "activePart", "setActivePart", "TabsRoot", "children", "classNames", "propsActivePart", "onActivePartChange", "defaultActivePart", "value", "propsValue", "onValueChange", "defaultValue", "activationMode", "attendableId", "props", "forwardedRef", "tabsRoot", "_1", "_2", "prop", "onChange", "defaultProp", "setValue", "handleValueChange", "nextValue", "findFirstFocusable", "current", "focus", "Root", "className", "data-active", "ref", "displayName", "TabsViewport", "div", "TabsTablist", "List", "data-arrow-keys", "TabsBackButton", "onClick", "handleClick", "event", "TabsTabGroupHeading", "h2", "TabsTab", "contextValue", "hasAttention", "Trigger", "asChild", "variant", "TabsIconTab", "TabsPanel", "mode", "Content", "Tabs", "Tablist", "Tab", "IconTab", "TabPrimitive", "TabGroupHeading", "Panel", "BackButton", "Viewport"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/Tabs.tsx":{"bytes":27634,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-tabs","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":444,"imports":[{"path":"src/Tabs.tsx","kind":"import-statement","original":"./Tabs"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14257},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-tabs","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["Tabs"],"entryPoint":"src/index.ts","inputs":{"src/Tabs.tsx":{"bytesInOutput":7553},"src/index.ts":{"bytesInOutput":0}},"bytes":7716}}}
1
+ {"inputs":{"src/Tabs.tsx":{"bytes":26019,"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-tabs","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":368,"imports":[{"path":"src/Tabs.tsx","kind":"import-statement","original":"./Tabs"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":13924},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"@radix-ui/react-tabs","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"exports":["Tabs"],"entryPoint":"src/index.ts","inputs":{"src/Tabs.tsx":{"bytesInOutput":6480},"src/index.ts":{"bytesInOutput":0}},"bytes":6643}}}
@@ -6,29 +6,61 @@ type TabsContextValue = {
6
6
  activePart: TabsActivePart;
7
7
  setActivePart: (nextActivePart: TabsActivePart) => void;
8
8
  attendableId?: string;
9
- verticalVariant?: 'stateful' | 'stateless';
10
9
  } & Pick<TabsPrimitive.TabsProps, 'orientation' | 'value'>;
11
- type TabsRootProps = ThemedClassName<TabsPrimitive.TabsProps> & Partial<Pick<TabsContextValue, 'activePart' | 'verticalVariant' | 'attendableId'>> & Partial<{
10
+ type TabsRootProps = ThemedClassName<TabsPrimitive.TabsProps> & Partial<Pick<TabsContextValue, 'activePart' | 'attendableId'> & {
12
11
  onActivePartChange: (nextActivePart: TabsActivePart) => void;
13
12
  defaultActivePart: TabsActivePart;
14
13
  }>;
15
14
  type TabsViewportProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;
15
+ declare function TabsViewport({ classNames, children, ...props }: TabsViewportProps): React.JSX.Element;
16
+ declare namespace TabsViewport {
17
+ var displayName: string;
18
+ }
16
19
  type TabsTablistProps = ThemedClassName<TabsPrimitive.TabsListProps>;
20
+ declare function TabsTablist({ children, classNames, ...props }: TabsTablistProps): React.JSX.Element;
21
+ declare namespace TabsTablist {
22
+ var displayName: string;
23
+ }
24
+ declare function TabsBackButton({ onClick, classNames, ...props }: ButtonProps): React.JSX.Element;
25
+ declare namespace TabsBackButton {
26
+ var displayName: string;
27
+ }
17
28
  type TabsTabGroupHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'h2'>>;
29
+ declare function TabsTabGroupHeading({ children, classNames, ...props }: ThemedClassName<TabsTabGroupHeadingProps>): React.JSX.Element;
30
+ declare namespace TabsTabGroupHeading {
31
+ var displayName: string;
32
+ }
18
33
  type TabsTabProps = ButtonProps & Pick<TabsPrimitive.TabsTriggerProps, 'value'>;
34
+ declare function TabsTab({ value, classNames, children, onClick, ...props }: TabsTabProps): React.JSX.Element;
35
+ declare namespace TabsTab {
36
+ var displayName: string;
37
+ }
19
38
  type TabsIconTabProps = IconButtonProps & Pick<TabsPrimitive.TabsTriggerProps, 'value'>;
20
- type TabsTabpanelProps = ThemedClassName<TabsPrimitive.TabsContentProps>;
39
+ declare function TabsIconTab({ value, classNames, onClick, ...props }: TabsIconTabProps): React.JSX.Element;
40
+ declare namespace TabsIconTab {
41
+ var displayName: string;
42
+ }
43
+ type TabsPanelProps = ThemedClassName<TabsPrimitive.TabsContentProps>;
44
+ declare function TabsPanel({ classNames, children, ...props }: TabsPanelProps): React.JSX.Element;
45
+ declare namespace TabsPanel {
46
+ var displayName: string;
47
+ }
21
48
  type TabsTabPrimitiveProps = TabsPrimitive.TabsTriggerProps;
22
49
  export declare const Tabs: {
23
- Root: ({ children, classNames, activePart: propsActivePart, onActivePartChange, defaultActivePart, value: propsValue, onValueChange, defaultValue, orientation, activationMode, verticalVariant, attendableId, ...props }: TabsRootProps) => React.JSX.Element;
24
- Tablist: ({ children, classNames, ...props }: TabsTablistProps) => React.JSX.Element;
25
- Tab: ({ value, classNames, children, onClick, ...props }: TabsTabProps) => React.JSX.Element;
26
- IconTab: ({ value, classNames, onClick, ...props }: TabsIconTabProps) => React.JSX.Element;
50
+ Root: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsProps, "className"> & {
51
+ classNames?: import("@dxos/ui-types").ClassNameValue;
52
+ } & Partial<Pick<TabsContextValue, "activePart" | "attendableId"> & {
53
+ onActivePartChange: (nextActivePart: TabsActivePart) => void;
54
+ defaultActivePart: TabsActivePart;
55
+ }> & React.RefAttributes<HTMLDivElement>>;
56
+ Tablist: typeof TabsTablist;
57
+ Tab: typeof TabsTab;
58
+ IconTab: typeof TabsIconTab;
27
59
  TabPrimitive: React.ForwardRefExoticComponent<TabsPrimitive.TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
28
- TabGroupHeading: ({ children, classNames, ...props }: ThemedClassName<TabsTabGroupHeadingProps>) => React.JSX.Element;
29
- Tabpanel: ({ classNames, children, ...props }: TabsTabpanelProps) => React.JSX.Element;
30
- BackButton: ({ onClick, classNames, ...props }: ButtonProps) => React.JSX.Element;
31
- Viewport: ({ classNames, children, ...props }: TabsViewportProps) => React.JSX.Element;
60
+ TabGroupHeading: typeof TabsTabGroupHeading;
61
+ Panel: typeof TabsPanel;
62
+ BackButton: typeof TabsBackButton;
63
+ Viewport: typeof TabsViewport;
32
64
  };
33
- export type { TabsActivePart, TabsRootProps, TabsTablistProps, TabsTabProps, TabsTabPrimitiveProps, TabsTabGroupHeadingProps, TabsTabpanelProps, TabsViewportProps, };
65
+ export type { TabsActivePart, TabsRootProps, TabsTablistProps, TabsTabProps, TabsTabPrimitiveProps, TabsTabGroupHeadingProps, TabsPanelProps, TabsViewportProps, };
34
66
  //# sourceMappingURL=Tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/Tabs.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,EAAE,KAAK,wBAAwB,EAAyD,MAAM,OAAO,CAAC;AAEpH,OAAO,EAAU,KAAK,WAAW,EAAc,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIlH,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAIvC,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,IAAI,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;CAC5C,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC;AAQ3D,KAAK,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,GAC3D,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,iBAAiB,GAAG,cAAc,CAAC,CAAC,GAClF,OAAO,CAAC;IACN,kBAAkB,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7D,iBAAiB,EAAE,cAAc,CAAC;CACnC,CAAC,CAAC;AAgFL,KAAK,iBAAiB,GAAG,eAAe,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;AAuB1E,KAAK,gBAAgB,GAAG,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AAkCrE,KAAK,wBAAwB,GAAG,eAAe,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;AAUhF,KAAK,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAoChF,KAAK,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAkCxF,KAAK,iBAAiB,GAAG,eAAe,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAUzE,KAAK,qBAAqB,GAAG,aAAa,CAAC,gBAAgB,CAAC;AAE5D,eAAO,MAAM,IAAI;+NArNd,aAAa;kDAyFyC,gBAAgB;8DA4CJ,YAAY;wDAoClB,gBAAgB;;0DA9Cd,eAAe,CAAC,wBAAwB,CAAC;mDAgFhD,iBAAiB;oDA/FhB,WAAW;mDA1CZ,iBAAiB;CA6J1E,CAAC;AAEF,YAAY,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAClB,CAAC"}
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/Tabs.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,EAEZ,KAAK,wBAAwB,EAK9B,MAAM,OAAO,CAAC;AAEf,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,eAAe,EACpB,KAAK,eAAe,EAErB,MAAM,gBAAgB,CAAC;AAIxB,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAIvC,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,IAAI,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC;AAQ3D,KAAK,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,GAC3D,OAAO,CACL,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,cAAc,CAAC,GAAG;IACtD,kBAAkB,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7D,iBAAiB,EAAE,cAAc,CAAC;CACnC,CACF,CAAC;AAiFJ,KAAK,iBAAiB,GAAG,eAAe,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;AAE1E,iBAAS,YAAY,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,qBAO1E;;;;AAID,KAAK,gBAAgB,GAAG,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AAErE,iBAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,qBAgBxE;;;;AAID,iBAAS,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,qBAWrE;;;;AAID,KAAK,wBAAwB,GAAG,eAAe,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhF,iBAAS,mBAAmB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,wBAAwB,CAAC,qBAMzG;;;;AAID,KAAK,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAEhF,iBAAS,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,qBA+BhF;;;;AAID,KAAK,gBAAgB,GAAG,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAExF,iBAAS,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,qBA6B9E;;;;AAID,KAAK,cAAc,GAAG,eAAe,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAEtE,iBAAS,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,qBASpE;;;;AAID,KAAK,qBAAqB,GAAG,aAAa,CAAC,gBAAgB,CAAC;AAE5D,eAAO,MAAM,IAAI;IACf,IAAI;;;4BA5OoB,CAAC,cAAc,EAAE,cAAc,KAAK,IAAI;2BACzC,cAAc;;IA4OrC,OAAO;IACP,GAAG;IACH,OAAO;IACP,YAAY;IACZ,eAAe;IACf,KAAK;IACL,UAAU;IACV,QAAQ;CACT,CAAC;AAEF,YAAY,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAClB,CAAC"}
@@ -1,13 +1,26 @@
1
1
  import { type StoryObj } from '@storybook/react-vite';
2
2
  import React from 'react';
3
- export declare const DefaultStory: () => React.JSX.Element;
3
+ import { TabsRootProps } from './Tabs';
4
4
  declare const meta: {
5
5
  title: string;
6
- component: ({ children, classNames, activePart: propsActivePart, onActivePartChange, defaultActivePart, value: propsValue, onValueChange, defaultValue, orientation, activationMode, verticalVariant, attendableId, ...props }: import("./Tabs").TabsRootProps) => React.JSX.Element;
7
- render: () => React.JSX.Element;
6
+ component: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-tabs").TabsProps, "className"> & {
7
+ classNames?: import("@dxos/ui-types").ClassNameValue;
8
+ } & Partial<Pick<{
9
+ activePart: import("./Tabs").TabsActivePart;
10
+ setActivePart: (nextActivePart: import("./Tabs").TabsActivePart) => void;
11
+ attendableId?: string;
12
+ } & Pick<import("@radix-ui/react-tabs").TabsProps, "orientation" | "value">, "activePart" | "attendableId"> & {
13
+ onActivePartChange: (nextActivePart: import("./Tabs").TabsActivePart) => void;
14
+ defaultActivePart: import("./Tabs").TabsActivePart;
15
+ }> & React.RefAttributes<HTMLDivElement>>;
16
+ render: ({ orientation }: TabsRootProps) => React.JSX.Element;
8
17
  decorators: import("@storybook/react").Decorator[];
18
+ parameters: {
19
+ layout: string;
20
+ };
9
21
  };
10
22
  export default meta;
11
23
  type Story = StoryObj<typeof meta>;
12
- export declare const Default: Story;
24
+ export declare const Horizontal: Story;
25
+ export declare const Vertical: Story;
13
26
  //# sourceMappingURL=Tabs.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.stories.d.ts","sourceRoot":"","sources":["../../../src/Tabs.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,eAAO,MAAM,YAAY,yBAiCxB,CAAC;AAUF,QAAA,MAAM,IAAI;;;;;CAK2B,CAAC;AAEtC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
1
+ {"version":3,"file":"Tabs.stories.d.ts","sourceRoot":"","sources":["../../../src/Tabs.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAQ,aAAa,EAAE,MAAM,QAAQ,CAAC;AAwC7C,QAAA,MAAM,IAAI;;;;;;;;;;;;8BApC6B,aAAa;;;QA0ChD,MAAM;;CAE2B,CAAC;eAEvB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAGnC,eAAO,MAAM,UAAU,EAAE,KAIxB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC"}