@korsolutions/ui 0.0.34 → 0.0.35
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/module/components/tabs/tabs.js +7 -7
- package/dist/module/components/tabs/tabs.js.map +1 -1
- package/dist/module/primitives/tabs/index.js +1 -1
- package/dist/module/primitives/tabs/index.js.map +1 -1
- package/dist/module/primitives/tabs/tabs-context.js +2 -2
- package/dist/module/primitives/tabs/tabs-context.js.map +1 -1
- package/dist/module/primitives/tabs/tabs-root.js +5 -5
- package/dist/module/primitives/tabs/tabs-root.js.map +1 -1
- package/dist/module/primitives/tabs/tabs-trigger-text.js.map +1 -1
- package/dist/module/primitives/tabs/tabs-trigger.js +2 -2
- package/dist/module/primitives/tabs/tabs-trigger.js.map +1 -1
- package/dist/typescript/src/components/tabs/tabs.d.ts +8 -8
- package/dist/typescript/src/components/tabs/tabs.d.ts.map +1 -1
- package/dist/typescript/src/primitives/tabs/index.d.ts +2 -2
- package/dist/typescript/src/primitives/tabs/tabs-context.d.ts +1 -1
- package/dist/typescript/src/primitives/tabs/tabs-context.d.ts.map +1 -1
- package/dist/typescript/src/primitives/tabs/tabs-list.d.ts +1 -1
- package/dist/typescript/src/primitives/tabs/tabs-root.d.ts +2 -2
- package/dist/typescript/src/primitives/tabs/tabs-root.d.ts.map +1 -1
- package/dist/typescript/src/primitives/tabs/tabs-trigger-text.d.ts +1 -1
- package/dist/typescript/src/primitives/tabs/tabs-trigger-text.d.ts.map +1 -1
- package/dist/typescript/src/primitives/tabs/tabs-trigger.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/tabs/tabs.tsx +15 -15
- package/src/primitives/tabs/index.ts +2 -2
- package/src/primitives/tabs/tabs-context.tsx +3 -3
- package/src/primitives/tabs/tabs-list.tsx +1 -1
- package/src/primitives/tabs/tabs-root.tsx +7 -7
- package/src/primitives/tabs/tabs-trigger-text.tsx +2 -6
- package/src/primitives/tabs/tabs-trigger.tsx +5 -17
|
@@ -9,7 +9,7 @@ export function Tabs(props) {
|
|
|
9
9
|
tabs,
|
|
10
10
|
defaultValue,
|
|
11
11
|
value: controlledValue,
|
|
12
|
-
|
|
12
|
+
onChange,
|
|
13
13
|
variant = "default"
|
|
14
14
|
} = props;
|
|
15
15
|
const initialValue = defaultValue ?? tabs[0]?.value ?? "";
|
|
@@ -19,24 +19,24 @@ export function Tabs(props) {
|
|
|
19
19
|
if (controlledValue === undefined) {
|
|
20
20
|
setUncontrolledValue(newValue);
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
onChange?.(newValue);
|
|
23
23
|
};
|
|
24
24
|
const useVariantStyles = TabsVariants[variant];
|
|
25
25
|
const variantStyles = useVariantStyles();
|
|
26
26
|
return /*#__PURE__*/_jsx(TabsPrimitive.Root, {
|
|
27
|
-
value: value,
|
|
28
|
-
|
|
27
|
+
value: String(value),
|
|
28
|
+
onChange: newValue => handleValueChange(newValue),
|
|
29
29
|
styles: variantStyles,
|
|
30
30
|
children: /*#__PURE__*/_jsx(TabsPrimitive.List, {
|
|
31
31
|
children: tabs.map(tab => /*#__PURE__*/_jsx(TabsPrimitive.Trigger, {
|
|
32
|
-
value: tab.value,
|
|
32
|
+
value: String(tab.value),
|
|
33
33
|
isDisabled: tab.disabled,
|
|
34
34
|
children: /*#__PURE__*/_jsx(TabsPrimitive.TriggerText, {
|
|
35
|
-
value: tab.value,
|
|
35
|
+
value: String(tab.value),
|
|
36
36
|
isDisabled: tab.disabled,
|
|
37
37
|
children: tab.label
|
|
38
38
|
})
|
|
39
|
-
}, tab.value))
|
|
39
|
+
}, String(tab.value)))
|
|
40
40
|
})
|
|
41
41
|
});
|
|
42
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TabsPrimitive","React","useState","TabsVariants","jsx","_jsx","Tabs","props","tabs","defaultValue","value","controlledValue","
|
|
1
|
+
{"version":3,"names":["TabsPrimitive","React","useState","TabsVariants","jsx","_jsx","Tabs","props","tabs","defaultValue","value","controlledValue","onChange","variant","initialValue","uncontrolledValue","setUncontrolledValue","handleValueChange","newValue","undefined","useVariantStyles","variantStyles","Root","String","styles","children","List","map","tab","Trigger","isDisabled","disabled","TriggerText","label"],"sourceRoot":"../../../../src","sources":["components/tabs/tabs.tsx"],"mappings":";;AAAA,SAASA,aAAa;AACtB,OAAOC,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,YAAY;AAAqB,SAAAC,GAAA,IAAAC,IAAA;AAgB1C,OAAO,SAASC,IAAIA,CAAIC,KAAmB,EAAE;EAC3C,MAAM;IAAEC,IAAI;IAAEC,YAAY;IAAEC,KAAK,EAAEC,eAAe;IAAEC,QAAQ;IAAEC,OAAO,GAAG;EAAU,CAAC,GAAGN,KAAK;EAE3F,MAAMO,YAAY,GAAGL,YAAY,IAAID,IAAI,CAAC,CAAC,CAAC,EAAEE,KAAK,IAAK,EAAQ;EAChE,MAAM,CAACK,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGd,QAAQ,CAACY,YAAY,CAAC;EACxE,MAAMJ,KAAK,GAAGC,eAAe,IAAII,iBAAiB;EAElD,MAAME,iBAAiB,GAAIC,QAAW,IAAK;IACzC,IAAIP,eAAe,KAAKQ,SAAS,EAAE;MACjCH,oBAAoB,CAACE,QAAQ,CAAC;IAChC;IACAN,QAAQ,GAAGM,QAAQ,CAAC;EACtB,CAAC;EAED,MAAME,gBAAgB,GAAGjB,YAAY,CAACU,OAAO,CAAC;EAC9C,MAAMQ,aAAa,GAAGD,gBAAgB,CAAC,CAAC;EAExC,oBACEf,IAAA,CAACL,aAAa,CAACsB,IAAI;IAACZ,KAAK,EAAEa,MAAM,CAACb,KAAK,CAAE;IAACE,QAAQ,EAAGM,QAAQ,IAAKD,iBAAiB,CAACC,QAAa,CAAE;IAACM,MAAM,EAAEH,aAAc;IAAAI,QAAA,eACxHpB,IAAA,CAACL,aAAa,CAAC0B,IAAI;MAAAD,QAAA,EAChBjB,IAAI,CAACmB,GAAG,CAAEC,GAAG,iBACZvB,IAAA,CAACL,aAAa,CAAC6B,OAAO;QAAyBnB,KAAK,EAAEa,MAAM,CAACK,GAAG,CAAClB,KAAK,CAAE;QAACoB,UAAU,EAAEF,GAAG,CAACG,QAAS;QAAAN,QAAA,eAChGpB,IAAA,CAACL,aAAa,CAACgC,WAAW;UAACtB,KAAK,EAAEa,MAAM,CAACK,GAAG,CAAClB,KAAK,CAAE;UAACoB,UAAU,EAAEF,GAAG,CAACG,QAAS;UAAAN,QAAA,EAC3EG,GAAG,CAACK;QAAK,CACe;MAAC,GAHFV,MAAM,CAACK,GAAG,CAAClB,KAAK,CAIrB,CACxB;IAAC,CACgB;EAAC,CACH,CAAC;AAEzB","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { TabsRoot } from "./tabs-root.js";
|
|
4
3
|
import { TabsList } from "./tabs-list.js";
|
|
4
|
+
import { TabsRoot } from "./tabs-root.js";
|
|
5
5
|
import { TabsTrigger } from "./tabs-trigger.js";
|
|
6
6
|
import { TabsTriggerText } from "./tabs-trigger-text.js";
|
|
7
7
|
export const TabsPrimitive = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["TabsList","TabsRoot","TabsTrigger","TabsTriggerText","TabsPrimitive","Root","List","Trigger","TriggerText"],"sourceRoot":"../../../../src","sources":["primitives/tabs/index.ts"],"mappings":";;AAAA,SAASA,QAAQ;AACjB,SAASC,QAAQ;AACjB,SAASC,WAAW;AACpB,SAASC,eAAe;AAExB,OAAO,MAAMC,aAAa,GAAG;EAC3BC,IAAI,EAAEJ,QAAQ;EACdK,IAAI,EAAEN,QAAQ;EACdO,OAAO,EAAEL,WAAW;EACpBM,WAAW,EAAEL;AACf,CAAC;AAMD","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React from "react";
|
|
3
|
+
import React, { useContext } from "react";
|
|
4
4
|
export const TabsPrimitiveContext = /*#__PURE__*/React.createContext(null);
|
|
5
5
|
export const useTabsContext = () => {
|
|
6
|
-
const context =
|
|
6
|
+
const context = useContext(TabsPrimitiveContext);
|
|
7
7
|
if (!context) {
|
|
8
8
|
throw new Error("Tabs compound components must be used within TabsPrimitive.Root");
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","TabsPrimitiveContext","createContext","useTabsContext","context","
|
|
1
|
+
{"version":3,"names":["React","useContext","TabsPrimitiveContext","createContext","useTabsContext","context","Error"],"sourceRoot":"../../../../src","sources":["primitives/tabs/tabs-context.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AASzC,OAAO,MAAMC,oBAAoB,gBAAGF,KAAK,CAACG,aAAa,CAAmC,IAAI,CAAC;AAE/F,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMC,OAAO,GAAGJ,UAAU,CAACC,oBAAoB,CAAC;EAChD,IAAI,CAACG,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,iEAAiE,CAAC;EACpF;EACA,OAAOD,OAAO;AAChB,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React from "react";
|
|
3
|
+
import React, { useMemo } from "react";
|
|
4
4
|
import { View } from "react-native";
|
|
5
5
|
import { TabsPrimitiveContext } from "./tabs-context.js";
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -8,16 +8,16 @@ export function TabsRoot(props) {
|
|
|
8
8
|
const {
|
|
9
9
|
children,
|
|
10
10
|
value,
|
|
11
|
-
|
|
11
|
+
onChange,
|
|
12
12
|
styles,
|
|
13
13
|
style,
|
|
14
14
|
...viewProps
|
|
15
15
|
} = props;
|
|
16
|
-
const contextValue =
|
|
16
|
+
const contextValue = useMemo(() => ({
|
|
17
17
|
value,
|
|
18
|
-
|
|
18
|
+
onChange,
|
|
19
19
|
styles
|
|
20
|
-
}), [value,
|
|
20
|
+
}), [value, onChange, styles]);
|
|
21
21
|
return /*#__PURE__*/_jsx(TabsPrimitiveContext.Provider, {
|
|
22
22
|
value: contextValue,
|
|
23
23
|
children: /*#__PURE__*/_jsx(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","TabsPrimitiveContext","jsx","_jsx","TabsRoot","props","children","value","
|
|
1
|
+
{"version":3,"names":["React","useMemo","View","TabsPrimitiveContext","jsx","_jsx","TabsRoot","props","children","value","onChange","styles","style","viewProps","contextValue","Provider"],"sourceRoot":"../../../../src","sources":["primitives/tabs/tabs-root.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,IAAI,QAAwD,cAAc;AACnF,SAASC,oBAAoB;AAAyB,SAAAC,GAAA,IAAAC,IAAA;AAWtD,OAAO,SAASC,QAAQA,CAACC,KAA6B,EAAE;EACtD,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,KAAK;IAAE,GAAGC;EAAU,CAAC,GAAGN,KAAK;EAExE,MAAMO,YAAY,GAAGb,OAAO,CAC1B,OAAO;IACLQ,KAAK;IACLC,QAAQ;IACRC;EACF,CAAC,CAAC,EACF,CAACF,KAAK,EAAEC,QAAQ,EAAEC,MAAM,CAC1B,CAAC;EAED,oBACEN,IAAA,CAACF,oBAAoB,CAACY,QAAQ;IAACN,KAAK,EAAEK,YAAa;IAAAN,QAAA,eACjDH,IAAA,CAACH,IAAI;MAAA,GAAKW,SAAS;MAAED,KAAK,EAAEA,KAAM;MAAAJ,QAAA,EAC/BA;IAAQ,CACL;EAAC,CACsB,CAAC;AAEpC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Text","useTabsContext","jsx","_jsx","TabsTriggerText","props","children","value","triggerValue","isDisabled","style","textProps","styles","isActive","state","calculatedStyle","triggerText","default"],"sourceRoot":"../../../../src","sources":["primitives/tabs/tabs-trigger-text.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAwD,cAAc;AACnF,SAASC,cAAc;AAAyB,SAAAC,GAAA,IAAAC,IAAA;AAShD,OAAO,SAASC,eAAeA,CAACC,KAAoC,EAAE;EACpE,MAAM;IAAEC,QAAQ;IAAEC,KAAK,EAAEC,YAAY;IAAEC,UAAU;IAAEC,KAAK;IAAE,GAAGC;EAAU,CAAC,GAAGN,KAAK;EAChF,MAAM;IAAEE,KAAK;IAAEK;EAAO,CAAC,GAAGX,cAAc,CAAC,CAAC;EAE1C,MAAMY,QAAQ,GAAGN,KAAK,KAAKC,YAAY;EACvC,MAAMM,KAAK,GAAGL,UAAU,GAAG,UAAU,GAAGI,QAAQ,GAAG,QAAQ,GAAG,SAAS;EAEvE,MAAME,eAAe,GAAG,
|
|
1
|
+
{"version":3,"names":["React","Text","useTabsContext","jsx","_jsx","TabsTriggerText","props","children","value","triggerValue","isDisabled","style","textProps","styles","isActive","state","calculatedStyle","triggerText","default"],"sourceRoot":"../../../../src","sources":["primitives/tabs/tabs-trigger-text.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAwD,cAAc;AACnF,SAASC,cAAc;AAAyB,SAAAC,GAAA,IAAAC,IAAA;AAShD,OAAO,SAASC,eAAeA,CAACC,KAAoC,EAAE;EACpE,MAAM;IAAEC,QAAQ;IAAEC,KAAK,EAAEC,YAAY;IAAEC,UAAU;IAAEC,KAAK;IAAE,GAAGC;EAAU,CAAC,GAAGN,KAAK;EAChF,MAAM;IAAEE,KAAK;IAAEK;EAAO,CAAC,GAAGX,cAAc,CAAC,CAAC;EAE1C,MAAMY,QAAQ,GAAGN,KAAK,KAAKC,YAAY;EACvC,MAAMM,KAAK,GAAGL,UAAU,GAAG,UAAU,GAAGI,QAAQ,GAAG,QAAQ,GAAG,SAAS;EAEvE,MAAME,eAAe,GAAG,CAACH,MAAM,EAAEI,WAAW,EAAEC,OAAO,EAAEL,MAAM,EAAEI,WAAW,GAAGF,KAAK,CAAC,EAAEJ,KAAK,CAAC;EAE3F,oBACEP,IAAA,CAACH,IAAI;IAAA,GAAKW,SAAS;IAAED,KAAK,EAAEK,eAAgB;IAAAT,QAAA,EACzCA;EAAQ,CACL,CAAC;AAEX","ignoreList":[]}
|
|
@@ -23,14 +23,14 @@ export function TabsTrigger(props) {
|
|
|
23
23
|
} = props;
|
|
24
24
|
const {
|
|
25
25
|
value,
|
|
26
|
-
|
|
26
|
+
onChange,
|
|
27
27
|
styles
|
|
28
28
|
} = useTabsContext();
|
|
29
29
|
const isActive = value === triggerValue;
|
|
30
30
|
const state = calculateState(isActive, isDisabled);
|
|
31
31
|
const handlePress = () => {
|
|
32
32
|
if (!isDisabled) {
|
|
33
|
-
|
|
33
|
+
onChange(triggerValue);
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
const calculatedStyle = [styles?.trigger?.default, styles?.trigger?.[state], style];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Pressable","useTabsContext","jsx","_jsx","calculateState","isActive","isDisabled","TabsTrigger","props","children","value","triggerValue","style","pressableProps","
|
|
1
|
+
{"version":3,"names":["React","Pressable","useTabsContext","jsx","_jsx","calculateState","isActive","isDisabled","TabsTrigger","props","children","value","triggerValue","style","pressableProps","onChange","styles","state","handlePress","calculatedStyle","trigger","default","disabled","onPress"],"sourceRoot":"../../../../src","sources":["primitives/tabs/tabs-trigger.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAA6D,cAAc;AAC7F,SAASC,cAAc;AAAyB,SAAAC,GAAA,IAAAC,IAAA;AAUhD,MAAMC,cAAc,GAAGA,CAACC,QAAiB,EAAEC,UAA+B,KAAgB;EACxF,IAAIA,UAAU,EAAE;IACd,OAAO,UAAU;EACnB;EACA,IAAID,QAAQ,EAAE;IACZ,OAAO,QAAQ;EACjB;EACA,OAAO,SAAS;AAClB,CAAC;AAED,OAAO,SAASE,WAAWA,CAACC,KAAgC,EAAE;EAC5D,MAAM;IAAEC,QAAQ;IAAEC,KAAK,EAAEC,YAAY;IAAEL,UAAU;IAAEM,KAAK;IAAE,GAAGC;EAAe,CAAC,GAAGL,KAAK;EACrF,MAAM;IAAEE,KAAK;IAAEI,QAAQ;IAAEC;EAAO,CAAC,GAAGd,cAAc,CAAC,CAAC;EAEpD,MAAMI,QAAQ,GAAGK,KAAK,KAAKC,YAAY;EACvC,MAAMK,KAAK,GAAGZ,cAAc,CAACC,QAAQ,EAAEC,UAAU,CAAC;EAElD,MAAMW,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAI,CAACX,UAAU,EAAE;MACfQ,QAAQ,CAACH,YAAY,CAAC;IACxB;EACF,CAAC;EAED,MAAMO,eAAe,GAAG,CAACH,MAAM,EAAEI,OAAO,EAAEC,OAAO,EAAEL,MAAM,EAAEI,OAAO,GAAGH,KAAK,CAAC,EAAEJ,KAAK,CAAC;EAEnF,oBACET,IAAA,CAACH,SAAS;IAAA,GAAKa,cAAc;IAAEQ,QAAQ,EAAEf,UAAW;IAACgB,OAAO,EAAEL,WAAY;IAACL,KAAK,EAAEM,eAAgB;IAAAT,QAAA,EAC/FA;EAAQ,CACA,CAAC;AAEhB","ignoreList":[]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { TabsVariants } from "./variants";
|
|
3
|
-
export interface Tab {
|
|
4
|
-
value:
|
|
3
|
+
export interface Tab<T> {
|
|
4
|
+
value: T;
|
|
5
5
|
label: string;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
}
|
|
8
|
-
interface TabsProps {
|
|
9
|
-
tabs: Tab[];
|
|
10
|
-
defaultValue?:
|
|
11
|
-
value?:
|
|
12
|
-
|
|
8
|
+
interface TabsProps<T> {
|
|
9
|
+
tabs: Tab<T>[];
|
|
10
|
+
defaultValue?: T;
|
|
11
|
+
value?: T;
|
|
12
|
+
onChange?: (value: T) => void;
|
|
13
13
|
variant?: keyof typeof TabsVariants;
|
|
14
14
|
}
|
|
15
|
-
export declare function Tabs(props: TabsProps): React.JSX.Element;
|
|
15
|
+
export declare function Tabs<T>(props: TabsProps<T>): React.JSX.Element;
|
|
16
16
|
export {};
|
|
17
17
|
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,GAAG;
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,SAAS,CAAC,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,OAAO,YAAY,CAAC;CACrC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,qBA8B1C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TabsRoot } from "./tabs-root";
|
|
2
1
|
import { TabsList } from "./tabs-list";
|
|
2
|
+
import { TabsRoot } from "./tabs-root";
|
|
3
3
|
import { TabsTrigger } from "./tabs-trigger";
|
|
4
4
|
import { TabsTriggerText } from "./tabs-trigger-text";
|
|
5
5
|
export declare const TabsPrimitive: {
|
|
@@ -8,8 +8,8 @@ export declare const TabsPrimitive: {
|
|
|
8
8
|
Trigger: typeof TabsTrigger;
|
|
9
9
|
TriggerText: typeof TabsTriggerText;
|
|
10
10
|
};
|
|
11
|
-
export type { TabsPrimitiveRootProps } from "./tabs-root";
|
|
12
11
|
export type { TabsPrimitiveListProps } from "./tabs-list";
|
|
12
|
+
export type { TabsPrimitiveRootProps } from "./tabs-root";
|
|
13
13
|
export type { TabsPrimitiveTriggerProps } from "./tabs-trigger";
|
|
14
14
|
export type { TabsPrimitiveTriggerTextProps } from "./tabs-trigger-text";
|
|
15
15
|
export * from "./types";
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
import type { TabsStyles } from "./types";
|
|
3
3
|
export interface TabsPrimitiveContextValue {
|
|
4
4
|
value: string;
|
|
5
|
-
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
6
|
styles?: TabsStyles;
|
|
7
7
|
}
|
|
8
8
|
export declare const TabsPrimitiveContext: React.Context<TabsPrimitiveContextValue | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-context.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/tabs/tabs-context.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tabs-context.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/tabs/tabs-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,eAAO,MAAM,oBAAoB,iDAA8D,CAAC;AAEhG,eAAO,MAAM,cAAc,iCAM1B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type
|
|
2
|
+
import { type StyleProp, type ViewProps, type ViewStyle } from "react-native";
|
|
3
3
|
export interface TabsPrimitiveListProps extends ViewProps {
|
|
4
4
|
children: React.ReactNode;
|
|
5
5
|
style?: StyleProp<ViewStyle>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type
|
|
2
|
+
import { type StyleProp, type ViewProps, type ViewStyle } from "react-native";
|
|
3
3
|
import type { TabsStyles } from "./types";
|
|
4
4
|
export interface TabsPrimitiveRootProps extends Omit<ViewProps, "children"> {
|
|
5
5
|
children: React.ReactNode;
|
|
6
6
|
value: string;
|
|
7
|
-
|
|
7
|
+
onChange: (value: string) => void;
|
|
8
8
|
style?: StyleProp<ViewStyle>;
|
|
9
9
|
styles?: TabsStyles;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-root.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/tabs/tabs-root.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tabs-root.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/tabs/tabs-root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACzE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,sBAAsB,qBAmBrD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type
|
|
2
|
+
import { type StyleProp, type TextProps, type TextStyle } from "react-native";
|
|
3
3
|
export interface TabsPrimitiveTriggerTextProps extends TextProps {
|
|
4
4
|
children: React.ReactNode;
|
|
5
5
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-trigger-text.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/tabs/tabs-trigger-text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpF,MAAM,WAAW,6BAA8B,SAAQ,SAAS;IAC9D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,6BAA6B,
|
|
1
|
+
{"version":3,"file":"tabs-trigger-text.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/tabs/tabs-trigger-text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpF,MAAM,WAAW,6BAA8B,SAAQ,SAAS;IAC9D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,6BAA6B,qBAcnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/tabs/tabs-trigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAa,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9F,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"tabs-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/tabs/tabs-trigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAa,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9F,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAYD,wBAAgB,WAAW,CAAC,KAAK,EAAE,yBAAyB,qBAoB3D"}
|
package/package.json
CHANGED
|
@@ -2,43 +2,43 @@ import { TabsPrimitive } from "@/primitives";
|
|
|
2
2
|
import React, { useState } from "react";
|
|
3
3
|
import { TabsVariants } from "./variants";
|
|
4
4
|
|
|
5
|
-
export interface Tab {
|
|
6
|
-
value:
|
|
5
|
+
export interface Tab<T> {
|
|
6
|
+
value: T;
|
|
7
7
|
label: string;
|
|
8
8
|
disabled?: boolean;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
interface TabsProps {
|
|
12
|
-
tabs: Tab[];
|
|
13
|
-
defaultValue?:
|
|
14
|
-
value?:
|
|
15
|
-
|
|
11
|
+
interface TabsProps<T> {
|
|
12
|
+
tabs: Tab<T>[];
|
|
13
|
+
defaultValue?: T;
|
|
14
|
+
value?: T;
|
|
15
|
+
onChange?: (value: T) => void;
|
|
16
16
|
variant?: keyof typeof TabsVariants;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
export function Tabs(props: TabsProps) {
|
|
20
|
-
const { tabs, defaultValue, value: controlledValue,
|
|
19
|
+
export function Tabs<T>(props: TabsProps<T>) {
|
|
20
|
+
const { tabs, defaultValue, value: controlledValue, onChange, variant = "default" } = props;
|
|
21
21
|
|
|
22
|
-
const initialValue = defaultValue ?? tabs[0]?.value ?? "";
|
|
22
|
+
const initialValue = defaultValue ?? tabs[0]?.value ?? ("" as T);
|
|
23
23
|
const [uncontrolledValue, setUncontrolledValue] = useState(initialValue);
|
|
24
24
|
const value = controlledValue ?? uncontrolledValue;
|
|
25
25
|
|
|
26
|
-
const handleValueChange = (newValue:
|
|
26
|
+
const handleValueChange = (newValue: T) => {
|
|
27
27
|
if (controlledValue === undefined) {
|
|
28
28
|
setUncontrolledValue(newValue);
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
onChange?.(newValue);
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
const useVariantStyles = TabsVariants[variant];
|
|
34
34
|
const variantStyles = useVariantStyles();
|
|
35
35
|
|
|
36
36
|
return (
|
|
37
|
-
<TabsPrimitive.Root value={value}
|
|
37
|
+
<TabsPrimitive.Root value={String(value)} onChange={(newValue) => handleValueChange(newValue as T)} styles={variantStyles}>
|
|
38
38
|
<TabsPrimitive.List>
|
|
39
39
|
{tabs.map((tab) => (
|
|
40
|
-
<TabsPrimitive.Trigger key={tab.value} value={tab.value} isDisabled={tab.disabled}>
|
|
41
|
-
<TabsPrimitive.TriggerText value={tab.value} isDisabled={tab.disabled}>
|
|
40
|
+
<TabsPrimitive.Trigger key={String(tab.value)} value={String(tab.value)} isDisabled={tab.disabled}>
|
|
41
|
+
<TabsPrimitive.TriggerText value={String(tab.value)} isDisabled={tab.disabled}>
|
|
42
42
|
{tab.label}
|
|
43
43
|
</TabsPrimitive.TriggerText>
|
|
44
44
|
</TabsPrimitive.Trigger>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TabsRoot } from "./tabs-root";
|
|
2
1
|
import { TabsList } from "./tabs-list";
|
|
2
|
+
import { TabsRoot } from "./tabs-root";
|
|
3
3
|
import { TabsTrigger } from "./tabs-trigger";
|
|
4
4
|
import { TabsTriggerText } from "./tabs-trigger-text";
|
|
5
5
|
|
|
@@ -10,8 +10,8 @@ export const TabsPrimitive = {
|
|
|
10
10
|
TriggerText: TabsTriggerText,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export type { TabsPrimitiveRootProps } from "./tabs-root";
|
|
14
13
|
export type { TabsPrimitiveListProps } from "./tabs-list";
|
|
14
|
+
export type { TabsPrimitiveRootProps } from "./tabs-root";
|
|
15
15
|
export type { TabsPrimitiveTriggerProps } from "./tabs-trigger";
|
|
16
16
|
export type { TabsPrimitiveTriggerTextProps } from "./tabs-trigger-text";
|
|
17
17
|
export * from "./types";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { useContext } from "react";
|
|
2
2
|
import type { TabsStyles } from "./types";
|
|
3
3
|
|
|
4
4
|
export interface TabsPrimitiveContextValue {
|
|
5
5
|
value: string;
|
|
6
|
-
|
|
6
|
+
onChange: (value: string) => void;
|
|
7
7
|
styles?: TabsStyles;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export const TabsPrimitiveContext = React.createContext<TabsPrimitiveContextValue | null>(null);
|
|
11
11
|
|
|
12
12
|
export const useTabsContext = () => {
|
|
13
|
-
const context =
|
|
13
|
+
const context = useContext(TabsPrimitiveContext);
|
|
14
14
|
if (!context) {
|
|
15
15
|
throw new Error("Tabs compound components must be used within TabsPrimitive.Root");
|
|
16
16
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { View, type
|
|
2
|
+
import { View, type StyleProp, type ViewProps, type ViewStyle } from "react-native";
|
|
3
3
|
import { useTabsContext } from "./tabs-context";
|
|
4
4
|
|
|
5
5
|
export interface TabsPrimitiveListProps extends ViewProps {
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { View, type
|
|
1
|
+
import React, { useMemo } from "react";
|
|
2
|
+
import { View, type StyleProp, type ViewProps, type ViewStyle } from "react-native";
|
|
3
3
|
import { TabsPrimitiveContext } from "./tabs-context";
|
|
4
4
|
import type { TabsStyles } from "./types";
|
|
5
5
|
|
|
6
6
|
export interface TabsPrimitiveRootProps extends Omit<ViewProps, "children"> {
|
|
7
7
|
children: React.ReactNode;
|
|
8
8
|
value: string;
|
|
9
|
-
|
|
9
|
+
onChange: (value: string) => void;
|
|
10
10
|
style?: StyleProp<ViewStyle>;
|
|
11
11
|
styles?: TabsStyles;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export function TabsRoot(props: TabsPrimitiveRootProps) {
|
|
15
|
-
const { children, value,
|
|
15
|
+
const { children, value, onChange, styles, style, ...viewProps } = props;
|
|
16
16
|
|
|
17
|
-
const contextValue =
|
|
17
|
+
const contextValue = useMemo(
|
|
18
18
|
() => ({
|
|
19
19
|
value,
|
|
20
|
-
|
|
20
|
+
onChange,
|
|
21
21
|
styles,
|
|
22
22
|
}),
|
|
23
|
-
[value,
|
|
23
|
+
[value, onChange, styles]
|
|
24
24
|
);
|
|
25
25
|
|
|
26
26
|
return (
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Text, type
|
|
2
|
+
import { Text, type StyleProp, type TextProps, type TextStyle } from "react-native";
|
|
3
3
|
import { useTabsContext } from "./tabs-context";
|
|
4
4
|
|
|
5
5
|
export interface TabsPrimitiveTriggerTextProps extends TextProps {
|
|
@@ -16,11 +16,7 @@ export function TabsTriggerText(props: TabsPrimitiveTriggerTextProps) {
|
|
|
16
16
|
const isActive = value === triggerValue;
|
|
17
17
|
const state = isDisabled ? "disabled" : isActive ? "active" : "default";
|
|
18
18
|
|
|
19
|
-
const calculatedStyle = [
|
|
20
|
-
styles?.triggerText?.default,
|
|
21
|
-
styles?.triggerText?.[state],
|
|
22
|
-
style,
|
|
23
|
-
];
|
|
19
|
+
const calculatedStyle = [styles?.triggerText?.default, styles?.triggerText?.[state], style];
|
|
24
20
|
|
|
25
21
|
return (
|
|
26
22
|
<Text {...textProps} style={calculatedStyle}>
|
|
@@ -10,10 +10,7 @@ export interface TabsPrimitiveTriggerProps extends PressableProps {
|
|
|
10
10
|
style?: StyleProp<ViewStyle>;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
const calculateState = (
|
|
14
|
-
isActive: boolean,
|
|
15
|
-
isDisabled: boolean | undefined
|
|
16
|
-
): TabsState => {
|
|
13
|
+
const calculateState = (isActive: boolean, isDisabled: boolean | undefined): TabsState => {
|
|
17
14
|
if (isDisabled) {
|
|
18
15
|
return "disabled";
|
|
19
16
|
}
|
|
@@ -25,30 +22,21 @@ const calculateState = (
|
|
|
25
22
|
|
|
26
23
|
export function TabsTrigger(props: TabsPrimitiveTriggerProps) {
|
|
27
24
|
const { children, value: triggerValue, isDisabled, style, ...pressableProps } = props;
|
|
28
|
-
const { value,
|
|
25
|
+
const { value, onChange, styles } = useTabsContext();
|
|
29
26
|
|
|
30
27
|
const isActive = value === triggerValue;
|
|
31
28
|
const state = calculateState(isActive, isDisabled);
|
|
32
29
|
|
|
33
30
|
const handlePress = () => {
|
|
34
31
|
if (!isDisabled) {
|
|
35
|
-
|
|
32
|
+
onChange(triggerValue);
|
|
36
33
|
}
|
|
37
34
|
};
|
|
38
35
|
|
|
39
|
-
const calculatedStyle = [
|
|
40
|
-
styles?.trigger?.default,
|
|
41
|
-
styles?.trigger?.[state],
|
|
42
|
-
style,
|
|
43
|
-
];
|
|
36
|
+
const calculatedStyle = [styles?.trigger?.default, styles?.trigger?.[state], style];
|
|
44
37
|
|
|
45
38
|
return (
|
|
46
|
-
<Pressable
|
|
47
|
-
{...pressableProps}
|
|
48
|
-
disabled={isDisabled}
|
|
49
|
-
onPress={handlePress}
|
|
50
|
-
style={calculatedStyle}
|
|
51
|
-
>
|
|
39
|
+
<Pressable {...pressableProps} disabled={isDisabled} onPress={handlePress} style={calculatedStyle}>
|
|
52
40
|
{children}
|
|
53
41
|
</Pressable>
|
|
54
42
|
);
|