ropav 0.0.2 → 0.0.4

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 (74) hide show
  1. package/README.md +32 -3
  2. package/dist/base.css +153 -77
  3. package/dist/button.css +276 -32
  4. package/dist/button.js +40 -19
  5. package/dist/button.js.map +1 -1
  6. package/dist/checkbox.css +127 -19
  7. package/dist/checkbox.js +57 -44
  8. package/dist/checkbox.js.map +1 -1
  9. package/dist/components/button/button.d.ts +2 -2
  10. package/dist/components/button/index.d.ts +1 -1
  11. package/dist/components/button/types.d.ts +8 -1
  12. package/dist/components/checkbox/index.d.ts +1 -1
  13. package/dist/components/checkbox/types.d.ts +8 -0
  14. package/dist/components/input/index.d.ts +1 -1
  15. package/dist/components/input/input.d.ts +5 -1
  16. package/dist/components/input/types.d.ts +5 -0
  17. package/dist/components/radio/index.d.ts +1 -1
  18. package/dist/components/radio/types.d.ts +12 -0
  19. package/dist/components/select/types.d.ts +3 -0
  20. package/dist/components/select/useSelect.d.ts +2 -0
  21. package/dist/components/switch/index.d.ts +1 -1
  22. package/dist/components/switch/types.d.ts +4 -0
  23. package/dist/components/textarea/index.d.ts +1 -1
  24. package/dist/components/textarea/types.d.ts +5 -0
  25. package/dist/components/textarea/useTextarea.d.ts +1 -0
  26. package/dist/index.d.ts +0 -2
  27. package/dist/index.js +2 -4
  28. package/dist/input.css +91 -15
  29. package/dist/input.js +66 -23
  30. package/dist/input.js.map +1 -1
  31. package/dist/radio.css +84 -16
  32. package/dist/radio.js +35 -8
  33. package/dist/radio.js.map +1 -1
  34. package/dist/select.css +97 -32
  35. package/dist/select.js +128 -88
  36. package/dist/select.js.map +1 -1
  37. package/dist/switch.css +75 -20
  38. package/dist/switch.js +8 -4
  39. package/dist/switch.js.map +1 -1
  40. package/dist/textarea.css +84 -14
  41. package/dist/textarea.js +33 -5
  42. package/dist/textarea.js.map +1 -1
  43. package/dist/useControlState.js +4 -0
  44. package/dist/useControlState.js.map +1 -1
  45. package/package.json +11 -10
  46. package/src/styles/_mixins.scss +21 -11
  47. package/src/styles/_tokens.scss +168 -96
  48. package/src/styles/_variables.scss +30 -28
  49. package/dist/components/_internal/icons/CheckIcon.d.ts +0 -18
  50. package/dist/components/_internal/icons/ChevronDownIcon.d.ts +0 -18
  51. package/dist/components/_internal/icons/MinusIcon.d.ts +0 -18
  52. package/dist/components/_internal/icons/index.d.ts +0 -3
  53. package/dist/components/_internal/optionList.d.ts +0 -9
  54. package/dist/components/tabs/index.d.ts +0 -5
  55. package/dist/components/tabs/index.js +0 -2
  56. package/dist/components/tabs/tab-panel.d.ts +0 -21
  57. package/dist/components/tabs/tabs-list.d.ts +0 -20
  58. package/dist/components/tabs/tabs-trigger.d.ts +0 -21
  59. package/dist/components/tabs/tabs.d.ts +0 -23
  60. package/dist/components/tabs/types.d.ts +0 -18
  61. package/dist/components/tabs/useTabs.d.ts +0 -19
  62. package/dist/components/tooltip/index.d.ts +0 -2
  63. package/dist/components/tooltip/index.js +0 -2
  64. package/dist/components/tooltip/tooltip.d.ts +0 -23
  65. package/dist/components/tooltip/types.d.ts +0 -5
  66. package/dist/components/tooltip/useTooltip.d.ts +0 -8
  67. package/dist/tabs.css +0 -45
  68. package/dist/tabs.js +0 -205
  69. package/dist/tabs.js.map +0 -1
  70. package/dist/tooltip.css +0 -78
  71. package/dist/tooltip.js +0 -112
  72. package/dist/tooltip.js.map +0 -1
  73. package/dist/useRequiredInject.js +0 -11
  74. package/dist/useRequiredInject.js.map +0 -1
package/README.md CHANGED
@@ -11,21 +11,50 @@ pnpm add ropav vue
11
11
  ## Usage
12
12
 
13
13
  ```ts
14
- import 'ropav/base.css'
15
- import { Button, Input } from 'ropav'
14
+ import 'ropav/base.css';
15
+ import { Button, Input } from 'ropav';
16
16
  ```
17
17
 
18
18
  Deep imports are available for individual components:
19
19
 
20
20
  ```ts
21
- import { Button } from 'ropav/button'
21
+ import { Button } from 'ropav/button';
22
22
  ```
23
23
 
24
+ ## Theming and tokens
25
+
26
+ `ropav/base.css` exposes the public runtime token API as CSS custom properties. These
27
+ tokens are intended for stable theme axes that consumers may override without
28
+ rebuilding the library:
29
+
30
+ - semantic colors, surfaces, text, borders, focus rings, overlays, `on-*`, and
31
+ `*-fg`
32
+ - typography: `--rp-font-family`, `--rp-font-size-*`, `--rp-font-weight-*`, and
33
+ `--rp-line-height-*`
34
+ - density and control primitives: `--rp-spacing-*`, `--rp-size-control-*`,
35
+ `--rp-border-width-*`, and `--rp-opacity-disabled`
36
+ - radius, shadows, and transitions
37
+
38
+ Sass tokens exported through `ropav/scss/*` are implementation/build-time tokens.
39
+ They may include raw palette values, z-index values, component layout constants,
40
+ and mixin inputs that are not part of the runtime CSS variable contract.
41
+
42
+ Component-local custom properties that start with `--_` are private implementation
43
+ details. They are not versioned API and may change between releases.
44
+
45
+ Migration note: Ropav only supports the allowlisted runtime tokens above as public
46
+ CSS variables. Raw palette variables such as `--rp-color-gray-*`,
47
+ `--rp-color-white`, `--rp-color-black`, z-index variables, component layout
48
+ variables, and component-state variables such as `--rp-button-solid-hover-bg` are
49
+ not public runtime tokens.
50
+
24
51
  ## Development
25
52
 
26
53
  ```bash
27
54
  pnpm install
28
55
  pnpm dev
56
+ pnpm lint
57
+ pnpm format:check
29
58
  pnpm test
30
59
  pnpm build
31
60
  ```
package/dist/base.css CHANGED
@@ -1,38 +1,30 @@
1
1
  :root {
2
2
  --rp-font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;
3
- --rp-color-primary: #2563eb;
4
- --rp-color-secondary: #4f46e5;
5
- --rp-color-success: #15803d;
6
- --rp-color-warning: #b45309;
7
- --rp-color-danger: #dc2626;
8
- --rp-color-info: #0e7490;
9
- --rp-color-white: #ffffff;
10
- --rp-color-black: #09090b;
11
- --rp-color-gray-50: #fafafa;
12
- --rp-color-gray-100: #f4f4f5;
13
- --rp-color-gray-200: #e4e4e7;
14
- --rp-color-gray-300: #d4d4d8;
15
- --rp-color-gray-400: #a1a1aa;
16
- --rp-color-gray-500: #71717a;
17
- --rp-color-gray-600: #52525b;
18
- --rp-color-gray-700: #3f3f46;
19
- --rp-color-gray-800: #27272a;
20
- --rp-color-gray-900: #18181b;
21
- --rp-color-text: #18181b;
22
- --rp-color-text-secondary: #52525b;
23
- --rp-color-text-disabled: #71717a;
24
- --rp-color-text-inverted: var(--rp-color-white);
3
+ --rp-color-primary: #0d74ce;
4
+ --rp-color-secondary: #6550b9;
5
+ --rp-color-success: #218358;
6
+ --rp-color-warning: #cc4e00;
7
+ --rp-color-danger: #ce2c31;
8
+ --rp-color-info: #107d98;
9
+ --rp-color-neutral: #646464;
10
+ --rp-color-text: #202020;
11
+ --rp-color-text-secondary: #646464;
12
+ --rp-color-text-disabled: #8d8d8d;
13
+ --rp-color-text-inverted: #ffffff;
25
14
  --rp-color-background: #ffffff;
26
- --rp-color-surface: var(--rp-color-white);
27
- --rp-color-surface-raised: var(--rp-color-white);
28
- --rp-color-surface-muted: var(--rp-color-gray-50);
29
- --rp-color-surface-hover: var(--rp-color-gray-100);
30
- --rp-color-surface-inverted: var(--rp-color-gray-900);
31
- --rp-color-overlay: rgba(3, 7, 18, 0.55);
32
- --rp-color-border: #e4e4e7;
33
- --rp-color-border-hover: #a1a1aa;
15
+ --rp-color-surface: #ffffff;
16
+ --rp-color-surface-raised: #ffffff;
17
+ --rp-color-surface-muted: #f9f9f9;
18
+ --rp-color-surface-hover: #f0f0f0;
19
+ --rp-color-button-default-bg: #f9f9f9;
20
+ --rp-color-button-default-bg-hover: #f0f0f0;
21
+ --rp-color-button-default-bg-active: #e8e8e8;
22
+ --rp-color-surface-inverted: #202020;
23
+ --rp-color-overlay: rgba(17, 17, 17, 0.55);
24
+ --rp-color-border: #d9d9d9;
25
+ --rp-color-border-hover: #bbbbbb;
34
26
  --rp-color-focus-ring: color-mix(in srgb, var(--rp-color-primary) 32%, transparent);
35
- --rp-color-control-bg: var(--rp-color-surface);
27
+ --rp-color-control-bg: #f9f9f9;
36
28
  --rp-color-control-readonly-bg: var(--rp-color-surface-muted);
37
29
  --rp-color-control-fg: var(--rp-color-text);
38
30
  --rp-color-control-placeholder: var(--rp-color-text-secondary);
@@ -40,8 +32,8 @@
40
32
  --rp-color-control-border: var(--rp-color-border);
41
33
  --rp-color-control-border-hover: var(--rp-color-border-hover);
42
34
  --rp-color-control-border-focus: var(--rp-color-primary);
43
- --rp-color-control-track-bg: var(--rp-color-gray-300);
44
- --rp-color-control-thumb-bg: var(--rp-color-white);
35
+ --rp-color-control-track-bg: var(--rp-color-border);
36
+ --rp-color-control-thumb-bg: #ffffff;
45
37
  --rp-color-control-selected-bg: var(--rp-color-primary);
46
38
  --rp-color-control-selected-fg: var(--rp-color-on-primary);
47
39
  --rp-color-on-primary: #ffffff;
@@ -50,12 +42,63 @@
50
42
  --rp-color-on-warning: #ffffff;
51
43
  --rp-color-on-danger: #ffffff;
52
44
  --rp-color-on-info: #ffffff;
53
- --rp-color-primary-fg: var(--rp-color-primary);
54
- --rp-color-secondary-fg: var(--rp-color-secondary);
55
- --rp-color-success-fg: var(--rp-color-success);
56
- --rp-color-warning-fg: var(--rp-color-warning);
57
- --rp-color-danger-fg: var(--rp-color-danger);
58
- --rp-color-info-fg: var(--rp-color-info);
45
+ --rp-color-on-neutral: #ffffff;
46
+ --rp-color-primary-hover: color-mix(in srgb, var(--rp-color-primary) 90%, #111111);
47
+ --rp-color-primary-active: color-mix(in srgb, var(--rp-color-primary) 80%, #111111);
48
+ --rp-color-primary-subtle-bg: #e6f4fe;
49
+ --rp-color-primary-subtle-bg-hover: #d5efff;
50
+ --rp-color-primary-subtle-bg-active: #c2e5ff;
51
+ --rp-color-primary-border: #8ec8f6;
52
+ --rp-color-primary-border-hover: #5eb1ef;
53
+ --rp-color-primary-fg: #113264;
54
+ --rp-color-secondary-hover: color-mix(in srgb, var(--rp-color-secondary) 90%, #111111);
55
+ --rp-color-secondary-active: color-mix(in srgb, var(--rp-color-secondary) 80%, #111111);
56
+ --rp-color-secondary-subtle-bg: #f4f0fe;
57
+ --rp-color-secondary-subtle-bg-hover: #ebe4ff;
58
+ --rp-color-secondary-subtle-bg-active: #e1d9ff;
59
+ --rp-color-secondary-border: #c2b5f5;
60
+ --rp-color-secondary-border-hover: #aa99ec;
61
+ --rp-color-secondary-fg: #2f265f;
62
+ --rp-color-success-hover: color-mix(in srgb, var(--rp-color-success) 90%, #111111);
63
+ --rp-color-success-active: color-mix(in srgb, var(--rp-color-success) 80%, #111111);
64
+ --rp-color-success-subtle-bg: #e6f6eb;
65
+ --rp-color-success-subtle-bg-hover: #d6f1df;
66
+ --rp-color-success-subtle-bg-active: #c4e8d1;
67
+ --rp-color-success-border: #8eceaa;
68
+ --rp-color-success-border-hover: #5bb98b;
69
+ --rp-color-success-fg: #193b2d;
70
+ --rp-color-warning-hover: color-mix(in srgb, var(--rp-color-warning) 90%, #111111);
71
+ --rp-color-warning-active: color-mix(in srgb, var(--rp-color-warning) 80%, #111111);
72
+ --rp-color-warning-subtle-bg: #ffefd6;
73
+ --rp-color-warning-subtle-bg-hover: #ffdfb5;
74
+ --rp-color-warning-subtle-bg-active: #ffd19a;
75
+ --rp-color-warning-border: #f5ae73;
76
+ --rp-color-warning-border-hover: #ec9455;
77
+ --rp-color-warning-fg: #582d1d;
78
+ --rp-color-danger-hover: color-mix(in srgb, var(--rp-color-danger) 90%, #111111);
79
+ --rp-color-danger-active: color-mix(in srgb, var(--rp-color-danger) 80%, #111111);
80
+ --rp-color-danger-subtle-bg: #feebec;
81
+ --rp-color-danger-subtle-bg-hover: #ffdbdc;
82
+ --rp-color-danger-subtle-bg-active: #ffcdce;
83
+ --rp-color-danger-border: #f4a9aa;
84
+ --rp-color-danger-border-hover: #eb8e90;
85
+ --rp-color-danger-fg: #641723;
86
+ --rp-color-info-hover: color-mix(in srgb, var(--rp-color-info) 90%, #111111);
87
+ --rp-color-info-active: color-mix(in srgb, var(--rp-color-info) 80%, #111111);
88
+ --rp-color-info-subtle-bg: #def7f9;
89
+ --rp-color-info-subtle-bg-hover: #caf1f6;
90
+ --rp-color-info-subtle-bg-active: #b5e9f0;
91
+ --rp-color-info-border: #7dcedc;
92
+ --rp-color-info-border-hover: #3db9cf;
93
+ --rp-color-info-fg: #0d3c48;
94
+ --rp-color-neutral-hover: color-mix(in srgb, var(--rp-color-neutral) 90%, #111111);
95
+ --rp-color-neutral-active: color-mix(in srgb, var(--rp-color-neutral) 80%, #111111);
96
+ --rp-color-neutral-subtle-bg: #f0f0f0;
97
+ --rp-color-neutral-subtle-bg-hover: #e8e8e8;
98
+ --rp-color-neutral-subtle-bg-active: #e0e0e0;
99
+ --rp-color-neutral-border: #cecece;
100
+ --rp-color-neutral-border-hover: #bbbbbb;
101
+ --rp-color-neutral-fg: #202020;
59
102
  --rp-font-size-xs: 0.75rem;
60
103
  --rp-font-size-sm: 0.875rem;
61
104
  --rp-font-size-base: 1rem;
@@ -83,22 +126,16 @@
83
126
  --rp-spacing-10: 2.5rem;
84
127
  --rp-spacing-12: 3rem;
85
128
  --rp-radius-none: 0;
86
- --rp-radius-sm: 0.125rem;
87
- --rp-radius-base: 0.25rem;
88
- --rp-radius-md: 0.375rem;
89
- --rp-radius-lg: 0.5rem;
90
- --rp-radius-xl: 0.75rem;
91
- --rp-radius-2xl: 1rem;
129
+ --rp-radius-sm: 0.375rem;
130
+ --rp-radius-md: 0.75rem;
131
+ --rp-radius-lg: 1rem;
132
+ --rp-radius-xl: 1.5rem;
92
133
  --rp-radius-full: 9999px;
93
134
  --rp-border-width-thin: 1px;
94
135
  --rp-border-width-medium: 2px;
95
136
  --rp-size-control-sm: 32px;
96
137
  --rp-size-control-md: 40px;
97
138
  --rp-size-control-lg: 48px;
98
- --rp-component-menu-min-width: 180px;
99
- --rp-component-menu-max-height: 240px;
100
- --rp-z-index-dropdown: 100;
101
- --rp-z-index-tooltip: 1000;
102
139
  --rp-opacity-disabled: 0.5;
103
140
  --rp-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
104
141
  --rp-shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
@@ -110,36 +147,75 @@
110
147
  }
111
148
 
112
149
  html.dark {
113
- --rp-color-text: var(--rp-color-gray-50);
114
- --rp-color-text-secondary: var(--rp-color-gray-400);
115
- --rp-color-text-disabled: var(--rp-color-gray-600);
116
- --rp-color-text-inverted: var(--rp-color-gray-900);
117
- --rp-color-background: var(--rp-color-gray-900);
118
- --rp-color-surface: var(--rp-color-gray-900);
119
- --rp-color-surface-raised: var(--rp-color-gray-800);
120
- --rp-color-surface-muted: var(--rp-color-gray-800);
121
- --rp-color-surface-hover: var(--rp-color-gray-700);
122
- --rp-color-surface-inverted: var(--rp-color-gray-100);
123
- --rp-color-overlay: rgba(3, 7, 18, 0.75);
124
- --rp-color-border: var(--rp-color-gray-700);
125
- --rp-color-border-hover: var(--rp-color-gray-600);
150
+ --rp-color-text: #eeeeee;
151
+ --rp-color-text-secondary: #b4b4b4;
152
+ --rp-color-text-disabled: #6e6e6e;
153
+ --rp-color-text-inverted: #202020;
154
+ --rp-color-background: #111111;
155
+ --rp-color-surface: #111111;
156
+ --rp-color-surface-raised: #191919;
157
+ --rp-color-surface-muted: #191919;
158
+ --rp-color-surface-hover: #222222;
159
+ --rp-color-button-default-bg: #191919;
160
+ --rp-color-button-default-bg-hover: #222222;
161
+ --rp-color-button-default-bg-active: #2a2a2a;
162
+ --rp-color-surface-inverted: #f9f9f9;
163
+ --rp-color-overlay: rgba(17, 17, 17, 0.75);
164
+ --rp-color-border: #3a3a3a;
165
+ --rp-color-border-hover: #606060;
126
166
  --rp-color-focus-ring: color-mix(in srgb, var(--rp-color-primary) 45%, transparent);
127
- --rp-color-control-bg: var(--rp-color-gray-900);
128
- --rp-color-control-readonly-bg: var(--rp-color-gray-800);
129
- --rp-color-control-fg: var(--rp-color-gray-50);
130
- --rp-color-control-placeholder: var(--rp-color-gray-500);
131
- --rp-color-control-icon: var(--rp-color-gray-400);
132
- --rp-color-control-border: var(--rp-color-gray-700);
133
- --rp-color-control-border-hover: var(--rp-color-gray-600);
167
+ --rp-color-control-bg: #191919;
168
+ --rp-color-control-readonly-bg: var(--rp-color-surface-muted);
169
+ --rp-color-control-fg: #eeeeee;
170
+ --rp-color-control-placeholder: #6e6e6e;
171
+ --rp-color-control-icon: #b4b4b4;
172
+ --rp-color-control-border: #3a3a3a;
173
+ --rp-color-control-border-hover: #606060;
134
174
  --rp-color-control-border-focus: var(--rp-color-primary);
135
- --rp-color-control-track-bg: var(--rp-color-gray-700);
136
- --rp-color-control-thumb-bg: var(--rp-color-gray-50);
137
- --rp-color-primary-fg: color-mix(in srgb, var(--rp-color-primary) 65%, var(--rp-color-white));
138
- --rp-color-secondary-fg: color-mix(in srgb, var(--rp-color-secondary) 65%, var(--rp-color-white));
139
- --rp-color-success-fg: color-mix(in srgb, var(--rp-color-success) 65%, var(--rp-color-white));
140
- --rp-color-warning-fg: color-mix(in srgb, var(--rp-color-warning) 65%, var(--rp-color-white));
141
- --rp-color-danger-fg: color-mix(in srgb, var(--rp-color-danger) 65%, var(--rp-color-white));
142
- --rp-color-info-fg: color-mix(in srgb, var(--rp-color-info) 65%, var(--rp-color-white));
175
+ --rp-color-control-track-bg: var(--rp-color-border);
176
+ --rp-color-control-thumb-bg: var(--rp-color-surface-inverted);
177
+ --rp-color-primary-subtle-bg: #0d2847;
178
+ --rp-color-primary-subtle-bg-hover: #003362;
179
+ --rp-color-primary-subtle-bg-active: #004074;
180
+ --rp-color-primary-border: #205d9e;
181
+ --rp-color-primary-border-hover: #2870bd;
182
+ --rp-color-primary-fg: #70b8ff;
183
+ --rp-color-secondary-subtle-bg: #291f43;
184
+ --rp-color-secondary-subtle-bg-hover: #33255b;
185
+ --rp-color-secondary-subtle-bg-active: #3c2e69;
186
+ --rp-color-secondary-border: #56468b;
187
+ --rp-color-secondary-border-hover: #6958ad;
188
+ --rp-color-secondary-fg: #baa7ff;
189
+ --rp-color-success-subtle-bg: #132d21;
190
+ --rp-color-success-subtle-bg-hover: #113b29;
191
+ --rp-color-success-subtle-bg-active: #174933;
192
+ --rp-color-success-border: #28684a;
193
+ --rp-color-success-border-hover: #2f7c57;
194
+ --rp-color-success-fg: #3dd68c;
195
+ --rp-color-warning-subtle-bg: #331e0b;
196
+ --rp-color-warning-subtle-bg-hover: #462100;
197
+ --rp-color-warning-subtle-bg-active: #562800;
198
+ --rp-color-warning-border: #7e451d;
199
+ --rp-color-warning-border-hover: #a35829;
200
+ --rp-color-warning-fg: #ffa057;
201
+ --rp-color-danger-subtle-bg: #3b1219;
202
+ --rp-color-danger-subtle-bg-hover: #500f1c;
203
+ --rp-color-danger-subtle-bg-active: #611623;
204
+ --rp-color-danger-border: #8c333a;
205
+ --rp-color-danger-border-hover: #b54548;
206
+ --rp-color-danger-fg: #ff9592;
207
+ --rp-color-info-subtle-bg: #082c36;
208
+ --rp-color-info-subtle-bg-hover: #003848;
209
+ --rp-color-info-subtle-bg-active: #004558;
210
+ --rp-color-info-border: #12677e;
211
+ --rp-color-info-border-hover: #11809c;
212
+ --rp-color-info-fg: #4ccce6;
213
+ --rp-color-neutral-subtle-bg: #222222;
214
+ --rp-color-neutral-subtle-bg-hover: #2a2a2a;
215
+ --rp-color-neutral-subtle-bg-active: #313131;
216
+ --rp-color-neutral-border: #484848;
217
+ --rp-color-neutral-border-hover: #606060;
218
+ --rp-color-neutral-fg: #eeeeee;
143
219
  --rp-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
144
220
  --rp-shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px -1px rgba(0, 0, 0, 0.3);
145
221
  --rp-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
package/dist/button.css CHANGED
@@ -1,65 +1,309 @@
1
- .rp-button[data-v-c2d151de] {
1
+ .rp-button[data-v-b8d57358] {
2
+ --_rp-button-accent: var(--rp-color-primary);
3
+ --_rp-button-accent-hover: var(--rp-color-primary-hover);
4
+ --_rp-button-accent-active: var(--rp-color-primary-active);
5
+ --_rp-button-accent-on: var(--rp-color-on-primary);
6
+ --_rp-button-accent-subtle-bg: var(--rp-color-primary-subtle-bg);
7
+ --_rp-button-accent-subtle-bg-hover: var(--rp-color-primary-subtle-bg-hover);
8
+ --_rp-button-accent-subtle-bg-active: var(--rp-color-primary-subtle-bg-active);
9
+ --_rp-button-accent-border: var(--rp-color-primary-border);
10
+ --_rp-button-accent-border-hover: var(--rp-color-primary-border-hover);
11
+ --_rp-button-accent-fg: var(--rp-color-primary-fg);
12
+ --_rp-button-bg: var(--rp-color-button-default-bg);
13
+ --_rp-button-bg-hover: var(--rp-color-button-default-bg-hover);
14
+ --_rp-button-bg-active: var(--rp-color-button-default-bg-active);
15
+ --_rp-button-border: var(--rp-color-border);
16
+ --_rp-button-border-hover: var(--rp-color-border-hover);
17
+ --_rp-button-border-active: var(--_rp-button-border-hover);
18
+ --_rp-button-fg: var(--rp-color-text);
19
+ --_rp-button-height: var(--rp-size-control-md);
20
+ --_rp-button-padding-x: var(--rp-spacing-4);
21
+ --_rp-button-font-size: var(--rp-font-size-base);
22
+ --_rp-button-radius: var(--rp-radius-sm);
23
+ --_rp-button-shadow: var(--rp-shadow-sm);
24
+ --_rp-button-shadow-hover: var(--rp-shadow-base);
25
+ --_rp-button-shadow-active: var(--rp-shadow-sm);
2
26
  display: inline-flex;
3
27
  align-items: center;
4
28
  justify-content: center;
29
+ box-sizing: border-box;
5
30
  gap: var(--rp-spacing-2);
6
31
  font-family: var(--rp-font-family);
7
- font-weight: var(--rp-font-weight-normal);
32
+ font-weight: var(--rp-font-weight-medium);
8
33
  line-height: var(--rp-line-height-none);
9
- border: var(--rp-border-width-thin) solid transparent;
34
+ appearance: none;
35
+ background-color: var(--_rp-button-bg);
36
+ border: var(--rp-border-width-thin) solid var(--_rp-button-border);
37
+ box-shadow: var(--_rp-button-shadow);
38
+ color: var(--_rp-button-fg);
10
39
  cursor: pointer;
11
- transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast), border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
40
+ transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast), border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast), transform var(--rp-transition-fast);
12
41
  white-space: nowrap;
13
42
  user-select: none;
14
- height: var(--rp-size-control-md);
15
- padding: 0 var(--rp-spacing-4);
16
- font-size: var(--rp-font-size-base);
17
- border-radius: var(--rp-radius-lg);
43
+ height: var(--_rp-button-height);
44
+ padding: 0 var(--_rp-button-padding-x);
45
+ font-size: var(--_rp-button-font-size);
46
+ border-radius: var(--_rp-button-radius);
18
47
  }
19
- .rp-button--solid[data-v-c2d151de] {
20
- background-color: var(--rp-color-primary);
21
- color: var(--rp-color-on-primary);
48
+ .rp-button[data-v-b8d57358]:hover:not(:disabled) {
49
+ background-color: var(--_rp-button-bg-hover);
50
+ border-color: var(--_rp-button-border-hover);
51
+ box-shadow: var(--_rp-button-shadow-hover);
22
52
  }
23
- .rp-button--solid[data-v-c2d151de]:hover:not(:disabled) {
24
- background-color: color-mix(in srgb, var(--rp-color-primary) 90%, var(--rp-color-black));
53
+ .rp-button[data-v-b8d57358]:active:not(:disabled) {
54
+ background-color: var(--_rp-button-bg-active);
55
+ border-color: var(--_rp-button-border-active);
56
+ box-shadow: var(--_rp-button-shadow-active);
57
+ transform: translateY(1px);
25
58
  }
26
- .rp-button--solid[data-v-c2d151de]:active:not(:disabled) {
27
- background-color: color-mix(in srgb, var(--rp-color-primary) 80%, var(--rp-color-black));
59
+ .rp-button--color-primary[data-v-b8d57358] {
60
+ --_rp-button-accent: var(--rp-color-primary);
61
+ --_rp-button-accent-hover: var(--rp-color-primary-hover);
62
+ --_rp-button-accent-active: var(--rp-color-primary-active);
63
+ --_rp-button-accent-on: var(--rp-color-on-primary);
64
+ --_rp-button-accent-subtle-bg: var(--rp-color-primary-subtle-bg);
65
+ --_rp-button-accent-subtle-bg-hover: var(--rp-color-primary-subtle-bg-hover);
66
+ --_rp-button-accent-subtle-bg-active: var(--rp-color-primary-subtle-bg-active);
67
+ --_rp-button-accent-border: var(--rp-color-primary-border);
68
+ --_rp-button-accent-border-hover: var(--rp-color-primary-border-hover);
69
+ --_rp-button-accent-fg: var(--rp-color-primary-fg);
70
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
71
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
72
+ --_rp-button-border: var(--_rp-button-accent-border);
73
+ --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
74
+ --_rp-button-fg: var(--_rp-button-accent-fg);
28
75
  }
29
- .rp-button--ghost[data-v-c2d151de] {
30
- background-color: transparent;
31
- color: var(--rp-color-primary-fg);
76
+ .rp-button--color-secondary[data-v-b8d57358] {
77
+ --_rp-button-accent: var(--rp-color-secondary);
78
+ --_rp-button-accent-hover: var(--rp-color-secondary-hover);
79
+ --_rp-button-accent-active: var(--rp-color-secondary-active);
80
+ --_rp-button-accent-on: var(--rp-color-on-secondary);
81
+ --_rp-button-accent-subtle-bg: var(--rp-color-secondary-subtle-bg);
82
+ --_rp-button-accent-subtle-bg-hover: var(--rp-color-secondary-subtle-bg-hover);
83
+ --_rp-button-accent-subtle-bg-active: var(--rp-color-secondary-subtle-bg-active);
84
+ --_rp-button-accent-border: var(--rp-color-secondary-border);
85
+ --_rp-button-accent-border-hover: var(--rp-color-secondary-border-hover);
86
+ --_rp-button-accent-fg: var(--rp-color-secondary-fg);
87
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
88
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
89
+ --_rp-button-border: var(--_rp-button-accent-border);
90
+ --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
91
+ --_rp-button-fg: var(--_rp-button-accent-fg);
32
92
  }
33
- .rp-button--ghost[data-v-c2d151de]:hover:not(:disabled) {
34
- background-color: color-mix(in srgb, var(--rp-color-primary) 14%, transparent);
93
+ .rp-button--color-success[data-v-b8d57358] {
94
+ --_rp-button-accent: var(--rp-color-success);
95
+ --_rp-button-accent-hover: var(--rp-color-success-hover);
96
+ --_rp-button-accent-active: var(--rp-color-success-active);
97
+ --_rp-button-accent-on: var(--rp-color-on-success);
98
+ --_rp-button-accent-subtle-bg: var(--rp-color-success-subtle-bg);
99
+ --_rp-button-accent-subtle-bg-hover: var(--rp-color-success-subtle-bg-hover);
100
+ --_rp-button-accent-subtle-bg-active: var(--rp-color-success-subtle-bg-active);
101
+ --_rp-button-accent-border: var(--rp-color-success-border);
102
+ --_rp-button-accent-border-hover: var(--rp-color-success-border-hover);
103
+ --_rp-button-accent-fg: var(--rp-color-success-fg);
104
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
105
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
106
+ --_rp-button-border: var(--_rp-button-accent-border);
107
+ --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
108
+ --_rp-button-fg: var(--_rp-button-accent-fg);
35
109
  }
36
- .rp-button--ghost[data-v-c2d151de]:active:not(:disabled) {
37
- background-color: color-mix(in srgb, var(--rp-color-primary) 18%, transparent);
110
+ .rp-button--color-warning[data-v-b8d57358] {
111
+ --_rp-button-accent: var(--rp-color-warning);
112
+ --_rp-button-accent-hover: var(--rp-color-warning-hover);
113
+ --_rp-button-accent-active: var(--rp-color-warning-active);
114
+ --_rp-button-accent-on: var(--rp-color-on-warning);
115
+ --_rp-button-accent-subtle-bg: var(--rp-color-warning-subtle-bg);
116
+ --_rp-button-accent-subtle-bg-hover: var(--rp-color-warning-subtle-bg-hover);
117
+ --_rp-button-accent-subtle-bg-active: var(--rp-color-warning-subtle-bg-active);
118
+ --_rp-button-accent-border: var(--rp-color-warning-border);
119
+ --_rp-button-accent-border-hover: var(--rp-color-warning-border-hover);
120
+ --_rp-button-accent-fg: var(--rp-color-warning-fg);
121
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
122
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
123
+ --_rp-button-border: var(--_rp-button-accent-border);
124
+ --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
125
+ --_rp-button-fg: var(--_rp-button-accent-fg);
38
126
  }
39
- .rp-button[data-v-c2d151de]:disabled {
127
+ .rp-button--color-danger[data-v-b8d57358] {
128
+ --_rp-button-accent: var(--rp-color-danger);
129
+ --_rp-button-accent-hover: var(--rp-color-danger-hover);
130
+ --_rp-button-accent-active: var(--rp-color-danger-active);
131
+ --_rp-button-accent-on: var(--rp-color-on-danger);
132
+ --_rp-button-accent-subtle-bg: var(--rp-color-danger-subtle-bg);
133
+ --_rp-button-accent-subtle-bg-hover: var(--rp-color-danger-subtle-bg-hover);
134
+ --_rp-button-accent-subtle-bg-active: var(--rp-color-danger-subtle-bg-active);
135
+ --_rp-button-accent-border: var(--rp-color-danger-border);
136
+ --_rp-button-accent-border-hover: var(--rp-color-danger-border-hover);
137
+ --_rp-button-accent-fg: var(--rp-color-danger-fg);
138
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
139
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
140
+ --_rp-button-border: var(--_rp-button-accent-border);
141
+ --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
142
+ --_rp-button-fg: var(--_rp-button-accent-fg);
143
+ }
144
+ .rp-button--color-info[data-v-b8d57358] {
145
+ --_rp-button-accent: var(--rp-color-info);
146
+ --_rp-button-accent-hover: var(--rp-color-info-hover);
147
+ --_rp-button-accent-active: var(--rp-color-info-active);
148
+ --_rp-button-accent-on: var(--rp-color-on-info);
149
+ --_rp-button-accent-subtle-bg: var(--rp-color-info-subtle-bg);
150
+ --_rp-button-accent-subtle-bg-hover: var(--rp-color-info-subtle-bg-hover);
151
+ --_rp-button-accent-subtle-bg-active: var(--rp-color-info-subtle-bg-active);
152
+ --_rp-button-accent-border: var(--rp-color-info-border);
153
+ --_rp-button-accent-border-hover: var(--rp-color-info-border-hover);
154
+ --_rp-button-accent-fg: var(--rp-color-info-fg);
155
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
156
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
157
+ --_rp-button-border: var(--_rp-button-accent-border);
158
+ --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
159
+ --_rp-button-fg: var(--_rp-button-accent-fg);
160
+ }
161
+ .rp-button--color-neutral[data-v-b8d57358] {
162
+ --_rp-button-accent: var(--rp-color-neutral);
163
+ --_rp-button-accent-hover: var(--rp-color-neutral-hover);
164
+ --_rp-button-accent-active: var(--rp-color-neutral-active);
165
+ --_rp-button-accent-on: var(--rp-color-on-neutral);
166
+ --_rp-button-accent-subtle-bg: var(--rp-color-neutral-subtle-bg);
167
+ --_rp-button-accent-subtle-bg-hover: var(--rp-color-neutral-subtle-bg-hover);
168
+ --_rp-button-accent-subtle-bg-active: var(--rp-color-neutral-subtle-bg-active);
169
+ --_rp-button-accent-border: var(--rp-color-neutral-border);
170
+ --_rp-button-accent-border-hover: var(--rp-color-neutral-border-hover);
171
+ --_rp-button-accent-fg: var(--rp-color-neutral-fg);
172
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
173
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
174
+ --_rp-button-border: var(--_rp-button-accent-border);
175
+ --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
176
+ --_rp-button-fg: var(--_rp-button-accent-fg);
177
+ }
178
+ .rp-button--size-xs[data-v-b8d57358] {
179
+ --_rp-button-height: calc(var(--rp-size-control-sm) - var(--rp-spacing-1));
180
+ --_rp-button-padding-x: var(--rp-spacing-2);
181
+ --_rp-button-font-size: var(--rp-font-size-xs);
182
+ }
183
+ .rp-button--size-sm[data-v-b8d57358] {
184
+ --_rp-button-height: var(--rp-size-control-sm);
185
+ --_rp-button-padding-x: var(--rp-spacing-3);
186
+ --_rp-button-font-size: var(--rp-font-size-sm);
187
+ }
188
+ .rp-button--size-lg[data-v-b8d57358] {
189
+ --_rp-button-height: var(--rp-size-control-lg);
190
+ --_rp-button-padding-x: var(--rp-spacing-5);
191
+ --_rp-button-font-size: var(--rp-font-size-lg);
192
+ }
193
+ .rp-button--size-xl[data-v-b8d57358] {
194
+ --_rp-button-height: calc(var(--rp-size-control-lg) + var(--rp-spacing-2));
195
+ --_rp-button-padding-x: var(--rp-spacing-6);
196
+ --_rp-button-font-size: var(--rp-font-size-lg);
197
+ }
198
+ .rp-button--radius-xs[data-v-b8d57358] {
199
+ --_rp-button-radius: var(--rp-radius-sm);
200
+ }
201
+ .rp-button--radius-sm[data-v-b8d57358] {
202
+ --_rp-button-radius: var(--rp-radius-sm);
203
+ }
204
+ .rp-button--radius-md[data-v-b8d57358] {
205
+ --_rp-button-radius: var(--rp-radius-md);
206
+ }
207
+ .rp-button--radius-lg[data-v-b8d57358] {
208
+ --_rp-button-radius: var(--rp-radius-lg);
209
+ }
210
+ .rp-button--radius-xl[data-v-b8d57358] {
211
+ --_rp-button-radius: var(--rp-radius-xl);
212
+ }
213
+ .rp-button--solid[data-v-b8d57358] {
214
+ --_rp-button-bg: var(--_rp-button-accent);
215
+ --_rp-button-bg-hover: var(--_rp-button-accent-hover);
216
+ --_rp-button-bg-active: var(--_rp-button-accent-active);
217
+ --_rp-button-border: var(--_rp-button-accent);
218
+ --_rp-button-border-hover: var(--_rp-button-accent-hover);
219
+ --_rp-button-border-active: var(--_rp-button-accent-active);
220
+ --_rp-button-fg: var(--_rp-button-accent-on);
221
+ }
222
+ .rp-button--subtle[data-v-b8d57358] {
223
+ --_rp-button-bg: var(--_rp-button-accent-subtle-bg);
224
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
225
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
226
+ --_rp-button-border: transparent;
227
+ --_rp-button-border-hover: transparent;
228
+ --_rp-button-border-active: transparent;
229
+ --_rp-button-fg: var(--_rp-button-accent-fg);
230
+ --_rp-button-shadow: none;
231
+ --_rp-button-shadow-hover: none;
232
+ --_rp-button-shadow-active: none;
233
+ }
234
+ .rp-button--surface[data-v-b8d57358] {
235
+ --_rp-button-bg: var(--_rp-button-accent-subtle-bg);
236
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
237
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
238
+ --_rp-button-border: var(--_rp-button-accent-border);
239
+ --_rp-button-border-hover: var(--_rp-button-accent-subtle-bg-hover);
240
+ --_rp-button-border-active: var(--_rp-button-accent-border-hover);
241
+ --_rp-button-fg: var(--_rp-button-accent-fg);
242
+ --_rp-button-shadow: none;
243
+ --_rp-button-shadow-hover: none;
244
+ --_rp-button-shadow-active: none;
245
+ }
246
+ .rp-button--outline[data-v-b8d57358] {
247
+ --_rp-button-bg: transparent;
248
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
249
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
250
+ --_rp-button-border: var(--_rp-button-accent-border);
251
+ --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
252
+ --_rp-button-border-active: var(--_rp-button-accent-border-hover);
253
+ --_rp-button-fg: var(--_rp-button-accent-fg);
254
+ --_rp-button-shadow: none;
255
+ --_rp-button-shadow-hover: none;
256
+ --_rp-button-shadow-active: none;
257
+ }
258
+ .rp-button--ghost[data-v-b8d57358] {
259
+ --_rp-button-bg: transparent;
260
+ --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
261
+ --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
262
+ --_rp-button-border: transparent;
263
+ --_rp-button-border-hover: transparent;
264
+ --_rp-button-border-active: transparent;
265
+ --_rp-button-fg: var(--_rp-button-accent-fg);
266
+ --_rp-button-shadow: none;
267
+ --_rp-button-shadow-hover: none;
268
+ --_rp-button-shadow-active: none;
269
+ }
270
+ .rp-button--plain[data-v-b8d57358] {
271
+ --_rp-button-bg: transparent;
272
+ --_rp-button-bg-hover: transparent;
273
+ --_rp-button-bg-active: transparent;
274
+ --_rp-button-border: transparent;
275
+ --_rp-button-border-hover: transparent;
276
+ --_rp-button-border-active: transparent;
277
+ --_rp-button-fg: var(--_rp-button-accent-fg);
278
+ --_rp-button-shadow: none;
279
+ --_rp-button-shadow-hover: none;
280
+ --_rp-button-shadow-active: none;
281
+ }
282
+ .rp-button[data-v-b8d57358]:disabled {
40
283
  opacity: var(--rp-opacity-disabled);
41
284
  cursor: not-allowed;
285
+ box-shadow: none;
286
+ transform: none;
42
287
  }
43
- .rp-button[data-v-c2d151de]:focus-visible {
288
+ .rp-button[data-v-b8d57358]:focus-visible {
44
289
  outline: none;
45
- border-color: var(--rp-color-control-border-focus);
290
+ border-color: var(--rp-color-primary);
46
291
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
47
292
  }
48
- .rp-button__prefix[data-v-c2d151de], .rp-button__suffix[data-v-c2d151de] {
293
+ .rp-button__left[data-v-b8d57358], .rp-button__right[data-v-b8d57358] {
49
294
  display: inline-flex;
50
295
  align-items: center;
51
296
  flex-shrink: 0;
52
297
  }
53
- .rp-button__spinner[data-v-c2d151de] {
298
+ .rp-button__spinner[data-v-b8d57358] {
299
+ display: block;
54
300
  width: 1em;
55
301
  height: 1em;
56
- border: var(--rp-border-width-medium) solid currentColor;
57
- border-right-color: transparent;
58
- border-radius: var(--rp-radius-full);
59
302
  flex-shrink: 0;
60
- animation: rp-button-spin-c2d151de 700ms linear infinite;
303
+ transform-origin: center;
304
+ animation: rp-button-spin-b8d57358 700ms linear infinite;
61
305
  }
62
- @keyframes rp-button-spin-c2d151de {
306
+ @keyframes rp-button-spin-b8d57358 {
63
307
  to {
64
308
  transform: rotate(360deg);
65
309
  }