@nexub/themes 2.1.0 → 2.3.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 +2 -2
- package/src/base.css +88 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexub/themes",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "CSS theme files for Nexub Design System — light, dark, and brand themes (Leap, Bookub, Payub, Founderub) as importable CSS.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/Nexub-AI/nexub-ds#readme",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"./founderub": "./src/founderub.css"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@nexub/tokens": "2.
|
|
40
|
+
"@nexub/tokens": "2.3.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@fontsource-variable/inter": "5.3.0",
|
package/src/base.css
CHANGED
|
@@ -153,6 +153,13 @@ button, input, select, textarea, optgroup {
|
|
|
153
153
|
font-family: inherit;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
/* Pointer cursor on buttons. Tailwind v3's preflight set it; v4's doesn't, so
|
|
157
|
+
this keeps Nexub buttons the same on both. Zero specificity (:where), so any
|
|
158
|
+
cursor-* utility and v3's preflight still win. */
|
|
159
|
+
:where(button:not(:disabled), [role='button']:not(:disabled)) {
|
|
160
|
+
cursor: pointer;
|
|
161
|
+
}
|
|
162
|
+
|
|
156
163
|
body {
|
|
157
164
|
min-height: 100vh;
|
|
158
165
|
margin: 0;
|
|
@@ -320,6 +327,62 @@ code, kbd, pre, samp {
|
|
|
320
327
|
.nx-motion { --nx-x: 0px !important; --nx-y: 0px !important; --nx-scale: 1 !important; }
|
|
321
328
|
}
|
|
322
329
|
|
|
330
|
+
/* Stagger: children of .nx-stagger rise in one after another (40ms apart, up
|
|
331
|
+
to the 12th; later ones arrive with the 12th). Set --nx-stagger to change
|
|
332
|
+
the step. Re-key the parent to replay. */
|
|
333
|
+
.nx-stagger > * {
|
|
334
|
+
--nx-y: 8px;
|
|
335
|
+
animation:
|
|
336
|
+
nx-fade-in var(--motion-spring-effects-default-duration) var(--motion-spring-effects-default-easing) both,
|
|
337
|
+
nx-move-in var(--motion-spring-spatial-default-duration) var(--motion-spring-spatial-default-easing) both;
|
|
338
|
+
animation-delay: calc(var(--nx-i, 0) * var(--nx-stagger, 40ms));
|
|
339
|
+
}
|
|
340
|
+
.nx-stagger > :nth-child(2) { --nx-i: 1; }
|
|
341
|
+
.nx-stagger > :nth-child(3) { --nx-i: 2; }
|
|
342
|
+
.nx-stagger > :nth-child(4) { --nx-i: 3; }
|
|
343
|
+
.nx-stagger > :nth-child(5) { --nx-i: 4; }
|
|
344
|
+
.nx-stagger > :nth-child(6) { --nx-i: 5; }
|
|
345
|
+
.nx-stagger > :nth-child(7) { --nx-i: 6; }
|
|
346
|
+
.nx-stagger > :nth-child(8) { --nx-i: 7; }
|
|
347
|
+
.nx-stagger > :nth-child(9) { --nx-i: 8; }
|
|
348
|
+
.nx-stagger > :nth-child(10) { --nx-i: 9; }
|
|
349
|
+
.nx-stagger > :nth-child(11) { --nx-i: 10; }
|
|
350
|
+
.nx-stagger > :nth-child(n + 12) { --nx-i: 11; }
|
|
351
|
+
|
|
352
|
+
/* ListTransition items: grow in from zero height and fade in; exit collapses
|
|
353
|
+
and fades (quicker, no overshoot). Rows animate via grid-template-rows so
|
|
354
|
+
the item needs no measured height. */
|
|
355
|
+
.nx-list-item { display: grid; grid-template-rows: 1fr; }
|
|
356
|
+
.nx-list-item-inner { min-height: 0; overflow: hidden; }
|
|
357
|
+
@keyframes nx-rows-in { from { grid-template-rows: 0fr; } }
|
|
358
|
+
@keyframes nx-rows-out { to { grid-template-rows: 0fr; } }
|
|
359
|
+
.nx-list-item[data-state='enter'] {
|
|
360
|
+
animation:
|
|
361
|
+
nx-rows-in var(--motion-spring-spatial-default-duration) var(--motion-spring-spatial-default-easing),
|
|
362
|
+
nx-fade-in var(--motion-spring-effects-default-duration) var(--motion-spring-effects-default-easing);
|
|
363
|
+
}
|
|
364
|
+
.nx-list-item[data-state='exit'] {
|
|
365
|
+
pointer-events: none;
|
|
366
|
+
animation:
|
|
367
|
+
nx-rows-out var(--motion-spring-effects-default-duration) var(--motion-spring-effects-default-easing) forwards,
|
|
368
|
+
nx-fade-out var(--motion-spring-effects-fast-duration) var(--motion-spring-effects-fast-easing) forwards;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/* SkeletonSwap: skeleton and content share one grid cell and crossfade. */
|
|
372
|
+
.nx-swap { display: grid; }
|
|
373
|
+
.nx-swap > * { grid-area: 1 / 1; min-width: 0; }
|
|
374
|
+
.nx-swap-in { animation: nx-fade-in var(--motion-spring-effects-default-duration) var(--motion-spring-effects-default-easing) both; }
|
|
375
|
+
.nx-swap-out {
|
|
376
|
+
pointer-events: none;
|
|
377
|
+
animation: nx-fade-out var(--motion-spring-effects-default-duration) var(--motion-spring-effects-default-easing) forwards;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
@media (prefers-reduced-motion: reduce) {
|
|
381
|
+
.nx-stagger > * { --nx-y: 0px; animation-delay: 0s; }
|
|
382
|
+
.nx-list-item[data-state='enter'] { animation: nx-fade-in var(--motion-spring-effects-default-duration) var(--motion-spring-effects-default-easing); }
|
|
383
|
+
.nx-list-item[data-state='exit'] { animation: nx-fade-out var(--motion-spring-effects-fast-duration) var(--motion-spring-effects-fast-easing) forwards; }
|
|
384
|
+
}
|
|
385
|
+
|
|
323
386
|
/* ─── Cards: lift, press, sheen ──────────────────────────────────────────────
|
|
324
387
|
Lift: hover raises 2px on the spatial spring with elevation 1 → 2; leaving
|
|
325
388
|
settles faster on the effects spring (a transition uses the *destination*
|
|
@@ -589,3 +652,28 @@ html.nexub-scroll-lock.nexub-scroll-gutter { scrollbar-gutter: stable; }
|
|
|
589
652
|
[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(
|
|
590
653
|
[data-state=closed]
|
|
591
654
|
){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}
|
|
655
|
+
|
|
656
|
+
/* Drawer / Sheet on our springs. vaul's copy above stays verbatim (tsup checks
|
|
657
|
+
it); these override its .5s iOS curve. Enter rides spatial, exit is quicker
|
|
658
|
+
on effects and never overshoots. Placed after vaul's rules so ties win. */
|
|
659
|
+
.nx-drawer[data-vaul-drawer][data-vaul-snap-points='false'] {
|
|
660
|
+
animation-duration: var(--motion-spring-spatial-default-duration);
|
|
661
|
+
animation-timing-function: var(--motion-spring-spatial-default-easing);
|
|
662
|
+
}
|
|
663
|
+
.nx-drawer[data-vaul-drawer][data-vaul-snap-points='false'][data-state='closed'] {
|
|
664
|
+
animation-duration: var(--motion-spring-effects-default-duration);
|
|
665
|
+
animation-timing-function: var(--motion-spring-effects-default-easing);
|
|
666
|
+
}
|
|
667
|
+
.nx-drawer-overlay[data-vaul-overlay][data-vaul-snap-points='false'] {
|
|
668
|
+
animation-duration: var(--motion-spring-effects-default-duration);
|
|
669
|
+
animation-timing-function: var(--motion-spring-effects-default-easing);
|
|
670
|
+
}
|
|
671
|
+
.nx-drawer-overlay[data-vaul-overlay][data-state='closed'] {
|
|
672
|
+
animation-duration: var(--motion-spring-effects-fast-duration);
|
|
673
|
+
animation-timing-function: var(--motion-spring-effects-fast-easing);
|
|
674
|
+
}
|
|
675
|
+
/* Reduced motion: the panel fades instead of sliding. */
|
|
676
|
+
@media (prefers-reduced-motion: reduce) {
|
|
677
|
+
.nx-drawer[data-vaul-drawer][data-vaul-snap-points='false'][data-state='open'] { animation-name: fadeIn; }
|
|
678
|
+
.nx-drawer[data-vaul-drawer][data-vaul-snap-points='false'][data-state='closed'] { animation-name: fadeOut; }
|
|
679
|
+
}
|