@paroicms/react-ui 0.5.0 → 0.5.2

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 (50) hide show
  1. package/dist/Button.js +7 -1
  2. package/dist/Checkbox.d.ts +4 -3
  3. package/dist/Checkbox.js +5 -7
  4. package/dist/DateInput.d.ts +5 -3
  5. package/dist/DateInput.js +7 -4
  6. package/dist/Dialog.d.ts +4 -2
  7. package/dist/Dialog.js +30 -27
  8. package/dist/InputNumber.d.ts +2 -2
  9. package/dist/InputNumber.js +5 -5
  10. package/dist/InputText.d.ts +3 -4
  11. package/dist/InputText.js +7 -6
  12. package/dist/MultiSelect.d.ts +3 -2
  13. package/dist/MultiSelect.js +27 -24
  14. package/dist/PasswordInput.d.ts +5 -3
  15. package/dist/PasswordInput.js +7 -4
  16. package/dist/PopupMenu.d.ts +3 -4
  17. package/dist/PopupMenu.js +13 -51
  18. package/dist/RadioButton.d.ts +4 -4
  19. package/dist/RadioButton.js +5 -5
  20. package/dist/Select.d.ts +3 -4
  21. package/dist/Select.js +5 -5
  22. package/dist/SplitButton.d.ts +1 -0
  23. package/dist/SplitButton.js +12 -15
  24. package/dist/Switch.d.ts +2 -2
  25. package/dist/Switch.js +1 -1
  26. package/dist/Textarea.d.ts +5 -3
  27. package/dist/Textarea.js +7 -4
  28. package/dist/Tooltip.d.ts +1 -1
  29. package/dist/Tooltip.js +11 -32
  30. package/dist/alert-stack.d.ts +3 -1
  31. package/dist/alert-stack.js +2 -2
  32. package/dist/popup-positioning.d.ts +10 -0
  33. package/dist/popup-positioning.js +160 -0
  34. package/package.json +6 -6
  35. package/styles/Alert.css +1 -0
  36. package/styles/Checkbox.css +7 -6
  37. package/styles/DateInput.css +2 -25
  38. package/styles/Dialog.css +35 -22
  39. package/styles/InputNumber.css +2 -25
  40. package/styles/InputText.css +16 -31
  41. package/styles/MultiSelect.css +8 -23
  42. package/styles/PasswordInput.css +7 -18
  43. package/styles/RadioButton.css +6 -5
  44. package/styles/Select.css +12 -27
  45. package/styles/SplitButton.css +2 -8
  46. package/styles/Textarea.css +1 -24
  47. package/styles/Tooltip.css +4 -18
  48. package/styles/Tree.css +4 -3
  49. package/styles/theme/field.css +29 -0
  50. package/styles/theme/index.css +1 -0
@@ -1,33 +1,17 @@
1
1
  /* ========================================
2
2
  InputText Component
3
3
  ======================================== */
4
- .PaInputText {
4
+ .PaTextField {
5
5
  display: flex;
6
6
  flex-direction: column;
7
7
  gap: var(--space-2);
8
8
 
9
- &.error .PaInputText-field {
9
+ &.error .PaTextInput {
10
10
  border-color: var(--color-danger);
11
11
  }
12
-
13
- &.fullWidth {
14
- width: 100%;
15
- }
16
- }
17
-
18
- .PaInputText-wrapper {
19
- display: flex;
20
- flex-direction: column;
21
- gap: var(--space-2);
22
- }
23
-
24
- .PaInputText-label {
25
- font-size: var(--text-sm);
26
- font-weight: var(--font-medium);
27
- color: var(--color-text);
28
12
  }
29
13
 
30
- .PaInputText-field {
14
+ .PaTextInput {
31
15
  width: 100%;
32
16
  padding: var(--space-2) var(--space-3);
33
17
  font-family: inherit;
@@ -41,7 +25,7 @@
41
25
  border-color var(--transition),
42
26
  box-shadow var(--transition);
43
27
 
44
- &:hover {
28
+ &:hover:not(:disabled) {
45
29
  border-color: var(--color-primary);
46
30
  }
47
31
 
@@ -50,43 +34,44 @@
50
34
  border-color: var(--color-primary);
51
35
  box-shadow: 0 0 0 3px var(--color-primary-light);
52
36
  }
53
- }
54
37
 
55
- .PaInputText-error {
56
- font-size: var(--text-xs);
57
- color: var(--color-danger);
38
+ &:disabled {
39
+ cursor: not-allowed;
40
+ background: var(--color-bg-subtle);
41
+ opacity: 0.7;
42
+ }
58
43
  }
59
44
 
60
- .PaInputText-row {
45
+ .PaTextField-row {
61
46
  display: flex;
62
47
  gap: var(--space-1);
63
48
 
64
- .PaInputText-field {
49
+ .PaTextInput {
65
50
  flex: 1;
66
51
  min-width: 0;
67
52
  }
68
53
  }
69
54
 
70
- .PaInputText-iconWrapper {
55
+ .PaTextField-iconWrapper {
71
56
  position: relative;
72
57
  display: flex;
73
58
 
74
- .PaInputText-field {
59
+ .PaTextInput {
75
60
  padding-left: var(--space-10);
76
61
  }
77
62
 
78
- &.iconRight .PaInputText-icon {
63
+ &.iconRight .PaTextField-icon {
79
64
  right: var(--space-3);
80
65
  left: auto;
81
66
  }
82
67
 
83
- &.iconRight .PaInputText-field {
68
+ &.iconRight .PaTextInput {
84
69
  padding-right: var(--space-10);
85
70
  padding-left: var(--space-3);
86
71
  }
87
72
  }
88
73
 
89
- .PaInputText-icon {
74
+ .PaTextField-icon {
90
75
  position: absolute;
91
76
  top: 50%;
92
77
  left: var(--space-3);
@@ -45,7 +45,7 @@
45
45
  border-color: var(--color-primary);
46
46
  }
47
47
 
48
- &.open {
48
+ &:has(+ .PaMultiSelect-dropdown:popover-open) {
49
49
  border-color: var(--color-primary);
50
50
  box-shadow: 0 0 0 3px var(--color-primary-light);
51
51
  }
@@ -77,7 +77,11 @@
77
77
  .PaMultiSelect-chipRemove {
78
78
  display: flex;
79
79
  align-items: center;
80
+ justify-content: center;
81
+ width: 25px;
82
+ height: 25px;
80
83
  padding: 0;
84
+ margin: calc(-1 * var(--space-1));
81
85
  color: var(--color-text-muted);
82
86
  cursor: pointer;
83
87
  background: transparent;
@@ -96,12 +100,11 @@
96
100
 
97
101
  .PaMultiSelect-dropdown {
98
102
  position: absolute;
99
- top: calc(100% + var(--space-1));
100
- right: 0;
101
- left: 0;
102
- z-index: var(--z-dropdown);
103
+ inset: auto;
104
+ z-index: var(--z-popover);
103
105
  max-height: 250px;
104
106
  padding: var(--space-2);
107
+ margin: 0;
105
108
  overflow-y: auto;
106
109
  background: var(--color-bg-elevated);
107
110
  border: 1px solid var(--color-border);
@@ -134,24 +137,6 @@
134
137
  }
135
138
  }
136
139
 
137
- .PaMultiSelect-checkbox {
138
- display: flex;
139
- align-items: center;
140
- justify-content: center;
141
- width: 16px;
142
- height: 16px;
143
- font-size: var(--text-xs);
144
- color: var(--color-primary);
145
- border: 1px solid var(--color-border);
146
- border-radius: var(--radius-sm);
147
-
148
- .PaMultiSelect-option.selected & {
149
- color: var(--color-text-inverse);
150
- background: var(--color-primary);
151
- border-color: var(--color-primary);
152
- }
153
- }
154
-
155
140
  .PaMultiSelect-error {
156
141
  font-size: var(--text-xs);
157
142
  color: var(--color-danger);
@@ -7,18 +7,6 @@
7
7
  gap: var(--space-2);
8
8
  }
9
9
 
10
- .PaPasswordInput-wrapper {
11
- display: flex;
12
- flex-direction: column;
13
- gap: var(--space-2);
14
- }
15
-
16
- .PaPasswordInput-label {
17
- font-size: var(--text-sm);
18
- font-weight: var(--font-medium);
19
- color: var(--color-text);
20
- }
21
-
22
10
  .PaPasswordInput-inputWrapper {
23
11
  position: relative;
24
12
  display: flex;
@@ -43,7 +31,7 @@
43
31
  border-color var(--transition),
44
32
  box-shadow var(--transition);
45
33
 
46
- &:hover {
34
+ &:hover:not(:disabled) {
47
35
  border-color: var(--color-primary);
48
36
  }
49
37
 
@@ -52,6 +40,12 @@
52
40
  border-color: var(--color-primary);
53
41
  box-shadow: 0 0 0 3px var(--color-primary-light);
54
42
  }
43
+
44
+ &:disabled {
45
+ cursor: not-allowed;
46
+ background: var(--color-bg-subtle);
47
+ opacity: 0.7;
48
+ }
55
49
  }
56
50
 
57
51
  .PaPasswordInput-toggle {
@@ -73,8 +67,3 @@
73
67
  color: var(--color-text);
74
68
  }
75
69
  }
76
-
77
- .PaPasswordInput-error {
78
- font-size: var(--text-xs);
79
- color: var(--color-danger);
80
- }
@@ -9,7 +9,7 @@
9
9
  user-select: none;
10
10
  }
11
11
 
12
- .PaRadioButton-input {
12
+ .PaRadioInput {
13
13
  display: flex;
14
14
  flex-shrink: 0;
15
15
  align-items: center;
@@ -24,7 +24,7 @@
24
24
  border-radius: var(--radius-full);
25
25
  transition: all var(--transition);
26
26
 
27
- &:hover {
27
+ &:hover:not(:disabled) {
28
28
  border-color: var(--color-primary);
29
29
  }
30
30
 
@@ -54,7 +54,8 @@
54
54
  }
55
55
  }
56
56
 
57
- .PaRadioButton-label {
58
- font-size: var(--text-sm);
59
- color: var(--color-text);
57
+ .PaRadioGroup {
58
+ display: flex;
59
+ flex-wrap: wrap;
60
+ gap: var(--space-3);
60
61
  }
package/styles/Select.css CHANGED
@@ -1,37 +1,21 @@
1
1
  /* ========================================
2
2
  Select Component
3
3
  ======================================== */
4
- .PaSelect {
4
+ .PaSelectField {
5
5
  display: flex;
6
6
  flex-direction: column;
7
7
  gap: var(--space-2);
8
8
 
9
- &.error .PaSelect-field {
9
+ &.error .PaSelect {
10
10
  border-color: var(--color-danger);
11
11
  }
12
-
13
- &.fullWidth {
14
- width: 100%;
15
- }
16
- }
17
-
18
- .PaSelect-wrapper {
19
- display: flex;
20
- flex-direction: column;
21
- gap: var(--space-2);
22
12
  }
23
13
 
24
- .PaSelect-label {
25
- font-size: var(--text-sm);
26
- font-weight: var(--font-medium);
27
- color: var(--color-text);
28
- }
29
-
30
- .PaSelect-fieldWrapper {
14
+ .PaSelectField-wrapper {
31
15
  position: relative;
32
16
  }
33
17
 
34
- .PaSelect-field {
18
+ .PaSelect {
35
19
  width: 100%;
36
20
  padding: var(--space-2) var(--space-8) var(--space-2) var(--space-3);
37
21
  font-family: inherit;
@@ -44,7 +28,7 @@
44
28
  border-radius: var(--radius);
45
29
  transition: border-color var(--transition);
46
30
 
47
- &:hover {
31
+ &:hover:not(:disabled) {
48
32
  border-color: var(--color-primary);
49
33
  }
50
34
 
@@ -53,9 +37,15 @@
53
37
  border-color: var(--color-primary);
54
38
  box-shadow: 0 0 0 3px var(--color-primary-light);
55
39
  }
40
+
41
+ &:disabled {
42
+ cursor: not-allowed;
43
+ background: var(--color-bg-subtle);
44
+ opacity: 0.7;
45
+ }
56
46
  }
57
47
 
58
- .PaSelect-icon {
48
+ .PaSelectField-icon {
59
49
  position: absolute;
60
50
  top: 50%;
61
51
  right: var(--space-3);
@@ -65,8 +55,3 @@
65
55
  pointer-events: none;
66
56
  transform: translateY(-50%);
67
57
  }
68
-
69
- .PaSelect-error {
70
- font-size: var(--text-xs);
71
- color: var(--color-danger);
72
- }
@@ -68,21 +68,15 @@
68
68
  }
69
69
 
70
70
  .PaSplitBtn-menu {
71
- position: absolute;
72
- top: calc(100% + var(--space-1));
73
- right: 0;
71
+ inset: auto;
74
72
  z-index: var(--z-dropdown);
75
- display: none;
76
73
  min-width: 180px;
77
74
  padding: var(--space-2);
75
+ margin: 0;
78
76
  background: var(--color-bg-elevated);
79
77
  border: 1px solid var(--color-border);
80
78
  border-radius: var(--radius-md);
81
79
  box-shadow: var(--shadow-md);
82
-
83
- .PaSplitBtn.open & {
84
- display: block;
85
- }
86
80
  }
87
81
 
88
82
  .PaSplitBtn-menuItem {
@@ -2,24 +2,6 @@
2
2
  Textarea Component
3
3
  ======================================== */
4
4
  .PaTextarea {
5
- display: flex;
6
- flex-direction: column;
7
- gap: var(--space-2);
8
- }
9
-
10
- .PaTextarea-wrapper {
11
- display: flex;
12
- flex-direction: column;
13
- gap: var(--space-2);
14
- }
15
-
16
- .PaTextarea-label {
17
- font-size: var(--text-sm);
18
- font-weight: var(--font-medium);
19
- color: var(--color-text);
20
- }
21
-
22
- .PaTextarea-field {
23
5
  width: 100%;
24
6
  min-height: 120px;
25
7
  padding: var(--space-3);
@@ -39,7 +21,7 @@
39
21
  color: var(--color-text-light);
40
22
  }
41
23
 
42
- &:hover {
24
+ &:hover:not(:disabled) {
43
25
  border-color: var(--color-primary);
44
26
  }
45
27
 
@@ -59,8 +41,3 @@
59
41
  border-color: var(--color-danger);
60
42
  }
61
43
  }
62
-
63
- .PaTextarea-error {
64
- font-size: var(--text-xs);
65
- color: var(--color-danger);
66
- }
@@ -6,29 +6,15 @@
6
6
  }
7
7
 
8
8
  .PaTooltip {
9
- position: fixed;
10
- z-index: var(--z-tooltip);
9
+ inset: auto;
10
+ z-index: var(--z-popover);
11
11
  max-width: 200px;
12
12
  padding: var(--space-2) var(--space-3);
13
+ margin: 0;
13
14
  font-size: var(--text-xs);
14
15
  color: var(--color-text-inverse);
15
16
  pointer-events: none;
16
17
  background: var(--color-text);
18
+ border: none;
17
19
  border-radius: var(--radius);
18
-
19
- &.top {
20
- transform: translate(-50%, -100%);
21
- }
22
-
23
- &.bottom {
24
- transform: translateX(-50%);
25
- }
26
-
27
- &.left {
28
- transform: translate(-100%, -50%);
29
- }
30
-
31
- &.right {
32
- transform: translateY(-50%);
33
- }
34
20
  }
package/styles/Tree.css CHANGED
@@ -16,6 +16,7 @@
16
16
  }
17
17
 
18
18
  .PaTree-node {
19
+ position: relative;
19
20
  padding: var(--space-1) 0;
20
21
  list-style: none;
21
22
  }
@@ -141,7 +142,7 @@
141
142
  .PaTree-children .PaTree-node::before {
142
143
  position: absolute;
143
144
  top: 0;
144
- left: calc(-1 * var(--space-3));
145
+ left: calc(var(--space-2) + 11px - var(--space-6));
145
146
  height: 100%;
146
147
  content: "";
147
148
  border-left: 1.5px solid var(--color-border);
@@ -150,8 +151,8 @@
150
151
  .PaTree-children .PaTree-node::after {
151
152
  position: absolute;
152
153
  top: 1rem;
153
- left: calc(-1 * var(--space-3));
154
- width: var(--space-2);
154
+ left: calc(var(--space-2) + 11px - var(--space-6));
155
+ width: calc(var(--space-6));
155
156
  content: "";
156
157
  border-top: 1.5px solid var(--color-border);
157
158
  }
@@ -0,0 +1,29 @@
1
+ /* ========================================
2
+ PaField - Form Field Layout Block
3
+ ======================================== */
4
+ .PaField {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: var(--space-2);
8
+
9
+ &:not(:last-child) {
10
+ margin-bottom: var(--space-4);
11
+ }
12
+ }
13
+
14
+ .PaField-label {
15
+ display: block;
16
+ font-size: var(--text-xs);
17
+ font-weight: var(--font-semibold);
18
+ color: var(--color-text-muted);
19
+ text-transform: uppercase;
20
+ letter-spacing: 0.03em;
21
+ }
22
+
23
+ /* ========================================
24
+ PaFieldError - Field Error Message Block
25
+ ======================================== */
26
+ .PaFieldError {
27
+ font-size: var(--text-xs);
28
+ color: var(--color-danger);
29
+ }
@@ -13,3 +13,4 @@
13
13
  @import "./base.css" layer(base);
14
14
  @import "./common.css" layer(common);
15
15
  @import "./margins.css";
16
+ @import "./field.css";