@flamingo-stack/openframe-frontend-core 0.0.847 → 0.0.848

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 (125) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{case-study-card-DJOHIHYU.cjs → case-study-card-X2HKPKT7.cjs} +5 -5
  3. package/dist/{chunk-N2A24FDF.cjs → chunk-2V6FCVUL.cjs} +955 -932
  4. package/dist/{chunk-CNMXP77I.cjs → chunk-36DUCHI7.cjs} +4 -4
  5. package/dist/{chunk-J2IXYCEH.cjs → chunk-3W4ASAXN.cjs} +15 -15
  6. package/dist/{chunk-6LDL3UZE.cjs → chunk-4YBS4HIO.cjs} +20 -20
  7. package/dist/{chunk-QK2A334V.cjs → chunk-5HOWR4TG.cjs} +12 -12
  8. package/dist/{chunk-2FUTZKLB.cjs → chunk-74Z34I2C.cjs} +6 -6
  9. package/dist/{chunk-PV3NKXWS.cjs → chunk-7DW3LZ52.cjs} +57 -57
  10. package/dist/{chunk-ZTO7KNYV.cjs → chunk-7LE4HWHA.cjs} +35 -35
  11. package/dist/{chunk-URP6GYTD.cjs → chunk-7YJQTQPV.cjs} +56 -56
  12. package/dist/{chunk-4R4HAFXI.cjs → chunk-ALRYVZ3E.cjs} +6 -6
  13. package/dist/{chunk-57JYB3E2.cjs → chunk-C3WZXOZJ.cjs} +3 -3
  14. package/dist/{chunk-SSSI2RBV.cjs → chunk-FNQWL4W4.cjs} +14 -14
  15. package/dist/{chunk-J2ZSGOUC.cjs → chunk-GASFYPGH.cjs} +27 -27
  16. package/dist/{chunk-3V5JWG27.cjs → chunk-GG466XFQ.cjs} +2 -2
  17. package/dist/{chunk-XCVH5BCZ.cjs → chunk-GRCOEICK.cjs} +6 -6
  18. package/dist/{chunk-5GBLXY5F.cjs → chunk-HTYJUMFB.cjs} +7 -7
  19. package/dist/{chunk-HBDLJUI3.cjs → chunk-I3YRYS23.cjs} +5 -5
  20. package/dist/{chunk-HPXET3LH.cjs → chunk-IIUZE73M.cjs} +27 -27
  21. package/dist/{chunk-WCK5T3UD.cjs → chunk-IKOL6NJY.cjs} +101 -69
  22. package/dist/{chunk-DGQDGCQH.cjs → chunk-INA2FX2N.cjs} +2 -2
  23. package/dist/{chunk-PQDCSZ3W.cjs → chunk-IUZVOQXP.cjs} +85 -85
  24. package/dist/{chunk-BIOSHDXQ.cjs → chunk-MDLT6D46.cjs} +61 -61
  25. package/dist/{chunk-DEEQSVLX.cjs → chunk-MWYEROAP.cjs} +90 -90
  26. package/dist/{chunk-D5DMWXF2.cjs → chunk-NYT6IBIX.cjs} +4 -4
  27. package/dist/{chunk-TBOWFTEN.cjs → chunk-O4BXHCMK.cjs} +22 -22
  28. package/dist/{chunk-YC52LSPP.cjs → chunk-OCJXOSIH.cjs} +40 -40
  29. package/dist/{chunk-3TOWCFIK.cjs → chunk-PMUCEUFQ.cjs} +13 -1
  30. package/dist/{chunk-BZZE4KIV.cjs → chunk-QUSCSYHJ.cjs} +135 -135
  31. package/dist/{chunk-744JXTDP.cjs → chunk-SA2NNWIJ.cjs} +23 -23
  32. package/dist/{chunk-BHOVF4KP.cjs → chunk-SOSIXRQ3.cjs} +2 -2
  33. package/dist/{chunk-PZNWIJRZ.cjs → chunk-TIVPOVIM.cjs} +2 -2
  34. package/dist/{chunk-FLW4WULE.cjs → chunk-U7UBYJEZ.cjs} +17 -61
  35. package/dist/{chunk-Y2OEC7UW.cjs → chunk-VW4446JR.cjs} +40 -40
  36. package/dist/{chunk-NFNSPLGC.cjs → chunk-W7OFAROY.cjs} +14 -9
  37. package/dist/{chunk-RAJ5FYFL.cjs → chunk-Y2ZWWIUA.cjs} +14 -14
  38. package/dist/{chunk-MPVOPSU6.cjs → chunk-Y4BG7SPX.cjs} +96 -96
  39. package/dist/{chunk-SIFRIUPW.cjs → chunk-YAW7CHLV.cjs} +340 -354
  40. package/dist/{chunk-ABL5OBSF.cjs → chunk-YXKAHQYS.cjs} +294 -249
  41. package/dist/{chunk-SWF6TNZ3.cjs → chunk-ZGEWT3SF.cjs} +2 -2
  42. package/dist/{chunk-5SZ4ILU3.cjs → chunk-ZZDFMUEU.cjs} +3 -3
  43. package/dist/{cloud-tenants-XEUUMABT.cjs → cloud-tenants-YAZHLPOQ.cjs} +21 -21
  44. package/dist/components/case-studies/index.cjs +36 -36
  45. package/dist/components/chat/chat-composer.d.ts.map +1 -1
  46. package/dist/components/chat/chat-composer.js +4 -3
  47. package/dist/components/chat/chat-container.d.ts.map +1 -1
  48. package/dist/components/chat/chat-container.js +2 -2
  49. package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
  50. package/dist/components/chat/entity-cards/design-doc-card.js +5 -17
  51. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  52. package/dist/components/chat/entity-cards/dispatch.js +4 -7
  53. package/dist/components/chat/index.cjs +15 -15
  54. package/dist/components/contact/index.cjs +22 -22
  55. package/dist/components/docs/index.cjs +25 -25
  56. package/dist/components/embeds/index.cjs +22 -22
  57. package/dist/components/faq/index.cjs +23 -23
  58. package/dist/components/features/index.cjs +21 -21
  59. package/dist/components/features/status-filter-component.d.ts +7 -1
  60. package/dist/components/features/status-filter-component.d.ts.map +1 -1
  61. package/dist/components/features/status-filter-component.js +9 -3
  62. package/dist/components/help-center-pages/index.cjs +140 -140
  63. package/dist/components/index.cjs +137 -135
  64. package/dist/components/layout/back-button.d.ts +7 -1
  65. package/dist/components/layout/back-button.d.ts.map +1 -1
  66. package/dist/components/layout/back-button.js +34 -2
  67. package/dist/components/loading/unified-skeleton.d.ts +6 -1
  68. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  69. package/dist/components/loading/unified-skeleton.js +13 -1
  70. package/dist/components/meeting-scheduler/index.cjs +119 -119
  71. package/dist/components/navigation/index.cjs +24 -24
  72. package/dist/components/onboarding-guides/index.cjs +24 -24
  73. package/dist/components/product-demo/index.cjs +33 -33
  74. package/dist/components/related-content/index.cjs +11 -11
  75. package/dist/components/tickets/index.cjs +28 -28
  76. package/dist/components/ui/file-manager/file-manager-table.d.ts.map +1 -1
  77. package/dist/components/ui/file-manager/file-manager-table.js +59 -50
  78. package/dist/components/ui/file-manager/index.cjs +71 -62
  79. package/dist/components/ui/index.cjs +23 -21
  80. package/dist/components/ui/markdown/engine.d.ts +5 -4
  81. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  82. package/dist/components/ui/markdown/engine.js +15 -15
  83. package/dist/components/ui/people-cell.d.ts +9 -2
  84. package/dist/components/ui/people-cell.d.ts.map +1 -1
  85. package/dist/components/ui/people-cell.js +39 -23
  86. package/dist/components/ui/progress-bar.d.ts +6 -0
  87. package/dist/components/ui/progress-bar.d.ts.map +1 -1
  88. package/dist/components/ui/progress-bar.js +2 -0
  89. package/dist/components/ui/tag.d.ts +8 -0
  90. package/dist/components/ui/tag.d.ts.map +1 -1
  91. package/dist/components/ui/tag.js +5 -0
  92. package/dist/{devices-7YDIHVVP.cjs → devices-IZROCLFK.cjs} +22 -22
  93. package/dist/embed-shims/index.cjs +3 -3
  94. package/dist/embed-shims/next-image.cjs +3 -3
  95. package/dist/{embeddable-chat-Z3S37SSM.cjs → embeddable-chat-ETW6S22E.cjs} +94 -94
  96. package/dist/hooks/index.cjs +6 -6
  97. package/dist/index.cjs +30 -32
  98. package/dist/{knowledge-SQVPQSKM.cjs → knowledge-4IRWLTNW.cjs} +22 -22
  99. package/dist/{logs-M5DFGUBC.cjs → logs-EFDGY5IO.cjs} +28 -28
  100. package/dist/{policies-T3VQEJUD.cjs → policies-3KEXZ5BP.cjs} +25 -25
  101. package/dist/{remote-session-EE6477O3.cjs → remote-session-NT4NG7EF.cjs} +10 -10
  102. package/dist/{scripts-JFRFJKPH.cjs → scripts-PCGTZLZL.cjs} +28 -28
  103. package/dist/{software-update-E7W3AAIY.cjs → software-update-YCDNVFJE.cjs} +25 -25
  104. package/dist/{tickets-board-44HO3LR4.cjs → tickets-board-7FLGQEHF.cjs} +10 -10
  105. package/dist/types/design-doc.d.ts +45 -8
  106. package/dist/types/design-doc.d.ts.map +1 -1
  107. package/dist/utils/design-doc-readiness.d.ts +17 -15
  108. package/dist/utils/design-doc-readiness.d.ts.map +1 -1
  109. package/dist/utils/design-doc-readiness.js +5 -11
  110. package/dist/utils/index.cjs +5 -11
  111. package/package.json +1 -1
  112. package/src/components/chat/chat-composer.tsx +10 -3
  113. package/src/components/chat/chat-container.tsx +6 -4
  114. package/src/components/chat/entity-cards/design-doc-card.tsx +12 -17
  115. package/src/components/chat/entity-cards/dispatch.tsx +7 -10
  116. package/src/components/features/status-filter-component.tsx +15 -0
  117. package/src/components/layout/back-button.tsx +54 -2
  118. package/src/components/loading/unified-skeleton.tsx +18 -2
  119. package/src/components/ui/file-manager/file-manager-table.tsx +8 -3
  120. package/src/components/ui/markdown/engine.tsx +21 -30
  121. package/src/components/ui/people-cell.tsx +53 -17
  122. package/src/components/ui/progress-bar.tsx +8 -0
  123. package/src/components/ui/tag.tsx +14 -0
  124. package/src/types/design-doc.ts +59 -10
  125. package/src/utils/design-doc-readiness.ts +22 -23
@@ -15,24 +15,24 @@ var _chunkFDZOE5TLcjs = require('./chunk-FDZOE5TL.cjs');
15
15
 
16
16
 
17
17
 
18
- var _chunkN2A24FDFcjs = require('./chunk-N2A24FDF.cjs');
18
+ var _chunk2V6FCVULcjs = require('./chunk-2V6FCVUL.cjs');
19
19
 
20
20
 
21
- var _chunkWCK5T3UDcjs = require('./chunk-WCK5T3UD.cjs');
22
- require('./chunk-744JXTDP.cjs');
23
- require('./chunk-DGQDGCQH.cjs');
21
+ var _chunkIKOL6NJYcjs = require('./chunk-IKOL6NJY.cjs');
22
+ require('./chunk-SA2NNWIJ.cjs');
23
+ require('./chunk-INA2FX2N.cjs');
24
24
  require('./chunk-HQQE74RO.cjs');
25
25
  require('./chunk-DEY6XXGO.cjs');
26
- require('./chunk-SSSI2RBV.cjs');
26
+ require('./chunk-FNQWL4W4.cjs');
27
27
  require('./chunk-IUDBG3HJ.cjs');
28
28
  require('./chunk-24I6RFVU.cjs');
29
29
  require('./chunk-MZ4KBSH7.cjs');
30
- require('./chunk-5SZ4ILU3.cjs');
31
- require('./chunk-BZZE4KIV.cjs');
30
+ require('./chunk-ZZDFMUEU.cjs');
31
+ require('./chunk-QUSCSYHJ.cjs');
32
32
  require('./chunk-OT6P57ZS.cjs');
33
- require('./chunk-SIFRIUPW.cjs');
34
- require('./chunk-J2IXYCEH.cjs');
35
- require('./chunk-6LDL3UZE.cjs');
33
+ require('./chunk-YAW7CHLV.cjs');
34
+ require('./chunk-3W4ASAXN.cjs');
35
+ require('./chunk-4YBS4HIO.cjs');
36
36
  require('./chunk-YJZ7R3W5.cjs');
37
37
  require('./chunk-PGAMWM6C.cjs');
38
38
  require('./chunk-46547WQW.cjs');
@@ -1825,7 +1825,7 @@ require('./chunk-TMVC7S2R.cjs');
1825
1825
  require('./chunk-IYHH5EIO.cjs');
1826
1826
  require('./chunk-XIBCMGBW.cjs');
1827
1827
  require('./chunk-HLJXCOMA.cjs');
1828
- require('./chunk-XCVH5BCZ.cjs');
1828
+ require('./chunk-GRCOEICK.cjs');
1829
1829
  require('./chunk-FW7RKWPY.cjs');
1830
1830
  require('./chunk-BUEEQD3G.cjs');
1831
1831
  require('./chunk-JKX2C3I2.cjs');
@@ -1834,11 +1834,11 @@ require('./chunk-SKI6NKOE.cjs');
1834
1834
  require('./chunk-EWPR7662.cjs');
1835
1835
  require('./chunk-IX2E3AN7.cjs');
1836
1836
  require('./chunk-7DNL734S.cjs');
1837
- require('./chunk-FLW4WULE.cjs');
1838
- require('./chunk-ABL5OBSF.cjs');
1839
- require('./chunk-5GBLXY5F.cjs');
1840
- require('./chunk-NFNSPLGC.cjs');
1841
- require('./chunk-BIOSHDXQ.cjs');
1837
+ require('./chunk-U7UBYJEZ.cjs');
1838
+ require('./chunk-YXKAHQYS.cjs');
1839
+ require('./chunk-HTYJUMFB.cjs');
1840
+ require('./chunk-W7OFAROY.cjs');
1841
+ require('./chunk-MDLT6D46.cjs');
1842
1842
  require('./chunk-JBTH3O2C.cjs');
1843
1843
  require('./chunk-X432Y6RM.cjs');
1844
1844
  require('./chunk-S5C3OZCO.cjs');
@@ -1852,20 +1852,20 @@ require('./chunk-BLH2SFOO.cjs');
1852
1852
  require('./chunk-UAI4VMEF.cjs');
1853
1853
  require('./chunk-COWMXUHN.cjs');
1854
1854
  require('./chunk-YSDB6HGQ.cjs');
1855
- require('./chunk-PZNWIJRZ.cjs');
1855
+ require('./chunk-TIVPOVIM.cjs');
1856
1856
  require('./chunk-FX35L4Y6.cjs');
1857
1857
  require('./chunk-JQCQCE6U.cjs');
1858
1858
  require('./chunk-NTPX5GXI.cjs');
1859
1859
  require('./chunk-GI3MMBP3.cjs');
1860
- require('./chunk-3V5JWG27.cjs');
1860
+ require('./chunk-GG466XFQ.cjs');
1861
1861
  require('./chunk-UJ7AXHRZ.cjs');
1862
- require('./chunk-SWF6TNZ3.cjs');
1862
+ require('./chunk-ZGEWT3SF.cjs');
1863
1863
  require('./chunk-N3MBQRCQ.cjs');
1864
1864
  require('./chunk-S3QXLD4X.cjs');
1865
1865
  require('./chunk-Z74QE57T.cjs');
1866
1866
  require('./chunk-XZJCBIYR.cjs');
1867
1867
  require('./chunk-2XCORRJV.cjs');
1868
- require('./chunk-3TOWCFIK.cjs');
1868
+ require('./chunk-PMUCEUFQ.cjs');
1869
1869
  require('./chunk-FCZAUK4D.cjs');
1870
1870
  require('./chunk-63A4GZMB.cjs');
1871
1871
  require('./chunk-V45KLJQP.cjs');
@@ -1923,14 +1923,14 @@ var noop = () => {
1923
1923
  var HIDDEN_WHEN_COMPACT = ["organization"];
1924
1924
  function StaticPackageField({ value }) {
1925
1925
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1926
- _chunkWCK5T3UDcjs.Autocomplete,
1926
+ _chunkIKOL6NJYcjs.Autocomplete,
1927
1927
  {
1928
- label: _chunkN2A24FDFcjs.PACKAGE_SEARCH_LABEL,
1928
+ label: _chunk2V6FCVULcjs.PACKAGE_SEARCH_LABEL,
1929
1929
  labelVariant: "large",
1930
1930
  options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
1931
1931
  value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
1932
1932
  onChange: noop,
1933
- placeholder: _chunkN2A24FDFcjs.PACKAGE_SEARCH_PLACEHOLDER
1933
+ placeholder: _chunk2V6FCVULcjs.PACKAGE_SEARCH_PLACEHOLDER
1934
1934
  }
1935
1935
  );
1936
1936
  }
@@ -1944,7 +1944,7 @@ function SoftwareUpdateScreen({ compact = false }) {
1944
1944
  [fixture.devices, fixture.selectedIds]
1945
1945
  );
1946
1946
  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,
1947
- _chunkN2A24FDFcjs.SoftwareActionForm,
1947
+ _chunk2V6FCVULcjs.SoftwareActionForm,
1948
1948
  {
1949
1949
  action: fixture.action,
1950
1950
  showHeader: false,
@@ -1956,7 +1956,7 @@ function SoftwareUpdateScreen({ compact = false }) {
1956
1956
  initialValues: fixture.initialValues,
1957
1957
  renderPackageSearch,
1958
1958
  renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1959
- _chunkN2A24FDFcjs.DeviceSelector,
1959
+ _chunk2V6FCVULcjs.DeviceSelector,
1960
1960
  {
1961
1961
  devices: selected,
1962
1962
  loading: false,
@@ -10,9 +10,9 @@ var _chunkFDZOE5TLcjs = require('./chunk-FDZOE5TL.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunk744JXTDPcjs = require('./chunk-744JXTDP.cjs');
13
+ var _chunkSA2NNWIJcjs = require('./chunk-SA2NNWIJ.cjs');
14
14
  require('./chunk-IUDBG3HJ.cjs');
15
- require('./chunk-6LDL3UZE.cjs');
15
+ require('./chunk-4YBS4HIO.cjs');
16
16
  require('./chunk-YJZ7R3W5.cjs');
17
17
  require('./chunk-46547WQW.cjs');
18
18
  require('./chunk-LNUFH4E2.cjs');
@@ -1806,7 +1806,7 @@ require('./chunk-XIBCMGBW.cjs');
1806
1806
  require('./chunk-BUEEQD3G.cjs');
1807
1807
  require('./chunk-WWUSFOJ7.cjs');
1808
1808
  require('./chunk-SKI6NKOE.cjs');
1809
- require('./chunk-NFNSPLGC.cjs');
1809
+ require('./chunk-W7OFAROY.cjs');
1810
1810
  require('./chunk-JBTH3O2C.cjs');
1811
1811
  require('./chunk-S5C3OZCO.cjs');
1812
1812
  require('./chunk-32ASZMTV.cjs');
@@ -1820,11 +1820,11 @@ require('./chunk-YSDB6HGQ.cjs');
1820
1820
  require('./chunk-FX35L4Y6.cjs');
1821
1821
  require('./chunk-JQCQCE6U.cjs');
1822
1822
  require('./chunk-GI3MMBP3.cjs');
1823
- require('./chunk-3V5JWG27.cjs');
1823
+ require('./chunk-GG466XFQ.cjs');
1824
1824
  require('./chunk-S3QXLD4X.cjs');
1825
1825
  require('./chunk-Z74QE57T.cjs');
1826
1826
  require('./chunk-XZJCBIYR.cjs');
1827
- require('./chunk-3TOWCFIK.cjs');
1827
+ require('./chunk-PMUCEUFQ.cjs');
1828
1828
  require('./chunk-FCZAUK4D.cjs');
1829
1829
  require('./chunk-63A4GZMB.cjs');
1830
1830
  require('./chunk-V45KLJQP.cjs');
@@ -1841,7 +1841,7 @@ function buildTicketsBoardFixture(cast) {
1841
1841
  const dana = assignee(cast.person("dana"));
1842
1842
  const alex = assignee(cast.person("alex"));
1843
1843
  return [
1844
- _chunk744JXTDPcjs.columnFromTicketStatus.call(void 0, "ACTIVE", [
1844
+ _chunkSA2NNWIJcjs.columnFromTicketStatus.call(void 0, "ACTIVE", [
1845
1845
  ticket("tk-1051", "Printer offline at the front desk", "ACTIVE", {
1846
1846
  ticketNumber: "1051",
1847
1847
  agent: "fae",
@@ -1859,7 +1859,7 @@ function buildTicketsBoardFixture(cast) {
1859
1859
  tags: ["onboarding"]
1860
1860
  })
1861
1861
  ]),
1862
- _chunk744JXTDPcjs.columnFromTicketStatus.call(void 0, "TECH_REQUIRED", [
1862
+ _chunkSA2NNWIJcjs.columnFromTicketStatus.call(void 0, "TECH_REQUIRED", [
1863
1863
  ticket("tk-1049", "Acrobat Pro for Maya", "TECH_REQUIRED", {
1864
1864
  ticketNumber: "1049",
1865
1865
  agent: "fae",
@@ -1883,7 +1883,7 @@ function buildTicketsBoardFixture(cast) {
1883
1883
  escalatedByUser: true
1884
1884
  })
1885
1885
  ]),
1886
- _chunk744JXTDPcjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
1886
+ _chunkSA2NNWIJcjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
1887
1887
  ticket("tk-1046", "Replace the conference room display", "ON_HOLD", {
1888
1888
  ticketNumber: "1046",
1889
1889
  organizationName: _chunkFDZOE5TLcjs.DEMO_ORGANIZATIONS.acme.name,
@@ -1892,7 +1892,7 @@ function buildTicketsBoardFixture(cast) {
1892
1892
  activity: { kind: "waiting-external" }
1893
1893
  })
1894
1894
  ]),
1895
- _chunk744JXTDPcjs.columnFromTicketStatus.call(void 0,
1895
+ _chunkSA2NNWIJcjs.columnFromTicketStatus.call(void 0,
1896
1896
  "RESOLVED",
1897
1897
  [
1898
1898
  ticket("tk-1048", "Slow laptop", "RESOLVED", {
@@ -1928,7 +1928,7 @@ function TicketsBoardScreen({ compact = false }) {
1928
1928
  const cast = _chunkLHV2R6QUcjs.useProductDemoCast.call(void 0, );
1929
1929
  const board = _react.useMemo.call(void 0, () => buildTicketsBoardFixture(cast), [cast]);
1930
1930
  const columns = compact ? board.filter((column) => column.id !== "ON_HOLD") : board;
1931
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk744JXTDPcjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
1931
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSA2NNWIJcjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
1932
1932
  }
1933
1933
 
1934
1934
 
@@ -5,7 +5,7 @@ import type { EmployeeDirectoryRow } from './employee';
5
5
  import type { EntityAuthor } from './entity-author';
6
6
  /** One value of `design_doc_vocabulary.kind` — the STRUCTURAL list (one per
7
7
  * value column), the only design-doc vocabulary that is code. */
8
- export type DesignDocVocabularyKind = 'tier' | 'spec_mode' | 'participant_status' | 'comment_type' | 'comment_status' | 'link_type' | 'media_type';
8
+ export type DesignDocVocabularyKind = 'tier' | 'spec_mode' | 'participant_status' | 'comment_type' | 'comment_status' | 'link_type' | 'media_type' | 'lifecycle_status' | 'readiness';
9
9
  /** A `design_doc_vocabulary` row, as the DAL and the vocabulary API return it. */
10
10
  export interface DesignDocVocabularyOption {
11
11
  id: number;
@@ -55,6 +55,23 @@ export type DesignDocCommentStatus = string;
55
55
  export type DesignDocLinkType = string;
56
56
  /** A `design_doc_vocabulary.value` of kind `media_type`. */
57
57
  export type DesignDocMediaType = string;
58
+ /**
59
+ * A `design_doc_vocabulary.value` of kind `lifecycle_status`: a status a PERSON sets (postponed, shipped, archived),
60
+ * beside the readiness the sign-offs decide. Null on a doc = active, and its readiness shows.
61
+ */
62
+ export type DesignDocLifecycleStatus = string;
63
+ /**
64
+ * A `design_doc_vocabulary.value` of kind `readiness`: the stage the sign-offs put a doc in (not ready, in active
65
+ * work, blocked, ready to build). The hub picks the row by its role; the words and the colour are the row's.
66
+ */
67
+ export type DesignDocReadiness = string;
68
+ /** A vocabulary value as a card shows it, resolved by the hub so a surface without the vocabulary can draw it. */
69
+ export interface DesignDocVocabularyDisplay {
70
+ value: string;
71
+ label: string;
72
+ /** A `StatusBadge` colorScheme name. */
73
+ color_scheme: string;
74
+ }
58
75
  /**
59
76
  * The profile identity the DAL embeds on participants / comment authors — THE
60
77
  * shared person projection, not a second declaration of it. `email` rides the
@@ -197,6 +214,15 @@ export interface DesignDoc {
197
214
  comments: DesignDocComment[];
198
215
  completion: DesignDocCompletion;
199
216
  my_open_work?: DesignDocMyOpenWork;
217
+ /** The status a person set (postponed, shipped, archived); null = active, its readiness shows. */
218
+ lifecycle_status: DesignDocLifecycleStatus | null;
219
+ /** That status as the vocabulary words it, resolved by the hub (null when none is set). */
220
+ lifecycle?: DesignDocVocabularyDisplay | null;
221
+ /** When the status was last set or cleared, and by whom. */
222
+ lifecycle_status_changed_at: string | null;
223
+ lifecycle_status_changed_by?: DesignDocPerson | null;
224
+ /** The stage its sign-offs put it in, as the vocabulary words it, resolved by the hub. */
225
+ readiness?: DesignDocVocabularyDisplay | null;
200
226
  }
201
227
  export interface DesignDocLinkInput {
202
228
  link_type: DesignDocLinkType;
@@ -257,6 +283,8 @@ export interface UpdateDesignDocData {
257
283
  */
258
284
  feature_lead_ids?: string[];
259
285
  links?: DesignDocLinkInput[];
286
+ /** A `lifecycle_status` value, or null to make the doc active again. Anyone who may edit the doc may set it. */
287
+ lifecycle_status?: DesignDocLifecycleStatus | null;
260
288
  /** OCC token — the `updated_at` the editor seeded from; mismatch → 409. */
261
289
  expected_updated_at?: string;
262
290
  }
@@ -283,9 +311,16 @@ export interface AddDesignDocCommentData {
283
311
  title?: string | null;
284
312
  body: string;
285
313
  }
286
- /** The dashboard's readiness filter (`?ready=`). */
287
- export type DesignDocReadyFilter = 'ready' | 'not_ready';
314
+ /** The dashboard's readiness filter (`?ready=`): one `readiness` value. */
315
+ export type DesignDocReadyFilter = DesignDocReadiness;
316
+ /**
317
+ * The dashboard's status filter (`?status=`): `active` (no lifecycle status set, the default) or one
318
+ * `lifecycle_status` value.
319
+ */
320
+ export type DesignDocLifecycleFilter = 'active' | DesignDocLifecycleStatus;
288
321
  export interface DesignDocFilters {
322
+ /** Defaults to `active`: a doc a person postponed, shipped or archived is listed only under its own status. */
323
+ lifecycle?: DesignDocLifecycleFilter;
289
324
  ready?: DesignDocReadyFilter;
290
325
  /** One or more `spec_mode` values (CSV on the wire). */
291
326
  spec_mode?: string;
@@ -301,15 +336,17 @@ export interface DesignDocListResponse {
301
336
  * filter itself — so a filtered row still shows what the other value holds. */
302
337
  facets: {
303
338
  spec_mode: Record<string, number>;
304
- /** The same over readiness (`ready` / `not_ready`), MINUS the ready filter itself: the filter row's options. */
305
- ready: Record<'ready' | 'not_ready', number>;
339
+ /** The same over readiness (each `readiness` value), MINUS the ready filter itself: the filter row's options. */
340
+ ready: Record<DesignDocReadiness, number>;
341
+ /** The same over the status filter (`active` and each `lifecycle_status` value), MINUS the status filter itself. */
342
+ lifecycle: Record<string, number>;
306
343
  };
307
344
  }
345
+ /** Counted over ACTIVE docs (no lifecycle status), so postponed, shipped and archived docs never inflate open work. */
308
346
  export interface DesignDocStats {
309
347
  total: number;
310
- /** Docs whose every section is signed off with no open blocking comment. */
311
- ready: number;
312
- not_ready: number;
348
+ /** How many active docs each `readiness` value holds, zeros included. */
349
+ readiness: Record<DesignDocReadiness, number>;
313
350
  waiting_on_me_docs: number;
314
351
  waiting_on_me_tasks: number;
315
352
  }
@@ -1 +1 @@
1
- {"version":3,"file":"design-doc.d.ts","sourceRoot":"","sources":["../../src/types/design-doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design-doc.d.ts","sourceRoot":"","sources":["../../src/types/design-doc.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,22 @@
1
1
  /**
2
- * A design doc's readiness in words — THE wording every surface prints (the hub's design-docs screens, its doc
3
- * page, the lib's design-doc card): "Ready to build" once every department section is signed off and no blocking
4
- * comment is open, else "Not ready", and the sign-off caption beside it. Pure, zero-import beyond the type.
2
+ * A design doc's status as every surface draws it (the hub's design-docs screens, its doc page, the lib's design-doc
3
+ * cards), and its sign-off caption.
4
+ *
5
+ * Both halves of the status are vocabulary rows the hub resolves onto the doc, so no surface holds a word or a colour:
6
+ * - its READINESS (`doc.readiness`): the stage the sign-offs put it in (not ready, in active work, blocked, ready to
7
+ * build), picked by the hub from the `readiness` rows by role;
8
+ * - a LIFECYCLE status a person set (`doc.lifecycle`: postponed, shipped, archived). While one is set it is what the
9
+ * doc shows; cleared, the readiness shows again.
10
+ *
11
+ * The sign-off caption is counts only ("4/6 signed off · 1 blocking"): the status has its own badge.
12
+ * Pure, zero-import beyond the type.
5
13
  */
6
- import type { DesignDocCompletion } from '../types/design-doc';
7
- export declare const DESIGN_DOC_READINESS: readonly ["ready", "not_ready"];
8
- export type DesignDocReadiness = (typeof DESIGN_DOC_READINESS)[number];
9
- /** Each readiness's label and badge colour (a `StatusBadge` scheme). */
10
- export declare const DESIGN_DOC_READINESS_DISPLAY: Record<DesignDocReadiness, {
11
- label: string;
12
- scheme: 'success' | 'default';
13
- }>;
14
- /** Ready to build ⇔ `completion.isComplete` (every section signed off, no open blocking comment). */
15
- export declare const designDocReadiness: (completion: Pick<DesignDocCompletion, "isComplete">) => DesignDocReadiness;
16
- /** "4/6 reviews signed off" */
14
+ import type { DesignDoc, DesignDocCompletion, DesignDocVocabularyDisplay } from '../types/design-doc';
15
+ /** What the doc's status badge says: its lifecycle status when a person set one, else its readiness (null from a hub
16
+ * that resolves neither). */
17
+ export declare function designDocStatusDisplay(doc: Pick<DesignDoc, 'lifecycle' | 'readiness'>): DesignDocVocabularyDisplay | null;
18
+ /** "4/6 signed off" */
17
19
  export declare function formatCompletionLabel(completion: Pick<DesignDocCompletion, 'total' | 'completed'>): string;
18
- /** The SAME label plus readiness and the blocking veto (the dashboard row, the doc page, the card). */
20
+ /** The SAME count plus the blocking veto ("4/6 signed off · 1 blocking"): the dashboard row, the doc page, the card. */
19
21
  export declare function formatCompletionLabelWithBlockers(completion: DesignDocCompletion): string;
20
22
  //# sourceMappingURL=design-doc-readiness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-doc-readiness.d.ts","sourceRoot":"","sources":["../../src/utils/design-doc-readiness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,eAAO,MAAM,oBAAoB,iCAAkC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,wEAAwE;AACxE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,kBAAkB,EAClB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CAIjD,CAAC;AAEF,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,GAAI,YAAY,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,KAAG,kBAC1C,CAAC;AAEhD,+BAA+B;AAC/B,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG,MAAM,CAE1G;AAED,uGAAuG;AACvG,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAIzF"}
1
+ {"version":3,"file":"design-doc-readiness.d.ts","sourceRoot":"","sources":["../../src/utils/design-doc-readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEtG;8BAC8B;AAC9B,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,WAAW,CAAC,GAC9C,0BAA0B,GAAG,IAAI,CAEnC;AAED,uBAAuB;AACvB,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG,MAAM,CAE1G;AAED,wHAAwH;AACxH,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAGzF"}
@@ -1,21 +1,15 @@
1
- const DESIGN_DOC_READINESS = ["ready", "not_ready"];
2
- const DESIGN_DOC_READINESS_DISPLAY = {
3
- ready: { label: "Ready to build", scheme: "success" },
4
- not_ready: { label: "Not ready", scheme: "default" }
5
- };
6
- const designDocReadiness = (completion) => completion.isComplete ? "ready" : "not_ready";
1
+ function designDocStatusDisplay(doc) {
2
+ return doc.lifecycle ?? doc.readiness ?? null;
3
+ }
7
4
  function formatCompletionLabel(completion) {
8
- return `${completion.completed}/${completion.total} reviews signed off`;
5
+ return `${completion.completed}/${completion.total} signed off`;
9
6
  }
10
7
  function formatCompletionLabelWithBlockers(completion) {
11
8
  const base = formatCompletionLabel(completion);
12
- if (completion.isComplete) return `${DESIGN_DOC_READINESS_DISPLAY.ready.label} \xB7 ${base}`;
13
9
  return completion.openBlocking > 0 ? `${base} \xB7 ${completion.openBlocking} blocking` : base;
14
10
  }
15
11
  export {
16
- DESIGN_DOC_READINESS,
17
- DESIGN_DOC_READINESS_DISPLAY,
18
- designDocReadiness,
12
+ designDocStatusDisplay,
19
13
  formatCompletionLabel,
20
14
  formatCompletionLabelWithBlockers
21
15
  };
@@ -81364,18 +81364,14 @@ function brandMarkDataUri(name) {
81364
81364
  }
81365
81365
 
81366
81366
  // src/utils/design-doc-readiness.ts
81367
- var DESIGN_DOC_READINESS = ["ready", "not_ready"];
81368
- var DESIGN_DOC_READINESS_DISPLAY = {
81369
- ready: { label: "Ready to build", scheme: "success" },
81370
- not_ready: { label: "Not ready", scheme: "default" }
81371
- };
81372
- var designDocReadiness = (completion) => completion.isComplete ? "ready" : "not_ready";
81367
+ function designDocStatusDisplay(doc) {
81368
+ return doc.lifecycle ?? doc.readiness ?? null;
81369
+ }
81373
81370
  function formatCompletionLabel(completion) {
81374
- return `${completion.completed}/${completion.total} reviews signed off`;
81371
+ return `${completion.completed}/${completion.total} signed off`;
81375
81372
  }
81376
81373
  function formatCompletionLabelWithBlockers(completion) {
81377
81374
  const base = formatCompletionLabel(completion);
81378
- if (completion.isComplete) return `${DESIGN_DOC_READINESS_DISPLAY.ready.label} \xB7 ${base}`;
81379
81375
  return completion.openBlocking > 0 ? `${base} \xB7 ${completion.openBlocking} blocking` : base;
81380
81376
  }
81381
81377
 
@@ -86334,8 +86330,6 @@ exports.DEFAULT_FOLDER_INDEX_FILE = DEFAULT_FOLDER_INDEX_FILE;
86334
86330
  exports.DEFAULT_MIN_FILL_MS = DEFAULT_MIN_FILL_MS;
86335
86331
  exports.DEFAULT_OS_PLATFORM = DEFAULT_OS_PLATFORM;
86336
86332
  exports.DELIVERY_TASK_TYPE_OPTIONS = DELIVERY_TASK_TYPE_OPTIONS;
86337
- exports.DESIGN_DOC_READINESS = DESIGN_DOC_READINESS;
86338
- exports.DESIGN_DOC_READINESS_DISPLAY = DESIGN_DOC_READINESS_DISPLAY;
86339
86333
  exports.DESIGN_PALETTE = DESIGN_PALETTE;
86340
86334
  exports.DESKTOP_OSES = DESKTOP_OSES;
86341
86335
  exports.DEV_SECTION_PARAM_KEYS = DEV_SECTION_PARAM_KEYS;
@@ -86457,7 +86451,7 @@ exports.delay = delay;
86457
86451
  exports.demoClockTimes = demoClockTimes;
86458
86452
  exports.deriveActiveColor = deriveActiveColor;
86459
86453
  exports.deriveHoverColor = deriveHoverColor;
86460
- exports.designDocReadiness = designDocReadiness;
86454
+ exports.designDocStatusDisplay = designDocStatusDisplay;
86461
86455
  exports.desktopOsBeforePaintScript = desktopOsBeforePaintScript;
86462
86456
  exports.desktopOsOf = desktopOsOf;
86463
86457
  exports.detectDesktopOs = detectDesktopOs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.847",
3
+ "version": "0.0.848",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -14,6 +14,13 @@ import { ModelDisplay } from './model-display';
14
14
  import type { ChatInputRef, ModelDisplayProps } from './types/component.types';
15
15
  import type { ChatContextItem, ChatContextPickerConfig } from './types/context-item.types';
16
16
 
17
+ /**
18
+ * The top strip's corners: the card's radius (`rounded-md`, `--radius` - 2px) less the card's 1px border, so the strip
19
+ * meets the border's inner curve. At the card's own radius it sits 1px inside that curve and leaves a sliver of the
20
+ * card's fill at each corner. The card cannot clip it instead: the picker and the memory popover float out of it.
21
+ */
22
+ const TOP_STRIP_ROUNDING_CLASS = 'rounded-t-[calc(var(--radius)_-_3px)]';
23
+
17
24
  /** Why the composer takes no input, in the user's words — shown where the prompt would be. */
18
25
  export interface ChatComposerLock {
19
26
  placeholder: string;
@@ -248,7 +255,7 @@ export function ChatComposer({
248
255
  // `border-b`) stack flush above the input; the card owns the border
249
256
  // / radius / focus ring. No `overflow-hidden` so the picker and the
250
257
  // memory popover can float above the input (whichever strip comes
251
- // first gets `rounded-t`).
258
+ // first gets `TOP_STRIP_ROUNDING_CLASS`).
252
259
  // `has-[[data-editor]:focus]` (not `focus-within`) so the accent
253
260
  // border reacts ONLY to the composer editor — not the picker's search
254
261
  // input or item buttons, which also live inside this card. The editor
@@ -264,7 +271,7 @@ export function ChatComposer({
264
271
  resolveIcon={resolveContextIcon}
265
272
  disabled={sending || locked}
266
273
  leading={contextLeading}
267
- className="rounded-t-md"
274
+ className={TOP_STRIP_ROUNDING_CLASS}
268
275
  />
269
276
  {selected.length > 0 && (
270
277
  <ChatContextChipStrip
@@ -275,7 +282,7 @@ export function ChatComposer({
275
282
  className={cn(
276
283
  'border-b border-ods-border bg-ods-bg p-2',
277
284
  // Only the TOP strip rounds into the card corner.
278
- memory.length === 0 && !contextLeading && 'rounded-t-md',
285
+ memory.length === 0 && !contextLeading && TOP_STRIP_ROUNDING_CLASS,
279
286
  )}
280
287
  />
281
288
  )}
@@ -111,7 +111,9 @@ const ChatHeader = forwardRef<HTMLDivElement, ChatHeaderProps>(
111
111
  className={cn(cardClasses, 'absolute right-full top-0 mr-[var(--spacing-system-s)] hover:bg-ods-bg-hover')}
112
112
  />
113
113
  )}
114
- <div className={cardClasses}>
114
+ {/* The card clips its content at the border's inner curve, so a filled section at its edge (the MSP card)
115
+ meets the border; nothing in it floats out. */}
116
+ <div className={cn(cardClasses, !bare && 'overflow-hidden')}>
115
117
  <div className="flex items-center justify-between gap-4 px-4 py-3">
116
118
  <div className="flex items-center gap-3">
117
119
  {userIcon && !isLoading ? (
@@ -176,8 +178,8 @@ const ChatHeader = forwardRef<HTMLDivElement, ChatHeaderProps>(
176
178
  </div>
177
179
  {/* MSP branding slot — home-screen only; `ticketInfo` (open chat)
178
180
  claims this space, so it wins when both are provided. The card
179
- already draws the chrome: strip the section's own ring and keep
180
- only the bottom rounding so its bg fits the card corners. */}
181
+ already draws the chrome and clips its corners: strip the
182
+ section's own ring and rounding. */}
181
183
  {!ticketInfo && (mspLoading || mspOrganization) && (
182
184
  <>
183
185
  <div className="h-px bg-ods-border" />
@@ -185,7 +187,7 @@ const ChatHeader = forwardRef<HTMLDivElement, ChatHeaderProps>(
185
187
  name=""
186
188
  {...mspOrganization}
187
189
  loading={mspLoading || !mspOrganization}
188
- className={cn('rounded-none ring-0', !bare && 'rounded-b-md', mspOrganization?.className)}
190
+ className={cn('rounded-none ring-0', mspOrganization?.className)}
189
191
  />
190
192
  </>
191
193
  )}
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * DesignDocCard (pure presentation) — a design doc as the entity card every surface shows it with: the full card
5
5
  * (`default`, the `RoadmapCard` layout without its image slot, since a doc has no image of its own and a constant glyph
6
- * says nothing: title, DRI and date, readiness (the hub's own wording, `design-doc-readiness`), summary, sign-off caption and the people) for admin surfaces, and the chat's compact card (`DesignDocChatCard` in `dispatch.tsx`, which reads
6
+ * says nothing: title, DRI and date, its status (the status a person set, else its readiness: the hub's own wording, `design-doc-readiness`), summary, sign-off caption and the people) for admin surfaces, and the chat's compact card (`DesignDocChatCard` in `dispatch.tsx`, which reads
7
7
  * the same readiness and meta). The card writes no click logic beyond its `href` anchor.
8
8
  */
9
9
 
@@ -12,14 +12,11 @@ import { TEXT_LINES_MIN } from '../../../styles/component-sizes';
12
12
  import type { DesignDoc } from '../../../types/design-doc';
13
13
  import { cn } from '../../../utils/cn';
14
14
  import { formatDateShort } from '../../../utils/date-formatters';
15
- import {
16
- DESIGN_DOC_READINESS_DISPLAY,
17
- designDocReadiness,
18
- formatCompletionLabelWithBlockers,
19
- } from '../../../utils/design-doc-readiness';
15
+ import { designDocStatusDisplay, formatCompletionLabelWithBlockers } from '../../../utils/design-doc-readiness';
20
16
  import { TextLineSkeleton } from '../../loading/unified-skeleton';
21
17
  import { AvatarStack, type AvatarStackPerson } from '../../ui/avatar-stack';
22
18
  import { useLoadingScope } from '../../ui/loading-scope';
19
+ import { PaletteBadge } from '../../ui/palette-badge';
23
20
  import { StatusBadge } from '../../ui/status-badge';
24
21
  import { safeHref } from '../utils/compact-card-classes';
25
22
  import { CONTENT_CARD_FRAME_CLASS, CONTENT_CARD_SKELETON_FRAME_CLASS } from './content-card-frame';
@@ -102,7 +99,7 @@ function DesignDocCardSkeleton({ className }: { className?: string } = {}) {
102
99
  }
103
100
 
104
101
  export function DesignDocCard({ doc, href, target, rel, className }: DesignDocCardProps) {
105
- const readiness = DESIGN_DOC_READINESS_DISPLAY[designDocReadiness(doc.completion)];
102
+ const status = designDocStatusDisplay(doc);
106
103
  const people = designDocPeople(doc);
107
104
  const link = safeHref(href ?? null);
108
105
  if (useLoadingScope()) return <DesignDocCardSkeleton className={className} />;
@@ -117,17 +114,15 @@ export function DesignDocCard({ doc, href, target, rel, className }: DesignDocCa
117
114
  <p className="truncate text-ods-text-secondary text-h5">{designDocMetaLine(doc)}</p>
118
115
  </div>
119
116
  </div>
120
- <StatusBadge
121
- text={readiness.label}
122
- colorScheme={readiness.scheme}
123
- variant="button"
124
- singleLine
125
- className="hidden md:inline-flex"
126
- />
127
- </div>
128
- <div className="md:hidden">
129
- <StatusBadge text={readiness.label} colorScheme={readiness.scheme} variant="button" singleLine />
117
+ {status ? (
118
+ <PaletteBadge text={status.label} color={status.color_scheme} className="hidden md:inline-flex" />
119
+ ) : null}
130
120
  </div>
121
+ {status ? (
122
+ <div className="md:hidden">
123
+ <PaletteBadge text={status.label} color={status.color_scheme} />
124
+ </div>
125
+ ) : null}
131
126
  <div className={DESIGN_DOC_CARD_SUMMARY_ROW}>
132
127
  <p className="line-clamp-3 text-ods-text-secondary text-h4">{doc.summary || ''}</p>
133
128
  </div>