@btndprojects/loam-ui-native 0.2.1 → 0.3.1

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 (365) hide show
  1. package/dist/accordion/index.js +4 -2
  2. package/dist/adaptive/index.js +12 -2
  3. package/dist/address-block/index.js +23 -0
  4. package/dist/alert/index.js +5 -2
  5. package/dist/analyzer/index.js +13 -5
  6. package/dist/announcement/index.js +15 -5
  7. package/dist/appearance-picker/index.js +15 -0
  8. package/dist/audio-player/index.js +26 -2
  9. package/dist/avatar/index.js +2 -2
  10. package/dist/avatar-group/index.js +5 -3
  11. package/dist/badge/index.js +6 -3
  12. package/dist/banner/index.js +3 -2
  13. package/dist/board/index.js +13 -6
  14. package/dist/button/index.js +6 -3
  15. package/dist/camera-permission/index.js +19 -11
  16. package/dist/capture-result/index.js +26 -16
  17. package/dist/card/index.js +7 -3
  18. package/dist/card-form/index.js +15 -9
  19. package/dist/carousel/index.js +3 -1
  20. package/dist/chart/index.js +15 -5
  21. package/dist/charts/index.js +18 -5
  22. package/dist/chat/index.js +35 -10
  23. package/dist/checkbox/index.js +6 -4
  24. package/dist/checklist/index.js +16 -7
  25. package/dist/checkout/index.js +25 -12
  26. package/dist/chip/index.js +7 -4
  27. package/dist/chunk-2BZD3NAP.js +1110 -0
  28. package/dist/chunk-2YKVID2V.js +35 -0
  29. package/dist/{chunk-H7DWSL4O.js → chunk-36DA3IPO.js} +115 -27
  30. package/dist/chunk-3A56MIAN.js +599 -0
  31. package/dist/{chunk-AEB7KCHQ.js → chunk-3SCKCWF5.js} +39 -28
  32. package/dist/chunk-3TZNDHKO.js +187 -0
  33. package/dist/chunk-43K3BLXV.js +9 -0
  34. package/dist/chunk-46ZJIQ2Z.js +208 -0
  35. package/dist/{chunk-PMMTGBBS.js → chunk-4CZMQDQL.js} +75 -22
  36. package/dist/chunk-4QCR3K2J.js +1 -0
  37. package/dist/{chunk-E2E3I5W2.js → chunk-5DTKORLI.js} +54 -45
  38. package/dist/{chunk-5VFZRGVD.js → chunk-5J4WFXFA.js} +32 -15
  39. package/dist/{chunk-JBMLWFSJ.js → chunk-5KJ7TEQ6.js} +83 -48
  40. package/dist/chunk-5NU33TXK.js +529 -0
  41. package/dist/chunk-6KSUS7DF.js +690 -0
  42. package/dist/{chunk-3WEZCGHX.js → chunk-6RV6UW2J.js} +140 -56
  43. package/dist/chunk-6RZM7RP2.js +520 -0
  44. package/dist/{chunk-JJLPBRVZ.js → chunk-75BDCC7K.js} +2 -0
  45. package/dist/{chunk-U5NLHYV6.js → chunk-7CGJBQUA.js} +333 -22
  46. package/dist/{chunk-I4FHVKEC.js → chunk-7IVF6JLJ.js} +16 -5
  47. package/dist/chunk-7IWCGXYA.js +143 -0
  48. package/dist/chunk-7LM4ASFH.js +172 -0
  49. package/dist/chunk-7MCEJFWV.js +341 -0
  50. package/dist/{chunk-2SY63FCH.js → chunk-7NGMUVNU.js} +66 -30
  51. package/dist/chunk-7PBSIXT7.js +355 -0
  52. package/dist/chunk-7QOYGENL.js +443 -0
  53. package/dist/{chunk-TDMG26JI.js → chunk-A7SWYDE5.js} +40 -9
  54. package/dist/chunk-ADHPJALR.js +3051 -0
  55. package/dist/{chunk-ZLTO5VQI.js → chunk-ALJYZLNQ.js} +131 -61
  56. package/dist/{chunk-GDKVKNR2.js → chunk-AQ5FIG74.js} +110 -30
  57. package/dist/chunk-B2MMZZQB.js +426 -0
  58. package/dist/{chunk-QYPE5JX3.js → chunk-B7JZ3N5G.js} +142 -105
  59. package/dist/{chunk-QHTVYA65.js → chunk-BL37SW6G.js} +388 -102
  60. package/dist/chunk-BTRMA7GC.js +21 -0
  61. package/dist/{chunk-FUMHAAF3.js → chunk-C7IUWIUZ.js} +243 -92
  62. package/dist/chunk-CA3DUVYD.js +10 -0
  63. package/dist/{chunk-FYWNRX4F.js → chunk-CBCJSO2B.js} +143 -13
  64. package/dist/chunk-CHPX4MFI.js +239 -0
  65. package/dist/chunk-CLGAMIOT.js +648 -0
  66. package/dist/chunk-CUE7VML6.js +1141 -0
  67. package/dist/{chunk-D5N5QWI7.js → chunk-CVU6S2E5.js} +497 -235
  68. package/dist/{chunk-U23FYWME.js → chunk-CXPQMA6Z.js} +101 -34
  69. package/dist/{chunk-36EC2T6P.js → chunk-D2LN4I7I.js} +1 -1
  70. package/dist/{chunk-TLCIR6RG.js → chunk-D34LNBO5.js} +411 -155
  71. package/dist/{chunk-FV6HMP7W.js → chunk-D4BCQICM.js} +207 -65
  72. package/dist/chunk-EABKIIA4.js +1 -0
  73. package/dist/chunk-EICSYRAG.js +341 -0
  74. package/dist/chunk-EMWAJMAS.js +83 -0
  75. package/dist/chunk-EOLZWRV6.js +149 -0
  76. package/dist/chunk-EOQVTGB6.js +350 -0
  77. package/dist/{chunk-ZVATDZOM.js → chunk-ESGUHNB2.js} +106 -28
  78. package/dist/{chunk-46MMSDGL.js → chunk-F2KNBPKY.js} +104 -73
  79. package/dist/{chunk-KQZ3GLHR.js → chunk-G7H3NX3G.js} +40 -17
  80. package/dist/{chunk-3QMEOFW5.js → chunk-GM7YIPB7.js} +421 -207
  81. package/dist/{chunk-QHAITQIF.js → chunk-GVQQG435.js} +256 -86
  82. package/dist/chunk-HE43OMEL.js +1056 -0
  83. package/dist/{chunk-XIDTBCBA.js → chunk-HHOMFQ7R.js} +1049 -207
  84. package/dist/chunk-HNAKS4Z3.js +207 -0
  85. package/dist/chunk-HP6ST2OW.js +352 -0
  86. package/dist/chunk-HW3OWDTU.js +1 -0
  87. package/dist/{chunk-QP3KMOVF.js → chunk-HZDB44K4.js} +24 -14
  88. package/dist/chunk-I6CUP2LW.js +1155 -0
  89. package/dist/chunk-ICV4Y2WY.js +27 -0
  90. package/dist/chunk-IHSIENOE.js +3950 -0
  91. package/dist/{chunk-T5LTPKX6.js → chunk-IMMALLRU.js} +53 -25
  92. package/dist/{chunk-C4GTDLRC.js → chunk-JA6TK7H2.js} +154 -67
  93. package/dist/{chunk-EVOIGUBI.js → chunk-JAVZ5JPV.js} +43 -13
  94. package/dist/{chunk-CPTOADB2.js → chunk-JCMTP3E4.js} +527 -201
  95. package/dist/{chunk-OJQUBQWA.js → chunk-JCXFFK64.js} +73 -16
  96. package/dist/{chunk-V2OEB75Z.js → chunk-JWCVBFDU.js} +75 -35
  97. package/dist/chunk-JXRTD5RI.js +414 -0
  98. package/dist/chunk-JYIUZUIQ.js +1567 -0
  99. package/dist/chunk-K3TK3GIV.js +219 -0
  100. package/dist/chunk-KEVZIHM2.js +1511 -0
  101. package/dist/{chunk-VAOAKWUK.js → chunk-KHZDNQQD.js} +42 -8
  102. package/dist/chunk-KL4GDV4V.js +131 -0
  103. package/dist/{chunk-Q6NKEPRE.js → chunk-KNILMM4H.js} +73 -28
  104. package/dist/chunk-KRBUZV45.js +25 -0
  105. package/dist/{chunk-7BUIKDD6.js → chunk-KXLDK6HB.js} +91 -30
  106. package/dist/chunk-KZ3X7TSL.js +196 -0
  107. package/dist/{chunk-5UTRIXQ6.js → chunk-L2WMOA2V.js} +187 -43
  108. package/dist/chunk-L4D5LHCH.js +109 -0
  109. package/dist/{chunk-W63AJTM7.js → chunk-LAUJPLDB.js} +236 -71
  110. package/dist/{chunk-TN2ZNJUI.js → chunk-LGNTP5XA.js} +47 -13
  111. package/dist/chunk-LUZFCCSD.js +271 -0
  112. package/dist/{chunk-XTORZWRF.js → chunk-LXJCP4PL.js} +111 -30
  113. package/dist/chunk-MCOZJWPU.js +731 -0
  114. package/dist/{chunk-SATMR6SG.js → chunk-MG4SKWLL.js} +780 -142
  115. package/dist/{chunk-JUYWSSKW.js → chunk-MPEPTSER.js} +95 -16
  116. package/dist/chunk-MWPJ4YGP.js +1 -0
  117. package/dist/{chunk-LUMVGO2K.js → chunk-N7AX4OA4.js} +80 -29
  118. package/dist/chunk-NHSLM6SE.js +523 -0
  119. package/dist/{chunk-IT6FUXXG.js → chunk-NNJLVA7M.js} +43 -11
  120. package/dist/{chunk-TQVAIKFD.js → chunk-NZG75DGA.js} +102 -62
  121. package/dist/chunk-O76QXRBV.js +431 -0
  122. package/dist/chunk-OANH27AK.js +223 -0
  123. package/dist/chunk-OCHPK5YV.js +609 -0
  124. package/dist/chunk-OMHVEVX4.js +436 -0
  125. package/dist/{chunk-SWS5JQIF.js → chunk-ONKQUJWD.js} +187 -60
  126. package/dist/chunk-OVTK7A6T.js +615 -0
  127. package/dist/{chunk-UXGIW7OK.js → chunk-PCEFCOLN.js} +5 -1
  128. package/dist/{chunk-QIKT7LIB.js → chunk-PFLNFIVB.js} +91 -23
  129. package/dist/chunk-PHSZY37H.js +300 -0
  130. package/dist/chunk-PJLTKDVY.js +18 -0
  131. package/dist/{chunk-SHHY5OMK.js → chunk-PK7BN3MI.js} +83 -15
  132. package/dist/{chunk-YXOAPXMU.js → chunk-PWFRDRGS.js} +101 -14
  133. package/dist/{chunk-TY4MTKQJ.js → chunk-PYPMD46W.js} +332 -66
  134. package/dist/chunk-Q6CCHDI7.js +331 -0
  135. package/dist/chunk-QFA5WS2A.js +750 -0
  136. package/dist/chunk-QJMMM4RC.js +124 -0
  137. package/dist/chunk-QYWEVAM6.js +407 -0
  138. package/dist/chunk-R5T4VZ7Z.js +126 -0
  139. package/dist/chunk-R77HFLZD.js +1 -0
  140. package/dist/{chunk-LMPHCVJJ.js → chunk-RAESDNU5.js} +162 -68
  141. package/dist/chunk-RBYQUXNL.js +1 -0
  142. package/dist/chunk-RCM3DT5E.js +1 -0
  143. package/dist/chunk-RGNY56L7.js +282 -0
  144. package/dist/chunk-RIK6UX2K.js +344 -0
  145. package/dist/{chunk-5LAAAXFP.js → chunk-RJA3RXO3.js} +63 -54
  146. package/dist/chunk-RJYRJ3LD.js +1 -0
  147. package/dist/chunk-RMA3NOY4.js +599 -0
  148. package/dist/{chunk-VDPK5CY4.js → chunk-RSWKKAHK.js} +143 -61
  149. package/dist/{chunk-B7N4ASYE.js → chunk-RVOIIX3V.js} +17 -45
  150. package/dist/chunk-SA2RRBGT.js +1077 -0
  151. package/dist/{chunk-7OVVSVEZ.js → chunk-SG3J4R45.js} +440 -169
  152. package/dist/chunk-SPUK7JD4.js +238 -0
  153. package/dist/chunk-SWXV2K5N.js +434 -0
  154. package/dist/chunk-SYJEPXP6.js +1303 -0
  155. package/dist/{chunk-LKFC4CS7.js → chunk-SZLI34TA.js} +18 -9
  156. package/dist/{chunk-NBEF4EPJ.js → chunk-T77WJA74.js} +131 -16
  157. package/dist/chunk-TDWWVJA4.js +630 -0
  158. package/dist/chunk-TFHI5XDR.js +610 -0
  159. package/dist/chunk-TH4PW2WU.js +17 -0
  160. package/dist/chunk-TTQ24HQX.js +12 -0
  161. package/dist/chunk-TUACVJNG.js +12 -0
  162. package/dist/{chunk-F5B3UINI.js → chunk-TUL5RUIA.js} +171 -62
  163. package/dist/{chunk-C6APNDVA.js → chunk-TYOSA7JG.js} +63 -34
  164. package/dist/chunk-TYQTMMEV.js +1 -0
  165. package/dist/{chunk-DW3L54DQ.js → chunk-TZO6YDS7.js} +53 -12
  166. package/dist/{chunk-67IZZ2MJ.js → chunk-U3ETF22F.js} +75 -30
  167. package/dist/{chunk-EDCBJV7J.js → chunk-U6BYHD2N.js} +87 -31
  168. package/dist/{chunk-ENP3BMZU.js → chunk-UF6EJXPQ.js} +16 -1
  169. package/dist/{chunk-IPUNJMAQ.js → chunk-UNNQIPGK.js} +304 -68
  170. package/dist/chunk-UQVO6AJV.js +171 -0
  171. package/dist/{chunk-FZGAAOKS.js → chunk-VFDQAAIW.js} +138 -32
  172. package/dist/chunk-VIUE3VQT.js +1 -0
  173. package/dist/{chunk-5RENVKBQ.js → chunk-VJLSSSGC.js} +126 -30
  174. package/dist/chunk-VLMT6KYT.js +350 -0
  175. package/dist/chunk-VMHGBUGS.js +35 -0
  176. package/dist/{chunk-4IZXHVFJ.js → chunk-VQKPBYW6.js} +228 -172
  177. package/dist/{chunk-G6UESEVN.js → chunk-VSSTWLC5.js} +49 -11
  178. package/dist/{chunk-TRGFFU6A.js → chunk-VZYYZRPN.js} +866 -330
  179. package/dist/{chunk-JLC6PM5S.js → chunk-WAIJCD2V.js} +128 -54
  180. package/dist/chunk-WFMQ3WKM.js +378 -0
  181. package/dist/chunk-WJ2KDRMY.js +66 -0
  182. package/dist/chunk-WKFZJO54.js +437 -0
  183. package/dist/{chunk-QEYFDRHR.js → chunk-WVVD3XOV.js} +146 -84
  184. package/dist/chunk-XAIWMSLB.js +1 -0
  185. package/dist/chunk-XBXUBBJZ.js +98 -0
  186. package/dist/chunk-XCU7MYBJ.js +1 -0
  187. package/dist/chunk-XHE4PGCI.js +717 -0
  188. package/dist/chunk-XRSJ32M3.js +331 -0
  189. package/dist/chunk-XTCVOEAW.js +1 -0
  190. package/dist/chunk-XWGXVQF6.js +58 -0
  191. package/dist/{chunk-MKSNFG7H.js → chunk-Y3XKKO5K.js} +191 -109
  192. package/dist/chunk-Y4QNMBLO.js +533 -0
  193. package/dist/chunk-Y5H4CTKO.js +1 -0
  194. package/dist/chunk-YBQIN75A.js +403 -0
  195. package/dist/{chunk-PNF3NKB5.js → chunk-YJ5PXOX3.js} +28 -11
  196. package/dist/{chunk-M656FYNH.js → chunk-YLRSRUPS.js} +63 -49
  197. package/dist/chunk-YM6MPJ4A.js +1 -0
  198. package/dist/chunk-YV7KZENV.js +200 -0
  199. package/dist/chunk-Z7I4ZSO6.js +316 -0
  200. package/dist/{chunk-EY4DD67D.js → chunk-ZIRMWD2B.js} +199 -126
  201. package/dist/chunk-ZPMG3FWU.js +75 -0
  202. package/dist/{chunk-QRUMA22E.js → chunk-ZTXMK2G7.js} +92 -43
  203. package/dist/{chunk-2OLKPG4E.js → chunk-ZVJCWXAL.js} +189 -87
  204. package/dist/{chunk-YAAHPATV.js → chunk-ZYQ23DPT.js} +49 -34
  205. package/dist/coachmark/index.js +7 -3
  206. package/dist/code-block/index.js +4 -3
  207. package/dist/color-field/index.js +12 -4
  208. package/dist/color-picker/index.js +23 -0
  209. package/dist/commerce/index.js +27 -16
  210. package/dist/confirm/index.js +31 -0
  211. package/dist/connection-card/index.js +34 -0
  212. package/dist/connectivity/index.js +3 -2
  213. package/dist/context-menu/index.js +10 -2
  214. package/dist/copy-button/index.js +3 -2
  215. package/dist/data-grid/index.js +30 -17
  216. package/dist/date-range-picker/index.js +19 -9
  217. package/dist/description-list/index.js +4 -1
  218. package/dist/device-frame/index.js +30 -0
  219. package/dist/dialog/index.js +8 -2
  220. package/dist/divider/index.js +2 -0
  221. package/dist/empty-state/index.js +13 -2
  222. package/dist/error-summary/index.js +7 -2
  223. package/dist/fab/index.js +4 -2
  224. package/dist/file-manager/index.js +33 -17
  225. package/dist/file-upload/index.js +12 -6
  226. package/dist/filter-bar/index.js +10 -6
  227. package/dist/flow-run/index.js +19 -12
  228. package/dist/form/index.js +30 -3
  229. package/dist/gallery/index.js +5 -2
  230. package/dist/hold-to-confirm/index.js +4 -2
  231. package/dist/hover-card/index.js +18 -0
  232. package/dist/icon-tile/index.js +10 -0
  233. package/dist/image/index.js +9 -0
  234. package/dist/index.d.ts +29826 -17941
  235. package/dist/index.js +197 -141
  236. package/dist/infinite-list/index.js +4 -2
  237. package/dist/inline-edit/index.js +5 -4
  238. package/dist/input/index.js +4 -3
  239. package/dist/interactions/index.js +4 -1
  240. package/dist/invoice/index.js +18 -9
  241. package/dist/job-row/index.js +22 -0
  242. package/dist/json-inspector/index.js +20 -0
  243. package/dist/kbd/index.js +2 -2
  244. package/dist/keyboard/index.js +7 -2
  245. package/dist/level-meter/index.js +9 -0
  246. package/dist/list-row/index.js +11 -3
  247. package/dist/log-viewer/index.js +9 -2
  248. package/dist/map-view/index.js +13 -2
  249. package/dist/markdown/index.js +8 -5
  250. package/dist/metric/index.js +6 -3
  251. package/dist/metric-strip/index.js +12 -0
  252. package/dist/money/index.js +11 -4
  253. package/dist/nav-drawer/index.js +6 -2
  254. package/dist/nav-header/index.js +10 -4
  255. package/dist/navigation/index.js +29 -2
  256. package/dist/notification-center/index.js +24 -10
  257. package/dist/number-roll/index.js +3 -1
  258. package/dist/onboarding-pager/index.js +22 -0
  259. package/dist/one-handed/index.js +2 -2
  260. package/dist/os-surfaces/index.js +6 -3
  261. package/dist/otp/index.js +5 -4
  262. package/dist/page-header/index.js +2 -1
  263. package/dist/pagination/index.js +4 -2
  264. package/dist/payment-method/index.js +17 -11
  265. package/dist/payment-status/index.js +22 -14
  266. package/dist/permission/index.js +18 -2
  267. package/dist/picker/index.js +17 -6
  268. package/dist/progress/index.js +7 -2
  269. package/dist/provenance/index.js +16 -0
  270. package/dist/pull-to-refresh/index.js +2 -2
  271. package/dist/qr-code/index.js +16 -0
  272. package/dist/query-builder/index.js +30 -0
  273. package/dist/radio-group/index.js +6 -4
  274. package/dist/rating/index.js +7 -2
  275. package/dist/receivables/index.js +31 -18
  276. package/dist/recording-indicator/index.js +21 -0
  277. package/dist/refund/index.js +24 -15
  278. package/dist/repeatable-rows/index.js +19 -0
  279. package/dist/save-status/index.js +5 -3
  280. package/dist/screen/index.js +3 -0
  281. package/dist/scroll-area/index.js +1 -1
  282. package/dist/search-field/index.js +8 -3
  283. package/dist/secret-field/index.js +19 -0
  284. package/dist/section-header/index.js +4 -0
  285. package/dist/segmented-control/index.js +2 -2
  286. package/dist/sheet/index.js +9 -3
  287. package/dist/shortcuts-sheet/index.js +2 -0
  288. package/dist/sign-in-screen/index.js +25 -0
  289. package/dist/skeleton/index.js +3 -1
  290. package/dist/slider/index.js +2 -1
  291. package/dist/sortable/index.js +4 -3
  292. package/dist/spinner/index.js +2 -1
  293. package/dist/split-button/index.js +17 -5
  294. package/dist/spotlight/index.js +7 -1
  295. package/dist/stack/index.js +2 -0
  296. package/dist/stage-timeline/index.js +6 -3
  297. package/dist/status-dot/index.js +6 -2
  298. package/dist/stepper/index.js +7 -3
  299. package/dist/streaming-text/index.js +2 -1
  300. package/dist/survey/index.js +24 -14
  301. package/dist/switch/index.js +6 -2
  302. package/dist/system-state/index.js +12 -4
  303. package/dist/tab-bar/index.js +10 -2
  304. package/dist/tabs/index.js +10 -2
  305. package/dist/tags-input/index.js +8 -5
  306. package/dist/text/index.js +4 -0
  307. package/dist/textarea/index.js +5 -4
  308. package/dist/thinking/index.js +4 -1
  309. package/dist/tile-rail/index.js +10 -0
  310. package/dist/time-field/index.js +15 -7
  311. package/dist/time-range-control/index.js +26 -12
  312. package/dist/timeline/index.js +2 -2
  313. package/dist/toast/index.js +4 -2
  314. package/dist/toolbar/index.js +3 -2
  315. package/dist/tour/index.js +12 -10
  316. package/dist/transcript/index.js +28 -0
  317. package/dist/truncation-notice/index.js +2 -2
  318. package/dist/update-notice/index.js +15 -8
  319. package/dist/video-player/index.js +26 -2
  320. package/dist/viewfinder/index.js +12 -4
  321. package/dist/widget/index.js +11 -4
  322. package/dist/wizard/index.js +7 -4
  323. package/package.json +13 -13
  324. package/dist/chunk-2PKYGLQ6.js +0 -268
  325. package/dist/chunk-2SWKL3AJ.js +0 -466
  326. package/dist/chunk-2TXERVVA.js +0 -1081
  327. package/dist/chunk-3DUWIYV5.js +0 -437
  328. package/dist/chunk-3NMD74ZU.js +0 -4
  329. package/dist/chunk-4DS5ZWVC.js +0 -83
  330. package/dist/chunk-6YAQBXB3.js +0 -93
  331. package/dist/chunk-74FLKD24.js +0 -237
  332. package/dist/chunk-CMTVNF3D.js +0 -104
  333. package/dist/chunk-DN7MNQIP.js +0 -799
  334. package/dist/chunk-DVGBZ3TX.js +0 -455
  335. package/dist/chunk-F3H33DQX.js +0 -300
  336. package/dist/chunk-FAJI7BSC.js +0 -443
  337. package/dist/chunk-G3AFC24V.js +0 -60
  338. package/dist/chunk-HJLPZA4X.js +0 -369
  339. package/dist/chunk-HYEOQWT7.js +0 -647
  340. package/dist/chunk-IDM7JJMO.js +0 -110
  341. package/dist/chunk-IVKMZ7BB.js +0 -326
  342. package/dist/chunk-IXKWIFWZ.js +0 -334
  343. package/dist/chunk-JV5YOTOB.js +0 -164
  344. package/dist/chunk-KFJGFLMW.js +0 -158
  345. package/dist/chunk-LQP4KEXZ.js +0 -214
  346. package/dist/chunk-NTQ2F3AU.js +0 -257
  347. package/dist/chunk-O5V4TG3V.js +0 -329
  348. package/dist/chunk-OWAMM2DK.js +0 -280
  349. package/dist/chunk-PID3NJB7.js +0 -405
  350. package/dist/chunk-QDZGFXQD.js +0 -176
  351. package/dist/chunk-QPWDDJJ4.js +0 -385
  352. package/dist/chunk-ROCUG24E.js +0 -416
  353. package/dist/chunk-RU3ZPNL6.js +0 -1986
  354. package/dist/chunk-RXSCIO6W.js +0 -153
  355. package/dist/chunk-SKWO3SZF.js +0 -2284
  356. package/dist/chunk-UQGBTPXH.js +0 -218
  357. package/dist/chunk-UYGDJWMN.js +0 -273
  358. package/dist/chunk-W74TXYFB.js +0 -107
  359. package/dist/chunk-WRDSPUE7.js +0 -417
  360. package/dist/chunk-XBZGDDMR.js +0 -105
  361. package/dist/chunk-XN4KG3P4.js +0 -1040
  362. package/dist/chunk-XQXMLMH3.js +0 -211
  363. package/dist/chunk-ZECZOOSB.js +0 -245
  364. /package/dist/{chunk-VFCUIDRT.js → chunk-3BKLBYPK.js} +0 -0
  365. /package/dist/{chunk-GEIGMWNF.js → chunk-QNZII37O.js} +0 -0
@@ -1,17 +1,17 @@
1
+ import { Slider } from './chunk-A7SWYDE5.js';
1
2
  import { storageKey, readStored, writeStored } from './chunk-NNCOFLNE.js';
2
- import { Slider } from './chunk-TDMG26JI.js';
3
- import { Textarea } from './chunk-74FLKD24.js';
4
- import { Picker } from './chunk-PID3NJB7.js';
5
- import { Progress } from './chunk-5UTRIXQ6.js';
6
- import { Sheet } from './chunk-QYPE5JX3.js';
7
- import { Chip } from './chunk-2SY63FCH.js';
8
- import { Input } from './chunk-7BUIKDD6.js';
9
- import { Button } from './chunk-E2E3I5W2.js';
3
+ import { Textarea } from './chunk-RIK6UX2K.js';
4
+ import { Progress } from './chunk-L2WMOA2V.js';
5
+ import { Chip } from './chunk-7NGMUVNU.js';
6
+ import { Picker } from './chunk-MCOZJWPU.js';
7
+ import { Sheet } from './chunk-B7JZ3N5G.js';
8
+ import { Button } from './chunk-5DTKORLI.js';
9
+ import { Input } from './chunk-KXLDK6HB.js';
10
10
  import { useLabels } from './chunk-APCWFOZW.js';
11
- import { Icon } from './chunk-UXGIW7OK.js';
11
+ import { Icon } from './chunk-PCEFCOLN.js';
12
12
  import { useResolvedMotion, springConfig } from './chunk-J64KGCGX.js';
13
13
  import * as React2 from 'react';
14
- import { View, Text, Pressable, Animated } from 'react-native';
14
+ import { View, Text, Pressable, Image, Animated, Platform, findNodeHandle, AccessibilityInfo, BackHandler } from 'react-native';
15
15
  import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
16
16
  import { PMF_OPTIONS, scaleShape, resolveQuestion, resolveText, resolveHiddenFields, surveyPages, nextPageIndex, visibleQuestions, visiblePages, pickSurveyEnding, surveyCompletion, isQuestionRequired, isAnswerEmpty, prevPageIndex, validatePage, branchedEndingId } from '@btndprojects/loam-engage';
17
17
  export { PMF_OPTIONS, SURVEY_OPERATORS, cesScore, csatScore, isAnswerEmpty, isPageVisible, matchSurveyCondition, nextPageIndex, npsBand, npsScore, prevPageIndex, scaleShape, surveyPages, surveyProgress, validatePage, visiblePages, visibleQuestions } from '@btndprojects/loam-engage';
@@ -32,6 +32,9 @@ var SURVEY_FIELD_LABELS = {
32
32
  moveDown: "Move down",
33
33
  choosePlaceholder: "Choose one",
34
34
  emailPlaceholder: "you@company.com",
35
+ datePlaceholder: "YYYY-MM-DD",
36
+ chooseFile: "Choose a file",
37
+ noFile: "No file chosen",
35
38
  score: (value, top, ends) => `Score ${value} of ${top}${ends.map((end) => ` \u2014 ${end}`).join("")}`,
36
39
  matrixScore: (row, value, points) => `${row}: ${value} of ${points}`,
37
40
  selectedOfCap: (picked, cap) => `${picked} of up to ${cap} selected`,
@@ -55,24 +58,33 @@ function SurveyField({
55
58
  error,
56
59
  foot,
57
60
  labels: labelOverrides,
61
+ disabled = false,
58
62
  children
59
63
  }) {
60
64
  const { styles } = useStyles(sheet);
65
+ const theme = useLoamTheme("survey");
61
66
  const labels = useLabels("survey", SURVEY_LABELS, labelOverrides);
62
67
  return (
63
68
  // No accessible name on the wrapper: the question text is a visible label
64
69
  // and every control below carries its own, so naming the group as well
65
70
  // makes the same sentence arrive twice.
66
- /* @__PURE__ */ jsxs(View, { style: styles.field, children: [
67
- /* @__PURE__ */ jsxs(View, { style: styles.labelRow, children: [
68
- /* @__PURE__ */ jsx(Text, { style: styles.label, children: question.text }),
69
- question.required ? /* @__PURE__ */ jsx(Text, { style: styles.requiredTag, children: labels.required }) : null
70
- ] }),
71
- question.help ? /* @__PURE__ */ jsx(Text, { style: styles.help, children: question.help }) : null,
72
- children,
73
- foot ? /* @__PURE__ */ jsx(View, { style: styles.foot, children: foot }) : null,
74
- error ? /* @__PURE__ */ jsx(SurveyFieldError, { children: error }) : null
75
- ] })
71
+ /* @__PURE__ */ jsxs(
72
+ View,
73
+ {
74
+ style: [styles.field, disabled ? { opacity: theme.state.disabledOpacity } : null],
75
+ "aria-disabled": disabled || void 0,
76
+ children: [
77
+ /* @__PURE__ */ jsxs(View, { style: styles.labelRow, children: [
78
+ /* @__PURE__ */ jsx(Text, { style: styles.label, children: question.text }),
79
+ question.required ? /* @__PURE__ */ jsx(Text, { style: styles.requiredTag, children: labels.required }) : null
80
+ ] }),
81
+ question.help ? /* @__PURE__ */ jsx(Text, { style: styles.help, children: question.help }) : null,
82
+ children,
83
+ foot ? /* @__PURE__ */ jsx(View, { style: styles.foot, children: foot }) : null,
84
+ error ? /* @__PURE__ */ jsx(SurveyFieldError, { children: error }) : null
85
+ ]
86
+ }
87
+ )
76
88
  );
77
89
  }
78
90
  function SurveyFieldError({ children }) {
@@ -87,7 +99,8 @@ function SurveyScale({
87
99
  question,
88
100
  value,
89
101
  onChange,
90
- labels: labelOverrides
102
+ labels: labelOverrides,
103
+ disabled = false
91
104
  }) {
92
105
  const theme = useLoamTheme("survey");
93
106
  const { styles } = useStyles(sheet);
@@ -106,14 +119,16 @@ function SurveyScale({
106
119
  Pressable,
107
120
  {
108
121
  accessibilityRole: "radio",
109
- accessibilityState: { checked: on },
122
+ accessibilityState: { checked: on, disabled },
123
+ disabled,
110
124
  "aria-checked": on,
111
125
  accessibilityLabel: labels.score(v, top, ends),
112
126
  onPress: () => onChange(v, true),
113
127
  style: ({ pressed }) => [
114
128
  styles.scaleCell,
115
129
  on ? styles.scaleCellOn : null,
116
- pressed && !on ? { backgroundColor: theme.state.pressed } : null
130
+ pressed && !on ? { backgroundColor: theme.state.pressed } : null,
131
+ disabled ? { opacity: theme.state.disabledOpacity } : null
117
132
  ],
118
133
  children: /* @__PURE__ */ jsx(Text, { style: [styles.scaleNumber, on ? styles.scaleNumberOn : null], children: v })
119
134
  },
@@ -161,7 +176,7 @@ function SurveyOptionRow({
161
176
  children: checked ? role === "checkbox" ? /* @__PURE__ */ jsx(Icon, { name: "check", size: theme.icon.xs, color: theme.color.accentInk }) : /* @__PURE__ */ jsx(View, { style: styles.markDot }) : null
162
177
  }
163
178
  ),
164
- /* @__PURE__ */ jsx(Text, { style: [styles.optionLabel, checked ? styles.optionLabelOn : null], children: label })
179
+ /* @__PURE__ */ jsx(Text, { style: styles.optionLabel, children: label })
165
180
  ]
166
181
  }
167
182
  );
@@ -170,7 +185,9 @@ function SurveyOptions({
170
185
  question,
171
186
  value,
172
187
  onChange,
173
- labels: labelOverrides
188
+ labels: labelOverrides,
189
+ fieldSurface,
190
+ disabled = false
174
191
  }) {
175
192
  const { styles } = useStyles(sheet);
176
193
  const labels = useLabels("survey", SURVEY_LABELS, labelOverrides);
@@ -183,6 +200,7 @@ function SurveyOptions({
183
200
  {
184
201
  label: o.label,
185
202
  checked: raw === o.value,
203
+ disabled,
186
204
  onPress: () => onChange(o.value, true)
187
205
  },
188
206
  o.value
@@ -192,6 +210,7 @@ function SurveyOptions({
192
210
  {
193
211
  label: labels.other,
194
212
  checked: isOther,
213
+ disabled,
195
214
  onPress: () => onChange(SURVEY_OTHER_PREFIX)
196
215
  }
197
216
  ) : null,
@@ -199,7 +218,9 @@ function SurveyOptions({
199
218
  Input,
200
219
  {
201
220
  size: "lg",
221
+ surface: fieldSurface,
202
222
  autoFocus: true,
223
+ editable: !disabled,
203
224
  placeholder: labels.otherPlaceholder,
204
225
  accessibilityLabel: `${question.text} \u2014 ${labels.other}`,
205
226
  value: (raw ?? SURVEY_OTHER_PREFIX).slice(SURVEY_OTHER_PREFIX.length),
@@ -208,10 +229,86 @@ function SurveyOptions({
208
229
  ) : null
209
230
  ] });
210
231
  }
232
+ function SurveyImageChoice({
233
+ question,
234
+ value,
235
+ onChange,
236
+ disabled = false
237
+ }) {
238
+ const { styles } = useStyles(sheet);
239
+ const raw = typeof value === "string" ? value : void 0;
240
+ return /* @__PURE__ */ jsx(View, { style: styles.imageGrid, accessibilityRole: "radiogroup", children: (question.options ?? []).map((o) => {
241
+ const on = raw === o.value;
242
+ return /* @__PURE__ */ jsxs(
243
+ Pressable,
244
+ {
245
+ accessibilityRole: "radio",
246
+ accessibilityState: { checked: on, disabled },
247
+ "aria-checked": on,
248
+ accessibilityLabel: o.label,
249
+ disabled,
250
+ onPress: () => onChange(o.value, true),
251
+ style: [styles.imageCard, on ? styles.optionRowOn : null],
252
+ children: [
253
+ o.image ? /* @__PURE__ */ jsx(Image, { source: { uri: o.image }, accessibilityIgnoresInvertColors: true, style: styles.imageThumb }) : /* @__PURE__ */ jsx(View, { style: [styles.imageThumb, styles.imageThumbEmpty], children: /* @__PURE__ */ jsx(Text, { style: styles.imageThumbText, children: "Image" }) }),
254
+ /* @__PURE__ */ jsx(Text, { style: styles.optionLabel, children: o.label })
255
+ ]
256
+ },
257
+ o.value
258
+ );
259
+ }) });
260
+ }
261
+ function SurveyDate({
262
+ question,
263
+ value,
264
+ onChange,
265
+ error,
266
+ fieldSurface,
267
+ labels: labelOverrides,
268
+ disabled = false
269
+ }) {
270
+ const labels = useLabels("survey", SURVEY_LABELS, labelOverrides);
271
+ return /* @__PURE__ */ jsx(
272
+ Input,
273
+ {
274
+ size: "lg",
275
+ surface: fieldSurface,
276
+ accessibilityLabel: question.text,
277
+ keyboardType: "numbers-and-punctuation",
278
+ placeholder: question.placeholder ?? labels.datePlaceholder,
279
+ error: Boolean(error),
280
+ editable: !disabled,
281
+ value: value == null ? "" : String(value),
282
+ onChangeText: (next) => onChange(next.replace(/[^\d-]/g, "").slice(0, 10))
283
+ }
284
+ );
285
+ }
286
+ function SurveyFile({
287
+ value,
288
+ onPickFile,
289
+ labels: labelOverrides,
290
+ disabled = false
291
+ }) {
292
+ const { styles } = useStyles(sheet);
293
+ const labels = useLabels("survey", SURVEY_LABELS, labelOverrides);
294
+ const name = typeof value === "string" && value ? value : void 0;
295
+ return /* @__PURE__ */ jsxs(View, { style: styles.fileRow, children: [
296
+ /* @__PURE__ */ jsx(Button, { variant: "outline", leadingIcon: "upload", disabled, onPress: onPickFile, children: labels.chooseFile }),
297
+ /* @__PURE__ */ jsx(Text, { style: styles.metaText, numberOfLines: 1, children: name ?? labels.noFile })
298
+ ] });
299
+ }
300
+ function SurveyStatement({ question }) {
301
+ const { styles } = useStyles(sheet);
302
+ return /* @__PURE__ */ jsxs(View, { style: styles.statement, children: [
303
+ /* @__PURE__ */ jsx(Text, { style: styles.statementTitle, children: question.text }),
304
+ question.help ? /* @__PURE__ */ jsx(Text, { style: styles.metaText, children: question.help }) : null
305
+ ] });
306
+ }
211
307
  function SurveyCheckboxList({
212
308
  question,
213
309
  value,
214
- onChange
310
+ onChange,
311
+ disabled = false
215
312
  }) {
216
313
  const theme = useLoamTheme("survey");
217
314
  const { styles } = useStyles(sheet);
@@ -219,7 +316,7 @@ function SurveyCheckboxList({
219
316
  const atCap = question.maxSelections != null && picked.length >= question.maxSelections;
220
317
  return /* @__PURE__ */ jsx(View, { style: styles.stackSm, children: (question.options ?? []).map((o) => {
221
318
  const on = picked.includes(o.value);
222
- const blocked = atCap && !on;
319
+ const blocked = disabled || atCap && !on;
223
320
  return /* @__PURE__ */ jsx(
224
321
  View,
225
322
  {
@@ -240,7 +337,12 @@ function SurveyCheckboxList({
240
337
  );
241
338
  }) });
242
339
  }
243
- function SurveyChips({ question, value, onChange }) {
340
+ function SurveyChips({
341
+ question,
342
+ value,
343
+ onChange,
344
+ disabled = false
345
+ }) {
244
346
  const { styles } = useStyles(sheet);
245
347
  const picked = Array.isArray(value) ? [...value] : [];
246
348
  const atCap = question.maxSelections != null && picked.length >= question.maxSelections;
@@ -253,7 +355,7 @@ function SurveyChips({ question, value, onChange }) {
253
355
  size: "md",
254
356
  selectable: true,
255
357
  selected: on,
256
- disabled: !on && atCap,
358
+ disabled: disabled || !on && atCap,
257
359
  onSelectedChange: () => onChange(on ? picked.filter((p) => p !== o.value) : [...picked, o.value]),
258
360
  children: o.label
259
361
  },
@@ -265,7 +367,8 @@ function SurveyRank({
265
367
  question,
266
368
  value,
267
369
  onChange,
268
- labels: labelOverrides
370
+ labels: labelOverrides,
371
+ disabled = false
269
372
  }) {
270
373
  const { styles } = useStyles(sheet);
271
374
  const labels = useLabels("survey", SURVEY_LABELS, labelOverrides);
@@ -292,7 +395,7 @@ function SurveyRank({
292
395
  variant: "outline",
293
396
  leadingIcon: "chevron-up",
294
397
  accessibilityLabel: `${labels.moveUp}: ${labelOf(item)}`,
295
- disabled: i === 0,
398
+ disabled: disabled || i === 0,
296
399
  onPress: () => move(i, -1)
297
400
  }
298
401
  ),
@@ -303,7 +406,7 @@ function SurveyRank({
303
406
  variant: "outline",
304
407
  leadingIcon: "chevron-down",
305
408
  accessibilityLabel: `${labels.moveDown}: ${labelOf(item)}`,
306
- disabled: i === items.length - 1,
409
+ disabled: disabled || i === items.length - 1,
307
410
  onPress: () => move(i, 1)
308
411
  }
309
412
  )
@@ -313,7 +416,8 @@ function SurveyMatrix({
313
416
  question,
314
417
  value,
315
418
  onChange,
316
- labels: labelOverrides
419
+ labels: labelOverrides,
420
+ disabled = false
317
421
  }) {
318
422
  const theme = useLoamTheme("survey");
319
423
  const { styles } = useStyles(sheet);
@@ -335,14 +439,16 @@ function SurveyMatrix({
335
439
  Pressable,
336
440
  {
337
441
  accessibilityRole: "radio",
338
- accessibilityState: { checked: on },
442
+ accessibilityState: { checked: on, disabled },
339
443
  "aria-checked": on,
444
+ disabled,
340
445
  accessibilityLabel: labels.matrixScore(row.label, v, points),
341
446
  onPress: () => onChange({ ...current, [row.value]: v }),
342
447
  style: ({ pressed }) => [
343
448
  styles.matrixScore,
344
449
  on ? styles.matrixScoreOn : null,
345
- pressed && !on ? { backgroundColor: theme.state.pressed } : null
450
+ pressed && !on ? { backgroundColor: theme.state.pressed } : null,
451
+ disabled ? { opacity: theme.state.disabledOpacity } : null
346
452
  ],
347
453
  children: /* @__PURE__ */ jsx(Text, { style: [styles.matrixNumber, on ? styles.scaleNumberOn : null], children: v })
348
454
  },
@@ -361,7 +467,8 @@ function SurveyConsent({
361
467
  question,
362
468
  value,
363
469
  onChange,
364
- error
470
+ error,
471
+ disabled = false
365
472
  }) {
366
473
  const theme = useLoamTheme("survey");
367
474
  const { styles } = useStyles(sheet);
@@ -371,21 +478,31 @@ function SurveyConsent({
371
478
  Pressable,
372
479
  {
373
480
  accessibilityRole: "checkbox",
374
- accessibilityState: { checked: on },
481
+ accessibilityState: { checked: on, disabled },
375
482
  "aria-checked": on,
376
483
  accessibilityLabel: question.text,
484
+ disabled,
377
485
  onPress: () => onChange(!on),
378
- style: [styles.consentCard, on ? styles.consentCardOn : null],
486
+ style: [
487
+ styles.consentCard,
488
+ on ? styles.consentCardOn : null,
489
+ disabled ? { opacity: theme.state.disabledOpacity } : null
490
+ ],
379
491
  children: [
380
492
  /* @__PURE__ */ jsx(View, { style: [styles.mark, styles.markSquare, on ? styles.markOn : null], children: on ? /* @__PURE__ */ jsx(Icon, { name: "check", size: theme.icon.xs, color: theme.color.accentInk }) : null }),
381
- /* @__PURE__ */ jsx(Text, { style: [styles.consentText, on ? styles.optionLabelOn : null], children: question.text })
493
+ /* @__PURE__ */ jsx(Text, { style: styles.consentText, children: question.text })
382
494
  ]
383
495
  }
384
496
  ),
385
497
  error ? /* @__PURE__ */ jsx(SurveyFieldError, { children: error }) : null
386
498
  ] });
387
499
  }
388
- function SurveySlider({ question, value, onChange }) {
500
+ function SurveySlider({
501
+ question,
502
+ value,
503
+ onChange,
504
+ disabled = false
505
+ }) {
389
506
  const { styles } = useStyles(sheet);
390
507
  const min = question.min ?? 0;
391
508
  const max = question.max ?? 100;
@@ -403,7 +520,8 @@ function SurveySlider({ question, value, onChange }) {
403
520
  step: question.step ?? 1,
404
521
  value: v,
405
522
  onValueChange: (next) => onChange(next),
406
- accessibilityLabel: question.text
523
+ accessibilityLabel: question.text,
524
+ disabled
407
525
  }
408
526
  ),
409
527
  /* @__PURE__ */ jsxs(View, { style: styles.endsRow, children: [
@@ -416,7 +534,8 @@ function SurveyBoolean({
416
534
  question,
417
535
  value,
418
536
  onChange,
419
- labels: labelOverrides
537
+ labels: labelOverrides,
538
+ disabled = false
420
539
  }) {
421
540
  const { styles } = useStyles(sheet);
422
541
  const labels = useLabels("survey", SURVEY_LABELS, labelOverrides);
@@ -436,6 +555,7 @@ function SurveyBoolean({
436
555
  fullWidth: true,
437
556
  variant: value === val ? "primary" : "outline",
438
557
  accessibilityLabel: label,
558
+ disabled,
439
559
  onPress: () => onChange(val, true),
440
560
  children: label
441
561
  }
@@ -447,17 +567,21 @@ function SurveyOpenText({
447
567
  question,
448
568
  value,
449
569
  onChange,
450
- error
570
+ error,
571
+ fieldSurface,
572
+ disabled = false
451
573
  }) {
452
574
  const text = typeof value === "string" ? value : "";
453
575
  return /* @__PURE__ */ jsx(
454
576
  Textarea,
455
577
  {
456
578
  accessibilityLabel: question.text,
579
+ surface: fieldSurface,
457
580
  placeholder: question.placeholder,
458
581
  maxLength: question.maxLength ?? 400,
459
582
  minRows: 3,
460
583
  error: Boolean(error),
584
+ disabled,
461
585
  value: text,
462
586
  onChangeText: (t) => onChange(t)
463
587
  }
@@ -468,7 +592,9 @@ function SurveyTextInput({
468
592
  value,
469
593
  onChange,
470
594
  error,
471
- labels: labelOverrides
595
+ fieldSurface,
596
+ labels: labelOverrides,
597
+ disabled = false
472
598
  }) {
473
599
  const labels = useLabels("survey", SURVEY_LABELS, labelOverrides);
474
600
  const t = question.type;
@@ -477,12 +603,14 @@ function SurveyTextInput({
477
603
  Input,
478
604
  {
479
605
  size: "lg",
606
+ surface: fieldSurface,
480
607
  accessibilityLabel: question.text,
481
608
  keyboardType: t === "number" ? "number-pad" : t === "email" ? "email-address" : "default",
482
609
  autoCapitalize: t === "email" ? "none" : "sentences",
483
610
  autoComplete: t === "email" ? "email" : void 0,
484
611
  placeholder: question.placeholder ?? (t === "email" ? labels.emailPlaceholder : void 0),
485
612
  error: Boolean(error),
613
+ editable: !disabled,
486
614
  value: text,
487
615
  onChangeText: (next) => onChange(t === "number" ? next.replace(/[^\d.-]/g, "") : next)
488
616
  }
@@ -492,7 +620,9 @@ function SurveyDropdown({
492
620
  question,
493
621
  value,
494
622
  onChange,
495
- labels: labelOverrides
623
+ fieldSurface,
624
+ labels: labelOverrides,
625
+ disabled = false
496
626
  }) {
497
627
  const labels = useLabels("survey", SURVEY_LABELS, labelOverrides);
498
628
  return /* @__PURE__ */ jsx(
@@ -504,6 +634,8 @@ function SurveyDropdown({
504
634
  placeholder: question.placeholder ?? labels.choosePlaceholder,
505
635
  title: question.text,
506
636
  size: "lg",
637
+ surface: fieldSurface,
638
+ disabled,
507
639
  accessibilityLabel: question.text
508
640
  }
509
641
  );
@@ -524,12 +656,22 @@ function SurveyQuestionField({
524
656
  const t = question.type;
525
657
  const merged = useLabels("survey", SURVEY_LABELS, labels);
526
658
  if (t === "consent") return /* @__PURE__ */ jsx(SurveyConsent, { ...props });
659
+ if (t === "statement") return /* @__PURE__ */ jsx(SurveyStatement, { ...props });
660
+ if (t === "image-choice") {
661
+ return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, disabled: props.disabled, children: /* @__PURE__ */ jsx(SurveyImageChoice, { ...props }) });
662
+ }
663
+ if (t === "date") {
664
+ return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, disabled: props.disabled, children: /* @__PURE__ */ jsx(SurveyDate, { ...props }) });
665
+ }
666
+ if (t === "file") {
667
+ return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, disabled: props.disabled, children: /* @__PURE__ */ jsx(SurveyFile, { ...props }) });
668
+ }
527
669
  const foot = (node) => node;
528
670
  if (t === "nps" || t === "csat" || t === "ces" || t === "scale") {
529
- return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, children: /* @__PURE__ */ jsx(SurveyScale, { ...props }) });
671
+ return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, disabled: props.disabled, children: /* @__PURE__ */ jsx(SurveyScale, { ...props }) });
530
672
  }
531
673
  if (t === "choice" || t === "pmf") {
532
- return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, children: /* @__PURE__ */ jsx(SurveyOptions, { ...props }) });
674
+ return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, disabled: props.disabled, children: /* @__PURE__ */ jsx(SurveyOptions, { ...props }) });
533
675
  }
534
676
  if (t === "multi" || t === "chips") {
535
677
  const picked = Array.isArray(value) ? value : [];
@@ -540,6 +682,7 @@ function SurveyQuestionField({
540
682
  question,
541
683
  error,
542
684
  labels,
685
+ disabled: props.disabled,
543
686
  foot: foot(
544
687
  cap ? /* @__PURE__ */ jsx(Text, { style: styles.metaText, children: t === "multi" ? merged.selectedOfCap(picked.length, cap) : `${picked.length} / ${cap}` }) : null
545
688
  ),
@@ -548,13 +691,13 @@ function SurveyQuestionField({
548
691
  );
549
692
  }
550
693
  if (t === "dropdown") {
551
- return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, children: /* @__PURE__ */ jsx(SurveyDropdown, { ...props }) });
694
+ return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, disabled: props.disabled, children: /* @__PURE__ */ jsx(SurveyDropdown, { ...props }) });
552
695
  }
553
696
  if (t === "boolean") {
554
- return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, children: /* @__PURE__ */ jsx(SurveyBoolean, { ...props }) });
697
+ return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, disabled: props.disabled, children: /* @__PURE__ */ jsx(SurveyBoolean, { ...props }) });
555
698
  }
556
699
  if (t === "slider") {
557
- return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, children: /* @__PURE__ */ jsx(SurveySlider, { ...props }) });
700
+ return /* @__PURE__ */ jsx(SurveyField, { question, error, labels, disabled: props.disabled, children: /* @__PURE__ */ jsx(SurveySlider, { ...props }) });
558
701
  }
559
702
  if (t === "rank") {
560
703
  return /* @__PURE__ */ jsx(
@@ -563,6 +706,7 @@ function SurveyQuestionField({
563
706
  question,
564
707
  error,
565
708
  labels,
709
+ disabled: props.disabled,
566
710
  foot: /* @__PURE__ */ jsx(Text, { style: styles.metaText, children: merged.rankHint }),
567
711
  children: /* @__PURE__ */ jsx(SurveyRank, { ...props })
568
712
  }
@@ -576,6 +720,7 @@ function SurveyQuestionField({
576
720
  question,
577
721
  error,
578
722
  labels,
723
+ disabled: props.disabled,
579
724
  foot: /* @__PURE__ */ jsx(Text, { style: styles.metaText, children: merged.answeredOf(Object.keys(current).length, (question.rows ?? []).length) }),
580
725
  children: /* @__PURE__ */ jsx(SurveyMatrix, { ...props })
581
726
  }
@@ -590,6 +735,7 @@ function SurveyQuestionField({
590
735
  question,
591
736
  error,
592
737
  labels,
738
+ disabled: props.disabled,
593
739
  foot: /* @__PURE__ */ jsxs(Text, { style: styles.metaText, children: [
594
740
  text.length,
595
741
  " / ",
@@ -605,33 +751,33 @@ function SurveyQuestionField({
605
751
  question,
606
752
  error,
607
753
  labels,
754
+ disabled: props.disabled,
608
755
  foot: question.suffix ? /* @__PURE__ */ jsx(Text, { style: styles.metaText, children: question.suffix }) : null,
609
756
  children: /* @__PURE__ */ jsx(SurveyTextInput, { ...props })
610
757
  }
611
758
  );
612
759
  }
613
760
  var sheet = createStyleSheet((theme) => ({
614
- field: { gap: theme.space[9] },
761
+ // Final 09 rhythm: help 4 below the question, the control 8 below.
762
+ field: { gap: theme.space[8] },
615
763
  labelRow: { flexDirection: "row", alignItems: "baseline", gap: theme.space[8] },
616
764
  label: {
617
765
  flexShrink: 1,
618
766
  fontFamily: theme.font.sans,
619
- fontWeight: theme.fontWeight.bold,
620
- fontSize: theme.type.callout.fontSize,
621
- lineHeight: theme.type.callout.lineHeight,
767
+ fontWeight: theme.fontWeight.semibold,
768
+ fontSize: theme.fontSize[16],
769
+ lineHeight: theme.fontSize[16] * 1.3,
622
770
  color: theme.color.text
623
771
  },
624
772
  requiredTag: {
773
+ ...theme.type.overline,
625
774
  fontFamily: theme.font.mono,
626
- fontSize: theme.type.caption2.fontSize,
627
- letterSpacing: theme.tracking.caps,
628
- textTransform: "uppercase",
629
775
  color: theme.color.text3
630
776
  },
631
777
  help: {
632
778
  fontFamily: theme.font.sans,
633
- fontSize: theme.type.footnote.fontSize,
634
- lineHeight: theme.type.footnote.lineHeight,
779
+ fontSize: theme.fontSize[12],
780
+ lineHeight: theme.fontSize[12] * 1.4,
635
781
  color: theme.color.text3,
636
782
  marginTop: -theme.space[4]
637
783
  },
@@ -644,12 +790,41 @@ var sheet = createStyleSheet((theme) => ({
644
790
  errorRow: { flexDirection: "row", alignItems: "center", gap: theme.space[7] },
645
791
  errorText: {
646
792
  fontFamily: theme.font.sans,
647
- fontWeight: theme.fontWeight.semibold,
648
- fontSize: theme.type.footnote.fontSize,
649
- color: theme.color.danger
793
+ fontSize: theme.fontSize[13],
794
+ color: theme.color.dangerOnSoft
650
795
  },
651
796
  stackXs: { gap: theme.space[6] },
652
797
  stackSm: { gap: theme.space[7] },
798
+ imageGrid: { flexDirection: "row", flexWrap: "wrap", gap: theme.space[8] },
799
+ imageCard: {
800
+ flexGrow: 1,
801
+ flexBasis: "45%",
802
+ gap: theme.space[8],
803
+ padding: theme.space[8],
804
+ borderRadius: theme.radius.md,
805
+ borderWidth: theme.borderWidth.thick,
806
+ borderColor: theme.color.borderStrong,
807
+ backgroundColor: theme.color.surface2
808
+ },
809
+ imageThumb: {
810
+ height: theme.space[80],
811
+ borderRadius: theme.radius.sm,
812
+ backgroundColor: theme.color.surface3
813
+ },
814
+ imageThumbEmpty: { alignItems: "center", justifyContent: "center" },
815
+ imageThumbText: {
816
+ fontFamily: theme.font.mono,
817
+ fontSize: theme.fontSize[12],
818
+ color: theme.color.text3
819
+ },
820
+ fileRow: { flexDirection: "row", alignItems: "center", gap: theme.space[12] },
821
+ statement: { gap: theme.space[4] },
822
+ statementTitle: {
823
+ fontFamily: theme.font.sans,
824
+ fontSize: theme.fontSize[16],
825
+ lineHeight: theme.fontSize[16] * 1.4,
826
+ color: theme.color.text
827
+ },
653
828
  stackMd: { gap: theme.space[12] },
654
829
  grow: { flex: 1 },
655
830
  scaleRow: { flexDirection: "row", gap: theme.space[4] },
@@ -682,17 +857,18 @@ var sheet = createStyleSheet((theme) => ({
682
857
  flexDirection: "row",
683
858
  alignItems: "center",
684
859
  gap: theme.space[11],
685
- minHeight: theme.tapMin + theme.space[4],
860
+ minHeight: theme.space[48],
686
861
  paddingHorizontal: theme.space[13],
687
862
  paddingVertical: theme.space[8],
688
863
  borderRadius: theme.radius.md,
689
- borderWidth: theme.borderWidth.thin,
864
+ borderWidth: theme.borderWidth.thick,
690
865
  borderColor: theme.color.borderStrong,
691
866
  backgroundColor: theme.color.surface2
692
867
  },
868
+ // Chosen: state-selected under a 1.5 accent edge; ink and weight kept (R7).
693
869
  optionRowOn: {
694
- borderColor: theme.edge.accent,
695
- backgroundColor: theme.color.accentSoft
870
+ borderColor: theme.focus.ringColor,
871
+ backgroundColor: theme.state.selected
696
872
  },
697
873
  optionLabel: {
698
874
  flex: 1,
@@ -700,7 +876,6 @@ var sheet = createStyleSheet((theme) => ({
700
876
  fontSize: theme.type.subheadline.fontSize,
701
877
  color: theme.color.text
702
878
  },
703
- optionLabelOn: { fontWeight: theme.fontWeight.bold, color: theme.color.accentOnSoft },
704
879
  mark: {
705
880
  width: theme.space[18],
706
881
  height: theme.space[18],
@@ -724,8 +899,8 @@ var sheet = createStyleSheet((theme) => ({
724
899
  alignItems: "center",
725
900
  gap: theme.space[10],
726
901
  minHeight: theme.tapMin + theme.space[4],
727
- paddingLeft: theme.space[12],
728
- paddingRight: theme.space[8],
902
+ paddingStart: theme.space[12],
903
+ paddingEnd: theme.space[8],
729
904
  paddingVertical: theme.space[6],
730
905
  borderRadius: theme.radius.md,
731
906
  borderWidth: theme.borderWidth.thin,
@@ -763,7 +938,8 @@ var sheet = createStyleSheet((theme) => ({
763
938
  matrixRow: { flexDirection: "row", gap: theme.space[5] },
764
939
  matrixScore: {
765
940
  flex: 1,
766
- height: theme.space[40],
941
+ // Touch matrix cells are 44 (Final 09).
942
+ height: theme.space[44],
767
943
  alignItems: "center",
768
944
  justifyContent: "center",
769
945
  borderRadius: theme.radius.sm,
@@ -785,11 +961,11 @@ var sheet = createStyleSheet((theme) => ({
785
961
  gap: theme.space[11],
786
962
  padding: theme.space[12],
787
963
  borderRadius: theme.radius.md,
788
- borderWidth: theme.borderWidth.thin,
964
+ borderWidth: theme.borderWidth.thick,
789
965
  borderColor: theme.color.borderStrong,
790
966
  backgroundColor: theme.color.surface2
791
967
  },
792
- consentCardOn: { borderColor: theme.edge.accent, backgroundColor: theme.color.accentSoft },
968
+ consentCardOn: { borderColor: theme.focus.ringColor, backgroundColor: theme.state.selected },
793
969
  consentText: {
794
970
  flex: 1,
795
971
  fontFamily: theme.font.sans,
@@ -863,6 +1039,8 @@ function Survey({
863
1039
  pageIndex: pageProp,
864
1040
  onPageIndexChange,
865
1041
  layout = "sheet",
1042
+ disabled = false,
1043
+ loading = false,
866
1044
  onSubmit,
867
1045
  onDismiss,
868
1046
  onAction,
@@ -879,7 +1057,10 @@ function Survey({
879
1057
  metadata,
880
1058
  urlParams,
881
1059
  labels: labelOverrides,
882
- motion = "full"
1060
+ motion = "full",
1061
+ fieldSurface,
1062
+ density = "standard",
1063
+ size = "lg"
883
1064
  }) {
884
1065
  const theme = useLoamTheme("survey");
885
1066
  const { styles } = useStyles(sheetStyles);
@@ -944,6 +1125,8 @@ function Survey({
944
1125
  }, [pageIdx, level, pageFade, pageShift, theme]);
945
1126
  const page = pages[pageIdx];
946
1127
  const [errors, setErrors] = React2.useState({});
1128
+ const fieldRefs = React2.useRef(/* @__PURE__ */ new Map());
1129
+ const focusFirst = React2.useRef(null);
947
1130
  const [submitted, setSubmitted] = React2.useState(firstPage < 0);
948
1131
  const finished = submitted || pageIdx < 0;
949
1132
  React2.useEffect(() => {
@@ -1045,8 +1228,10 @@ function Survey({
1045
1228
  [onSubmit, survey, ctx]
1046
1229
  );
1047
1230
  const advance = () => {
1231
+ if (disabled || loading) return;
1048
1232
  const found = validatePage(page, answers, ctx, locale, fallbackLocale, labels.validation);
1049
1233
  if (Object.keys(found).length) {
1234
+ focusFirst.current = visibleQuestions(page, answers, ctx).find((q) => found[q.id])?.id ?? null;
1050
1235
  setErrors(found);
1051
1236
  emitRef.current("survey_validation_failed", {
1052
1237
  page: page?.id,
@@ -1062,12 +1247,24 @@ function Survey({
1062
1247
  };
1063
1248
  advanceRef.current = advance;
1064
1249
  const back = () => {
1250
+ if (disabled || loading) return;
1065
1251
  const previous = trail.length ? trail[trail.length - 1] : prevPageIndex(survey, answers, pageIdx, ctx);
1066
1252
  if (previous < 0) return;
1067
1253
  setTrail((t2) => t2.slice(0, -1));
1068
1254
  setErrors({});
1069
1255
  setPage(previous);
1070
1256
  };
1257
+ React2.useEffect(() => {
1258
+ const id = focusFirst.current;
1259
+ focusFirst.current = null;
1260
+ const node = id ? fieldRefs.current.get(id) : null;
1261
+ if (!node) return;
1262
+ if (Platform.OS === "web") node.focus?.();
1263
+ else {
1264
+ const tag = findNodeHandle(node);
1265
+ if (tag != null) AccessibilityInfo.setAccessibilityFocus(tag);
1266
+ }
1267
+ }, [errors]);
1071
1268
  const dismiss = React2.useCallback(
1072
1269
  (reason) => {
1073
1270
  if (reason !== "done") {
@@ -1098,6 +1295,15 @@ function Survey({
1098
1295
  const allOptional = questions.length > 0 && questions.every((q) => !isQuestionRequired(q, answers, ctx) && isAnswerEmpty(q, answers[q.id]));
1099
1296
  const isLast = nextPageIndex(survey, answers, pageIdx, ctx) < 0;
1100
1297
  const canBack = trail.length > 0 || prevPageIndex(survey, answers, pageIdx, ctx) >= 0;
1298
+ const backRef = React2.useRef(null);
1299
+ backRef.current = !finished && open && canBack ? () => (back(), true) : null;
1300
+ React2.useEffect(() => {
1301
+ const sub = BackHandler.addEventListener(
1302
+ "hardwareBackPress",
1303
+ () => backRef.current?.() ?? false
1304
+ );
1305
+ return () => sub.remove();
1306
+ }, []);
1101
1307
  const content = finished ? /* @__PURE__ */ jsxs(View, { style: styles.body, children: [
1102
1308
  /* @__PURE__ */ jsx(Text, { style: styles.kicker, children: title }),
1103
1309
  /* @__PURE__ */ jsx(
@@ -1119,80 +1325,127 @@ function Survey({
1119
1325
  closeLabel: labels.close
1120
1326
  }
1121
1327
  )
1122
- ] }) : /* @__PURE__ */ jsxs(View, { style: styles.body, children: [
1123
- /* @__PURE__ */ jsxs(View, { style: styles.header, children: [
1124
- /* @__PURE__ */ jsxs(View, { style: styles.headerText, children: [
1125
- /* @__PURE__ */ jsx(Text, { style: styles.kicker, children: title }),
1126
- page?.title ? /* @__PURE__ */ jsx(Text, { style: styles.pageTitle, children: t(page.title) }) : null
1127
- ] }),
1128
- showProgress && answered.length > 1 ? /* @__PURE__ */ jsxs(Text, { style: styles.counter, children: [
1129
- position,
1130
- " / ",
1131
- answered.length
1132
- ] }) : null,
1133
- dismissible ? /* @__PURE__ */ jsx(
1134
- Pressable,
1135
- {
1136
- accessibilityRole: "button",
1137
- accessibilityLabel: labels.dismiss,
1138
- onPress: () => dismiss("user"),
1139
- hitSlop: theme.space[10],
1140
- style: styles.iconButton,
1141
- children: /* @__PURE__ */ jsx(Icon, { name: "x", size: theme.icon.sm, color: theme.color.text3 })
1142
- }
1143
- ) : null
1144
- ] }),
1145
- showProgress ? /* @__PURE__ */ jsx(
1146
- Progress,
1147
- {
1148
- size: "sm",
1149
- value: Math.max(0, position - 1),
1150
- max: Math.max(1, answered.length),
1151
- accessibilityLabel: labels.progress(title, position, answered.length),
1152
- motion
1153
- }
1154
- ) : null,
1155
- survey.intro && position === 1 ? /* @__PURE__ */ jsx(Text, { style: styles.intro, children: t(survey.intro) }) : null,
1156
- /* @__PURE__ */ jsx(
1157
- Animated.View,
1158
- {
1159
- style: [styles.questions, { opacity: pageFade, transform: [{ translateX: pageShift }] }],
1160
- children: questions.map((q) => /* @__PURE__ */ jsx(
1161
- SurveyQuestionField,
1328
+ ] }) : /* @__PURE__ */ jsxs(
1329
+ View,
1330
+ {
1331
+ style: [styles.body, density === "compact" ? styles.bodyCompact : null],
1332
+ "aria-busy": loading || void 0,
1333
+ children: [
1334
+ /* @__PURE__ */ jsxs(View, { style: styles.header, children: [
1335
+ /* @__PURE__ */ jsxs(View, { style: styles.headerText, children: [
1336
+ /* @__PURE__ */ jsx(Text, { style: styles.kicker, children: title }),
1337
+ page?.title ? /* @__PURE__ */ jsx(Text, { style: styles.pageTitle, children: t(page.title) }) : null
1338
+ ] }),
1339
+ showProgress && answered.length > 1 ? /* @__PURE__ */ jsxs(Text, { style: styles.counter, children: [
1340
+ position,
1341
+ " / ",
1342
+ answered.length
1343
+ ] }) : null,
1344
+ dismissible ? /* @__PURE__ */ jsx(
1345
+ Pressable,
1346
+ {
1347
+ accessibilityRole: "button",
1348
+ accessibilityLabel: labels.dismiss,
1349
+ onPress: () => dismiss("user"),
1350
+ hitSlop: (theme.hit.sm - theme.ctl.sm) / 2,
1351
+ style: ({ pressed }) => [
1352
+ styles.iconButton,
1353
+ pressed && { backgroundColor: theme.state.pressed }
1354
+ ],
1355
+ children: /* @__PURE__ */ jsx(Icon, { name: "x", size: theme.icon.sm, color: theme.color.text3 })
1356
+ }
1357
+ ) : null
1358
+ ] }),
1359
+ showProgress ? /* @__PURE__ */ jsx(
1360
+ Progress,
1162
1361
  {
1163
- question: q,
1164
- locale,
1165
- defaultLocale: fallbackLocale,
1166
- value: answers[q.id],
1167
- error: errors[q.id],
1168
- labels,
1169
- onChange: (value, commit) => setAnswer(q, value, commit)
1170
- },
1171
- q.id
1172
- ))
1173
- }
1174
- ),
1175
- /* @__PURE__ */ jsxs(View, { style: styles.footer, children: [
1176
- canBack ? /* @__PURE__ */ jsx(Button, { size: "lg", variant: "outline", leadingIcon: "arrow-left", onPress: back, children: labels.back }) : null,
1177
- /* @__PURE__ */ jsx(View, { style: styles.grow }),
1178
- skippable && allOptional && answered.length > 1 ? /* @__PURE__ */ jsx(
1179
- Button,
1180
- {
1181
- size: "lg",
1182
- variant: "ghost",
1183
- onPress: () => {
1184
- emitRef.current("survey_page_skipped", { page: page?.id });
1185
- setTrail((t2) => [...t2, pageIdx]);
1186
- const next = nextPageIndex(survey, answers, pageIdx);
1187
- if (next < 0) finish(answers);
1188
- else setPage(next);
1189
- },
1190
- children: labels.skip
1191
- }
1192
- ) : null,
1193
- /* @__PURE__ */ jsx(Button, { size: "lg", variant: "primary", onPress: advance, children: isLast ? labels.submit : labels.next })
1194
- ] })
1195
- ] });
1362
+ size: "sm",
1363
+ value: Math.max(0, position - 1),
1364
+ max: Math.max(1, answered.length),
1365
+ accessibilityLabel: labels.progress(title, position, answered.length),
1366
+ motion
1367
+ }
1368
+ ) : null,
1369
+ survey.intro && position === 1 ? /* @__PURE__ */ jsx(Text, { style: styles.intro, children: t(survey.intro) }) : null,
1370
+ /* @__PURE__ */ jsx(
1371
+ Animated.View,
1372
+ {
1373
+ style: [
1374
+ styles.questions,
1375
+ density === "compact" ? styles.questionsCompact : null,
1376
+ { opacity: pageFade, transform: [{ translateX: pageShift }] }
1377
+ ],
1378
+ children: questions.map((q) => /* @__PURE__ */ jsx(
1379
+ View,
1380
+ {
1381
+ ref: (node) => {
1382
+ fieldRefs.current.set(q.id, node);
1383
+ },
1384
+ ...{ tabIndex: -1 },
1385
+ children: /* @__PURE__ */ jsx(
1386
+ SurveyQuestionField,
1387
+ {
1388
+ question: q,
1389
+ locale,
1390
+ defaultLocale: fallbackLocale,
1391
+ value: answers[q.id],
1392
+ error: errors[q.id],
1393
+ labels,
1394
+ fieldSurface,
1395
+ disabled,
1396
+ onChange: (value, commit) => setAnswer(q, value, commit)
1397
+ }
1398
+ )
1399
+ },
1400
+ q.id
1401
+ ))
1402
+ }
1403
+ ),
1404
+ /* @__PURE__ */ jsxs(View, { style: styles.footer, children: [
1405
+ canBack ? /* @__PURE__ */ jsx(
1406
+ Button,
1407
+ {
1408
+ size,
1409
+ variant: "outline",
1410
+ leadingIcon: "arrow-left",
1411
+ disabled,
1412
+ onPress: back,
1413
+ children: labels.back
1414
+ }
1415
+ ) : null,
1416
+ /* @__PURE__ */ jsx(View, { style: styles.grow }),
1417
+ skippable && allOptional && answered.length > 1 ? /* @__PURE__ */ jsx(
1418
+ Button,
1419
+ {
1420
+ size,
1421
+ variant: "ghost",
1422
+ disabled,
1423
+ onPress: () => {
1424
+ if (loading) return;
1425
+ emitRef.current("survey_page_skipped", { page: page?.id });
1426
+ setTrail((t2) => [...t2, pageIdx]);
1427
+ const next = nextPageIndex(survey, answers, pageIdx);
1428
+ if (next < 0) finish(answers);
1429
+ else setPage(next);
1430
+ },
1431
+ children: labels.skip
1432
+ }
1433
+ ) : null,
1434
+ /* @__PURE__ */ jsx(
1435
+ Button,
1436
+ {
1437
+ size,
1438
+ variant: "primary",
1439
+ disabled,
1440
+ loading,
1441
+ onPress: advance,
1442
+ children: isLast ? labels.submit : labels.next
1443
+ }
1444
+ )
1445
+ ] })
1446
+ ]
1447
+ }
1448
+ );
1196
1449
  if (layout === "inline") return content;
1197
1450
  return /* @__PURE__ */ jsx(
1198
1451
  Sheet,
@@ -1208,33 +1461,35 @@ function Survey({
1208
1461
  }
1209
1462
  var sheetStyles = createStyleSheet((theme) => ({
1210
1463
  body: { gap: theme.space[16] },
1464
+ bodyCompact: { gap: theme.space[12] },
1211
1465
  header: { flexDirection: "row", alignItems: "center", gap: theme.space[9] },
1212
1466
  headerText: { flex: 1, gap: theme.space[2] },
1213
1467
  kicker: {
1468
+ ...theme.type.overline,
1214
1469
  fontFamily: theme.font.mono,
1215
- fontSize: theme.type.caption2.fontSize,
1216
- letterSpacing: theme.tracking.caps,
1217
- textTransform: "uppercase",
1218
1470
  color: theme.color.accentStrong
1219
1471
  },
1220
1472
  pageTitle: {
1221
1473
  fontFamily: theme.font.sans,
1222
- fontWeight: theme.fontWeight.bold,
1474
+ fontWeight: theme.fontWeight.semibold,
1223
1475
  fontSize: theme.type.subheadline.fontSize,
1224
1476
  color: theme.color.text
1225
1477
  },
1478
+ // Count style: mono 12 / 500, text-2.
1226
1479
  counter: {
1227
1480
  fontFamily: theme.font.mono,
1228
- fontSize: theme.type.caption2.fontSize,
1229
- color: theme.color.text3,
1481
+ fontWeight: theme.fontWeight.medium,
1482
+ fontSize: theme.fontSize[12],
1483
+ color: theme.color.text2,
1230
1484
  fontVariant: ["tabular-nums"]
1231
1485
  },
1486
+ // Ghost close: a ghost icon Button sm (30) with the 44 hit.
1232
1487
  iconButton: {
1233
1488
  width: theme.ctl.sm,
1234
1489
  height: theme.ctl.sm,
1235
1490
  alignItems: "center",
1236
1491
  justifyContent: "center",
1237
- borderRadius: theme.radius.full
1492
+ borderRadius: theme.ctl.r.sm
1238
1493
  },
1239
1494
  intro: {
1240
1495
  fontFamily: theme.font.sans,
@@ -1243,9 +1498,10 @@ var sheetStyles = createStyleSheet((theme) => ({
1243
1498
  color: theme.color.text3
1244
1499
  },
1245
1500
  questions: { gap: theme.space[20] },
1501
+ questionsCompact: { gap: theme.space[12] },
1246
1502
  footer: { flexDirection: "row", alignItems: "center", gap: theme.space[9] },
1247
1503
  grow: { flex: 1 },
1248
- pushEnd: { marginLeft: "auto" },
1504
+ pushEnd: { marginStart: "auto" },
1249
1505
  pager: { flex: 1, flexDirection: "row", alignItems: "center", gap: theme.space[5] },
1250
1506
  pagerDot: { width: theme.space[5], height: theme.space[5], borderRadius: theme.radius.full },
1251
1507
  doneBody: { gap: theme.space[11] },
@@ -1264,4 +1520,4 @@ var sheetStyles = createStyleSheet((theme) => ({
1264
1520
  }
1265
1521
  }));
1266
1522
 
1267
- export { SURVEY_FIELD_LABELS, SURVEY_OTHER_PREFIX, Survey, SurveyBoolean, SurveyCheckboxList, SurveyChips, SurveyConsent, SurveyDoneCard, SurveyDropdown, SurveyField, SurveyFieldError, SurveyMatrix, SurveyOpenText, SurveyOptionRow, SurveyOptions, SurveyPager, SurveyQuestionField, SurveyRank, SurveyScale, SurveySlider, SurveyTextInput };
1523
+ export { SURVEY_FIELD_LABELS, SURVEY_OTHER_PREFIX, Survey, SurveyBoolean, SurveyCheckboxList, SurveyChips, SurveyConsent, SurveyDate, SurveyDoneCard, SurveyDropdown, SurveyField, SurveyFieldError, SurveyFile, SurveyImageChoice, SurveyMatrix, SurveyOpenText, SurveyOptionRow, SurveyOptions, SurveyPager, SurveyQuestionField, SurveyRank, SurveyScale, SurveySlider, SurveyStatement, SurveyTextInput };