@hanzogui/tabs 2.0.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.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/StyledContext.cjs +31 -0
  3. package/dist/cjs/StyledContext.native.js +34 -0
  4. package/dist/cjs/StyledContext.native.js.map +1 -0
  5. package/dist/cjs/Tabs.cjs +81 -0
  6. package/dist/cjs/Tabs.native.js +84 -0
  7. package/dist/cjs/Tabs.native.js.map +1 -0
  8. package/dist/cjs/createTabs.cjs +262 -0
  9. package/dist/cjs/createTabs.native.js +280 -0
  10. package/dist/cjs/createTabs.native.js.map +1 -0
  11. package/dist/cjs/index.cjs +35 -0
  12. package/dist/cjs/index.native.js +38 -0
  13. package/dist/cjs/index.native.js.map +1 -0
  14. package/dist/esm/StyledContext.mjs +7 -0
  15. package/dist/esm/StyledContext.mjs.map +1 -0
  16. package/dist/esm/StyledContext.native.js +7 -0
  17. package/dist/esm/StyledContext.native.js.map +1 -0
  18. package/dist/esm/Tabs.mjs +56 -0
  19. package/dist/esm/Tabs.mjs.map +1 -0
  20. package/dist/esm/Tabs.native.js +56 -0
  21. package/dist/esm/Tabs.native.js.map +1 -0
  22. package/dist/esm/createTabs.mjs +228 -0
  23. package/dist/esm/createTabs.mjs.map +1 -0
  24. package/dist/esm/createTabs.native.js +243 -0
  25. package/dist/esm/createTabs.native.js.map +1 -0
  26. package/dist/esm/index.js +11 -0
  27. package/dist/esm/index.js.map +1 -0
  28. package/dist/esm/index.mjs +11 -0
  29. package/dist/esm/index.mjs.map +1 -0
  30. package/dist/esm/index.native.js +11 -0
  31. package/dist/esm/index.native.js.map +1 -0
  32. package/dist/jsx/StyledContext.mjs +7 -0
  33. package/dist/jsx/StyledContext.mjs.map +1 -0
  34. package/dist/jsx/StyledContext.native.js +34 -0
  35. package/dist/jsx/StyledContext.native.js.map +1 -0
  36. package/dist/jsx/Tabs.mjs +56 -0
  37. package/dist/jsx/Tabs.mjs.map +1 -0
  38. package/dist/jsx/Tabs.native.js +84 -0
  39. package/dist/jsx/Tabs.native.js.map +1 -0
  40. package/dist/jsx/createTabs.mjs +228 -0
  41. package/dist/jsx/createTabs.mjs.map +1 -0
  42. package/dist/jsx/createTabs.native.js +280 -0
  43. package/dist/jsx/createTabs.native.js.map +1 -0
  44. package/dist/jsx/index.js +11 -0
  45. package/dist/jsx/index.js.map +1 -0
  46. package/dist/jsx/index.mjs +11 -0
  47. package/dist/jsx/index.mjs.map +1 -0
  48. package/dist/jsx/index.native.js +38 -0
  49. package/dist/jsx/index.native.js.map +1 -0
  50. package/package.json +65 -0
  51. package/src/StyledContext.tsx +19 -0
  52. package/src/Tabs.tsx +69 -0
  53. package/src/createTabs.tsx +433 -0
  54. package/src/index.ts +10 -0
  55. package/types/StyledContext.d.ts +19 -0
  56. package/types/Tabs.d.ts +38 -0
  57. package/types/createTabs.d.ts +527 -0
  58. package/types/index.d.ts +539 -0
@@ -0,0 +1,228 @@
1
+ import { composeRefs } from "@hanzo/gui-compose-refs";
2
+ import { isWeb } from "@hanzo/gui-constants";
3
+ import { Group, useGroupItem } from "@hanzo/gui-group";
4
+ import { composeEventHandlers, withStaticProperties } from "@hanzo/gui-helpers";
5
+ import { RovingFocusGroup } from "@hanzo/gui-roving-focus";
6
+ import { SizableContext } from "@hanzo/gui-sizable-context";
7
+ import { useControllableState } from "@hanzo/gui-use-controllable-state";
8
+ import { useDirection } from "@hanzo/gui-use-direction";
9
+ import { useEvent } from "@hanzo/gui-web";
10
+ import * as React from "react";
11
+ import { TabsProvider, useTabsContext } from "./StyledContext.mjs";
12
+ import { DefaultTabsContentFrame, DefaultTabsFrame, DefaultTabsTabFrame } from "./Tabs.mjs";
13
+ import { jsx } from "react/jsx-runtime";
14
+ function createTabs(createProps) {
15
+ const {
16
+ ContentFrame = DefaultTabsContentFrame,
17
+ TabFrame = DefaultTabsTabFrame,
18
+ TabsFrame = DefaultTabsFrame
19
+ } = createProps,
20
+ TABS_CONTEXT = "TabsContext",
21
+ TAB_LIST_NAME = "TabsList",
22
+ TabsList = React.forwardRef((props, forwardedRef) => {
23
+ const {
24
+ __scopeTabs,
25
+ loop = !0,
26
+ children,
27
+ ...listProps
28
+ } = props,
29
+ context = useTabsContext(__scopeTabs);
30
+ return /* @__PURE__ */jsx(RovingFocusGroup, {
31
+ __scopeRovingFocusGroup: __scopeTabs || TABS_CONTEXT,
32
+ orientation: context.orientation,
33
+ dir: context.dir,
34
+ loop,
35
+ asChild: !0,
36
+ children: /* @__PURE__ */jsx(Group, {
37
+ role: "tablist",
38
+ componentName: TAB_LIST_NAME,
39
+ "aria-orientation": context.orientation,
40
+ ref: forwardedRef,
41
+ orientation: context.orientation,
42
+ ...listProps,
43
+ children
44
+ })
45
+ });
46
+ });
47
+ TabsList.displayName = TAB_LIST_NAME;
48
+ const TRIGGER_NAME = "TabsTrigger",
49
+ TabsTrigger = TabFrame.styleable((props, forwardedRef) => {
50
+ const {
51
+ __scopeTabs,
52
+ value,
53
+ disabled = !1,
54
+ onInteraction,
55
+ activeStyle,
56
+ activeTheme,
57
+ unstyled = !1,
58
+ ...triggerProps
59
+ } = props,
60
+ context = useTabsContext(__scopeTabs),
61
+ triggerId = makeTriggerId(context.baseId, value),
62
+ contentId = makeContentId(context.baseId, value),
63
+ isSelected = value === context.value,
64
+ [layout, setLayout] = React.useState(null),
65
+ triggerRef = React.useRef(null),
66
+ groupItemProps = useGroupItem({
67
+ disabled: !!disabled
68
+ });
69
+ return React.useEffect(() => (context.registerTrigger(), () => context.unregisterTrigger()), []), React.useEffect(() => {
70
+ if (!triggerRef.current || !isWeb) return;
71
+ const el = triggerRef.current;
72
+ function getTriggerSize() {
73
+ el && setLayout({
74
+ width: el.offsetWidth,
75
+ height: el.offsetHeight,
76
+ x: el.offsetLeft,
77
+ y: el.offsetTop
78
+ });
79
+ }
80
+ getTriggerSize();
81
+ const observer = new ResizeObserver(getTriggerSize);
82
+ return observer.observe(el), () => {
83
+ observer.unobserve(el);
84
+ };
85
+ }, [context.triggersCount]), React.useEffect(() => {
86
+ isSelected && layout && onInteraction?.("select", layout);
87
+ }, [isSelected, value, layout]), /* @__PURE__ */jsx(RovingFocusGroup.Item, {
88
+ __scopeRovingFocusGroup: __scopeTabs || TABS_CONTEXT,
89
+ asChild: !0,
90
+ focusable: !disabled,
91
+ active: isSelected,
92
+ children: /* @__PURE__ */jsx(TabFrame, {
93
+ onMouseEnter: composeEventHandlers(props.onMouseEnter, () => {
94
+ layout && onInteraction?.("hover", layout);
95
+ }),
96
+ onMouseLeave: composeEventHandlers(props.onMouseLeave, () => {
97
+ onInteraction?.("hover", null);
98
+ }),
99
+ role: "tab",
100
+ "aria-selected": isSelected,
101
+ "aria-controls": contentId,
102
+ "data-state": isSelected ? "active" : "inactive",
103
+ "data-disabled": disabled ? "" : void 0,
104
+ id: triggerId,
105
+ theme: activeTheme ?? null,
106
+ unstyled,
107
+ ...(!unstyled && {
108
+ size: context.size
109
+ }),
110
+ ...(isSelected && {
111
+ ...(!unstyled && !activeStyle && {
112
+ backgroundColor: "$backgroundActive"
113
+ }),
114
+ ...activeStyle
115
+ }),
116
+ ...groupItemProps,
117
+ disabled: disabled ?? groupItemProps.disabled,
118
+ ...triggerProps,
119
+ ref: composeRefs(forwardedRef, triggerRef),
120
+ onPress: composeEventHandlers(props.onPress ?? void 0, event => {
121
+ const webChecks = !isWeb || event.button === 0 && event.ctrlKey === !1;
122
+ !disabled && !isSelected && webChecks && context.onChange(value);
123
+ }),
124
+ ...(isWeb && {
125
+ onKeyDown: composeEventHandlers(props.onKeyDown, event => {
126
+ [" ", "Enter"].includes(event.key) && (context.onChange(value), event.preventDefault());
127
+ }),
128
+ onFocus: composeEventHandlers(props.onFocus, event => {
129
+ layout && onInteraction?.("focus", layout);
130
+ const isAutomaticActivation = context.activationMode !== "manual";
131
+ !isSelected && !disabled && isAutomaticActivation && context.onChange(value);
132
+ }),
133
+ onBlur: composeEventHandlers(props.onBlur, () => {
134
+ onInteraction?.("focus", null);
135
+ })
136
+ })
137
+ })
138
+ });
139
+ });
140
+ TabsTrigger.displayName = TRIGGER_NAME;
141
+ const TabsContent = ContentFrame.styleable(function (props, forwardedRef) {
142
+ const {
143
+ __scopeTabs,
144
+ value,
145
+ forceMount,
146
+ children,
147
+ ...contentProps
148
+ } = props,
149
+ context = useTabsContext(__scopeTabs),
150
+ isSelected = value === context.value,
151
+ show = forceMount || isSelected,
152
+ triggerId = makeTriggerId(context.baseId, value),
153
+ contentId = makeContentId(context.baseId, value);
154
+ return show ? /* @__PURE__ */jsx(ContentFrame, {
155
+ "data-state": isSelected ? "active" : "inactive",
156
+ "data-orientation": context.orientation,
157
+ role: "tabpanel",
158
+ "aria-labelledby": triggerId,
159
+ hidden: !show,
160
+ id: contentId,
161
+ tabIndex: 0,
162
+ ...contentProps,
163
+ ref: forwardedRef,
164
+ children
165
+ }, value) : null;
166
+ }),
167
+ TabsComponent = TabsFrame.styleable(function (props, forwardedRef) {
168
+ const {
169
+ __scopeTabs,
170
+ value: valueProp,
171
+ onValueChange,
172
+ defaultValue,
173
+ orientation = "horizontal",
174
+ dir,
175
+ activationMode = "manual",
176
+ size = "$true",
177
+ ...tabsProps
178
+ } = props,
179
+ direction = useDirection(dir),
180
+ [value, setValue] = useControllableState({
181
+ prop: valueProp,
182
+ onChange: onValueChange,
183
+ defaultProp: defaultValue ?? ""
184
+ }),
185
+ [triggersCount, setTriggersCount] = React.useState(0),
186
+ registerTrigger = useEvent(() => setTriggersCount(v => v + 1)),
187
+ unregisterTrigger = useEvent(() => setTriggersCount(v => v - 1));
188
+ return /* @__PURE__ */jsx(SizableContext.Provider, {
189
+ size,
190
+ children: /* @__PURE__ */jsx(TabsProvider, {
191
+ scope: __scopeTabs,
192
+ baseId: React.useId(),
193
+ value,
194
+ onChange: setValue,
195
+ orientation,
196
+ dir: direction,
197
+ activationMode,
198
+ size,
199
+ registerTrigger,
200
+ triggersCount,
201
+ unregisterTrigger,
202
+ children: /* @__PURE__ */jsx(TabsFrame, {
203
+ direction,
204
+ "data-orientation": orientation,
205
+ ...tabsProps,
206
+ ref: forwardedRef
207
+ })
208
+ })
209
+ });
210
+ });
211
+ return withStaticProperties(TabsComponent, {
212
+ List: TabsList,
213
+ /**
214
+ * @deprecated Use Tabs.Tab instead
215
+ */
216
+ Trigger: TabsTrigger,
217
+ Tab: TabsTrigger,
218
+ Content: TabsContent
219
+ });
220
+ }
221
+ function makeTriggerId(baseId, value) {
222
+ return `${baseId}-trigger-${value}`;
223
+ }
224
+ function makeContentId(baseId, value) {
225
+ return `${baseId}-content-${value}`;
226
+ }
227
+ export { createTabs };
228
+ //# sourceMappingURL=createTabs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["composeRefs","isWeb","Group","useGroupItem","composeEventHandlers","withStaticProperties","RovingFocusGroup","SizableContext","useControllableState","useDirection","useEvent","React","TabsProvider","useTabsContext","DefaultTabsContentFrame","DefaultTabsFrame","DefaultTabsTabFrame","jsx","createTabs","createProps","ContentFrame","TabFrame","TabsFrame","TABS_CONTEXT","TAB_LIST_NAME","TabsList","forwardRef","props","forwardedRef","__scopeTabs","loop","children","listProps","context","__scopeRovingFocusGroup","orientation","dir","asChild","role","componentName","ref","displayName","TRIGGER_NAME","TabsTrigger","styleable","value","disabled","onInteraction","activeStyle","activeTheme","unstyled","triggerProps","triggerId","makeTriggerId","baseId","contentId","makeContentId","isSelected","layout","setLayout","useState","triggerRef","useRef","groupItemProps","useEffect","registerTrigger","unregisterTrigger","current","el","getTriggerSize","width","offsetWidth","height","offsetHeight","x","offsetLeft","y","offsetTop","observer","ResizeObserver","observe","unobserve","triggersCount","Item","focusable","active","onMouseEnter","onMouseLeave","id","theme","size","backgroundColor","onPress","event","webChecks","button","ctrlKey","onChange","onKeyDown","includes","key","preventDefault","onFocus","isAutomaticActivation","activationMode","onBlur","TabsContent","forceMount","contentProps","show","hidden","tabIndex","TabsComponent","valueProp","onValueChange","defaultValue","tabsProps","direction","setValue","prop","defaultProp","setTriggersCount","v","Provider","scope","useId","List","Trigger","Tab","Content"],"sources":["../../src/createTabs.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,243 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { composeRefs } from "@hanzo/gui-compose-refs";
3
+ import { isWeb } from "@hanzo/gui-constants";
4
+ import { Group, useGroupItem } from "@hanzo/gui-group";
5
+ import { composeEventHandlers, withStaticProperties } from "@hanzo/gui-helpers";
6
+ import { RovingFocusGroup } from "@hanzo/gui-roving-focus";
7
+ import { SizableContext } from "@hanzo/gui-sizable-context";
8
+ import { useControllableState } from "@hanzo/gui-use-controllable-state";
9
+ import { useDirection } from "@hanzo/gui-use-direction";
10
+ import { useEvent } from "@hanzo/gui-web";
11
+ import * as React from "react";
12
+ import { TabsProvider, useTabsContext } from "./StyledContext.native.js";
13
+ import { DefaultTabsContentFrame, DefaultTabsFrame, DefaultTabsTabFrame } from "./Tabs.native.js";
14
+ function createTabs(createProps) {
15
+ var {
16
+ ContentFrame = DefaultTabsContentFrame,
17
+ TabFrame = DefaultTabsTabFrame,
18
+ TabsFrame = DefaultTabsFrame
19
+ } = createProps,
20
+ TABS_CONTEXT = "TabsContext",
21
+ TAB_LIST_NAME = "TabsList",
22
+ TabsList = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
23
+ var {
24
+ __scopeTabs,
25
+ loop = !0,
26
+ children,
27
+ ...listProps
28
+ } = props,
29
+ context = useTabsContext(__scopeTabs);
30
+ return /* @__PURE__ */_jsx(RovingFocusGroup, {
31
+ __scopeRovingFocusGroup: __scopeTabs || TABS_CONTEXT,
32
+ orientation: context.orientation,
33
+ dir: context.dir,
34
+ loop,
35
+ asChild: !0,
36
+ children: /* @__PURE__ */_jsx(Group, {
37
+ role: "tablist",
38
+ componentName: TAB_LIST_NAME,
39
+ "aria-orientation": context.orientation,
40
+ ref: forwardedRef,
41
+ orientation: context.orientation,
42
+ ...listProps,
43
+ children
44
+ })
45
+ });
46
+ });
47
+ TabsList.displayName = TAB_LIST_NAME;
48
+ var TRIGGER_NAME = "TabsTrigger",
49
+ TabsTrigger = TabFrame.styleable(function (props, forwardedRef) {
50
+ var {
51
+ __scopeTabs,
52
+ value,
53
+ disabled = !1,
54
+ onInteraction,
55
+ activeStyle,
56
+ activeTheme,
57
+ unstyled = !1,
58
+ ...triggerProps
59
+ } = props,
60
+ context = useTabsContext(__scopeTabs),
61
+ triggerId = makeTriggerId(context.baseId, value),
62
+ contentId = makeContentId(context.baseId, value),
63
+ isSelected = value === context.value,
64
+ [layout, setLayout] = React.useState(null),
65
+ triggerRef = React.useRef(null),
66
+ groupItemProps = useGroupItem({
67
+ disabled: !!disabled
68
+ });
69
+ React.useEffect(function () {
70
+ return context.registerTrigger(), function () {
71
+ return context.unregisterTrigger();
72
+ };
73
+ }, []), React.useEffect(function () {
74
+ if (!triggerRef.current || !isWeb) return;
75
+ var el = triggerRef.current;
76
+ function getTriggerSize() {
77
+ el && setLayout({
78
+ width: el.offsetWidth,
79
+ height: el.offsetHeight,
80
+ x: el.offsetLeft,
81
+ y: el.offsetTop
82
+ });
83
+ }
84
+ getTriggerSize();
85
+ var observer = new ResizeObserver(getTriggerSize);
86
+ return observer.observe(el), function () {
87
+ observer.unobserve(el);
88
+ };
89
+ }, [context.triggersCount]), React.useEffect(function () {
90
+ isSelected && layout && onInteraction?.("select", layout);
91
+ }, [isSelected, value, layout]);
92
+ var _props_onPress;
93
+ return /* @__PURE__ */_jsx(RovingFocusGroup.Item, {
94
+ __scopeRovingFocusGroup: __scopeTabs || TABS_CONTEXT,
95
+ asChild: !0,
96
+ focusable: !disabled,
97
+ active: isSelected,
98
+ children: /* @__PURE__ */_jsx(TabFrame, {
99
+ onMouseEnter: composeEventHandlers(props.onMouseEnter, function () {
100
+ layout && onInteraction?.("hover", layout);
101
+ }),
102
+ onMouseLeave: composeEventHandlers(props.onMouseLeave, function () {
103
+ onInteraction?.("hover", null);
104
+ }),
105
+ role: "tab",
106
+ "aria-selected": isSelected,
107
+ "aria-controls": contentId,
108
+ "data-state": isSelected ? "active" : "inactive",
109
+ "data-disabled": disabled ? "" : void 0,
110
+ id: triggerId,
111
+ theme: activeTheme ?? null,
112
+ unstyled,
113
+ ...(!unstyled && {
114
+ size: context.size
115
+ }),
116
+ ...(isSelected && {
117
+ ...(!unstyled && !activeStyle && {
118
+ backgroundColor: "$backgroundActive"
119
+ }),
120
+ ...activeStyle
121
+ }),
122
+ ...groupItemProps,
123
+ disabled: disabled ?? groupItemProps.disabled,
124
+ ...triggerProps,
125
+ ref: composeRefs(forwardedRef, triggerRef),
126
+ onPress: composeEventHandlers((_props_onPress = props.onPress) !== null && _props_onPress !== void 0 ? _props_onPress : void 0, function (event) {
127
+ var webChecks = !isWeb || event.button === 0 && event.ctrlKey === !1;
128
+ !disabled && !isSelected && webChecks && context.onChange(value);
129
+ }),
130
+ ...(isWeb && {
131
+ onKeyDown: composeEventHandlers(props.onKeyDown, function (event) {
132
+ [" ", "Enter"].includes(event.key) && (context.onChange(value), event.preventDefault());
133
+ }),
134
+ onFocus: composeEventHandlers(props.onFocus, function (event) {
135
+ layout && onInteraction?.("focus", layout);
136
+ var isAutomaticActivation = context.activationMode !== "manual";
137
+ !isSelected && !disabled && isAutomaticActivation && context.onChange(value);
138
+ }),
139
+ onBlur: composeEventHandlers(props.onBlur, function () {
140
+ onInteraction?.("focus", null);
141
+ })
142
+ })
143
+ })
144
+ });
145
+ });
146
+ TabsTrigger.displayName = TRIGGER_NAME;
147
+ var TabsContent = ContentFrame.styleable(function (props, forwardedRef) {
148
+ var {
149
+ __scopeTabs,
150
+ value,
151
+ forceMount,
152
+ children,
153
+ ...contentProps
154
+ } = props,
155
+ context = useTabsContext(__scopeTabs),
156
+ isSelected = value === context.value,
157
+ show = forceMount || isSelected,
158
+ triggerId = makeTriggerId(context.baseId, value),
159
+ contentId = makeContentId(context.baseId, value);
160
+ return show ? /* @__PURE__ */_jsx(ContentFrame, {
161
+ "data-state": isSelected ? "active" : "inactive",
162
+ "data-orientation": context.orientation,
163
+ role: "tabpanel",
164
+ "aria-labelledby": triggerId,
165
+ // @ts-ignore
166
+ hidden: !show,
167
+ id: contentId,
168
+ tabIndex: 0,
169
+ ...contentProps,
170
+ ref: forwardedRef,
171
+ children
172
+ }, value) : null;
173
+ }),
174
+ TabsComponent = TabsFrame.styleable(function (props, forwardedRef) {
175
+ var {
176
+ __scopeTabs,
177
+ value: valueProp,
178
+ onValueChange,
179
+ defaultValue,
180
+ orientation = "horizontal",
181
+ dir,
182
+ activationMode = "manual",
183
+ size = "$true",
184
+ ...tabsProps
185
+ } = props,
186
+ direction = useDirection(dir),
187
+ [value, setValue] = useControllableState({
188
+ prop: valueProp,
189
+ onChange: onValueChange,
190
+ defaultProp: defaultValue ?? ""
191
+ }),
192
+ [triggersCount, setTriggersCount] = React.useState(0),
193
+ registerTrigger = useEvent(function () {
194
+ return setTriggersCount(function (v) {
195
+ return v + 1;
196
+ });
197
+ }),
198
+ unregisterTrigger = useEvent(function () {
199
+ return setTriggersCount(function (v) {
200
+ return v - 1;
201
+ });
202
+ });
203
+ return /* @__PURE__ */_jsx(SizableContext.Provider, {
204
+ size,
205
+ children: /* @__PURE__ */_jsx(TabsProvider, {
206
+ scope: __scopeTabs,
207
+ baseId: React.useId(),
208
+ value,
209
+ onChange: setValue,
210
+ orientation,
211
+ dir: direction,
212
+ activationMode,
213
+ size,
214
+ registerTrigger,
215
+ triggersCount,
216
+ unregisterTrigger,
217
+ children: /* @__PURE__ */_jsx(TabsFrame, {
218
+ direction,
219
+ "data-orientation": orientation,
220
+ ...tabsProps,
221
+ ref: forwardedRef
222
+ })
223
+ })
224
+ });
225
+ });
226
+ return withStaticProperties(TabsComponent, {
227
+ List: TabsList,
228
+ /**
229
+ * @deprecated Use Tabs.Tab instead
230
+ */
231
+ Trigger: TabsTrigger,
232
+ Tab: TabsTrigger,
233
+ Content: TabsContent
234
+ });
235
+ }
236
+ function makeTriggerId(baseId, value) {
237
+ return `${baseId}-trigger-${value}`;
238
+ }
239
+ function makeContentId(baseId, value) {
240
+ return `${baseId}-content-${value}`;
241
+ }
242
+ export { createTabs };
243
+ //# sourceMappingURL=createTabs.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","composeRefs","isWeb","Group","useGroupItem","composeEventHandlers","withStaticProperties","RovingFocusGroup","SizableContext","useControllableState","useDirection","useEvent","React","TabsProvider","useTabsContext","DefaultTabsContentFrame","DefaultTabsFrame","DefaultTabsTabFrame","createTabs","createProps","ContentFrame","TabFrame","TabsFrame","TABS_CONTEXT","TAB_LIST_NAME","TabsList","forwardRef","props","forwardedRef","__scopeTabs","loop","children","listProps","context","__scopeRovingFocusGroup","orientation","dir","asChild","role","componentName","ref","displayName","TRIGGER_NAME","TabsTrigger","styleable","value","disabled","onInteraction","activeStyle","activeTheme","unstyled","triggerProps","triggerId","makeTriggerId","baseId","contentId","makeContentId","isSelected","layout","setLayout","useState","triggerRef","useRef","groupItemProps","useEffect","registerTrigger","unregisterTrigger","current","el","getTriggerSize","width","offsetWidth","height","offsetHeight","x","offsetLeft","y","offsetTop","observer","ResizeObserver","observe","unobserve","triggersCount","_props_onPress","Item","focusable","active","onMouseEnter","onMouseLeave","id","theme","size","backgroundColor","onPress","event","webChecks","button","ctrlKey","onChange","onKeyDown","includes","key","preventDefault","onFocus","isAutomaticActivation","activationMode","onBlur","TabsContent","forceMount","contentProps","show","hidden","tabIndex","TabsComponent","valueProp","onValueChange","defaultValue","tabsProps","direction","setValue","prop","defaultProp","setTriggersCount","v","Provider","scope","useId","List","Trigger","Tab","Content"],"sources":["../../src/createTabs.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { createTabs } from "./createTabs.mjs";
2
+ import { DefaultTabsContentFrame, DefaultTabsFrame, DefaultTabsTabFrame } from "./Tabs.mjs";
3
+ export * from "./createTabs.mjs";
4
+ export * from "./StyledContext.mjs";
5
+ const Tabs = createTabs({
6
+ ContentFrame: DefaultTabsContentFrame,
7
+ TabFrame: DefaultTabsTabFrame,
8
+ TabsFrame: DefaultTabsFrame
9
+ });
10
+ export { Tabs };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createTabs","DefaultTabsContentFrame","DefaultTabsFrame","DefaultTabsTabFrame","Tabs","ContentFrame","TabFrame","TabsFrame"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAC3B,SAASC,uBAAA,EAAyBC,gBAAA,EAAkBC,mBAAA,QAA2B;AAC/E,cAAc;AACd,cAAc;AAEP,MAAMC,IAAA,GAAOJ,UAAA,CAAW;EAC7BK,YAAA,EAAcJ,uBAAA;EACdK,QAAA,EAAUH,mBAAA;EACVI,SAAA,EAAWL;AACb,CAAC","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { createTabs } from "./createTabs.mjs";
2
+ import { DefaultTabsContentFrame, DefaultTabsFrame, DefaultTabsTabFrame } from "./Tabs.mjs";
3
+ export * from "./createTabs.mjs";
4
+ export * from "./StyledContext.mjs";
5
+ const Tabs = createTabs({
6
+ ContentFrame: DefaultTabsContentFrame,
7
+ TabFrame: DefaultTabsTabFrame,
8
+ TabsFrame: DefaultTabsFrame
9
+ });
10
+ export { Tabs };
11
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createTabs","DefaultTabsContentFrame","DefaultTabsFrame","DefaultTabsTabFrame","Tabs","ContentFrame","TabFrame","TabsFrame"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAC3B,SAASC,uBAAA,EAAyBC,gBAAA,EAAkBC,mBAAA,QAA2B;AAC/E,cAAc;AACd,cAAc;AAEP,MAAMC,IAAA,GAAOJ,UAAA,CAAW;EAC7BK,YAAA,EAAcJ,uBAAA;EACdK,QAAA,EAAUH,mBAAA;EACVI,SAAA,EAAWL;AACb,CAAC","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { createTabs } from "./createTabs.native.js";
2
+ import { DefaultTabsContentFrame, DefaultTabsFrame, DefaultTabsTabFrame } from "./Tabs.native.js";
3
+ export * from "./createTabs.native.js";
4
+ export * from "./StyledContext.native.js";
5
+ var Tabs = createTabs({
6
+ ContentFrame: DefaultTabsContentFrame,
7
+ TabFrame: DefaultTabsTabFrame,
8
+ TabsFrame: DefaultTabsFrame
9
+ });
10
+ export { Tabs };
11
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createTabs","DefaultTabsContentFrame","DefaultTabsFrame","DefaultTabsTabFrame","Tabs","ContentFrame","TabFrame","TabsFrame"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAC3B,SAASC,uBAAA,EAAyBC,gBAAA,EAAkBC,mBAAA,QAA2B;AAC/E,cAAc;AACd,cAAc;AAEP,IAAAC,IAAM,GAAAJ,UAAO;EAClBK,YAAA,EAAcJ,uBAAA;EACdK,QAAA,EAAUH,mBAAA;EACVI,SAAA,EAAWL;AACb,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import { createStyledContext } from "@hanzo/gui-core";
2
+ const {
3
+ Provider: TabsProvider,
4
+ useStyledContext: useTabsContext
5
+ } = createStyledContext();
6
+ export { TabsProvider, useTabsContext };
7
+ //# sourceMappingURL=StyledContext.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createStyledContext","Provider","TabsProvider","useStyledContext","useTabsContext"],"sources":["../../src/StyledContext.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,mBAAA,QAA2B;AAgB7B,MAAM;EAAEC,QAAA,EAAUC,YAAA;EAAcC,gBAAA,EAAkBC;AAAe,IACtEJ,mBAAA,CAAsC","ignoreList":[]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var StyledContext_exports = {};
24
+ __export(StyledContext_exports, {
25
+ TabsProvider: () => TabsProvider,
26
+ useTabsContext: () => useTabsContext
27
+ });
28
+ module.exports = __toCommonJS(StyledContext_exports);
29
+ var import_gui_core = require("@hanzo/gui-core"),
30
+ {
31
+ Provider: TabsProvider,
32
+ useStyledContext: useTabsContext
33
+ } = (0, import_gui_core.createStyledContext)();
34
+ //# sourceMappingURL=StyledContext.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty"],"sources":["../../src/StyledContext.tsx"],"sourcesContent":[null],"mappings":"AACA,YAAS;;AAgBF,IAAAA,SAAQ,GAAAC,MAAU,CAAAC,cAAc","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ import { styled, View } from "@hanzo/gui-core";
2
+ import { getButtonSized } from "@hanzo/gui-get-button-sized";
3
+ import { SizableStack, ThemeableStack } from "@hanzo/gui-stacks";
4
+ const TABS_NAME = "Tabs",
5
+ DefaultTabsFrame = styled(SizableStack, {
6
+ name: TABS_NAME
7
+ }),
8
+ TRIGGER_NAME = "TabsTrigger",
9
+ DefaultTabsTabFrame = styled(View, {
10
+ name: TRIGGER_NAME,
11
+ role: "tab",
12
+ variants: {
13
+ size: {
14
+ "...size": getButtonSized
15
+ },
16
+ disabled: {
17
+ true: {
18
+ pointerEvents: "none"
19
+ }
20
+ },
21
+ unstyled: {
22
+ false: {
23
+ borderWidth: 0,
24
+ backgroundColor: "$background",
25
+ userSelect: "none",
26
+ justifyContent: "center",
27
+ alignItems: "center",
28
+ flexWrap: "nowrap",
29
+ flexDirection: "row",
30
+ cursor: "pointer",
31
+ pressStyle: {
32
+ backgroundColor: "$backgroundPress"
33
+ },
34
+ focusVisibleStyle: {
35
+ outlineColor: "$outlineColor",
36
+ outlineWidth: 2,
37
+ outlineStyle: "solid",
38
+ zIndex: 10
39
+ }
40
+ }
41
+ }
42
+ },
43
+ defaultVariants: {
44
+ unstyled: process.env.HANZO_GUI_HEADLESS === "1"
45
+ }
46
+ }, {
47
+ accept: {
48
+ activeStyle: "style"
49
+ }
50
+ }),
51
+ CONTENT_NAME = "TabsContent",
52
+ DefaultTabsContentFrame = styled(ThemeableStack, {
53
+ name: CONTENT_NAME
54
+ });
55
+ export { DefaultTabsContentFrame, DefaultTabsFrame, DefaultTabsTabFrame };
56
+ //# sourceMappingURL=Tabs.mjs.map