@flamingo-stack/openframe-frontend-core 0.0.414 → 0.0.415-snapshot.20260711220253

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 (108) hide show
  1. package/dist/{chunk-2K2L5TSX.cjs → chunk-234A5WF2.cjs} +29 -29
  2. package/dist/{chunk-2K2L5TSX.cjs.map → chunk-234A5WF2.cjs.map} +1 -1
  3. package/dist/{chunk-DQ764R3U.cjs → chunk-3F4LKYIK.cjs} +7 -7
  4. package/dist/{chunk-DQ764R3U.cjs.map → chunk-3F4LKYIK.cjs.map} +1 -1
  5. package/dist/{chunk-ANTB4HVV.cjs → chunk-3OSTXIB6.cjs} +75 -75
  6. package/dist/{chunk-ANTB4HVV.cjs.map → chunk-3OSTXIB6.cjs.map} +1 -1
  7. package/dist/{chunk-W5BV2PET.js → chunk-3RW27WRK.js} +3 -3
  8. package/dist/{chunk-3NTF2T7Z.js → chunk-43AKGHDL.js} +5 -5
  9. package/dist/{chunk-VJXNK62Q.js → chunk-4AFA5N5Q.js} +2 -2
  10. package/dist/{chunk-42KRPKJ6.js → chunk-BGSIZWAK.js} +4 -4
  11. package/dist/{chunk-YNUOHY35.cjs → chunk-BIFZRCGN.cjs} +40 -40
  12. package/dist/{chunk-YNUOHY35.cjs.map → chunk-BIFZRCGN.cjs.map} +1 -1
  13. package/dist/{chunk-5RXP6XT4.js → chunk-CQ6MF7KT.js} +5 -5
  14. package/dist/{chunk-MEKFY5GJ.cjs → chunk-CQG77HCB.cjs} +18 -18
  15. package/dist/{chunk-MEKFY5GJ.cjs.map → chunk-CQG77HCB.cjs.map} +1 -1
  16. package/dist/{chunk-5VFRKFOX.cjs → chunk-CRPIHDEI.cjs} +12 -12
  17. package/dist/{chunk-5VFRKFOX.cjs.map → chunk-CRPIHDEI.cjs.map} +1 -1
  18. package/dist/{chunk-LOTEW3AI.cjs → chunk-D4NSPERU.cjs} +32 -32
  19. package/dist/{chunk-LOTEW3AI.cjs.map → chunk-D4NSPERU.cjs.map} +1 -1
  20. package/dist/{chunk-QDARR6G4.cjs → chunk-DQMH6NAF.cjs} +15 -15
  21. package/dist/{chunk-QDARR6G4.cjs.map → chunk-DQMH6NAF.cjs.map} +1 -1
  22. package/dist/{chunk-DGIF3YDV.js → chunk-FFCGB73K.js} +2 -2
  23. package/dist/{chunk-BJXF4BGQ.js → chunk-FHAMKB5L.js} +2 -2
  24. package/dist/{chunk-D6CFAQ7B.js → chunk-GEUZA4VP.js} +3 -3
  25. package/dist/{chunk-LPH2JDOW.cjs → chunk-GHHUCCLX.cjs} +2 -2
  26. package/dist/{chunk-LPH2JDOW.cjs.map → chunk-GHHUCCLX.cjs.map} +1 -1
  27. package/dist/{chunk-KHCAOHL4.js → chunk-GIHNDMGI.js} +2 -2
  28. package/dist/{chunk-WHHHMJQN.cjs → chunk-IVWQIWZI.cjs} +5 -5
  29. package/dist/{chunk-WHHHMJQN.cjs.map → chunk-IVWQIWZI.cjs.map} +1 -1
  30. package/dist/{chunk-ZUTBP5YD.js → chunk-N6T7CDEN.js} +5 -4
  31. package/dist/chunk-N6T7CDEN.js.map +1 -0
  32. package/dist/{chunk-4FNDOTW2.js → chunk-OMUCATVA.js} +2 -2
  33. package/dist/{chunk-3I3633MR.cjs → chunk-QMGXJEZ3.cjs} +73 -73
  34. package/dist/{chunk-3I3633MR.cjs.map → chunk-QMGXJEZ3.cjs.map} +1 -1
  35. package/dist/{chunk-UUOCY4XK.js → chunk-QO2JZYIB.js} +7 -7
  36. package/dist/{chunk-CZJJ4BX5.cjs → chunk-RQLQOH46.cjs} +40 -40
  37. package/dist/{chunk-CZJJ4BX5.cjs.map → chunk-RQLQOH46.cjs.map} +1 -1
  38. package/dist/{chunk-JOPOMUFZ.cjs → chunk-S3PO5NOK.cjs} +180 -179
  39. package/dist/chunk-S3PO5NOK.cjs.map +1 -0
  40. package/dist/{chunk-7U57L7Z7.js → chunk-SFZ2BJST.js} +3 -3
  41. package/dist/{chunk-3SNDISEN.cjs → chunk-SR6LEWCF.cjs} +31 -31
  42. package/dist/{chunk-3SNDISEN.cjs.map → chunk-SR6LEWCF.cjs.map} +1 -1
  43. package/dist/{chunk-HAJRIISX.js → chunk-VBJC75FT.js} +6 -6
  44. package/dist/{chunk-N7YBNHVT.js → chunk-Z6NIMOXQ.js} +2 -2
  45. package/dist/chunk-Z6NIMOXQ.js.map +1 -0
  46. package/dist/{chunk-G2G7HLEM.cjs → chunk-ZKIYCRVQ.cjs} +3 -3
  47. package/dist/{chunk-G2G7HLEM.cjs.map → chunk-ZKIYCRVQ.cjs.map} +1 -1
  48. package/dist/components/case-studies/index.cjs +14 -14
  49. package/dist/components/case-studies/index.js +4 -4
  50. package/dist/components/chat/index.cjs +4 -4
  51. package/dist/components/chat/index.js +3 -3
  52. package/dist/components/chat/utils/is-cross-origin-url.d.ts.map +1 -1
  53. package/dist/components/contact/index.cjs +5 -5
  54. package/dist/components/contact/index.js +4 -4
  55. package/dist/components/docs/index.cjs +7 -7
  56. package/dist/components/docs/index.js +6 -6
  57. package/dist/components/embeds/index.cjs +5 -5
  58. package/dist/components/embeds/index.js +4 -4
  59. package/dist/components/faq/index.cjs +6 -6
  60. package/dist/components/faq/index.js +5 -5
  61. package/dist/components/features/index.cjs +4 -4
  62. package/dist/components/features/index.js +3 -3
  63. package/dist/components/help-center-pages/index.cjs +23 -23
  64. package/dist/components/help-center-pages/index.js +14 -14
  65. package/dist/components/icons/figma-icon.d.ts.map +1 -1
  66. package/dist/components/icons/index.cjs +2 -2
  67. package/dist/components/icons/index.js +1 -1
  68. package/dist/components/index.cjs +151 -151
  69. package/dist/components/index.js +12 -12
  70. package/dist/components/navigation/index.cjs +4 -4
  71. package/dist/components/navigation/index.js +3 -3
  72. package/dist/components/onboarding-guides/index.cjs +8 -8
  73. package/dist/components/onboarding-guides/index.js +7 -7
  74. package/dist/components/related-content/index.cjs +6 -6
  75. package/dist/components/related-content/index.js +5 -5
  76. package/dist/components/tickets/index.cjs +7 -7
  77. package/dist/components/tickets/index.js +6 -6
  78. package/dist/components/ui/index.cjs +4 -4
  79. package/dist/components/ui/index.js +3 -3
  80. package/dist/hooks/index.cjs +3 -3
  81. package/dist/hooks/index.js +2 -2
  82. package/dist/index.cjs +4 -4
  83. package/dist/index.js +3 -3
  84. package/dist/utils/index.cjs +1 -0
  85. package/dist/utils/index.cjs.map +1 -1
  86. package/dist/utils/index.js +1 -0
  87. package/dist/utils/index.js.map +1 -1
  88. package/package.json +1 -1
  89. package/src/components/chat/entity-cards/roadmap-card.tsx +1 -1
  90. package/src/components/chat/utils/__tests__/is-cross-origin-url.test.ts +43 -0
  91. package/src/components/chat/utils/is-cross-origin-url.ts +4 -0
  92. package/src/components/icons/figma-icon.tsx +1 -1
  93. package/dist/chunk-JOPOMUFZ.cjs.map +0 -1
  94. package/dist/chunk-N7YBNHVT.js.map +0 -1
  95. package/dist/chunk-ZUTBP5YD.js.map +0 -1
  96. /package/dist/{chunk-W5BV2PET.js.map → chunk-3RW27WRK.js.map} +0 -0
  97. /package/dist/{chunk-3NTF2T7Z.js.map → chunk-43AKGHDL.js.map} +0 -0
  98. /package/dist/{chunk-VJXNK62Q.js.map → chunk-4AFA5N5Q.js.map} +0 -0
  99. /package/dist/{chunk-42KRPKJ6.js.map → chunk-BGSIZWAK.js.map} +0 -0
  100. /package/dist/{chunk-5RXP6XT4.js.map → chunk-CQ6MF7KT.js.map} +0 -0
  101. /package/dist/{chunk-DGIF3YDV.js.map → chunk-FFCGB73K.js.map} +0 -0
  102. /package/dist/{chunk-BJXF4BGQ.js.map → chunk-FHAMKB5L.js.map} +0 -0
  103. /package/dist/{chunk-D6CFAQ7B.js.map → chunk-GEUZA4VP.js.map} +0 -0
  104. /package/dist/{chunk-KHCAOHL4.js.map → chunk-GIHNDMGI.js.map} +0 -0
  105. /package/dist/{chunk-4FNDOTW2.js.map → chunk-OMUCATVA.js.map} +0 -0
  106. /package/dist/{chunk-UUOCY4XK.js.map → chunk-QO2JZYIB.js.map} +0 -0
  107. /package/dist/{chunk-7U57L7Z7.js.map → chunk-SFZ2BJST.js.map} +0 -0
  108. /package/dist/{chunk-HAJRIISX.js.map → chunk-VBJC75FT.js.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.414",
3
+ "version": "0.0.415-snapshot.20260711220253",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -344,7 +344,7 @@ export function RoadmapCard({
344
344
  })()}
345
345
  {item.targetVersion && (
346
346
  <StatusBadge
347
- text={`${item.targetVersion} VERSION`}
347
+ text={item.targetVersion}
348
348
  className="border border-ods-border"
349
349
  />
350
350
  )}
@@ -0,0 +1,43 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { isCrossOriginUrl } from '../is-cross-origin-url'
3
+ import { decideNewTab } from '../decide-new-tab'
4
+
5
+ describe('isCrossOriginUrl', () => {
6
+ it('treats falsy values as same-origin', () => {
7
+ expect(isCrossOriginUrl(null)).toBe(false)
8
+ expect(isCrossOriginUrl(undefined)).toBe(false)
9
+ expect(isCrossOriginUrl('')).toBe(false)
10
+ })
11
+
12
+ it('treats same-document references as same-origin', () => {
13
+ // Regression: bare-hash anchors ("More coming in Next Generations" on
14
+ // /pricing) were classified cross-origin and opened in a new tab.
15
+ expect(isCrossOriginUrl('#next-generations')).toBe(false)
16
+ expect(isCrossOriginUrl('?tab=pricing')).toBe(false)
17
+ })
18
+
19
+ it('treats rooted relative paths as same-origin', () => {
20
+ expect(isCrossOriginUrl('/support')).toBe(false)
21
+ expect(isCrossOriginUrl('/roadmap#top')).toBe(false)
22
+ })
23
+
24
+ it('treats explicit-host URLs as cross-origin', () => {
25
+ expect(isCrossOriginUrl('https://flamingo.run/support')).toBe(true)
26
+ expect(isCrossOriginUrl('http://example.com')).toBe(true)
27
+ expect(isCrossOriginUrl('//cdn.example.com/file.js')).toBe(true)
28
+ })
29
+ })
30
+
31
+ describe('decideNewTab fallback (no targetPlatform)', () => {
32
+ it('keeps same-page hash CTAs in the same tab', () => {
33
+ expect(
34
+ decideNewTab({ href: '#next-generations', currentSource: 'flamingo' }),
35
+ ).toBe(false)
36
+ })
37
+
38
+ it('still opens explicit-host URLs in a new tab', () => {
39
+ expect(
40
+ decideNewTab({ href: 'https://example.com', currentSource: 'flamingo' }),
41
+ ).toBe(true)
42
+ })
43
+ })
@@ -20,6 +20,10 @@
20
20
  */
21
21
  export function isCrossOriginUrl(url: string | null | undefined): boolean {
22
22
  if (!url) return false
23
+ // Same-document references — a bare fragment (`#anchor`) or query
24
+ // (`?tab=x`) resolves against the current page and can never leave
25
+ // the origin.
26
+ if (url.startsWith('#') || url.startsWith('?')) return false
23
27
  // Relative URL — by definition same origin.
24
28
  if (url.startsWith('/') && !url.startsWith('//')) return false
25
29
  // Anything else — absolute URL (http(s)://) or protocol-relative (//)
@@ -4,7 +4,7 @@ interface FigmaIconProps {
4
4
  }
5
5
 
6
6
  /** @deprecated Use icons from icons-v2-generated instead. */
7
- export const FigmaIcon = ({ className = 'w-6 h-6', color = "#000000" }: FigmaIconProps) => (
7
+ export const FigmaIcon = ({ className = 'w-6 h-6', color = 'currentColor' }: FigmaIconProps) => (
8
8
  <svg fill={color} width="800px" height="800px" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" className={className}>
9
9
  <path
10
10
  d="M178.94238,94.00049A37.991,37.991,0,0,0,162,22.001H94A37.991,37.991,0,0,0,77.05762,94.00049,37.97671,37.97671,0,0,0,77.05811,162,37.99416,37.99416,0,1,0,132,195.99951V151.28223a37.98414,37.98414,0,1,0,46.94238-57.28174ZM192,60.001a30.03343,30.03343,0,0,1-29.98047,29.99951L162,90l-.03857.001L132,90V30.001h30A30.03406,30.03406,0,0,1,192,60.001ZM138.71729,98.00024A38.32407,38.32407,0,0,0,132,104.71777V98.00012ZM64,60.001a30.03406,30.03406,0,0,1,30-30h30V90H94l-.019.00049A30.03392,30.03392,0,0,1,64,60.001ZM94,225.999A29.99951,29.99951,0,1,1,94,166l30-.00085v30.00036A30.03364,30.03364,0,0,1,94,225.999Zm30-68L94,158a29.99976,29.99976,0,0,1-.019-59.99951L94,98.001l30-.00086ZM162,158a29.99952,29.99952,0,0,1-.03857-59.999H162l.019-.00049A29.99976,29.99976,0,0,1,162,158Z"