@@ -47,11 +47,11 @@ switch :: Nut
47switch = L.componentDoc "nativeSwitch" "Yoga.React.Native.MacOS.Switch (nativeSwitch)"
47switch = L.componentDoc "nativeSwitch" "Yoga.React.Native.MacOS.Switch (nativeSwitch)"
48 """nativeSwitch
48 """nativeSwitch
49 { on: true
49 { on: true
50− , onChange: E.onBool "on" setOn
50+ , onChange: setOn
52 [ propsTable
52 [ propsTable
53 [ { name: "on", type_: "Boolean", description: "Current on/off state" }
53 [ { name: "on", type_: "Boolean", description: "Current on/off state" }
54− , { name: "onChange", type_: "EventHandler", description: "Toggle callback" }
54+ , { name: "onChange", type_: "Boolean -> Effect Unit", description: "Toggle callback" }
@@ -61,7 +61,7 @@ slider = L.componentDoc "nativeSlider" "Yoga.React.Native.MacOS.Slider (nativeSl
61 { value: 50.0
61 { value: 50.0
62 , minValue: 0.0
62 , minValue: 0.0
63 , maxValue: 100.0
63 , maxValue: 100.0
64− , onChange: E.onNumber "value" setValue
64+ , onChange: setValue
66 [ propsTable
66 [ propsTable
67 [ { name: "value", type_: "Number", description: "Current value" }
67 [ { name: "value", type_: "Number", description: "Current value" }
@@ -69,7 +69,7 @@ slider = L.componentDoc "nativeSlider" "Yoga.React.Native.MacOS.Slider (nativeSl
69 , { name: "maxValue", type_: "Number", description: "Range maximum" }
69 , { name: "maxValue", type_: "Number", description: "Range maximum" }
70 , { name: "numberOfTickMarks", type_: "Int", description: "Number of tick marks" }
70 , { name: "numberOfTickMarks", type_: "Int", description: "Number of tick marks" }
71 , { name: "allowsTickMarkValuesOnly", type_: "Boolean", description: "Snap to tick marks only" }
71 , { name: "allowsTickMarkValuesOnly", type_: "Boolean", description: "Snap to tick marks only" }
72− , { name: "onChange", type_: "EventHandler", description: "Value change callback" }
72+ , { name: "onChange", type_: "Number -> Effect Unit", description: "Value change callback" }
@@ -80,14 +80,14 @@ stepper = L.componentDoc "nativeStepper" "Yoga.React.Native.MacOS.Stepper (nativ
80 , minValue: 0.0
80 , minValue: 0.0
81 , maxValue: 10.0
81 , maxValue: 10.0
82 , increment: 1.0
82 , increment: 1.0
83− , onChange: E.onNumber "value" setValue
83+ , onChange: setValue
85 [ propsTable
85 [ propsTable
86 [ { name: "value", type_: "Number", description: "Current value" }
86 [ { name: "value", type_: "Number", description: "Current value" }
87 , { name: "minValue", type_: "Number", description: "Range minimum" }
87 , { name: "minValue", type_: "Number", description: "Range minimum" }
88 , { name: "maxValue", type_: "Number", description: "Range maximum" }
88 , { name: "maxValue", type_: "Number", description: "Range maximum" }
89 , { name: "increment", type_: "Number", description: "Step increment" }
89 , { name: "increment", type_: "Number", description: "Step increment" }
90− , { name: "onChange", type_: "EventHandler", description: "Value change callback" }
90+ , { name: "onChange", type_: "Number -> Effect Unit", description: "Value change callback" }
@@ -96,13 +96,13 @@ checkbox = L.componentDoc "nativeCheckbox" "Yoga.React.Native.MacOS.Checkbox (na
96 """nativeCheckbox
96 """nativeCheckbox
97 { title: "Enable notifications"
97 { title: "Enable notifications"
98 , checked: true
98 , checked: true
99− , onChange: E.onBool "checked" setChecked
99+ , onChange: setChecked
101 [ propsTable
101 [ propsTable
102 [ { name: "title", type_: "String", description: "Label text" }
102 [ { name: "title", type_: "String", description: "Label text" }
103 , { name: "checked", type_: "Boolean", description: "Checked state" }
103 , { name: "checked", type_: "Boolean", description: "Checked state" }
104 , { name: "enabled", type_: "Boolean", description: "Enable/disable" }
104 , { name: "enabled", type_: "Boolean", description: "Enable/disable" }
105− , { name: "onChange", type_: "EventHandler", description: "Toggle callback" }
105+ , { name: "onChange", type_: "Boolean -> Effect Unit", description: "Toggle callback" }
@@ -111,13 +111,13 @@ radioButton = L.componentDoc "nativeRadioButton" "Yoga.React.Native.MacOS.RadioB
111 """nativeRadioButton
111 """nativeRadioButton
112 { title: "Option A"
112 { title: "Option A"
113 , selected: true
113 , selected: true
114− , onChange: E.onBool "selected" setSelected
114+ , onChange: \_ -> setChoice "optionA"
116 [ propsTable
116 [ propsTable
117 [ { name: "title", type_: "String", description: "Label text" }
117 [ { name: "title", type_: "String", description: "Label text" }
118 , { name: "selected", type_: "Boolean", description: "Selection state" }
118 , { name: "selected", type_: "Boolean", description: "Selection state" }
119 , { name: "enabled", type_: "Boolean", description: "Enable/disable" }
119 , { name: "enabled", type_: "Boolean", description: "Enable/disable" }
120− , { name: "onChange", type_: "EventHandler", description: "Selection callback" }
120+ , { name: "onChange", type_: "Boolean -> Effect Unit", description: "Selection callback" }
@@ -127,13 +127,13 @@ segmented = L.componentDoc "nativeSegmented" "Yoga.React.Native.MacOS.Segmented
127 { labels: ["One", "Two", "Three"]
127 { labels: ["One", "Two", "Three"]
128 , sfSymbols: ["1.circle", "2.circle", "3.circle"]
128 , sfSymbols: ["1.circle", "2.circle", "3.circle"]
129 , selectedIndex: 0
129 , selectedIndex: 0
130− , onChange: E.onInt "selectedIndex" setIndex
130+ , onChange: setIndex
132 [ propsTable
132 [ propsTable
133 [ { name: "labels", type_: "Array String", description: "Segment labels" }
133 [ { name: "labels", type_: "Array String", description: "Segment labels" }
134 , { name: "sfSymbols", type_: "Array String", description: "SF Symbol icons per segment" }
134 , { name: "sfSymbols", type_: "Array String", description: "SF Symbol icons per segment" }
135 , { name: "selectedIndex", type_: "Int", description: "Currently selected index" }
135 , { name: "selectedIndex", type_: "Int", description: "Currently selected index" }
136− , { name: "onChange", type_: "EventHandler", description: "Selection callback" }
136+ , { name: "onChange", type_: "Int -> Effect Unit", description: "Selection callback" }
@@ -142,12 +142,12 @@ popUp = L.componentDoc "nativePopUp" "Yoga.React.Native.MacOS.PopUp (nativePopUp
142 """nativePopUp
142 """nativePopUp
143 { items: ["Small", "Medium", "Large"]
143 { items: ["Small", "Medium", "Large"]
144 , selectedIndex: 1
144 , selectedIndex: 1
145− , onChange: E.onInt "selectedIndex" setIndex
145+ , onChange: setIndex
147 [ propsTable
147 [ propsTable
148 [ { name: "items", type_: "Array String", description: "Menu items" }
148 [ { name: "items", type_: "Array String", description: "Menu items" }
149 , { name: "selectedIndex", type_: "Int", description: "Selected item index" }
149 , { name: "selectedIndex", type_: "Int", description: "Selected item index" }
150− , { name: "onChange", type_: "EventHandler", description: "Selection callback" }
150+ , { name: "onChange", type_: "Int -> Effect Unit", description: "Selection callback" }
@@ -157,15 +157,15 @@ comboBox = L.componentDoc "nativeComboBox" "Yoga.React.Native.MacOS.ComboBox (na
157 { items: ["Apple", "Banana", "Cherry"]
157 { items: ["Apple", "Banana", "Cherry"]
158 , text: "Apple"
158 , text: "Apple"
159 , placeholder: "Choose a fruit..."
159 , placeholder: "Choose a fruit..."
160− , onChangeText: E.onString "text" setText
160+ , onChangeText: setText
161− , onSelectItem: E.onString "text" setText
161+ , onSelectItem: setText
163 [ propsTable
163 [ propsTable
164 [ { name: "items", type_: "Array String", description: "Autocomplete suggestions" }
164 [ { name: "items", type_: "Array String", description: "Autocomplete suggestions" }
165 , { name: "text", type_: "String", description: "Current text value" }
165 , { name: "text", type_: "String", description: "Current text value" }
166 , { name: "placeholder", type_: "String", description: "Placeholder text" }
166 , { name: "placeholder", type_: "String", description: "Placeholder text" }
167− , { name: "onChangeText", type_: "EventHandler", description: "Text change callback" }
167+ , { name: "onChangeText", type_: "String -> Effect Unit", description: "Text change callback" }
168− , { name: "onSelectItem", type_: "EventHandler", description: "Item selection callback" }
168+ , { name: "onSelectItem", type_: "String -> Effect Unit", description: "Item selection callback" }
@@ -174,14 +174,14 @@ searchField = L.componentDoc "nativeSearchField" "Yoga.React.Native.MacOS.Search
174 """nativeSearchField
174 """nativeSearchField
175 { placeholder: "Search..."
175 { placeholder: "Search..."
176 , text: ""
176 , text: ""
177− , onChangeText: E.onString "text" setText
177+ , onChangeText: setText
178− , onSearch: E.onString "text" \q -> search q
178+ , onSearch: \q -> search q
180 [ propsTable
180 [ propsTable
181 [ { name: "text", type_: "String", description: "Current search text" }
181 [ { name: "text", type_: "String", description: "Current search text" }
182 , { name: "placeholder", type_: "String", description: "Placeholder text" }
182 , { name: "placeholder", type_: "String", description: "Placeholder text" }
183− , { name: "onChangeText", type_: "EventHandler", description: "Text change callback" }
183+ , { name: "onChangeText", type_: "String -> Effect Unit", description: "Text change callback" }
184− , { name: "onSearch", type_: "EventHandler", description: "Search submit callback" }
184+ , { name: "onSearch", type_: "String -> Effect Unit", description: "Search submit callback" }
@@ -190,12 +190,12 @@ tokenField = L.componentDoc "nativeTokenField" "Yoga.React.Native.MacOS.TokenFie
190 """nativeTokenField
190 """nativeTokenField
191 { tokens: ["tag1", "tag2"]
191 { tokens: ["tag1", "tag2"]
192 , placeholder: "Add tags..."
192 , placeholder: "Add tags..."
193− , onChangeTokens: E.onStrings "tokens" setTokens
193+ , onChangeTokens: setTokens
195 [ propsTable
195 [ propsTable
196 [ { name: "tokens", type_: "Array String", description: "Current tokens" }
196 [ { name: "tokens", type_: "Array String", description: "Current tokens" }
197 , { name: "placeholder", type_: "String", description: "Placeholder text" }
197 , { name: "placeholder", type_: "String", description: "Placeholder text" }
198− , { name: "onChangeTokens", type_: "EventHandler", description: "Tokens change callback" }
198+ , { name: "onChangeTokens", type_: "Array String -> Effect Unit", description: "Tokens change callback" }
@@ -203,11 +203,11 @@ datePicker :: Nut
203datePicker = L.componentDoc "nativeDatePicker" "Yoga.React.Native.MacOS.DatePicker (nativeDatePicker)"
203datePicker = L.componentDoc "nativeDatePicker" "Yoga.React.Native.MacOS.DatePicker (nativeDatePicker)"
204 """nativeDatePicker
204 """nativeDatePicker
205 { graphical: true
205 { graphical: true
206− , onChange: E.onString "date" setDate
206+ , onChange: setDate
208 [ propsTable
208 [ propsTable
209 [ { name: "graphical", type_: "Boolean", description: "Show graphical calendar picker" }
209 [ { name: "graphical", type_: "Boolean", description: "Show graphical calendar picker" }
210− , { name: "onChange", type_: "EventHandler", description: "Date change callback" }
210+ , { name: "onChange", type_: "String -> Effect Unit", description: "Date change callback" }
@@ -216,12 +216,12 @@ colorWell = L.componentDoc "nativeColorWell" "Yoga.React.Native.MacOS.ColorWell
216 """nativeColorWell
216 """nativeColorWell
217 { color: "#ff0000"
217 { color: "#ff0000"
218 , minimal: true
218 , minimal: true
219− , onChange: E.onString "color" setColor
219+ , onChange: setColor
221 [ propsTable
221 [ propsTable
222 [ { name: "color", type_: "String", description: "Current color hex value" }
222 [ { name: "color", type_: "String", description: "Current color hex value" }
223 , { name: "minimal", type_: "Boolean", description: "Minimal inline style" }
223 , { name: "minimal", type_: "Boolean", description: "Minimal inline style" }
224− , { name: "onChange", type_: "EventHandler", description: "Color change callback" }
224+ , { name: "onChange", type_: "String -> Effect Unit", description: "Color change callback" }