@flytedan/flytebot-design-system 0.51.6 → 0.53.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,11 +1,11 @@
1
1
  {
2
2
  "name": "@flytedan/flytebot-design-system",
3
- "version": "0.51.6",
3
+ "version": "0.53.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",
7
7
  "author": "flytedesk",
8
- "homepage": "https://github.com/flytedan/flytebot-design-system#readme",
8
+ "homepage": "https://github.com/Flytedesk/flytebot-design-system#readme",
9
9
  "keywords": [
10
10
  "react",
11
11
  "design-system",
@@ -14,10 +14,10 @@
14
14
  ],
15
15
  "repository": {
16
16
  "type": "git",
17
- "url": "git+ssh://git@github.com/flytedan/flytebot-design-system.git"
17
+ "url": "git+ssh://git@github.com/Flytedesk/flytebot-design-system.git"
18
18
  },
19
19
  "bugs": {
20
- "url": "https://github.com/flytedan/flytebot-design-system/issues"
20
+ "url": "https://github.com/Flytedesk/flytebot-design-system/issues"
21
21
  },
22
22
  "files": [
23
23
  "README.md",
@@ -4232,6 +4232,8 @@
4232
4232
  padding: 0;
4233
4233
  display: flex;
4234
4234
  flex-direction: column;
4235
+ /* Wider than the label-to-bar gap in .fd-funnel-btn, so each label groups with the bar beneath it. */
4236
+ gap: 14px;
4235
4237
  }
4236
4238
  /* See the identical rule on .fd-barlist-row: Tooltip's trigger wrapper shrink-wraps its
4237
4239
  content by default, but here the trigger is the whole step row. */
@@ -8003,3 +8005,146 @@ button.fd-erow-metric:focus-visible {
8003
8005
  display: none;
8004
8006
  }
8005
8007
  }
8008
+
8009
+ /* ============ SessionScreen (MP-288) ============
8010
+ The one full-viewport screen every flytedesk ID app shows while its session is not
8011
+ usable (signing in, recovering an expired session, signing out, reconnecting, or a
8012
+ failure with a Try again). Permanently dark backdrop, like the sign-in page it replaces; the
8013
+ card follows the active theme, and the wordmark is forced to its white variant (see
8014
+ SessionScreen.tsx) so it reads against the backdrop in either.
8015
+
8016
+ `--fd-session-screen-min-height` is the one sizing hook: unset, the screen fills the
8017
+ viewport; a docs preview (or any framed embed) sets it on an ancestor to a fixed height.
8018
+ dvh is applied only where supported — a var() holding an unsupported unit is invalid at
8019
+ computed-value time and would drop the declaration instead of falling back. */
8020
+ .fd-session-screen {
8021
+ position: relative;
8022
+ display: grid;
8023
+ place-items: center;
8024
+ min-height: var(--fd-session-screen-min-height, 100vh);
8025
+ padding: var(--s-24) var(--s-16);
8026
+ box-sizing: border-box;
8027
+ overflow: hidden;
8028
+ background:
8029
+ radial-gradient(circle at 15% 15%, var(--blue-700) 0%, transparent 45%),
8030
+ radial-gradient(circle at 85% 85%, var(--blue-600) 0%, transparent 40%),
8031
+ linear-gradient(160deg, var(--navy) 0%, var(--blue-950) 55%, var(--blue-900) 100%);
8032
+ }
8033
+ @supports (min-height: 100dvh) {
8034
+ .fd-session-screen {
8035
+ min-height: var(--fd-session-screen-min-height, 100dvh);
8036
+ }
8037
+ }
8038
+ .fd-session-screen::before {
8039
+ content: "";
8040
+ position: absolute;
8041
+ inset: 0;
8042
+ background-image:
8043
+ linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
8044
+ linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
8045
+ background-size: 48px 48px;
8046
+ mask-image: radial-gradient(circle at 50% 40%, black, transparent 70%);
8047
+ pointer-events: none;
8048
+ }
8049
+ .fd-session-screen-inner {
8050
+ position: relative;
8051
+ width: 100%;
8052
+ max-width: 408px;
8053
+ min-width: 0;
8054
+ display: flex;
8055
+ flex-direction: column;
8056
+ align-items: center;
8057
+ }
8058
+ .fd-session-screen-mark {
8059
+ margin-bottom: var(--s-32);
8060
+ }
8061
+ .fd-session-screen-frame {
8062
+ width: 100%;
8063
+ min-width: 0;
8064
+ border-radius: var(--r-2xl);
8065
+ overflow: hidden;
8066
+ box-shadow: 0 24px 64px -12px rgba(2, 8, 20, 0.55), 0 2px 8px rgba(2, 8, 20, 0.3);
8067
+ }
8068
+ .fd-session-screen-stripe {
8069
+ height: 4px;
8070
+ background: linear-gradient(90deg, var(--blue-400), var(--blue-600), var(--navy));
8071
+ }
8072
+ .fd-session-screen-body {
8073
+ display: flex;
8074
+ flex-direction: column;
8075
+ align-items: center;
8076
+ padding: var(--s-8) 0;
8077
+ text-align: center;
8078
+ min-width: 0;
8079
+ }
8080
+ .fd-session-screen-body > * {
8081
+ min-width: 0;
8082
+ max-width: 100%;
8083
+ }
8084
+ .fd-session-screen-title {
8085
+ margin: 0;
8086
+ color: var(--text);
8087
+ overflow-wrap: anywhere;
8088
+ }
8089
+ /* Focus lands here programmatically (see SessionScreen.tsx); it is not a control, so it
8090
+ draws no ring of its own. */
8091
+ .fd-session-screen .fd-session-screen-title:focus-visible {
8092
+ box-shadow: none;
8093
+ }
8094
+ /* The status region stays mounted (empty) on a failure so a retry is announced into an
8095
+ existing live region; only a region with content takes space, so the body needs no
8096
+ flex gap that an empty region would double. */
8097
+ .fd-session-screen-status {
8098
+ display: flex;
8099
+ flex-direction: column;
8100
+ align-items: center;
8101
+ gap: var(--s-12);
8102
+ }
8103
+ .fd-session-screen-status:not(:empty) {
8104
+ margin-top: var(--s-20);
8105
+ }
8106
+ .fd-session-screen-spinner {
8107
+ color: var(--brand);
8108
+ }
8109
+ .fd-session-screen-message {
8110
+ margin: 0;
8111
+ min-height: 1.5em;
8112
+ color: var(--text-2);
8113
+ }
8114
+ .fd-session-screen-failure {
8115
+ display: flex;
8116
+ flex-direction: column;
8117
+ gap: var(--s-16);
8118
+ margin-top: var(--s-20);
8119
+ width: 100%;
8120
+ text-align: left;
8121
+ overflow-wrap: anywhere;
8122
+ }
8123
+ /* Phone: a smaller wordmark and a tighter gutter so the card never crowds the edge. */
8124
+ @media (max-width: 479px) {
8125
+ .fd-session-screen {
8126
+ padding: var(--s-16) var(--s-12);
8127
+ }
8128
+ .fd-session-screen-mark {
8129
+ margin-bottom: var(--s-24);
8130
+ }
8131
+ .fd-session-screen .fd-brand-mark img {
8132
+ height: 26px;
8133
+ }
8134
+ }
8135
+ /* Tablet and up: more air around the card. */
8136
+ @media (min-width: 768px) {
8137
+ .fd-session-screen {
8138
+ padding: var(--s-48) var(--s-24);
8139
+ }
8140
+ .fd-session-screen-inner {
8141
+ max-width: 440px;
8142
+ }
8143
+ }
8144
+ /* Reduced motion: the rotating ring becomes a slow pulse (same as the other indeterminate
8145
+ indicators above); [data-motion="reduce"] already stops every animation outright. */
8146
+ @media (prefers-reduced-motion: reduce) {
8147
+ .fd-spinner.fd-session-screen-spinner {
8148
+ animation: fd-pulse 1.6s ease-in-out infinite;
8149
+ }
8150
+ }