juxscript 1.1.107 → 1.1.109

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.
@@ -1,143 +1,10 @@
1
1
  /* ═══════════════════════════════════════════════════════════════════
2
- * STACK LAYOUT COMPONENTS
3
- * ═══════════════════════════════════════════════════════════════════ */
4
-
5
- /* Vertical Stack */
6
- .jux-vstack {
7
- display: flex;
8
- flex-direction: column;
9
- gap: 1rem; /* Default spacing */
10
- }
11
-
12
- .jux-vstack-tight {
13
- gap: 0.5rem; /* 8px */
14
- }
15
-
16
- .jux-vstack-loose {
17
- gap: 1.5rem; /* 24px */
18
- }
19
-
20
- .jux-vstack-none {
21
- gap: 0;
22
- }
23
-
24
- /* Horizontal Stack */
25
- .jux-hstack {
26
- display: flex;
27
- flex-direction: row;
28
- align-items: center;
29
- gap: 1rem; /* Default spacing */
30
- }
31
-
32
- .jux-hstack-tight {
33
- gap: 0.5rem;
34
- }
35
-
36
- .jux-hstack-loose {
37
- gap: 1.5rem;
38
- }
39
-
40
- .jux-hstack-none {
41
- gap: 0;
42
- }
43
-
44
- /* Z-Stack (Layered/Overlapping) */
45
- .jux-zstack {
46
- display: grid;
47
- grid-template-columns: 1fr;
48
- grid-template-rows: 1fr;
49
- position: relative;
50
- }
51
-
52
- .jux-zstack > * {
53
- grid-column: 1;
54
- grid-row: 1;
55
- }
56
-
57
- .jux-zstack-tight > * {
58
- margin: 0.25rem;
59
- }
60
-
61
- .jux-zstack-loose > * {
62
- margin: 0.75rem;
63
- }
64
-
65
- .jux-zstack-none > * {
66
- margin: 0;
67
- }
68
-
69
- /* Stack Alignment Options */
70
- .jux-stack-start {
71
- align-items: flex-start;
72
- }
73
-
74
- .jux-stack-center {
75
- align-items: center;
76
- }
77
-
78
- .jux-stack-end {
79
- align-items: flex-end;
80
- }
81
-
82
- .jux-stack-stretch {
83
- align-items: stretch;
84
- }
85
-
86
- /* Stack Justification Options */
87
- .jux-stack-justify-start {
88
- justify-content: flex-start;
89
- }
90
-
91
- .jux-stack-justify-center {
92
- justify-content: center;
93
- }
94
-
95
- .jux-stack-justify-end {
96
- justify-content: flex-end;
97
- }
98
-
99
- .jux-stack-justify-between {
100
- justify-content: space-between;
101
- }
102
-
103
- .jux-stack-justify-around {
104
- justify-content: space-around;
105
- }
106
-
107
- .jux-stack-justify-evenly {
108
- justify-content: space-evenly;
109
- }
110
-
111
- /* Responsive Stacks */
112
- @media (max-width: 768px) {
113
- .jux-hstack-responsive {
114
- flex-direction: column;
115
- }
116
- }
117
-
118
- /* Stack with Dividers */
119
- .jux-vstack-divider > *:not(:last-child) {
120
- padding-bottom: 1rem;
121
- border-bottom: 1px solid #e4e4e7;
122
- margin-bottom: 1rem;
123
- }
124
-
125
- .jux-hstack-divider > *:not(:last-child) {
126
- padding-right: 1rem;
127
- border-right: 1px solid #e4e4e7;
128
- margin-right: 1rem;
129
- }
130
-
131
- .jux-zstack-divider > * {
132
- border: 1px solid #e4e4e7;
133
- }
134
-
135
- /* ═══════════════════════════════════════════════════════════════════
136
- * ANIMATION & TRANSITION CLASSES
2
+ * JUX ANIMATION SYSTEM
3
+ * Keyframes, animation classes, speed/timing modifiers
137
4
  * ═══════════════════════════════════════════════════════════════════ */
138
5
 
139
6
  /* ═════════════════════════════════════════════════════════════════
140
- * KEYFRAME DEFINITIONS (Shared)
7
+ * KEYFRAME DEFINITIONS
141
8
  * ═════════════════════════════════════════════════════════════════ */
142
9
 
143
10
  @keyframes jux-fade-in {
@@ -216,127 +83,99 @@
216
83
  }
217
84
 
218
85
  /* ═════════════════════════════════════════════════════════════════
219
- * STACK-LEVEL ANIMATIONS (Apply to container itself)
86
+ * CONTAINER-LEVEL ANIMATIONS (Apply to element itself)
220
87
  * ═════════════════════════════════════════════════════════════════ */
221
88
 
222
- .jux-stack-fade-in {
223
- animation: jux-fade-in 0.3s ease-out;
224
- }
225
-
226
- .jux-stack-slide-up {
227
- animation: jux-slide-in-up 0.4s ease-out;
228
- }
229
-
230
- .jux-stack-slide-down {
231
- animation: jux-slide-in-down 0.4s ease-out;
232
- }
233
-
234
- .jux-stack-slide-left {
235
- animation: jux-slide-in-left 0.4s ease-out;
236
- }
89
+ .jux-stack-fade-in { animation: jux-fade-in 0.3s ease-out; }
90
+ .jux-stack-slide-up { animation: jux-slide-in-up 0.4s ease-out; }
91
+ .jux-stack-slide-down { animation: jux-slide-in-down 0.4s ease-out; }
92
+ .jux-stack-slide-left { animation: jux-slide-in-left 0.4s ease-out; }
93
+ .jux-stack-slide-right { animation: jux-slide-in-right 0.4s ease-out; }
94
+ .jux-stack-scale-in { animation: jux-scale-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); }
95
+ .jux-stack-zoom-in { animation: jux-zoom-in 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); }
96
+ .jux-stack-rotate-in { animation: jux-rotate-in 0.5s ease-out; }
97
+ .jux-stack-flip-x { animation: jux-flip-in-x 0.6s ease-out; }
98
+ .jux-stack-flip-y { animation: jux-flip-in-y 0.6s ease-out; }
99
+ .jux-stack-bounce-in { animation: jux-bounce-in 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55); }
100
+ .jux-stack-elastic-in { animation: jux-elastic-in 0.8s ease-out; }
101
+ .jux-stack-blur-in { animation: jux-blur-in 0.5s ease-out; }
102
+ .jux-stack-glow { animation: jux-glow-pulse 2s ease-in-out infinite; }
237
103
 
238
- .jux-stack-slide-right {
239
- animation: jux-slide-in-right 0.4s ease-out;
240
- }
241
-
242
- .jux-stack-scale-in {
243
- animation: jux-scale-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
244
- }
245
-
246
- .jux-stack-zoom-in {
247
- animation: jux-zoom-in 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
248
- }
104
+ /* ═════════════════════════════════════════════════════════════════
105
+ * ITEM-LEVEL ANIMATIONS (Apply to direct children)
106
+ * ═════════════════════════════════════════════════════════════════ */
249
107
 
250
- .jux-stack-rotate-in {
251
- animation: jux-rotate-in 0.5s ease-out;
252
- }
108
+ .jux-stack-fade-in-items > * { animation: jux-fade-in 0.3s ease-out; }
109
+ .jux-stack-slide-up-items > * { animation: jux-slide-in-up 0.4s ease-out; }
110
+ .jux-stack-slide-down-items > * { animation: jux-slide-in-down 0.4s ease-out; }
111
+ .jux-stack-slide-left-items > * { animation: jux-slide-in-left 0.4s ease-out; }
112
+ .jux-stack-slide-right-items > * { animation: jux-slide-in-right 0.4s ease-out; }
113
+ .jux-stack-scale-in-items > * { animation: jux-scale-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); }
114
+ .jux-stack-zoom-in-items > * { animation: jux-zoom-in 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); }
115
+ .jux-stack-rotate-in-items > * { animation: jux-rotate-in 0.5s ease-out; }
116
+ .jux-stack-flip-x-items > * { animation: jux-flip-in-x 0.6s ease-out; }
117
+ .jux-stack-flip-y-items > * { animation: jux-flip-in-y 0.6s ease-out; }
118
+ .jux-stack-bounce-in-items > * { animation: jux-bounce-in 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55); }
119
+ .jux-stack-elastic-in-items > * { animation: jux-elastic-in 0.8s ease-out; }
120
+ .jux-stack-blur-in-items > * { animation: jux-blur-in 0.5s ease-out; }
121
+ .jux-stack-glow-items > * { animation: jux-glow-pulse 2s ease-in-out infinite; }
253
122
 
254
- .jux-stack-flip-x {
255
- animation: jux-flip-in-x 0.6s ease-out;
256
- }
123
+ /* ═════════════════════════════════════════════════════════════════
124
+ * SPEED MODIFIERS (Override animation duration)
125
+ * ═════════════════════════════════════════════════════════════════ */
257
126
 
258
- .jux-stack-flip-y {
259
- animation: jux-flip-in-y 0.6s ease-out;
260
- }
127
+ .jux-stack-instant,
128
+ .jux-stack-instant > * { animation-duration: 0.15s !important; }
261
129
 
262
- .jux-stack-bounce-in {
263
- animation: jux-bounce-in 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55);
264
- }
130
+ .jux-stack-fast,
131
+ .jux-stack-fast > * { animation-duration: 0.3s !important; }
265
132
 
266
- .jux-stack-elastic-in {
267
- animation: jux-elastic-in 0.8s ease-out;
268
- }
133
+ .jux-stack-normal,
134
+ .jux-stack-normal > * { animation-duration: 0.5s !important; }
269
135
 
270
- .jux-stack-blur-in {
271
- animation: jux-blur-in 0.5s ease-out;
272
- }
136
+ .jux-stack-slow,
137
+ .jux-stack-slow > * { animation-duration: 0.8s !important; }
273
138
 
274
- .jux-stack-glow {
275
- animation: jux-glow-pulse 2s ease-in-out infinite;
276
- }
139
+ .jux-stack-slower,
140
+ .jux-stack-slower > * { animation-duration: 1.2s !important; }
277
141
 
278
142
  /* ═════════════════════════════════════════════════════════════════
279
- * ITEM-LEVEL ANIMATIONS (Apply to direct children only)
143
+ * TIMING FUNCTIONS (Override easing)
280
144
  * ═════════════════════════════════════════════════════════════════ */
281
145
 
282
- .jux-stack-fade-in-items > * {
283
- animation: jux-fade-in 0.3s ease-out;
284
- }
146
+ .jux-stack-linear,
147
+ .jux-stack-linear > * { animation-timing-function: linear !important; }
285
148
 
286
- .jux-stack-slide-up-items > * {
287
- animation: jux-slide-in-up 0.4s ease-out;
288
- }
149
+ .jux-stack-ease,
150
+ .jux-stack-ease > * { animation-timing-function: ease !important; }
289
151
 
290
- .jux-stack-slide-down-items > * {
291
- animation: jux-slide-in-down 0.4s ease-out;
292
- }
152
+ .jux-stack-ease-in,
153
+ .jux-stack-ease-in > * { animation-timing-function: ease-in !important; }
293
154
 
294
- .jux-stack-slide-left-items > * {
295
- animation: jux-slide-in-left 0.4s ease-out;
296
- }
297
-
298
- .jux-stack-slide-right-items > * {
299
- animation: jux-slide-in-right 0.4s ease-out;
300
- }
155
+ .jux-stack-ease-out,
156
+ .jux-stack-ease-out > * { animation-timing-function: ease-out !important; }
301
157
 
302
- .jux-stack-scale-in-items > * {
303
- animation: jux-scale-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
304
- }
158
+ .jux-stack-ease-in-out,
159
+ .jux-stack-ease-in-out > * { animation-timing-function: ease-in-out !important; }
305
160
 
306
- .jux-stack-zoom-in-items > * {
307
- animation: jux-zoom-in 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
308
- }
161
+ .jux-stack-bounce-timing,
162
+ .jux-stack-bounce-timing > * { animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55) !important; }
309
163
 
310
- .jux-stack-rotate-in-items > * {
311
- animation: jux-rotate-in 0.5s ease-out;
312
- }
164
+ .jux-stack-elastic-timing,
165
+ .jux-stack-elastic-timing > * { animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1) !important; }
313
166
 
314
- .jux-stack-flip-x-items > * {
315
- animation: jux-flip-in-x 0.6s ease-out;
316
- }
317
-
318
- .jux-stack-flip-y-items > * {
319
- animation: jux-flip-in-y 0.6s ease-out;
320
- }
321
-
322
- .jux-stack-bounce-in-items > * {
323
- animation: jux-bounce-in 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55);
324
- }
325
-
326
- .jux-stack-elastic-in-items > * {
327
- animation: jux-elastic-in 0.8s ease-out;
328
- }
329
-
330
- .jux-stack-blur-in-items > * {
331
- animation: jux-blur-in 0.5s ease-out;
332
- }
167
+ /* ═════════════════════════════════════════════════════════════════
168
+ * DELAY MODIFIERS (Animation start delay)
169
+ * ═════════════════════════════════════════════════════════════════ */
333
170
 
334
- .jux-stack-glow-items > * {
335
- animation: jux-glow-pulse 2s ease-in-out infinite;
336
- }
171
+ .jux-stack-delay-100 { animation-delay: 100ms !important; }
172
+ .jux-stack-delay-200 { animation-delay: 200ms !important; }
173
+ .jux-stack-delay-300 { animation-delay: 300ms !important; }
174
+ .jux-stack-delay-500 { animation-delay: 500ms !important; }
175
+ .jux-stack-delay-1000 { animation-delay: 1000ms !important; }
337
176
 
338
177
  /* ═════════════════════════════════════════════════════════════════
339
- * STAGGER DELAYS (Only for item-level animations)
178
+ * STAGGER DELAYS (Sequential item delays)
340
179
  * ═════════════════════════════════════════════════════════════════ */
341
180
 
342
181
  .jux-stack-stagger > *:nth-child(1) { animation-delay: 0ms; }
@@ -351,7 +190,7 @@
351
190
  .jux-stack-stagger > *:nth-child(10) { animation-delay: 900ms; }
352
191
 
353
192
  /* ═════════════════════════════════════════════════════════════════
354
- * INTERACTIVE EFFECTS (Hover, Focus)
193
+ * INTERACTIVE EFFECTS (Hover/Focus transitions)
355
194
  * ═════════════════════════════════════════════════════════════════ */
356
195
 
357
196
  .jux-stack-interactive > * {
@@ -365,7 +204,7 @@
365
204
  }
366
205
 
367
206
  /* ═════════════════════════════════════════════════════════════════
368
- * UTILITY CLASSES
207
+ * TRANSITION UTILITIES
369
208
  * ═════════════════════════════════════════════════════════════════ */
370
209
 
371
210
  .jux-stack-smooth {
@@ -0,0 +1,103 @@
1
+ /* ═══════════════════════════════════════════════════════════════════
2
+ * JUX LAYOUT MODIFIERS
3
+ * Utility classes for precision layout control (used by LayoutExtensions)
4
+ * ═══════════════════════════════════════════════════════════════════ */
5
+
6
+ /* ═════════════════════════════════════════════════════════════════
7
+ * DISPLAY UTILITIES
8
+ * ═════════════════════════════════════════════════════════════════ */
9
+
10
+ .jux-display-block { display: block !important; }
11
+ .jux-display-inline { display: inline !important; }
12
+ .jux-display-inline-block { display: inline-block !important; }
13
+ .jux-display-flex { display: flex !important; }
14
+ .jux-display-grid { display: grid !important; }
15
+ .jux-display-none { display: none !important; }
16
+
17
+ /* ═════════════════════════════════════════════════════════════════
18
+ * POSITION UTILITIES
19
+ * ═════════════════════════════════════════════════════════════════ */
20
+
21
+ .jux-position-static { position: static !important; }
22
+ .jux-position-relative { position: relative !important; }
23
+ .jux-position-absolute { position: absolute !important; }
24
+ .jux-position-fixed { position: fixed !important; }
25
+ .jux-position-sticky { position: sticky !important; }
26
+
27
+ /* ═════════════════════════════════════════════════════════════════
28
+ * OVERFLOW UTILITIES
29
+ * ═════════════════════════════════════════════════════════════════ */
30
+
31
+ .jux-overflow-visible { overflow: visible !important; }
32
+ .jux-overflow-hidden { overflow: hidden !important; }
33
+ .jux-overflow-scroll { overflow: scroll !important; }
34
+ .jux-overflow-auto { overflow: auto !important; }
35
+
36
+ .jux-overflow-x-visible { overflow-x: visible !important; }
37
+ .jux-overflow-x-hidden { overflow-x: hidden !important; }
38
+ .jux-overflow-x-scroll { overflow-x: scroll !important; }
39
+ .jux-overflow-x-auto { overflow-x: auto !important; }
40
+
41
+ .jux-overflow-y-visible { overflow-y: visible !important; }
42
+ .jux-overflow-y-hidden { overflow-y: hidden !important; }
43
+ .jux-overflow-y-scroll { overflow-y: scroll !important; }
44
+ .jux-overflow-y-auto { overflow-y: auto !important; }
45
+
46
+ /* ═════════════════════════════════════════════════════════════════
47
+ * CURSOR UTILITIES
48
+ * ═════════════════════════════════════════════════════════════════ */
49
+
50
+ .jux-cursor-pointer { cursor: pointer !important; }
51
+ .jux-cursor-default { cursor: default !important; }
52
+ .jux-cursor-not-allowed { cursor: not-allowed !important; }
53
+ .jux-cursor-grab { cursor: grab !important; }
54
+ .jux-cursor-grabbing { cursor: grabbing !important; }
55
+
56
+ /* ═════════════════════════════════════════════════════════════════
57
+ * POINTER EVENTS
58
+ * ═════════════════════════════════════════════════════════════════ */
59
+
60
+ .jux-pointer-events-auto { pointer-events: auto !important; }
61
+ .jux-pointer-events-none { pointer-events: none !important; }
62
+
63
+ /* ═════════════════════════════════════════════════════════════════
64
+ * USER SELECT
65
+ * ═════════════════════════════════════════════════════════════════ */
66
+
67
+ .jux-select-auto { user-select: auto !important; }
68
+ .jux-select-none { user-select: none !important; }
69
+ .jux-select-text { user-select: text !important; }
70
+ .jux-select-all { user-select: all !important; }
71
+
72
+ /* ═════════════════════════════════════════════════════════════════
73
+ * TEXT UTILITIES
74
+ * ═════════════════════════════════════════════════════════════════ */
75
+
76
+ .jux-text-left { text-align: left !important; }
77
+ .jux-text-center { text-align: center !important; }
78
+ .jux-text-right { text-align: right !important; }
79
+ .jux-text-justify { text-align: justify !important; }
80
+
81
+ .jux-text-uppercase { text-transform: uppercase !important; }
82
+ .jux-text-lowercase { text-transform: lowercase !important; }
83
+ .jux-text-capitalize { text-transform: capitalize !important; }
84
+ .jux-text-none { text-transform: none !important; }
85
+
86
+ .jux-whitespace-normal { white-space: normal !important; }
87
+ .jux-whitespace-nowrap { white-space: nowrap !important; }
88
+ .jux-whitespace-pre { white-space: pre !important; }
89
+ .jux-whitespace-pre-wrap { white-space: pre-wrap !important; }
90
+ .jux-whitespace-pre-line { white-space: pre-line !important; }
91
+
92
+ .jux-word-wrap-normal { word-wrap: normal !important; }
93
+ .jux-word-wrap-break { word-wrap: break-word !important; }
94
+
95
+ /* ═════════════════════════════════════════════════════════════════
96
+ * BORDER STYLE UTILITIES
97
+ * ═════════════════════════════════════════════════════════════════ */
98
+
99
+ .jux-border-solid { border-style: solid !important; }
100
+ .jux-border-dashed { border-style: dashed !important; }
101
+ .jux-border-dotted { border-style: dotted !important; }
102
+ .jux-border-double { border-style: double !important; }
103
+ .jux-border-none { border-style: none !important; }
@@ -0,0 +1,82 @@
1
+ /* ═══════════════════════════════════════════════════════════════════
2
+ * STACK LAYOUT COMPONENTS
3
+ * Pure layout structure - no animations, no modifiers
4
+ * ═══════════════════════════════════════════════════════════════════ */
5
+
6
+ /* Vertical Stack */
7
+ .jux-vstack {
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: 1rem;
11
+ }
12
+
13
+ .jux-vstack-tight { gap: 0.5rem; }
14
+ .jux-vstack-loose { gap: 1.5rem; }
15
+ .jux-vstack-none { gap: 0; }
16
+
17
+ /* Horizontal Stack */
18
+ .jux-hstack {
19
+ display: flex;
20
+ flex-direction: row;
21
+ align-items: center;
22
+ gap: 1rem;
23
+ }
24
+
25
+ .jux-hstack-tight { gap: 0.5rem; }
26
+ .jux-hstack-loose { gap: 1.5rem; }
27
+ .jux-hstack-none { gap: 0; }
28
+
29
+ /* Z-Stack (Layered/Overlapping) */
30
+ .jux-zstack {
31
+ display: grid;
32
+ grid-template-columns: 1fr;
33
+ grid-template-rows: 1fr;
34
+ position: relative;
35
+ }
36
+
37
+ .jux-zstack > * {
38
+ grid-column: 1;
39
+ grid-row: 1;
40
+ }
41
+
42
+ .jux-zstack-tight > * { margin: 0.25rem; }
43
+ .jux-zstack-loose > * { margin: 0.75rem; }
44
+ .jux-zstack-none > * { margin: 0; }
45
+
46
+ /* Stack Alignment Options */
47
+ .jux-stack-start { align-items: flex-start; }
48
+ .jux-stack-center { align-items: center; }
49
+ .jux-stack-end { align-items: flex-end; }
50
+ .jux-stack-stretch { align-items: stretch; }
51
+
52
+ /* Stack Justification Options */
53
+ .jux-stack-justify-start { justify-content: flex-start; }
54
+ .jux-stack-justify-center { justify-content: center; }
55
+ .jux-stack-justify-end { justify-content: flex-end; }
56
+ .jux-stack-justify-between { justify-content: space-between; }
57
+ .jux-stack-justify-around { justify-content: space-around; }
58
+ .jux-stack-justify-evenly { justify-content: space-evenly; }
59
+
60
+ /* Responsive Stacks */
61
+ @media (max-width: 768px) {
62
+ .jux-hstack-responsive {
63
+ flex-direction: column;
64
+ }
65
+ }
66
+
67
+ /* Stack with Dividers */
68
+ .jux-vstack-divider > *:not(:last-child) {
69
+ padding-bottom: 1rem;
70
+ border-bottom: 1px solid #e4e4e7;
71
+ margin-bottom: 1rem;
72
+ }
73
+
74
+ .jux-hstack-divider > *:not(:last-child) {
75
+ padding-right: 1rem;
76
+ border-right: 1px solid #e4e4e7;
77
+ margin-right: 1rem;
78
+ }
79
+
80
+ .jux-zstack-divider > * {
81
+ border: 1px solid #e4e4e7;
82
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "juxscript",
3
- "version": "1.1.107",
3
+ "version": "1.1.109",
4
4
  "type": "module",
5
5
  "description": "A JavaScript UX authorship platform",
6
6
  "main": "index.js",