@santi020k/lumen 1.2.0 → 1.4.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.
@@ -136,6 +136,13 @@ export declare const lumenRegistry: {
136
136
  readonly category: "Data display";
137
137
  readonly files: readonly ["packages/astro/components/Avatar.astro", "packages/astro/styles/lumen.css"];
138
138
  readonly dependencies: readonly ["styles"];
139
+ }, {
140
+ readonly name: "Backdrop";
141
+ readonly type: "component";
142
+ readonly description: "Adds a token-aware ambient pattern behind meaningful content.";
143
+ readonly category: "Brand";
144
+ readonly files: readonly ["packages/astro/components/Backdrop.astro", "packages/astro/styles/lumen.css", "packages/react/src/components.tsx"];
145
+ readonly dependencies: readonly ["styles"];
139
146
  }, {
140
147
  readonly name: "BackToTop";
141
148
  readonly type: "component";
@@ -444,6 +451,13 @@ export declare const lumenRegistry: {
444
451
  readonly category: "Data display";
445
452
  readonly files: readonly ["packages/astro/components/FormattedDate.astro", "packages/astro/styles/lumen.css"];
446
453
  readonly dependencies: readonly ["styles"];
454
+ }, {
455
+ readonly name: "Graphic";
456
+ readonly type: "component";
457
+ readonly description: "Frames custom artwork in a token-aware glow, grid, or orbit graphic.";
458
+ readonly category: "Brand";
459
+ readonly files: readonly ["packages/astro/components/Graphic.astro", "packages/astro/styles/lumen.css", "packages/react/src/components.tsx"];
460
+ readonly dependencies: readonly ["styles"];
447
461
  }, {
448
462
  readonly name: "HoverCard";
449
463
  readonly type: "component";
@@ -465,6 +479,13 @@ export declare const lumenRegistry: {
465
479
  readonly category: "Data display";
466
480
  readonly files: readonly ["packages/astro/components/Image.astro", "packages/astro/styles/lumen.css"];
467
481
  readonly dependencies: readonly ["styles"];
482
+ }, {
483
+ readonly name: "Illustration";
484
+ readonly type: "component";
485
+ readonly description: "Renders a built-in semantic empty, success, error, or offline illustration.";
486
+ readonly category: "Feedback";
487
+ readonly files: readonly ["packages/astro/components/Illustration.astro", "packages/astro/styles/lumen.css", "packages/react/src/components.tsx"];
488
+ readonly dependencies: readonly ["styles"];
468
489
  }, {
469
490
  readonly name: "Input";
470
491
  readonly type: "component";
@@ -1 +1 @@
1
- {"version":3,"file":"registry-data.d.ts","sourceRoot":"","sources":["../src/registry-data.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqwEQ,CAAA"}
1
+ {"version":3,"file":"registry-data.d.ts","sourceRoot":"","sources":["../src/registry-data.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+yEQ,CAAA"}
@@ -357,6 +357,20 @@ export const lumenRegistry = {
357
357
  'styles'
358
358
  ]
359
359
  },
360
+ {
361
+ name: 'Backdrop',
362
+ type: 'component',
363
+ description: 'Adds a token-aware ambient pattern behind meaningful content.',
364
+ category: 'Brand',
365
+ files: [
366
+ 'packages/astro/components/Backdrop.astro',
367
+ 'packages/astro/styles/lumen.css',
368
+ 'packages/react/src/components.tsx'
369
+ ],
370
+ dependencies: [
371
+ 'styles'
372
+ ]
373
+ },
360
374
  {
361
375
  name: 'BackToTop',
362
376
  type: 'component',
@@ -985,6 +999,20 @@ export const lumenRegistry = {
985
999
  'styles'
986
1000
  ]
987
1001
  },
1002
+ {
1003
+ name: 'Graphic',
1004
+ type: 'component',
1005
+ description: 'Frames custom artwork in a token-aware glow, grid, or orbit graphic.',
1006
+ category: 'Brand',
1007
+ files: [
1008
+ 'packages/astro/components/Graphic.astro',
1009
+ 'packages/astro/styles/lumen.css',
1010
+ 'packages/react/src/components.tsx'
1011
+ ],
1012
+ dependencies: [
1013
+ 'styles'
1014
+ ]
1015
+ },
988
1016
  {
989
1017
  name: 'HoverCard',
990
1018
  type: 'component',
@@ -1027,6 +1055,20 @@ export const lumenRegistry = {
1027
1055
  'styles'
1028
1056
  ]
1029
1057
  },
1058
+ {
1059
+ name: 'Illustration',
1060
+ type: 'component',
1061
+ description: 'Renders a built-in semantic empty, success, error, or offline illustration.',
1062
+ category: 'Feedback',
1063
+ files: [
1064
+ 'packages/astro/components/Illustration.astro',
1065
+ 'packages/astro/styles/lumen.css',
1066
+ 'packages/react/src/components.tsx'
1067
+ ],
1068
+ dependencies: [
1069
+ 'styles'
1070
+ ]
1071
+ },
1030
1072
  {
1031
1073
  name: 'Input',
1032
1074
  type: 'component',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@santi020k/lumen",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "semver": "^7.8.0",
42
- "@santi020k/lumen-core": "^1.2.0"
42
+ "@santi020k/lumen-core": "^1.4.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^26.1.1",
package/styles.css CHANGED
@@ -194,6 +194,12 @@
194
194
  }
195
195
  }
196
196
 
197
+ @keyframes ui-graphic-orbit {
198
+ to {
199
+ transform: rotate(1turn);
200
+ }
201
+ }
202
+
197
203
  .ui-sr-only {
198
204
  position: absolute;
199
205
  width: 1px;
@@ -216,6 +222,7 @@
216
222
  .ui-attachment,
217
223
  .ui-autocomplete,
218
224
  .ui-avatar,
225
+ .ui-backdrop,
219
226
  .ui-back-to-top,
220
227
  .ui-badge,
221
228
  .ui-bubble,
@@ -242,12 +249,14 @@
242
249
  .ui-floating-badge,
243
250
  .ui-formatted-date,
244
251
  .ui-gradient-divider,
252
+ .ui-graphic,
245
253
  .ui-icon,
246
254
  .ui-input,
247
255
  .ui-input-group,
248
256
  .ui-input-otp-field,
249
257
  .ui-input-otp,
250
258
  .ui-image,
259
+ .ui-illustration,
251
260
  .ui-item,
252
261
  .ui-kbd,
253
262
  .ui-label,
@@ -1040,6 +1049,166 @@
1040
1049
  );
1041
1050
  }
1042
1051
 
1052
+ .ui-backdrop {
1053
+ --ui-backdrop-color: var(--brand);
1054
+ --ui-backdrop-secondary: var(--accent);
1055
+ --ui-backdrop-opacity: 0.68;
1056
+ isolation: isolate;
1057
+ overflow: hidden;
1058
+ position: relative;
1059
+ }
1060
+
1061
+ .ui-backdrop::before {
1062
+ content: '';
1063
+ inset: 0;
1064
+ opacity: var(--ui-backdrop-opacity);
1065
+ pointer-events: none;
1066
+ position: absolute;
1067
+ }
1068
+
1069
+ .ui-backdrop__content,
1070
+ .ui-backdrop > * {
1071
+ position: relative;
1072
+ z-index: 1;
1073
+ }
1074
+
1075
+ .ui-backdrop--subtle { --ui-backdrop-opacity: 0.4; }
1076
+ .ui-backdrop--strong { --ui-backdrop-opacity: 1; }
1077
+ .ui-backdrop--accent { --ui-backdrop-color: var(--accent); --ui-backdrop-secondary: var(--brand); }
1078
+ .ui-backdrop--neutral { --ui-backdrop-color: var(--ink-muted); --ui-backdrop-secondary: var(--ink-soft); }
1079
+
1080
+ .ui-backdrop--aurora::before {
1081
+ background:
1082
+ radial-gradient(ellipse at 18% 8%, hsl(var(--ui-backdrop-color) / 0.28), transparent 46%),
1083
+ radial-gradient(ellipse at 86% 92%, hsl(var(--ui-backdrop-secondary) / 0.2), transparent 48%);
1084
+ }
1085
+
1086
+ .ui-backdrop--dots::before {
1087
+ background-image: radial-gradient(circle, hsl(var(--ui-backdrop-color) / 0.28) 1px, transparent 1.5px);
1088
+ background-size: 1.25rem 1.25rem;
1089
+ mask-image: radial-gradient(ellipse, black 12%, transparent 76%);
1090
+ }
1091
+
1092
+ .ui-backdrop--grid::before {
1093
+ background-image:
1094
+ linear-gradient(hsl(var(--ui-backdrop-color) / 0.14) 1px, transparent 1px),
1095
+ linear-gradient(90deg, hsl(var(--ui-backdrop-color) / 0.14) 1px, transparent 1px);
1096
+ background-size: 2rem 2rem;
1097
+ mask-image: linear-gradient(black, transparent 92%);
1098
+ }
1099
+
1100
+ .ui-backdrop--rays::before {
1101
+ background: repeating-conic-gradient(from 210deg at 50% 0%, hsl(var(--ui-backdrop-color) / 0.12) 0 4deg, transparent 4deg 13deg);
1102
+ mask-image: linear-gradient(black, transparent 88%);
1103
+ }
1104
+
1105
+ .ui-illustration {
1106
+ --ui-illustration-color: var(--brand);
1107
+ color: hsl(var(--ui-illustration-color));
1108
+ display: inline-grid;
1109
+ place-items: center;
1110
+ width: var(--ui-illustration-size, 8rem);
1111
+ }
1112
+
1113
+ .ui-illustration svg { display: block; height: auto; overflow: visible; width: 100%; }
1114
+ .ui-illustration :where(path, circle) { stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3; vector-effect: non-scaling-stroke; }
1115
+ .ui-illustration__wash { fill: hsl(var(--ui-illustration-color) / 0.1); stroke: none !important; }
1116
+ .ui-illustration--sm { --ui-illustration-size: 6rem; }
1117
+ .ui-illustration--lg { --ui-illustration-size: 11rem; }
1118
+ .ui-illustration--auto.ui-illustration--success { --ui-illustration-color: var(--success); }
1119
+ .ui-illustration--auto.ui-illustration--error { --ui-illustration-color: var(--danger); }
1120
+ .ui-illustration--auto.ui-illustration--offline { --ui-illustration-color: var(--ink-muted); }
1121
+ .ui-illustration--accent { --ui-illustration-color: var(--accent); }
1122
+ .ui-illustration--neutral { --ui-illustration-color: var(--ink-muted); }
1123
+
1124
+ .ui-graphic {
1125
+ --ui-graphic-color: var(--brand);
1126
+ --ui-graphic-secondary: var(--accent);
1127
+ aspect-ratio: 1;
1128
+ display: grid;
1129
+ isolation: isolate;
1130
+ max-width: 100%;
1131
+ overflow: hidden;
1132
+ place-items: center;
1133
+ position: relative;
1134
+ width: var(--ui-graphic-size, 15rem);
1135
+ }
1136
+
1137
+ .ui-graphic::before,
1138
+ .ui-graphic::after {
1139
+ content: '';
1140
+ inset: 0;
1141
+ pointer-events: none;
1142
+ position: absolute;
1143
+ }
1144
+
1145
+ .ui-graphic > *,
1146
+ .ui-graphic__content {
1147
+ position: relative;
1148
+ z-index: 1;
1149
+ }
1150
+
1151
+ .ui-graphic--sm {
1152
+ --ui-graphic-size: 10rem;
1153
+ }
1154
+
1155
+ .ui-graphic--md {
1156
+ --ui-graphic-size: 15rem;
1157
+ }
1158
+
1159
+ .ui-graphic--lg {
1160
+ --ui-graphic-size: 20rem;
1161
+ }
1162
+
1163
+ .ui-graphic--accent {
1164
+ --ui-graphic-color: var(--accent);
1165
+ --ui-graphic-secondary: var(--brand);
1166
+ }
1167
+
1168
+ .ui-graphic--neutral {
1169
+ --ui-graphic-color: var(--ink-muted);
1170
+ --ui-graphic-secondary: var(--ink-soft);
1171
+ }
1172
+
1173
+ .ui-graphic--glow::before {
1174
+ background: radial-gradient(
1175
+ circle,
1176
+ hsl(var(--ui-graphic-color) / 0.3),
1177
+ hsl(var(--ui-graphic-secondary) / 0.12) 38%,
1178
+ transparent 70%
1179
+ );
1180
+ filter: blur(0.75rem);
1181
+ }
1182
+
1183
+ .ui-graphic--grid::before {
1184
+ background-image:
1185
+ linear-gradient(hsl(var(--ui-graphic-color) / 0.13) 1px, transparent 1px),
1186
+ linear-gradient(90deg, hsl(var(--ui-graphic-color) / 0.13) 1px, transparent 1px),
1187
+ radial-gradient(circle, hsl(var(--ui-graphic-secondary) / 0.18), transparent 66%);
1188
+ background-size: 1.5rem 1.5rem, 1.5rem 1.5rem, 100% 100%;
1189
+ mask-image: radial-gradient(circle, black 20%, transparent 74%);
1190
+ }
1191
+
1192
+ .ui-graphic--orbit::before {
1193
+ background:
1194
+ linear-gradient(90deg, transparent 49.75%, hsl(var(--ui-graphic-color) / 0.16) 50%, transparent 50.25%),
1195
+ linear-gradient(transparent 49.75%, hsl(var(--ui-graphic-color) / 0.16) 50%, transparent 50.25%),
1196
+ radial-gradient(circle, transparent 0 17%, hsl(var(--ui-graphic-color) / 0.22) 17.4% 17.8%, transparent 18.2% 31%, hsl(var(--ui-graphic-color) / 0.28) 31.4% 31.8%, transparent 32.2% 45%, hsl(var(--ui-graphic-color) / 0.18) 45.4% 45.8%, transparent 46.2% 49%, hsl(var(--ui-graphic-secondary) / 0.28) 49.4% 49.8%, transparent 50.2%),
1197
+ radial-gradient(circle, hsl(var(--ui-graphic-color) / 0.18), transparent 68%);
1198
+ }
1199
+
1200
+ .ui-graphic--orbit::after {
1201
+ animation: ui-graphic-orbit 18s linear infinite;
1202
+ background: conic-gradient(
1203
+ from 0deg,
1204
+ transparent 0 72%,
1205
+ hsl(var(--ui-graphic-color) / 0.42) 82%,
1206
+ transparent 92%
1207
+ );
1208
+ inset: 8%;
1209
+ mask-image: radial-gradient(circle, transparent 0 42%, black 42.5% 49%, transparent 49.5%);
1210
+ }
1211
+
1043
1212
  .ui-particles {
1044
1213
  position: relative;
1045
1214
  display: block;
@@ -1149,6 +1318,10 @@
1149
1318
  animation: none;
1150
1319
  }
1151
1320
 
1321
+ .ui-graphic--orbit::after {
1322
+ animation: none;
1323
+ }
1324
+
1152
1325
  .ui-scroll-reveal[data-ui-scroll-reveal-bound="true"] {
1153
1326
  opacity: 1;
1154
1327
  transform: none;
@@ -2187,6 +2360,32 @@
2187
2360
  color: hsl(var(--brand));
2188
2361
  }
2189
2362
 
2363
+ .ui-menu :where(a, button, [role="menuitem"]):is(:disabled, [aria-disabled="true"]) {
2364
+ color: hsl(var(--ink-muted));
2365
+ cursor: not-allowed;
2366
+ opacity: 0.62;
2367
+ pointer-events: none;
2368
+ }
2369
+
2370
+ .ui-menu__item-label {
2371
+ min-width: 0;
2372
+ flex: 1;
2373
+ }
2374
+
2375
+ .ui-menu__item-status {
2376
+ color: hsl(var(--ink-muted));
2377
+ font-size: 0.75rem;
2378
+ font-weight: 600;
2379
+ }
2380
+
2381
+ .ui-menu__separator,
2382
+ .ui-menu [role="separator"] {
2383
+ height: 1px;
2384
+ margin: 0.35rem 0.25rem;
2385
+ border: 0;
2386
+ background: hsl(var(--line));
2387
+ }
2388
+
2190
2389
  .ui-context-navigation {
2191
2390
  --ui-context-navigation-gap: 1rem;
2192
2391
  --ui-context-navigation-min-height: 3.25rem;