@l3mpire/ui 3.2.1 → 3.5.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": "@l3mpire/ui",
3
- "version": "3.2.1",
3
+ "version": "3.5.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org",
6
6
  "access": "public"
@@ -37,7 +37,7 @@
37
37
  "peerDependencies": {
38
38
  "react": ">=18",
39
39
  "react-dom": ">=18",
40
- "@l3mpire/icons": "0.6.1"
40
+ "@l3mpire/icons": "0.6.3"
41
41
  },
42
42
  "dependencies": {
43
43
  "@dnd-kit/core": "^6.3.1",
@@ -61,8 +61,8 @@
61
61
  "class-variance-authority": "^0.7",
62
62
  "clsx": "^2",
63
63
  "tailwind-merge": "^3",
64
- "@l3mpire/tokens": "0.13.0",
65
- "@l3mpire/icons": "0.6.1"
64
+ "@l3mpire/icons": "0.6.3",
65
+ "@l3mpire/tokens": "0.15.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@types/react": "^19",
@@ -72,7 +72,7 @@
72
72
  "tailwindcss": "^4",
73
73
  "tsup": "^8",
74
74
  "typescript": "^5",
75
- "@l3mpire/icons": "0.6.1"
75
+ "@l3mpire/icons": "0.6.3"
76
76
  },
77
77
  "scripts": {
78
78
  "build": "cp ../../USAGE.md ./USAGE.md && tsup",
@@ -75,13 +75,20 @@ body {
75
75
  --font-weight-regular: var(--font-weight-regular);
76
76
  --font-weight-medium: var(--font-weight-medium);
77
77
  --font-weight-semibold: var(--font-weight-semibold);
78
- --font-weight-bold: var(--font-weight-bold);
78
+ --font-weight-solid: var(--font-weight-solid);
79
79
 
80
80
  /* ── Shadows ───────────────────────────────────────────────────────────── */
81
81
  --shadow-sm: 0 1px 3px 0 var(--shadow-4);
82
82
  --shadow-md: 0 0 4px 0 var(--shadow-4), 0 4px 8px 0 var(--shadow-6);
83
83
  --shadow-lg: 0 0 4px 0 var(--shadow-4), 0 8px 16px 0 var(--shadow-8);
84
84
  --shadow-focus-ring: 0 0 0 3px rgba(49, 107, 255, 0.15);
85
+ /* AI-specific elevations — composed on top of the shadow tints */
86
+ --shadow-elevation-sm: 0 1px 2px var(--shadow-4), 0 1px 1px var(--shadow-2);
87
+ --shadow-elevation-md: 0 4px 12px -2px var(--shadow-6), 0 2px 4px -1px var(--shadow-4);
88
+ --shadow-elevation-lg: 0 12px 32px -8px var(--shadow-8), 0 4px 8px -2px var(--shadow-4);
89
+
90
+ /* ── AI gradient ───────────────────────────────────────────────────────── */
91
+ --background-image-ai-gradient: linear-gradient(125deg, var(--blue-500) 0%, var(--violet-500) 55%, var(--indigo-500) 100%);
85
92
 
86
93
  /* ── Colors: Semantic (shadcn compatible) ───────────────────────────────── */
87
94
  --color-background: var(--core-bg-main-primary);
@@ -159,37 +166,91 @@ body {
159
166
  --color-badge-outlined-warning-text: var(--comp-badge-outlined-warning-text);
160
167
  --color-badge-outlined-neutral-border: var(--comp-badge-outlined-neutral-border);
161
168
  --color-badge-outlined-neutral-text: var(--comp-badge-outlined-neutral-text);
162
- /* Categorical tones (tonal soft tags) */
163
- --color-badge-indigo-bg: var(--comp-badge-indigo-bg);
164
- --color-badge-indigo-text: var(--comp-badge-indigo-text);
165
- --color-badge-indigo-border: var(--comp-badge-indigo-border);
166
- --color-badge-rose-bg: var(--comp-badge-rose-bg);
167
- --color-badge-rose-text: var(--comp-badge-rose-text);
168
- --color-badge-rose-border: var(--comp-badge-rose-border);
169
- --color-badge-lime-bg: var(--comp-badge-lime-bg);
170
- --color-badge-lime-text: var(--comp-badge-lime-text);
171
- --color-badge-lime-border: var(--comp-badge-lime-border);
172
- --color-badge-violet-bg: var(--comp-badge-violet-bg);
173
- --color-badge-violet-text: var(--comp-badge-violet-text);
174
- --color-badge-violet-border: var(--comp-badge-violet-border);
175
- --color-badge-cyan-bg: var(--comp-badge-cyan-bg);
176
- --color-badge-cyan-text: var(--comp-badge-cyan-text);
177
- --color-badge-cyan-border: var(--comp-badge-cyan-border);
178
- --color-badge-orange-bg: var(--comp-badge-orange-bg);
179
- --color-badge-orange-text: var(--comp-badge-orange-text);
180
- --color-badge-orange-border: var(--comp-badge-orange-border);
181
- --color-badge-emerald-bg: var(--comp-badge-emerald-bg);
182
- --color-badge-emerald-text: var(--comp-badge-emerald-text);
183
- --color-badge-emerald-border: var(--comp-badge-emerald-border);
184
- --color-badge-fuchsia-bg: var(--comp-badge-fuchsia-bg);
185
- --color-badge-fuchsia-text: var(--comp-badge-fuchsia-text);
186
- --color-badge-fuchsia-border: var(--comp-badge-fuchsia-border);
187
- --color-badge-amber-bg: var(--comp-badge-amber-bg);
188
- --color-badge-amber-text: var(--comp-badge-amber-text);
189
- --color-badge-amber-border: var(--comp-badge-amber-border);
190
- --color-badge-slate-bg: var(--comp-badge-slate-bg);
191
- --color-badge-slate-text: var(--comp-badge-slate-text);
192
- --color-badge-slate-border: var(--comp-badge-slate-border);
169
+ /* Categorical tones solid / light / outlined per hue */
170
+ --color-badge-solid-indigo-bg: var(--comp-badge-solid-indigo-bg);
171
+ --color-badge-solid-indigo-text: var(--comp-badge-solid-indigo-text);
172
+ --color-badge-solid-rose-bg: var(--comp-badge-solid-rose-bg);
173
+ --color-badge-solid-rose-text: var(--comp-badge-solid-rose-text);
174
+ --color-badge-solid-lime-bg: var(--comp-badge-solid-lime-bg);
175
+ --color-badge-solid-lime-text: var(--comp-badge-solid-lime-text);
176
+ --color-badge-solid-violet-bg: var(--comp-badge-solid-violet-bg);
177
+ --color-badge-solid-violet-text: var(--comp-badge-solid-violet-text);
178
+ --color-badge-solid-cyan-bg: var(--comp-badge-solid-cyan-bg);
179
+ --color-badge-solid-cyan-text: var(--comp-badge-solid-cyan-text);
180
+ --color-badge-solid-orange-bg: var(--comp-badge-solid-orange-bg);
181
+ --color-badge-solid-orange-text: var(--comp-badge-solid-orange-text);
182
+ --color-badge-solid-emerald-bg: var(--comp-badge-solid-emerald-bg);
183
+ --color-badge-solid-emerald-text: var(--comp-badge-solid-emerald-text);
184
+ --color-badge-solid-fuchsia-bg: var(--comp-badge-solid-fuchsia-bg);
185
+ --color-badge-solid-fuchsia-text: var(--comp-badge-solid-fuchsia-text);
186
+ --color-badge-solid-amber-bg: var(--comp-badge-solid-amber-bg);
187
+ --color-badge-solid-amber-text: var(--comp-badge-solid-amber-text);
188
+ --color-badge-solid-slate-bg: var(--comp-badge-solid-slate-bg);
189
+ --color-badge-solid-slate-text: var(--comp-badge-solid-slate-text);
190
+ --color-badge-solid-teal-bg: var(--comp-badge-solid-teal-bg);
191
+ --color-badge-solid-teal-text: var(--comp-badge-solid-teal-text);
192
+ --color-badge-solid-sky-bg: var(--comp-badge-solid-sky-bg);
193
+ --color-badge-solid-sky-text: var(--comp-badge-solid-sky-text);
194
+ --color-badge-solid-purple-bg: var(--comp-badge-solid-purple-bg);
195
+ --color-badge-solid-purple-text: var(--comp-badge-solid-purple-text);
196
+ --color-badge-solid-pink-bg: var(--comp-badge-solid-pink-bg);
197
+ --color-badge-solid-pink-text: var(--comp-badge-solid-pink-text);
198
+ --color-badge-light-indigo-bg: var(--comp-badge-light-indigo-bg);
199
+ --color-badge-light-indigo-text: var(--comp-badge-light-indigo-text);
200
+ --color-badge-light-rose-bg: var(--comp-badge-light-rose-bg);
201
+ --color-badge-light-rose-text: var(--comp-badge-light-rose-text);
202
+ --color-badge-light-lime-bg: var(--comp-badge-light-lime-bg);
203
+ --color-badge-light-lime-text: var(--comp-badge-light-lime-text);
204
+ --color-badge-light-violet-bg: var(--comp-badge-light-violet-bg);
205
+ --color-badge-light-violet-text: var(--comp-badge-light-violet-text);
206
+ --color-badge-light-cyan-bg: var(--comp-badge-light-cyan-bg);
207
+ --color-badge-light-cyan-text: var(--comp-badge-light-cyan-text);
208
+ --color-badge-light-orange-bg: var(--comp-badge-light-orange-bg);
209
+ --color-badge-light-orange-text: var(--comp-badge-light-orange-text);
210
+ --color-badge-light-emerald-bg: var(--comp-badge-light-emerald-bg);
211
+ --color-badge-light-emerald-text: var(--comp-badge-light-emerald-text);
212
+ --color-badge-light-fuchsia-bg: var(--comp-badge-light-fuchsia-bg);
213
+ --color-badge-light-fuchsia-text: var(--comp-badge-light-fuchsia-text);
214
+ --color-badge-light-amber-bg: var(--comp-badge-light-amber-bg);
215
+ --color-badge-light-amber-text: var(--comp-badge-light-amber-text);
216
+ --color-badge-light-slate-bg: var(--comp-badge-light-slate-bg);
217
+ --color-badge-light-slate-text: var(--comp-badge-light-slate-text);
218
+ --color-badge-light-teal-bg: var(--comp-badge-light-teal-bg);
219
+ --color-badge-light-teal-text: var(--comp-badge-light-teal-text);
220
+ --color-badge-light-sky-bg: var(--comp-badge-light-sky-bg);
221
+ --color-badge-light-sky-text: var(--comp-badge-light-sky-text);
222
+ --color-badge-light-purple-bg: var(--comp-badge-light-purple-bg);
223
+ --color-badge-light-purple-text: var(--comp-badge-light-purple-text);
224
+ --color-badge-light-pink-bg: var(--comp-badge-light-pink-bg);
225
+ --color-badge-light-pink-text: var(--comp-badge-light-pink-text);
226
+ --color-badge-outlined-indigo-border: var(--comp-badge-outlined-indigo-border);
227
+ --color-badge-outlined-indigo-text: var(--comp-badge-outlined-indigo-text);
228
+ --color-badge-outlined-rose-border: var(--comp-badge-outlined-rose-border);
229
+ --color-badge-outlined-rose-text: var(--comp-badge-outlined-rose-text);
230
+ --color-badge-outlined-lime-border: var(--comp-badge-outlined-lime-border);
231
+ --color-badge-outlined-lime-text: var(--comp-badge-outlined-lime-text);
232
+ --color-badge-outlined-violet-border: var(--comp-badge-outlined-violet-border);
233
+ --color-badge-outlined-violet-text: var(--comp-badge-outlined-violet-text);
234
+ --color-badge-outlined-cyan-border: var(--comp-badge-outlined-cyan-border);
235
+ --color-badge-outlined-cyan-text: var(--comp-badge-outlined-cyan-text);
236
+ --color-badge-outlined-orange-border: var(--comp-badge-outlined-orange-border);
237
+ --color-badge-outlined-orange-text: var(--comp-badge-outlined-orange-text);
238
+ --color-badge-outlined-emerald-border: var(--comp-badge-outlined-emerald-border);
239
+ --color-badge-outlined-emerald-text: var(--comp-badge-outlined-emerald-text);
240
+ --color-badge-outlined-fuchsia-border: var(--comp-badge-outlined-fuchsia-border);
241
+ --color-badge-outlined-fuchsia-text: var(--comp-badge-outlined-fuchsia-text);
242
+ --color-badge-outlined-amber-border: var(--comp-badge-outlined-amber-border);
243
+ --color-badge-outlined-amber-text: var(--comp-badge-outlined-amber-text);
244
+ --color-badge-outlined-slate-border: var(--comp-badge-outlined-slate-border);
245
+ --color-badge-outlined-slate-text: var(--comp-badge-outlined-slate-text);
246
+ --color-badge-outlined-teal-border: var(--comp-badge-outlined-teal-border);
247
+ --color-badge-outlined-teal-text: var(--comp-badge-outlined-teal-text);
248
+ --color-badge-outlined-sky-border: var(--comp-badge-outlined-sky-border);
249
+ --color-badge-outlined-sky-text: var(--comp-badge-outlined-sky-text);
250
+ --color-badge-outlined-purple-border: var(--comp-badge-outlined-purple-border);
251
+ --color-badge-outlined-purple-text: var(--comp-badge-outlined-purple-text);
252
+ --color-badge-outlined-pink-border: var(--comp-badge-outlined-pink-border);
253
+ --color-badge-outlined-pink-text: var(--comp-badge-outlined-pink-text);
193
254
 
194
255
  /* ── Colors: Button ────────────────────────────────────────────────────── */
195
256
  --color-btn-solid-brand-bg-default: var(--comp-btn-solid-brand-bg-default);
@@ -535,6 +596,18 @@ body {
535
596
  --color-tag-slate-bg: var(--comp-tag-slate-bg);
536
597
  --color-tag-slate-text: var(--comp-tag-slate-text);
537
598
  --color-tag-slate-border: var(--comp-tag-slate-border);
599
+ --color-tag-teal-bg: var(--comp-tag-teal-bg);
600
+ --color-tag-teal-text: var(--comp-tag-teal-text);
601
+ --color-tag-teal-border: var(--comp-tag-teal-border);
602
+ --color-tag-sky-bg: var(--comp-tag-sky-bg);
603
+ --color-tag-sky-text: var(--comp-tag-sky-text);
604
+ --color-tag-sky-border: var(--comp-tag-sky-border);
605
+ --color-tag-purple-bg: var(--comp-tag-purple-bg);
606
+ --color-tag-purple-text: var(--comp-tag-purple-text);
607
+ --color-tag-purple-border: var(--comp-tag-purple-border);
608
+ --color-tag-pink-bg: var(--comp-tag-pink-bg);
609
+ --color-tag-pink-text: var(--comp-tag-pink-text);
610
+ --color-tag-pink-border: var(--comp-tag-pink-border);
538
611
 
539
612
  /* ── Colors: TextInput ─────────────────────────────────────────────────── */
540
613
  --color-text-input-bg-default: var(--comp-text-input-bg-default);
@@ -636,6 +709,8 @@ body {
636
709
  --animate-modal-out: modal-out 150ms ease-in;
637
710
  --animate-sidepanel-in: sidepanel-in 250ms ease-out;
638
711
  --animate-sidepanel-out: sidepanel-out 200ms ease-in;
712
+ --animate-fade-up: fade-up 320ms ease-out;
713
+ --animate-pop-in: pop-in 220ms cubic-bezier(0.34, 1.56, 0.64, 1);
639
714
  }
640
715
 
641
716
  @keyframes tooltip-in {
@@ -725,3 +800,198 @@ body {
725
800
  --em-rgb-background: 12, 21, 33;
726
801
  --em-rgb-input: 17, 30, 46;
727
802
  }
803
+
804
+ /*
805
+ * ── AI utilities ─────────────────────────────────────────────────────────
806
+ *
807
+ * Animation primitives used by AICell, AIBadge, AIColumnSidePanel and any
808
+ * surface that wants the "AI is thinking" look. The shimmer-text and
809
+ * icon-spin classes are the load-bearing ones; the rest are decorative.
810
+ *
811
+ * FA Kit caveat — `fa-spin` applied directly to an <i> element gets
812
+ * interrupted because the Kit MutationObserver re-swaps the node into an
813
+ * <svg> on every className change. Always wrap your icon in a span that
814
+ * carries `.ai-icon-spin` (or your own rotating wrapper) instead.
815
+ */
816
+ .ai-skeleton {
817
+ position: relative;
818
+ overflow: hidden;
819
+ background: var(--core-bg-main-secondary);
820
+ }
821
+ .ai-skeleton::after {
822
+ content: "";
823
+ position: absolute;
824
+ inset: 0;
825
+ background: linear-gradient(
826
+ 90deg,
827
+ transparent 0%,
828
+ var(--core-bg-main-primary) 50%,
829
+ transparent 100%
830
+ );
831
+ animation: ai-skeleton-sweep 1.4s ease-in-out infinite;
832
+ }
833
+
834
+ .ai-cell-reveal {
835
+ animation: ai-cell-reveal 320ms ease-out forwards;
836
+ }
837
+
838
+ .ai-shimmer-text {
839
+ background: linear-gradient(
840
+ 90deg,
841
+ var(--core-text-main-tertiary) 0%,
842
+ var(--core-text-functional-info) 50%,
843
+ var(--core-text-main-tertiary) 100%
844
+ );
845
+ background-size: 200% 100%;
846
+ background-clip: text;
847
+ -webkit-background-clip: text;
848
+ -webkit-text-fill-color: transparent;
849
+ color: transparent;
850
+ animation: ai-shimmer-sweep 2.1s linear infinite;
851
+ }
852
+
853
+ .ai-icon-spin {
854
+ display: inline-flex;
855
+ animation: ai-spin 1s linear infinite;
856
+ }
857
+
858
+ .ai-pulse {
859
+ animation: ai-pulse 1.6s ease-in-out infinite;
860
+ }
861
+
862
+ .ai-gradient-text {
863
+ color: var(--core-text-functional-info);
864
+ }
865
+
866
+ .ai-orb {
867
+ position: relative;
868
+ width: 96px;
869
+ height: 96px;
870
+ border-radius: 9999px;
871
+ background: var(--background-image-ai-gradient);
872
+ box-shadow: var(--shadow-elevation-md), 0 0 32px -4px var(--blue-500);
873
+ }
874
+
875
+ .ai-halo {
876
+ position: absolute;
877
+ inset: -8px;
878
+ border-radius: 9999px;
879
+ background: conic-gradient(from 0deg, transparent, var(--blue-500), transparent);
880
+ animation: ai-spin 4s linear infinite;
881
+ opacity: 0.6;
882
+ filter: blur(8px);
883
+ }
884
+
885
+ .ai-ring {
886
+ border: 2px solid var(--blue-500);
887
+ border-radius: 9999px;
888
+ animation: ai-ring 2.4s ease-out infinite;
889
+ }
890
+
891
+ @keyframes ai-spin {
892
+ to {
893
+ transform: rotate(360deg);
894
+ }
895
+ }
896
+
897
+ @keyframes ai-shimmer-sweep {
898
+ from {
899
+ background-position: 200% 0;
900
+ }
901
+ to {
902
+ background-position: -200% 0;
903
+ }
904
+ }
905
+
906
+ @keyframes ai-skeleton-sweep {
907
+ from {
908
+ transform: translateX(-100%);
909
+ }
910
+ to {
911
+ transform: translateX(100%);
912
+ }
913
+ }
914
+
915
+ @keyframes ai-pulse {
916
+ 0%,
917
+ 100% {
918
+ transform: scale(1);
919
+ opacity: 1;
920
+ }
921
+ 50% {
922
+ transform: scale(1.15);
923
+ opacity: 0.7;
924
+ }
925
+ }
926
+
927
+ @keyframes ai-cell-reveal {
928
+ from {
929
+ opacity: 0;
930
+ filter: blur(3px);
931
+ }
932
+ to {
933
+ opacity: 1;
934
+ filter: blur(0);
935
+ }
936
+ }
937
+
938
+ @keyframes ai-reveal {
939
+ from {
940
+ opacity: 0;
941
+ transform: translateY(4px);
942
+ }
943
+ to {
944
+ opacity: 1;
945
+ transform: translateY(0);
946
+ }
947
+ }
948
+
949
+ @keyframes ai-ring {
950
+ 0% {
951
+ opacity: 0.6;
952
+ transform: scale(0.8);
953
+ }
954
+ 100% {
955
+ opacity: 0;
956
+ transform: scale(1.4);
957
+ }
958
+ }
959
+
960
+ @keyframes fade-up {
961
+ from {
962
+ opacity: 0;
963
+ transform: translateY(8px);
964
+ }
965
+ to {
966
+ opacity: 1;
967
+ transform: translateY(0);
968
+ }
969
+ }
970
+
971
+ @keyframes pop-in {
972
+ from {
973
+ opacity: 0;
974
+ transform: scale(0.85);
975
+ }
976
+ to {
977
+ opacity: 1;
978
+ transform: scale(1);
979
+ }
980
+ }
981
+
982
+ @media (prefers-reduced-motion: reduce) {
983
+ .ai-skeleton::after,
984
+ .ai-cell-reveal,
985
+ .ai-shimmer-text,
986
+ .ai-pulse,
987
+ .ai-icon-spin,
988
+ .ai-halo,
989
+ .ai-ring {
990
+ animation: none !important;
991
+ }
992
+ .ai-shimmer-text {
993
+ background: none;
994
+ color: var(--core-text-functional-info);
995
+ -webkit-text-fill-color: var(--core-text-functional-info);
996
+ }
997
+ }