@sequenceholdings/atlas-ui 0.1.5 → 0.3.2

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/motion.css ADDED
@@ -0,0 +1,75 @@
1
+ /* GENERATED by atlas-ui/scripts/generate-tokens.ts — do not edit by hand. */
2
+ /* Shared animation tokens, keyframes, and reduced-motion policy (DES-97). */
3
+
4
+ @theme inline {
5
+ --animate-fade-in: fade-in var(--motion-enter-duration) var(--motion-enter-ease);
6
+ --animate-slide-in: slide-in var(--motion-enter-duration) var(--motion-enter-ease);
7
+ --animate-scale-in: scale-in var(--motion-enter-duration) var(--motion-enter-ease);
8
+ --animate-skeleton: skeleton-loading 1.5s infinite;
9
+ --animate-skeleton-vertical: skeleton-loading-vertical 1.5s infinite;
10
+ --animate-heartbeat: heartbeat-pulse 1.5s var(--motion-enter-ease) infinite;
11
+ --animate-bounce-dot: bounce 1.4s infinite ease-in-out both;
12
+ --animate-pulse-glow: pulse-glow 3s ease-in-out infinite;
13
+ --animate-shimmer: shimmer 1.5s infinite;
14
+ }
15
+
16
+ @keyframes fade-in {
17
+ from { opacity: 0; }
18
+ to { opacity: 1; }
19
+ }
20
+
21
+ @keyframes slide-in {
22
+ from { transform: translateX(100%); }
23
+ to { transform: translateX(0); }
24
+ }
25
+
26
+ @keyframes scale-in {
27
+ from { transform: scale(0.95); opacity: 0; }
28
+ to { transform: scale(1); opacity: 1; }
29
+ }
30
+
31
+ @keyframes skeleton-loading {
32
+ 0% { background-position: 200% 0; }
33
+ 100% { background-position: -200% 0; }
34
+ }
35
+
36
+ @keyframes skeleton-loading-vertical {
37
+ 0% { background-position: 0 200%; }
38
+ 100% { background-position: 0 -200%; }
39
+ }
40
+
41
+ @keyframes heartbeat-pulse {
42
+ 0% { width: 20px; height: 20px; opacity: 0.6; }
43
+ 50% { width: 40px; height: 40px; opacity: 0.3; margin-left: -10px; margin-top: -10px; }
44
+ 100% { width: 20px; height: 20px; opacity: 0; }
45
+ }
46
+
47
+ @keyframes bounce {
48
+ 0%, 80%, 100% { transform: scale(0); }
49
+ 40% { transform: scale(1); }
50
+ }
51
+
52
+ @keyframes pulse-glow {
53
+ 0%, 100% { box-shadow: 0 0 0 0 rgba(29, 197, 160, 0.4); }
54
+ 50% { box-shadow: 0 0 0 8px rgba(29, 197, 160, 0); }
55
+ }
56
+
57
+ @keyframes shimmer {
58
+ 0% { background-position: -200% 0; }
59
+ 100% { background-position: 200% 0; }
60
+ }
61
+
62
+ /* Preserve lifecycle events while reducing CSS motion to a single frame.
63
+ JS-driven animation loops must honor the media query in their own runtime. */
64
+ @media (prefers-reduced-motion: reduce) {
65
+ *,
66
+ *::before,
67
+ *::after {
68
+ animation-delay: 0ms !important;
69
+ animation-duration: 0.01ms !important;
70
+ animation-iteration-count: 1 !important;
71
+ scroll-behavior: auto !important;
72
+ transition-delay: 0ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ }
75
+ }
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "publishConfig": {
10
10
  "access": "public"
11
11
  },
12
- "version": "0.1.5",
12
+ "version": "0.3.2",
13
13
  "description": "Atlas shared UI component library for Artifact Studio apps",
14
14
  "type": "module",
15
15
  "sideEffects": [
@@ -28,13 +28,15 @@
28
28
  "./tokens.v2.css": "./tokens.v2.css",
29
29
  "./tokens.v2.tenants.css": "./tokens.v2.tenants.css",
30
30
  "./theme.v2.css": "./theme.v2.css",
31
+ "./motion.css": "./motion.css",
31
32
  "./package.json": "./package.json"
32
33
  },
33
34
  "//tokens.v2.tenants.css": "The OpCo [data-theme] overlay. It MUST be exported — Tailwind v4 resolves the @import through the package exports map (under the `style` condition), so without this entry the Atlas CSS build fails with 'not exported under the condition style'. It is intentionally kept OUT of `files` so it is NOT in the published tarball (the shared package stays opco-free, DES-127); only the Atlas monorepo build (which resolves via the workspace symlink) consumes it. No published consumer imports this subpath.",
34
35
  "files": [
35
36
  "dist",
36
37
  "tokens.v2.css",
37
- "theme.v2.css"
38
+ "theme.v2.css",
39
+ "motion.css"
38
40
  ],
39
41
  "peerDependencies": {
40
42
  "@tanstack/react-query": "^4.36.1",
@@ -66,7 +68,7 @@
66
68
  "@radix-ui/react-toggle": "^1.1.10",
67
69
  "@radix-ui/react-toggle-group": "^1.1.11",
68
70
  "@radix-ui/react-tooltip": "^1.2.8",
69
- "@tabler/icons-react": "^3.36.1",
71
+ "@tabler/icons-react": "^3.45.0",
70
72
  "@tanstack/react-table": "^8.21.3",
71
73
  "@tanstack/react-virtual": "^3.13.19",
72
74
  "class-variance-authority": "^0.7.1",
package/theme.v2.css CHANGED
@@ -44,10 +44,6 @@
44
44
  --color-link: var(--link);
45
45
  --color-link-hover: var(--link-hover);
46
46
  --color-link-visited: var(--link-visited);
47
- --color-icon-primary: var(--icon-primary);
48
- --color-icon-secondary: var(--icon-secondary);
49
- --color-icon-on-color: var(--icon-on-color);
50
- --color-icon-disabled: var(--icon-disabled);
51
47
  --color-inverse: var(--inverse);
52
48
  --color-inverse-foreground: var(--inverse-foreground);
53
49
  --color-overlay: var(--overlay);
@@ -139,6 +135,9 @@
139
135
  --text-body: var(--type-body);
140
136
  --text-body--line-height: var(--type-body-leading);
141
137
  --text-body--font-weight: var(--type-body-weight);
138
+ --text-cell: var(--type-cell);
139
+ --text-cell--line-height: var(--type-cell-leading);
140
+ --text-cell--font-weight: var(--type-cell-weight);
142
141
  --text-label: var(--type-label);
143
142
  --text-label--line-height: var(--type-label-leading);
144
143
  --text-label--font-weight: var(--type-label-weight);
@@ -180,6 +179,7 @@
180
179
  --spacing-stack-group: var(--space-stack-group);
181
180
  --spacing-stack-section: var(--space-stack-section);
182
181
  --radius-control: var(--corner-control);
182
+ --radius-field: var(--corner-field);
183
183
  --radius-badge: var(--corner-badge);
184
184
  --radius-surface-nested: var(--corner-surface-nested);
185
185
  --radius-surface: var(--corner-surface);
@@ -223,3 +223,18 @@
223
223
  @utility text-code {
224
224
  font-family: var(--font-mono);
225
225
  }
226
+
227
+ @utility size-icon {
228
+ width: var(--icon);
229
+ height: var(--icon);
230
+ }
231
+
232
+ @utility size-icon-sm {
233
+ width: var(--icon-sm);
234
+ height: var(--icon-sm);
235
+ }
236
+
237
+ @utility size-icon-lg {
238
+ width: var(--icon-lg);
239
+ height: var(--icon-lg);
240
+ }
package/tokens.v2.css CHANGED
@@ -184,10 +184,6 @@
184
184
  --link: var(--ds-expressive-600);
185
185
  --link-hover: var(--ds-expressive-700);
186
186
  --link-visited: var(--ds-expressive-800);
187
- --icon-primary: var(--ds-neutral-950);
188
- --icon-secondary: var(--ds-neutral-600);
189
- --icon-on-color: var(--ds-neutral-0);
190
- --icon-disabled: var(--ds-neutral-400);
191
187
  --inverse: var(--ds-neutral-900);
192
188
  --inverse-foreground: var(--ds-neutral-0);
193
189
  --overlay: color-mix(in oklab, var(--ds-neutral-950) 50%, transparent);
@@ -305,10 +301,14 @@
305
301
  --type-heading: var(--ds-size-14);
306
302
  --type-heading-leading: var(--ds-leading-normal);
307
303
  --type-heading-weight: var(--ds-weight-semibold);
308
- /* text-body — Default. Prose, values, anything with no more specific role. 13px under compact density. */
304
+ /* text-body — Default. Linear prose and general UI copy — paragraphs, descriptions, empty states, helper text. Anything you read as sentences. Prefer text-cell for scannable collection values. */
309
305
  --type-body: var(--ds-size-14);
310
306
  --type-body-leading: var(--ds-leading-relaxed);
311
307
  --type-body-weight: var(--ds-weight-regular);
308
+ /* text-cell — Primary value in a scannable collection — table body cells, heatmap values, key/value row values, dense list meta. One line (or truncated), not a paragraph. Prefer text-body for multi-sentence prose. */
309
+ --type-cell: var(--ds-size-13);
310
+ --type-cell-leading: var(--ds-leading-relaxed);
311
+ --type-cell-weight: var(--ds-weight-regular);
312
312
  /* text-label — Labels a form control. Inside <Label> or <label>. */
313
313
  --type-label: var(--ds-size-14);
314
314
  --type-label-leading: var(--ds-leading-normal);
@@ -358,7 +358,8 @@
358
358
  --space-stack: var(--ds-space-8); /* Between rows inside a group. */
359
359
  --space-stack-group: var(--ds-space-16); /* Between groups within a section. */
360
360
  --space-stack-section: var(--ds-space-24); /* Between page sections. */
361
- --corner-control: var(--ds-radius-full); /* Operable AND one line tall — button, toggle, tab, segmented control, input, select trigger. */
361
+ --corner-control: var(--ds-radius-full); /* Operable AND one line tall, and PRESSED rather than filled — button, toggle, tab, segmented control. */
362
+ --corner-field: var(--ds-radius-8); /* A control you type or pick a value INTO — input, select trigger, date field, combobox trigger. Anything wearing bg-field. */
362
363
  --corner-badge: var(--ds-radius-4); /* A label ABOUT something, not something you operate — badge, tag, count, code chip. */
363
364
  --corner-surface-nested: var(--ds-radius-8); /* A container inside another container — inset well, code block in a card, thumbnail. */
364
365
  --corner-surface: var(--ds-radius-12); /* A top-level container, or anything taller than one line — card, panel, dialog, menu surface, textarea. */
@@ -366,6 +367,9 @@
366
367
  --elevation-resting: var(--ds-shadow-1); /* A card that lifts off the page but never moves. */
367
368
  --elevation-popover: var(--ds-shadow-2); /* Opens over the page and closes on dismiss — menu, select, tooltip. */
368
369
  --elevation-modal: var(--ds-shadow-3); /* Blocks the page behind it — dialog, sheet. */
370
+ --icon: var(--ds-size-16); /* Icon inside a control or next to its label. The default. */
371
+ --icon-sm: var(--ds-size-12); /* Icon inside a small control (xs / icon-xs). A variant of icon, not a separate intent. */
372
+ --icon-lg: var(--ds-size-24); /* Standalone or page-title-adjacent affordance — larger than the control it sits near. */
369
373
  --motion-hover-duration: var(--ds-duration-fast); /* A state change under the cursor — colour, border, background. */
370
374
  --motion-hover-ease: var(--ds-ease-out);
371
375
  --motion-enter-duration: var(--ds-duration-base); /* Something appears — popover, dialog, drawer, toast. */
@@ -458,10 +462,6 @@
458
462
  --link: var(--ds-expressive-400);
459
463
  --link-hover: var(--ds-expressive-300);
460
464
  --link-visited: var(--ds-expressive-500);
461
- --icon-primary: var(--ds-neutral-200);
462
- --icon-secondary: var(--ds-neutral-500);
463
- --icon-on-color: var(--ds-neutral-0);
464
- --icon-disabled: var(--ds-neutral-700);
465
465
  --inverse: var(--ds-neutral-100);
466
466
  --inverse-foreground: var(--ds-neutral-900);
467
467
  --overlay: color-mix(in oklab, var(--ds-neutral-950) 50%, transparent);