@cdx-ui/primitives 0.0.1-alpha.7 → 0.0.1-alpha.9

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.
@@ -61,4 +61,16 @@ Object.keys(_select).forEach(function (key) {
61
61
  }
62
62
  });
63
63
  });
64
+ var _switch = require("./switch");
65
+ Object.keys(_switch).forEach(function (key) {
66
+ if (key === "default" || key === "__esModule") return;
67
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
68
+ if (key in exports && exports[key] === _switch[key]) return;
69
+ Object.defineProperty(exports, key, {
70
+ enumerable: true,
71
+ get: function () {
72
+ return _switch[key];
73
+ }
74
+ });
75
+ });
64
76
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_button","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_checkbox","_input","_overlay","_select"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,SAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,SAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,SAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,SAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,MAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,MAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,MAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,MAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,QAAA,GAAAf,OAAA;AACA,IAAAgB,OAAA,GAAAhB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAc,OAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,OAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,OAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_button","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_checkbox","_input","_overlay","_select","_switch"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,SAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,SAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,SAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,SAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,MAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,MAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,MAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,MAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,QAAA,GAAAf,OAAA;AACA,IAAAgB,OAAA,GAAAhB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAc,OAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,OAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,OAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AACA,IAAAa,OAAA,GAAAjB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAe,OAAA,EAAAd,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAa,OAAA,CAAAb,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,OAAA,CAAAb,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createSwitchRoot = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _focus = require("@react-native-aria/focus");
9
+ var _interactions = require("@react-native-aria/interactions");
10
+ var _toggle = require("@react-stately/toggle");
11
+ var _utils = require("@cdx-ui/utils");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ const createSwitchRoot = BaseSwitch => /*#__PURE__*/(0, _react.forwardRef)(({
15
+ disabled,
16
+ isDisabled,
17
+ isChecked,
18
+ isInvalid,
19
+ defaultValue,
20
+ value,
21
+ onValueChange,
22
+ ...props
23
+ }, ref) => {
24
+ const formControlContext = (0, _utils.useFormControlContext)();
25
+ const combinedProps = {
26
+ ...formControlContext,
27
+ ...props
28
+ };
29
+ const controlledValue = value ?? isChecked;
30
+ const state = (0, _toggle.useToggleState)({
31
+ defaultSelected: defaultValue ?? false,
32
+ isSelected: controlledValue,
33
+ onChange: onValueChange
34
+ });
35
+ const checked = controlledValue ?? state.isSelected;
36
+ const _ref = _react.default.useRef(null);
37
+ const {
38
+ isHovered
39
+ } = (0, _interactions.useHover)({}, _ref);
40
+ const {
41
+ isFocusVisible,
42
+ focusProps
43
+ } = (0, _focus.useFocusRing)();
44
+ const mergedRef = (0, _utils.mergeRefs)(ref, _ref);
45
+ const isDisabledResolved = disabled || isDisabled || combinedProps.isDisabled;
46
+ const isInvalidResolved = isInvalid || combinedProps.isInvalid;
47
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BaseSwitch, {
48
+ states: {
49
+ hover: isHovered,
50
+ disabled: isDisabledResolved,
51
+ invalid: isInvalidResolved,
52
+ checked,
53
+ focusVisible: isFocusVisible
54
+ },
55
+ dataSet: {
56
+ hover: isHovered ? 'true' : 'false',
57
+ disabled: isDisabledResolved ? 'true' : 'false',
58
+ invalid: isInvalidResolved ? 'true' : 'false',
59
+ checked: checked ? 'true' : 'false',
60
+ 'focus-visible': isFocusVisible ? 'true' : 'false'
61
+ },
62
+ disabled: isDisabledResolved,
63
+ ...focusProps,
64
+ onValueChange: val => {
65
+ state.setSelected(val);
66
+ },
67
+ value: checked,
68
+ ...combinedProps,
69
+ ref: mergedRef
70
+ });
71
+ });
72
+ exports.createSwitchRoot = createSwitchRoot;
73
+ //# sourceMappingURL=createSwitchRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_focus","_interactions","_toggle","_utils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createSwitchRoot","BaseSwitch","forwardRef","disabled","isDisabled","isChecked","isInvalid","defaultValue","value","onValueChange","props","ref","formControlContext","useFormControlContext","combinedProps","controlledValue","state","useToggleState","defaultSelected","isSelected","onChange","checked","_ref","React","useRef","isHovered","useHover","isFocusVisible","focusProps","useFocusRing","mergedRef","mergeRefs","isDisabledResolved","isInvalidResolved","jsx","states","hover","invalid","focusVisible","dataSet","val","setSelected","exports"],"sourceRoot":"../../../src","sources":["switch/createSwitchRoot.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createSwitch = createSwitch;
7
+ var _createSwitchRoot = require("./createSwitchRoot");
8
+ function createSwitch({
9
+ Root
10
+ }) {
11
+ const Switch = (0, _createSwitchRoot.createSwitchRoot)(Root);
12
+ Switch.displayName = 'Switch';
13
+ return Switch;
14
+ }
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_createSwitchRoot","require","createSwitch","Root","Switch","createSwitchRoot","displayName"],"sourceRoot":"../../../src","sources":["switch/index.ts"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAKO,SAASC,YAAYA,CAAiB;EAC3CC;AAGF,CAAC,EAA8B;EAC7B,MAAMC,MAAM,GAAG,IAAAC,kCAAgB,EAACF,IAAI,CAAC;EAErCC,MAAM,CAACE,WAAW,GAAG,QAAQ;EAC7B,OAAOF,MAAM;AACf","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["switch/types.ts"],"mappings":"","ignoreList":[]}
@@ -5,4 +5,5 @@ export * from './checkbox';
5
5
  export * from './input';
6
6
  export { OverlayInsetsProvider } from './overlay';
7
7
  export * from './select';
8
+ export * from './switch';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["OverlayInsetsProvider"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,cAAc,SAAS;AACvB,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,cAAc,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["OverlayInsetsProvider"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,cAAc,SAAS;AACvB,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,cAAc,UAAU;AACxB,cAAc,UAAU","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ import React, { forwardRef } from 'react';
4
+ import { useFocusRing } from '@react-native-aria/focus';
5
+ import { useHover } from '@react-native-aria/interactions';
6
+ import { useToggleState } from '@react-stately/toggle';
7
+ import { useFormControlContext, mergeRefs } from '@cdx-ui/utils';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ export const createSwitchRoot = BaseSwitch => /*#__PURE__*/forwardRef(({
10
+ disabled,
11
+ isDisabled,
12
+ isChecked,
13
+ isInvalid,
14
+ defaultValue,
15
+ value,
16
+ onValueChange,
17
+ ...props
18
+ }, ref) => {
19
+ const formControlContext = useFormControlContext();
20
+ const combinedProps = {
21
+ ...formControlContext,
22
+ ...props
23
+ };
24
+ const controlledValue = value ?? isChecked;
25
+ const state = useToggleState({
26
+ defaultSelected: defaultValue ?? false,
27
+ isSelected: controlledValue,
28
+ onChange: onValueChange
29
+ });
30
+ const checked = controlledValue ?? state.isSelected;
31
+ const _ref = React.useRef(null);
32
+ const {
33
+ isHovered
34
+ } = useHover({}, _ref);
35
+ const {
36
+ isFocusVisible,
37
+ focusProps
38
+ } = useFocusRing();
39
+ const mergedRef = mergeRefs(ref, _ref);
40
+ const isDisabledResolved = disabled || isDisabled || combinedProps.isDisabled;
41
+ const isInvalidResolved = isInvalid || combinedProps.isInvalid;
42
+ return /*#__PURE__*/_jsx(BaseSwitch, {
43
+ states: {
44
+ hover: isHovered,
45
+ disabled: isDisabledResolved,
46
+ invalid: isInvalidResolved,
47
+ checked,
48
+ focusVisible: isFocusVisible
49
+ },
50
+ dataSet: {
51
+ hover: isHovered ? 'true' : 'false',
52
+ disabled: isDisabledResolved ? 'true' : 'false',
53
+ invalid: isInvalidResolved ? 'true' : 'false',
54
+ checked: checked ? 'true' : 'false',
55
+ 'focus-visible': isFocusVisible ? 'true' : 'false'
56
+ },
57
+ disabled: isDisabledResolved,
58
+ ...focusProps,
59
+ onValueChange: val => {
60
+ state.setSelected(val);
61
+ },
62
+ value: checked,
63
+ ...combinedProps,
64
+ ref: mergedRef
65
+ });
66
+ });
67
+ //# sourceMappingURL=createSwitchRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","useFocusRing","useHover","useToggleState","useFormControlContext","mergeRefs","jsx","_jsx","createSwitchRoot","BaseSwitch","disabled","isDisabled","isChecked","isInvalid","defaultValue","value","onValueChange","props","ref","formControlContext","combinedProps","controlledValue","state","defaultSelected","isSelected","onChange","checked","_ref","useRef","isHovered","isFocusVisible","focusProps","mergedRef","isDisabledResolved","isInvalidResolved","states","hover","invalid","focusVisible","dataSet","val","setSelected"],"sourceRoot":"../../../src","sources":["switch/createSwitchRoot.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,qBAAqB,EAAEC,SAAS,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAKjE,OAAO,MAAMC,gBAAgB,GAAoBC,UAAkC,iBACjFT,UAAU,CACR,CACE;EACEU,QAAQ;EACRC,UAAU;EACVC,SAAS;EACTC,SAAS;EACTC,YAAY;EACZC,KAAK;EACLC,aAAa;EACb,GAAGC;AACS,CAAC,EACfC,GAA0B,KACvB;EACH,MAAMC,kBAAkB,GAAGf,qBAAqB,CAAC,CAAC;EAClD,MAAMgB,aAAa,GAAG;IAAE,GAAGD,kBAAkB;IAAE,GAAGF;EAAM,CAAC;EACzD,MAAMI,eAAe,GAAGN,KAAK,IAAIH,SAAS;EAC1C,MAAMU,KAAK,GAAGnB,cAAc,CAAC;IAC3BoB,eAAe,EAAET,YAAY,IAAI,KAAK;IACtCU,UAAU,EAAEH,eAAe;IAC3BI,QAAQ,EAAET;EACZ,CAAC,CAAC;EAEF,MAAMU,OAAO,GAAGL,eAAe,IAAIC,KAAK,CAACE,UAAU;EAEnD,MAAMG,IAAI,GAAG5B,KAAK,CAAC6B,MAAM,CAAC,IAAI,CAAC;EAC/B,MAAM;IAAEC;EAAU,CAAC,GAAG3B,QAAQ,CAAC,CAAC,CAAC,EAAEyB,IAAI,CAAC;EACxC,MAAM;IAAEG,cAAc;IAAEC;EAAW,CAAC,GAAG9B,YAAY,CAAC,CAAC;EAErD,MAAM+B,SAAS,GAAG3B,SAAS,CAACa,GAAG,EAAkBS,IAAI,CAAC;EAEtD,MAAMM,kBAAkB,GAAGvB,QAAQ,IAAIC,UAAU,IAAIS,aAAa,CAACT,UAAU;EAC7E,MAAMuB,iBAAiB,GAAGrB,SAAS,IAAIO,aAAa,CAACP,SAAS;EAE9D,oBACEN,IAAA,CAACE,UAAU;IACT0B,MAAM,EAAE;MACNC,KAAK,EAAEP,SAAS;MAChBnB,QAAQ,EAAEuB,kBAAkB;MAC5BI,OAAO,EAAEH,iBAAiB;MAC1BR,OAAO;MACPY,YAAY,EAAER;IAChB,CAAE;IACFS,OAAO,EAAE;MACPH,KAAK,EAAEP,SAAS,GAAG,MAAM,GAAG,OAAO;MACnCnB,QAAQ,EAAEuB,kBAAkB,GAAG,MAAM,GAAG,OAAO;MAC/CI,OAAO,EAAEH,iBAAiB,GAAG,MAAM,GAAG,OAAO;MAC7CR,OAAO,EAAEA,OAAO,GAAG,MAAM,GAAG,OAAO;MACnC,eAAe,EAAEI,cAAc,GAAG,MAAM,GAAG;IAC7C,CAAE;IACFpB,QAAQ,EAAEuB,kBAAmB;IAAA,GACzBF,UAAU;IACdf,aAAa,EAAGwB,GAAY,IAAK;MAC/BlB,KAAK,CAACmB,WAAW,CAACD,GAAG,CAAC;IACxB,CAAE;IACFzB,KAAK,EAAEW,OAAQ;IAAA,GACVN,aAAa;IAClBF,GAAG,EAAEc;EAA0B,CAChC,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import { createSwitchRoot } from './createSwitchRoot';
4
+ export function createSwitch({
5
+ Root
6
+ }) {
7
+ const Switch = createSwitchRoot(Root);
8
+ Switch.displayName = 'Switch';
9
+ return Switch;
10
+ }
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSwitchRoot","createSwitch","Root","Switch","displayName"],"sourceRoot":"../../../src","sources":["switch/index.ts"],"mappings":";;AACA,SAASA,gBAAgB,QAAQ,oBAAoB;AAKrD,OAAO,SAASC,YAAYA,CAAiB;EAC3CC;AAGF,CAAC,EAA8B;EAC7B,MAAMC,MAAM,GAAGH,gBAAgB,CAACE,IAAI,CAAC;EAErCC,MAAM,CAACC,WAAW,GAAG,QAAQ;EAC7B,OAAOD,MAAM;AACf","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":["switch/types.ts"],"mappings":"","ignoreList":[]}
@@ -3,5 +3,6 @@ export * from './checkbox';
3
3
  export * from './input';
4
4
  export { type EdgeInsets, OverlayInsetsProvider } from './overlay';
5
5
  export * from './select';
6
+ export * from './switch';
6
7
  export type { InteractionState } from './types';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const createSwitchRoot: <T, R = unknown>(BaseSwitch: React.ComponentType<T>) => React.ForwardRefExoticComponent<import("./types").IInterfaceSwitchProps & React.RefAttributes<R>>;
3
+ //# sourceMappingURL=createSwitchRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSwitchRoot.d.ts","sourceRoot":"","sources":["../../../src/switch/createSwitchRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAS1C,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,YAAY,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,sGA8DhF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type React from 'react';
2
+ import type { ISwitchComponentType } from './types';
3
+ export type { ISwitchProps, ISwitchComponentType, IInterfaceSwitchProps } from './types';
4
+ export declare function createSwitch<T, R = unknown>({ Root, }: {
5
+ Root: React.ComponentType<T>;
6
+ }): ISwitchComponentType<T, R>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/switch/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEzF,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,EAC3C,IAAI,GACL,EAAE;IACD,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CAC9B,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAK7B"}
@@ -0,0 +1,38 @@
1
+ import type React from 'react';
2
+ export interface IInterfaceSwitchProps {
3
+ /**
4
+ * Callback invoked when the switch value changes.
5
+ */
6
+ onValueChange?: (value: boolean) => void;
7
+ /**
8
+ * If true, set the Switch to the checked state.
9
+ */
10
+ isChecked?: boolean;
11
+ /**
12
+ * The current value of the switch.
13
+ */
14
+ value?: boolean;
15
+ /**
16
+ * If true, the switch will be disabled.
17
+ */
18
+ isDisabled?: boolean;
19
+ /**
20
+ * If true, the switch will be disabled.
21
+ */
22
+ disabled?: boolean;
23
+ /**
24
+ * If true, the checkbox will be initially checked.
25
+ */
26
+ defaultValue?: boolean;
27
+ /**
28
+ * If true, set the switch to the invalid state.
29
+ */
30
+ isInvalid?: boolean;
31
+ /**
32
+ * If true, the switch will be hovered.
33
+ */
34
+ isHovered?: boolean;
35
+ }
36
+ export type ISwitchComponentType<T, R = unknown> = React.ForwardRefExoticComponent<React.PropsWithoutRef<T & IInterfaceSwitchProps> & React.RefAttributes<R>>;
37
+ export type ISwitchProps = IInterfaceSwitchProps;
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/switch/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,yBAAyB,CAChF,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,qBAAqB,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAC1E,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdx-ui/primitives",
3
- "version": "0.0.1-alpha.7",
3
+ "version": "0.0.1-alpha.9",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "module": "lib/module/index.js",
6
6
  "react-native": "src/index.ts",
@@ -52,7 +52,7 @@
52
52
  "@react-native-aria/interactions": "^0.2.16",
53
53
  "@react-stately/checkbox": "3.7.4",
54
54
  "@react-stately/toggle": "3.9.4",
55
- "@cdx-ui/utils": "0.0.1-alpha.7"
55
+ "@cdx-ui/utils": "0.0.1-alpha.9"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@types/react": "*",
package/src/index.ts CHANGED
@@ -3,4 +3,5 @@ export * from './checkbox';
3
3
  export * from './input';
4
4
  export { type EdgeInsets, OverlayInsetsProvider } from './overlay';
5
5
  export * from './select';
6
+ export * from './switch';
6
7
  export type { InteractionState } from './types';
@@ -0,0 +1,72 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { useFocusRing } from '@react-native-aria/focus';
3
+ import { useHover } from '@react-native-aria/interactions';
4
+ import { useToggleState } from '@react-stately/toggle';
5
+ import { useFormControlContext, mergeRefs } from '@cdx-ui/utils';
6
+ import type { ISwitchProps } from './types';
7
+
8
+ type MergeableRef = Parameters<typeof mergeRefs>[0];
9
+
10
+ export const createSwitchRoot = <T, R = unknown>(BaseSwitch: React.ComponentType<T>) =>
11
+ forwardRef<R, ISwitchProps>(
12
+ (
13
+ {
14
+ disabled,
15
+ isDisabled,
16
+ isChecked,
17
+ isInvalid,
18
+ defaultValue,
19
+ value,
20
+ onValueChange,
21
+ ...props
22
+ }: ISwitchProps,
23
+ ref: React.ForwardedRef<R>,
24
+ ) => {
25
+ const formControlContext = useFormControlContext();
26
+ const combinedProps = { ...formControlContext, ...props };
27
+ const controlledValue = value ?? isChecked;
28
+ const state = useToggleState({
29
+ defaultSelected: defaultValue ?? false,
30
+ isSelected: controlledValue,
31
+ onChange: onValueChange,
32
+ });
33
+
34
+ const checked = controlledValue ?? state.isSelected;
35
+
36
+ const _ref = React.useRef(null);
37
+ const { isHovered } = useHover({}, _ref);
38
+ const { isFocusVisible, focusProps } = useFocusRing();
39
+
40
+ const mergedRef = mergeRefs(ref as MergeableRef, _ref);
41
+
42
+ const isDisabledResolved = disabled || isDisabled || combinedProps.isDisabled;
43
+ const isInvalidResolved = isInvalid || combinedProps.isInvalid;
44
+
45
+ return (
46
+ <BaseSwitch
47
+ states={{
48
+ hover: isHovered,
49
+ disabled: isDisabledResolved,
50
+ invalid: isInvalidResolved,
51
+ checked,
52
+ focusVisible: isFocusVisible,
53
+ }}
54
+ dataSet={{
55
+ hover: isHovered ? 'true' : 'false',
56
+ disabled: isDisabledResolved ? 'true' : 'false',
57
+ invalid: isInvalidResolved ? 'true' : 'false',
58
+ checked: checked ? 'true' : 'false',
59
+ 'focus-visible': isFocusVisible ? 'true' : 'false',
60
+ }}
61
+ disabled={isDisabledResolved}
62
+ {...focusProps}
63
+ onValueChange={(val: boolean) => {
64
+ state.setSelected(val);
65
+ }}
66
+ value={checked}
67
+ {...(combinedProps as T)}
68
+ ref={mergedRef as React.Ref<R>}
69
+ />
70
+ );
71
+ },
72
+ );
@@ -0,0 +1,16 @@
1
+ import type React from 'react';
2
+ import { createSwitchRoot } from './createSwitchRoot';
3
+ import type { ISwitchComponentType } from './types';
4
+
5
+ export type { ISwitchProps, ISwitchComponentType, IInterfaceSwitchProps } from './types';
6
+
7
+ export function createSwitch<T, R = unknown>({
8
+ Root,
9
+ }: {
10
+ Root: React.ComponentType<T>;
11
+ }): ISwitchComponentType<T, R> {
12
+ const Switch = createSwitchRoot(Root);
13
+
14
+ Switch.displayName = 'Switch';
15
+ return Switch as ISwitchComponentType<T, R>;
16
+ }
@@ -0,0 +1,42 @@
1
+ import type React from 'react';
2
+
3
+ export interface IInterfaceSwitchProps {
4
+ /**
5
+ * Callback invoked when the switch value changes.
6
+ */
7
+ onValueChange?: (value: boolean) => void;
8
+ /**
9
+ * If true, set the Switch to the checked state.
10
+ */
11
+ isChecked?: boolean;
12
+ /**
13
+ * The current value of the switch.
14
+ */
15
+ value?: boolean;
16
+ /**
17
+ * If true, the switch will be disabled.
18
+ */
19
+ isDisabled?: boolean;
20
+ /**
21
+ * If true, the switch will be disabled.
22
+ */
23
+ disabled?: boolean;
24
+ /**
25
+ * If true, the checkbox will be initially checked.
26
+ */
27
+ defaultValue?: boolean;
28
+ /**
29
+ * If true, set the switch to the invalid state.
30
+ */
31
+ isInvalid?: boolean;
32
+ /**
33
+ * If true, the switch will be hovered.
34
+ */
35
+ isHovered?: boolean;
36
+ }
37
+
38
+ export type ISwitchComponentType<T, R = unknown> = React.ForwardRefExoticComponent<
39
+ React.PropsWithoutRef<T & IInterfaceSwitchProps> & React.RefAttributes<R>
40
+ >;
41
+
42
+ export type ISwitchProps = IInterfaceSwitchProps;