@cdx-ui/primitives 0.0.1-beta.171 → 0.0.1-beta.172

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 (64) hide show
  1. package/lib/commonjs/accordion/Accordion.js +59 -0
  2. package/lib/commonjs/accordion/Accordion.js.map +1 -0
  3. package/lib/commonjs/accordion/AccordionItem.js +68 -0
  4. package/lib/commonjs/accordion/AccordionItem.js.map +1 -0
  5. package/lib/commonjs/accordion/AccordionPanel.js +71 -0
  6. package/lib/commonjs/accordion/AccordionPanel.js.map +1 -0
  7. package/lib/commonjs/accordion/AccordionTrigger.js +122 -0
  8. package/lib/commonjs/accordion/AccordionTrigger.js.map +1 -0
  9. package/lib/commonjs/accordion/context.js +26 -0
  10. package/lib/commonjs/accordion/context.js.map +1 -0
  11. package/lib/commonjs/accordion/index.js +59 -0
  12. package/lib/commonjs/accordion/index.js.map +1 -0
  13. package/lib/commonjs/accordion/types.js +6 -0
  14. package/lib/commonjs/accordion/types.js.map +1 -0
  15. package/lib/commonjs/accordion/utils.js +24 -0
  16. package/lib/commonjs/accordion/utils.js.map +1 -0
  17. package/lib/commonjs/index.js +12 -0
  18. package/lib/commonjs/index.js.map +1 -1
  19. package/lib/module/accordion/Accordion.js +55 -0
  20. package/lib/module/accordion/Accordion.js.map +1 -0
  21. package/lib/module/accordion/AccordionItem.js +64 -0
  22. package/lib/module/accordion/AccordionItem.js.map +1 -0
  23. package/lib/module/accordion/AccordionPanel.js +67 -0
  24. package/lib/module/accordion/AccordionPanel.js.map +1 -0
  25. package/lib/module/accordion/AccordionTrigger.js +118 -0
  26. package/lib/module/accordion/AccordionTrigger.js.map +1 -0
  27. package/lib/module/accordion/context.js +20 -0
  28. package/lib/module/accordion/context.js.map +1 -0
  29. package/lib/module/accordion/index.js +8 -0
  30. package/lib/module/accordion/index.js.map +1 -0
  31. package/lib/module/accordion/types.js +4 -0
  32. package/lib/module/accordion/types.js.map +1 -0
  33. package/lib/module/accordion/utils.js +19 -0
  34. package/lib/module/accordion/utils.js.map +1 -0
  35. package/lib/module/index.js +1 -0
  36. package/lib/module/index.js.map +1 -1
  37. package/lib/typescript/accordion/Accordion.d.ts +8 -0
  38. package/lib/typescript/accordion/Accordion.d.ts.map +1 -0
  39. package/lib/typescript/accordion/AccordionItem.d.ts +8 -0
  40. package/lib/typescript/accordion/AccordionItem.d.ts.map +1 -0
  41. package/lib/typescript/accordion/AccordionPanel.d.ts +7 -0
  42. package/lib/typescript/accordion/AccordionPanel.d.ts.map +1 -0
  43. package/lib/typescript/accordion/AccordionTrigger.d.ts +6 -0
  44. package/lib/typescript/accordion/AccordionTrigger.d.ts.map +1 -0
  45. package/lib/typescript/accordion/context.d.ts +6 -0
  46. package/lib/typescript/accordion/context.d.ts.map +1 -0
  47. package/lib/typescript/accordion/index.d.ts +7 -0
  48. package/lib/typescript/accordion/index.d.ts.map +1 -0
  49. package/lib/typescript/accordion/types.d.ts +50 -0
  50. package/lib/typescript/accordion/types.d.ts.map +1 -0
  51. package/lib/typescript/accordion/utils.d.ts +4 -0
  52. package/lib/typescript/accordion/utils.d.ts.map +1 -0
  53. package/lib/typescript/index.d.ts +1 -0
  54. package/lib/typescript/index.d.ts.map +1 -1
  55. package/package.json +5 -3
  56. package/src/accordion/Accordion.tsx +72 -0
  57. package/src/accordion/AccordionItem.tsx +70 -0
  58. package/src/accordion/AccordionPanel.tsx +72 -0
  59. package/src/accordion/AccordionTrigger.tsx +120 -0
  60. package/src/accordion/context.tsx +22 -0
  61. package/src/accordion/index.ts +21 -0
  62. package/src/accordion/types.ts +56 -0
  63. package/src/accordion/utils.ts +22 -0
  64. package/src/index.ts +1 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useCallback, useId, useMemo } from 'react';
4
+ import { View } from 'react-native';
5
+ import { Slot } from '../slot';
6
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
7
+ import { AccordionItemContext, useAccordionContext } from './context';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ export const AccordionItemRoot = /*#__PURE__*/forwardRef(({
10
+ asChild,
11
+ children,
12
+ className,
13
+ style,
14
+ value,
15
+ disabled = false,
16
+ ...props
17
+ }, ref) => {
18
+ const {
19
+ groupState,
20
+ type,
21
+ collapsible,
22
+ isDisabled: groupDisabled
23
+ } = useAccordionContext();
24
+ const reactId = useId().replace(/[^a-zA-Z0-9_-]/g, '');
25
+ const triggerId = `accordion-${reactId}-trigger`;
26
+ const panelId = `accordion-${reactId}-panel`;
27
+ const isExpanded = groupState.expandedKeys.has(value);
28
+ const isDisabled = disabled || groupDisabled;
29
+ const toggle = useCallback(() => {
30
+ if (isDisabled) {
31
+ return;
32
+ }
33
+ if (type === 'single' && !collapsible && isExpanded) {
34
+ return;
35
+ }
36
+ groupState.toggleKey(value);
37
+ }, [isDisabled, type, collapsible, isExpanded, groupState, value]);
38
+ const contextValue = useMemo(() => ({
39
+ value,
40
+ isExpanded,
41
+ isDisabled,
42
+ triggerId,
43
+ panelId,
44
+ toggle
45
+ }), [value, isExpanded, isDisabled, triggerId, panelId, toggle]);
46
+ const Comp = asChild ? Slot : View;
47
+ return /*#__PURE__*/_jsx(AccordionItemContext.Provider, {
48
+ value: contextValue,
49
+ children: /*#__PURE__*/_jsx(Comp, {
50
+ ref: ref,
51
+ className: className,
52
+ style: style,
53
+ ...props,
54
+ ...mergeDataAttributes(props, dataAttributes({
55
+ slot: 'accordion-item',
56
+ state: isExpanded ? 'open' : 'closed',
57
+ disabled: isDisabled
58
+ })),
59
+ children: children
60
+ })
61
+ });
62
+ });
63
+ AccordionItemRoot.displayName = 'AccordionItemRoot';
64
+ //# sourceMappingURL=AccordionItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","useId","useMemo","View","Slot","dataAttributes","mergeDataAttributes","AccordionItemContext","useAccordionContext","jsx","_jsx","AccordionItemRoot","asChild","children","className","style","value","disabled","props","ref","groupState","type","collapsible","isDisabled","groupDisabled","reactId","replace","triggerId","panelId","isExpanded","expandedKeys","has","toggle","toggleKey","contextValue","Comp","Provider","slot","state","displayName"],"sourceRoot":"../../../src","sources":["accordion/AccordionItem.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,WAAW,EAAEC,KAAK,EAAEC,OAAO,QAAQ,OAAO;AAC/D,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,oBAAoB,EAAEC,mBAAmB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQtE,OAAO,MAAMC,iBAAiB,gBAAGZ,UAAU,CACzC,CAAC;EAAEa,OAAO;EAAEC,QAAQ;EAAEC,SAAS;EAAEC,KAAK;EAAEC,KAAK;EAAEC,QAAQ,GAAG,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACnF,MAAM;IAAEC,UAAU;IAAEC,IAAI;IAAEC,WAAW;IAAEC,UAAU,EAAEC;EAAc,CAAC,GAAGhB,mBAAmB,CAAC,CAAC;EAC1F,MAAMiB,OAAO,GAAGxB,KAAK,CAAC,CAAC,CAACyB,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;EACtD,MAAMC,SAAS,GAAG,aAAaF,OAAO,UAAU;EAChD,MAAMG,OAAO,GAAG,aAAaH,OAAO,QAAQ;EAE5C,MAAMI,UAAU,GAAGT,UAAU,CAACU,YAAY,CAACC,GAAG,CAACf,KAAK,CAAC;EACrD,MAAMO,UAAU,GAAGN,QAAQ,IAAIO,aAAa;EAE5C,MAAMQ,MAAM,GAAGhC,WAAW,CAAC,MAAM;IAC/B,IAAIuB,UAAU,EAAE;MACd;IACF;IACA,IAAIF,IAAI,KAAK,QAAQ,IAAI,CAACC,WAAW,IAAIO,UAAU,EAAE;MACnD;IACF;IACAT,UAAU,CAACa,SAAS,CAACjB,KAAK,CAAC;EAC7B,CAAC,EAAE,CAACO,UAAU,EAAEF,IAAI,EAAEC,WAAW,EAAEO,UAAU,EAAET,UAAU,EAAEJ,KAAK,CAAC,CAAC;EAElE,MAAMkB,YAAY,GAAGhC,OAAO,CAC1B,OAAO;IACLc,KAAK;IACLa,UAAU;IACVN,UAAU;IACVI,SAAS;IACTC,OAAO;IACPI;EACF,CAAC,CAAC,EACF,CAAChB,KAAK,EAAEa,UAAU,EAAEN,UAAU,EAAEI,SAAS,EAAEC,OAAO,EAAEI,MAAM,CAC5D,CAAC;EAED,MAAMG,IAAI,GAAGvB,OAAO,GAAGR,IAAI,GAAGD,IAAI;EAElC,oBACEO,IAAA,CAACH,oBAAoB,CAAC6B,QAAQ;IAACpB,KAAK,EAAEkB,YAAa;IAAArB,QAAA,eACjDH,IAAA,CAACyB,IAAI;MACHhB,GAAG,EAAEA,GAAI;MACTL,SAAS,EAAEA,SAAU;MACrBC,KAAK,EAAEA,KAAM;MAAA,GACTG,KAAK;MAAA,GACLZ,mBAAmB,CACrBY,KAAK,EACLb,cAAc,CAAC;QACbgC,IAAI,EAAE,gBAAgB;QACtBC,KAAK,EAAET,UAAU,GAAG,MAAM,GAAG,QAAQ;QACrCZ,QAAQ,EAAEM;MACZ,CAAC,CACH,CAAC;MAAAV,QAAA,EAEAA;IAAQ,CACL;EAAC,CACsB,CAAC;AAEpC,CACF,CAAC;AAEDF,iBAAiB,CAAC4B,WAAW,GAAG,mBAAmB","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ import { forwardRef } from 'react';
4
+ import { Platform, View } from 'react-native';
5
+ import { useDisclosure } from '@react-native-aria/disclosure';
6
+ import { Slot } from '../slot';
7
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
8
+ import { useAccordionItemContext } from './context';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ export const AccordionPanelRoot = /*#__PURE__*/forwardRef(({
11
+ asChild,
12
+ children,
13
+ className,
14
+ style,
15
+ ...props
16
+ }, ref) => {
17
+ const {
18
+ isExpanded,
19
+ isDisabled,
20
+ triggerId,
21
+ panelId,
22
+ toggle
23
+ } = useAccordionItemContext();
24
+ const toggleState = {
25
+ isSelected: isExpanded,
26
+ defaultSelected: false,
27
+ setSelected: selected => {
28
+ if (selected !== isExpanded) {
29
+ toggle();
30
+ }
31
+ },
32
+ toggle
33
+ };
34
+ const {
35
+ disclosureProps
36
+ } = useDisclosure({}, toggleState);
37
+ const Comp = asChild ? Slot : View;
38
+ if (!isExpanded) {
39
+ return null;
40
+ }
41
+ const platformA11yProps = Platform.OS === 'web' ? {
42
+ id: panelId,
43
+ nativeID: panelId,
44
+ role: 'region',
45
+ 'aria-labelledby': triggerId
46
+ } : {
47
+ nativeID: panelId,
48
+ accessibilityLabelledBy: triggerId,
49
+ accessibilityRole: 'none'
50
+ };
51
+ return /*#__PURE__*/_jsx(Comp, {
52
+ ref: ref,
53
+ className: className,
54
+ style: style,
55
+ ...disclosureProps,
56
+ ...props,
57
+ ...mergeDataAttributes(props, dataAttributes({
58
+ slot: 'accordion-panel',
59
+ state: 'open',
60
+ disabled: isDisabled
61
+ })),
62
+ ...platformA11yProps,
63
+ children: children
64
+ });
65
+ });
66
+ AccordionPanelRoot.displayName = 'AccordionPanelRoot';
67
+ //# sourceMappingURL=AccordionPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","Platform","View","useDisclosure","Slot","dataAttributes","mergeDataAttributes","useAccordionItemContext","jsx","_jsx","AccordionPanelRoot","asChild","children","className","style","props","ref","isExpanded","isDisabled","triggerId","panelId","toggle","toggleState","isSelected","defaultSelected","setSelected","selected","disclosureProps","Comp","platformA11yProps","OS","id","nativeID","role","accessibilityLabelledBy","accessibilityRole","slot","state","disabled","displayName"],"sourceRoot":"../../../src","sources":["accordion/AccordionPanel.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,IAAI,QAAQ,cAAc;AAC7C,SAASC,aAAa,QAAQ,+BAA+B;AAC7D,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,uBAAuB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOpD,OAAO,MAAMC,kBAAkB,gBAAGV,UAAU,CAC1C,CAAC;EAAEW,OAAO;EAAEC,QAAQ;EAAEC,SAAS;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC1D,MAAM;IAAEC,UAAU;IAAEC,UAAU;IAAEC,SAAS;IAAEC,OAAO;IAAEC;EAAO,CAAC,GAAGd,uBAAuB,CAAC,CAAC;EAExF,MAAMe,WAAW,GAAG;IAClBC,UAAU,EAAEN,UAAU;IACtBO,eAAe,EAAE,KAAK;IACtBC,WAAW,EAAGC,QAAiB,IAAK;MAClC,IAAIA,QAAQ,KAAKT,UAAU,EAAE;QAC3BI,MAAM,CAAC,CAAC;MACV;IACF,CAAC;IACDA;EACF,CAAC;EAED,MAAM;IAAEM;EAAgB,CAAC,GAAGxB,aAAa,CAAC,CAAC,CAAC,EAAEmB,WAAW,CAAC;EAC1D,MAAMM,IAAI,GAAGjB,OAAO,GAAGP,IAAI,GAAGF,IAAI;EAElC,IAAI,CAACe,UAAU,EAAE;IACf,OAAO,IAAI;EACb;EAEA,MAAMY,iBAAiB,GACrB5B,QAAQ,CAAC6B,EAAE,KAAK,KAAK,GACjB;IACEC,EAAE,EAAEX,OAAO;IACXY,QAAQ,EAAEZ,OAAO;IACjBa,IAAI,EAAE,QAAiB;IACvB,iBAAiB,EAAEd;EACrB,CAAC,GACD;IACEa,QAAQ,EAAEZ,OAAO;IACjBc,uBAAuB,EAAEf,SAAS;IAClCgB,iBAAiB,EAAE;EACrB,CAAC;EAEP,oBACE1B,IAAA,CAACmB,IAAI;IACHZ,GAAG,EAAEA,GAAI;IACTH,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IAAA,GACTa,eAAe;IAAA,GACfZ,KAAK;IAAA,GACLT,mBAAmB,CACrBS,KAAK,EACLV,cAAc,CAAC;MACb+B,IAAI,EAAE,iBAAiB;MACvBC,KAAK,EAAE,MAAM;MACbC,QAAQ,EAAEpB;IACZ,CAAC,CACH,CAAC;IAAA,GACGW,iBAAiB;IAAAjB,QAAA,EAEpBA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC;AAEDF,kBAAkB,CAAC6B,WAAW,GAAG,oBAAoB","ignoreList":[]}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useMemo } from 'react';
4
+ import { Platform, Pressable } from 'react-native';
5
+ import { composeEventHandlers } from '@cdx-ui/utils';
6
+ import { useFocus, useFocusRing } from '@react-native-aria/focus';
7
+ import { usePress, useHover } from '@react-native-aria/interactions';
8
+ import { useDisclosureButton } from '@react-native-aria/disclosure';
9
+ import { Slot } from '../slot';
10
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
11
+ import { useAccordionItemContext } from './context';
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ export const AccordionTriggerRoot = /*#__PURE__*/forwardRef(({
14
+ asChild,
15
+ children,
16
+ className,
17
+ style,
18
+ onPress,
19
+ onPressIn,
20
+ onPressOut,
21
+ onHoverIn,
22
+ onHoverOut,
23
+ onFocus,
24
+ onBlur,
25
+ accessibilityLabel,
26
+ ...props
27
+ }, ref) => {
28
+ const {
29
+ isExpanded,
30
+ isDisabled,
31
+ triggerId,
32
+ panelId,
33
+ toggle
34
+ } = useAccordionItemContext();
35
+ const toggleState = useMemo(() => ({
36
+ isSelected: isExpanded,
37
+ defaultSelected: false,
38
+ setSelected: selected => {
39
+ if (selected !== isExpanded) {
40
+ toggle();
41
+ }
42
+ },
43
+ toggle
44
+ }), [isExpanded, toggle]);
45
+ const {
46
+ buttonProps
47
+ } = useDisclosureButton({}, toggleState);
48
+ const {
49
+ focusProps,
50
+ isFocused
51
+ } = useFocus();
52
+ const {
53
+ focusProps: focusRingProps,
54
+ isFocusVisible
55
+ } = useFocusRing();
56
+ const {
57
+ pressProps,
58
+ isPressed
59
+ } = usePress({
60
+ isDisabled
61
+ });
62
+ const {
63
+ hoverProps,
64
+ isHovered
65
+ } = useHover({
66
+ isDisabled
67
+ });
68
+ const Comp = asChild ? Slot : Pressable;
69
+ const platformA11yProps = Platform.OS === 'web' ? {
70
+ id: triggerId,
71
+ role: 'button',
72
+ 'aria-expanded': isExpanded,
73
+ 'aria-disabled': isDisabled || undefined,
74
+ 'aria-controls': isExpanded ? panelId : undefined
75
+ } : {
76
+ nativeID: triggerId,
77
+ accessibilityRole: 'button',
78
+ accessibilityState: {
79
+ expanded: isExpanded,
80
+ disabled: isDisabled
81
+ },
82
+ accessibilityControls: isExpanded ? panelId : undefined
83
+ };
84
+ const {
85
+ onPress: disclosureOnPress,
86
+ ...disclosureRestProps
87
+ } = buttonProps;
88
+ const disclosureProps = Platform.OS === 'web' ? {} : disclosureRestProps;
89
+ return /*#__PURE__*/_jsx(Comp, {
90
+ ref: ref,
91
+ disabled: isDisabled,
92
+ accessibilityLabel: accessibilityLabel,
93
+ className: className,
94
+ style: style,
95
+ ...props,
96
+ ...disclosureProps,
97
+ ...platformA11yProps,
98
+ ...mergeDataAttributes(props, dataAttributes({
99
+ slot: 'accordion-trigger',
100
+ state: isExpanded ? 'open' : 'closed',
101
+ disabled: isDisabled,
102
+ hover: isHovered,
103
+ active: isPressed,
104
+ focus: isFocused,
105
+ focusVisible: isFocusVisible
106
+ })),
107
+ onPressIn: composeEventHandlers(onPressIn, pressProps.onPressIn),
108
+ onPressOut: composeEventHandlers(onPressOut, pressProps.onPressOut),
109
+ onHoverIn: composeEventHandlers(onHoverIn, hoverProps.onHoverIn),
110
+ onHoverOut: composeEventHandlers(onHoverOut, hoverProps.onHoverOut),
111
+ onPress: composeEventHandlers(onPress, disclosureOnPress),
112
+ onFocus: composeEventHandlers(onFocus, focusProps.onFocus, focusRingProps.onFocus),
113
+ onBlur: composeEventHandlers(onBlur, focusProps.onBlur, focusRingProps.onBlur),
114
+ children: children
115
+ });
116
+ });
117
+ AccordionTriggerRoot.displayName = 'AccordionTriggerRoot';
118
+ //# sourceMappingURL=AccordionTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useMemo","Platform","Pressable","composeEventHandlers","useFocus","useFocusRing","usePress","useHover","useDisclosureButton","Slot","dataAttributes","mergeDataAttributes","useAccordionItemContext","jsx","_jsx","AccordionTriggerRoot","asChild","children","className","style","onPress","onPressIn","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","accessibilityLabel","props","ref","isExpanded","isDisabled","triggerId","panelId","toggle","toggleState","isSelected","defaultSelected","setSelected","selected","buttonProps","focusProps","isFocused","focusRingProps","isFocusVisible","pressProps","isPressed","hoverProps","isHovered","Comp","platformA11yProps","OS","id","role","undefined","nativeID","accessibilityRole","accessibilityState","expanded","disabled","accessibilityControls","disclosureOnPress","disclosureRestProps","disclosureProps","slot","state","hover","active","focus","focusVisible","displayName"],"sourceRoot":"../../../src","sources":["accordion/AccordionTrigger.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import { createContext, useContext } from 'react';
4
+ export const AccordionContext = /*#__PURE__*/createContext(null);
5
+ export const AccordionItemContext = /*#__PURE__*/createContext(null);
6
+ export function useAccordionContext() {
7
+ const context = useContext(AccordionContext);
8
+ if (!context) {
9
+ throw new Error('Accordion compound components must be used within Accordion');
10
+ }
11
+ return context;
12
+ }
13
+ export function useAccordionItemContext() {
14
+ const context = useContext(AccordionItemContext);
15
+ if (!context) {
16
+ throw new Error('Accordion.Item sub-components must be used within Accordion.Item');
17
+ }
18
+ return context;
19
+ }
20
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","AccordionContext","AccordionItemContext","useAccordionContext","context","Error","useAccordionItemContext"],"sourceRoot":"../../../src","sources":["accordion/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAGjD,OAAO,MAAMC,gBAAgB,gBAAGF,aAAa,CAAgC,IAAI,CAAC;AAElF,OAAO,MAAMG,oBAAoB,gBAAGH,aAAa,CAAoC,IAAI,CAAC;AAE1F,OAAO,SAASI,mBAAmBA,CAAA,EAA2B;EAC5D,MAAMC,OAAO,GAAGJ,UAAU,CAACC,gBAAgB,CAAC;EAC5C,IAAI,CAACG,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,6DAA6D,CAAC;EAChF;EACA,OAAOD,OAAO;AAChB;AAEA,OAAO,SAASE,uBAAuBA,CAAA,EAA+B;EACpE,MAAMF,OAAO,GAAGJ,UAAU,CAACE,oBAAoB,CAAC;EAChD,IAAI,CAACE,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,kEAAkE,CAAC;EACrF;EACA,OAAOD,OAAO;AAChB","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ export { AccordionContext, AccordionItemContext, useAccordionContext, useAccordionItemContext } from './context';
4
+ export { AccordionRoot } from './Accordion';
5
+ export { AccordionItemRoot } from './AccordionItem';
6
+ export { AccordionTriggerRoot } from './AccordionTrigger';
7
+ export { AccordionPanelRoot } from './AccordionPanel';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AccordionContext","AccordionItemContext","useAccordionContext","useAccordionItemContext","AccordionRoot","AccordionItemRoot","AccordionTriggerRoot","AccordionPanelRoot"],"sourceRoot":"../../../src","sources":["accordion/index.ts"],"mappings":";;AAUA,SACEA,gBAAgB,EAChBC,oBAAoB,EACpBC,mBAAmB,EACnBC,uBAAuB,QAClB,WAAW;AAElB,SAASC,aAAa,QAAiC,aAAa;AACpE,SAASC,iBAAiB,QAAqC,iBAAiB;AAChF,SAASC,oBAAoB,QAAwC,oBAAoB;AACzF,SAASC,kBAAkB,QAAsC,kBAAkB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["accordion/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ export function toExpandedKeys(value) {
4
+ if (value === undefined) {
5
+ return undefined;
6
+ }
7
+ if (Array.isArray(value)) {
8
+ return new Set(value);
9
+ }
10
+ if (value === '') {
11
+ return new Set();
12
+ }
13
+ return new Set([value]);
14
+ }
15
+ export function fromExpandedKeys(keys, type) {
16
+ const values = Array.from(keys).map(String);
17
+ return type === 'single' ? values[0] ?? '' : values;
18
+ }
19
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["toExpandedKeys","value","undefined","Array","isArray","Set","fromExpandedKeys","keys","type","values","from","map","String"],"sourceRoot":"../../../src","sources":["accordion/utils.ts"],"mappings":";;AAEA,OAAO,SAASA,cAAcA,CAACC,KAAoC,EAA2B;EAC5F,IAAIA,KAAK,KAAKC,SAAS,EAAE;IACvB,OAAOA,SAAS;EAClB;EACA,IAAIC,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,EAAE;IACxB,OAAO,IAAII,GAAG,CAACJ,KAAK,CAAC;EACvB;EACA,IAAIA,KAAK,KAAK,EAAE,EAAE;IAChB,OAAO,IAAII,GAAG,CAAS,CAAC;EAC1B;EACA,OAAO,IAAIA,GAAG,CAAS,CAACJ,KAAK,CAAC,CAAC;AACjC;AAEA,OAAO,SAASK,gBAAgBA,CAC9BC,IAA+B,EAC/BC,IAAmB,EACA;EACnB,MAAMC,MAAM,GAAGN,KAAK,CAACO,IAAI,CAACH,IAAI,CAAC,CAACI,GAAG,CAACC,MAAM,CAAC;EAC3C,OAAOJ,IAAI,KAAK,QAAQ,GAAIC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,GAAIA,MAAM;AACvD","ignoreList":[]}
@@ -34,6 +34,7 @@ export * from './tooltip';
34
34
  export * from './portal';
35
35
  export * from './progress-bar';
36
36
  export * from './radio';
37
+ export * from './accordion';
37
38
  export * from './slider';
38
39
  export { FormControlContext, useFormControlContext } from '@cdx-ui/utils';
39
40
  export { dataAttributes, mergeDataAttributes } from './utils/dataAttributes';
@@ -1 +1 @@
1
- {"version":3,"names":["MODAL_OVERLAY_Z_INDEX","NOTIFICATION_OVERLAY_Z_INDEX","OVERLAY_PLACEMENTS","getAnchoredOverlayPosition","OverlayContainer","OverlayInsetsProvider","OverlayStackProvider","useAnchorPosition","useAnchoredOverlay","useDismissOverlay","useEscapeKey","useOverlayStackRegistration","useOverlayPosition","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","assignRef","createPortalFn","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,eAAe;AAC7B,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,SACEA,qBAAqB,EACrBC,4BAA4B,EAC5BC,kBAAkB,EAElBC,0BAA0B,EAC1BC,gBAAgB,EAChBC,qBAAqB,EACrBC,oBAAoB,EACpBC,iBAAiB,EACjBC,kBAAkB,EAClBC,iBAAiB,EACjBC,YAAY,EACZC,2BAA2B,EAC3BC,kBAAkB,QAmBb,WAAW;AAClB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,UAAU;AAExB,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,wBAAwB;AAC5E,SACEC,iBAAiB,EACjBC,sBAAsB,QAEjB,2BAA2B;AAClC,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,IAAI,QAAQ,QAAQ","ignoreList":[]}
1
+ {"version":3,"names":["MODAL_OVERLAY_Z_INDEX","NOTIFICATION_OVERLAY_Z_INDEX","OVERLAY_PLACEMENTS","getAnchoredOverlayPosition","OverlayContainer","OverlayInsetsProvider","OverlayStackProvider","useAnchorPosition","useAnchoredOverlay","useDismissOverlay","useEscapeKey","useOverlayStackRegistration","useOverlayPosition","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","assignRef","createPortalFn","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,eAAe;AAC7B,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,SACEA,qBAAqB,EACrBC,4BAA4B,EAC5BC,kBAAkB,EAElBC,0BAA0B,EAC1BC,gBAAgB,EAChBC,qBAAqB,EACrBC,oBAAoB,EACpBC,iBAAiB,EACjBC,kBAAkB,EAClBC,iBAAiB,EACjBC,YAAY,EACZC,2BAA2B,EAC3BC,kBAAkB,QAmBb,WAAW;AAClB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,UAAU;AAExB,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,wBAAwB;AAC5E,SACEC,iBAAiB,EACjBC,sBAAsB,QAEjB,2BAA2B;AAClC,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,IAAI,QAAQ,QAAQ","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { View } from 'react-native';
2
+ import type { IAccordionProps } from './types';
3
+ export interface AccordionRootProps extends IAccordionProps {
4
+ asChild?: boolean;
5
+ className?: string;
6
+ }
7
+ export declare const AccordionRoot: import("react").ForwardRefExoticComponent<AccordionRootProps & import("react").RefAttributes<View>>;
8
+ //# sourceMappingURL=Accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../src/accordion/Accordion.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAKpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,qGAuDzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { View } from 'react-native';
2
+ import type { IAccordionItemProps } from './types';
3
+ export interface AccordionItemRootProps extends IAccordionItemProps {
4
+ asChild?: boolean;
5
+ className?: string;
6
+ }
7
+ export declare const AccordionItemRoot: import("react").ForwardRefExoticComponent<AccordionItemRootProps & import("react").RefAttributes<View>>;
8
+ //# sourceMappingURL=AccordionItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionItem.d.ts","sourceRoot":"","sources":["../../../src/accordion/AccordionItem.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,yGAuD7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { View } from 'react-native';
2
+ import type { IAccordionPanelProps } from './types';
3
+ export interface AccordionPanelRootProps extends IAccordionPanelProps {
4
+ asChild?: boolean;
5
+ }
6
+ export declare const AccordionPanelRoot: import("react").ForwardRefExoticComponent<AccordionPanelRootProps & import("react").RefAttributes<View>>;
7
+ //# sourceMappingURL=AccordionPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionPanel.d.ts","sourceRoot":"","sources":["../../../src/accordion/AccordionPanel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,IAAI,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,kBAAkB,0GAyD9B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { IAccordionTriggerProps } from './types';
2
+ export interface AccordionTriggerRootProps extends IAccordionTriggerProps {
3
+ className?: string;
4
+ }
5
+ export declare const AccordionTriggerRoot: import("react").ForwardRefExoticComponent<AccordionTriggerRootProps & import("react").RefAttributes<import("react-native").View>>;
6
+ //# sourceMappingURL=AccordionTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionTrigger.d.ts","sourceRoot":"","sources":["../../../src/accordion/AccordionTrigger.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,oBAAoB,mIAsGhC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { IAccordionContextValue, IAccordionItemContextValue } from './types';
2
+ export declare const AccordionContext: import("react").Context<IAccordionContextValue | null>;
3
+ export declare const AccordionItemContext: import("react").Context<IAccordionItemContextValue | null>;
4
+ export declare function useAccordionContext(): IAccordionContextValue;
5
+ export declare function useAccordionItemContext(): IAccordionItemContextValue;
6
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/accordion/context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAElF,eAAO,MAAM,gBAAgB,wDAAqD,CAAC;AAEnF,eAAO,MAAM,oBAAoB,4DAAyD,CAAC;AAE3F,wBAAgB,mBAAmB,IAAI,sBAAsB,CAM5D;AAED,wBAAgB,uBAAuB,IAAI,0BAA0B,CAMpE"}
@@ -0,0 +1,7 @@
1
+ export type { IAccordionProps, IAccordionItemProps, IAccordionTriggerProps, IAccordionPanelProps, IAccordionContextValue, IAccordionItemContextValue, AccordionType, } from './types';
2
+ export { AccordionContext, AccordionItemContext, useAccordionContext, useAccordionItemContext, } from './context';
3
+ export { AccordionRoot, type AccordionRootProps } from './Accordion';
4
+ export { AccordionItemRoot, type AccordionItemRootProps } from './AccordionItem';
5
+ export { AccordionTriggerRoot, type AccordionTriggerRootProps } from './AccordionTrigger';
6
+ export { AccordionPanelRoot, type AccordionPanelRootProps } from './AccordionPanel';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/accordion/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { PressableProps, ViewProps } from 'react-native';
3
+ import type { DisclosureGroupState } from '@react-stately/disclosure';
4
+ export type AccordionType = 'single' | 'multiple';
5
+ export interface IAccordionProps extends ViewProps {
6
+ /** Controlled expanded item value(s). */
7
+ value?: string | string[];
8
+ /** Default expanded value(s) for uncontrolled usage. */
9
+ defaultValue?: string | string[];
10
+ /** Called when expanded items change. */
11
+ onValueChange?: (value: string | string[]) => void;
12
+ /** Single-select (accordion) vs multi-select (disclosure group). @default 'single' */
13
+ type?: AccordionType;
14
+ /** When `type="single"`, allow closing the open item. @default true */
15
+ collapsible?: boolean;
16
+ /** Disables expansion for all items. */
17
+ isDisabled?: boolean;
18
+ 'aria-label'?: string;
19
+ 'aria-labelledby'?: string;
20
+ }
21
+ export interface IAccordionItemProps extends ViewProps {
22
+ /** Required stable id within the Accordion. */
23
+ value: string;
24
+ disabled?: boolean;
25
+ }
26
+ export interface IAccordionTriggerProps extends PressableProps {
27
+ children?: ReactNode;
28
+ asChild?: boolean;
29
+ }
30
+ export interface IAccordionPanelProps extends ViewProps {
31
+ children?: ReactNode;
32
+ className?: string;
33
+ }
34
+ export interface IAccordionContextValue {
35
+ groupState: DisclosureGroupState;
36
+ type: AccordionType;
37
+ collapsible: boolean;
38
+ isDisabled: boolean;
39
+ }
40
+ export interface IAccordionItemContextValue {
41
+ value: string;
42
+ isExpanded: boolean;
43
+ isDisabled: boolean;
44
+ triggerId: string;
45
+ panelId: string;
46
+ toggle: () => void;
47
+ disableGutters?: boolean;
48
+ showSeparator?: boolean;
49
+ }
50
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/accordion/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElD,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,yCAAyC;IACzC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,sFAAsF;IACtF,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,oBAAoB,CAAC;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
@@ -0,0 +1,4 @@
1
+ import type { AccordionType } from './types';
2
+ export declare function toExpandedKeys(value: string | string[] | undefined): Set<string> | undefined;
3
+ export declare function fromExpandedKeys(keys: Iterable<string | number>, type: AccordionType): string | string[];
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/accordion/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAW5F;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,EAC/B,IAAI,EAAE,aAAa,GAClB,MAAM,GAAG,MAAM,EAAE,CAGnB"}
@@ -32,6 +32,7 @@ export * from './tooltip';
32
32
  export * from './portal';
33
33
  export * from './progress-bar';
34
34
  export * from './radio';
35
+ export * from './accordion';
35
36
  export * from './slider';
36
37
  export type { InteractionState } from './types';
37
38
  export { FormControlContext, useFormControlContext } from '@cdx-ui/utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,EAClB,KAAK,UAAU,EACf,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,WAAW,CAAC;AACnB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,EAClB,KAAK,UAAU,EACf,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,WAAW,CAAC;AACnB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdx-ui/primitives",
3
- "version": "0.0.1-beta.171",
3
+ "version": "0.0.1-beta.172",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -61,14 +61,16 @@
61
61
  "@react-aria/utils": "^3.33.0",
62
62
  "@react-aria/visually-hidden": "3.8.30",
63
63
  "@react-native-aria/checkbox": "0.2.10",
64
+ "@react-native-aria/disclosure": "0.2.8",
64
65
  "@react-native-aria/focus": "^0.2.9",
65
66
  "@react-native-aria/interactions": "^0.2.16",
66
67
  "@react-native-aria/radio": "0.2.13",
67
68
  "@react-stately/checkbox": "3.7.4",
69
+ "@react-stately/disclosure": "3.1.1",
68
70
  "@react-stately/radio": "3.12.0",
69
71
  "@react-stately/toggle": "3.9.4",
70
- "@cdx-ui/formatters": "0.0.1-beta.171",
71
- "@cdx-ui/utils": "0.0.1-beta.171"
72
+ "@cdx-ui/formatters": "0.0.1-beta.172",
73
+ "@cdx-ui/utils": "0.0.1-beta.172"
72
74
  },
73
75
  "devDependencies": {
74
76
  "@types/react": "19.1.17",
@@ -0,0 +1,72 @@
1
+ import { forwardRef, useMemo } from 'react';
2
+ import { View } from 'react-native';
3
+ import { useDisclosureGroupState } from '@react-stately/disclosure';
4
+ import { Slot } from '../slot';
5
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
6
+ import { AccordionContext } from './context';
7
+ import type { IAccordionProps } from './types';
8
+ import { fromExpandedKeys, toExpandedKeys } from './utils';
9
+
10
+ export interface AccordionRootProps extends IAccordionProps {
11
+ asChild?: boolean;
12
+ className?: string;
13
+ }
14
+
15
+ export const AccordionRoot = forwardRef<View, AccordionRootProps>(
16
+ (
17
+ {
18
+ asChild,
19
+ children,
20
+ className,
21
+ style,
22
+ type = 'single',
23
+ collapsible = true,
24
+ isDisabled = false,
25
+ value,
26
+ defaultValue,
27
+ onValueChange,
28
+ ...props
29
+ },
30
+ ref,
31
+ ) => {
32
+ const groupState = useDisclosureGroupState({
33
+ allowsMultipleExpanded: type === 'multiple',
34
+ isDisabled,
35
+ expandedKeys: toExpandedKeys(value),
36
+ defaultExpandedKeys: toExpandedKeys(defaultValue),
37
+ onExpandedChange: onValueChange
38
+ ? (keys) => {
39
+ onValueChange(fromExpandedKeys(keys, type));
40
+ }
41
+ : undefined,
42
+ });
43
+
44
+ const contextValue = useMemo(
45
+ () => ({
46
+ groupState,
47
+ type,
48
+ collapsible,
49
+ isDisabled,
50
+ }),
51
+ [groupState, type, collapsible, isDisabled],
52
+ );
53
+
54
+ const Comp = asChild ? Slot : View;
55
+
56
+ return (
57
+ <AccordionContext.Provider value={contextValue}>
58
+ <Comp
59
+ ref={ref}
60
+ className={className}
61
+ style={style}
62
+ {...props}
63
+ {...mergeDataAttributes(props, dataAttributes({ slot: 'accordion' }))}
64
+ >
65
+ {children}
66
+ </Comp>
67
+ </AccordionContext.Provider>
68
+ );
69
+ },
70
+ );
71
+
72
+ AccordionRoot.displayName = 'AccordionRoot';