@@ -47,11 +47,11 @@ switch :: Nut
4747switch = L.componentDoc "nativeSwitch" "Yoga.React.Native.MacOS.Switch (nativeSwitch)"
4848 """nativeSwitch
4949 { on: true
50− , onChange: E.onBool "on" setOn
50+ , onChange: setOn
5151 }"""
5252 [ propsTable
5353 [ { 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" }
5555 ]
5656 ]
5757
@@ -61,7 +61,7 @@ slider = L.componentDoc "nativeSlider" "Yoga.React.Native.MacOS.Slider (nativeSl
6161 { value: 50.0
6262 , minValue: 0.0
6363 , maxValue: 100.0
64− , onChange: E.onNumber "value" setValue
64+ , onChange: setValue
6565 }"""
6666 [ propsTable
6767 [ { name: "value", type_: "Number", description: "Current value" }
@@ -69,7 +69,7 @@ slider = L.componentDoc "nativeSlider" "Yoga.React.Native.MacOS.Slider (nativeSl
6969 , { name: "maxValue", type_: "Number", description: "Range maximum" }
7070 , { name: "numberOfTickMarks", type_: "Int", description: "Number of tick marks" }
7171 , { 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" }
7373 ]
7474 ]
7575
@@ -80,14 +80,14 @@ stepper = L.componentDoc "nativeStepper" "Yoga.React.Native.MacOS.Stepper (nativ
8080 , minValue: 0.0
8181 , maxValue: 10.0
8282 , increment: 1.0
83− , onChange: E.onNumber "value" setValue
83+ , onChange: setValue
8484 }"""
8585 [ propsTable
8686 [ { name: "value", type_: "Number", description: "Current value" }
8787 , { name: "minValue", type_: "Number", description: "Range minimum" }
8888 , { name: "maxValue", type_: "Number", description: "Range maximum" }
8989 , { 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" }
9191 ]
9292 ]
9393
@@ -96,13 +96,13 @@ checkbox = L.componentDoc "nativeCheckbox" "Yoga.React.Native.MacOS.Checkbox (na
9696 """nativeCheckbox
9797 { title: "Enable notifications"
9898 , checked: true
99− , onChange: E.onBool "checked" setChecked
99+ , onChange: setChecked
100100 }"""
101101 [ propsTable
102102 [ { name: "title", type_: "String", description: "Label text" }
103103 , { name: "checked", type_: "Boolean", description: "Checked state" }
104104 , { 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" }
106106 ]
107107 ]
108108
@@ -111,13 +111,13 @@ radioButton = L.componentDoc "nativeRadioButton" "Yoga.React.Native.MacOS.RadioB
111111 """nativeRadioButton
112112 { title: "Option A"
113113 , selected: true
114− , onChange: E.onBool "selected" setSelected
114+ , onChange: \_ -> setChoice "optionA"
115115 }"""
116116 [ propsTable
117117 [ { name: "title", type_: "String", description: "Label text" }
118118 , { name: "selected", type_: "Boolean", description: "Selection state" }
119119 , { 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" }
121121 ]
122122 ]
123123
@@ -127,13 +127,13 @@ segmented = L.componentDoc "nativeSegmented" "Yoga.React.Native.MacOS.Segmented
127127 { labels: ["One", "Two", "Three"]
128128 , sfSymbols: ["1.circle", "2.circle", "3.circle"]
129129 , selectedIndex: 0
130− , onChange: E.onInt "selectedIndex" setIndex
130+ , onChange: setIndex
131131 }"""
132132 [ propsTable
133133 [ { name: "labels", type_: "Array String", description: "Segment labels" }
134134 , { name: "sfSymbols", type_: "Array String", description: "SF Symbol icons per segment" }
135135 , { 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" }
137137 ]
138138 ]
139139
@@ -142,12 +142,12 @@ popUp = L.componentDoc "nativePopUp" "Yoga.React.Native.MacOS.PopUp (nativePopUp
142142 """nativePopUp
143143 { items: ["Small", "Medium", "Large"]
144144 , selectedIndex: 1
145− , onChange: E.onInt "selectedIndex" setIndex
145+ , onChange: setIndex
146146 }"""
147147 [ propsTable
148148 [ { name: "items", type_: "Array String", description: "Menu items" }
149149 , { 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" }
151151 ]
152152 ]
153153
@@ -157,15 +157,15 @@ comboBox = L.componentDoc "nativeComboBox" "Yoga.React.Native.MacOS.ComboBox (na
157157 { items: ["Apple", "Banana", "Cherry"]
158158 , text: "Apple"
159159 , placeholder: "Choose a fruit..."
160− , onChangeText: E.onString "text" setText
161− , onSelectItem: E.onString "text" setText
160+ , onChangeText: setText
161+ , onSelectItem: setText
162162 }"""
163163 [ propsTable
164164 [ { name: "items", type_: "Array String", description: "Autocomplete suggestions" }
165165 , { name: "text", type_: "String", description: "Current text value" }
166166 , { name: "placeholder", type_: "String", description: "Placeholder text" }
167− , { name: "onChangeText", type_: "EventHandler", description: "Text change callback" }
168− , { name: "onSelectItem", type_: "EventHandler", description: "Item selection callback" }
167+ , { name: "onChangeText", type_: "String -> Effect Unit", description: "Text change callback" }
168+ , { name: "onSelectItem", type_: "String -> Effect Unit", description: "Item selection callback" }
169169 ]
170170 ]
171171
@@ -174,14 +174,14 @@ searchField = L.componentDoc "nativeSearchField" "Yoga.React.Native.MacOS.Search
174174 """nativeSearchField
175175 { placeholder: "Search..."
176176 , text: ""
177− , onChangeText: E.onString "text" setText
178− , onSearch: E.onString "text" \q -> search q
177+ , onChangeText: setText
178+ , onSearch: \q -> search q
179179 }"""
180180 [ propsTable
181181 [ { name: "text", type_: "String", description: "Current search text" }
182182 , { name: "placeholder", type_: "String", description: "Placeholder text" }
183− , { name: "onChangeText", type_: "EventHandler", description: "Text change callback" }
184− , { name: "onSearch", type_: "EventHandler", description: "Search submit callback" }
183+ , { name: "onChangeText", type_: "String -> Effect Unit", description: "Text change callback" }
184+ , { name: "onSearch", type_: "String -> Effect Unit", description: "Search submit callback" }
185185 ]
186186 ]
187187
@@ -190,12 +190,12 @@ tokenField = L.componentDoc "nativeTokenField" "Yoga.React.Native.MacOS.TokenFie
190190 """nativeTokenField
191191 { tokens: ["tag1", "tag2"]
192192 , placeholder: "Add tags..."
193− , onChangeTokens: E.onStrings "tokens" setTokens
193+ , onChangeTokens: setTokens
194194 }"""
195195 [ propsTable
196196 [ { name: "tokens", type_: "Array String", description: "Current tokens" }
197197 , { 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" }
199199 ]
200200 ]
201201
@@ -203,11 +203,11 @@ datePicker :: Nut
203203datePicker = L.componentDoc "nativeDatePicker" "Yoga.React.Native.MacOS.DatePicker (nativeDatePicker)"
204204 """nativeDatePicker
205205 { graphical: true
206− , onChange: E.onString "date" setDate
206+ , onChange: setDate
207207 }"""
208208 [ propsTable
209209 [ { 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" }
211211 ]
212212 ]
213213
@@ -216,12 +216,12 @@ colorWell = L.componentDoc "nativeColorWell" "Yoga.React.Native.MacOS.ColorWell
216216 """nativeColorWell
217217 { color: "#ff0000"
218218 , minimal: true
219− , onChange: E.onString "color" setColor
219+ , onChange: setColor
220220 }"""
221221 [ propsTable
222222 [ { name: "color", type_: "String", description: "Current color hex value" }
223223 , { 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" }
225225 ]
226226 ]
227227