I'm not sure it fits to all your requirements but could be useful:
library(prompter)
library(shiny)
ui <- fluidPage(
use_prompt(),
br(),
selectInput(
"foo",
label = tags$span(
"Select an input",
tags$span(
icon(
name = "question-circle",
)
) |>
add_prompt(message = "This is some help text.", position = "right")
),
choices = NULL
)
)
server <- function(input, output, session) {}
shinyApp(ui, server)