@flamingo-stack/openframe-frontend-core 0.0.767 → 0.0.768
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/build/export-map.json +1 -1
- package/dist/{chunk-REJMFXGD.cjs → chunk-2MND64QJ.cjs} +46 -46
- package/dist/{chunk-BXMDLQUA.cjs → chunk-2TS3FEPQ.cjs} +4 -4
- package/dist/{chunk-M2UU3CWX.cjs → chunk-2ZYCYLPL.cjs} +5 -5
- package/dist/{chunk-DGNBXZXT.cjs → chunk-4EJU462O.cjs} +57 -30
- package/dist/{chunk-GQ7RGD4Y.cjs → chunk-57KIBZFQ.cjs} +76 -76
- package/dist/{chunk-IKXUJUXC.cjs → chunk-5O6PHVKO.cjs} +4 -4
- package/dist/{chunk-XZ6DKGT4.cjs → chunk-5QP3K2CE.cjs} +5 -5
- package/dist/{chunk-7TJVYRHR.cjs → chunk-6EEE76VU.cjs} +24 -24
- package/dist/{chunk-YRFWOJF4.cjs → chunk-BLTNKLAX.cjs} +4 -4
- package/dist/{chunk-WEPIWJGR.cjs → chunk-DE7U72NZ.cjs} +26 -26
- package/dist/{chunk-GTONIRJU.cjs → chunk-EHJE3UWZ.cjs} +10 -16
- package/dist/{chunk-UHDBMKJB.cjs → chunk-GGORS7G6.cjs} +13 -13
- package/dist/{chunk-FZB4RMRK.cjs → chunk-HQF62LAU.cjs} +33 -33
- package/dist/{chunk-JTSUAHDL.cjs → chunk-HY6BCZH7.cjs} +4 -2
- package/dist/{chunk-MPTMT773.cjs → chunk-LJT2KRE2.cjs} +14 -14
- package/dist/{chunk-NBVZIHGS.cjs → chunk-MYA6NR2C.cjs} +2 -2
- package/dist/{chunk-NO2DEFAP.cjs → chunk-NPVYID2L.cjs} +80 -80
- package/dist/{chunk-XIXR6BHI.cjs → chunk-OEVNX4OR.cjs} +44 -44
- package/dist/{chunk-TPOLNGOW.cjs → chunk-OGHLIUF4.cjs} +41 -41
- package/dist/{chunk-KHISVNNH.cjs → chunk-PFY23KN7.cjs} +6 -6
- package/dist/{chunk-ZRDMGMY7.cjs → chunk-QS4G7CHU.cjs} +2 -2
- package/dist/{chunk-GJ5DHDFQ.cjs → chunk-S4QS5E5A.cjs} +12 -12
- package/dist/{chunk-FVH53QZJ.cjs → chunk-STHQJNND.cjs} +501 -547
- package/dist/{chunk-MNIMYGFR.cjs → chunk-U6UIG4OP.cjs} +31 -31
- package/dist/{chunk-JBJVUQVH.cjs → chunk-UBPSA3RM.cjs} +87 -87
- package/dist/{chunk-I7A5MPXA.cjs → chunk-VADRKMLE.cjs} +3 -3
- package/dist/{chunk-AAECWUNV.cjs → chunk-VFUMM6JC.cjs} +19 -11
- package/dist/{chunk-7ZU3AVEX.cjs → chunk-VVBRYOSI.cjs} +19 -19
- package/dist/{chunk-ZV45VS6K.cjs → chunk-XI2CHCOD.cjs} +34 -43
- package/dist/{chunk-RMUSPTJN.cjs → chunk-ZVNL5OK6.cjs} +5 -5
- package/dist/{chunk-YL6ZB2SR.cjs → chunk-ZXFOMNI5.cjs} +183 -183
- package/dist/{cloud-tenants-WXK5RDSY.cjs → cloud-tenants-I5HABFNZ.cjs} +13 -13
- package/dist/components/case-studies/index.cjs +29 -29
- package/dist/components/case-studies/index.d.ts +1 -1
- package/dist/components/case-studies/index.d.ts.map +1 -1
- package/dist/components/case-studies/index.js +5 -1
- package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/investor-update-card.js +9 -1
- package/dist/components/chat/hooks/use-ask-prompts.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +9 -9
- package/dist/components/contact/index.cjs +14 -14
- package/dist/components/docs/index.cjs +17 -17
- package/dist/components/embeds/index.cjs +14 -14
- package/dist/components/faq/index.cjs +15 -15
- package/dist/components/features/cards-strip.d.ts.map +1 -1
- package/dist/components/features/command-box.d.ts.map +1 -1
- package/dist/components/features/command-box.js +2 -19
- package/dist/components/features/index.cjs +13 -13
- package/dist/components/features/paths-display.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.js +1 -10
- package/dist/components/help-center-pages/index.cjs +98 -98
- package/dist/components/icon-display.d.ts.map +1 -1
- package/dist/components/icon-display.js +9 -1
- package/dist/components/index.cjs +74 -74
- package/dist/components/interactive-wrapper.d.ts.map +1 -1
- package/dist/components/interactive-wrapper.js +7 -1
- package/dist/components/layout/page-heading.d.ts.map +1 -1
- package/dist/components/layout/page-heading.js +8 -1
- package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +73 -73
- package/dist/components/navigation/index.cjs +16 -16
- package/dist/components/onboarding-guides/index.cjs +16 -16
- package/dist/components/product-demo/index.cjs +24 -24
- package/dist/components/related-content/index.cjs +7 -7
- package/dist/components/results-count.d.ts.map +1 -1
- package/dist/components/results-count.js +2 -2
- package/dist/components/tickets/index.cjs +19 -19
- package/dist/components/ui/avatar-stack.d.ts.map +1 -1
- package/dist/components/ui/avatar-stack.js +17 -9
- package/dist/components/ui/cursor-pagination.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-row-count.js +1 -1
- package/dist/components/ui/feature-card.d.ts.map +1 -1
- package/dist/components/ui/feature-list.d.ts.map +1 -1
- package/dist/components/ui/feature-list.js +7 -21
- package/dist/components/ui/incident-feed.d.ts +1 -1
- package/dist/components/ui/incident-feed.d.ts.map +1 -1
- package/dist/components/ui/incident-feed.js +1 -7
- package/dist/components/ui/index.cjs +13 -13
- package/dist/components/ui/leader-row.d.ts.map +1 -1
- package/dist/components/ui/product-screen-frame.d.ts.map +1 -1
- package/dist/components/ui/product-screen-frame.js +4 -13
- package/dist/components/ui/status-badge.d.ts.map +1 -1
- package/dist/components/ui/status-badge.js +5 -1
- package/dist/components/ui/status-line.d.ts.map +1 -1
- package/dist/components/ui/status-line.js +1 -7
- package/dist/components/ui/strip-card.d.ts.map +1 -1
- package/dist/components/ui/tag.d.ts.map +1 -1
- package/dist/{devices-UHHHTCJF.cjs → devices-OS26UG7Y.cjs} +14 -14
- package/dist/{embeddable-chat-YL6ZSTDJ.cjs → embeddable-chat-BXEK3SPJ.cjs} +83 -83
- package/dist/index.cjs +20 -18
- package/dist/{knowledge-TJKHM7W4.cjs → knowledge-JD2OFKEL.cjs} +14 -14
- package/dist/{logs-B3KCCMPE.cjs → logs-KGKNFROP.cjs} +21 -21
- package/dist/{policies-ZTUIXSYZ.cjs → policies-J2XL6XQK.cjs} +17 -17
- package/dist/{remote-session-PPA5SXX7.cjs → remote-session-RHQ2K27H.cjs} +7 -7
- package/dist/{scripts-FIFAHBS6.cjs → scripts-MJONVIWL.cjs} +20 -20
- package/dist/{software-update-62PLASQU.cjs → software-update-VSMTHJR4.cjs} +17 -17
- package/dist/{tickets-board-G3WBH4SV.cjs → tickets-board-YT25IX3O.cjs} +8 -8
- package/dist/utils/format.d.ts +13 -3
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +4 -2
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/package.json +1 -1
- package/src/components/case-studies/entity-quotes-panel.tsx +18 -18
- package/src/components/case-studies/index.ts +8 -1
- package/src/components/chat/entity-cards/campaign-card-admin.tsx +1 -3
- package/src/components/chat/entity-cards/investor-update-card.tsx +6 -1
- package/src/components/chat/hooks/use-ask-prompts.ts +1 -2
- package/src/components/features/cards-strip.tsx +3 -2
- package/src/components/features/command-box.tsx +2 -11
- package/src/components/features/paths-display.tsx +4 -1
- package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +1 -6
- package/src/components/icon-display.tsx +6 -1
- package/src/components/interactive-wrapper.tsx +4 -1
- package/src/components/layout/page-heading.tsx +15 -3
- package/src/components/meeting-scheduler/directory.tsx +2 -1
- package/src/components/results-count.tsx +3 -2
- package/src/components/ui/avatar-stack.tsx +5 -1
- package/src/components/ui/button/button-styles.ts +0 -1
- package/src/components/ui/cursor-pagination.tsx +8 -1
- package/src/components/ui/data-table/data-table-row-count.tsx +1 -1
- package/src/components/ui/feature-card.tsx +2 -10
- package/src/components/ui/feature-list.tsx +2 -8
- package/src/components/ui/incident-feed.tsx +2 -13
- package/src/components/ui/leader-row.tsx +0 -1
- package/src/components/ui/product-screen-frame.tsx +1 -6
- package/src/components/ui/status-badge.tsx +5 -1
- package/src/components/ui/status-line.tsx +1 -4
- package/src/components/ui/strip-card.tsx +1 -3
- package/src/components/ui/tag.tsx +3 -1
- package/src/utils/format.ts +16 -4
- package/src/utils/index.ts +1 -0
package/dist/utils/format.js
CHANGED
|
@@ -188,11 +188,12 @@ function toValidDate(date) {
|
|
|
188
188
|
const d = date instanceof Date ? date : new Date(date);
|
|
189
189
|
return Number.isNaN(d.getTime()) ? null : d;
|
|
190
190
|
}
|
|
191
|
+
const viewerLocale = () => typeof navigator === "undefined" ? void 0 : navigator.language || void 0;
|
|
191
192
|
function formatDateWithTimezone(date, timezone, style = "medium", options) {
|
|
192
193
|
const dateObj = toValidDate(date);
|
|
193
194
|
if (!dateObj) return "";
|
|
194
195
|
const { timeZone: _ignored, ...fields } = typeof style === "string" ? ZONED_DATE_STYLES[style] : style;
|
|
195
|
-
return formatterFor(timezone, fields, options?.viewerLocale ?
|
|
196
|
+
return formatterFor(timezone, fields, options?.viewerLocale ? viewerLocale() : "en-US").format(dateObj);
|
|
196
197
|
}
|
|
197
198
|
function formatDateTimeYmd(date, timezone, options) {
|
|
198
199
|
const dateObj = toValidDate(date);
|
|
@@ -471,5 +472,6 @@ export {
|
|
|
471
472
|
personInitials,
|
|
472
473
|
singleInitial,
|
|
473
474
|
stripHtml,
|
|
474
|
-
titleCaseFromSlug
|
|
475
|
+
titleCaseFromSlug,
|
|
476
|
+
viewerLocale
|
|
475
477
|
};
|
package/dist/utils/index.cjs
CHANGED
|
@@ -80412,11 +80412,12 @@ function toValidDate(date) {
|
|
|
80412
80412
|
const d = date instanceof Date ? date : new Date(date);
|
|
80413
80413
|
return Number.isNaN(d.getTime()) ? null : d;
|
|
80414
80414
|
}
|
|
80415
|
+
var viewerLocale = () => typeof navigator === "undefined" ? void 0 : navigator.language || void 0;
|
|
80415
80416
|
function formatDateWithTimezone(date, timezone, style = "medium", options) {
|
|
80416
80417
|
const dateObj = toValidDate(date);
|
|
80417
80418
|
if (!dateObj) return "";
|
|
80418
80419
|
const { timeZone: _ignored, ...fields } = typeof style === "string" ? ZONED_DATE_STYLES[style] : style;
|
|
80419
|
-
return formatterFor(timezone, fields, options?.viewerLocale ?
|
|
80420
|
+
return formatterFor(timezone, fields, options?.viewerLocale ? viewerLocale() : "en-US").format(dateObj);
|
|
80420
80421
|
}
|
|
80421
80422
|
function formatDateTimeYmd(date, timezone, options) {
|
|
80422
80423
|
const dateObj = toValidDate(date);
|
|
@@ -86591,6 +86592,7 @@ exports.validateEmailDomainList = validateEmailDomainList;
|
|
|
86591
86592
|
exports.validatePhoneNumber = validatePhoneNumber;
|
|
86592
86593
|
exports.vendorClassificationCopy = vendorClassificationCopy;
|
|
86593
86594
|
exports.vendorClassificationGroup = vendorClassificationGroup;
|
|
86595
|
+
exports.viewerLocale = viewerLocale;
|
|
86594
86596
|
exports.walkthroughDismissCookieName = walkthroughDismissCookieName;
|
|
86595
86597
|
exports.webinarTiming = webinarTiming;
|
|
86596
86598
|
exports.withFirstTouchAttribution = withFirstTouchAttribution;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export * from './after-page-load';
|
|
|
44
44
|
export * from './dismissal-storage';
|
|
45
45
|
export * from './walkthrough-deep-link';
|
|
46
46
|
export { type GetProxiedImageUrlOptions, getProxiedImageUrl, urlPathLooksLikeSvg, shouldProxyImage, generateImageSizes, skipsImageOptimizer, } from './image-proxy';
|
|
47
|
-
export { formatLargeNumber, formatAbbreviatedNumber, nameInitials, personFirstName, personInitials, singleInitial, formatDurationMMSS, formatDurationCompact, formatTimeWithTimezone, formatDateWithTimezone, formatDateTimeYmd, VIEWER_TIMEZONE, formatWebinarTimeMeta, formatProgramDate, formatProgramDateRange, formatProgramTimeRange, type ZonedDateStyle, formatDurationFromRange, isOrderedRange, type FormatDateUTCOptions, formatDateUTC, formatEntryMonthUTC, formatCurrency, formatPercent, formatWholeDollars, formatLegalDate, formatBytesShort, formatFileSize, formatDateTimeAt, formatDurationFromMs, type MetricFormat, type TrendPolarity, formatCompactMetric, getTrendColors, formatDateRange, formatDuration, formatUnderscoreText, titleCaseFromSlug, stripHtml, formatBioText, formatClassification, formatPricingModel, } from './format';
|
|
47
|
+
export { formatLargeNumber, formatAbbreviatedNumber, nameInitials, personFirstName, personInitials, singleInitial, formatDurationMMSS, formatDurationCompact, formatTimeWithTimezone, formatDateWithTimezone, formatDateTimeYmd, VIEWER_TIMEZONE, viewerLocale, formatWebinarTimeMeta, formatProgramDate, formatProgramDateRange, formatProgramTimeRange, type ZonedDateStyle, formatDurationFromRange, isOrderedRange, type FormatDateUTCOptions, formatDateUTC, formatEntryMonthUTC, formatCurrency, formatPercent, formatWholeDollars, formatLegalDate, formatBytesShort, formatFileSize, formatDateTimeAt, formatDurationFromMs, type MetricFormat, type TrendPolarity, formatCompactMetric, getTrendColors, formatDateRange, formatDuration, formatUnderscoreText, titleCaseFromSlug, stripHtml, formatBioText, formatClassification, formatPricingModel, } from './format';
|
|
48
48
|
export { formatRelativeTime, formatAbsoluteDate, formatDateTime, getDetailedTimeDifference, isToday, isWithinMinutes, createUTCTimestamp, formatTicketRelativeTime, formatTicketFullTimestamp, } from './date-utils';
|
|
49
49
|
export { SOURCE_ICON_NAMES, getSourceIconName, SOURCE_LABELS_BY_TABLE, getSourceLabel } from './source-icons';
|
|
50
50
|
export { DOC_TABLE_TYPES, groupsByTable, recordCountLabel, buildGroupedSource, groupSourcesByTable, formatCitationIndices, type GroupedSourceRow, } from './source-grouping';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -110,6 +110,7 @@ import {
|
|
|
110
110
|
formatDateWithTimezone,
|
|
111
111
|
formatDateTimeYmd,
|
|
112
112
|
VIEWER_TIMEZONE,
|
|
113
|
+
viewerLocale,
|
|
113
114
|
formatWebinarTimeMeta,
|
|
114
115
|
formatProgramDate,
|
|
115
116
|
formatProgramDateRange,
|
|
@@ -464,5 +465,6 @@ export {
|
|
|
464
465
|
usePlatformColors,
|
|
465
466
|
vendorClassificationCopy,
|
|
466
467
|
vendorClassificationGroup,
|
|
468
|
+
viewerLocale,
|
|
467
469
|
webinarTiming
|
|
468
470
|
};
|
package/package.json
CHANGED
|
@@ -33,24 +33,24 @@ export function EntityQuotesPanel({ quotes, className }: EntityQuotesPanelProps)
|
|
|
33
33
|
// Optional per record, so the loading state draws none: the gate leaves the loaded panel out of its comparison.
|
|
34
34
|
// A plain block around the one panel, so the parent's spacing applies to it as it did to the panel.
|
|
35
35
|
<div data-loading-optional>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
36
|
+
<StackedRowsPanel
|
|
37
|
+
className={className}
|
|
38
|
+
title={`${ENTITY_QUOTES_TITLE} · ${quotes.length}`}
|
|
39
|
+
rows={quotes.map(q => ({
|
|
40
|
+
id: q.key,
|
|
41
|
+
columns: [
|
|
42
|
+
{
|
|
43
|
+
key: 'quote',
|
|
44
|
+
content: (
|
|
45
|
+
<blockquote className={QUOTE_CLASS}>
|
|
46
|
+
<p className={QUOTE_TEXT_CLASS}>“{q.text}”</p>
|
|
47
|
+
{q.speaker && <p className={QUOTE_SPEAKER_CLASS}>{q.speaker}</p>}
|
|
48
|
+
</blockquote>
|
|
49
|
+
),
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
}))}
|
|
53
|
+
/>
|
|
54
54
|
</div>
|
|
55
55
|
);
|
|
56
56
|
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
export { ShareExperienceSection, type ShareExperienceSectionProps } from './share-experience-section';
|
|
2
2
|
export { EntityQuotesPanel, EntityQuotesPanelSkeleton, type EntityQuotesPanelProps } from './entity-quotes-panel';
|
|
3
|
-
export {
|
|
3
|
+
export {
|
|
4
|
+
QuoteCardTile,
|
|
5
|
+
QuoteCardTileSkeleton,
|
|
6
|
+
QuoteCardsStrip,
|
|
7
|
+
type QuoteCard,
|
|
8
|
+
type QuoteCardTileProps,
|
|
9
|
+
type QuoteCardsStripProps,
|
|
10
|
+
} from './quote-cards-strip';
|
|
@@ -95,7 +95,5 @@ export function CampaignCardAdmin({ campaign, className, anchorProps }: Campaign
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
export function CampaignCardAdminSkeleton({ className }: { className?: string }) {
|
|
98
|
-
return
|
|
99
|
-
<CompactCardSkeleton rows={[{ width: 'w-1/2' }, { width: 'w-11/12' }]} className={className} />
|
|
100
|
-
);
|
|
98
|
+
return <CompactCardSkeleton rows={[{ width: 'w-1/2' }, { width: 'w-11/12' }]} className={className} />;
|
|
101
99
|
}
|
|
@@ -80,7 +80,12 @@ export function InvestorUpdateCardSkeleton({
|
|
|
80
80
|
}
|
|
81
81
|
if (size === 'sm') {
|
|
82
82
|
return (
|
|
83
|
-
<CompactCardSkeleton
|
|
83
|
+
<CompactCardSkeleton
|
|
84
|
+
titleWidth="w-1/2"
|
|
85
|
+
titleBadges={['w-8']}
|
|
86
|
+
rows={[{ width: 'w-1/3' }, { width: 'w-11/12' }]}
|
|
87
|
+
className={className}
|
|
88
|
+
/>
|
|
84
89
|
);
|
|
85
90
|
}
|
|
86
91
|
return null;
|
|
@@ -230,8 +230,7 @@ export function useAskSurface({
|
|
|
230
230
|
const queue = useAskQueue();
|
|
231
231
|
// In a loading scope a surface takes no turn and picks nothing: it draws its loading state.
|
|
232
232
|
const held = useLoadingScope();
|
|
233
|
-
const picks =
|
|
234
|
-
!held && assistantAvailable(assistant) && !!assistant.askPromptsUrl && enabled && exclude !== null;
|
|
233
|
+
const picks = !held && assistantAvailable(assistant) && !!assistant.askPromptsUrl && enabled && exclude !== null;
|
|
235
234
|
|
|
236
235
|
// A layout effect: surfaces a page mounts together take their turns in document order.
|
|
237
236
|
useLayoutEffect(() => {
|
|
@@ -307,7 +307,6 @@ function ManagedCell({
|
|
|
307
307
|
// Component
|
|
308
308
|
// =============================================================================
|
|
309
309
|
|
|
310
|
-
|
|
311
310
|
export function CardsStrip<T = unknown>(props: CardsStripProps<T>): React.ReactElement | null {
|
|
312
311
|
const {
|
|
313
312
|
title,
|
|
@@ -801,7 +800,9 @@ export function CardsStrip<T = unknown>(props: CardsStripProps<T>): React.ReactE
|
|
|
801
800
|
return <ManagedCell item={item} ctx={ctx} cardWidthMobile={cardWidthMobile} cardWidthDesktop={cardWidthDesktop} />;
|
|
802
801
|
};
|
|
803
802
|
|
|
804
|
-
const heading = showTitle && title &&
|
|
803
|
+
const heading = showTitle && title && (
|
|
804
|
+
<h2 className={`${SECTION_HEADING_CLASS} break-words`}>{accentSentenceMarks(title)}</h2>
|
|
805
|
+
);
|
|
805
806
|
if (items.length === 0) {
|
|
806
807
|
// Outside a loading state an empty strip is nothing; inside one, a strip whose host states a skeleton draws it
|
|
807
808
|
// (a host that states none expects no strip, e.g. a record with no bites).
|
|
@@ -166,11 +166,7 @@ export function CommandBox({
|
|
|
166
166
|
and collapsing on each one would fold an expanded box under the
|
|
167
167
|
typist, the exact jump this mode exists to prevent. Nothing goes stale
|
|
168
168
|
without it: the expanded height is re-measured on every commit. */}
|
|
169
|
-
<FadePreview
|
|
170
|
-
fixedHeight
|
|
171
|
-
collapsedHeight={fixedCommandHeight(visibleLines)}
|
|
172
|
-
labels={COMMAND_TOGGLE_LABELS}
|
|
173
|
-
>
|
|
169
|
+
<FadePreview fixedHeight collapsedHeight={fixedCommandHeight(visibleLines)} labels={COMMAND_TOGGLE_LABELS}>
|
|
174
170
|
{text}
|
|
175
171
|
</FadePreview>
|
|
176
172
|
</div>
|
|
@@ -185,12 +181,7 @@ export function CommandBox({
|
|
|
185
181
|
{onCopy ? (
|
|
186
182
|
<div className={COMMAND_BOX_COPY_ROW_CLASS}>
|
|
187
183
|
{commandText}
|
|
188
|
-
<button
|
|
189
|
-
type="button"
|
|
190
|
-
onClick={onCopy}
|
|
191
|
-
aria-label={copyAriaLabel}
|
|
192
|
-
className={COMMAND_BOX_COPY_BUTTON_CLASS}
|
|
193
|
-
>
|
|
184
|
+
<button type="button" onClick={onCopy} aria-label={copyAriaLabel} className={COMMAND_BOX_COPY_BUTTON_CLASS}>
|
|
194
185
|
<Copy02Icon className="h-5 w-5" />
|
|
195
186
|
</button>
|
|
196
187
|
</div>
|
|
@@ -158,7 +158,10 @@ export function PathsDisplaySkeleton({
|
|
|
158
158
|
copyIconSize = 'w-6 h-6',
|
|
159
159
|
leadingIcon,
|
|
160
160
|
className,
|
|
161
|
-
}: Pick<
|
|
161
|
+
}: Pick<
|
|
162
|
+
PathsDisplayProps,
|
|
163
|
+
'title' | 'description' | 'showCopyButtons' | 'copyIconSize' | 'leadingIcon' | 'className'
|
|
164
|
+
> & {
|
|
162
165
|
rows?: number;
|
|
163
166
|
}) {
|
|
164
167
|
return (
|
|
@@ -43,12 +43,7 @@ export function RemoteDesktopChatMessageRow({
|
|
|
43
43
|
{isTechnician && (
|
|
44
44
|
<SquareAvatar variant="round" sizePx={24} src={avatarUrl} alt={authorName} className="shrink-0" />
|
|
45
45
|
)}
|
|
46
|
-
<span
|
|
47
|
-
className={cn(
|
|
48
|
-
MESSAGE_NAME_CLASS,
|
|
49
|
-
isTechnician ? 'text-ods-accent' : 'text-ods-text-secondary',
|
|
50
|
-
)}
|
|
51
|
-
>
|
|
46
|
+
<span className={cn(MESSAGE_NAME_CLASS, isTechnician ? 'text-ods-accent' : 'text-ods-text-secondary')}>
|
|
52
47
|
{authorName}
|
|
53
48
|
</span>
|
|
54
49
|
{/* The time is in the viewer's zone, which a server render cannot know. */}
|
|
@@ -46,7 +46,12 @@ export function EntityIcon({
|
|
|
46
46
|
// In a loading scope the icon is data still being read: a box of its size.
|
|
47
47
|
if (held) {
|
|
48
48
|
return (
|
|
49
|
-
<UnifiedSkeleton
|
|
49
|
+
<UnifiedSkeleton
|
|
50
|
+
as="span"
|
|
51
|
+
width={size}
|
|
52
|
+
height={size}
|
|
53
|
+
className={cn('inline-block shrink-0 rounded-md', className)}
|
|
54
|
+
/>
|
|
50
55
|
);
|
|
51
56
|
}
|
|
52
57
|
if (!icon?.url && identity?.url) {
|
|
@@ -176,7 +176,10 @@ export const InteractiveWrapper = forwardRef<HTMLElement, InteractiveWrapperProp
|
|
|
176
176
|
) : null,
|
|
177
177
|
/* Loading Overlay */
|
|
178
178
|
loading ? (
|
|
179
|
-
<div
|
|
179
|
+
<div
|
|
180
|
+
key="loading"
|
|
181
|
+
className={cn('pointer-events-none absolute inset-0 bg-current opacity-10', LIVE_PULSE_CLASS)}
|
|
182
|
+
/>
|
|
180
183
|
) : null,
|
|
181
184
|
);
|
|
182
185
|
},
|
|
@@ -248,7 +248,11 @@ export function SectionEyebrow({
|
|
|
248
248
|
tone?: HeadingAccentTone;
|
|
249
249
|
className?: string;
|
|
250
250
|
}) {
|
|
251
|
-
return
|
|
251
|
+
return (
|
|
252
|
+
<span className={['text-h5', headingAccentClass(platform, tone), className].filter(Boolean).join(' ')}>
|
|
253
|
+
{children}
|
|
254
|
+
</span>
|
|
255
|
+
);
|
|
252
256
|
}
|
|
253
257
|
|
|
254
258
|
/**
|
|
@@ -272,7 +276,11 @@ export function SectionHeading({
|
|
|
272
276
|
const accentClassName = headingAccentClass(platform, tone);
|
|
273
277
|
const layout = SECTION_HEADING_LAYOUT[level];
|
|
274
278
|
const Tag = presentational ? 'div' : level === 'page' ? 'h1' : 'h2';
|
|
275
|
-
const eyebrowNode = eyebrow ?
|
|
279
|
+
const eyebrowNode = eyebrow ? (
|
|
280
|
+
<SectionEyebrow platform={platform} tone={tone}>
|
|
281
|
+
{eyebrow}
|
|
282
|
+
</SectionEyebrow>
|
|
283
|
+
) : null;
|
|
276
284
|
const headingText = (
|
|
277
285
|
<>
|
|
278
286
|
{accentSentenceMarks(title, platform, tone)}
|
|
@@ -362,7 +370,11 @@ export function SectionHeadingSkeleton({
|
|
|
362
370
|
<div className={layout.intro}>
|
|
363
371
|
{Array.from({ length: introLines }, (_, i) => (
|
|
364
372
|
// biome-ignore lint/suspicious/noArrayIndexKey: skeleton lines never reorder
|
|
365
|
-
<TextLineSkeleton
|
|
373
|
+
<TextLineSkeleton
|
|
374
|
+
key={i}
|
|
375
|
+
type="inherit"
|
|
376
|
+
className={i === introLines - 1 && introLines > 1 ? 'w-2/3' : 'w-full'}
|
|
377
|
+
/>
|
|
366
378
|
))}
|
|
367
379
|
</div>
|
|
368
380
|
) : null}
|
|
@@ -75,7 +75,8 @@ export const MEETING_DIRECTORY_PAGE_SIZE = 6;
|
|
|
75
75
|
const directoryRowsMinHeight = (pageSize: number) => pageSize * 80 + (pageSize - 1) * 16;
|
|
76
76
|
|
|
77
77
|
/** A row's frame and columns, read by the row and by its skeleton, so the skeleton is the row's size. */
|
|
78
|
-
const ROW_FRAME_CLASS =
|
|
78
|
+
const ROW_FRAME_CLASS =
|
|
79
|
+
'flex min-h-20 w-full items-center gap-4 rounded-lg border border-ods-border bg-ods-card px-4 py-3';
|
|
79
80
|
const ROW_TITLE_COLUMN_CLASS = 'flex min-w-0 flex-1 flex-col justify-center text-left';
|
|
80
81
|
const ROW_NEXT_COLUMN_CLASS = 'hidden w-44 shrink-0 flex-col items-end justify-center content-md:flex';
|
|
81
82
|
const ROW_NEXT_LABEL_CLASS = 'text-ods-text-secondary text-h6';
|
|
@@ -56,8 +56,9 @@ export function ResultsCountSkeleton({
|
|
|
56
56
|
return (
|
|
57
57
|
<div className={RESULTS_COUNT_ROW_CLASS} aria-hidden>
|
|
58
58
|
<p className={RESULTS_COUNT_TEXT_CLASS}>
|
|
59
|
-
Showing <TextLineSkeleton type="inherit" as="span" className="inline-block align-top
|
|
60
|
-
<TextLineSkeleton type="inherit" as="span" className="inline-block align-top
|
|
59
|
+
Showing <TextLineSkeleton type="inherit" as="span" className="inline-block w-10 align-top" /> of{' '}
|
|
60
|
+
<TextLineSkeleton type="inherit" as="span" className="inline-block w-6 align-top" />{' '}
|
|
61
|
+
{resultLabel(resultType, false)}
|
|
61
62
|
{sortingMessage && <span className={RESULTS_COUNT_SORTING_CLASS}>• {sortingMessage}</span>}
|
|
62
63
|
</p>
|
|
63
64
|
</div>
|
|
@@ -85,7 +85,11 @@ export function AvatarStackSkeleton({
|
|
|
85
85
|
className?: string;
|
|
86
86
|
}) {
|
|
87
87
|
return (
|
|
88
|
-
<div
|
|
88
|
+
<div
|
|
89
|
+
aria-hidden
|
|
90
|
+
className={cn(STACK_ROW_CLASS, slots && 'shrink-0', className)}
|
|
91
|
+
style={slotsWidthStyle(size, slots)}
|
|
92
|
+
>
|
|
89
93
|
{Array.from({ length: count }, (_, i) => (
|
|
90
94
|
<UnifiedSkeleton
|
|
91
95
|
// biome-ignore lint/suspicious/noArrayIndexKey: skeleton faces never reorder
|
|
@@ -152,7 +152,14 @@ export function CursorPagination({
|
|
|
152
152
|
export function CursorPaginationSkeleton(
|
|
153
153
|
props: Pick<
|
|
154
154
|
CursorPaginationProps,
|
|
155
|
-
|
|
155
|
+
| 'hasPreviousPage'
|
|
156
|
+
| 'onPrevious'
|
|
157
|
+
| 'onReset'
|
|
158
|
+
| 'className'
|
|
159
|
+
| 'showInfo'
|
|
160
|
+
| 'compact'
|
|
161
|
+
| 'resetButtonLabel'
|
|
162
|
+
| 'resetButtonIcon'
|
|
156
163
|
>,
|
|
157
164
|
) {
|
|
158
165
|
return <CursorPagination {...props} hasNextPage={false} skeleton />;
|
|
@@ -27,7 +27,7 @@ const ROW_COUNT_CLASS = 'whitespace-nowrap text-ods-text-secondary text-h6';
|
|
|
27
27
|
export function DataTableRowCountSkeleton({ label, className }: { label: string; className?: string }) {
|
|
28
28
|
return (
|
|
29
29
|
<span className={cn(ROW_COUNT_CLASS, className)} aria-hidden>
|
|
30
|
-
<TextLineSkeleton type="inherit" as="span" className="inline-block align-top
|
|
30
|
+
<TextLineSkeleton type="inherit" as="span" className="inline-block w-6 align-top" /> {label}
|
|
31
31
|
</span>
|
|
32
32
|
);
|
|
33
33
|
}
|
|
@@ -260,11 +260,7 @@ function FeatureCardGridView({
|
|
|
260
260
|
</span>
|
|
261
261
|
)}
|
|
262
262
|
<h3 className={`text-ods-text-primary text-h2 ${titleClassName}`}>
|
|
263
|
-
{loading ?
|
|
264
|
-
<TextLineSkeleton type="inherit" as="span" className="w-1/2" />
|
|
265
|
-
) : (
|
|
266
|
-
item.title
|
|
267
|
-
)}
|
|
263
|
+
{loading ? <TextLineSkeleton type="inherit" as="span" className="w-1/2" /> : item.title}
|
|
268
264
|
</h3>
|
|
269
265
|
{item.subtitle && (
|
|
270
266
|
<p className={`text-h4 ${accentClassName} ${subtitleClassName}`}>
|
|
@@ -294,11 +290,7 @@ function FeatureCardGridView({
|
|
|
294
290
|
</h3>
|
|
295
291
|
{item.subtitle && (
|
|
296
292
|
<p className={`text-h4 ${accentClassName} ${subtitleClassName}`}>
|
|
297
|
-
{loading ?
|
|
298
|
-
<TextLineSkeleton type="inherit" as="span" className="w-3/4" />
|
|
299
|
-
) : (
|
|
300
|
-
item.subtitle
|
|
301
|
-
)}
|
|
293
|
+
{loading ? <TextLineSkeleton type="inherit" as="span" className="w-3/4" /> : item.subtitle}
|
|
302
294
|
</p>
|
|
303
295
|
)}
|
|
304
296
|
</div>
|
|
@@ -116,14 +116,8 @@ export function FeatureList({
|
|
|
116
116
|
return (
|
|
117
117
|
<div className={`${BOXED_LIST_CLASS} ${className}`}>
|
|
118
118
|
{items.map((item, index) => (
|
|
119
|
-
<div
|
|
120
|
-
|
|
121
|
-
className={`${BOXED_ROW_CLASS} ${index < items.length - 1 ? BOXED_ROW_DIVIDER_CLASS : ''}`}
|
|
122
|
-
>
|
|
123
|
-
<div
|
|
124
|
-
className={ICON_BOX_CLASS}
|
|
125
|
-
style={{ width: iconBoxSize, height: iconBoxSize }}
|
|
126
|
-
>
|
|
119
|
+
<div key={index} className={`${BOXED_ROW_CLASS} ${index < items.length - 1 ? BOXED_ROW_DIVIDER_CLASS : ''}`}>
|
|
120
|
+
<div className={ICON_BOX_CLASS} style={{ width: iconBoxSize, height: iconBoxSize }}>
|
|
127
121
|
{item.icon}
|
|
128
122
|
</div>
|
|
129
123
|
<div className={BOXED_TEXT_CLASS}>
|
|
@@ -69,11 +69,7 @@ const SOURCE_TAG_CLASS =
|
|
|
69
69
|
'inline-flex shrink-0 rounded-md border border-ods-border px-2 py-1 text-ods-text-secondary text-h5';
|
|
70
70
|
|
|
71
71
|
function SourceTag({ children }: { children: ReactNode }) {
|
|
72
|
-
return
|
|
73
|
-
<span className={SOURCE_TAG_CLASS}>
|
|
74
|
-
{children}
|
|
75
|
-
</span>
|
|
76
|
-
);
|
|
72
|
+
return <span className={SOURCE_TAG_CLASS}>{children}</span>;
|
|
77
73
|
}
|
|
78
74
|
|
|
79
75
|
/** The row above an item's title: where it was found and when. Nothing to show: no row. */
|
|
@@ -93,13 +89,7 @@ function ItemMeta({ item }: { item: IncidentFeedItem }) {
|
|
|
93
89
|
* to a single row each. An item that is waiting on a person stays open even
|
|
94
90
|
* after newer ones arrive, because it is still the thing to look at.
|
|
95
91
|
*/
|
|
96
|
-
export function IncidentFeed({
|
|
97
|
-
items,
|
|
98
|
-
statusLabels,
|
|
99
|
-
emptyLabel,
|
|
100
|
-
anchor = 'top',
|
|
101
|
-
className,
|
|
102
|
-
}: IncidentFeedProps) {
|
|
92
|
+
export function IncidentFeed({ items, statusLabels, emptyLabel, anchor = 'top', className }: IncidentFeedProps) {
|
|
103
93
|
const lastIndex = items.length - 1;
|
|
104
94
|
return (
|
|
105
95
|
<div className={cn(FEED_CLASS, anchor === 'bottom' && FEED_BOTTOM_CLASS, className)}>
|
|
@@ -146,4 +136,3 @@ export function IncidentFeed({
|
|
|
146
136
|
</div>
|
|
147
137
|
);
|
|
148
138
|
}
|
|
149
|
-
|
|
@@ -45,7 +45,6 @@ export function LeaderRow({ label, value, status, as: Row = 'div', className }:
|
|
|
45
45
|
);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
|
|
49
48
|
/**
|
|
50
49
|
* A row while it is read: the label (drawn as it is when the page states it, else a bar), the hairline drawn for
|
|
51
50
|
* real, a bar for the value, a status box. Every bar is one line of the ROW's type step, so a row sized with
|
|
@@ -117,12 +117,7 @@ export function ProductScreenFrame({
|
|
|
117
117
|
>
|
|
118
118
|
<PortalContainerContext.Provider value={portalHost}>
|
|
119
119
|
<CollisionBoundaryContext.Provider value={frame}>
|
|
120
|
-
<div
|
|
121
|
-
inert
|
|
122
|
-
aria-hidden
|
|
123
|
-
className="ods-content-area"
|
|
124
|
-
style={screenStyle}
|
|
125
|
-
>
|
|
120
|
+
<div inert aria-hidden className="ods-content-area" style={screenStyle}>
|
|
126
121
|
<div className="ods-content-scope">
|
|
127
122
|
{/* Until measured (the server's HTML, a page without scripts) the screen is its own loading state: every
|
|
128
123
|
component in it draws its skeleton, so the window shows the screen's shape instead of nothing, and
|
|
@@ -103,7 +103,11 @@ function StatusBadgeSkeleton({ variant, className }: { variant?: 'card' | 'butto
|
|
|
103
103
|
return (
|
|
104
104
|
<UnifiedSkeleton
|
|
105
105
|
as="span"
|
|
106
|
-
className={cn(
|
|
106
|
+
className={cn(
|
|
107
|
+
statusBadgeVariants({ variant, colorScheme: null }),
|
|
108
|
+
'box-content h-[1lh] w-12 border-transparent',
|
|
109
|
+
className,
|
|
110
|
+
)}
|
|
107
111
|
/>
|
|
108
112
|
);
|
|
109
113
|
}
|
|
@@ -41,10 +41,7 @@ export function StatusLine({ tone, label, className }: StatusLineProps) {
|
|
|
41
41
|
)}
|
|
42
42
|
>
|
|
43
43
|
{tone === 'working' && (
|
|
44
|
-
<span
|
|
45
|
-
className={cn('h-2 w-2 shrink-0 rounded-full bg-ods-flamingo-cyan', LIVE_PULSE_CLASS)}
|
|
46
|
-
aria-hidden
|
|
47
|
-
/>
|
|
44
|
+
<span className={cn('h-2 w-2 shrink-0 rounded-full bg-ods-flamingo-cyan', LIVE_PULSE_CLASS)} aria-hidden />
|
|
48
45
|
)}
|
|
49
46
|
{tone === 'success' && <CheckCircleIcon size={16} className="shrink-0 text-ods-success" aria-hidden />}
|
|
50
47
|
{tone === 'error' && <XmarkCircleIcon size={16} className="shrink-0 text-ods-error" aria-hidden />}
|
|
@@ -76,9 +76,7 @@ export function StripCard({
|
|
|
76
76
|
{caption && <span className="text-ods-text-secondary text-h6">{caption}</span>}
|
|
77
77
|
</div>
|
|
78
78
|
</div>
|
|
79
|
-
<div className={cn(bodyClass(roomy), bodyClassName)}>
|
|
80
|
-
{children}
|
|
81
|
-
</div>
|
|
79
|
+
<div className={cn(bodyClass(roomy), bodyClassName)}>{children}</div>
|
|
82
80
|
</div>
|
|
83
81
|
);
|
|
84
82
|
}
|
|
@@ -198,5 +198,7 @@ export function TagSkeleton({
|
|
|
198
198
|
size?: keyof typeof TAG_SIZE_CLASS;
|
|
199
199
|
className?: string;
|
|
200
200
|
}) {
|
|
201
|
-
return
|
|
201
|
+
return (
|
|
202
|
+
<UnifiedSkeleton as="span" className={cn(TAG_FRAME_CLASS, TAG_SIZE_CLASS[size], 'w-16 shrink-0', className)} />
|
|
203
|
+
);
|
|
202
204
|
}
|
package/src/utils/format.ts
CHANGED
|
@@ -407,13 +407,25 @@ function toValidDate(date: DateInput): Date | null {
|
|
|
407
407
|
return Number.isNaN(d.getTime()) ? null : d;
|
|
408
408
|
}
|
|
409
409
|
|
|
410
|
+
/**
|
|
411
|
+
* The viewer's locale: the language the user put first in the browser's own
|
|
412
|
+
* Languages setting (`navigator.language`), not `Intl`'s default. The two
|
|
413
|
+
* differ on macOS, where Chrome's default locale is the OS language — a user
|
|
414
|
+
* with an English (US) Mac who chose English (Australia) in Chrome reads
|
|
415
|
+
* `en-AU` here and `en-US` from a bare `Intl.DateTimeFormat()`. Undefined off
|
|
416
|
+
* the client (SSR, a test without a navigator): the runtime's own default.
|
|
417
|
+
*/
|
|
418
|
+
export const viewerLocale = (): string | undefined =>
|
|
419
|
+
typeof navigator === 'undefined' ? undefined : navigator.language || undefined;
|
|
420
|
+
|
|
410
421
|
/**
|
|
411
422
|
* Render a date (and, for a date-time style, its time) in an explicit zone.
|
|
412
423
|
* Returns `''` for a missing or unparseable value.
|
|
413
424
|
*
|
|
414
|
-
* `options.viewerLocale` renders in the
|
|
415
|
-
* fixed `en-US` — for client-only UI that should read the way
|
|
416
|
-
* dates. The locale is never implied, for the same hydration
|
|
425
|
+
* `options.viewerLocale` renders in the viewer's LOCALE (`viewerLocale()`)
|
|
426
|
+
* instead of the fixed `en-US` — for client-only UI that should read the way
|
|
427
|
+
* its user writes dates. The locale is never implied, for the same hydration
|
|
428
|
+
* reason as the zone.
|
|
417
429
|
*/
|
|
418
430
|
export function formatDateWithTimezone(
|
|
419
431
|
date: DateInput,
|
|
@@ -424,7 +436,7 @@ export function formatDateWithTimezone(
|
|
|
424
436
|
const dateObj = toValidDate(date);
|
|
425
437
|
if (!dateObj) return '';
|
|
426
438
|
const { timeZone: _ignored, ...fields } = typeof style === 'string' ? ZONED_DATE_STYLES[style] : style;
|
|
427
|
-
return formatterFor(timezone, fields, options?.viewerLocale ?
|
|
439
|
+
return formatterFor(timezone, fields, options?.viewerLocale ? viewerLocale() : 'en-US').format(dateObj);
|
|
428
440
|
}
|
|
429
441
|
|
|
430
442
|
/**
|