@flamingo-stack/openframe-frontend-core 0.0.490-snapshot.20260728181420 → 0.0.490
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.
- package/dist/{chunk-VD4QDSP7.cjs → chunk-2MKUHJ3O.cjs} +40 -40
- package/dist/{chunk-VD4QDSP7.cjs.map → chunk-2MKUHJ3O.cjs.map} +1 -1
- package/dist/{chunk-EHHX22JL.cjs → chunk-3IEVA5AO.cjs} +93 -93
- package/dist/{chunk-EHHX22JL.cjs.map → chunk-3IEVA5AO.cjs.map} +1 -1
- package/dist/{chunk-IUGJAILN.js → chunk-6CFFISUC.js} +3 -3
- package/dist/{chunk-CZTKQVIQ.js → chunk-6CJ2K7BD.js} +3 -3
- package/dist/{chunk-ZEC5U5T7.js → chunk-6QK3ONDD.js} +2 -2
- package/dist/{chunk-GL33BHGZ.cjs → chunk-7I42V2OD.cjs} +73 -73
- package/dist/{chunk-GL33BHGZ.cjs.map → chunk-7I42V2OD.cjs.map} +1 -1
- package/dist/{chunk-GTMW4KY7.js → chunk-AIRNG27G.js} +6 -6
- package/dist/{chunk-ITV6LSG7.cjs → chunk-AW63ET2A.cjs} +19 -19
- package/dist/{chunk-ITV6LSG7.cjs.map → chunk-AW63ET2A.cjs.map} +1 -1
- package/dist/{chunk-TTYJAZ7P.cjs → chunk-BIKOJ4FH.cjs} +32 -58
- package/dist/chunk-BIKOJ4FH.cjs.map +1 -0
- package/dist/{chunk-35CTCUJ7.js → chunk-BZMOEWWS.js} +6 -6
- package/dist/{chunk-QNFAZIFC.cjs → chunk-D5LQMRPU.cjs} +5 -5
- package/dist/{chunk-QNFAZIFC.cjs.map → chunk-D5LQMRPU.cjs.map} +1 -1
- package/dist/{chunk-T4BUS6JV.js → chunk-EGXCWZYP.js} +3 -3
- package/dist/{chunk-HRMOCJKU.cjs → chunk-EJQUYZXF.cjs} +12 -12
- package/dist/{chunk-HRMOCJKU.cjs.map → chunk-EJQUYZXF.cjs.map} +1 -1
- package/dist/{chunk-J2V4B6FF.cjs → chunk-FY5XAW3H.cjs} +18 -18
- package/dist/{chunk-J2V4B6FF.cjs.map → chunk-FY5XAW3H.cjs.map} +1 -1
- package/dist/{chunk-YKE2KZ2Y.cjs → chunk-GMPYR3MX.cjs} +33 -33
- package/dist/{chunk-YKE2KZ2Y.cjs.map → chunk-GMPYR3MX.cjs.map} +1 -1
- package/dist/{chunk-6O3YTVLG.cjs → chunk-GUTYUMGV.cjs} +12 -12
- package/dist/{chunk-6O3YTVLG.cjs.map → chunk-GUTYUMGV.cjs.map} +1 -1
- package/dist/{chunk-QKWOBV55.js → chunk-GZK7FWJJ.js} +12 -12
- package/dist/chunk-GZK7FWJJ.js.map +1 -0
- package/dist/{chunk-7NRRONK5.cjs → chunk-IEZ3YBAP.cjs} +32 -32
- package/dist/{chunk-7NRRONK5.cjs.map → chunk-IEZ3YBAP.cjs.map} +1 -1
- package/dist/{chunk-THC3K262.cjs → chunk-KP5KRRD6.cjs} +3 -3
- package/dist/{chunk-THC3K262.cjs.map → chunk-KP5KRRD6.cjs.map} +1 -1
- package/dist/{chunk-U2JIGUXF.js → chunk-MPYDX5WX.js} +4 -4
- package/dist/{chunk-ZDUJ6BDI.js → chunk-NGEFYPY7.js} +4 -4
- package/dist/{chunk-CYIUPI7J.js → chunk-OQIMH2WQ.js} +1004 -1167
- package/dist/{chunk-CYIUPI7J.js.map → chunk-OQIMH2WQ.js.map} +1 -1
- package/dist/{chunk-WEUNPE3S.js → chunk-PB3BTZDU.js} +113 -139
- package/dist/chunk-PB3BTZDU.js.map +1 -0
- package/dist/{chunk-6WTCJI5R.js → chunk-RW2LPL72.js} +2 -2
- package/dist/{chunk-SGL6URIJ.cjs → chunk-STYA77PH.cjs} +12 -12
- package/dist/chunk-STYA77PH.cjs.map +1 -0
- package/dist/{chunk-PVSXTCJY.cjs → chunk-UZZT65PQ.cjs} +40 -40
- package/dist/{chunk-PVSXTCJY.cjs.map → chunk-UZZT65PQ.cjs.map} +1 -1
- package/dist/{chunk-2YQK6LHR.js → chunk-VDZO6IDR.js} +5 -5
- package/dist/{chunk-QF54RPHZ.js → chunk-VL2YMDPH.js} +6 -6
- package/dist/{chunk-2RTNC3KP.cjs → chunk-VUXNXWOQ.cjs} +873 -1036
- package/dist/chunk-VUXNXWOQ.cjs.map +1 -0
- package/dist/{chunk-6XNWT2KC.js → chunk-WLM3F3WU.js} +3 -3
- package/dist/components/case-studies/index.cjs +10 -10
- package/dist/components/case-studies/index.js +4 -4
- package/dist/components/chat/index.cjs +4 -4
- package/dist/components/chat/index.js +3 -3
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/features/select-button.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +23 -23
- package/dist/components/help-center-pages/index.js +14 -14
- package/dist/components/index.cjs +161 -161
- package/dist/components/index.js +12 -12
- package/dist/components/layout/page-layout.d.ts +1 -7
- package/dist/components/layout/page-layout.d.ts.map +1 -1
- package/dist/components/layout/title-block.d.ts +1 -23
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +4 -4
- package/dist/components/navigation/index.js +3 -3
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +7 -7
- package/dist/components/tickets/index.js +6 -6
- package/dist/components/ui/autocomplete.d.ts.map +1 -1
- package/dist/components/ui/checkbox-block.d.ts.map +1 -1
- package/dist/components/ui/date-picker.d.ts.map +1 -1
- package/dist/components/ui/field-wrapper.d.ts +1 -10
- package/dist/components/ui/field-wrapper.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -50
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/floating-tooltip.d.ts +1 -8
- package/dist/components/ui/floating-tooltip.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +4 -4
- package/dist/components/ui/index.js +3 -3
- package/dist/components/ui/input-trigger.d.ts.map +1 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/page-actions.d.ts +1 -7
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/search-input.d.ts.map +1 -1
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/tab-navigation.d.ts +1 -10
- package/dist/components/ui/tab-navigation.d.ts.map +1 -1
- package/dist/components/ui/tag-search-input.d.ts.map +1 -1
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/truncate-text.d.ts +2 -2
- package/dist/components/ui/truncate-text.d.ts.map +1 -1
- package/dist/hooks/index.cjs +2 -4
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +1 -3
- package/dist/hooks/ui/index.d.ts +0 -1
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/index.cjs +4 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -5
- package/package.json +1 -1
- package/src/components/features/select-button.tsx +1 -4
- package/src/components/layout/page-layout.tsx +0 -16
- package/src/components/layout/title-block.tsx +7 -106
- package/src/components/ui/.field-wrapper.md +4 -5
- package/src/components/ui/.tab-navigation.md +1 -14
- package/src/components/ui/autocomplete.tsx +1 -13
- package/src/components/ui/button/button.tsx +1 -1
- package/src/components/ui/checkbox-block.tsx +3 -27
- package/src/components/ui/date-picker.tsx +1 -15
- package/src/components/ui/field-wrapper.tsx +6 -12
- package/src/components/ui/floating-tooltip.tsx +1 -9
- package/src/components/ui/input-trigger.tsx +1 -8
- package/src/components/ui/input.tsx +1 -8
- package/src/components/ui/page-actions.tsx +30 -142
- package/src/components/ui/radio-group.tsx +3 -28
- package/src/components/ui/search-input.tsx +1 -2
- package/src/components/ui/select.tsx +0 -7
- package/src/components/ui/tab-navigation.tsx +4 -26
- package/src/components/ui/tag-search-input.tsx +2 -9
- package/src/components/ui/textarea.tsx +1 -8
- package/src/components/ui/truncate-text.tsx +18 -3
- package/src/hooks/ui/index.ts +0 -1
- package/dist/chunk-2RTNC3KP.cjs.map +0 -1
- package/dist/chunk-QKWOBV55.js.map +0 -1
- package/dist/chunk-SGL6URIJ.cjs.map +0 -1
- package/dist/chunk-TTYJAZ7P.cjs.map +0 -1
- package/dist/chunk-WEUNPE3S.js.map +0 -1
- package/dist/hooks/ui/use-is-truncated.d.ts +0 -33
- package/dist/hooks/ui/use-is-truncated.d.ts.map +0 -1
- package/src/hooks/ui/use-is-truncated.ts +0 -66
- /package/dist/{chunk-IUGJAILN.js.map → chunk-6CFFISUC.js.map} +0 -0
- /package/dist/{chunk-CZTKQVIQ.js.map → chunk-6CJ2K7BD.js.map} +0 -0
- /package/dist/{chunk-ZEC5U5T7.js.map → chunk-6QK3ONDD.js.map} +0 -0
- /package/dist/{chunk-GTMW4KY7.js.map → chunk-AIRNG27G.js.map} +0 -0
- /package/dist/{chunk-35CTCUJ7.js.map → chunk-BZMOEWWS.js.map} +0 -0
- /package/dist/{chunk-T4BUS6JV.js.map → chunk-EGXCWZYP.js.map} +0 -0
- /package/dist/{chunk-U2JIGUXF.js.map → chunk-MPYDX5WX.js.map} +0 -0
- /package/dist/{chunk-ZDUJ6BDI.js.map → chunk-NGEFYPY7.js.map} +0 -0
- /package/dist/{chunk-6WTCJI5R.js.map → chunk-RW2LPL72.js.map} +0 -0
- /package/dist/{chunk-2YQK6LHR.js.map → chunk-VDZO6IDR.js.map} +0 -0
- /package/dist/{chunk-QF54RPHZ.js.map → chunk-VL2YMDPH.js.map} +0 -0
- /package/dist/{chunk-6XNWT2KC.js.map → chunk-WLM3F3WU.js.map} +0 -0
package/dist/index.cjs.map
CHANGED
|
@@ -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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,24hFAAC","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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,g1hFAAC","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/index.cjs"}
|
package/dist/index.js
CHANGED
|
@@ -988,7 +988,7 @@ import {
|
|
|
988
988
|
walkthroughDismissCookieName,
|
|
989
989
|
withFirstTouchAttribution,
|
|
990
990
|
writeDismissCookie
|
|
991
|
-
} from "./chunk-
|
|
991
|
+
} from "./chunk-OQIMH2WQ.js";
|
|
992
992
|
import {
|
|
993
993
|
CommandApprovalToast,
|
|
994
994
|
DEFAULT_MIN_FILL_MS,
|
|
@@ -1077,7 +1077,6 @@ import {
|
|
|
1077
1077
|
useHorizontalScrollbar,
|
|
1078
1078
|
useHumanitySignals,
|
|
1079
1079
|
useImageEdgeColor,
|
|
1080
|
-
useIsTruncated,
|
|
1081
1080
|
useLgUp,
|
|
1082
1081
|
useLocalStorage,
|
|
1083
1082
|
useMarqueeEngine,
|
|
@@ -1108,7 +1107,7 @@ import {
|
|
|
1108
1107
|
validateSchema,
|
|
1109
1108
|
validateVariables,
|
|
1110
1109
|
variablesToUrlParams
|
|
1111
|
-
} from "./chunk-
|
|
1110
|
+
} from "./chunk-PB3BTZDU.js";
|
|
1112
1111
|
import {
|
|
1113
1112
|
PLAY_ICON_PATH
|
|
1114
1113
|
} from "./chunk-OYGFWWLQ.js";
|
|
@@ -1147,7 +1146,7 @@ import {
|
|
|
1147
1146
|
SkeletonText,
|
|
1148
1147
|
SplitButton,
|
|
1149
1148
|
buttonVariants
|
|
1150
|
-
} from "./chunk-
|
|
1149
|
+
} from "./chunk-GZK7FWJJ.js";
|
|
1151
1150
|
import "./chunk-6U3IUD57.js";
|
|
1152
1151
|
import "./chunk-OHPI2HRK.js";
|
|
1153
1152
|
import {
|
|
@@ -2547,7 +2546,6 @@ export {
|
|
|
2547
2546
|
useHorizontalScrollbar,
|
|
2548
2547
|
useHumanitySignals,
|
|
2549
2548
|
useImageEdgeColor,
|
|
2550
|
-
useIsTruncated,
|
|
2551
2549
|
useJetStreamDialogSubscription,
|
|
2552
2550
|
useLgUp,
|
|
2553
2551
|
useLoading,
|
package/package.json
CHANGED
|
@@ -36,12 +36,9 @@ export const SelectButton = React.forwardRef<HTMLButtonElement, SelectButtonProp
|
|
|
36
36
|
"font-body text-left w-full",
|
|
37
37
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus",
|
|
38
38
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
39
|
-
// Hover / active move the BACKGROUND only, like Input — the accent
|
|
40
|
-
// border is reserved for the selected state, so an unselected button
|
|
41
|
-
// no longer flashes "selected" under the cursor.
|
|
42
39
|
selected
|
|
43
40
|
? "bg-ods-open-yellow-light border-ods-accent hover:bg-ods-open-yellow-light-hover active:bg-ods-open-yellow-light-action"
|
|
44
|
-
: "bg-ods-card border-ods-border hover:bg-ods-bg-hover active:bg-ods-bg-active",
|
|
41
|
+
: "bg-ods-card border-ods-border hover:bg-ods-bg-hover hover:border-ods-accent active:bg-ods-bg-active active:border-ods-accent",
|
|
45
42
|
className,
|
|
46
43
|
)}
|
|
47
44
|
>
|
|
@@ -36,12 +36,6 @@
|
|
|
36
36
|
* `titleWrap` prop, forwarded to `TitleBlock`. Defaults to `false` (frozen
|
|
37
37
|
* single-line truncate). Content detail pages with CMS titles pass it to let
|
|
38
38
|
* long titles wrap instead of ellipsis-clip. Additive + default-preserving.
|
|
39
|
-
*
|
|
40
|
-
* SANCTIONED EXCEPTION (2026-07, explicit human sign-off): the OPTIONAL
|
|
41
|
-
* `subtitleRow` prop, forwarded to `TitleBlock`. Defaults to `'when-set'` (the
|
|
42
|
-
* subtitle row renders only when there is text for it). Pages whose subtitle is
|
|
43
|
-
* optional record data use it to choose how the row behaves while loading.
|
|
44
|
-
* Additive + default-preserving.
|
|
45
39
|
* ========================================================================== */
|
|
46
40
|
|
|
47
41
|
import React from 'react'
|
|
@@ -74,12 +68,6 @@ export interface PageLayoutProps {
|
|
|
74
68
|
/** When true, the title/subtitle render as line-box-accurate skeleton bars (forwarded to
|
|
75
69
|
* `TitleBlock`). Header height stays identical to the loaded state — for page skeletons. */
|
|
76
70
|
loading?: boolean
|
|
77
|
-
/** Render the header ACTIONS as placeholders (their set depends on data still loading). */
|
|
78
|
-
loadingActions?: boolean
|
|
79
|
-
/** When the subtitle row occupies the layout (forwarded to `TitleBlock`):
|
|
80
|
-
* `'when-set'` (default), `'while-loading'` (skeleton bar while loading, collapses
|
|
81
|
-
* if the record has no subtitle), or `'always'` (never collapses). */
|
|
82
|
-
subtitleRow?: 'when-set' | 'while-loading' | 'always'
|
|
83
71
|
/** When true, a long title wraps onto multiple lines instead of the frozen single-line
|
|
84
72
|
* ellipsis clamp (forwarded to `TitleBlock`). For content detail pages whose h1 is CMS
|
|
85
73
|
* data of arbitrary length. Additive + default-preserving. */
|
|
@@ -108,8 +96,6 @@ export function PageLayout({
|
|
|
108
96
|
titleSize,
|
|
109
97
|
titleAdornment,
|
|
110
98
|
loading,
|
|
111
|
-
loadingActions,
|
|
112
|
-
subtitleRow,
|
|
113
99
|
titleWrap,
|
|
114
100
|
}: PageLayoutProps) {
|
|
115
101
|
const hasActions = actions && actions.length > 0
|
|
@@ -132,8 +118,6 @@ export function PageLayout({
|
|
|
132
118
|
titleSize={titleSize}
|
|
133
119
|
titleAdornment={titleAdornment}
|
|
134
120
|
loading={loading}
|
|
135
|
-
loadingActions={loadingActions}
|
|
136
|
-
subtitleRow={subtitleRow}
|
|
137
121
|
titleWrap={titleWrap}
|
|
138
122
|
/>
|
|
139
123
|
)}
|
|
@@ -40,14 +40,6 @@
|
|
|
40
40
|
* byte-identical. Do NOT change defaults or touch anything else here.
|
|
41
41
|
*
|
|
42
42
|
* SANCTIONED EXCEPTION (2026-07, explicit human sign-off): the OPTIONAL
|
|
43
|
-
* `subtitleRow` prop. Defaults to `'when-set'` — the subtitle row keeps
|
|
44
|
-
* rendering only when `subtitle` is truthy, so every existing caller is
|
|
45
|
-
* byte-identical. The other two values decide how a page trades a header that
|
|
46
|
-
* never moves against a header that never shows an empty line; see the prop's
|
|
47
|
-
* own doc for which to pick. Additive + default-preserving; do NOT change the
|
|
48
|
-
* default.
|
|
49
|
-
*
|
|
50
|
-
* SANCTIONED EXCEPTION (2026-07, explicit human sign-off): the OPTIONAL
|
|
51
43
|
* `titleWrap` prop. Defaults to `false` — the frozen single-line `truncate`
|
|
52
44
|
* baseline is unchanged for every existing caller. Content DETAIL pages (whose
|
|
53
45
|
* h1 is CMS data of arbitrary length — releases, legal docs, FAQ docs, dev
|
|
@@ -66,27 +58,12 @@
|
|
|
66
58
|
* so its natural width drives the wrap while `truncate` still clamps a title
|
|
67
59
|
* that alone exceeds the container. The mobile (base) layout is untouched.
|
|
68
60
|
* This is the new frozen baseline; do NOT re-introduce breakpoint stacking.
|
|
69
|
-
*
|
|
70
|
-
* SANCTIONED EXCEPTION (2026-07, explicit human sign-off): overflow tooltips on
|
|
71
|
-
* the title and subtitle. This one CHANGES the baseline for every caller: the
|
|
72
|
-
* native `title=""` attribute on both is replaced by the ODS `FloatingTooltip`,
|
|
73
|
-
* armed only when the text is genuinely clipped (`useIsTruncated`). Both stay
|
|
74
|
-
* single-line — that is the design, and the tooltip is what makes a clipped
|
|
75
|
-
* title readable instead of merely pretty. Nothing is lost for assistive tech:
|
|
76
|
-
* `text-overflow: ellipsis` never hid the text from the accessibility tree, so
|
|
77
|
-
* the full string was always exposed; the attribute only ever served a mouse.
|
|
78
|
-
* The wrapper `div` the tooltip needs goes OUTSIDE the `h1`/`p` — never inside:
|
|
79
|
-
* a `div` inside a `p` is auto-closed by the HTML parser, which would split the
|
|
80
|
-
* subtitle paragraph and desync hydration. The `titleWrap` branch is untouched
|
|
81
|
-
* (wrapped text never clips, so it never needs a tooltip).
|
|
82
61
|
* ========================================================================== */
|
|
83
62
|
|
|
84
63
|
import React from 'react'
|
|
85
|
-
import { useIsTruncated } from '../../hooks/ui/use-is-truncated'
|
|
86
64
|
import { cn } from '../../utils/cn'
|
|
87
65
|
import type { ActionsMenuGroup } from '../ui/actions-menu'
|
|
88
66
|
import { EntityImage } from '../ui/entity-image'
|
|
89
|
-
import { FloatingTooltip } from '../ui/floating-tooltip'
|
|
90
67
|
import { PageActions, type PageActionButton } from '../ui/page-actions'
|
|
91
68
|
import { BackButton } from './back-button'
|
|
92
69
|
|
|
@@ -129,28 +106,6 @@ export interface TitleBlockProps {
|
|
|
129
106
|
* (typography + surrounding markup unchanged, so header height is identical to loaded).
|
|
130
107
|
* Additive + default-preserving: omit it and every existing caller is byte-identical. */
|
|
131
108
|
loading?: boolean
|
|
132
|
-
/**
|
|
133
|
-
* Render the ACTIONS as placeholders too. Separate from `loading` on purpose:
|
|
134
|
-
* a page whose action set is already final (it depends on the route, not on
|
|
135
|
-
* the record) keeps showing its real buttons while the title loads.
|
|
136
|
-
*/
|
|
137
|
-
loadingActions?: boolean
|
|
138
|
-
/**
|
|
139
|
-
* When the subtitle row occupies the layout. The subtitle is often optional
|
|
140
|
-
* RECORD data — unknown while loading, sometimes absent afterwards — and there
|
|
141
|
-
* is no setting that both fills the loading header and never leaves a blank
|
|
142
|
-
* line, so the caller picks which one matters.
|
|
143
|
-
*
|
|
144
|
-
* - `'when-set'` (default) — only when `subtitle` has text.
|
|
145
|
-
* - `'while-loading'` — also during `loading`, as a skeleton bar. The header
|
|
146
|
-
* looks complete while it loads, and the row collapses if the record turns
|
|
147
|
-
* out to have no subtitle (so that case settles one line shorter).
|
|
148
|
-
* - `'always'` — the row never collapses; an empty subtitle holds its line
|
|
149
|
-
* with an invisible spacer. The header cannot change height. Use it when the
|
|
150
|
-
* loaded page ALWAYS has a subtitle — typically a standalone skeleton
|
|
151
|
-
* component matching a page whose subtitle is guaranteed.
|
|
152
|
-
*/
|
|
153
|
-
subtitleRow?: 'when-set' | 'while-loading' | 'always'
|
|
154
109
|
/** When true, a long title WRAPS onto multiple lines instead of the frozen single-line
|
|
155
110
|
* ellipsis clamp. For content detail pages whose h1 is CMS data of arbitrary length.
|
|
156
111
|
* Additive + default-preserving: omit it and every existing caller is byte-identical. */
|
|
@@ -174,22 +129,6 @@ function TitleTextSkeleton({ widthClass, heightClass }: { widthClass: string; he
|
|
|
174
129
|
)
|
|
175
130
|
}
|
|
176
131
|
|
|
177
|
-
/**
|
|
178
|
-
* Bar geometry per title size, following the ODS type scale across breakpoints
|
|
179
|
-
* (`md` = 800px, `lg` = 1280px here — the SAME widths the typography tokens
|
|
180
|
-
* switch at, so bar and text step together).
|
|
181
|
-
*
|
|
182
|
-
* `h2` needs no `lg` step because `text-h2` has none: it is 24/32 on mobile and
|
|
183
|
-
* 32/40 from tablet up. `text-h1` scales at both breakpoints (40 → 48 → 56), so
|
|
184
|
-
* its bar does too — reusing the h2 bar there would leave a stamp-sized smudge
|
|
185
|
-
* inside a 64px line. Heights stay well under the line box's ascent on purpose;
|
|
186
|
-
* see `TitleTextSkeleton` for why that is what keeps the header height honest.
|
|
187
|
-
*/
|
|
188
|
-
const TITLE_SKELETON_SIZE = {
|
|
189
|
-
h1: { width: 'w-56 md:w-80 lg:w-96', height: 'h-7 md:h-8 lg:h-9' },
|
|
190
|
-
h2: { width: 'w-48 md:w-72', height: 'h-4 md:h-6' },
|
|
191
|
-
} as const
|
|
192
|
-
|
|
193
132
|
export function TitleBlock({
|
|
194
133
|
title,
|
|
195
134
|
subtitle,
|
|
@@ -204,28 +143,14 @@ export function TitleBlock({
|
|
|
204
143
|
titleSize = 'h2',
|
|
205
144
|
titleAdornment,
|
|
206
145
|
loading,
|
|
207
|
-
loadingActions,
|
|
208
|
-
subtitleRow = 'when-set',
|
|
209
146
|
titleWrap = false,
|
|
210
147
|
}: TitleBlockProps) {
|
|
211
|
-
const hasSubtitleRow =
|
|
212
|
-
!!subtitle || subtitleRow === 'always' || (subtitleRow === 'while-loading' && !!loading)
|
|
213
148
|
const hasActions = actions && actions.length > 0
|
|
214
149
|
const hasMenuActions = !!menuActions && menuActions.some(g => g.items.length > 0)
|
|
215
150
|
const titleClass = titleSize === 'h1' ? 'text-h1' : 'text-h2'
|
|
216
151
|
// Frozen baseline is the single-line `truncate`; `titleWrap` swaps it for
|
|
217
152
|
// multi-line wrapping (break-words guards pathological unbroken tokens).
|
|
218
153
|
const titleOverflowClass = titleWrap ? 'break-words' : 'truncate'
|
|
219
|
-
const skeletonSize = TITLE_SKELETON_SIZE[titleSize]
|
|
220
|
-
|
|
221
|
-
// Exactly one title element renders per pass, so one ref covers every branch.
|
|
222
|
-
// The tooltip arms itself only on real clipping — repeating a fully visible
|
|
223
|
-
// title back to the user is noise, and `titleWrap`/loading never clip at all.
|
|
224
|
-
const { ref: titleRef, isTruncated: titleTruncated } = useIsTruncated<HTMLHeadingElement>(loading ? null : title)
|
|
225
|
-
const { ref: subtitleRef, isTruncated: subtitleTruncated } = useIsTruncated<HTMLParagraphElement>(
|
|
226
|
-
loading ? null : subtitle,
|
|
227
|
-
)
|
|
228
|
-
const titleNode = loading ? <TitleTextSkeleton widthClass={skeletonSize.width} heightClass={skeletonSize.height} /> : title
|
|
229
154
|
|
|
230
155
|
return (
|
|
231
156
|
<div
|
|
@@ -258,7 +183,7 @@ export function TitleBlock({
|
|
|
258
183
|
className="hidden md:inline-flex"
|
|
259
184
|
/>
|
|
260
185
|
)}
|
|
261
|
-
{(image ||
|
|
186
|
+
{(image || subtitle || loading) ? (
|
|
262
187
|
<div className="flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full">
|
|
263
188
|
{image && (
|
|
264
189
|
<EntityImage
|
|
@@ -271,32 +196,15 @@ export function TitleBlock({
|
|
|
271
196
|
{(loading || title) && (
|
|
272
197
|
titleAdornment ? (
|
|
273
198
|
<div className="flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full">
|
|
274
|
-
{
|
|
275
|
-
now the flex item, and without it the row refuses to
|
|
276
|
-
shrink and pushes the adornment out. */}
|
|
277
|
-
<FloatingTooltip content={title} side="bottom" disabled={!titleTruncated} triggerClassName="min-w-0">
|
|
278
|
-
<h1 ref={titleRef} className={cn(titleClass, 'text-ods-text-primary min-w-0', titleOverflowClass)}>{titleNode}</h1>
|
|
279
|
-
</FloatingTooltip>
|
|
199
|
+
<h1 className={cn(titleClass, 'text-ods-text-primary min-w-0', titleOverflowClass)} title={title}>{loading ? <TitleTextSkeleton widthClass="w-48 md:w-72" heightClass="h-4 md:h-6" /> : title}</h1>
|
|
280
200
|
<span className="shrink-0">{titleAdornment}</span>
|
|
281
201
|
</div>
|
|
282
202
|
) : (
|
|
283
|
-
<
|
|
284
|
-
<h1 ref={titleRef} className={cn(titleClass, 'text-ods-text-primary', titleOverflowClass)}>{titleNode}</h1>
|
|
285
|
-
</FloatingTooltip>
|
|
203
|
+
<h1 className={cn(titleClass, 'text-ods-text-primary', titleOverflowClass)} title={title}>{loading ? <TitleTextSkeleton widthClass="w-48 md:w-72" heightClass="h-4 md:h-6" /> : title}</h1>
|
|
286
204
|
)
|
|
287
205
|
)}
|
|
288
|
-
{
|
|
289
|
-
|
|
290
|
-
empty `p` collapses to zero height (its only content would be
|
|
291
|
-
collapsible whitespace), which is exactly the shift that mode
|
|
292
|
-
exists to prevent. Hidden from AT — it carries no meaning. */
|
|
293
|
-
<FloatingTooltip content={subtitle} side="bottom" disabled={!subtitleTruncated}>
|
|
294
|
-
<p
|
|
295
|
-
ref={subtitleRef}
|
|
296
|
-
className="text-h6 text-ods-text-secondary truncate"
|
|
297
|
-
aria-hidden={!loading && !subtitle ? true : undefined}
|
|
298
|
-
>{loading ? <TitleTextSkeleton widthClass="w-28 md:w-36" heightClass="h-2.5 md:h-3" /> : (subtitle || '\u00A0')}</p>
|
|
299
|
-
</FloatingTooltip>
|
|
206
|
+
{subtitle && (
|
|
207
|
+
<p className="text-h6 text-ods-text-secondary truncate" title={subtitle}>{loading ? <TitleTextSkeleton widthClass="w-28 md:w-36" heightClass="h-2.5 md:h-3" /> : subtitle}</p>
|
|
300
208
|
)}
|
|
301
209
|
</div>
|
|
302
210
|
</div>
|
|
@@ -304,9 +212,7 @@ export function TitleBlock({
|
|
|
304
212
|
title && (
|
|
305
213
|
titleAdornment ? (
|
|
306
214
|
<div className="flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full">
|
|
307
|
-
<
|
|
308
|
-
<h1 ref={titleRef} className={cn(titleClass, 'text-ods-text-primary min-w-0', titleOverflowClass)}>{title}</h1>
|
|
309
|
-
</FloatingTooltip>
|
|
215
|
+
<h1 className={cn(titleClass, 'text-ods-text-primary min-w-0', titleOverflowClass)} title={title}>{title}</h1>
|
|
310
216
|
<span className="shrink-0">{titleAdornment}</span>
|
|
311
217
|
</div>
|
|
312
218
|
) : (
|
|
@@ -320,18 +226,13 @@ export function TitleBlock({
|
|
|
320
226
|
)}
|
|
321
227
|
</div>
|
|
322
228
|
|
|
323
|
-
{
|
|
324
|
-
is a page that does not YET know its action set, which is exactly the
|
|
325
|
-
page that passes `actions={[]}` — gating on `hasActions` alone would
|
|
326
|
-
render nothing and then pop the real buttons in. */}
|
|
327
|
-
{(hasActions || hasMenuActions || selector || loadingActions) && (
|
|
229
|
+
{(hasActions || hasMenuActions || selector) && (
|
|
328
230
|
<div className="flex gap-2 items-center shrink-0">
|
|
329
231
|
<PageActions
|
|
330
232
|
variant={actionsVariant}
|
|
331
233
|
actions={actions ?? []}
|
|
332
234
|
menuActions={menuActions}
|
|
333
235
|
selector={selector}
|
|
334
|
-
loading={loadingActions}
|
|
335
236
|
/>
|
|
336
237
|
</div>
|
|
337
238
|
)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
1
|
+
<!-- source-hash: bd15d4489bb0eca1b2faabacba129705 -->
|
|
2
2
|
A layout wrapper component that adds an optional label above and a status message below any form field, handling the visual chrome (label + feedback text) while letting the field itself remain unstyled.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
@@ -11,16 +11,15 @@ A `forwardRef` component that wraps form fields with consistent label and feedba
|
|
|
11
11
|
| Prop | Type | Default | Description |
|
|
12
12
|
|------|------|---------|-------------|
|
|
13
13
|
| `label` | `string` | — | Label text rendered above the field |
|
|
14
|
-
| `error` | `string` | — | Status/feedback message rendered below the field
|
|
14
|
+
| `error` | `string` | — | Status/feedback message rendered below the field |
|
|
15
15
|
| `errorVariant` | `"error" \| "warning" \| "success" \| "muted"` | `"error"` | Color variant for the feedback message |
|
|
16
16
|
| `className` | `string` | — | Additional class applied to the outer wrapper |
|
|
17
17
|
| `children` | `React.ReactNode` | — | The field element(s) to wrap |
|
|
18
18
|
|
|
19
19
|
**Behavior:**
|
|
20
20
|
- When neither `label` nor `error` is present, the wrapper renders as `contents` (no layout box introduced).
|
|
21
|
-
- When either exists, it renders as a full-width
|
|
22
|
-
- The feedback message
|
|
23
|
-
- The message is positioned **absolutely** (`bottom-0` + `translate-y-full`), so showing or hiding it never changes the field's height — no layout shift on validation. The trade-off: it hangs BELOW the wrapper box and overlaps whatever follows, so a form stacking fields must leave at least ~20px of vertical gap (e.g. `gap-[var(--spacing-system-lf)]`) for it to land in clear space. `CheckboxBlock` uses the same treatment.
|
|
21
|
+
- When either exists, it renders as a full-width flex column.
|
|
22
|
+
- The feedback message clamps to 2 lines with ellipsis; the full text is accessible via the native `title` tooltip.
|
|
24
23
|
|
|
25
24
|
**Color Variants:**
|
|
26
25
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- source-hash:
|
|
1
|
+
<!-- source-hash: 4f81360202d7fa9875b28cdae48c29a5 -->
|
|
2
2
|
Accessible, scrollable tab navigation bar component with optional URL synchronization, overflow scroll shadows, and support for both controlled and URL-driven active tab state.
|
|
3
3
|
|
|
4
4
|
## Key Components
|
|
@@ -46,19 +46,6 @@ Configuration object for URL synchronization:
|
|
|
46
46
|
{(activeTab) => <ContentPanel tab={activeTab} />}
|
|
47
47
|
</TabNavigation>
|
|
48
48
|
|
|
49
|
-
// Render prop with the pending flag. The tab BODY is deferred
|
|
50
|
-
// (`useDeferredValue`), so the underline moves instantly while the body keeps
|
|
51
|
-
// showing the previous tab until the new one is ready — no Suspense-fallback
|
|
52
|
-
// flash. `isStale` is true during that window; mark the body so stale data
|
|
53
|
-
// doesn't read as fresh data.
|
|
54
|
-
<TabNavigation tabs={tabs} urlSync>
|
|
55
|
-
{(activeTab, { isStale }) => (
|
|
56
|
-
<div className={cn(isStale && 'opacity-60 transition-opacity')}>
|
|
57
|
-
<ContentPanel tab={activeTab} />
|
|
58
|
-
</div>
|
|
59
|
-
)}
|
|
60
|
-
</TabNavigation>
|
|
61
|
-
|
|
62
49
|
// Stretched tabs with forced gradients
|
|
63
50
|
<TabNavigation
|
|
64
51
|
tabs={tabs}
|
|
@@ -124,8 +124,7 @@ const innerInputStyles = cn(
|
|
|
124
124
|
"flex-1 min-w-[60px] bg-transparent border-none outline-none",
|
|
125
125
|
"text-h4",
|
|
126
126
|
"text-ods-text-primary placeholder:text-ods-text-secondary",
|
|
127
|
-
|
|
128
|
-
"disabled:cursor-not-allowed disabled:text-ods-text-disabled disabled:placeholder:text-ods-border"
|
|
127
|
+
"disabled:cursor-not-allowed"
|
|
129
128
|
)
|
|
130
129
|
|
|
131
130
|
function AutocompleteInner<T = string>(
|
|
@@ -422,9 +421,6 @@ function AutocompleteInner<T = string>(
|
|
|
422
421
|
<PopoverPrimitive.Root open={isOpen} onOpenChange={handleOpenChange} modal={false}>
|
|
423
422
|
<PopoverPrimitive.Anchor asChild>
|
|
424
423
|
<div
|
|
425
|
-
// Same marker Input/Textarea/Select expose — it is how a form finds
|
|
426
|
-
// (and scrolls to) the first field that failed validation.
|
|
427
|
-
data-invalid={isInvalid || undefined}
|
|
428
424
|
className={cn(
|
|
429
425
|
// Layout — single line, no wrapping
|
|
430
426
|
"flex items-center rounded-[6px] border min-h-11 md:min-h-12 cursor-text",
|
|
@@ -434,14 +430,6 @@ function AutocompleteInner<T = string>(
|
|
|
434
430
|
"group",
|
|
435
431
|
!disabled && "hover:bg-ods-bg-hover hover:border-ods-border-hover active:bg-ods-bg-active active:border-ods-border-active",
|
|
436
432
|
disabled && "!cursor-not-allowed bg-ods-bg",
|
|
437
|
-
// Adornments / chevron carry their own colour — grey them with the
|
|
438
|
-
// value so a disabled field reads as one flat colour. Scoped to the
|
|
439
|
-
// DIRECT span child (the start adornment) on purpose: as a descendant
|
|
440
|
-
// rule it also hit the selected `Tag` chips in the middle zone, whose
|
|
441
|
-
// label is a span, and they went invisible against their own fill in
|
|
442
|
-
// the light theme. Anything nested inside the adornment that sets its
|
|
443
|
-
// own colour keeps it; anything that doesn't inherits the grey.
|
|
444
|
-
"has-[:disabled]:[&>span]:text-ods-text-disabled has-[:disabled]:[&_svg]:text-ods-text-disabled",
|
|
445
433
|
isOpen && !isInvalid && "border-ods-accent hover:border-ods-accent",
|
|
446
434
|
isInvalid && "border-ods-error hover:border-ods-error"
|
|
447
435
|
)}
|
|
@@ -30,7 +30,7 @@ const buttonVariants = cva(
|
|
|
30
30
|
overlay: buttonSurfaceClasses.overlay,
|
|
31
31
|
},
|
|
32
32
|
size: {
|
|
33
|
-
default: "py-[var(--spacing-system-sf)] px-[var(--spacing-system-m)] text-h3 md:h-12 h-
|
|
33
|
+
default: "py-[var(--spacing-system-sf)] px-[var(--spacing-system-m)] text-h3 md:h-12 h-10",
|
|
34
34
|
small: "p-[var(--spacing-system-xs)] text-h5 h-6 md:h-8",
|
|
35
35
|
"small-legacy": "py-[var(--spacing-system-xs)] px-[var(--spacing-system-m)] h-10 text-[14px] font-bold", // Temporary alias for "small" — deprecated; grep size="small-legacy" (lib + hub) and migrate the remaining consumers before removal
|
|
36
36
|
// 24px pill for slim strips (announcement/promo bars, inline banner
|
|
@@ -36,9 +36,6 @@ const CheckboxBlock = React.forwardRef<
|
|
|
36
36
|
<div className={cn("relative flex w-full flex-col", className)}>
|
|
37
37
|
<label
|
|
38
38
|
htmlFor={id}
|
|
39
|
-
// Same marker every field exposes — it is how a form finds (and scrolls
|
|
40
|
-
// to) the first control that failed validation.
|
|
41
|
-
data-invalid={error ? true : undefined}
|
|
42
39
|
className={cn(
|
|
43
40
|
"flex items-center gap-[var(--spacing-system-s)] rounded-md ring-1 ring-inset w-full",
|
|
44
41
|
// Trailing content stacks full-width below the text on mobile.
|
|
@@ -48,17 +45,8 @@ const CheckboxBlock = React.forwardRef<
|
|
|
48
45
|
description && "min-h-[60px] md:min-h-[64px]",
|
|
49
46
|
"bg-ods-card ring-ods-border",
|
|
50
47
|
"cursor-pointer transition-colors duration-200",
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
// text + the box instead of fading the whole block, so a disabled block
|
|
54
|
-
// reads the same as a disabled field. The greying itself lives on the
|
|
55
|
-
// TEXT COLUMN below, not here: as a descendant rule on the label it also
|
|
56
|
-
// repainted the checked INDICATOR (Radix renders it as a `span`, and the
|
|
57
|
-
// checkmark svg inherits `currentColor`) and whatever `trailing` renders
|
|
58
|
-
// — a `Tag`'s label is a span too, and it went invisible against its own
|
|
59
|
-
// fill in the light theme.
|
|
60
|
-
!disabled && "hover:bg-ods-bg-hover active:bg-ods-bg-active",
|
|
61
|
-
disabled && "cursor-not-allowed bg-ods-bg",
|
|
48
|
+
"hover:ring-ods-accent/30",
|
|
49
|
+
disabled && "opacity-50 cursor-not-allowed hover:ring-ods-border",
|
|
62
50
|
error && "ring-ods-error",
|
|
63
51
|
)}
|
|
64
52
|
>
|
|
@@ -75,11 +63,7 @@ const CheckboxBlock = React.forwardRef<
|
|
|
75
63
|
error ? "border-ods-error" : "border-[var(--color-border-strong)]",
|
|
76
64
|
"bg-ods-card",
|
|
77
65
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 focus-visible:ring-offset-ods-card",
|
|
78
|
-
// Disabled: the EMPTY box dims with the text instead of the whole
|
|
79
|
-
// block fading. A checked box keeps its accent fill — greying it too
|
|
80
|
-
// would bury the checkmark, and "on but locked" has to stay readable.
|
|
81
66
|
"disabled:cursor-not-allowed",
|
|
82
|
-
"disabled:data-[state=unchecked]:bg-ods-bg disabled:data-[state=unchecked]:border-ods-border",
|
|
83
67
|
"data-[state=checked]:bg-[var(--color-accent-primary)] data-[state=checked]:border-[var(--color-accent-primary)]"
|
|
84
68
|
)}
|
|
85
69
|
>
|
|
@@ -89,15 +73,7 @@ const CheckboxBlock = React.forwardRef<
|
|
|
89
73
|
<CheckboxCheckmarkIcon className="w-2 h-2 md:w-2.5 md:h-2.5" />
|
|
90
74
|
</CheckboxPrimitive.Indicator>
|
|
91
75
|
</CheckboxPrimitive.Root>
|
|
92
|
-
<div
|
|
93
|
-
className={cn(
|
|
94
|
-
"flex flex-1 flex-col justify-center min-w-0",
|
|
95
|
-
// Direct children only — these are the two component-owned wrappers.
|
|
96
|
-
// `label` and `description` are ReactNode (rich text, inline links),
|
|
97
|
-
// so a descendant rule would repaint content the caller styled itself.
|
|
98
|
-
disabled && "[&>span]:text-ods-text-disabled",
|
|
99
|
-
)}
|
|
100
|
-
>
|
|
76
|
+
<div className="flex flex-1 flex-col justify-center min-w-0">
|
|
101
77
|
<span className={cn(
|
|
102
78
|
"text-h4 !leading-5 md:!leading-6",
|
|
103
79
|
"text-ods-text-primary select-none",
|
|
@@ -451,12 +451,8 @@ const triggerButtonStyles = cn(
|
|
|
451
451
|
// Hover & active (not disabled)
|
|
452
452
|
"enabled:hover:bg-ods-bg-hover enabled:hover:border-ods-border-hover enabled:active:bg-ods-bg-active enabled:active:border-ods-border-active",
|
|
453
453
|
"focus:outline-none",
|
|
454
|
-
// Disabled
|
|
455
|
-
// own colour, so the child rule (higher specificity) greys it too. Scoped to
|
|
456
|
-
// DIRECT children like every other field, so nested content that owns its
|
|
457
|
-
// colour keeps it.
|
|
454
|
+
// Disabled
|
|
458
455
|
"disabled:!cursor-not-allowed disabled:bg-ods-bg",
|
|
459
|
-
"disabled:text-ods-text-disabled disabled:[&>span]:text-ods-text-disabled disabled:[&_svg]:text-ods-text-disabled",
|
|
460
456
|
// Animation
|
|
461
457
|
"transition-colors duration-200"
|
|
462
458
|
);
|
|
@@ -469,7 +465,6 @@ const timeSelectTriggerStyles = cn(
|
|
|
469
465
|
"enabled:hover:bg-ods-bg-hover enabled:hover:border-ods-border-hover enabled:active:bg-ods-bg-active enabled:active:border-ods-border-active",
|
|
470
466
|
"focus:outline-none",
|
|
471
467
|
"disabled:!cursor-not-allowed disabled:bg-ods-bg",
|
|
472
|
-
"disabled:text-ods-text-disabled disabled:[&>span]:text-ods-text-disabled disabled:[&_svg]:text-ods-text-disabled",
|
|
473
468
|
"transition-colors duration-200 cursor-pointer",
|
|
474
469
|
"text-ods-text-primary"
|
|
475
470
|
);
|
|
@@ -524,9 +519,6 @@ export function DatePicker(props: DatePickerProps) {
|
|
|
524
519
|
<button
|
|
525
520
|
type="button"
|
|
526
521
|
disabled={disabled}
|
|
527
|
-
// Same marker Input/Textarea/Select expose — it is how a form finds
|
|
528
|
-
// (and scrolls to) the first field that failed validation.
|
|
529
|
-
data-invalid={isInvalid || undefined}
|
|
530
522
|
className={cn(triggerButtonStyles, "group", open && !isInvalid && "border-ods-accent enabled:hover:border-ods-accent enabled:hover:bg-ods-card", isInvalid && "border-ods-error enabled:hover:border-ods-error enabled:hover:bg-ods-card", className)}
|
|
531
523
|
>
|
|
532
524
|
<Calendar className="size-6 text-ods-text-secondary shrink-0" />
|
|
@@ -700,9 +692,6 @@ export function DatePickerInput({
|
|
|
700
692
|
<button
|
|
701
693
|
type="button"
|
|
702
694
|
disabled={disabled}
|
|
703
|
-
// Same marker Input/Textarea/Select expose — it is how a form finds
|
|
704
|
-
// (and scrolls to) the first field that failed validation.
|
|
705
|
-
data-invalid={isInvalid || undefined}
|
|
706
695
|
className={cn(triggerButtonStyles, "group", open && !isInvalid && "border-ods-accent enabled:hover:border-ods-accent enabled:hover:bg-ods-card", isInvalid && "border-ods-error enabled:hover:border-ods-error enabled:hover:bg-ods-card", "flex-1")}
|
|
707
696
|
>
|
|
708
697
|
<Calendar className="size-6 text-ods-text-secondary shrink-0" />
|
|
@@ -934,9 +923,6 @@ export function DatePickerInputSimple({
|
|
|
934
923
|
<button
|
|
935
924
|
type="button"
|
|
936
925
|
disabled={disabled}
|
|
937
|
-
// Same marker Input/Textarea/Select expose — it is how a form finds
|
|
938
|
-
// (and scrolls to) the first field that failed validation.
|
|
939
|
-
data-invalid={isInvalid || undefined}
|
|
940
926
|
className={cn(triggerButtonStyles, "group", open && !isInvalid && "border-ods-accent enabled:hover:border-ods-accent enabled:hover:bg-ods-card", isInvalid && "border-ods-error enabled:hover:border-ods-error enabled:hover:bg-ods-card", "flex-1")}
|
|
941
927
|
>
|
|
942
928
|
<Calendar className="size-6 text-ods-text-secondary shrink-0" />
|
|
@@ -6,16 +6,7 @@ import { cn } from "../../utils/cn"
|
|
|
6
6
|
export interface FieldWrapperProps {
|
|
7
7
|
/** Label text displayed above the field */
|
|
8
8
|
label?: string
|
|
9
|
-
/**
|
|
10
|
-
* Status message displayed below the field, on ONE line, ellipsized on
|
|
11
|
-
* overflow (full text via the native `title`).
|
|
12
|
-
*
|
|
13
|
-
* It is positioned OUT OF FLOW (absolute, hanging below the wrapper), so it
|
|
14
|
-
* never changes the field's height when it appears — the same treatment
|
|
15
|
-
* `CheckboxBlock` uses. The trade is that it overlaps whatever sits directly
|
|
16
|
-
* below: a form stacking fields needs at least ~20px of vertical gap (e.g.
|
|
17
|
-
* `gap-[var(--spacing-system-lf)]`) for the message to land in clear space.
|
|
18
|
-
*/
|
|
9
|
+
/** Status message displayed below the field. Wraps up to two lines, then ellipsizes. */
|
|
19
10
|
error?: string
|
|
20
11
|
/** Color variant for the message: "error" (red), "warning" (yellow), "success" (green) or "muted" (grey) */
|
|
21
12
|
errorVariant?: "error" | "warning" | "success" | "muted"
|
|
@@ -36,7 +27,7 @@ const FieldWrapper = React.forwardRef<HTMLDivElement, FieldWrapperProps>(
|
|
|
36
27
|
const hasChrome = label != null || error != null
|
|
37
28
|
|
|
38
29
|
return (
|
|
39
|
-
<div ref={ref} className={cn(hasChrome ? "
|
|
30
|
+
<div ref={ref} className={cn(hasChrome ? "flex w-full flex-col" : "contents", className)}>
|
|
40
31
|
{label && (
|
|
41
32
|
<label className="text-h4 text-ods-text-primary mb-1">
|
|
42
33
|
{label}
|
|
@@ -44,7 +35,10 @@ const FieldWrapper = React.forwardRef<HTMLDivElement, FieldWrapperProps>(
|
|
|
44
35
|
)}
|
|
45
36
|
{children}
|
|
46
37
|
{error && (
|
|
47
|
-
<p
|
|
38
|
+
<p
|
|
39
|
+
className={cn("mt-1 text-h6 break-words line-clamp-2", errorVariantClasses[errorVariant])}
|
|
40
|
+
title={error}
|
|
41
|
+
>
|
|
48
42
|
{error}
|
|
49
43
|
</p>
|
|
50
44
|
)}
|