@remix-run/ui 0.1.2 → 0.2.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 (109) hide show
  1. package/README.md +9 -7
  2. package/dist/animation/spring.d.ts +6 -35
  3. package/dist/animation/spring.js +9 -8
  4. package/dist/animation/spring.js.map +1 -1
  5. package/dist/components/accordion/accordion.d.ts +6 -6
  6. package/dist/components/accordion/accordion.js.map +1 -1
  7. package/dist/components/breadcrumbs/breadcrumbs.d.ts +1 -1
  8. package/dist/components/button/button.d.ts +4 -4
  9. package/dist/components/button/button.js +3 -1
  10. package/dist/components/button/button.js.map +1 -1
  11. package/dist/components/combobox/combobox.d.ts +10 -10
  12. package/dist/components/combobox/combobox.js.map +1 -1
  13. package/dist/components/listbox/listbox.d.ts +3 -3
  14. package/dist/components/listbox/listbox.js.map +1 -1
  15. package/dist/components/menu/menu.d.ts +12 -12
  16. package/dist/components/menu/menu.js.map +1 -1
  17. package/dist/components/popover/popover.d.ts +5 -5
  18. package/dist/components/popover/popover.js.map +1 -1
  19. package/dist/components/select/select.d.ts +10 -10
  20. package/dist/components/select/select.js.map +1 -1
  21. package/dist/components/tabs/tabs.d.ts +3 -3
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/interactions/keydown/keydown.d.ts +1 -1
  25. package/dist/interactions/outside-click/outside-click-mixin.d.ts +2 -1
  26. package/dist/interactions/typeahead/typeahead-mixin.d.ts +3 -1
  27. package/dist/runtime/component.d.ts +18 -15
  28. package/dist/runtime/component.js +14 -5
  29. package/dist/runtime/component.js.map +1 -1
  30. package/dist/runtime/core/attributes.d.ts +3 -1
  31. package/dist/runtime/core/attributes.js +19 -1
  32. package/dist/runtime/core/attributes.js.map +1 -1
  33. package/dist/runtime/core/props.js +6 -5
  34. package/dist/runtime/core/props.js.map +1 -1
  35. package/dist/runtime/dom.d.ts +16 -9
  36. package/dist/runtime/jsx.d.ts +1 -1
  37. package/dist/runtime/mixins/link-mixin.d.ts +5 -1
  38. package/dist/runtime/mixins/link-mixin.js.map +1 -1
  39. package/dist/runtime/mixins/mixin.d.ts +2 -1
  40. package/dist/runtime/mixins/mixin.js.map +1 -1
  41. package/dist/runtime/mixins/ref-mixin.d.ts +2 -1
  42. package/dist/runtime/mixins/ref-mixin.js.map +1 -1
  43. package/dist/runtime/reconcile.d.ts +1 -1
  44. package/dist/runtime/reconcile.js +19 -5
  45. package/dist/runtime/reconcile.js.map +1 -1
  46. package/dist/runtime/scheduler.d.ts +10 -10
  47. package/dist/runtime/scheduler.js +1 -1
  48. package/dist/runtime/scheduler.js.map +1 -1
  49. package/dist/runtime/svg-attributes.js +1 -0
  50. package/dist/runtime/svg-attributes.js.map +1 -1
  51. package/dist/runtime/to-vnode.js +2 -2
  52. package/dist/runtime/to-vnode.js.map +1 -1
  53. package/dist/runtime/vnode.d.ts +6 -1
  54. package/dist/runtime/vnode.js +4 -0
  55. package/dist/runtime/vnode.js.map +1 -1
  56. package/dist/server/stream.d.ts +2 -0
  57. package/dist/server/stream.js +79 -9
  58. package/dist/server/stream.js.map +1 -1
  59. package/dist/style/css-mixin.d.ts +2 -1
  60. package/dist/style/css-mixin.js.map +1 -1
  61. package/dist/style/index.d.ts +1 -1
  62. package/dist/style/stylesheet.d.ts +13 -13
  63. package/dist/style/stylesheet.js.map +1 -1
  64. package/dist/theme/contract.d.ts +24 -222
  65. package/dist/theme/contract.js +2 -2
  66. package/dist/theme/contract.js.map +1 -1
  67. package/dist/theme/glyph-contract.d.ts +1 -3
  68. package/dist/theme/glyph-contract.js.map +1 -1
  69. package/dist/theme/presets/rmx-01/index.d.ts +4 -2
  70. package/dist/theme/presets/rmx-01/index.js.map +1 -1
  71. package/dist/utils/scroll-lock.d.ts +3 -3
  72. package/dist/utils/scroll-lock.js.map +1 -1
  73. package/package.json +3 -3
  74. package/src/animation/README.md +7 -5
  75. package/src/animation/spring.ts +21 -9
  76. package/src/components/accordion/accordion.tsx +7 -5
  77. package/src/components/anchor/anchor.ts +1 -1
  78. package/src/components/breadcrumbs/breadcrumbs.tsx +1 -1
  79. package/src/components/button/button.tsx +30 -18
  80. package/src/components/combobox/README.md +1 -1
  81. package/src/components/combobox/combobox.tsx +30 -12
  82. package/src/components/glyph/glyph.tsx +2 -2
  83. package/src/components/listbox/listbox.ts +88 -83
  84. package/src/components/menu/menu.tsx +27 -15
  85. package/src/components/popover/popover.ts +90 -79
  86. package/src/components/select/select.tsx +26 -9
  87. package/src/index.ts +1 -0
  88. package/src/runtime/component.ts +34 -12
  89. package/src/runtime/core/attributes.ts +21 -0
  90. package/src/runtime/core/props.ts +6 -4
  91. package/src/runtime/dom.ts +16 -9
  92. package/src/runtime/jsx.ts +1 -1
  93. package/src/runtime/mixins/link-mixin.ts +88 -86
  94. package/src/runtime/mixins/mixin.ts +9 -1
  95. package/src/runtime/mixins/ref-mixin.ts +4 -5
  96. package/src/runtime/reconcile.ts +23 -14
  97. package/src/runtime/scheduler.ts +20 -20
  98. package/src/runtime/svg-attributes.ts +1 -0
  99. package/src/runtime/to-vnode.ts +2 -2
  100. package/src/runtime/vnode.ts +10 -0
  101. package/src/server/README.md +4 -2
  102. package/src/server/stream.ts +77 -8
  103. package/src/style/css-mixin.ts +6 -1
  104. package/src/style/index.ts +1 -2
  105. package/src/style/stylesheet.ts +14 -2
  106. package/src/theme/contract.ts +37 -5
  107. package/src/theme/glyph-contract.ts +3 -1
  108. package/src/theme/presets/rmx-01/index.ts +4 -2
  109. package/src/utils/scroll-lock.ts +7 -3
@@ -2,124 +2,39 @@ import type { css, Handle, MixinDescriptor, RemixElement } from '@remix-run/ui';
2
2
  export interface ThemeVariableTree {
3
3
  [key: string]: string | ThemeVariableTree;
4
4
  }
5
- declare const themeVariableNames: {
6
- readonly space: {
7
- readonly none: "--rmx-space-none";
8
- readonly px: "--rmx-space-px";
9
- readonly xs: "--rmx-space-xs";
10
- readonly sm: "--rmx-space-sm";
11
- readonly md: "--rmx-space-md";
12
- readonly lg: "--rmx-space-lg";
13
- readonly xl: "--rmx-space-xl";
14
- readonly xxl: "--rmx-space-xxl";
15
- };
16
- readonly radius: {
17
- readonly none: "--rmx-radius-none";
18
- readonly sm: "--rmx-radius-sm";
19
- readonly md: "--rmx-radius-md";
20
- readonly lg: "--rmx-radius-lg";
21
- readonly xl: "--rmx-radius-xl";
22
- readonly full: "--rmx-radius-full";
23
- };
24
- readonly fontFamily: {
25
- readonly sans: "--rmx-font-family-sans";
26
- readonly mono: "--rmx-font-family-mono";
27
- };
28
- readonly fontSize: {
29
- readonly xxxs: "--rmx-font-size-xxxs";
30
- readonly xxs: "--rmx-font-size-xxs";
31
- readonly xs: "--rmx-font-size-xs";
32
- readonly sm: "--rmx-font-size-sm";
33
- readonly md: "--rmx-font-size-md";
34
- readonly lg: "--rmx-font-size-lg";
35
- readonly xl: "--rmx-font-size-xl";
36
- readonly xxl: "--rmx-font-size-xxl";
37
- };
38
- readonly lineHeight: {
39
- readonly tight: "--rmx-line-height-tight";
40
- readonly normal: "--rmx-line-height-normal";
41
- readonly relaxed: "--rmx-line-height-relaxed";
42
- };
43
- readonly letterSpacing: {
44
- readonly tight: "--rmx-letter-spacing-tight";
45
- readonly normal: "--rmx-letter-spacing-normal";
46
- readonly meta: "--rmx-letter-spacing-meta";
47
- readonly wide: "--rmx-letter-spacing-wide";
48
- };
49
- readonly fontWeight: {
50
- readonly normal: "--rmx-font-weight-normal";
51
- readonly medium: "--rmx-font-weight-medium";
52
- readonly semibold: "--rmx-font-weight-semibold";
53
- readonly bold: "--rmx-font-weight-bold";
54
- };
5
+ type ThemeVariableGroup<key extends string> = Readonly<Record<key, string>>;
6
+ type ThemeActionVariableGroup = ThemeVariableGroup<'background' | 'backgroundHover' | 'backgroundActive' | 'foreground' | 'border'>;
7
+ type ThemeVariableNames = {
8
+ readonly space: ThemeVariableGroup<'none' | 'px' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'>;
9
+ readonly radius: ThemeVariableGroup<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full'>;
10
+ readonly fontFamily: ThemeVariableGroup<'sans' | 'mono'>;
11
+ readonly fontSize: ThemeVariableGroup<'xxxs' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'>;
12
+ readonly lineHeight: ThemeVariableGroup<'tight' | 'normal' | 'relaxed'>;
13
+ readonly letterSpacing: ThemeVariableGroup<'tight' | 'normal' | 'meta' | 'wide'>;
14
+ readonly fontWeight: ThemeVariableGroup<'normal' | 'medium' | 'semibold' | 'bold'>;
55
15
  readonly control: {
56
- readonly height: {
57
- readonly sm: "--rmx-control-height-sm";
58
- readonly md: "--rmx-control-height-md";
59
- readonly lg: "--rmx-control-height-lg";
60
- };
61
- };
62
- readonly surface: {
63
- readonly lvl0: "--rmx-surface-lvl0";
64
- readonly lvl1: "--rmx-surface-lvl1";
65
- readonly lvl2: "--rmx-surface-lvl2";
66
- readonly lvl3: "--rmx-surface-lvl3";
67
- readonly lvl4: "--rmx-surface-lvl4";
68
- };
69
- readonly shadow: {
70
- readonly xs: "--rmx-shadow-xs";
71
- readonly sm: "--rmx-shadow-sm";
72
- readonly md: "--rmx-shadow-md";
73
- readonly lg: "--rmx-shadow-lg";
74
- readonly xl: "--rmx-shadow-xl";
16
+ readonly height: ThemeVariableGroup<'sm' | 'md' | 'lg'>;
75
17
  };
18
+ readonly surface: ThemeVariableGroup<'lvl0' | 'lvl1' | 'lvl2' | 'lvl3' | 'lvl4'>;
19
+ readonly shadow: ThemeVariableGroup<'xs' | 'sm' | 'md' | 'lg' | 'xl'>;
76
20
  readonly colors: {
77
- readonly text: {
78
- readonly primary: "--rmx-color-text-primary";
79
- readonly secondary: "--rmx-color-text-secondary";
80
- readonly muted: "--rmx-color-text-muted";
81
- readonly link: "--rmx-color-text-link";
82
- };
83
- readonly border: {
84
- readonly subtle: "--rmx-color-border-subtle";
85
- readonly default: "--rmx-color-border-default";
86
- readonly strong: "--rmx-color-border-strong";
87
- };
88
- readonly focus: {
89
- readonly ring: "--rmx-color-focus-ring";
90
- };
91
- readonly overlay: {
92
- readonly scrim: "--rmx-color-overlay-scrim";
93
- };
21
+ readonly text: ThemeVariableGroup<'primary' | 'secondary' | 'muted' | 'link'>;
22
+ readonly border: ThemeVariableGroup<'subtle' | 'default' | 'strong'>;
23
+ readonly focus: ThemeVariableGroup<'ring'>;
24
+ readonly overlay: ThemeVariableGroup<'scrim'>;
94
25
  readonly action: {
95
- readonly primary: {
96
- readonly background: "--rmx-color-action-primary-background";
97
- readonly backgroundHover: "--rmx-color-action-primary-background-hover";
98
- readonly backgroundActive: "--rmx-color-action-primary-background-active";
99
- readonly foreground: "--rmx-color-action-primary-foreground";
100
- readonly border: "--rmx-color-action-primary-border";
101
- };
102
- readonly secondary: {
103
- readonly background: "--rmx-color-action-secondary-background";
104
- readonly backgroundHover: "--rmx-color-action-secondary-background-hover";
105
- readonly backgroundActive: "--rmx-color-action-secondary-background-active";
106
- readonly foreground: "--rmx-color-action-secondary-foreground";
107
- readonly border: "--rmx-color-action-secondary-border";
108
- };
109
- readonly danger: {
110
- readonly background: "--rmx-color-action-danger-background";
111
- readonly backgroundHover: "--rmx-color-action-danger-background-hover";
112
- readonly backgroundActive: "--rmx-color-action-danger-background-active";
113
- readonly foreground: "--rmx-color-action-danger-foreground";
114
- readonly border: "--rmx-color-action-danger-border";
115
- };
26
+ readonly primary: ThemeActionVariableGroup;
27
+ readonly secondary: ThemeActionVariableGroup;
28
+ readonly danger: ThemeActionVariableGroup;
116
29
  };
117
30
  };
118
31
  };
32
+ export declare const themeVariableNames: ThemeVariableNames;
119
33
  type MapLeaves<source, leaf> = source extends string ? leaf : {
120
34
  [key in keyof source]: MapLeaves<source[key], leaf>;
121
35
  };
122
36
  export type ThemeValue = string | number;
37
+ export type ThemeContract = MapLeaves<ThemeVariableNames, string>;
123
38
  export type ThemeValues = MapLeaves<typeof themeVariableNames, ThemeValue>;
124
39
  export type ThemeVars = Readonly<Record<string, string>>;
125
40
  export type CreateThemeOptions = {
@@ -137,123 +52,10 @@ export type ThemeComponent = ThemeRenderer & {
137
52
  values: ThemeValues;
138
53
  vars: ThemeVars;
139
54
  };
140
- export declare const theme: {
141
- readonly space: {
142
- readonly none: string;
143
- readonly px: string;
144
- readonly xs: string;
145
- readonly sm: string;
146
- readonly md: string;
147
- readonly lg: string;
148
- readonly xl: string;
149
- readonly xxl: string;
150
- };
151
- readonly radius: {
152
- readonly none: string;
153
- readonly sm: string;
154
- readonly md: string;
155
- readonly lg: string;
156
- readonly xl: string;
157
- readonly full: string;
158
- };
159
- readonly fontFamily: {
160
- readonly sans: string;
161
- readonly mono: string;
162
- };
163
- readonly fontSize: {
164
- readonly xxxs: string;
165
- readonly xxs: string;
166
- readonly xs: string;
167
- readonly sm: string;
168
- readonly md: string;
169
- readonly lg: string;
170
- readonly xl: string;
171
- readonly xxl: string;
172
- };
173
- readonly lineHeight: {
174
- readonly tight: string;
175
- readonly normal: string;
176
- readonly relaxed: string;
177
- };
178
- readonly letterSpacing: {
179
- readonly tight: string;
180
- readonly normal: string;
181
- readonly meta: string;
182
- readonly wide: string;
183
- };
184
- readonly fontWeight: {
185
- readonly normal: string;
186
- readonly medium: string;
187
- readonly semibold: string;
188
- readonly bold: string;
189
- };
190
- readonly control: {
191
- readonly height: {
192
- readonly sm: string;
193
- readonly md: string;
194
- readonly lg: string;
195
- };
196
- };
197
- readonly surface: {
198
- readonly lvl0: string;
199
- readonly lvl1: string;
200
- readonly lvl2: string;
201
- readonly lvl3: string;
202
- readonly lvl4: string;
203
- };
204
- readonly shadow: {
205
- readonly xs: string;
206
- readonly sm: string;
207
- readonly md: string;
208
- readonly lg: string;
209
- readonly xl: string;
210
- };
211
- readonly colors: {
212
- readonly text: {
213
- readonly primary: string;
214
- readonly secondary: string;
215
- readonly muted: string;
216
- readonly link: string;
217
- };
218
- readonly border: {
219
- readonly subtle: string;
220
- readonly default: string;
221
- readonly strong: string;
222
- };
223
- readonly focus: {
224
- readonly ring: string;
225
- };
226
- readonly overlay: {
227
- readonly scrim: string;
228
- };
229
- readonly action: {
230
- readonly primary: {
231
- readonly background: string;
232
- readonly backgroundHover: string;
233
- readonly backgroundActive: string;
234
- readonly foreground: string;
235
- readonly border: string;
236
- };
237
- readonly secondary: {
238
- readonly background: string;
239
- readonly backgroundHover: string;
240
- readonly backgroundActive: string;
241
- readonly foreground: string;
242
- readonly border: string;
243
- };
244
- readonly danger: {
245
- readonly background: string;
246
- readonly backgroundHover: string;
247
- readonly backgroundActive: string;
248
- readonly foreground: string;
249
- readonly border: string;
250
- };
251
- };
252
- };
253
- };
55
+ export declare const theme: ThemeContract;
254
56
  export type ThemeUtility = ReturnType<typeof css>;
255
57
  type ThemeMixLeaf = MixinDescriptor<any, any, any>;
256
58
  type PreviousThemeMixDepth = [0, 0, 1, 2, 3, 4];
257
59
  type NestedThemeMix<value, depth extends number = 4> = depth extends 0 ? value | ReadonlyArray<value> : value | ReadonlyArray<NestedThemeMix<value, PreviousThemeMixDepth[depth]>>;
258
60
  export type ThemeMix = NestedThemeMix<ThemeMixLeaf>;
259
- export { themeVariableNames };
61
+ export {};
@@ -1,4 +1,4 @@
1
- const themeVariableNames = {
1
+ const themeVariableNamesSource = {
2
2
  space: {
3
3
  none: '--rmx-space-none',
4
4
  px: '--rmx-space-px',
@@ -112,8 +112,8 @@ const themeVariableNames = {
112
112
  },
113
113
  },
114
114
  };
115
+ export const themeVariableNames = themeVariableNamesSource;
115
116
  export const theme = createThemeContract(themeVariableNames);
116
- export { themeVariableNames };
117
117
  function createThemeContract(tree) {
118
118
  return mapTreeLeaves(tree, (variableName) => `var(${variableName})`);
119
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/theme/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/theme/contract.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,4 @@ export type GlyphValues = {
8
8
  export type GlyphContract = Readonly<Record<GlyphName, {
9
9
  id: string;
10
10
  }>>;
11
- export declare const glyphContract: Readonly<Readonly<Record<"search" | "menu" | "close" | "copy" | "open" | "alert" | "add" | "check" | "chevronDown" | "chevronVertical" | "chevronUp" | "chevronRight" | "edit" | "expand" | "info" | "spinner" | "trash", {
12
- id: string;
13
- }>>>;
11
+ export declare const glyphContract: GlyphContract;
@@ -1 +1 @@
1
- {"version":3,"file":"glyph-contract.js","sourceRoot":"","sources":["../../src/theme/glyph-contract.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK;IACL,OAAO;IACP,OAAO;IACP,aAAa;IACb,iBAAiB;IACjB,WAAW;IACX,cAAc;IACd,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;CACC,CAAA;AAYV,MAAM,uBAAuB,GAAG,WAAW,CAAA;AAE3C,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAA;AAExF,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,CAGhF,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IAElC,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,WAAW,CAChB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,IAAI;QACJ;YACE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC;SACd;KACF,CAAC,CACc,CACnB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"glyph-contract.js","sourceRoot":"","sources":["../../src/theme/glyph-contract.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK;IACL,OAAO;IACP,OAAO;IACP,aAAa;IACb,iBAAiB;IACjB,WAAW;IACX,cAAc;IACd,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;CACC,CAAA;AAYV,MAAM,uBAAuB,GAAG,WAAW,CAAA;AAE3C,MAAM,CAAC,MAAM,aAAa,GAAkB,MAAM,CAAC,MAAM,CACvD,mBAAmB,CAAC,uBAAuB,CAAC,CAC7C,CAAA;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,CAGhF,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IAElC,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,WAAW,CAChB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,IAAI;QACJ;YACE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC;SACd;KACF,CAAC,CACc,CACnB,CAAA;AACH,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare const RMX_01: import("../../contract.ts").ThemeComponent;
2
- export declare const RMX_01_GLYPHS: import("../../../components/glyph/glyph.tsx").GlyphSheetComponent;
1
+ import type { GlyphSheetComponent } from '../../../components/glyph/glyph.tsx';
2
+ import type { ThemeComponent } from '../../contract.ts';
3
+ export declare const RMX_01: ThemeComponent;
4
+ export declare const RMX_01_GLYPHS: GlyphSheetComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/presets/rmx-01/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/presets/rmx-01/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type ElementProps } from '@remix-run/ui';
2
- export declare function lockScroll(targetDocument?: Document): () => void;
3
- export declare const lockScrollOnToggle: <boundNode extends HTMLElement = HTMLElement>() => import("@remix-run/ui").MixinDescriptor<boundNode, [], ElementProps>;
1
+ import { type ElementProps, type MixinFactory } from '@remix-run/ui';
2
+ export declare function lockScroll(targetDocument?: Document | undefined): () => void;
3
+ export declare const lockScrollOnToggle: MixinFactory<HTMLElement, [], ElementProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-lock.js","sourceRoot":"","sources":["../../src/utils/scroll-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scroll-lock.js","sourceRoot":"","sources":["../../src/utils/scroll-lock.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remix-run/ui",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "UI tokens, mixins, and glyphs for Remix components",
5
5
  "author": "Ryan Florence <rpflorence@gmail.com>",
6
6
  "license": "MIT",
@@ -104,8 +104,8 @@
104
104
  "@typescript/native-preview": "7.0.0-dev.20251125.1",
105
105
  "playwright": "^1.59.0",
106
106
  "typescript": "^5.9.3",
107
- "@remix-run/assert": "0.2.0",
108
- "@remix-run/test": "0.4.0"
107
+ "@remix-run/assert": "0.2.1",
108
+ "@remix-run/test": "0.4.1"
109
109
  },
110
110
  "dependencies": {
111
111
  "@types/dom-navigation": "^1.0.7"
@@ -52,12 +52,13 @@ function Toast() {
52
52
  `animateExit` keeps a removed keyed element in the DOM long enough to animate from its natural styles to the provided keyframe.
53
53
 
54
54
  ```tsx
55
+ import type { Handle } from 'remix/ui'
55
56
  import { animateExit } from 'remix/ui/animation'
56
57
 
57
- function Item({ id, label }: { id: string; label: string }) {
58
+ function Item(handle: Handle<{ id: string; label: string }>) {
58
59
  return () => (
59
60
  <li
60
- key={id}
61
+ key={handle.props.id}
61
62
  mix={[
62
63
  animateExit({
63
64
  opacity: 0,
@@ -67,7 +68,7 @@ function Item({ id, label }: { id: string; label: string }) {
67
68
  }),
68
69
  ]}
69
70
  >
70
- {label}
71
+ {handle.props.label}
71
72
  </li>
72
73
  )
73
74
  }
@@ -105,12 +106,13 @@ Exit animations can reclaim a removed keyed node if the same keyed element is re
105
106
  `animateLayout` animates layout changes with a FLIP-style transform projection. Use it on elements whose position or size can change between renders.
106
107
 
107
108
  ```tsx
109
+ import type { Handle } from 'remix/ui'
108
110
  import { animateLayout, spring } from 'remix/ui/animation'
109
111
 
110
- function Card({ expanded }: { expanded: boolean }) {
112
+ function Card(handle: Handle<{ expanded: boolean }>) {
111
113
  return () => (
112
114
  <section
113
- class={expanded ? 'card expanded' : 'card'}
115
+ class={handle.props.expanded ? 'card expanded' : 'card'}
114
116
  mix={[
115
117
  animateLayout({
116
118
  ...spring('smooth'),
@@ -38,6 +38,17 @@ export interface SpringIterator extends IterableIterator<number> {
38
38
  toString(): string
39
39
  }
40
40
 
41
+ export interface SpringFunction {
42
+ (preset: SpringPreset, overrides?: Omit<SpringOptions, 'bounce'>): SpringIterator
43
+ (options?: SpringOptions): SpringIterator
44
+ transition(
45
+ property: string | string[],
46
+ presetOrOptions?: SpringPreset | SpringOptions,
47
+ overrides?: Omit<SpringOptions, 'bounce'>,
48
+ ): string
49
+ presets: Record<SpringPreset, { duration: number; bounce: number }>
50
+ }
51
+
41
52
  const presets: Record<SpringPreset, { duration: number; bounce: number }> = {
42
53
  smooth: { duration: 400, bounce: -0.3 },
43
54
  snappy: { duration: 200, bounce: 0 },
@@ -74,7 +85,7 @@ const frameMs = 1000 / 60 // ~16.67ms per frame
74
85
  * @param overrides Optional preset overrides.
75
86
  * @returns A spring iterator.
76
87
  */
77
- export function spring(
88
+ function createSpring(
78
89
  preset: SpringPreset,
79
90
  overrides?: Omit<SpringOptions, 'bounce'>,
80
91
  ): SpringIterator
@@ -84,8 +95,8 @@ export function spring(
84
95
  * @param options Spring parameters.
85
96
  * @returns A spring iterator.
86
97
  */
87
- export function spring(options?: SpringOptions): SpringIterator
88
- export function spring(
98
+ function createSpring(options?: SpringOptions): SpringIterator
99
+ function createSpring(
89
100
  presetOrOptions?: SpringPreset | SpringOptions,
90
101
  overrides?: Omit<SpringOptions, 'bounce'>,
91
102
  ): SpringIterator {
@@ -119,23 +130,24 @@ export function spring(
119
130
  return iter as unknown as SpringIterator
120
131
  }
121
132
 
122
- // Transition helper for CSS transition property
123
- spring.transition = function transition(
133
+ function transition(
124
134
  property: string | string[],
125
135
  presetOrOptions?: SpringPreset | SpringOptions,
126
136
  overrides?: Omit<SpringOptions, 'bounce'>,
127
137
  ): string {
128
138
  let s =
129
139
  typeof presetOrOptions === 'string'
130
- ? spring(presetOrOptions, overrides)
131
- : spring(presetOrOptions)
140
+ ? createSpring(presetOrOptions, overrides)
141
+ : createSpring(presetOrOptions)
132
142
 
133
143
  let properties = Array.isArray(property) ? property : [property]
134
144
  return properties.map((p) => `${p} ${s}`).join(', ')
135
145
  }
136
146
 
137
- // Access preset defaults
138
- spring.presets = presets
147
+ export const spring: SpringFunction = Object.assign(createSpring, {
148
+ transition,
149
+ presets,
150
+ })
139
151
 
140
152
  function resolveOptions(
141
153
  presetOrOptions?: SpringPreset | SpringOptions,
@@ -230,7 +230,7 @@ function isMultipleProps(props: AccordionProps | null): props is AccordionMultip
230
230
  return props?.type === 'multiple'
231
231
  }
232
232
 
233
- function AccordionImpl(handle: Handle<AccordionProps, AccordionContext>) {
233
+ function AccordionImpl(handle: Handle<AccordionProps, AccordionContext>): () => RemixNode {
234
234
  let rootNode: HTMLElement | null = null
235
235
  let registeredItems: RegisteredItem[] = []
236
236
  let uncontrolledSingleValue: string | null = null
@@ -418,13 +418,15 @@ function AccordionImpl(handle: Handle<AccordionProps, AccordionContext>) {
418
418
  export function onAccordionChange<target extends HTMLElement>(
419
419
  handler: AccordionChangeHandler<target>,
420
420
  captureBoolean?: boolean,
421
- ) {
421
+ ): ReturnType<typeof on<target, typeof ACCORDION_CHANGE_EVENT>> {
422
422
  return on(ACCORDION_CHANGE_EVENT, handler, captureBoolean)
423
423
  }
424
424
 
425
425
  export const Accordion = AccordionImpl
426
426
 
427
- export function AccordionItem(handle: Handle<AccordionItemProps, AccordionItemContext>) {
427
+ export function AccordionItem(
428
+ handle: Handle<AccordionItemProps, AccordionItemContext>,
429
+ ): () => RemixNode {
428
430
  let triggerNode: HTMLButtonElement | null = null
429
431
  let triggerId = `${handle.id}-trigger`
430
432
  let panelId = `${handle.id}-panel`
@@ -468,7 +470,7 @@ export function AccordionItem(handle: Handle<AccordionItemProps, AccordionItemCo
468
470
  }
469
471
  }
470
472
 
471
- export function AccordionTrigger(handle: Handle<AccordionTriggerProps>) {
473
+ export function AccordionTrigger(handle: Handle<AccordionTriggerProps>): () => RemixNode {
472
474
  return () => {
473
475
  let accordion = handle.context.get(Accordion)
474
476
  let item = handle.context.get(AccordionItem)
@@ -539,7 +541,7 @@ export function AccordionTrigger(handle: Handle<AccordionTriggerProps>) {
539
541
  }
540
542
  }
541
543
 
542
- export function AccordionContent(handle: Handle<AccordionContentProps>) {
544
+ export function AccordionContent(handle: Handle<AccordionContentProps>): () => RemixNode {
543
545
  return () => {
544
546
  let item = handle.context.get(AccordionItem)
545
547
  let { children, mix, ...panelProps } = handle.props
@@ -643,7 +643,7 @@ export function anchor(
643
643
  floating: HTMLElement,
644
644
  anchorElement: HTMLElement,
645
645
  options: AnchorOptions = {},
646
- ) {
646
+ ): () => void {
647
647
  let lastAnchorRect: DOMRect
648
648
  let lastFloatingDimensions: FloatingDimensions
649
649
 
@@ -72,7 +72,7 @@ const textCss = css({
72
72
  whiteSpace: 'nowrap',
73
73
  })
74
74
 
75
- export function Breadcrumbs(handle: Handle<BreadcrumbsProps>) {
75
+ export function Breadcrumbs(handle: Handle<BreadcrumbsProps>): () => RemixNode {
76
76
  return () => {
77
77
  let { 'aria-label': ariaLabel, items, separator, mix, ...navProps } = handle.props
78
78
  let currentIndex = items.findIndex((item) => item.current)
@@ -1,5 +1,13 @@
1
1
  import { attrs, createElement, createMixin, css } from '@remix-run/ui'
2
- import type { CSSMixinDescriptor, ElementProps, Handle, Props, RemixNode } from '@remix-run/ui'
2
+ import type {
3
+ CSSMixinDescriptor,
4
+ ElementProps,
5
+ Handle,
6
+ MixinDescriptor,
7
+ MixinFactory,
8
+ Props,
9
+ RemixNode,
10
+ } from '@remix-run/ui'
3
11
 
4
12
  import { theme } from '../../theme/theme.ts'
5
13
 
@@ -74,22 +82,26 @@ const buttonIconCss: CSSMixinDescriptor = css({
74
82
  },
75
83
  })
76
84
 
77
- const buttonIconAttrsCss = attrs({ 'aria-hidden': true })
85
+ const buttonIconAttrsCss: MixinDescriptor<Element, [Partial<ElementProps>], ElementProps> = attrs({
86
+ 'aria-hidden': true,
87
+ })
78
88
 
79
- const buttonDefaultsMixin = createMixin<Element, [], ElementProps>(
80
- (handle, hostType) => (props) => {
81
- if (hostType !== 'button' || props.type !== undefined) {
82
- return handle.element
83
- }
89
+ const buttonDefaultsMixin: MixinFactory<Element, [], ElementProps> = createMixin<
90
+ Element,
91
+ [],
92
+ ElementProps
93
+ >((handle, hostType) => (props) => {
94
+ if (hostType !== 'button' || props.type !== undefined) {
95
+ return handle.element
96
+ }
84
97
 
85
- return createElement(handle.element as unknown as string, {
86
- ...props,
87
- type: 'button',
88
- })
89
- },
90
- )
98
+ return createElement(handle.element as unknown as string, {
99
+ ...props,
100
+ type: 'button',
101
+ })
102
+ })
91
103
 
92
- const buttonDefaultsCss = buttonDefaultsMixin()
104
+ const buttonDefaultsCss: MixinDescriptor<Element, [], ElementProps> = buttonDefaultsMixin()
93
105
 
94
106
  /**
95
107
  * Base button styling with the default `type="button"` behavior for `<button>`
@@ -121,7 +133,7 @@ export const labelStyle = buttonLabelCss
121
133
  *
122
134
  * @category mixin
123
135
  */
124
- export const primaryStyle = createButtonCss(theme.colors.action.primary)
136
+ export const primaryStyle: CSSMixinDescriptor = createButtonCss(theme.colors.action.primary)
125
137
 
126
138
  /**
127
139
  * Secondary visual treatment for buttons. Combine with {@link baseStyle} when
@@ -129,7 +141,7 @@ export const primaryStyle = createButtonCss(theme.colors.action.primary)
129
141
  *
130
142
  * @category mixin
131
143
  */
132
- export const secondaryStyle = createButtonCss(theme.colors.action.secondary)
144
+ export const secondaryStyle: CSSMixinDescriptor = createButtonCss(theme.colors.action.secondary)
133
145
 
134
146
  /**
135
147
  * Ghost visual treatment for buttons — transparent background with a hover
@@ -146,7 +158,7 @@ export const ghostStyle = ghostButtonToneCss
146
158
  *
147
159
  * @category mixin
148
160
  */
149
- export const dangerStyle = createButtonCss(theme.colors.action.danger)
161
+ export const dangerStyle: CSSMixinDescriptor = createButtonCss(theme.colors.action.danger)
150
162
 
151
163
  const toneStyleByTone = {
152
164
  primary: primaryStyle,
@@ -203,7 +215,7 @@ export type ButtonProps = Omit<Props<'button'>, 'children'> & {
203
215
  * </Button>
204
216
  * ```
205
217
  */
206
- export function Button(handle: Handle<ButtonProps>) {
218
+ export function Button(handle: Handle<ButtonProps>): () => RemixNode {
207
219
  return () => {
208
220
  let { children, endIcon, mix, startIcon, tone = 'secondary', ...buttonProps } = handle.props
209
221