@wzrhine/react 0.0.0-stage → 0.1.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 (265) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/LICENSE +21 -0
  3. package/README.md +37 -3
  4. package/dist/advanced.css +398 -0
  5. package/dist/archive.css +704 -0
  6. package/dist/command.css +671 -0
  7. package/dist/components/Accordion.d.ts +82 -0
  8. package/dist/components/Accordion.d.ts.map +1 -0
  9. package/dist/components/Accordion.js +19 -0
  10. package/dist/components/Accordion.js.map +1 -0
  11. package/dist/components/Alert.d.ts +60 -0
  12. package/dist/components/Alert.d.ts.map +1 -0
  13. package/dist/components/Alert.js +29 -0
  14. package/dist/components/Alert.js.map +1 -0
  15. package/dist/components/AlertDialog.d.ts +41 -0
  16. package/dist/components/AlertDialog.d.ts.map +1 -0
  17. package/dist/components/AlertDialog.js +101 -0
  18. package/dist/components/AlertDialog.js.map +1 -0
  19. package/dist/components/ArchiveCard.d.ts +58 -0
  20. package/dist/components/ArchiveCard.d.ts.map +1 -0
  21. package/dist/components/ArchiveCard.js +40 -0
  22. package/dist/components/ArchiveCard.js.map +1 -0
  23. package/dist/components/Breadcrumb.d.ts +48 -0
  24. package/dist/components/Breadcrumb.d.ts.map +1 -0
  25. package/dist/components/Breadcrumb.js +55 -0
  26. package/dist/components/Breadcrumb.js.map +1 -0
  27. package/dist/components/Button.d.ts +30 -0
  28. package/dist/components/Button.d.ts.map +1 -0
  29. package/dist/components/Button.js +24 -0
  30. package/dist/components/Button.js.map +1 -0
  31. package/dist/components/Checkbox.d.ts +81 -0
  32. package/dist/components/Checkbox.d.ts.map +1 -0
  33. package/dist/components/Checkbox.js +34 -0
  34. package/dist/components/Checkbox.js.map +1 -0
  35. package/dist/components/Collapsible.d.ts +47 -0
  36. package/dist/components/Collapsible.d.ts.map +1 -0
  37. package/dist/components/Collapsible.js +12 -0
  38. package/dist/components/Collapsible.js.map +1 -0
  39. package/dist/components/Combobox.d.ts +74 -0
  40. package/dist/components/Combobox.d.ts.map +1 -0
  41. package/dist/components/Combobox.js +61 -0
  42. package/dist/components/Combobox.js.map +1 -0
  43. package/dist/components/CommandPalette.d.ts +77 -0
  44. package/dist/components/CommandPalette.d.ts.map +1 -0
  45. package/dist/components/CommandPalette.js +150 -0
  46. package/dist/components/CommandPalette.js.map +1 -0
  47. package/dist/components/ContextMenu.d.ts +31 -0
  48. package/dist/components/ContextMenu.d.ts.map +1 -0
  49. package/dist/components/ContextMenu.js +25 -0
  50. package/dist/components/ContextMenu.js.map +1 -0
  51. package/dist/components/DataTable.d.ts +83 -0
  52. package/dist/components/DataTable.d.ts.map +1 -0
  53. package/dist/components/DataTable.js +97 -0
  54. package/dist/components/DataTable.js.map +1 -0
  55. package/dist/components/Dialog.d.ts +45 -0
  56. package/dist/components/Dialog.d.ts.map +1 -0
  57. package/dist/components/Dialog.js +46 -0
  58. package/dist/components/Dialog.js.map +1 -0
  59. package/dist/components/Drawer.d.ts +56 -0
  60. package/dist/components/Drawer.d.ts.map +1 -0
  61. package/dist/components/Drawer.js +92 -0
  62. package/dist/components/Drawer.js.map +1 -0
  63. package/dist/components/EmptyState.d.ts +39 -0
  64. package/dist/components/EmptyState.d.ts.map +1 -0
  65. package/dist/components/EmptyState.js +19 -0
  66. package/dist/components/EmptyState.js.map +1 -0
  67. package/dist/components/Field.d.ts +37 -0
  68. package/dist/components/Field.d.ts.map +1 -0
  69. package/dist/components/Field.js +12 -0
  70. package/dist/components/Field.js.map +1 -0
  71. package/dist/components/Fieldset.d.ts +24 -0
  72. package/dist/components/Fieldset.d.ts.map +1 -0
  73. package/dist/components/Fieldset.js +17 -0
  74. package/dist/components/Fieldset.js.map +1 -0
  75. package/dist/components/FileDropZone.d.ts +60 -0
  76. package/dist/components/FileDropZone.d.ts.map +1 -0
  77. package/dist/components/FileDropZone.js +121 -0
  78. package/dist/components/FileDropZone.js.map +1 -0
  79. package/dist/components/Form.d.ts +21 -0
  80. package/dist/components/Form.d.ts.map +1 -0
  81. package/dist/components/Form.js +20 -0
  82. package/dist/components/Form.js.map +1 -0
  83. package/dist/components/IconButton.d.ts +25 -0
  84. package/dist/components/IconButton.d.ts.map +1 -0
  85. package/dist/components/IconButton.js +14 -0
  86. package/dist/components/IconButton.js.map +1 -0
  87. package/dist/components/Input.d.ts +24 -0
  88. package/dist/components/Input.d.ts.map +1 -0
  89. package/dist/components/Input.js +15 -0
  90. package/dist/components/Input.js.map +1 -0
  91. package/dist/components/Menu.d.ts +66 -0
  92. package/dist/components/Menu.d.ts.map +1 -0
  93. package/dist/components/Menu.js +34 -0
  94. package/dist/components/Menu.js.map +1 -0
  95. package/dist/components/MetadataList.d.ts +51 -0
  96. package/dist/components/MetadataList.d.ts.map +1 -0
  97. package/dist/components/MetadataList.js +25 -0
  98. package/dist/components/MetadataList.js.map +1 -0
  99. package/dist/components/NumberField.d.ts +52 -0
  100. package/dist/components/NumberField.d.ts.map +1 -0
  101. package/dist/components/NumberField.js +21 -0
  102. package/dist/components/NumberField.js.map +1 -0
  103. package/dist/components/Pagination.d.ts +40 -0
  104. package/dist/components/Pagination.d.ts.map +1 -0
  105. package/dist/components/Pagination.js +64 -0
  106. package/dist/components/Pagination.js.map +1 -0
  107. package/dist/components/Popover.d.ts +44 -0
  108. package/dist/components/Popover.d.ts.map +1 -0
  109. package/dist/components/Popover.js +14 -0
  110. package/dist/components/Popover.js.map +1 -0
  111. package/dist/components/Progress.d.ts +57 -0
  112. package/dist/components/Progress.d.ts.map +1 -0
  113. package/dist/components/Progress.js +31 -0
  114. package/dist/components/Progress.js.map +1 -0
  115. package/dist/components/Radio.d.ts +61 -0
  116. package/dist/components/Radio.d.ts.map +1 -0
  117. package/dist/components/Radio.js +18 -0
  118. package/dist/components/Radio.js.map +1 -0
  119. package/dist/components/RecordHeader.d.ts +53 -0
  120. package/dist/components/RecordHeader.d.ts.map +1 -0
  121. package/dist/components/RecordHeader.js +19 -0
  122. package/dist/components/RecordHeader.js.map +1 -0
  123. package/dist/components/ScrollArea.d.ts +55 -0
  124. package/dist/components/ScrollArea.d.ts.map +1 -0
  125. package/dist/components/ScrollArea.js +63 -0
  126. package/dist/components/ScrollArea.js.map +1 -0
  127. package/dist/components/Select.d.ts +39 -0
  128. package/dist/components/Select.d.ts.map +1 -0
  129. package/dist/components/Select.js +24 -0
  130. package/dist/components/Select.js.map +1 -0
  131. package/dist/components/Separator.d.ts +26 -0
  132. package/dist/components/Separator.d.ts.map +1 -0
  133. package/dist/components/Separator.js +22 -0
  134. package/dist/components/Separator.js.map +1 -0
  135. package/dist/components/Skeleton.d.ts +31 -0
  136. package/dist/components/Skeleton.d.ts.map +1 -0
  137. package/dist/components/Skeleton.js +17 -0
  138. package/dist/components/Skeleton.js.map +1 -0
  139. package/dist/components/Slider.d.ts +65 -0
  140. package/dist/components/Slider.d.ts.map +1 -0
  141. package/dist/components/Slider.js +30 -0
  142. package/dist/components/Slider.js.map +1 -0
  143. package/dist/components/Spinner.d.ts +23 -0
  144. package/dist/components/Spinner.d.ts.map +1 -0
  145. package/dist/components/Spinner.js +13 -0
  146. package/dist/components/Spinner.js.map +1 -0
  147. package/dist/components/SplitButton.d.ts +59 -0
  148. package/dist/components/SplitButton.d.ts.map +1 -0
  149. package/dist/components/SplitButton.js +30 -0
  150. package/dist/components/SplitButton.js.map +1 -0
  151. package/dist/components/Stat.d.ts +53 -0
  152. package/dist/components/Stat.d.ts.map +1 -0
  153. package/dist/components/Stat.js +23 -0
  154. package/dist/components/Stat.js.map +1 -0
  155. package/dist/components/StatusBadge.d.ts +19 -0
  156. package/dist/components/StatusBadge.d.ts.map +1 -0
  157. package/dist/components/StatusBadge.js +8 -0
  158. package/dist/components/StatusBadge.js.map +1 -0
  159. package/dist/components/StatusIndicator.d.ts +29 -0
  160. package/dist/components/StatusIndicator.d.ts.map +1 -0
  161. package/dist/components/StatusIndicator.js +8 -0
  162. package/dist/components/StatusIndicator.js.map +1 -0
  163. package/dist/components/Surface.d.ts +29 -0
  164. package/dist/components/Surface.d.ts.map +1 -0
  165. package/dist/components/Surface.js +8 -0
  166. package/dist/components/Surface.js.map +1 -0
  167. package/dist/components/Switch.d.ts +22 -0
  168. package/dist/components/Switch.d.ts.map +1 -0
  169. package/dist/components/Switch.js +11 -0
  170. package/dist/components/Switch.js.map +1 -0
  171. package/dist/components/Tabs.d.ts +45 -0
  172. package/dist/components/Tabs.d.ts.map +1 -0
  173. package/dist/components/Tabs.js +49 -0
  174. package/dist/components/Tabs.js.map +1 -0
  175. package/dist/components/Text.d.ts +33 -0
  176. package/dist/components/Text.d.ts.map +1 -0
  177. package/dist/components/Text.js +21 -0
  178. package/dist/components/Text.js.map +1 -0
  179. package/dist/components/Textarea.d.ts +54 -0
  180. package/dist/components/Textarea.d.ts.map +1 -0
  181. package/dist/components/Textarea.js +31 -0
  182. package/dist/components/Textarea.js.map +1 -0
  183. package/dist/components/Timeline.d.ts +35 -0
  184. package/dist/components/Timeline.d.ts.map +1 -0
  185. package/dist/components/Timeline.js +13 -0
  186. package/dist/components/Timeline.js.map +1 -0
  187. package/dist/components/Toast.d.ts +67 -0
  188. package/dist/components/Toast.d.ts.map +1 -0
  189. package/dist/components/Toast.js +94 -0
  190. package/dist/components/Toast.js.map +1 -0
  191. package/dist/components/Tooltip.d.ts +26 -0
  192. package/dist/components/Tooltip.d.ts.map +1 -0
  193. package/dist/components/Tooltip.js +15 -0
  194. package/dist/components/Tooltip.js.map +1 -0
  195. package/dist/components/VisuallyHidden.d.ts +17 -0
  196. package/dist/components/VisuallyHidden.d.ts.map +1 -0
  197. package/dist/components/VisuallyHidden.js +12 -0
  198. package/dist/components/VisuallyHidden.js.map +1 -0
  199. package/dist/components/fieldParts.d.ts +17 -0
  200. package/dist/components/fieldParts.d.ts.map +1 -0
  201. package/dist/components/fieldParts.js +22 -0
  202. package/dist/components/fieldParts.js.map +1 -0
  203. package/dist/components/meter-utils.d.ts +15 -0
  204. package/dist/components/meter-utils.d.ts.map +1 -0
  205. package/dist/components/meter-utils.js +15 -0
  206. package/dist/components/meter-utils.js.map +1 -0
  207. package/dist/components/pagination-utils.d.ts +10 -0
  208. package/dist/components/pagination-utils.d.ts.map +1 -0
  209. package/dist/components/pagination-utils.js +36 -0
  210. package/dist/components/pagination-utils.js.map +1 -0
  211. package/dist/components.css +632 -0
  212. package/dist/data.css +600 -0
  213. package/dist/disclosure.css +93 -0
  214. package/dist/drawer.css +226 -0
  215. package/dist/feedback.css +454 -0
  216. package/dist/forms.css +516 -0
  217. package/dist/index.d.ts +117 -0
  218. package/dist/index.d.ts.map +1 -0
  219. package/dist/index.js +61 -0
  220. package/dist/index.js.map +1 -0
  221. package/dist/motion/lifecycle.d.ts +44 -0
  222. package/dist/motion/lifecycle.d.ts.map +1 -0
  223. package/dist/motion/lifecycle.js +73 -0
  224. package/dist/motion/lifecycle.js.map +1 -0
  225. package/dist/motion/presence.d.ts +69 -0
  226. package/dist/motion/presence.d.ts.map +1 -0
  227. package/dist/motion/presence.js +103 -0
  228. package/dist/motion/presence.js.map +1 -0
  229. package/dist/motion/presets.d.ts +63 -0
  230. package/dist/motion/presets.d.ts.map +1 -0
  231. package/dist/motion/presets.js +30 -0
  232. package/dist/motion/presets.js.map +1 -0
  233. package/dist/motion/resolve.d.ts +31 -0
  234. package/dist/motion/resolve.d.ts.map +1 -0
  235. package/dist/motion/resolve.js +40 -0
  236. package/dist/motion/resolve.js.map +1 -0
  237. package/dist/motion/useRhineMotion.d.ts +19 -0
  238. package/dist/motion/useRhineMotion.d.ts.map +1 -0
  239. package/dist/motion/useRhineMotion.js +19 -0
  240. package/dist/motion/useRhineMotion.js.map +1 -0
  241. package/dist/motion/visibility.d.ts +6 -0
  242. package/dist/motion/visibility.d.ts.map +1 -0
  243. package/dist/motion/visibility.js +31 -0
  244. package/dist/motion/visibility.js.map +1 -0
  245. package/dist/overlays.css +465 -0
  246. package/dist/provider/RhineProvider.d.ts +65 -0
  247. package/dist/provider/RhineProvider.d.ts.map +1 -0
  248. package/dist/provider/RhineProvider.js +26 -0
  249. package/dist/provider/RhineProvider.js.map +1 -0
  250. package/dist/provider/messages.d.ts +190 -0
  251. package/dist/provider/messages.d.ts.map +1 -0
  252. package/dist/provider/messages.js +160 -0
  253. package/dist/provider/messages.js.map +1 -0
  254. package/dist/provider/portal.d.ts +17 -0
  255. package/dist/provider/portal.d.ts.map +1 -0
  256. package/dist/provider/portal.js +20 -0
  257. package/dist/provider/portal.js.map +1 -0
  258. package/dist/reset.css +45 -0
  259. package/dist/split.css +159 -0
  260. package/dist/status.css +353 -0
  261. package/dist/utils/cx.d.ts +2 -0
  262. package/dist/utils/cx.d.ts.map +1 -0
  263. package/dist/utils/cx.js +4 -0
  264. package/dist/utils/cx.js.map +1 -0
  265. package/package.json +62 -3
@@ -0,0 +1,353 @@
1
+ /*
2
+ * WzRhineLab UI · status & placeholders (ADR-0006 §5–7): Alert, Callout, EmptyState, Skeleton, Spinner.
3
+ * Imported by components.css; tokens only. Tone colour is used for the icon, border and title
4
+ * (manifest pairs `--rl-<tone>` on `--rl-<tone>-subtle`); body text stays `--rl-fg-primary`.
5
+ */
6
+
7
+ /* ---------- Alert & Callout ---------- */
8
+ .rl-alert {
9
+ --rl-alert-fg: var(--rl-info);
10
+ --rl-alert-bg: var(--rl-info-subtle);
11
+ --rl-alert-border: var(--rl-info);
12
+ --rl-alert-icon: var(--rl-info);
13
+
14
+ box-sizing: border-box;
15
+ display: grid;
16
+ grid-template-columns: minmax(0, 1fr) auto;
17
+ align-items: start;
18
+ gap: var(--rl-space-2) var(--rl-space-3);
19
+ min-width: 0;
20
+ padding: var(--rl-space-3) var(--rl-space-4);
21
+ border: var(--rl-border-width) solid var(--rl-alert-border);
22
+ border-radius: var(--rl-radius-sm);
23
+ background: var(--rl-alert-bg);
24
+ color: var(--rl-fg-primary);
25
+ font: var(--rl-type-body-sm);
26
+ }
27
+
28
+ .rl-alert[data-tone='neutral'] {
29
+ --rl-alert-fg: var(--rl-fg-primary);
30
+ --rl-alert-bg: var(--rl-bg-subtle);
31
+ --rl-alert-border: var(--rl-border-default);
32
+ --rl-alert-icon: var(--rl-fg-muted);
33
+ }
34
+
35
+ .rl-alert[data-tone='success'] {
36
+ --rl-alert-fg: var(--rl-success);
37
+ --rl-alert-bg: var(--rl-success-subtle);
38
+ --rl-alert-border: var(--rl-success);
39
+ --rl-alert-icon: var(--rl-success);
40
+ }
41
+
42
+ .rl-alert[data-tone='warning'] {
43
+ --rl-alert-fg: var(--rl-warning);
44
+ --rl-alert-bg: var(--rl-warning-subtle);
45
+ --rl-alert-border: var(--rl-warning);
46
+ --rl-alert-icon: var(--rl-warning);
47
+ }
48
+
49
+ .rl-alert[data-tone='danger'] {
50
+ --rl-alert-fg: var(--rl-danger);
51
+ --rl-alert-bg: var(--rl-danger-subtle);
52
+ --rl-alert-border: var(--rl-danger);
53
+ --rl-alert-icon: var(--rl-danger);
54
+ }
55
+
56
+ /* Callout: quieter side note, a single rule on the start edge instead of a full frame. */
57
+ .rl-callout {
58
+ border-color: transparent;
59
+ border-inline-start: var(--rl-border-width-strong) solid var(--rl-alert-border);
60
+ border-radius: var(--rl-radius-xs);
61
+ }
62
+
63
+ .rl-alert__message {
64
+ grid-column: 1;
65
+ display: flex;
66
+ align-items: flex-start;
67
+ gap: var(--rl-space-2);
68
+ min-width: 0;
69
+ }
70
+
71
+ .rl-alert__icon {
72
+ display: inline-flex;
73
+ flex: none;
74
+ width: var(--rl-icon-size-md);
75
+ height: var(--rl-icon-size-md);
76
+ /* Centre on the first text line (title or body). */
77
+ margin-top: calc((1lh - var(--rl-icon-size-md)) / 2);
78
+ color: var(--rl-alert-icon);
79
+ }
80
+
81
+ .rl-alert__glyph,
82
+ .rl-alert__icon > svg {
83
+ width: var(--rl-icon-size-md);
84
+ height: var(--rl-icon-size-md);
85
+ fill: none;
86
+ stroke: currentColor;
87
+ stroke-width: var(--rl-border-width-strong);
88
+ stroke-linecap: round;
89
+ stroke-linejoin: round;
90
+ }
91
+
92
+ .rl-alert__text {
93
+ display: grid;
94
+ gap: var(--rl-space-1);
95
+ min-width: 0;
96
+ overflow-wrap: anywhere;
97
+ }
98
+
99
+ .rl-alert__title {
100
+ margin: 0;
101
+ font: var(--rl-type-label);
102
+ color: var(--rl-alert-fg);
103
+ text-transform: none;
104
+ letter-spacing: normal;
105
+ }
106
+
107
+ .rl-alert__body {
108
+ margin: 0;
109
+ color: var(--rl-fg-primary);
110
+ }
111
+
112
+ .rl-alert__body > :where(p) {
113
+ margin: 0;
114
+ }
115
+
116
+ /* Below the text, aligned with it (past the icon), so long copy never squeezes the action. */
117
+ .rl-alert__action {
118
+ grid-column: 1 / -1;
119
+ grid-row: 2;
120
+ display: flex;
121
+ flex-wrap: wrap;
122
+ gap: var(--rl-space-2);
123
+ padding-inline-start: calc(var(--rl-icon-size-md) + var(--rl-space-2));
124
+ }
125
+
126
+ .rl-alert__dismiss {
127
+ grid-column: 2;
128
+ grid-row: 1;
129
+ /* Keep the 32px target without growing the alert. */
130
+ margin-block: calc(var(--rl-space-1) * -1);
131
+ margin-inline-end: calc(var(--rl-space-2) * -1);
132
+ }
133
+
134
+ .rl-alert__close-icon {
135
+ fill: none;
136
+ stroke: currentColor;
137
+ stroke-width: var(--rl-border-width-strong);
138
+ stroke-linecap: round;
139
+ }
140
+
141
+ /* ---------- EmptyState ---------- */
142
+ .rl-empty {
143
+ box-sizing: border-box;
144
+ display: flex;
145
+ flex-direction: column;
146
+ align-items: center;
147
+ gap: var(--rl-space-2);
148
+ min-width: 0;
149
+ padding: var(--rl-space-8) var(--rl-space-4);
150
+ text-align: center;
151
+ color: var(--rl-fg-primary);
152
+ white-space: normal;
153
+ }
154
+
155
+ .rl-empty[data-size='sm'] {
156
+ gap: var(--rl-space-1);
157
+ padding: var(--rl-space-4);
158
+ }
159
+
160
+ /* DataTable's empty cell already pads and colours the message; keep its M8 look (no icon,
161
+ cell text style, action one step below). */
162
+ .rl-table__empty > .rl-empty[data-size] {
163
+ gap: 0;
164
+ padding: 0;
165
+ color: inherit;
166
+ }
167
+
168
+ .rl-table__empty > .rl-empty[data-size] .rl-empty__title {
169
+ max-width: none;
170
+ font: inherit;
171
+ color: inherit;
172
+ }
173
+
174
+ .rl-table__empty > .rl-empty[data-size] .rl-empty__description {
175
+ margin-top: var(--rl-space-1);
176
+ }
177
+
178
+ .rl-table__empty > .rl-empty[data-size] .rl-empty__action {
179
+ display: block;
180
+ margin-top: var(--rl-space-3);
181
+ }
182
+
183
+ .rl-empty__icon {
184
+ display: inline-flex;
185
+ flex: none;
186
+ width: var(--rl-space-8);
187
+ height: var(--rl-space-8);
188
+ margin-bottom: var(--rl-space-1);
189
+ color: var(--rl-fg-muted);
190
+ }
191
+
192
+ .rl-empty[data-size='sm'] .rl-empty__icon {
193
+ width: var(--rl-icon-size-lg);
194
+ height: var(--rl-icon-size-lg);
195
+ }
196
+
197
+ .rl-empty__glyph,
198
+ .rl-empty__icon > svg {
199
+ width: 100%;
200
+ height: 100%;
201
+ fill: none;
202
+ stroke: currentColor;
203
+ stroke-width: var(--rl-border-width);
204
+ stroke-linecap: round;
205
+ stroke-linejoin: round;
206
+ }
207
+
208
+ .rl-empty[data-size='sm'] .rl-empty__glyph {
209
+ stroke-width: var(--rl-border-width-strong);
210
+ }
211
+
212
+ /* Title may be a host-styled h2–h6: reset what a host stylesheet could leak in. */
213
+ .rl-empty__title {
214
+ margin: 0;
215
+ max-width: calc(var(--rl-field-label-width) * 3);
216
+ font: var(--rl-type-heading-3);
217
+ font-family: var(--rl-font-body);
218
+ color: var(--rl-fg-primary);
219
+ text-transform: none;
220
+ letter-spacing: normal;
221
+ overflow-wrap: anywhere;
222
+ text-wrap: balance;
223
+ }
224
+
225
+ .rl-empty[data-size='sm'] .rl-empty__title {
226
+ font: var(--rl-type-label);
227
+ }
228
+
229
+ .rl-empty__description {
230
+ margin: 0;
231
+ max-width: calc(var(--rl-field-label-width) * 3);
232
+ font: var(--rl-type-body-sm);
233
+ color: var(--rl-fg-muted);
234
+ overflow-wrap: anywhere;
235
+ /* Centred CJK text: avoid a lone glyph on the last line. */
236
+ text-wrap: pretty;
237
+ }
238
+
239
+ .rl-empty[data-size='sm'] .rl-empty__description {
240
+ font: var(--rl-type-meta);
241
+ }
242
+
243
+ .rl-empty__action {
244
+ display: flex;
245
+ flex-wrap: wrap;
246
+ justify-content: center;
247
+ gap: var(--rl-space-2);
248
+ margin-top: var(--rl-space-2);
249
+ }
250
+
251
+ /* ---------- Skeleton ---------- */
252
+ .rl-skeleton {
253
+ display: block;
254
+ flex: none;
255
+ width: var(--rl-skeleton-width, 100%);
256
+ height: var(--rl-skeleton-height, 1lh);
257
+ border-radius: var(--rl-radius-xs);
258
+ background: var(--rl-bg-subtle);
259
+ animation: rl-skeleton-pulse var(--rl-motion-loop) var(--rl-ease-in-out) infinite alternate;
260
+ }
261
+
262
+ .rl-skeleton[data-shape='block'] {
263
+ height: var(--rl-skeleton-height, var(--rl-space-16));
264
+ border-radius: var(--rl-radius-sm);
265
+ }
266
+
267
+ .rl-skeleton[data-shape='circle'] {
268
+ width: var(--rl-skeleton-width, var(--rl-skeleton-height, var(--rl-space-8)));
269
+ height: var(--rl-skeleton-height, var(--rl-skeleton-width, var(--rl-space-8)));
270
+ border-radius: var(--rl-radius-round);
271
+ }
272
+
273
+ /* Multi-line text: the width applies to the paragraph; each line keeps a text-like rhythm. */
274
+ .rl-skeleton-lines {
275
+ display: grid;
276
+ gap: var(--rl-space-1);
277
+ width: var(--rl-skeleton-width, 100%);
278
+ min-width: 0;
279
+ }
280
+
281
+ .rl-skeleton-lines > .rl-skeleton {
282
+ width: 100%;
283
+ height: var(--rl-skeleton-height, calc(1lh - var(--rl-space-1)));
284
+ }
285
+
286
+ .rl-skeleton-lines > .rl-skeleton[data-last] {
287
+ width: 60%;
288
+ }
289
+
290
+ @keyframes rl-skeleton-pulse {
291
+ from { opacity: 1; }
292
+ to { opacity: 0.45; }
293
+ }
294
+
295
+ /* ---------- Spinner ---------- */
296
+ .rl-spinner {
297
+ display: inline-flex;
298
+ flex: none;
299
+ width: var(--rl-icon-size-md);
300
+ height: var(--rl-icon-size-md);
301
+ }
302
+
303
+ .rl-spinner[data-size='sm'] {
304
+ width: var(--rl-icon-size-sm);
305
+ height: var(--rl-icon-size-sm);
306
+ }
307
+
308
+ .rl-spinner[data-size='lg'] {
309
+ width: var(--rl-icon-size-lg);
310
+ height: var(--rl-icon-size-lg);
311
+ }
312
+
313
+ .rl-spinner__svg {
314
+ width: 100%;
315
+ height: 100%;
316
+ fill: none;
317
+ stroke: currentColor;
318
+ stroke-width: var(--rl-border-width-strong);
319
+ }
320
+
321
+ .rl-spinner__track {
322
+ opacity: 0.25;
323
+ }
324
+
325
+ .rl-spinner__arc {
326
+ stroke-dasharray: 28 100;
327
+ stroke-linecap: round;
328
+ }
329
+
330
+ /* Reduced motion: a static, fuller arc still reads as "in progress" next to aria-busy. */
331
+ .rl-spinner[data-reduced] .rl-spinner__arc {
332
+ stroke-dasharray: 70 100;
333
+ }
334
+
335
+ /* ---------- Reduced motion ---------- */
336
+ .rl-theme[data-rl-motion='reduce'] .rl-skeleton {
337
+ animation: none;
338
+ }
339
+
340
+ @media (prefers-reduced-motion: reduce) {
341
+ .rl-skeleton {
342
+ animation: none;
343
+ }
344
+ }
345
+
346
+ /* ---------- Forced colours (Windows High Contrast) ---------- */
347
+ @media (forced-colors: active) {
348
+ .rl-alert { border-color: CanvasText; }
349
+ .rl-callout { border-color: transparent; border-inline-start-color: CanvasText; }
350
+ .rl-alert__icon,
351
+ .rl-empty__icon { color: CanvasText; }
352
+ .rl-skeleton { background: GrayText; }
353
+ }
@@ -0,0 +1,2 @@
1
+ export declare function cx(...parts: Array<string | false | null | undefined>): string;
2
+ //# sourceMappingURL=cx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cx.d.ts","sourceRoot":"","sources":["../../src/utils/cx.ts"],"names":[],"mappings":"AAAA,wBAAgB,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAE7E"}
@@ -0,0 +1,4 @@
1
+ export function cx(...parts) {
2
+ return parts.filter(Boolean).join(' ');
3
+ }
4
+ //# sourceMappingURL=cx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cx.js","sourceRoot":"","sources":["../../src/utils/cx.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,EAAE,CAAC,GAAG,KAA+C;IACnE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,65 @@
1
1
  {
2
2
  "name": "@wzrhine/react",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0",
4
+ "license": "MIT",
5
+ "description": "Accessible React components for research / archive interfaces, built on Base UI and motion/react.",
6
+ "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/BaiZhi967/WzRhineLab-UI.git",
10
+ "directory": "packages/react"
11
+ },
12
+ "sideEffects": [
13
+ "**/*.css"
14
+ ],
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "CHANGELOG.md"
19
+ ],
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.js",
24
+ "default": "./dist/index.js"
25
+ },
26
+ "./styles.css": "./dist/components.css",
27
+ "./package.json": "./package.json"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "peerDependencies": {
33
+ "motion": "^12.0.0",
34
+ "react": "^19.0.0",
35
+ "react-dom": "^19.0.0"
36
+ },
37
+ "dependencies": {
38
+ "@base-ui/react": "1.9.0",
39
+ "@wzrhine/tokens": "0.1.0"
40
+ },
41
+ "devDependencies": {
42
+ "@testing-library/dom": "10.4.2",
43
+ "@testing-library/jest-dom": "7.0.1",
44
+ "@testing-library/react": "16.3.3",
45
+ "@testing-library/user-event": "14.6.7",
46
+ "@types/node": "24.19.1",
47
+ "@types/react": "^19.0.0",
48
+ "@types/react-dom": "^19.0.0",
49
+ "jsdom": "27.4.0",
50
+ "motion": "^12.0.0",
51
+ "react": "^19.3.0",
52
+ "react-dom": "^19.3.0",
53
+ "typescript": "^5.9.0",
54
+ "vitest": "4.1.11"
55
+ },
56
+ "scripts": {
57
+ "typecheck": "tsc --noEmit -p tsconfig.json",
58
+ "test": "vitest run",
59
+ "test:watch": "vitest",
60
+ "build": "node ../../scripts/build-package.mjs"
61
+ },
62
+ "main": "./dist/index.js",
63
+ "module": "./dist/index.js",
64
+ "types": "./dist/index.d.ts"
6
65
  }