@flamingo-stack/openframe-frontend-core 0.0.734 → 0.0.736
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-XKB7YGQM.cjs → chunk-77SD7RXY.cjs} +18 -6
- package/dist/{chunk-FA5SMA7L.cjs → chunk-7V2KP2TB.cjs} +4 -4
- package/dist/{chunk-KSXZABGH.cjs → chunk-BDF3FNOC.cjs} +38 -38
- package/dist/{chunk-3NANWZO3.cjs → chunk-BL5GOCHP.cjs} +14 -14
- package/dist/{chunk-DHIISS4W.cjs → chunk-EJOXXJJB.cjs} +62 -10
- package/dist/{chunk-TLQQP2EL.cjs → chunk-EX2GYIGW.cjs} +6 -6
- package/dist/{chunk-JRC3KXKV.cjs → chunk-FTGVG6FW.cjs} +30 -30
- package/dist/{chunk-4Q34V7MD.cjs → chunk-JGGSRCRD.cjs} +18 -18
- package/dist/{chunk-73ZW3265.cjs → chunk-JM54CNZZ.cjs} +85 -85
- package/dist/{chunk-HBUUCLQM.cjs → chunk-L535OD7V.cjs} +2 -2
- package/dist/{chunk-AOTOOGNX.cjs → chunk-LIH5OQLY.cjs} +3 -3
- package/dist/{chunk-OXJ57643.cjs → chunk-MGW5DO6P.cjs} +76 -17
- package/dist/{chunk-R65UD6BH.cjs → chunk-NONQUGRP.cjs} +14 -14
- package/dist/{chunk-4V672TEI.cjs → chunk-OJUMVOMP.cjs} +408 -355
- package/dist/{chunk-HAWQA5FI.cjs → chunk-OV6BGMEL.cjs} +151 -184
- package/dist/{chunk-5OGT7H2S.cjs → chunk-P6Z3EBPJ.cjs} +15 -15
- package/dist/{chunk-5DDFSGCE.cjs → chunk-SZFA2LQR.cjs} +33 -33
- package/dist/{chunk-EMBH2EJO.cjs → chunk-T27CVQBO.cjs} +65 -65
- package/dist/{chunk-CMUEFHM3.cjs → chunk-UBQSOB3X.cjs} +4 -4
- package/dist/{chunk-L7WJBJU7.cjs → chunk-URX2YTCL.cjs} +72 -72
- package/dist/{chunk-BP6R5WDW.cjs → chunk-VA7OMDZO.cjs} +41 -23
- package/dist/{chunk-D34BLEIR.cjs → chunk-VRNNIV5Y.cjs} +2 -2
- package/dist/{chunk-2OHBH6PS.cjs → chunk-XLSVQJBA.cjs} +44 -44
- package/dist/{chunk-OV7QQHLG.cjs → chunk-ZEX5WU35.cjs} +17 -17
- package/dist/{cloud-tenants-HU7YZD33.cjs → cloud-tenants-M55HMW6F.cjs} +8 -8
- package/dist/components/case-studies/index.cjs +20 -20
- package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/program-card.js +6 -6
- package/dist/components/chat/index.cjs +9 -9
- package/dist/components/contact/index.cjs +9 -9
- package/dist/components/docs/index.cjs +12 -12
- package/dist/components/embeds/index.cjs +9 -9
- package/dist/components/faq/index.cjs +9 -9
- package/dist/components/features/cards-strip.d.ts.map +1 -1
- package/dist/components/features/cards-strip.js +6 -2
- package/dist/components/features/index.cjs +8 -8
- package/dist/components/features/video-bites-strip.d.ts +6 -1
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-bites-strip.js +15 -3
- package/dist/components/help-center-pages/index.cjs +109 -109
- package/dist/components/index.cjs +68 -62
- package/dist/components/meeting-scheduler/index.cjs +35 -35
- package/dist/components/navigation/index.cjs +11 -11
- package/dist/components/onboarding-guides/index.cjs +11 -11
- package/dist/components/pagination.d.ts +9 -1
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/pagination.js +72 -17
- package/dist/components/product-demo/index.cjs +6 -6
- package/dist/components/related-content/index.cjs +5 -5
- package/dist/components/tickets/index.cjs +13 -13
- package/dist/components/ui/fade-preview.d.ts +5 -1
- package/dist/components/ui/fade-preview.d.ts.map +1 -1
- package/dist/components/ui/fade-preview.js +18 -1
- package/dist/components/ui/index.cjs +18 -12
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +1 -0
- package/dist/components/ui/layout-hold.d.ts +31 -0
- package/dist/components/ui/layout-hold.d.ts.map +1 -0
- package/dist/components/ui/layout-hold.js +25 -0
- package/dist/components/ui/snap-carousel.d.ts.map +1 -1
- package/dist/components/ui/snap-carousel.js +28 -15
- package/dist/components/unified-pagination.d.ts.map +1 -1
- package/dist/components/unified-pagination.js +16 -4
- package/dist/{devices-CKLN7BHY.cjs → devices-WWJZFG6E.cjs} +9 -9
- package/dist/{embeddable-chat-FTAX4SVV.cjs → embeddable-chat-76IJ6TQZ.cjs} +72 -72
- package/dist/hooks/index.cjs +4 -2
- package/dist/hooks/ui/index.d.ts +1 -0
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/hooks/ui/index.js +1 -0
- package/dist/hooks/ui/use-resumable-timeout.d.ts +22 -0
- package/dist/hooks/ui/use-resumable-timeout.d.ts.map +1 -0
- package/dist/hooks/ui/use-resumable-timeout.js +26 -0
- package/dist/hooks/use-scenario-player.d.ts +4 -3
- package/dist/hooks/use-scenario-player.d.ts.map +1 -1
- package/dist/hooks/use-scenario-player.js +17 -23
- package/dist/index.cjs +24 -16
- package/dist/{knowledge-NRLHSCC5.cjs → knowledge-F4YFQT3G.cjs} +9 -9
- package/dist/{logs-BR6SLYAF.cjs → logs-GAYEGEZM.cjs} +16 -16
- package/dist/{policies-MQRXBYG2.cjs → policies-ZOVJCJWX.cjs} +12 -12
- package/dist/{software-update-RUGIQP7N.cjs → software-update-H4YE5GMJ.cjs} +11 -11
- package/package.json +1 -1
- package/src/components/chat/entity-cards/program-card.tsx +9 -8
- package/src/components/features/cards-strip.tsx +11 -2
- package/src/components/features/video-bites-strip.tsx +22 -3
- package/src/components/pagination.tsx +117 -21
- package/src/components/ui/fade-preview.tsx +30 -1
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/layout-hold.tsx +55 -0
- package/src/components/ui/snap-carousel.tsx +36 -20
- package/src/components/unified-pagination.tsx +23 -7
- package/src/hooks/ui/index.ts +1 -0
- package/src/hooks/ui/use-resumable-timeout.ts +55 -0
- package/src/hooks/use-scenario-player.ts +28 -32
|
@@ -8,23 +8,23 @@ var _chunkII4QMH26cjs = require('./chunk-II4QMH26.cjs');
|
|
|
8
8
|
var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunkOJUMVOMPcjs = require('./chunk-OJUMVOMP.cjs');
|
|
12
12
|
require('./chunk-ZJNYWNCB.cjs');
|
|
13
13
|
require('./chunk-3HPB4H4C.cjs');
|
|
14
14
|
require('./chunk-L4ZNR5V7.cjs');
|
|
15
15
|
require('./chunk-HQQE74RO.cjs');
|
|
16
16
|
require('./chunk-DEY6XXGO.cjs');
|
|
17
|
-
require('./chunk-
|
|
17
|
+
require('./chunk-VA7OMDZO.cjs');
|
|
18
18
|
require('./chunk-AAFW4STC.cjs');
|
|
19
19
|
require('./chunk-24I6RFVU.cjs');
|
|
20
20
|
require('./chunk-A6P6DHEZ.cjs');
|
|
21
21
|
require('./chunk-MZ4KBSH7.cjs');
|
|
22
|
-
require('./chunk-
|
|
22
|
+
require('./chunk-MGW5DO6P.cjs');
|
|
23
23
|
require('./chunk-YUMFVQIN.cjs');
|
|
24
|
-
require('./chunk-
|
|
24
|
+
require('./chunk-T27CVQBO.cjs');
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
var
|
|
27
|
+
var _chunkOV6BGMELcjs = require('./chunk-OV6BGMEL.cjs');
|
|
28
28
|
require('./chunk-ZRYKDN2J.cjs');
|
|
29
29
|
require('./chunk-HZJRERJW.cjs');
|
|
30
30
|
require('./chunk-DUXLZPMJ.cjs');
|
|
@@ -1825,8 +1825,8 @@ require('./chunk-7DNL734S.cjs');
|
|
|
1825
1825
|
require('./chunk-WWUSFOJ7.cjs');
|
|
1826
1826
|
require('./chunk-SKI6NKOE.cjs');
|
|
1827
1827
|
require('./chunk-EWPR7662.cjs');
|
|
1828
|
-
require('./chunk-
|
|
1829
|
-
require('./chunk-
|
|
1828
|
+
require('./chunk-EX2GYIGW.cjs');
|
|
1829
|
+
require('./chunk-EJOXXJJB.cjs');
|
|
1830
1830
|
require('./chunk-FCGLSWKR.cjs');
|
|
1831
1831
|
require('./chunk-YADG5Q7C.cjs');
|
|
1832
1832
|
require('./chunk-MYBTNOS6.cjs');
|
|
@@ -1905,10 +1905,10 @@ function KnowledgeScreen(_props) {
|
|
|
1905
1905
|
const cast = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
|
|
1906
1906
|
const fixture = _react.useMemo.call(void 0, () => buildKnowledgeFixture(cast), [cast]);
|
|
1907
1907
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1908
|
-
|
|
1908
|
+
_chunkOJUMVOMPcjs.KnowledgeBaseArticleView,
|
|
1909
1909
|
{
|
|
1910
1910
|
...fixture.article,
|
|
1911
|
-
content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1911
|
+
content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOV6BGMELcjs.SimpleMarkdownRenderer, { content: fixture.content, textSize: "compact" })
|
|
1912
1912
|
}
|
|
1913
1913
|
) });
|
|
1914
1914
|
}
|
|
@@ -16,23 +16,23 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunkOJUMVOMPcjs = require('./chunk-OJUMVOMP.cjs');
|
|
20
20
|
require('./chunk-ZJNYWNCB.cjs');
|
|
21
21
|
require('./chunk-3HPB4H4C.cjs');
|
|
22
22
|
require('./chunk-L4ZNR5V7.cjs');
|
|
23
23
|
require('./chunk-HQQE74RO.cjs');
|
|
24
24
|
require('./chunk-DEY6XXGO.cjs');
|
|
25
|
-
require('./chunk-
|
|
25
|
+
require('./chunk-VA7OMDZO.cjs');
|
|
26
26
|
require('./chunk-AAFW4STC.cjs');
|
|
27
27
|
require('./chunk-24I6RFVU.cjs');
|
|
28
28
|
require('./chunk-A6P6DHEZ.cjs');
|
|
29
29
|
require('./chunk-MZ4KBSH7.cjs');
|
|
30
|
-
require('./chunk-
|
|
30
|
+
require('./chunk-MGW5DO6P.cjs');
|
|
31
31
|
require('./chunk-YUMFVQIN.cjs');
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
var
|
|
35
|
-
require('./chunk-
|
|
34
|
+
var _chunkT27CVQBOcjs = require('./chunk-T27CVQBO.cjs');
|
|
35
|
+
require('./chunk-OV6BGMEL.cjs');
|
|
36
36
|
require('./chunk-ZRYKDN2J.cjs');
|
|
37
37
|
require('./chunk-HZJRERJW.cjs');
|
|
38
38
|
require('./chunk-DUXLZPMJ.cjs');
|
|
@@ -1833,8 +1833,8 @@ require('./chunk-7DNL734S.cjs');
|
|
|
1833
1833
|
require('./chunk-WWUSFOJ7.cjs');
|
|
1834
1834
|
require('./chunk-SKI6NKOE.cjs');
|
|
1835
1835
|
require('./chunk-EWPR7662.cjs');
|
|
1836
|
-
require('./chunk-
|
|
1837
|
-
require('./chunk-
|
|
1836
|
+
require('./chunk-EX2GYIGW.cjs');
|
|
1837
|
+
require('./chunk-EJOXXJJB.cjs');
|
|
1838
1838
|
require('./chunk-FCGLSWKR.cjs');
|
|
1839
1839
|
require('./chunk-YADG5Q7C.cjs');
|
|
1840
1840
|
require('./chunk-MYBTNOS6.cjs');
|
|
@@ -1886,7 +1886,7 @@ function entry(logId, minutesAgo, severity, toolType, device2, summary) {
|
|
|
1886
1886
|
id: logId,
|
|
1887
1887
|
logId,
|
|
1888
1888
|
timestamp: displayTime(_chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, minutesAgo)),
|
|
1889
|
-
status: { label: severity, variant:
|
|
1889
|
+
status: { label: severity, variant: _chunkOJUMVOMPcjs.logSeverityVariant.call(void 0, severity) },
|
|
1890
1890
|
source: { name: toolType, toolType },
|
|
1891
1891
|
device: device2,
|
|
1892
1892
|
description: { title: summary }
|
|
@@ -1958,13 +1958,13 @@ var NO_FILTERS = {};
|
|
|
1958
1958
|
var ACTION_COLUMNS = ["copy", "quickView", "open"];
|
|
1959
1959
|
var BESIDE_DRAWER_HIDDEN = [...ACTION_COLUMNS, "tool", "source"];
|
|
1960
1960
|
var logHref = () => "#";
|
|
1961
|
-
var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1961
|
+
var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOJUMVOMPcjs.LogCopyIconButton, {});
|
|
1962
1962
|
function LogsScreen({ compact = false }) {
|
|
1963
1963
|
const [dock, setDock] = _react.useState.call(void 0, null);
|
|
1964
1964
|
const selected = LOGS_FIXTURE_SELECTED;
|
|
1965
1965
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full bg-ods-bg", children: [
|
|
1966
1966
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1 overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1967
|
-
|
|
1967
|
+
_chunkOJUMVOMPcjs.LogsPageView,
|
|
1968
1968
|
{
|
|
1969
1969
|
showHeader: false,
|
|
1970
1970
|
className: "p-[var(--spacing-system-l)]",
|
|
@@ -1972,7 +1972,7 @@ function LogsScreen({ compact = false }) {
|
|
|
1972
1972
|
onSearchChange: noop,
|
|
1973
1973
|
onOpenFilters: noop,
|
|
1974
1974
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1975
|
-
|
|
1975
|
+
_chunkOJUMVOMPcjs.LogsTableView,
|
|
1976
1976
|
{
|
|
1977
1977
|
logs: LOGS_FIXTURE_ENTRIES,
|
|
1978
1978
|
facets: LOGS_FIXTURE_FACETS,
|
|
@@ -1986,8 +1986,8 @@ function LogsScreen({ compact = false }) {
|
|
|
1986
1986
|
)
|
|
1987
1987
|
}
|
|
1988
1988
|
) }),
|
|
1989
|
-
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setDock, className: "relative w-[calc(400px+var(--spacing-system-m))] shrink-0", children: dock && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1990
|
-
|
|
1989
|
+
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setDock, className: "relative w-[calc(400px+var(--spacing-system-m))] shrink-0", children: dock && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOJUMVOMPcjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1990
|
+
_chunkOJUMVOMPcjs.LogDrawer,
|
|
1991
1991
|
{
|
|
1992
1992
|
docked: true,
|
|
1993
1993
|
isOpen: true,
|
|
@@ -1999,12 +1999,12 @@ function LogsScreen({ compact = false }) {
|
|
|
1999
1999
|
{ label: "Log ID", value: selected.logId },
|
|
2000
2000
|
{
|
|
2001
2001
|
label: "Source",
|
|
2002
|
-
value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2002
|
+
value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOJUMVOMPcjs.ToolBadge, { toolType: _chunkT27CVQBOcjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
|
|
2003
2003
|
},
|
|
2004
|
-
{ label: "Device", value:
|
|
2004
|
+
{ label: "Device", value: _chunkOJUMVOMPcjs.logSourceLabels.call(void 0, selected.device).deviceName }
|
|
2005
2005
|
],
|
|
2006
2006
|
deviceCard: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2007
|
-
|
|
2007
|
+
_chunkOJUMVOMPcjs.DeviceCard,
|
|
2008
2008
|
{
|
|
2009
2009
|
...LOGS_FIXTURE_DEVICE,
|
|
2010
2010
|
actions: {
|
|
@@ -10,21 +10,21 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkOJUMVOMPcjs = require('./chunk-OJUMVOMP.cjs');
|
|
14
14
|
require('./chunk-ZJNYWNCB.cjs');
|
|
15
15
|
require('./chunk-3HPB4H4C.cjs');
|
|
16
16
|
require('./chunk-L4ZNR5V7.cjs');
|
|
17
17
|
require('./chunk-HQQE74RO.cjs');
|
|
18
18
|
require('./chunk-DEY6XXGO.cjs');
|
|
19
|
-
require('./chunk-
|
|
19
|
+
require('./chunk-VA7OMDZO.cjs');
|
|
20
20
|
require('./chunk-AAFW4STC.cjs');
|
|
21
21
|
require('./chunk-24I6RFVU.cjs');
|
|
22
22
|
require('./chunk-A6P6DHEZ.cjs');
|
|
23
23
|
require('./chunk-MZ4KBSH7.cjs');
|
|
24
|
-
require('./chunk-
|
|
24
|
+
require('./chunk-MGW5DO6P.cjs');
|
|
25
25
|
require('./chunk-YUMFVQIN.cjs');
|
|
26
|
-
require('./chunk-
|
|
27
|
-
require('./chunk-
|
|
26
|
+
require('./chunk-T27CVQBO.cjs');
|
|
27
|
+
require('./chunk-OV6BGMEL.cjs');
|
|
28
28
|
require('./chunk-ZRYKDN2J.cjs');
|
|
29
29
|
require('./chunk-HZJRERJW.cjs');
|
|
30
30
|
require('./chunk-DUXLZPMJ.cjs');
|
|
@@ -1825,8 +1825,8 @@ require('./chunk-7DNL734S.cjs');
|
|
|
1825
1825
|
require('./chunk-WWUSFOJ7.cjs');
|
|
1826
1826
|
require('./chunk-SKI6NKOE.cjs');
|
|
1827
1827
|
require('./chunk-EWPR7662.cjs');
|
|
1828
|
-
require('./chunk-
|
|
1829
|
-
require('./chunk-
|
|
1828
|
+
require('./chunk-EX2GYIGW.cjs');
|
|
1829
|
+
require('./chunk-EJOXXJJB.cjs');
|
|
1830
1830
|
require('./chunk-FCGLSWKR.cjs');
|
|
1831
1831
|
require('./chunk-YADG5Q7C.cjs');
|
|
1832
1832
|
require('./chunk-MYBTNOS6.cjs');
|
|
@@ -1891,14 +1891,14 @@ var POLICIES = [
|
|
|
1891
1891
|
policy("policy-local-admins", "No local admins", "No everyday account is a local administrator.", false, 0)
|
|
1892
1892
|
];
|
|
1893
1893
|
var POLICIES_FIXTURE = {
|
|
1894
|
-
summary:
|
|
1894
|
+
summary: _chunkOJUMVOMPcjs.computePolicySummary.call(void 0, POLICIES),
|
|
1895
1895
|
rows: POLICIES.map((item) => ({
|
|
1896
1896
|
id: item.id,
|
|
1897
1897
|
name: item.name,
|
|
1898
1898
|
description: item.description,
|
|
1899
1899
|
critical: item.critical,
|
|
1900
1900
|
severityLabel: item.critical ? "Critical" : "Low",
|
|
1901
|
-
status:
|
|
1901
|
+
status: _chunkOJUMVOMPcjs.getPolicyTableStatus.call(void 0, item),
|
|
1902
1902
|
actions: [
|
|
1903
1903
|
{ label: "Policy Details", onClick: noop },
|
|
1904
1904
|
{ label: "Delete Policy", onClick: noop }
|
|
@@ -1912,16 +1912,16 @@ var POLICIES_FIXTURE = {
|
|
|
1912
1912
|
var _jsxruntime = require('react/jsx-runtime');
|
|
1913
1913
|
function PoliciesScreen({ compact = false }) {
|
|
1914
1914
|
const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1915
|
-
|
|
1915
|
+
_chunkOJUMVOMPcjs.PoliciesTable,
|
|
1916
1916
|
{
|
|
1917
1917
|
rows: POLICIES_FIXTURE.rows,
|
|
1918
1918
|
rowAsLink: true,
|
|
1919
|
-
rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1919
|
+
rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOJUMVOMPcjs.DataTable.RowCount, {}),
|
|
1920
1920
|
emptyMessage: "No policies found."
|
|
1921
1921
|
}
|
|
1922
1922
|
);
|
|
1923
1923
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col gap-[var(--spacing-system-l)] bg-ods-bg p-[var(--spacing-system-l)]", children: [
|
|
1924
|
-
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1924
|
+
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOJUMVOMPcjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
|
|
1925
1925
|
table
|
|
1926
1926
|
] });
|
|
1927
1927
|
}
|
|
@@ -15,7 +15,7 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _chunkOJUMVOMPcjs = require('./chunk-OJUMVOMP.cjs');
|
|
19
19
|
require('./chunk-ZJNYWNCB.cjs');
|
|
20
20
|
require('./chunk-3HPB4H4C.cjs');
|
|
21
21
|
|
|
@@ -23,15 +23,15 @@ require('./chunk-3HPB4H4C.cjs');
|
|
|
23
23
|
var _chunkL4ZNR5V7cjs = require('./chunk-L4ZNR5V7.cjs');
|
|
24
24
|
require('./chunk-HQQE74RO.cjs');
|
|
25
25
|
require('./chunk-DEY6XXGO.cjs');
|
|
26
|
-
require('./chunk-
|
|
26
|
+
require('./chunk-VA7OMDZO.cjs');
|
|
27
27
|
require('./chunk-AAFW4STC.cjs');
|
|
28
28
|
require('./chunk-24I6RFVU.cjs');
|
|
29
29
|
require('./chunk-A6P6DHEZ.cjs');
|
|
30
30
|
require('./chunk-MZ4KBSH7.cjs');
|
|
31
|
-
require('./chunk-
|
|
31
|
+
require('./chunk-MGW5DO6P.cjs');
|
|
32
32
|
require('./chunk-YUMFVQIN.cjs');
|
|
33
|
-
require('./chunk-
|
|
34
|
-
require('./chunk-
|
|
33
|
+
require('./chunk-T27CVQBO.cjs');
|
|
34
|
+
require('./chunk-OV6BGMEL.cjs');
|
|
35
35
|
require('./chunk-ZRYKDN2J.cjs');
|
|
36
36
|
require('./chunk-HZJRERJW.cjs');
|
|
37
37
|
require('./chunk-DUXLZPMJ.cjs');
|
|
@@ -1832,8 +1832,8 @@ require('./chunk-7DNL734S.cjs');
|
|
|
1832
1832
|
require('./chunk-WWUSFOJ7.cjs');
|
|
1833
1833
|
require('./chunk-SKI6NKOE.cjs');
|
|
1834
1834
|
require('./chunk-EWPR7662.cjs');
|
|
1835
|
-
require('./chunk-
|
|
1836
|
-
require('./chunk-
|
|
1835
|
+
require('./chunk-EX2GYIGW.cjs');
|
|
1836
|
+
require('./chunk-EJOXXJJB.cjs');
|
|
1837
1837
|
require('./chunk-FCGLSWKR.cjs');
|
|
1838
1838
|
require('./chunk-YADG5Q7C.cjs');
|
|
1839
1839
|
require('./chunk-MYBTNOS6.cjs');
|
|
@@ -1926,12 +1926,12 @@ function StaticPackageField({ value }) {
|
|
|
1926
1926
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1927
1927
|
_chunkL4ZNR5V7cjs.Autocomplete,
|
|
1928
1928
|
{
|
|
1929
|
-
label:
|
|
1929
|
+
label: _chunkOJUMVOMPcjs.PACKAGE_SEARCH_LABEL,
|
|
1930
1930
|
labelVariant: "large",
|
|
1931
1931
|
options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
|
|
1932
1932
|
value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
|
|
1933
1933
|
onChange: noop,
|
|
1934
|
-
placeholder:
|
|
1934
|
+
placeholder: _chunkOJUMVOMPcjs.PACKAGE_SEARCH_PLACEHOLDER
|
|
1935
1935
|
}
|
|
1936
1936
|
);
|
|
1937
1937
|
}
|
|
@@ -1945,7 +1945,7 @@ function SoftwareUpdateScreen({ compact = false }) {
|
|
|
1945
1945
|
[fixture.devices, fixture.selectedIds]
|
|
1946
1946
|
);
|
|
1947
1947
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1948
|
-
|
|
1948
|
+
_chunkOJUMVOMPcjs.SoftwareActionForm,
|
|
1949
1949
|
{
|
|
1950
1950
|
action: fixture.action,
|
|
1951
1951
|
showHeader: false,
|
|
@@ -1957,7 +1957,7 @@ function SoftwareUpdateScreen({ compact = false }) {
|
|
|
1957
1957
|
initialValues: fixture.initialValues,
|
|
1958
1958
|
renderPackageSearch,
|
|
1959
1959
|
renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1960
|
-
|
|
1960
|
+
_chunkOJUMVOMPcjs.DeviceSelector,
|
|
1961
1961
|
{
|
|
1962
1962
|
devices: selected,
|
|
1963
1963
|
loading: false,
|
package/package.json
CHANGED
|
@@ -83,8 +83,8 @@ const EDITORIAL_META_ROW =
|
|
|
83
83
|
const EDITORIAL_PERSON_ROW = 'flex h-8 min-w-0 items-center gap-[var(--spacing-system-s)]';
|
|
84
84
|
|
|
85
85
|
// The default card's boxes, shared by the card and its skeleton: a large SQUARE cover
|
|
86
|
-
// (the picture fills it), a display title, the date and meta row (stacked
|
|
87
|
-
// one line
|
|
86
|
+
// (the picture fills it), a two-line display title, the date and meta row (stacked up to
|
|
87
|
+
// lg, where the text column is wide enough for one line), a three-line description, a tag row, the gallery and the action,
|
|
88
88
|
// so a card is one height whatever its copy and cover.
|
|
89
89
|
const DEFAULT_BODY =
|
|
90
90
|
'flex flex-col gap-[var(--spacing-system-lf)] p-[var(--spacing-system-lf)] md:p-[var(--spacing-system-xlf)]';
|
|
@@ -92,9 +92,9 @@ const DEFAULT_HEADER = 'flex flex-col gap-[var(--spacing-system-lf)] md:flex-row
|
|
|
92
92
|
const DEFAULT_COVER_FRAME =
|
|
93
93
|
'relative aspect-square w-full flex-shrink-0 overflow-hidden rounded-lg md:w-[240px] lg:w-[320px] xl:w-[400px]';
|
|
94
94
|
const DEFAULT_TEXT = 'flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-mf)]';
|
|
95
|
-
const DEFAULT_TITLE = 'line-clamp-2 text-ods-text-primary text-h1';
|
|
95
|
+
const DEFAULT_TITLE = 'line-clamp-2 min-h-[2lh] text-ods-text-primary text-h1';
|
|
96
96
|
const DEFAULT_META_ROW =
|
|
97
|
-
'flex min-h-[calc(2lh+0.5rem)] flex-col gap-2 text-h4
|
|
97
|
+
'flex min-h-[calc(2lh+0.5rem)] flex-col gap-2 text-h4 lg:min-h-[1lh] lg:flex-row lg:items-center lg:gap-4';
|
|
98
98
|
const DEFAULT_DESCRIPTION = 'line-clamp-3 min-h-[3lh] text-ods-text-secondary text-h4';
|
|
99
99
|
const DEFAULT_TAG_ROW = 'flex flex-wrap gap-[var(--spacing-system-xsf)]';
|
|
100
100
|
const DEFAULT_GALLERY_ROW = 'flex gap-[var(--spacing-system-mf)]';
|
|
@@ -177,7 +177,7 @@ export function ProgramCardSkeleton({
|
|
|
177
177
|
<div className={`${DEFAULT_COVER_FRAME} bg-ods-border`} />
|
|
178
178
|
<div className={DEFAULT_TEXT}>
|
|
179
179
|
<div className={DEFAULT_TITLE}>
|
|
180
|
-
<span className="block h-[
|
|
180
|
+
<span className="block h-[2lh] w-3/4 rounded bg-ods-border" />
|
|
181
181
|
</div>
|
|
182
182
|
<div className={DEFAULT_META_ROW}>
|
|
183
183
|
<span className="block h-[1lh] w-32 rounded bg-ods-border" />
|
|
@@ -202,7 +202,8 @@ export function ProgramCardSkeleton({
|
|
|
202
202
|
</div>
|
|
203
203
|
)}
|
|
204
204
|
<div className={DEFAULT_FOOTER}>
|
|
205
|
-
|
|
205
|
+
{/* The action button's own height (44px, 48px from md). */}
|
|
206
|
+
<div className="h-11 w-40 rounded bg-ods-border md:h-12" />
|
|
206
207
|
</div>
|
|
207
208
|
</div>
|
|
208
209
|
);
|
|
@@ -632,13 +633,13 @@ export function ProgramCard<T extends BaseProgramItem>({
|
|
|
632
633
|
<span style={{ color: accentColor }}>{dateLabel}</span>
|
|
633
634
|
{renderMeta ? (
|
|
634
635
|
<>
|
|
635
|
-
<span className="hidden text-ods-text-secondary
|
|
636
|
+
<span className="hidden text-ods-text-secondary lg:inline">•</span>
|
|
636
637
|
{renderMeta(item)}
|
|
637
638
|
</>
|
|
638
639
|
) : (
|
|
639
640
|
defaultRenderMeta() && (
|
|
640
641
|
<>
|
|
641
|
-
<span className="hidden text-ods-text-secondary
|
|
642
|
+
<span className="hidden text-ods-text-secondary lg:inline">•</span>
|
|
642
643
|
<div className="flex items-center gap-2">{defaultRenderMeta()}</div>
|
|
643
644
|
</>
|
|
644
645
|
)
|
|
@@ -259,8 +259,17 @@ function ManagedCell({
|
|
|
259
259
|
const cloneRef = useSuppressCloneFocus(ctx.isClone);
|
|
260
260
|
return (
|
|
261
261
|
<div
|
|
262
|
-
|
|
263
|
-
|
|
262
|
+
// The width is CSS's (the engine's own 767px line), never a script's: the
|
|
263
|
+
// first paint is the cell's final width, so a phone's strip never resizes
|
|
264
|
+
// when the page hydrates.
|
|
265
|
+
className="w-[var(--strip-cell-mobile)] shrink-0 self-stretch min-[768px]:w-[var(--strip-cell-desktop)]"
|
|
266
|
+
style={
|
|
267
|
+
{
|
|
268
|
+
'--strip-cell-mobile': `${cardWidthMobile}px`,
|
|
269
|
+
'--strip-cell-desktop': `${desktopWidth}px`,
|
|
270
|
+
maxWidth: STRIP_CELL_MAX_WIDTH,
|
|
271
|
+
} as React.CSSProperties
|
|
272
|
+
}
|
|
264
273
|
data-strip-card-key={ctx.cardKey}
|
|
265
274
|
onPointerEnter={ctx.isTouch ? undefined : () => ctx.onActivate(ctx.cardKey)}
|
|
266
275
|
onPointerLeave={ctx.isTouch ? undefined : () => ctx.onDeactivate(ctx.cardKey)}
|
|
@@ -147,7 +147,8 @@ export function VideoBitesStrip({
|
|
|
147
147
|
cardKey={ctx.cardKey}
|
|
148
148
|
isClone={ctx.isClone}
|
|
149
149
|
isTouch={ctx.isTouch}
|
|
150
|
-
height={
|
|
150
|
+
height={cardHeightDesktop}
|
|
151
|
+
heightMobile={cardHeightMobile}
|
|
151
152
|
active={ctx.active}
|
|
152
153
|
onActivate={ctx.onActivate}
|
|
153
154
|
onDeactivate={ctx.onDeactivate}
|
|
@@ -178,6 +179,11 @@ export interface VideoBiteCardProps {
|
|
|
178
179
|
/** Fixed card height (strip). Omit → width-driven: card fills its grid
|
|
179
180
|
* cell and the aspect-ratio derives the height (editor grids). */
|
|
180
181
|
height?: number;
|
|
182
|
+
/** With `height`: the height under the strip's 768px line. The switch is CSS's,
|
|
183
|
+
* so the first paint is the card's final size on a phone too. OPTIONAL and
|
|
184
|
+
* additive: omitted, `height` applies at every width, exactly as before this
|
|
185
|
+
* prop existed (a caller that resolves the height itself keeps working). */
|
|
186
|
+
heightMobile?: number;
|
|
181
187
|
/** Controlled hover-activation (strip). Omit → the card manages its own
|
|
182
188
|
* hover/focus state. */
|
|
183
189
|
active?: boolean;
|
|
@@ -211,6 +217,7 @@ export function VideoBiteCard({
|
|
|
211
217
|
sectionHref,
|
|
212
218
|
onBiteNavigate,
|
|
213
219
|
height,
|
|
220
|
+
heightMobile,
|
|
214
221
|
active,
|
|
215
222
|
onActivate,
|
|
216
223
|
onDeactivate,
|
|
@@ -356,10 +363,22 @@ export function VideoBiteCard({
|
|
|
356
363
|
|
|
357
364
|
const media = (
|
|
358
365
|
<div
|
|
359
|
-
className=
|
|
366
|
+
className={cn(
|
|
367
|
+
'relative w-full',
|
|
368
|
+
height !== undefined && 'h-[var(--bite-height-mobile)] min-[768px]:h-[var(--bite-height)]',
|
|
369
|
+
)}
|
|
360
370
|
// Strip mode: fixed height + aspect drive the width (capped at 90vw,
|
|
361
371
|
// same as the old single-box layout). Editor mode: width-driven.
|
|
362
|
-
style={{
|
|
372
|
+
style={{
|
|
373
|
+
aspectRatio: cssAspect,
|
|
374
|
+
...(height !== undefined
|
|
375
|
+
? {
|
|
376
|
+
'--bite-height': `${height}px`,
|
|
377
|
+
'--bite-height-mobile': `${heightMobile ?? height}px`,
|
|
378
|
+
maxWidth: STRIP_CELL_MAX_WIDTH,
|
|
379
|
+
}
|
|
380
|
+
: {}),
|
|
381
|
+
}}
|
|
363
382
|
>
|
|
364
383
|
{/* THE shared hover-preview media zone (poster → facade → badge →
|
|
365
384
|
controlled hover playback + near-viewport mount gate). The bite strip
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';
|
|
4
|
-
import { type ButtonHTMLAttributes, type HTMLAttributes, forwardRef } from 'react';
|
|
4
|
+
import { type ButtonHTMLAttributes, type HTMLAttributes, type MouseEvent, type ReactNode, forwardRef } from 'react';
|
|
5
|
+
import Link from '../embed-shims/next-link';
|
|
5
6
|
import { cn } from '../utils/cn';
|
|
7
|
+
import { isModifierClick } from './chat/utils/chat-nav-resolution';
|
|
6
8
|
import { Button } from './ui/button';
|
|
7
9
|
|
|
8
10
|
interface PaginationProps {
|
|
@@ -10,9 +12,98 @@ interface PaginationProps {
|
|
|
10
12
|
totalPages: number;
|
|
11
13
|
onPageChange: (page: number) => void;
|
|
12
14
|
className?: string;
|
|
15
|
+
/**
|
|
16
|
+
* The address of a page of this list. With it every enabled control is a real
|
|
17
|
+
* link (`<a href>`), so a crawler that runs no script can reach every page of
|
|
18
|
+
* the list, and a person can open a page in a new tab. A plain click still
|
|
19
|
+
* changes the page in place through `onPageChange`. Without it the controls
|
|
20
|
+
* are buttons.
|
|
21
|
+
*/
|
|
22
|
+
getPageHref?: (page: number) => string;
|
|
13
23
|
}
|
|
14
24
|
|
|
15
|
-
|
|
25
|
+
interface PaginationControlProps {
|
|
26
|
+
/** The page this control goes to. */
|
|
27
|
+
page: number;
|
|
28
|
+
/** The control's accessible name ("Page 3", "Go to next page"). */
|
|
29
|
+
label: string;
|
|
30
|
+
variant: 'accent' | 'outline';
|
|
31
|
+
className: string;
|
|
32
|
+
/** The control marks the page being shown. */
|
|
33
|
+
current?: boolean;
|
|
34
|
+
/** There is no such page (previous on the first page, next on the last). */
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
/** Which neighbour the control leads to, stated to crawlers and assistive technology as `rel`. */
|
|
37
|
+
rel?: 'prev' | 'next';
|
|
38
|
+
onPageChange: (page: number) => void;
|
|
39
|
+
getPageHref?: (page: number) => string;
|
|
40
|
+
children: ReactNode;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* One control of the pager. With a page address it is a link: the href is the
|
|
45
|
+
* page's real URL, so it works with no script, in a new tab and for a crawler,
|
|
46
|
+
* and a plain click is taken over to change the page in place (the progressive
|
|
47
|
+
* enhancement every in-page link in this library uses). With no address, or
|
|
48
|
+
* when there is no such page, it is a button: a link must always lead somewhere.
|
|
49
|
+
*/
|
|
50
|
+
function PaginationControl({
|
|
51
|
+
page,
|
|
52
|
+
label,
|
|
53
|
+
variant,
|
|
54
|
+
className,
|
|
55
|
+
current,
|
|
56
|
+
disabled,
|
|
57
|
+
rel,
|
|
58
|
+
onPageChange,
|
|
59
|
+
getPageHref,
|
|
60
|
+
children,
|
|
61
|
+
}: PaginationControlProps) {
|
|
62
|
+
const ariaCurrent = current ? ('page' as const) : undefined;
|
|
63
|
+
|
|
64
|
+
if (!getPageHref || disabled) {
|
|
65
|
+
return (
|
|
66
|
+
<Button
|
|
67
|
+
variant={variant}
|
|
68
|
+
size="icon"
|
|
69
|
+
className={className}
|
|
70
|
+
disabled={disabled}
|
|
71
|
+
aria-label={label}
|
|
72
|
+
aria-current={ariaCurrent}
|
|
73
|
+
onClick={() => onPageChange(page)}
|
|
74
|
+
>
|
|
75
|
+
{children}
|
|
76
|
+
</Button>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {
|
|
81
|
+
// A new tab or window is the browser's to open, at the link's own address.
|
|
82
|
+
if (isModifierClick(event)) return;
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
onPageChange(page);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
return (
|
|
88
|
+
<Button variant={variant} size="icon" className={className} asChild>
|
|
89
|
+
<Link
|
|
90
|
+
href={getPageHref(page)}
|
|
91
|
+
prefetch={false}
|
|
92
|
+
rel={rel}
|
|
93
|
+
aria-label={label}
|
|
94
|
+
aria-current={ariaCurrent}
|
|
95
|
+
onClick={handleClick}
|
|
96
|
+
>
|
|
97
|
+
{children}
|
|
98
|
+
</Link>
|
|
99
|
+
</Button>
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const NEIGHBOUR_CLASS = '!h-10 !w-10 content-md:!h-10 content-md:!w-10';
|
|
104
|
+
const PAGE_CLASS = '!h-9 !w-9 content-md:!h-9 content-md:!w-9';
|
|
105
|
+
|
|
106
|
+
const Pagination = ({ currentPage, totalPages, onPageChange, className, getPageHref }: PaginationProps) => {
|
|
16
107
|
// Generate page numbers to display
|
|
17
108
|
const getPageNumbers = () => {
|
|
18
109
|
const pages = [];
|
|
@@ -68,16 +159,18 @@ const Pagination = ({ currentPage, totalPages, onPageChange, className }: Pagina
|
|
|
68
159
|
<nav role="navigation" aria-label="pagination" className={cn('mx-auto flex w-full justify-center', className)}>
|
|
69
160
|
<ul className="flex flex-row items-center gap-1">
|
|
70
161
|
<li>
|
|
71
|
-
<
|
|
162
|
+
<PaginationControl
|
|
163
|
+
page={currentPage - 1}
|
|
164
|
+
label="Go to previous page"
|
|
72
165
|
variant="outline"
|
|
73
|
-
|
|
74
|
-
onClick={() => onPageChange(currentPage - 1)}
|
|
166
|
+
className={NEIGHBOUR_CLASS}
|
|
75
167
|
disabled={currentPage === 1}
|
|
76
|
-
|
|
77
|
-
|
|
168
|
+
rel="prev"
|
|
169
|
+
onPageChange={onPageChange}
|
|
170
|
+
getPageHref={getPageHref}
|
|
78
171
|
>
|
|
79
172
|
<ChevronLeft className="h-4 w-4" />
|
|
80
|
-
</
|
|
173
|
+
</PaginationControl>
|
|
81
174
|
</li>
|
|
82
175
|
|
|
83
176
|
{pageNumbers.map((page, index) => {
|
|
@@ -95,32 +188,35 @@ const Pagination = ({ currentPage, totalPages, onPageChange, className }: Pagina
|
|
|
95
188
|
|
|
96
189
|
return (
|
|
97
190
|
<li key={page}>
|
|
98
|
-
<
|
|
191
|
+
<PaginationControl
|
|
192
|
+
page={page}
|
|
193
|
+
label={`Page ${page}`}
|
|
99
194
|
variant={currentPage === page ? 'accent' : 'outline'}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
aria-current={currentPage === page ? 'page' : undefined}
|
|
195
|
+
className={PAGE_CLASS}
|
|
196
|
+
current={currentPage === page}
|
|
197
|
+
onPageChange={onPageChange}
|
|
198
|
+
getPageHref={getPageHref}
|
|
105
199
|
>
|
|
106
200
|
{page}
|
|
107
|
-
</
|
|
201
|
+
</PaginationControl>
|
|
108
202
|
</li>
|
|
109
203
|
);
|
|
110
204
|
})}
|
|
111
205
|
|
|
112
206
|
<li>
|
|
113
|
-
<
|
|
207
|
+
<PaginationControl
|
|
208
|
+
page={currentPage + 1}
|
|
209
|
+
label="Go to next page"
|
|
114
210
|
variant="outline"
|
|
115
|
-
|
|
116
|
-
onClick={() => onPageChange(currentPage + 1)}
|
|
211
|
+
className={NEIGHBOUR_CLASS}
|
|
117
212
|
disabled={currentPage === totalPages}
|
|
118
|
-
|
|
119
|
-
|
|
213
|
+
rel="next"
|
|
214
|
+
onPageChange={onPageChange}
|
|
215
|
+
getPageHref={getPageHref}
|
|
120
216
|
>
|
|
121
217
|
<ChevronRight className="h-4 w-4" />
|
|
122
218
|
<span className="sr-only">Next page</span>
|
|
123
|
-
</
|
|
219
|
+
</PaginationControl>
|
|
124
220
|
</li>
|
|
125
221
|
</ul>
|
|
126
222
|
</nav>
|