Wrap the options being sent to the first selectInput in observe and use updateSelectInput in the statement. Then, for the inputs dependent on this selection, wrap those filtered options in observeEvent that is observing the selectInput id. Again, using updateNumericInput to update these options based on whatever is selected in selectInput.
UI:
selectInput(inputId='selectid',label="Select A or B",choices=NULL)
numericInput(inputId="numericid1",label="Numeric Input 1")
`
`
Server:
observe({
selectoptions <- c("A","B")
updateSelectInput(inputId="selectid",choices=selectoptions)
})
observeEvent({input$selectid},{
#Some code that chooses the correct range of numeric inputs given A or B
updateNumericInput(inputId="numericid1",min=Some number,max=Some number)
`
`
})