@apliteni/apliteni-ui 0.4.0 → 0.6.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 +8 -3
- package/src/assets/brand.generated/apliteni-logo-dark.svg +27 -0
- package/src/assets/brand.generated/apliteni-logo.svg +27 -0
- package/src/assets/brand.generated/apliteni-mark.svg +19 -0
- package/src/assets/brand.generated/index.js +5 -0
- package/src/assets/icons.js +106 -24
- package/src/assets/illustrations.js +68 -0
- package/src/components/drawer.js +200 -0
- package/src/components/dropdown.js +229 -0
- package/src/components/feedback.js +6 -0
- package/src/components/footer.js +95 -0
- package/src/components/index.js +46 -26
- package/src/components/nav.js +190 -0
- package/src/components/success.js +126 -0
- package/src/components/toasts.js +94 -0
- package/src/components/topbar.js +16 -15
- package/src/index.css +8 -1
- package/src/index.js +5 -0
- package/src/inline.js +19 -5
- package/src/motion.js +68 -0
- package/src/styles/base.css +0 -6
- package/src/styles/button.css +40 -11
- package/src/styles/callout.css +79 -12
- package/src/styles/drawer.css +166 -0
- package/src/styles/dropdown.css +133 -0
- package/src/styles/empty.css +84 -0
- package/src/styles/feedback.css +1 -1
- package/src/styles/footer.css +123 -0
- package/src/styles/motion.css +166 -0
- package/src/styles/nav.css +218 -0
- package/src/styles/success.css +189 -0
- package/src/styles/table.css +2 -15
- package/src/tokens/brand.generated.css +121 -0
- package/src/tokens/tokens.css +18 -5
- package/src/styles/aurora.css +0 -93
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/* ============================================================================
|
|
2
|
+
* apliteni-ui — BRAND PRIMITIVES (generated, do not edit)
|
|
3
|
+
*
|
|
4
|
+
* Synced from apliteni/design-system@954109e
|
|
5
|
+
* via: npm run tokens:sync
|
|
6
|
+
*
|
|
7
|
+
* The Apliteni umbrella-brand primitives: colour ramps + motion vocabulary
|
|
8
|
+
* (--duration-*, --easing-*). The upstream owns them; edit them there, not here.
|
|
9
|
+
* Our semantic tokens (--bg, --surface, --accent, ...) live in tokens.css and may
|
|
10
|
+
* reference these over time. Run `npm run tokens:drift` to see where they diverge.
|
|
11
|
+
* ========================================================================== */
|
|
12
|
+
:root {
|
|
13
|
+
--duration-instant: 80ms; /** Micro-interactions: checkbox tick, ripple. */
|
|
14
|
+
--duration-fast: 150ms; /** Hover states, button feedback. */
|
|
15
|
+
--duration-normal: 250ms; /** Panel open, dropdown, tooltip. */
|
|
16
|
+
--duration-slow: 400ms; /** Modal enter, page transition. */
|
|
17
|
+
--duration-slower: 600ms; /** Complex layout shifts, onboarding. */
|
|
18
|
+
--duration-crawl: 1000ms; /** Skeleton loaders, ambient loops. */
|
|
19
|
+
--easing-linear: linear; /** Progress bars, continuous animations. */
|
|
20
|
+
--easing-ease-in: cubic-bezier(0.4, 0, 1, 1); /** Elements leaving the screen. */
|
|
21
|
+
--easing-ease-out: cubic-bezier(0, 0, 0.2, 1); /** Elements entering the screen. */
|
|
22
|
+
--easing-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); /** Symmetrical transitions (e.g. toggle). */
|
|
23
|
+
--easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /** Playful overshoot — modals, cards. */
|
|
24
|
+
--easing-sharp: cubic-bezier(0.4, 0, 0.6, 1); /** Snappy dismiss, collapse. */
|
|
25
|
+
--color-apliteni-primary-black: #121212; /** Primary black. */
|
|
26
|
+
--color-apliteni-primary-violet: #914dff; /** Primary violet. */
|
|
27
|
+
--color-apliteni-primary-white: #ffffff; /** Primary white. */
|
|
28
|
+
--color-apliteni-supporting-red: #ff453a;
|
|
29
|
+
--color-apliteni-supporting-yellow: #ffd12f;
|
|
30
|
+
--color-apliteni-supporting-orange: #f79027;
|
|
31
|
+
--color-apliteni-supporting-green: #62c862;
|
|
32
|
+
--color-apliteni-supporting-blue: #3a86ff;
|
|
33
|
+
--color-apliteni-supporting-pink: #fa6c8f;
|
|
34
|
+
--color-apliteni-neutral-1: #121212;
|
|
35
|
+
--color-apliteni-neutral-2: #191919;
|
|
36
|
+
--color-apliteni-neutral-3: #434240;
|
|
37
|
+
--color-apliteni-neutral-4: #6a6866;
|
|
38
|
+
--color-apliteni-neutral-5: #928f8b;
|
|
39
|
+
--color-apliteni-neutral-6: #b9b5b1;
|
|
40
|
+
--color-apliteni-neutral-7: #e0dcd7;
|
|
41
|
+
--color-apliteni-neutral-8: #f1efed;
|
|
42
|
+
--color-apliteni-neutral-9: #ffffff;
|
|
43
|
+
--color-apliteni-red-1: #f33126;
|
|
44
|
+
--color-apliteni-red-2: #f93b30;
|
|
45
|
+
--color-apliteni-red-3: #ff453a;
|
|
46
|
+
--color-apliteni-red-4: #ff6754;
|
|
47
|
+
--color-apliteni-red-5: #ff836f;
|
|
48
|
+
--color-apliteni-red-6: #ff9d8a;
|
|
49
|
+
--color-apliteni-red-7: #ffb6a6;
|
|
50
|
+
--color-apliteni-red-8: #ffcfc3;
|
|
51
|
+
--color-apliteni-yellow-1: #f6c700;
|
|
52
|
+
--color-apliteni-yellow-2: #ffcf01;
|
|
53
|
+
--color-apliteni-yellow-3: #ffd12f;
|
|
54
|
+
--color-apliteni-yellow-4: #ffdb47;
|
|
55
|
+
--color-apliteni-yellow-5: #ffe16a;
|
|
56
|
+
--color-apliteni-yellow-6: #ffe789;
|
|
57
|
+
--color-apliteni-yellow-7: #ffeda7;
|
|
58
|
+
--color-apliteni-yellow-8: #fff3c5;
|
|
59
|
+
--color-apliteni-orange-1: #ff7700;
|
|
60
|
+
--color-apliteni-orange-2: #ff8100;
|
|
61
|
+
--color-apliteni-orange-3: #ff8f18;
|
|
62
|
+
--color-apliteni-orange-4: #ffa43a;
|
|
63
|
+
--color-apliteni-orange-5: #ffaa52;
|
|
64
|
+
--color-apliteni-orange-6: #fab671;
|
|
65
|
+
--color-apliteni-orange-7: #fbcb9a;
|
|
66
|
+
--color-apliteni-orange-8: #fddcbb;
|
|
67
|
+
--color-apliteni-green-1: #48a848;
|
|
68
|
+
--color-apliteni-green-2: #4faf4f;
|
|
69
|
+
--color-apliteni-green-3: #62c862;
|
|
70
|
+
--color-apliteni-green-4: #6be56b;
|
|
71
|
+
--color-apliteni-green-5: #76f076;
|
|
72
|
+
--color-apliteni-green-6: #8ef78e;
|
|
73
|
+
--color-apliteni-green-7: #a9ffa9;
|
|
74
|
+
--color-apliteni-green-8: #cbffcb;
|
|
75
|
+
--color-apliteni-blue-1: #3572d4;
|
|
76
|
+
--color-apliteni-blue-2: #3577df;
|
|
77
|
+
--color-apliteni-blue-3: #3a86ff;
|
|
78
|
+
--color-apliteni-blue-4: #5696ff;
|
|
79
|
+
--color-apliteni-blue-5: #6fa6ff;
|
|
80
|
+
--color-apliteni-blue-6: #87b6ff;
|
|
81
|
+
--color-apliteni-blue-7: #9fc5ff;
|
|
82
|
+
--color-apliteni-blue-8: #b7d4ff;
|
|
83
|
+
--color-apliteni-pink-1: #fc547e;
|
|
84
|
+
--color-apliteni-pink-2: #fb6288;
|
|
85
|
+
--color-apliteni-pink-3: #fa6c8f;
|
|
86
|
+
--color-apliteni-pink-4: #fa7b9b;
|
|
87
|
+
--color-apliteni-pink-5: #fb8da8;
|
|
88
|
+
--color-apliteni-pink-6: #fb9fb6;
|
|
89
|
+
--color-apliteni-pink-7: #fbb2c5;
|
|
90
|
+
--color-apliteni-pink-8: #fbc6d5;
|
|
91
|
+
--color-apliteni-violet-1: #914dff;
|
|
92
|
+
--color-apliteni-violet-2: #9b5dff;
|
|
93
|
+
--color-apliteni-violet-3: #a771ff;
|
|
94
|
+
--color-apliteni-violet-4: #b586fe;
|
|
95
|
+
--color-apliteni-violet-5: #c39bfc;
|
|
96
|
+
--color-apliteni-violet-6: #cfaffa;
|
|
97
|
+
--color-apliteni-violet-7: #dac3f8;
|
|
98
|
+
--color-apliteni-violet-8: #e5d8f5;
|
|
99
|
+
--color-apliteni-theme-dark-border: #333130; /** Default border. */
|
|
100
|
+
--color-apliteni-theme-dark-border-subtle: #2a2826; /** Subtle dividers. */
|
|
101
|
+
--color-apliteni-theme-light-accent-subtle: #efe1ff; /** Accent tint, badges. */
|
|
102
|
+
--color-apliteni-theme-dark-background: var(--color-apliteni-neutral-1); /** Page/app background. */
|
|
103
|
+
--color-apliteni-theme-dark-surface: var(--color-apliteni-neutral-2); /** Cards, panels. */
|
|
104
|
+
--color-apliteni-theme-dark-surface-raised: var(--color-apliteni-neutral-3); /** Elevated surfaces, tooltips. */
|
|
105
|
+
--color-apliteni-theme-dark-text-primary: var(--color-apliteni-primary-white); /** Headings, body. */
|
|
106
|
+
--color-apliteni-theme-dark-text-muted: var(--color-apliteni-neutral-5); /** Secondary text, labels. */
|
|
107
|
+
--color-apliteni-theme-dark-text-disabled: var(--color-apliteni-neutral-4); /** Disabled state. */
|
|
108
|
+
--color-apliteni-theme-dark-accent: var(--color-apliteni-primary-violet); /** Primary action, links. */
|
|
109
|
+
--color-apliteni-theme-dark-accent-hover: var(--color-apliteni-violet-2); /** Accent on hover. */
|
|
110
|
+
--color-apliteni-theme-dark-accent-subtle: var(--color-apliteni-violet-8); /** Accent tint, badges. */
|
|
111
|
+
--color-apliteni-theme-light-background: var(--color-apliteni-neutral-8); /** Page/app background. */
|
|
112
|
+
--color-apliteni-theme-light-surface: var(--color-apliteni-primary-white); /** Cards, panels. */
|
|
113
|
+
--color-apliteni-theme-light-surface-raised: var(--color-apliteni-neutral-9); /** Elevated surfaces, tooltips. */
|
|
114
|
+
--color-apliteni-theme-light-border: var(--color-apliteni-neutral-7); /** Default border. */
|
|
115
|
+
--color-apliteni-theme-light-border-subtle: var(--color-apliteni-neutral-8); /** Subtle dividers. */
|
|
116
|
+
--color-apliteni-theme-light-text-primary: var(--color-apliteni-primary-black); /** Headings, body. */
|
|
117
|
+
--color-apliteni-theme-light-text-muted: var(--color-apliteni-neutral-5); /** Secondary text, labels. */
|
|
118
|
+
--color-apliteni-theme-light-text-disabled: var(--color-apliteni-neutral-6); /** Disabled state. */
|
|
119
|
+
--color-apliteni-theme-light-accent: var(--color-apliteni-primary-violet); /** Primary action, links. */
|
|
120
|
+
--color-apliteni-theme-light-accent-hover: var(--color-apliteni-violet-1); /** Accent on hover. */
|
|
121
|
+
}
|
package/src/tokens/tokens.css
CHANGED
|
@@ -70,11 +70,24 @@
|
|
|
70
70
|
--tracking-wide: 0.04em;
|
|
71
71
|
--tracking-caps: 0.14em;
|
|
72
72
|
|
|
73
|
-
/* -- Motion -------------------------------------------------------------
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
/* -- Motion -------------------------------------------------------------
|
|
74
|
+
* Durations + easings are the Apliteni brand's motion vocabulary, synced
|
|
75
|
+
* from design-system into brand.generated.css (--duration-*, --easing-*).
|
|
76
|
+
* The kit's legacy --dur-* and --ease names alias onto them, so every existing
|
|
77
|
+
* component transitively consumes the brand primitives — one vocabulary,
|
|
78
|
+
* zero drift. Fallbacks keep tokens.css self-sufficient when imported
|
|
79
|
+
* without brand.generated.css. Delays are the kit's own (not a brand
|
|
80
|
+
* concern). The reusable effect layer lives in styles/motion.css. */
|
|
81
|
+
--ease: var(--easing-ease-in-out, cubic-bezier(0.4, 0, 0.2, 1));
|
|
82
|
+
--dur-fast: var(--duration-fast, 0.15s); /* 150ms — hover, press */
|
|
83
|
+
--dur-med: var(--duration-normal, 0.25s); /* 250ms — panels, dropdowns */
|
|
84
|
+
--dur-slow: var(--duration-slow, 0.4s); /* 400ms — enters, reveals */
|
|
85
|
+
|
|
86
|
+
--delay-1: 60ms;
|
|
87
|
+
--delay-2: 120ms;
|
|
88
|
+
--delay-3: 180ms;
|
|
89
|
+
--delay-4: 240ms;
|
|
90
|
+
--delay-5: 300ms;
|
|
78
91
|
|
|
79
92
|
/* -- Elevation (z) ------------------------------------------------------ */
|
|
80
93
|
--z-base: 1;
|
package/src/styles/aurora.css
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/* ============================================================================
|
|
2
|
-
* aurora — ambient warm backdrop: layered blurred glow "blobs" + optional
|
|
3
|
-
* paper grain. The kit's one signature page background, so every app gets one
|
|
4
|
-
* warm identity for free.
|
|
5
|
-
*
|
|
6
|
-
* Markup comes from aurora() in components/index.js, but you can hand-roll it:
|
|
7
|
-
* <div class="ui-aurora ui-aurora--animated" aria-hidden="true">
|
|
8
|
-
* <span class="ui-aurora__blob ui-aurora__blob--accent" style="--au-x:12%;--au-y:-4%"></span>
|
|
9
|
-
* ...
|
|
10
|
-
* <span class="ui-aurora__grain"></span>
|
|
11
|
-
* </div>
|
|
12
|
-
*
|
|
13
|
-
* Colours default to the accent glow tokens, so the whole field re-themes with
|
|
14
|
-
* the sub-theme (phoenix / ocean / emerald) and holds up in dark AND light with
|
|
15
|
-
* no per-accent rules. Override --au-1/2/3 on .ui-aurora to retune.
|
|
16
|
-
* ========================================================================== */
|
|
17
|
-
|
|
18
|
-
.ui-aurora {
|
|
19
|
-
/* Tone slots — mixed to a visible alpha off the accent families so the field
|
|
20
|
-
actually reads as an aurora (the --glow-* tokens are tuned faint for the
|
|
21
|
-
small .ui-bg-* utilities). --purple-light + --grad-to re-point per accent,
|
|
22
|
-
so the whole field re-themes; --cyan stays a fixed teal. Override to retune. */
|
|
23
|
-
--au-1: color-mix(in srgb, var(--purple-light) 52%, transparent);
|
|
24
|
-
--au-2: color-mix(in srgb, var(--cyan) 40%, transparent);
|
|
25
|
-
--au-3: color-mix(in srgb, var(--grad-to) 44%, transparent);
|
|
26
|
-
|
|
27
|
-
position: absolute;
|
|
28
|
-
inset: 0;
|
|
29
|
-
z-index: 0;
|
|
30
|
-
overflow: hidden;
|
|
31
|
-
pointer-events: none;
|
|
32
|
-
}
|
|
33
|
-
/* Light theme: the accent families are darker solids, so dial the mix right
|
|
34
|
-
down — a whisper of tint, not a wash. */
|
|
35
|
-
:root[data-theme="light"] .ui-aurora {
|
|
36
|
-
--au-1: color-mix(in srgb, var(--purple-light) 18%, transparent);
|
|
37
|
-
--au-2: color-mix(in srgb, var(--cyan) 15%, transparent);
|
|
38
|
-
--au-3: color-mix(in srgb, var(--grad-to) 17%, transparent);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/* Full-bleed: pin to the viewport behind the whole page. Give real content a
|
|
42
|
-
normal (non-negative) stacking context and it sits on top automatically. */
|
|
43
|
-
.ui-aurora--fixed {
|
|
44
|
-
position: fixed;
|
|
45
|
-
z-index: -1;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/* A blurred radial blob. Position via --au-x / --au-y (its centre), scale via
|
|
49
|
-
--au-size. Centring uses `translate` so the drift animation owns `transform`. */
|
|
50
|
-
.ui-aurora__blob {
|
|
51
|
-
position: absolute;
|
|
52
|
-
top: var(--au-y, 50%);
|
|
53
|
-
left: var(--au-x, 50%);
|
|
54
|
-
width: var(--au-size, 60%);
|
|
55
|
-
aspect-ratio: 1;
|
|
56
|
-
translate: -50% -50%;
|
|
57
|
-
border-radius: 50%;
|
|
58
|
-
background: radial-gradient(circle at center, var(--au-tone), transparent 68%);
|
|
59
|
-
filter: blur(70px);
|
|
60
|
-
will-change: transform;
|
|
61
|
-
}
|
|
62
|
-
.ui-aurora__blob--accent { --au-tone: var(--au-1); }
|
|
63
|
-
.ui-aurora__blob--teal { --au-tone: var(--au-2); }
|
|
64
|
-
.ui-aurora__blob--warm { --au-tone: var(--au-3); }
|
|
65
|
-
|
|
66
|
-
/* Slow ambient drift. Staggered per blob via --au-delay so they never line up. */
|
|
67
|
-
.ui-aurora--animated .ui-aurora__blob {
|
|
68
|
-
animation: ui-aurora-drift 26s ease-in-out infinite alternate;
|
|
69
|
-
animation-delay: var(--au-delay, 0s);
|
|
70
|
-
}
|
|
71
|
-
@keyframes ui-aurora-drift {
|
|
72
|
-
from { transform: translate(-2%, -1%) scale(1); }
|
|
73
|
-
to { transform: translate(3%, 2%) scale(1.12); }
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/* Paper grain — a low-opacity fractal-noise veil. `overlay` in dark keeps it
|
|
77
|
-
from muddying the blacks; `multiply` in light reads as fine tooth on paper. */
|
|
78
|
-
.ui-aurora__grain {
|
|
79
|
-
position: absolute;
|
|
80
|
-
inset: 0;
|
|
81
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
|
|
82
|
-
background-size: 160px 160px;
|
|
83
|
-
opacity: 0.5;
|
|
84
|
-
mix-blend-mode: overlay;
|
|
85
|
-
}
|
|
86
|
-
:root[data-theme="light"] .ui-aurora__grain {
|
|
87
|
-
opacity: 0.4;
|
|
88
|
-
mix-blend-mode: multiply;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
@media (prefers-reduced-motion: reduce) {
|
|
92
|
-
.ui-aurora__blob { animation: none; }
|
|
93
|
-
}
|