@yarcl/react 0.1.0 → 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 (223) hide show
  1. package/README.md +14 -2
  2. package/{src/apply.ts → dist/apply.d.ts} +4 -23
  3. package/dist/apply.js +37 -0
  4. package/dist/classes.d.ts +13 -0
  5. package/dist/classes.js +22 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +58 -0
  8. package/dist/color.js +49 -32
  9. package/dist/components/Accordion.d.ts +96 -0
  10. package/dist/components/Accordion.js +148 -0
  11. package/dist/components/Alert.d.ts +60 -0
  12. package/dist/components/Alert.js +61 -0
  13. package/dist/components/Avatar.d.ts +100 -0
  14. package/dist/components/Avatar.js +89 -0
  15. package/dist/components/Badge.d.ts +44 -0
  16. package/dist/components/Badge.js +43 -0
  17. package/dist/components/Breadcrumb.d.ts +77 -0
  18. package/dist/components/Breadcrumb.js +126 -0
  19. package/dist/components/Button.d.ts +18 -0
  20. package/dist/components/Button.js +33 -0
  21. package/dist/components/ButtonGroup.d.ts +29 -0
  22. package/dist/components/ButtonGroup.js +37 -0
  23. package/dist/components/Card.d.ts +36 -0
  24. package/dist/components/Card.js +26 -0
  25. package/dist/components/Checkbox.d.ts +28 -0
  26. package/dist/components/Checkbox.js +38 -0
  27. package/dist/components/Combobox.d.ts +75 -0
  28. package/dist/components/Combobox.js +362 -0
  29. package/dist/components/CommandPalette.d.ts +92 -0
  30. package/dist/components/CommandPalette.js +293 -0
  31. package/dist/components/DatePicker.d.ts +157 -0
  32. package/dist/components/DatePicker.js +230 -0
  33. package/dist/components/Dialog.d.ts +25 -0
  34. package/dist/components/Dialog.js +29 -0
  35. package/dist/components/Divider.d.ts +23 -0
  36. package/dist/components/Divider.js +25 -0
  37. package/dist/components/Drawer.d.ts +21 -0
  38. package/dist/components/Drawer.js +25 -0
  39. package/dist/components/EmptyState.d.ts +51 -0
  40. package/dist/components/EmptyState.js +47 -0
  41. package/dist/components/Field.d.ts +27 -0
  42. package/dist/components/Field.js +59 -0
  43. package/dist/components/Heading.d.ts +26 -0
  44. package/dist/components/Heading.js +25 -0
  45. package/dist/components/HoverCard.d.ts +47 -0
  46. package/dist/components/HoverCard.js +53 -0
  47. package/dist/components/IconButton.d.ts +19 -0
  48. package/dist/components/IconButton.js +32 -0
  49. package/dist/components/Inline.d.ts +21 -0
  50. package/dist/components/Inline.js +24 -0
  51. package/dist/components/Input.d.ts +19 -0
  52. package/dist/components/Input.js +25 -0
  53. package/dist/components/Label.d.ts +46 -0
  54. package/dist/components/Label.js +33 -0
  55. package/dist/components/Link.d.ts +27 -0
  56. package/dist/components/Link.js +26 -0
  57. package/dist/components/Menu.d.ts +73 -0
  58. package/dist/components/Menu.js +143 -0
  59. package/dist/components/Modal.d.ts +45 -0
  60. package/dist/components/Modal.js +110 -0
  61. package/dist/components/NumberInput.d.ts +49 -0
  62. package/dist/components/NumberInput.js +130 -0
  63. package/dist/components/Pagination.d.ts +86 -0
  64. package/dist/components/Pagination.js +119 -0
  65. package/dist/components/Popover.d.ts +72 -0
  66. package/dist/components/Popover.js +87 -0
  67. package/dist/components/Progress.d.ts +60 -0
  68. package/dist/components/Progress.js +59 -0
  69. package/dist/components/Radio.d.ts +32 -0
  70. package/dist/components/Radio.js +47 -0
  71. package/dist/components/RadioGroup.d.ts +57 -0
  72. package/dist/components/RadioGroup.js +68 -0
  73. package/dist/components/Select.d.ts +47 -0
  74. package/dist/components/Select.js +138 -0
  75. package/dist/components/Skeleton.d.ts +46 -0
  76. package/dist/components/Skeleton.js +40 -0
  77. package/dist/components/Slider.d.ts +126 -0
  78. package/dist/components/Slider.js +166 -0
  79. package/dist/components/Spinner.d.ts +23 -0
  80. package/dist/components/Spinner.js +23 -0
  81. package/dist/components/Stack.d.ts +35 -0
  82. package/dist/components/Stack.js +24 -0
  83. package/dist/components/Switch.d.ts +27 -0
  84. package/dist/components/Switch.js +33 -0
  85. package/dist/components/Table.d.ts +71 -0
  86. package/dist/components/Table.js +61 -0
  87. package/dist/components/Tabs.d.ts +66 -0
  88. package/dist/components/Tabs.js +109 -0
  89. package/dist/components/Text.d.ts +32 -0
  90. package/dist/components/Text.js +28 -0
  91. package/dist/components/Textarea.d.ts +15 -0
  92. package/dist/components/Textarea.js +24 -0
  93. package/dist/components/Toast.d.ts +90 -0
  94. package/dist/components/Toast.js +156 -0
  95. package/dist/components/ToggleGroup.d.ts +79 -0
  96. package/dist/components/ToggleGroup.js +101 -0
  97. package/dist/components/Tooltip.d.ts +46 -0
  98. package/dist/components/Tooltip.js +62 -0
  99. package/dist/components/VisuallyHidden.d.ts +18 -0
  100. package/dist/components/VisuallyHidden.js +22 -0
  101. package/dist/contrast.d.ts +32 -0
  102. package/dist/css.d.ts +2 -2
  103. package/dist/css.js +193 -157
  104. package/dist/define.d.ts +40 -15
  105. package/dist/define.js +30 -27
  106. package/dist/demo.d.ts +2 -0
  107. package/dist/demo.js +2 -0
  108. package/dist/esbuild.cjs +5 -0
  109. package/dist/esbuild.d.ts +4 -0
  110. package/dist/esbuild.js +6 -0
  111. package/dist/field-context.d.ts +16 -0
  112. package/dist/field-context.js +17 -0
  113. package/dist/floating.d.ts +12 -0
  114. package/dist/floating.js +52 -0
  115. package/dist/hooks.d.ts +1 -0
  116. package/dist/hooks.js +12 -0
  117. package/{src/index.ts → dist/index.d.ts} +11 -33
  118. package/dist/index.js +50 -0
  119. package/dist/init.d.ts +18 -0
  120. package/dist/init.js +224 -0
  121. package/dist/plugin.d.ts +10 -26
  122. package/dist/plugin.js +152 -78
  123. package/dist/reference/DemoYarcl.d.ts +12 -0
  124. package/dist/reference/DemoYarcl.js +312 -0
  125. package/dist/reference/DesignReference.d.ts +24 -0
  126. package/dist/reference/DesignReference.js +403 -0
  127. package/dist/reference/index.js +2 -0
  128. package/dist/rollup.cjs +5 -0
  129. package/dist/rollup.d.ts +4 -0
  130. package/dist/rollup.js +6 -0
  131. package/dist/rspack.cjs +5 -0
  132. package/dist/rspack.d.ts +4 -0
  133. package/dist/rspack.js +6 -0
  134. package/dist/runtime.d.ts +13 -0
  135. package/dist/runtime.js +30 -0
  136. package/dist/setup.d.ts +6 -0
  137. package/dist/setup.js +33 -0
  138. package/{src → dist}/styles.css +224 -106
  139. package/dist/themes/bloom.d.ts +295 -0
  140. package/dist/themes/bloom.js +202 -0
  141. package/dist/themes/brutalist.d.ts +277 -0
  142. package/dist/themes/brutalist.js +199 -0
  143. package/dist/themes/compact.d.ts +274 -0
  144. package/dist/themes/compact.js +200 -0
  145. package/dist/themes/contract.d.ts +23 -0
  146. package/dist/themes/editorial.d.ts +277 -0
  147. package/dist/themes/editorial.js +183 -0
  148. package/dist/themes/index.d.ts +1425 -0
  149. package/dist/themes/index.js +45 -0
  150. package/{src/types.ts → dist/types.d.ts} +40 -37
  151. package/dist/vite.cjs +5 -0
  152. package/dist/vite.d.ts +4 -0
  153. package/dist/vite.js +6 -0
  154. package/dist/webpack.cjs +5 -0
  155. package/dist/webpack.d.ts +4 -0
  156. package/dist/webpack.js +6 -0
  157. package/dist/yarcl.config.d.ts +276 -0
  158. package/dist/yarcl.config.js +273 -0
  159. package/package.json +69 -17
  160. package/src/classes.ts +0 -23
  161. package/src/color.ts +0 -48
  162. package/src/components/Accordion.tsx +0 -274
  163. package/src/components/Alert.tsx +0 -85
  164. package/src/components/Badge.tsx +0 -79
  165. package/src/components/Breadcrumb.tsx +0 -239
  166. package/src/components/Button.tsx +0 -58
  167. package/src/components/ButtonGroup.tsx +0 -61
  168. package/src/components/Card.tsx +0 -50
  169. package/src/components/Checkbox.tsx +0 -49
  170. package/src/components/Combobox.tsx +0 -522
  171. package/src/components/CommandPalette.tsx +0 -452
  172. package/src/components/DatePicker.tsx +0 -432
  173. package/src/components/Dialog.tsx +0 -39
  174. package/src/components/Divider.tsx +0 -34
  175. package/src/components/Drawer.tsx +0 -31
  176. package/src/components/Field.tsx +0 -61
  177. package/src/components/Heading.tsx +0 -40
  178. package/src/components/HoverCard.tsx +0 -108
  179. package/src/components/IconButton.tsx +0 -59
  180. package/src/components/Inline.tsx +0 -42
  181. package/src/components/Input.tsx +0 -28
  182. package/src/components/Label.tsx +0 -58
  183. package/src/components/Link.tsx +0 -41
  184. package/src/components/Menu.tsx +0 -207
  185. package/src/components/Modal.tsx +0 -164
  186. package/src/components/NumberInput.tsx +0 -208
  187. package/src/components/Pagination.tsx +0 -227
  188. package/src/components/Popover.tsx +0 -140
  189. package/src/components/Progress.tsx +0 -122
  190. package/src/components/Radio.tsx +0 -59
  191. package/src/components/RadioGroup.tsx +0 -114
  192. package/src/components/Select.tsx +0 -197
  193. package/src/components/Skeleton.tsx +0 -95
  194. package/src/components/Slider.tsx +0 -315
  195. package/src/components/Spinner.tsx +0 -38
  196. package/src/components/Stack.tsx +0 -57
  197. package/src/components/Switch.tsx +0 -42
  198. package/src/components/Table.tsx +0 -99
  199. package/src/components/Tabs.tsx +0 -159
  200. package/src/components/Text.tsx +0 -67
  201. package/src/components/Textarea.tsx +0 -26
  202. package/src/components/Toast.tsx +0 -190
  203. package/src/components/ToggleGroup.tsx +0 -227
  204. package/src/components/Tooltip.tsx +0 -78
  205. package/src/contrast.ts +0 -82
  206. package/src/css.ts +0 -228
  207. package/src/define.check.ts +0 -259
  208. package/src/define.ts +0 -379
  209. package/src/field-context.ts +0 -31
  210. package/src/floating.tsx +0 -61
  211. package/src/hooks.ts +0 -19
  212. package/src/plugin.ts +0 -94
  213. package/src/reference/DesignReference.tsx +0 -374
  214. package/src/runtime.ts +0 -38
  215. package/src/themes/bloom.ts +0 -72
  216. package/src/themes/brutalist.ts +0 -63
  217. package/src/themes/compact.ts +0 -63
  218. package/src/themes/contract.ts +0 -24
  219. package/src/themes/editorial.ts +0 -55
  220. package/src/themes/index.ts +0 -47
  221. package/src/yarcl.config.ts +0 -104
  222. /package/{src/reference/index.ts → dist/reference/index.d.ts} +0 -0
  223. /package/{src → dist}/reference/reference.css +0 -0
@@ -1,55 +0,0 @@
1
- import { defineConfig } from '../define';
2
- import defaults from '../yarcl.config';
3
- import type { ThemeContract } from './contract';
4
-
5
- /** Calm and considered: terracotta on cream, light grotesque type, square corners, flat surfaces, generous spacing. */
6
- export const editorial = defineConfig({
7
- ...defaults,
8
- colors: {
9
- primary: { light: '#9a3412', dark: '#fb923c' },
10
- neutral: { light: '#57534e', dark: '#a8a29e' },
11
- success: { light: '#3f6212', dark: '#a3e635' },
12
- warning: { light: '#a16207', dark: '#fcd34d' },
13
- danger: { light: '#9f1239', dark: '#fda4af' },
14
- info: { light: '#1e3a8a', dark: '#93c5fd' },
15
- },
16
- neutrals: {
17
- bg: { light: '#f6f1e7', dark: '#1c1917' },
18
- surface: { light: '#fffdf8', dark: '#262220' },
19
- text: { light: '#1c1917', dark: '#f5efe3' },
20
- muted: { light: '#57534e', dark: '#aaa39b' },
21
- border: { light: '#d6cdbd', dark: '#48413b' },
22
- },
23
- sizes: {
24
- xs: { height: '1.75rem', paddingX: '0.75rem', fontSize: '0.8125rem', iconSize: '0.75rem' },
25
- sm: { height: '2rem', paddingX: '0.875rem', fontSize: '0.875rem', iconSize: '0.875rem' },
26
- md: { height: '2.625rem', paddingX: '1.375rem', fontSize: '1rem', iconSize: '1rem' },
27
- lg: { height: '3.25rem', paddingX: '1.75rem', fontSize: '1.0625rem', iconSize: '1.25rem' },
28
- xl: { height: '3.875rem', paddingX: '2.125rem', fontSize: '1.1875rem', iconSize: '1.375rem' },
29
- },
30
- radii: { square: '0', sm: '1px', md: '2px', lg: '3px', xl: '4px', rounded: '9999px' },
31
- spacing: { xs: '0.375rem', sm: '0.75rem', md: '1.25rem', lg: '2rem', xl: '3rem' },
32
- shadows: {
33
- sm: 'none',
34
- md: '0 18px 40px -18px light-dark(rgb(68 44 20 / 0.35), rgb(0 0 0 / 0.75))',
35
- lg: '0 30px 60px -20px light-dark(rgb(68 44 20 / 0.4), rgb(0 0 0 / 0.8))',
36
- },
37
- typography: {
38
- families: {
39
- sans: '"Helvetica Neue", Helvetica, "Inter", "Segoe UI", Arial, sans-serif',
40
- mono: 'ui-monospace, "SF Mono", Menlo, Consolas, monospace',
41
- },
42
- styles: {
43
- display: { family: 'sans', size: '2.75rem', weight: 300, lineHeight: 1.05, letterSpacing: '-0.03em' },
44
- heading: { family: 'sans', size: '1.75rem', weight: 300, lineHeight: 1.2, letterSpacing: '-0.015em' },
45
- subheading: { family: 'sans', size: '1.25rem', weight: 600, lineHeight: 1.3 },
46
- body: { family: 'sans', size: '1rem', weight: 400, lineHeight: 1.6 },
47
- caption: { family: 'sans', size: '0.875rem', weight: 400, lineHeight: 1.5 },
48
- code: { family: 'mono', size: '0.875rem', weight: 400, lineHeight: 1.5 },
49
- label: { family: 'sans', size: '0.8125rem', weight: 700, lineHeight: 1.4, letterSpacing: '0.08em' },
50
- },
51
- headings: { h1: 'display', h2: 'heading', h3: 'heading', h4: 'subheading', h5: 'subheading', h6: 'label' },
52
- },
53
- focusRing: { width: '3px', offset: '3px', color: 'primary', style: 'double' },
54
- defaults: { ...defaults.defaults, radius: 'square', padding: 'lg', gap: 'md', floatingShadow: 'md' },
55
- }) satisfies ThemeContract;
@@ -1,47 +0,0 @@
1
- import defaults from '../yarcl.config';
2
- import { brutalist } from './brutalist';
3
- import { compact } from './compact';
4
- import { editorial } from './editorial';
5
- import { bloom } from './bloom';
6
-
7
- export type { ThemeContract } from './contract';
8
- export { brutalist, compact, editorial, bloom };
9
-
10
- /**
11
- * Every bundled theme, keyed by id, including the library defaults as `yarcl`.
12
- * All of them satisfy {@link ThemeContract}, so they're interchangeable.
13
- *
14
- * @example
15
- * ```ts
16
- * // src/yarcl.config.ts: use a theme as is
17
- * export { editorial as default } from '@yarcl/react/themes';
18
- * ```
19
- *
20
- * @example
21
- * ```ts
22
- * // or start from one and change what you need
23
- * import { defineConfig } from '@yarcl/react/define';
24
- * import { bloom } from '@yarcl/react/themes';
25
- *
26
- * export default defineConfig({
27
- * ...bloom,
28
- * colors: { ...bloom.colors, primary: { light: '#db2777', dark: '#f9a8d4' } },
29
- * });
30
- * ```
31
- */
32
- export const themes = {
33
- yarcl: defaults,
34
- brutalist,
35
- bloom,
36
- compact,
37
- editorial,
38
- };
39
-
40
- /** Display names of the bundled themes. */
41
- export const themeNames: Record<keyof typeof themes, string> = {
42
- yarcl: 'yarcl (default)',
43
- brutalist: 'Brutalist',
44
- bloom: 'Bloom',
45
- compact: 'Compact',
46
- editorial: 'Editorial',
47
- };
@@ -1,104 +0,0 @@
1
- import { defineConfig } from './define';
2
-
3
- /** The library's default design system, used when the consumer provides no config. */
4
- export default defineConfig({
5
- colors: {
6
- primary: { light: '#2d4bb8', dark: '#8aa2ff' },
7
- neutral: { light: '#4b5263', dark: '#a3a9b8' },
8
- success: { light: '#15803d', dark: '#4ade80' },
9
- warning: { light: '#b45309', dark: '#fbbf24' },
10
- danger: { light: '#dc2626', dark: '#f87171' },
11
- info: { light: '#0369a1', dark: '#38bdf8' },
12
- },
13
- neutrals: {
14
- bg: { light: '#f8f9fb', dark: '#0f1115' },
15
- surface: { light: '#ffffff', dark: '#181b21' },
16
- text: { light: '#101828', dark: '#e6e8ec' },
17
- muted: { light: '#667085', dark: '#8b93a1' },
18
- border: { light: '#d0d5dd', dark: '#2e333d' },
19
- },
20
- sizes: {
21
- xs: { height: '1.75rem', paddingX: '0.625rem', fontSize: '0.75rem', iconSize: '0.75rem' },
22
- sm: { height: '2rem', paddingX: '0.75rem', fontSize: '0.8125rem', iconSize: '0.875rem' },
23
- md: { height: '2.5rem', paddingX: '1rem', fontSize: '0.875rem', iconSize: '1rem' },
24
- lg: { height: '3rem', paddingX: '1.25rem', fontSize: '1rem', iconSize: '1.25rem' },
25
- xl: { height: '3.5rem', paddingX: '1.5rem', fontSize: '1.125rem', iconSize: '1.5rem' },
26
- },
27
- radii: {
28
- square: '0',
29
- sm: '0.25rem',
30
- md: '0.375rem',
31
- lg: '0.5rem',
32
- xl: '0.75rem',
33
- rounded: '9999px',
34
- },
35
- variants: {
36
- solid: { background: 'fill', border: 'color', text: 'on' },
37
- soft: { background: 'tint', border: 'none', text: 'color' },
38
- outline: { background: 'none', border: 'color', text: 'color' },
39
- ghost: { background: 'none', border: 'none', text: 'color' },
40
- },
41
- spacing: {
42
- xs: '0.25rem',
43
- sm: '0.5rem',
44
- md: '1rem',
45
- lg: '1.5rem',
46
- xl: '2rem',
47
- },
48
- shadows: {
49
- sm: '0 1px 2px light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.5))',
50
- md: '0 4px 12px light-dark(rgb(0 0 0 / 0.12), rgb(0 0 0 / 0.6))',
51
- lg: '0 12px 32px light-dark(rgb(0 0 0 / 0.18), rgb(0 0 0 / 0.7))',
52
- },
53
- density: {
54
- compact: { paddingX: '0.5rem', paddingY: '0.25rem', fontSize: '0.8125rem' },
55
- comfortable: { paddingX: '0.75rem', paddingY: '0.625rem', fontSize: '0.875rem' },
56
- },
57
- modalSizes: {
58
- sm: '24rem',
59
- md: '32rem',
60
- lg: '48rem',
61
- xl: '64rem',
62
- full: '100vw',
63
- },
64
- typography: {
65
- families: {
66
- sans: 'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
67
- mono: 'ui-monospace, "SF Mono", Menlo, Consolas, monospace',
68
- },
69
- styles: {
70
- display: { family: 'sans', size: '2.25rem', weight: 800, lineHeight: 1.1, letterSpacing: '-0.02em' },
71
- heading: { family: 'sans', size: '1.5rem', weight: 700, lineHeight: 1.25, letterSpacing: '-0.01em' },
72
- subheading: { family: 'sans', size: '1.125rem', weight: 600, lineHeight: 1.35 },
73
- body: { family: 'sans', size: '1rem', weight: 400, lineHeight: 1.5 },
74
- caption: { family: 'sans', size: '0.8125rem', weight: 400, lineHeight: 1.4 },
75
- code: { family: 'mono', size: '0.875rem', weight: 400, lineHeight: 1.5 },
76
- label: { family: 'sans', size: '0.875rem', weight: 500, lineHeight: 1.4 },
77
- },
78
- headings: { h1: 'display', h2: 'heading', h3: 'subheading', h4: 'subheading', h5: 'label', h6: 'label' },
79
- },
80
- zIndex: { dropdown: 1000, tooltip: 1100, dialog: 1200, toast: 1300 },
81
- motion: { fast: '120ms', base: '200ms', easing: 'cubic-bezier(0.2, 0, 0, 1)' },
82
- timing: { tooltipDelay: 400, hoverOpenDelay: 300, hoverCloseDelay: 150, toastDuration: 5000 },
83
- borders: { width: '1px' },
84
- focusRing: { width: '2px', offset: '2px', color: 'primary' },
85
- defaults: {
86
- size: 'md',
87
- radius: 'md',
88
- color: 'primary',
89
- variant: 'solid',
90
- errorColor: 'danger',
91
- textStyle: 'body',
92
- labelStyle: 'label',
93
- helperStyle: 'caption',
94
- gap: 'md',
95
- padding: 'lg',
96
- floatingShadow: 'md',
97
- density: 'comfortable',
98
- softVariant: 'soft',
99
- modalSize: 'md',
100
- },
101
- components: {
102
- Drawer: { size: 'sm' },
103
- },
104
- });
File without changes