@hanzogui/toggle-group 2.0.0

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 (71) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/Toggle.cjs +145 -0
  3. package/dist/cjs/Toggle.native.js +154 -0
  4. package/dist/cjs/Toggle.native.js.map +1 -0
  5. package/dist/cjs/ToggleGroup.cjs +229 -0
  6. package/dist/cjs/ToggleGroup.native.js +252 -0
  7. package/dist/cjs/ToggleGroup.native.js.map +1 -0
  8. package/dist/cjs/context.cjs +32 -0
  9. package/dist/cjs/context.native.js +37 -0
  10. package/dist/cjs/context.native.js.map +1 -0
  11. package/dist/cjs/index.cjs +28 -0
  12. package/dist/cjs/index.native.js +31 -0
  13. package/dist/cjs/index.native.js.map +1 -0
  14. package/dist/cjs/types.cjs +16 -0
  15. package/dist/cjs/types.native.js +19 -0
  16. package/dist/cjs/types.native.js.map +1 -0
  17. package/dist/esm/Toggle.mjs +110 -0
  18. package/dist/esm/Toggle.mjs.map +1 -0
  19. package/dist/esm/Toggle.native.js +116 -0
  20. package/dist/esm/Toggle.native.js.map +1 -0
  21. package/dist/esm/ToggleGroup.mjs +195 -0
  22. package/dist/esm/ToggleGroup.mjs.map +1 -0
  23. package/dist/esm/ToggleGroup.native.js +215 -0
  24. package/dist/esm/ToggleGroup.native.js.map +1 -0
  25. package/dist/esm/context.mjs +8 -0
  26. package/dist/esm/context.mjs.map +1 -0
  27. package/dist/esm/context.native.js +10 -0
  28. package/dist/esm/context.native.js.map +1 -0
  29. package/dist/esm/index.js +4 -0
  30. package/dist/esm/index.js.map +1 -0
  31. package/dist/esm/index.mjs +4 -0
  32. package/dist/esm/index.mjs.map +1 -0
  33. package/dist/esm/index.native.js +4 -0
  34. package/dist/esm/index.native.js.map +1 -0
  35. package/dist/esm/types.mjs +2 -0
  36. package/dist/esm/types.mjs.map +1 -0
  37. package/dist/esm/types.native.js +2 -0
  38. package/dist/esm/types.native.js.map +1 -0
  39. package/dist/jsx/Toggle.mjs +110 -0
  40. package/dist/jsx/Toggle.mjs.map +1 -0
  41. package/dist/jsx/Toggle.native.js +154 -0
  42. package/dist/jsx/Toggle.native.js.map +1 -0
  43. package/dist/jsx/ToggleGroup.mjs +195 -0
  44. package/dist/jsx/ToggleGroup.mjs.map +1 -0
  45. package/dist/jsx/ToggleGroup.native.js +252 -0
  46. package/dist/jsx/ToggleGroup.native.js.map +1 -0
  47. package/dist/jsx/context.mjs +8 -0
  48. package/dist/jsx/context.mjs.map +1 -0
  49. package/dist/jsx/context.native.js +37 -0
  50. package/dist/jsx/context.native.js.map +1 -0
  51. package/dist/jsx/index.js +4 -0
  52. package/dist/jsx/index.js.map +1 -0
  53. package/dist/jsx/index.mjs +4 -0
  54. package/dist/jsx/index.mjs.map +1 -0
  55. package/dist/jsx/index.native.js +31 -0
  56. package/dist/jsx/index.native.js.map +1 -0
  57. package/dist/jsx/types.mjs +2 -0
  58. package/dist/jsx/types.mjs.map +1 -0
  59. package/dist/jsx/types.native.js +19 -0
  60. package/dist/jsx/types.native.js.map +1 -0
  61. package/package.json +60 -0
  62. package/src/Toggle.tsx +150 -0
  63. package/src/ToggleGroup.tsx +355 -0
  64. package/src/context.tsx +10 -0
  65. package/src/index.ts +2 -0
  66. package/src/types.tsx +3 -0
  67. package/types/Toggle.d.ts +74 -0
  68. package/types/ToggleGroup.d.ts +189 -0
  69. package/types/context.d.ts +9 -0
  70. package/types/index.d.ts +3 -0
  71. package/types/types.d.ts +5 -0
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf,
8
+ __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: !0
13
+ });
14
+ },
15
+ __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
17
+ get: () => from[key],
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: !0
30
+ }) : target, mod)),
31
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: !0
33
+ }), mod);
34
+ var ToggleGroup_exports = {};
35
+ __export(ToggleGroup_exports, {
36
+ ToggleGroup: () => ToggleGroup
37
+ });
38
+ module.exports = __toCommonJS(ToggleGroup_exports);
39
+ var import_jsx_runtime = require("react/jsx-runtime"),
40
+ import_gui_constants = require("@hanzo/gui-constants"),
41
+ import_gui_focusable = require("@hanzo/gui-focusable"),
42
+ import_gui_helpers = require("@hanzo/gui-helpers"),
43
+ import_gui_roving_focus = require("@hanzo/gui-roving-focus"),
44
+ import_gui_use_controllable_state = require("@hanzo/gui-use-controllable-state"),
45
+ import_gui_use_direction = require("@hanzo/gui-use-direction"),
46
+ import_gui_web = require("@hanzo/gui-web"),
47
+ import_react = __toESM(require("react"), 1),
48
+ import_Toggle = require("./Toggle.native.js"),
49
+ import_context = require("./context.native.js"),
50
+ TOGGLE_GROUP_NAME = "ToggleGroup",
51
+ TOGGLE_GROUP_ITEM_NAME = "ToggleGroupItem",
52
+ TOGGLE_GROUP_CONTEXT = "ToggleGroup",
53
+ {
54
+ Provider: ToggleGroupItemProvider
55
+ } = (0, import_gui_web.createStyledContext)(),
56
+ {
57
+ Provider: ToggleGroupContext,
58
+ useStyledContext: useToggleGroupContext
59
+ } = (0, import_gui_web.createStyledContext)({}),
60
+ ToggleGroupItem = import_Toggle.ToggleFrame.styleable(function (props, forwardedRef) {
61
+ var valueContext = useToggleGroupValueContext(props.__scopeToggleGroup),
62
+ context = useToggleGroupContext(props.__scopeToggleGroup),
63
+ toggleContext = import_context.context.useStyledContext(props.__scopeToggleGroup),
64
+ active = valueContext?.value.includes(props.value),
65
+ color = props.color || toggleContext.color,
66
+ disabled = context.disabled || props.disabled || !1,
67
+ inner = /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupItemImpl, {
68
+ ref: forwardedRef,
69
+ tabIndex: disabled ? -1 : 0,
70
+ ...props,
71
+ active,
72
+ disabled
73
+ });
74
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupItemProvider, {
75
+ scope: props.__scopeToggleGroup,
76
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.context.Provider, {
77
+ color,
78
+ active,
79
+ children: context.rovingFocus ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_gui_roving_focus.RovingFocusGroup.Item, {
80
+ asChild: "except-style",
81
+ __scopeRovingFocusGroup: props.__scopeToggleGroup || TOGGLE_GROUP_CONTEXT,
82
+ focusable: !disabled,
83
+ active,
84
+ children: inner
85
+ }) : inner
86
+ })
87
+ });
88
+ });
89
+ ToggleGroupItem.displayName = TOGGLE_GROUP_ITEM_NAME;
90
+ var ToggleGroupItemImpl = /* @__PURE__ */import_react.default.forwardRef(function (props, forwardedRef) {
91
+ var {
92
+ __scopeToggleGroup,
93
+ value,
94
+ ...itemProps
95
+ } = props,
96
+ valueContext = useToggleGroupValueContext(__scopeToggleGroup),
97
+ singleProps = {
98
+ "aria-pressed": void 0
99
+ },
100
+ typeProps = valueContext.type === "single" ? singleProps : void 0;
101
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_Toggle.Toggle, {
102
+ ...typeProps,
103
+ ...itemProps,
104
+ ref: forwardedRef,
105
+ onActiveChange: function (pressed) {
106
+ pressed ? valueContext.onItemActivate(value) : valueContext.onItemDeactivate(value);
107
+ }
108
+ });
109
+ }),
110
+ ToggleGroup = (0, import_gui_helpers.withStaticProperties)(/* @__PURE__ */import_react.default.forwardRef(function (props, forwardedRef) {
111
+ var {
112
+ type,
113
+ ...toggleGroupProps
114
+ } = props;
115
+ if (import_gui_constants.isWeb || import_react.default.useEffect(function () {
116
+ if (props.id) return (0, import_gui_focusable.registerFocusable)(props.id, {
117
+ focus: function () {}
118
+ });
119
+ }, [props.id]), type === "single") {
120
+ var singleProps = toggleGroupProps;
121
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupImplSingle, {
122
+ ...singleProps,
123
+ ref: forwardedRef
124
+ });
125
+ }
126
+ if (type === "multiple") {
127
+ var multipleProps = toggleGroupProps;
128
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupImplMultiple, {
129
+ ...multipleProps,
130
+ ref: forwardedRef
131
+ });
132
+ }
133
+ throw new Error(`Missing prop \`type\` expected on \`${TOGGLE_GROUP_NAME}\``);
134
+ }), {
135
+ Item: ToggleGroupItem
136
+ });
137
+ ToggleGroup.displayName = TOGGLE_GROUP_NAME;
138
+ var {
139
+ Provider: ToggleGroupValueProvider,
140
+ useStyledContext: useToggleGroupValueContext
141
+ } = (0, import_gui_web.createStyledContext)(),
142
+ ToggleGroupImplSingle = /* @__PURE__ */import_react.default.forwardRef(function (props, forwardedRef) {
143
+ var {
144
+ value: valueProp,
145
+ defaultValue,
146
+ onValueChange = function () {},
147
+ disableDeactivation = !1,
148
+ children,
149
+ ...toggleGroupSingleProps
150
+ } = props,
151
+ [value, setValue] = (0, import_gui_use_controllable_state.useControllableState)({
152
+ prop: valueProp,
153
+ defaultProp: defaultValue,
154
+ onChange: onValueChange
155
+ });
156
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupValueProvider, {
157
+ scope: props.__scopeToggleGroup,
158
+ type: "single",
159
+ value: value ? [value] : [],
160
+ defaultValue: value,
161
+ onItemActivate: setValue,
162
+ onItemDeactivate: import_react.default.useCallback(function () {
163
+ return disableDeactivation ? null : setValue("");
164
+ }, [setValue, disableDeactivation]),
165
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupImpl, {
166
+ ...toggleGroupSingleProps,
167
+ ref: forwardedRef,
168
+ children
169
+ })
170
+ });
171
+ }),
172
+ ToggleGroupImplMultiple = /* @__PURE__ */import_react.default.forwardRef(function (props, forwardedRef) {
173
+ var {
174
+ value: valueProp,
175
+ defaultValue,
176
+ onValueChange = function () {},
177
+ disableDeactivation,
178
+ children,
179
+ ...toggleGroupMultipleProps
180
+ } = props,
181
+ [value = [], setValue] = (0, import_gui_use_controllable_state.useControllableState)({
182
+ prop: valueProp,
183
+ defaultProp: defaultValue,
184
+ onChange: onValueChange
185
+ }),
186
+ handleButtonActivate = import_react.default.useCallback(function (itemValue) {
187
+ return setValue(function () {
188
+ var prevValue = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
189
+ return [...prevValue, itemValue];
190
+ });
191
+ }, [setValue]),
192
+ handleButtonDeactivate = import_react.default.useCallback(function (itemValue) {
193
+ return setValue(function () {
194
+ var prevValue = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
195
+ return prevValue.filter(function (value2) {
196
+ return value2 !== itemValue;
197
+ });
198
+ });
199
+ }, [setValue]);
200
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupValueProvider, {
201
+ scope: props.__scopeToggleGroup,
202
+ type: "multiple",
203
+ value,
204
+ defaultValue: value,
205
+ onItemActivate: handleButtonActivate,
206
+ onItemDeactivate: handleButtonDeactivate,
207
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupImpl, {
208
+ ...toggleGroupMultipleProps,
209
+ ref: forwardedRef,
210
+ children
211
+ })
212
+ });
213
+ }),
214
+ ToggleGroupFrame = (0, import_gui_web.styled)(import_gui_web.View, {
215
+ name: TOGGLE_GROUP_NAME
216
+ }),
217
+ ToggleGroupImpl = ToggleGroupFrame.styleable(function (props, forwardedRef) {
218
+ var {
219
+ __scopeToggleGroup,
220
+ disabled = !1,
221
+ orientation = "horizontal",
222
+ dir,
223
+ rovingFocus = !0,
224
+ loop = !0,
225
+ color,
226
+ ...toggleGroupProps
227
+ } = props,
228
+ direction = (0, import_gui_use_direction.useDirection)(dir),
229
+ content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupFrame, {
230
+ role: "group",
231
+ ref: forwardedRef,
232
+ "data-disabled": disabled ? "" : void 0,
233
+ ...toggleGroupProps
234
+ });
235
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(ToggleGroupContext, {
236
+ scope: __scopeToggleGroup,
237
+ rovingFocus,
238
+ disabled,
239
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.context.Provider, {
240
+ color,
241
+ children: rovingFocus ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_gui_roving_focus.RovingFocusGroup, {
242
+ asChild: "except-style",
243
+ __scopeRovingFocusGroup: __scopeToggleGroup || TOGGLE_GROUP_CONTEXT,
244
+ orientation,
245
+ dir: direction,
246
+ loop,
247
+ children: content
248
+ }) : content
249
+ })
250
+ });
251
+ });
252
+ //# sourceMappingURL=ToggleGroup.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","ToggleGroup_exports","ToggleGroup","module","exports","import_jsx_runtime","require","import_gui_constants","import_gui_focusable","import_gui_helpers","import_gui_roving_focus","import_gui_use_controllable_state","import_gui_use_direction","import_gui_web","import_react","import_Toggle","import_context","TOGGLE_GROUP_NAME","TOGGLE_GROUP_ITEM_NAME","TOGGLE_GROUP_CONTEXT","Provider","ToggleGroupItemProvider","createStyledContext","ToggleGroupContext","useStyledContext","useToggleGroupContext","ToggleGroupItem","ToggleFrame","styleable","props","forwardedRef","valueContext","useToggleGroupValueContext","__scopeToggleGroup","context","toggleContext","active","includes","color","disabled","inner","jsx","ToggleGroupItemImpl","ref","tabIndex","scope","children","rovingFocus","RovingFocusGroup","Item","asChild","__scopeRovingFocusGroup","focusable","displayName","default","forwardRef","itemProps","singleProps","typeProps","type","Toggle","onActiveChange","pressed","onItemActivate","onItemDeactivate","withStaticProperties","toggleGroupProps","isWeb","useEffect","id","registerFocusable","focus","ToggleGroupImplSingle","multipleProps","ToggleGroupImplMultiple","Error","ToggleGroupValueProvider","valueProp","defaultValue","onValueChange","disableDeactivation","toggleGroupSingleProps","setValue","useControllableState","prop","defaultProp","onChange","useCallback","ToggleGroupImpl","toggleGroupMultipleProps","handleButtonActivate","itemValue","prevValue","arguments","length","handleButtonDeactivate","filter","value2","ToggleGroupFrame","styled","View","orientation","dir","loop","direction","useDirection","content","role"],"sources":["../../src/ToggleGroup.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { createStyledContext } from "@hanzo/gui-web";
2
+ const context = createStyledContext({
3
+ color: "",
4
+ active: !1
5
+ }),
6
+ useToggleGroupItem = () => context.useStyledContext();
7
+ export { context, useToggleGroupItem };
8
+ //# sourceMappingURL=context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createStyledContext","context","color","active","useToggleGroupItem","useStyledContext"],"sources":["../../src/context.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,mBAAA,QAA2B;AAE7B,MAAMC,OAAA,GAAUD,mBAAA,CAAoB;IACzCE,KAAA,EAAO;IACPC,MAAA,EAAQ;EACV,CAAC;EAEYC,kBAAA,GAAqBA,CAAA,KACzBH,OAAA,CAAQI,gBAAA,CAAiB","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var context_exports = {};
24
+ __export(context_exports, {
25
+ context: () => context,
26
+ useToggleGroupItem: () => useToggleGroupItem
27
+ });
28
+ module.exports = __toCommonJS(context_exports);
29
+ var import_gui_web = require("@hanzo/gui-web"),
30
+ context = (0, import_gui_web.createStyledContext)({
31
+ color: "",
32
+ active: !1
33
+ }),
34
+ useToggleGroupItem = function () {
35
+ return context.useStyledContext();
36
+ };
37
+ //# sourceMappingURL=context.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty"],"sources":["../../src/context.tsx"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AAEF,IAAAA,SAAM,GAAUC,MAAA,CAAAC,cAAoB;AAAA,IACzCC,gBAAO,GAAAF,MAAA,CAAAG,wBAAA;AAAA,IACPC,iBAAQ,GAAAJ,MAAA,CAAAK,mBAAA;AACV,IAEaC,YAAA,GAAAN,MAAqB,CAAAO,SACzB,CAAAC,cAAQ","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export * from "./ToggleGroup.mjs";
2
+ import { useToggleGroupItem } from "./context.mjs";
3
+ export { useToggleGroupItem };
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useToggleGroupItem"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,SAASA,kBAAA,QAA0B","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export * from "./ToggleGroup.mjs";
2
+ import { useToggleGroupItem } from "./context.mjs";
3
+ export { useToggleGroupItem };
4
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useToggleGroupItem"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,SAASA,kBAAA,QAA0B","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ },
20
+ __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
22
+ value: !0
23
+ }), mod);
24
+ var index_exports = {};
25
+ __export(index_exports, {
26
+ useToggleGroupItem: () => import_context.useToggleGroupItem
27
+ });
28
+ module.exports = __toCommonJS(index_exports);
29
+ __reExport(index_exports, require("./ToggleGroup.native.js"), module.exports);
30
+ var import_context = require("./context.native.js");
31
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;AACA,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAA0B","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
9
+ get: () => from[key],
10
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
11
+ });
12
+ return to;
13
+ };
14
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
15
+ value: !0
16
+ }), mod);
17
+ var types_exports = {};
18
+ module.exports = __toCommonJS(types_exports);
19
+ //# sourceMappingURL=types.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@hanzogui/toggle-group",
3
+ "version": "2.0.0",
4
+ "source": "src/index.ts",
5
+ "files": [
6
+ "src",
7
+ "types",
8
+ "dist"
9
+ ],
10
+ "type": "module",
11
+ "sideEffects": [
12
+ "*.css"
13
+ ],
14
+ "main": "dist/cjs",
15
+ "module": "dist/esm",
16
+ "types": "./types/index.d.ts",
17
+ "exports": {
18
+ "./package.json": "./package.json",
19
+ ".": {
20
+ "types": "./types/index.d.ts",
21
+ "react-native": "./dist/esm/index.native.js",
22
+ "browser": "./dist/esm/index.mjs",
23
+ "module": "./dist/esm/index.mjs",
24
+ "import": "./dist/esm/index.mjs",
25
+ "require": "./dist/cjs/index.cjs",
26
+ "default": "./dist/esm/index.mjs"
27
+ }
28
+ },
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "scripts": {
33
+ "build": "hanzo-gui-build",
34
+ "watch": "hanzo-gui-build --watch",
35
+ "clean": "hanzo-gui-build clean",
36
+ "clean:build": "hanzo-gui-build clean:build"
37
+ },
38
+ "dependencies": {
39
+ "@hanzogui/constants": "2.0.0-rc.29",
40
+ "@hanzogui/create-context": "2.0.0-rc.29",
41
+ "@hanzogui/focusable": "2.0.0",
42
+ "@hanzogui/get-token": "2.0.0-rc.29",
43
+ "@hanzogui/helpers": "2.0.0-rc.29",
44
+ "@hanzogui/roving-focus": "2.0.0",
45
+ "@hanzogui/sizable-context": "2.0.0-rc.29",
46
+ "@hanzogui/stacks": "2.0.0",
47
+ "@hanzogui/use-controllable-state": "2.0.0-rc.29",
48
+ "@hanzogui/use-direction": "2.0.0",
49
+ "@hanzogui/font-size": "2.0.0-rc.29",
50
+ "@hanzogui/web": "2.0.0-rc.29"
51
+ },
52
+ "devDependencies": {
53
+ "@hanzogui/build": "2.0.0-rc.29",
54
+ "react": ">=19"
55
+ },
56
+ "peerDependencies": {
57
+ "react": ">=19"
58
+ },
59
+ "module:jsx": "dist/jsx"
60
+ }
package/src/Toggle.tsx ADDED
@@ -0,0 +1,150 @@
1
+ import { composeEventHandlers } from '@hanzogui/helpers'
2
+ import { useControllableState } from '@hanzogui/use-controllable-state'
3
+ import type { GetProps, GuiElement, ViewStyle } from '@hanzogui/web'
4
+ import { styled, View } from '@hanzogui/web'
5
+ import * as React from 'react'
6
+ import { context } from './context'
7
+
8
+ /* -------------------------------------------------------------------------------------------------
9
+ * Toggle
10
+ * -----------------------------------------------------------------------------------------------*/
11
+
12
+ const NAME = 'Toggle'
13
+
14
+ export const ToggleFrame = styled(
15
+ View,
16
+ {
17
+ name: NAME,
18
+ render: 'button',
19
+ context,
20
+
21
+ variants: {
22
+ unstyled: {
23
+ false: {
24
+ size: '$true',
25
+ alignItems: 'center',
26
+ justifyContent: 'center',
27
+ display: 'flex',
28
+ backgroundColor: '$background',
29
+ borderColor: '$borderColor',
30
+ borderWidth: 1,
31
+ margin: -1,
32
+ hoverStyle: {
33
+ backgroundColor: '$backgroundHover',
34
+ borderColor: '$borderColorHover',
35
+ },
36
+ pressStyle: {
37
+ backgroundColor: '$backgroundPress',
38
+ borderColor: '$borderColorPress',
39
+ },
40
+ focusVisibleStyle: {
41
+ outlineColor: '$outlineColor',
42
+ outlineWidth: 2,
43
+ outlineStyle: 'solid',
44
+ zIndex: 10,
45
+ },
46
+ },
47
+ },
48
+
49
+ size: {
50
+ '...size': (val, { tokens }) => {
51
+ if (!val) return
52
+ return {
53
+ width: tokens.size[val],
54
+ height: tokens.size[val],
55
+ }
56
+ },
57
+ ':number': (val) => ({
58
+ width: val,
59
+ height: val,
60
+ }),
61
+ },
62
+
63
+ defaultActiveStyle: {
64
+ true: {
65
+ backgroundColor: '$backgroundActive',
66
+ hoverStyle: {
67
+ backgroundColor: '$backgroundActive',
68
+ },
69
+ focusStyle: {
70
+ backgroundColor: '$backgroundActive',
71
+ },
72
+ },
73
+ },
74
+ } as const,
75
+
76
+ defaultVariants: {
77
+ unstyled: process.env.HANZO_GUI_HEADLESS === '1',
78
+ },
79
+ },
80
+ {
81
+ accept: {
82
+ activeStyle: 'style',
83
+ } as const,
84
+ }
85
+ )
86
+
87
+ type ToggleFrameProps = GetProps<typeof ToggleFrame>
88
+
89
+ type ToggleItemExtraProps = {
90
+ orientation?: 'horizontal' | 'vertical'
91
+ defaultValue?: string
92
+ disabled?: boolean
93
+ active?: boolean
94
+ defaultActive?: boolean
95
+ onActiveChange?(active: boolean): void
96
+ activeStyle?: ViewStyle | null
97
+ activeTheme?: string | null
98
+ }
99
+
100
+ export type ToggleProps = ToggleFrameProps & ToggleItemExtraProps
101
+
102
+ export const Toggle = React.forwardRef<GuiElement, ToggleProps>(
103
+ function Toggle(props, forwardedRef) {
104
+ const {
105
+ active: activeProp,
106
+ activeStyle,
107
+ defaultActive = false,
108
+ onActiveChange,
109
+ activeTheme,
110
+ unstyled = false,
111
+ ...buttonProps
112
+ } = props
113
+
114
+ const [active = false, setActive] = useControllableState({
115
+ prop: activeProp,
116
+ onChange: onActiveChange,
117
+ defaultProp: defaultActive,
118
+ })
119
+
120
+ return (
121
+ <ToggleFrame
122
+ theme={activeTheme ?? null}
123
+ aria-pressed={active}
124
+ data-state={active ? 'on' : 'off'}
125
+ data-disabled={props.disabled ? '' : undefined}
126
+ unstyled={unstyled}
127
+ {...(active &&
128
+ !activeStyle &&
129
+ !unstyled && {
130
+ defaultActiveStyle: true,
131
+ })}
132
+ {...(active &&
133
+ activeStyle && {
134
+ ...(activeStyle as any),
135
+ hoverStyle: activeStyle,
136
+ focusStyle: activeStyle,
137
+ })}
138
+ {...buttonProps}
139
+ ref={forwardedRef}
140
+ onPress={composeEventHandlers(props.onPress ?? undefined, () => {
141
+ if (!props.disabled) {
142
+ setActive((prev) => !prev)
143
+ }
144
+ })}
145
+ />
146
+ )
147
+ }
148
+ )
149
+
150
+ /* ---------------------------------------------------------------------------------------------- */