@flytedan/flytebot-design-system 0.12.15 → 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flytedan/flytebot-design-system",
3
- "version": "0.12.15",
3
+ "version": "0.13.0",
4
4
  "description": "flytedesk Design System — shared component library, tokens, and business-logic kits for flytedesk apps.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -6814,3 +6814,237 @@ button.fd-erow-metric:focus-visible {
6814
6814
  display: none;
6815
6815
  }
6816
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
+ }