@flytedan/flytebot-design-system 0.1.1 → 0.1.3
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 +32 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +32 -31
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/styles/components.css +42 -0
- package/styles/fonts/figtree-latin-ext.woff2 +0 -0
- package/styles/fonts/figtree-latin.woff2 +0 -0
- package/styles/foundations.css +44 -228
- package/styles/tokens.css +296 -264
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flytedan/flytebot-design-system",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
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",
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
"typecheck": "tsc --noEmit",
|
|
42
42
|
"lint": "eslint .",
|
|
43
43
|
"test": "vitest run",
|
|
44
|
-
"docs": "vite --config vite.docs.config.ts"
|
|
44
|
+
"docs": "vite --config vite.docs.config.ts",
|
|
45
|
+
"docs:build": "vite build --config vite.docs.config.ts"
|
|
45
46
|
},
|
|
46
47
|
"peerDependencies": {
|
|
47
48
|
"react": "^18.3.1",
|
package/styles/components.css
CHANGED
|
@@ -5555,3 +5555,45 @@
|
|
|
5555
5555
|
flex: 1;
|
|
5556
5556
|
min-width: 180px;
|
|
5557
5557
|
}
|
|
5558
|
+
|
|
5559
|
+
/* ============ foundations/skeleton.css (vendored verbatim) ============
|
|
5560
|
+
Loading is a first-class state in this system.
|
|
5561
|
+
Three tiers, and only three:
|
|
5562
|
+
1. fd-skel-* — the shell before first data (structure is already correct)
|
|
5563
|
+
2. fd-stale — data on screen while a refresh is in flight (visible, dimmed, inert)
|
|
5564
|
+
3. fd-progress — a determinate or indeterminate bar for a known long job
|
|
5565
|
+
Never blank a region that already has data. Never spin over a whole page. */
|
|
5566
|
+
@keyframes fd-sheen{0%{background-position:-160% 0}100%{background-position:260% 0}}
|
|
5567
|
+
@keyframes fd-pulse{0%,100%{opacity:1}50%{opacity:.55}}
|
|
5568
|
+
@keyframes fd-spin{to{transform:rotate(360deg)}}
|
|
5569
|
+
@keyframes fd-bar{0%{transform:translateX(-100%) scaleX(.4)}50%{transform:translateX(20%) scaleX(.7)}100%{transform:translateX(140%) scaleX(.4)}}
|
|
5570
|
+
@keyframes fd-rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
|
|
5571
|
+
@keyframes fd-pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
|
|
5572
|
+
|
|
5573
|
+
.fd-skel{position:relative;overflow:hidden;background:var(--skeleton-base);border-radius:var(--r-sm);background-image:linear-gradient(100deg,transparent 20%,var(--skeleton-sheen) 50%,transparent 80%);background-size:220% 100%;background-repeat:no-repeat;animation:fd-sheen var(--skeleton-dur) linear infinite;color:transparent!important;user-select:none;pointer-events:none}
|
|
5574
|
+
.fd-skel-text{height:1em;border-radius:var(--r-xs);margin:.27em 0}
|
|
5575
|
+
.fd-skel-circle{border-radius:var(--r-full)}
|
|
5576
|
+
.fd-skel-block{border-radius:var(--r-md)}
|
|
5577
|
+
.fd-skel-card{border-radius:var(--r-lg)}
|
|
5578
|
+
|
|
5579
|
+
/* data present, refresh in flight — stays readable, refuses input */
|
|
5580
|
+
.fd-stale{opacity:.52;filter:saturate(.7);pointer-events:none;transition:opacity var(--dur-base) var(--ease),filter var(--dur-base) var(--ease)}
|
|
5581
|
+
.fd-stale-region{position:relative}
|
|
5582
|
+
.fd-stale-region::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(100deg,transparent 30%,var(--skeleton-sheen) 50%,transparent 70%);background-size:220% 100%;background-repeat:no-repeat;animation:fd-sheen var(--skeleton-dur) linear infinite;pointer-events:none}
|
|
5583
|
+
.fd-arrived{animation:fd-rise var(--dur-slow) var(--ease-out) both}
|
|
5584
|
+
|
|
5585
|
+
.fd-spinner{display:inline-block;width:16px;height:16px;border-radius:var(--r-full);border:2px solid currentColor;border-right-color:transparent;opacity:.85;animation:fd-spin 620ms linear infinite}
|
|
5586
|
+
.fd-spinner-lg{width:26px;height:26px;border-width:2.5px}
|
|
5587
|
+
|
|
5588
|
+
.fd-progress{position:relative;height:6px;border-radius:var(--r-full);background:var(--surface-3);overflow:hidden}
|
|
5589
|
+
.fd-progress-fill{height:100%;border-radius:inherit;background:var(--grad-primary);transition:width var(--dur-slow) var(--ease)}
|
|
5590
|
+
.fd-progress-indeterminate .fd-progress-fill{width:40%;animation:fd-bar 1200ms var(--ease) infinite}
|
|
5591
|
+
|
|
5592
|
+
/* top-of-app route loader */
|
|
5593
|
+
.fd-topload{position:absolute;inset:0 0 auto;height:2px;background:transparent;overflow:hidden}
|
|
5594
|
+
.fd-topload::after{content:"";position:absolute;inset:0;background:var(--grad-brand-soft);animation:fd-bar 1100ms var(--ease) infinite}
|
|
5595
|
+
@media (prefers-reduced-motion:reduce){
|
|
5596
|
+
.fd-skel,.fd-stale-region::after,.fd-topload::after,.fd-progress-indeterminate .fd-progress-fill{animation:fd-pulse 1.6s ease-in-out infinite}
|
|
5597
|
+
.fd-spinner{animation-duration:1.6s}
|
|
5598
|
+
.fd-arrived{animation:none}
|
|
5599
|
+
}
|
|
Binary file
|
|
Binary file
|
package/styles/foundations.css
CHANGED
|
@@ -1,230 +1,46 @@
|
|
|
1
|
-
/* Vendored from the flytedesk Design System
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
line-height: var(--body-lh);
|
|
17
|
-
-webkit-font-smoothing: antialiased;
|
|
18
|
-
text-rendering: optimizeLegibility;
|
|
19
|
-
}
|
|
20
|
-
h1,
|
|
21
|
-
h2,
|
|
22
|
-
h3,
|
|
23
|
-
h4,
|
|
24
|
-
h5,
|
|
25
|
-
h6,
|
|
26
|
-
p,
|
|
27
|
-
figure,
|
|
28
|
-
blockquote {
|
|
29
|
-
margin: 0;
|
|
30
|
-
}
|
|
31
|
-
img,
|
|
32
|
-
svg,
|
|
33
|
-
video {
|
|
34
|
-
display: block;
|
|
35
|
-
max-width: 100%;
|
|
36
|
-
}
|
|
37
|
-
button,
|
|
38
|
-
input,
|
|
39
|
-
select,
|
|
40
|
-
textarea {
|
|
41
|
-
font: inherit;
|
|
42
|
-
color: inherit;
|
|
43
|
-
}
|
|
44
|
-
a {
|
|
45
|
-
color: var(--link);
|
|
46
|
-
text-decoration: none;
|
|
47
|
-
transition: color var(--dur-fast) var(--ease);
|
|
48
|
-
}
|
|
49
|
-
a:hover {
|
|
50
|
-
color: var(--link-hover);
|
|
51
|
-
text-decoration: underline;
|
|
52
|
-
text-underline-offset: 2px;
|
|
53
|
-
}
|
|
54
|
-
a:focus-visible,
|
|
55
|
-
button:focus-visible,
|
|
56
|
-
input:focus-visible,
|
|
57
|
-
select:focus-visible,
|
|
58
|
-
textarea:focus-visible,
|
|
59
|
-
[tabindex]:focus-visible {
|
|
60
|
-
outline: none;
|
|
61
|
-
box-shadow: var(--focus-ring);
|
|
62
|
-
}
|
|
63
|
-
::selection {
|
|
64
|
-
background: var(--selection-bg);
|
|
65
|
-
color: var(--selection-text);
|
|
66
|
-
}
|
|
67
|
-
hr {
|
|
68
|
-
border: 0;
|
|
69
|
-
border-top: 1px solid var(--border);
|
|
70
|
-
margin: 0;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.fd-h1 {
|
|
74
|
-
font-size: var(--h1-size);
|
|
75
|
-
line-height: var(--h1-lh);
|
|
76
|
-
letter-spacing: var(--h1-track);
|
|
77
|
-
font-weight: var(--w-semibold);
|
|
78
|
-
}
|
|
79
|
-
.fd-h2 {
|
|
80
|
-
font-size: var(--h2-size);
|
|
81
|
-
line-height: var(--h2-lh);
|
|
82
|
-
letter-spacing: var(--h2-track);
|
|
83
|
-
font-weight: var(--w-semibold);
|
|
84
|
-
}
|
|
85
|
-
.fd-h3 {
|
|
86
|
-
font-size: var(--h3-size);
|
|
87
|
-
line-height: var(--h3-lh);
|
|
88
|
-
letter-spacing: var(--h3-track);
|
|
89
|
-
font-weight: var(--w-semibold);
|
|
90
|
-
}
|
|
91
|
-
.fd-h4 {
|
|
92
|
-
font-size: var(--h4-size);
|
|
93
|
-
line-height: var(--h4-lh);
|
|
94
|
-
letter-spacing: var(--h4-track);
|
|
95
|
-
font-weight: var(--w-semibold);
|
|
96
|
-
}
|
|
97
|
-
.fd-body-lg {
|
|
98
|
-
font-size: var(--body-lg-size);
|
|
99
|
-
line-height: var(--body-lg-lh);
|
|
100
|
-
}
|
|
101
|
-
.fd-body {
|
|
102
|
-
font-size: var(--body-size);
|
|
103
|
-
line-height: var(--body-lh);
|
|
104
|
-
}
|
|
105
|
-
.fd-body-sm {
|
|
106
|
-
font-size: var(--body-sm-size);
|
|
107
|
-
line-height: var(--body-sm-lh);
|
|
108
|
-
}
|
|
109
|
-
.fd-label-lg {
|
|
110
|
-
font-size: var(--label-lg-size);
|
|
111
|
-
line-height: var(--label-lg-lh);
|
|
112
|
-
letter-spacing: var(--label-lg-track);
|
|
113
|
-
font-weight: var(--w-semibold);
|
|
114
|
-
}
|
|
115
|
-
.fd-label {
|
|
116
|
-
font-size: var(--label-size);
|
|
117
|
-
line-height: var(--label-lh);
|
|
118
|
-
letter-spacing: var(--label-track);
|
|
119
|
-
font-weight: var(--w-semibold);
|
|
120
|
-
}
|
|
121
|
-
.fd-mono {
|
|
122
|
-
font-family: var(--font-mono);
|
|
123
|
-
font-size: var(--mono-size);
|
|
124
|
-
line-height: var(--mono-lh);
|
|
125
|
-
font-weight: var(--w-medium);
|
|
126
|
-
}
|
|
127
|
-
.fd-tabular {
|
|
128
|
-
font-variant-numeric: tabular-nums lining-nums;
|
|
129
|
-
}
|
|
130
|
-
.fd-muted {
|
|
131
|
-
color: var(--text-muted);
|
|
132
|
-
}
|
|
133
|
-
.fd-secondary {
|
|
134
|
-
color: var(--text-2);
|
|
135
|
-
}
|
|
136
|
-
.fd-sr {
|
|
137
|
-
position: absolute;
|
|
138
|
-
width: 1px;
|
|
139
|
-
height: 1px;
|
|
140
|
-
padding: 0;
|
|
141
|
-
margin: -1px;
|
|
142
|
-
overflow: hidden;
|
|
143
|
-
clip-path: inset(50%);
|
|
144
|
-
white-space: nowrap;
|
|
145
|
-
border: 0;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/* --- range slider ----------------------------------------------------- */
|
|
149
|
-
.fd-range {
|
|
150
|
-
-webkit-appearance: none;
|
|
151
|
-
appearance: none;
|
|
152
|
-
width: 100%;
|
|
153
|
-
height: var(--s-4);
|
|
154
|
-
border-radius: var(--r-full);
|
|
155
|
-
background: var(--border);
|
|
156
|
-
outline: none;
|
|
157
|
-
cursor: pointer;
|
|
158
|
-
}
|
|
159
|
-
.fd-range::-webkit-slider-runnable-track {
|
|
160
|
-
height: var(--s-4);
|
|
161
|
-
border-radius: var(--r-full);
|
|
162
|
-
background: transparent;
|
|
163
|
-
}
|
|
164
|
-
.fd-range::-webkit-slider-thumb {
|
|
165
|
-
-webkit-appearance: none;
|
|
166
|
-
appearance: none;
|
|
167
|
-
width: var(--s-16);
|
|
168
|
-
height: var(--s-16);
|
|
169
|
-
border-radius: var(--r-full);
|
|
170
|
-
background: var(--brand);
|
|
171
|
-
border: 2px solid var(--surface);
|
|
172
|
-
box-shadow: var(--e-1);
|
|
173
|
-
cursor: pointer;
|
|
174
|
-
margin-top: calc((var(--s-4) - var(--s-16)) / 2);
|
|
175
|
-
}
|
|
176
|
-
.fd-range::-moz-range-track {
|
|
177
|
-
height: var(--s-4);
|
|
178
|
-
border-radius: var(--r-full);
|
|
179
|
-
background: transparent;
|
|
180
|
-
}
|
|
181
|
-
.fd-range::-moz-range-thumb {
|
|
182
|
-
width: var(--s-16);
|
|
183
|
-
height: var(--s-16);
|
|
184
|
-
border-radius: var(--r-full);
|
|
185
|
-
background: var(--brand);
|
|
186
|
-
border: 2px solid var(--surface);
|
|
187
|
-
box-shadow: var(--e-1);
|
|
188
|
-
cursor: pointer;
|
|
189
|
-
}
|
|
190
|
-
.fd-range:disabled {
|
|
191
|
-
opacity: 0.55;
|
|
192
|
-
cursor: not-allowed;
|
|
193
|
-
}
|
|
194
|
-
.fd-range:disabled::-webkit-slider-thumb,
|
|
195
|
-
.fd-range:disabled::-moz-range-thumb {
|
|
196
|
-
cursor: not-allowed;
|
|
197
|
-
}
|
|
198
|
-
.fd-range:focus-visible::-webkit-slider-thumb {
|
|
199
|
-
box-shadow: var(--focus-ring);
|
|
200
|
-
}
|
|
201
|
-
.fd-range:focus-visible::-moz-range-thumb {
|
|
202
|
-
box-shadow: var(--focus-ring);
|
|
203
|
-
}
|
|
1
|
+
/* Vendored from the flytedesk Design System (Claude Design project
|
|
2
|
+
"flytedesk Design System"), foundations/base.css verbatim.
|
|
3
|
+
Source of truth stays the Design System project — re-sync by hand if it
|
|
4
|
+
changes upstream. */
|
|
5
|
+
*,*::before,*::after{box-sizing:border-box}
|
|
6
|
+
html{-webkit-text-size-adjust:100%}
|
|
7
|
+
body{margin:0;background:var(--page);color:var(--text);font-family:var(--font-sans);font-size:var(--body-size);line-height:var(--body-lh);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
|
|
8
|
+
h1,h2,h3,h4,h5,h6,p,figure,blockquote{margin:0}
|
|
9
|
+
img,svg,video{display:block;max-width:100%}
|
|
10
|
+
button,input,select,textarea{font:inherit;color:inherit}
|
|
11
|
+
a{color:var(--link);text-decoration:none;transition:color var(--dur-fast) var(--ease)}
|
|
12
|
+
a:hover{color:var(--link-hover);text-decoration:underline;text-underline-offset:2px}
|
|
13
|
+
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:none;box-shadow:var(--focus-ring)}
|
|
14
|
+
::selection{background:var(--selection-bg);color:var(--selection-text)}
|
|
15
|
+
hr{border:0;border-top:1px solid var(--border);margin:0}
|
|
204
16
|
|
|
205
|
-
/*
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
.fd-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
.fd-
|
|
220
|
-
|
|
221
|
-
}
|
|
222
|
-
.fd-
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
.fd-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
|
|
17
|
+
/* --- type utilities --- */
|
|
18
|
+
.fd-display-1{font-size:var(--display-1-size);line-height:var(--display-1-lh);letter-spacing:var(--display-1-track);font-weight:var(--w-bold);color:var(--display-ink)}
|
|
19
|
+
.fd-display-2{font-size:var(--display-2-size);line-height:var(--display-2-lh);letter-spacing:var(--display-2-track);font-weight:var(--w-bold);color:var(--display-ink)}
|
|
20
|
+
.fd-display-3{font-size:var(--display-3-size);line-height:var(--display-3-lh);letter-spacing:var(--display-3-track);font-weight:var(--w-bold);color:var(--display-ink)}
|
|
21
|
+
.fd-h1{font-size:var(--h1-size);line-height:var(--h1-lh);letter-spacing:var(--h1-track);font-weight:var(--w-semibold)}
|
|
22
|
+
.fd-h2{font-size:var(--h2-size);line-height:var(--h2-lh);letter-spacing:var(--h2-track);font-weight:var(--w-semibold)}
|
|
23
|
+
.fd-h3{font-size:var(--h3-size);line-height:var(--h3-lh);letter-spacing:var(--h3-track);font-weight:var(--w-semibold)}
|
|
24
|
+
.fd-h4{font-size:var(--h4-size);line-height:var(--h4-lh);letter-spacing:var(--h4-track);font-weight:var(--w-semibold)}
|
|
25
|
+
.fd-body-lg{font-size:var(--body-lg-size);line-height:var(--body-lg-lh)}
|
|
26
|
+
.fd-body{font-size:var(--body-size);line-height:var(--body-lh)}
|
|
27
|
+
.fd-body-sm{font-size:var(--body-sm-size);line-height:var(--body-sm-lh)}
|
|
28
|
+
.fd-label-lg{font-size:var(--label-lg-size);line-height:var(--label-lg-lh);letter-spacing:var(--label-lg-track);font-weight:var(--w-semibold)}
|
|
29
|
+
.fd-label{font-size:var(--label-size);line-height:var(--label-lh);letter-spacing:var(--label-track);font-weight:var(--w-semibold)}
|
|
30
|
+
.fd-overline{font-size:var(--overline-size);line-height:var(--overline-lh);letter-spacing:var(--overline-track);font-weight:var(--w-bold);text-transform:uppercase}
|
|
31
|
+
.fd-num-hero{font-size:var(--num-hero-size);line-height:var(--num-hero-lh);letter-spacing:var(--num-hero-track);font-weight:var(--w-bold);font-variant-numeric:tabular-nums lining-nums}
|
|
32
|
+
.fd-num{font-size:var(--num-size);line-height:var(--num-lh);font-weight:var(--w-medium);font-variant-numeric:tabular-nums lining-nums}
|
|
33
|
+
.fd-mono{font-family:var(--font-mono);font-size:var(--mono-size);line-height:var(--mono-lh);font-weight:var(--w-medium)}
|
|
34
|
+
.fd-tabular{font-variant-numeric:tabular-nums lining-nums}
|
|
35
|
+
.fd-muted{color:var(--text-muted)}
|
|
36
|
+
.fd-secondary{color:var(--text-2)}
|
|
37
|
+
.fd-prose{max-width:var(--measure-prose);text-wrap:pretty}
|
|
38
|
+
.fd-lede{max-width:var(--measure-lede);text-wrap:pretty}
|
|
39
|
+
.fd-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
|
|
40
|
+
@media (max-width:768px){
|
|
41
|
+
.fd-display-1{font-size:clamp(38px,10vw,52px)}
|
|
42
|
+
.fd-display-2{font-size:clamp(32px,8vw,40px)}
|
|
43
|
+
.fd-display-3{font-size:30px}
|
|
44
|
+
.fd-h1{font-size:24px}
|
|
45
|
+
.fd-num-hero{font-size:34px}
|
|
230
46
|
}
|