@crewlethq/ui 0.28.0 → 0.29.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.
- package/README.md +21 -1
- package/dist/AccessDeniedCard/index.js +3 -3
- package/dist/Accordion/index.js +3 -3
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-APHZKJYH.css → AppShell-GCM4TDVY.css} +4 -1
- package/dist/ArtifactBar/ArtifactBar.d.ts +143 -0
- package/dist/ArtifactBar/index.d.ts +3 -0
- package/dist/ArtifactBar/index.js +25 -0
- package/dist/ArtifactBar-IBWB5POL.css +358 -0
- package/dist/ArtifactCard/index.js +3 -3
- package/dist/ArtifactCover/index.js +4 -4
- package/dist/ArtifactIcon/index.js +4 -4
- package/dist/ArtifactPanel/ArtifactPanel.d.ts +81 -0
- package/dist/ArtifactPanel/index.d.ts +3 -0
- package/dist/ArtifactPanel/index.js +5 -0
- package/dist/ArtifactPanel-YFXT5O77.css +132 -0
- package/dist/AuthLayout/index.js +3 -3
- package/dist/AvatarPicker/index.js +4 -4
- package/dist/Card/index.js +2 -2
- package/dist/ChangeMark/index.js +1 -1
- package/dist/CommandPalette/index.js +3 -3
- package/dist/CommentThread/index.js +4 -4
- package/dist/Composer/index.js +2 -2
- package/dist/DataView/index.js +4 -4
- package/dist/Disclosure/index.js +3 -3
- package/dist/HuePicker/index.js +2 -2
- package/dist/ListInput/index.js +2 -2
- package/dist/MarkdownEditor/index.js +1 -1
- package/dist/PeopleRail/PeopleRail.d.ts +8 -1
- package/dist/PeopleRail/index.js +1 -1
- package/dist/{PeopleRail-R64WVOSH.css → PeopleRail-SZGHZXVT.css} +8 -0
- package/dist/SheetGrid/index.js +1 -1
- package/dist/ThemeSwitcher/index.js +1 -1
- package/dist/VersionCompare/index.js +2 -2
- package/dist/{chunk-V2Z24W2Z.js → chunk-4JUKWWUD.js} +1 -1
- package/dist/{chunk-WENCSQ47.js → chunk-EBNI36UQ.js} +1 -1
- package/dist/{chunk-M2VJGNCD.js → chunk-FKULOLKG.js} +2 -2
- package/dist/{chunk-6J35F334.js → chunk-GOSQXEZU.js} +1 -1
- package/dist/chunk-I3BSQUKN.js +121 -0
- package/dist/{chunk-S4RCG44T.js → chunk-MICH6QSJ.js} +1 -1
- package/dist/chunk-QMBP23BL.js +347 -0
- package/dist/{chunk-G2AVKPSL.js → chunk-RIAZM6L3.js} +1 -1
- package/dist/{chunk-PRNX5AFE.js → chunk-TGYDROIB.js} +1 -1
- package/dist/{chunk-G3EEUNZQ.js → chunk-UB7TJEKZ.js} +1 -1
- package/dist/chunk-UQHKFF2N.js +106 -0
- package/dist/{chunk-WHZFDS62.js → chunk-VDPJGP4Q.js} +1 -1
- package/dist/{chunk-MQEEQVG6.js → chunk-XALUCIG5.js} +1 -1
- package/dist/generated/index.d.ts +2 -0
- package/dist/generated/index.js +65 -63
- package/dist/index.js +65 -63
- package/dist/styles.css +510 -3
- package/package.json +3 -3
- package/dist/chunk-FVLCTCMV.js +0 -96
- package/dist/{chunk-RIEDQSA4.js → chunk-7DZDSSJS.js} +1 -1
- package/dist/{chunk-YZCJ63JF.js → chunk-ACA27MZH.js} +1 -1
- package/dist/{chunk-ENJUPIND.js → chunk-FZVJDJFN.js} +1 -1
- package/dist/{chunk-NWW4IQJU.js → chunk-IFNQKWUO.js} +0 -0
- package/dist/{chunk-SGIQCI6Y.js → chunk-LIXSV5YI.js} +1 -1
- package/dist/{chunk-VOMYRJV5.js → chunk-RODMM35O.js} +2 -2
- package/dist/{chunk-HCKJGBQH.js → chunk-VVRL27HM.js} +1 -1
- package/dist/{chunk-D5JZN3ML.js → chunk-Z6VW6CXX.js} +1 -1
package/dist/styles.css
CHANGED
|
@@ -548,7 +548,7 @@
|
|
|
548
548
|
}
|
|
549
549
|
|
|
550
550
|
|
|
551
|
-
/* AppShell-
|
|
551
|
+
/* AppShell-GCM4TDVY.css */
|
|
552
552
|
/*
|
|
553
553
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
554
554
|
* floats beside it.
|
|
@@ -1040,9 +1040,12 @@
|
|
|
1040
1040
|
}
|
|
1041
1041
|
|
|
1042
1042
|
/* A screen that draws to the bottom of the window: the scroller stops
|
|
1043
|
-
scrolling and the content column takes the height that is left.
|
|
1043
|
+
scrolling and the content column takes the height that is left. It
|
|
1044
|
+
reserves no scrollbar gutter either, since nothing in it scrolls: the
|
|
1045
|
+
reserved strip was a dead band down the screen's end edge. */
|
|
1044
1046
|
.crewlet-app-shell--fill .crewlet-app-shell__main {
|
|
1045
1047
|
overflow: hidden;
|
|
1048
|
+
scrollbar-gutter: auto;
|
|
1046
1049
|
}
|
|
1047
1050
|
|
|
1048
1051
|
.crewlet-app-shell--fill .crewlet-app-shell__content {
|
|
@@ -1993,6 +1996,367 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1993
1996
|
}
|
|
1994
1997
|
|
|
1995
1998
|
|
|
1999
|
+
/* ArtifactBar-IBWB5POL.css */
|
|
2000
|
+
/*
|
|
2001
|
+
* One row, one hairline under it, the height of a large row. The lead (the
|
|
2002
|
+
* way back, the glyph, the title, the version) takes what the end leaves it
|
|
2003
|
+
* and the title is what gives way, ellipsised; the views sit between the two,
|
|
2004
|
+
* centred while both sides have room, because the lead and the end each grow
|
|
2005
|
+
* from a zero basis and the end never shrinks below its controls.
|
|
2006
|
+
*
|
|
2007
|
+
* Three widths of its OWN fold it (a container query, since a sidebar or a
|
|
2008
|
+
* panel beside it decides its room, not the window): under a laptop sheet's
|
|
2009
|
+
* width the presence stack goes (the People control still counts who is
|
|
2010
|
+
* here), then the labelled tools' words, and under a phone's two panes the
|
|
2011
|
+
* views, the unlabelled tools and the kind's glyph fold away, the first two
|
|
2012
|
+
* into More.
|
|
2013
|
+
*/
|
|
2014
|
+
|
|
2015
|
+
.crewlet-artifact-bar {
|
|
2016
|
+
container: crewlet-artifact-bar / inline-size;
|
|
2017
|
+
display: block;
|
|
2018
|
+
min-width: 0;
|
|
2019
|
+
background: var(--color-surface-background);
|
|
2020
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
2021
|
+
}
|
|
2022
|
+
|
|
2023
|
+
.crewlet-artifact-bar__row {
|
|
2024
|
+
display: flex;
|
|
2025
|
+
align-items: center;
|
|
2026
|
+
gap: var(--spacing-3);
|
|
2027
|
+
height: var(--size-row-lg);
|
|
2028
|
+
padding: 0 var(--spacing-3);
|
|
2029
|
+
min-width: 0;
|
|
2030
|
+
}
|
|
2031
|
+
|
|
2032
|
+
.crewlet-artifact-bar__lead {
|
|
2033
|
+
display: flex;
|
|
2034
|
+
flex: 1 1 0;
|
|
2035
|
+
align-items: center;
|
|
2036
|
+
gap: var(--spacing-1);
|
|
2037
|
+
min-width: 0;
|
|
2038
|
+
}
|
|
2039
|
+
|
|
2040
|
+
.crewlet-artifact-bar__end {
|
|
2041
|
+
display: flex;
|
|
2042
|
+
flex: none;
|
|
2043
|
+
align-items: center;
|
|
2044
|
+
justify-content: flex-end;
|
|
2045
|
+
gap: var(--spacing-2);
|
|
2046
|
+
margin-inline-start: auto;
|
|
2047
|
+
}
|
|
2048
|
+
|
|
2049
|
+
/* WITH VIEWS TO CENTRE, the end grows from zero as the lead does, so the two
|
|
2050
|
+
sides stay equal while there is room and the views sit in the middle; the
|
|
2051
|
+
end never shrinks below its controls, so it is the title that gives way. */
|
|
2052
|
+
.crewlet-artifact-bar__row--centred .crewlet-artifact-bar__end {
|
|
2053
|
+
flex: 1 0 0;
|
|
2054
|
+
min-width: max-content;
|
|
2055
|
+
}
|
|
2056
|
+
|
|
2057
|
+
.crewlet-artifact-bar__modes {
|
|
2058
|
+
display: flex;
|
|
2059
|
+
flex: none;
|
|
2060
|
+
align-items: center;
|
|
2061
|
+
}
|
|
2062
|
+
|
|
2063
|
+
.crewlet-artifact-bar__glyph {
|
|
2064
|
+
display: inline-flex;
|
|
2065
|
+
flex: none;
|
|
2066
|
+
align-items: center;
|
|
2067
|
+
justify-content: center;
|
|
2068
|
+
width: var(--size-control-sm);
|
|
2069
|
+
height: var(--size-control-sm);
|
|
2070
|
+
color: var(--color-text-secondary);
|
|
2071
|
+
}
|
|
2072
|
+
|
|
2073
|
+
/* THE TITLE. Read only, it is text; renamable, its words are a button drawn
|
|
2074
|
+
as text that answers the pointer with the hover ground, as a field would. */
|
|
2075
|
+
.crewlet-artifact-bar__title {
|
|
2076
|
+
position: relative;
|
|
2077
|
+
display: flex;
|
|
2078
|
+
min-width: 0;
|
|
2079
|
+
margin: 0;
|
|
2080
|
+
overflow: hidden;
|
|
2081
|
+
color: var(--color-text-primary);
|
|
2082
|
+
font-family: var(--font-family-sans);
|
|
2083
|
+
font-size: var(--font-size-sm);
|
|
2084
|
+
font-weight: var(--font-weight-semibold);
|
|
2085
|
+
letter-spacing: var(--font-letter-spacing-tight);
|
|
2086
|
+
line-height: var(--font-line-height-snug);
|
|
2087
|
+
text-overflow: ellipsis;
|
|
2088
|
+
white-space: nowrap;
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
.crewlet-artifact-bar__title--editing {
|
|
2092
|
+
overflow: visible;
|
|
2093
|
+
}
|
|
2094
|
+
|
|
2095
|
+
.crewlet-artifact-bar__rename {
|
|
2096
|
+
min-width: 0;
|
|
2097
|
+
max-width: 100%;
|
|
2098
|
+
margin: 0;
|
|
2099
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
2100
|
+
overflow: hidden;
|
|
2101
|
+
border: 0;
|
|
2102
|
+
border-radius: var(--radius-sm);
|
|
2103
|
+
background: transparent;
|
|
2104
|
+
color: inherit;
|
|
2105
|
+
font: inherit;
|
|
2106
|
+
letter-spacing: inherit;
|
|
2107
|
+
text-align: start;
|
|
2108
|
+
text-overflow: ellipsis;
|
|
2109
|
+
white-space: nowrap;
|
|
2110
|
+
cursor: text;
|
|
2111
|
+
transition: background-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
2112
|
+
}
|
|
2113
|
+
|
|
2114
|
+
.crewlet-artifact-bar__rename:hover {
|
|
2115
|
+
background: var(--color-surface-hover);
|
|
2116
|
+
}
|
|
2117
|
+
|
|
2118
|
+
.crewlet-artifact-bar__rename:focus-visible {
|
|
2119
|
+
outline: 2px solid var(--color-focus);
|
|
2120
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
/* The field is as wide as what is typed in it: the grid cell is sized by a
|
|
2124
|
+
hidden copy of the text, and the field fills that cell. */
|
|
2125
|
+
.crewlet-artifact-bar__sizer {
|
|
2126
|
+
display: inline-grid;
|
|
2127
|
+
min-width: 0;
|
|
2128
|
+
max-width: 100%;
|
|
2129
|
+
}
|
|
2130
|
+
|
|
2131
|
+
.crewlet-artifact-bar__sizer::after {
|
|
2132
|
+
content: attr(data-value) ' ';
|
|
2133
|
+
visibility: hidden;
|
|
2134
|
+
grid-area: 1 / 1;
|
|
2135
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
2136
|
+
overflow: hidden;
|
|
2137
|
+
white-space: pre;
|
|
2138
|
+
font: inherit;
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
.crewlet-artifact-bar__field {
|
|
2142
|
+
grid-area: 1 / 1;
|
|
2143
|
+
min-width: 0;
|
|
2144
|
+
width: 100%;
|
|
2145
|
+
margin: 0;
|
|
2146
|
+
padding: calc(var(--spacing-1) - 1px) calc(var(--spacing-2) - 1px);
|
|
2147
|
+
border: 1px solid var(--color-border-control);
|
|
2148
|
+
border-radius: var(--radius-sm);
|
|
2149
|
+
background: var(--color-surface-elevated);
|
|
2150
|
+
color: var(--color-text-primary);
|
|
2151
|
+
font: inherit;
|
|
2152
|
+
letter-spacing: inherit;
|
|
2153
|
+
}
|
|
2154
|
+
|
|
2155
|
+
.crewlet-artifact-bar__field:focus {
|
|
2156
|
+
outline: 2px solid var(--color-focus);
|
|
2157
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
2158
|
+
}
|
|
2159
|
+
|
|
2160
|
+
.crewlet-artifact-bar__field[aria-invalid='true'] {
|
|
2161
|
+
border-color: var(--color-feedback-danger);
|
|
2162
|
+
}
|
|
2163
|
+
|
|
2164
|
+
.crewlet-artifact-bar__error {
|
|
2165
|
+
position: absolute;
|
|
2166
|
+
top: calc(100% + var(--spacing-1));
|
|
2167
|
+
left: 0;
|
|
2168
|
+
z-index: var(--z-index-dropdown);
|
|
2169
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
2170
|
+
border: 1px solid var(--color-border-default);
|
|
2171
|
+
border-radius: var(--radius-sm);
|
|
2172
|
+
background: var(--color-surface-elevated);
|
|
2173
|
+
box-shadow: var(--shadow-md);
|
|
2174
|
+
color: var(--color-feedback-danger-ink);
|
|
2175
|
+
font-size: var(--font-size-xs);
|
|
2176
|
+
font-weight: var(--font-weight-regular);
|
|
2177
|
+
white-space: nowrap;
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
.crewlet-artifact-bar__placeholder {
|
|
2181
|
+
display: block;
|
|
2182
|
+
flex: 0 1 12rem;
|
|
2183
|
+
height: var(--font-size-sm);
|
|
2184
|
+
border-radius: var(--radius-sm);
|
|
2185
|
+
background: var(--color-surface-subtle);
|
|
2186
|
+
}
|
|
2187
|
+
|
|
2188
|
+
.crewlet-artifact-bar__version {
|
|
2189
|
+
display: inline-flex;
|
|
2190
|
+
flex: none;
|
|
2191
|
+
margin-inline-start: var(--spacing-1);
|
|
2192
|
+
}
|
|
2193
|
+
|
|
2194
|
+
.crewlet-artifact-bar__presence {
|
|
2195
|
+
display: inline-flex;
|
|
2196
|
+
align-items: center;
|
|
2197
|
+
margin-inline-end: var(--spacing-1);
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
.crewlet-artifact-bar__tools {
|
|
2201
|
+
display: inline-flex;
|
|
2202
|
+
align-items: center;
|
|
2203
|
+
gap: var(--spacing-1);
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
.crewlet-artifact-bar__tool {
|
|
2207
|
+
position: relative;
|
|
2208
|
+
display: inline-flex;
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2211
|
+
/* A figure on the glyph's corner, inside the button's own box so it never
|
|
2212
|
+
reaches past the bar's edge. */
|
|
2213
|
+
.crewlet-artifact-bar__badge {
|
|
2214
|
+
position: absolute;
|
|
2215
|
+
top: calc(-1 * var(--spacing-1));
|
|
2216
|
+
right: calc(-1 * var(--spacing-1));
|
|
2217
|
+
min-width: var(--spacing-4);
|
|
2218
|
+
height: var(--spacing-4);
|
|
2219
|
+
padding: 0 var(--spacing-1);
|
|
2220
|
+
border-radius: var(--radius-pill);
|
|
2221
|
+
background: var(--color-brand-accent);
|
|
2222
|
+
color: var(--color-text-on-accent);
|
|
2223
|
+
font-size: var(--font-size-2xs);
|
|
2224
|
+
font-weight: var(--font-weight-semibold);
|
|
2225
|
+
font-variant-numeric: tabular-nums;
|
|
2226
|
+
line-height: var(--spacing-4);
|
|
2227
|
+
text-align: center;
|
|
2228
|
+
pointer-events: none;
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
/* WHILE THE PRESENCE STACK IS DRAWN it says who is here, so a tool's figure
|
|
2232
|
+
saying the same is not drawn beside it; it comes back where the stack
|
|
2233
|
+
folds away. */
|
|
2234
|
+
.crewlet-artifact-bar--present .crewlet-artifact-bar__badge {
|
|
2235
|
+
display: none;
|
|
2236
|
+
}
|
|
2237
|
+
|
|
2238
|
+
/* A rule between two groups of tools: the kind's, then every artifact's. */
|
|
2239
|
+
.crewlet-artifact-bar__rule {
|
|
2240
|
+
width: 1px;
|
|
2241
|
+
height: var(--spacing-4);
|
|
2242
|
+
margin: 0 var(--spacing-1);
|
|
2243
|
+
background: var(--color-border-default);
|
|
2244
|
+
}
|
|
2245
|
+
|
|
2246
|
+
.crewlet-artifact-bar__tip {
|
|
2247
|
+
display: inline-flex;
|
|
2248
|
+
align-items: center;
|
|
2249
|
+
gap: var(--spacing-2);
|
|
2250
|
+
}
|
|
2251
|
+
|
|
2252
|
+
/* Both arrangements are drawn; the bar's width says which one shows. */
|
|
2253
|
+
.crewlet-artifact-bar__narrow,
|
|
2254
|
+
.crewlet-artifact-bar__tight {
|
|
2255
|
+
display: none;
|
|
2256
|
+
}
|
|
2257
|
+
|
|
2258
|
+
.crewlet-artifact-bar__wide,
|
|
2259
|
+
.crewlet-artifact-bar__roomy {
|
|
2260
|
+
display: inline-flex;
|
|
2261
|
+
}
|
|
2262
|
+
|
|
2263
|
+
@container crewlet-artifact-bar (width < 860px) {
|
|
2264
|
+
.crewlet-artifact-bar__presence {
|
|
2265
|
+
display: none;
|
|
2266
|
+
}
|
|
2267
|
+
|
|
2268
|
+
.crewlet-artifact-bar--present .crewlet-artifact-bar__badge {
|
|
2269
|
+
display: block;
|
|
2270
|
+
}
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2273
|
+
@container crewlet-artifact-bar (width < 720px) {
|
|
2274
|
+
.crewlet-artifact-bar__roomy {
|
|
2275
|
+
display: none;
|
|
2276
|
+
}
|
|
2277
|
+
|
|
2278
|
+
.crewlet-artifact-bar__tight {
|
|
2279
|
+
display: inline-flex;
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
|
|
2283
|
+
@container crewlet-artifact-bar (width < 640px) {
|
|
2284
|
+
.crewlet-artifact-bar__row {
|
|
2285
|
+
gap: var(--spacing-1);
|
|
2286
|
+
padding: 0 var(--spacing-2);
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
/* The title has the row's room before the kind's glyph does: the glyph
|
|
2290
|
+
says again what the title already names. */
|
|
2291
|
+
.crewlet-artifact-bar__wide,
|
|
2292
|
+
.crewlet-artifact-bar__glyph {
|
|
2293
|
+
display: none;
|
|
2294
|
+
}
|
|
2295
|
+
|
|
2296
|
+
.crewlet-artifact-bar__narrow {
|
|
2297
|
+
display: inline-flex;
|
|
2298
|
+
}
|
|
2299
|
+
|
|
2300
|
+
/* The views have folded, so there is nothing to centre: the title takes
|
|
2301
|
+
the room. */
|
|
2302
|
+
.crewlet-artifact-bar__row--centred .crewlet-artifact-bar__end {
|
|
2303
|
+
flex: none;
|
|
2304
|
+
min-width: 0;
|
|
2305
|
+
}
|
|
2306
|
+
}
|
|
2307
|
+
|
|
2308
|
+
/*
|
|
2309
|
+
* THE VERSION CHIP: quiet at rest, the hover ground under the pointer, and
|
|
2310
|
+
* the accent's soft ground while an older version than the newest is on
|
|
2311
|
+
* show, so history never passes for the present.
|
|
2312
|
+
*/
|
|
2313
|
+
.crewlet-version-chip {
|
|
2314
|
+
display: inline-flex;
|
|
2315
|
+
align-items: center;
|
|
2316
|
+
gap: var(--spacing-1);
|
|
2317
|
+
height: var(--size-target-min);
|
|
2318
|
+
padding: 0 var(--spacing-2);
|
|
2319
|
+
border: 0;
|
|
2320
|
+
border-radius: var(--radius-pill);
|
|
2321
|
+
background: var(--color-surface-subtle);
|
|
2322
|
+
color: var(--color-text-secondary);
|
|
2323
|
+
font-family: var(--font-family-sans);
|
|
2324
|
+
font-size: var(--font-size-xs);
|
|
2325
|
+
font-weight: var(--font-weight-medium);
|
|
2326
|
+
font-variant-numeric: tabular-nums;
|
|
2327
|
+
white-space: nowrap;
|
|
2328
|
+
cursor: pointer;
|
|
2329
|
+
transition: background-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
2330
|
+
}
|
|
2331
|
+
|
|
2332
|
+
.crewlet-version-chip:hover {
|
|
2333
|
+
background: var(--color-surface-hover);
|
|
2334
|
+
color: var(--color-text-primary);
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
.crewlet-version-chip:focus-visible {
|
|
2338
|
+
outline: 2px solid var(--color-focus);
|
|
2339
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
2340
|
+
}
|
|
2341
|
+
|
|
2342
|
+
.crewlet-version-chip--older {
|
|
2343
|
+
background: var(--color-brand-accent-soft);
|
|
2344
|
+
color: var(--color-brand-accent-ink);
|
|
2345
|
+
}
|
|
2346
|
+
|
|
2347
|
+
.crewlet-version-chip--older:hover {
|
|
2348
|
+
background: var(--color-brand-accent-soft-strong);
|
|
2349
|
+
color: var(--color-brand-accent-ink);
|
|
2350
|
+
}
|
|
2351
|
+
|
|
2352
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2353
|
+
.crewlet-artifact-bar__rename,
|
|
2354
|
+
.crewlet-version-chip {
|
|
2355
|
+
transition: none;
|
|
2356
|
+
}
|
|
2357
|
+
}
|
|
2358
|
+
|
|
2359
|
+
|
|
1996
2360
|
/* ArtifactCard-EXVAEBV6.css */
|
|
1997
2361
|
/*
|
|
1998
2362
|
* A card in a gallery: the preview on top at a fixed ratio, so a grid of them
|
|
@@ -2175,6 +2539,141 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2175
2539
|
}
|
|
2176
2540
|
|
|
2177
2541
|
|
|
2542
|
+
/* ArtifactPanel-YFXT5O77.css */
|
|
2543
|
+
/*
|
|
2544
|
+
* The workspace is a row: the artifact's body, then at most one panel. The
|
|
2545
|
+
* body scrolls itself, so a panel beside it stays in view however far the
|
|
2546
|
+
* artifact is read; the panel's own body scrolls under its head.
|
|
2547
|
+
*
|
|
2548
|
+
* ONE HAIRLINE between the two, the panel's start edge, and none at the
|
|
2549
|
+
* workspace's own edges: whatever frames the workspace already draws those.
|
|
2550
|
+
*/
|
|
2551
|
+
|
|
2552
|
+
.crewlet-artifact-workspace {
|
|
2553
|
+
container: crewlet-artifact-workspace / inline-size;
|
|
2554
|
+
position: relative;
|
|
2555
|
+
display: flex;
|
|
2556
|
+
min-width: 0;
|
|
2557
|
+
min-height: 0;
|
|
2558
|
+
}
|
|
2559
|
+
|
|
2560
|
+
.crewlet-artifact-workspace__body {
|
|
2561
|
+
flex: 1 1 auto;
|
|
2562
|
+
min-width: 0;
|
|
2563
|
+
min-height: 0;
|
|
2564
|
+
overflow: auto;
|
|
2565
|
+
}
|
|
2566
|
+
|
|
2567
|
+
/* EXPANDED, the panel is the workspace; the body stays mounted behind it. */
|
|
2568
|
+
.crewlet-artifact-workspace[data-panel='expanded'] > .crewlet-artifact-workspace__body {
|
|
2569
|
+
display: none;
|
|
2570
|
+
}
|
|
2571
|
+
|
|
2572
|
+
.crewlet-artifact-panel {
|
|
2573
|
+
--crewlet-artifact-panel-width: 25rem;
|
|
2574
|
+
display: flex;
|
|
2575
|
+
flex: none;
|
|
2576
|
+
flex-direction: column;
|
|
2577
|
+
width: var(--crewlet-artifact-panel-width);
|
|
2578
|
+
min-height: 0;
|
|
2579
|
+
border-left: 1px solid var(--color-border-default);
|
|
2580
|
+
background: var(--color-surface-background);
|
|
2581
|
+
}
|
|
2582
|
+
|
|
2583
|
+
.crewlet-artifact-panel--sm {
|
|
2584
|
+
--crewlet-artifact-panel-width: 20rem;
|
|
2585
|
+
}
|
|
2586
|
+
|
|
2587
|
+
.crewlet-artifact-panel--lg {
|
|
2588
|
+
--crewlet-artifact-panel-width: 36rem;
|
|
2589
|
+
}
|
|
2590
|
+
|
|
2591
|
+
.crewlet-artifact-panel[data-expanded] {
|
|
2592
|
+
flex: 1 1 auto;
|
|
2593
|
+
width: auto;
|
|
2594
|
+
border-left: 0;
|
|
2595
|
+
}
|
|
2596
|
+
|
|
2597
|
+
.crewlet-artifact-panel__head {
|
|
2598
|
+
display: flex;
|
|
2599
|
+
flex: none;
|
|
2600
|
+
align-items: center;
|
|
2601
|
+
gap: var(--spacing-2);
|
|
2602
|
+
height: var(--size-row-lg);
|
|
2603
|
+
padding: 0 var(--spacing-2) 0 var(--spacing-4);
|
|
2604
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
2605
|
+
}
|
|
2606
|
+
|
|
2607
|
+
.crewlet-artifact-panel__icon {
|
|
2608
|
+
display: inline-flex;
|
|
2609
|
+
flex: none;
|
|
2610
|
+
color: var(--color-text-tertiary);
|
|
2611
|
+
}
|
|
2612
|
+
|
|
2613
|
+
.crewlet-artifact-panel__title {
|
|
2614
|
+
flex: 1 1 auto;
|
|
2615
|
+
min-width: 0;
|
|
2616
|
+
margin: 0;
|
|
2617
|
+
overflow: hidden;
|
|
2618
|
+
color: var(--color-text-primary);
|
|
2619
|
+
font-size: var(--font-size-sm);
|
|
2620
|
+
font-weight: var(--font-weight-semibold);
|
|
2621
|
+
line-height: var(--font-line-height-snug);
|
|
2622
|
+
text-overflow: ellipsis;
|
|
2623
|
+
white-space: nowrap;
|
|
2624
|
+
}
|
|
2625
|
+
|
|
2626
|
+
.crewlet-artifact-panel__title:focus-visible {
|
|
2627
|
+
outline: 2px solid var(--color-focus);
|
|
2628
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
2629
|
+
border-radius: var(--radius-sm);
|
|
2630
|
+
}
|
|
2631
|
+
|
|
2632
|
+
.crewlet-artifact-panel__actions {
|
|
2633
|
+
display: inline-flex;
|
|
2634
|
+
flex: none;
|
|
2635
|
+
align-items: center;
|
|
2636
|
+
gap: var(--spacing-1);
|
|
2637
|
+
}
|
|
2638
|
+
|
|
2639
|
+
.crewlet-artifact-panel__body {
|
|
2640
|
+
flex: 1 1 auto;
|
|
2641
|
+
min-height: 0;
|
|
2642
|
+
padding: var(--spacing-4);
|
|
2643
|
+
overflow: auto;
|
|
2644
|
+
overscroll-behavior: contain;
|
|
2645
|
+
}
|
|
2646
|
+
|
|
2647
|
+
/* NOT ROOM FOR TWO COLUMNS: the panel slides over the artifact's end edge,
|
|
2648
|
+
raised off it, rather than squeezing the artifact under a useful width. */
|
|
2649
|
+
@container crewlet-artifact-workspace (width < 960px) {
|
|
2650
|
+
.crewlet-artifact-panel {
|
|
2651
|
+
position: absolute;
|
|
2652
|
+
inset-block: 0;
|
|
2653
|
+
inset-inline-end: 0;
|
|
2654
|
+
z-index: var(--z-index-overlay);
|
|
2655
|
+
width: min(var(--crewlet-artifact-panel-width), 100%);
|
|
2656
|
+
box-shadow: var(--shadow-lg);
|
|
2657
|
+
}
|
|
2658
|
+
|
|
2659
|
+
.crewlet-artifact-panel[data-expanded] {
|
|
2660
|
+
inset-inline-start: 0;
|
|
2661
|
+
width: auto;
|
|
2662
|
+
box-shadow: none;
|
|
2663
|
+
}
|
|
2664
|
+
}
|
|
2665
|
+
|
|
2666
|
+
/* A PHONE: the panel is the screen until it is closed. */
|
|
2667
|
+
@container crewlet-artifact-workspace (width < 640px) {
|
|
2668
|
+
.crewlet-artifact-panel {
|
|
2669
|
+
inset-inline-start: 0;
|
|
2670
|
+
width: auto;
|
|
2671
|
+
border-left: 0;
|
|
2672
|
+
box-shadow: none;
|
|
2673
|
+
}
|
|
2674
|
+
}
|
|
2675
|
+
|
|
2676
|
+
|
|
2178
2677
|
/* AuthLayout-ODHBUPHQ.css */
|
|
2179
2678
|
/*
|
|
2180
2679
|
* The sign-in page: one narrow column near the top of the window.
|
|
@@ -16604,7 +17103,7 @@ svg.crewlet-datetime__chevron {
|
|
|
16604
17103
|
}
|
|
16605
17104
|
|
|
16606
17105
|
|
|
16607
|
-
/* PeopleRail-
|
|
17106
|
+
/* PeopleRail-SZGHZXVT.css */
|
|
16608
17107
|
/* PeopleRail: a raised column of everybody present, one row a person, the
|
|
16609
17108
|
name over what they are doing and the controls at the row's end. */
|
|
16610
17109
|
.crewlet-people-rail {
|
|
@@ -16618,6 +17117,14 @@ svg.crewlet-datetime__chevron {
|
|
|
16618
17117
|
background: var(--color-surface-elevated);
|
|
16619
17118
|
}
|
|
16620
17119
|
|
|
17120
|
+
/* PLAIN: the list alone, in a host that frames and names it. */
|
|
17121
|
+
.crewlet-people-rail--plain {
|
|
17122
|
+
padding: 0;
|
|
17123
|
+
border: 0;
|
|
17124
|
+
border-radius: 0;
|
|
17125
|
+
background: transparent;
|
|
17126
|
+
}
|
|
17127
|
+
|
|
16621
17128
|
.crewlet-people-rail__head {
|
|
16622
17129
|
display: flex;
|
|
16623
17130
|
align-items: center;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewlethq/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"clean": "rm -rf dist src/generated"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@crewlethq/icons": "0.
|
|
46
|
-
"@crewlethq/tokens": "0.
|
|
45
|
+
"@crewlethq/icons": "0.29.0",
|
|
46
|
+
"@crewlethq/tokens": "0.29.0",
|
|
47
47
|
"uqr": "0.1.3"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
package/dist/chunk-FVLCTCMV.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { PRESENCE_LABELS, presenceOrder, collapseSessions } from './chunk-Z7JYG5TF.js';
|
|
2
|
-
import { Avatar } from './chunk-5OM447RW.js';
|
|
3
|
-
import { headingTag, useHeadingLevel } from './chunk-PQADV6P6.js';
|
|
4
|
-
import { Button } from './chunk-OG6CL3EB.js';
|
|
5
|
-
import { IconButton } from './chunk-4FQT6ZAY.js';
|
|
6
|
-
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
|
-
import './PeopleRail-R64WVOSH.css';
|
|
8
|
-
import { useId } from 'react';
|
|
9
|
-
import { isCrewletCharacter } from '@crewlethq/icons/characters';
|
|
10
|
-
import { XGlyph } from '@crewlethq/icons/glyphs';
|
|
11
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
12
|
-
|
|
13
|
-
var PEOPLE_RAIL_LABELS = {
|
|
14
|
-
title: "People here",
|
|
15
|
-
close: "Close people",
|
|
16
|
-
you: "You",
|
|
17
|
-
nobody: "Nobody else is here right now.",
|
|
18
|
-
follow: "Follow",
|
|
19
|
-
following: "Following",
|
|
20
|
-
followName: (name) => `Follow ${name}`,
|
|
21
|
-
stopFollowingName: (name) => `Stop following ${name}`,
|
|
22
|
-
activity: PRESENCE_LABELS.activity
|
|
23
|
-
};
|
|
24
|
-
function peopleRailKey(member) {
|
|
25
|
-
return member.seat ?? member.id;
|
|
26
|
-
}
|
|
27
|
-
function PeopleRail({
|
|
28
|
-
members,
|
|
29
|
-
self,
|
|
30
|
-
following,
|
|
31
|
-
onFollow,
|
|
32
|
-
onClose,
|
|
33
|
-
actions,
|
|
34
|
-
labels: overrides,
|
|
35
|
-
className
|
|
36
|
-
}) {
|
|
37
|
-
const labels = overrides ? { ...PEOPLE_RAIL_LABELS, ...overrides } : PEOPLE_RAIL_LABELS;
|
|
38
|
-
const headingID = useId();
|
|
39
|
-
const Heading = headingTag(useHeadingLevel());
|
|
40
|
-
const others = presenceOrder(collapseSessions(members));
|
|
41
|
-
return /* @__PURE__ */ jsxs("aside", { className: cx("crewlet-people-rail", className), "aria-labelledby": headingID, children: [
|
|
42
|
-
/* @__PURE__ */ jsxs("div", { className: "crewlet-people-rail__head", children: [
|
|
43
|
-
/* @__PURE__ */ jsx(Heading, { className: "crewlet-people-rail__title", id: headingID, children: labels.title }),
|
|
44
|
-
onClose && /* @__PURE__ */ jsx(IconButton, { size: "sm", variant: "ghost", label: labels.close, icon: /* @__PURE__ */ jsx(XGlyph, { size: "sm" }), onClick: onClose })
|
|
45
|
-
] }),
|
|
46
|
-
/* @__PURE__ */ jsxs("ul", { role: "list", className: "crewlet-people-rail__list", children: [
|
|
47
|
-
self && /* @__PURE__ */ jsxs("li", { className: "crewlet-people-rail__person", children: [
|
|
48
|
-
/* @__PURE__ */ jsx(PresenceBadge, { member: self }),
|
|
49
|
-
/* @__PURE__ */ jsx("span", { className: "crewlet-people-rail__text", children: /* @__PURE__ */ jsx("span", { className: "crewlet-people-rail__name", children: labels.you }) })
|
|
50
|
-
] }),
|
|
51
|
-
others.map((member) => {
|
|
52
|
-
const key = peopleRailKey(member);
|
|
53
|
-
const followed = following !== void 0 && following === key;
|
|
54
|
-
const extra = actions?.(member);
|
|
55
|
-
return /* @__PURE__ */ jsxs("li", { className: "crewlet-people-rail__person", children: [
|
|
56
|
-
/* @__PURE__ */ jsx(PresenceBadge, { member }),
|
|
57
|
-
/* @__PURE__ */ jsxs("span", { className: "crewlet-people-rail__text", children: [
|
|
58
|
-
/* @__PURE__ */ jsx("span", { className: "crewlet-people-rail__name", children: member.name }),
|
|
59
|
-
/* @__PURE__ */ jsx("span", { className: "crewlet-people-rail__where", children: member.location ?? labels.activity(member.activity, member.kind) })
|
|
60
|
-
] }),
|
|
61
|
-
extra !== void 0 && extra !== null || onFollow ? /* @__PURE__ */ jsxs("span", { className: "crewlet-people-rail__actions", children: [
|
|
62
|
-
extra,
|
|
63
|
-
onFollow && /* @__PURE__ */ jsx(
|
|
64
|
-
Button,
|
|
65
|
-
{
|
|
66
|
-
size: "small",
|
|
67
|
-
variant: followed ? "primary" : "secondary",
|
|
68
|
-
pressed: followed,
|
|
69
|
-
"aria-label": followed ? labels.stopFollowingName(member.name) : labels.followName(member.name),
|
|
70
|
-
onClick: () => onFollow(followed ? null : member),
|
|
71
|
-
children: followed ? labels.following : labels.follow
|
|
72
|
-
}
|
|
73
|
-
)
|
|
74
|
-
] }) : null
|
|
75
|
-
] }, key);
|
|
76
|
-
})
|
|
77
|
-
] }),
|
|
78
|
-
others.length === 0 && /* @__PURE__ */ jsx("p", { className: "crewlet-people-rail__note", children: labels.nobody })
|
|
79
|
-
] });
|
|
80
|
-
}
|
|
81
|
-
function PresenceBadge({ member }) {
|
|
82
|
-
return /* @__PURE__ */ jsx(
|
|
83
|
-
Avatar,
|
|
84
|
-
{
|
|
85
|
-
name: member.name,
|
|
86
|
-
kind: member.kind,
|
|
87
|
-
src: member.src,
|
|
88
|
-
character: member.character !== void 0 && isCrewletCharacter(member.character) ? member.character : void 0,
|
|
89
|
-
hue: member.kind === "agent" ? member.hue : void 0,
|
|
90
|
-
size: "sm",
|
|
91
|
-
decorative: true
|
|
92
|
-
}
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CardHeaderSlotContext } from './chunk-AV2DXAEL.js';
|
|
2
|
-
import { useHeadingLevel, HeadingLevelProvider, nextHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
|
|
3
2
|
import { Count } from './chunk-BHHIIK3M.js';
|
|
3
|
+
import { useHeadingLevel, HeadingLevelProvider, nextHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
5
|
import './Card-KJOYHDTJ.css';
|
|
6
6
|
import { createContext, useId, useState, isValidElement, useRef, useCallback, useMemo, Children, cloneElement, useContext, useEffect, Fragment } from 'react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { headingTag } from './chunk-PQADV6P6.js';
|
|
2
1
|
import { Count } from './chunk-BHHIIK3M.js';
|
|
2
|
+
import { headingTag } from './chunk-PQADV6P6.js';
|
|
3
3
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
4
4
|
import { ChevronDownGlyph } from '@crewlethq/icons/glyphs';
|
|
5
5
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
File without changes
|