@flytedan/flytebot-design-system 0.12.14 → 0.13.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/dist/index.cjs +497 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +69 -1
- package/dist/index.d.ts +69 -1
- package/dist/index.js +496 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/styles/components.css +254 -14
package/package.json
CHANGED
package/styles/components.css
CHANGED
|
@@ -2252,7 +2252,16 @@
|
|
|
2252
2252
|
padding: 0 var(--gutter-lg);
|
|
2253
2253
|
position: relative;
|
|
2254
2254
|
}
|
|
2255
|
+
/* MP-141: the breadcrumb is the Topbar's only elastic item. Every other direct child
|
|
2256
|
+
(overflowActions, actions — the version badge, the account trigger, any icon button)
|
|
2257
|
+
keeps its content width at any viewport: it never shrinks below what its own content
|
|
2258
|
+
needs. The crumb absorbs whatever space that leaves, growing to fill the row (so no
|
|
2259
|
+
separate spacer element is needed) and shrinking first when the row is tight. */
|
|
2260
|
+
.fd-topbar > *:not(.fd-crumb) {
|
|
2261
|
+
flex-shrink: 0;
|
|
2262
|
+
}
|
|
2255
2263
|
.fd-crumb {
|
|
2264
|
+
flex: 1 1 auto;
|
|
2256
2265
|
display: flex;
|
|
2257
2266
|
align-items: center;
|
|
2258
2267
|
gap: 9px;
|
|
@@ -2266,7 +2275,15 @@
|
|
|
2266
2275
|
.fd-crumb a:hover {
|
|
2267
2276
|
color: var(--text);
|
|
2268
2277
|
}
|
|
2278
|
+
/* The current crumb already exposes its full text via `truncationTitle` (Topbar.tsx),
|
|
2279
|
+
so it may ellipsize at any width, not only `.is-narrow` — the same rule that used to
|
|
2280
|
+
apply only in the collapsed layout now applies everywhere the row runs out of room. */
|
|
2269
2281
|
.fd-crumb-current {
|
|
2282
|
+
display: block;
|
|
2283
|
+
min-width: 0;
|
|
2284
|
+
overflow: hidden;
|
|
2285
|
+
text-overflow: ellipsis;
|
|
2286
|
+
white-space: nowrap;
|
|
2270
2287
|
color: var(--text);
|
|
2271
2288
|
font-weight: var(--w-semibold);
|
|
2272
2289
|
}
|
|
@@ -2314,23 +2331,12 @@
|
|
|
2314
2331
|
}
|
|
2315
2332
|
/* Narrow Topbar (`is-narrow`, set by Topbar from its own `overflowBreakpoint`, so the
|
|
2316
2333
|
crumb rules and the overflow menu always switch together): earlier crumbs hide (the
|
|
2317
|
-
nav drawer `onMenu` opens still reaches them)
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
the collapsed controls free. */
|
|
2321
|
-
.fd-topbar.is-narrow .fd-crumb {
|
|
2322
|
-
flex: 1 1 auto;
|
|
2323
|
-
}
|
|
2334
|
+
nav drawer `onMenu` opens still reaches them). The crumb's grow/shrink and the current
|
|
2335
|
+
crumb's ellipsis are the base `.fd-crumb`/`.fd-crumb-current` rules above — they apply
|
|
2336
|
+
at every width, not only here. */
|
|
2324
2337
|
.fd-topbar.is-narrow .fd-crumb > *:not(:last-child) {
|
|
2325
2338
|
display: none;
|
|
2326
2339
|
}
|
|
2327
|
-
.fd-topbar.is-narrow .fd-crumb-current {
|
|
2328
|
-
display: block;
|
|
2329
|
-
min-width: 0;
|
|
2330
|
-
overflow: hidden;
|
|
2331
|
-
text-overflow: ellipsis;
|
|
2332
|
-
white-space: nowrap;
|
|
2333
|
-
}
|
|
2334
2340
|
|
|
2335
2341
|
/* ============ Overlays ============ */
|
|
2336
2342
|
/* z-index is set inline by Modal.tsx/Drawer.tsx via useOverlayLayer (see Popover.tsx). */
|
|
@@ -6808,3 +6814,237 @@ button.fd-erow-metric:focus-visible {
|
|
|
6808
6814
|
display: none;
|
|
6809
6815
|
}
|
|
6810
6816
|
}
|
|
6817
|
+
|
|
6818
|
+
/* FileBrowser (MP-135): a folder tree pane plus the current folder's contents — folders
|
|
6819
|
+
and files together, create/rename/move by drag or by an equally real keyboard menu.
|
|
6820
|
+
Two regions, one scroll region each (R-8): the head/breadcrumb bar never scrolls, the
|
|
6821
|
+
tree and the main pane each own their own overflow. Side by side while there's room —
|
|
6822
|
+
below a narrow width of the component's OWN box (a container query, same reasoning as
|
|
6823
|
+
`.fd-fv` above) the tree pane disappears entirely: there is nothing to switch to, since
|
|
6824
|
+
the current folder's own subfolders already show up as rows in the main pane. */
|
|
6825
|
+
.fd-fb {
|
|
6826
|
+
container-type: inline-size;
|
|
6827
|
+
display: flex;
|
|
6828
|
+
flex-direction: column;
|
|
6829
|
+
height: 100%;
|
|
6830
|
+
min-height: 0;
|
|
6831
|
+
background: var(--surface);
|
|
6832
|
+
color: var(--text);
|
|
6833
|
+
}
|
|
6834
|
+
.fd-fb-dropzone {
|
|
6835
|
+
display: flex;
|
|
6836
|
+
flex-direction: column;
|
|
6837
|
+
height: 100%;
|
|
6838
|
+
min-height: 0;
|
|
6839
|
+
}
|
|
6840
|
+
.fd-fb-head {
|
|
6841
|
+
display: flex;
|
|
6842
|
+
align-items: center;
|
|
6843
|
+
justify-content: space-between;
|
|
6844
|
+
flex-wrap: wrap;
|
|
6845
|
+
gap: 10px;
|
|
6846
|
+
padding: 12px 16px;
|
|
6847
|
+
border-bottom: 1px solid var(--border);
|
|
6848
|
+
flex: none;
|
|
6849
|
+
}
|
|
6850
|
+
.fd-fb-crumbs {
|
|
6851
|
+
display: flex;
|
|
6852
|
+
align-items: center;
|
|
6853
|
+
flex-wrap: wrap;
|
|
6854
|
+
gap: 2px;
|
|
6855
|
+
min-width: 0;
|
|
6856
|
+
}
|
|
6857
|
+
.fd-fb-crumb {
|
|
6858
|
+
display: flex;
|
|
6859
|
+
align-items: center;
|
|
6860
|
+
border-radius: var(--r-sm);
|
|
6861
|
+
}
|
|
6862
|
+
.fd-fb-crumb.is-drop-target {
|
|
6863
|
+
background: var(--surface-brand);
|
|
6864
|
+
}
|
|
6865
|
+
.fd-fb-crumb:not(:last-child)::after {
|
|
6866
|
+
content: "/";
|
|
6867
|
+
margin: 0 4px;
|
|
6868
|
+
color: var(--text-muted);
|
|
6869
|
+
}
|
|
6870
|
+
.fd-fb-crumb-link {
|
|
6871
|
+
padding: 2px 4px;
|
|
6872
|
+
border-radius: var(--r-sm);
|
|
6873
|
+
background: none;
|
|
6874
|
+
border: 0;
|
|
6875
|
+
color: var(--text-2);
|
|
6876
|
+
cursor: pointer;
|
|
6877
|
+
font: inherit;
|
|
6878
|
+
}
|
|
6879
|
+
.fd-fb-crumb-link:hover {
|
|
6880
|
+
background: var(--surface-2);
|
|
6881
|
+
color: var(--text);
|
|
6882
|
+
}
|
|
6883
|
+
.fd-fb-crumb-current {
|
|
6884
|
+
padding: 2px 4px;
|
|
6885
|
+
font-weight: 600;
|
|
6886
|
+
color: var(--text);
|
|
6887
|
+
}
|
|
6888
|
+
.fd-fb-actions {
|
|
6889
|
+
display: flex;
|
|
6890
|
+
align-items: center;
|
|
6891
|
+
gap: 8px;
|
|
6892
|
+
flex: none;
|
|
6893
|
+
}
|
|
6894
|
+
.fd-fb-body {
|
|
6895
|
+
display: flex;
|
|
6896
|
+
flex: 1 1 auto;
|
|
6897
|
+
min-height: 0;
|
|
6898
|
+
overflow: hidden;
|
|
6899
|
+
}
|
|
6900
|
+
.fd-fb-tree {
|
|
6901
|
+
flex: 0 0 220px;
|
|
6902
|
+
min-width: 0;
|
|
6903
|
+
min-height: 0;
|
|
6904
|
+
overflow: auto;
|
|
6905
|
+
padding: 10px;
|
|
6906
|
+
border-right: 1px solid var(--border);
|
|
6907
|
+
background: var(--surface-2);
|
|
6908
|
+
}
|
|
6909
|
+
.fd-fb-main {
|
|
6910
|
+
flex: 1 1 auto;
|
|
6911
|
+
min-width: 0;
|
|
6912
|
+
min-height: 0;
|
|
6913
|
+
overflow: auto;
|
|
6914
|
+
padding: 10px;
|
|
6915
|
+
position: relative;
|
|
6916
|
+
}
|
|
6917
|
+
.fd-fb-list {
|
|
6918
|
+
display: flex;
|
|
6919
|
+
flex-direction: column;
|
|
6920
|
+
gap: 2px;
|
|
6921
|
+
}
|
|
6922
|
+
.fd-fb-row {
|
|
6923
|
+
display: flex;
|
|
6924
|
+
align-items: center;
|
|
6925
|
+
gap: 4px;
|
|
6926
|
+
border-radius: var(--r-md);
|
|
6927
|
+
}
|
|
6928
|
+
.fd-fb-row.is-drop-target {
|
|
6929
|
+
background: var(--surface-brand);
|
|
6930
|
+
outline: 2px dashed var(--brand);
|
|
6931
|
+
outline-offset: -2px;
|
|
6932
|
+
}
|
|
6933
|
+
.fd-fb-row-main {
|
|
6934
|
+
flex: 1 1 auto;
|
|
6935
|
+
min-width: 0;
|
|
6936
|
+
display: flex;
|
|
6937
|
+
align-items: center;
|
|
6938
|
+
gap: 8px;
|
|
6939
|
+
padding: 6px 8px;
|
|
6940
|
+
background: none;
|
|
6941
|
+
border: 0;
|
|
6942
|
+
text-align: left;
|
|
6943
|
+
cursor: pointer;
|
|
6944
|
+
border-radius: var(--r-md);
|
|
6945
|
+
color: var(--text);
|
|
6946
|
+
font: inherit;
|
|
6947
|
+
}
|
|
6948
|
+
.fd-fb-row-main:hover {
|
|
6949
|
+
background: var(--surface-2);
|
|
6950
|
+
}
|
|
6951
|
+
.fd-fb-tree-row.is-current .fd-fb-row-main,
|
|
6952
|
+
.fd-fb-row.is-current .fd-fb-row-main {
|
|
6953
|
+
background: var(--surface-brand);
|
|
6954
|
+
color: var(--text-on-surface-brand);
|
|
6955
|
+
font-weight: 600;
|
|
6956
|
+
}
|
|
6957
|
+
.fd-fb-row-icon {
|
|
6958
|
+
display: grid;
|
|
6959
|
+
place-items: center;
|
|
6960
|
+
width: 22px;
|
|
6961
|
+
height: 22px;
|
|
6962
|
+
flex: none;
|
|
6963
|
+
color: var(--text-2);
|
|
6964
|
+
font-size: 16px;
|
|
6965
|
+
}
|
|
6966
|
+
.fd-fb-row-text {
|
|
6967
|
+
display: flex;
|
|
6968
|
+
flex-direction: column;
|
|
6969
|
+
min-width: 0;
|
|
6970
|
+
}
|
|
6971
|
+
.fd-fb-row-name {
|
|
6972
|
+
overflow: hidden;
|
|
6973
|
+
text-overflow: ellipsis;
|
|
6974
|
+
white-space: nowrap;
|
|
6975
|
+
font-size: var(--body-sm-size);
|
|
6976
|
+
}
|
|
6977
|
+
.fd-fb-row-meta {
|
|
6978
|
+
font-size: 11.5px;
|
|
6979
|
+
color: var(--text-muted);
|
|
6980
|
+
}
|
|
6981
|
+
.fd-fb-row-actions {
|
|
6982
|
+
display: flex;
|
|
6983
|
+
align-items: center;
|
|
6984
|
+
gap: 2px;
|
|
6985
|
+
flex: none;
|
|
6986
|
+
padding-right: 4px;
|
|
6987
|
+
}
|
|
6988
|
+
.fd-fb-tree-children {
|
|
6989
|
+
padding-left: 14px;
|
|
6990
|
+
}
|
|
6991
|
+
.fd-fb-menu-anchor {
|
|
6992
|
+
position: relative;
|
|
6993
|
+
display: inline-flex;
|
|
6994
|
+
}
|
|
6995
|
+
.fd-fb-menu {
|
|
6996
|
+
position: absolute;
|
|
6997
|
+
top: calc(100% + 4px);
|
|
6998
|
+
right: 0;
|
|
6999
|
+
z-index: 10;
|
|
7000
|
+
width: 220px;
|
|
7001
|
+
max-height: 280px;
|
|
7002
|
+
overflow: auto;
|
|
7003
|
+
background: var(--surface);
|
|
7004
|
+
border: 1px solid var(--border);
|
|
7005
|
+
border-radius: var(--r-lg);
|
|
7006
|
+
box-shadow: 0 16px 44px rgba(11, 13, 17, .18);
|
|
7007
|
+
padding: 6px;
|
|
7008
|
+
display: flex;
|
|
7009
|
+
flex-direction: column;
|
|
7010
|
+
gap: 1px;
|
|
7011
|
+
}
|
|
7012
|
+
.fd-fb-menu-title {
|
|
7013
|
+
padding: 4px 8px 6px;
|
|
7014
|
+
display: block;
|
|
7015
|
+
}
|
|
7016
|
+
.fd-fb-menu-item {
|
|
7017
|
+
display: flex;
|
|
7018
|
+
align-items: center;
|
|
7019
|
+
gap: 8px;
|
|
7020
|
+
padding: 6px 10px;
|
|
7021
|
+
border-radius: var(--r-sm);
|
|
7022
|
+
background: none;
|
|
7023
|
+
border: 0;
|
|
7024
|
+
cursor: pointer;
|
|
7025
|
+
text-align: left;
|
|
7026
|
+
font-size: var(--body-sm-size);
|
|
7027
|
+
color: var(--text);
|
|
7028
|
+
}
|
|
7029
|
+
.fd-fb-menu-item:hover {
|
|
7030
|
+
background: var(--surface-2);
|
|
7031
|
+
}
|
|
7032
|
+
.fd-fb-input {
|
|
7033
|
+
width: 100%;
|
|
7034
|
+
padding: 8px 10px;
|
|
7035
|
+
border: 1px solid var(--border);
|
|
7036
|
+
border-radius: var(--r-md);
|
|
7037
|
+
font: inherit;
|
|
7038
|
+
background: var(--surface);
|
|
7039
|
+
color: var(--text);
|
|
7040
|
+
}
|
|
7041
|
+
/* Below 560px of `.fd-fb`'s OWN width, the tree pane has no room to justify itself: the
|
|
7042
|
+
current folder's subfolders already appear as rows in `.fd-fb-main` (see the component
|
|
7043
|
+
doc comment), so hiding the tree loses zero navigation, only the redundant second copy
|
|
7044
|
+
of the hierarchy. Breadcrumbs plus that folder list is the whole nav surface below this
|
|
7045
|
+
width, exactly as the card spec calls for. */
|
|
7046
|
+
@container (max-width: 560px) {
|
|
7047
|
+
.fd-fb-tree {
|
|
7048
|
+
display: none;
|
|
7049
|
+
}
|
|
7050
|
+
}
|