enigma-cli 1.35.8 → 1.35.13

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.
@@ -0,0 +1,688 @@
1
+ {
2
+ "registry": "@enigmax/primitives",
3
+ "version": 1,
4
+ "kind": "primitive",
5
+ "items": [
6
+ {
7
+ "name": "marquee",
8
+ "title": "Draggable infinite marquee",
9
+ "description": "Looping row that takes a speed in px/s, measures its own lap, and can be grabbed and thrown without swallowing the clicks on its items.",
10
+ "targets": [
11
+ "vanilla",
12
+ "astro",
13
+ "react"
14
+ ],
15
+ "entry": {
16
+ "vanilla": "@enigmax/primitives",
17
+ "astro": "@enigmax/primitives",
18
+ "react": "@enigmax/primitives/react"
19
+ },
20
+ "exports": {
21
+ "vanilla": [
22
+ "createMarquee"
23
+ ],
24
+ "astro": [
25
+ "createMarquee"
26
+ ],
27
+ "react": [
28
+ "useMarquee"
29
+ ]
30
+ },
31
+ "files": [
32
+ {
33
+ "path": "src/core/marquee.ts",
34
+ "dest": "marquee/marquee.ts",
35
+ "targets": [
36
+ "vanilla",
37
+ "astro",
38
+ "react"
39
+ ]
40
+ },
41
+ {
42
+ "path": "src/react/use-marquee.ts",
43
+ "dest": "marquee/use-marquee.ts",
44
+ "targets": [
45
+ "react"
46
+ ],
47
+ "rewrite": {
48
+ "@/core/marquee": "./marquee"
49
+ },
50
+ "main": true
51
+ },
52
+ {
53
+ "path": "recipes/marquee/tailwind.tsx",
54
+ "dest": "marquee/Marquee.tsx",
55
+ "targets": [
56
+ "react"
57
+ ],
58
+ "style": "tailwind"
59
+ },
60
+ {
61
+ "path": "recipes/marquee/css.tsx",
62
+ "dest": "marquee/Marquee.tsx",
63
+ "targets": [
64
+ "react"
65
+ ],
66
+ "style": "css"
67
+ },
68
+ {
69
+ "path": "recipes/marquee/styles.css",
70
+ "dest": "marquee/styles.css",
71
+ "targets": [
72
+ "react",
73
+ "vanilla",
74
+ "astro"
75
+ ],
76
+ "style": "css"
77
+ }
78
+ ],
79
+ "styles": false,
80
+ "themeHooks": [
81
+ "[data-enigma-marquee]",
82
+ "[data-enigma-marquee][data-dragging]",
83
+ "[data-enigma-marquee][data-hovering]",
84
+ "[data-enigma-marquee][data-reduced-motion=true]",
85
+ "[data-enigma-marquee-track]",
86
+ "[data-enigma-marquee-copy]"
87
+ ],
88
+ "docs": "docs/notes/primitives.md#marquee",
89
+ "recipes": [
90
+ "tailwind",
91
+ "css"
92
+ ]
93
+ },
94
+ {
95
+ "name": "logo-marquee",
96
+ "title": "Logo wall",
97
+ "description": "The \"trusted by\" row: a marquee that also does the job a logo wall needs doing - one optical height for logos that arrive at a dozen different sizes, colour drained so twelve brand palettes stop fighting, and text logos like NASA or Bloomberg alongside the images.",
98
+ "targets": [
99
+ "react"
100
+ ],
101
+ "entry": {
102
+ "react": "@enigmax/primitives/react"
103
+ },
104
+ "exports": {
105
+ "react": [
106
+ "LogoMarquee"
107
+ ]
108
+ },
109
+ "files": [
110
+ {
111
+ "path": "src/core/marquee.ts",
112
+ "dest": "logo-marquee/marquee.ts",
113
+ "targets": [
114
+ "react"
115
+ ]
116
+ },
117
+ {
118
+ "path": "src/react/use-marquee.ts",
119
+ "dest": "logo-marquee/use-marquee.ts",
120
+ "targets": [
121
+ "react"
122
+ ],
123
+ "rewrite": {
124
+ "@/core/marquee": "./marquee"
125
+ }
126
+ },
127
+ {
128
+ "path": "recipes/logo-marquee/styles.css",
129
+ "dest": "logo-marquee/styles.css",
130
+ "targets": [
131
+ "react"
132
+ ]
133
+ },
134
+ {
135
+ "path": "recipes/logo-marquee/index.tsx",
136
+ "dest": "logo-marquee/index.tsx",
137
+ "main": true,
138
+ "targets": [
139
+ "react"
140
+ ],
141
+ "rewrite": {
142
+ "@enigmax/primitives/react": "./use-marquee"
143
+ }
144
+ }
145
+ ],
146
+ "styles": true,
147
+ "themeHooks": [
148
+ "[data-tone=mono]",
149
+ ".logo-marquee",
150
+ ".logo-marquee.is-faded",
151
+ ".logo-marquee[data-grabbing]",
152
+ ".logo-marquee__item"
153
+ ],
154
+ "docs": "docs/notes/primitives.md#logo-marquee"
155
+ },
156
+ {
157
+ "name": "input",
158
+ "title": "Input, with what a password field needs",
159
+ "description": "A field you pass props to, with no styles of its own. A password gets its reveal toggle automatically; a generator, a strength meter and a breach check are one prop each and off until you ask. React renders every part of it, so nothing fights your tree.",
160
+ "targets": [
161
+ "vanilla",
162
+ "astro",
163
+ "react"
164
+ ],
165
+ "entry": {
166
+ "vanilla": "@enigmax/primitives",
167
+ "astro": "@enigmax/primitives",
168
+ "react": "@enigmax/primitives/react"
169
+ },
170
+ "exports": {
171
+ "vanilla": [
172
+ "createInput"
173
+ ],
174
+ "astro": [
175
+ "createInput"
176
+ ],
177
+ "react": [
178
+ "Input",
179
+ "PasswordStrength"
180
+ ]
181
+ },
182
+ "files": [
183
+ {
184
+ "path": "src/core/input.ts",
185
+ "dest": "input/input.ts",
186
+ "targets": [
187
+ "vanilla",
188
+ "astro",
189
+ "react"
190
+ ]
191
+ },
192
+ {
193
+ "path": "src/core/password.ts",
194
+ "dest": "input/password.ts",
195
+ "targets": [
196
+ "vanilla",
197
+ "astro",
198
+ "react"
199
+ ]
200
+ },
201
+ {
202
+ "path": "src/react/use-input.ts",
203
+ "dest": "input/use-input.ts",
204
+ "targets": [
205
+ "react"
206
+ ],
207
+ "rewrite": {
208
+ "@/core/input": "./input"
209
+ }
210
+ },
211
+ {
212
+ "path": "recipes/input/styles.css",
213
+ "dest": "input/styles.css",
214
+ "targets": [
215
+ "react",
216
+ "vanilla",
217
+ "astro"
218
+ ],
219
+ "style": "css"
220
+ },
221
+ {
222
+ "path": "src/react/input.tsx",
223
+ "dest": "input/index.tsx",
224
+ "main": true,
225
+ "targets": [
226
+ "react"
227
+ ],
228
+ "rewrite": {
229
+ "@/core/input": "./input",
230
+ "@/core/password": "./password"
231
+ }
232
+ },
233
+ {
234
+ "path": "recipes/input/tailwind.tsx",
235
+ "dest": "input/PasswordField.tsx",
236
+ "targets": [
237
+ "react"
238
+ ],
239
+ "style": "tailwind",
240
+ "rewrite": {
241
+ "@enigmax/primitives/react": "./index"
242
+ }
243
+ }
244
+ ],
245
+ "styles": false,
246
+ "themeHooks": [
247
+ "[data-enigma-input-root]",
248
+ "[data-enigma-input-root][data-revealed]",
249
+ "[data-enigma-input-root][data-breached]",
250
+ "[data-enigma-input-root][data-score]",
251
+ "[data-enigma-input-field]",
252
+ "[data-enigma-input]",
253
+ "[data-enigma-input][data-enigma-input-reveal=on]",
254
+ "[data-enigma-input-actions]",
255
+ "[data-enigma-input-actions][data-position=start]",
256
+ "[data-enigma-input-action]",
257
+ "[data-enigma-input-action=reveal]",
258
+ "[data-enigma-input-action=generate]",
259
+ "[data-enigma-password-strength]",
260
+ "[data-enigma-password-strength][data-empty]",
261
+ "[data-enigma-password-strength-track]",
262
+ "[data-enigma-password-strength-segment]",
263
+ "[data-enigma-password-strength-segment][data-filled]",
264
+ "[data-enigma-password-strength-label]",
265
+ "[data-enigma-password-strength-warning]"
266
+ ],
267
+ "docs": "docs/notes/primitives.md#input",
268
+ "recipes": [
269
+ "tailwind",
270
+ "css"
271
+ ]
272
+ },
273
+ {
274
+ "name": "search",
275
+ "title": "Search as you type",
276
+ "description": "Search as you type, fuzzy by default with Fuse.js. Debouncing, ranking and cancellation are the primitive's; the matching is replaceable, and dropping Fuse falls back to a built-in accent-insensitive substring matcher.",
277
+ "targets": [
278
+ "vanilla",
279
+ "astro",
280
+ "react"
281
+ ],
282
+ "entry": {
283
+ "vanilla": "@enigmax/primitives/search",
284
+ "astro": "@enigmax/primitives/search",
285
+ "react": "@enigmax/primitives/react"
286
+ },
287
+ "exports": {
288
+ "vanilla": [
289
+ "createSearch"
290
+ ],
291
+ "astro": [
292
+ "createSearch"
293
+ ],
294
+ "react": [
295
+ "useSearch"
296
+ ]
297
+ },
298
+ "files": [
299
+ {
300
+ "path": "src/core/search.ts",
301
+ "dest": "search/search.ts",
302
+ "targets": [
303
+ "vanilla",
304
+ "astro",
305
+ "react"
306
+ ]
307
+ },
308
+ {
309
+ "path": "src/react/use-search.ts",
310
+ "dest": "search/use-search.ts",
311
+ "targets": [
312
+ "react"
313
+ ],
314
+ "rewrite": {
315
+ "@/core/search": "./search"
316
+ },
317
+ "main": true
318
+ },
319
+ {
320
+ "path": "recipes/search/tailwind.tsx",
321
+ "dest": "search/Search.tsx",
322
+ "targets": [
323
+ "react"
324
+ ],
325
+ "style": "tailwind"
326
+ }
327
+ ],
328
+ "styles": false,
329
+ "themeHooks": [
330
+ "[data-enigma-search]"
331
+ ],
332
+ "optionalDependencies": {
333
+ "fuse.js": "Fuzzy matching. Omit it and a built-in substring matcher is used."
334
+ },
335
+ "docs": "docs/notes/primitives.md#search",
336
+ "recipes": [
337
+ "tailwind"
338
+ ],
339
+ "dependencies": {
340
+ "fuse.js": "^7.0.0"
341
+ }
342
+ },
343
+ {
344
+ "name": "button",
345
+ "title": "Button",
346
+ "description": "A button you pass props to. Disabled, loading, a keyboard shortcut and a cooldown that can outlive a reload collapse into one `available`; an href reports an anchor, so the framework's own Link stays your choice.",
347
+ "targets": [
348
+ "vanilla",
349
+ "astro",
350
+ "react"
351
+ ],
352
+ "entry": {
353
+ "vanilla": "@enigmax/primitives",
354
+ "astro": "@enigmax/primitives",
355
+ "react": "@enigmax/primitives/react"
356
+ },
357
+ "exports": {
358
+ "vanilla": [
359
+ "createButton"
360
+ ],
361
+ "astro": [
362
+ "createButton"
363
+ ],
364
+ "react": [
365
+ "Button",
366
+ "setLinkComponent",
367
+ "useButton"
368
+ ]
369
+ },
370
+ "files": [
371
+ {
372
+ "path": "src/core/button.ts",
373
+ "dest": "button/button.ts",
374
+ "targets": [
375
+ "vanilla",
376
+ "astro",
377
+ "react"
378
+ ]
379
+ },
380
+ {
381
+ "path": "src/react/use-button.ts",
382
+ "dest": "button/use-button.ts",
383
+ "targets": [
384
+ "react"
385
+ ],
386
+ "rewrite": {
387
+ "@/core/button": "./button"
388
+ }
389
+ },
390
+ {
391
+ "path": "src/react/link.ts",
392
+ "dest": "button/link.ts",
393
+ "targets": [
394
+ "react"
395
+ ]
396
+ },
397
+ {
398
+ "path": "src/react/button.tsx",
399
+ "dest": "button/index.tsx",
400
+ "main": true,
401
+ "targets": [
402
+ "react"
403
+ ],
404
+ "rewrite": {
405
+ "@/core/button": "./button",
406
+ "@/react/use-button": "./use-button",
407
+ "@/react/link": "./link"
408
+ }
409
+ }
410
+ ],
411
+ "styles": false,
412
+ "themeHooks": [
413
+ "[data-loading]",
414
+ "[data-cooldown]",
415
+ "[aria-disabled=true]",
416
+ "[aria-busy=true]"
417
+ ],
418
+ "docs": "docs/notes/primitives.md#button"
419
+ },
420
+ {
421
+ "name": "notifications",
422
+ "title": "Notification queue",
423
+ "description": "Ordering, dedupe by key, sticky errors and dismiss timers that hold instead of running while the tab is hidden. No rendering.",
424
+ "targets": [
425
+ "vanilla",
426
+ "astro",
427
+ "react"
428
+ ],
429
+ "entry": {
430
+ "vanilla": "@enigmax/primitives",
431
+ "astro": "@enigmax/primitives",
432
+ "react": "@enigmax/primitives/react"
433
+ },
434
+ "exports": {
435
+ "vanilla": [
436
+ "createNotifications"
437
+ ],
438
+ "astro": [
439
+ "createNotifications"
440
+ ],
441
+ "react": [
442
+ "useNotifications"
443
+ ]
444
+ },
445
+ "files": [
446
+ {
447
+ "path": "src/core/notifications.ts",
448
+ "dest": "notifications/notifications.ts",
449
+ "targets": [
450
+ "vanilla",
451
+ "astro",
452
+ "react"
453
+ ]
454
+ },
455
+ {
456
+ "path": "src/react/use-notifications.ts",
457
+ "dest": "notifications/use-notifications.ts",
458
+ "targets": [
459
+ "react"
460
+ ],
461
+ "rewrite": {
462
+ "@/core/notifications": "./notifications"
463
+ },
464
+ "main": true
465
+ },
466
+ {
467
+ "path": "recipes/notifications/tailwind.tsx",
468
+ "dest": "notifications/Notifications.tsx",
469
+ "targets": [
470
+ "react"
471
+ ],
472
+ "style": "tailwind"
473
+ }
474
+ ],
475
+ "styles": false,
476
+ "docs": "docs/notes/primitives.md#notifications",
477
+ "recipes": [
478
+ "tailwind"
479
+ ]
480
+ },
481
+ {
482
+ "name": "toast",
483
+ "title": "Toast",
484
+ "description": "The notification queue with a renderer on top: stacking, swipe to dismiss, a pointer that stops the clock, and a toast that is still on screen while it animates out. Ships the Ember theme, which is a stylesheet you own.",
485
+ "targets": [
486
+ "react"
487
+ ],
488
+ "entry": {
489
+ "react": "@enigmax/primitives/react"
490
+ },
491
+ "exports": {
492
+ "react": [
493
+ "Toaster",
494
+ "useNotifications"
495
+ ]
496
+ },
497
+ "files": [
498
+ {
499
+ "path": "src/core/notifications.ts",
500
+ "dest": "toast/notifications.ts",
501
+ "targets": [
502
+ "react"
503
+ ]
504
+ },
505
+ {
506
+ "path": "src/react/use-notifications.ts",
507
+ "dest": "toast/use-notifications.ts",
508
+ "targets": [
509
+ "react"
510
+ ],
511
+ "rewrite": {
512
+ "@/core/notifications": "./notifications"
513
+ }
514
+ },
515
+ {
516
+ "path": "src/react/toaster.tsx",
517
+ "dest": "toast/index.tsx",
518
+ "main": true,
519
+ "targets": [
520
+ "react"
521
+ ],
522
+ "rewrite": {
523
+ "@/core/notifications": "./notifications",
524
+ "@/react/use-notifications": "./use-notifications"
525
+ }
526
+ },
527
+ {
528
+ "path": "recipes/toast/styles.css",
529
+ "dest": "toast/styles.css",
530
+ "targets": [
531
+ "react"
532
+ ],
533
+ "style": "css"
534
+ },
535
+ {
536
+ "path": "recipes/toast/tailwind.tsx",
537
+ "dest": "toast/AppToaster.tsx",
538
+ "targets": [
539
+ "react"
540
+ ],
541
+ "style": "tailwind",
542
+ "rewrite": {
543
+ "@enigmax/utils/react": "./index"
544
+ }
545
+ }
546
+ ],
547
+ "styles": false,
548
+ "themeHooks": [
549
+ "[data-enigma-toaster]",
550
+ "[data-enigma-toaster][data-position]",
551
+ "[data-enigma-toast]",
552
+ "[data-enigma-toast][data-tone=error]",
553
+ "[data-enigma-toast][data-state=leaving]",
554
+ "[data-enigma-toast][data-swiping]",
555
+ "[data-enigma-toast][data-front]",
556
+ "[data-enigma-toast-title]",
557
+ "[data-enigma-toast-body]",
558
+ "[data-enigma-toast-action]",
559
+ "[data-enigma-toast-close]"
560
+ ],
561
+ "docs": "docs/notes/primitives.md#toast",
562
+ "recipes": [
563
+ "tailwind",
564
+ "css"
565
+ ]
566
+ },
567
+ {
568
+ "name": "network",
569
+ "title": "Connection state",
570
+ "description": "Online/offline plus what the Network Information API reports, and the recovery transition every hand-rolled version re-derives: `recovered` is false on a first load, so a page that opens online never announces a comeback that did not happen.",
571
+ "targets": [
572
+ "vanilla",
573
+ "astro",
574
+ "react"
575
+ ],
576
+ "entry": {
577
+ "vanilla": "@enigmax/primitives",
578
+ "astro": "@enigmax/primitives",
579
+ "react": "@enigmax/primitives/react"
580
+ },
581
+ "exports": {
582
+ "vanilla": [
583
+ "createNetworkMonitor"
584
+ ],
585
+ "astro": [
586
+ "createNetworkMonitor"
587
+ ],
588
+ "react": [
589
+ "useNetworkState"
590
+ ]
591
+ },
592
+ "files": [
593
+ {
594
+ "path": "src/core/network.ts",
595
+ "dest": "network/network.ts",
596
+ "targets": [
597
+ "vanilla",
598
+ "astro",
599
+ "react"
600
+ ]
601
+ },
602
+ {
603
+ "path": "src/react/use-network-state.ts",
604
+ "dest": "network/use-network-state.ts",
605
+ "targets": [
606
+ "react"
607
+ ],
608
+ "rewrite": {
609
+ "@/core/network": "./network"
610
+ },
611
+ "main": true
612
+ }
613
+ ],
614
+ "styles": false,
615
+ "docs": "docs/notes/primitives.md#network"
616
+ },
617
+ {
618
+ "name": "relative-time",
619
+ "title": "Relative timestamps",
620
+ "description": "\"3 hours ago\", kept current, localised by the page's own language. A timestamp with no zone is read as UTC instead of as the server's local time, and the absolute date is rendered as the element's child so a server render and a reader without JavaScript still see a real date.",
621
+ "targets": [
622
+ "vanilla",
623
+ "astro",
624
+ "react"
625
+ ],
626
+ "entry": {
627
+ "vanilla": "@enigmax/primitives",
628
+ "astro": "@enigmax/primitives",
629
+ "react": "@enigmax/primitives/react"
630
+ },
631
+ "exports": {
632
+ "vanilla": [
633
+ "relativeTimeView",
634
+ "relativeTimeAttributes",
635
+ "normalizeDate"
636
+ ],
637
+ "astro": [
638
+ "relativeTimeView",
639
+ "relativeTimeAttributes",
640
+ "normalizeDate"
641
+ ],
642
+ "react": [
643
+ "RelativeTime"
644
+ ]
645
+ },
646
+ "files": [
647
+ {
648
+ "path": "src/core/relative-time.ts",
649
+ "dest": "relative-time/relative-time.ts",
650
+ "targets": [
651
+ "vanilla",
652
+ "astro",
653
+ "react"
654
+ ]
655
+ },
656
+ {
657
+ "path": "src/react/relative-time.ts",
658
+ "dest": "relative-time/index.ts",
659
+ "targets": [
660
+ "react"
661
+ ],
662
+ "rewrite": {
663
+ "@/core/relative-time": "./relative-time"
664
+ }
665
+ },
666
+ {
667
+ "path": "recipes/relative-time/styles.css",
668
+ "dest": "relative-time/styles.css",
669
+ "targets": [
670
+ "vanilla",
671
+ "astro",
672
+ "react"
673
+ ]
674
+ }
675
+ ],
676
+ "styles": false,
677
+ "themeHooks": [
678
+ "relative-time",
679
+ "[data-relative-time-capitalize=true]",
680
+ "[data-relative-time-capitalize-first-letter=true]"
681
+ ],
682
+ "docs": "docs/notes/primitives.md#relative-time",
683
+ "dependencies": {
684
+ "@github/relative-time-element": "^4.4.0"
685
+ }
686
+ }
687
+ ]
688
+ }