@paroicms/react-ui 0.5.2 → 0.5.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 (53) hide show
  1. package/dist/Breadcrumb.d.ts +1 -0
  2. package/dist/Breadcrumb.js +4 -1
  3. package/dist/DataTable.js +1 -1
  4. package/dist/InputSwitch.d.ts +10 -0
  5. package/dist/InputSwitch.js +10 -0
  6. package/dist/MenuItem.js +2 -2
  7. package/dist/PopupMenu.d.ts +4 -2
  8. package/dist/PopupMenu.js +11 -4
  9. package/dist/SideMenu.js +13 -2
  10. package/dist/SortableList.js +1 -2
  11. package/dist/Spinner.d.ts +5 -1
  12. package/dist/Spinner.js +3 -2
  13. package/dist/SplitButton.js +2 -3
  14. package/dist/Tabs.js +1 -1
  15. package/dist/ToggleButton.d.ts +2 -1
  16. package/dist/ToggleButton.js +2 -2
  17. package/dist/ToggleGroup.js +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/paroi-ui-lib-types.d.ts +5 -1
  21. package/dist/popup-positioning.js +3 -2
  22. package/package.json +1 -1
  23. package/styles/Accordion.css +7 -0
  24. package/styles/Alert.css +7 -1
  25. package/styles/Breadcrumb.css +20 -11
  26. package/styles/Button.css +46 -10
  27. package/styles/Checkbox.css +3 -1
  28. package/styles/Chip.css +7 -1
  29. package/styles/DataTable.css +19 -9
  30. package/styles/DateInput.css +3 -0
  31. package/styles/Dialog.css +7 -1
  32. package/styles/Inplace.css +15 -2
  33. package/styles/InputNumber.css +4 -3
  34. package/styles/{Switch.css → InputSwitch.css} +10 -10
  35. package/styles/InputText.css +18 -13
  36. package/styles/MenuItem.css +47 -45
  37. package/styles/MultiSelect.css +11 -5
  38. package/styles/Panel.css +8 -1
  39. package/styles/PasswordInput.css +17 -5
  40. package/styles/PopupMenu.css +19 -0
  41. package/styles/RadioButton.css +3 -1
  42. package/styles/Select.css +16 -5
  43. package/styles/Spinner.css +8 -4
  44. package/styles/SplitButton.css +128 -36
  45. package/styles/Tabs.css +11 -3
  46. package/styles/Textarea.css +4 -3
  47. package/styles/ToggleButton.css +126 -12
  48. package/styles/ToggleGroup.css +6 -4
  49. package/styles/Tree.css +7 -1
  50. package/styles/theme/common.css +4 -4
  51. package/styles/theme/tokens.css +14 -1
  52. package/dist/Switch.d.ts +0 -9
  53. package/dist/Switch.js +0 -12
@@ -28,43 +28,148 @@
28
28
  height: 14px;
29
29
  }
30
30
 
31
- .PaSplitBtn.primary .PaSplitBtn-toggle {
31
+ /* ========================================
32
+ Toggle Button Severity Variants (Filled)
33
+ ======================================== */
34
+
35
+ .PaSplitBtn-toggle.primary {
32
36
  color: var(--color-text-inverse);
33
37
  background: var(--color-primary);
38
+
39
+ &:hover:not(:disabled) {
40
+ background: var(--color-primary-hover);
41
+ }
42
+
43
+ &:disabled {
44
+ color: var(--color-primary-disabled);
45
+ background: var(--color-primary-bg-disabled);
46
+ }
34
47
  }
35
48
 
36
- .PaSplitBtn.primary .PaSplitBtn-toggle:hover {
37
- background: var(--color-primary-hover);
49
+ .PaSplitBtn-toggle.danger {
50
+ color: var(--color-text-inverse);
51
+ background: var(--color-danger);
52
+
53
+ &:hover:not(:disabled) {
54
+ background: var(--color-danger-dark);
55
+ }
56
+
57
+ &:disabled {
58
+ color: var(--color-danger-disabled);
59
+ background: var(--color-danger-bg-disabled);
60
+ }
38
61
  }
39
62
 
40
- .PaSplitBtn.secondary .PaSplitBtn-main.PaBtn,
41
- .PaSplitBtn.secondary .PaSplitBtn-toggle {
63
+ .PaSplitBtn-toggle.warning {
64
+ color: var(--color-yellow);
65
+ background: transparent;
66
+ border: 2px solid var(--color-yellow);
67
+ border-left: none;
68
+
69
+ &:hover:not(:disabled) {
70
+ background: var(--color-yellow-light);
71
+ }
72
+
73
+ &:disabled {
74
+ color: var(--color-warning-disabled);
75
+ border-color: var(--color-warning-disabled);
76
+ }
77
+ }
78
+
79
+ .PaSplitBtn-toggle.secondary {
42
80
  color: var(--color-text-muted);
43
81
  background: transparent;
44
82
  border: 1px solid var(--color-border);
83
+ border-left: 1px solid var(--color-border);
84
+
85
+ &:hover:not(:disabled) {
86
+ color: var(--color-text);
87
+ background: var(--color-bg-subtle);
88
+ border-color: var(--color-text-muted);
89
+ }
90
+
91
+ &:disabled {
92
+ color: var(--color-text-disabled);
93
+ background: var(--color-bg-disabled);
94
+ border-color: var(--color-border-disabled);
95
+ }
45
96
  }
46
97
 
47
- .PaSplitBtn.secondary .PaSplitBtn-main.PaBtn {
48
- border-radius: var(--radius) 0 0 var(--radius);
98
+ .PaSplitBtn-toggle.ghost {
99
+ color: var(--color-text-muted);
100
+ background: transparent;
101
+
102
+ &:hover:not(:disabled) {
103
+ color: var(--color-text);
104
+ background: var(--color-bg-subtle);
105
+ }
106
+
107
+ &:disabled {
108
+ color: var(--color-text-disabled);
109
+ }
49
110
  }
50
111
 
51
- .PaSplitBtn.secondary .PaSplitBtn-toggle {
52
- border-left: 1px solid var(--color-border);
112
+ /* ========================================
113
+ Toggle Button Severity Variants (Outlined)
114
+ ======================================== */
115
+
116
+ .PaSplitBtn.outlined .PaSplitBtn-toggle.primary {
117
+ color: var(--color-primary);
118
+ background: transparent;
119
+ border: 1px solid var(--color-primary);
120
+ border-left: none;
121
+
122
+ &:hover:not(:disabled) {
123
+ background: var(--color-primary-light);
124
+ }
125
+
126
+ &:disabled {
127
+ color: var(--color-primary-disabled);
128
+ border-color: var(--color-primary-disabled);
129
+ }
53
130
  }
54
131
 
55
- .PaSplitBtn.secondary .PaSplitBtn-main.PaBtn:hover,
56
- .PaSplitBtn.secondary .PaSplitBtn-toggle:hover {
57
- color: var(--color-text);
58
- background: var(--color-bg-subtle);
59
- border-color: var(--color-text-muted);
132
+ .PaSplitBtn.outlined .PaSplitBtn-toggle.danger {
133
+ color: var(--color-danger);
134
+ background: transparent;
135
+ border: 1px solid var(--color-danger);
136
+ border-left: none;
137
+
138
+ &:hover:not(:disabled) {
139
+ background: var(--color-danger-light);
140
+ }
141
+
142
+ &:disabled {
143
+ color: var(--color-danger-disabled);
144
+ border-color: var(--color-danger-disabled);
145
+ }
60
146
  }
61
147
 
62
- /* Disabled state */
148
+ .PaSplitBtn.outlined .PaSplitBtn-toggle.secondary {
149
+ color: var(--color-text-muted);
150
+ background: transparent;
151
+ border: 1px solid var(--color-border);
152
+ border-left: none;
153
+
154
+ &:hover:not(:disabled) {
155
+ color: var(--color-text);
156
+ background: var(--color-bg-subtle);
157
+ border-color: var(--color-text-muted);
158
+ }
159
+
160
+ &:disabled {
161
+ color: var(--color-text-disabled);
162
+ border-color: var(--color-border-disabled);
163
+ }
164
+ }
165
+
166
+ /* ========================================
167
+ Default Disabled State (fallback)
168
+ ======================================== */
169
+
63
170
  .PaSplitBtn-toggle:disabled {
64
171
  pointer-events: none;
65
172
  cursor: not-allowed;
66
- opacity: 0.6;
67
- filter: grayscale(40%);
68
173
  }
69
174
 
70
175
  .PaSplitBtn-menu {
@@ -90,7 +195,7 @@
90
195
  border-radius: var(--radius);
91
196
  transition: all var(--transition);
92
197
 
93
- &:hover {
198
+ &:hover:not(:disabled) {
94
199
  color: var(--color-primary);
95
200
  background: var(--color-primary-light);
96
201
  }
@@ -101,37 +206,24 @@
101
206
  height: 16px;
102
207
  color: var(--color-text-muted);
103
208
 
104
- .PaSplitBtn-menuItem:hover & {
209
+ .PaSplitBtn-menuItem:hover:not(:disabled) & {
105
210
  color: var(--color-primary);
106
211
  }
107
212
 
108
- .PaSplitBtn-menuItem.danger:hover & {
213
+ .PaSplitBtn-menuItem.danger:hover:not(:disabled) & {
109
214
  color: var(--color-danger);
110
215
  }
111
216
  }
112
217
 
113
218
  .PaSplitBtn-menuItem.danger {
114
- &:hover {
219
+ &:hover:not(:disabled) {
115
220
  color: var(--color-danger);
116
221
  background: var(--color-danger-light);
117
222
  }
118
223
  }
119
224
 
120
- .PaSplitBtn-menuItem.disabled {
225
+ .PaSplitBtn-menuItem:disabled {
121
226
  color: var(--color-text-muted);
122
227
  cursor: not-allowed;
123
- opacity: 0.5;
124
-
125
- &:hover {
126
- color: var(--color-text-muted);
127
- background: transparent;
128
- }
129
-
130
- & .PaSplitBtn-menuIcon {
131
- color: var(--color-text-muted);
132
- }
133
-
134
- &:hover .PaSplitBtn-menuIcon {
135
- color: var(--color-text-muted);
136
- }
228
+ background: var(--color-bg-muted);
137
229
  }
package/styles/Tabs.css CHANGED
@@ -31,7 +31,7 @@
31
31
  transition: all var(--transition);
32
32
 
33
33
  &:focus,
34
- &:hover {
34
+ &:hover:not(:disabled):not(.disabled) {
35
35
  color: var(--color-text);
36
36
  background: var(--color-bg-subtle);
37
37
  }
@@ -41,6 +41,14 @@
41
41
  border-bottom-color: var(--color-primary);
42
42
  }
43
43
 
44
+ &:disabled,
45
+ &.disabled {
46
+ color: var(--color-text-disabled);
47
+ pointer-events: none;
48
+ cursor: not-allowed;
49
+ background: var(--color-bg-muted);
50
+ }
51
+
44
52
  /* Tab inside stretch variant */
45
53
  .PaTabs.stretch & {
46
54
  display: flex;
@@ -62,7 +70,7 @@
62
70
  border: none;
63
71
  border-radius: var(--radius);
64
72
 
65
- &:hover {
73
+ &:hover:not(:disabled) {
66
74
  color: var(--color-text);
67
75
  background: var(--color-bg-subtle);
68
76
  }
@@ -76,7 +84,7 @@
76
84
  color: var(--color-text-light);
77
85
  border: 1px dashed var(--color-danger-light2);
78
86
 
79
- &:hover {
87
+ &:hover:not(:disabled) {
80
88
  color: var(--color-primary);
81
89
  border-color: var(--color-primary);
82
90
  }
@@ -1,8 +1,8 @@
1
1
  /* ========================================
2
2
  Textarea Component
3
3
  ======================================== */
4
+ ._paForm textarea,
4
5
  .PaTextarea {
5
- width: 100%;
6
6
  min-height: 120px;
7
7
  padding: var(--space-3);
8
8
  font-family: inherit;
@@ -32,9 +32,10 @@
32
32
  }
33
33
 
34
34
  &:disabled {
35
+ color: var(--color-text-muted);
35
36
  cursor: not-allowed;
36
- background: var(--color-bg-subtle);
37
- opacity: 0.7;
37
+ background: var(--color-bg-muted);
38
+ border-color: var(--color-border-light);
38
39
  }
39
40
 
40
41
  &.error {
@@ -10,27 +10,141 @@
10
10
  font-family: inherit;
11
11
  font-size: var(--text-sm);
12
12
  font-weight: var(--font-medium);
13
- color: var(--color-text-muted);
14
13
  cursor: pointer;
15
- background: var(--color-bg);
16
14
  border: 1px solid var(--color-border);
17
15
  border-radius: var(--radius);
18
16
  transition: all var(--transition);
19
17
 
20
- &:hover:not(.disabled) {
21
- color: var(--color-text);
22
- background: var(--color-bg-subtle);
23
- border-color: var(--color-text-muted);
18
+ /* Primary severity (default) */
19
+ &.primary {
20
+ color: var(--color-text-muted);
21
+ background: var(--color-bg);
22
+
23
+ &:hover:not(:disabled) {
24
+ color: var(--color-text);
25
+ background: var(--color-bg-subtle);
26
+ border-color: var(--color-text-muted);
27
+ }
28
+
29
+ &.active {
30
+ color: var(--color-text-inverse);
31
+ background: var(--color-primary);
32
+ border-color: var(--color-primary);
33
+ }
34
+ }
35
+
36
+ /* Secondary severity */
37
+ &.secondary {
38
+ color: var(--color-text-muted);
39
+ background: var(--color-bg);
40
+
41
+ &:hover:not(:disabled) {
42
+ color: var(--color-text);
43
+ background: var(--color-bg-subtle);
44
+ border-color: var(--color-text-muted);
45
+ }
46
+
47
+ &.active {
48
+ color: var(--color-text);
49
+ background: var(--color-bg-subtle);
50
+ border-color: var(--color-text-muted);
51
+ }
52
+ }
53
+
54
+ /* Warning severity */
55
+ &.warning {
56
+ color: var(--color-text-muted);
57
+ background: var(--color-bg);
58
+
59
+ &:hover:not(:disabled) {
60
+ color: var(--color-text);
61
+ background: var(--color-bg-subtle);
62
+ border-color: var(--color-text-muted);
63
+ }
64
+
65
+ &.active {
66
+ color: var(--color-yellow-dark);
67
+ background: var(--color-yellow-light);
68
+ border-color: var(--color-yellow);
69
+ }
70
+ }
71
+
72
+ /* Danger severity */
73
+ &.danger {
74
+ color: var(--color-text-muted);
75
+ background: var(--color-bg);
76
+
77
+ &:hover:not(:disabled) {
78
+ color: var(--color-text);
79
+ background: var(--color-bg-subtle);
80
+ border-color: var(--color-text-muted);
81
+ }
82
+
83
+ &.active {
84
+ color: var(--color-text-inverse);
85
+ background: var(--color-danger);
86
+ border-color: var(--color-danger);
87
+ }
24
88
  }
25
89
 
26
- &.active {
27
- color: var(--color-text-inverse);
28
- background: var(--color-primary);
29
- border-color: var(--color-primary);
90
+ /* Ghost severity */
91
+ &.ghost {
92
+ color: var(--color-text-muted);
93
+ background: transparent;
94
+ border-color: transparent;
95
+
96
+ &:hover:not(:disabled) {
97
+ color: var(--color-text);
98
+ background: var(--color-bg-subtle);
99
+ border-color: transparent;
100
+ }
101
+
102
+ &.active {
103
+ color: var(--color-text);
104
+ background: var(--color-bg-subtle);
105
+ border-color: transparent;
106
+ }
30
107
  }
31
108
 
32
- &.disabled {
109
+ &:disabled {
110
+ color: var(--color-text-disabled);
111
+ pointer-events: none;
33
112
  cursor: not-allowed;
34
- opacity: 0.5;
113
+ background: var(--color-bg-disabled);
114
+ border-color: var(--color-border-disabled);
115
+
116
+ &.primary.active {
117
+ color: var(--color-primary-disabled);
118
+ background: var(--color-primary-bg-disabled);
119
+ border-color: var(--color-primary-bg-disabled);
120
+ }
121
+
122
+ &.secondary.active {
123
+ color: var(--color-text-disabled);
124
+ background: var(--color-bg-disabled);
125
+ border-color: var(--color-border-disabled);
126
+ }
127
+
128
+ &.danger.active {
129
+ color: var(--color-danger-disabled);
130
+ background: var(--color-danger-bg-disabled);
131
+ border-color: var(--color-danger-bg-disabled);
132
+ }
133
+
134
+ &.warning.active {
135
+ color: var(--color-warning-disabled);
136
+ background: transparent;
137
+ border-color: var(--color-warning-disabled);
138
+ }
139
+
140
+ &.ghost {
141
+ background: transparent;
142
+ border-color: transparent;
143
+
144
+ &.active {
145
+ background: transparent;
146
+ border-color: transparent;
147
+ }
148
+ }
35
149
  }
36
150
  }
@@ -8,9 +8,8 @@
8
8
  margin: 0;
9
9
  border: none;
10
10
 
11
- &.disabled {
11
+ &:disabled {
12
12
  cursor: not-allowed;
13
- opacity: 0.5;
14
13
  }
15
14
  }
16
15
 
@@ -37,7 +36,7 @@
37
36
  border-left: none;
38
37
  }
39
38
 
40
- &:hover:not(.disabled):not(.active) {
39
+ &:hover:not(:disabled):not(.active) {
41
40
  color: var(--color-text);
42
41
  background: var(--color-primary-light);
43
42
  border-color: var(--color-primary-light);
@@ -49,7 +48,10 @@
49
48
  border-color: var(--color-primary);
50
49
  }
51
50
 
52
- &.disabled {
51
+ &:disabled {
52
+ color: var(--color-text-disabled);
53
53
  cursor: not-allowed;
54
+ background: var(--color-bg-disabled);
55
+ border-color: var(--color-border-disabled);
54
56
  }
55
57
  }
package/styles/Tree.css CHANGED
@@ -50,9 +50,15 @@
50
50
  border: none;
51
51
  transition: color var(--transition);
52
52
 
53
- &:hover {
53
+ &:hover:not(:disabled) {
54
54
  color: var(--color-text);
55
55
  }
56
+
57
+ &:disabled {
58
+ color: var(--color-text-light);
59
+ pointer-events: none;
60
+ cursor: not-allowed;
61
+ }
56
62
  }
57
63
 
58
64
  .PaTree-togglePlaceholder {
@@ -142,6 +142,10 @@
142
142
  overflow-y: auto;
143
143
  }
144
144
 
145
+ ._mobile .PaSidebar-nav {
146
+ padding: 0 0 var(--space-2);
147
+ }
148
+
145
149
  .PaSidebar-footer {
146
150
  flex-shrink: 0;
147
151
  padding-top: var(--space-3);
@@ -324,10 +328,6 @@
324
328
  align-items: center;
325
329
  height: 100%;
326
330
  padding: 0 var(--space-6);
327
-
328
- &.alignBottom {
329
- align-items: flex-end;
330
- }
331
331
  }
332
332
 
333
333
  .PaNavbar-item.withBorder,
@@ -50,8 +50,21 @@
50
50
  --color-text: #1e293b;
51
51
  --color-text-light: #64748b;
52
52
  --color-text-muted: #475569;
53
+ --color-text-disabled: #868b92;
53
54
  --color-text-inverse: #ffffff;
54
55
 
56
+ /* Disabled state colors */
57
+ --color-bg-disabled: #e8eaed;
58
+ --color-border-disabled: #c8ccd2;
59
+
60
+ /* Semantic disabled colors (desaturated variants) */
61
+ --color-primary-disabled: #7da8a4;
62
+ --color-primary-bg-disabled: #e0eeec;
63
+ --color-danger-disabled: #c9929d;
64
+ --color-danger-bg-disabled: #f5e4e7;
65
+ --color-warning-disabled: #c9a96b;
66
+ --color-warning-bg-disabled: #f9f3e3;
67
+
55
68
  /* ========================================
56
69
  Background Colors
57
70
  Warm sunny palette - like morning light
@@ -72,7 +85,7 @@
72
85
  --color-bg-sidebar-hover: #334155;
73
86
  --color-text-sidebar: #e2e8f0;
74
87
  --color-text-sidebar-muted: #94a3b8;
75
- --color-bg-muted: #fafafa;
88
+ --color-bg-muted: #eee;
76
89
 
77
90
  /* Sidebar hover colors - light green tints */
78
91
  --color-hover-sidebar-dark: #40a59d;
package/dist/Switch.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import type { ChangeEvent, InputHTMLAttributes } from "react";
2
- import "../styles/Switch.css";
3
- export interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange"> {
4
- checked: boolean;
5
- onChange?: (checked: boolean, ev: ChangeEvent<HTMLInputElement>) => void;
6
- label?: string;
7
- className?: string;
8
- }
9
- export declare function Switch({ checked, onChange, label, className, ...rest }: SwitchProps): import("react/jsx-runtime").JSX.Element;
package/dist/Switch.js DELETED
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { clsx } from "clsx";
3
- import "../styles/Switch.css";
4
- export function Switch({ checked, onChange, label, className, ...rest }) {
5
- const handleChange = (e) => {
6
- onChange?.(e.target.checked, e);
7
- };
8
- if (label) {
9
- return (_jsxs("label", { className: clsx("PaSwitch", className), children: [_jsx("input", { className: "PaSwitch-input", type: "checkbox", checked: checked, onChange: handleChange, ...rest }), _jsx("span", { className: "PaSwitch-track", children: _jsx("span", { className: "PaSwitch-thumb" }) }), _jsx("span", { className: "PaSwitch-label", children: label })] }));
10
- }
11
- return (_jsxs("span", { className: clsx("PaSwitch", className), children: [_jsx("input", { className: "PaSwitch-input", type: "checkbox", checked: checked, onChange: handleChange, ...rest }), _jsx("span", { className: "PaSwitch-track", children: _jsx("span", { className: "PaSwitch-thumb" }) })] }));
12
- }