@flamingo-stack/openframe-frontend-core 0.0.341 → 0.0.342-snapshot.20260630085305
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-CJB4NUD6.cjs → chunk-23ZA3NAS.cjs} +7 -7
- package/dist/{chunk-CJB4NUD6.cjs.map → chunk-23ZA3NAS.cjs.map} +1 -1
- package/dist/{chunk-EYPZ2XLX.cjs → chunk-2W5ELSDO.cjs} +25 -25
- package/dist/{chunk-EYPZ2XLX.cjs.map → chunk-2W5ELSDO.cjs.map} +1 -1
- package/dist/{chunk-QCREN5A5.cjs → chunk-4S2J4RIC.cjs} +56 -56
- package/dist/{chunk-QCREN5A5.cjs.map → chunk-4S2J4RIC.cjs.map} +1 -1
- package/dist/{chunk-A37AW6CD.cjs → chunk-AAMCLU3A.cjs} +5 -5
- package/dist/{chunk-A37AW6CD.cjs.map → chunk-AAMCLU3A.cjs.map} +1 -1
- package/dist/{chunk-NIIN3UH4.cjs → chunk-AJE4JAPA.cjs} +37 -37
- package/dist/{chunk-NIIN3UH4.cjs.map → chunk-AJE4JAPA.cjs.map} +1 -1
- package/dist/{chunk-D2ETTYT2.cjs → chunk-DRHMR4RS.cjs} +26 -26
- package/dist/{chunk-D2ETTYT2.cjs.map → chunk-DRHMR4RS.cjs.map} +1 -1
- package/dist/{chunk-OLR534KB.js → chunk-EY5JK2PV.js} +2 -2
- package/dist/{chunk-CUQGK4AD.js → chunk-HI7OGVSK.js} +2 -2
- package/dist/{chunk-EPVDWAVJ.js → chunk-HYHUDGT5.js} +4 -4
- package/dist/{chunk-I3CNFZOY.cjs → chunk-IXVWSZC6.cjs} +68 -42
- package/dist/chunk-IXVWSZC6.cjs.map +1 -0
- package/dist/{chunk-KT4KY6OF.js → chunk-J6Z4BKMD.js} +4 -4
- package/dist/{chunk-AZ3DTQU5.js → chunk-JIJVIIQB.js} +68 -42
- package/dist/chunk-JIJVIIQB.js.map +1 -0
- package/dist/{chunk-R3MVYKEL.cjs → chunk-L7JVTLPO.cjs} +62 -62
- package/dist/{chunk-R3MVYKEL.cjs.map → chunk-L7JVTLPO.cjs.map} +1 -1
- package/dist/{chunk-I4BWBQXX.cjs → chunk-MIRRHOMH.cjs} +31 -31
- package/dist/{chunk-I4BWBQXX.cjs.map → chunk-MIRRHOMH.cjs.map} +1 -1
- package/dist/{chunk-OGTHMZIL.cjs → chunk-OCDAIFAI.cjs} +9 -9
- package/dist/{chunk-OGTHMZIL.cjs.map → chunk-OCDAIFAI.cjs.map} +1 -1
- package/dist/{chunk-N3GFEIWF.js → chunk-OJNZ5XJR.js} +2 -2
- package/dist/{chunk-Y2WHQSF6.js → chunk-PSOX77C2.js} +2 -2
- package/dist/{chunk-GCYEJLOQ.js → chunk-PYEHGR3B.js} +2 -2
- package/dist/{chunk-KE2QKKCN.js → chunk-RGVXRRJF.js} +2 -2
- package/dist/{chunk-LANAE7MY.cjs → chunk-TGC77CVV.cjs} +12 -12
- package/dist/{chunk-LANAE7MY.cjs.map → chunk-TGC77CVV.cjs.map} +1 -1
- package/dist/{chunk-QYF6LEDF.js → chunk-VIHF6VQ6.js} +2 -2
- package/dist/{chunk-2GROEWOK.js → chunk-VP7CNMFM.js} +4 -4
- package/dist/{chunk-4I46HAN5.js → chunk-YJJCUCPH.js} +4 -4
- package/dist/{chunk-BYAXSMET.cjs → chunk-ZERQ5VF3.cjs} +15 -15
- package/dist/{chunk-BYAXSMET.cjs.map → chunk-ZERQ5VF3.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/chat-composer.d.ts +4 -1
- package/dist/components/chat/chat-composer.d.ts.map +1 -1
- package/dist/components/chat/chat-input.d.ts.map +1 -1
- package/dist/components/chat/chat-quick-action-row.d.ts +6 -1
- package/dist/components/chat/chat-quick-action-row.d.ts.map +1 -1
- package/dist/components/chat/guide-welcome.d.ts +5 -5
- package/dist/components/chat/guide-welcome.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/chat/types/component.types.d.ts +6 -0
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +20 -20
- package/dist/components/help-center-pages/index.js +11 -11
- package/dist/components/index.cjs +121 -121
- package/dist/components/index.js +9 -9
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +5 -5
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/dashboard-info-card.d.ts +10 -6
- package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/chat/approval-batch-message.tsx +2 -2
- package/src/components/chat/chat-composer.tsx +5 -0
- package/src/components/chat/chat-input.tsx +39 -1
- package/src/components/chat/chat-quick-action-row.tsx +20 -0
- package/src/components/chat/embeddable-chat.tsx +21 -23
- package/src/components/chat/guide-welcome.tsx +21 -11
- package/src/components/chat/types/component.types.ts +6 -0
- package/src/components/ui/dashboard-info-card.tsx +41 -19
- package/src/stories/DashboardInfoCard.stories.tsx +7 -7
- package/dist/chunk-AZ3DTQU5.js.map +0 -1
- package/dist/chunk-I3CNFZOY.cjs.map +0 -1
- /package/dist/{chunk-OLR534KB.js.map → chunk-EY5JK2PV.js.map} +0 -0
- /package/dist/{chunk-CUQGK4AD.js.map → chunk-HI7OGVSK.js.map} +0 -0
- /package/dist/{chunk-EPVDWAVJ.js.map → chunk-HYHUDGT5.js.map} +0 -0
- /package/dist/{chunk-KT4KY6OF.js.map → chunk-J6Z4BKMD.js.map} +0 -0
- /package/dist/{chunk-N3GFEIWF.js.map → chunk-OJNZ5XJR.js.map} +0 -0
- /package/dist/{chunk-Y2WHQSF6.js.map → chunk-PSOX77C2.js.map} +0 -0
- /package/dist/{chunk-GCYEJLOQ.js.map → chunk-PYEHGR3B.js.map} +0 -0
- /package/dist/{chunk-KE2QKKCN.js.map → chunk-RGVXRRJF.js.map} +0 -0
- /package/dist/{chunk-QYF6LEDF.js.map → chunk-VIHF6VQ6.js.map} +0 -0
- /package/dist/{chunk-2GROEWOK.js.map → chunk-VP7CNMFM.js.map} +0 -0
- /package/dist/{chunk-4I46HAN5.js.map → chunk-YJJCUCPH.js.map} +0 -0
|
@@ -790,10 +790,11 @@ function EmbeddableChatInner({
|
|
|
790
790
|
|
|
791
791
|
// Imperative handle to the chat input.
|
|
792
792
|
const chatInputRef = useRef<ChatInputRef | null>(null)
|
|
793
|
-
//
|
|
794
|
-
//
|
|
795
|
-
//
|
|
796
|
-
|
|
793
|
+
// Full prompt of the currently hovered/focused quick-action chip, previewed
|
|
794
|
+
// as ghost text in the empty composer (`ChatInput.previewText`) — declarative
|
|
795
|
+
// + non-destructive: it never writes the editor value, so it can't clobber a
|
|
796
|
+
// draft. `null` = not previewing.
|
|
797
|
+
const [quickActionPreview, setQuickActionPreview] = useState<string | null>(null)
|
|
797
798
|
|
|
798
799
|
// The slash-command registry (Guide onboarding cards) is loaded via
|
|
799
800
|
// react-query below, after `activeMode` is resolved — gated on Guide mode and
|
|
@@ -1400,6 +1401,12 @@ function EmbeddableChatInner({
|
|
|
1400
1401
|
// Guide-mode empty state (no open conversation) — drives the "Mingo Guide"
|
|
1401
1402
|
// header, the guide banner, and the GuideWelcome content branch.
|
|
1402
1403
|
const isGuideEmpty = !hasConversation && activeMode === 'guide'
|
|
1404
|
+
// Quick-action chips only exist in the guide empty state. If it goes away
|
|
1405
|
+
// (a message is sent, or the mode switches) while a chip is still hovered,
|
|
1406
|
+
// drop the in-flight preview so it can't leak into the next composer state.
|
|
1407
|
+
useEffect(() => {
|
|
1408
|
+
if (!isGuideEmpty) setQuickActionPreview(null)
|
|
1409
|
+
}, [isGuideEmpty])
|
|
1403
1410
|
// The guide-empty back-chevron returns to Mingo — only offer it when Mingo
|
|
1404
1411
|
// mode actually exists to return to (guide is normally entered from Mingo).
|
|
1405
1412
|
const guideCanReturnToMingo = isGuideEmpty && hasMingoMode
|
|
@@ -1691,27 +1698,17 @@ function EmbeddableChatInner({
|
|
|
1691
1698
|
}
|
|
1692
1699
|
// Quick-action chips SEND the prompt immediately on click.
|
|
1693
1700
|
onQuickAction={(action) => {
|
|
1694
|
-
|
|
1695
|
-
// in the composer after the message is sent.
|
|
1696
|
-
quickActionDraftRef.current = null
|
|
1697
|
-
chatInputRef.current?.setValue('')
|
|
1701
|
+
setQuickActionPreview(null)
|
|
1698
1702
|
handleSend(action.prompt ?? action.label)
|
|
1699
1703
|
}}
|
|
1700
|
-
// Hover/focus PREVIEWS the action's full prompt
|
|
1701
|
-
// composer (the label
|
|
1702
|
-
// be sent).
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
}}
|
|
1709
|
-
onQuickActionHoverEnd={() => {
|
|
1710
|
-
if (quickActionDraftRef.current !== null) {
|
|
1711
|
-
chatInputRef.current?.setValue(quickActionDraftRef.current)
|
|
1712
|
-
quickActionDraftRef.current = null
|
|
1713
|
-
}
|
|
1714
|
-
}}
|
|
1704
|
+
// Hover/focus PREVIEWS the action's full prompt as ghost text
|
|
1705
|
+
// in the empty composer (the chip label is short; this reveals
|
|
1706
|
+
// what will be sent). Declarative + non-destructive — see
|
|
1707
|
+
// `quickActionPreview` / `ChatInput.previewText`.
|
|
1708
|
+
onQuickActionHover={(action) =>
|
|
1709
|
+
setQuickActionPreview(action.prompt ?? action.label)
|
|
1710
|
+
}
|
|
1711
|
+
onQuickActionHoverEnd={() => setQuickActionPreview(null)}
|
|
1715
1712
|
>
|
|
1716
1713
|
{/* Figma node 7363:205938 — single-column slash-command
|
|
1717
1714
|
list. No own scroll (GuideWelcome's region scrolls); the
|
|
@@ -1779,6 +1776,7 @@ function EmbeddableChatInner({
|
|
|
1779
1776
|
}
|
|
1780
1777
|
autoFocus={autoFocusInput}
|
|
1781
1778
|
slashCommands={slashCommandsProp}
|
|
1779
|
+
previewText={quickActionPreview ?? undefined}
|
|
1782
1780
|
showAttachmentButton={attachmentsEnabled && activeMode === 'guide'}
|
|
1783
1781
|
attachmentsCount={stagedAttachments.length}
|
|
1784
1782
|
onAddFiles={addAttachmentFiles}
|
|
@@ -32,12 +32,12 @@ export interface GuideWelcomeProps {
|
|
|
32
32
|
* `subtitle` is present. */
|
|
33
33
|
subtitleLoading?: boolean
|
|
34
34
|
/** Quick-action chips — caller-provided; there are no built-in defaults, so
|
|
35
|
-
* the chip row is omitted entirely unless the host supplies actions.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
35
|
+
* the chip row is omitted entirely unless the host supplies actions. ALL
|
|
36
|
+
* chips render in a wrapping row (no "⋯" overflow collapse) so every action
|
|
37
|
+
* is directly hoverable — hover/focus previews the action's full `prompt` in
|
|
38
|
+
* the composer; click sends it. */
|
|
39
39
|
quickActions?: ReadonlyArray<GuideQuickAction>
|
|
40
|
-
/** Fired when a quick-action chip
|
|
40
|
+
/** Fired when a quick-action chip is activated (click). */
|
|
41
41
|
onQuickAction?: (action: GuideQuickAction) => void
|
|
42
42
|
/** Pointer/keyboard focus enters a quick-action chip — e.g. preview the
|
|
43
43
|
* action's full `prompt` in the composer input. */
|
|
@@ -105,8 +105,9 @@ export function GuideWelcome({
|
|
|
105
105
|
return () => ro.disconnect()
|
|
106
106
|
}, [updateScrollFade])
|
|
107
107
|
|
|
108
|
-
// Map to the shared
|
|
109
|
-
//
|
|
108
|
+
// Map to the shared `ChatQuickActionRow` chip shape. In `wrap` mode every chip
|
|
109
|
+
// renders (no overflow), and `onHoverStart`/`onHoverEnd` drive the composer
|
|
110
|
+
// prompt preview.
|
|
110
111
|
const chipItems = React.useMemo(
|
|
111
112
|
() =>
|
|
112
113
|
quickActions.map((action) => ({
|
|
@@ -197,10 +198,19 @@ export function GuideWelcome({
|
|
|
197
198
|
/>
|
|
198
199
|
</div>
|
|
199
200
|
|
|
200
|
-
{/* Pinned quick-action chips
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
201
|
+
{/* Pinned quick-action chips above the composer — the shared
|
|
202
|
+
`ChatQuickActionRow` in `wrap` mode: ALL chips render (no "⋯" overflow
|
|
203
|
+
collapse) so every action is directly hoverable; hover/focus previews
|
|
204
|
+
the action's full prompt in the composer, click sends it. Capped height
|
|
205
|
+
+ internal scroll so a long (host/admin-driven) list can't grow the
|
|
206
|
+
pinned area without bound and squeeze the composer on short screens. */}
|
|
207
|
+
{quickActions.length > 0 && (
|
|
208
|
+
<ChatQuickActionRow
|
|
209
|
+
wrap
|
|
210
|
+
chips={chipItems}
|
|
211
|
+
className="max-h-28 overflow-y-auto scrollbar-thin scrollbar-track-transparent scrollbar-thumb-ods-border/30"
|
|
212
|
+
/>
|
|
213
|
+
)}
|
|
204
214
|
</div>
|
|
205
215
|
)
|
|
206
216
|
}
|
|
@@ -399,6 +399,12 @@ export interface ChatInputProps extends Omit<TextareaHTMLAttributes<HTMLTextArea
|
|
|
399
399
|
/** Suppress the textarea's own border/bg/radius — an outer card draws it
|
|
400
400
|
* instead (composer context-chip layout). Forwarded to `Textarea.hideBorder`. */
|
|
401
401
|
hideBorder?: boolean
|
|
402
|
+
/** Ephemeral, non-destructive preview text shown over the editor — e.g.
|
|
403
|
+
* previewing a hovered quick-action's full prompt before the user commits it.
|
|
404
|
+
* Purely declarative: it NEVER touches the editor's real value. While set, it
|
|
405
|
+
* visually replaces the editor (even an in-progress draft); clearing it
|
|
406
|
+
* (undefined) restores whatever the user had — empty or typed — verbatim. */
|
|
407
|
+
previewText?: string
|
|
402
408
|
}
|
|
403
409
|
|
|
404
410
|
export interface ChatInputRef {
|
|
@@ -17,11 +17,15 @@ import { Tag } from './tag'
|
|
|
17
17
|
export type DashboardInfoCardPercentageDisplay = 'auto' | 'plain' | 'tag'
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* Size of the progress ring in px. A single number applies at all breakpoints
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* Size of the progress ring in px. A single number applies at all breakpoints.
|
|
21
|
+
* The responsive form sets `base` (mobile) plus optional `md` / `lg` overrides
|
|
22
|
+
* that take effect from the Tailwind `md` (768px) / `lg` (1024px) breakpoints
|
|
23
|
+
* up — e.g. `{ base: 24, md: 56 }` is 24px on mobile and 56px on tablet and
|
|
24
|
+
* desktop, while `{ base: 24, lg: 56 }` keeps the smaller ring through tablet.
|
|
23
25
|
*/
|
|
24
|
-
export type DashboardInfoCardProgressSize =
|
|
26
|
+
export type DashboardInfoCardProgressSize =
|
|
27
|
+
| number
|
|
28
|
+
| { base: number; md?: number; lg?: number }
|
|
25
29
|
|
|
26
30
|
export interface DashboardInfoCardProps {
|
|
27
31
|
title?: string
|
|
@@ -45,8 +49,9 @@ export interface DashboardInfoCardProps {
|
|
|
45
49
|
/**
|
|
46
50
|
* Size of the circular progress ring. Defaults to `CircularProgress`'s own
|
|
47
51
|
* default (56px) at all breakpoints. Pass a number for a fixed size, or
|
|
48
|
-
* `{ base, lg }` for a responsive ring (e.g. `{ base: 24,
|
|
49
|
-
* the Figma
|
|
52
|
+
* `{ base, md?, lg? }` for a responsive ring (e.g. `{ base: 24, md: 56 }` for
|
|
53
|
+
* the Figma spec — 24px on mobile, 56px on tablet and desktop). Stroke width
|
|
54
|
+
* scales proportionally with the size.
|
|
50
55
|
*/
|
|
51
56
|
progressSize?: DashboardInfoCardProgressSize
|
|
52
57
|
className?: string
|
|
@@ -129,21 +134,38 @@ export function DashboardInfoCard({
|
|
|
129
134
|
return <CircularProgress {...common} size={progressSize} strokeWidth={strokeFor(progressSize)} />
|
|
130
135
|
}
|
|
131
136
|
|
|
132
|
-
// Responsive:
|
|
137
|
+
// Responsive: `base` (mobile) plus optional `md` / `lg` overrides. Each ring
|
|
138
|
+
// is toggled with Tailwind display utilities so only one shows per breakpoint.
|
|
139
|
+
// NOTE: the class names must stay static string literals — Tailwind's JIT
|
|
140
|
+
// scanner can't see dynamically-built names (e.g. `${bp}:hidden`).
|
|
141
|
+
const { base, md, lg } = progressSize
|
|
142
|
+
|
|
143
|
+
const rings: Array<{ key: string; size: number; className: string }> = []
|
|
144
|
+
if (md !== undefined && lg !== undefined) {
|
|
145
|
+
rings.push({ key: 'base', size: base, className: 'md:hidden' })
|
|
146
|
+
rings.push({ key: 'md', size: md, className: 'hidden md:block lg:hidden' })
|
|
147
|
+
rings.push({ key: 'lg', size: lg, className: 'hidden lg:block' })
|
|
148
|
+
} else if (md !== undefined) {
|
|
149
|
+
rings.push({ key: 'base', size: base, className: 'md:hidden' })
|
|
150
|
+
rings.push({ key: 'md', size: md, className: 'hidden md:block' })
|
|
151
|
+
} else if (lg !== undefined) {
|
|
152
|
+
rings.push({ key: 'base', size: base, className: 'lg:hidden' })
|
|
153
|
+
rings.push({ key: 'lg', size: lg, className: 'hidden lg:block' })
|
|
154
|
+
} else {
|
|
155
|
+
rings.push({ key: 'base', size: base, className: '' })
|
|
156
|
+
}
|
|
157
|
+
|
|
133
158
|
return (
|
|
134
159
|
<>
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
strokeWidth={strokeFor(progressSize.lg)}
|
|
145
|
-
className="hidden lg:block"
|
|
146
|
-
/>
|
|
160
|
+
{rings.map(ring => (
|
|
161
|
+
<CircularProgress
|
|
162
|
+
key={ring.key}
|
|
163
|
+
{...common}
|
|
164
|
+
size={ring.size}
|
|
165
|
+
strokeWidth={strokeFor(ring.size)}
|
|
166
|
+
className={ring.className}
|
|
167
|
+
/>
|
|
168
|
+
))}
|
|
147
169
|
</>
|
|
148
170
|
)
|
|
149
171
|
}
|
|
@@ -30,7 +30,7 @@ const meta = {
|
|
|
30
30
|
},
|
|
31
31
|
progressSize: {
|
|
32
32
|
control: { type: 'number' },
|
|
33
|
-
description: 'Ring diameter in px (number), or `{ base, lg }` for a responsive ring. Default 56.',
|
|
33
|
+
description: 'Ring diameter in px (number), or `{ base, md?, lg? }` for a responsive ring. Default 56.',
|
|
34
34
|
},
|
|
35
35
|
href: { control: 'text', description: 'Navigation URL — renders as a Next.js Link with pointer cursor' },
|
|
36
36
|
tooltip: { control: 'text', description: 'Tooltip content for the question-mark icon' },
|
|
@@ -276,7 +276,7 @@ export const DeviceStatusesOverview: Story = {
|
|
|
276
276
|
showProgress
|
|
277
277
|
progressVariant="success"
|
|
278
278
|
percentageDisplay="plain"
|
|
279
|
-
progressSize={{ base: 24,
|
|
279
|
+
progressSize={{ base: 24, md: 56 }}
|
|
280
280
|
/>
|
|
281
281
|
<DashboardInfoCard
|
|
282
282
|
title="Offline Devices"
|
|
@@ -285,7 +285,7 @@ export const DeviceStatusesOverview: Story = {
|
|
|
285
285
|
showProgress
|
|
286
286
|
progressVariant="error"
|
|
287
287
|
percentageDisplay="plain"
|
|
288
|
-
progressSize={{ base: 24,
|
|
288
|
+
progressSize={{ base: 24, md: 56 }}
|
|
289
289
|
/>
|
|
290
290
|
<DashboardInfoCard
|
|
291
291
|
title="Pending Devices"
|
|
@@ -294,7 +294,7 @@ export const DeviceStatusesOverview: Story = {
|
|
|
294
294
|
showProgress
|
|
295
295
|
progressVariant="warning"
|
|
296
296
|
percentageDisplay="plain"
|
|
297
|
-
progressSize={{ base: 24,
|
|
297
|
+
progressSize={{ base: 24, md: 56 }}
|
|
298
298
|
/>
|
|
299
299
|
<DashboardInfoCard
|
|
300
300
|
title="Archived Devices"
|
|
@@ -303,7 +303,7 @@ export const DeviceStatusesOverview: Story = {
|
|
|
303
303
|
showProgress
|
|
304
304
|
progressVariant="info"
|
|
305
305
|
percentageDisplay="plain"
|
|
306
|
-
progressSize={{ base: 24,
|
|
306
|
+
progressSize={{ base: 24, md: 56 }}
|
|
307
307
|
/>
|
|
308
308
|
</div>
|
|
309
309
|
),
|
|
@@ -311,7 +311,7 @@ export const DeviceStatusesOverview: Story = {
|
|
|
311
311
|
docs: {
|
|
312
312
|
description: {
|
|
313
313
|
story:
|
|
314
|
-
'Matches the Figma "Devices Overview" — green/red/amber/grey rings with neutral percentages via `percentageDisplay="plain"`, and a responsive ring (`progressSize={{ base: 24,
|
|
314
|
+
'Matches the Figma "Devices Overview" — green/red/amber/grey rings with neutral percentages via `percentageDisplay="plain"`, and a responsive ring (`progressSize={{ base: 24, md: 56 }}`) that is 24px on mobile and 56px on tablet and desktop (from the `md` breakpoint up).',
|
|
315
315
|
},
|
|
316
316
|
},
|
|
317
317
|
},
|
|
@@ -320,7 +320,7 @@ export const DeviceStatusesOverview: Story = {
|
|
|
320
320
|
/**
|
|
321
321
|
* `progressSize` controls the ring diameter (stroke scales with it). Left: the
|
|
322
322
|
* 24px mobile spec. Right: the 56px desktop default. In production pass
|
|
323
|
-
* `progressSize={{ base: 24,
|
|
323
|
+
* `progressSize={{ base: 24, md: 56 }}` for the responsive switch.
|
|
324
324
|
*/
|
|
325
325
|
export const ProgressSizeComparison: Story = {
|
|
326
326
|
render: () => (
|