@g9tm/lynxcontrols 0.0.0-stage → 1.4.2

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 (561) hide show
  1. package/README.md +29 -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 +68 -0
  6. package/dist/base/control.d.ts.map +1 -0
  7. package/dist/base/control.jsx +36 -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 +88 -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 +96 -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 +73 -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 +112 -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 +164 -0
  171. package/dist/fields/fields.css.map +1 -0
  172. package/dist/fields/index.d.ts +13 -0
  173. package/dist/fields/index.d.ts.map +1 -0
  174. package/dist/fields/index.jsx +12 -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/notch.d.ts +10 -0
  180. package/dist/fields/notch.d.ts.map +1 -0
  181. package/dist/fields/notch.jsx +9 -0
  182. package/dist/fields/notch.jsx.map +1 -0
  183. package/dist/fields/outlined-field.d.ts +152 -0
  184. package/dist/fields/outlined-field.d.ts.map +1 -0
  185. package/dist/fields/outlined-field.jsx +199 -0
  186. package/dist/fields/outlined-field.jsx.map +1 -0
  187. package/dist/fields/pin-entry.d.ts +65 -0
  188. package/dist/fields/pin-entry.d.ts.map +1 -0
  189. package/dist/fields/pin-entry.jsx +294 -0
  190. package/dist/fields/pin-entry.jsx.map +1 -0
  191. package/dist/fields/search-entry.d.ts +35 -0
  192. package/dist/fields/search-entry.d.ts.map +1 -0
  193. package/dist/fields/search-entry.jsx +118 -0
  194. package/dist/fields/search-entry.jsx.map +1 -0
  195. package/dist/fields/slot-layout.d.ts +33 -0
  196. package/dist/fields/slot-layout.d.ts.map +1 -0
  197. package/dist/fields/slot-layout.jsx +33 -0
  198. package/dist/fields/slot-layout.jsx.map +1 -0
  199. package/dist/fields/text-entry.d.ts +62 -0
  200. package/dist/fields/text-entry.d.ts.map +1 -0
  201. package/dist/fields/text-entry.jsx +82 -0
  202. package/dist/fields/text-entry.jsx.map +1 -0
  203. package/dist/fields/use-dictation.d.ts +34 -0
  204. package/dist/fields/use-dictation.d.ts.map +1 -0
  205. package/dist/fields/use-dictation.jsx +80 -0
  206. package/dist/fields/use-dictation.jsx.map +1 -0
  207. package/dist/fields/use-text-input.d.ts +150 -0
  208. package/dist/fields/use-text-input.d.ts.map +1 -0
  209. package/dist/fields/use-text-input.jsx +247 -0
  210. package/dist/fields/use-text-input.jsx.map +1 -0
  211. package/dist/fields/validator.d.ts +14 -0
  212. package/dist/fields/validator.d.ts.map +1 -0
  213. package/dist/fields/validator.jsx +20 -0
  214. package/dist/fields/validator.jsx.map +1 -0
  215. package/dist/host/back.d.ts +42 -0
  216. package/dist/host/back.d.ts.map +1 -0
  217. package/dist/host/back.jsx +47 -0
  218. package/dist/host/back.jsx.map +1 -0
  219. package/dist/host/hooks.d.ts +90 -0
  220. package/dist/host/hooks.d.ts.map +1 -0
  221. package/dist/host/hooks.jsx +166 -0
  222. package/dist/host/hooks.jsx.map +1 -0
  223. package/dist/host/host.css +81 -0
  224. package/dist/host/host.css.map +1 -0
  225. package/dist/host/host.d.ts +70 -0
  226. package/dist/host/host.d.ts.map +1 -0
  227. package/dist/host/host.jsx +229 -0
  228. package/dist/host/host.jsx.map +1 -0
  229. package/dist/host/index.d.ts +9 -0
  230. package/dist/host/index.d.ts.map +1 -0
  231. package/dist/host/index.jsx +8 -0
  232. package/dist/host/keyboard.d.ts +24 -0
  233. package/dist/host/keyboard.d.ts.map +1 -0
  234. package/dist/host/keyboard.jsx +28 -0
  235. package/dist/host/keyboard.jsx.map +1 -0
  236. package/dist/host/layers.d.ts +69 -0
  237. package/dist/host/layers.d.ts.map +1 -0
  238. package/dist/host/layers.jsx +111 -0
  239. package/dist/host/layers.jsx.map +1 -0
  240. package/dist/host/page-loading-overlay.d.ts +17 -0
  241. package/dist/host/page-loading-overlay.d.ts.map +1 -0
  242. package/dist/host/page-loading-overlay.jsx +16 -0
  243. package/dist/host/page-loading-overlay.jsx.map +1 -0
  244. package/dist/host/readiness.d.ts +57 -0
  245. package/dist/host/readiness.d.ts.map +1 -0
  246. package/dist/host/readiness.jsx +138 -0
  247. package/dist/host/readiness.jsx.map +1 -0
  248. package/dist/host/registry.d.ts +106 -0
  249. package/dist/host/registry.d.ts.map +1 -0
  250. package/dist/host/registry.jsx +93 -0
  251. package/dist/host/registry.jsx.map +1 -0
  252. package/dist/icon/icon.css +39 -0
  253. package/dist/icon/icon.css.map +1 -0
  254. package/dist/icon/icon.d.ts +57 -0
  255. package/dist/icon/icon.d.ts.map +1 -0
  256. package/dist/icon/icon.jsx +115 -0
  257. package/dist/icon/icon.jsx.map +1 -0
  258. package/dist/icon/index.d.ts +4 -0
  259. package/dist/icon/index.d.ts.map +1 -0
  260. package/dist/icon/index.jsx +3 -0
  261. package/dist/icon/slot.d.ts +45 -0
  262. package/dist/icon/slot.d.ts.map +1 -0
  263. package/dist/icon/slot.jsx +61 -0
  264. package/dist/icon/slot.jsx.map +1 -0
  265. package/dist/icon/swatch.d.ts +29 -0
  266. package/dist/icon/swatch.d.ts.map +1 -0
  267. package/dist/icon/swatch.jsx +25 -0
  268. package/dist/icon/swatch.jsx.map +1 -0
  269. package/dist/index.d.ts +23 -0
  270. package/dist/index.d.ts.map +1 -0
  271. package/dist/index.jsx +1 -0
  272. package/dist/pickers/combo-box.d.ts +42 -0
  273. package/dist/pickers/combo-box.d.ts.map +1 -0
  274. package/dist/pickers/combo-box.jsx +129 -0
  275. package/dist/pickers/combo-box.jsx.map +1 -0
  276. package/dist/pickers/date-time-picker.d.ts +63 -0
  277. package/dist/pickers/date-time-picker.d.ts.map +1 -0
  278. package/dist/pickers/date-time-picker.jsx +141 -0
  279. package/dist/pickers/date-time-picker.jsx.map +1 -0
  280. package/dist/pickers/date-time.d.ts +82 -0
  281. package/dist/pickers/date-time.d.ts.map +1 -0
  282. package/dist/pickers/date-time.jsx +130 -0
  283. package/dist/pickers/date-time.jsx.map +1 -0
  284. package/dist/pickers/index.d.ts +10 -0
  285. package/dist/pickers/index.d.ts.map +1 -0
  286. package/dist/pickers/index.jsx +9 -0
  287. package/dist/pickers/picker-sheet.d.ts +21 -0
  288. package/dist/pickers/picker-sheet.d.ts.map +1 -0
  289. package/dist/pickers/picker-sheet.jsx +61 -0
  290. package/dist/pickers/picker-sheet.jsx.map +1 -0
  291. package/dist/pickers/picker.d.ts +32 -0
  292. package/dist/pickers/picker.d.ts.map +1 -0
  293. package/dist/pickers/picker.jsx +72 -0
  294. package/dist/pickers/picker.jsx.map +1 -0
  295. package/dist/pickers/pickers.css +219 -0
  296. package/dist/pickers/pickers.css.map +1 -0
  297. package/dist/pickers/timespan-picker.d.ts +36 -0
  298. package/dist/pickers/timespan-picker.d.ts.map +1 -0
  299. package/dist/pickers/timespan-picker.jsx +99 -0
  300. package/dist/pickers/timespan-picker.jsx.map +1 -0
  301. package/dist/pickers/timespan.d.ts +38 -0
  302. package/dist/pickers/timespan.d.ts.map +1 -0
  303. package/dist/pickers/timespan.jsx +49 -0
  304. package/dist/pickers/timespan.jsx.map +1 -0
  305. package/dist/pickers/trigger.d.ts +34 -0
  306. package/dist/pickers/trigger.d.ts.map +1 -0
  307. package/dist/pickers/trigger.jsx +77 -0
  308. package/dist/pickers/trigger.jsx.map +1 -0
  309. package/dist/pickers/wheel-column.d.ts +32 -0
  310. package/dist/pickers/wheel-column.d.ts.map +1 -0
  311. package/dist/pickers/wheel-column.jsx +99 -0
  312. package/dist/pickers/wheel-column.jsx.map +1 -0
  313. package/dist/plus-button/index.d.ts +3 -0
  314. package/dist/plus-button/index.d.ts.map +1 -0
  315. package/dist/plus-button/index.jsx +2 -0
  316. package/dist/plus-button/model.d.ts +65 -0
  317. package/dist/plus-button/model.d.ts.map +1 -0
  318. package/dist/plus-button/model.jsx +86 -0
  319. package/dist/plus-button/model.jsx.map +1 -0
  320. package/dist/plus-button/plus-button.css +67 -0
  321. package/dist/plus-button/plus-button.css.map +1 -0
  322. package/dist/plus-button/plus-button.d.ts +38 -0
  323. package/dist/plus-button/plus-button.d.ts.map +1 -0
  324. package/dist/plus-button/plus-button.jsx +155 -0
  325. package/dist/plus-button/plus-button.jsx.map +1 -0
  326. package/dist/popup/frame.d.ts +101 -0
  327. package/dist/popup/frame.d.ts.map +1 -0
  328. package/dist/popup/frame.jsx +252 -0
  329. package/dist/popup/frame.jsx.map +1 -0
  330. package/dist/popup/index.d.ts +8 -0
  331. package/dist/popup/index.d.ts.map +1 -0
  332. package/dist/popup/index.jsx +7 -0
  333. package/dist/popup/input-form.d.ts +35 -0
  334. package/dist/popup/input-form.d.ts.map +1 -0
  335. package/dist/popup/input-form.jsx +160 -0
  336. package/dist/popup/input-form.jsx.map +1 -0
  337. package/dist/popup/input.d.ts +175 -0
  338. package/dist/popup/input.d.ts.map +1 -0
  339. package/dist/popup/input.jsx +176 -0
  340. package/dist/popup/input.jsx.map +1 -0
  341. package/dist/popup/popup-view.d.ts +25 -0
  342. package/dist/popup/popup-view.d.ts.map +1 -0
  343. package/dist/popup/popup-view.jsx +67 -0
  344. package/dist/popup/popup-view.jsx.map +1 -0
  345. package/dist/popup/popup.css +203 -0
  346. package/dist/popup/popup.css.map +1 -0
  347. package/dist/popup/queue.d.ts +90 -0
  348. package/dist/popup/queue.d.ts.map +1 -0
  349. package/dist/popup/queue.jsx +309 -0
  350. package/dist/popup/queue.jsx.map +1 -0
  351. package/dist/popup/service.d.ts +60 -0
  352. package/dist/popup/service.d.ts.map +1 -0
  353. package/dist/popup/service.jsx +350 -0
  354. package/dist/popup/service.jsx.map +1 -0
  355. package/dist/popup/types.d.ts +222 -0
  356. package/dist/popup/types.d.ts.map +1 -0
  357. package/dist/popup/types.jsx +218 -0
  358. package/dist/popup/types.jsx.map +1 -0
  359. package/dist/provider/contexts.d.ts +41 -0
  360. package/dist/provider/contexts.d.ts.map +1 -0
  361. package/dist/provider/contexts.jsx +11 -0
  362. package/dist/provider/contexts.jsx.map +1 -0
  363. package/dist/provider/global-events.d.ts +8 -0
  364. package/dist/provider/global-events.d.ts.map +1 -0
  365. package/dist/provider/global-events.jsx +17 -0
  366. package/dist/provider/global-events.jsx.map +1 -0
  367. package/dist/provider/hooks.d.ts +49 -0
  368. package/dist/provider/hooks.d.ts.map +1 -0
  369. package/dist/provider/hooks.jsx +72 -0
  370. package/dist/provider/hooks.jsx.map +1 -0
  371. package/dist/provider/index.d.ts +5 -0
  372. package/dist/provider/index.d.ts.map +1 -0
  373. package/dist/provider/index.jsx +3 -0
  374. package/dist/provider/provider.css +18 -0
  375. package/dist/provider/provider.css.map +1 -0
  376. package/dist/provider/provider.d.ts +51 -0
  377. package/dist/provider/provider.d.ts.map +1 -0
  378. package/dist/provider/provider.jsx +290 -0
  379. package/dist/provider/provider.jsx.map +1 -0
  380. package/dist/provider/settings.d.ts +99 -0
  381. package/dist/provider/settings.d.ts.map +1 -0
  382. package/dist/provider/settings.jsx +45 -0
  383. package/dist/provider/settings.jsx.map +1 -0
  384. package/dist/provider/theme-css.d.ts +12 -0
  385. package/dist/provider/theme-css.d.ts.map +1 -0
  386. package/dist/provider/theme-css.jsx +19 -0
  387. package/dist/provider/theme-css.jsx.map +1 -0
  388. package/dist/provider/theme-root.d.ts +10 -0
  389. package/dist/provider/theme-root.d.ts.map +1 -0
  390. package/dist/provider/theme-root.jsx +24 -0
  391. package/dist/provider/theme-root.jsx.map +1 -0
  392. package/dist/provider/theme.css +473 -0
  393. package/dist/provider/theme.css.map +1 -0
  394. package/dist/range-slider/index.d.ts +3 -0
  395. package/dist/range-slider/index.d.ts.map +1 -0
  396. package/dist/range-slider/index.jsx +2 -0
  397. package/dist/range-slider/math.d.ts +23 -0
  398. package/dist/range-slider/math.d.ts.map +1 -0
  399. package/dist/range-slider/math.jsx +71 -0
  400. package/dist/range-slider/math.jsx.map +1 -0
  401. package/dist/range-slider/range-slider.css +90 -0
  402. package/dist/range-slider/range-slider.css.map +1 -0
  403. package/dist/range-slider/range-slider.d.ts +52 -0
  404. package/dist/range-slider/range-slider.d.ts.map +1 -0
  405. package/dist/range-slider/range-slider.jsx +159 -0
  406. package/dist/range-slider/range-slider.jsx.map +1 -0
  407. package/dist/selection/index.d.ts +5 -0
  408. package/dist/selection/index.d.ts.map +1 -0
  409. package/dist/selection/index.jsx +3 -0
  410. package/dist/selection/model.d.ts +53 -0
  411. package/dist/selection/model.d.ts.map +1 -0
  412. package/dist/selection/model.jsx +69 -0
  413. package/dist/selection/model.jsx.map +1 -0
  414. package/dist/selection/selection-sheet.d.ts +80 -0
  415. package/dist/selection/selection-sheet.d.ts.map +1 -0
  416. package/dist/selection/selection-sheet.jsx +366 -0
  417. package/dist/selection/selection-sheet.jsx.map +1 -0
  418. package/dist/selection/selection.css +76 -0
  419. package/dist/selection/selection.css.map +1 -0
  420. package/dist/selection/use-selection-model.d.ts +9 -0
  421. package/dist/selection/use-selection-model.d.ts.map +1 -0
  422. package/dist/selection/use-selection-model.jsx +22 -0
  423. package/dist/selection/use-selection-model.jsx.map +1 -0
  424. package/dist/sheet/frame.d.ts +47 -0
  425. package/dist/sheet/frame.d.ts.map +1 -0
  426. package/dist/sheet/frame.jsx +270 -0
  427. package/dist/sheet/frame.jsx.map +1 -0
  428. package/dist/sheet/gesture.d.ts +51 -0
  429. package/dist/sheet/gesture.d.ts.map +1 -0
  430. package/dist/sheet/gesture.jsx +107 -0
  431. package/dist/sheet/gesture.jsx.map +1 -0
  432. package/dist/sheet/handoff.d.ts +32 -0
  433. package/dist/sheet/handoff.d.ts.map +1 -0
  434. package/dist/sheet/handoff.jsx +33 -0
  435. package/dist/sheet/handoff.jsx.map +1 -0
  436. package/dist/sheet/header.d.ts +46 -0
  437. package/dist/sheet/header.d.ts.map +1 -0
  438. package/dist/sheet/header.jsx +158 -0
  439. package/dist/sheet/header.jsx.map +1 -0
  440. package/dist/sheet/height-memo.d.ts +47 -0
  441. package/dist/sheet/height-memo.d.ts.map +1 -0
  442. package/dist/sheet/height-memo.jsx +100 -0
  443. package/dist/sheet/height-memo.jsx.map +1 -0
  444. package/dist/sheet/index.d.ts +12 -0
  445. package/dist/sheet/index.d.ts.map +1 -0
  446. package/dist/sheet/index.jsx +11 -0
  447. package/dist/sheet/loadable.d.ts +35 -0
  448. package/dist/sheet/loadable.d.ts.map +1 -0
  449. package/dist/sheet/loadable.jsx +65 -0
  450. package/dist/sheet/loadable.jsx.map +1 -0
  451. package/dist/sheet/motion.d.ts +59 -0
  452. package/dist/sheet/motion.d.ts.map +1 -0
  453. package/dist/sheet/motion.jsx +59 -0
  454. package/dist/sheet/motion.jsx.map +1 -0
  455. package/dist/sheet/options.d.ts +252 -0
  456. package/dist/sheet/options.d.ts.map +1 -0
  457. package/dist/sheet/options.jsx +92 -0
  458. package/dist/sheet/options.jsx.map +1 -0
  459. package/dist/sheet/processing.d.ts +22 -0
  460. package/dist/sheet/processing.d.ts.map +1 -0
  461. package/dist/sheet/processing.jsx +66 -0
  462. package/dist/sheet/processing.jsx.map +1 -0
  463. package/dist/sheet/service.d.ts +55 -0
  464. package/dist/sheet/service.d.ts.map +1 -0
  465. package/dist/sheet/service.jsx +143 -0
  466. package/dist/sheet/service.jsx.map +1 -0
  467. package/dist/sheet/sheet.css +246 -0
  468. package/dist/sheet/sheet.css.map +1 -0
  469. package/dist/sheet/sheet.d.ts +19 -0
  470. package/dist/sheet/sheet.d.ts.map +1 -0
  471. package/dist/sheet/sheet.jsx +40 -0
  472. package/dist/sheet/sheet.jsx.map +1 -0
  473. package/dist/sheet/sizing.d.ts +87 -0
  474. package/dist/sheet/sizing.d.ts.map +1 -0
  475. package/dist/sheet/sizing.jsx +159 -0
  476. package/dist/sheet/sizing.jsx.map +1 -0
  477. package/dist/sheet/stack.d.ts +161 -0
  478. package/dist/sheet/stack.d.ts.map +1 -0
  479. package/dist/sheet/stack.jsx +378 -0
  480. package/dist/sheet/stack.jsx.map +1 -0
  481. package/dist/swipe/index.d.ts +3 -0
  482. package/dist/swipe/index.d.ts.map +1 -0
  483. package/dist/swipe/index.jsx +2 -0
  484. package/dist/swipe/model.d.ts +72 -0
  485. package/dist/swipe/model.d.ts.map +1 -0
  486. package/dist/swipe/model.jsx +66 -0
  487. package/dist/swipe/model.jsx.map +1 -0
  488. package/dist/swipe/swipe-view.d.ts +40 -0
  489. package/dist/swipe/swipe-view.d.ts.map +1 -0
  490. package/dist/swipe/swipe-view.jsx +163 -0
  491. package/dist/swipe/swipe-view.jsx.map +1 -0
  492. package/dist/swipe/swipe.css +34 -0
  493. package/dist/swipe/swipe.css.map +1 -0
  494. package/dist/tab-bar/index.d.ts +4 -0
  495. package/dist/tab-bar/index.d.ts.map +1 -0
  496. package/dist/tab-bar/index.jsx +3 -0
  497. package/dist/tab-bar/metrics.d.ts +230 -0
  498. package/dist/tab-bar/metrics.d.ts.map +1 -0
  499. package/dist/tab-bar/metrics.jsx +221 -0
  500. package/dist/tab-bar/metrics.jsx.map +1 -0
  501. package/dist/tab-bar/model.d.ts +170 -0
  502. package/dist/tab-bar/model.d.ts.map +1 -0
  503. package/dist/tab-bar/model.jsx +349 -0
  504. package/dist/tab-bar/model.jsx.map +1 -0
  505. package/dist/tab-bar/tab-bar.css +173 -0
  506. package/dist/tab-bar/tab-bar.css.map +1 -0
  507. package/dist/tab-bar/tab-bar.d.ts +61 -0
  508. package/dist/tab-bar/tab-bar.d.ts.map +1 -0
  509. package/dist/tab-bar/tab-bar.jsx +346 -0
  510. package/dist/tab-bar/tab-bar.jsx.map +1 -0
  511. package/dist/tabs/index.d.ts +3 -0
  512. package/dist/tabs/index.d.ts.map +1 -0
  513. package/dist/tabs/index.jsx +2 -0
  514. package/dist/tabs/model.d.ts +83 -0
  515. package/dist/tabs/model.d.ts.map +1 -0
  516. package/dist/tabs/model.jsx +113 -0
  517. package/dist/tabs/model.jsx.map +1 -0
  518. package/dist/tabs/tab-view.d.ts +47 -0
  519. package/dist/tabs/tab-view.d.ts.map +1 -0
  520. package/dist/tabs/tab-view.jsx +227 -0
  521. package/dist/tabs/tab-view.jsx.map +1 -0
  522. package/dist/tabs/tabs.css +182 -0
  523. package/dist/tabs/tabs.css.map +1 -0
  524. package/dist/toast/index.d.ts +3 -0
  525. package/dist/toast/index.d.ts.map +1 -0
  526. package/dist/toast/index.jsx +2 -0
  527. package/dist/toast/service.d.ts +48 -0
  528. package/dist/toast/service.d.ts.map +1 -0
  529. package/dist/toast/service.jsx +238 -0
  530. package/dist/toast/service.jsx.map +1 -0
  531. package/dist/toast/store.d.ts +176 -0
  532. package/dist/toast/store.d.ts.map +1 -0
  533. package/dist/toast/store.jsx +355 -0
  534. package/dist/toast/store.jsx.map +1 -0
  535. package/dist/toast/toast.css +159 -0
  536. package/dist/toast/toast.css.map +1 -0
  537. package/dist/toggle/checkbox-math.d.ts +52 -0
  538. package/dist/toggle/checkbox-math.d.ts.map +1 -0
  539. package/dist/toggle/checkbox-math.jsx +111 -0
  540. package/dist/toggle/checkbox-math.jsx.map +1 -0
  541. package/dist/toggle/checkbox.d.ts +56 -0
  542. package/dist/toggle/checkbox.d.ts.map +1 -0
  543. package/dist/toggle/checkbox.jsx +152 -0
  544. package/dist/toggle/checkbox.jsx.map +1 -0
  545. package/dist/toggle/chip-group.d.ts +50 -0
  546. package/dist/toggle/chip-group.d.ts.map +1 -0
  547. package/dist/toggle/chip-group.jsx +107 -0
  548. package/dist/toggle/chip-group.jsx.map +1 -0
  549. package/dist/toggle/index.d.ts +5 -0
  550. package/dist/toggle/index.d.ts.map +1 -0
  551. package/dist/toggle/index.jsx +4 -0
  552. package/dist/toggle/switch.d.ts +52 -0
  553. package/dist/toggle/switch.d.ts.map +1 -0
  554. package/dist/toggle/switch.jsx +192 -0
  555. package/dist/toggle/switch.jsx.map +1 -0
  556. package/dist/toggle/toggle.css +188 -0
  557. package/dist/toggle/toggle.css.map +1 -0
  558. package/package.json +155 -4
  559. package/rspeedy/index.d.ts +21 -0
  560. package/rspeedy/index.mjs +75 -0
  561. package/rspeedy/index.test.mjs +52 -0
@@ -0,0 +1,3 @@
1
+ export { G9DeferredContent, type G9DeferredContentHandle, type G9DeferredContentProps, g9DeferredCoverFadeMs, g9DeferredFadeRevealDelayMs, g9DeferredLoadDelayMs, g9DeferredReadinessTimeoutMs, g9DeferredRevealSettleFrames, useG9DeferredReadiness, } from './deferred-content.js';
2
+ export { createReadinessSignal, type G9ReadinessSignal } from './readiness-signal.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deferred/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { G9DeferredContent, g9DeferredCoverFadeMs, g9DeferredFadeRevealDelayMs, g9DeferredLoadDelayMs, g9DeferredReadinessTimeoutMs, g9DeferredRevealSettleFrames, useG9DeferredReadiness } from "./deferred-content.jsx";
2
+ export { createReadinessSignal } from "./readiness-signal.jsx";
@@ -0,0 +1,16 @@
1
+ /**
2
+ * A latched "the visual is settled" flag with a one-shot notification (MAUI `DeferredContentReadinessSignal`, the
3
+ * backing of `IDeferredContentReadiness`). Subscribing after it fired calls the listener at once, so a late
4
+ * subscriber can never miss it.
5
+ */
6
+ export interface G9ReadinessSignal {
7
+ /** `true` once {@link G9ReadinessSignal.markReady} ran. Never goes back. */
8
+ readonly isReady: boolean;
9
+ /** Calls `listener` once when ready (at once if already ready). Returns an unsubscribe function. */
10
+ subscribe(listener: () => void): () => void;
11
+ /** Flips the flag and notifies; idempotent. */
12
+ markReady(): void;
13
+ }
14
+ /** Creates a {@link G9ReadinessSignal}. */
15
+ export declare function createReadinessSignal(): G9ReadinessSignal;
16
+ //# sourceMappingURL=readiness-signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness-signal.d.ts","sourceRoot":"","sources":["../../src/deferred/readiness-signal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oGAAoG;IACpG,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,+CAA+C;IAC/C,SAAS,IAAI,IAAI,CAAC;CACnB;AAED,2CAA2C;AAC3C,wBAAgB,qBAAqB,IAAI,iBAAiB,CAyBzD"}
@@ -0,0 +1,29 @@
1
+ function createReadinessSignal() {
2
+ let ready = false;
3
+ let listeners = new Set();
4
+ return {
5
+ get isReady () {
6
+ return ready;
7
+ },
8
+ subscribe (listener) {
9
+ if (ready) {
10
+ listener();
11
+ return ()=>{};
12
+ }
13
+ listeners.add(listener);
14
+ return ()=>{
15
+ listeners.delete(listener);
16
+ };
17
+ },
18
+ markReady () {
19
+ if (ready) return;
20
+ ready = true;
21
+ const pending = listeners;
22
+ listeners = new Set();
23
+ for (const listener of Array.from(pending))listener();
24
+ }
25
+ };
26
+ }
27
+ export { createReadinessSignal };
28
+
29
+ //# sourceMappingURL=readiness-signal.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferred/readiness-signal.jsx","sources":["../../src/deferred/readiness-signal.ts"],"sourcesContent":["/**\n * A latched \"the visual is settled\" flag with a one-shot notification (MAUI `DeferredContentReadinessSignal`, the\n * backing of `IDeferredContentReadiness`). Subscribing after it fired calls the listener at once, so a late\n * subscriber can never miss it.\n */\nexport interface G9ReadinessSignal {\n /** `true` once {@link G9ReadinessSignal.markReady} ran. Never goes back. */\n readonly isReady: boolean;\n /** Calls `listener` once when ready (at once if already ready). Returns an unsubscribe function. */\n subscribe(listener: () => void): () => void;\n /** Flips the flag and notifies; idempotent. */\n markReady(): void;\n}\n\n/** Creates a {@link G9ReadinessSignal}. */\nexport function createReadinessSignal(): G9ReadinessSignal {\n let ready = false;\n let listeners = new Set<() => void>();\n return {\n get isReady() {\n return ready;\n },\n subscribe(listener) {\n if (ready) {\n listener();\n return () => {};\n }\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n markReady() {\n if (ready) return;\n ready = true;\n const pending = listeners;\n listeners = new Set();\n for (const listener of Array.from(pending)) listener();\n },\n };\n}\n"],"names":["createReadinessSignal","ready","listeners","Set","listener","pending","Array"],"mappings":"AAeO,SAASA;IACd,IAAIC,QAAQ;IACZ,IAAIC,YAAY,IAAIC;IACpB,OAAO;QACL,IAAI;YACF,OAAOF;QACT;QACA,WAAUG,QAAQ;YAChB,IAAIH,OAAO;gBACTG;gBACA,OAAO,KAAO;YAChB;YACAF,UAAU,GAAG,CAACE;YACd,OAAO;gBACLF,UAAU,MAAM,CAACE;YACnB;QACF;QACA;YACE,IAAIH,OAAO;YACXA,QAAQ;YACR,MAAMI,UAAUH;YAChBA,YAAY,IAAIC;YAChB,KAAK,MAAMC,YAAYE,MAAM,IAAI,CAACD,SAAUD;QAC9C;IACF;AACF"}
@@ -0,0 +1,21 @@
1
+ import './display.css';
2
+ import type { ReactNode } from '@lynx-js/react';
3
+ /** Props of {@link G9ActivityIndicator} (MAUI `G9ActivityIndicator` = MAUI `ActivityIndicator`). */
4
+ export interface G9ActivityIndicatorProps {
5
+ /** Spinning and visible (MAUI `IsRunning`). Default false: the box keeps its size but shows nothing. */
6
+ readonly running?: boolean;
7
+ /** Ring colour (MAUI `Color`). Default `var(--g9-primary)`. */
8
+ readonly color?: string;
9
+ /** Box size in logical pixels. Default 20. */
10
+ readonly size?: number;
11
+ /** Ring thickness. Default `max(2, size / 10)`. */
12
+ readonly thickness?: number;
13
+ readonly className?: string;
14
+ readonly accessibilityLabel?: string;
15
+ }
16
+ /**
17
+ * A spinner: a ring with a transparent quarter rotating once per 800 ms (CSS keyframes, no JavaScript per frame).
18
+ * Not running → an empty box of the same size (so layouts do not jump).
19
+ */
20
+ export declare function G9ActivityIndicator(props: G9ActivityIndicatorProps): ReactNode;
21
+ //# sourceMappingURL=activity-indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-indicator.d.ts","sourceRoot":"","sources":["../../src/display/activity-indicator.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,oGAAoG;AACpG,MAAM,WAAW,wBAAwB;IACvC,wGAAwG;IACxG,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,SAAS,CAqB9E"}
@@ -0,0 +1,22 @@
1
+ import "./display.css";
2
+ function G9ActivityIndicator(props) {
3
+ var _props_size, _props_thickness, _props_color;
4
+ const size = null != (_props_size = props.size) ? _props_size : 20;
5
+ const thickness = null != (_props_thickness = props.thickness) ? _props_thickness : Math.max(2, size / 10);
6
+ const running = true === props.running;
7
+ const color = null != (_props_color = props.color) ? _props_color : 'var(--g9-primary)';
8
+ return <view className={`g9-activity${running ? ' g9-activity--running' : ''}${props.className ? ` ${props.className}` : ''}`} style={{
9
+ width: `${size}px`,
10
+ height: `${size}px`,
11
+ borderRadius: `${size / 2}px`,
12
+ borderWidth: `${thickness}px`,
13
+ borderColor: running ? color : 'transparent',
14
+ borderTopColor: 'transparent'
15
+ }} {...props.accessibilityLabel ? {
16
+ 'accessibility-element': true,
17
+ 'accessibility-label': props.accessibilityLabel
18
+ } : {}}/>;
19
+ }
20
+ export { G9ActivityIndicator };
21
+
22
+ //# sourceMappingURL=activity-indicator.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display/activity-indicator.jsx","sources":["../../src/display/activity-indicator.tsx"],"sourcesContent":["import './display.css';\nimport type { ReactNode } from '@lynx-js/react';\n\n/** Props of {@link G9ActivityIndicator} (MAUI `G9ActivityIndicator` = MAUI `ActivityIndicator`). */\nexport interface G9ActivityIndicatorProps {\n /** Spinning and visible (MAUI `IsRunning`). Default false: the box keeps its size but shows nothing. */\n readonly running?: boolean;\n /** Ring colour (MAUI `Color`). Default `var(--g9-primary)`. */\n readonly color?: string;\n /** Box size in logical pixels. Default 20. */\n readonly size?: number;\n /** Ring thickness. Default `max(2, size / 10)`. */\n readonly thickness?: number;\n readonly className?: string;\n readonly accessibilityLabel?: string;\n}\n\n/**\n * A spinner: a ring with a transparent quarter rotating once per 800 ms (CSS keyframes, no JavaScript per frame).\n * Not running → an empty box of the same size (so layouts do not jump).\n */\nexport function G9ActivityIndicator(props: G9ActivityIndicatorProps): ReactNode {\n const size = props.size ?? 20;\n const thickness = props.thickness ?? Math.max(2, size / 10);\n const running = props.running === true;\n const color = props.color ?? 'var(--g9-primary)';\n return (\n <view\n className={`g9-activity${running ? ' g9-activity--running' : ''}${props.className ? ` ${props.className}` : ''}`}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: `${size / 2}px`,\n borderWidth: `${thickness}px`,\n borderColor: running ? color : 'transparent',\n borderTopColor: 'transparent',\n }}\n {...(props.accessibilityLabel\n ? { 'accessibility-element': true, 'accessibility-label': props.accessibilityLabel }\n : {})}\n />\n );\n}\n"],"names":["G9ActivityIndicator","props","_props_size","_props_thickness","_props_color","size","thickness","Math","running","color","view"],"mappings":";AAqBO,SAASA,oBAAoBC,KAA+B;QACpDC,aACKC,kBAEJC;IAHd,MAAMC,OAAO,QAAAH,CAAAA,cAAAA,MAAM,IAAI,AAAD,IAATA,cAAc;IAC3B,MAAMI,YAAY,QAAAH,CAAAA,mBAAAA,MAAM,SAAS,AAAD,IAAdA,mBAAmBI,KAAK,GAAG,CAAC,GAAGF,OAAO;IACxD,MAAMG,UAAUP,AAAkB,SAAlBA,MAAM,OAAO;IAC7B,MAAMQ,QAAQ,QAAAL,CAAAA,eAAAA,MAAM,KAAK,AAAD,IAAVA,eAAe;IAC7B,QACGM,KACC,WAAW,CAAC,WAAW,EAAEF,UAAU,0BAA0B,KAAKP,MAAM,SAAS,GAAG,CAAC,CAAC,EAAEA,MAAM,SAAS,EAAE,GAAG,IAAI,EAChH,OAAO;QACL,OAAO,GAAGI,KAAK,EAAE,CAAC;QAClB,QAAQ,GAAGA,KAAK,EAAE,CAAC;QACnB,cAAc,GAAGA,OAAO,EAAE,EAAE,CAAC;QAC7B,aAAa,GAAGC,UAAU,EAAE,CAAC;QAC7B,aAAaE,UAAUC,QAAQ;QAC/B,gBAAgB;IAClB,IACC,GAAIR,MAAM,kBAAkB,GACzB;QAAE,yBAAyB;QAAM,uBAAuBA,MAAM,kBAAkB;IAAC,IACjF,CAAC,CAAC;AAGZ"}
@@ -0,0 +1,64 @@
1
+ import './display.css';
2
+ import { type G9Culture, type G9LocalDateTime, type G9Strings } from '@g9tm/lynxcontrols-foundation';
3
+ import type { ReactNode } from '@lynx-js/react';
4
+ import { type G9ControlBaseProps } from '../base/control.js';
5
+ /**
6
+ * What the label shows (MAUI `G9CultureDateTimeDisplayMode`). `relativeDay` (MAUI 1.4.0) is a due-date style: «امروز،
7
+ * 18:00» / "Today, 18:00", and the `tomorrow` / `yesterday` words, when the value falls on one of those three days;
8
+ * otherwise exactly `dateTime` (`date` for a midnight value, which almost always means "a date with no time").
9
+ */
10
+ export declare const G9CultureDateTimeDisplayMode: {
11
+ readonly DateTime: "dateTime";
12
+ readonly Date: "date";
13
+ readonly Time: "time";
14
+ readonly Relative: "relative";
15
+ readonly RelativeDay: "relativeDay";
16
+ };
17
+ export type G9CultureDateTimeDisplayMode = (typeof G9CultureDateTimeDisplayMode)[keyof typeof G9CultureDateTimeDisplayMode];
18
+ /** Inputs of {@link formatCultureDateTime}. */
19
+ export interface G9CultureDateTimeFormatInput {
20
+ readonly value: G9LocalDateTime;
21
+ readonly mode: G9CultureDateTimeDisplayMode;
22
+ readonly culture: G9Culture;
23
+ readonly strings: G9Strings;
24
+ /** Now (epoch ms), for the relative mode. */
25
+ readonly nowMs: number;
26
+ /** UTC offset of `value`'s wall clock, for the relative modes. */
27
+ readonly utcOffsetMinutes: number;
28
+ /**
29
+ * The wall-clock "now" `relativeDay` measures today against (MAUI `G9CultureDateTimeLabel.RelativeDayNow()`).
30
+ * Default: `nowMs` at `utcOffsetMinutes`, i.e. today in the value's own zone.
31
+ */
32
+ readonly relativeDayNow?: G9LocalDateTime;
33
+ }
34
+ /**
35
+ * MAUI `G9CultureDateTimeLabel.Format`: Jalali for `fa` cultures (Gregorian outside the Persian range), else
36
+ * Gregorian; `yyyy/MM/dd`, `HH:mm`, `date - time`, or `ago - HH:mm`; Latin digits (as the MAUI code). Absolute text in
37
+ * an RTL culture is wrapped in LRE…PDF so it reads left to right. `relativeDay` writes the day word («امروز، 18:00»,
38
+ * "Today, 18:00", the word alone at midnight) in the culture's own direction, never embedded, and falls back to the
39
+ * absolute date (with its time only when it has one) outside today, tomorrow and yesterday.
40
+ */
41
+ export declare function formatCultureDateTime(input: G9CultureDateTimeFormatInput): string;
42
+ /** Props of {@link G9CultureDateTimeLabel}. */
43
+ export interface G9CultureDateTimeLabelProps extends G9ControlBaseProps {
44
+ /** The wall-clock value; `null` shows `emptyText`. */
45
+ readonly value?: G9LocalDateTime | null;
46
+ /** Default `'dateTime'`. */
47
+ readonly displayMode?: G9CultureDateTimeDisplayMode;
48
+ /** Default `''`. */
49
+ readonly emptyText?: string | null;
50
+ /** UTC offset of `value` (relative modes). Default 0. */
51
+ readonly utcOffsetMinutes?: number;
52
+ /**
53
+ * The clock `relativeDay` measures "today" against (MAUI static `G9CultureDateTimeLabel.RelativeDayNow`, here per
54
+ * label). Default: the provider's clock at `utcOffsetMinutes`. Point it at a fixed wall clock (a server zone) so a
55
+ * value stamped "today" there never reads as "yesterday" on a device in another zone.
56
+ */
57
+ readonly relativeDayNow?: () => G9LocalDateTime;
58
+ }
59
+ /**
60
+ * A culture-aware date/time text (MAUI `G9CultureDateTimeLabel`); re-renders on culture changes. The relative texts
61
+ * (`relative`, `relativeDay`) do not refresh by themselves (as MAUI); re-render to update them.
62
+ */
63
+ export declare function G9CultureDateTimeLabel(props: G9CultureDateTimeLabelProps): ReactNode;
64
+ //# sourceMappingURL=culture-date-time-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"culture-date-time-label.d.ts","sourceRoot":"","sources":["../../src/display/culture-date-time-label.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,eAAe,EAEpB,KAAK,SAAS,EAMf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,KAAK,kBAAkB,EAAgB,MAAM,iBAAiB,CAAC;AAGxE;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;;;CAM/B,CAAC;AACX,MAAM,MAAM,4BAA4B,GACtC,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,OAAO,4BAA4B,CAAC,CAAC;AAEnF,+CAA+C;AAC/C,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,eAAe,CAAC;CAC3C;AAWD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,CAyBjF;AAED,+CAA+C;AAC/C,MAAM,WAAW,2BAA4B,SAAQ,kBAAkB;IACrE,sDAAsD;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,4BAA4B;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC;IACpD,oBAAoB;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,yDAAyD;IACzD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,eAAe,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,CAwBpF"}
@@ -0,0 +1,73 @@
1
+ import "./display.css";
2
+ import { G9StringKey, formatAgo, formatLocalDateTime, isPersianLanguage, isSupportedByPersianCalendar, localDateTimeFromEpochMs, localDateTimeToEpochMs, toEpochDays } from "@g9tm/lynxcontrols-foundation";
3
+ import { useG9Control } from "../base/control.jsx";
4
+ import { useG9Core, useG9Culture, useG9Strings } from "../provider/hooks.jsx";
5
+ const G9CultureDateTimeDisplayMode = {
6
+ DateTime: 'dateTime',
7
+ Date: 'date',
8
+ Time: 'time',
9
+ Relative: 'relative',
10
+ RelativeDay: 'relativeDay'
11
+ };
12
+ const dayWords = Object.freeze({
13
+ 0: G9StringKey.Today,
14
+ 1: G9StringKey.Tomorrow,
15
+ '-1': G9StringKey.Yesterday
16
+ });
17
+ const isMidnight = (value)=>0 === value.hour && 0 === value.minute && 0 === value.second && 0 === value.millisecond;
18
+ function formatCultureDateTime(input) {
19
+ const { value, culture } = input;
20
+ const time = formatLocalDateTime(value, 'HH:mm', culture, {
21
+ calendar: 'gregorian',
22
+ numberingSystem: 'latin'
23
+ });
24
+ let mode = input.mode;
25
+ if ('relativeDay' === mode) {
26
+ var _input_relativeDayNow;
27
+ const now = null != (_input_relativeDayNow = input.relativeDayNow) ? _input_relativeDayNow : localDateTimeFromEpochMs(input.nowMs, input.utcOffsetMinutes);
28
+ const word = dayWords[String(toEpochDays(value) - toEpochDays(now))];
29
+ if (void 0 !== word) {
30
+ const text1 = input.strings.get(word);
31
+ return isMidnight(value) ? text1 : `${text1}${isPersianLanguage(culture) ? '، ' : ', '}${time}`;
32
+ }
33
+ mode = isMidnight(value) ? 'date' : 'dateTime';
34
+ }
35
+ if ('relative' === mode) {
36
+ const ago = formatAgo(localDateTimeToEpochMs(value, input.utcOffsetMinutes), {
37
+ now: input.nowMs,
38
+ strings: input.strings
39
+ });
40
+ return `${ago} - ${time}`;
41
+ }
42
+ const calendar = 'fa' === culture.language && isSupportedByPersianCalendar(value) ? 'persian' : 'gregorian';
43
+ const date = formatLocalDateTime(value, 'yyyy/MM/dd', culture, {
44
+ calendar,
45
+ numberingSystem: 'latin'
46
+ });
47
+ const text1 = 'date' === mode ? date : 'time' === mode ? time : `${date} - ${time}`;
48
+ return 'rtl' === culture.direction ? `‪${text1}‬` : text1;
49
+ }
50
+ function G9CultureDateTimeLabel(props) {
51
+ var _props_emptyText, _props_displayMode, _props_utcOffsetMinutes;
52
+ const control = useG9Control(props, 'g9-date-label');
53
+ const culture = useG9Culture();
54
+ const strings = useG9Strings();
55
+ const clock = useG9Core().services.clock;
56
+ const text1 = null == props.value ? null != (_props_emptyText = props.emptyText) ? _props_emptyText : '' : formatCultureDateTime({
57
+ value: props.value,
58
+ mode: null != (_props_displayMode = props.displayMode) ? _props_displayMode : 'dateTime',
59
+ culture,
60
+ strings,
61
+ nowMs: clock.now(),
62
+ utcOffsetMinutes: null != (_props_utcOffsetMinutes = props.utcOffsetMinutes) ? _props_utcOffsetMinutes : 0,
63
+ ...'relativeDay' === props.displayMode && props.relativeDayNow ? {
64
+ relativeDayNow: props.relativeDayNow()
65
+ } : {}
66
+ });
67
+ return <text className={control.className} {...control.idProps}>
68
+ {text1}
69
+ </text>;
70
+ }
71
+ export { G9CultureDateTimeDisplayMode, G9CultureDateTimeLabel, formatCultureDateTime };
72
+
73
+ //# sourceMappingURL=culture-date-time-label.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display/culture-date-time-label.jsx","sources":["../../src/display/culture-date-time-label.tsx"],"sourcesContent":["import './display.css';\nimport {\n formatAgo,\n formatLocalDateTime,\n type G9Culture,\n type G9LocalDateTime,\n G9StringKey,\n type G9Strings,\n isPersianLanguage,\n isSupportedByPersianCalendar,\n localDateTimeFromEpochMs,\n localDateTimeToEpochMs,\n toEpochDays,\n} from '@g9tm/lynxcontrols-foundation';\nimport type { ReactNode } from '@lynx-js/react';\nimport { type G9ControlBaseProps, useG9Control } from '../base/control';\nimport { useG9Core, useG9Culture, useG9Strings } from '../provider/hooks';\n\n/**\n * What the label shows (MAUI `G9CultureDateTimeDisplayMode`). `relativeDay` (MAUI 1.4.0) is a due-date style: «امروز،\n * 18:00» / \"Today, 18:00\", and the `tomorrow` / `yesterday` words, when the value falls on one of those three days;\n * otherwise exactly `dateTime` (`date` for a midnight value, which almost always means \"a date with no time\").\n */\nexport const G9CultureDateTimeDisplayMode = {\n DateTime: 'dateTime',\n Date: 'date',\n Time: 'time',\n Relative: 'relative',\n RelativeDay: 'relativeDay',\n} as const;\nexport type G9CultureDateTimeDisplayMode =\n (typeof G9CultureDateTimeDisplayMode)[keyof typeof G9CultureDateTimeDisplayMode];\n\n/** Inputs of {@link formatCultureDateTime}. */\nexport interface G9CultureDateTimeFormatInput {\n readonly value: G9LocalDateTime;\n readonly mode: G9CultureDateTimeDisplayMode;\n readonly culture: G9Culture;\n readonly strings: G9Strings;\n /** Now (epoch ms), for the relative mode. */\n readonly nowMs: number;\n /** UTC offset of `value`'s wall clock, for the relative modes. */\n readonly utcOffsetMinutes: number;\n /**\n * The wall-clock \"now\" `relativeDay` measures today against (MAUI `G9CultureDateTimeLabel.RelativeDayNow()`).\n * Default: `nowMs` at `utcOffsetMinutes`, i.e. today in the value's own zone.\n */\n readonly relativeDayNow?: G9LocalDateTime;\n}\n\nconst dayWords: Readonly<Record<string, G9StringKey>> = Object.freeze({\n '0': G9StringKey.Today,\n '1': G9StringKey.Tomorrow,\n '-1': G9StringKey.Yesterday,\n});\n\nconst isMidnight = (value: G9LocalDateTime) =>\n value.hour === 0 && value.minute === 0 && value.second === 0 && value.millisecond === 0;\n\n/**\n * MAUI `G9CultureDateTimeLabel.Format`: Jalali for `fa` cultures (Gregorian outside the Persian range), else\n * Gregorian; `yyyy/MM/dd`, `HH:mm`, `date - time`, or `ago - HH:mm`; Latin digits (as the MAUI code). Absolute text in\n * an RTL culture is wrapped in LRE…PDF so it reads left to right. `relativeDay` writes the day word («امروز، 18:00»,\n * \"Today, 18:00\", the word alone at midnight) in the culture's own direction, never embedded, and falls back to the\n * absolute date (with its time only when it has one) outside today, tomorrow and yesterday.\n */\nexport function formatCultureDateTime(input: G9CultureDateTimeFormatInput): string {\n const { value, culture } = input;\n const time = formatLocalDateTime(value, 'HH:mm', culture, { calendar: 'gregorian', numberingSystem: 'latin' });\n let mode = input.mode;\n if (mode === 'relativeDay') {\n const now = input.relativeDayNow ?? localDateTimeFromEpochMs(input.nowMs, input.utcOffsetMinutes);\n const word = dayWords[String(toEpochDays(value) - toEpochDays(now))];\n if (word !== undefined) {\n const text = input.strings.get(word);\n // The Persian comma under fa (the design's «امروز، ۱۸:۰۰»), a Latin one elsewhere.\n return isMidnight(value) ? text : `${text}${isPersianLanguage(culture) ? '، ' : ', '}${time}`;\n }\n mode = isMidnight(value) ? 'date' : 'dateTime';\n }\n if (mode === 'relative') {\n const ago = formatAgo(localDateTimeToEpochMs(value, input.utcOffsetMinutes), {\n now: input.nowMs,\n strings: input.strings,\n });\n return `${ago} - ${time}`;\n }\n const calendar = culture.language === 'fa' && isSupportedByPersianCalendar(value) ? 'persian' : 'gregorian';\n const date = formatLocalDateTime(value, 'yyyy/MM/dd', culture, { calendar, numberingSystem: 'latin' });\n const text = mode === 'date' ? date : mode === 'time' ? time : `${date} - ${time}`;\n return culture.direction === 'rtl' ? `‪${text}‬` : text;\n}\n\n/** Props of {@link G9CultureDateTimeLabel}. */\nexport interface G9CultureDateTimeLabelProps extends G9ControlBaseProps {\n /** The wall-clock value; `null` shows `emptyText`. */\n readonly value?: G9LocalDateTime | null;\n /** Default `'dateTime'`. */\n readonly displayMode?: G9CultureDateTimeDisplayMode;\n /** Default `''`. */\n readonly emptyText?: string | null;\n /** UTC offset of `value` (relative modes). Default 0. */\n readonly utcOffsetMinutes?: number;\n /**\n * The clock `relativeDay` measures \"today\" against (MAUI static `G9CultureDateTimeLabel.RelativeDayNow`, here per\n * label). Default: the provider's clock at `utcOffsetMinutes`. Point it at a fixed wall clock (a server zone) so a\n * value stamped \"today\" there never reads as \"yesterday\" on a device in another zone.\n */\n readonly relativeDayNow?: () => G9LocalDateTime;\n}\n\n/**\n * A culture-aware date/time text (MAUI `G9CultureDateTimeLabel`); re-renders on culture changes. The relative texts\n * (`relative`, `relativeDay`) do not refresh by themselves (as MAUI); re-render to update them.\n */\nexport function G9CultureDateTimeLabel(props: G9CultureDateTimeLabelProps): ReactNode {\n const control = useG9Control(props, 'g9-date-label');\n const culture = useG9Culture();\n const strings = useG9Strings();\n const clock = useG9Core().services.clock;\n const text =\n props.value == null\n ? (props.emptyText ?? '')\n : formatCultureDateTime({\n value: props.value,\n mode: props.displayMode ?? 'dateTime',\n culture,\n strings,\n nowMs: clock.now(),\n utcOffsetMinutes: props.utcOffsetMinutes ?? 0,\n ...(props.displayMode === 'relativeDay' && props.relativeDayNow\n ? { relativeDayNow: props.relativeDayNow() }\n : {}),\n });\n return (\n <text className={control.className} {...control.idProps}>\n {text}\n </text>\n );\n}\n"],"names":["G9CultureDateTimeDisplayMode","dayWords","Object","G9StringKey","isMidnight","value","formatCultureDateTime","input","culture","time","formatLocalDateTime","mode","_input_relativeDayNow","now","localDateTimeFromEpochMs","word","String","toEpochDays","undefined","text1","isPersianLanguage","ago","formatAgo","localDateTimeToEpochMs","calendar","isSupportedByPersianCalendar","date","G9CultureDateTimeLabel","props","_props_emptyText","_props_displayMode","_props_utcOffsetMinutes","control","useG9Control","useG9Culture","strings","useG9Strings","clock","useG9Core","text"],"mappings":";;;;AAuBO,MAAMA,+BAA+B;IAC1C,UAAU;IACV,MAAM;IACN,MAAM;IACN,UAAU;IACV,aAAa;AACf;AAqBA,MAAMC,WAAkDC,OAAO,MAAM,CAAC;IACpE,GAAKC,YAAY,KAAK;IACtB,GAAKA,YAAY,QAAQ;IACzB,MAAMA,YAAY,SAAS;AAC7B;AAEA,MAAMC,aAAa,CAACC,QAClBA,AAAe,MAAfA,MAAM,IAAI,IAAUA,AAAiB,MAAjBA,MAAM,MAAM,IAAUA,AAAiB,MAAjBA,MAAM,MAAM,IAAUA,AAAsB,MAAtBA,MAAM,WAAW;AAS5E,SAASC,sBAAsBC,KAAmC;IACvE,MAAM,EAAEF,KAAK,EAAEG,OAAO,EAAE,GAAGD;IAC3B,MAAME,OAAOC,oBAAoBL,OAAO,SAASG,SAAS;QAAE,UAAU;QAAa,iBAAiB;IAAQ;IAC5G,IAAIG,OAAOJ,MAAM,IAAI;IACrB,IAAII,AAAS,kBAATA,MAAwB;YACdC;QAAZ,MAAMC,MAAM,QAAAD,CAAAA,wBAAAA,MAAM,cAAc,AAAD,IAAnBA,wBAAwBE,yBAAyBP,MAAM,KAAK,EAAEA,MAAM,gBAAgB;QAChG,MAAMQ,OAAOd,QAAQ,CAACe,OAAOC,YAAYZ,SAASY,YAAYJ,MAAM;QACpE,IAAIE,AAASG,WAATH,MAAoB;YACtB,MAAMI,QAAOZ,MAAM,OAAO,CAAC,GAAG,CAACQ;YAE/B,OAAOX,WAAWC,SAASc,QAAO,GAAGA,QAAOC,kBAAkBZ,WAAW,OAAO,OAAOC,MAAM;QAC/F;QACAE,OAAOP,WAAWC,SAAS,SAAS;IACtC;IACA,IAAIM,AAAS,eAATA,MAAqB;QACvB,MAAMU,MAAMC,UAAUC,uBAAuBlB,OAAOE,MAAM,gBAAgB,GAAG;YAC3E,KAAKA,MAAM,KAAK;YAChB,SAASA,MAAM,OAAO;QACxB;QACA,OAAO,GAAGc,IAAI,GAAG,EAAEZ,MAAM;IAC3B;IACA,MAAMe,WAAWhB,AAAqB,SAArBA,QAAQ,QAAQ,IAAaiB,6BAA6BpB,SAAS,YAAY;IAChG,MAAMqB,OAAOhB,oBAAoBL,OAAO,cAAcG,SAAS;QAAEgB;QAAU,iBAAiB;IAAQ;IACpG,MAAML,QAAOR,AAAS,WAATA,OAAkBe,OAAOf,AAAS,WAATA,OAAkBF,OAAO,GAAGiB,KAAK,GAAG,EAAEjB,MAAM;IAClF,OAAOD,AAAsB,UAAtBA,QAAQ,SAAS,GAAa,CAAC,CAAC,EAAEW,MAAK,CAAC,CAAC,GAAGA;AACrD;AAwBO,SAASQ,uBAAuBC,KAAkC;QAOhEC,kBAGOC,oBAIYC;IAb1B,MAAMC,UAAUC,aAAaL,OAAO;IACpC,MAAMpB,UAAU0B;IAChB,MAAMC,UAAUC;IAChB,MAAMC,QAAQC,YAAY,QAAQ,CAAC,KAAK;IACxC,MAAMnB,QACJS,AAAe,QAAfA,MAAM,KAAK,GAAI,QACVC,CAAAA,mBAAAA,MAAM,SAAS,AAAD,IAAdA,mBAAmB,KACpBvB,sBAAsB;QACpB,OAAOsB,MAAM,KAAK;QAClB,MAAM,QAAAE,CAAAA,qBAAAA,MAAM,WAAW,AAAD,IAAhBA,qBAAqB;QAC3BtB;QACA2B;QACA,OAAOE,MAAM,GAAG;QAChB,kBAAkB,QAAAN,CAAAA,0BAAAA,MAAM,gBAAgB,AAAD,IAArBA,0BAA0B;QAC5C,GAAIH,AAAsB,kBAAtBA,MAAM,WAAW,IAAsBA,MAAM,cAAc,GAC3D;YAAE,gBAAgBA,MAAM,cAAc;QAAG,IACzC,CAAC,CAAC;IACR;IACN,QACGW,KAAK,WAAWP,QAAQ,SAAS,GAAG,GAAGA,QAAQ,OAAO,EAAE;MACvD,CAACb,MAAK;IACR,EAAEoB;AAEN"}
@@ -0,0 +1,217 @@
1
+ .g9-activity {
2
+ border-style: solid;
3
+ }
4
+
5
+ .g9-activity--running {
6
+ animation: .8s linear infinite g9-activity-spin;
7
+ }
8
+
9
+ @keyframes g9-activity-spin {
10
+ from {
11
+ transform: rotate(0);
12
+ }
13
+
14
+ to {
15
+ transform: rotate(360deg);
16
+ }
17
+ }
18
+
19
+ .g9-progress {
20
+ flex-direction: column;
21
+ display: flex;
22
+ }
23
+
24
+ .g9-progress__label {
25
+ align-self: flex-end;
26
+ margin-bottom: 6px;
27
+ font-size: 11px;
28
+ font-weight: bold;
29
+ }
30
+
31
+ .g9-progress__track {
32
+ position: relative;
33
+ overflow: hidden;
34
+ }
35
+
36
+ .g9-progress__fill {
37
+ height: 100%;
38
+ transition: width .3s cubic-bezier(.215, .61, .355, 1);
39
+ position: relative;
40
+ overflow: hidden;
41
+ }
42
+
43
+ .g9-progress__fill--indeterminate {
44
+ transition: none;
45
+ }
46
+
47
+ .g9-progress__fill--sweep {
48
+ animation: 1.333s linear infinite g9-progress-sweep;
49
+ }
50
+
51
+ @keyframes g9-progress-sweep {
52
+ from {
53
+ transform: translateX(0%);
54
+ }
55
+
56
+ to {
57
+ transform: translateX(400%);
58
+ }
59
+ }
60
+
61
+ .g9-progress__stripes {
62
+ background: repeating-linear-gradient(-60deg, #ffffff29 0, #ffffff29 5px, #0000 5px, #0000 16px);
63
+ animation: .7s linear infinite g9-progress-stripes;
64
+ position: absolute;
65
+ top: 0;
66
+ bottom: 0;
67
+ left: -16px;
68
+ right: 0;
69
+ }
70
+
71
+ @keyframes g9-progress-stripes {
72
+ from {
73
+ transform: translateX(0);
74
+ }
75
+
76
+ to {
77
+ transform: translateX(16px);
78
+ }
79
+ }
80
+
81
+ .g9-progress__segment {
82
+ background-color: #ffffff80;
83
+ border-radius: 1.5px;
84
+ width: 3px;
85
+ height: 3px;
86
+ margin-top: -1.5px;
87
+ margin-left: -1.5px;
88
+ position: absolute;
89
+ top: 50%;
90
+ }
91
+
92
+ .g9-separator {
93
+ flex-direction: row;
94
+ align-items: center;
95
+ column-gap: 10px;
96
+ padding-top: 14px;
97
+ padding-bottom: 8px;
98
+ display: flex;
99
+ }
100
+
101
+ .g9-separator__line {
102
+ flex: 1;
103
+ }
104
+
105
+ .g9-separator__title {
106
+ flex-direction: row;
107
+ align-items: center;
108
+ column-gap: 4px;
109
+ display: flex;
110
+ }
111
+
112
+ .g9-separator__text {
113
+ letter-spacing: 1.2px;
114
+ white-space: nowrap;
115
+ font-size: 10px;
116
+ font-weight: bold;
117
+ }
118
+
119
+ .g9-title-line {
120
+ flex-direction: column;
121
+ display: flex;
122
+ }
123
+
124
+ .g9-title-line__text {
125
+ color: var(--g9-text-primary);
126
+ font-size: 16px;
127
+ }
128
+
129
+ .g9-title-line__line {
130
+ background-color: var(--g9-outline-variant);
131
+ height: 1px;
132
+ margin-top: 6px;
133
+ }
134
+
135
+ .g9-shimmer__band-host {
136
+ pointer-events: none;
137
+ position: absolute;
138
+ top: 0;
139
+ bottom: 0;
140
+ left: 0;
141
+ right: 0;
142
+ overflow: hidden;
143
+ }
144
+
145
+ .g9-shimmer__band {
146
+ width: 100%;
147
+ height: 100%;
148
+ animation: 1.1s linear infinite g9-shimmer-sweep;
149
+ }
150
+
151
+ @keyframes g9-shimmer-sweep {
152
+ from {
153
+ transform: translateX(-100%);
154
+ }
155
+
156
+ to {
157
+ transform: translateX(100%);
158
+ }
159
+ }
160
+
161
+ .g9-skeleton {
162
+ pointer-events: none;
163
+ position: absolute;
164
+ top: 0;
165
+ bottom: 0;
166
+ left: 0;
167
+ right: 0;
168
+ overflow: hidden;
169
+ }
170
+
171
+ .g9-skeleton__rows {
172
+ flex-direction: column;
173
+ row-gap: 8px;
174
+ padding: 0 10px 10px;
175
+ display: flex;
176
+ }
177
+
178
+ .g9-skeleton__rows--form {
179
+ row-gap: 12px;
180
+ }
181
+
182
+ .g9-skeleton__bar {
183
+ background-color: var(--g9-surface-container-high);
184
+ }
185
+
186
+ .g9-skeleton__field {
187
+ border-radius: 12px;
188
+ height: 48px;
189
+ }
190
+
191
+ .g9-skeleton__row {
192
+ flex-direction: row;
193
+ align-items: center;
194
+ column-gap: 8px;
195
+ height: 52px;
196
+ display: flex;
197
+ }
198
+
199
+ .g9-skeleton__circle {
200
+ background-color: var(--g9-surface-container-high);
201
+ border-radius: 14px;
202
+ width: 28px;
203
+ height: 28px;
204
+ }
205
+
206
+ .g9-skeleton__line {
207
+ border-radius: 8px;
208
+ flex: 1;
209
+ height: 16px;
210
+ }
211
+
212
+ .g9-date-label {
213
+ color: var(--g9-text-primary);
214
+ }
215
+
216
+
217
+ /*# sourceMappingURL=display.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack://./src/display/display.css"],"names":[],"mappings":"AACA;EAAE,mBAAmB;AACrB;;AAGA;EAAE,+CAA+C;AACjD;;AAGA;EAAE;IACE,oBAAoB;EACtB;;EAEA;IACE,yBAAyB;EAC3B;AACF;;AAEA;EACE,sBAAsB;EACtB,aAAa;AACf;;AAEA;EACE,oBAAoB;EACpB,kBAAkB;EAClB,eAAe;EACf,iBAAiB;AACnB;;AAEA;EACE,kBAAkB;EAClB,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,sDAAsD;EACtD,kBAAkB;EAClB,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,mDAAmD;AACrD;;AAEA;EACE;IACE,yBAAyB;EAC3B;;EAEA;IACE,2BAA2B;EAC7B;AACF;;AACA;EAEE,gGAAgG;EAChG,kDAAkD;EAClD,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,WAAW;EACX,QAAQ;AACV;;AAOA;EAJE;IACE,wBAAwB;EAC1B;;EAEA;IACE,2BAA2B;EAC7B;AACF;;AAMA;EAHE,2BAA2B;EAC3B,oBAAoB;EACpB,UAAU;EACV,WAAW;EACX,kBAAkB;EAClB,mBAAmB;EACnB,kBAAkB;EAClB,QAAQ;AACV;;AAMA;EAHE,mBAAmB;EACnB,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;EACjB,mBAAmB;EACnB,aAAa;AACf;;AAMA;EAHE,OAAO;AACT;;AAMA;EAHE,mBAAmB;EACnB,mBAAmB;EACnB,eAAe;EACf,aAAa;AACf;;AAMA;EAHE,qBAAqB;EACrB,mBAAmB;EACnB,eAAe;EACf,iBAAiB;AACnB;;AAMA;EAHE,sBAAsB;EACtB,aAAa;AACf;;AAMA;EAHE,6BAA6B;EAC7B,eAAe;AACjB;;AAMA;EAHE,2CAA2C;EAC3C,WAAW;EACX,eAAe;AACjB;;AAMA;EAHE,oBAAoB;EACpB,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,OAAO;EACP,QAAQ;EACR,gBAAgB;AAClB;;AAMA;EAHE,WAAW;EACX,YAAY;EACZ,gDAAgD;AAClD;;AAMA;EAHE;IACE,4BAA4B;EAC9B;;EAEA;IACE,2BAA2B;EAC7B;AACF;;AAKA;EAFE,oBAAoB;EACpB,kBAAkB;EAClB,MAAM;EACN,SAAS;EACT,OAAO;EACP,QAAQ;EACR,gBAAgB;AAClB;;AAKA;EAFE,sBAAsB;EACtB,YAAY;EACZ,oBAAoB;EACpB,aAAa;AACf;;AAKA;EAFE,aAAa;AACf;;AAKA;EAFE,kDAAkD;AACpD;;AAKA;EAFE,mBAAmB;EACnB,YAAY;AACd;;AAKA;EAFE,mBAAmB;EACnB,mBAAmB;EACnB,eAAe;EACf,YAAY;EACZ,aAAa;AACf;;AAKA;EAFE,kDAAkD;EAClD,mBAAmB;EACnB,WAAW;EACX,YAAY;AACd;;AAKA;EAFE,kBAAkB;EAClB,OAAO;EACP,YAAY;AACd;;AAKA;EAFE,6BAA6B;AAC/B","sourcesContent":["/* Display controls (MAUI G9ActivityIndicator, G9ProgressBar, G9Separator, G9TitleWithLine, G9Shimmer). */\n.g9-activity {\n border-style: solid;\n}\n\n.g9-activity--running {\n animation: g9-activity-spin 800ms linear infinite;\n}\n\n@keyframes g9-activity-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.g9-progress {\n display: flex;\n flex-direction: column;\n}\n\n.g9-progress__label {\n align-self: flex-end;\n margin-bottom: 6px;\n font-size: 11px;\n font-weight: bold;\n}\n\n.g9-progress__track {\n position: relative;\n overflow: hidden;\n}\n\n.g9-progress__fill {\n position: relative;\n height: 100%;\n overflow: hidden;\n transition: width 300ms cubic-bezier(0.215, 0.61, 0.355, 1);\n}\n\n.g9-progress__fill--indeterminate {\n transition: none;\n}\n\n.g9-progress__fill--sweep {\n animation: g9-progress-sweep 1333ms linear infinite;\n}\n\n@keyframes g9-progress-sweep {\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(400%);\n }\n}\n\n.g9-progress__stripes {\n position: absolute;\n top: 0;\n bottom: 0;\n left: -16px;\n right: 0;\n background: repeating-linear-gradient(\n -60deg,\n rgba(255, 255, 255, 0.16) 0px,\n rgba(255, 255, 255, 0.16) 5px,\n transparent 5px,\n transparent 16px\n );\n animation: g9-progress-stripes 700ms linear infinite;\n}\n\n@keyframes g9-progress-stripes {\n from {\n transform: translateX(0px);\n }\n to {\n transform: translateX(16px);\n }\n}\n\n.g9-progress__segment {\n position: absolute;\n top: 50%;\n width: 3px;\n height: 3px;\n margin-top: -1.5px;\n margin-left: -1.5px;\n border-radius: 1.5px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.g9-separator {\n display: flex;\n flex-direction: row;\n align-items: center;\n column-gap: 10px;\n padding-top: 14px;\n padding-bottom: 8px;\n}\n\n.g9-separator__line {\n flex: 1;\n}\n\n.g9-separator__title {\n display: flex;\n flex-direction: row;\n align-items: center;\n column-gap: 4px;\n}\n\n.g9-separator__text {\n font-size: 10px;\n font-weight: bold;\n letter-spacing: 1.2px;\n white-space: nowrap;\n}\n\n.g9-title-line {\n display: flex;\n flex-direction: column;\n}\n\n.g9-title-line__text {\n font-size: 16px;\n color: var(--g9-text-primary);\n}\n\n.g9-title-line__line {\n height: 1px;\n margin-top: 6px;\n background-color: var(--g9-outline-variant);\n}\n\n.g9-shimmer__band-host {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.g9-shimmer__band {\n width: 100%;\n height: 100%;\n animation: g9-shimmer-sweep 1100ms linear infinite;\n}\n\n@keyframes g9-shimmer-sweep {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(100%);\n }\n}\n\n.g9-skeleton {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.g9-skeleton__rows {\n display: flex;\n flex-direction: column;\n row-gap: 8px;\n padding: 0px 10px 10px 10px;\n}\n\n.g9-skeleton__rows--form {\n row-gap: 12px;\n}\n\n.g9-skeleton__bar {\n background-color: var(--g9-surface-container-high);\n}\n\n.g9-skeleton__field {\n height: 48px;\n border-radius: 12px;\n}\n\n.g9-skeleton__row {\n display: flex;\n flex-direction: row;\n align-items: center;\n column-gap: 8px;\n height: 52px;\n}\n\n.g9-skeleton__circle {\n width: 28px;\n height: 28px;\n border-radius: 14px;\n background-color: var(--g9-surface-container-high);\n}\n\n.g9-skeleton__line {\n flex: 1;\n height: 16px;\n border-radius: 8px;\n}\n\n.g9-date-label {\n color: var(--g9-text-primary);\n}\n"],"sourceRoot":""}
@@ -0,0 +1,7 @@
1
+ export { G9ActivityIndicator, type G9ActivityIndicatorProps } from './activity-indicator.js';
2
+ export { formatCultureDateTime, G9CultureDateTimeDisplayMode, type G9CultureDateTimeFormatInput, G9CultureDateTimeLabel, type G9CultureDateTimeLabelProps, } from './culture-date-time-label.js';
3
+ export { clampProgress, G9ProgressBar, type G9ProgressBarProps, progressLabel } from './progress-bar.js';
4
+ export { G9Separator, type G9SeparatorProps, separatorTitleText } from './separator.js';
5
+ export { G9BottomSheetLoadingSkeleton, G9SheetSkeleton, type G9SheetSkeletonProps, G9ShimmerBand, type G9ShimmerBandProps, sheetSkeletonRowCount, } from './shimmer.js';
6
+ export { G9TitleWithLine, type G9TitleWithLineProps } from './title-with-line.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,KAAK,4BAA4B,EACjC,sBAAsB,EACtB,KAAK,2BAA2B,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EACL,4BAA4B,EAC5B,eAAe,EACf,KAAK,oBAAoB,EACzB,aAAa,EACb,KAAK,kBAAkB,EACvB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { G9ActivityIndicator } from "./activity-indicator.jsx";
2
+ export { G9CultureDateTimeDisplayMode, G9CultureDateTimeLabel, formatCultureDateTime } from "./culture-date-time-label.jsx";
3
+ export { G9ProgressBar, clampProgress, progressLabel } from "./progress-bar.jsx";
4
+ export { G9Separator, separatorTitleText } from "./separator.jsx";
5
+ export { G9BottomSheetLoadingSkeleton, G9SheetSkeleton, G9ShimmerBand, sheetSkeletonRowCount } from "./shimmer.jsx";
6
+ export { G9TitleWithLine } from "./title-with-line.jsx";
@@ -0,0 +1,38 @@
1
+ import './display.css';
2
+ import { type G9ProgressLabelPlacement, type G9ProgressType } from '@g9tm/lynxcontrols-foundation';
3
+ import type { ReactNode } from '@lynx-js/react';
4
+ import { type G9ControlBaseProps } from '../base/control.js';
5
+ /** Props of {@link G9ProgressBar} (MAUI `G9ProgressBar`). */
6
+ export interface G9ProgressBarProps extends G9ControlBaseProps {
7
+ /** 0–1; only the display is clamped. Changes animate over 300 ms. Default 0. */
8
+ readonly value?: number;
9
+ /** Default `var(--g9-surface-variant)`. */
10
+ readonly trackColor?: string | null;
11
+ /** Fill and label colour; default the `progressType` colour. Must be a colour literal (it is lightened). */
12
+ readonly progressColor?: string | null;
13
+ /** Capped at half the bar height. Default 999 (pill). */
14
+ readonly cornerRadius?: number;
15
+ /** Default 10. */
16
+ readonly barHeight?: number;
17
+ /** `'above'` and `'end'` both show `NN%` above the bar, end-aligned (as MAUI). Default `'none'`. */
18
+ readonly labelPlacement?: G9ProgressLabelPlacement;
19
+ /** A 20 % segment sweeps left to right (≈ 1.33 s) instead of a fill. Default false. */
20
+ readonly isIndeterminate?: boolean;
21
+ /** Four dots at 1/5 … 4/5. Default false. */
22
+ readonly showSegments?: boolean;
23
+ /** Default `'primary'`. */
24
+ readonly progressType?: G9ProgressType;
25
+ /** Freezes the sweep and hides the stripes; disabled behaves as paused. Default false. */
26
+ readonly isPaused?: boolean;
27
+ }
28
+ /** The progress label: `round(clamp(value) × 100)%`, Latin digits (MAUI formats with .NET, which keeps them). */
29
+ export declare function progressLabel(value: number): string;
30
+ /** Clamps a progress value to [0, 1]; NaN is 0. */
31
+ export declare function clampProgress(value: number): number;
32
+ /**
33
+ * Linear progress (MAUI `G9ProgressBar`): gradient fill (colour → 24 % lighter), diagonal stripes while running,
34
+ * optional segments and label, indeterminate sweep. All motion is CSS (transition on the width, keyframes for the
35
+ * sweep and the stripes); the stored value is never changed.
36
+ */
37
+ export declare function G9ProgressBar(props: G9ProgressBarProps): ReactNode;
38
+ //# sourceMappingURL=progress-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../src/display/progress-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EAGpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,KAAK,kBAAkB,EAAgB,MAAM,iBAAiB,CAAC;AAGxE,6DAA6D;AAC7D,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,gFAAgF;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,4GAA4G;IAC5G,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,yDAAyD;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB;IAClB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IACnD,uFAAuF;IACvF,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,2BAA2B;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,iHAAiH;AACjH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAyClE"}
@@ -0,0 +1,57 @@
1
+ import "./display.css";
2
+ import { formatColor, lighten, resolveProgressColor } from "@g9tm/lynxcontrols-foundation";
3
+ import { useG9Control } from "../base/control.jsx";
4
+ import { useG9Theme } from "../provider/hooks.jsx";
5
+ function progressLabel(value) {
6
+ return `${Math.round(100 * clampProgress(value))}%`;
7
+ }
8
+ function clampProgress(value) {
9
+ if (!(value > 0)) return 0;
10
+ return value > 1 ? 1 : value;
11
+ }
12
+ function G9ProgressBar(props) {
13
+ var _props_barHeight, _props_cornerRadius, _props_progressColor, _props_progressType, _props_labelPlacement, _props_value, _props_trackColor;
14
+ const control = useG9Control(props, 'g9-progress');
15
+ const palette = useG9Theme().palette;
16
+ const height = null != (_props_barHeight = props.barHeight) ? _props_barHeight : 10;
17
+ const radius = Math.min(null != (_props_cornerRadius = props.cornerRadius) ? _props_cornerRadius : 999, height / 2);
18
+ const color = null != (_props_progressColor = props.progressColor) ? _props_progressColor : resolveProgressColor(null != (_props_progressType = props.progressType) ? _props_progressType : 'primary', palette);
19
+ const fill = `linear-gradient(to right, ${color}, ${formatColor(lighten(color, 0.24))})`;
20
+ const paused = true === props.isPaused || control.disabled;
21
+ const indeterminate = true === props.isIndeterminate;
22
+ const placement = null != (_props_labelPlacement = props.labelPlacement) ? _props_labelPlacement : 'none';
23
+ const value = clampProgress(null != (_props_value = props.value) ? _props_value : 0);
24
+ return <view className={control.className} {...control.idProps}>
25
+ {'none' !== placement ? <text className="g9-progress__label" style={{
26
+ color
27
+ }}>
28
+ {progressLabel(value)}
29
+ </text> : null}
30
+ <view className="g9-progress__track g9-dir-ltr" style={{
31
+ height: `${height}px`,
32
+ borderRadius: `${radius}px`,
33
+ backgroundColor: null != (_props_trackColor = props.trackColor) ? _props_trackColor : palette.SurfaceVariant
34
+ }} accessibility-element={true} {...props.accessibilityLabel ? {
35
+ 'accessibility-label': props.accessibilityLabel
36
+ } : {}} accessibility-value={indeterminate ? '' : progressLabel(value)}>
37
+ <view className={`g9-progress__fill${indeterminate ? ' g9-progress__fill--indeterminate' : ''}${indeterminate && !paused ? ' g9-progress__fill--sweep' : ''}`} style={{
38
+ width: indeterminate ? '20%' : `${100 * value}%`,
39
+ borderRadius: `${radius}px`,
40
+ background: fill
41
+ }}>
42
+ {!paused ? <view className="g9-progress__stripes"/> : null}
43
+ </view>
44
+ {props.showSegments ? [
45
+ 1,
46
+ 2,
47
+ 3,
48
+ 4
49
+ ].map((i)=><view key={i} className="g9-progress__segment" style={{
50
+ left: `${20 * i}%`
51
+ }}/>) : null}
52
+ </view>
53
+ </view>;
54
+ }
55
+ export { G9ProgressBar, clampProgress, progressLabel };
56
+
57
+ //# sourceMappingURL=progress-bar.jsx.map