@cdx-ui/primitives 0.0.1-beta.12 → 0.0.1-beta.14

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 (92) hide show
  1. package/README.md +4 -2
  2. package/lib/commonjs/index.js +12 -0
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/list-item/createListItemRoot.js +36 -21
  5. package/lib/commonjs/list-item/createListItemRoot.js.map +1 -1
  6. package/lib/commonjs/tile/context.js +30 -0
  7. package/lib/commonjs/tile/context.js.map +1 -0
  8. package/lib/commonjs/tile/createTileContent.js +30 -0
  9. package/lib/commonjs/tile/createTileContent.js.map +1 -0
  10. package/lib/commonjs/tile/createTileDescription.js +28 -0
  11. package/lib/commonjs/tile/createTileDescription.js.map +1 -0
  12. package/lib/commonjs/tile/createTileGroup.js +112 -0
  13. package/lib/commonjs/tile/createTileGroup.js.map +1 -0
  14. package/lib/commonjs/tile/createTileIndicator.js +46 -0
  15. package/lib/commonjs/tile/createTileIndicator.js.map +1 -0
  16. package/lib/commonjs/tile/createTileLeadingSlot.js +34 -0
  17. package/lib/commonjs/tile/createTileLeadingSlot.js.map +1 -0
  18. package/lib/commonjs/tile/createTileRoot.js +133 -0
  19. package/lib/commonjs/tile/createTileRoot.js.map +1 -0
  20. package/lib/commonjs/tile/createTileTitle.js +28 -0
  21. package/lib/commonjs/tile/createTileTitle.js.map +1 -0
  22. package/lib/commonjs/tile/createTileTrailingSlot.js +35 -0
  23. package/lib/commonjs/tile/createTileTrailingSlot.js.map +1 -0
  24. package/lib/commonjs/tile/index.js +55 -0
  25. package/lib/commonjs/tile/index.js.map +1 -0
  26. package/lib/commonjs/tile/types.js +6 -0
  27. package/lib/commonjs/tile/types.js.map +1 -0
  28. package/lib/module/index.js +1 -0
  29. package/lib/module/index.js.map +1 -1
  30. package/lib/module/list-item/createListItemRoot.js +36 -21
  31. package/lib/module/list-item/createListItemRoot.js.map +1 -1
  32. package/lib/module/tile/context.js +21 -0
  33. package/lib/module/tile/context.js.map +1 -0
  34. package/lib/module/tile/createTileContent.js +24 -0
  35. package/lib/module/tile/createTileContent.js.map +1 -0
  36. package/lib/module/tile/createTileDescription.js +22 -0
  37. package/lib/module/tile/createTileDescription.js.map +1 -0
  38. package/lib/module/tile/createTileGroup.js +106 -0
  39. package/lib/module/tile/createTileGroup.js.map +1 -0
  40. package/lib/module/tile/createTileIndicator.js +40 -0
  41. package/lib/module/tile/createTileIndicator.js.map +1 -0
  42. package/lib/module/tile/createTileLeadingSlot.js +28 -0
  43. package/lib/module/tile/createTileLeadingSlot.js.map +1 -0
  44. package/lib/module/tile/createTileRoot.js +127 -0
  45. package/lib/module/tile/createTileRoot.js.map +1 -0
  46. package/lib/module/tile/createTileTitle.js +22 -0
  47. package/lib/module/tile/createTileTitle.js.map +1 -0
  48. package/lib/module/tile/createTileTrailingSlot.js +29 -0
  49. package/lib/module/tile/createTileTrailingSlot.js.map +1 -0
  50. package/lib/module/tile/index.js +39 -0
  51. package/lib/module/tile/index.js.map +1 -0
  52. package/lib/module/tile/types.js +4 -0
  53. package/lib/module/tile/types.js.map +1 -0
  54. package/lib/typescript/index.d.ts +1 -0
  55. package/lib/typescript/index.d.ts.map +1 -1
  56. package/lib/typescript/list-item/createListItemRoot.d.ts.map +1 -1
  57. package/lib/typescript/tile/context.d.ts +9 -0
  58. package/lib/typescript/tile/context.d.ts.map +1 -0
  59. package/lib/typescript/tile/createTileContent.d.ts +3 -0
  60. package/lib/typescript/tile/createTileContent.d.ts.map +1 -0
  61. package/lib/typescript/tile/createTileDescription.d.ts +3 -0
  62. package/lib/typescript/tile/createTileDescription.d.ts.map +1 -0
  63. package/lib/typescript/tile/createTileGroup.d.ts +4 -0
  64. package/lib/typescript/tile/createTileGroup.d.ts.map +1 -0
  65. package/lib/typescript/tile/createTileIndicator.d.ts +4 -0
  66. package/lib/typescript/tile/createTileIndicator.d.ts.map +1 -0
  67. package/lib/typescript/tile/createTileLeadingSlot.d.ts +4 -0
  68. package/lib/typescript/tile/createTileLeadingSlot.d.ts.map +1 -0
  69. package/lib/typescript/tile/createTileRoot.d.ts +4 -0
  70. package/lib/typescript/tile/createTileRoot.d.ts.map +1 -0
  71. package/lib/typescript/tile/createTileTitle.d.ts +3 -0
  72. package/lib/typescript/tile/createTileTitle.d.ts.map +1 -0
  73. package/lib/typescript/tile/createTileTrailingSlot.d.ts +9 -0
  74. package/lib/typescript/tile/createTileTrailingSlot.d.ts.map +1 -0
  75. package/lib/typescript/tile/index.d.ts +15 -0
  76. package/lib/typescript/tile/index.d.ts.map +1 -0
  77. package/lib/typescript/tile/types.d.ts +119 -0
  78. package/lib/typescript/tile/types.d.ts.map +1 -0
  79. package/package.json +2 -2
  80. package/src/index.ts +1 -0
  81. package/src/list-item/createListItemRoot.tsx +37 -22
  82. package/src/tile/context.tsx +23 -0
  83. package/src/tile/createTileContent.tsx +23 -0
  84. package/src/tile/createTileDescription.tsx +19 -0
  85. package/src/tile/createTileGroup.tsx +134 -0
  86. package/src/tile/createTileIndicator.tsx +38 -0
  87. package/src/tile/createTileLeadingSlot.tsx +30 -0
  88. package/src/tile/createTileRoot.tsx +124 -0
  89. package/src/tile/createTileTitle.tsx +19 -0
  90. package/src/tile/createTileTrailingSlot.tsx +25 -0
  91. package/src/tile/index.ts +88 -0
  92. package/src/tile/types.ts +153 -0
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ import React, { forwardRef } from 'react';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { useTileContext } from './context';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const shrinkZero = {
8
+ flexShrink: 0,
9
+ pointerEvents: 'none'
10
+ };
11
+ export const createTileIndicator = Base => /*#__PURE__*/forwardRef(({
12
+ children,
13
+ style,
14
+ indicatorType,
15
+ ...props
16
+ }, ref) => {
17
+ const {
18
+ isSelected,
19
+ isDisabled,
20
+ selectionType
21
+ } = useTileContext();
22
+
23
+ // Effective visual type: explicit prop wins; otherwise infer from group/standalone context.
24
+ const effectiveType = indicatorType ?? (selectionType === 'single' ? 'radio' : 'checkbox');
25
+ return /*#__PURE__*/_jsx(Base, {
26
+ ...props,
27
+ accessibilityElementsHidden: true,
28
+ "aria-hidden": true,
29
+ ...dataAttributes({
30
+ slot: 'tile-indicator',
31
+ checked: isSelected,
32
+ selectionType: effectiveType === 'radio' ? 'single' : 'multiple',
33
+ disabled: isDisabled
34
+ }),
35
+ ref: ref,
36
+ style: [shrinkZero, style],
37
+ children: children
38
+ });
39
+ });
40
+ //# sourceMappingURL=createTileIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","dataAttributes","useTileContext","jsx","_jsx","shrinkZero","flexShrink","pointerEvents","createTileIndicator","Base","children","style","indicatorType","props","ref","isSelected","isDisabled","selectionType","effectiveType","accessibilityElementsHidden","slot","checked","disabled"],"sourceRoot":"../../../src","sources":["tile/createTileIndicator.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,cAAc,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG3C,MAAMC,UAAU,GAAG;EAAEC,UAAU,EAAE,CAAU;EAAEC,aAAa,EAAE;AAAgB,CAAC;AAE7E,OAAO,MAAMC,mBAAmB,GAAQC,IAA4B,iBAClET,UAAU,CACR,CACE;EAAEU,QAAQ;EAAEC,KAAK;EAAEC,aAAa;EAAE,GAAGC;AAA2B,CAAC,EACjEC,GAAuB,KACpB;EACH,MAAM;IAAEC,UAAU;IAAEC,UAAU;IAAEC;EAAc,CAAC,GAAGf,cAAc,CAAC,CAAC;;EAElE;EACA,MAAMgB,aAAmC,GACvCN,aAAa,KAAKK,aAAa,KAAK,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;EAEtE,oBACEb,IAAA,CAACK,IAAI;IAAA,GACEI,KAAK;IACVM,2BAA2B;IAC3B,mBAAW;IAAA,GACPlB,cAAc,CAAC;MACjBmB,IAAI,EAAE,gBAAgB;MACtBC,OAAO,EAAEN,UAAU;MACnBE,aAAa,EAAEC,aAAa,KAAK,OAAO,GAAG,QAAQ,GAAG,UAAU;MAChEI,QAAQ,EAAEN;IACZ,CAAC,CAAC;IACFF,GAAG,EAAEA,GAAoB;IACzBH,KAAK,EAAE,CAACN,UAAU,EAAEM,KAAK,CAAE;IAAAD,QAAA,EAE1BA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import React, { forwardRef } from 'react';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const shrinkZero = {
7
+ flexShrink: 0
8
+ };
9
+ export const createTileLeadingSlot = Base => /*#__PURE__*/forwardRef(({
10
+ 'aria-hidden': ariaHidden,
11
+ style,
12
+ children,
13
+ ...props
14
+ }, ref) => {
15
+ const accessibilityElementsHidden = ariaHidden !== false;
16
+ return /*#__PURE__*/_jsx(Base, {
17
+ ...props,
18
+ ...dataAttributes({
19
+ slot: 'tile-leading'
20
+ }),
21
+ accessibilityElementsHidden: accessibilityElementsHidden,
22
+ "aria-hidden": ariaHidden,
23
+ ref: ref,
24
+ style: [shrinkZero, style],
25
+ children: children
26
+ });
27
+ });
28
+ //# sourceMappingURL=createTileLeadingSlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","dataAttributes","jsx","_jsx","shrinkZero","flexShrink","createTileLeadingSlot","Base","ariaHidden","style","children","props","ref","accessibilityElementsHidden","slot"],"sourceRoot":"../../../src","sources":["tile/createTileLeadingSlot.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,cAAc,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzD,MAAMC,UAAU,GAAG;EAAEC,UAAU,EAAE;AAAW,CAAC;AAE7C,OAAO,MAAMC,qBAAqB,GAAQC,IAA4B,iBACpEP,UAAU,CACR,CACE;EAAE,aAAa,EAAEQ,UAAU;EAAEC,KAAK;EAAEC,QAAQ;EAAE,GAAGC;AAA6B,CAAC,EAC/EC,GAAuB,KACpB;EACH,MAAMC,2BAA2B,GAAGL,UAAU,KAAK,KAAK;EAExD,oBACEL,IAAA,CAACI,IAAI;IAAA,GACEI,KAAK;IAAA,GACNV,cAAc,CAAC;MACjBa,IAAI,EAAE;IACR,CAAC,CAAC;IACFD,2BAA2B,EAAEA,2BAA4B;IACzD,eAAaL,UAAW;IACxBI,GAAG,EAAEA,GAAoB;IACzBH,KAAK,EAAE,CAACL,UAAU,EAAEK,KAAK,CAAE;IAAAC,QAAA,EAE1BA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ import React, { forwardRef, useMemo } from 'react';
4
+ import { composeEventHandlers, mergeRefs, useControllableState } from '@cdx-ui/utils';
5
+ import { useFocus } from '@react-native-aria/focus';
6
+ import { useHover, usePress } from '@react-native-aria/interactions';
7
+ import { dataAttributes } from '../utils/dataAttributes';
8
+ import { TileProvider, useOptionalTileGroupContext } from './context';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ const rowStyle = {
11
+ flexDirection: 'row',
12
+ alignSelf: 'stretch',
13
+ alignItems: 'center'
14
+ };
15
+ export const createTileRoot = BasePressable => /*#__PURE__*/forwardRef((props, ref) => {
16
+ const {
17
+ value,
18
+ disabled: disabledProp = false,
19
+ isSelected: controlledSelected,
20
+ defaultSelected,
21
+ onSelectedChange,
22
+ children,
23
+ onPress,
24
+ onFocus,
25
+ onBlur,
26
+ style,
27
+ /** Consumed by styled `withStyleContext` root. */
28
+ context: _styleContext,
29
+ ...rest
30
+ } = props;
31
+ const group = useOptionalTileGroupContext();
32
+
33
+ // Standalone selection state — only meaningful when no group owns selection.
34
+ const [standaloneSelected = false, setStandaloneSelected] = useControllableState({
35
+ prop: controlledSelected,
36
+ defaultProp: defaultSelected ?? false,
37
+ onChange: next => {
38
+ onSelectedChange?.(next);
39
+ }
40
+ });
41
+ const isSelected = group ? group.isSelected(value) : standaloneSelected;
42
+ const disabledByGroup = group ? group.isTileDisabledByGroup(value) : false;
43
+ const isDisabled = disabledByGroup || disabledProp;
44
+ const cannotToggle = isDisabled;
45
+ const {
46
+ focusProps,
47
+ isFocused
48
+ } = useFocus();
49
+ const {
50
+ pressProps,
51
+ isPressed
52
+ } = usePress({
53
+ isDisabled: cannotToggle
54
+ });
55
+ const {
56
+ hoverProps,
57
+ isHovered
58
+ } = useHover();
59
+
60
+ // Standalone tiles use checkbox semantics (independent on/off toggle).
61
+ const selectionType = group ? group.type : 'multiple';
62
+ const accessibilityState = useMemo(() => ({
63
+ disabled: isDisabled,
64
+ ...(selectionType === 'single' ? {
65
+ selected: isSelected
66
+ } : {
67
+ checked: isSelected
68
+ })
69
+ }), [isDisabled, isSelected, selectionType]);
70
+ const tileContext = useMemo(() => ({
71
+ value,
72
+ isSelected,
73
+ isDisabled,
74
+ selectionType
75
+ }), [value, isSelected, isDisabled, selectionType]);
76
+ const passthrough = rest;
77
+ const composedOnPress = composeEventHandlers(onPress, () => {
78
+ if (cannotToggle) {
79
+ return;
80
+ }
81
+ if (group) {
82
+ group.toggleValue(value);
83
+ } else {
84
+ setStandaloneSelected(!standaloneSelected);
85
+ }
86
+ });
87
+ const sharedHandlers = {
88
+ onPress: isDisabled ? undefined : composedOnPress,
89
+ onPressIn: composeEventHandlers(passthrough.onPressIn, pressProps.onPressIn),
90
+ onPressOut: composeEventHandlers(passthrough.onPressOut, pressProps.onPressOut),
91
+ onHoverIn: composeEventHandlers(passthrough.onHoverIn, hoverProps.onHoverIn),
92
+ onHoverOut: composeEventHandlers(passthrough.onHoverOut, hoverProps.onHoverOut),
93
+ onFocus: composeEventHandlers(onFocus, focusProps.onFocus),
94
+ onBlur: composeEventHandlers(onBlur, focusProps.onBlur)
95
+ };
96
+ const role = selectionType === 'single' ? 'radio' : 'checkbox';
97
+ const sharedAttrs = {
98
+ accessibilityRole: role,
99
+ role,
100
+ accessibilityState,
101
+ 'aria-checked': isSelected,
102
+ ...(isDisabled ? {
103
+ 'aria-disabled': true
104
+ } : {}),
105
+ ...dataAttributes({
106
+ slot: 'tile',
107
+ state: isSelected ? 'selected' : 'unselected',
108
+ disabled: isDisabled,
109
+ active: isPressed,
110
+ hover: isHovered,
111
+ focused: isFocused
112
+ })
113
+ };
114
+ return /*#__PURE__*/_jsx(TileProvider, {
115
+ value: tileContext,
116
+ children: /*#__PURE__*/_jsx(BasePressable, {
117
+ ...rest,
118
+ context: _styleContext,
119
+ ref: mergeRefs(ref),
120
+ ...sharedAttrs,
121
+ ...sharedHandlers,
122
+ style: [rowStyle, style],
123
+ children: children
124
+ })
125
+ });
126
+ });
127
+ //# sourceMappingURL=createTileRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","useMemo","composeEventHandlers","mergeRefs","useControllableState","useFocus","useHover","usePress","dataAttributes","TileProvider","useOptionalTileGroupContext","jsx","_jsx","rowStyle","flexDirection","alignSelf","alignItems","createTileRoot","BasePressable","props","ref","value","disabled","disabledProp","isSelected","controlledSelected","defaultSelected","onSelectedChange","children","onPress","onFocus","onBlur","style","context","_styleContext","rest","group","standaloneSelected","setStandaloneSelected","prop","defaultProp","onChange","next","disabledByGroup","isTileDisabledByGroup","isDisabled","cannotToggle","focusProps","isFocused","pressProps","isPressed","hoverProps","isHovered","selectionType","type","accessibilityState","selected","checked","tileContext","passthrough","composedOnPress","toggleValue","sharedHandlers","undefined","onPressIn","onPressOut","onHoverIn","onHoverOut","role","sharedAttrs","accessibilityRole","slot","state","active","hover","focused"],"sourceRoot":"../../../src","sources":["tile/createTileRoot.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import React, { forwardRef } from 'react';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const noUnderline = {
7
+ textDecorationLine: 'none'
8
+ };
9
+ export const createTileTitle = Base => /*#__PURE__*/forwardRef(({
10
+ children,
11
+ style,
12
+ ...props
13
+ }, ref) => /*#__PURE__*/_jsx(Base, {
14
+ ...props,
15
+ ...dataAttributes({
16
+ slot: 'tile-title'
17
+ }),
18
+ ref: ref,
19
+ style: [noUnderline, style],
20
+ children: children
21
+ }));
22
+ //# sourceMappingURL=createTileTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","dataAttributes","jsx","_jsx","noUnderline","textDecorationLine","createTileTitle","Base","children","style","props","ref","slot"],"sourceRoot":"../../../src","sources":["tile/createTileTitle.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,cAAc,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzD,MAAMC,WAAW,GAAG;EAAEC,kBAAkB,EAAE;AAAgB,CAAC;AAE3D,OAAO,MAAMC,eAAe,GAAQC,IAA4B,iBAC9DP,UAAU,CAAC,CAAC;EAAEQ,QAAQ;EAAEC,KAAK;EAAE,GAAGC;AAAuB,CAAC,EAAEC,GAAuB,kBACjFR,IAAA,CAACI,IAAI;EAAA,GACEG,KAAK;EAAA,GACNT,cAAc,CAAC;IACjBW,IAAI,EAAE;EACR,CAAC,CAAC;EACFD,GAAG,EAAEA,GAAoB;EACzBF,KAAK,EAAE,CAACL,WAAW,EAAEK,KAAK,CAAE;EAAAD,QAAA,EAE3BA;AAAQ,CACL,CACP,CAAC","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ import React, { forwardRef } from 'react';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const shrinkZero = {
7
+ flexShrink: 0
8
+ };
9
+
10
+ /**
11
+ * Generic trailing content (chevron, amount, chip, status). Distinct from `Tile.Indicator`,
12
+ * which is purpose-built for the radio/checkbox selection affordance.
13
+ *
14
+ * Trailing content is meaningful by default (`aria-hidden` falsy), unlike the indicator.
15
+ */
16
+ export const createTileTrailingSlot = Base => /*#__PURE__*/forwardRef(({
17
+ children,
18
+ style,
19
+ ...props
20
+ }, ref) => /*#__PURE__*/_jsx(Base, {
21
+ ...props,
22
+ ...dataAttributes({
23
+ slot: 'tile-trailing'
24
+ }),
25
+ ref: ref,
26
+ style: [shrinkZero, style],
27
+ children: children
28
+ }));
29
+ //# sourceMappingURL=createTileTrailingSlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","dataAttributes","jsx","_jsx","shrinkZero","flexShrink","createTileTrailingSlot","Base","children","style","props","ref","slot"],"sourceRoot":"../../../src","sources":["tile/createTileTrailingSlot.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,cAAc,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGzD,MAAMC,UAAU,GAAG;EAAEC,UAAU,EAAE;AAAW,CAAC;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAQC,IAA4B,iBACrEP,UAAU,CAAC,CAAC;EAAEQ,QAAQ;EAAEC,KAAK;EAAE,GAAGC;AAA8B,CAAC,EAAEC,GAAuB,kBACxFR,IAAA,CAACI,IAAI;EAAA,GACEG,KAAK;EAAA,GACNT,cAAc,CAAC;IACjBW,IAAI,EAAE;EACR,CAAC,CAAC;EACFD,GAAG,EAAEA,GAAoB;EACzBF,KAAK,EAAE,CAACL,UAAU,EAAEK,KAAK,CAAE;EAAAD,QAAA,EAE1BA;AAAQ,CACL,CACP,CAAC","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ import { createTileContent } from './createTileContent';
4
+ import { createTileDescription } from './createTileDescription';
5
+ import { createTileGroup } from './createTileGroup';
6
+ import { createTileIndicator } from './createTileIndicator';
7
+ import { createTileLeadingSlot } from './createTileLeadingSlot';
8
+ import { createTileRoot } from './createTileRoot';
9
+ import { createTileTitle } from './createTileTitle';
10
+ import { createTileTrailingSlot } from './createTileTrailingSlot';
11
+ export { TileProvider, useTileContext } from './context';
12
+ export function createTile(BaseComponents) {
13
+ const Tile = createTileRoot(BaseComponents.Pressable);
14
+ const Group = createTileGroup(BaseComponents.Group);
15
+ const LeadingSlot = createTileLeadingSlot(BaseComponents.LeadingSlot);
16
+ const Content = createTileContent(BaseComponents.Content);
17
+ const Title = createTileTitle(BaseComponents.Title);
18
+ const Description = createTileDescription(BaseComponents.Description);
19
+ const Indicator = createTileIndicator(BaseComponents.Indicator);
20
+ const TrailingSlot = createTileTrailingSlot(BaseComponents.TrailingSlot);
21
+ Tile.displayName = 'TilePrimitive';
22
+ Group.displayName = 'TilePrimitive.Group';
23
+ LeadingSlot.displayName = 'TilePrimitive.LeadingSlot';
24
+ Content.displayName = 'TilePrimitive.Content';
25
+ Title.displayName = 'TilePrimitive.Title';
26
+ Description.displayName = 'TilePrimitive.Description';
27
+ Indicator.displayName = 'TilePrimitive.Indicator';
28
+ TrailingSlot.displayName = 'TilePrimitive.TrailingSlot';
29
+ return Object.assign(Tile, {
30
+ Group,
31
+ LeadingSlot,
32
+ Content,
33
+ Title,
34
+ Description,
35
+ Indicator,
36
+ TrailingSlot
37
+ });
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createTileContent","createTileDescription","createTileGroup","createTileIndicator","createTileLeadingSlot","createTileRoot","createTileTitle","createTileTrailingSlot","TileProvider","useTileContext","createTile","BaseComponents","Tile","Pressable","Group","LeadingSlot","Content","Title","Description","Indicator","TrailingSlot","displayName","Object","assign"],"sourceRoot":"../../../src","sources":["tile/index.ts"],"mappings":";;AACA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,sBAAsB,QAAQ,0BAA0B;AAsBjE,SAASC,YAAY,EAAEC,cAAc,QAAQ,WAAW;AAExD,OAAO,SAASC,UAAUA,CASxBC,cASD,EAAE;EACD,MAAMC,IAAI,GAAGP,cAAc,CAACM,cAAc,CAACE,SAAS,CAAC;EACrD,MAAMC,KAAK,GAAGZ,eAAe,CAACS,cAAc,CAACG,KAAK,CAAC;EACnD,MAAMC,WAAW,GAAGX,qBAAqB,CAACO,cAAc,CAACI,WAAW,CAAC;EACrE,MAAMC,OAAO,GAAGhB,iBAAiB,CAACW,cAAc,CAACK,OAAO,CAAC;EACzD,MAAMC,KAAK,GAAGX,eAAe,CAACK,cAAc,CAACM,KAAK,CAAC;EACnD,MAAMC,WAAW,GAAGjB,qBAAqB,CAACU,cAAc,CAACO,WAAW,CAAC;EACrE,MAAMC,SAAS,GAAGhB,mBAAmB,CAACQ,cAAc,CAACQ,SAAS,CAAC;EAC/D,MAAMC,YAAY,GAAGb,sBAAsB,CAACI,cAAc,CAACS,YAAY,CAAC;EAExER,IAAI,CAACS,WAAW,GAAG,eAAe;EAClCP,KAAK,CAACO,WAAW,GAAG,qBAAqB;EACzCN,WAAW,CAACM,WAAW,GAAG,2BAA2B;EACrDL,OAAO,CAACK,WAAW,GAAG,uBAAuB;EAC7CJ,KAAK,CAACI,WAAW,GAAG,qBAAqB;EACzCH,WAAW,CAACG,WAAW,GAAG,2BAA2B;EACrDF,SAAS,CAACE,WAAW,GAAG,yBAAyB;EACjDD,YAAY,CAACC,WAAW,GAAG,4BAA4B;EAEvD,OAAOC,MAAM,CAACC,MAAM,CAACX,IAAI,EAAE;IACzBE,KAAK;IACLC,WAAW;IACXC,OAAO;IACPC,KAAK;IACLC,WAAW;IACXC,SAAS;IACTC;EACF,CAAC,CAAC;AAUJ","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":["tile/types.ts"],"mappings":"","ignoreList":[]}
@@ -11,6 +11,7 @@ export * from './list-item';
11
11
  export { type EdgeInsets, OverlayInsetsProvider } from './overlay';
12
12
  export * from './select';
13
13
  export * from './switch';
14
+ export * from './tile';
14
15
  export * from './progress';
15
16
  export * from './radio';
16
17
  export type { InteractionState } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createListItemRoot.d.ts","sourceRoot":"","sources":["../../../src/list-item/createListItemRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,OAAO,KAAK,EAAE,cAAc,EAAiC,MAAM,SAAS,CAAC;AAyB7E,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EACrC,UAAU,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAChC,eAAe,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,mFAiIpC,CAAC"}
1
+ {"version":3,"file":"createListItemRoot.d.ts","sourceRoot":"","sources":["../../../src/list-item/createListItemRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,OAAO,KAAK,EAAE,cAAc,EAAiC,MAAM,SAAS,CAAC;AAyB7E,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EACrC,UAAU,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAChC,eAAe,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,mFAgJpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ITileContextValue, ITileGroupContextValue } from './types';
2
+ export declare const TileProvider: import("react").FunctionComponent<{
3
+ children: import("react").ReactNode;
4
+ value: ITileContextValue;
5
+ }>, useTileContext: () => ITileContextValue;
6
+ export declare const TileGroupContextProvider: import("react").Provider<ITileGroupContextValue | null>;
7
+ export declare function useTileGroupContext(): ITileGroupContextValue;
8
+ export declare function useOptionalTileGroupContext(): ITileGroupContextValue | null;
9
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/tile/context.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAGzE,eAAO,MAAO,YAAY;;;IAAE,cAAc,yBAAmD,CAAC;AAK9F,eAAO,MAAM,wBAAwB,yDAA4B,CAAC;AAElE,wBAAgB,mBAAmB,IAAI,sBAAsB,CAM5D;AAED,wBAAgB,2BAA2B,IAAI,sBAAsB,GAAG,IAAI,CAE3E"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const createTileContent: <T>(Base: React.ComponentType<T>) => React.ForwardRefExoticComponent<import("react-native").ViewProps & React.RefAttributes<unknown>>;
3
+ //# sourceMappingURL=createTileContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTileContent.d.ts","sourceRoot":"","sources":["../../../src/tile/createTileContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAU1C,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,qGAY9D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const createTileDescription: <T>(Base: React.ComponentType<T>) => React.ForwardRefExoticComponent<import("react-native").TextProps & React.RefAttributes<unknown>>;
3
+ //# sourceMappingURL=createTileDescription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTileDescription.d.ts","sourceRoot":"","sources":["../../../src/tile/createTileDescription.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAM1C,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,qGAYlE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ITileGroupProps } from './types';
3
+ export declare const createTileGroup: <T>(Base: React.ComponentType<T>) => React.ForwardRefExoticComponent<ITileGroupProps & React.RefAttributes<T>>;
4
+ //# sourceMappingURL=createTileGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTileGroup.d.ts","sourceRoot":"","sources":["../../../src/tile/createTileGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAK1E,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,SAAS,CAAC;AAgB9D,eAAO,MAAM,eAAe,GAAI,CAAC,EAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,8EAgH5D,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ITileIndicatorProps } from './types';
3
+ export declare const createTileIndicator: <T>(Base: React.ComponentType<T>) => React.ForwardRefExoticComponent<ITileIndicatorProps & React.RefAttributes<unknown>>;
4
+ //# sourceMappingURL=createTileIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTileIndicator.d.ts","sourceRoot":"","sources":["../../../src/tile/createTileIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAInD,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,wFA8BjE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ITileLeadingSlotProps } from './types';
3
+ export declare const createTileLeadingSlot: <T>(Base: React.ComponentType<T>) => React.ForwardRefExoticComponent<ITileLeadingSlotProps & React.RefAttributes<unknown>>;
4
+ //# sourceMappingURL=createTileLeadingSlot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTileLeadingSlot.d.ts","sourceRoot":"","sources":["../../../src/tile/createTileLeadingSlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIrD,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,0FAuBnE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ITileProps } from './types';
3
+ export declare const createTileRoot: <T>(BasePressable: React.ComponentType<T>) => React.ForwardRefExoticComponent<ITileProps & React.RefAttributes<unknown>>;
4
+ //# sourceMappingURL=createTileRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTileRoot.d.ts","sourceRoot":"","sources":["../../../src/tile/createTileRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,OAAO,KAAK,EAAE,UAAU,EAA6B,MAAM,SAAS,CAAC;AAQrE,eAAO,MAAM,cAAc,GAAI,CAAC,EAAG,eAAe,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,+EA6GpE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const createTileTitle: <T>(Base: React.ComponentType<T>) => React.ForwardRefExoticComponent<import("react-native").TextProps & React.RefAttributes<unknown>>;
3
+ //# sourceMappingURL=createTileTitle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTileTitle.d.ts","sourceRoot":"","sources":["../../../src/tile/createTileTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAM1C,eAAO,MAAM,eAAe,GAAI,CAAC,EAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,qGAY5D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ /**
3
+ * Generic trailing content (chevron, amount, chip, status). Distinct from `Tile.Indicator`,
4
+ * which is purpose-built for the radio/checkbox selection affordance.
5
+ *
6
+ * Trailing content is meaningful by default (`aria-hidden` falsy), unlike the indicator.
7
+ */
8
+ export declare const createTileTrailingSlot: <T>(Base: React.ComponentType<T>) => React.ForwardRefExoticComponent<import("react-native").ViewProps & React.RefAttributes<unknown>>;
9
+ //# sourceMappingURL=createTileTrailingSlot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTileTrailingSlot.d.ts","sourceRoot":"","sources":["../../../src/tile/createTileTrailingSlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAM1C;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,EAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,qGAYnE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type React from 'react';
2
+ import type { ITileComponentType } from './types';
3
+ export type { ITileComponentType, ITileContentProps, ITileContextValue, ITileDescriptionProps, ITileGroupMultipleProps, ITileGroupProps, ITileGroupSingleProps, ITileGroupContextValue, ITileIndicatorProps, ITileLeadingSlotProps, ITilePressablePassthrough, ITileProps, ITileTitleProps, ITileTrailingSlotProps, TileGroupType, TileGroupValue, } from './types';
4
+ export { TileProvider, useTileContext } from './context';
5
+ export declare function createTile<Pressable, Leading, Content, Title, Description, Indicator, TrailingSlot, Group>(BaseComponents: {
6
+ Pressable: React.ComponentType<Pressable>;
7
+ LeadingSlot: React.ComponentType<Leading>;
8
+ Content: React.ComponentType<Content>;
9
+ Title: React.ComponentType<Title>;
10
+ Description: React.ComponentType<Description>;
11
+ Indicator: React.ComponentType<Indicator>;
12
+ TrailingSlot: React.ComponentType<TrailingSlot>;
13
+ Group: React.ComponentType<Group>;
14
+ }): ITileComponentType<Pressable, Leading, Content, Title, Description, Indicator, TrailingSlot, Group>;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tile/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEzD,wBAAgB,UAAU,CACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,KAAK,EACL,cAAc,EAAE;IAChB,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAClC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAChD,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CACnC,GA2BO,kBAAkB,CACtB,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,KAAK,CACN,CACF"}
@@ -0,0 +1,119 @@
1
+ import type { ForwardRefExoticComponent, PropsWithoutRef, ReactNode, RefAttributes } from 'react';
2
+ import type { PressableProps, TextProps, ViewProps } from 'react-native';
3
+ import type { WithStyleContextProps } from '@cdx-ui/utils';
4
+ export type TileGroupType = 'single' | 'multiple';
5
+ export type TileGroupValue = string | string[] | undefined;
6
+ interface ITileGroupBaseProps extends ViewProps, WithStyleContextProps {
7
+ /** Disables the whole group. */
8
+ isDisabled?: boolean;
9
+ /** Accessible name for the group (radiogroup / group). */
10
+ 'aria-label'?: string;
11
+ }
12
+ export interface ITileGroupSingleProps extends ITileGroupBaseProps {
13
+ /** Single-select (radio semantics). One value at a time. */
14
+ type: 'single';
15
+ /** Controlled selected value. */
16
+ value?: string;
17
+ /** Uncontrolled initial value. */
18
+ defaultValue?: string;
19
+ /** Called when selection changes. */
20
+ onValueChange?: (value: string) => void;
21
+ }
22
+ export interface ITileGroupMultipleProps extends ITileGroupBaseProps {
23
+ /** Multi-select (checkbox semantics). Zero to `max` values at a time. */
24
+ type: 'multiple';
25
+ /** Controlled selected values. */
26
+ value?: string[];
27
+ /** Uncontrolled initial values. */
28
+ defaultValue?: string[];
29
+ /** Called when selection changes. */
30
+ onValueChange?: (value: string[]) => void;
31
+ /** Maximum selections allowed. @default Infinity */
32
+ max?: number;
33
+ }
34
+ /**
35
+ * Discriminated union: `type` narrows `value` / `defaultValue` / `onValueChange`,
36
+ * and `max` is only valid on `type="multiple"`.
37
+ */
38
+ export type ITileGroupProps = ITileGroupSingleProps | ITileGroupMultipleProps;
39
+ export interface ITileGroupContextValue {
40
+ type: TileGroupType;
41
+ /** Current selection (string for single, array for multiple). */
42
+ value: string | string[] | undefined;
43
+ toggleValue: (tileValue: string) => void;
44
+ isSelected: (tileValue: string) => boolean;
45
+ /** Group-level disabled or multi-select at max (unselected tiles). */
46
+ isTileDisabledByGroup: (tileValue: string) => boolean;
47
+ isGroupDisabled: boolean;
48
+ max: number;
49
+ }
50
+ export interface ITileContextValue {
51
+ /** This tile's `value`. */
52
+ value: string;
53
+ isSelected: boolean;
54
+ /** Effective disabled (group rules + tile `disabled`). */
55
+ isDisabled: boolean;
56
+ selectionType: TileGroupType;
57
+ }
58
+ export type ITilePressablePassthrough = Partial<Pick<PressableProps, 'onPressIn' | 'onPressOut' | 'onHoverIn' | 'onHoverOut'>>;
59
+ export interface ITileProps extends PressableProps, ITilePressablePassthrough, WithStyleContextProps {
60
+ /**
61
+ * Identifies this tile within `Tile.Group`. Must be unique within the group.
62
+ * Standalone tiles still require a value (useful for form submission, analytics, etc.).
63
+ */
64
+ value: string;
65
+ /**
66
+ * Disables this tile (in addition to group rules such as multi-select max).
67
+ */
68
+ disabled?: boolean;
69
+ /**
70
+ * Controlled selected state for **standalone** usage (no parent `Tile.Group`).
71
+ * Ignored when the tile is rendered inside a `Tile.Group` — selection is owned by the group.
72
+ */
73
+ isSelected?: boolean;
74
+ /**
75
+ * Initial selected state for **standalone**, uncontrolled usage.
76
+ */
77
+ defaultSelected?: boolean;
78
+ /**
79
+ * Called when standalone selection state changes. Group context overrides this — when inside
80
+ * a `Tile.Group`, use the group's `onValueChange` instead.
81
+ */
82
+ onSelectedChange?: (isSelected: boolean) => void;
83
+ }
84
+ export interface ITileLeadingSlotProps extends ViewProps {
85
+ /**
86
+ * Leading content is decorative by default for screen readers.
87
+ * @default true
88
+ */
89
+ 'aria-hidden'?: boolean;
90
+ }
91
+ export type ITileContentProps = ViewProps;
92
+ export type ITileTitleProps = TextProps;
93
+ export type ITileDescriptionProps = TextProps;
94
+ export interface ITileIndicatorProps extends ViewProps {
95
+ /**
96
+ * Explicit indicator visual. When inside a `Tile.Group`, auto-infers from `type`
97
+ * (`single` → radio, `multiple` → checkbox). For standalone tiles, defaults to `'checkbox'`
98
+ * to match the standalone `checkbox` ARIA role; override with `indicatorType="radio"` if
99
+ * a radio-style visual is needed.
100
+ */
101
+ indicatorType?: 'radio' | 'checkbox';
102
+ children?: ReactNode;
103
+ }
104
+ /**
105
+ * Generic trailing content slot. Use for chevrons, amounts, chips, status text — anything that
106
+ * is **not** the radio/checkbox selection affordance. For that, use `Tile.Indicator`.
107
+ */
108
+ export type ITileTrailingSlotProps = ViewProps;
109
+ export type ITileComponentType<RootRef, LeadingSlot, Content, Title, Description, Indicator, TrailingSlot, Group> = ForwardRefExoticComponent<RefAttributes<RootRef> & ITileProps> & {
110
+ Group: ForwardRefExoticComponent<RefAttributes<Group> & PropsWithoutRef<Group> & ITileGroupProps>;
111
+ LeadingSlot: ForwardRefExoticComponent<RefAttributes<LeadingSlot> & PropsWithoutRef<LeadingSlot> & ITileLeadingSlotProps>;
112
+ Content: ForwardRefExoticComponent<RefAttributes<Content> & PropsWithoutRef<Content> & ITileContentProps>;
113
+ Title: ForwardRefExoticComponent<RefAttributes<Title> & PropsWithoutRef<Title> & ITileTitleProps>;
114
+ Description: ForwardRefExoticComponent<RefAttributes<Description> & PropsWithoutRef<Description> & ITileDescriptionProps>;
115
+ Indicator: ForwardRefExoticComponent<RefAttributes<Indicator> & PropsWithoutRef<Indicator> & ITileIndicatorProps>;
116
+ TrailingSlot: ForwardRefExoticComponent<RefAttributes<TrailingSlot> & PropsWithoutRef<TrailingSlot> & ITileTrailingSlotProps>;
117
+ };
118
+ export {};
119
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tile/types.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.12",
3
+ "version": "0.0.1-beta.14",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "module": "lib/module/index.js",
6
6
  "react-native": "src/index.ts",
@@ -60,7 +60,7 @@
60
60
  "@react-stately/checkbox": "3.7.4",
61
61
  "@react-stately/radio": "3.12.0",
62
62
  "@react-stately/toggle": "3.9.4",
63
- "@cdx-ui/utils": "0.0.1-beta.12"
63
+ "@cdx-ui/utils": "0.0.1-beta.14"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/react": "*",