@vireo-ai/trellis-ui 0.1.6 → 0.1.8

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 (158) hide show
  1. package/package.json +40 -39
  2. package/packages/client/src/components/app/styles.css +30 -0
  3. package/{src → packages/client/src}/styles/components.css +1 -0
  4. package/packages/client/src/styles/generated-sources.css +3 -0
  5. package/packages/client/types/bindings/disclosure.d.ts +3 -0
  6. package/{types → packages/client/types}/bindings/index.d.ts +3 -3
  7. package/packages/client/types/bindings/motion.d.ts +3 -0
  8. package/packages/client/types/bindings/state.d.ts +3 -0
  9. package/{types → packages/client/types}/bindings/types.d.ts +1 -3
  10. package/{types → packages/client/types}/components/modal/index.d.ts +1 -0
  11. package/{types → packages/client/types}/components/table/contract.d.ts +1 -1
  12. package/packages/client/types/directives/index.d.ts +1 -0
  13. package/packages/client/types/directives/request.d.ts +5 -0
  14. package/{types → packages/client/types}/index.d.ts +3 -3
  15. package/{types → packages/client/types}/motion/animate.d.ts +1 -1
  16. package/{types → packages/client/types}/motion/index.d.ts +3 -3
  17. package/{types → packages/client/types}/motion/presence.d.ts +1 -1
  18. package/{types → packages/client/types}/motion/reduced-motion.d.ts +1 -1
  19. package/{types → packages/client/types}/motion/view.d.ts +1 -1
  20. package/packages/client/types/runtime/engine/index.d.ts +2 -0
  21. package/packages/client/types/runtime/engine/request.d.ts +39 -0
  22. package/{types/runtime → packages/client/types/runtime/engine}/stream.d.ts +10 -9
  23. package/{types → packages/client/types}/runtime/index.d.ts +24 -18
  24. package/packages/client/types/utils/index.d.ts +3 -0
  25. package/packages/client/types/utils/object.d.ts +2 -0
  26. package/packages/client/types/utils/warn.d.ts +2 -0
  27. package/{trellis_ui → packages/server/trellis_ui}/static/trellis_ui/assets/css/trellis.css +14 -18
  28. package/{trellis_ui → packages/server/trellis_ui}/static/trellis_ui/assets/css/trellis.min.css +1 -1
  29. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-TZl4LpyH.js.map +1 -0
  30. package/{trellis_ui → packages/server/trellis_ui}/static/trellis_ui/assets/js/esm/index.js +2743 -2785
  31. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -0
  32. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +15 -0
  33. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +15 -0
  34. package/src/styles/generated-sources.css +0 -3
  35. package/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cally-TZl4LpyH.js.map +0 -1
  36. package/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +0 -1
  37. package/trellis_ui/static/trellis_ui/assets/js/trellis.js +0 -10
  38. package/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +0 -10
  39. package/types/bindings/disclosure.d.ts +0 -3
  40. package/types/bindings/motion.d.ts +0 -3
  41. package/types/bindings/state.d.ts +0 -3
  42. /package/{src → packages/client/src}/components/accordion/styles.css +0 -0
  43. /package/{src → packages/client/src}/components/brand/styles.css +0 -0
  44. /package/{src → packages/client/src}/components/button/styles.css +0 -0
  45. /package/{src → packages/client/src}/components/date-picker/styles.css +0 -0
  46. /package/{src → packages/client/src}/components/field/styles.css +0 -0
  47. /package/{src → packages/client/src}/components/file-upload/styles.css +0 -0
  48. /package/{src → packages/client/src}/components/input/styles.css +0 -0
  49. /package/{src → packages/client/src}/components/radio/styles.css +0 -0
  50. /package/{src → packages/client/src}/components/scroll-area/styles.css +0 -0
  51. /package/{src → packages/client/src}/components/select/styles.css +0 -0
  52. /package/{src → packages/client/src}/components/sidebar/styles.css +0 -0
  53. /package/{src → packages/client/src}/components/toast/styles.css +0 -0
  54. /package/{src → packages/client/src}/styles/static.css +0 -0
  55. /package/{src → packages/client/src}/styles/theme.css +0 -0
  56. /package/{types → packages/client/types}/cdn.d.ts +0 -0
  57. /package/{types → packages/client/types}/components/accordion/contract.d.ts +0 -0
  58. /package/{types → packages/client/types}/components/accordion/index.d.ts +0 -0
  59. /package/{types → packages/client/types}/components/action/contract.d.ts +0 -0
  60. /package/{types → packages/client/types}/components/action/index.d.ts +0 -0
  61. /package/{types → packages/client/types}/components/app/contract.d.ts +0 -0
  62. /package/{types → packages/client/types}/components/app/index.d.ts +0 -0
  63. /package/{types → packages/client/types}/components/badge/contract.d.ts +0 -0
  64. /package/{types → packages/client/types}/components/badge/index.d.ts +0 -0
  65. /package/{types → packages/client/types}/components/box/contract.d.ts +0 -0
  66. /package/{types → packages/client/types}/components/box/index.d.ts +0 -0
  67. /package/{types → packages/client/types}/components/brand/contract.d.ts +0 -0
  68. /package/{types → packages/client/types}/components/brand/index.d.ts +0 -0
  69. /package/{types → packages/client/types}/components/button/contract.d.ts +0 -0
  70. /package/{types → packages/client/types}/components/button/index.d.ts +0 -0
  71. /package/{types → packages/client/types}/components/card/contract.d.ts +0 -0
  72. /package/{types → packages/client/types}/components/card/index.d.ts +0 -0
  73. /package/{types → packages/client/types}/components/checkbox/contract.d.ts +0 -0
  74. /package/{types → packages/client/types}/components/checkbox/index.d.ts +0 -0
  75. /package/{types → packages/client/types}/components/combobox/contract.d.ts +0 -0
  76. /package/{types → packages/client/types}/components/combobox/index.d.ts +0 -0
  77. /package/{types → packages/client/types}/components/common.d.ts +0 -0
  78. /package/{types → packages/client/types}/components/container/contract.d.ts +0 -0
  79. /package/{types → packages/client/types}/components/container/index.d.ts +0 -0
  80. /package/{types → packages/client/types}/components/date-picker/contract.d.ts +0 -0
  81. /package/{types → packages/client/types}/components/date-picker/index.d.ts +0 -0
  82. /package/{types → packages/client/types}/components/dropdown/contract.d.ts +0 -0
  83. /package/{types → packages/client/types}/components/dropdown/index.d.ts +0 -0
  84. /package/{types → packages/client/types}/components/field/contract.d.ts +0 -0
  85. /package/{types → packages/client/types}/components/field/index.d.ts +0 -0
  86. /package/{types → packages/client/types}/components/file-upload/contract.d.ts +0 -0
  87. /package/{types → packages/client/types}/components/file-upload/index.d.ts +0 -0
  88. /package/{types → packages/client/types}/components/flex/contract.d.ts +0 -0
  89. /package/{types → packages/client/types}/components/flex/index.d.ts +0 -0
  90. /package/{types → packages/client/types}/components/frame/contract.d.ts +0 -0
  91. /package/{types → packages/client/types}/components/frame/index.d.ts +0 -0
  92. /package/{types → packages/client/types}/components/grid/contract.d.ts +0 -0
  93. /package/{types → packages/client/types}/components/grid/index.d.ts +0 -0
  94. /package/{types → packages/client/types}/components/heading/contract.d.ts +0 -0
  95. /package/{types → packages/client/types}/components/heading/index.d.ts +0 -0
  96. /package/{types → packages/client/types}/components/image/contract.d.ts +0 -0
  97. /package/{types → packages/client/types}/components/image/index.d.ts +0 -0
  98. /package/{types → packages/client/types}/components/index.d.ts +0 -0
  99. /package/{types → packages/client/types}/components/input/contract.d.ts +0 -0
  100. /package/{types → packages/client/types}/components/input/index.d.ts +0 -0
  101. /package/{types → packages/client/types}/components/layout.d.ts +0 -0
  102. /package/{types → packages/client/types}/components/menu/contract.d.ts +0 -0
  103. /package/{types → packages/client/types}/components/menu/index.d.ts +0 -0
  104. /package/{types → packages/client/types}/components/modal/contract.d.ts +0 -0
  105. /package/{types → packages/client/types}/components/overlay/contract.d.ts +0 -0
  106. /package/{types → packages/client/types}/components/overlay/index.d.ts +0 -0
  107. /package/{types → packages/client/types}/components/radio/contract.d.ts +0 -0
  108. /package/{types → packages/client/types}/components/radio/index.d.ts +0 -0
  109. /package/{types → packages/client/types}/components/runtime.d.ts +0 -0
  110. /package/{types → packages/client/types}/components/scroll-area/contract.d.ts +0 -0
  111. /package/{types → packages/client/types}/components/scroll-area/index.d.ts +0 -0
  112. /package/{types → packages/client/types}/components/section/contract.d.ts +0 -0
  113. /package/{types → packages/client/types}/components/section/index.d.ts +0 -0
  114. /package/{types → packages/client/types}/components/select/contract.d.ts +0 -0
  115. /package/{types → packages/client/types}/components/select/index.d.ts +0 -0
  116. /package/{types → packages/client/types}/components/separator/contract.d.ts +0 -0
  117. /package/{types → packages/client/types}/components/separator/index.d.ts +0 -0
  118. /package/{types → packages/client/types}/components/sidebar/contract.d.ts +0 -0
  119. /package/{types → packages/client/types}/components/sidebar/index.d.ts +0 -0
  120. /package/{types → packages/client/types}/components/slider/contract.d.ts +0 -0
  121. /package/{types → packages/client/types}/components/slider/index.d.ts +0 -0
  122. /package/{types → packages/client/types}/components/spacer/index.d.ts +0 -0
  123. /package/{types → packages/client/types}/components/stack/contract.d.ts +0 -0
  124. /package/{types → packages/client/types}/components/stack/index.d.ts +0 -0
  125. /package/{types → packages/client/types}/components/stream/index.d.ts +0 -0
  126. /package/{types → packages/client/types}/components/switch/contract.d.ts +0 -0
  127. /package/{types → packages/client/types}/components/switch/index.d.ts +0 -0
  128. /package/{types → packages/client/types}/components/table/index.d.ts +0 -0
  129. /package/{types → packages/client/types}/components/tabs/contract.d.ts +0 -0
  130. /package/{types → packages/client/types}/components/tabs/index.d.ts +0 -0
  131. /package/{types → packages/client/types}/components/text/contract.d.ts +0 -0
  132. /package/{types → packages/client/types}/components/text/index.d.ts +0 -0
  133. /package/{types → packages/client/types}/components/textarea/contract.d.ts +0 -0
  134. /package/{types → packages/client/types}/components/textarea/index.d.ts +0 -0
  135. /package/{types → packages/client/types}/components/theme/contract.d.ts +0 -0
  136. /package/{types → packages/client/types}/components/theme/index.d.ts +0 -0
  137. /package/{types → packages/client/types}/components/toast/contract.d.ts +0 -0
  138. /package/{types → packages/client/types}/components/toast/index.d.ts +0 -0
  139. /package/{types → packages/client/types}/motion/stream.d.ts +0 -0
  140. /package/{types → packages/client/types}/motion/targets.d.ts +0 -0
  141. /package/{types → packages/client/types}/runtime/anchored-popover.d.ts +0 -0
  142. /package/{types → packages/client/types}/runtime/class-name.d.ts +0 -0
  143. /package/{types → packages/client/types}/runtime/codecs.d.ts +0 -0
  144. /package/{types → packages/client/types}/runtime/collection-navigation.d.ts +0 -0
  145. /package/{types → packages/client/types}/runtime/confirm.d.ts +0 -0
  146. /package/{types → packages/client/types}/runtime/create.d.ts +0 -0
  147. /package/{types → packages/client/types}/runtime/dismissable-layer.d.ts +0 -0
  148. /package/{types → packages/client/types}/runtime/form-control.d.ts +0 -0
  149. /package/{types → packages/client/types}/runtime/machine.d.ts +0 -0
  150. /package/{types → packages/client/types}/runtime/manifest.d.ts +0 -0
  151. /package/{types → packages/client/types}/runtime/merge-bindings.d.ts +0 -0
  152. /package/{types → packages/client/types}/runtime/option-data.d.ts +0 -0
  153. /package/{types → packages/client/types}/runtime/resizable.d.ts +0 -0
  154. /package/{types → packages/client/types}/runtime/scroll-lock.d.ts +0 -0
  155. /package/{types → packages/client/types}/runtime/styles.d.ts +0 -0
  156. /package/{types → packages/client/types}/runtime/theme.d.ts +0 -0
  157. /package/{types/runtime → packages/client/types/utils}/dom.d.ts +0 -0
  158. /package/{trellis_ui → packages/server/trellis_ui}/static/trellis_ui/assets/js/esm/chunks/cally-TZl4LpyH.js +0 -0
package/package.json CHANGED
@@ -1,53 +1,52 @@
1
1
  {
2
2
  "name": "@vireo-ai/trellis-ui",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "type": "module",
5
5
  "description": "Django-native UI toolkit for building realtime and interactive web apps.",
6
6
  "license": "MIT",
7
- "main": "./trellis_ui/static/trellis_ui/assets/js/esm/index.js",
8
- "module": "./trellis_ui/static/trellis_ui/assets/js/esm/index.js",
9
- "style": "./trellis_ui/static/trellis_ui/assets/css/trellis.min.css",
10
- "types": "./types/index.d.ts",
7
+ "main": "./packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js",
8
+ "module": "./packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js",
9
+ "style": "./packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css",
10
+ "types": "./packages/client/types/index.d.ts",
11
11
  "sideEffects": true,
12
12
  "files": [
13
13
  "LICENSE",
14
14
  "README.md",
15
- "types/**/*.d.ts",
16
- "src/styles/**/*.css",
17
- "src/components/**/*.css",
18
- "trellis_ui/static/trellis_ui/assets/css/trellis.css",
19
- "trellis_ui/static/trellis_ui/assets/css/trellis.min.css",
20
- "trellis_ui/static/trellis_ui/assets/js/trellis.js",
21
- "trellis_ui/static/trellis_ui/assets/js/trellis.min.js",
22
- "trellis_ui/static/trellis_ui/assets/js/esm/**/*.js",
23
- "trellis_ui/static/trellis_ui/assets/js/esm/**/*.js.map",
24
- "!types/components/manifests.d.ts",
25
- "!types/components/styles.d.ts",
26
- "!types/components/**/manifest.d.ts",
27
- "!types/components/**/styles.d.ts"
15
+ "packages/client/types/**/*.d.ts",
16
+ "packages/client/src/styles/**/*.css",
17
+ "packages/client/src/components/**/*.css",
18
+ "packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css",
19
+ "packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css",
20
+ "packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js",
21
+ "packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js",
22
+ "packages/server/trellis_ui/static/trellis_ui/assets/js/esm/**/*.js",
23
+ "packages/server/trellis_ui/static/trellis_ui/assets/js/esm/**/*.js.map",
24
+ "!packages/client/types/components/manifests.d.ts",
25
+ "!packages/client/types/components/styles.d.ts",
26
+ "!packages/client/types/components/**/manifest.d.ts",
27
+ "!packages/client/types/components/**/styles.d.ts"
28
28
  ],
29
29
  "exports": {
30
30
  ".": {
31
- "types": "./types/index.d.ts",
32
- "import": "./trellis_ui/static/trellis_ui/assets/js/esm/index.js",
33
- "default": "./trellis_ui/static/trellis_ui/assets/js/esm/index.js"
31
+ "types": "./packages/client/types/index.d.ts",
32
+ "import": "./packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js",
33
+ "default": "./packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js"
34
34
  },
35
- "./cdn": "./trellis_ui/static/trellis_ui/assets/js/trellis.js",
36
- "./cdn.min": "./trellis_ui/static/trellis_ui/assets/js/trellis.min.js",
37
- "./cdn.js": "./trellis_ui/static/trellis_ui/assets/js/trellis.js",
38
- "./cdn.min.js": "./trellis_ui/static/trellis_ui/assets/js/trellis.min.js",
39
- "./theme.css": "./src/styles/theme.css",
40
- "./styles.css": "./trellis_ui/static/trellis_ui/assets/css/trellis.css",
41
- "./styles.min.css": "./trellis_ui/static/trellis_ui/assets/css/trellis.min.css",
42
- "./cdn.css": "./trellis_ui/static/trellis_ui/assets/css/trellis.css",
43
- "./cdn.min.css": "./trellis_ui/static/trellis_ui/assets/css/trellis.min.css",
35
+ "./cdn": "./packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js",
36
+ "./cdn.min": "./packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js",
37
+ "./cdn.js": "./packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js",
38
+ "./cdn.min.js": "./packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js",
39
+ "./theme.css": "./packages/client/src/styles/theme.css",
40
+ "./styles.css": "./packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css",
41
+ "./styles.min.css": "./packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css",
42
+ "./cdn.css": "./packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css",
43
+ "./cdn.min.css": "./packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css",
44
44
  "./package.json": "./package.json"
45
45
  },
46
46
  "dependencies": {
47
47
  "@alpinejs/morph": "^3.15.12",
48
48
  "@atlaskit/pragmatic-drag-and-drop": "^2.0.1",
49
49
  "@floating-ui/dom": "^1.6.13",
50
- "@imacrayon/alpine-ajax": "^0.12.7",
51
50
  "alpinejs": "^3.14.8",
52
51
  "cally": "^0.9.2",
53
52
  "clsx": "^2.1.1",
@@ -63,32 +62,34 @@
63
62
  "@types/node": "^25.9.3",
64
63
  "jsdom": "^29.1.1",
65
64
  "tailwindcss": "^4.0.0",
65
+ "tsc-alias": "^1.9.0",
66
66
  "typescript": "^6.0.3",
67
67
  "vite": "^8.0.16",
68
68
  "vitest": "^4.1.9"
69
69
  },
70
70
  "scripts": {
71
71
  "typecheck": "tsc --noEmit",
72
- "test": "vitest run --no-file-parallelism",
73
- "test:browser": "pnpm run build:testapp-css && playwright test",
72
+ "test:unit": "vitest run --no-file-parallelism",
73
+ "test:python": "uv run pytest tests/server || test $? -eq 5",
74
+ "test:browser": "playwright test --pass-with-no-tests",
75
+ "test": "pnpm run test:unit && pnpm run test:python && pnpm run test:browser",
74
76
  "test:watch": "vitest",
75
77
  "prek": "uv run prek",
76
- "clean:types": "node -e \"require('node:fs').rmSync('types', { recursive: true, force: true })\"",
78
+ "clean:types": "node -e \"require('node:fs').rmSync('packages/client/types', { recursive: true, force: true })\"",
77
79
  "build:sources": "pnpm run build:manifests",
78
- "build:testapp-css": "pnpm run build:sources && tailwindcss -i ./tests/testapp/assets/styles.css -o ./tests/testapp/static/testapp/css/styles.css --minify",
79
80
  "build:manifests": "vite build --config vite.manifests.config.ts && python3 scripts/generate_ui_events.py",
80
- "build:types": "pnpm run clean:types && tsc -p tsconfig.build.json",
81
+ "build:types": "pnpm run clean:types && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
81
82
  "build:js": "vite build && node scripts/copy_minified_js_alias.mjs && vite build --config vite.esm.config.ts && pnpm run build:types",
82
- "build:css": "pnpm run build:sources && tailwindcss -i ./src/styles/static.css -o ./trellis_ui/static/trellis_ui/assets/css/trellis.css && tailwindcss -i ./src/styles/static.css -o ./trellis_ui/static/trellis_ui/assets/css/trellis.min.css --minify",
83
+ "build:css": "pnpm run build:sources && tailwindcss -i ./packages/client/src/styles/static.css -o ./packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css && tailwindcss -i ./packages/client/src/styles/static.css -o ./packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css --minify",
83
84
  "build:package": "pnpm run build:css && pnpm run build:js",
84
85
  "build": "pnpm run build:package",
85
- "check": "pnpm run build:package && pnpm run typecheck && pnpm test && uv run pytest && pnpm run test:browser",
86
+ "check": "pnpm run build:package && pnpm run typecheck && pnpm test",
86
87
  "check:packages": "pnpm pack --dry-run && uv build --sdist --wheel",
87
88
  "check:release": "pnpm run check && pnpm run check:packages",
88
89
  "release": "node scripts/release.mjs",
89
90
  "publish:npm": "pnpm run check:release && pnpm publish --access public",
90
91
  "publish:pypi": "pnpm run build:package && uv build --sdist --wheel && uv publish dist/django_trellis-${npm_package_version}.tar.gz dist/django_trellis-${npm_package_version}-py3-none-any.whl",
91
92
  "publish:all": "pnpm run check:release && pnpm publish --access public && uv publish dist/django_trellis-${npm_package_version}.tar.gz dist/django_trellis-${npm_package_version}-py3-none-any.whl",
92
- "dev:css": "pnpm run build:sources && tailwindcss -i ./src/styles/static.css -o ./trellis_ui/static/trellis_ui/assets/css/trellis.min.css --minify --watch"
93
+ "dev:css": "pnpm run build:sources && tailwindcss -i ./packages/client/src/styles/static.css -o ./packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css --minify --watch"
93
94
  }
94
95
  }
@@ -0,0 +1,30 @@
1
+ [data-ui-app] {
2
+ grid-template-areas:
3
+ "header"
4
+ "main"
5
+ "footer";
6
+ }
7
+
8
+ @media (min-width: 1024px) {
9
+ [data-ui-app][data-sidebar="left"],
10
+ [data-ui-app][data-sidebar="both"] {
11
+ grid-template-areas:
12
+ "sidebar header aside"
13
+ "sidebar main aside"
14
+ "sidebar footer aside";
15
+ }
16
+
17
+ [data-ui-app][data-sidebar="right"] {
18
+ grid-template-areas:
19
+ "header sidebar aside"
20
+ "main sidebar aside"
21
+ "footer sidebar aside";
22
+ }
23
+
24
+ [data-ui-app][data-sidebar="none"] {
25
+ grid-template-areas:
26
+ "header"
27
+ "main"
28
+ "footer";
29
+ }
30
+ }
@@ -7,6 +7,7 @@
7
7
  */
8
8
 
9
9
  @import "../components/brand/styles.css";
10
+ @import "../components/app/styles.css";
10
11
  @import "../components/scroll-area/styles.css";
11
12
  @import "../components/select/styles.css";
12
13
  @import "../components/field/styles.css";
@@ -0,0 +1,3 @@
1
+ /* Generated by `pnpm run build:manifests`. Do not edit. */
2
+ /* Tailwind source hints derived from Trellis defineStyles. */
3
+ @source inline("text-xs text-sm text-base text-lg text-xl text-2xl font-normal font-medium font-semibold font-bold text-inherit text-foreground-muted text-foreground-subtle text-accent-text text-danger-text truncate block font-medium [&:has(+[data-ui-text])]:mb-2 [[data-ui-text]+&]:mt-2 text-2xl font-semibold relative block overflow-hidden ui-image-outline block size-full object-cover object-contain object-fill object-none object-scale-down grid overflow-hidden bg-app text-foreground grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] lg:[grid-template-columns:var(--ui-app-sidebar-width,var(--ui-sidebar-width,16rem))_minmax(0,1fr)_min-content] lg:data-[sidebar-state=stashed]:[grid-template-columns:0_minmax(0,1fr)_min-content] h-dvh min-h-dvh min-h-0 lg:[grid-template-columns:minmax(0,1fr)_var(--ui-app-sidebar-width,var(--ui-sidebar-width,16rem))_min-content] lg:data-[sidebar-state=stashed]:[grid-template-columns:minmax(0,1fr)_0_min-content] lg:grid-cols-[minmax(0,1fr)] fixed inset-0 z-40 bg-overlay lg:data-[sidebar-state=stashed]:bg-transparent z-10 flex min-w-0 items-center gap-2 px-4 py-3 [grid-area:header] sticky top-0 bg-transparent text-inherit bg-app text-foreground bg-chrome text-foreground bg-surface-subtle text-foreground bg-surface-panel text-foreground bg-surface-raised text-foreground bg-surface-overlay text-foreground bg-surface-accent text-surface-accent-fg bg-surface-inverse text-surface-inverse-fg border-b border-border/60 min-h-0 min-w-0 [grid-area:main] mx-auto w-full max-w-5xl p-6 overflow-y-auto overflow-hidden min-w-0 border-t border-border bg-chrome px-4 py-3 [grid-area:footer] min-h-0 min-w-0 border-l border-border bg-chrome [grid-area:aside] grid w-full min-w-0 gap-0 gap-2 md:grid-flow-col md:auto-cols-fr min-w-0 border-b border-border last:border-b-0 data-disabled:opacity-50 block text-foreground flex min-h-control-xlg w-full min-w-0 items-center gap-2 rounded-2 border border-transparent px-3 py-2 text-left text-sm font-medium text-foreground outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2 focus-visible:ring-offset-app data-disabled:pointer-events-none data-disabled:opacity-50 min-w-0 flex-1 size-icon shrink-0 fill-current text-icon overflow-hidden text-sm text-foreground-muted min-w-0 px-3 pb-3 pt-1 contents m-0 border-0 bg-transparent p-0 inline-flex min-w-0 shrink-0 select-none items-center justify-center gap-1 whitespace-nowrap font-medium outline-none bg-current/10 text-foreground-muted bg-surface-panel text-foreground shadow-border border border-border bg-transparent text-foreground-muted bg-base-12 text-base-1 shadow-1 min-h-control-xs px-1.5 text-xs min-h-control-sm px-2 text-xs min-h-control-md px-2.5 text-sm min-h-control-lg px-3 text-sm min-h-control-xlg px-4 text-sm -mt-1 -mb-1 text-success-text text-warning-text border border-accent-border bg-surface-panel text-accent-text shadow-none border border-success-border bg-surface-panel text-success-text shadow-none border border-warning-border bg-surface-panel text-warning-text shadow-none border border-danger-border bg-surface-panel text-danger-text shadow-none border border-accent-border bg-transparent text-accent-text border border-success-border bg-transparent text-success-text border border-warning-border bg-transparent text-warning-text border border-danger-border bg-transparent text-danger-text bg-accent-solid text-accent-contrast shadow-1 bg-success-solid text-success-contrast shadow-1 bg-warning-solid text-warning-contrast shadow-1 bg-danger-solid text-danger-contrast shadow-1 rounded-1 rounded-2 rounded-3 rounded-full rounded-4 rounded-5 -ml-1.5 -ml-2 -ml-2.5 -mr-1.5 -mr-2 -mr-2.5 contents shrink-0 fill-current text-current size-icon-xs size-icon-sm size-icon -mr-1 inline-flex shrink-0 items-center justify-center rounded-full text-current outline-none hover:bg-current/10 focus-visible:bg-current/10 focus-visible:ring-1 focus-visible:ring-current data-disabled:pointer-events-none data-disabled:opacity-50 size-4 size-5 size-6 size-icon-xs shrink-0 fill-current text-current min-w-0 block grid flex items-center flex flex-wrap items-center grid place-items-center gap-1 gap-2 gap-3 gap-4 gap-5 gap-6 gap-7 gap-8 gap-9 gap-x-1 gap-x-2 gap-x-3 gap-x-4 gap-x-5 gap-x-6 gap-x-7 gap-x-8 gap-x-9 gap-y-1 gap-y-2 gap-y-3 gap-y-4 gap-y-5 gap-y-6 gap-y-7 gap-y-8 gap-y-9 p-1 p-2 p-3 p-4 p-5 p-6 p-7 p-8 p-9 px-1 px-2 px-3 px-4 px-5 px-6 px-7 px-8 px-9 py-1 py-2 py-3 py-4 py-5 py-6 py-7 py-8 py-9 m-1 m-2 m-3 m-4 m-5 m-6 m-7 m-8 m-9 mx-1 mx-2 mx-3 mx-4 mx-5 mx-6 mx-7 mx-8 mx-9 my-1 my-2 my-3 my-4 my-5 my-6 my-7 my-8 my-9 rounded-6 shadow-1 shadow-2 shadow-3 shadow-4 shadow-5 shadow-6 shadow-none w-full mx-auto w-full max-w-xs mx-auto w-full max-w-sm mx-auto w-full max-w-md mx-auto w-full max-w-lg mx-auto w-full max-w-xl mx-auto w-full max-w-prose h-full h-full max-h-xs h-full max-h-sm h-full max-h-md h-full max-h-lg h-full max-h-xl items-start items-center items-end justify-center justify-end justify-between grid-cols-1 grid-cols-1 sm:grid-cols-2 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6 bg-chrome-alpha bg-surface-panel-alpha bg-surface-overlay-alpha cursor-default select-none inline-flex min-w-0 shrink-0 items-center align-middle text-foreground no-underline outline-none gap-1.5 rounded-2 gap-2 rounded-3 gap-2.5 rounded-3 inline-flex shrink-0 items-center justify-center text-current size-8 size-full relative inline-flex min-w-0 shrink-0 select-none items-center gap-2 whitespace-nowrap font-normal outline-none justify-start h-control-xs text-xs h-control-sm text-xs h-control-md text-sm h-control-lg text-sm h-control-xlg text-sm bg-transparent shadow-none shadow-border hover:shadow-border-hover bg-transparent shadow-none ring-1 ring-inset bg-transparent px-0 shadow-none w-control-xs px-0 w-control-sm px-0 w-control-md px-0 w-control-lg px-0 w-control-xlg px-0 -ml-3 -ml-4 -mr-3 -mr-4 text-foreground bg-base-a2 text-foreground bg-accent-surface text-accent-text bg-danger-surface text-danger-text bg-control text-foreground bg-control text-accent-text bg-control text-danger-text text-foreground ring-border-interactive text-accent-text ring-accent-border text-danger-text ring-danger-border text-foreground hover:text-foreground text-accent-text hover:text-accent-12 text-danger-text hover:text-danger-12 inline-flex items-center isolate flex min-w-0 flex-1 items-center gap-2 pointer-events-none absolute inset-0 flex items-center justify-center size-icon shrink-0 fill-current text-current ml-auto relative isolate min-w-0 overflow-hidden rounded-4 ui-interactive:hover:bg-interactive-hover ui-interactive:ui-active:bg-interactive-active ui-interactive:ui-selected:bg-interactive-selected ui-interactive:ui-selected:hover:bg-interactive-selected-hover ui-interactive-surface:hover:shadow-interactive-hover ui-interactive-surface:ui-selected:shadow-interactive-selected ui-interactive-surface:ui-selected:hover:shadow-interactive-selected ui-interactive-surface:focus-visible:shadow-interactive-focus ui-interactive-surface:[&:has(:focus-visible)]:shadow-interactive-focus grid min-w-0 grid-cols-[minmax(0,1fr)_auto] gap-x-3 gap-y-1 col-start-1 block min-w-0 pr-2 col-start-1 min-w-0 pr-2 col-start-2 row-span-2 row-start-1 -mr-1 -mt-1 justify-self-end self-start min-w-0 text-foreground min-w-0 gap-2 justify-items-start justify-items-end justify-items-stretch grid w-full min-w-0 flex flex-wrap items-start gap-3 relative flex w-full min-w-0 cursor-pointer items-start gap-2 rounded-3 outline-none py-0.5 text-foreground data-disabled:text-control-disabled-fg [&[data-disabled]_[data-ui-checkbox-description]]:text-control-disabled-fg peer sr-only relative mt-0.5 flex shrink-0 items-center justify-center rounded-2 border border-border bg-surface-panel shadow-inset text-accent-contrast peer-focus-visible:shadow-focus data-checked:border-accent-solid data-checked:bg-accent-solid data-indeterminate:border-accent-solid data-indeterminate:bg-accent-solid data-invalid:border-danger-border data-invalid:data-checked:border-danger-border data-invalid:data-indeterminate:border-danger-border data-disabled:border-border data-disabled:bg-control-disabled data-disabled:text-control-disabled-fg data-disabled:data-checked:border-border data-disabled:data-checked:bg-control-disabled data-disabled:data-indeterminate:border-border data-disabled:data-indeterminate:bg-control-disabled size-3 size-3.5 pointer-events-none absolute left-1/2 top-1/2 size-icon-xs -translate-x-1/2 -translate-y-1/2 shrink-0 fill-current opacity-0 data-checked:opacity-100 data-indeterminate:opacity-100 grid min-w-0 gap-0.5 mt-0.5 size-icon shrink-0 fill-current text-current opacity-75 bg-app font-sans text-foreground sr-only fill-current inline-block size-icon shrink-0 relative inline-block size-icon shrink-0 absolute inset-0 size-full size-icon shrink-0 animate-spin size-full dark:hidden hidden size-full dark:block size-icon-xs fill-current size-icon fill-current size-icon fill-current rotate-180 dark:hidden hidden dark:inline relative inline-grid w-full min-w-0 flex w-full min-w-0 items-center gap-control text-control-fg outline-none min-h-control-md px-3 text-sm bg-control shadow-control bg-control-hover shadow-none hover:bg-control-active data-invalid:shadow-control data-disabled:bg-control-hover data-disabled:hover:bg-control-hover -ml-1.5 flex min-w-0 flex-wrap items-center gap-1 inline-flex h-control-sm max-w-48 min-w-0 items-center gap-1 rounded-2 border border-border bg-current/10 px-2 text-sm font-normal text-foreground -mr-1 inline-flex size-control-xs shrink-0 items-center justify-center rounded-2 border-0 bg-transparent text-icon outline-none hover:bg-base-a3 hover:text-foreground focus-visible:ring-2 focus-visible:ring-focus w-full min-w-16 flex-1 border-0 bg-transparent p-0 text-inherit text-control-fg outline-none placeholder:text-control-placeholder inline-flex size-control-xs shrink-0 items-center justify-center rounded-2 border-0 bg-transparent text-icon outline-none hover:bg-control-hover hover:text-control-fg absolute left-0 top-0 z-popover m-0 grid rounded-3 bg-popover text-popover-fg shadow-popover outline-none auto-rows-min content-start max-h-combobox-listbox min-w-48 gap-1 overflow-auto p-popover flex h-menu-item w-full cursor-default select-none items-center gap-2 rounded-2 px-menu-item-x text-left text-sm font-normal text-menu-item-fg outline-none ml-auto text-menu-item-muted size-icon shrink-0 fill-current text-current opacity-70 ml-auto size-icon shrink-0 fill-current text-current opacity-0 data-selected:opacity-100 grid auto-rows-min content-start gap-1 px-menu-item-x py-1 text-menu-heading-fg px-menu-item-x py-2 text-sm text-foreground-muted -mx-popover my-popover h-px h-px w-full border-0 bg-menu-separator min-w-0 w-full inline-block hidden ml-0 mr-auto mx-auto ml-auto mr-0 w-full max-w-xs w-full max-w-sm w-full max-w-md w-full max-w-lg w-full max-w-xl w-full max-w-prose max-w-none max-w-xs max-w-sm max-w-md max-w-lg max-w-xl max-w-2xl max-w-3xl max-w-4xl max-w-5xl max-w-6xl max-w-7xl max-w-prose data-invalid:focus-within:shadow-danger-focus data-invalid:data-[state=open]:shadow-danger-focus text-left inline-flex min-h-control-lg min-w-control-lg shrink-0 items-center justify-center gap-control bg-control px-2 text-sm text-control-fg shadow-control outline-none hover:bg-control-hover hover:text-control-fg data-disabled:bg-control-disabled data-disabled:text-control-disabled-fg data-disabled:shadow-control-disabled data-disabled:hover:bg-control-disabled data-disabled:hover:text-control-disabled-fg min-w-0 flex-1 text-sm max-h-lg overflow-hidden grid min-w-72 max-w-[calc(100vw-2rem)] gap-0 overflow-hidden sm:grid-cols-[minmax(9rem,11rem)_auto] sm:grid-cols-[auto_minmax(9rem,11rem)] relative grid size-full place-items-center overflow-x-auto overflow-y-auto p-popover grid max-w-full gap-2 text-sm text-foreground grid content-start gap-1 border-popover-border p-popover sm:data-[position=left]:border-r sm:data-[position=right]:border-l data-[position=top]:border-b data-[position=bottom]:border-t flex items-center justify-end gap-2 border-t border-popover-border p-popover relative w-full min-w-0 w-full bg-control text-control-fg shadow-control outline-none grid min-w-0 gap-2 md:grid-cols-[minmax(10rem,14rem)_minmax(0,1fr)] md:items-start md:gap-x-4 grid-cols-[auto_minmax(0,1fr)] items-start gap-x-3 gap-y-1 grid min-w-0 gap-4 flex flex-wrap items-start gap-4 sm:grid-cols-2 grid min-w-0 gap-3 border-0 p-0 inline-flex min-w-0 items-center gap-2 text-sm font-medium text-foreground inline-flex min-w-0 items-center gap-2 p-0 text-sm font-medium text-foreground inline-flex h-control-xs items-center rounded-2 border border-border bg-base-a2 px-1.5 text-xs font-normal text-foreground-muted text-sm font-normal text-foreground-muted text-sm font-normal text-danger-text grid gap-1 grid w-full min-w-0 gap-3 relative grid min-w-0 gap-3 relative grid min-w-0 overflow-hidden rounded-4 bg-surface-panel text-foreground shadow-control outline-none hover:bg-base-a2 data-dragging:bg-base-a3 data-disabled:pointer-events-none data-disabled:bg-control-disabled data-disabled:text-control-disabled-fg data-disabled:shadow-control-disabled data-disabled:hover:bg-control-disabled [&[data-disabled]_[data-ui-file-upload-heading]]:text-control-disabled-fg [&[data-disabled]_[data-ui-file-upload-text]]:text-control-disabled-fg [&[data-disabled]_[data-ui-file-upload-browse]]:bg-control-disabled [&[data-disabled]_[data-ui-file-upload-browse]]:text-control-disabled-fg [&[data-disabled]_[data-ui-file-upload-browse]]:shadow-control-disabled justify-items-center text-center grid-cols-[auto_minmax(0,1fr)_auto] items-center text-left gap-2 p-3 gap-3 p-4 gap-3 p-5 size-icon-lg shrink-0 fill-current text-icon grid min-w-0 gap-1 text-sm font-medium text-foreground text-xs font-normal text-foreground-muted inline-flex min-w-0 items-center justify-center rounded-3 bg-base-a2 px-2 py-1 text-xs font-medium text-foreground shadow-border text-xs text-foreground-muted grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 rounded-3 bg-surface-panel px-3 py-2 shadow-border hover:shadow-border-hover data-invalid:shadow-danger-focus flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-2 bg-base-a2 text-icon truncate text-sm font-medium text-foreground truncate text-xs font-normal text-foreground-muted truncate text-xs font-normal text-danger-text relative z-20 inline-flex size-control-sm shrink-0 items-center justify-center rounded-3 border-0 bg-transparent text-icon outline-none hover:bg-base-a2 hover:text-foreground size-icon-xs fill-current leading-none flex inline-flex flex-row flex-col flex-row-reverse flex-col-reverse flex-nowrap flex-wrap flex-wrap-reverse items-stretch items-baseline flex min-h-0 flex-col overflow-hidden h-full max-h-prose min-w-0 shrink-0 min-h-0 min-w-0 flex-1 basis-0 overflow-hidden inline-grid grid-rows-1 grid-rows-2 grid-rows-3 grid-rows-4 grid-rows-5 grid-rows-6 grid-flow-row grid-flow-col grid-flow-dense grid-flow-row-dense grid-flow-col-dense content-start content-center content-end content-between content-stretch justify-items-center auto-rows-min content-start min-w-48 gap-1 overflow-hidden p-popover bg-base-a2 bg-base-a3 bg-transparent text-menu-item-danger-fg ui-interactive:hover:bg-menu-item-danger-hover ui-interactive:ui-active:bg-menu-item-danger-hover self-stretch self-center h-full w-px border-0 bg-menu-separator fixed inset-0 z-dialog m-0 h-auto max-h-none w-auto max-w-none overflow-visible border-0 bg-transparent p-0 text-foreground backdrop:bg-transparent fixed inset-0 z-dialog flex min-h-dvh items-center justify-center overflow-y-auto p-4 items-start justify-center items-center justify-end overflow-hidden items-end justify-center items-center justify-start overflow-hidden fixed inset-0 bg-overlay transition-opacity duration-150 data-[state=closed]:opacity-0 relative z-dialog grid w-full min-w-0 gap-4 overflow-auto p-5 shadow-modal outline-none max-h-full max-w-full min-h-dvh max-w-lg grid-rows-[auto_auto_minmax(0,1fr)_auto] [&>[data-ui-modal-body]]:-mx-1 [&>[data-ui-modal-body]]:min-h-0 [&>[data-ui-modal-body]]:content-start [&>[data-ui-modal-body]]:overflow-x-hidden [&>[data-ui-modal-body]]:overflow-y-auto [&>[data-ui-modal-body]]:px-1 [&>[data-ui-modal-footer]]:self-end pr-8 -mt-3 pr-8 grid min-w-0 gap-3 text-sm text-foreground flex min-w-0 items-center justify-end gap-2 pt-1 absolute right-3 top-3 inline-flex size-control-md items-center justify-center rounded-2 border border-transparent text-icon outline-none hover:bg-base-a2 focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2 focus-visible:ring-offset-app relative isolate min-w-0 absolute inset-0 z-10 cursor-pointer outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-focus relative z-20 inline-grid w-full min-w-0 h-control-xs px-1.5 text-xs h-control-sm px-2 text-xs h-control-md px-3 text-sm h-control-lg px-3 text-sm h-control-xlg px-4 text-sm w-full min-w-0 flex-1 file:mr-3 file:h-full file:border-0 file:bg-transparent file:text-sm file:font-normal file:text-foreground inline-flex h-control-xs shrink-0 cursor-default select-none items-center rounded-2 border border-border bg-base-a2 px-1.5 text-xs font-normal text-foreground-muted shrink-0 cursor-default select-none text-sm font-normal text-foreground-muted w-full min-w-0 grid gap-2 grid gap-3 flex flex-wrap items-stretch gap-3 inline-grid gap-2 flex flex-wrap items-center gap-2 relative flex min-w-0 cursor-pointer items-start gap-2 rounded-3 outline-none [&[data-disabled]_[data-ui-radio-description]]:text-control-disabled-fg w-full py-0.5 w-auto flex-1 cursor-pointer items-start gap-3 w-auto flex-none rounded-full mt-0.5 flex shrink-0 items-center justify-center rounded-full border border-border bg-surface-panel shadow-inset text-accent-solid data-checked:border-accent-border data-invalid:border-danger-border data-invalid:data-checked:border-danger-border data-disabled:data-checked:border-border rounded-full bg-current opacity-0 data-checked:opacity-100 size-1 size-1.5 size-2 size-2.5 shrink-0 border-0 [print-color-adjust:exact] self-stretch self-center w-px opacity-60 flex h-auto items-center gap-3 bg-transparent h-px bg-border bg-border h-px min-w-0 flex-1 border-0 bg-border [print-color-adjust:exact] shrink-0 flex-wrap gap-1 py-0.5 !pl-1.5 flex min-w-0 flex-1 items-center gap-2 border-0 bg-transparent p-0 text-left text-inherit outline-none min-w-0 flex-1 text-foreground flex min-h-control-xlg shrink-0 items-center gap-2 border-b border-popover-border px-3 text-sm text-foreground flex min-w-0 flex-wrap items-center gap-1 max-w-64 block min-w-0 flex-1 truncate grid auto-rows-min content-start max-h-combobox-listbox gap-1 overflow-x-hidden overflow-y-auto p-popover [&:has([data-ui-select-option-label]>*+*)]:h-auto [&:has([data-ui-select-option-label]>*+*)]:items-start [&:has([data-ui-select-option-label]>*+*)]:py-2 min-w-0 flex-1 truncate ml-auto inline-flex size-icon-sm shrink-0 items-center justify-center rounded-1 border border-border bg-surface-panel text-accent-contrast data-selected:border-accent-solid data-selected:bg-accent-solid appearance-none pe-10 pointer-events-none absolute right-3 top-1/2 size-icon -translate-y-1/2 fill-current text-icon fixed inset-y-0 z-dialog flex min-h-0 w-[var(--ui-sidebar-mobile-width)] flex-col overflow-hidden border-base-a3 bg-chrome text-foreground shadow-2 outline-none data-[mobile-state=closed]:-translate-x-full data-[mobile-state=open]:translate-x-0 lg:top-0 lg:z-auto lg:w-[var(--ui-sidebar-width)] lg:translate-x-0 lg:data-[mobile-state=closed]:translate-x-0 lg:data-[mobile-state=open]:translate-x-0 lg:shadow-none lg:data-[desktop-state=stashed]:data-[drawer-state=closed]:data-[sidebar-exiting=false]:hidden lg:data-[desktop-state=stashed]:data-[drawer-state=open]:fixed lg:data-[desktop-state=stashed]:data-[drawer-state=open]:inset-y-2 lg:data-[desktop-state=stashed]:data-[drawer-state=open]:z-dialog lg:data-[desktop-state=stashed]:data-[drawer-state=open]:h-auto lg:data-[desktop-state=stashed]:data-[drawer-state=open]:rounded-4 lg:data-[desktop-state=stashed]:data-[drawer-state=open]:border lg:data-[desktop-state=stashed]:data-[drawer-state=open]:shadow-2 [grid-area:sidebar] left-0 border-r lg:left-auto lg:data-[desktop-state=stashed]:data-[drawer-state=open]:left-2 right-0 border-l data-[mobile-state=closed]:translate-x-full data-[mobile-state=open]:translate-x-0 lg:right-auto lg:data-[desktop-state=stashed]:data-[drawer-state=open]:right-2 lg:sticky lg:h-screen lg:relative lg:h-auto lg:data-[sticky=false]:relative lg:data-[sticky=False]:relative lg:data-[sticky=false]:h-auto lg:data-[sticky=False]:h-auto flex min-h-control-xlg shrink-0 items-center gap-2 px-3 py-2 min-h-0 flex-1 overflow-hidden grid min-w-0 content-start gap-1 px-2 py-2 [&>[data-ui-separator]]:-mx-2 [&>[data-ui-separator]]:w-auto grid shrink-0 gap-1 px-2 py-2 group/sidebar-item flex h-control-md w-full min-w-0 select-none items-center gap-2 rounded-3 px-2 border border-transparent text-left text-sm font-medium text-foreground outline-none cursor-default data-current:border-transparent data-current:shadow-none [--color-interactive-selected:var(--color-base-a3)] [--color-interactive-selected-hover:var(--color-base-a4)] [--color-interactive-selected:var(--color-accent-surface)] [--color-interactive-selected-hover:var(--color-accent-surface-hover)] pr-9 group/sidebar-item-row relative min-w-0 size-icon-xs shrink-0 fill-current text-icon ml-auto shrink-0 rounded-2 bg-base-a3 px-1.5 py-0.5 text-xs text-foreground-muted absolute right-1 top-1/2 z-10 flex -translate-y-1/2 items-center gap-1 relative grid gap-1 block h-control-md cursor-default select-none list-none rounded-3 text-xs font-medium text-foreground-muted outline-none hover:bg-base-a2 hover:text-foreground focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2 focus-visible:ring-offset-app [&::-webkit-details-marker]:hidden flex h-full min-w-0 items-center gap-2 px-2 flex min-h-control-md min-w-0 select-none items-center gap-2 px-2 py-1 cursor-default size-icon-xs shrink-0 fill-current text-icon group-open/sidebar-group:rotate-90 ml-auto flex shrink-0 items-center gap-1 inline-flex h-control-md w-control-md shrink-0 items-center justify-center rounded-3 text-foreground-muted outline-none size-icon fill-current text-current fixed inset-y-0 z-30 hidden w-2 bg-transparent outline-none lg:block data-[state=hidden]:hidden left-0 right-0 absolute inset-y-0 z-10 hidden w-3 cursor-col-resize touch-none border-transparent outline-none lg:block hover:border-border-interactive data-disabled:hidden right-0 border-r left-0 border-l grid w-full min-w-0 gap-1.5 text-foreground [&[data-disabled]_[data-ui-slider-value]]:text-control-disabled-fg [&[data-disabled]_[data-ui-slider-tick]]:text-control-disabled-fg [&[data-disabled]_[data-ui-slider-tick-label]]:text-control-disabled-fg relative isolate min-w-0 touch-none select-none outline-none data-disabled:pointer-events-none h-control-lg w-full min-w-28 h-40 w-control-lg absolute rounded-full border border-border-interactive bg-base-a4 shadow-inset data-invalid:border-control-border-invalid data-disabled:border-border data-disabled:bg-control-disabled left-0 right-0 top-1/2 -translate-y-1/2 bottom-0 left-1/2 top-0 -translate-x-1/2 h-1 h-1.5 h-2 w-1 w-1.5 w-2 absolute rounded-full bg-accent-solid data-disabled:bg-border-interactive top-1/2 h-1.5 -translate-y-1/2 left-1/2 w-1.5 -translate-x-1/2 pointer-events-none absolute inset-0 z-10 m-0 size-full cursor-pointer opacity-0 pointer-events-none absolute z-20 block rounded-full border border-border-interactive bg-surface-panel shadow-1 outline-none data-focus:shadow-focus data-invalid:border-control-border-invalid data-disabled:border-border data-disabled:bg-surface-panel top-1/2 -translate-x-1/2 -translate-y-1/2 left-1/2 -translate-x-1/2 translate-y-1/2 size-4.5 tabular-nums text-foreground-muted relative min-w-0 h-5 absolute bottom-0 left-full top-0 ml-2 w-10 absolute grid justify-items-center gap-1 text-foreground-muted top-0 -translate-x-1/2 left-0 translate-y-1/2 block rounded-full bg-border-interactive h-1.5 w-px h-px w-1.5 relative min-w-0 overflow-hidden text-foreground data-disabled:opacity-60 flex min-h-0 flex-1 flex-col min-h-0 min-w-0 outline-none focus-visible:shadow-focus h-full w-full overflow-x-hidden overflow-y-auto h-full w-full overflow-x-auto overflow-y-hidden size-full overflow-auto flex-1 w-max min-w-full min-w-full pointer-events-none absolute z-10 rounded-scrollbar-thumb opacity-0 data-visible:pointer-events-auto data-visible:opacity-100 data-disabled:pointer-events-none bottom-scrollbar-inset right-scrollbar-inset top-scrollbar-inset w-scrollbar bottom-scrollbar-inset left-scrollbar-inset right-scrollbar-inset h-scrollbar absolute rounded-scrollbar-thumb bg-scrollbar-thumb hover:bg-scrollbar-thumb-hover data-dragging:bg-scrollbar-thumb-hover left-0 top-0 w-full left-0 top-0 h-full pointer-events-none absolute bottom-scrollbar-inset right-scrollbar-inset z-10 size-scrollbar rounded-scrollbar-thumb bg-transparent opacity-0 data-visible:opacity-100 relative flex w-full min-w-0 cursor-pointer items-start gap-2 rounded-3 text-foreground outline-none [&[data-disabled]_[data-ui-switch-description]]:text-control-disabled-fg flex-row-reverse justify-end peer absolute inset-0 z-10 m-0 cursor-pointer opacity-0 relative mt-0.5 shrink-0 h-3.5 w-6 h-4 w-7 h-5 w-9 h-6 w-11 h-7 w-14 pointer-events-none relative flex size-full items-center rounded-full border border-border-interactive bg-base-a5 p-0.5 shadow-inset pointer-events-none block rounded-full bg-surface-panel shadow-1 ring-1 ring-base-a3 dark:bg-surface-inverse data-checked:bg-accent-contrast data-disabled:bg-surface-panel data-disabled:ring-border size-2.5 data-checked:translate-x-2.5 size-3 data-checked:translate-x-3 size-4 data-checked:translate-x-4 size-5 data-checked:translate-x-5 size-6 data-checked:translate-x-7 grid min-w-0 flex-1 gap-0.5 py-0.5 grid min-w-0 gap-3 md:grid-cols-[max-content_minmax(0,1fr)] md:items-start flex min-w-0 items-center gap-4 border-b border-border gap-0.5 rounded-3 bg-base-a2 p-0.5 shadow-inset flex-col items-stretch overflow-x-auto gap-1 border-b-0 border-l border-border group/tabs-tab relative inline-flex min-w-0 shrink-0 select-none items-center gap-2 whitespace-nowrap text-sm font-normal text-foreground outline-none ui-selected:text-foreground rounded-2 px-2 hover:bg-base-a2 ui-selected:font-medium -mb-px rounded-none border-x-0 border-b-2 border-t-0 border-transparent px-0 ui-selected:border-foreground ui-selected:font-medium rounded-2 px-3 hover:bg-base-a2 ui-selected:bg-surface-panel ui-selected:font-medium ui-selected:shadow-border rounded-full bg-surface-panel px-3 shadow-border hover:bg-base-a2 ui-selected:bg-base-a3 ui-selected:font-medium ui-selected:shadow-border-hover w-full justify-start -ml-px mb-0 border-b-0 border-l-2 px-2 ps-2 min-w-0 text-sm text-foreground outline-none focus-visible:ring-2 focus-visible:ring-focus focus-visible:ring-offset-2 focus-visible:ring-offset-app inline-block max-w-full min-w-0 max-w-full overflow-x-auto caption-bottom border-separate border-spacing-0 text-left text-sm leading-5 text-foreground [&_thead]:text-foreground-muted [&_tfoot]:text-foreground-muted [&_[data-ui-table-cell]]:min-w-0 [&_[data-ui-table-column]]:min-w-0 [&_[data-ui-table-row-header]]:min-w-0 [&_[data-ui-table-column]]:text-xs [&_[data-ui-table-column]]:font-medium [&_[data-ui-table-row-header]]:font-medium [&_[data-ui-table-cell]]:text-foreground [&_[data-ui-table-row-header]]:text-foreground [&_[data-ui-table-row][data-disabled]]:opacity-disabled table-auto table-fixed [&_[data-ui-table-cell]]:px-2 [&_[data-ui-table-cell]]:py-1.5 [&_[data-ui-table-column]]:px-2 [&_[data-ui-table-column]]:py-1.5 [&_[data-ui-table-row-header]]:px-2 [&_[data-ui-table-row-header]]:py-1.5 [&_[data-ui-table-cell]]:px-3 [&_[data-ui-table-cell]]:py-2 [&_[data-ui-table-column]]:px-3 [&_[data-ui-table-column]]:py-2 [&_[data-ui-table-row-header]]:px-3 [&_[data-ui-table-row-header]]:py-2 [&_[data-ui-table-cell]]:px-4 [&_[data-ui-table-cell]]:py-3 [&_[data-ui-table-column]]:px-4 [&_[data-ui-table-column]]:py-3 [&_[data-ui-table-row-header]]:px-4 [&_[data-ui-table-row-header]]:py-3 bg-surface-panel [&_[data-ui-table-row]>*]:border-border [&_tbody_[data-ui-table-row]:not(:last-child)>*]:border-b [&_thead_[data-ui-table-row]>*]:border-b [&_tfoot_[data-ui-table-row]>*]:border-t [&_[data-ui-table-row]>*]:border-border [&_[data-ui-table-row]>*+*]:border-l [&_tbody_[data-ui-table-row]:not(:last-child)>*]:border-b [&_thead_[data-ui-table-row]>*]:border-b [&_tfoot_[data-ui-table-row]>*]:border-t [&_[data-ui-table-row]>*:first-child]:ps-0 [&_[data-ui-table-row]>*:last-child]:pe-0 [&_tbody_[data-ui-table-row]:nth-child(even)>*]:bg-base-a2 [&_tbody_[data-ui-table-row]:not([data-disabled]):not([data-selected]):not([data-current]):hover>*]:bg-interactive-hover [&_[data-ui-table-header]]:sticky [&_[data-ui-table-header]]:top-0 [&_[data-ui-table-header]]:z-10 [&_[data-ui-table-header]]:bg-surface-panel [&_[data-ui-table-cell]]:whitespace-nowrap [&_[data-ui-table-column]]:whitespace-nowrap [&_[data-ui-table-row-header]]:whitespace-nowrap w-auto text-sm text-foreground-muted caption-top pb-2 text-left caption-bottom pt-2 text-left [&>*]:bg-base-a3 relative align-middle text-left text-foreground-muted text-center text-right align-top align-middle align-bottom align-baseline flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-2 basis-full min-w-0 text-xs leading-none text-foreground-subtle absolute inset-y-0 right-0 z-10 w-2 cursor-col-resize touch-none outline-none hover:bg-border-interactive focus-visible:bg-border-interactive data-resizing:bg-border-interactive align-middle text-left font-medium text-foreground align-middle text-left py-8 text-center text-sm text-foreground-muted flex w-full min-w-0 gap-control text-control-fg outline-none min-h-control-lg px-1.5 py-1 text-xs min-h-control-xlg px-2 py-1.5 text-xs min-h-12 px-3 py-2 text-sm min-h-20 px-3 py-2 text-sm min-h-24 px-4 py-2 text-sm min-h-0 w-full min-w-0 resize-y resize-x resize resize-none group/toast pointer-events-auto relative grid w-full min-w-0 items-center gap-x-3 gap-y-1 overflow-hidden rounded-4 border px-3 py-2.5 text-foreground outline-none data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0 border-transparent bg-toast shadow-popover border-transparent bg-base-a2 shadow-popover border-border bg-toast text-foreground shadow-popover border-transparent bg-base-12 text-base-1 shadow-popover border-border bg-transparent shadow-none grid-cols-[auto_minmax(0,1fr)_auto] grid-cols-[minmax(0,1fr)_auto] bg-accent-surface text-accent-text shadow-popover bg-success-surface text-success-text shadow-popover bg-warning-surface text-warning-text shadow-popover bg-danger-surface text-danger-text shadow-popover border-accent-border bg-toast text-foreground shadow-popover border-success-border bg-toast text-foreground shadow-popover border-warning-border bg-toast text-foreground shadow-popover border-danger-border bg-toast text-foreground shadow-popover border-accent-border text-accent-text shadow-none border-success-border text-success-text shadow-none border-warning-border text-warning-text shadow-none border-danger-border text-danger-text shadow-none border-transparent bg-accent-solid text-accent-contrast shadow-popover border-transparent bg-success-solid text-success-contrast shadow-popover border-transparent bg-warning-solid text-warning-contrast shadow-popover border-transparent bg-danger-solid text-danger-contrast shadow-popover size-2 self-center rounded-full bg-accent-solid bg-success-solid bg-warning-solid bg-danger-solid grid min-w-0 gap-0.5 self-center text-current text-current opacity-80 -mr-1 inline-flex size-control-md shrink-0 items-center justify-center self-center rounded-2 text-icon outline-none text-current hover:bg-current/10 focus-visible:ring-current focus-visible:ring-offset-transparent pointer-events-none fixed z-toast flex w-[min(24rem,calc(100vw-2rem))] flex-col gap-2 right-4 top-4 justify-items-end left-4 top-4 justify-items-start left-1/2 top-4 -translate-x-1/2 justify-items-center bottom-4 right-4 justify-items-end bottom-4 left-4 justify-items-start bottom-4 left-1/2 -translate-x-1/2 justify-items-center");
@@ -0,0 +1,3 @@
1
+ import type Alpine from 'alpinejs';
2
+ declare const registerDisclosureBindings: (Alpine: Alpine.Alpine) => void;
3
+ export { registerDisclosureBindings };
@@ -1,7 +1,7 @@
1
- import type { AlpineLike } from './types';
1
+ import type Alpine from 'alpinejs';
2
2
  import { registerDisclosureBindings } from './disclosure';
3
3
  import { registerMotionBindings } from './motion';
4
4
  import { registerStateBindings } from './state';
5
- declare const registerCoreBindings: (Alpine: AlpineLike) => void;
5
+ declare const registerCoreBindings: (Alpine: Alpine.Alpine) => void;
6
6
  export { registerCoreBindings, registerDisclosureBindings, registerMotionBindings, registerStateBindings };
7
- export type { ActiveDescendantContext, AlpineLike, DisabledContext, DisclosureContext, InvalidContext, InteractiveContext, SelectedContext, } from './types';
7
+ export type { ActiveDescendantContext, DisabledContext, DisclosureContext, InvalidContext, InteractiveContext, SelectedContext, } from './types';
@@ -0,0 +1,3 @@
1
+ import type Alpine from 'alpinejs';
2
+ declare const registerMotionBindings: (Alpine: Alpine.Alpine) => void;
3
+ export { registerMotionBindings };
@@ -0,0 +1,3 @@
1
+ import type Alpine from 'alpinejs';
2
+ declare const registerStateBindings: (Alpine: Alpine.Alpine) => void;
3
+ export { registerStateBindings };
@@ -1,5 +1,3 @@
1
- import type Alpine from 'alpinejs';
2
- type AlpineLike = typeof Alpine;
3
1
  type DisclosureContext = {
4
2
  isOpen: boolean;
5
3
  triggerId?: string;
@@ -32,4 +30,4 @@ type SelectedContext = {
32
30
  type ActiveDescendantContext = {
33
31
  activeId: string | null;
34
32
  };
35
- export type { ActiveDescendantContext, AlpineLike, DisabledContext, DisclosureContext, InvalidContext, InteractiveContext, SelectedContext, };
33
+ export type { ActiveDescendantContext, DisabledContext, DisclosureContext, InvalidContext, InteractiveContext, SelectedContext, };
@@ -48,6 +48,7 @@ type ModalData = ModalController & {
48
48
  mountLocalTrigger(): void;
49
49
  setupLocalTrigger(trigger: HTMLElement): void;
50
50
  setupDialog(): void;
51
+ setupNamedClose(): void;
51
52
  register(): void;
52
53
  unregister(): void;
53
54
  open(event?: Event): void;
@@ -48,7 +48,7 @@ declare const tableColumnSchema: {
48
48
  minWidth: import("../../runtime/codecs").StringCodec;
49
49
  maxWidth: import("../../runtime/codecs").StringCodec;
50
50
  sortable: import("../../runtime/codecs").BoolCodec;
51
- sort: import("../../runtime/codecs").OneOfCodec<"none" | "ascending" | "descending" | "other">;
51
+ sort: import("../../runtime/codecs").OneOfCodec<"none" | "other" | "ascending" | "descending">;
52
52
  abbr: import("../../runtime/codecs").StringCodec;
53
53
  scope: import("../../runtime/codecs").OneOfCodec<"col" | "colgroup">;
54
54
  class: import("../../runtime/codecs").StringCodec;
@@ -0,0 +1 @@
1
+ export { registerRequestDirective, registerRequestMagic } from './request';
@@ -0,0 +1,5 @@
1
+ import type Alpine from 'alpinejs';
2
+ declare const REQUEST_ROOT_SELECTOR = "[x-ui-request], [x-ui-request\\.navigate]";
3
+ declare const registerRequestMagic: (AlpineInstance: Alpine.Alpine) => void;
4
+ declare const registerRequestDirective: (AlpineInstance: Alpine.Alpine) => void;
5
+ export { REQUEST_ROOT_SELECTOR, registerRequestDirective, registerRequestMagic };
@@ -16,12 +16,12 @@ declare const ui: {
16
16
  readonly json: import("./runtime/codecs").JsonCodecFactory;
17
17
  readonly mergeBindings: ({ inputs }: import("./runtime").MergeBindingsOptions) => import("./runtime").BindingObject;
18
18
  readonly motion: {
19
- readonly createAnimator: <T extends string | number>(value: import("motion").MotionValue<T> | T, defaultOptions?: import("motion").ValueAnimationTransition<T>) => import("./motion").Animator<T>;
19
+ readonly createAnimator: <T extends string | number>(value: import("./motion").MotionValue<T> | T, defaultOptions?: import("./motion").ValueAnimationTransition<T>) => import("./motion").Animator<T>;
20
20
  readonly parallel: (...handles: import("./motion").MotionHandle[]) => import("./motion").MotionHandle;
21
21
  readonly sequential: (...steps: Array<() => import("./motion").MotionHandle>) => import("./motion").MotionHandle;
22
22
  readonly bindTransform: <T extends import("./motion").TransformContext>(element: HTMLElement, values: T, compose: import("./motion").TransformComposer<T>) => (() => void);
23
- readonly bindStyle: <T extends string | number>(element: HTMLElement, property: keyof CSSStyleDeclaration, value: import("motion").MotionValue<T>, map?: (value: T) => string) => (() => void);
24
- readonly withReducedMotion: <T extends import("motion").AnimationOptions>(options: T, reducedOptions?: Partial<T>, preference?: import("./motion").MotionPreference) => T;
23
+ readonly bindStyle: <T extends string | number>(element: HTMLElement, property: keyof CSSStyleDeclaration, value: import("./motion").MotionValue<T>, map?: (value: T) => string) => (() => void);
24
+ readonly withReducedMotion: <T extends import("./motion").AnimationOptions>(options: T, reducedOptions?: Partial<T>, preference?: import("./motion").MotionPreference) => T;
25
25
  readonly resolveTargets: (scope?: import("./motion").ViewScope, targets?: import("./motion").MotionTarget | import("./motion").MotionTarget[] | null) => Element[];
26
26
  readonly applyViewKeys: (scope?: import("./motion").ViewScope, options?: {
27
27
  key?: string;
@@ -1,4 +1,4 @@
1
- import { type AnimationPlaybackControls, type MotionValue, type ValueAnimationTransition } from 'motion';
1
+ import { type AnimationPlaybackControls, type MotionValue, type ValueAnimationTransition } from '../motion';
2
2
  type MotionHandle = {
3
3
  finished: Promise<void>;
4
4
  cancel(): void;
@@ -1,10 +1,10 @@
1
1
  declare const motion: {
2
- readonly createAnimator: <T extends string | number>(value: import("motion").MotionValue<T> | T, defaultOptions?: import("motion").ValueAnimationTransition<T>) => import("./animate").Animator<T>;
2
+ readonly createAnimator: <T extends string | number>(value: import("../motion").MotionValue<T> | T, defaultOptions?: import("../motion").ValueAnimationTransition<T>) => import("./animate").Animator<T>;
3
3
  readonly parallel: (...handles: import("./animate").MotionHandle[]) => import("./animate").MotionHandle;
4
4
  readonly sequential: (...steps: Array<() => import("./animate").MotionHandle>) => import("./animate").MotionHandle;
5
5
  readonly bindTransform: <T extends import("./animate").TransformContext>(element: HTMLElement, values: T, compose: import("./animate").TransformComposer<T>) => (() => void);
6
- readonly bindStyle: <T extends string | number>(element: HTMLElement, property: keyof CSSStyleDeclaration, value: import("motion").MotionValue<T>, map?: (value: T) => string) => (() => void);
7
- readonly withReducedMotion: <T extends import("motion").AnimationOptions>(options: T, reducedOptions?: Partial<T>, preference?: import("./reduced-motion").MotionPreference) => T;
6
+ readonly bindStyle: <T extends string | number>(element: HTMLElement, property: keyof CSSStyleDeclaration, value: import("../motion").MotionValue<T>, map?: (value: T) => string) => (() => void);
7
+ readonly withReducedMotion: <T extends import("../motion").AnimationOptions>(options: T, reducedOptions?: Partial<T>, preference?: import("./reduced-motion").MotionPreference) => T;
8
8
  readonly resolveTargets: (scope?: import("./targets").ViewScope, targets?: import("./targets").MotionTarget | import("./targets").MotionTarget[] | null) => Element[];
9
9
  readonly applyViewKeys: (scope?: import("./targets").ViewScope, options?: {
10
10
  key?: string;
@@ -1,4 +1,4 @@
1
- import { type AnimationOptions, type DOMKeyframesDefinition } from 'motion';
1
+ import { type AnimationOptions, type DOMKeyframesDefinition } from '../motion';
2
2
  import { type MotionHandle } from './animate';
3
3
  import { type MotionPreference } from './reduced-motion';
4
4
  type PresencePhase = 'enter' | 'exit';
@@ -1,4 +1,4 @@
1
- import type { AnimationOptions, DOMKeyframesDefinition } from 'motion';
1
+ import type { AnimationOptions, DOMKeyframesDefinition } from '../motion';
2
2
  type MotionPreference = 'user' | 'always' | 'never';
3
3
  declare const reducedMotionQuery = "(prefers-reduced-motion: reduce)";
4
4
  declare const prefersReducedMotion: () => boolean;
@@ -1,4 +1,4 @@
1
- import { type AnimationOptions, type DOMKeyframesDefinition, type ViewTransitionOptions } from 'motion';
1
+ import { type AnimationOptions, type DOMKeyframesDefinition, type ViewTransitionOptions } from '../motion';
2
2
  import { type MotionHandle } from './animate';
3
3
  import { type MotionPreference } from './reduced-motion';
4
4
  import { type MotionTarget, type ViewScope } from './targets';
@@ -0,0 +1,2 @@
1
+ export * from './request';
2
+ export * from './stream';
@@ -0,0 +1,39 @@
1
+ import type Alpine from 'alpinejs';
2
+ import { type StreamAlpine } from './stream';
3
+ type RequestMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
4
+ type RequestData = FormData | URLSearchParams | HTMLFormElement | Record<string, unknown> | string | Blob | ArrayBuffer;
5
+ type RequestExtra = Record<string, unknown> | FormData | URLSearchParams;
6
+ type RequestSource = Element;
7
+ type RequestOptions = {
8
+ method?: RequestMethod | Lowercase<RequestMethod>;
9
+ data?: RequestData;
10
+ extra?: RequestExtra;
11
+ headers?: HeadersInit;
12
+ signal?: AbortSignal;
13
+ source?: RequestSource;
14
+ submitter?: HTMLElement | null;
15
+ };
16
+ type RequestResult = {
17
+ response: Response | null;
18
+ type: 'empty' | 'sse' | 'redirect' | 'other' | 'aborted';
19
+ };
20
+ type RequestLifecycleDetail = {
21
+ source: Element | Document;
22
+ url: string;
23
+ method: RequestMethod;
24
+ requestInit: RequestInit;
25
+ response?: Response | null;
26
+ responseType?: RequestResult['type'];
27
+ error?: unknown;
28
+ controller: AbortController;
29
+ signal: AbortSignal;
30
+ };
31
+ declare const requestWithAlpine: (AlpineInstance: StreamAlpine, url: string | URL | undefined, options?: RequestOptions) => Promise<RequestResult>;
32
+ declare const request: (url: string | URL, options?: RequestOptions) => Promise<RequestResult>;
33
+ declare const get: (url: string | URL, options?: RequestOptions) => Promise<RequestResult>;
34
+ declare const post: (url: string | URL, options?: RequestOptions) => Promise<RequestResult>;
35
+ declare const put: (url: string | URL, options?: RequestOptions) => Promise<RequestResult>;
36
+ declare const del: (url: string | URL, options?: RequestOptions) => Promise<RequestResult>;
37
+ declare const registerRequestRuntime: (AlpineInstance: Alpine.Alpine | StreamAlpine) => void;
38
+ export { del, get, post, put, registerRequestRuntime, request, requestWithAlpine, };
39
+ export type { RequestLifecycleDetail, RequestMethod, RequestOptions, RequestResult };
@@ -21,27 +21,28 @@ type UiEffectPayload = ({
21
21
  } & StreamEventPayload) | ({
22
22
  type: 'location';
23
23
  } & LocationPayload);
24
+ type SseFrame = {
25
+ event: string;
26
+ data: string;
27
+ };
28
+ type SseFrameHandler = (frame: SseFrame) => void;
24
29
  type StreamController = {
25
30
  abort(reason?: string): void;
26
31
  };
27
- type StreamAlpine = {
28
- initTree(el: HTMLElement): void;
32
+ type StreamAlpine = Pick<Alpine.Alpine, 'initTree'> & {
29
33
  morph?: (target: HTMLElement, html: string, options?: {
30
34
  key?: (el: HTMLElement) => string | null;
31
35
  }) => void;
32
36
  };
33
- declare const MANAGED_HISTORY_STATE_KEY = "__trellisUi";
34
- type ManagedHistoryState = Record<string, unknown> & {
35
- [MANAGED_HISTORY_STATE_KEY]: true;
36
- };
37
37
  declare const applyStreamPatchNow: (AlpineInstance: StreamAlpine, payload: StreamPatchPayload) => void;
38
38
  declare const applyStreamPatches: (AlpineInstance: StreamAlpine, payload: StreamPatchPayload | StreamPatchPayload[]) => void;
39
39
  declare const applyStreamPatch: (AlpineInstance: StreamAlpine, payload: StreamPatchPayload) => void;
40
40
  declare const dispatchStreamEvent: (payload: StreamEventPayload) => void;
41
- declare const isManagedHistoryState: (state: unknown) => state is ManagedHistoryState;
42
41
  declare const applyUiEffect: (AlpineInstance: StreamAlpine, effect: UiEffectPayload) => void;
43
42
  declare const applyUiEffects: (AlpineInstance: StreamAlpine, effects: UiEffectPayload | UiEffectPayload[]) => void;
43
+ declare const streamSseFrames: (response: Response, onFrame: SseFrameHandler) => Promise<void>;
44
+ declare const applySseFrame: (AlpineInstance: StreamAlpine, frame: SseFrame) => void;
44
45
  declare const connectStream: (AlpineInstance: StreamAlpine, url: string) => StreamController;
45
46
  declare const registerStream: (AlpineInstance: Alpine.Alpine) => void;
46
- export { applyUiEffect, applyUiEffects, applyStreamPatch, applyStreamPatchNow, applyStreamPatches, connectStream, dispatchStreamEvent, isManagedHistoryState, registerStream, };
47
- export type { LocationPayload, PatchMode, StreamAlpine, StreamEventPayload, StreamPatchPayload, UiEffectPayload };
47
+ export { applyUiEffect, applyUiEffects, applyStreamPatch, applyStreamPatchNow, applyStreamPatches, applySseFrame, connectStream, dispatchStreamEvent, registerStream, streamSseFrames, };
48
+ export type { LocationPayload, PatchMode, SseFrame, SseFrameHandler, StreamAlpine, StreamEventPayload, StreamPatchPayload, UiEffectPayload };
@@ -7,14 +7,15 @@ export { create, type CreateOptions, type StyleTree } from './create';
7
7
  export { mergeBindings, type BindingInput, type BindingObject, type MergeBindingsOptions } from './merge-bindings';
8
8
  export { defineProps, string, number, bool, json, oneOf, type CodecFn, type PropState, type SchemaToProps } from './codecs';
9
9
  export { createMachine, createVisibilityMachine, type Machine, type MachineAction, type MachineActionList, type MachineActionRef, type MachineConfig, type MachineEffect, type MachineEvent, type MachineEventObject, type MachineGuard, type MachineOptions, type MachineScope, type MachineStateConfig, type MachineTransition, type VisibilityMachineConfig, } from './machine';
10
- export { addListener, asBool, dispatch, isRtl, removeAttribute, setAttribute, setPresence, type AddListenerOptions, type AttributeOptions, type BoolOptions, type CleanupStack, type DispatchOptions, type ElementOptions, type PresenceOptions, } from './dom';
10
+ export { addListener, asBool, dispatch, isRtl, removeAttribute, setAttribute, setPresence, type AddListenerOptions, type AttributeOptions, type BoolOptions, type CleanupStack, type DispatchOptions, type ElementOptions, type PresenceOptions, } from '../utils/dom';
11
11
  export { addDismissableLayer, type DismissableLayerOptions } from './dismissable-layer';
12
12
  export { dispatchNativeControlChange, syncControlPresence, syncNativeControl, syncRepeatedHiddenInputs, type ControlState, type DispatchNativeControlChangeOptions, type HiddenInputState, type NativeControlState, type SyncControlPresenceOptions, type SyncNativeControlOptions, type SyncRepeatedHiddenInputsOptions, } from './form-control';
13
13
  export { getPathValue, normalizeOptionText, parseItemData, splitControlValues } from './option-data';
14
14
  export { createResizable, registerResizable, type ResizableOptions, type ResizeAxis, type ResizeEvent, type ResizeMode, type ResizePhase, } from './resizable';
15
15
  export { defineManifest, propsFromSchema, type ComponentManifest, type DefineManifestOptions, type ManifestPart, type ManifestProp, type ManifestPropDetails, type ManifestToken, type PropsFromSchemaOptions, type SchemaPropDetails, } from './manifest';
16
16
  export { defineStyles, resolveStyle, type DefineStylesOptions, type ResolveStyleOptions, type StyleDefinition, type StylePart, type StyleProps, } from './styles';
17
- export { applyStreamPatch, applyStreamPatches, applyUiEffect, applyUiEffects, connectStream, dispatchStreamEvent, registerStream, type PatchMode, type StreamEventPayload, type StreamPatchPayload, type UiEffectPayload, } from './stream';
17
+ export { del as deleteRequest, get, post, put, registerRequestRuntime, type RequestLifecycleDetail, type RequestMethod, type RequestOptions, type RequestResult, } from './engine/request';
18
+ export { applyStreamPatch, applyStreamPatches, applyUiEffect, applyUiEffects, connectStream, dispatchStreamEvent, registerStream, type PatchMode, type StreamEventPayload, type StreamPatchPayload, type UiEffectPayload, } from './engine/stream';
18
19
  export { applyThemeMode, createThemeStore, registerThemeStore, type ResolvedThemeMode, type ThemeChangeDetail, type ThemeStore, type ThemeMode, } from './theme';
19
20
  export { lockDocumentScroll, unlockDocumentScroll } from './scroll-lock';
20
21
  type TrellisAlpineComponent<T> = Alpine.AlpineComponent<T> & {
@@ -27,14 +28,14 @@ declare const ui: {
27
28
  readonly createCollectionNavigation: ({ root: getRoot, itemSelector, activeAttribute, isDisabled, loop, }: import("./collection-navigation").CollectionNavigationOptions) => import("./collection-navigation").CollectionNavigation;
28
29
  readonly create: <const T extends Record<string, import("./create").StyleTree>>({ definition }: import("./create").CreateOptions<T>) => Readonly<T>;
29
30
  readonly addDismissableLayer: ({ isEnabled, roots, onDismiss, }: import("./dismissable-layer").DismissableLayerOptions) => (() => void);
30
- readonly addListener: ({ target, event, handler, cleanup, options, }: import("./dom").AddListenerOptions) => (() => void);
31
- readonly asBool: ({ value }: import("./dom").BoolOptions) => boolean;
32
- readonly dispatch: <T = unknown>({ el, name, detail }: import("./dom").DispatchOptions<T>) => void;
31
+ readonly addListener: ({ target, event, handler, cleanup, options, }: import(".").AddListenerOptions) => (() => void);
32
+ readonly asBool: ({ value }: import(".").BoolOptions) => boolean;
33
+ readonly dispatch: <T = unknown>({ el, name, detail }: import(".").DispatchOptions<T>) => void;
33
34
  readonly dispatchNativeControlChange: ({ container, fallback, marker, }: import("./form-control").DispatchNativeControlChangeOptions) => void;
34
- readonly isRtl: ({ el }: import("./dom").ElementOptions) => boolean;
35
- readonly removeAttribute: ({ el, attr }: Omit<import("./dom").AttributeOptions, "value">) => void;
36
- readonly setAttribute: ({ el, attr, value }: import("./dom").AttributeOptions) => void;
37
- readonly setPresence: ({ el, attr, present, value }: import("./dom").PresenceOptions) => void;
35
+ readonly isRtl: ({ el }: import(".").ElementOptions) => boolean;
36
+ readonly removeAttribute: ({ el, attr }: Omit<import(".").AttributeOptions, "value">) => void;
37
+ readonly setAttribute: ({ el, attr, value }: import(".").AttributeOptions) => void;
38
+ readonly setPresence: ({ el, attr, present, value }: import(".").PresenceOptions) => void;
38
39
  readonly syncControlPresence: ({ el, state, value, }: import("./form-control").SyncControlPresenceOptions) => void;
39
40
  readonly syncNativeControl: ({ input, state, }: import("./form-control").SyncNativeControlOptions) => void;
40
41
  readonly syncRepeatedHiddenInputs: ({ container, state, currentKey, }: import("./form-control").SyncRepeatedHiddenInputsOptions) => string;
@@ -51,12 +52,12 @@ declare const ui: {
51
52
  readonly className: ({ values }: import("./class-name").ClassNameOptions) => string;
52
53
  readonly cx: ({ values }: import("./class-name").ClassNameOptions) => string;
53
54
  readonly motion: {
54
- readonly createAnimator: <T extends string | number>(value: import("motion").MotionValue<T> | T, defaultOptions?: import("motion").ValueAnimationTransition<T>) => import("..").Animator<T>;
55
+ readonly createAnimator: <T extends string | number>(value: import("../motion").MotionValue<T> | T, defaultOptions?: import("../motion").ValueAnimationTransition<T>) => import("..").Animator<T>;
55
56
  readonly parallel: (...handles: import("..").MotionHandle[]) => import("..").MotionHandle;
56
57
  readonly sequential: (...steps: Array<() => import("..").MotionHandle>) => import("..").MotionHandle;
57
58
  readonly bindTransform: <T extends import("..").TransformContext>(element: HTMLElement, values: T, compose: import("..").TransformComposer<T>) => (() => void);
58
- readonly bindStyle: <T extends string | number>(element: HTMLElement, property: keyof CSSStyleDeclaration, value: import("motion").MotionValue<T>, map?: (value: T) => string) => (() => void);
59
- readonly withReducedMotion: <T extends import("motion").AnimationOptions>(options: T, reducedOptions?: Partial<T>, preference?: import("..").MotionPreference) => T;
59
+ readonly bindStyle: <T extends string | number>(element: HTMLElement, property: keyof CSSStyleDeclaration, value: import("../motion").MotionValue<T>, map?: (value: T) => string) => (() => void);
60
+ readonly withReducedMotion: <T extends import("../motion").AnimationOptions>(options: T, reducedOptions?: Partial<T>, preference?: import("..").MotionPreference) => T;
60
61
  readonly resolveTargets: (scope?: import("..").ViewScope, targets?: import("..").MotionTarget | import("..").MotionTarget[] | null) => Element[];
61
62
  readonly applyViewKeys: (scope?: import("..").ViewScope, options?: {
62
63
  key?: string;
@@ -67,14 +68,19 @@ declare const ui: {
67
68
  readonly createPresenceLifecycle: ({ element, preset, enter, exit, options, enterOptions, exitOptions, owner, }: import("..").PresenceLifecycleOptions) => import("..").PresenceLifecycle;
68
69
  readonly animateStreamPatch: <AlpineInstance>(_Alpine: AlpineInstance, patchOrPatches: import("../motion/stream").StreamPatchLike | import("../motion/stream").StreamPatchLike[], options?: import("..").AnimateStreamPatchOptions) => import("..").MotionHandle;
69
70
  };
70
- readonly applyStreamPatch: (AlpineInstance: import("./stream").StreamAlpine, payload: import("./stream").StreamPatchPayload) => void;
71
- readonly applyStreamPatches: (AlpineInstance: import("./stream").StreamAlpine, payload: import("./stream").StreamPatchPayload | import("./stream").StreamPatchPayload[]) => void;
72
- readonly applyUiEffect: (AlpineInstance: import("./stream").StreamAlpine, effect: import("./stream").UiEffectPayload) => void;
73
- readonly applyUiEffects: (AlpineInstance: import("./stream").StreamAlpine, effects: import("./stream").UiEffectPayload | import("./stream").UiEffectPayload[]) => void;
74
- readonly connectStream: (AlpineInstance: import("./stream").StreamAlpine, url: string) => {
71
+ readonly get: (url: string | URL, options?: import(".").RequestOptions) => Promise<import(".").RequestResult>;
72
+ readonly post: (url: string | URL, options?: import(".").RequestOptions) => Promise<import(".").RequestResult>;
73
+ readonly put: (url: string | URL, options?: import(".").RequestOptions) => Promise<import(".").RequestResult>;
74
+ readonly delete: (url: string | URL, options?: import(".").RequestOptions) => Promise<import(".").RequestResult>;
75
+ readonly registerRequestRuntime: (AlpineInstance: Alpine.Alpine | import("./engine").StreamAlpine) => void;
76
+ readonly applyStreamPatch: (AlpineInstance: import("./engine").StreamAlpine, payload: import(".").StreamPatchPayload) => void;
77
+ readonly applyStreamPatches: (AlpineInstance: import("./engine").StreamAlpine, payload: import(".").StreamPatchPayload | import(".").StreamPatchPayload[]) => void;
78
+ readonly applyUiEffect: (AlpineInstance: import("./engine").StreamAlpine, effect: import(".").UiEffectPayload) => void;
79
+ readonly applyUiEffects: (AlpineInstance: import("./engine").StreamAlpine, effects: import(".").UiEffectPayload | import(".").UiEffectPayload[]) => void;
80
+ readonly connectStream: (AlpineInstance: import("./engine").StreamAlpine, url: string) => {
75
81
  abort(reason?: string): void;
76
82
  };
77
- readonly dispatchStreamEvent: (payload: import("./stream").StreamEventPayload) => void;
83
+ readonly dispatchStreamEvent: (payload: import(".").StreamEventPayload) => void;
78
84
  readonly applyThemeMode: (mode: import("./theme").ThemeMode) => import("./theme").ThemeChangeDetail;
79
85
  readonly createThemeStore: () => import("./theme").ThemeStore;
80
86
  readonly lockDocumentScroll: () => void;
@@ -0,0 +1,3 @@
1
+ export { addListener, asBool, dispatch, isRtl, removeAttribute, setAttribute, setPresence, type AddListenerOptions, type AttributeOptions, type BoolOptions, type CleanupStack, type DispatchOptions, type ElementOptions, type PresenceOptions, } from './dom';
2
+ export { isRecord } from './object';
3
+ export { warn } from './warn';
@@ -0,0 +1,2 @@
1
+ declare const isRecord: (value: unknown) => value is Record<string, unknown>;
2
+ export { isRecord };
@@ -0,0 +1,2 @@
1
+ declare const warn: (message: string, ...args: unknown[]) => void;
2
+ export { warn };