@g9tm/lynxcontrols 0.0.0-stage → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. package/README.md +22 -2
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/base/base.css +16 -0
  4. package/dist/base/base.css.map +1 -0
  5. package/dist/base/control.d.ts +44 -0
  6. package/dist/base/control.d.ts.map +1 -0
  7. package/dist/base/control.jsx +24 -0
  8. package/dist/base/control.jsx.map +1 -0
  9. package/dist/base/corner-badge.d.ts +35 -0
  10. package/dist/base/corner-badge.d.ts.map +1 -0
  11. package/dist/base/corner-badge.jsx +45 -0
  12. package/dist/base/corner-badge.jsx.map +1 -0
  13. package/dist/base/disposer.d.ts +28 -0
  14. package/dist/base/disposer.d.ts.map +1 -0
  15. package/dist/base/disposer.jsx +61 -0
  16. package/dist/base/disposer.jsx.map +1 -0
  17. package/dist/base/index.d.ts +10 -0
  18. package/dist/base/index.d.ts.map +1 -0
  19. package/dist/base/index.jsx +9 -0
  20. package/dist/base/press.d.ts +38 -0
  21. package/dist/base/press.d.ts.map +1 -0
  22. package/dist/base/press.jsx +73 -0
  23. package/dist/base/press.jsx.map +1 -0
  24. package/dist/base/pressable.d.ts +25 -0
  25. package/dist/base/pressable.d.ts.map +1 -0
  26. package/dist/base/pressable.jsx +38 -0
  27. package/dist/base/pressable.jsx.map +1 -0
  28. package/dist/base/selection-item.d.ts +29 -0
  29. package/dist/base/selection-item.d.ts.map +1 -0
  30. package/dist/base/selection-item.jsx +6 -0
  31. package/dist/base/selection-item.jsx.map +1 -0
  32. package/dist/base/timers.d.ts +7 -0
  33. package/dist/base/timers.d.ts.map +1 -0
  34. package/dist/base/timers.jsx +10 -0
  35. package/dist/base/timers.jsx.map +1 -0
  36. package/dist/base/use-controllable-state.d.ts +30 -0
  37. package/dist/base/use-controllable-state.d.ts.map +1 -0
  38. package/dist/base/use-controllable-state.jsx +49 -0
  39. package/dist/base/use-controllable-state.jsx.map +1 -0
  40. package/dist/base/use-stable-callback.d.ts +8 -0
  41. package/dist/base/use-stable-callback.d.ts.map +1 -0
  42. package/dist/base/use-stable-callback.jsx +12 -0
  43. package/dist/base/use-stable-callback.jsx.map +1 -0
  44. package/dist/button/button.css +162 -0
  45. package/dist/button/button.css.map +1 -0
  46. package/dist/button/button.d.ts +52 -0
  47. package/dist/button/button.d.ts.map +1 -0
  48. package/dist/button/button.jsx +87 -0
  49. package/dist/button/button.jsx.map +1 -0
  50. package/dist/button/header-action-button.d.ts +34 -0
  51. package/dist/button/header-action-button.d.ts.map +1 -0
  52. package/dist/button/header-action-button.jsx +51 -0
  53. package/dist/button/header-action-button.jsx.map +1 -0
  54. package/dist/button/icon-button.d.ts +46 -0
  55. package/dist/button/icon-button.d.ts.map +1 -0
  56. package/dist/button/icon-button.jsx +69 -0
  57. package/dist/button/icon-button.jsx.map +1 -0
  58. package/dist/button/index.d.ts +9 -0
  59. package/dist/button/index.d.ts.map +1 -0
  60. package/dist/button/index.jsx +8 -0
  61. package/dist/button/nav-card.d.ts +58 -0
  62. package/dist/button/nav-card.d.ts.map +1 -0
  63. package/dist/button/nav-card.jsx +95 -0
  64. package/dist/button/nav-card.jsx.map +1 -0
  65. package/dist/button/safe-tap.d.ts +27 -0
  66. package/dist/button/safe-tap.d.ts.map +1 -0
  67. package/dist/button/safe-tap.jsx +46 -0
  68. package/dist/button/safe-tap.jsx.map +1 -0
  69. package/dist/button/safe.d.ts +84 -0
  70. package/dist/button/safe.d.ts.map +1 -0
  71. package/dist/button/safe.jsx +116 -0
  72. package/dist/button/safe.jsx.map +1 -0
  73. package/dist/button/vertical-icon-text-button.d.ts +18 -0
  74. package/dist/button/vertical-icon-text-button.d.ts.map +1 -0
  75. package/dist/button/vertical-icon-text-button.jsx +21 -0
  76. package/dist/button/vertical-icon-text-button.jsx.map +1 -0
  77. package/dist/button/visuals.d.ts +53 -0
  78. package/dist/button/visuals.d.ts.map +1 -0
  79. package/dist/button/visuals.jsx +92 -0
  80. package/dist/button/visuals.jsx.map +1 -0
  81. package/dist/cascade/cascade-panel.d.ts +80 -0
  82. package/dist/cascade/cascade-panel.d.ts.map +1 -0
  83. package/dist/cascade/cascade-panel.jsx +179 -0
  84. package/dist/cascade/cascade-panel.jsx.map +1 -0
  85. package/dist/cascade/cascade.css +70 -0
  86. package/dist/cascade/cascade.css.map +1 -0
  87. package/dist/cascade/index.d.ts +3 -0
  88. package/dist/cascade/index.d.ts.map +1 -0
  89. package/dist/cascade/index.jsx +2 -0
  90. package/dist/cascade/model.d.ts +68 -0
  91. package/dist/cascade/model.d.ts.map +1 -0
  92. package/dist/cascade/model.jsx +161 -0
  93. package/dist/cascade/model.jsx.map +1 -0
  94. package/dist/deferred/deferred-content.d.ts +82 -0
  95. package/dist/deferred/deferred-content.d.ts.map +1 -0
  96. package/dist/deferred/deferred-content.jsx +263 -0
  97. package/dist/deferred/deferred-content.jsx.map +1 -0
  98. package/dist/deferred/deferred.css +62 -0
  99. package/dist/deferred/deferred.css.map +1 -0
  100. package/dist/deferred/index.d.ts +3 -0
  101. package/dist/deferred/index.d.ts.map +1 -0
  102. package/dist/deferred/index.jsx +2 -0
  103. package/dist/deferred/readiness-signal.d.ts +16 -0
  104. package/dist/deferred/readiness-signal.d.ts.map +1 -0
  105. package/dist/deferred/readiness-signal.jsx +29 -0
  106. package/dist/deferred/readiness-signal.jsx.map +1 -0
  107. package/dist/display/activity-indicator.d.ts +21 -0
  108. package/dist/display/activity-indicator.d.ts.map +1 -0
  109. package/dist/display/activity-indicator.jsx +22 -0
  110. package/dist/display/activity-indicator.jsx.map +1 -0
  111. package/dist/display/culture-date-time-label.d.ts +64 -0
  112. package/dist/display/culture-date-time-label.d.ts.map +1 -0
  113. package/dist/display/culture-date-time-label.jsx +71 -0
  114. package/dist/display/culture-date-time-label.jsx.map +1 -0
  115. package/dist/display/display.css +217 -0
  116. package/dist/display/display.css.map +1 -0
  117. package/dist/display/index.d.ts +7 -0
  118. package/dist/display/index.d.ts.map +1 -0
  119. package/dist/display/index.jsx +6 -0
  120. package/dist/display/progress-bar.d.ts +38 -0
  121. package/dist/display/progress-bar.d.ts.map +1 -0
  122. package/dist/display/progress-bar.jsx +57 -0
  123. package/dist/display/progress-bar.jsx.map +1 -0
  124. package/dist/display/separator.d.ts +30 -0
  125. package/dist/display/separator.d.ts.map +1 -0
  126. package/dist/display/separator.jsx +55 -0
  127. package/dist/display/separator.jsx.map +1 -0
  128. package/dist/display/shimmer.d.ts +41 -0
  129. package/dist/display/shimmer.d.ts.map +1 -0
  130. package/dist/display/shimmer.jsx +41 -0
  131. package/dist/display/shimmer.jsx.map +1 -0
  132. package/dist/display/title-with-line.d.ts +13 -0
  133. package/dist/display/title-with-line.d.ts.map +1 -0
  134. package/dist/display/title-with-line.jsx +21 -0
  135. package/dist/display/title-with-line.jsx.map +1 -0
  136. package/dist/edge-panel/edge-panel.css +132 -0
  137. package/dist/edge-panel/edge-panel.css.map +1 -0
  138. package/dist/edge-panel/edge-panel.d.ts +87 -0
  139. package/dist/edge-panel/edge-panel.d.ts.map +1 -0
  140. package/dist/edge-panel/edge-panel.jsx +326 -0
  141. package/dist/edge-panel/edge-panel.jsx.map +1 -0
  142. package/dist/edge-panel/helper.d.ts +27 -0
  143. package/dist/edge-panel/helper.d.ts.map +1 -0
  144. package/dist/edge-panel/helper.jsx +118 -0
  145. package/dist/edge-panel/helper.jsx.map +1 -0
  146. package/dist/edge-panel/index.d.ts +4 -0
  147. package/dist/edge-panel/index.d.ts.map +1 -0
  148. package/dist/edge-panel/index.jsx +3 -0
  149. package/dist/edge-panel/types.d.ts +155 -0
  150. package/dist/edge-panel/types.d.ts.map +1 -0
  151. package/dist/edge-panel/types.jsx +139 -0
  152. package/dist/edge-panel/types.jsx.map +1 -0
  153. package/dist/expander/expander.css +54 -0
  154. package/dist/expander/expander.css.map +1 -0
  155. package/dist/expander/expander.d.ts +46 -0
  156. package/dist/expander/expander.d.ts.map +1 -0
  157. package/dist/expander/expander.jsx +110 -0
  158. package/dist/expander/expander.jsx.map +1 -0
  159. package/dist/expander/index.d.ts +2 -0
  160. package/dist/expander/index.d.ts.map +1 -0
  161. package/dist/expander/index.jsx +1 -0
  162. package/dist/fields/dictation.d.ts +43 -0
  163. package/dist/fields/dictation.d.ts.map +1 -0
  164. package/dist/fields/dictation.jsx +124 -0
  165. package/dist/fields/dictation.jsx.map +1 -0
  166. package/dist/fields/editor.d.ts +26 -0
  167. package/dist/fields/editor.d.ts.map +1 -0
  168. package/dist/fields/editor.jsx +46 -0
  169. package/dist/fields/editor.jsx.map +1 -0
  170. package/dist/fields/fields.css +156 -0
  171. package/dist/fields/fields.css.map +1 -0
  172. package/dist/fields/index.d.ts +12 -0
  173. package/dist/fields/index.d.ts.map +1 -0
  174. package/dist/fields/index.jsx +11 -0
  175. package/dist/fields/input-policy.d.ts +48 -0
  176. package/dist/fields/input-policy.d.ts.map +1 -0
  177. package/dist/fields/input-policy.jsx +215 -0
  178. package/dist/fields/input-policy.jsx.map +1 -0
  179. package/dist/fields/outlined-field.d.ts +146 -0
  180. package/dist/fields/outlined-field.d.ts.map +1 -0
  181. package/dist/fields/outlined-field.jsx +196 -0
  182. package/dist/fields/outlined-field.jsx.map +1 -0
  183. package/dist/fields/pin-entry.d.ts +63 -0
  184. package/dist/fields/pin-entry.d.ts.map +1 -0
  185. package/dist/fields/pin-entry.jsx +293 -0
  186. package/dist/fields/pin-entry.jsx.map +1 -0
  187. package/dist/fields/search-entry.d.ts +35 -0
  188. package/dist/fields/search-entry.d.ts.map +1 -0
  189. package/dist/fields/search-entry.jsx +118 -0
  190. package/dist/fields/search-entry.jsx.map +1 -0
  191. package/dist/fields/slot-layout.d.ts +33 -0
  192. package/dist/fields/slot-layout.d.ts.map +1 -0
  193. package/dist/fields/slot-layout.jsx +33 -0
  194. package/dist/fields/slot-layout.jsx.map +1 -0
  195. package/dist/fields/text-entry.d.ts +62 -0
  196. package/dist/fields/text-entry.d.ts.map +1 -0
  197. package/dist/fields/text-entry.jsx +72 -0
  198. package/dist/fields/text-entry.jsx.map +1 -0
  199. package/dist/fields/use-dictation.d.ts +34 -0
  200. package/dist/fields/use-dictation.d.ts.map +1 -0
  201. package/dist/fields/use-dictation.jsx +80 -0
  202. package/dist/fields/use-dictation.jsx.map +1 -0
  203. package/dist/fields/use-text-input.d.ts +150 -0
  204. package/dist/fields/use-text-input.d.ts.map +1 -0
  205. package/dist/fields/use-text-input.jsx +237 -0
  206. package/dist/fields/use-text-input.jsx.map +1 -0
  207. package/dist/fields/validator.d.ts +14 -0
  208. package/dist/fields/validator.d.ts.map +1 -0
  209. package/dist/fields/validator.jsx +20 -0
  210. package/dist/fields/validator.jsx.map +1 -0
  211. package/dist/host/back.d.ts +42 -0
  212. package/dist/host/back.d.ts.map +1 -0
  213. package/dist/host/back.jsx +47 -0
  214. package/dist/host/back.jsx.map +1 -0
  215. package/dist/host/hooks.d.ts +85 -0
  216. package/dist/host/hooks.d.ts.map +1 -0
  217. package/dist/host/hooks.jsx +163 -0
  218. package/dist/host/hooks.jsx.map +1 -0
  219. package/dist/host/host.css +81 -0
  220. package/dist/host/host.css.map +1 -0
  221. package/dist/host/host.d.ts +70 -0
  222. package/dist/host/host.d.ts.map +1 -0
  223. package/dist/host/host.jsx +229 -0
  224. package/dist/host/host.jsx.map +1 -0
  225. package/dist/host/index.d.ts +9 -0
  226. package/dist/host/index.d.ts.map +1 -0
  227. package/dist/host/index.jsx +8 -0
  228. package/dist/host/keyboard.d.ts +24 -0
  229. package/dist/host/keyboard.d.ts.map +1 -0
  230. package/dist/host/keyboard.jsx +28 -0
  231. package/dist/host/keyboard.jsx.map +1 -0
  232. package/dist/host/layers.d.ts +69 -0
  233. package/dist/host/layers.d.ts.map +1 -0
  234. package/dist/host/layers.jsx +111 -0
  235. package/dist/host/layers.jsx.map +1 -0
  236. package/dist/host/page-loading-overlay.d.ts +17 -0
  237. package/dist/host/page-loading-overlay.d.ts.map +1 -0
  238. package/dist/host/page-loading-overlay.jsx +16 -0
  239. package/dist/host/page-loading-overlay.jsx.map +1 -0
  240. package/dist/host/readiness.d.ts +57 -0
  241. package/dist/host/readiness.d.ts.map +1 -0
  242. package/dist/host/readiness.jsx +138 -0
  243. package/dist/host/readiness.jsx.map +1 -0
  244. package/dist/host/registry.d.ts +106 -0
  245. package/dist/host/registry.d.ts.map +1 -0
  246. package/dist/host/registry.jsx +93 -0
  247. package/dist/host/registry.jsx.map +1 -0
  248. package/dist/icon/icon.css +39 -0
  249. package/dist/icon/icon.css.map +1 -0
  250. package/dist/icon/icon.d.ts +57 -0
  251. package/dist/icon/icon.d.ts.map +1 -0
  252. package/dist/icon/icon.jsx +115 -0
  253. package/dist/icon/icon.jsx.map +1 -0
  254. package/dist/icon/index.d.ts +4 -0
  255. package/dist/icon/index.d.ts.map +1 -0
  256. package/dist/icon/index.jsx +3 -0
  257. package/dist/icon/slot.d.ts +45 -0
  258. package/dist/icon/slot.d.ts.map +1 -0
  259. package/dist/icon/slot.jsx +61 -0
  260. package/dist/icon/slot.jsx.map +1 -0
  261. package/dist/icon/swatch.d.ts +29 -0
  262. package/dist/icon/swatch.d.ts.map +1 -0
  263. package/dist/icon/swatch.jsx +25 -0
  264. package/dist/icon/swatch.jsx.map +1 -0
  265. package/dist/index.d.ts +23 -0
  266. package/dist/index.d.ts.map +1 -0
  267. package/dist/index.jsx +1 -0
  268. package/dist/pickers/combo-box.d.ts +42 -0
  269. package/dist/pickers/combo-box.d.ts.map +1 -0
  270. package/dist/pickers/combo-box.jsx +129 -0
  271. package/dist/pickers/combo-box.jsx.map +1 -0
  272. package/dist/pickers/date-time-picker.d.ts +63 -0
  273. package/dist/pickers/date-time-picker.d.ts.map +1 -0
  274. package/dist/pickers/date-time-picker.jsx +141 -0
  275. package/dist/pickers/date-time-picker.jsx.map +1 -0
  276. package/dist/pickers/date-time.d.ts +82 -0
  277. package/dist/pickers/date-time.d.ts.map +1 -0
  278. package/dist/pickers/date-time.jsx +130 -0
  279. package/dist/pickers/date-time.jsx.map +1 -0
  280. package/dist/pickers/index.d.ts +10 -0
  281. package/dist/pickers/index.d.ts.map +1 -0
  282. package/dist/pickers/index.jsx +9 -0
  283. package/dist/pickers/picker-sheet.d.ts +21 -0
  284. package/dist/pickers/picker-sheet.d.ts.map +1 -0
  285. package/dist/pickers/picker-sheet.jsx +61 -0
  286. package/dist/pickers/picker-sheet.jsx.map +1 -0
  287. package/dist/pickers/picker.d.ts +32 -0
  288. package/dist/pickers/picker.d.ts.map +1 -0
  289. package/dist/pickers/picker.jsx +72 -0
  290. package/dist/pickers/picker.jsx.map +1 -0
  291. package/dist/pickers/pickers.css +219 -0
  292. package/dist/pickers/pickers.css.map +1 -0
  293. package/dist/pickers/timespan-picker.d.ts +36 -0
  294. package/dist/pickers/timespan-picker.d.ts.map +1 -0
  295. package/dist/pickers/timespan-picker.jsx +99 -0
  296. package/dist/pickers/timespan-picker.jsx.map +1 -0
  297. package/dist/pickers/timespan.d.ts +38 -0
  298. package/dist/pickers/timespan.d.ts.map +1 -0
  299. package/dist/pickers/timespan.jsx +49 -0
  300. package/dist/pickers/timespan.jsx.map +1 -0
  301. package/dist/pickers/trigger.d.ts +34 -0
  302. package/dist/pickers/trigger.d.ts.map +1 -0
  303. package/dist/pickers/trigger.jsx +77 -0
  304. package/dist/pickers/trigger.jsx.map +1 -0
  305. package/dist/pickers/wheel-column.d.ts +32 -0
  306. package/dist/pickers/wheel-column.d.ts.map +1 -0
  307. package/dist/pickers/wheel-column.jsx +99 -0
  308. package/dist/pickers/wheel-column.jsx.map +1 -0
  309. package/dist/plus-button/index.d.ts +3 -0
  310. package/dist/plus-button/index.d.ts.map +1 -0
  311. package/dist/plus-button/index.jsx +2 -0
  312. package/dist/plus-button/model.d.ts +65 -0
  313. package/dist/plus-button/model.d.ts.map +1 -0
  314. package/dist/plus-button/model.jsx +86 -0
  315. package/dist/plus-button/model.jsx.map +1 -0
  316. package/dist/plus-button/plus-button.css +67 -0
  317. package/dist/plus-button/plus-button.css.map +1 -0
  318. package/dist/plus-button/plus-button.d.ts +38 -0
  319. package/dist/plus-button/plus-button.d.ts.map +1 -0
  320. package/dist/plus-button/plus-button.jsx +155 -0
  321. package/dist/plus-button/plus-button.jsx.map +1 -0
  322. package/dist/popup/frame.d.ts +101 -0
  323. package/dist/popup/frame.d.ts.map +1 -0
  324. package/dist/popup/frame.jsx +244 -0
  325. package/dist/popup/frame.jsx.map +1 -0
  326. package/dist/popup/index.d.ts +8 -0
  327. package/dist/popup/index.d.ts.map +1 -0
  328. package/dist/popup/index.jsx +7 -0
  329. package/dist/popup/input-form.d.ts +35 -0
  330. package/dist/popup/input-form.d.ts.map +1 -0
  331. package/dist/popup/input-form.jsx +160 -0
  332. package/dist/popup/input-form.jsx.map +1 -0
  333. package/dist/popup/input.d.ts +175 -0
  334. package/dist/popup/input.d.ts.map +1 -0
  335. package/dist/popup/input.jsx +176 -0
  336. package/dist/popup/input.jsx.map +1 -0
  337. package/dist/popup/popup-view.d.ts +25 -0
  338. package/dist/popup/popup-view.d.ts.map +1 -0
  339. package/dist/popup/popup-view.jsx +67 -0
  340. package/dist/popup/popup-view.jsx.map +1 -0
  341. package/dist/popup/popup.css +203 -0
  342. package/dist/popup/popup.css.map +1 -0
  343. package/dist/popup/queue.d.ts +90 -0
  344. package/dist/popup/queue.d.ts.map +1 -0
  345. package/dist/popup/queue.jsx +309 -0
  346. package/dist/popup/queue.jsx.map +1 -0
  347. package/dist/popup/service.d.ts +60 -0
  348. package/dist/popup/service.d.ts.map +1 -0
  349. package/dist/popup/service.jsx +342 -0
  350. package/dist/popup/service.jsx.map +1 -0
  351. package/dist/popup/types.d.ts +211 -0
  352. package/dist/popup/types.d.ts.map +1 -0
  353. package/dist/popup/types.jsx +218 -0
  354. package/dist/popup/types.jsx.map +1 -0
  355. package/dist/provider/contexts.d.ts +41 -0
  356. package/dist/provider/contexts.d.ts.map +1 -0
  357. package/dist/provider/contexts.jsx +11 -0
  358. package/dist/provider/contexts.jsx.map +1 -0
  359. package/dist/provider/global-events.d.ts +8 -0
  360. package/dist/provider/global-events.d.ts.map +1 -0
  361. package/dist/provider/global-events.jsx +17 -0
  362. package/dist/provider/global-events.jsx.map +1 -0
  363. package/dist/provider/hooks.d.ts +49 -0
  364. package/dist/provider/hooks.d.ts.map +1 -0
  365. package/dist/provider/hooks.jsx +72 -0
  366. package/dist/provider/hooks.jsx.map +1 -0
  367. package/dist/provider/index.d.ts +5 -0
  368. package/dist/provider/index.d.ts.map +1 -0
  369. package/dist/provider/index.jsx +3 -0
  370. package/dist/provider/provider.css +18 -0
  371. package/dist/provider/provider.css.map +1 -0
  372. package/dist/provider/provider.d.ts +51 -0
  373. package/dist/provider/provider.d.ts.map +1 -0
  374. package/dist/provider/provider.jsx +290 -0
  375. package/dist/provider/provider.jsx.map +1 -0
  376. package/dist/provider/settings.d.ts +99 -0
  377. package/dist/provider/settings.d.ts.map +1 -0
  378. package/dist/provider/settings.jsx +45 -0
  379. package/dist/provider/settings.jsx.map +1 -0
  380. package/dist/provider/theme-css.d.ts +12 -0
  381. package/dist/provider/theme-css.d.ts.map +1 -0
  382. package/dist/provider/theme-css.jsx +19 -0
  383. package/dist/provider/theme-css.jsx.map +1 -0
  384. package/dist/provider/theme-root.d.ts +10 -0
  385. package/dist/provider/theme-root.d.ts.map +1 -0
  386. package/dist/provider/theme-root.jsx +24 -0
  387. package/dist/provider/theme-root.jsx.map +1 -0
  388. package/dist/provider/theme.css +473 -0
  389. package/dist/provider/theme.css.map +1 -0
  390. package/dist/range-slider/index.d.ts +3 -0
  391. package/dist/range-slider/index.d.ts.map +1 -0
  392. package/dist/range-slider/index.jsx +2 -0
  393. package/dist/range-slider/math.d.ts +23 -0
  394. package/dist/range-slider/math.d.ts.map +1 -0
  395. package/dist/range-slider/math.jsx +71 -0
  396. package/dist/range-slider/math.jsx.map +1 -0
  397. package/dist/range-slider/range-slider.css +90 -0
  398. package/dist/range-slider/range-slider.css.map +1 -0
  399. package/dist/range-slider/range-slider.d.ts +52 -0
  400. package/dist/range-slider/range-slider.d.ts.map +1 -0
  401. package/dist/range-slider/range-slider.jsx +159 -0
  402. package/dist/range-slider/range-slider.jsx.map +1 -0
  403. package/dist/selection/index.d.ts +5 -0
  404. package/dist/selection/index.d.ts.map +1 -0
  405. package/dist/selection/index.jsx +3 -0
  406. package/dist/selection/model.d.ts +53 -0
  407. package/dist/selection/model.d.ts.map +1 -0
  408. package/dist/selection/model.jsx +69 -0
  409. package/dist/selection/model.jsx.map +1 -0
  410. package/dist/selection/selection-sheet.d.ts +80 -0
  411. package/dist/selection/selection-sheet.d.ts.map +1 -0
  412. package/dist/selection/selection-sheet.jsx +362 -0
  413. package/dist/selection/selection-sheet.jsx.map +1 -0
  414. package/dist/selection/selection.css +75 -0
  415. package/dist/selection/selection.css.map +1 -0
  416. package/dist/selection/use-selection-model.d.ts +9 -0
  417. package/dist/selection/use-selection-model.d.ts.map +1 -0
  418. package/dist/selection/use-selection-model.jsx +22 -0
  419. package/dist/selection/use-selection-model.jsx.map +1 -0
  420. package/dist/sheet/frame.d.ts +45 -0
  421. package/dist/sheet/frame.d.ts.map +1 -0
  422. package/dist/sheet/frame.jsx +205 -0
  423. package/dist/sheet/frame.jsx.map +1 -0
  424. package/dist/sheet/header.d.ts +35 -0
  425. package/dist/sheet/header.d.ts.map +1 -0
  426. package/dist/sheet/header.jsx +145 -0
  427. package/dist/sheet/header.jsx.map +1 -0
  428. package/dist/sheet/height-memo.d.ts +47 -0
  429. package/dist/sheet/height-memo.d.ts.map +1 -0
  430. package/dist/sheet/height-memo.jsx +100 -0
  431. package/dist/sheet/height-memo.jsx.map +1 -0
  432. package/dist/sheet/index.d.ts +11 -0
  433. package/dist/sheet/index.d.ts.map +1 -0
  434. package/dist/sheet/index.jsx +10 -0
  435. package/dist/sheet/loadable.d.ts +35 -0
  436. package/dist/sheet/loadable.d.ts.map +1 -0
  437. package/dist/sheet/loadable.jsx +65 -0
  438. package/dist/sheet/loadable.jsx.map +1 -0
  439. package/dist/sheet/options.d.ts +220 -0
  440. package/dist/sheet/options.d.ts.map +1 -0
  441. package/dist/sheet/options.jsx +91 -0
  442. package/dist/sheet/options.jsx.map +1 -0
  443. package/dist/sheet/processing.d.ts +22 -0
  444. package/dist/sheet/processing.d.ts.map +1 -0
  445. package/dist/sheet/processing.jsx +66 -0
  446. package/dist/sheet/processing.jsx.map +1 -0
  447. package/dist/sheet/service.d.ts +55 -0
  448. package/dist/sheet/service.d.ts.map +1 -0
  449. package/dist/sheet/service.jsx +143 -0
  450. package/dist/sheet/service.jsx.map +1 -0
  451. package/dist/sheet/sheet.css +195 -0
  452. package/dist/sheet/sheet.css.map +1 -0
  453. package/dist/sheet/sheet.d.ts +19 -0
  454. package/dist/sheet/sheet.d.ts.map +1 -0
  455. package/dist/sheet/sheet.jsx +40 -0
  456. package/dist/sheet/sheet.jsx.map +1 -0
  457. package/dist/sheet/sizing.d.ts +69 -0
  458. package/dist/sheet/sizing.d.ts.map +1 -0
  459. package/dist/sheet/sizing.jsx +146 -0
  460. package/dist/sheet/sizing.jsx.map +1 -0
  461. package/dist/sheet/stack.d.ts +161 -0
  462. package/dist/sheet/stack.d.ts.map +1 -0
  463. package/dist/sheet/stack.jsx +378 -0
  464. package/dist/sheet/stack.jsx.map +1 -0
  465. package/dist/swipe/index.d.ts +3 -0
  466. package/dist/swipe/index.d.ts.map +1 -0
  467. package/dist/swipe/index.jsx +2 -0
  468. package/dist/swipe/model.d.ts +72 -0
  469. package/dist/swipe/model.d.ts.map +1 -0
  470. package/dist/swipe/model.jsx +66 -0
  471. package/dist/swipe/model.jsx.map +1 -0
  472. package/dist/swipe/swipe-view.d.ts +40 -0
  473. package/dist/swipe/swipe-view.d.ts.map +1 -0
  474. package/dist/swipe/swipe-view.jsx +163 -0
  475. package/dist/swipe/swipe-view.jsx.map +1 -0
  476. package/dist/swipe/swipe.css +34 -0
  477. package/dist/swipe/swipe.css.map +1 -0
  478. package/dist/tab-bar/index.d.ts +4 -0
  479. package/dist/tab-bar/index.d.ts.map +1 -0
  480. package/dist/tab-bar/index.jsx +3 -0
  481. package/dist/tab-bar/metrics.d.ts +230 -0
  482. package/dist/tab-bar/metrics.d.ts.map +1 -0
  483. package/dist/tab-bar/metrics.jsx +221 -0
  484. package/dist/tab-bar/metrics.jsx.map +1 -0
  485. package/dist/tab-bar/model.d.ts +170 -0
  486. package/dist/tab-bar/model.d.ts.map +1 -0
  487. package/dist/tab-bar/model.jsx +349 -0
  488. package/dist/tab-bar/model.jsx.map +1 -0
  489. package/dist/tab-bar/tab-bar.css +173 -0
  490. package/dist/tab-bar/tab-bar.css.map +1 -0
  491. package/dist/tab-bar/tab-bar.d.ts +56 -0
  492. package/dist/tab-bar/tab-bar.d.ts.map +1 -0
  493. package/dist/tab-bar/tab-bar.jsx +343 -0
  494. package/dist/tab-bar/tab-bar.jsx.map +1 -0
  495. package/dist/tabs/index.d.ts +3 -0
  496. package/dist/tabs/index.d.ts.map +1 -0
  497. package/dist/tabs/index.jsx +2 -0
  498. package/dist/tabs/model.d.ts +83 -0
  499. package/dist/tabs/model.d.ts.map +1 -0
  500. package/dist/tabs/model.jsx +113 -0
  501. package/dist/tabs/model.jsx.map +1 -0
  502. package/dist/tabs/tab-view.d.ts +47 -0
  503. package/dist/tabs/tab-view.d.ts.map +1 -0
  504. package/dist/tabs/tab-view.jsx +227 -0
  505. package/dist/tabs/tab-view.jsx.map +1 -0
  506. package/dist/tabs/tabs.css +182 -0
  507. package/dist/tabs/tabs.css.map +1 -0
  508. package/dist/toast/index.d.ts +3 -0
  509. package/dist/toast/index.d.ts.map +1 -0
  510. package/dist/toast/index.jsx +2 -0
  511. package/dist/toast/service.d.ts +48 -0
  512. package/dist/toast/service.d.ts.map +1 -0
  513. package/dist/toast/service.jsx +201 -0
  514. package/dist/toast/service.jsx.map +1 -0
  515. package/dist/toast/store.d.ts +174 -0
  516. package/dist/toast/store.d.ts.map +1 -0
  517. package/dist/toast/store.jsx +353 -0
  518. package/dist/toast/store.jsx.map +1 -0
  519. package/dist/toast/toast.css +152 -0
  520. package/dist/toast/toast.css.map +1 -0
  521. package/dist/toggle/checkbox-math.d.ts +52 -0
  522. package/dist/toggle/checkbox-math.d.ts.map +1 -0
  523. package/dist/toggle/checkbox-math.jsx +111 -0
  524. package/dist/toggle/checkbox-math.jsx.map +1 -0
  525. package/dist/toggle/checkbox.d.ts +56 -0
  526. package/dist/toggle/checkbox.d.ts.map +1 -0
  527. package/dist/toggle/checkbox.jsx +152 -0
  528. package/dist/toggle/checkbox.jsx.map +1 -0
  529. package/dist/toggle/chip-group.d.ts +50 -0
  530. package/dist/toggle/chip-group.d.ts.map +1 -0
  531. package/dist/toggle/chip-group.jsx +107 -0
  532. package/dist/toggle/chip-group.jsx.map +1 -0
  533. package/dist/toggle/index.d.ts +5 -0
  534. package/dist/toggle/index.d.ts.map +1 -0
  535. package/dist/toggle/index.jsx +4 -0
  536. package/dist/toggle/switch.d.ts +52 -0
  537. package/dist/toggle/switch.d.ts.map +1 -0
  538. package/dist/toggle/switch.jsx +192 -0
  539. package/dist/toggle/switch.jsx.map +1 -0
  540. package/dist/toggle/toggle.css +189 -0
  541. package/dist/toggle/toggle.css.map +1 -0
  542. package/package.json +155 -4
  543. package/rspeedy/index.d.ts +21 -0
  544. package/rspeedy/index.mjs +75 -0
  545. package/rspeedy/index.test.mjs +52 -0
@@ -0,0 +1,342 @@
1
+ import "./popup.css";
2
+ import { G9StringKey, createCulture, createStrings } from "@g9tm/lynxcontrols-foundation";
3
+ import { useEffect, useRef, useState, useSyncExternalStore } from "@lynx-js/react";
4
+ import { g9RowStyle, g9TextStart } from "../base/control.jsx";
5
+ import { useG9Press } from "../base/press.jsx";
6
+ import { startTimer, stopTimer } from "../base/timers.jsx";
7
+ import { G9ActivityIndicator } from "../display/activity-indicator.jsx";
8
+ import { useG9Host } from "../host/hooks.jsx";
9
+ import { g9Hosts } from "../host/registry.jsx";
10
+ import { G9IconSlot } from "../icon/slot.jsx";
11
+ import { useG9Diagnostics, useG9Direction, useG9Settings, useG9Strings, useG9Window } from "../provider/hooks.jsx";
12
+ import { g9DefaultErrorPresenter } from "../provider/settings.jsx";
13
+ import { PopupFrame } from "./frame.jsx";
14
+ import { g9PopupInputResult } from "./input.jsx";
15
+ import { PopupInputForm, createPopupFormStore } from "./input-form.jsx";
16
+ import { G9PopupQueue } from "./queue.jsx";
17
+ import { createPopupVisualProfile, customPopup, g9PopupResult, presetPopup, resolvePopupSettings } from "./types.jsx";
18
+ const g9PopupRowButtonLimit = 3;
19
+ const FEATURE = 'g9.popups';
20
+ const fallbackStrings = createStrings({
21
+ culture: createCulture('en')
22
+ });
23
+ function PopupButtonView(props) {
24
+ var _button_backgroundColor, _button_textColor, _button_iconImage;
25
+ const { button, profile } = props;
26
+ const primary = false !== button.isPrimary;
27
+ const press = useG9Press(props.onPress, {
28
+ source: 'G9Popup',
29
+ guardMs: 0
30
+ });
31
+ const background = null != (_button_backgroundColor = button.backgroundColor) ? _button_backgroundColor : primary ? profile.buttonBackground : 'transparent';
32
+ const color = null != (_button_textColor = button.textColor) ? _button_textColor : primary ? profile.buttonTextColor : 'var(--g9-on-surface)';
33
+ return <view className={`g9-popup__button${primary ? ' g9-popup__button--primary' : ' g9-popup__button--outline'}${props.stacked ? ' g9-popup__button--stacked' : ''}${props.busy ? ' g9-popup__button--busy' : ''}`} style={{
34
+ backgroundColor: background
35
+ }} accessibility-element={true} accessibility-traits="button" accessibility-label={button.text} {...button.testId ? {
36
+ 'data-testid': button.testId
37
+ } : {}} bindtap={press}>
38
+ {button.icon || button.iconImage ? <G9IconSlot icon={button.icon} image={null != (_button_iconImage = button.iconImage) ? _button_iconImage : null} size={18} color={color}/> : null}
39
+ <text className="g9-popup__button-text" style={{
40
+ color
41
+ }}>
42
+ {button.text}
43
+ </text>
44
+ </view>;
45
+ }
46
+ function PopupCardContent(props) {
47
+ var _d_title;
48
+ const { entry, settings, profile, state } = props;
49
+ const strings = useG9Strings();
50
+ const d = entry.descriptor;
51
+ const close = useG9Press(()=>state.service.queue.closeActive(), {
52
+ source: 'G9Popup',
53
+ guardMs: 0
54
+ });
55
+ const glyphs = useG9Settings().glyphs;
56
+ const buttons = d.buttons;
57
+ const stacked = 'stacked' === settings.footerButtonLayout;
58
+ const shown = stacked ? buttons : buttons.slice(0, g9PopupRowButtonLimit);
59
+ const warned = useRef(false);
60
+ if (!stacked && buttons.length > g9PopupRowButtonLimit && !warned.current) {
61
+ var _state_warn;
62
+ warned.current = true;
63
+ null == (_state_warn = state.warn) || _state_warn.call(state, `A row footer shows at most ${g9PopupRowButtonLimit} buttons; ${buttons.length - g9PopupRowButtonLimit} dropped.`);
64
+ }
65
+ const title = (null == (_d_title = d.title) ? void 0 : _d_title.trim()) ? d.title : strings.get('success' === d.type ? G9StringKey.Success : 'warning' === d.type ? G9StringKey.Warning : 'error' === d.type ? G9StringKey.Error : G9StringKey.Information);
66
+ const content = 'function' == typeof d.content ? d.content() : d.content;
67
+ const direction = useG9Direction();
68
+ const row = g9RowStyle(direction);
69
+ return <view className="g9-popup__content">
70
+ {false !== settings.showHeader ? <view className="g9-popup__header" style={row}>
71
+ <view className="g9-popup__badge" accessibility-label={profile.semanticIconDescription}>
72
+ <view className="g9-popup__badge-tint" style={{
73
+ backgroundColor: profile.iconColor
74
+ }}/>
75
+ <G9IconSlot icon={profile.icon} size={22} color={profile.iconColor}/>
76
+ </view>
77
+ <text className="g9-popup__title" style={{
78
+ color: profile.titleColor,
79
+ ...g9TextStart(direction)
80
+ }}>
81
+ {title}
82
+ </text>
83
+ {settings.showCloseButton ? <view className="g9-popup__close" accessibility-element={true} accessibility-traits="button" accessibility-label={strings.get(G9StringKey.Close)} bindtap={close}>
84
+ <G9IconSlot icon={glyphs.clear} size={20} color="var(--g9-on-surface-variant)"/>
85
+ </view> : null}
86
+ </view> : null}
87
+ {d.message ? <text className="g9-popup__message" style={{
88
+ color: profile.messageColor,
89
+ ...g9TextStart(direction)
90
+ }}>
91
+ {d.message}
92
+ </text> : null}
93
+ {null != content ? <view className="g9-popup__body">{content}</view> : null}
94
+ {false !== settings.showFooter ? <view className={`g9-popup__footer${stacked ? ' g9-popup__footer--stacked' : ''}`} style={stacked ? {} : row}>
95
+ {shown.map((button, i)=><PopupButtonView key={i} button={button} profile={profile} busy={entry.busy} stacked={stacked} onPress={()=>void state.service.queue.press(entry.id, i)}/>)}
96
+ {entry.busy ? <G9ActivityIndicator running size={18}/> : null}
97
+ </view> : null}
98
+ </view>;
99
+ }
100
+ function PopupLayer(props) {
101
+ var _ref, _settings_autoSizeMode, _settings_overlayMode, _settings_blurIntensity, _settings_animationEasing;
102
+ const { state } = props;
103
+ const settingsAll = useG9Settings();
104
+ const diagnostics = useG9Diagnostics();
105
+ state.defaults = settingsAll.popups;
106
+ const glyphs = settingsAll.glyphs;
107
+ const strings = useG9Strings();
108
+ state.strings = (k)=>strings.get(k);
109
+ state.warn = (message)=>diagnostics.log({
110
+ level: 'warning',
111
+ message,
112
+ source: 'G9Popup'
113
+ });
114
+ state.report = (error)=>diagnostics.log({
115
+ level: 'error',
116
+ message: 'A popup callback failed.',
117
+ source: 'G9Popup',
118
+ error
119
+ });
120
+ const win = useG9Window();
121
+ const queue = state.service.queue;
122
+ const entry = useSyncExternalStore((l)=>queue.subscribe(l), ()=>queue.getSnapshot());
123
+ const [entered, setEntered] = useState(null);
124
+ const showKey = entry ? `${entry.id}:${entry.showCount}` : null;
125
+ useEffect(()=>{
126
+ if (!showKey) return;
127
+ const t = startTimer(()=>setEntered(showKey), 16);
128
+ return ()=>stopTimer(t);
129
+ }, [
130
+ showKey
131
+ ]);
132
+ const settings = entry ? resolvePopupSettings(entry.descriptor, state.defaults) : null;
133
+ const duration = null != (_ref = null == settings ? void 0 : settings.animationDuration) ? _ref : 240;
134
+ useEffect(()=>{
135
+ if (!entry || entered !== showKey || 'opening' !== entry.phase) return;
136
+ const t = startTimer(()=>queue.markOpened(entry.id), duration);
137
+ return ()=>stopTimer(t);
138
+ }, [
139
+ entered,
140
+ showKey,
141
+ null == entry ? void 0 : entry.phase
142
+ ]);
143
+ useEffect(()=>()=>queue.dispose(), [
144
+ queue
145
+ ]);
146
+ if (!entry || !settings) return null;
147
+ const profile = createPopupVisualProfile(entry.descriptor, settings, glyphs, (k)=>strings.get('success' === k ? G9StringKey.Success : 'warning' === k ? G9StringKey.Warning : 'error' === k ? G9StringKey.Error : G9StringKey.Information));
148
+ const options = {
149
+ width: profile.width,
150
+ height: profile.height,
151
+ cornerRadius: profile.cornerRadius,
152
+ padding: profile.padding,
153
+ autoSizeMode: null != (_settings_autoSizeMode = settings.autoSizeMode) ? _settings_autoSizeMode : 'height',
154
+ cardBackground: profile.cardBackground,
155
+ borderColor: profile.borderColor,
156
+ overlayMode: null != (_settings_overlayMode = settings.overlayMode) ? _settings_overlayMode : 'transparent',
157
+ blurIntensity: null != (_settings_blurIntensity = settings.blurIntensity) ? _settings_blurIntensity : 'none',
158
+ overlayColor: profile.overlayColor,
159
+ overlayOpacity: profile.overlayOpacity,
160
+ animation: profile.animation,
161
+ animationEasing: null != (_settings_animationEasing = settings.animationEasing) ? _settings_animationEasing : 'sinOut',
162
+ animationDuration: duration
163
+ };
164
+ const phase = 'closing' === entry.phase ? 'leave' : entered === showKey ? 'open' : 'enter';
165
+ return <PopupFrame key={showKey} options={options} phase={phase} hostWidth={win.width} onBackgroundTap={()=>queue.backgroundTap(entry.id)}>
166
+ <PopupCardContent entry={entry} settings={settings} profile={profile} state={state}/>
167
+ </PopupFrame>;
168
+ }
169
+ function createPopupService(host) {
170
+ const state = {
171
+ defaults: {},
172
+ strings: fallbackStrings.get
173
+ };
174
+ const strings = (k)=>state.strings(k);
175
+ const queue = new G9PopupQueue({
176
+ setTimer: (cb, ms)=>startTimer(cb, ms),
177
+ clearTimer: (h)=>stopTimer(h),
178
+ closeDurationMs: (d)=>{
179
+ var _resolvePopupSettings_animationDuration;
180
+ return 'none' === resolvePopupSettings(d, state.defaults).animation ? 0 : null != (_resolvePopupSettings_animationDuration = resolvePopupSettings(d, state.defaults).animationDuration) ? _resolvePopupSettings_animationDuration : 240;
181
+ },
182
+ autoCloseMs: (d)=>{
183
+ var _resolvePopupSettings_autoCloseDuration;
184
+ return null != (_resolvePopupSettings_autoCloseDuration = resolvePopupSettings(d, state.defaults).autoCloseDuration) ? _resolvePopupSettings_autoCloseDuration : 0;
185
+ },
186
+ closesOnBack: (d)=>false !== resolvePopupSettings(d, state.defaults).closeOnBackButton,
187
+ closesOnBackgroundTap: (d)=>true === resolvePopupSettings(d, state.defaults).closeOnBackgroundClick,
188
+ onError: (error)=>{
189
+ var _state_report;
190
+ return null == (_state_report = state.report) ? void 0 : _state_report.call(state, error);
191
+ }
192
+ });
193
+ const withOk = (d)=>d.buttons.length > 0 ? d : {
194
+ ...d,
195
+ buttons: [
196
+ {
197
+ text: strings(G9StringKey.Ok),
198
+ isPrimary: true
199
+ }
200
+ ]
201
+ };
202
+ const preset = (type)=>(message, title, buttons, settings, animation)=>queue.show(withOk(presetPopup(type, message, title, buttons, settings, null != animation ? animation : null))).then((o)=>o.result);
203
+ const service = {
204
+ queue,
205
+ show: preset('information'),
206
+ showSuccess: preset('success'),
207
+ showWarning: preset('warning'),
208
+ showError: preset('error'),
209
+ showCustom: (content, title, buttons, settings, animation)=>queue.show(withOk(customPopup(content, title, buttons, settings, null != animation ? animation : null))).then((o)=>o.result),
210
+ showDescriptor: (descriptor)=>queue.show(withOk(descriptor)),
211
+ async showInput (options) {
212
+ var _options_cancelButton, _options_cancelButtonText, _options_submitButton, _options_submitButtonText, _options_settings, _options_type, _options_title, _options_message, _options_animation;
213
+ const store = createPopupFormStore(options.fields);
214
+ let result = g9PopupInputResult.cancel();
215
+ const cancel = {
216
+ ...null != (_options_cancelButton = options.cancelButton) ? _options_cancelButton : {
217
+ text: null != (_options_cancelButtonText = options.cancelButtonText) ? _options_cancelButtonText : strings(G9StringKey.Cancel)
218
+ },
219
+ isPrimary: false,
220
+ callback: ()=>{
221
+ result = g9PopupInputResult.cancel();
222
+ return g9PopupResult.close();
223
+ }
224
+ };
225
+ const submit = {
226
+ ...null != (_options_submitButton = options.submitButton) ? _options_submitButton : {
227
+ text: null != (_options_submitButtonText = options.submitButtonText) ? _options_submitButtonText : strings(G9StringKey.Save)
228
+ },
229
+ isPrimary: true,
230
+ callback: ()=>{
231
+ const v = store.validate({
232
+ requiredSuffix: strings(G9StringKey.RequiredSuffix),
233
+ invalidEmail: strings(G9StringKey.InvalidEmail)
234
+ });
235
+ result = v.valid ? g9PopupInputResult.submit(v.values, v.arrayValues) : g9PopupInputResult.validationFailed(v.values, v.arrayValues, v.errors);
236
+ return v.valid ? g9PopupResult.close() : g9PopupResult.noAction();
237
+ }
238
+ };
239
+ const settings = {
240
+ showHeader: true,
241
+ showFooter: true,
242
+ showCloseButton: false,
243
+ closeOnBackgroundClick: false,
244
+ autoSizeMode: 'height',
245
+ padding: [
246
+ 20,
247
+ 12,
248
+ 20,
249
+ 8
250
+ ],
251
+ ...Object.fromEntries(Object.entries(null != (_options_settings = options.settings) ? _options_settings : {}).filter(([, v])=>null != v))
252
+ };
253
+ await queue.show({
254
+ type: null != (_options_type = options.type) ? _options_type : 'information',
255
+ title: null != (_options_title = options.title) ? _options_title : null,
256
+ message: null != (_options_message = options.message) ? _options_message : null,
257
+ content: ()=><PopupInputForm store={store} focusFirst={false !== options.focusFirstFieldOnOpen}/>,
258
+ buttons: [
259
+ cancel,
260
+ submit
261
+ ],
262
+ settings,
263
+ animation: null != (_options_animation = options.animation) ? _options_animation : null
264
+ });
265
+ return result;
266
+ },
267
+ async showConfirm (message, options = {}) {
268
+ var _options_type, _options_title, _options_cancelText, _options_okText;
269
+ let ok = false;
270
+ await queue.show(presetPopup(null != (_options_type = options.type) ? _options_type : 'information', message, null != (_options_title = options.title) ? _options_title : null, [
271
+ {
272
+ text: null != (_options_cancelText = options.cancelText) ? _options_cancelText : strings(G9StringKey.Cancel),
273
+ isPrimary: false,
274
+ callback: async (c)=>{
275
+ var _options_cancelCallback;
276
+ await (null == (_options_cancelCallback = options.cancelCallback) ? void 0 : _options_cancelCallback.call(options, c));
277
+ return g9PopupResult.close();
278
+ }
279
+ },
280
+ {
281
+ text: null != (_options_okText = options.okText) ? _options_okText : strings(G9StringKey.Ok),
282
+ isPrimary: true,
283
+ callback: async (c)=>{
284
+ var _options_okCallback;
285
+ await (null == (_options_okCallback = options.okCallback) ? void 0 : _options_okCallback.call(options, c));
286
+ ok = true;
287
+ return g9PopupResult.close();
288
+ }
289
+ }
290
+ ]));
291
+ return ok;
292
+ },
293
+ handleHardwareBack: ()=>queue.handleBack(),
294
+ closeActive: ()=>queue.closeActive(),
295
+ clearQueue: ()=>queue.clearQueue(),
296
+ dismissAll: ()=>queue.dismissAll()
297
+ };
298
+ state.service = service;
299
+ host.attachFeature(FEATURE, state);
300
+ host.registerLayerItem('popups', {
301
+ key: FEATURE,
302
+ element: <PopupLayer state={state}/>,
303
+ order: 0
304
+ });
305
+ host.back.push(()=>queue.handleBack() ? 'handled' : 'pass', {
306
+ layer: 'popups'
307
+ });
308
+ return state;
309
+ }
310
+ function popupServiceOf(host) {
311
+ const existing = host.getFeature(FEATURE);
312
+ return (null != existing ? existing : createPopupService(host)).service;
313
+ }
314
+ function useG9Popups() {
315
+ return popupServiceOf(useG9Host());
316
+ }
317
+ function g9Popups() {
318
+ return popupServiceOf(g9Hosts.require());
319
+ }
320
+ function presentErrorPopup(request) {
321
+ const host = g9Hosts.active();
322
+ if (!host) return;
323
+ const popups = popupServiceOf(host);
324
+ const buttons = [];
325
+ if (request.moreDetails) {
326
+ const more = request.moreDetails;
327
+ buttons.push({
328
+ text: more.text,
329
+ isPrimary: false,
330
+ callback: async ()=>void await more.open()
331
+ });
332
+ }
333
+ buttons.push({
334
+ text: request.okText,
335
+ isPrimary: true
336
+ });
337
+ return popups.showError(request.message, request.title, buttons).then(()=>void 0);
338
+ }
339
+ g9DefaultErrorPresenter.current = presentErrorPopup;
340
+ export { g9PopupRowButtonLimit, g9Popups, popupServiceOf, presentErrorPopup, useG9Popups };
341
+
342
+ //# sourceMappingURL=service.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popup/service.jsx","sources":["../../src/popup/service.tsx"],"sourcesContent":["import './popup.css';\nimport { createCulture, createStrings, type G9ErrorPopupRequest, G9StringKey } from '@g9tm/lynxcontrols-foundation';\nimport { type ReactNode, useEffect, useRef, useState, useSyncExternalStore } from '@lynx-js/react';\nimport { g9RowStyle, g9TextStart } from '../base/control';\nimport { useG9Press } from '../base/press';\nimport { startTimer, stopTimer } from '../base/timers';\nimport { G9ActivityIndicator } from '../display/activity-indicator';\nimport { useG9Host } from '../host/hooks';\nimport { type G9HostHandle, g9Hosts } from '../host/registry';\nimport { G9IconSlot } from '../icon/slot';\nimport { useG9Diagnostics, useG9Direction, useG9Settings, useG9Strings, useG9Window } from '../provider/hooks';\nimport { g9DefaultErrorPresenter } from '../provider/settings';\nimport { type G9PopupViewOpenOptions, PopupFrame } from './frame';\nimport { type G9PopupInputOptions, type G9PopupInputResult, g9PopupInputResult } from './input';\nimport { createPopupFormStore, PopupInputForm } from './input-form';\nimport { type G9PopupEntry, type G9PopupOutcome, G9PopupQueue } from './queue';\nimport {\n createPopupVisualProfile,\n customPopup,\n type G9PopupAnimationType,\n type G9PopupButton,\n type G9PopupDescriptor,\n type G9PopupResult,\n type G9PopupSettings,\n type G9PopupType,\n type G9PopupVisualProfile,\n g9PopupResult,\n presetPopup,\n resolvePopupSettings,\n} from './types';\n\n/** Most buttons a `row` footer shows (MAUI); more are dropped with a warning. */\nexport const g9PopupRowButtonLimit = 3;\n\n/** Options of `showConfirm` (MAUI `ShowConfirmAsync`). */\nexport interface G9ConfirmOptions {\n readonly title?: string | null;\n readonly okCallback?: ((context: { readonly aborted: boolean }) => unknown) | null;\n readonly cancelCallback?: ((context: { readonly aborted: boolean }) => unknown) | null;\n /** Default `'information'`; `'warning'` for a lossy confirm (sign out, discard). */\n readonly type?: G9PopupType;\n readonly okText?: string;\n readonly cancelText?: string;\n}\n\n/** The popups of a host (MAUI `G9PopupHelper`). */\nexport interface G9PopupService {\n /** Information popup (MAUI `ShowG9PopupAsync`); resolves the result of the button that closed it. */\n show(\n message: string,\n title?: string | null,\n buttons?: ReadonlyArray<G9PopupButton> | null,\n settings?: G9PopupSettings | null,\n animation?: G9PopupAnimationType | null,\n ): Promise<G9PopupResult>;\n showSuccess(\n message: string,\n title?: string | null,\n buttons?: ReadonlyArray<G9PopupButton> | null,\n settings?: G9PopupSettings | null,\n animation?: G9PopupAnimationType | null,\n ): Promise<G9PopupResult>;\n showWarning(\n message: string,\n title?: string | null,\n buttons?: ReadonlyArray<G9PopupButton> | null,\n settings?: G9PopupSettings | null,\n animation?: G9PopupAnimationType | null,\n ): Promise<G9PopupResult>;\n showError(\n message: string,\n title?: string | null,\n buttons?: ReadonlyArray<G9PopupButton> | null,\n settings?: G9PopupSettings | null,\n animation?: G9PopupAnimationType | null,\n ): Promise<G9PopupResult>;\n /** Any content in the body (MAUI `ShowCustomG9PopupAsync`). */\n showCustom(\n content: ReactNode | (() => ReactNode),\n title?: string | null,\n buttons?: ReadonlyArray<G9PopupButton> | null,\n settings?: G9PopupSettings | null,\n animation?: G9PopupAnimationType | null,\n ): Promise<G9PopupResult>;\n /** Any descriptor; resolves how it ended. */\n showDescriptor(descriptor: G9PopupDescriptor): Promise<G9PopupOutcome>;\n /** A validated form (MAUI `ShowInputG9PopupAsync`). */\n showInput(options: G9PopupInputOptions): Promise<G9PopupInputResult>;\n /** OK/Cancel: `true` only for OK; every other exit is `false` (MAUI `ShowConfirmAsync`). */\n showConfirm(message: string, options?: G9ConfirmOptions): Promise<boolean>;\n /** Hardware back: `true` when a popup is on screen (closed unless `closeOnBackButton: false`). */\n handleHardwareBack(): boolean;\n /** Closes the popup on screen. */\n closeActive(): void;\n /** Drops waiting popups; the one on screen stays. */\n clearQueue(): void;\n /** Closes everything. */\n dismissAll(): void;\n readonly queue: G9PopupQueue;\n}\n\nconst FEATURE = 'g9.popups';\n\ninterface State {\n service: G9PopupService;\n defaults: G9PopupSettings;\n /** Strings and diagnostics of the provider; refreshed by the layer on every render. */\n strings: (key: G9StringKey) => string;\n warn?: (message: string) => void;\n report?: (error: unknown) => void;\n}\n\nconst fallbackStrings = createStrings({ culture: createCulture('en') });\n\nfunction PopupButtonView(props: {\n readonly button: G9PopupButton;\n readonly profile: G9PopupVisualProfile;\n readonly busy: boolean;\n readonly stacked: boolean;\n readonly onPress: () => void;\n}): ReactNode {\n const { button, profile } = props;\n const primary = button.isPrimary !== false;\n const press = useG9Press(props.onPress, { source: 'G9Popup', guardMs: 0 });\n const background = button.backgroundColor ?? (primary ? profile.buttonBackground : 'transparent');\n const color = button.textColor ?? (primary ? profile.buttonTextColor : 'var(--g9-on-surface)');\n return (\n <view\n className={`g9-popup__button${primary ? ' g9-popup__button--primary' : ' g9-popup__button--outline'}${props.stacked ? ' g9-popup__button--stacked' : ''}${props.busy ? ' g9-popup__button--busy' : ''}`}\n style={{ backgroundColor: background }}\n accessibility-element={true}\n accessibility-traits=\"button\"\n accessibility-label={button.text}\n {...(button.testId ? { 'data-testid': button.testId } : {})}\n bindtap={press}\n >\n {button.icon || button.iconImage ? (\n <G9IconSlot icon={button.icon} image={button.iconImage ?? null} size={18} color={color} />\n ) : null}\n <text className=\"g9-popup__button-text\" style={{ color }}>\n {button.text}\n </text>\n </view>\n );\n}\n\n/** Header, body and footer of a queued popup (MAUI helper templates). */\nfunction PopupCardContent(props: {\n readonly entry: G9PopupEntry;\n readonly settings: G9PopupSettings;\n readonly profile: G9PopupVisualProfile;\n readonly state: State;\n}): ReactNode {\n const { entry, settings, profile, state } = props;\n const strings = useG9Strings();\n const d = entry.descriptor;\n const close = useG9Press(() => state.service.queue.closeActive(), { source: 'G9Popup', guardMs: 0 });\n const glyphs = useG9Settings().glyphs;\n const buttons = d.buttons;\n const stacked = settings.footerButtonLayout === 'stacked';\n const shown = stacked ? buttons : buttons.slice(0, g9PopupRowButtonLimit);\n const warned = useRef(false);\n if (!stacked && buttons.length > g9PopupRowButtonLimit && !warned.current) {\n warned.current = true;\n state.warn?.(\n `A row footer shows at most ${g9PopupRowButtonLimit} buttons; ${buttons.length - g9PopupRowButtonLimit} dropped.`,\n );\n }\n const title = d.title?.trim()\n ? d.title\n : strings.get(\n d.type === 'success'\n ? G9StringKey.Success\n : d.type === 'warning'\n ? G9StringKey.Warning\n : d.type === 'error'\n ? G9StringKey.Error\n : G9StringKey.Information,\n );\n const content = typeof d.content === 'function' ? (d.content as () => ReactNode)() : d.content;\n const direction = useG9Direction();\n const row = g9RowStyle(direction);\n return (\n <view className=\"g9-popup__content\">\n {settings.showHeader !== false ? (\n <view className=\"g9-popup__header\" style={row}>\n <view className=\"g9-popup__badge\" accessibility-label={profile.semanticIconDescription}>\n <view className=\"g9-popup__badge-tint\" style={{ backgroundColor: profile.iconColor }} />\n <G9IconSlot icon={profile.icon} size={22} color={profile.iconColor} />\n </view>\n <text className=\"g9-popup__title\" style={{ color: profile.titleColor, ...g9TextStart(direction) }}>\n {title}\n </text>\n {settings.showCloseButton ? (\n <view\n className=\"g9-popup__close\"\n accessibility-element={true}\n accessibility-traits=\"button\"\n accessibility-label={strings.get(G9StringKey.Close)}\n bindtap={close}\n >\n <G9IconSlot icon={glyphs.clear} size={20} color=\"var(--g9-on-surface-variant)\" />\n </view>\n ) : null}\n </view>\n ) : null}\n {d.message ? (\n <text className=\"g9-popup__message\" style={{ color: profile.messageColor, ...g9TextStart(direction) }}>\n {d.message}\n </text>\n ) : null}\n {content !== null && content !== undefined ? <view className=\"g9-popup__body\">{content}</view> : null}\n {settings.showFooter !== false ? (\n <view className={`g9-popup__footer${stacked ? ' g9-popup__footer--stacked' : ''}`} style={stacked ? {} : row}>\n {shown.map((button, i) => (\n <PopupButtonView\n key={i}\n button={button}\n profile={profile}\n busy={entry.busy}\n stacked={stacked}\n onPress={() => void state.service.queue.press(entry.id, i)}\n />\n ))}\n {entry.busy ? <G9ActivityIndicator running size={18} /> : null}\n </view>\n ) : null}\n </view>\n );\n}\n\n/** The popup layer: the active popup's frame; motion phases from the queue phase. */\nfunction PopupLayer(props: { readonly state: State }): ReactNode {\n const { state } = props;\n const settingsAll = useG9Settings();\n const diagnostics = useG9Diagnostics();\n state.defaults = settingsAll.popups;\n const glyphs = settingsAll.glyphs;\n const strings = useG9Strings();\n state.strings = (k) => strings.get(k);\n state.warn = (message) => diagnostics.log({ level: 'warning', message, source: 'G9Popup' });\n state.report = (error) =>\n diagnostics.log({ level: 'error', message: 'A popup callback failed.', source: 'G9Popup', error });\n const win = useG9Window();\n const queue = state.service.queue;\n const entry = useSyncExternalStore(\n (l) => queue.subscribe(l),\n () => queue.getSnapshot(),\n );\n // `enter` for one frame per show, then `open` (the transition runs), `leave` while closing.\n const [entered, setEntered] = useState<string | null>(null);\n const showKey = entry ? `${entry.id}:${entry.showCount}` : null;\n useEffect(() => {\n if (!showKey) return;\n const t = startTimer(() => setEntered(showKey), 16);\n return () => stopTimer(t);\n }, [showKey]);\n const settings = entry ? resolvePopupSettings(entry.descriptor, state.defaults) : null;\n const duration = settings?.animationDuration ?? 240;\n useEffect(() => {\n if (!entry || entered !== showKey || entry.phase !== 'opening') return;\n const t = startTimer(() => queue.markOpened(entry.id), duration);\n return () => stopTimer(t);\n }, [entered, showKey, entry?.phase]);\n useEffect(() => () => queue.dispose(), [queue]);\n if (!entry || !settings) return null;\n const profile = createPopupVisualProfile(entry.descriptor, settings, glyphs, (k) =>\n strings.get(\n k === 'success'\n ? G9StringKey.Success\n : k === 'warning'\n ? G9StringKey.Warning\n : k === 'error'\n ? G9StringKey.Error\n : G9StringKey.Information,\n ),\n );\n const options: G9PopupViewOpenOptions = {\n width: profile.width,\n height: profile.height,\n cornerRadius: profile.cornerRadius,\n padding: profile.padding,\n autoSizeMode: settings.autoSizeMode ?? 'height',\n cardBackground: profile.cardBackground,\n borderColor: profile.borderColor,\n overlayMode: settings.overlayMode ?? 'transparent',\n blurIntensity: settings.blurIntensity ?? 'none',\n overlayColor: profile.overlayColor,\n overlayOpacity: profile.overlayOpacity,\n animation: profile.animation,\n animationEasing: settings.animationEasing ?? 'sinOut',\n animationDuration: duration,\n };\n const phase = entry.phase === 'closing' ? 'leave' : entered === showKey ? 'open' : 'enter';\n return (\n <PopupFrame\n key={showKey as string}\n options={options}\n phase={phase}\n hostWidth={win.width}\n onBackgroundTap={() => queue.backgroundTap(entry.id)}\n >\n <PopupCardContent entry={entry} settings={settings} profile={profile} state={state} />\n </PopupFrame>\n );\n}\n\nfunction createPopupService(host: G9HostHandle): State {\n const state = { defaults: {}, strings: fallbackStrings.get } as unknown as State;\n const strings = (k: G9StringKey) => state.strings(k);\n const queue = new G9PopupQueue({\n setTimer: (cb, ms) => startTimer(cb, ms),\n clearTimer: (h) => stopTimer(h as never),\n closeDurationMs: (d) =>\n resolvePopupSettings(d, state.defaults).animation === 'none'\n ? 0\n : (resolvePopupSettings(d, state.defaults).animationDuration ?? 240),\n autoCloseMs: (d) => resolvePopupSettings(d, state.defaults).autoCloseDuration ?? 0,\n closesOnBack: (d) => resolvePopupSettings(d, state.defaults).closeOnBackButton !== false,\n closesOnBackgroundTap: (d) => resolvePopupSettings(d, state.defaults).closeOnBackgroundClick === true,\n onError: (error) => state.report?.(error),\n });\n // A popup without buttons gets an OK button (MAUI presets).\n const withOk = (d: G9PopupDescriptor): G9PopupDescriptor =>\n d.buttons.length > 0 ? d : { ...d, buttons: [{ text: strings(G9StringKey.Ok), isPrimary: true }] };\n const preset =\n (type: G9PopupType) =>\n (\n message: string,\n title?: string | null,\n buttons?: ReadonlyArray<G9PopupButton> | null,\n settings?: G9PopupSettings | null,\n animation?: G9PopupAnimationType | null,\n ) =>\n queue.show(withOk(presetPopup(type, message, title, buttons, settings, animation ?? null))).then((o) => o.result);\n const service: G9PopupService = {\n queue,\n show: preset('information'),\n showSuccess: preset('success'),\n showWarning: preset('warning'),\n showError: preset('error'),\n showCustom: (content, title, buttons, settings, animation) =>\n queue.show(withOk(customPopup(content, title, buttons, settings, animation ?? null))).then((o) => o.result),\n showDescriptor: (descriptor) => queue.show(withOk(descriptor)),\n async showInput(options) {\n const store = createPopupFormStore(options.fields);\n let result = g9PopupInputResult.cancel();\n const cancel: G9PopupButton = {\n ...(options.cancelButton ?? { text: options.cancelButtonText ?? strings(G9StringKey.Cancel) }),\n isPrimary: false,\n callback: () => {\n result = g9PopupInputResult.cancel();\n return g9PopupResult.close();\n },\n };\n const submit: G9PopupButton = {\n ...(options.submitButton ?? { text: options.submitButtonText ?? strings(G9StringKey.Save) }),\n isPrimary: true,\n callback: () => {\n const v = store.validate({\n requiredSuffix: strings(G9StringKey.RequiredSuffix),\n invalidEmail: strings(G9StringKey.InvalidEmail),\n });\n result = v.valid\n ? g9PopupInputResult.submit(v.values, v.arrayValues)\n : g9PopupInputResult.validationFailed(v.values, v.arrayValues, v.errors);\n return v.valid ? g9PopupResult.close() : g9PopupResult.noAction();\n },\n };\n const settings: G9PopupSettings = {\n showHeader: true,\n showFooter: true,\n showCloseButton: false,\n closeOnBackgroundClick: false,\n autoSizeMode: 'height',\n padding: [20, 12, 20, 8],\n ...Object.fromEntries(Object.entries(options.settings ?? {}).filter(([, v]) => v !== undefined && v !== null)),\n };\n await queue.show({\n type: options.type ?? 'information',\n title: options.title ?? null,\n message: options.message ?? null,\n content: () => <PopupInputForm store={store} focusFirst={options.focusFirstFieldOnOpen !== false} />,\n buttons: [cancel, submit],\n settings,\n animation: options.animation ?? null,\n });\n return result;\n },\n async showConfirm(message, options = {}) {\n let ok = false;\n await queue.show(\n presetPopup(options.type ?? 'information', message, options.title ?? null, [\n {\n text: options.cancelText ?? strings(G9StringKey.Cancel),\n isPrimary: false,\n callback: async (c) => {\n await options.cancelCallback?.(c);\n return g9PopupResult.close();\n },\n },\n {\n text: options.okText ?? strings(G9StringKey.Ok),\n isPrimary: true,\n callback: async (c) => {\n await options.okCallback?.(c);\n ok = true;\n return g9PopupResult.close();\n },\n },\n ]),\n );\n return ok;\n },\n handleHardwareBack: () => queue.handleBack(),\n closeActive: () => queue.closeActive(),\n clearQueue: () => queue.clearQueue(),\n dismissAll: () => queue.dismissAll(),\n };\n state.service = service;\n host.attachFeature(FEATURE, state);\n host.registerLayerItem('popups', { key: FEATURE, element: <PopupLayer state={state} />, order: 0 });\n host.back.push(() => (queue.handleBack() ? 'handled' : 'pass'), { layer: 'popups' });\n return state;\n}\n\n/** The popup service of a host (created once as a host feature). */\nexport function popupServiceOf(host: G9HostHandle): G9PopupService {\n const existing = host.getFeature(FEATURE) as State | undefined;\n return (existing ?? createPopupService(host)).service;\n}\n\n/** The popups of the nearest `G9Host` (MAUI `G9PopupHelper`): one card at a time, FIFO, in the `popups` layer. */\nexport function useG9Popups(): G9PopupService {\n return popupServiceOf(useG9Host());\n}\n\n/** The popups of the active host, for code outside components. Throws `host-missing` without a host. */\nexport function g9Popups(): G9PopupService {\n return popupServiceOf(g9Hosts.require());\n}\n\n/**\n * The default error presenter (installed when this module loads): the executor's error popup as an error-type popup\n * on the active host, with More details when diagnostics are available. Without a host it does nothing.\n */\nexport function presentErrorPopup(request: G9ErrorPopupRequest): Promise<void> | undefined {\n const host = g9Hosts.active();\n if (!host) return undefined;\n const popups = popupServiceOf(host);\n const buttons: G9PopupButton[] = [];\n if (request.moreDetails) {\n const more = request.moreDetails;\n buttons.push({ text: more.text, isPrimary: false, callback: async () => void (await more.open()) });\n }\n buttons.push({ text: request.okText, isPrimary: true });\n return popups.showError(request.message, request.title, buttons).then(() => undefined);\n}\n\ng9DefaultErrorPresenter.current = presentErrorPopup;\n"],"names":["g9PopupRowButtonLimit","FEATURE","fallbackStrings","createStrings","createCulture","PopupButtonView","props","_button_backgroundColor","_button_textColor","_button_iconImage","button","profile","primary","press","useG9Press","background","color","view","G9IconSlot","text","PopupCardContent","_d_title","entry","settings","state","strings","useG9Strings","d","close","glyphs","useG9Settings","buttons","stacked","shown","warned","useRef","title","G9StringKey","content","direction","useG9Direction","row","g9RowStyle","g9TextStart","i","G9ActivityIndicator","PopupLayer","_settings_autoSizeMode","_settings_overlayMode","_settings_blurIntensity","_settings_animationEasing","settingsAll","diagnostics","useG9Diagnostics","k","message","error","win","useG9Window","queue","useSyncExternalStore","l","entered","setEntered","useState","showKey","useEffect","t","startTimer","stopTimer","resolvePopupSettings","duration","createPopupVisualProfile","options","phase","PopupFrame","createPopupService","host","G9PopupQueue","cb","ms","h","_resolvePopupSettings_animationDuration","_resolvePopupSettings_autoCloseDuration","withOk","preset","type","animation","presetPopup","o","service","customPopup","descriptor","_options_cancelButton","_options_cancelButtonText","_options_submitButton","_options_submitButtonText","_options_settings","_options_type","_options_title","_options_message","_options_animation","store","createPopupFormStore","result","g9PopupInputResult","cancel","g9PopupResult","submit","v","Object","PopupInputForm","_options_cancelText","_options_okText","ok","c","popupServiceOf","existing","useG9Popups","useG9Host","g9Popups","g9Hosts","presentErrorPopup","request","popups","more","undefined","g9DefaultErrorPresenter"],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ import type { G9ImageSource } from '@g9tm/lynxcontrols-foundation';
2
+ import type { ReactNode } from '@lynx-js/react';
3
+ import type { G9IconInput } from '../icon/icon.js';
4
+ /** Popup kind (MAUI `G9PopupType`): the accent, icon and semantics. */
5
+ export declare const G9PopupType: {
6
+ readonly Information: "information";
7
+ readonly Success: "success";
8
+ readonly Warning: "warning";
9
+ readonly Error: "error";
10
+ readonly Custom: "custom";
11
+ };
12
+ export type G9PopupType = (typeof G9PopupType)[keyof typeof G9PopupType];
13
+ /** Card motion (MAUI `G9PopupAnimationType`). */
14
+ export declare const G9PopupAnimationType: {
15
+ readonly None: "none";
16
+ readonly FadeIn: "fadeIn";
17
+ readonly SlideUp: "slideUp";
18
+ readonly Bounce: "bounce";
19
+ readonly ZoomIn: "zoomIn";
20
+ readonly DropIn: "dropIn";
21
+ };
22
+ export type G9PopupAnimationType = (typeof G9PopupAnimationType)[keyof typeof G9PopupAnimationType];
23
+ /** Easing of the card motion (MAUI `G9PopupViewAnimationEasing`). */
24
+ export declare const G9PopupAnimationEasing: {
25
+ readonly Linear: "linear";
26
+ readonly SinIn: "sinIn";
27
+ readonly SinOut: "sinOut";
28
+ readonly SinInOut: "sinInOut";
29
+ readonly CubicOut: "cubicOut";
30
+ readonly BounceOut: "bounceOut";
31
+ };
32
+ export type G9PopupAnimationEasing = (typeof G9PopupAnimationEasing)[keyof typeof G9PopupAnimationEasing];
33
+ /** Footer arrangement (MAUI `G9PopupFooterButtonLayout`). */
34
+ export declare const G9PopupFooterButtonLayout: {
35
+ readonly Row: "row";
36
+ readonly Stacked: "stacked";
37
+ };
38
+ export type G9PopupFooterButtonLayout = (typeof G9PopupFooterButtonLayout)[keyof typeof G9PopupFooterButtonLayout];
39
+ /** Card sizing (MAUI `G9PopupViewAutoSizeMode`). */
40
+ export declare const G9PopupAutoSizeMode: {
41
+ readonly Both: "both";
42
+ readonly Height: "height";
43
+ readonly Width: "width";
44
+ readonly None: "none";
45
+ };
46
+ export type G9PopupAutoSizeMode = (typeof G9PopupAutoSizeMode)[keyof typeof G9PopupAutoSizeMode];
47
+ /** Scrim (MAUI `G9PopupViewOverlayMode`); `'none'` = non-modal (taps pass through to the page). */
48
+ export declare const G9PopupOverlayMode: {
49
+ readonly Transparent: "transparent";
50
+ readonly Blur: "blur";
51
+ readonly None: "none";
52
+ };
53
+ export type G9PopupOverlayMode = (typeof G9PopupOverlayMode)[keyof typeof G9PopupOverlayMode];
54
+ /** Blur strength (MAUI `G9PopupViewBlurIntensity`); G9 has no blur: it darkens the scrim (MAUI's fallback). */
55
+ export declare const G9PopupBlurIntensity: {
56
+ readonly None: "none";
57
+ readonly Light: "light";
58
+ readonly ExtraLight: "extraLight";
59
+ readonly Dark: "dark";
60
+ readonly ExtraDark: "extraDark";
61
+ };
62
+ export type G9PopupBlurIntensity = (typeof G9PopupBlurIntensity)[keyof typeof G9PopupBlurIntensity];
63
+ /** Card placement against an anchor (MAUI `G9PopupViewRelativePosition`). */
64
+ export declare const G9PopupRelativePosition: {
65
+ readonly AlignTop: "alignTop";
66
+ readonly AlignBottom: "alignBottom";
67
+ readonly AlignLeft: "alignLeft";
68
+ readonly AlignRight: "alignRight";
69
+ readonly AlignTopLeft: "alignTopLeft";
70
+ readonly AlignTopRight: "alignTopRight";
71
+ readonly AlignBottomLeft: "alignBottomLeft";
72
+ readonly AlignBottomRight: "alignBottomRight";
73
+ readonly AlignToLeftOf: "alignToLeftOf";
74
+ readonly AlignToRightOf: "alignToRightOf";
75
+ readonly AlignToTopOf: "alignToTopOf";
76
+ readonly AlignToBottomOf: "alignToBottomOf";
77
+ };
78
+ export type G9PopupRelativePosition = (typeof G9PopupRelativePosition)[keyof typeof G9PopupRelativePosition];
79
+ /** What happens after a button callback (MAUI `G9PopupResultAction`). */
80
+ export declare const G9PopupResultAction: {
81
+ readonly Close: "close";
82
+ readonly DoNothing: "doNothing";
83
+ readonly ShowNext: "showNext";
84
+ };
85
+ export type G9PopupResultAction = (typeof G9PopupResultAction)[keyof typeof G9PopupResultAction];
86
+ /** A button callback's answer (MAUI `G9PopupResult`). */
87
+ export interface G9PopupResult {
88
+ readonly action: G9PopupResultAction;
89
+ /** With `showNext`: the popup shown right after this one closes. */
90
+ readonly nextPopup: G9PopupDescriptor | null;
91
+ /** Runs after the close motion; the queue does not wait for it (a popup it requests shows at once). */
92
+ readonly afterClose: (() => unknown) | null;
93
+ }
94
+ /** Builders of {@link G9PopupResult} (MAUI `G9PopupResult.Close/NoAction/ShowNext`). */
95
+ export declare const g9PopupResult: Readonly<{
96
+ close: (afterClose?: (() => unknown) | null) => G9PopupResult;
97
+ noAction: () => G9PopupResult;
98
+ showNext: (descriptor: G9PopupDescriptor) => G9PopupResult;
99
+ }>;
100
+ /** Abort state handed to a callback; `aborted` turns true when the popup was dismissed while it ran. */
101
+ export interface G9PopupCallbackContext {
102
+ readonly aborted: boolean;
103
+ }
104
+ /** A footer button (MAUI `G9PopupButton`). */
105
+ export interface G9PopupButton {
106
+ readonly text: string;
107
+ /** Runs once per tap (the footer gate); returning nothing closes the popup. */
108
+ readonly callback?: // biome-ignore lint/suspicious/noConfusingVoidType: a callback may return nothing (= close)
109
+ ((context: G9PopupCallbackContext) => G9PopupResult | void | Promise<G9PopupResult | void>) | null;
110
+ /** Filled accent button; false = outline. Default true (MAUI). */
111
+ readonly isPrimary?: boolean;
112
+ readonly icon?: G9IconInput;
113
+ readonly iconImage?: G9ImageSource | null;
114
+ readonly textColor?: string | null;
115
+ readonly backgroundColor?: string | null;
116
+ /** Test/automation id (MAUI `AutomationId`). */
117
+ readonly testId?: string | null;
118
+ }
119
+ /** A plain close button (MAUI `G9PopupButton.CloseButton(text)`). */
120
+ export declare function closePopupButton(text: string): G9PopupButton;
121
+ /** Per-popup settings; every field optional, merged over the app defaults (MAUI `G9PopupSettings`). */
122
+ export interface G9PopupSettings {
123
+ readonly closeOnBackgroundClick?: boolean;
124
+ readonly closeOnBackButton?: boolean;
125
+ readonly animationDuration?: number;
126
+ readonly animation?: G9PopupAnimationType;
127
+ readonly animationEasing?: G9PopupAnimationEasing;
128
+ readonly autoSizeMode?: G9PopupAutoSizeMode;
129
+ readonly overlayMode?: G9PopupOverlayMode;
130
+ /** Close after this many ms (0 = never). */
131
+ readonly autoCloseDuration?: number;
132
+ readonly showHeader?: boolean;
133
+ readonly showFooter?: boolean;
134
+ readonly footerButtonLayout?: G9PopupFooterButtonLayout;
135
+ /** × in the header corner. */
136
+ readonly showCloseButton?: boolean;
137
+ readonly width?: number | null;
138
+ readonly height?: number | null;
139
+ /** `[left, top, right, bottom]` (physical, like MAUI `Thickness`). */
140
+ readonly padding?: readonly [number, number, number, number];
141
+ readonly cornerRadius?: number;
142
+ readonly overlayOpacity?: number;
143
+ readonly overlayColor?: string | null;
144
+ readonly cardBackgroundColor?: string | null;
145
+ readonly borderColor?: string | null;
146
+ readonly titleColor?: string | null;
147
+ readonly messageColor?: string | null;
148
+ readonly iconOverride?: G9IconInput;
149
+ readonly blurIntensity?: G9PopupBlurIntensity;
150
+ }
151
+ /** The library defaults (MAUI `G9PopupSettings.CreateDefault`). */
152
+ export declare function createDefaultPopupSettings(): Required<Omit<G9PopupSettings, 'width' | 'height' | 'overlayColor' | 'cardBackgroundColor' | 'borderColor' | 'titleColor' | 'messageColor' | 'iconOverride' | 'blurIntensity'>> & G9PopupSettings;
153
+ /** Field by field, `settings` wins over `defaults` (MAUI `WithDefaults`). */
154
+ export declare function mergePopupSettings(settings: G9PopupSettings | null | undefined, defaults: G9PopupSettings): G9PopupSettings;
155
+ /**
156
+ * The effective settings of a popup (MAUI `ResolveSettings`): per-call settings over the app defaults; the motion is
157
+ * the per-call setting, else the descriptor's, else the app default (MAUI ignored a configured default animation
158
+ * because every helper passed SlideUp explicitly; here it applies).
159
+ */
160
+ export declare function resolvePopupSettings(descriptor: G9PopupDescriptor, defaults: G9PopupSettings): G9PopupSettings;
161
+ /** Popup body: a message or any content (MAUI `CustomView`). */
162
+ export interface G9PopupDescriptor {
163
+ readonly type: G9PopupType;
164
+ readonly title: string | null;
165
+ readonly message: string | null;
166
+ /** Custom body (built once per show; a factory is called when the card mounts). */
167
+ readonly content: ReactNode | (() => ReactNode) | null;
168
+ readonly buttons: ReadonlyArray<G9PopupButton>;
169
+ readonly settings: G9PopupSettings | null;
170
+ /** Motion of this popup; `null` = the settings' (per call, then app default). */
171
+ readonly animation: G9PopupAnimationType | null;
172
+ }
173
+ /** A preset popup (MAUI `G9PopupDescriptor.ForPreset`). */
174
+ export declare function presetPopup(type: G9PopupType, message: string, title?: string | null, buttons?: ReadonlyArray<G9PopupButton> | null, settings?: G9PopupSettings | null, animation?: G9PopupAnimationType | null): G9PopupDescriptor;
175
+ /** A custom-content popup (MAUI `G9PopupDescriptor.ForCustom`). */
176
+ export declare function customPopup(content: ReactNode | (() => ReactNode), title?: string | null, buttons?: ReadonlyArray<G9PopupButton> | null, settings?: G9PopupSettings | null, animation?: G9PopupAnimationType | null, type?: G9PopupType): G9PopupDescriptor;
177
+ /** Resolved look of one popup (MAUI `G9PopupVisualProfile`). */
178
+ export interface G9PopupVisualProfile {
179
+ readonly iconColor: string;
180
+ readonly cardBackground: string;
181
+ readonly borderColor: string;
182
+ readonly titleColor: string;
183
+ readonly messageColor: string;
184
+ readonly buttonBackground: string;
185
+ readonly buttonTextColor: string;
186
+ readonly overlayColor: string;
187
+ readonly overlayOpacity: number;
188
+ readonly width: number | null;
189
+ readonly height: number | null;
190
+ readonly cornerRadius: number;
191
+ readonly padding: readonly [number, number, number, number];
192
+ readonly icon: G9IconInput;
193
+ readonly animation: G9PopupAnimationType;
194
+ readonly animationDuration: number;
195
+ /** Localizable accessibility name of the type (`'Information'`, …). */
196
+ readonly semanticIconDescription: string;
197
+ }
198
+ /**
199
+ * Resolves a popup's look (MAUI `G9PopupVisualProfile.Create`): each type takes its own semantic accent (never
200
+ * Primary) for icon, title and the filled button, the button text takes the matching `On*` token, the scrim is the
201
+ * `Scrim` token at `overlayOpacity`. Settings override colours, icon, size, radius, padding and motion.
202
+ */
203
+ export declare function createPopupVisualProfile(descriptor: G9PopupDescriptor, settings: G9PopupSettings, glyphs: {
204
+ readonly info: G9IconInput;
205
+ readonly success: G9IconInput;
206
+ readonly warning: G9IconInput;
207
+ readonly error: G9IconInput;
208
+ }, semantic: (type: 'information' | 'success' | 'warning' | 'error') => string): G9PopupVisualProfile;
209
+ /** The scrim opacity of a mode (MAUI `Blur` fallback: a darker scrim by intensity; `none` = no scrim). */
210
+ export declare function popupScrimOpacity(mode: G9PopupOverlayMode, opacity: number, blur: G9PopupBlurIntensity): number;
211
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/popup/types.ts"],"names":[],"mappings":"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"}