@flytedan/flytebot-design-system 0.22.0 → 0.24.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 +2 -0
- package/dist/index.cjs +1848 -1735
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +65 -1
- package/dist/index.d.ts +65 -1
- package/dist/index.js +1846 -1735
- package/dist/index.js.map +1 -1
- package/package.json +8 -1
- package/styles/components.css +66 -0
- package/styles/fonts/phosphor/Phosphor.svg +3056 -0
- package/styles/fonts/phosphor/Phosphor.ttf +0 -0
- package/styles/fonts/phosphor/Phosphor.woff +0 -0
- package/styles/fonts/phosphor/Phosphor.woff2 +0 -0
- package/styles/foundations.css +4 -0
- package/styles/icons.css +4632 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flytedan/flytebot-design-system",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.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",
|
|
@@ -44,6 +44,8 @@
|
|
|
44
44
|
"typecheck": "tsc --noEmit",
|
|
45
45
|
"lint": "eslint .",
|
|
46
46
|
"test": "vitest run",
|
|
47
|
+
"test:browser": "vitest run --project browser",
|
|
48
|
+
"sync-icons": "node scripts/sync-icons.mjs",
|
|
47
49
|
"docs": "vite --config vite.docs.config.ts",
|
|
48
50
|
"docs:build": "vite build --config vite.docs.config.ts"
|
|
49
51
|
},
|
|
@@ -51,15 +53,20 @@
|
|
|
51
53
|
"react": "^18.3.1",
|
|
52
54
|
"react-dom": "^18.3.1"
|
|
53
55
|
},
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"@phosphor-icons/web": "2.1.1"
|
|
58
|
+
},
|
|
54
59
|
"devDependencies": {
|
|
55
60
|
"@types/react": "^18.3.12",
|
|
56
61
|
"@types/react-dom": "^18.3.1",
|
|
57
62
|
"@typescript-eslint/eslint-plugin": "^8.14.0",
|
|
58
63
|
"@typescript-eslint/parser": "^8.14.0",
|
|
59
64
|
"@vitejs/plugin-react": "^4.3.4",
|
|
65
|
+
"@vitest/browser": "^2.1.9",
|
|
60
66
|
"eslint": "^9.14.0",
|
|
61
67
|
"eslint-plugin-react-hooks": "^5.0.0",
|
|
62
68
|
"jsdom": "^30.0.1",
|
|
69
|
+
"playwright": "^1.63.0",
|
|
63
70
|
"react": "^18.3.1",
|
|
64
71
|
"react-dom": "^18.3.1",
|
|
65
72
|
"tsup": "^8.3.5",
|
package/styles/components.css
CHANGED
|
@@ -6929,6 +6929,72 @@ button.fd-erow-metric:focus-visible {
|
|
|
6929
6929
|
.fd-arrived{animation:none}
|
|
6930
6930
|
}
|
|
6931
6931
|
|
|
6932
|
+
/* ============ JobTray / PhasedProgress (MP-211) ============
|
|
6933
|
+
A stack of background-job cards (exports, syncs) and an ordered-phase display for the
|
|
6934
|
+
same kind of job. Both are entirely props-driven — no timers here, only layout. */
|
|
6935
|
+
.fd-job-tray{
|
|
6936
|
+
position:fixed;
|
|
6937
|
+
right:var(--s-16,16px);
|
|
6938
|
+
bottom:var(--s-16,16px);
|
|
6939
|
+
z-index:40;
|
|
6940
|
+
display:flex;
|
|
6941
|
+
flex-direction:column-reverse;
|
|
6942
|
+
gap:10px;
|
|
6943
|
+
width:340px;
|
|
6944
|
+
max-width:calc(100vw - 32px);
|
|
6945
|
+
pointer-events:none;
|
|
6946
|
+
}
|
|
6947
|
+
.fd-job-tray>.fd-job-card{pointer-events:auto}
|
|
6948
|
+
.fd-job-card{
|
|
6949
|
+
display:flex;
|
|
6950
|
+
flex-direction:column;
|
|
6951
|
+
gap:8px;
|
|
6952
|
+
background:var(--surface);
|
|
6953
|
+
border:1px solid var(--border);
|
|
6954
|
+
border-radius:var(--r-md);
|
|
6955
|
+
box-shadow:var(--e-3);
|
|
6956
|
+
padding:14px 16px;
|
|
6957
|
+
animation:fd-rise var(--dur-slow) var(--ease-out) both;
|
|
6958
|
+
}
|
|
6959
|
+
.fd-job-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
|
|
6960
|
+
.fd-job-card-title{font-weight:var(--w-semibold);color:var(--text);font-size:var(--body-size)}
|
|
6961
|
+
.fd-job-card-note{display:block}
|
|
6962
|
+
.fd-job-card-progress{display:flex;flex-direction:column;gap:4px}
|
|
6963
|
+
.fd-job-card-done{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
|
|
6964
|
+
.fd-job-card-done-note{display:block}
|
|
6965
|
+
.fd-job-card-failed{display:flex;align-items:flex-start;gap:8px;color:var(--danger-text);font-size:var(--body-sm-size)}
|
|
6966
|
+
.fd-job-card-failed .ph{flex:none;font-size:16px;margin-top:1px}
|
|
6967
|
+
@media (max-width:640px){
|
|
6968
|
+
.fd-job-tray{
|
|
6969
|
+
left:16px;
|
|
6970
|
+
right:16px;
|
|
6971
|
+
bottom:0;
|
|
6972
|
+
width:auto;
|
|
6973
|
+
max-width:none;
|
|
6974
|
+
padding-bottom:12px;
|
|
6975
|
+
}
|
|
6976
|
+
}
|
|
6977
|
+
|
|
6978
|
+
.fd-phased-progress{display:flex;flex-direction:column;gap:12px}
|
|
6979
|
+
.fd-phase-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
|
|
6980
|
+
.fd-phase{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:var(--body-size)}
|
|
6981
|
+
.fd-phase .ph{flex:none;font-size:18px}
|
|
6982
|
+
.fd-phase-label{flex:1;min-width:0}
|
|
6983
|
+
.fd-phase-count{white-space:nowrap}
|
|
6984
|
+
.fd-phase-pending{color:var(--text-muted)}
|
|
6985
|
+
.fd-phase-active{color:var(--text)}
|
|
6986
|
+
.fd-phase-active .ph{color:var(--brand)}
|
|
6987
|
+
.fd-phase-done{color:var(--text)}
|
|
6988
|
+
.fd-phase-done .ph{color:var(--ok-solid)}
|
|
6989
|
+
.fd-phase-failed{color:var(--danger-text)}
|
|
6990
|
+
.fd-phase-failed .ph{color:var(--danger-solid)}
|
|
6991
|
+
.fd-phase-spin{animation:fd-spin 900ms linear infinite}
|
|
6992
|
+
.fd-phase-summary{font-size:var(--body-sm-size);color:var(--text-2)}
|
|
6993
|
+
@media (prefers-reduced-motion:reduce){
|
|
6994
|
+
.fd-phase-spin{animation:fd-pulse 1.6s ease-in-out infinite}
|
|
6995
|
+
.fd-job-card{animation:none}
|
|
6996
|
+
}
|
|
6997
|
+
|
|
6932
6998
|
/* FileViewer (MP-130): a preview pane plus an optional host-supplied side panel — the
|
|
6933
6999
|
companion notes/metadata surface the app composes in, generic here as `sidePanel`.
|
|
6934
7000
|
Two regions, one scroll region each (R-8): `.fd-fv-body` never scrolls, each pane owns
|