@dybo-ai/design 1.1.0 → 1.2.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.
@@ -0,0 +1,184 @@
1
+ /* ============================================================
2
+ DYBO CLIENT PORTAL — DESIGN TOKENS (drop-in)
3
+ Source: tokens.json → namespace "portal" + portal.hsl
4
+ Drop-in replacement for ticket-management-export/*/tokens.css
5
+ Do not edit manually — update tokens.json and regenerate.
6
+ ============================================================ */
7
+
8
+ /* ---- LIGHT MODE (padrão) ---- */
9
+ :root {
10
+
11
+ /* CORES SEMÂNTICAS */
12
+ --background: 216 25% 92%; /* cinza-azulado claro — fundo da página */
13
+ --foreground: 218 56% 9%; /* azul muito escuro — texto principal */
14
+
15
+ --card: 214 41% 97%; /* quase branco levemente azul — superfície de card */
16
+ --card-foreground: 218 56% 9%; /* igual ao foreground */
17
+
18
+ --popover: 0 0% 100%; /* branco puro — modais/dropdowns */
19
+ --popover-foreground: 218 56% 9%;
20
+
21
+ --primary: 218 56% 9%; /* azul muito escuro — ação principal */
22
+ --primary-foreground: 0 0% 100%; /* branco — texto sobre primary */
23
+
24
+ --secondary: 0 0% 100%; /* branco — ação secundária */
25
+ --secondary-foreground: 218 56% 9%;
26
+
27
+ --muted: 216 16% 88%; /* cinza-azulado — fundos sutis */
28
+ --muted-foreground: 216 31% 50%; /* azul médio — texto de suporte */
29
+
30
+ --accent: 219 52% 24%; /* índigo escuro — destaque/hover */
31
+ --accent-foreground: 214 41% 97%;
32
+
33
+ --destructive: 355 95% 60%; /* vermelho — erro/destruição */
34
+ --destructive-foreground: 0 0% 100%;
35
+
36
+ --border: 0 0% 100%; /* branco — borda em light mode (sutil) */
37
+ --input: 240 14% 96%; /* quase branco — fundo de inputs */
38
+ --ring: 219 52% 24%; /* índigo — foco/outline */
39
+
40
+ /* CORES DE STATUS */
41
+ --success: 150 68% 74%;
42
+ --success-foreground: 218 56% 9%;
43
+ --success-background: 151 45% 89%;
44
+
45
+ --warning: 30 100% 40%;
46
+ --warning-foreground: 218 56% 9%;
47
+ --warning-background: 30 100% 95%;
48
+
49
+ --error: 30 100% 40%;
50
+ --error-foreground: 0 0% 100%;
51
+ --error-background: 30 100% 95%;
52
+
53
+ --info: 216 31% 50%;
54
+ --info-foreground: 218 56% 9%;
55
+ --info-background: 216 31% 89%;
56
+
57
+ /* CORES DE MARCA */
58
+ --brand-dark-orb: 224 32% 12%; /* azul-marinho muito escuro */
59
+ --brand-indigo: 219 52% 24%; /* índigo — ícones inativos light */
60
+ --brand-blue-yonder: 216 31% 50%; /* azul médio — ícones inativos dark */
61
+ --brand-gainsboro: 216 16% 88%; /* cinza-azulado claro */
62
+ --brand-cultured: 214 41% 97%; /* quase branco */
63
+ --brand-dandelion: 54 81% 55%; /* amarelo — acento */
64
+ --brand-black: 0 0% 0%;
65
+ --brand-white: 0 0% 100%;
66
+
67
+ /* RAIOS DE BORDA */
68
+ --radius-none: 0px;
69
+ --radius-sm: 12px; /* padrão para inputs, selects, cards */
70
+ --radius-md: 20px; /* padrão para dropdowns, botões pill */
71
+ --radius-full: 999px; /* pílulas e avatares */
72
+ --radius: var(--radius-md);
73
+
74
+ /* OPACIDADES SEMÂNTICAS */
75
+ --opacity-semi-opaque: 0.40; /* desabilitado */
76
+ --opacity-intense: 0.64; /* texto secundário/labels */
77
+ --opacity-medium: 0.32;
78
+ --opacity-light: 0.16;
79
+ --opacity-semi-transparent:0.08;
80
+
81
+ /* SOMBRAS */
82
+ --shadow-level-1: 0px 4px 8px #1419271f; /* cards, sidebar pill */
83
+ --shadow-level-2: 0px 8px 28px #14192729; /* modais */
84
+
85
+ /* SUPERFÍCIES COM OPACIDADE FIXA */
86
+ --card-bg-with-opacity: rgba(240, 241, 244, 0.92); /* variante de card com alta opacidade — upload zones, painéis */
87
+
88
+ /* TIPOGRAFIA */
89
+ --font-display: "Urbanist", sans-serif;
90
+ }
91
+
92
+ /* ---- DARK MODE ---- */
93
+ .dark {
94
+ --card-bg-with-opacity: rgba(18, 26, 45, 0.92); /* variante dark do card com alta opacidade */
95
+ --background: 218 56% 9%; /* azul escuro */
96
+ --foreground: 244 20% 96%; /* quase branco */
97
+
98
+ --card: 218 35% 13%;
99
+ --card-foreground: 244 20% 96%;
100
+
101
+ --popover: 218 15% 12%;
102
+ --popover-foreground: 244 20% 96%;
103
+
104
+ --primary: 244 20% 96%; /* invertido: claro sobre escuro */
105
+ --primary-foreground: 218 56% 9%;
106
+
107
+ --secondary: 218 35% 13%;
108
+ --secondary-foreground: 244 20% 96%;
109
+
110
+ --muted: 210 15% 30%;
111
+ --muted-foreground: 244 20% 80%;
112
+
113
+ --accent: 216 31% 50%;
114
+ --accent-foreground: 244 20% 96%;
115
+
116
+ --destructive: 0 78% 55%;
117
+ --destructive-foreground: 244 20% 96%;
118
+
119
+ --border: 210 15% 30%; /* cinza escuro — borda visível em dark */
120
+ --input: 218 35% 13%;
121
+ --ring: 244 20% 96%;
122
+
123
+ --success-background: 150 68% 26%;
124
+ --warning-background: 30 100% 22%;
125
+ --error-background: 30 100% 22%;
126
+ --info-background: 216 31% 28%;
127
+ }
128
+
129
+ /* ============================================================
130
+ CLASSES UTILITÁRIAS CUSTOMIZADAS
131
+ (não geradas automaticamente pelo Tailwind)
132
+ ============================================================ */
133
+
134
+ .opacity-intense { opacity: var(--opacity-intense); }
135
+ .opacity-medium { opacity: var(--opacity-medium); }
136
+ .opacity-light { opacity: var(--opacity-light); }
137
+ .opacity-semi-opaque { opacity: var(--opacity-semi-opaque); }
138
+ .opacity-semi-transparent{ opacity: var(--opacity-semi-transparent); }
139
+
140
+ .shadow-level-1 { box-shadow: var(--shadow-level-1); }
141
+ .shadow-level-2 { box-shadow: var(--shadow-level-2); }
142
+
143
+ .font-display { font-family: var(--font-display); }
144
+ .font-body { font-family: var(--font-display); }
145
+
146
+ .line-clamp-2 {
147
+ display: -webkit-box;
148
+ -webkit-line-clamp: 2;
149
+ -webkit-box-orient: vertical;
150
+ overflow: hidden;
151
+ }
152
+
153
+ /* ============================================================
154
+ ESTILOS BASE
155
+ ============================================================ */
156
+
157
+ * { border-color: hsl(var(--border)); }
158
+
159
+ html { scrollbar-gutter: stable; }
160
+
161
+ body {
162
+ font-family: var(--font-display);
163
+ background-color: hsl(var(--background));
164
+ color: hsl(var(--foreground));
165
+ margin: 0;
166
+ line-height: 1.5;
167
+ }
168
+
169
+ /* Transição suave entre light/dark */
170
+ body,
171
+ [class*="bg-"],
172
+ [class*="text-"],
173
+ [class*="border-"] {
174
+ transition:
175
+ color .3s cubic-bezier(.4,0,.2,1),
176
+ background-color .3s cubic-bezier(.4,0,.2,1),
177
+ border-color .3s cubic-bezier(.4,0,.2,1);
178
+ }
179
+
180
+ /* Scrollbar customizada */
181
+ ::-webkit-scrollbar { width: 8px; }
182
+ ::-webkit-scrollbar-track { background-color: hsl(var(--secondary)); }
183
+ ::-webkit-scrollbar-thumb { border-radius: var(--radius-full); background-color: hsl(var(--muted-foreground)); }
184
+ ::-webkit-scrollbar-thumb:hover { background-color: hsl(var(--foreground)); }
package/theme.css CHANGED
@@ -13,6 +13,39 @@
13
13
  --dybo-color-brand-dark-orb: #141927;
14
14
  --dybo-color-brand-cultured: #f3f6fa;
15
15
  --dybo-color-brand-gainsboro: #dbdfe5;
16
+ --dybo-color-brand-dandelion: #e9d72f;
17
+
18
+ /* ---- Portal (ticket-management / client portal) ---- */
19
+ --dybo-portal-surface-operator: #e4e4e4;
20
+ --dybo-portal-surface-card-high: rgba(240, 241, 244, 0.92);
21
+ --dybo-portal-surface-card-high-dark: rgba(18, 26, 45, 0.92);
22
+ --dybo-portal-shadow-level-1: 0px 4px 8px #1419271f;
23
+ --dybo-portal-shadow-level-2: 0px 8px 28px #14192729;
24
+ --dybo-portal-feedback-success-light: #90eabd;
25
+ --dybo-portal-feedback-success-bg: #d6f0e3;
26
+ --dybo-portal-feedback-warning: #cc6600;
27
+ --dybo-portal-feedback-warning-bg: #fff2e5;
28
+ --dybo-portal-feedback-destructive: #fa3848;
29
+ --dybo-portal-feedback-info-bg: #d9e3f0;
30
+ --dybo-portal-priority-urgent-bg: rgba(250, 56, 72, 0.12);
31
+ --dybo-portal-priority-urgent-fg: #c81e2c;
32
+ --dybo-portal-priority-high-bg: rgba(255, 128, 0, 0.15);
33
+ --dybo-portal-priority-high-fg: #a85400;
34
+ --dybo-portal-priority-medium-bg: rgba(242, 185, 13, 0.2);
35
+ --dybo-portal-priority-medium-fg: #9d6607;
36
+ --dybo-portal-priority-low-bg: rgba(151, 163, 180, 0.24);
37
+ --dybo-portal-priority-low-fg: #50627c;
38
+ --dybo-portal-priority-none-bg: rgba(192, 198, 206, 0.35);
39
+ --dybo-portal-priority-none-fg: #677283;
40
+ --dybo-portal-ticket-open-bg: #d9e3f2;
41
+ --dybo-portal-ticket-open-fg: #2e5b9e;
42
+ --dybo-portal-ticket-pending-bg: #e9dff6;
43
+ --dybo-portal-ticket-pending-fg: #7146aa;
44
+ --dybo-portal-ticket-snoozed-bg: #d7dde5;
45
+ --dybo-portal-ticket-snoozed-fg: #58687e;
46
+ --dybo-portal-ticket-resolved-bg: #d6f0e3;
47
+ --dybo-portal-ticket-resolved-fg: #1a6640;
48
+ --dybo-icon-rail-width: 80px;
16
49
 
17
50
  /* ---- Text ---- */
18
51
  --dybo-color-text-primary: #0a1323;
@@ -95,6 +128,8 @@
95
128
  --dybo-opacity-light: 0.16;
96
129
  --dybo-opacity-medium: 0.32;
97
130
  --dybo-opacity-intense: 0.64;
131
+ --dybo-opacity-semi-opaque: 0.4;
132
+ --dybo-opacity-semi-transparent: 0.08;
98
133
 
99
134
  /* ---- Border ---- */
100
135
  --dybo-border-sm: 1px;
@@ -140,6 +175,8 @@
140
175
  --color-dybo-info: #0399ae;
141
176
  --color-dybo-info-bg: #d3f7fc;
142
177
  --color-dybo-sidebar: #1d2433;
178
+ --color-dybo-dandelion: #e9d72f;
179
+ --color-dybo-operator-page: #e4e4e4;
143
180
 
144
181
  /* Border radius */
145
182
  --radius-dybo-sm: 12px;
@@ -151,6 +188,8 @@
151
188
  --shadow-dybo-card:
152
189
  0 8px 24px rgba(10, 19, 35, 0.1), 0 2px 8px rgba(170, 180, 192, 0.35);
153
190
  --shadow-dybo-drop: 0 4px 4px rgba(10, 19, 35, 0.1);
191
+ --shadow-dybo-portal-1: 0px 4px 8px #1419271f;
192
+ --shadow-dybo-portal-2: 0px 8px 28px #14192729;
154
193
 
155
194
  /* Backdrop blur */
156
195
  --blur-dybo: 4px;
@@ -728,3 +767,248 @@ body {
728
767
  justify-content: flex-end;
729
768
  flex-shrink: 0;
730
769
  }
770
+
771
+ /* =========================================================================
772
+ Portal / Ticket Management patterns
773
+ ========================================================================= */
774
+
775
+ .dybo-surface-operator {
776
+ background: var(--dybo-portal-surface-operator);
777
+ }
778
+
779
+ .dybo-shadow-level-1 {
780
+ box-shadow: var(--dybo-portal-shadow-level-1);
781
+ }
782
+ .dybo-shadow-level-2 {
783
+ box-shadow: var(--dybo-portal-shadow-level-2);
784
+ }
785
+
786
+ /* Nav tabs — uppercase pill tabs */
787
+ .dybo-navtabs {
788
+ display: flex;
789
+ flex-wrap: wrap;
790
+ gap: 4px;
791
+ }
792
+ .dybo-navtab {
793
+ display: inline-flex;
794
+ align-items: center;
795
+ justify-content: center;
796
+ height: 26px;
797
+ padding: 0 12px;
798
+ border-radius: var(--dybo-radius-md);
799
+ font-size: var(--dybo-font-size-xs);
800
+ font-weight: var(--dybo-font-weight-medium);
801
+ letter-spacing: 1px;
802
+ text-transform: uppercase;
803
+ color: var(--dybo-color-text-primary);
804
+ opacity: var(--dybo-opacity-intense);
805
+ border: 1px solid transparent;
806
+ background: transparent;
807
+ backdrop-filter: blur(2px);
808
+ -webkit-backdrop-filter: blur(2px);
809
+ transition: all 0.2s;
810
+ white-space: nowrap;
811
+ cursor: pointer;
812
+ font-family: inherit;
813
+ }
814
+ .dybo-navtab:hover {
815
+ opacity: 1;
816
+ }
817
+ .dybo-navtab--active {
818
+ opacity: 1;
819
+ background: rgba(244, 244, 246, 0.7);
820
+ border-color: var(--dybo-line-stroke);
821
+ }
822
+
823
+ /* Priority badges */
824
+ .dybo-priority {
825
+ display: inline-flex;
826
+ align-items: center;
827
+ gap: 5px;
828
+ padding: 2px 10px;
829
+ border-radius: var(--dybo-radius-full);
830
+ font-size: var(--dybo-font-size-xs);
831
+ font-weight: var(--dybo-font-weight-semibold);
832
+ line-height: 1.4;
833
+ white-space: nowrap;
834
+ }
835
+ .dybo-priority::before {
836
+ content: "";
837
+ width: 6px;
838
+ height: 6px;
839
+ border-radius: var(--dybo-radius-full);
840
+ background: currentColor;
841
+ flex-shrink: 0;
842
+ }
843
+ .dybo-priority--urgent {
844
+ background: var(--dybo-portal-priority-urgent-bg);
845
+ color: var(--dybo-portal-priority-urgent-fg);
846
+ }
847
+ .dybo-priority--high {
848
+ background: var(--dybo-portal-priority-high-bg);
849
+ color: var(--dybo-portal-priority-high-fg);
850
+ }
851
+ .dybo-priority--medium {
852
+ background: var(--dybo-portal-priority-medium-bg);
853
+ color: var(--dybo-portal-priority-medium-fg);
854
+ }
855
+ .dybo-priority--low {
856
+ background: var(--dybo-portal-priority-low-bg);
857
+ color: var(--dybo-portal-priority-low-fg);
858
+ }
859
+ .dybo-priority--none {
860
+ background: var(--dybo-portal-priority-none-bg);
861
+ color: var(--dybo-portal-priority-none-fg);
862
+ }
863
+ .dybo-priority--none::before {
864
+ opacity: 0.45;
865
+ }
866
+
867
+ /* Ticket status badges (ChatWoot) */
868
+ .dybo-ticket-status {
869
+ display: inline-flex;
870
+ align-items: center;
871
+ padding: 2px 10px;
872
+ border-radius: var(--dybo-radius-full);
873
+ font-size: var(--dybo-font-size-xs);
874
+ font-weight: var(--dybo-font-weight-semibold);
875
+ line-height: 1.4;
876
+ white-space: nowrap;
877
+ }
878
+ .dybo-ticket-status--open {
879
+ background: var(--dybo-portal-ticket-open-bg);
880
+ color: var(--dybo-portal-ticket-open-fg);
881
+ }
882
+ .dybo-ticket-status--pending {
883
+ background: var(--dybo-portal-ticket-pending-bg);
884
+ color: var(--dybo-portal-ticket-pending-fg);
885
+ }
886
+ .dybo-ticket-status--snoozed {
887
+ background: var(--dybo-portal-ticket-snoozed-bg);
888
+ color: var(--dybo-portal-ticket-snoozed-fg);
889
+ }
890
+ .dybo-ticket-status--resolved {
891
+ background: var(--dybo-portal-ticket-resolved-bg);
892
+ color: var(--dybo-portal-ticket-resolved-fg);
893
+ }
894
+
895
+ /* Scope tabs — Unassigned / Mine / All */
896
+ .dybo-scope {
897
+ display: inline-flex;
898
+ align-items: center;
899
+ gap: 4px;
900
+ border: 1px solid var(--dybo-color-grayish-blue-300);
901
+ background: rgba(244, 244, 246, 0.7);
902
+ border-radius: var(--dybo-radius-sm);
903
+ padding: 4px;
904
+ }
905
+ .dybo-scope-tab {
906
+ display: inline-flex;
907
+ align-items: center;
908
+ gap: 8px;
909
+ height: 44px;
910
+ padding: 0 14px;
911
+ border-radius: 10px;
912
+ font-size: 13px;
913
+ font-weight: var(--dybo-font-weight-semibold);
914
+ color: var(--dybo-color-text-primary);
915
+ opacity: var(--dybo-opacity-intense);
916
+ background: transparent;
917
+ border: 0;
918
+ cursor: pointer;
919
+ white-space: nowrap;
920
+ transition: all 0.2s;
921
+ font-family: inherit;
922
+ }
923
+ .dybo-scope-tab:hover {
924
+ opacity: 1;
925
+ }
926
+ .dybo-scope-tab--active {
927
+ opacity: 1;
928
+ background: var(--dybo-color-text-primary);
929
+ color: var(--dybo-color-white);
930
+ }
931
+ .dybo-scope-tab:focus-visible {
932
+ outline: 2px solid var(--dybo-color-brand-logo);
933
+ outline-offset: 2px;
934
+ }
935
+ .dybo-scope-count {
936
+ display: inline-flex;
937
+ align-items: center;
938
+ justify-content: center;
939
+ min-width: 22px;
940
+ height: 20px;
941
+ padding: 0 6px;
942
+ border-radius: var(--dybo-radius-full);
943
+ font-size: 11px;
944
+ font-weight: var(--dybo-font-weight-bold);
945
+ background: rgba(10, 19, 35, 0.1);
946
+ }
947
+ .dybo-scope-tab--active .dybo-scope-count {
948
+ background: rgba(255, 255, 255, 0.24);
949
+ }
950
+
951
+ /* Icon rail sidebar */
952
+ .dybo-icon-rail {
953
+ display: none;
954
+ height: 100%;
955
+ width: var(--dybo-icon-rail-width);
956
+ flex-shrink: 0;
957
+ flex-direction: column;
958
+ align-items: center;
959
+ background: var(--dybo-surface-page);
960
+ padding: 16px 0;
961
+ }
962
+ @media (min-width: 768px) {
963
+ .dybo-icon-rail {
964
+ display: flex;
965
+ }
966
+ }
967
+ .dybo-icon-rail__brand {
968
+ margin-bottom: 24px;
969
+ }
970
+ .dybo-icon-rail__nav {
971
+ display: flex;
972
+ flex: 1;
973
+ width: 100%;
974
+ align-items: center;
975
+ justify-content: center;
976
+ }
977
+ .dybo-icon-rail__pill {
978
+ border-radius: 13px;
979
+ border: 1px solid var(--dybo-line-stroke);
980
+ background: var(--dybo-surface-card);
981
+ padding: 6px;
982
+ box-shadow: var(--dybo-portal-shadow-level-1);
983
+ backdrop-filter: blur(4px);
984
+ -webkit-backdrop-filter: blur(4px);
985
+ }
986
+ .dybo-icon-rail__items {
987
+ display: flex;
988
+ flex-direction: column;
989
+ align-items: center;
990
+ gap: 0;
991
+ }
992
+ .dybo-icon-rail__item {
993
+ display: flex;
994
+ align-items: center;
995
+ justify-content: center;
996
+ padding: 12px;
997
+ height: 48px;
998
+ width: 40px;
999
+ border-radius: 11px;
1000
+ color: var(--dybo-color-brand-logo);
1001
+ opacity: var(--dybo-opacity-intense);
1002
+ text-decoration: none;
1003
+ transition: all 0.2s;
1004
+ }
1005
+ .dybo-icon-rail__item:hover {
1006
+ opacity: 1;
1007
+ }
1008
+ .dybo-icon-rail__item--active {
1009
+ height: 40px;
1010
+ border-radius: 13px;
1011
+ background: rgba(20, 25, 39, 0.1);
1012
+ opacity: 1;
1013
+ color: var(--dybo-color-brand-dark-orb);
1014
+ }
package/tokens.cjs CHANGED
@@ -1,9 +1,33 @@
1
1
  // DYBO design tokens (CommonJS mirror of tokens.mjs).
2
2
  const color = {
3
- brand: { logo: "#1d335c", blue: "#5878a7", darkOrb: "#141927", cultured: "#f3f6fa", gainsboro: "#dbdfe5" },
4
- text: { primary: "#0a1323", secondary: "#f4f4f6", muted: "#545f74", gray: "#868686" },
5
- neutral: { black: "#000000", white: "#ffffff", grayishBlue50: "#f4f4f6", grayishBlue300: "#c2c7cf", midnightSky300: "#e6e7f7", midnightSky700: "#48495d" },
6
- surface: { page: "#e6eaf0", card: "rgba(240,241,244,0.70)", cardSolid: "rgba(240,241,244,0.90)", input: "rgba(244,244,246,0.70)" },
3
+ brand: {
4
+ logo: "#1d335c",
5
+ blue: "#5878a7",
6
+ darkOrb: "#141927",
7
+ cultured: "#f3f6fa",
8
+ gainsboro: "#dbdfe5",
9
+ dandelion: "#e9d72f",
10
+ },
11
+ text: {
12
+ primary: "#0a1323",
13
+ secondary: "#f4f4f6",
14
+ muted: "#545f74",
15
+ gray: "#868686",
16
+ },
17
+ neutral: {
18
+ black: "#000000",
19
+ white: "#ffffff",
20
+ grayishBlue50: "#f4f4f6",
21
+ grayishBlue300: "#c2c7cf",
22
+ midnightSky300: "#e6e7f7",
23
+ midnightSky700: "#48495d",
24
+ },
25
+ surface: {
26
+ page: "#e6eaf0",
27
+ card: "rgba(240,241,244,0.70)",
28
+ cardSolid: "rgba(240,241,244,0.90)",
29
+ input: "rgba(244,244,246,0.70)",
30
+ },
7
31
  line: { stroke: "#ffffff" },
8
32
  semantic: {
9
33
  success: { solid: "#20a156", bright: "#28ca6b", bg: "#eafbf1" },
@@ -17,15 +41,115 @@ const color = {
17
41
  brand: { fg: "#0a1323", bg: "#d0d3fe" },
18
42
  },
19
43
  };
20
- const font = { family: "Urbanist, sans-serif", weight: { regular: 400, medium: 500, semibold: 600, bold: 700 } };
44
+ const portal = {
45
+ surface: {
46
+ operatorPage: "#e4e4e4",
47
+ cardHighOpacity: "rgba(240,241,244,0.92)",
48
+ cardHighOpacityDark: "rgba(18,26,45,0.92)",
49
+ },
50
+ shadow: {
51
+ level1: "0px 4px 8px #1419271f",
52
+ level2: "0px 8px 28px #14192729",
53
+ },
54
+ feedback: {
55
+ successLight: "#90eabd",
56
+ successBackground: "#d6f0e3",
57
+ warningSolid: "#cc6600",
58
+ warningBackground: "#fff2e5",
59
+ destructiveBright: "#fa3848",
60
+ infoBackground: "#d9e3f0",
61
+ },
62
+ priority: {
63
+ urgent: {
64
+ bg: "rgba(250,56,72,0.12)",
65
+ fg: "#c81e2c",
66
+ darkBg: "rgba(230,57,57,0.22)",
67
+ darkFg: "#f9a0a0",
68
+ },
69
+ high: {
70
+ bg: "rgba(255,128,0,0.15)",
71
+ fg: "#a85400",
72
+ darkBg: "rgba(230,115,0,0.22)",
73
+ darkFg: "#ffb366",
74
+ },
75
+ medium: {
76
+ bg: "rgba(242,185,13,0.20)",
77
+ fg: "#9d6607",
78
+ darkBg: "rgba(242,185,13,0.16)",
79
+ darkFg: "#f5d56a",
80
+ },
81
+ low: {
82
+ bg: "rgba(151,163,180,0.24)",
83
+ fg: "#50627c",
84
+ darkBg: "rgba(140,155,175,0.20)",
85
+ darkFg: "#b8c4d4",
86
+ },
87
+ none: {
88
+ bg: "rgba(192,198,206,0.35)",
89
+ fg: "#677283",
90
+ darkBg: "rgba(115,125,140,0.25)",
91
+ darkFg: "#b0b8c4",
92
+ },
93
+ },
94
+ ticketStatus: {
95
+ open: {
96
+ bg: "#d9e3f2",
97
+ fg: "#2e5b9e",
98
+ darkBg: "#2a3d52",
99
+ darkFg: "#a8c4e8",
100
+ },
101
+ pending: {
102
+ bg: "#e9dff6",
103
+ fg: "#7146aa",
104
+ darkBg: "#3d2f4d",
105
+ darkFg: "#d4b8f0",
106
+ },
107
+ snoozed: {
108
+ bg: "#d7dde5",
109
+ fg: "#58687e",
110
+ darkBg: "#3a424c",
111
+ darkFg: "#b8c4d4",
112
+ },
113
+ resolved: {
114
+ bg: "#d6f0e3",
115
+ fg: "#1a6640",
116
+ darkBg: "#1f4a32",
117
+ darkFg: "#a8e0c0",
118
+ },
119
+ },
120
+ };
121
+ const font = {
122
+ family: "Urbanist, sans-serif",
123
+ weight: { regular: 400, medium: 500, semibold: 600, bold: 700 },
124
+ };
21
125
  const fontSize = { xs: 12, sm: 14, md: 16, lg: 18, xl: 24 };
22
126
  const space = { 0: 0, 50: 4, 100: 8, 150: 12, 200: 16, 250: 20, 400: 32 };
23
127
  const radius = { small: 12, alt: 16, medium: 20, full: 999 };
24
- const opacity = { light: 0.16, medium: 0.32, intense: 0.64 };
128
+ const opacity = {
129
+ light: 0.16,
130
+ medium: 0.32,
131
+ intense: 0.64,
132
+ semiOpaque: 0.4,
133
+ semiTransparent: 0.08,
134
+ };
25
135
  const shadow = {
26
136
  card: "0 8px 24px rgba(10,19,35,0.10), 0 2px 8px rgba(170,180,192,0.35)",
27
137
  drop: "0 4px 4px rgba(10,19,35,0.10)",
138
+ portalLevel1: "0px 4px 8px #1419271f",
139
+ portalLevel2: "0px 8px 28px #14192729",
28
140
  };
29
141
  const effect = { glassBlur: 4 };
30
- const tokens = { color, font, fontSize, space, radius, opacity, shadow, effect };
31
- module.exports = { tokens, color, font, fontSize, space, radius, opacity, shadow, effect, default: tokens };
142
+ const tokens = { color, portal, font, fontSize, space, radius, opacity, shadow, effect };
143
+ module.exports = {
144
+ tokens,
145
+ color,
146
+ portal,
147
+ font,
148
+ fontSize,
149
+ space,
150
+ radius,
151
+ opacity,
152
+ shadow,
153
+ effect,
154
+ default: tokens,
155
+ };