remix 3.0.0-rc.4 → 3.0.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.
Files changed (191) hide show
  1. package/INDEX.md +6 -21
  2. package/README.md +1 -1
  3. package/dist/component/dev/refresh.d.ts +2 -0
  4. package/dist/component/dev/refresh.d.ts.map +1 -0
  5. package/dist/{ui → component}/dev/refresh.js +1 -1
  6. package/dist/component/jsx-dev-runtime.d.ts +2 -0
  7. package/dist/component/jsx-dev-runtime.d.ts.map +1 -0
  8. package/dist/{ui → component}/jsx-dev-runtime.js +1 -1
  9. package/dist/component/jsx-runtime.d.ts +2 -0
  10. package/dist/component/jsx-runtime.d.ts.map +1 -0
  11. package/dist/{ui → component}/jsx-runtime.js +1 -1
  12. package/dist/component/server.d.ts +2 -0
  13. package/dist/component/server.d.ts.map +1 -0
  14. package/dist/{ui → component}/server.js +1 -1
  15. package/dist/component/test.d.ts +2 -0
  16. package/dist/component/test.d.ts.map +1 -0
  17. package/dist/{ui → component}/test.js +1 -1
  18. package/dist/component-hmr/assets.d.ts +2 -0
  19. package/dist/component-hmr/assets.d.ts.map +1 -0
  20. package/dist/{ui-hmr.js → component-hmr/assets.js} +1 -1
  21. package/dist/component-hmr/node.d.ts +3 -0
  22. package/dist/component-hmr/node.d.ts.map +1 -0
  23. package/dist/{ui-hmr → component-hmr}/node.js +1 -1
  24. package/dist/component-hmr/runtime/browser.d.ts +2 -0
  25. package/dist/component-hmr/runtime/browser.d.ts.map +1 -0
  26. package/dist/{ui-hmr → component-hmr}/runtime/browser.js +1 -1
  27. package/dist/component-hmr/runtime/server.d.ts +2 -0
  28. package/dist/component-hmr/runtime/server.d.ts.map +1 -0
  29. package/dist/{ui-hmr → component-hmr}/runtime/server.js +1 -1
  30. package/dist/component-hmr.d.ts +2 -0
  31. package/dist/component-hmr.d.ts.map +1 -0
  32. package/dist/{ui-hmr/assets.js → component-hmr.js} +1 -1
  33. package/dist/component.d.ts +2 -0
  34. package/dist/component.d.ts.map +1 -0
  35. package/dist/{ui/anchor.js → component.js} +1 -1
  36. package/guides/01-start-here.md +20 -20
  37. package/guides/02-routing-and-controllers.md +1 -1
  38. package/guides/03-request-handling.md +1 -1
  39. package/guides/04-rendering-ui.md +41 -307
  40. package/guides/05-interactivity.md +42 -37
  41. package/guides/06-streaming-ui-with-frames.md +28 -70
  42. package/guides/07-animation.md +41 -35
  43. package/guides/08-data-and-validation.md +423 -27
  44. package/guides/09-forms-and-mutations.md +250 -25
  45. package/guides/13-testing.md +10 -10
  46. package/guides/14-cli-and-tooling.md +2 -2
  47. package/package.json +96 -180
  48. package/src/assets/README.md +12 -12
  49. package/src/cli/README.md +3 -3
  50. package/src/{ui → component}/README.md +31 -75
  51. package/src/{ui → component}/dev/refresh.ts +1 -1
  52. package/src/{ui → component}/jsx-dev-runtime.ts +1 -1
  53. package/src/{ui → component}/jsx-runtime.ts +1 -1
  54. package/src/{ui → component}/server/README.md +8 -8
  55. package/src/{ui → component}/server.ts +1 -1
  56. package/src/{ui → component}/test/README.md +6 -6
  57. package/src/{ui → component}/test.ts +1 -1
  58. package/src/{ui-hmr → component-hmr}/README.md +13 -13
  59. package/src/{ui-hmr → component-hmr}/assets.ts +1 -1
  60. package/src/{ui-hmr → component-hmr}/node.ts +1 -1
  61. package/src/{ui-hmr → component-hmr}/runtime/browser.ts +1 -1
  62. package/src/{ui-hmr → component-hmr}/runtime/server.ts +1 -1
  63. package/{dist/ui/accordion.js → src/component-hmr.ts} +1 -1
  64. package/{dist/ui/tabs.js → src/component.ts} +1 -1
  65. package/src/data-table/README.md +2 -1
  66. package/src/multiple-import-maps-polyfill/README.md +3 -3
  67. package/src/node-hmr/README.md +6 -6
  68. package/src/render-middleware/README.md +5 -5
  69. package/src/spa/README.md +4 -4
  70. package/src/test/README.md +4 -4
  71. package/dist/ui/accordion/primitives.d.ts +0 -2
  72. package/dist/ui/accordion/primitives.d.ts.map +0 -1
  73. package/dist/ui/accordion/primitives.js +0 -2
  74. package/dist/ui/accordion.d.ts +0 -2
  75. package/dist/ui/accordion.d.ts.map +0 -1
  76. package/dist/ui/anchor.d.ts +0 -2
  77. package/dist/ui/anchor.d.ts.map +0 -1
  78. package/dist/ui/animation.d.ts +0 -2
  79. package/dist/ui/animation.d.ts.map +0 -1
  80. package/dist/ui/animation.js +0 -2
  81. package/dist/ui/breadcrumbs.d.ts +0 -2
  82. package/dist/ui/breadcrumbs.d.ts.map +0 -1
  83. package/dist/ui/breadcrumbs.js +0 -2
  84. package/dist/ui/button.d.ts +0 -3
  85. package/dist/ui/button.d.ts.map +0 -1
  86. package/dist/ui/button.js +0 -3
  87. package/dist/ui/checkbox.d.ts +0 -3
  88. package/dist/ui/checkbox.d.ts.map +0 -1
  89. package/dist/ui/checkbox.js +0 -3
  90. package/dist/ui/combobox/primitives.d.ts +0 -2
  91. package/dist/ui/combobox/primitives.d.ts.map +0 -1
  92. package/dist/ui/combobox/primitives.js +0 -2
  93. package/dist/ui/combobox.d.ts +0 -2
  94. package/dist/ui/combobox.d.ts.map +0 -1
  95. package/dist/ui/combobox.js +0 -2
  96. package/dist/ui/dev/refresh.d.ts +0 -2
  97. package/dist/ui/dev/refresh.d.ts.map +0 -1
  98. package/dist/ui/input.d.ts +0 -3
  99. package/dist/ui/input.d.ts.map +0 -1
  100. package/dist/ui/input.js +0 -3
  101. package/dist/ui/jsx-dev-runtime.d.ts +0 -2
  102. package/dist/ui/jsx-dev-runtime.d.ts.map +0 -1
  103. package/dist/ui/jsx-runtime.d.ts +0 -2
  104. package/dist/ui/jsx-runtime.d.ts.map +0 -1
  105. package/dist/ui/listbox.d.ts +0 -2
  106. package/dist/ui/listbox.d.ts.map +0 -1
  107. package/dist/ui/listbox.js +0 -2
  108. package/dist/ui/menu/primitives.d.ts +0 -2
  109. package/dist/ui/menu/primitives.d.ts.map +0 -1
  110. package/dist/ui/menu/primitives.js +0 -2
  111. package/dist/ui/menu.d.ts +0 -2
  112. package/dist/ui/menu.d.ts.map +0 -1
  113. package/dist/ui/menu.js +0 -2
  114. package/dist/ui/popover.d.ts +0 -2
  115. package/dist/ui/popover.d.ts.map +0 -1
  116. package/dist/ui/popover.js +0 -2
  117. package/dist/ui/radio.d.ts +0 -3
  118. package/dist/ui/radio.d.ts.map +0 -1
  119. package/dist/ui/radio.js +0 -3
  120. package/dist/ui/select/primitives.d.ts +0 -2
  121. package/dist/ui/select/primitives.d.ts.map +0 -1
  122. package/dist/ui/select/primitives.js +0 -2
  123. package/dist/ui/select.d.ts +0 -2
  124. package/dist/ui/select.d.ts.map +0 -1
  125. package/dist/ui/select.js +0 -2
  126. package/dist/ui/server.d.ts +0 -2
  127. package/dist/ui/server.d.ts.map +0 -1
  128. package/dist/ui/tabs/primitives.d.ts +0 -2
  129. package/dist/ui/tabs/primitives.d.ts.map +0 -1
  130. package/dist/ui/tabs/primitives.js +0 -2
  131. package/dist/ui/tabs.d.ts +0 -2
  132. package/dist/ui/tabs.d.ts.map +0 -1
  133. package/dist/ui/test.d.ts +0 -2
  134. package/dist/ui/test.d.ts.map +0 -1
  135. package/dist/ui/toggle/primitives.d.ts +0 -2
  136. package/dist/ui/toggle/primitives.d.ts.map +0 -1
  137. package/dist/ui/toggle/primitives.js +0 -2
  138. package/dist/ui/toggle.d.ts +0 -3
  139. package/dist/ui/toggle.d.ts.map +0 -1
  140. package/dist/ui/toggle.js +0 -3
  141. package/dist/ui-hmr/assets.d.ts +0 -2
  142. package/dist/ui-hmr/assets.d.ts.map +0 -1
  143. package/dist/ui-hmr/node.d.ts +0 -3
  144. package/dist/ui-hmr/node.d.ts.map +0 -1
  145. package/dist/ui-hmr/runtime/browser.d.ts +0 -2
  146. package/dist/ui-hmr/runtime/browser.d.ts.map +0 -1
  147. package/dist/ui-hmr/runtime/server.d.ts +0 -2
  148. package/dist/ui-hmr/runtime/server.d.ts.map +0 -1
  149. package/dist/ui-hmr.d.ts +0 -2
  150. package/dist/ui-hmr.d.ts.map +0 -1
  151. package/dist/ui.d.ts +0 -2
  152. package/dist/ui.d.ts.map +0 -1
  153. package/dist/ui.js +0 -2
  154. package/src/ui/accordion/README.md +0 -202
  155. package/src/ui/accordion/primitives.ts +0 -2
  156. package/src/ui/accordion.ts +0 -2
  157. package/src/ui/anchor/README.md +0 -196
  158. package/src/ui/anchor.ts +0 -2
  159. package/src/ui/animation/README.md +0 -318
  160. package/src/ui/animation.ts +0 -2
  161. package/src/ui/breadcrumbs/README.md +0 -55
  162. package/src/ui/breadcrumbs.ts +0 -2
  163. package/src/ui/button/README.md +0 -44
  164. package/src/ui/button.ts +0 -3
  165. package/src/ui/checkbox/README.md +0 -59
  166. package/src/ui/checkbox.ts +0 -3
  167. package/src/ui/combobox/README.md +0 -194
  168. package/src/ui/combobox/primitives.ts +0 -2
  169. package/src/ui/combobox.ts +0 -2
  170. package/src/ui/input/README.md +0 -52
  171. package/src/ui/input.ts +0 -3
  172. package/src/ui/listbox/README.md +0 -83
  173. package/src/ui/listbox.ts +0 -2
  174. package/src/ui/menu/README.md +0 -161
  175. package/src/ui/menu/primitives.ts +0 -2
  176. package/src/ui/menu.ts +0 -2
  177. package/src/ui/popover/README.md +0 -103
  178. package/src/ui/popover.ts +0 -2
  179. package/src/ui/radio/README.md +0 -53
  180. package/src/ui/radio.ts +0 -3
  181. package/src/ui/select/README.md +0 -117
  182. package/src/ui/select/primitives.ts +0 -2
  183. package/src/ui/select.ts +0 -2
  184. package/src/ui/tabs/README.md +0 -141
  185. package/src/ui/tabs/primitives.ts +0 -2
  186. package/src/ui/tabs.ts +0 -2
  187. package/src/ui/toggle/README.md +0 -56
  188. package/src/ui/toggle/primitives.ts +0 -2
  189. package/src/ui/toggle.ts +0 -3
  190. package/src/ui-hmr.ts +0 -2
  191. package/src/ui.ts +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remix",
3
- "version": "3.0.0-rc.4",
3
+ "version": "3.0.0",
4
4
  "description": "The Remix web framework",
5
5
  "author": "Michael Jackson <mjijackson@gmail.com>",
6
6
  "license": "MIT",
@@ -46,6 +46,50 @@
46
46
  "types": "./dist/cli.d.ts",
47
47
  "default": "./dist/cli.js"
48
48
  },
49
+ "./component": {
50
+ "types": "./dist/component.d.ts",
51
+ "default": "./dist/component.js"
52
+ },
53
+ "./component-hmr": {
54
+ "types": "./dist/component-hmr.d.ts",
55
+ "default": "./dist/component-hmr.js"
56
+ },
57
+ "./component-hmr/assets": {
58
+ "types": "./dist/component-hmr/assets.d.ts",
59
+ "default": "./dist/component-hmr/assets.js"
60
+ },
61
+ "./component-hmr/node": {
62
+ "types": "./dist/component-hmr/node.d.ts",
63
+ "default": "./dist/component-hmr/node.js"
64
+ },
65
+ "./component-hmr/runtime/browser": {
66
+ "types": "./dist/component-hmr/runtime/browser.d.ts",
67
+ "default": "./dist/component-hmr/runtime/browser.js"
68
+ },
69
+ "./component-hmr/runtime/server": {
70
+ "types": "./dist/component-hmr/runtime/server.d.ts",
71
+ "default": "./dist/component-hmr/runtime/server.js"
72
+ },
73
+ "./component/dev/refresh": {
74
+ "types": "./dist/component/dev/refresh.d.ts",
75
+ "default": "./dist/component/dev/refresh.js"
76
+ },
77
+ "./component/jsx-dev-runtime": {
78
+ "types": "./dist/component/jsx-dev-runtime.d.ts",
79
+ "default": "./dist/component/jsx-dev-runtime.js"
80
+ },
81
+ "./component/jsx-runtime": {
82
+ "types": "./dist/component/jsx-runtime.d.ts",
83
+ "default": "./dist/component/jsx-runtime.js"
84
+ },
85
+ "./component/server": {
86
+ "types": "./dist/component/server.d.ts",
87
+ "default": "./dist/component/server.js"
88
+ },
89
+ "./component/test": {
90
+ "types": "./dist/component/test.d.ts",
91
+ "default": "./dist/component/test.js"
92
+ },
49
93
  "./cookie": {
50
94
  "types": "./dist/cookie.d.ts",
51
95
  "default": "./dist/cookie.js"
@@ -385,134 +429,6 @@
385
429
  "types": "./dist/test/cli.d.ts",
386
430
  "default": "./dist/test/cli.js"
387
431
  },
388
- "./ui": {
389
- "types": "./dist/ui.d.ts",
390
- "default": "./dist/ui.js"
391
- },
392
- "./ui-hmr": {
393
- "types": "./dist/ui-hmr.d.ts",
394
- "default": "./dist/ui-hmr.js"
395
- },
396
- "./ui-hmr/assets": {
397
- "types": "./dist/ui-hmr/assets.d.ts",
398
- "default": "./dist/ui-hmr/assets.js"
399
- },
400
- "./ui-hmr/node": {
401
- "types": "./dist/ui-hmr/node.d.ts",
402
- "default": "./dist/ui-hmr/node.js"
403
- },
404
- "./ui-hmr/runtime/browser": {
405
- "types": "./dist/ui-hmr/runtime/browser.d.ts",
406
- "default": "./dist/ui-hmr/runtime/browser.js"
407
- },
408
- "./ui-hmr/runtime/server": {
409
- "types": "./dist/ui-hmr/runtime/server.d.ts",
410
- "default": "./dist/ui-hmr/runtime/server.js"
411
- },
412
- "./ui/accordion": {
413
- "types": "./dist/ui/accordion.d.ts",
414
- "default": "./dist/ui/accordion.js"
415
- },
416
- "./ui/accordion/primitives": {
417
- "types": "./dist/ui/accordion/primitives.d.ts",
418
- "default": "./dist/ui/accordion/primitives.js"
419
- },
420
- "./ui/anchor": {
421
- "types": "./dist/ui/anchor.d.ts",
422
- "default": "./dist/ui/anchor.js"
423
- },
424
- "./ui/animation": {
425
- "types": "./dist/ui/animation.d.ts",
426
- "default": "./dist/ui/animation.js"
427
- },
428
- "./ui/breadcrumbs": {
429
- "types": "./dist/ui/breadcrumbs.d.ts",
430
- "default": "./dist/ui/breadcrumbs.js"
431
- },
432
- "./ui/button": {
433
- "types": "./dist/ui/button.d.ts",
434
- "default": "./dist/ui/button.js"
435
- },
436
- "./ui/checkbox": {
437
- "types": "./dist/ui/checkbox.d.ts",
438
- "default": "./dist/ui/checkbox.js"
439
- },
440
- "./ui/combobox": {
441
- "types": "./dist/ui/combobox.d.ts",
442
- "default": "./dist/ui/combobox.js"
443
- },
444
- "./ui/combobox/primitives": {
445
- "types": "./dist/ui/combobox/primitives.d.ts",
446
- "default": "./dist/ui/combobox/primitives.js"
447
- },
448
- "./ui/dev/refresh": {
449
- "types": "./dist/ui/dev/refresh.d.ts",
450
- "default": "./dist/ui/dev/refresh.js"
451
- },
452
- "./ui/input": {
453
- "types": "./dist/ui/input.d.ts",
454
- "default": "./dist/ui/input.js"
455
- },
456
- "./ui/jsx-dev-runtime": {
457
- "types": "./dist/ui/jsx-dev-runtime.d.ts",
458
- "default": "./dist/ui/jsx-dev-runtime.js"
459
- },
460
- "./ui/jsx-runtime": {
461
- "types": "./dist/ui/jsx-runtime.d.ts",
462
- "default": "./dist/ui/jsx-runtime.js"
463
- },
464
- "./ui/listbox": {
465
- "types": "./dist/ui/listbox.d.ts",
466
- "default": "./dist/ui/listbox.js"
467
- },
468
- "./ui/menu": {
469
- "types": "./dist/ui/menu.d.ts",
470
- "default": "./dist/ui/menu.js"
471
- },
472
- "./ui/menu/primitives": {
473
- "types": "./dist/ui/menu/primitives.d.ts",
474
- "default": "./dist/ui/menu/primitives.js"
475
- },
476
- "./ui/popover": {
477
- "types": "./dist/ui/popover.d.ts",
478
- "default": "./dist/ui/popover.js"
479
- },
480
- "./ui/radio": {
481
- "types": "./dist/ui/radio.d.ts",
482
- "default": "./dist/ui/radio.js"
483
- },
484
- "./ui/select": {
485
- "types": "./dist/ui/select.d.ts",
486
- "default": "./dist/ui/select.js"
487
- },
488
- "./ui/select/primitives": {
489
- "types": "./dist/ui/select/primitives.d.ts",
490
- "default": "./dist/ui/select/primitives.js"
491
- },
492
- "./ui/server": {
493
- "types": "./dist/ui/server.d.ts",
494
- "default": "./dist/ui/server.js"
495
- },
496
- "./ui/tabs": {
497
- "types": "./dist/ui/tabs.d.ts",
498
- "default": "./dist/ui/tabs.js"
499
- },
500
- "./ui/tabs/primitives": {
501
- "types": "./dist/ui/tabs/primitives.d.ts",
502
- "default": "./dist/ui/tabs/primitives.js"
503
- },
504
- "./ui/test": {
505
- "types": "./dist/ui/test.d.ts",
506
- "default": "./dist/ui/test.js"
507
- },
508
- "./ui/toggle": {
509
- "types": "./dist/ui/toggle.d.ts",
510
- "default": "./dist/ui/toggle.js"
511
- },
512
- "./ui/toggle/primitives": {
513
- "types": "./dist/ui/toggle/primitives.d.ts",
514
- "default": "./dist/ui/toggle/primitives.js"
515
- },
516
432
  "./package.json": "./package.json"
517
433
  },
518
434
  "devDependencies": {
@@ -521,54 +437,54 @@
521
437
  "typescript": "^7.0.2"
522
438
  },
523
439
  "dependencies": {
524
- "@remix-run/assets": "^0.8.0",
525
- "@remix-run/async-context-middleware": "^0.3.8",
526
- "@remix-run/auth": "^0.3.3",
527
- "@remix-run/ui": "^0.11.0",
528
- "@remix-run/auth-middleware": "^0.2.8",
529
- "@remix-run/compression-middleware": "^0.1.16",
530
- "@remix-run/cors-middleware": "^0.2.1",
531
- "@remix-run/csrf-middleware": "^0.2.0",
532
- "@remix-run/cop-middleware": "^0.1.11",
533
- "@remix-run/cookie": "^0.7.1",
534
- "@remix-run/data-table": "^0.6.0",
535
- "@remix-run/data-table-mysql": "^0.5.3",
536
- "@remix-run/data-schema": "^0.3.1",
537
- "@remix-run/data-table-postgres": "^0.5.3",
538
- "@remix-run/data-table-sqlite": "^0.6.3",
539
- "@remix-run/fetch-proxy": "^0.9.0",
540
- "@remix-run/file-storage": "^0.13.8",
541
- "@remix-run/fetch-router": "^0.22.2",
542
- "@remix-run/file-storage-s3": "^0.1.6",
543
- "@remix-run/form-data-middleware": "^0.3.8",
544
- "@remix-run/form-data-parser": "^0.17.7",
545
- "@remix-run/fs": "^0.4.7",
546
- "@remix-run/html-template": "^0.3.2",
547
- "@remix-run/logger-middleware": "^0.3.8",
548
- "@remix-run/method-override-middleware": "^0.1.16",
549
- "@remix-run/mime": "^0.4.3",
550
- "@remix-run/multipart-parser": "^0.16.6",
551
- "@remix-run/node-fetch-server": "^0.14.2",
552
- "@remix-run/node-tsx": "^0.1.2",
553
- "@remix-run/response": "^0.3.10",
554
- "@remix-run/headers": "^0.21.3",
555
- "@remix-run/lazy-file": "^5.0.7",
556
- "@remix-run/route-pattern": "^0.25.0",
557
- "@remix-run/session": "^0.4.3",
558
- "@remix-run/session-middleware": "^0.5.1",
559
- "@remix-run/session-storage-memcache": "^0.1.3",
560
- "@remix-run/session-storage-redis": "^0.1.2",
561
- "@remix-run/tar-parser": "^0.8.1",
562
- "@remix-run/assert": "^0.3.1",
563
- "@remix-run/cli": "^0.8.0",
564
- "@remix-run/test": "^0.6.2",
565
- "@remix-run/render-middleware": "^0.3.2",
566
- "@remix-run/terminal": "^0.1.2",
567
- "@remix-run/node-hmr": "^0.2.1",
568
- "@remix-run/spa": "^0.1.3",
569
- "@remix-run/ui-hmr": "^0.1.1",
570
- "@remix-run/static-middleware": "^0.4.17",
571
- "@remix-run/multiple-import-maps-polyfill": "^0.1.1"
440
+ "@remix-run/async-context-middleware": "^1.0.0",
441
+ "@remix-run/auth": "^1.0.0",
442
+ "@remix-run/component-hmr": "^1.0.0",
443
+ "@remix-run/auth-middleware": "^1.0.0",
444
+ "@remix-run/assets": "^1.0.0",
445
+ "@remix-run/component": "^1.0.0",
446
+ "@remix-run/cors-middleware": "^1.0.0",
447
+ "@remix-run/cop-middleware": "^1.0.0",
448
+ "@remix-run/cookie": "^1.0.0",
449
+ "@remix-run/data-schema": "^1.0.0",
450
+ "@remix-run/csrf-middleware": "^1.0.0",
451
+ "@remix-run/data-table": "^1.0.0",
452
+ "@remix-run/data-table-postgres": "^1.0.0",
453
+ "@remix-run/data-table-sqlite": "^1.0.0",
454
+ "@remix-run/fetch-proxy": "^1.0.0",
455
+ "@remix-run/compression-middleware": "^1.0.0",
456
+ "@remix-run/form-data-middleware": "^1.0.0",
457
+ "@remix-run/data-table-mysql": "^1.0.0",
458
+ "@remix-run/fetch-router": "^1.0.0",
459
+ "@remix-run/file-storage": "^1.0.0",
460
+ "@remix-run/form-data-parser": "^1.0.0",
461
+ "@remix-run/fs": "^1.0.0",
462
+ "@remix-run/headers": "^1.0.0",
463
+ "@remix-run/file-storage-s3": "^1.0.0",
464
+ "@remix-run/html-template": "^1.0.0",
465
+ "@remix-run/mime": "^1.0.0",
466
+ "@remix-run/multipart-parser": "^1.0.0",
467
+ "@remix-run/lazy-file": "^5.0.8",
468
+ "@remix-run/method-override-middleware": "^1.0.0",
469
+ "@remix-run/node-fetch-server": "^1.0.0",
470
+ "@remix-run/logger-middleware": "^1.0.0",
471
+ "@remix-run/node-tsx": "^1.0.0",
472
+ "@remix-run/response": "^1.0.0",
473
+ "@remix-run/route-pattern": "^1.0.0",
474
+ "@remix-run/session-middleware": "^1.0.0",
475
+ "@remix-run/session": "^1.0.0",
476
+ "@remix-run/session-storage-memcache": "^1.0.0",
477
+ "@remix-run/assert": "^1.0.0",
478
+ "@remix-run/cli": "^1.0.0",
479
+ "@remix-run/tar-parser": "^1.0.0",
480
+ "@remix-run/test": "^1.0.0",
481
+ "@remix-run/terminal": "^1.0.0",
482
+ "@remix-run/session-storage-redis": "^1.0.0",
483
+ "@remix-run/spa": "^1.0.0",
484
+ "@remix-run/multiple-import-maps-polyfill": "^1.0.0",
485
+ "@remix-run/node-hmr": "^1.0.0",
486
+ "@remix-run/static-middleware": "^1.0.0",
487
+ "@remix-run/render-middleware": "^1.0.0"
572
488
  },
573
489
  "bin": {
574
490
  "remix": "./dist/cli-entry.js"
@@ -595,13 +511,13 @@
595
511
  },
596
512
  "sideEffects": [
597
513
  "./src/cli-entry.ts",
514
+ "./src/component-hmr/node.ts",
598
515
  "./src/node-hmr/runtime.ts",
599
516
  "./src/node-tsx.ts",
600
- "./src/ui-hmr/node.ts",
601
517
  "./dist/cli-entry.js",
518
+ "./dist/component-hmr/node.js",
602
519
  "./dist/node-hmr/runtime.js",
603
- "./dist/node-tsx.js",
604
- "./dist/ui-hmr/node.js"
520
+ "./dist/node-tsx.js"
605
521
  ],
606
522
  "scripts": {
607
523
  "build": "tsc -p tsconfig.build.json && node ../../scripts/copy-package-type-only-exports.ts .",
@@ -225,8 +225,8 @@ let { href, importMap, preloads } = await assetServer.getScriptEntry('app/assets
225
225
  This can be used when rendering a document shell:
226
226
 
227
227
  ```tsx
228
- import type { Handle, RemixNode } from 'remix/ui'
229
- import { ImportMap } from 'remix/ui/server'
228
+ import type { Handle, RemixNode } from 'remix/component'
229
+ import { ImportMap } from 'remix/component/server'
230
230
  import { assetServer } from './assets.ts'
231
231
 
232
232
  let { href, importMap, preloads } = await assetServer.getScriptEntry('app/assets/entry.tsx')
@@ -248,10 +248,10 @@ export function Document(handle: Handle<{ children: RemixNode }>) {
248
248
  }
249
249
  ```
250
250
 
251
- This can also be used for resolved client entries in [`remix/ui`](../ui/README.md) when using `import.meta.url` as the client entry ID:
251
+ This can also be used for resolved client entries in [`remix/component`](../component/README.md) when using `import.meta.url` as the client entry ID:
252
252
 
253
253
  ```tsx
254
- import { renderToStream } from 'remix/ui/server'
254
+ import { renderToStream } from 'remix/component/server'
255
255
  import { assetServer } from './assets.ts'
256
256
 
257
257
  let stream = renderToStream(<App />, {
@@ -324,7 +324,7 @@ let preloads = await assetServer.getPreloads([
324
324
  // '/assets/app/actions/public/entry.ts',
325
325
  // '/assets/app/search/public/search.tsx',
326
326
  // '/assets/app/search/public/utils.ts',
327
- // '/assets/npm/remix/ui/index.js',
327
+ // '/assets/npm/remix/component/index.js',
328
328
  // ...etc
329
329
  // ]
330
330
  ```
@@ -436,22 +436,22 @@ If only some modules have side effects, `sideEffects` can be set to an array of
436
436
  }
437
437
  ```
438
438
 
439
- For example, an application might import `css` from `remix/ui`:
439
+ For example, an application might import `css` from `remix/component`:
440
440
 
441
441
  ```ts
442
442
  // entry.ts
443
- import { css } from 'remix/ui'
443
+ import { css } from 'remix/component'
444
444
  ```
445
445
 
446
446
  That binding passes through two barrel files before reaching its implementation:
447
447
 
448
448
  ```ts
449
- // remix/src/ui.ts
450
- export * from '@remix-run/ui'
449
+ // remix/src/component.ts
450
+ export * from '@remix-run/component'
451
451
  ```
452
452
 
453
453
  ```ts
454
- // @remix-run/ui/dist/index.js
454
+ // @remix-run/component/dist/index.js
455
455
  export { css } from './style/css-mixin.js'
456
456
  // ...other exports
457
457
  ```
@@ -460,7 +460,7 @@ After optimization, the served `entry.ts` module imports the binding directly fr
460
460
 
461
461
  ```ts
462
462
  // entry.ts
463
- import { css } from '/assets/npm/@remix-run/ui/dist/style/css-mixin.js'
463
+ import { css } from '/assets/npm/@remix-run/component/dist/style/css-mixin.js'
464
464
  ```
465
465
 
466
466
  ## Script Options
@@ -985,7 +985,7 @@ if (import.meta.hot) {
985
985
 
986
986
  - [`fetch-router`](../fetch-router/README.md) - A Fetch-based router that pairs naturally with `assets`
987
987
  - [`node-hmr`](../node-hmr/README.md) - Provides the server-side `import.meta.hot` runtime and browser HMR channel used by `hmr`
988
- - [`ui-hmr`](../ui-hmr/README.md) - Provides a Remix UI component HMR loader for `scripts.loaders`
988
+ - [`component-hmr`](../component-hmr/README.md) - Provides a Remix component HMR loader for `scripts.loaders`
989
989
 
990
990
  ## License
991
991
 
package/src/cli/README.md CHANGED
@@ -4,7 +4,7 @@ Command-line interface for creating and managing Remix projects.
4
4
 
5
5
  ## Features
6
6
 
7
- - Create new Remix projects with `npx remix@next new` or installed `remix new`
7
+ - Create new Remix projects with `npx remix new` or installed `remix new`
8
8
  - List browser-reachable files and inspect URL mappings with `remix assets`
9
9
  - Print shell completion scripts with `remix completion`
10
10
  - Check project environment and Remix app conventions with `remix doctor`
@@ -19,7 +19,7 @@ Command-line interface for creating and managing Remix projects.
19
19
 
20
20
  ## Installation
21
21
 
22
- Use `npx remix@next new <target-dir>` to scaffold a new Remix app. Install `remix` when you want the local `remix` command:
22
+ Use `npx remix new <target-dir>` to scaffold a new Remix app. Install `remix` when you want the local `remix` command:
23
23
 
24
24
  ```sh
25
25
  npm i remix
@@ -41,7 +41,7 @@ remix completion zsh >> ~/.zshrc
41
41
 
42
42
  ## Usage
43
43
 
44
- Use `npx remix@next new my-remix-app` to scaffold a new Remix app. After installing Remix, the equivalent local command is `remix new my-remix-app`.
44
+ Use `npx remix new my-remix-app` to scaffold a new Remix app. After installing Remix, the equivalent local command is `remix new my-remix-app`.
45
45
 
46
46
  The rest of the CLI is available through the installed `remix` command:
47
47
 
@@ -1,14 +1,14 @@
1
- # ui
1
+ # component
2
2
 
3
- Runtime UI primitives for Remix apps, including the component runtime, server rendering, frame hydration, reusable mixins, and headless first-party behavior primitives.
3
+ A minimal component system built on JavaScript and DOM primitives. Write components that render on
4
+ the server, stream to the browser, and hydrate only where you need interactivity.
4
5
 
5
6
  ## Features
6
7
 
7
8
  - Component runtime APIs for rendering, hydration, link and form frame navigation, and JSX
8
- - Server rendering APIs for streaming Remix UI trees and frames
9
- - `mix` composition with event, ref, CSS, and animation helpers
10
- - Headless behavior primitives for controls such as menus, listboxes, popovers, selects, and comboboxes
11
- - Lower-level utilities for keyboard events, typeahead search, refs, attributes, and CSS transition timing
9
+ - Server rendering APIs for streaming component trees and frames
10
+ - `mix` composition with event, ref, and CSS helpers
11
+ - Lower-level utilities for events, refs, attributes, and rendering lifecycle
12
12
 
13
13
  ## Installation
14
14
 
@@ -18,84 +18,40 @@ npm i remix
18
18
 
19
19
  ## Usage
20
20
 
21
- Compose behavior primitives with your own markup and styles:
21
+ Components receive a handle and return a render function. Local state stays in ordinary JavaScript
22
+ variables, and `handle.update()` explicitly schedules another render:
22
23
 
23
24
  ```tsx
24
- import { css, on } from 'remix/ui'
25
- import type { Handle } from 'remix/ui'
26
- import * as popover from 'remix/ui/popover'
27
-
28
- let triggerCss = css({
29
- border: '1px solid #d1d5db',
30
- borderRadius: '6px',
31
- padding: '6px 10px',
32
- })
33
-
34
- let surfaceCss = css({
35
- background: 'white',
36
- border: '1px solid #d1d5db',
37
- borderRadius: '6px',
38
- padding: '8px',
39
- })
25
+ import { on } from 'remix/component'
26
+ import type { Handle } from 'remix/component'
40
27
 
41
- function ViewOptions(handle: Handle) {
42
- let open = false
28
+ function Counter(handle: Handle<{ initialCount?: number }>) {
29
+ let count = handle.props.initialCount ?? 0
43
30
 
44
31
  return () => (
45
- <popover.Context>
46
- <button
47
- mix={[
48
- triggerCss,
49
- popover.anchor({ placement: 'bottom-end' }),
50
- popover.focusOnHide(),
51
- on('click', () => {
52
- open = true
53
- handle.update()
54
- }),
55
- ]}
56
- type="button"
57
- >
58
- View options
59
- </button>
60
- <div
61
- mix={[
62
- surfaceCss,
63
- popover.surface({
64
- open,
65
- onHide() {
66
- open = false
67
- handle.update()
68
- },
69
- }),
70
- ]}
71
- >
72
- Panel content
73
- </div>
74
- </popover.Context>
32
+ <button
33
+ type="button"
34
+ mix={on('click', () => {
35
+ count++
36
+ void handle.update()
37
+ })}
38
+ >
39
+ Count: {count}
40
+ </button>
75
41
  )
76
42
  }
77
43
  ```
78
44
 
79
- Button styling is available as a composable mixin:
80
-
81
- ```tsx
82
- import button from 'remix/ui/button'
83
-
84
- function Actions() {
85
- return () => <button mix={button({ tone: 'primary' })}>Create project</button>
86
- }
87
- ```
88
-
89
45
  ## Custom Mixins
90
46
 
91
- Use `createMixin(...)` to share host behavior, manage DOM resources, or provide default props. The [Mixins guide](https://github.com/remix-run/remix/blob/main/packages/ui/docs/mixins.md) covers setup and render, `MixinHandle`, lifecycle events, and deferred removal with `beforeRemove` and `event.persistNode(...)`.
47
+ Use `createMixin(...)` to share host behavior, manage DOM resources, or provide default props. The [Mixins guide](https://github.com/remix-run/remix/blob/main/packages/component/docs/mixins.md) covers setup and render, `MixinHandle`, lifecycle events, and deferred removal with `beforeRemove` and `event.persistNode(...)`.
92
48
 
93
49
  ## Client Entry Loading
94
50
 
95
51
  `run()` hydrates client entries by calling `loadModule` for each component module:
96
52
 
97
53
  ```tsx
98
- import { run } from 'remix/ui'
54
+ import { run } from 'remix/component'
99
55
 
100
56
  let app = run({
101
57
  async loadModule(moduleUrl, exportName) {
@@ -221,12 +177,12 @@ window.navigation?.addEventListener('navigate', (e) => e.stopImmediatePropagatio
221
177
  This prevents Remix from intercepting Navigation API events. Explicit frame reloads such as
222
178
  `handle.frame.reload()` continue to use the frame resolver.
223
179
 
224
- The default resolver accepts `2xx` responses and `3xx` or `4xx` responses whose `Content-Type` includes `text/html`, ignoring case. It rejects other `3xx` or `4xx` responses and all `5xx` responses with an error containing their status and status text. A custom `resolveFrame` may return a `Response` with any status when it wants Remix UI to render the response body.
180
+ The default resolver accepts `2xx` responses and `3xx` or `4xx` responses whose `Content-Type` includes `text/html`, ignoring case. It rejects other `3xx` or `4xx` responses and all `5xx` responses with an error containing their status and status text. A custom `resolveFrame` may return a `Response` with any status when it wants the component runtime to render the response body.
225
181
 
226
182
  Forms remain ordinary HTML forms before the runtime starts. Add `data-rmx-target` to reload a named frame, or `data-rmx-document` to require a full-document submission:
227
183
 
228
184
  ```tsx
229
- import { Frame } from 'remix/ui'
185
+ import { Frame } from 'remix/component'
230
186
 
231
187
  function AccountPage() {
232
188
  return () => (
@@ -242,13 +198,13 @@ function AccountPage() {
242
198
  }
243
199
  ```
244
200
 
245
- Native constraint validation and submitter overrides still apply. GET form values arrive in `src`; non-GET forms provide `formData`, `method`, and `encType` to the resolver. See [Frames](https://github.com/remix-run/remix/blob/main/packages/ui/docs/frames.md#form-navigation) for targeting, history behavior, request encoding, opt-outs, and server response guidance.
201
+ Native constraint validation and submitter overrides still apply. GET form values arrive in `src`; non-GET forms provide `formData`, `method`, and `encType` to the resolver. See [Frames](https://github.com/remix-run/remix/blob/main/packages/component/docs/frames.md#form-navigation) for targeting, history behavior, request encoding, opt-outs, and server response guidance.
246
202
 
247
203
  Use `data-rmx-history="push|replace"` on an enhanced anchor or form to control how the navigation updates history. This can override the automatic replacement used for non-GET form submissions to the current URL.
248
204
 
249
205
  ## Single-page Applications
250
206
 
251
- Use `render` and `run` from `remix/spa` when every route runs in the browser and returns a Remix UI
207
+ Use `render` and `run` from `remix/spa` when every route runs in the browser and returns a component
252
208
  tree instead of an HTTP response body. The render middleware keeps the router's standard `Request`
253
209
  to `Response` contract while associating the response with a node for the top frame to render:
254
210
 
@@ -284,7 +240,7 @@ Use `data-rmx-preserve-dom` on the smallest element whose live DOM should belong
284
240
  </pagefind-ui>
285
241
  ```
286
242
 
287
- Remix UI still renders the element's children during SSR and still hydrates any initial client entries inside it. On later frame reloads, matched `data-rmx-preserve-dom` elements keep their current attributes and children instead of accepting incoming DOM updates. See [Preserving client-owned DOM](https://github.com/remix-run/remix/blob/main/packages/ui/docs/frames.md#preserving-client-owned-dom) for guidance and caveats.
243
+ The component runtime still renders the element's children during SSR and still hydrates any initial client entries inside it. On later frame reloads, matched `data-rmx-preserve-dom` elements keep their current attributes and children instead of accepting incoming DOM updates. See [Preserving client-owned DOM](https://github.com/remix-run/remix/blob/main/packages/component/docs/frames.md#preserving-client-owned-dom) for guidance and caveats.
288
244
 
289
245
  Use `data-rmx-preserve-attrs` when client code owns only specific attributes, such as a theme set on `<html>`:
290
246
 
@@ -292,13 +248,13 @@ Use `data-rmx-preserve-attrs` when client code owns only specific attributes, su
292
248
  <html lang="en" data-rmx-preserve-attrs="data-theme"></html>
293
249
  ```
294
250
 
295
- On frame reloads, the space-separated attribute names in the incoming HTML keep their live values or absence. Other attributes and children reconcile normally. An empty or omitted list uses normal attribute reconciliation. This works on any matched element; it does not prevent removal or replacement. See [Preserving client-owned attributes](https://github.com/remix-run/remix/blob/main/packages/ui/docs/frames.md#preserving-client-owned-attributes) for examples and ownership rules.
251
+ On frame reloads, the space-separated attribute names in the incoming HTML keep their live values or absence. Other attributes and children reconcile normally. An empty or omitted list uses normal attribute reconciliation. This works on any matched element; it does not prevent removal or replacement. See [Preserving client-owned attributes](https://github.com/remix-run/remix/blob/main/packages/component/docs/frames.md#preserving-client-owned-attributes) for examples and ownership rules.
296
252
 
297
253
  ## Cascade Layers
298
254
 
299
- Remix UI emits generated `css(...)` rules under the `rmx` cascade layer. Unlayered CSS outranks layered CSS, so use explicit layer order when mixing Remix UI with global styles.
255
+ The component runtime emits generated `css(...)` rules under the `rmx` cascade layer. Unlayered CSS outranks layered CSS, so use explicit layer order when mixing generated styles with global styles.
300
256
 
301
- Put layers that should lose to Remix UI before `rmx`:
257
+ Put layers that should lose to generated styles before `rmx`:
302
258
 
303
259
  ```css
304
260
  @layer base, rmx;
@@ -1,2 +1,2 @@
1
1
  // IMPORTANT: This file is auto-generated, please do not edit manually.
2
- export * from '@remix-run/ui/dev/refresh'
2
+ export * from '@remix-run/component/dev/refresh'
@@ -1,2 +1,2 @@
1
1
  // IMPORTANT: This file is auto-generated, please do not edit manually.
2
- export * from '@remix-run/ui/jsx-dev-runtime'
2
+ export * from '@remix-run/component/jsx-dev-runtime'
@@ -1,2 +1,2 @@
1
1
  // IMPORTANT: This file is auto-generated, please do not edit manually.
2
- export * from '@remix-run/ui/jsx-runtime'
2
+ export * from '@remix-run/component/jsx-runtime'