@flamingo-stack/openframe-frontend-core 0.0.559 → 0.0.560-1838.4933.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/{chunk-ANI7I7SC.js → chunk-2IL7SPBP.js} +2 -2
  2. package/dist/{chunk-KDTQMUUY.js → chunk-57G6CG2E.js} +6 -6
  3. package/dist/{chunk-BOFSW6J7.js → chunk-65ZXR4YJ.js} +2 -2
  4. package/dist/{chunk-5OU7FNZD.js → chunk-BKQWCJP5.js} +2 -2
  5. package/dist/{chunk-33RSZGYQ.cjs → chunk-CSXEOFJ4.cjs} +5 -5
  6. package/dist/{chunk-33RSZGYQ.cjs.map → chunk-CSXEOFJ4.cjs.map} +1 -1
  7. package/dist/{chunk-D2EOIZ7V.js → chunk-F3F3PVJ3.js} +2 -2
  8. package/dist/{chunk-PCIN3YYW.cjs → chunk-FEI4KQYW.cjs} +172 -155
  9. package/dist/chunk-FEI4KQYW.cjs.map +1 -0
  10. package/dist/{chunk-V3TJN4XI.js → chunk-GMDPQ5FQ.js} +4 -4
  11. package/dist/{chunk-YMXR3AFK.cjs → chunk-GZSUDIJB.cjs} +4 -4
  12. package/dist/{chunk-YMXR3AFK.cjs.map → chunk-GZSUDIJB.cjs.map} +1 -1
  13. package/dist/{chunk-ZF3TRQD2.cjs → chunk-I7RGBCG6.cjs} +31 -31
  14. package/dist/{chunk-ZF3TRQD2.cjs.map → chunk-I7RGBCG6.cjs.map} +1 -1
  15. package/dist/{chunk-QAFVP2NG.js → chunk-IGO6GNG7.js} +5 -5
  16. package/dist/{chunk-NBWJDAPF.cjs → chunk-MAX76H7U.cjs} +3 -3
  17. package/dist/{chunk-NBWJDAPF.cjs.map → chunk-MAX76H7U.cjs.map} +1 -1
  18. package/dist/{chunk-O3T4MB5D.cjs → chunk-N66ANBF6.cjs} +39 -39
  19. package/dist/{chunk-O3T4MB5D.cjs.map → chunk-N66ANBF6.cjs.map} +1 -1
  20. package/dist/{chunk-SPUVLKXS.cjs → chunk-NCU45OV4.cjs} +9 -9
  21. package/dist/{chunk-SPUVLKXS.cjs.map → chunk-NCU45OV4.cjs.map} +1 -1
  22. package/dist/{chunk-CS34XXIX.cjs → chunk-NFMYNXFH.cjs} +86 -86
  23. package/dist/{chunk-CS34XXIX.cjs.map → chunk-NFMYNXFH.cjs.map} +1 -1
  24. package/dist/{chunk-3H4NJO43.js → chunk-PHIRRCPY.js} +2 -2
  25. package/dist/{chunk-C7LWJWOO.js → chunk-QKGNSXF2.js} +2 -2
  26. package/dist/{chunk-KYJSFHHH.cjs → chunk-QUYIRF6U.cjs} +20 -20
  27. package/dist/{chunk-KYJSFHHH.cjs.map → chunk-QUYIRF6U.cjs.map} +1 -1
  28. package/dist/{chunk-B4AGHKHF.js → chunk-QXDEXQDI.js} +2 -2
  29. package/dist/{chunk-P7RPGV3I.js → chunk-RDFMBOSI.js} +1970 -1953
  30. package/dist/chunk-RDFMBOSI.js.map +1 -0
  31. package/dist/{chunk-MO5EKODW.cjs → chunk-UR2JKFIO.cjs} +7 -7
  32. package/dist/{chunk-MO5EKODW.cjs.map → chunk-UR2JKFIO.cjs.map} +1 -1
  33. package/dist/{chunk-XLZGBSNT.cjs → chunk-UW42K54L.cjs} +14 -14
  34. package/dist/{chunk-XLZGBSNT.cjs.map → chunk-UW42K54L.cjs.map} +1 -1
  35. package/dist/{chunk-PG6NTQ72.js → chunk-VAAQZZHT.js} +2 -2
  36. package/dist/{chunk-3KFGRSM7.js → chunk-WIPZ65KU.js} +2 -2
  37. package/dist/{chunk-DEJC6ZID.cjs → chunk-WXJZULAB.cjs} +26 -26
  38. package/dist/{chunk-DEJC6ZID.cjs.map → chunk-WXJZULAB.cjs.map} +1 -1
  39. package/dist/{chunk-7YUCTU47.cjs → chunk-XQJPFAA7.cjs} +62 -62
  40. package/dist/{chunk-7YUCTU47.cjs.map → chunk-XQJPFAA7.cjs.map} +1 -1
  41. package/dist/{chunk-VWTUHH6T.cjs → chunk-XRP6VHOS.cjs} +11 -11
  42. package/dist/{chunk-VWTUHH6T.cjs.map → chunk-XRP6VHOS.cjs.map} +1 -1
  43. package/dist/{chunk-S4GVJZ7X.js → chunk-YNRK3N2D.js} +4 -4
  44. package/dist/components/case-studies/index.cjs +8 -8
  45. package/dist/components/case-studies/index.js +2 -2
  46. package/dist/components/chat/index.cjs +2 -2
  47. package/dist/components/chat/index.js +1 -1
  48. package/dist/components/contact/index.cjs +3 -3
  49. package/dist/components/contact/index.js +2 -2
  50. package/dist/components/docs/index.cjs +5 -5
  51. package/dist/components/docs/index.js +4 -4
  52. package/dist/components/embeds/index.cjs +3 -3
  53. package/dist/components/embeds/index.js +2 -2
  54. package/dist/components/faq/index.cjs +3 -3
  55. package/dist/components/faq/index.js +2 -2
  56. package/dist/components/features/board/board-column-header.d.ts.map +1 -1
  57. package/dist/components/features/board/types.d.ts +6 -0
  58. package/dist/components/features/board/types.d.ts.map +1 -1
  59. package/dist/components/features/index.cjs +2 -2
  60. package/dist/components/features/index.js +1 -1
  61. package/dist/components/help-center-pages/index.cjs +22 -22
  62. package/dist/components/help-center-pages/index.js +13 -13
  63. package/dist/components/index.cjs +133 -131
  64. package/dist/components/index.cjs.map +1 -1
  65. package/dist/components/index.js +13 -11
  66. package/dist/components/index.js.map +1 -1
  67. package/dist/components/meeting-scheduler/index.cjs +28 -28
  68. package/dist/components/meeting-scheduler/index.js +3 -3
  69. package/dist/components/navigation/index.cjs +2 -2
  70. package/dist/components/navigation/index.js +1 -1
  71. package/dist/components/onboarding-guides/index.cjs +5 -5
  72. package/dist/components/onboarding-guides/index.js +4 -4
  73. package/dist/components/related-content/index.cjs +3 -3
  74. package/dist/components/related-content/index.js +2 -2
  75. package/dist/components/tickets/index.cjs +6 -6
  76. package/dist/components/tickets/index.js +5 -5
  77. package/dist/components/ui/index.cjs +4 -2
  78. package/dist/components/ui/index.cjs.map +1 -1
  79. package/dist/components/ui/index.d.ts +1 -0
  80. package/dist/components/ui/index.d.ts.map +1 -1
  81. package/dist/components/ui/index.js +3 -1
  82. package/dist/components/ui/ticket-status-config-row.d.ts.map +1 -1
  83. package/dist/components/ui/touch-friendly-tooltip.d.ts +14 -0
  84. package/dist/components/ui/touch-friendly-tooltip.d.ts.map +1 -0
  85. package/dist/index.cjs +4 -2
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.js +3 -1
  88. package/package.json +1 -1
  89. package/src/components/features/board/board-column-header.tsx +14 -1
  90. package/src/components/features/board/types.ts +7 -0
  91. package/src/components/ui/index.ts +1 -0
  92. package/src/components/ui/ticket-status-config-row.tsx +5 -55
  93. package/src/components/ui/touch-friendly-tooltip.tsx +71 -0
  94. package/dist/chunk-P7RPGV3I.js.map +0 -1
  95. package/dist/chunk-PCIN3YYW.cjs.map +0 -1
  96. /package/dist/{chunk-ANI7I7SC.js.map → chunk-2IL7SPBP.js.map} +0 -0
  97. /package/dist/{chunk-KDTQMUUY.js.map → chunk-57G6CG2E.js.map} +0 -0
  98. /package/dist/{chunk-BOFSW6J7.js.map → chunk-65ZXR4YJ.js.map} +0 -0
  99. /package/dist/{chunk-5OU7FNZD.js.map → chunk-BKQWCJP5.js.map} +0 -0
  100. /package/dist/{chunk-D2EOIZ7V.js.map → chunk-F3F3PVJ3.js.map} +0 -0
  101. /package/dist/{chunk-V3TJN4XI.js.map → chunk-GMDPQ5FQ.js.map} +0 -0
  102. /package/dist/{chunk-QAFVP2NG.js.map → chunk-IGO6GNG7.js.map} +0 -0
  103. /package/dist/{chunk-3H4NJO43.js.map → chunk-PHIRRCPY.js.map} +0 -0
  104. /package/dist/{chunk-C7LWJWOO.js.map → chunk-QKGNSXF2.js.map} +0 -0
  105. /package/dist/{chunk-B4AGHKHF.js.map → chunk-QXDEXQDI.js.map} +0 -0
  106. /package/dist/{chunk-PG6NTQ72.js.map → chunk-VAAQZZHT.js.map} +0 -0
  107. /package/dist/{chunk-3KFGRSM7.js.map → chunk-WIPZ65KU.js.map} +0 -0
  108. /package/dist/{chunk-S4GVJZ7X.js.map → chunk-YNRK3N2D.js.map} +0 -0
@@ -11,7 +11,7 @@ import { ColorPresetSelect, ColorPickerInput } from './color-preset-select'
11
11
  import { Input } from './input'
12
12
  import { type TagProps } from './tag'
13
13
  import { TicketStatusTag } from './ticket-status-tag'
14
- import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip'
14
+ import { TouchFriendlyTooltip } from './touch-friendly-tooltip'
15
15
 
16
16
  type SystemTagVariant = Extract<TagProps['variant'], 'outline' | 'primary'>
17
17
 
@@ -37,56 +37,6 @@ export interface TicketStatusConfigRowProps {
37
37
  isDragging?: boolean
38
38
  }
39
39
 
40
- let dismissOpenTooltip: (() => void) | null = null
41
-
42
- function WithLeftTooltip({ content, children }: { content?: string; children: React.ReactElement }) {
43
- const [open, setOpen] = React.useState(false)
44
- const isTouchRef = React.useRef(false)
45
- const close = React.useCallback(() => setOpen(false), [])
46
-
47
- if (!content) return children
48
-
49
- const toggleFromTouch = () => {
50
- setOpen(prev => {
51
- const next = !prev
52
- if (next) {
53
- if (dismissOpenTooltip && dismissOpenTooltip !== close) dismissOpenTooltip()
54
- dismissOpenTooltip = close
55
- } else if (dismissOpenTooltip === close) {
56
- dismissOpenTooltip = null
57
- }
58
- return next
59
- })
60
- }
61
-
62
- return (
63
- <TooltipProvider delayDuration={150}>
64
- <Tooltip open={open} onOpenChange={setOpen}>
65
- <TooltipTrigger
66
- asChild
67
- onPointerDown={e => {
68
- isTouchRef.current = e.pointerType === 'touch'
69
- if (!isTouchRef.current) return
70
- e.preventDefault()
71
- toggleFromTouch()
72
- }}
73
- onFocus={e => {
74
- if (isTouchRef.current) e.preventDefault()
75
- }}
76
- onClick={e => {
77
- if (isTouchRef.current) e.preventDefault()
78
- }}
79
- >
80
- {children}
81
- </TooltipTrigger>
82
- <TooltipContent side="left" className="max-w-xs">
83
- {content}
84
- </TooltipContent>
85
- </Tooltip>
86
- </TooltipProvider>
87
- )
88
- }
89
-
90
40
  export function TicketStatusConfigRow({
91
41
  variant,
92
42
  statusKey,
@@ -179,7 +129,7 @@ export function TicketStatusConfigRow({
179
129
 
180
130
  <div className="flex h-11 w-12 shrink-0 items-center justify-center md:h-12">
181
131
  {isSystem ? (
182
- <WithLeftTooltip content={systemTooltip}>
132
+ <TouchFriendlyTooltip content={systemTooltip}>
183
133
  <button
184
134
  type="button"
185
135
  aria-label={systemTooltip ?? 'System status'}
@@ -187,9 +137,9 @@ export function TicketStatusConfigRow({
187
137
  >
188
138
  <InfoCircleIcon size={24} />
189
139
  </button>
190
- </WithLeftTooltip>
140
+ </TouchFriendlyTooltip>
191
141
  ) : (
192
- <WithLeftTooltip content={deleteDisabled ? deleteDisabledReason : undefined}>
142
+ <TouchFriendlyTooltip content={deleteDisabled ? deleteDisabledReason : undefined}>
193
143
  <span className="inline-flex">
194
144
  <Button
195
145
  type="button"
@@ -203,7 +153,7 @@ export function TicketStatusConfigRow({
203
153
  <TrashIcon className="text-ods-error"/>
204
154
  </Button>
205
155
  </span>
206
- </WithLeftTooltip>
156
+ </TouchFriendlyTooltip>
207
157
  )}
208
158
  </div>
209
159
  </div>
@@ -0,0 +1,71 @@
1
+ 'use client'
2
+
3
+ import * as React from 'react'
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip'
5
+
6
+ /**
7
+ * The one tooltip allowed open at a time, across every instance — tapping a
8
+ * second trigger dismisses the first, since touch has no "mouse left" to close
9
+ * it. Module-level on purpose: instances live in unrelated subtrees.
10
+ */
11
+ let dismissOpenTooltip: (() => void) | null = null
12
+
13
+ export interface TouchFriendlyTooltipProps {
14
+ /** Tooltip text; when absent the children render bare, with no trigger wiring. */
15
+ content?: string
16
+ side?: 'top' | 'right' | 'bottom' | 'left'
17
+ children: React.ReactElement
18
+ }
19
+
20
+ /**
21
+ * Hover tooltip that also works on touch, where Radix's hover/focus model never
22
+ * opens: a tap toggles it instead. Wraps its own `TooltipProvider`, so it can be
23
+ * dropped anywhere without a provider up the tree.
24
+ */
25
+ export function TouchFriendlyTooltip({ content, side = 'left', children }: TouchFriendlyTooltipProps) {
26
+ const [open, setOpen] = React.useState(false)
27
+ const isTouchRef = React.useRef(false)
28
+ const close = React.useCallback(() => setOpen(false), [])
29
+
30
+ if (!content) return children
31
+
32
+ const toggleFromTouch = () => {
33
+ setOpen(prev => {
34
+ const next = !prev
35
+ if (next) {
36
+ if (dismissOpenTooltip && dismissOpenTooltip !== close) dismissOpenTooltip()
37
+ dismissOpenTooltip = close
38
+ } else if (dismissOpenTooltip === close) {
39
+ dismissOpenTooltip = null
40
+ }
41
+ return next
42
+ })
43
+ }
44
+
45
+ return (
46
+ <TooltipProvider delayDuration={150}>
47
+ <Tooltip open={open} onOpenChange={setOpen}>
48
+ <TooltipTrigger
49
+ asChild
50
+ onPointerDown={e => {
51
+ isTouchRef.current = e.pointerType === 'touch'
52
+ if (!isTouchRef.current) return
53
+ e.preventDefault()
54
+ toggleFromTouch()
55
+ }}
56
+ onFocus={e => {
57
+ if (isTouchRef.current) e.preventDefault()
58
+ }}
59
+ onClick={e => {
60
+ if (isTouchRef.current) e.preventDefault()
61
+ }}
62
+ >
63
+ {children}
64
+ </TooltipTrigger>
65
+ <TooltipContent side={side} className="max-w-xs">
66
+ {content}
67
+ </TooltipContent>
68
+ </Tooltip>
69
+ </TooltipProvider>
70
+ )
71
+ }