release: WRNexusJS 0.2.56
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/ai",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/authz",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/authz — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
+11
-11
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/cli",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/cli — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -28,16 +28,16 @@
|
||||
"wrnexus": "./dist/index.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/core": "^0.2.55",
|
||||
"@wrnexus/router": "^0.2.55",
|
||||
"@wrnexus/csr": "^0.2.55",
|
||||
"@wrnexus/compiler": "^0.2.55",
|
||||
"@wrnexus/styles": "^0.2.55",
|
||||
"@wrnexus/dev-server": "^0.2.55",
|
||||
"@wrnexus/ui": "^0.2.55",
|
||||
"@wrnexus/validation": "^0.2.55",
|
||||
"@wrnexus/i18n": "^0.2.55",
|
||||
"@wrnexus/db": "^0.2.55"
|
||||
"@wrnexus/core": "^0.2.56",
|
||||
"@wrnexus/router": "^0.2.56",
|
||||
"@wrnexus/csr": "^0.2.56",
|
||||
"@wrnexus/compiler": "^0.2.56",
|
||||
"@wrnexus/styles": "^0.2.56",
|
||||
"@wrnexus/dev-server": "^0.2.56",
|
||||
"@wrnexus/ui": "^0.2.56",
|
||||
"@wrnexus/validation": "^0.2.56",
|
||||
"@wrnexus/i18n": "^0.2.56",
|
||||
"@wrnexus/db": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/compiler",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/compiler — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/core",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/core — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/csr",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/csr — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -21,7 +21,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/core": "^0.2.55"
|
||||
"@wrnexus/core": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/db",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/db — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/dev-server",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/dev-server — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -25,18 +25,18 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/core": "^0.2.55",
|
||||
"@wrnexus/router": "^0.2.55",
|
||||
"@wrnexus/ssr": "^0.2.55",
|
||||
"@wrnexus/csr": "^0.2.55",
|
||||
"@wrnexus/compiler": "^0.2.55",
|
||||
"@wrnexus/styles": "^0.2.55",
|
||||
"@wrnexus/ui": "^0.2.55",
|
||||
"@wrnexus/validation": "^0.2.55",
|
||||
"@wrnexus/i18n": "^0.2.55",
|
||||
"@wrnexus/db": "^0.2.55",
|
||||
"@wrnexus/pubsub": "^0.2.55",
|
||||
"@wrnexus/uploader": "^0.2.55"
|
||||
"@wrnexus/core": "^0.2.56",
|
||||
"@wrnexus/router": "^0.2.56",
|
||||
"@wrnexus/ssr": "^0.2.56",
|
||||
"@wrnexus/csr": "^0.2.56",
|
||||
"@wrnexus/compiler": "^0.2.56",
|
||||
"@wrnexus/styles": "^0.2.56",
|
||||
"@wrnexus/ui": "^0.2.56",
|
||||
"@wrnexus/validation": "^0.2.56",
|
||||
"@wrnexus/i18n": "^0.2.56",
|
||||
"@wrnexus/db": "^0.2.56",
|
||||
"@wrnexus/pubsub": "^0.2.56",
|
||||
"@wrnexus/uploader": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/encryption",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/encryption — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/helpers",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "Safe convenience helpers for WrNexus request contexts and common application flows.",
|
||||
"license": "MIT",
|
||||
@@ -21,7 +21,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/core": "^0.2.55"
|
||||
"@wrnexus/core": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/i18n",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/i18n — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -21,7 +21,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/core": "^0.2.55"
|
||||
"@wrnexus/core": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/jwt",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/jwt — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/mobile",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/mobile — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -21,7 +21,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/native": "^0.2.55"
|
||||
"@wrnexus/native": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/native",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/native — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/oauth",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/oauth — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/pubsub",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/pubsub — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/queue",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/queue — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/reactive",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/reactive — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/router",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/router — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -21,8 +21,8 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/compiler": "^0.2.55",
|
||||
"@wrnexus/core": "^0.2.55"
|
||||
"@wrnexus/compiler": "^0.2.56",
|
||||
"@wrnexus/core": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/ssr",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/ssr — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -21,7 +21,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/core": "^0.2.55"
|
||||
"@wrnexus/core": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/styles",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/styles — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -21,7 +21,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/uploader": "^0.2.55"
|
||||
"@wrnexus/uploader": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/test",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/test — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/tracking",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/tracking — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -108,6 +108,23 @@ are `.wrn` files rendered server-side.
|
||||
The framework serves this stylesheet once at `/__wrnexus/ui.css`, so pages get all
|
||||
component styles from a single request.
|
||||
|
||||
### Tailwind and motion
|
||||
|
||||
Components use static Tailwind utility classes alongside the shared `.wire-*`
|
||||
layer. If the package is consumed by a separate Tailwind build, include its
|
||||
component sources so every utility is generated:
|
||||
|
||||
```css
|
||||
@import "tailwindcss";
|
||||
@source "../node_modules/@wrnexus/ui/components/*.wrn";
|
||||
```
|
||||
|
||||
The shared stylesheet gives all component boundaries consistent, GPU-friendly
|
||||
entry and interaction motion. Override `--wire-motion-fast`,
|
||||
`--wire-motion-base`, `--wire-motion-slow`, `--wire-ease-standard`, or
|
||||
`--wire-ease-emphasized` to tune it. Hover lift is limited to precise pointing
|
||||
devices and `prefers-reduced-motion` is honored automatically.
|
||||
|
||||
## Usage
|
||||
|
||||
### Auto-discovery
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/ui",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/ui — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -23,7 +23,7 @@
|
||||
"./ui.css": "./ui.css"
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/core": "^0.2.55"
|
||||
"@wrnexus/core": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
|
||||
@@ -937,6 +937,127 @@
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
/* --- Motion system -------------------------------------------------------
|
||||
* Applies to both Tailwind-authored and token-authored components. Motion is
|
||||
* intentionally limited to composited properties so interaction stays fluid.
|
||||
*/
|
||||
:root {
|
||||
--wire-motion-fast: 120ms;
|
||||
--wire-motion-base: 200ms;
|
||||
--wire-motion-slow: 320ms;
|
||||
--wire-ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
||||
--wire-ease-emphasized: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
|
||||
[data-component] {
|
||||
animation: wire-component-enter var(--wire-motion-slow) var(--wire-ease-emphasized) both;
|
||||
}
|
||||
|
||||
[data-component]
|
||||
:where(button, a, input, select, textarea, summary, [role="button"], [role="tab"]) {
|
||||
transition-property: color, background-color, border-color, opacity, box-shadow, transform;
|
||||
transition-duration: var(--wire-motion-base);
|
||||
transition-timing-function: var(--wire-ease-standard);
|
||||
}
|
||||
|
||||
[data-component] :where(input, select, textarea, .wire-input, .wire-select) {
|
||||
transition-duration: var(--wire-motion-fast);
|
||||
}
|
||||
|
||||
[data-component] :where(.wire-card, .wire-panel, .wire-surface, .wire-catalog-card, article) {
|
||||
transition-property: border-color, background-color, box-shadow, transform;
|
||||
transition-duration: var(--wire-motion-base);
|
||||
transition-timing-function: var(--wire-ease-emphasized);
|
||||
}
|
||||
|
||||
[data-component] :where(.wire-overlay, [role="dialog"]) {
|
||||
animation: wire-overlay-enter var(--wire-motion-base) var(--wire-ease-standard) both;
|
||||
}
|
||||
|
||||
[data-component] :where(.wire-dialog, [role="dialog"] > :first-child) {
|
||||
animation: wire-dialog-enter var(--wire-motion-slow) var(--wire-ease-emphasized) both;
|
||||
}
|
||||
|
||||
[data-component] :where([role="menu"], [role="listbox"], [role="tooltip"], .wire-mega-menu__panel) {
|
||||
transform-origin: top center;
|
||||
animation: wire-popover-enter var(--wire-motion-base) var(--wire-ease-emphasized) both;
|
||||
}
|
||||
|
||||
[data-component] :where([role="progressbar"], progress) {
|
||||
transition: inline-size var(--wire-motion-slow) var(--wire-ease-emphasized);
|
||||
}
|
||||
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
[data-component] :where(button, .wire-btn, [role="button"]):not(:disabled):hover {
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
[data-component] :where(.wire-card, .wire-catalog-card, article):has(a):hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 0.75rem 2rem rgb(15 23 42 / 0.12);
|
||||
}
|
||||
}
|
||||
|
||||
[data-component] :where(button, .wire-btn, [role="button"]):not(:disabled):active {
|
||||
transform: translateY(0) scale(0.98);
|
||||
transition-duration: var(--wire-motion-fast);
|
||||
}
|
||||
|
||||
@keyframes wire-component-enter {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(4px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes wire-overlay-enter {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes wire-dialog-enter {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(12px) scale(0.98);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0) scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes wire-popover-enter {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(-4px) scale(0.98);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0) scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
[data-component],
|
||||
[data-component] *,
|
||||
[data-component] *::before,
|
||||
[data-component] *::after {
|
||||
scroll-behavior: auto !important;
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
transition-delay: 0ms !important;
|
||||
}
|
||||
}
|
||||
@media (max-width: 480px) {
|
||||
.wire-form-row {
|
||||
grid-template-columns: 1fr;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/uploader",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/uploader — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
@@ -21,7 +21,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@wrnexus/core": "^0.2.55"
|
||||
"@wrnexus/core": "^0.2.56"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/validation",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"description": "@wrnexus/validation — part of the WrNexus framework.",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/ai",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/authz",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/cli",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -566,6 +566,15 @@ const MIGRATIONS: Migration[] = [
|
||||
// No generated application files require automatic migration.
|
||||
},
|
||||
},
|
||||
{
|
||||
version: "0.2.56",
|
||||
id: "ui-motion-system",
|
||||
description:
|
||||
"Adds consistent, accessible motion and modern interactions across the shared UI catalog.",
|
||||
apply() {
|
||||
// No generated application files require automatic migration.
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
/** Release tooling uses this to require an explicit migration entry per version. */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/compiler",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/core",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/csr",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/db",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/dev-server",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/encryption",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/helpers",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "Safe convenience helpers for WrNexus request contexts and common application flows.",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/i18n",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/jwt",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/mobile",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/native",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/oauth",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/pubsub",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/queue",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/reactive",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/router",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/ssr",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/styles",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/test",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/tracking",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -108,6 +108,23 @@ are `.wrn` files rendered server-side.
|
||||
The framework serves this stylesheet once at `/__wrnexus/ui.css`, so pages get all
|
||||
component styles from a single request.
|
||||
|
||||
### Tailwind and motion
|
||||
|
||||
Components use static Tailwind utility classes alongside the shared `.wire-*`
|
||||
layer. If the package is consumed by a separate Tailwind build, include its
|
||||
component sources so every utility is generated:
|
||||
|
||||
```css
|
||||
@import "tailwindcss";
|
||||
@source "../node_modules/@wrnexus/ui/components/*.wrn";
|
||||
```
|
||||
|
||||
The shared stylesheet gives all component boundaries consistent, GPU-friendly
|
||||
entry and interaction motion. Override `--wire-motion-fast`,
|
||||
`--wire-motion-base`, `--wire-motion-slow`, `--wire-ease-standard`, or
|
||||
`--wire-ease-emphasized` to tune it. Hover lift is limited to precise pointing
|
||||
devices and `prefers-reduced-motion` is honored automatically.
|
||||
|
||||
## Usage
|
||||
|
||||
### Auto-discovery
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/ui",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -57,6 +57,11 @@ test("component-system CSS includes responsive, theme-token, focus, and reduced-
|
||||
expect(css).toContain(":focus-visible");
|
||||
expect(css).toContain("var(--wire-color-surface)");
|
||||
expect(css).toContain("min-height: 44px");
|
||||
expect(css).toContain("--wire-motion-base");
|
||||
expect(css).toContain("--wire-ease-emphasized");
|
||||
expect(css).toContain("@keyframes wire-component-enter");
|
||||
expect(css).toContain("@keyframes wire-dialog-enter");
|
||||
expect(css).toContain("@media (hover: hover) and (pointer: fine)");
|
||||
});
|
||||
|
||||
test.each(uiComponentNames())("bundled UI component %s compiles", (name) => {
|
||||
|
||||
@@ -937,6 +937,127 @@
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
/* --- Motion system -------------------------------------------------------
|
||||
* Applies to both Tailwind-authored and token-authored components. Motion is
|
||||
* intentionally limited to composited properties so interaction stays fluid.
|
||||
*/
|
||||
:root {
|
||||
--wire-motion-fast: 120ms;
|
||||
--wire-motion-base: 200ms;
|
||||
--wire-motion-slow: 320ms;
|
||||
--wire-ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
||||
--wire-ease-emphasized: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
|
||||
[data-component] {
|
||||
animation: wire-component-enter var(--wire-motion-slow) var(--wire-ease-emphasized) both;
|
||||
}
|
||||
|
||||
[data-component]
|
||||
:where(button, a, input, select, textarea, summary, [role="button"], [role="tab"]) {
|
||||
transition-property: color, background-color, border-color, opacity, box-shadow, transform;
|
||||
transition-duration: var(--wire-motion-base);
|
||||
transition-timing-function: var(--wire-ease-standard);
|
||||
}
|
||||
|
||||
[data-component] :where(input, select, textarea, .wire-input, .wire-select) {
|
||||
transition-duration: var(--wire-motion-fast);
|
||||
}
|
||||
|
||||
[data-component] :where(.wire-card, .wire-panel, .wire-surface, .wire-catalog-card, article) {
|
||||
transition-property: border-color, background-color, box-shadow, transform;
|
||||
transition-duration: var(--wire-motion-base);
|
||||
transition-timing-function: var(--wire-ease-emphasized);
|
||||
}
|
||||
|
||||
[data-component] :where(.wire-overlay, [role="dialog"]) {
|
||||
animation: wire-overlay-enter var(--wire-motion-base) var(--wire-ease-standard) both;
|
||||
}
|
||||
|
||||
[data-component] :where(.wire-dialog, [role="dialog"] > :first-child) {
|
||||
animation: wire-dialog-enter var(--wire-motion-slow) var(--wire-ease-emphasized) both;
|
||||
}
|
||||
|
||||
[data-component] :where([role="menu"], [role="listbox"], [role="tooltip"], .wire-mega-menu__panel) {
|
||||
transform-origin: top center;
|
||||
animation: wire-popover-enter var(--wire-motion-base) var(--wire-ease-emphasized) both;
|
||||
}
|
||||
|
||||
[data-component] :where([role="progressbar"], progress) {
|
||||
transition: inline-size var(--wire-motion-slow) var(--wire-ease-emphasized);
|
||||
}
|
||||
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
[data-component] :where(button, .wire-btn, [role="button"]):not(:disabled):hover {
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
[data-component] :where(.wire-card, .wire-catalog-card, article):has(a):hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 0.75rem 2rem rgb(15 23 42 / 0.12);
|
||||
}
|
||||
}
|
||||
|
||||
[data-component] :where(button, .wire-btn, [role="button"]):not(:disabled):active {
|
||||
transform: translateY(0) scale(0.98);
|
||||
transition-duration: var(--wire-motion-fast);
|
||||
}
|
||||
|
||||
@keyframes wire-component-enter {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(4px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes wire-overlay-enter {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes wire-dialog-enter {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(12px) scale(0.98);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0) scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes wire-popover-enter {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(-4px) scale(0.98);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0) scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
[data-component],
|
||||
[data-component] *,
|
||||
[data-component] *::before,
|
||||
[data-component] *::after {
|
||||
scroll-behavior: auto !important;
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
transition-delay: 0ms !important;
|
||||
}
|
||||
}
|
||||
@media (max-width: 480px) {
|
||||
.wire-form-row {
|
||||
grid-template-columns: 1fr;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/uploader",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/validation",
|
||||
"version": "0.2.55",
|
||||
"version": "0.2.56",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { existsSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
|
||||
import { join } from "node:path";
|
||||
|
||||
const version = "0.2.55";
|
||||
const version = "0.2.56";
|
||||
|
||||
const dependencyGroups = [
|
||||
"dependencies",
|
||||
|
||||
Reference in New Issue
Block a user