@g9tm/lynxcontrols
ReactLynx controls and overlay infrastructure: provider/host, sheets, popups, toasts, fields, buttons, pickers, tab
view, tab bar, edge panel, swipe rows. Depends on @g9tm/lynxcontrols-foundation and per-component lynx-ui packages.
Import components and hooks from the feature subpaths, so an app pays only for the code and CSS it uses; the root
entry @g9tm/lynxcontrols re-exports types only.
| Subpath | What | Guide |
|---|---|---|
/provider, /host, /deferred, /icon, /base | G9Provider, G9Host (layers, back, readiness), deferred content, icons and swatches, control base hooks | provider-and-host.md |
/fields | G9TextEntry, G9Editor, G9SearchEntry, G9PinEntry, G9OutlinedField | fields.md |
/button, /toggle, /display, /expander | buttons, check box, switch, chips, progress, separators, skeletons, expander | buttons-and-display.md |
/sheet, /selection | bottom sheets (imperative and <G9Sheet>), selection and list sheets | sheets.md |
/pickers, /range-slider, /cascade | picker, combo box, date/time, duration, wheels, range slider, cascade panel | pickers.md |
/popup, /toast | popups, input popups, toasts, loaders | popups-and-toasts.md |
/tabs, /tab-bar, /plus-button, /edge-panel, /swipe | tab view, tab bar, plus button, edge panels, swipe rows | navigation.md |
Build plugin: @g9tm/lynxcontrols/rspeedy exports pluginG9Lynx(); add it to the app's lynx.config (inline CSS
variables, see docs/theming.md).
Automation ids (MAUI AutomationId): every interactive control takes id, set on its root element so automation
finds it with a selector query (#id) and taps its real bounds; fields set it on the field box, chips derive
${id}_${key}, the expander header ${id}_Header. Sheets take automationId (surface, ${id}_Back,
${id}_ToolbarItem_${key}), the tab bar fabAutomationId, popup buttons use their testId (else
G9Popup_Button_<index>). Ids are used verbatim: keep them to [A-Za-z0-9_-] (a selector reads . as a class;
g9SafeId converts).
Every export: docs/api.md (generated from TSDoc). MAUI mapping: docs/migration/.
Every family runs in the gallery (apps/gallery).