@flamingo-stack/openframe-frontend-core 0.0.399 → 0.0.400-snapshot.20260710144905

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 (147) hide show
  1. package/dist/{chunk-XBCAY6NE.js → chunk-2B5FIJE5.js} +3 -3
  2. package/dist/{chunk-JBLBFJ4N.cjs → chunk-3GXZPZHR.cjs} +32 -32
  3. package/dist/{chunk-JBLBFJ4N.cjs.map → chunk-3GXZPZHR.cjs.map} +1 -1
  4. package/dist/{chunk-BSJO5VFV.js → chunk-5P5WMTVW.js} +5 -5
  5. package/dist/{chunk-G5NDKTX6.cjs → chunk-7YKHVAUU.cjs} +40 -40
  6. package/dist/{chunk-G5NDKTX6.cjs.map → chunk-7YKHVAUU.cjs.map} +1 -1
  7. package/dist/{chunk-CRRH7RJX.js → chunk-B3IDZ6JJ.js} +5 -5
  8. package/dist/{chunk-ZDT2MBKE.cjs → chunk-BI23LOMC.cjs} +40 -40
  9. package/dist/{chunk-ZDT2MBKE.cjs.map → chunk-BI23LOMC.cjs.map} +1 -1
  10. package/dist/{chunk-NCW22SII.cjs → chunk-CG7LIPSA.cjs} +73 -73
  11. package/dist/{chunk-NCW22SII.cjs.map → chunk-CG7LIPSA.cjs.map} +1 -1
  12. package/dist/{chunk-ZSZRJWY3.js → chunk-DH6HTYOV.js} +153 -134
  13. package/dist/chunk-DH6HTYOV.js.map +1 -0
  14. package/dist/{chunk-2XVOYDRF.js → chunk-EDR55RQJ.js} +4763 -4735
  15. package/dist/chunk-EDR55RQJ.js.map +1 -0
  16. package/dist/{chunk-7OKNKZBW.cjs → chunk-F2LZ67KM.cjs} +1250 -1222
  17. package/dist/chunk-F2LZ67KM.cjs.map +1 -0
  18. package/dist/{chunk-Z5ERSGP2.js → chunk-FLDYBM25.js} +2 -2
  19. package/dist/{chunk-QNYNXSYQ.cjs → chunk-FRLLKYMO.cjs} +7 -7
  20. package/dist/{chunk-QNYNXSYQ.cjs.map → chunk-FRLLKYMO.cjs.map} +1 -1
  21. package/dist/{chunk-JWBRDNYH.cjs → chunk-J4XR6YYZ.cjs} +23 -4
  22. package/dist/chunk-J4XR6YYZ.cjs.map +1 -0
  23. package/dist/{chunk-4KWIQEZT.js → chunk-MTBFE3JF.js} +2 -2
  24. package/dist/{chunk-VVKWNVKE.js → chunk-MZPEN27A.js} +6 -6
  25. package/dist/{chunk-RIC4TCPD.cjs → chunk-PLB6Z3E4.cjs} +19 -19
  26. package/dist/{chunk-RIC4TCPD.cjs.map → chunk-PLB6Z3E4.cjs.map} +1 -1
  27. package/dist/{chunk-G3A7QHCX.js → chunk-PMR74LEE.js} +2 -2
  28. package/dist/{chunk-WBLRUO3F.cjs → chunk-Q3AO2QWK.cjs} +3 -3
  29. package/dist/{chunk-WBLRUO3F.cjs.map → chunk-Q3AO2QWK.cjs.map} +1 -1
  30. package/dist/{chunk-VOHOA3WV.cjs → chunk-Q4HI3DGY.cjs} +15 -15
  31. package/dist/{chunk-VOHOA3WV.cjs.map → chunk-Q4HI3DGY.cjs.map} +1 -1
  32. package/dist/{chunk-D5IHYUBY.cjs → chunk-QDERWRT4.cjs} +29 -29
  33. package/dist/{chunk-D5IHYUBY.cjs.map → chunk-QDERWRT4.cjs.map} +1 -1
  34. package/dist/{chunk-YWCCKB4J.cjs → chunk-QOOWYEPL.cjs} +5 -5
  35. package/dist/{chunk-YWCCKB4J.cjs.map → chunk-QOOWYEPL.cjs.map} +1 -1
  36. package/dist/{chunk-4K5XJ5EJ.js → chunk-RWKVTABY.js} +3 -3
  37. package/dist/{chunk-O5NA3ULU.cjs → chunk-TGWHUEPD.cjs} +73 -73
  38. package/dist/{chunk-O5NA3ULU.cjs.map → chunk-TGWHUEPD.cjs.map} +1 -1
  39. package/dist/{chunk-FXWURWDU.js → chunk-TZDROKLI.js} +3 -3
  40. package/dist/{chunk-4H2ICJYB.js → chunk-V3NY65ET.js} +4 -4
  41. package/dist/{chunk-A6KGHQRF.js → chunk-V4YFWSB2.js} +6 -6
  42. package/dist/{chunk-4PEC5KU6.cjs → chunk-VIEWUAFE.cjs} +12 -12
  43. package/dist/{chunk-4PEC5KU6.cjs.map → chunk-VIEWUAFE.cjs.map} +1 -1
  44. package/dist/{chunk-2L6ALD2Q.js → chunk-YON2QYWK.js} +2 -2
  45. package/dist/components/case-studies/index.cjs +9 -9
  46. package/dist/components/case-studies/index.js +3 -3
  47. package/dist/components/chat/chat-ticket-list.d.ts.map +1 -1
  48. package/dist/components/chat/guide-welcome.d.ts.map +1 -1
  49. package/dist/components/chat/index.cjs +3 -3
  50. package/dist/components/chat/index.js +2 -2
  51. package/dist/components/chat/mingo-chat-history.d.ts.map +1 -1
  52. package/dist/components/chat/mingo-welcome.d.ts.map +1 -1
  53. package/dist/components/contact/index.cjs +4 -4
  54. package/dist/components/contact/index.js +3 -3
  55. package/dist/components/docs/index.cjs +6 -6
  56. package/dist/components/docs/index.js +5 -5
  57. package/dist/components/embeds/index.cjs +4 -4
  58. package/dist/components/embeds/index.js +3 -3
  59. package/dist/components/faq/index.cjs +5 -5
  60. package/dist/components/faq/index.js +4 -4
  61. package/dist/components/features/auth/auth-benefits-panel.d.ts.map +1 -1
  62. package/dist/components/features/auth/complete-account-form.d.ts.map +1 -1
  63. package/dist/components/features/auth/create-organization-form.d.ts.map +1 -1
  64. package/dist/components/features/auth/login-form.d.ts.map +1 -1
  65. package/dist/components/features/auth/openframe-sso-login-form.d.ts.map +1 -1
  66. package/dist/components/features/auth/openframe-sso-signup-form.d.ts.map +1 -1
  67. package/dist/components/features/auth/password-reset-form.d.ts.map +1 -1
  68. package/dist/components/features/index.cjs +3 -3
  69. package/dist/components/features/index.js +2 -2
  70. package/dist/components/help-center-pages/index.cjs +22 -22
  71. package/dist/components/help-center-pages/index.js +13 -13
  72. package/dist/components/index.cjs +131 -125
  73. package/dist/components/index.cjs.map +1 -1
  74. package/dist/components/index.js +17 -11
  75. package/dist/components/index.js.map +1 -1
  76. package/dist/components/navigation/index.cjs +3 -3
  77. package/dist/components/navigation/index.js +2 -2
  78. package/dist/components/onboarding-guides/index.cjs +7 -7
  79. package/dist/components/onboarding-guides/index.js +6 -6
  80. package/dist/components/related-content/index.cjs +5 -5
  81. package/dist/components/related-content/index.js +4 -4
  82. package/dist/components/tickets/index.cjs +6 -6
  83. package/dist/components/tickets/index.js +5 -5
  84. package/dist/components/ui/data-table/data-table-header.d.ts.map +1 -1
  85. package/dist/components/ui/data-table/types.d.ts +6 -0
  86. package/dist/components/ui/data-table/types.d.ts.map +1 -1
  87. package/dist/components/ui/date-picker.d.ts +41 -4
  88. package/dist/components/ui/date-picker.d.ts.map +1 -1
  89. package/dist/components/ui/filter-modal.d.ts +16 -1
  90. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  91. package/dist/components/ui/index.cjs +9 -3
  92. package/dist/components/ui/index.cjs.map +1 -1
  93. package/dist/components/ui/index.d.ts +1 -0
  94. package/dist/components/ui/index.d.ts.map +1 -1
  95. package/dist/components/ui/index.js +8 -2
  96. package/dist/components/ui/scroll-fade.d.ts +33 -0
  97. package/dist/components/ui/scroll-fade.d.ts.map +1 -0
  98. package/dist/hooks/index.cjs +4 -2
  99. package/dist/hooks/index.cjs.map +1 -1
  100. package/dist/hooks/index.js +3 -1
  101. package/dist/hooks/ui/index.d.ts +1 -0
  102. package/dist/hooks/ui/index.d.ts.map +1 -1
  103. package/dist/hooks/ui/use-deferred-error.d.ts +16 -0
  104. package/dist/hooks/ui/use-deferred-error.d.ts.map +1 -0
  105. package/dist/index.cjs +11 -3
  106. package/dist/index.cjs.map +1 -1
  107. package/dist/index.js +10 -2
  108. package/package.json +1 -1
  109. package/src/components/chat/chat-ticket-list.tsx +8 -36
  110. package/src/components/chat/guide-welcome.tsx +5 -43
  111. package/src/components/chat/mingo-chat-history.tsx +6 -40
  112. package/src/components/chat/mingo-welcome.tsx +7 -47
  113. package/src/components/features/auth/auth-benefits-panel.tsx +1 -1
  114. package/src/components/features/auth/complete-account-form.tsx +15 -4
  115. package/src/components/features/auth/create-organization-form.tsx +14 -5
  116. package/src/components/features/auth/login-form.tsx +6 -1
  117. package/src/components/features/auth/openframe-sso-login-form.tsx +9 -2
  118. package/src/components/features/auth/openframe-sso-signup-form.tsx +18 -5
  119. package/src/components/features/auth/password-reset-form.tsx +9 -2
  120. package/src/components/ui/data-table/data-table-header.tsx +6 -3
  121. package/src/components/ui/data-table/types.ts +6 -0
  122. package/src/components/ui/date-picker.tsx +149 -41
  123. package/src/components/ui/filter-modal.tsx +57 -2
  124. package/src/components/ui/index.ts +1 -0
  125. package/src/components/ui/scroll-fade.tsx +90 -0
  126. package/src/hooks/ui/index.ts +1 -0
  127. package/src/hooks/ui/use-deferred-error.ts +38 -0
  128. package/src/stories/DatePicker.stories.tsx +4 -2
  129. package/src/stories/FilterModal.stories.tsx +33 -0
  130. package/src/stories/Input.stories.tsx +1 -1
  131. package/src/stories/auth/CreateOrganization.stories.tsx +2 -1
  132. package/dist/chunk-2XVOYDRF.js.map +0 -1
  133. package/dist/chunk-7OKNKZBW.cjs.map +0 -1
  134. package/dist/chunk-JWBRDNYH.cjs.map +0 -1
  135. package/dist/chunk-ZSZRJWY3.js.map +0 -1
  136. /package/dist/{chunk-XBCAY6NE.js.map → chunk-2B5FIJE5.js.map} +0 -0
  137. /package/dist/{chunk-BSJO5VFV.js.map → chunk-5P5WMTVW.js.map} +0 -0
  138. /package/dist/{chunk-CRRH7RJX.js.map → chunk-B3IDZ6JJ.js.map} +0 -0
  139. /package/dist/{chunk-Z5ERSGP2.js.map → chunk-FLDYBM25.js.map} +0 -0
  140. /package/dist/{chunk-4KWIQEZT.js.map → chunk-MTBFE3JF.js.map} +0 -0
  141. /package/dist/{chunk-VVKWNVKE.js.map → chunk-MZPEN27A.js.map} +0 -0
  142. /package/dist/{chunk-G3A7QHCX.js.map → chunk-PMR74LEE.js.map} +0 -0
  143. /package/dist/{chunk-4K5XJ5EJ.js.map → chunk-RWKVTABY.js.map} +0 -0
  144. /package/dist/{chunk-FXWURWDU.js.map → chunk-TZDROKLI.js.map} +0 -0
  145. /package/dist/{chunk-4H2ICJYB.js.map → chunk-V3NY65ET.js.map} +0 -0
  146. /package/dist/{chunk-A6KGHQRF.js.map → chunk-V4YFWSB2.js.map} +0 -0
  147. /package/dist/{chunk-2L6ALD2Q.js.map → chunk-YON2QYWK.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/index.cjs"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,o52EAAC","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/index.cjs"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,0o3EAAC","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/index.cjs"}
package/dist/index.js CHANGED
@@ -216,6 +216,7 @@ import {
216
216
  DataTableRowCount,
217
217
  DataTableSkeleton,
218
218
  DateFilterMenu,
219
+ DateFilterPanel,
219
220
  DatePicker,
220
221
  DatePickerInput,
221
222
  DatePickerInputSimple,
@@ -487,6 +488,7 @@ import {
487
488
  SYNTHETIC_REALTIME_ID_PREFIXES,
488
489
  ScriptArguments,
489
490
  ScriptInfoSection,
491
+ ScrollFadeOverlay,
490
492
  SearchInput,
491
493
  SectionSelector,
492
494
  Select,
@@ -901,6 +903,7 @@ import {
901
903
  useProxiedImageUrl,
902
904
  useRealtimeChunkProcessor,
903
905
  useSSE,
906
+ useScrollFade,
904
907
  useSectionNavigation,
905
908
  useSlashCommandRegistry,
906
909
  useSlashCommands,
@@ -916,7 +919,7 @@ import {
916
919
  validateEmailDomain,
917
920
  validateEmailDomainList,
918
921
  validatePhoneNumber
919
- } from "./chunk-2XVOYDRF.js";
922
+ } from "./chunk-EDR55RQJ.js";
920
923
  import {
921
924
  CommandApprovalToast,
922
925
  DEFAULT_MIN_FILL_MS,
@@ -996,6 +999,7 @@ import {
996
999
  useCopyToClipboard,
997
1000
  useCursorPaginationState,
998
1001
  useDebounce,
1002
+ useDeferredError,
999
1003
  useHeaderHeight,
1000
1004
  useHorizontalScrollbar,
1001
1005
  useHumanitySignals,
@@ -1027,7 +1031,7 @@ import {
1027
1031
  validateSchema,
1028
1032
  validateVariables,
1029
1033
  variablesToUrlParams
1030
- } from "./chunk-ZSZRJWY3.js";
1034
+ } from "./chunk-DH6HTYOV.js";
1031
1035
  import {
1032
1036
  PLAY_ICON_PATH
1033
1037
  } from "./chunk-OYGFWWLQ.js";
@@ -1482,6 +1486,7 @@ export {
1482
1486
  DataTableRowCount,
1483
1487
  DataTableSkeleton,
1484
1488
  DateFilterMenu,
1489
+ DateFilterPanel,
1485
1490
  DatePicker,
1486
1491
  DatePickerInput,
1487
1492
  DatePickerInputSimple,
@@ -1864,6 +1869,7 @@ export {
1864
1869
  ScriptGenerationIcon,
1865
1870
  ScriptIcon,
1866
1871
  ScriptInfoSection,
1872
+ ScrollFadeOverlay,
1867
1873
  SearchIcon,
1868
1874
  SearchInput,
1869
1875
  SectionSelector,
@@ -2388,6 +2394,7 @@ export {
2388
2394
  useDataTable,
2389
2395
  useDataTableContext,
2390
2396
  useDebounce,
2397
+ useDeferredError,
2391
2398
  useDynamicTheme,
2392
2399
  useSseChatAdapter as useEmbeddedChat,
2393
2400
  useEmptyStateConfig,
@@ -2421,6 +2428,7 @@ export {
2421
2428
  useQuickActionHint,
2422
2429
  useRealtimeChunkProcessor,
2423
2430
  useSSE,
2431
+ useScrollFade,
2424
2432
  useScrollToHash,
2425
2433
  useSearch,
2426
2434
  useSectionNavigation,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.399",
3
+ "version": "0.0.400-snapshot.20260710144905",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -2,6 +2,7 @@
2
2
 
3
3
  import * as React from 'react'
4
4
  import { cn } from '../../utils/cn'
5
+ import { ScrollFadeOverlay, useScrollFade } from '../ui/scroll-fade'
5
6
  import { ChatTicketItem, type ChatTicketItemData } from './entity-cards/chat-ticket-item'
6
7
 
7
8
  export interface ChatTicketListProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -15,21 +16,9 @@ export interface ChatTicketListProps extends React.HTMLAttributes<HTMLDivElement
15
16
 
16
17
  const ChatTicketList = React.forwardRef<HTMLDivElement, ChatTicketListProps>(
17
18
  ({ className, tickets, onTicketClick, isLoading = false, skeletonCount = 5, ...props }, ref) => {
18
- const scrollRef = React.useRef<HTMLDivElement>(null)
19
- const [fadeTop, setFadeTop] = React.useState(false)
20
- const [fadeBottom, setFadeBottom] = React.useState(false)
21
-
22
- const updateFade = React.useCallback(() => {
23
- const el = scrollRef.current
24
- if (!el) return
25
- setFadeTop(el.scrollTop > 0)
26
- setFadeBottom(el.scrollHeight - el.scrollTop - el.clientHeight > 1)
27
- }, [])
28
-
29
- const ticketCount = tickets.length
30
- React.useLayoutEffect(() => {
31
- updateFade()
32
- }, [ticketCount, updateFade])
19
+ // Shared scroll-shadow tracking (ui/scroll-fade) — re-measures on resize
20
+ // and content changes, so no manual ticket-count effect is needed.
21
+ const { scrollRef, fadeTop, fadeBottom, update: updateFade } = useScrollFade<HTMLDivElement>()
33
22
 
34
23
  if (isLoading) {
35
24
  return (
@@ -68,27 +57,10 @@ const ChatTicketList = React.forwardRef<HTMLDivElement, ChatTicketListProps>(
68
57
  </div>
69
58
 
70
59
  {/* Scroll-fade overlays — tinted with the page background so edge
71
- tickets fade into the surface behind the list in BOTH themes. The
72
- token flips with `data-theme` (light #fafafa, dark #161616),
73
- unlike the previous alpha mask. Card-coloured fade (#ffffff) was
74
- invisible in light theme against the items' own bg. Same token as
75
- guide-welcome. */}
76
- <div
77
- aria-hidden
78
- className={cn(
79
- 'pointer-events-none absolute inset-x-0 top-0 h-16 transition-opacity duration-150',
80
- fadeTop ? 'opacity-100' : 'opacity-0',
81
- )}
82
- style={{ background: 'linear-gradient(0deg, transparent 0%, var(--color-bg) 100%)' }}
83
- />
84
- <div
85
- aria-hidden
86
- className={cn(
87
- 'pointer-events-none absolute inset-x-0 bottom-0 h-16 transition-opacity duration-150',
88
- fadeBottom ? 'opacity-100' : 'opacity-0',
89
- )}
90
- style={{ background: 'linear-gradient(180deg, transparent 0%, var(--color-bg) 100%)' }}
91
- />
60
+ tickets fade into the surface behind the list in BOTH themes
61
+ (`--color-bg` flips with `data-theme`). Shared ui/scroll-fade. */}
62
+ <ScrollFadeOverlay edge="top" visible={fadeTop} />
63
+ <ScrollFadeOverlay edge="bottom" visible={fadeBottom} />
92
64
  </div>
93
65
  </div>
94
66
  )
@@ -3,6 +3,7 @@
3
3
  import * as React from 'react'
4
4
  import { cn } from '../../utils/cn'
5
5
  import { MingoIcon } from '../icons'
6
+ import { ScrollFadeOverlay, useScrollFade } from '../ui/scroll-fade'
6
7
  import { Skeleton } from '../ui/skeleton'
7
8
  import { ChatQuickActionRow } from './chat-quick-action-row'
8
9
  import { EntityIcon } from '../icon-display'
@@ -100,25 +101,7 @@ export function GuideWelcome({
100
101
  // Scroll-fade affordances: a 48px gradient at the top/bottom edge of the
101
102
  // scroll region, shown only while content is actually hidden in that
102
103
  // direction. (Same behaviour as MingoWelcome.)
103
- const scrollRef = React.useRef<HTMLDivElement>(null)
104
- const [scrollFade, setScrollFade] = React.useState({ top: false, bottom: false })
105
- const updateScrollFade = React.useCallback(() => {
106
- const el = scrollRef.current
107
- if (!el) return
108
- const top = el.scrollTop > 1
109
- const bottom = el.scrollTop + el.clientHeight < el.scrollHeight - 1
110
- setScrollFade((prev) =>
111
- prev.top === top && prev.bottom === bottom ? prev : { top, bottom },
112
- )
113
- }, [])
114
- React.useEffect(() => {
115
- updateScrollFade()
116
- const el = scrollRef.current
117
- if (!el || typeof ResizeObserver === 'undefined') return
118
- const ro = new ResizeObserver(updateScrollFade)
119
- ro.observe(el)
120
- return () => ro.disconnect()
121
- }, [updateScrollFade])
104
+ const { scrollRef, fadeTop, fadeBottom, update: updateScrollFade } = useScrollFade<HTMLDivElement>()
122
105
 
123
106
  // Map to the shared `ChatQuickActionRow` chip shape. In `wrap` mode every chip
124
107
  // renders (no overflow), and `onHoverStart`/`onHoverEnd` drive the composer
@@ -204,30 +187,9 @@ export function GuideWelcome({
204
187
  {children}
205
188
  </div>
206
189
 
207
- {/* Top scroll-fade — visible only when content is hidden above. */}
208
- <div
209
- aria-hidden
210
- className={cn(
211
- 'pointer-events-none absolute inset-x-0 top-0 h-12 transition-opacity duration-150',
212
- scrollFade.top ? 'opacity-100' : 'opacity-0',
213
- )}
214
- style={{
215
- background:
216
- 'linear-gradient(0deg, transparent 0%, var(--color-bg) 100%)',
217
- }}
218
- />
219
- {/* Bottom scroll-fade — visible only when content is hidden below. */}
220
- <div
221
- aria-hidden
222
- className={cn(
223
- 'pointer-events-none absolute inset-x-0 bottom-0 h-12 transition-opacity duration-150',
224
- scrollFade.bottom ? 'opacity-100' : 'opacity-0',
225
- )}
226
- style={{
227
- background:
228
- 'linear-gradient(180deg, transparent 0%, var(--color-bg) 100%)',
229
- }}
230
- />
190
+ {/* Edge scroll-fades — visible only when content is hidden beyond them. */}
191
+ <ScrollFadeOverlay edge="top" visible={fadeTop} className="h-12" />
192
+ <ScrollFadeOverlay edge="bottom" visible={fadeBottom} className="h-12" />
231
193
  </div>
232
194
 
233
195
  {/* Pinned quick-action chips above the composer — the shared
@@ -6,6 +6,7 @@ import { useDebounce } from '../../hooks/ui/use-debounce'
6
6
  import { ActionsMenuDropdown, type ActionsMenuItem } from '../ui/actions-menu'
7
7
  import { Button } from '../ui/button'
8
8
  import { Input } from '../ui/input'
9
+ import { ScrollFadeOverlay, useScrollFade } from '../ui/scroll-fade'
9
10
  import { Ellipsis01Icon, SearchIcon } from '../icons-v2-generated'
10
11
  import type { DialogItem } from './types/component.types'
11
12
 
@@ -357,24 +358,9 @@ export function MingoChatHistory({
357
358
  const groups = React.useMemo(() => groupDialogs(dialogs), [dialogs])
358
359
  const noSearchResults = groups.length === 0 && !!searchQuery?.trim()
359
360
 
360
- // Scroll-fade affordances (same pattern as MingoWelcome's greeting region).
361
- const scrollRef = React.useRef<HTMLDivElement>(null)
362
- const [fade, setFade] = React.useState({ top: false, bottom: false })
363
- const updateFade = React.useCallback(() => {
364
- const el = scrollRef.current
365
- if (!el) return
366
- const top = el.scrollTop > 1
367
- const bottom = el.scrollTop + el.clientHeight < el.scrollHeight - 1
368
- setFade((p) => (p.top === top && p.bottom === bottom ? p : { top, bottom }))
369
- }, [])
370
- React.useEffect(() => {
371
- updateFade()
372
- const el = scrollRef.current
373
- if (!el || typeof ResizeObserver === 'undefined') return
374
- const ro = new ResizeObserver(updateFade)
375
- ro.observe(el)
376
- return () => ro.disconnect()
377
- }, [updateFade, dialogs])
361
+ // Scroll-fade affordances shared ui/scroll-fade (re-measures on resize
362
+ // and content mutations, so no manual `dialogs` dependency is needed).
363
+ const { scrollRef, fadeTop, fadeBottom, update: updateFade } = useScrollFade<HTMLDivElement>()
378
364
 
379
365
  // Infinite scroll — load the next page when the sentinel enters the
380
366
  // scroll viewport.
@@ -445,28 +431,8 @@ export function MingoChatHistory({
445
431
  </div>
446
432
 
447
433
  {/* Scroll-fade — only while content is hidden in that direction. */}
448
- <div
449
- aria-hidden
450
- className={cn(
451
- 'pointer-events-none absolute inset-x-0 top-0 h-12 transition-opacity duration-150',
452
- fade.top ? 'opacity-100' : 'opacity-0',
453
- )}
454
- style={{
455
- background:
456
- 'linear-gradient(0deg, transparent 0%, var(--color-bg-card) 100%)',
457
- }}
458
- />
459
- <div
460
- aria-hidden
461
- className={cn(
462
- 'pointer-events-none absolute inset-x-0 bottom-0 h-12 transition-opacity duration-150',
463
- fade.bottom ? 'opacity-100' : 'opacity-0',
464
- )}
465
- style={{
466
- background:
467
- 'linear-gradient(180deg, transparent 0%, var(--color-bg-card) 100%)',
468
- }}
469
- />
434
+ <ScrollFadeOverlay edge="top" visible={fadeTop} color="var(--color-bg-card)" className="h-12" />
435
+ <ScrollFadeOverlay edge="bottom" visible={fadeBottom} color="var(--color-bg-card)" className="h-12" />
470
436
  </div>
471
437
  </div>
472
438
  )
@@ -7,6 +7,7 @@ import { MingoChatHistorySkeleton } from './mingo-chat-history'
7
7
  import { ChatQuickActionRow } from './chat-quick-action-row'
8
8
  import { QuickActionChipButton } from './quick-action-chip'
9
9
  import { Button } from '../ui/button'
10
+ import { ScrollFadeOverlay, useScrollFade } from '../ui/scroll-fade'
10
11
  import { XmarkIcon } from '../icons-v2-generated/signs-and-symbols/xmark-icon'
11
12
  import {
12
13
  Rocket01Icon,
@@ -231,29 +232,9 @@ export function MingoWelcome({
231
232
  }
232
233
  }, [promoStorage, promoStorageKey])
233
234
 
234
- // Scroll-fade affordances: show a 48px gradient at the top/bottom edge of the
235
- // scroll region only while content is actually hidden in that direction.
236
- const scrollRef = React.useRef<HTMLDivElement>(null)
237
- const [scrollFade, setScrollFade] = React.useState({ top: false, bottom: false })
238
- const updateScrollFade = React.useCallback(() => {
239
- const el = scrollRef.current
240
- if (!el) return
241
- const top = el.scrollTop > 1
242
- const bottom = el.scrollTop + el.clientHeight < el.scrollHeight - 1
243
- setScrollFade((prev) =>
244
- prev.top === top && prev.bottom === bottom ? prev : { top, bottom },
245
- )
246
- }, [])
247
- React.useEffect(() => {
248
- updateScrollFade()
249
- const el = scrollRef.current
250
- if (!el || typeof ResizeObserver === 'undefined') return
251
- // Recompute when the panel resizes — a taller panel may remove the need
252
- // to scroll entirely, a shorter one introduces it.
253
- const ro = new ResizeObserver(updateScrollFade)
254
- ro.observe(el)
255
- return () => ro.disconnect()
256
- }, [updateScrollFade])
235
+ // Scroll-fade affordances shared ui/scroll-fade (48px edge gradients shown
236
+ // only while content is hidden in that direction).
237
+ const { scrollRef, fadeTop, fadeBottom, update: updateScrollFade } = useScrollFade<HTMLDivElement>()
257
238
 
258
239
  const cellCount = featureCards.length
259
240
  // Last row's first index — used to drop the bottom divider on the final row.
@@ -365,30 +346,9 @@ export function MingoWelcome({
365
346
  )}
366
347
  </div>
367
348
 
368
- {/* Top scroll-fade — visible only when content is hidden above. */}
369
- <div
370
- aria-hidden
371
- className={cn(
372
- 'pointer-events-none absolute inset-x-0 top-0 h-12 transition-opacity duration-150',
373
- scrollFade.top ? 'opacity-100' : 'opacity-0',
374
- )}
375
- style={{
376
- background:
377
- 'linear-gradient(0deg, transparent 0%, var(--color-bg-card) 100%)',
378
- }}
379
- />
380
- {/* Bottom scroll-fade — visible only when content is hidden below. */}
381
- <div
382
- aria-hidden
383
- className={cn(
384
- 'pointer-events-none absolute inset-x-0 bottom-0 h-12 transition-opacity duration-150',
385
- scrollFade.bottom ? 'opacity-100' : 'opacity-0',
386
- )}
387
- style={{
388
- background:
389
- 'linear-gradient(180deg, transparent 0%, var(--color-bg-card) 100%)',
390
- }}
391
- />
349
+ {/* Edge scroll-fades — visible only when content is hidden beyond them. */}
350
+ <ScrollFadeOverlay edge="top" visible={fadeTop} color="var(--color-bg-card)" className="h-12" />
351
+ <ScrollFadeOverlay edge="bottom" visible={fadeBottom} color="var(--color-bg-card)" className="h-12" />
392
352
  </div>
393
353
  </>
394
354
  ))}
@@ -44,7 +44,7 @@ export function AuthBenefitsPanel({
44
44
  description = DEFAULT_DESCRIPTION,
45
45
  benefits = DEFAULT_BENEFITS,
46
46
  learnMoreLabel = 'Learn More About OpenFrame',
47
- learnMoreUrl = 'https://openframe.ai',
47
+ learnMoreUrl = 'https://www.flamingo.run/',
48
48
  className,
49
49
  }: AuthBenefitsPanelProps) {
50
50
  return (
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type * as React from 'react'
4
4
  import { cn } from '../../../utils/cn'
5
+ import { useDeferredError } from '../../../hooks/ui/use-deferred-error'
5
6
  import { Button } from '../../ui/button'
6
7
  import { Input } from '../../ui/input'
7
8
  import { PasswordInput } from '../../ui/password-input'
@@ -75,6 +76,12 @@ export function CompleteAccountForm({
75
76
  }: CompleteAccountFormProps) {
76
77
  const fieldsDisabled = disabled || loading
77
78
 
79
+ // Validation messages are deferred while the user is typing (shown on blur or after a pause).
80
+ const firstNameErr = useDeferredError(errors?.firstName, firstName)
81
+ const lastNameErr = useDeferredError(errors?.lastName, lastName)
82
+ const passwordErr = useDeferredError(errors?.password, password)
83
+ const confirmErr = useDeferredError(errors?.confirmPassword, confirmPassword)
84
+
78
85
  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
79
86
  if (event.key === 'Enter' && !fieldsDisabled && !submitDisabled) {
80
87
  onSubmit()
@@ -116,8 +123,9 @@ export function CompleteAccountForm({
116
123
  label="First Name"
117
124
  placeholder="Enter First Name"
118
125
  value={firstName}
119
- error={errors?.firstName}
126
+ error={firstNameErr.error}
120
127
  disabled={fieldsDisabled}
128
+ onBlur={firstNameErr.onBlur}
121
129
  onChange={(event) => onFirstNameChange(event.target.value)}
122
130
  onKeyDown={handleKeyDown}
123
131
  />
@@ -125,8 +133,9 @@ export function CompleteAccountForm({
125
133
  label="Last Name"
126
134
  placeholder="Enter Last Name"
127
135
  value={lastName}
128
- error={errors?.lastName}
136
+ error={lastNameErr.error}
129
137
  disabled={fieldsDisabled}
138
+ onBlur={lastNameErr.onBlur}
130
139
  onChange={(event) => onLastNameChange(event.target.value)}
131
140
  onKeyDown={handleKeyDown}
132
141
  />
@@ -134,8 +143,9 @@ export function CompleteAccountForm({
134
143
  label="Password"
135
144
  placeholder="Enter Password"
136
145
  value={password}
137
- error={errors?.password}
146
+ error={passwordErr.error}
138
147
  disabled={fieldsDisabled}
148
+ onBlur={passwordErr.onBlur}
139
149
  onChange={(event) => onPasswordChange(event.target.value)}
140
150
  onKeyDown={handleKeyDown}
141
151
  />
@@ -143,8 +153,9 @@ export function CompleteAccountForm({
143
153
  label="Confirm Password"
144
154
  placeholder="Confirm Password"
145
155
  value={confirmPassword}
146
- error={errors?.confirmPassword}
156
+ error={confirmErr.error}
147
157
  disabled={fieldsDisabled}
158
+ onBlur={confirmErr.onBlur}
148
159
  onChange={(event) => onConfirmPasswordChange(event.target.value)}
149
160
  onKeyDown={handleKeyDown}
150
161
  />
@@ -2,6 +2,7 @@
2
2
 
3
3
  import * as React from 'react'
4
4
  import { cn } from '../../../utils/cn'
5
+ import { useDeferredError } from '../../../hooks/ui/use-deferred-error'
5
6
  import { Button } from '../../ui/button'
6
7
  import { CheckboxBlock } from '../../ui/checkbox-block'
7
8
  import { Input } from '../../ui/input'
@@ -91,6 +92,11 @@ export function CreateOrganizationForm({
91
92
  const isSsoMode = !!ssoProviders && ssoProviders.length > 0
92
93
  const fieldsDisabled = disabled || loading || isSsoMode
93
94
 
95
+ // Validation messages are deferred while the user is typing (shown on blur or after a pause).
96
+ const emailErr = useDeferredError(errors?.email, email)
97
+ const orgNameErr = useDeferredError(errors?.organizationName, organizationName)
98
+ const domainErr = useDeferredError(errors?.domain, domain)
99
+
94
100
  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
95
101
  if (event.key === 'Enter' && !fieldsDisabled) {
96
102
  onSubmit()
@@ -116,9 +122,10 @@ export function CreateOrganizationForm({
116
122
  label="Email"
117
123
  placeholder="username@mail.com"
118
124
  value={email}
119
- error={errors?.email ?? emailStatus?.message}
120
- errorVariant={errors?.email ? 'error' : emailStatus?.variant}
125
+ error={emailErr.error ?? emailStatus?.message}
126
+ errorVariant={emailErr.error ? 'error' : emailStatus?.variant}
121
127
  disabled={fieldsDisabled}
128
+ onBlur={emailErr.onBlur}
122
129
  onChange={(event) => onEmailChange(event.target.value)}
123
130
  onKeyDown={handleKeyDown}
124
131
  />
@@ -126,8 +133,9 @@ export function CreateOrganizationForm({
126
133
  label="Organization Name"
127
134
  placeholder="Your Company Name"
128
135
  value={organizationName}
129
- error={errors?.organizationName}
136
+ error={orgNameErr.error}
130
137
  disabled={fieldsDisabled}
138
+ onBlur={orgNameErr.onBlur}
131
139
  onChange={(event) => onOrganizationNameChange(event.target.value)}
132
140
  onKeyDown={handleKeyDown}
133
141
  />
@@ -138,9 +146,10 @@ export function CreateOrganizationForm({
138
146
  label="Domain"
139
147
  placeholder={domainPlaceholder}
140
148
  value={domain}
141
- error={errors?.domain ?? domainStatus?.message}
142
- errorVariant={errors?.domain ? 'error' : domainStatus?.variant}
149
+ error={domainErr.error ?? domainStatus?.message}
150
+ errorVariant={domainErr.error ? 'error' : domainStatus?.variant}
143
151
  disabled={fieldsDisabled}
152
+ onBlur={domainErr.onBlur}
144
153
  endAdornment={domainSuffix ? <span className="whitespace-nowrap">{domainSuffix}</span> : undefined}
145
154
  onChange={(event) => onDomainChange(event.target.value)}
146
155
  onKeyDown={handleKeyDown}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type * as React from 'react'
4
4
  import { cn } from '../../../utils/cn'
5
+ import { useDeferredError } from '../../../hooks/ui/use-deferred-error'
5
6
  import { Button } from '../../ui/button'
6
7
  import { Input } from '../../ui/input'
7
8
  import type { AuthSsoProvider } from './sso-providers'
@@ -61,6 +62,9 @@ export function LoginForm({
61
62
  const isSsoMode = !!ssoProviders && ssoProviders.length > 0
62
63
  const fieldDisabled = disabled || loading || isSsoMode
63
64
 
65
+ // Validation messages are deferred while the user is typing (shown on blur or after a pause).
66
+ const emailErr = useDeferredError(errors?.email, email)
67
+
64
68
  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
65
69
  if (event.key === 'Enter' && !fieldDisabled) {
66
70
  onSubmit()
@@ -86,8 +90,9 @@ export function LoginForm({
86
90
  label="Email"
87
91
  placeholder={emailPlaceholder}
88
92
  value={email}
89
- error={errors?.email}
93
+ error={emailErr.error}
90
94
  disabled={fieldDisabled}
95
+ onBlur={emailErr.onBlur}
91
96
  onChange={(event) => onEmailChange(event.target.value)}
92
97
  onKeyDown={handleKeyDown}
93
98
  />
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type * as React from 'react'
4
4
  import { cn } from '../../../utils/cn'
5
+ import { useDeferredError } from '../../../hooks/ui/use-deferred-error'
5
6
  import { Button } from '../../ui/button'
6
7
  import { Input } from '../../ui/input'
7
8
  import { PasswordInput } from '../../ui/password-input'
@@ -60,6 +61,10 @@ export function OpenFrameSsoLoginForm({
60
61
  }: OpenFrameSsoLoginFormProps) {
61
62
  const fieldsDisabled = disabled || loading
62
63
 
64
+ // Validation messages are deferred while the user is typing (shown on blur or after a pause).
65
+ const emailErr = useDeferredError(errors?.email, email)
66
+ const passwordErr = useDeferredError(errors?.password, password)
67
+
63
68
  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
64
69
  if (event.key === 'Enter' && !fieldsDisabled && !submitDisabled) {
65
70
  onSubmit()
@@ -84,8 +89,9 @@ export function OpenFrameSsoLoginForm({
84
89
  label={emailLabel}
85
90
  placeholder={emailPlaceholder}
86
91
  value={email}
87
- error={errors?.email}
92
+ error={emailErr.error}
88
93
  disabled={fieldsDisabled}
94
+ onBlur={emailErr.onBlur}
89
95
  onChange={(event) => onEmailChange(event.target.value)}
90
96
  onKeyDown={handleKeyDown}
91
97
  />
@@ -94,8 +100,9 @@ export function OpenFrameSsoLoginForm({
94
100
  label={passwordLabel}
95
101
  placeholder={passwordPlaceholder}
96
102
  value={password}
97
- error={errors?.password}
103
+ error={passwordErr.error}
98
104
  disabled={fieldsDisabled}
105
+ onBlur={passwordErr.onBlur}
99
106
  onChange={(event) => onPasswordChange(event.target.value)}
100
107
  onKeyDown={handleKeyDown}
101
108
  />