@crewlethq/ui 0.24.0 → 0.25.0

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 (172) hide show
  1. package/README.md +65 -3
  2. package/dist/ArrangeList/index.js +2 -2
  3. package/dist/ArtifactCover/ArtifactCover.d.ts +37 -0
  4. package/dist/ArtifactCover/DashboardCover.d.ts +46 -0
  5. package/dist/ArtifactCover/index.d.ts +6 -0
  6. package/dist/ArtifactCover/index.js +14 -0
  7. package/dist/ArtifactCover-D4MBEJ5H.css +67 -0
  8. package/dist/ArtifactIcon/ArtifactIcon.d.ts +29 -0
  9. package/dist/ArtifactIcon/index.d.ts +2 -0
  10. package/dist/ArtifactIcon/index.js +13 -0
  11. package/dist/AvatarPicker/index.js +6 -6
  12. package/dist/Canvas/Canvas.d.ts +13 -2
  13. package/dist/Canvas/index.js +1 -1
  14. package/dist/CanvasBoard/CanvasBoard.d.ts +117 -0
  15. package/dist/CanvasBoard/budget.d.ts +38 -0
  16. package/dist/CanvasBoard/index.d.ts +5 -0
  17. package/dist/CanvasBoard/index.js +10 -0
  18. package/dist/CanvasBoard-ZLPDINSM.css +236 -0
  19. package/dist/CanvasSchematic/CanvasSchematic.d.ts +31 -0
  20. package/dist/CanvasSchematic/index.d.ts +3 -0
  21. package/dist/CanvasSchematic/index.js +2 -0
  22. package/dist/CanvasSchematic-PLB3N46J.css +36 -0
  23. package/dist/ChangeMark/index.js +3 -3
  24. package/dist/CharacterPicker/index.js +2 -2
  25. package/dist/Checkbox/Checkbox.d.ts +6 -0
  26. package/dist/Checkbox/index.js +1 -1
  27. package/dist/{Checkbox-KT7RS6QQ.css → Checkbox-5UORUG3F.css} +16 -0
  28. package/dist/CommentThread/index.js +2 -2
  29. package/dist/DashboardCover-RMINBODB.css +143 -0
  30. package/dist/DataTable/index.js +3 -3
  31. package/dist/DataView/index.js +5 -5
  32. package/dist/DatasetSource/DatasetSource.d.ts +83 -0
  33. package/dist/DatasetSource/index.d.ts +3 -0
  34. package/dist/DatasetSource/index.js +7 -0
  35. package/dist/DatasetSource-47LBDMPR.css +129 -0
  36. package/dist/DocTabsEditor/DocTabsEditor.d.ts +60 -0
  37. package/dist/DocTabsEditor/index.d.ts +3 -0
  38. package/dist/DocTabsEditor/index.js +9 -0
  39. package/dist/DocTabsEditor-RCOWHX5J.css +78 -0
  40. package/dist/DownloadButton/index.js +2 -2
  41. package/dist/HuePicker/index.js +4 -4
  42. package/dist/LinkInterstitial/index.js +2 -2
  43. package/dist/MarkdownEditor/index.js +5 -5
  44. package/dist/MergeConflicts/MergeConflicts.d.ts +51 -0
  45. package/dist/MergeConflicts/index.d.ts +3 -0
  46. package/dist/MergeConflicts/index.js +9 -0
  47. package/dist/MergeConflicts-O44ESH4T.css +77 -0
  48. package/dist/Meter/index.js +1 -1
  49. package/dist/{Meter-5VCSFMZW.css → Meter-ZZRFUEOH.css} +15 -0
  50. package/dist/ObjectHeader/ObjectHeader.d.ts +7 -1
  51. package/dist/ObjectHeader/index.js +1 -1
  52. package/dist/{ObjectHeader-UNVYM2KD.css → ObjectHeader-D7GU7QNI.css} +15 -0
  53. package/dist/PeopleRail/index.js +2 -2
  54. package/dist/PresenceModel/index.d.ts +1 -1
  55. package/dist/PresenceModel/index.js +1 -1
  56. package/dist/PresenceModel/presence.d.ts +10 -2
  57. package/dist/PresenceStack/index.js +2 -2
  58. package/dist/PresenterView/PresenterView.d.ts +52 -0
  59. package/dist/PresenterView/index.d.ts +3 -0
  60. package/dist/PresenterView/index.js +8 -0
  61. package/dist/PresenterView-T2C6ZZ3N.css +103 -0
  62. package/dist/Section/index.js +1 -1
  63. package/dist/{Section-QRUPRIQ2.css → Section-QR3ILQVK.css} +4 -1
  64. package/dist/SegmentedControl/SegmentedControl.d.ts +17 -0
  65. package/dist/SegmentedControl/index.js +4 -4
  66. package/dist/{SegmentedControl-PKBLJVSA.css → SegmentedControl-FLI45IOW.css} +13 -0
  67. package/dist/ShareDialog/index.js +3 -3
  68. package/dist/SheetGrid/SheetGrid.d.ts +24 -2
  69. package/dist/SheetGrid/index.js +10 -6
  70. package/dist/{SheetGrid-4HOXDVIB.css → SheetGrid-J3TKKXZL.css} +87 -17
  71. package/dist/SheetModel/edits.d.ts +7 -1
  72. package/dist/SheetModel/index.js +2 -2
  73. package/dist/SheetModel/labels.d.ts +9 -0
  74. package/dist/SheetModel/types.d.ts +6 -0
  75. package/dist/SlideCompare/SlideCompare.d.ts +52 -0
  76. package/dist/SlideCompare/index.d.ts +3 -0
  77. package/dist/SlideCompare/index.js +7 -0
  78. package/dist/SlideCompare-MGM3U2ME.css +80 -0
  79. package/dist/SlideFilmstrip/SlideFilmstrip.d.ts +50 -0
  80. package/dist/SlideFilmstrip/index.d.ts +3 -0
  81. package/dist/SlideFilmstrip/index.js +8 -0
  82. package/dist/SlideFilmstrip-BCLNAHFX.css +108 -0
  83. package/dist/SlideGrid/SlideGrid.d.ts +32 -0
  84. package/dist/SlideGrid/index.d.ts +3 -0
  85. package/dist/SlideGrid/index.js +5 -0
  86. package/dist/SlideGrid-RT6QEQEE.css +82 -0
  87. package/dist/SlideStage/SlideStage.d.ts +47 -0
  88. package/dist/SlideStage/index.d.ts +5 -0
  89. package/dist/SlideStage/index.js +4 -0
  90. package/dist/SlideStage/useSlideKeys.d.ts +21 -0
  91. package/dist/SlideStage-XIOTMMRU.css +32 -0
  92. package/dist/Switcher/index.js +2 -2
  93. package/dist/TableCells/index.js +2 -2
  94. package/dist/Tabs/index.js +2 -2
  95. package/dist/Tabs/roving.d.ts +1 -0
  96. package/dist/TagGroup/TagGroup.d.ts +16 -1
  97. package/dist/TagGroup/index.js +1 -1
  98. package/dist/{TagGroup-BCQZD7ZD.css → TagGroup-NAXTJHDS.css} +22 -0
  99. package/dist/ThemeGallery/index.js +2 -2
  100. package/dist/ThemeSwitcher/index.js +5 -5
  101. package/dist/TreeCanvas/index.js +2 -2
  102. package/dist/VersionCompare/VersionCompare.d.ts +8 -1
  103. package/dist/VersionCompare/index.js +5 -5
  104. package/dist/VersionTimeline/index.js +1 -1
  105. package/dist/{VersionTimeline-EBJ6MIPJ.css → VersionTimeline-6KRXEEOO.css} +7 -7
  106. package/dist/WidgetFrame/WidgetFrame.d.ts +73 -0
  107. package/dist/WidgetFrame/index.d.ts +3 -0
  108. package/dist/WidgetFrame/index.js +6 -0
  109. package/dist/WidgetFrame-4EFJOJMW.css +127 -0
  110. package/dist/chunk-3D7PSL2L.js +438 -0
  111. package/dist/{chunk-SJCKMSQK.js → chunk-5LUI3WQP.js} +1 -1
  112. package/dist/{chunk-IASV5UCP.js → chunk-7T42VQQT.js} +3 -1
  113. package/dist/{chunk-BJCFNRGH.js → chunk-BEHFTRMZ.js} +1 -1
  114. package/dist/chunk-BQYQWJPK.js +80 -0
  115. package/dist/{chunk-KLIEPFEZ.js → chunk-C2FRTWKO.js} +1 -1
  116. package/dist/{chunk-APS747CR.js → chunk-EHQTPVV4.js} +5 -3
  117. package/dist/{chunk-A2UXBCLO.js → chunk-FAQGGX2Z.js} +1 -1
  118. package/dist/chunk-FQCLKD7U.js +2 -0
  119. package/dist/{chunk-J4OKGJQ6.js → chunk-FVLCTCMV.js} +1 -1
  120. package/dist/{chunk-XJFOOXCF.js → chunk-HJEVSQN6.js} +1 -1
  121. package/dist/chunk-HONZQ4UR.js +107 -0
  122. package/dist/{chunk-5PSXBL73.js → chunk-HVIX5ECM.js} +1 -1
  123. package/dist/{chunk-36CWC2NH.js → chunk-INTEH4F3.js} +271 -143
  124. package/dist/{chunk-F6NZOVWL.js → chunk-IW55G7XG.js} +6 -2
  125. package/dist/chunk-KNLJL3VP.js +101 -0
  126. package/dist/chunk-KSSSFLE2.js +105 -0
  127. package/dist/{chunk-TXAFKH2A.js → chunk-KZOGQXSP.js} +6 -0
  128. package/dist/{chunk-CS65QSIJ.js → chunk-LZHLSQYK.js} +2 -2
  129. package/dist/chunk-MQEEQVG6.js +62 -0
  130. package/dist/chunk-NBWNLYWZ.js +62 -0
  131. package/dist/{chunk-YYZRLLLY.js → chunk-NHBP2XS5.js} +19 -3
  132. package/dist/chunk-O2EGEONV.js +90 -0
  133. package/dist/{chunk-YM3GJHGW.js → chunk-ODT5H4MN.js} +1 -1
  134. package/dist/{chunk-JCSXFAXG.js → chunk-OJRDEVHV.js} +1 -1
  135. package/dist/{chunk-U63Y5OCW.js → chunk-PRNX5AFE.js} +2 -2
  136. package/dist/chunk-Q4A5CGUB.js +43 -0
  137. package/dist/{chunk-7QL2OFP6.js → chunk-RCQXUT5K.js} +25 -9
  138. package/dist/{chunk-CBOICT64.js → chunk-RKKO7QHH.js} +2 -0
  139. package/dist/{chunk-TBIZSQHB.js → chunk-RSC7UJCR.js} +1 -1
  140. package/dist/chunk-RWA4H2TV.js +73 -0
  141. package/dist/{chunk-OQT7GSKJ.js → chunk-SGIQCI6Y.js} +1 -1
  142. package/dist/{chunk-35UKQ33X.js → chunk-SVW3VG72.js} +2 -2
  143. package/dist/{chunk-4PZ6FJKW.js → chunk-UGNUUVRI.js} +2 -2
  144. package/dist/chunk-UOR7TOAU.js +191 -0
  145. package/dist/{chunk-XMGB3ZAT.js → chunk-URUGEAFB.js} +3 -2
  146. package/dist/chunk-UZ7ZUSLH.js +179 -0
  147. package/dist/chunk-V2Z24W2Z.js +75 -0
  148. package/dist/{chunk-I7WXZOWA.js → chunk-VGE3G3T4.js} +3 -1
  149. package/dist/{chunk-UNZ7TVV5.js → chunk-W4XYY73O.js} +7 -9
  150. package/dist/{chunk-IPM2E6UI.js → chunk-WJDQ7XQA.js} +1 -1
  151. package/dist/{chunk-PPAQFGS2.js → chunk-YEKYVJQR.js} +1 -1
  152. package/dist/chunk-Z54BPRL6.js +74 -0
  153. package/dist/{chunk-S35G6PNC.js → chunk-Z7JYG5TF.js} +5 -4
  154. package/dist/chunk-ZZDY4XL7.js +112 -0
  155. package/dist/generated/index.d.ts +13 -0
  156. package/dist/generated/index.js +86 -73
  157. package/dist/index.js +86 -73
  158. package/dist/styles.css +1644 -153
  159. package/dist/utils/csv.d.ts +18 -0
  160. package/dist/utils/elementToPng.d.ts +49 -0
  161. package/dist/utils/index.d.ts +4 -1
  162. package/dist/utils/index.js +2 -2
  163. package/dist/utils/useDownload.d.ts +14 -4
  164. package/package.json +3 -3
  165. package/dist/chunk-E6UWRXNM.js +0 -52
  166. package/dist/chunk-M54K52ZU.js +0 -2
  167. package/dist/chunk-U5LQ2AS5.js +0 -1
  168. package/dist/{chunk-KG6XRG5Z.js → chunk-5OY4LJFH.js} +1 -1
  169. package/dist/{chunk-ZM7HLFOA.js → chunk-L2OQRPXJ.js} +1 -1
  170. package/dist/{chunk-MUGM7SEG.js → chunk-LFNUH4GY.js} +1 -1
  171. package/dist/{chunk-PBNP7H2C.js → chunk-M2VJGNCD.js} +1 -1
  172. /package/dist/{chunk-MSSZHDZI.js → chunk-SLRKS5PF.js} +0 -0
@@ -1,9 +1,9 @@
1
- export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-APS747CR.js';
2
- import '../chunk-M54K52ZU.js';
1
+ export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-EHQTPVV4.js';
2
+ import '../chunk-FQCLKD7U.js';
3
3
  import '../chunk-BVWSLXTY.js';
4
- import '../chunk-7QL2OFP6.js';
5
- import '../chunk-XJFOOXCF.js';
6
- import '../chunk-CBOICT64.js';
4
+ import '../chunk-RCQXUT5K.js';
5
+ import '../chunk-HJEVSQN6.js';
6
+ import '../chunk-RKKO7QHH.js';
7
7
  import '../chunk-RA2ULG6H.js';
8
8
  import '../chunk-PQADV6P6.js';
9
9
  import '../chunk-BHHIIK3M.js';
@@ -1,4 +1,4 @@
1
- export { VersionTimeline } from '../chunk-UNZ7TVV5.js';
1
+ export { VersionTimeline } from '../chunk-W4XYY73O.js';
2
2
  import '../chunk-AUQPBL4O.js';
3
3
  import '../chunk-4KP4RC3O.js';
4
4
  import '../chunk-3CZ7XAVY.js';
@@ -32,11 +32,11 @@
32
32
  background: var(--color-surface-hover);
33
33
  }
34
34
 
35
- /* The version on show. The accent means "where the reader is", which is
36
- exactly what this row is. */
35
+ /* The version on show, as a FILL only: the timeline's rail is the row's one
36
+ vertical line, and an accent bar beside it drew two. The accent means
37
+ "where the reader is", which is exactly what this row is. */
37
38
  .crewlet-version-timeline__select[aria-current='true'] {
38
39
  background: var(--color-brand-accent-soft);
39
- box-shadow: inset 2px 0 0 var(--color-brand-accent);
40
40
  }
41
41
 
42
42
  .crewlet-version-timeline__head {
@@ -91,11 +91,11 @@
91
91
  padding-inline: var(--spacing-1);
92
92
  }
93
93
 
94
- /* The version compared against carries the same edge in the strong neutral:
95
- it is the other side of the comparison, not where the reader is, so it does
96
- not take the accent. */
94
+ /* The version compared against is ringed in the strong neutral: it is the
95
+ other side of the comparison, not where the reader is, so it takes neither
96
+ the accent nor a second vertical bar beside the rail. */
97
97
  .is-compared > .crewlet-timeline__body > .crewlet-version-timeline__select {
98
- box-shadow: inset 2px 0 0 var(--color-border-strong);
98
+ box-shadow: inset 0 0 0 1px var(--color-border-strong);
99
99
  }
100
100
 
101
101
  .crewlet-version-timeline__gap {
@@ -0,0 +1,73 @@
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
+ import { type TimeValue } from '../RelativeTime/index.js';
3
+ /**
4
+ * Where a figure's data stands.
5
+ *
6
+ * - `loading`: not read yet.
7
+ * - `live`: kept current as it changes (a datastore collection on the socket).
8
+ * - `ready`: read, and true as of `asOf`.
9
+ * - `stale`: read, and older than its source promises; still drawn, and marked.
10
+ * - `refused`: the reader may not read the data behind it. The figure is not
11
+ * drawn at all, and `detail` says why.
12
+ * - `failed`: the read did not complete. The figure is not drawn, and `detail`
13
+ * says what happened.
14
+ */
15
+ export type DatasetStatus = 'loading' | 'live' | 'ready' | 'stale' | 'refused' | 'failed';
16
+ /** What a widget's figure is drawn from, and when it was true. */
17
+ export interface WidgetSource {
18
+ /** The dataset's title: what the figure cites. */
19
+ label: string;
20
+ /** When the figure was true. Unset for a live source or one not read yet. */
21
+ asOf?: TimeValue | undefined;
22
+ status: DatasetStatus;
23
+ /** The refusal or failure sentence, for `refused` and `failed`. */
24
+ detail?: string | undefined;
25
+ }
26
+ export interface WidgetFrameLabels {
27
+ live: string;
28
+ asOf: string;
29
+ stale: string;
30
+ loading: (title: string) => string;
31
+ /** The sentence drawn for `refused` or `failed` when the host gave no detail. */
32
+ refused: string;
33
+ failed: string;
34
+ /** Said before the citation to a screen reader: "Source: Open tasks, as of 2m ago". */
35
+ cite: string;
36
+ }
37
+ export interface WidgetFrameProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'children'> {
38
+ title: string;
39
+ source: WidgetSource;
40
+ /**
41
+ * Opens the host's Sources rail at this figure's dataset. Given, the
42
+ * citation is a button; without it, plain text.
43
+ */
44
+ onCite?: (() => void) | undefined;
45
+ /** The host's controls for this figure, such as a menu offering CSV and PNG. */
46
+ actions?: ReactNode;
47
+ /** The heading level of the title. Default 3, under a board's own heading. */
48
+ headingLevel?: 2 | 3 | 4 | undefined;
49
+ /** Overrides the shared clock, for a story or a suite. */
50
+ now?: number | undefined;
51
+ labels?: Partial<WidgetFrameLabels> | undefined;
52
+ children: ReactNode;
53
+ }
54
+ /**
55
+ * One figure on a dashboard: its title, the figure, and the line that says
56
+ * what it is drawn from and when that was true.
57
+ *
58
+ * EVERY FIGURE CITES ITS SOURCE. A number with no provenance is a number
59
+ * nobody can check, so the citation is part of the frame rather than
60
+ * something a host may forget: the dataset's title, then "live" or "as of" a
61
+ * relative time (the exact instant on hover). With `onCite` the citation is a
62
+ * button that opens the host's Sources rail at that dataset.
63
+ *
64
+ * A REFUSAL IS NOT AN ALARM. A reader who may not read the tracker opening a
65
+ * dashboard that cites it is an ordinary state, so `refused` draws a calm
66
+ * sentence in place of the figure, never an error colour, and draws nothing
67
+ * of the figure itself: a host that passed rows by mistake still shows none.
68
+ * `failed` reads the same way with its own sentence.
69
+ *
70
+ * Sits inside the host's `ArrangeFrame`, which owns the grid, the drag and
71
+ * the resize; this owns what is inside the card.
72
+ */
73
+ export declare function WidgetFrame({ title, source, onCite, actions, headingLevel, now, labels, className, children, ...rest }: WidgetFrameProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './WidgetFrame.css';
2
+ export { WidgetFrame } from './WidgetFrame.js';
3
+ export type { DatasetStatus, WidgetFrameLabels, WidgetFrameProps, WidgetSource } from './WidgetFrame.js';
@@ -0,0 +1,6 @@
1
+ export { WidgetFrame } from '../chunk-BQYQWJPK.js';
2
+ import '../chunk-W5J7R5EB.js';
3
+ import '../chunk-3CZ7XAVY.js';
4
+ import '../chunk-EUCC37WY.js';
5
+ import '../chunk-BZFWDIV6.js';
6
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,127 @@
1
+ /*
2
+ * WidgetFrame: one figure on a dashboard. A title row, the figure filling the
3
+ * height the host's frame gives it, and the citation line at the foot.
4
+ */
5
+
6
+ .crewlet-widget-frame {
7
+ box-sizing: border-box;
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: var(--spacing-2);
11
+ min-width: 0;
12
+ height: 100%;
13
+ min-height: 0;
14
+ padding: var(--spacing-3) var(--spacing-4);
15
+ border: 1px solid var(--color-border-default);
16
+ border-radius: var(--radius-lg);
17
+ background: var(--color-surface-elevated);
18
+ }
19
+
20
+ .crewlet-widget-frame__head {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: var(--spacing-2);
24
+ min-width: 0;
25
+ }
26
+
27
+ .crewlet-widget-frame__title {
28
+ flex: 1;
29
+ min-width: 0;
30
+ margin: 0;
31
+ overflow: hidden;
32
+ color: var(--color-text-primary);
33
+ font-size: var(--font-size-sm);
34
+ font-weight: var(--font-weight-semibold);
35
+ line-height: var(--font-line-height-snug);
36
+ text-overflow: ellipsis;
37
+ white-space: nowrap;
38
+ }
39
+
40
+ .crewlet-widget-frame__actions {
41
+ display: inline-flex;
42
+ flex: none;
43
+ align-items: center;
44
+ gap: var(--spacing-1);
45
+ }
46
+
47
+ .crewlet-widget-frame__body {
48
+ flex: 1;
49
+ min-width: 0;
50
+ min-height: 0;
51
+ overflow: auto;
52
+ }
53
+
54
+ .crewlet-widget-frame__blocked {
55
+ display: flex;
56
+ align-items: flex-start;
57
+ gap: var(--spacing-2);
58
+ margin: 0;
59
+ color: var(--color-text-secondary);
60
+ font-size: var(--font-size-sm);
61
+ line-height: var(--font-line-height-normal);
62
+ }
63
+
64
+ .crewlet-widget-frame__blocked-glyph {
65
+ display: inline-flex;
66
+ flex: none;
67
+ padding-top: 2px;
68
+ color: var(--color-text-tertiary);
69
+ }
70
+
71
+ .crewlet-widget-frame__cite {
72
+ display: flex;
73
+ min-width: 0;
74
+ }
75
+
76
+ .crewlet-widget-frame__cite-text,
77
+ .crewlet-widget-frame__cite-button {
78
+ display: inline-flex;
79
+ flex-wrap: wrap;
80
+ align-items: center;
81
+ gap: 0 var(--spacing-1);
82
+ min-width: 0;
83
+ color: var(--color-text-tertiary);
84
+ font-size: var(--font-size-xs);
85
+ line-height: var(--font-line-height-snug);
86
+ }
87
+
88
+ .crewlet-widget-frame__cite-button {
89
+ margin: 0;
90
+ padding: 0;
91
+ border: 0;
92
+ border-radius: var(--radius-xs);
93
+ background: none;
94
+ font: inherit;
95
+ font-size: var(--font-size-xs);
96
+ text-align: start;
97
+ cursor: pointer;
98
+ }
99
+
100
+ .crewlet-widget-frame__cite-button:hover .crewlet-widget-frame__source {
101
+ color: var(--color-text-primary);
102
+ text-decoration: underline;
103
+ }
104
+
105
+ .crewlet-widget-frame__cite-button:focus-visible {
106
+ outline: 2px solid var(--color-focus);
107
+ outline-offset: var(--size-focus-ring-inset-offset);
108
+ }
109
+
110
+ .crewlet-widget-frame__source {
111
+ overflow: hidden;
112
+ color: var(--color-text-secondary);
113
+ font-weight: var(--font-weight-medium);
114
+ text-overflow: ellipsis;
115
+ white-space: nowrap;
116
+ }
117
+
118
+ /* The separator is drawn, not typed, so a screen reader hears the facts alone. */
119
+ .crewlet-widget-frame__when::before {
120
+ content: '\00b7' / '';
121
+ margin-inline-end: var(--spacing-1);
122
+ }
123
+
124
+ .crewlet-widget-frame__stale {
125
+ display: inline-flex;
126
+ color: var(--color-feedback-warning-ink);
127
+ }