@cdx-ui/primitives 0.0.1-beta.170 → 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 (112) 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/commonjs/slider/SliderRail.js +35 -9
  20. package/lib/commonjs/slider/SliderRail.js.map +1 -1
  21. package/lib/commonjs/slider/SliderRoot.js +155 -97
  22. package/lib/commonjs/slider/SliderRoot.js.map +1 -1
  23. package/lib/commonjs/slider/SliderThumb.js +182 -68
  24. package/lib/commonjs/slider/SliderThumb.js.map +1 -1
  25. package/lib/commonjs/slider/context.js +4 -1
  26. package/lib/commonjs/slider/context.js.map +1 -1
  27. package/lib/commonjs/slider/index.js +36 -0
  28. package/lib/commonjs/slider/index.js.map +1 -1
  29. package/lib/commonjs/slider/useSliderPointer.js +1 -1
  30. package/lib/commonjs/slider/useSliderPointer.js.map +1 -1
  31. package/lib/commonjs/slider/utils.js +68 -0
  32. package/lib/commonjs/slider/utils.js.map +1 -1
  33. package/lib/module/accordion/Accordion.js +55 -0
  34. package/lib/module/accordion/Accordion.js.map +1 -0
  35. package/lib/module/accordion/AccordionItem.js +64 -0
  36. package/lib/module/accordion/AccordionItem.js.map +1 -0
  37. package/lib/module/accordion/AccordionPanel.js +67 -0
  38. package/lib/module/accordion/AccordionPanel.js.map +1 -0
  39. package/lib/module/accordion/AccordionTrigger.js +118 -0
  40. package/lib/module/accordion/AccordionTrigger.js.map +1 -0
  41. package/lib/module/accordion/context.js +20 -0
  42. package/lib/module/accordion/context.js.map +1 -0
  43. package/lib/module/accordion/index.js +8 -0
  44. package/lib/module/accordion/index.js.map +1 -0
  45. package/lib/module/accordion/types.js +4 -0
  46. package/lib/module/accordion/types.js.map +1 -0
  47. package/lib/module/accordion/utils.js +19 -0
  48. package/lib/module/accordion/utils.js.map +1 -0
  49. package/lib/module/index.js +1 -0
  50. package/lib/module/index.js.map +1 -1
  51. package/lib/module/slider/SliderRail.js +35 -9
  52. package/lib/module/slider/SliderRail.js.map +1 -1
  53. package/lib/module/slider/SliderRoot.js +157 -99
  54. package/lib/module/slider/SliderRoot.js.map +1 -1
  55. package/lib/module/slider/SliderThumb.js +185 -71
  56. package/lib/module/slider/SliderThumb.js.map +1 -1
  57. package/lib/module/slider/context.js +1 -0
  58. package/lib/module/slider/context.js.map +1 -1
  59. package/lib/module/slider/index.js +2 -2
  60. package/lib/module/slider/index.js.map +1 -1
  61. package/lib/module/slider/useSliderPointer.js +1 -1
  62. package/lib/module/slider/useSliderPointer.js.map +1 -1
  63. package/lib/module/slider/utils.js +63 -0
  64. package/lib/module/slider/utils.js.map +1 -1
  65. package/lib/typescript/accordion/Accordion.d.ts +8 -0
  66. package/lib/typescript/accordion/Accordion.d.ts.map +1 -0
  67. package/lib/typescript/accordion/AccordionItem.d.ts +8 -0
  68. package/lib/typescript/accordion/AccordionItem.d.ts.map +1 -0
  69. package/lib/typescript/accordion/AccordionPanel.d.ts +7 -0
  70. package/lib/typescript/accordion/AccordionPanel.d.ts.map +1 -0
  71. package/lib/typescript/accordion/AccordionTrigger.d.ts +6 -0
  72. package/lib/typescript/accordion/AccordionTrigger.d.ts.map +1 -0
  73. package/lib/typescript/accordion/context.d.ts +6 -0
  74. package/lib/typescript/accordion/context.d.ts.map +1 -0
  75. package/lib/typescript/accordion/index.d.ts +7 -0
  76. package/lib/typescript/accordion/index.d.ts.map +1 -0
  77. package/lib/typescript/accordion/types.d.ts +50 -0
  78. package/lib/typescript/accordion/types.d.ts.map +1 -0
  79. package/lib/typescript/accordion/utils.d.ts +4 -0
  80. package/lib/typescript/accordion/utils.d.ts.map +1 -0
  81. package/lib/typescript/index.d.ts +1 -0
  82. package/lib/typescript/index.d.ts.map +1 -1
  83. package/lib/typescript/slider/SliderRail.d.ts.map +1 -1
  84. package/lib/typescript/slider/SliderRoot.d.ts +2 -2
  85. package/lib/typescript/slider/SliderRoot.d.ts.map +1 -1
  86. package/lib/typescript/slider/SliderThumb.d.ts.map +1 -1
  87. package/lib/typescript/slider/context.d.ts +53 -9
  88. package/lib/typescript/slider/context.d.ts.map +1 -1
  89. package/lib/typescript/slider/index.d.ts +4 -4
  90. package/lib/typescript/slider/index.d.ts.map +1 -1
  91. package/lib/typescript/slider/types.d.ts +44 -8
  92. package/lib/typescript/slider/types.d.ts.map +1 -1
  93. package/lib/typescript/slider/utils.d.ts +8 -0
  94. package/lib/typescript/slider/utils.d.ts.map +1 -1
  95. package/package.json +5 -3
  96. package/src/accordion/Accordion.tsx +72 -0
  97. package/src/accordion/AccordionItem.tsx +70 -0
  98. package/src/accordion/AccordionPanel.tsx +72 -0
  99. package/src/accordion/AccordionTrigger.tsx +120 -0
  100. package/src/accordion/context.tsx +22 -0
  101. package/src/accordion/index.ts +21 -0
  102. package/src/accordion/types.ts +56 -0
  103. package/src/accordion/utils.ts +22 -0
  104. package/src/index.ts +1 -0
  105. package/src/slider/SliderRail.tsx +56 -8
  106. package/src/slider/SliderRoot.tsx +255 -136
  107. package/src/slider/SliderThumb.tsx +240 -88
  108. package/src/slider/context.tsx +53 -9
  109. package/src/slider/index.ts +9 -2
  110. package/src/slider/types.ts +49 -8
  111. package/src/slider/useSliderPointer.ts +1 -1
  112. package/src/slider/utils.ts +76 -0
@@ -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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderRail.d.ts","sourceRoot":"","sources":["../../../src/slider/SliderRail.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,IAAI,EAIL,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGxD,MAAM,WAAW,eAAgB,SAAQ,wBAAwB;CAAG;AAEpE,eAAO,MAAM,UAAU,kGAiHtB,CAAC"}
1
+ {"version":3,"file":"SliderRail.d.ts","sourceRoot":"","sources":["../../../src/slider/SliderRail.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,IAAI,EAIL,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAIxD,MAAM,WAAW,eAAgB,SAAQ,wBAAwB;CAAG;AAEpE,eAAO,MAAM,UAAU,kGAgKtB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { View } from 'react-native';
2
- import type { InterfaceSliderProps } from './types';
3
- export interface SliderRootProps extends InterfaceSliderProps {
2
+ import type { SliderRootImplementationProps } from './types';
3
+ export interface SliderRootProps extends SliderRootImplementationProps {
4
4
  readonly asChild?: boolean;
5
5
  }
6
6
  export declare const SliderRoot: import("react").ForwardRefExoticComponent<SliderRootProps & import("react").RefAttributes<View>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SliderRoot.d.ts","sourceRoot":"","sources":["../../../src/slider/SliderRoot.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,IAAI,EAIL,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAKpD,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,kGAiPtB,CAAC"}
1
+ {"version":3,"file":"SliderRoot.d.ts","sourceRoot":"","sources":["../../../src/slider/SliderRoot.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,IAAI,EAAkB,MAAM,cAAc,CAAC;AAK9D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAY7D,MAAM,WAAW,eAAgB,SAAQ,6BAA6B;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AASD,eAAO,MAAM,UAAU,kGAiWtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderThumb.d.ts","sourceRoot":"","sources":["../../../src/slider/SliderThumb.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,IAAI,EAKL,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAIzD,MAAM,WAAW,gBAAiB,SAAQ,yBAAyB;CAAG;AAEtE,eAAO,MAAM,WAAW,mGAiPvB,CAAC"}
1
+ {"version":3,"file":"SliderThumb.d.ts","sourceRoot":"","sources":["../../../src/slider/SliderThumb.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,IAAI,EAML,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AA0BzD,MAAM,WAAW,gBAAiB,SAAQ,yBAAyB;CAAG;AAEtE,eAAO,MAAM,WAAW,mGAkXvB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { RefObject } from 'react';
2
2
  import type { View } from 'react-native';
3
- import type { SliderOrientation } from './types';
3
+ import type { SliderAccessibilityValue, SliderOrientation } from './types';
4
4
  export interface SliderTrackLayout {
5
5
  readonly width: number;
6
6
  readonly height: number;
@@ -8,30 +8,74 @@ export interface SliderTrackLayout {
8
8
  readonly y: number;
9
9
  }
10
10
  export interface SliderContextValue {
11
- readonly value: number;
11
+ readonly values: readonly number[];
12
12
  readonly min: number;
13
13
  readonly max: number;
14
14
  readonly step: number;
15
- readonly percent: number;
16
15
  readonly orientation: SliderOrientation;
17
16
  readonly isDisabled: boolean;
18
- readonly isDragging: boolean;
19
- readonly isHovered: boolean;
20
- readonly isFocused: boolean;
17
+ readonly draggingIndex: number | null;
18
+ readonly hoveredIndex: number | null;
19
+ readonly focusedIndex: number | null;
21
20
  readonly trackLayout: SliderTrackLayout | null;
22
21
  readonly thumbSize: number;
23
- readonly setValue: (value: number, complete?: boolean) => void;
24
- readonly setValueFromRatio: (ratio: number, complete?: boolean) => void;
22
+ readonly thumbCount: number;
23
+ readonly groupAccessibilityLabel?: string;
24
+ readonly accessibilityValueProp?: SliderAccessibilityValue;
25
+ readonly getThumbPercent: (index: number) => number;
26
+ readonly getThumbMinValue: (index: number) => number;
27
+ readonly getThumbMaxValue: (index: number) => number;
28
+ readonly setThumbValue: (index: number, value: number, complete?: boolean) => void;
29
+ readonly setThumbValueFromRatio: (index: number, ratio: number, complete?: boolean) => void;
30
+ readonly setNearestThumbValueFromRatio: (ratio: number, complete?: boolean) => void;
25
31
  readonly setTrackLayout: (layout: SliderTrackLayout) => void;
26
32
  readonly setThumbSize: (size: number) => void;
33
+ readonly setDraggingIndex: (index: number | null) => void;
34
+ readonly setHoveredIndex: (index: number | null) => void;
35
+ readonly setFocusedIndex: (index: number | null) => void;
36
+ readonly getThumbValueLabel: (index: number) => string;
37
+ readonly registerThumb: (index: number) => () => void;
38
+ readonly isThumbDragging: (index: number) => boolean;
39
+ /** @deprecated Use `values[0]` */
40
+ readonly value: number;
41
+ /** @deprecated Use `getThumbPercent(0)` */
42
+ readonly percent: number;
43
+ /** @deprecated Use `draggingIndex !== null` */
44
+ readonly isDragging: boolean;
45
+ /** @deprecated Use `getThumbValueLabel(0)` */
46
+ readonly getValueLabel: () => string;
47
+ /** @deprecated Use `setThumbValue(0, …)` */
48
+ readonly setValue: (value: number, complete?: boolean) => void;
49
+ /** @deprecated Use `setNearestThumbValueFromRatio` */
50
+ readonly setValueFromRatio: (ratio: number, complete?: boolean) => void;
51
+ /** @deprecated Use per-thumb context `thumbRef` */
52
+ readonly thumbRef: RefObject<View | null>;
53
+ /** @deprecated Use `hoveredIndex !== null` */
54
+ readonly isHovered: boolean;
55
+ /** @deprecated Use `focusedIndex !== null` */
56
+ readonly isFocused: boolean;
57
+ /** @deprecated Use `setDraggingIndex` */
27
58
  readonly setIsDragging: (dragging: boolean) => void;
59
+ /** @deprecated Use `setHoveredIndex` */
28
60
  readonly setIsHovered: (hovered: boolean) => void;
61
+ /** @deprecated Use `setFocusedIndex` */
29
62
  readonly setIsFocused: (focused: boolean) => void;
30
- readonly getValueLabel: () => string;
63
+ }
64
+ export interface SliderThumbContextValue {
65
+ readonly index: number;
66
+ readonly value: number;
67
+ readonly percent: number;
68
+ readonly isDragging: boolean;
69
+ readonly isHovered: boolean;
70
+ readonly isFocused: boolean;
31
71
  readonly thumbRef: RefObject<View | null>;
32
72
  }
33
73
  export declare const SliderProvider: import("react").FunctionComponent<{
34
74
  children: import("react").ReactNode;
35
75
  value: SliderContextValue;
36
76
  }>, useSliderContext: () => SliderContextValue;
77
+ export declare const SliderThumbProvider: import("react").FunctionComponent<{
78
+ children: import("react").ReactNode;
79
+ value: SliderThumbContextValue;
80
+ }>, useSliderThumbContext: () => SliderThumbContextValue;
37
81
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/slider/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACxE,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,eAAO,MAAO,cAAc;;;IAAE,gBAAgB,0BACM,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/slider/context.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- export type { ISliderProps, ISliderRailProps, ISliderThumbProps, SliderAccessibilityValue, SliderOrientation, } from './types';
2
- export type { SliderContextValue, SliderTrackLayout } from './context';
3
- export { useSliderContext } from './context';
1
+ export type { ISliderProps, ISliderRailProps, ISliderThumbProps, SliderAccessibilityValue, SliderOrientation, SliderRangeValueProps, SliderSingleValueProps, } from './types';
2
+ export type { SliderContextValue, SliderThumbContextValue, SliderTrackLayout } from './context';
3
+ export { useSliderContext, useSliderThumbContext } from './context';
4
4
  export { SliderRoot, type SliderRootProps } from './SliderRoot';
5
5
  export { SliderRail, type SliderRailProps } from './SliderRail';
6
6
  export { SliderThumb, type SliderThumbProps } from './SliderThumb';
7
- export { getMarkerPositionStyle, getMarkerStepValues, percentToFillExtent, SLIDER_MARKER_SIZE, valueToPercent, } from './utils';
7
+ export { arraysEqual, denormalizeSliderValue, getClosestValueIndex, getFillExtent, getMarkerPositionStyle, getMarkerStepValues, normalizeSliderValue, percentToFillExtent, SLIDER_MARKER_SIZE, valueToPercent, } from './utils';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/slider/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/slider/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,SAAS,CAAC"}
@@ -2,28 +2,59 @@ import type { ReactNode } from 'react';
2
2
  import type { PressableProps, ViewProps } from 'react-native';
3
3
  export type SliderOrientation = 'horizontal' | 'vertical';
4
4
  export type SliderAccessibilityValue = NonNullable<ViewProps['accessibilityValue']>;
5
- export interface InterfaceSliderProps extends Omit<ViewProps, 'children' | 'accessibilityValue'> {
6
- readonly value?: number;
7
- readonly defaultValue?: number;
8
- readonly onChange?: (value: number) => void;
9
- readonly onChangeComplete?: (value: number) => void;
5
+ export type SliderValue = number | readonly number[];
6
+ interface SliderBaseProps extends Omit<ViewProps, 'children' | 'accessibilityValue'> {
7
+ /** Minimum selectable value. @default `0` */
10
8
  readonly min?: number;
9
+ /** Maximum selectable value. @default `100` */
11
10
  readonly max?: number;
11
+ /**
12
+ * Increment used to snap value updates and generate automatic `Slider.MarkerGroup` marks.
13
+ * @default `1`
14
+ */
12
15
  readonly step?: number;
16
+ /** Disables pointer, keyboard, and screen reader interaction. @default `false` */
13
17
  readonly isDisabled?: boolean;
18
+ /** Slider axis. @default `'horizontal'` */
14
19
  readonly orientation?: SliderOrientation;
15
20
  /**
16
- * Screen reader label when there is no visible label.
21
+ * Screen reader label for the slider group when there is no visible label.
17
22
  */
18
23
  readonly accessibilityLabel?: string;
19
24
  /**
20
- * Screen reader value for the slider. Merged with derived `min`, `max`, `now`, and formatted
21
- * `text` when fields are omitted. `text` overrides the numeric announcement when set.
25
+ * Screen reader value override. Merged with derived per-thumb values when fields are omitted;
26
+ * `text` replaces the formatted announcement. Native numeric values are normalized to 0–100.
22
27
  */
23
28
  readonly accessibilityValue?: SliderAccessibilityValue;
24
29
  readonly children?: ReactNode;
25
30
  }
31
+ export interface SliderSingleValueProps {
32
+ readonly value?: number;
33
+ /** Initial uncontrolled value. Defaults to `min`. */
34
+ readonly defaultValue?: number;
35
+ /** Called while the value changes. */
36
+ readonly onChange?: (value: number) => void;
37
+ /** Called when a pointer, keyboard, or screen reader interaction completes. */
38
+ readonly onChangeComplete?: (value: number) => void;
39
+ }
40
+ export interface SliderRangeValueProps {
41
+ readonly value?: readonly number[];
42
+ /** Initial uncontrolled thumb values. */
43
+ readonly defaultValue?: readonly number[];
44
+ /** Called while any thumb value changes. */
45
+ readonly onChange?: (value: number[]) => void;
46
+ /** Called when a pointer, keyboard, or screen reader interaction completes. */
47
+ readonly onChangeComplete?: (value: number[]) => void;
48
+ }
49
+ export type InterfaceSliderProps = SliderBaseProps & (SliderSingleValueProps | SliderRangeValueProps);
26
50
  export type ISliderProps = InterfaceSliderProps;
51
+ /** Wider internal props for the root primitive implementation. */
52
+ export interface SliderRootImplementationProps extends SliderBaseProps {
53
+ readonly value?: number | readonly number[];
54
+ readonly defaultValue?: number | readonly number[];
55
+ readonly onChange?: ((value: number) => void) | ((value: number[]) => void);
56
+ readonly onChangeComplete?: ((value: number) => void) | ((value: number[]) => void);
57
+ }
27
58
  export interface InterfaceSliderRailProps extends ViewProps {
28
59
  readonly asChild?: boolean;
29
60
  readonly children?: ReactNode;
@@ -31,7 +62,12 @@ export interface InterfaceSliderRailProps extends ViewProps {
31
62
  export type ISliderRailProps = InterfaceSliderRailProps;
32
63
  export interface InterfaceSliderThumbProps extends PressableProps {
33
64
  readonly asChild?: boolean;
65
+ /**
66
+ * Zero-based thumb index. Defaults to `0` for single-value sliders.
67
+ */
68
+ readonly index?: number;
34
69
  readonly children?: ReactNode;
35
70
  }
36
71
  export type ISliderThumbProps = InterfaceSliderThumbProps;
72
+ export {};
37
73
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/slider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE1D,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAEpF,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,oBAAoB,CAAC;IAC9F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAEhD,MAAM,WAAW,wBAAyB,SAAQ,SAAS;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAExD,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/slider/types.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,14 @@ export declare function snapToStep(value: number, min: number, max: number, step
16
16
  export declare function valueToPercent(value: number, min: number, max: number): number;
17
17
  export declare function percentToValue(percent: number, min: number, max: number, step: number): number;
18
18
  export declare function formatSliderValue(value: number): string;
19
+ export declare function arraysEqual(a: readonly number[], b: readonly number[]): boolean;
20
+ export declare function normalizeSliderValue(input: number | readonly number[] | undefined, min: number, defaultScalar?: number): number[];
21
+ export declare function denormalizeSliderValue(values: readonly number[], asArray: boolean): number | number[];
22
+ export declare function getClosestValueIndex(values: readonly number[], target: number): number;
23
+ export declare function getFillExtent(startPercent: number, endPercent: number, trackSize: number, thumbSize: number): {
24
+ offset: number;
25
+ length: number;
26
+ };
19
27
  export declare function getMarkerStepValues(min: number, max: number, step: number): number[];
20
28
  /** Marker leading-edge offset (center-aligned to the thumb coordinate system). */
21
29
  export declare function percentToMarkerCenterOffset(percent: number, trackSize: number, markerSize?: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/slider/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQjD,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,qEAAqE;AACrE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,CAGR;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAGR;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAKR;AAED,wDAAwD;AACxD,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAKR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAcpF;AAaD,kFAAkF;AAClF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,SAAqB,GAC9B,MAAM,CAGR;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,iBAAiB,EAC9B,WAAW,EAAE,iBAAiB,GAAG,IAAI,EACrC,UAAU,EAAE,MAAM,EAClB,UAAU,SAAqB,GAC9B,SAAS,CA+CX"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/slider/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdx-ui/primitives",
3
- "version": "0.0.1-beta.170",
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.170",
71
- "@cdx-ui/utils": "0.0.1-beta.170"
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';
@@ -0,0 +1,70 @@
1
+ import { forwardRef, useCallback, useId, useMemo } from 'react';
2
+ import { View } from 'react-native';
3
+ import { Slot } from '../slot';
4
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
5
+ import { AccordionItemContext, useAccordionContext } from './context';
6
+ import type { IAccordionItemProps } from './types';
7
+
8
+ export interface AccordionItemRootProps extends IAccordionItemProps {
9
+ asChild?: boolean;
10
+ className?: string;
11
+ }
12
+
13
+ export const AccordionItemRoot = forwardRef<View, AccordionItemRootProps>(
14
+ ({ asChild, children, className, style, value, disabled = false, ...props }, ref) => {
15
+ const { groupState, type, collapsible, isDisabled: groupDisabled } = useAccordionContext();
16
+ const reactId = useId().replace(/[^a-zA-Z0-9_-]/g, '');
17
+ const triggerId = `accordion-${reactId}-trigger`;
18
+ const panelId = `accordion-${reactId}-panel`;
19
+
20
+ const isExpanded = groupState.expandedKeys.has(value);
21
+ const isDisabled = disabled || groupDisabled;
22
+
23
+ const toggle = useCallback(() => {
24
+ if (isDisabled) {
25
+ return;
26
+ }
27
+ if (type === 'single' && !collapsible && isExpanded) {
28
+ return;
29
+ }
30
+ groupState.toggleKey(value);
31
+ }, [isDisabled, type, collapsible, isExpanded, groupState, value]);
32
+
33
+ const contextValue = useMemo(
34
+ () => ({
35
+ value,
36
+ isExpanded,
37
+ isDisabled,
38
+ triggerId,
39
+ panelId,
40
+ toggle,
41
+ }),
42
+ [value, isExpanded, isDisabled, triggerId, panelId, toggle],
43
+ );
44
+
45
+ const Comp = asChild ? Slot : View;
46
+
47
+ return (
48
+ <AccordionItemContext.Provider value={contextValue}>
49
+ <Comp
50
+ ref={ref}
51
+ className={className}
52
+ style={style}
53
+ {...props}
54
+ {...mergeDataAttributes(
55
+ props,
56
+ dataAttributes({
57
+ slot: 'accordion-item',
58
+ state: isExpanded ? 'open' : 'closed',
59
+ disabled: isDisabled,
60
+ }),
61
+ )}
62
+ >
63
+ {children}
64
+ </Comp>
65
+ </AccordionItemContext.Provider>
66
+ );
67
+ },
68
+ );
69
+
70
+ AccordionItemRoot.displayName = 'AccordionItemRoot';