@lion-npm/ui 1.0.1 → 1.0.3

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 (75) hide show
  1. package/dist/index.js +2564 -0
  2. package/dist/style.css +2 -0
  3. package/package.json +20 -2
  4. package/.oxlintrc.json +0 -8
  5. package/AGENTS.md +0 -0
  6. package/Dockerfile +0 -7
  7. package/compose.yml +0 -14
  8. package/index.html +0 -15
  9. package/src/App.tsx +0 -81
  10. package/src/assets/css/buttons/buttons-android.css +0 -251
  11. package/src/assets/css/buttons/buttons-ios.css +0 -213
  12. package/src/assets/css/buttons/buttons-web.css +0 -138
  13. package/src/assets/css/custom.css +0 -8
  14. package/src/assets/css/index.css +0 -60
  15. package/src/assets/css/inputs/inputs-android.css +0 -259
  16. package/src/assets/css/inputs/inputs-bootstrap.css +0 -74
  17. package/src/assets/css/inputs/inputs-ios.css +0 -268
  18. package/src/assets/css/loadings/loading-bar.css +0 -86
  19. package/src/assets/css/modals/modals.css +0 -236
  20. package/src/components/buttons/AndroidButton.tsx +0 -43
  21. package/src/components/buttons/BootstrapButton.tsx +0 -50
  22. package/src/components/buttons/IOSButton.tsx +0 -42
  23. package/src/components/buttons/LionButton.tsx +0 -76
  24. package/src/components/inputs/AndroidInput.tsx +0 -158
  25. package/src/components/inputs/BootstrapInput.tsx +0 -106
  26. package/src/components/inputs/IOSInput.tsx +0 -163
  27. package/src/components/loadings/LoadingBar.tsx +0 -21
  28. package/src/components/modals/LionModal.tsx +0 -157
  29. package/src/context/LionUIComponentsContext.tsx +0 -65
  30. package/src/features/Header.tsx +0 -77
  31. package/src/features/VariantList.tsx +0 -19
  32. package/src/features/buttons/ButtonsSection.tsx +0 -7
  33. package/src/features/buttons/components/ButtonsAndroidSection.tsx +0 -79
  34. package/src/features/buttons/components/ButtonsBootstrapSection.tsx +0 -77
  35. package/src/features/buttons/components/ButtonsCustomSection.tsx +0 -234
  36. package/src/features/buttons/components/ButtonsIOSSection.tsx +0 -78
  37. package/src/features/inputs/InputsSection.tsx +0 -7
  38. package/src/features/inputs/components/InputsAndroidSection.tsx +0 -155
  39. package/src/features/inputs/components/InputsBootstrapSection.tsx +0 -154
  40. package/src/features/inputs/components/InputsIOSSection.tsx +0 -156
  41. package/src/features/loadings/LoadingSection.tsx +0 -5
  42. package/src/features/loadings/components/LoadingBarSection.tsx +0 -74
  43. package/src/features/modals/ModalsSection.tsx +0 -5
  44. package/src/features/modals/components/ModalsAndroidSection.tsx +0 -103
  45. package/src/features/modals/components/ModalsDefaultForm.tsx +0 -31
  46. package/src/features/modals/components/ModalsDefaultInput.tsx +0 -22
  47. package/src/features/modals/components/ModalsIOSSection.tsx +0 -106
  48. package/src/features/modals/components/ModalsWebSection.tsx +0 -99
  49. package/src/interfaces/LionUIComponentsProviderProps.tsx +0 -7
  50. package/src/interfaces/LionUIContextProps.tsx +0 -6
  51. package/src/interfaces/LionUIState.tsx +0 -8
  52. package/src/main.tsx +0 -9
  53. package/src/types/Android/AndroidInputShapeTypes.tsx +0 -7
  54. package/src/types/Android/AndroidInputStyleTypes.tsx +0 -7
  55. package/src/types/Android/AndroidShapeTypes.tsx +0 -6
  56. package/src/types/Android/AndroidStyleTypes.tsx +0 -9
  57. package/src/types/ButtonTypes.tsx +0 -9
  58. package/src/types/IOS/IOSShapeTypes.tsx +0 -7
  59. package/src/types/IOS/IOSStyleTypes.tsx +0 -9
  60. package/src/types/IOS/iOSInputShapeTypes.tsx +0 -9
  61. package/src/types/IOS/iOSInputStyleTypes.tsx +0 -11
  62. package/src/types/InputTypes.tsx +0 -13
  63. package/src/types/PlatformTypes.tsx +0 -9
  64. package/src/types/SizeTypes.tsx +0 -11
  65. package/src/types/VariantTypes.tsx +0 -19
  66. package/src/types/Web/BootstrapInputShapeTypes.tsx +0 -9
  67. package/src/types/Web/BootstrapInputStyleTypes.tsx +0 -8
  68. package/src/types/Web/BootstrapShapeTypes.tsx +0 -8
  69. package/src/types/Web/BootstrapStyleTypes.tsx +0 -7
  70. package/tsconfig.app.json +0 -26
  71. package/tsconfig.json +0 -7
  72. package/tsconfig.node.json +0 -23
  73. package/vite.config.ts +0 -11
  74. /package/{public → dist}/favicon.svg +0 -0
  75. /package/{public → dist}/icons.svg +0 -0
@@ -1,74 +0,0 @@
1
- /* ==========================================================================
2
- LION UI LIBRARY - BOOTSTRAP 5 INPUT SYSTEM
3
- ========================================================================== */
4
-
5
- /* --- Color Variables Mapping per Variant --- */
6
- .form-control.bootstrap-variant-primary { --bootstrap-active-color: var(--bs-primary, #0d6efd); }
7
- .form-control.bootstrap-variant-secondary { --bootstrap-active-color: var(--bs-secondary, #6c757d); }
8
- .form-control.bootstrap-variant-success { --bootstrap-active-color: var(--bs-success, #198754); }
9
- .form-control.bootstrap-variant-danger { --bootstrap-active-color: var(--bs-danger, #dc3545); }
10
- .form-control.bootstrap-variant-warning { --bootstrap-active-color: var(--bs-warning, #ffc107); }
11
- .form-control.bootstrap-variant-info { --bootstrap-active-color: var(--bs-info, #0dcaf0); }
12
- .form-control.bootstrap-variant-dark { --bootstrap-active-color: var(--bs-dark, #212529); }
13
-
14
- /* Custom Lion Variants */
15
- .form-control.bootstrap-variant-lion-packages { --bootstrap-active-color: var(--lion-packages, #6f42c1); }
16
- .form-control.bootstrap-variant-lion-parking { --bootstrap-active-color: var(--lion-parking, #20c997); }
17
- .form-control.bootstrap-variant-lion-tech { --bootstrap-active-color: var(--lion-tech, #fd7e14); }
18
- .form-control.bootstrap-variant-lion-glam { --bootstrap-active-color: var(--lion-glam, #e83e8c); }
19
-
20
- /* --- Native Bootstrap Focus Overrides --- */
21
- .form-control.bootstrap-variant-primary:focus,
22
- .form-control.bootstrap-variant-secondary:focus,
23
- .form-control.bootstrap-variant-success:focus,
24
- .form-control.bootstrap-variant-danger:focus,
25
- .form-control.bootstrap-variant-warning:focus,
26
- .form-control.bootstrap-variant-info:focus,
27
- .form-control.bootstrap-variant-dark:focus,
28
- .form-control.bootstrap-variant-lion-packages:focus,
29
- .form-control.bootstrap-variant-lion-parking:focus,
30
- .form-control.bootstrap-variant-lion-tech:focus,
31
- .form-control.bootstrap-variant-lion-glam:focus {
32
- border-color: var(--bootstrap-active-color);
33
- box-shadow: 0 0 0 0.25rem color-mix(in srgb, var(--bootstrap-active-color) 25%, transparent);
34
- }
35
-
36
- /* --- Floating Label Color Synchronization --- */
37
- .form-floating:has(.form-control.bootstrap-variant-primary:focus) > label,
38
- .form-floating:has(.form-control.bootstrap-variant-primary:not(:placeholder-shown)) > label { color: var(--bs-primary); }
39
-
40
- .form-floating:has(.form-control.bootstrap-variant-secondary:focus) > label,
41
- .form-floating:has(.form-control.bootstrap-variant-secondary:not(:placeholder-shown)) > label { color: var(--bs-secondary); }
42
-
43
- .form-floating:has(.form-control.bootstrap-variant-success:focus) > label,
44
- .form-floating:has(.form-control.bootstrap-variant-success:not(:placeholder-shown)) > label { color: var(--bs-success); }
45
-
46
- .form-floating:has(.form-control.bootstrap-variant-danger:focus) > label,
47
- .form-floating:has(.form-control.bootstrap-variant-danger:not(:placeholder-shown)) > label { color: var(--bs-danger); }
48
-
49
- .form-floating:has(.form-control.bootstrap-variant-warning:focus) > label,
50
- .form-floating:has(.form-control.bootstrap-variant-warning:not(:placeholder-shown)) > label { color: var(--bs-warning); }
51
-
52
- .form-floating:has(.form-control.bootstrap-variant-info:focus) > label,
53
- .form-floating:has(.form-control.bootstrap-variant-info:not(:placeholder-shown)) > label { color: var(--bs-info); }
54
-
55
- .form-floating:has(.form-control.bootstrap-variant-dark:focus) > label,
56
- .form-floating:has(.form-control.bootstrap-variant-dark:not(:placeholder-shown)) > label { color: var(--bs-dark); }
57
-
58
- .form-floating:has(.form-control.bootstrap-variant-lion-packages:focus) > label,
59
- .form-floating:has(.form-control.bootstrap-variant-lion-packages:not(:placeholder-shown)) > label { color: var(--lion-packages, #6f42c1); }
60
-
61
- .form-floating:has(.form-control.bootstrap-variant-lion-parking:focus) > label,
62
- .form-floating:has(.form-control.bootstrap-variant-lion-parking:not(:placeholder-shown)) > label { color: var(--lion-parking, #20c997); }
63
-
64
- .form-floating:has(.form-control.bootstrap-variant-lion-tech:focus) > label,
65
- .form-floating:has(.form-control.bootstrap-variant-lion-tech:not(:placeholder-shown)) > label { color: var(--lion-tech, #fd7e14); }
66
-
67
- .form-floating:has(.form-control.bootstrap-variant-lion-glam:focus) > label,
68
- .form-floating:has(.form-control.bootstrap-variant-lion-glam:not(:placeholder-shown)) > label { color: var(--lion-glam, #e83e8c); }
69
-
70
- /* --- Shape Utility Overrides --- */
71
- .form-control.rounded-pill {
72
- padding-left: 1.25rem;
73
- padding-right: 1.25rem;
74
- }
@@ -1,268 +0,0 @@
1
- /* ==========================================================================
2
- LION UI LIBRARY - IOS INPUT SYSTEM (STANDARDIZED & ISOLATED)
3
- ========================================================================== */
4
-
5
- .ios-input-container {
6
- --ios-input-bg: var(--bs-body-bg, #ffffff);
7
- --ios-input-color: var(--bs-body-color, #212529);
8
- --ios-input-border-color: var(--bs-border-color, #dee2e6);
9
- --ios-input-placeholder-color: var(--bs-secondary-color, #6c757d);
10
- --ios-input-focus-color: var(--bs-primary, #0d6efd);
11
- --ios-input-error-color: var(--bs-danger, #dc3545);
12
- --ios-input-disabled-bg: var(--bs-tertiary-bg, #f8f9fa);
13
-
14
- display: flex;
15
- flex-direction: column;
16
- gap: 6px;
17
- font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", sans-serif;
18
- width: 100%;
19
- box-sizing: border-box;
20
- }
21
-
22
- .ios-input-label {
23
- font-size: 13px;
24
- font-weight: 600;
25
- color: var(--ios-input-color);
26
- margin-left: 4px;
27
- letter-spacing: -0.08px;
28
- }
29
-
30
- /* Wrapper Base */
31
- .ios-input-wrapper {
32
- position: relative;
33
- display: flex;
34
- align-items: center;
35
- background-color: var(--ios-input-bg);
36
- color: var(--ios-input-color);
37
- transition: all 0.2s ease-in-out;
38
- box-sizing: border-box;
39
- width: 100%;
40
- overflow: hidden;
41
- }
42
-
43
- /* --- Sizes (Scoped with ios-size-) --- */
44
- .ios-input-wrapper.ios-size-sx {
45
- min-height: 30px;
46
- font-size: 12px;
47
- padding: 0 8px;
48
- }
49
-
50
- .ios-input-wrapper.ios-size-sm {
51
- min-height: 36px;
52
- font-size: 14px;
53
- padding: 0 10px;
54
- }
55
-
56
- .ios-input-wrapper.ios-size-md {
57
- min-height: 44px;
58
- font-size: 16px;
59
- padding: 0 14px;
60
- }
61
-
62
- .ios-input-wrapper.ios-size-lg {
63
- min-height: 52px;
64
- font-size: 18px;
65
- padding: 0 16px;
66
- }
67
-
68
- /* --- Shapes (Scoped with ios-shape-) --- */
69
- .ios-input-wrapper.ios-shape-rounded {
70
- border-radius: 12px !important;
71
- }
72
-
73
- .ios-input-wrapper.ios-shape-pill {
74
- border-radius: 9999px !important;
75
- padding-left: 18px !important;
76
- padding-right: 18px !important;
77
- }
78
-
79
- .ios-input-wrapper.ios-shape-square {
80
- border-radius: 4px !important;
81
- }
82
-
83
- /* --- Style Types (Scoped with ios-style-) --- */
84
-
85
- .ios-input-wrapper.ios-style-rounded-border,
86
- .ios-input-wrapper.ios-style-outlined {
87
- border: 1.5px solid var(--ios-input-border-color);
88
- background-color: transparent;
89
- }
90
-
91
- .ios-input-wrapper.ios-style-rounded-border.is-focused,
92
- .ios-input-wrapper.ios-style-outlined.is-focused {
93
- border-color: var(--ios-active-color, var(--ios-input-focus-color));
94
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ios-active-color, var(--ios-input-focus-color)) 20%, transparent);
95
- }
96
-
97
- .ios-input-wrapper.ios-style-form {
98
- background-color: transparent;
99
- border: none;
100
- border-bottom: 1px solid var(--ios-input-border-color);
101
- border-radius: 0 !important;
102
- padding-left: 0 !important;
103
- padding-right: 0 !important;
104
- }
105
-
106
- .ios-input-wrapper.ios-style-form.is-focused {
107
- border-bottom-color: var(--ios-active-color, var(--ios-input-focus-color));
108
- box-shadow: none;
109
- }
110
-
111
- .ios-input-wrapper.ios-style-filled {
112
- background-color: var(--bs-tertiary-bg, #f1f3f5);
113
- border: 1px solid transparent;
114
- }
115
-
116
- .ios-input-wrapper.ios-style-filled.is-focused {
117
- background-color: var(--ios-input-bg);
118
- border-color: var(--ios-active-color, var(--ios-input-focus-color));
119
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ios-active-color, var(--ios-input-focus-color)) 20%, transparent);
120
- }
121
-
122
- .ios-input-wrapper.ios-style-plain {
123
- background-color: transparent;
124
- border: none;
125
- padding: 0 !important;
126
- }
127
-
128
- /* --- Variants Mapping (Scoped with ios-variant-) --- */
129
- .ios-input-container.ios-variant-primary {
130
- --ios-active-color: var(--bs-primary, #0d6efd);
131
- }
132
-
133
- .ios-input-container.ios-variant-secondary {
134
- --ios-active-color: var(--bs-secondary, #6c757d);
135
- }
136
-
137
- .ios-input-container.ios-variant-success {
138
- --ios-active-color: var(--bs-success, #198754);
139
- }
140
-
141
- .ios-input-container.ios-variant-danger {
142
- --ios-active-color: var(--bs-danger, #dc3545);
143
- }
144
-
145
- .ios-input-container.ios-variant-warning {
146
- --ios-active-color: var(--bs-warning, #ffc107);
147
- }
148
-
149
- .ios-input-container.ios-variant-info {
150
- --ios-active-color: var(--bs-info, #0dcaf0);
151
- }
152
-
153
- .ios-input-container.ios-variant-dark {
154
- --ios-active-color: var(--bs-dark, #212529);
155
- }
156
-
157
- /* Custom Lion Variants */
158
- .ios-input-container.ios-variant-lion-packages {
159
- --ios-active-color: var(--lion-packages, #6f42c1);
160
- }
161
-
162
- .ios-input-container.ios-variant-lion-parking {
163
- --ios-active-color: var(--lion-parking, #20c997);
164
- }
165
-
166
- .ios-input-container.ios-variant-lion-tech {
167
- --ios-active-color: var(--lion-tech, #fd7e14);
168
- }
169
-
170
- .ios-input-container.ios-variant-lion-glam {
171
- --ios-active-color: var(--lion-glam, #e83e8c);
172
- }
173
-
174
- /* --- States --- */
175
- .ios-input-wrapper.has-error {
176
- border-color: var(--ios-input-error-color) !important;
177
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ios-input-error-color) 20%, transparent) !important;
178
- }
179
-
180
- .ios-input-wrapper.is-disabled {
181
- background-color: var(--ios-input-disabled-bg);
182
- opacity: 0.6;
183
- cursor: not-allowed;
184
- }
185
-
186
- .ios-input-wrapper.is-readonly {
187
- background-color: var(--ios-input-disabled-bg);
188
- }
189
-
190
- /* --- Internal Elements --- */
191
- .ios-input-element {
192
- width: 100%;
193
- border: none;
194
- outline: none;
195
- background: transparent;
196
- color: inherit;
197
- padding: 6px 0;
198
- font-family: inherit;
199
- font-size: inherit;
200
- }
201
-
202
- .ios-input-element::placeholder {
203
- color: var(--ios-input-placeholder-color);
204
- opacity: 1;
205
- }
206
-
207
- .ios-input-icon-left,
208
- .ios-input-icon-right {
209
- display: flex;
210
- align-items: center;
211
- justify-content: center;
212
- color: var(--ios-input-placeholder-color);
213
- flex-shrink: 0;
214
- }
215
-
216
- .ios-input-icon-left {
217
- margin-right: 8px;
218
- }
219
-
220
- .ios-input-icon-right {
221
- margin-left: 8px;
222
- }
223
-
224
- .input-prefix {
225
- margin-right: 6px;
226
- color: var(--ios-input-placeholder-color);
227
- }
228
-
229
- .input-suffix {
230
- margin-left: 6px;
231
- color: var(--ios-input-placeholder-color);
232
- }
233
-
234
- .ios-clear-button {
235
- border: none;
236
- background: var(--bs-secondary-bg, #e9ecef);
237
- color: var(--ios-input-color);
238
- border-radius: 50%;
239
- width: 18px;
240
- height: 18px;
241
- display: flex;
242
- align-items: center;
243
- justify-content: center;
244
- font-size: 10px;
245
- cursor: pointer;
246
- padding: 0;
247
- margin-left: 6px;
248
- flex-shrink: 0;
249
- transition: background 0.2s;
250
- }
251
-
252
- .ios-clear-button:hover {
253
- background: var(--bs-secondary, #6c757d);
254
- color: #fff;
255
- }
256
-
257
- .ios-input-helper-text {
258
- font-size: 12px;
259
- color: var(--ios-input-placeholder-color);
260
- margin-left: 4px;
261
- }
262
-
263
- .ios-input-error-text {
264
- font-size: 12px;
265
- color: var(--ios-input-error-color);
266
- margin-left: 4px;
267
- font-weight: 500;
268
- }
@@ -1,86 +0,0 @@
1
- .custom-progress-bar {
2
- position: relative;
3
- height: 4px;
4
- background-color: #E0E0E0;
5
- overflow: hidden;
6
- border-radius: 4px;
7
- --lion-active-color: var(--bs-primary, #0d6efd);
8
- }
9
-
10
- .custom-progress-bar.loading-variant-primary {
11
- --lion-active-color: var(--bs-primary, #0d6efd);
12
- }
13
-
14
- .custom-progress-bar.loading-variant-secondary {
15
- --lion-active-color: var(--bs-secondary, #6c757d);
16
- }
17
-
18
- .custom-progress-bar.loading-variant-success {
19
- --lion-active-color: var(--bs-success, #198754);
20
- }
21
-
22
- .custom-progress-bar.loading-variant-danger {
23
- --lion-active-color: var(--bs-danger, #dc3545);
24
- }
25
-
26
- .custom-progress-bar.loading-variant-warning {
27
- --lion-active-color: var(--bs-warning, #ffc107);
28
- }
29
-
30
- .custom-progress-bar.loading-variant-info {
31
- --lion-active-color: var(--bs-info, #0dcaf0);
32
- }
33
-
34
- .custom-progress-bar.loading-variant-light {
35
- --lion-active-color: var(--bs-dark, #212529);
36
- }
37
-
38
- .custom-progress-bar.loading-variant-dark {
39
- --lion-active-color: var(--bs-dark, #212529);
40
- }
41
-
42
- .custom-progress-bar.loading-variant-link {
43
- --lion-active-color: var(--bs-primary, #0d6efd);
44
- }
45
-
46
- .custom-progress-bar.loading-variant-lion-packages {
47
- --lion-active-color: var(--lion-packages, #6f42c1);
48
- }
49
-
50
- .custom-progress-bar.loading-variant-lion-parking {
51
- --lion-active-color: var(--lion-parking, #20c997);
52
- }
53
-
54
- .custom-progress-bar.loading-variant-lion-tech {
55
- --lion-active-color: var(--lion-tech, #fd7e14);
56
- }
57
-
58
- .custom-progress-bar.loading-variant-lion-glam {
59
- --lion-active-color: var(--lion-glam, #e83e8c);
60
- }
61
-
62
- .custom-progress-bar .indeterminate {
63
- position: absolute;
64
- background-color: var(--lion-active-color);
65
- top: 0;
66
- left: -40%;
67
- height: 100%;
68
- width: 40%;
69
- animation: indeterminate 1.2s infinite;
70
- border-radius: 4px;
71
- }
72
-
73
- @keyframes indeterminate {
74
- 0% {
75
- left: -40%;
76
- width: 40%;
77
- }
78
- 50% {
79
- left: 20%;
80
- width: 60%;
81
- }
82
- 100% {
83
- left: 100%;
84
- width: 40%;
85
- }
86
- }
@@ -1,236 +0,0 @@
1
- /* ==========================================
2
- GLOBAL BACKDROP ADJUSTMENT (Exclusive for modals)
3
- ========================================== */
4
- .modal-backdrop.web-modal-backdrop,
5
- .modal-backdrop.ios-modal-backdrop,
6
- .modal-backdrop.android-modal-backdrop,
7
- .web-modal ~ .modal-backdrop,
8
- .ios-modal ~ .modal-backdrop,
9
- .android-modal ~ .modal-backdrop {
10
- opacity: 0.45;
11
- backdrop-filter: blur(3px);
12
- -webkit-backdrop-filter: blur(3px);
13
- }
14
-
15
-
16
- /* ==========================================
17
- 1. WEB & BASE MODAL STYLES (.web-modal)
18
- ========================================== */
19
-
20
- .web-modal .modal-content {
21
- border: 1px solid rgba(0, 0, 0, 0.08) !important;
22
- border-radius: 12px !important;
23
- box-shadow: 0 12px 32px rgba(0, 0, 0, 0.1) !important;
24
- overflow: hidden;
25
- }
26
-
27
- .web-modal .custom-modal-title {
28
- font-size: 1.15rem;
29
- color: #212529;
30
- }
31
-
32
- .web-modal .custom-btn-group .btn-modal {
33
- width: auto;
34
- flex: 1 1 0;
35
- text-align: center;
36
- }
37
-
38
- .web-modal .custom-btn-group .btn-modal:not(:first-child)::before {
39
- content: "";
40
- position: absolute;
41
- top: 0;
42
- bottom: 0;
43
- left: -1px;
44
- width: 1px;
45
- height: auto;
46
- background-color: var(--bs-modal-footer-border-color);
47
- }
48
-
49
- /* Specific and encapsulated base button for Web Modal */
50
- .web-modal .btn-modal {
51
- background-color: transparent !important;
52
- border: none !important;
53
- box-shadow: none !important;
54
- outline: none !important;
55
- color: inherit !important;
56
- width: 100%;
57
- padding: 12px 10px;
58
- font-size: 16px;
59
- position: relative;
60
- box-sizing: border-box;
61
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0.15);
62
- }
63
-
64
- .web-modal .btn-modal:hover {
65
- background-color: rgba(0, 0, 0, 0.04) !important;
66
- }
67
-
68
- .web-modal .btn-modal:active {
69
- background-color: rgba(0, 0, 0, 0.08) !important;
70
- }
71
-
72
- .web-modal .btn-modal:focus,
73
- .web-modal .btn-modal:focus-visible,
74
- .web-modal .btn-modal:focus-within {
75
- background-color: transparent !important;
76
- box-shadow: none !important;
77
- }
78
-
79
-
80
- /* ==========================================
81
- 2. iOS STYLE DESIGN (.ios-modal)
82
- ========================================== */
83
-
84
- .ios-modal .modal-content {
85
- border: none !important;
86
- border-radius: 22px !important;
87
- backdrop-filter: blur(20px) saturate(180%);
88
- -webkit-backdrop-filter: blur(20px) saturate(180%);
89
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.18), 0 0 1px rgba(0, 0, 0, 0.2) !important;
90
- overflow: hidden;
91
- }
92
-
93
- .ios-modal .custom-modal-header {
94
- border-bottom: 1px solid rgba(60, 60, 67, 0.12) !important;
95
- position: relative;
96
- }
97
-
98
- .ios-modal .custom-modal-title {
99
- font-size: 1.1rem;
100
- letter-spacing: -0.2px;
101
- color: var(--lion-black, #000);
102
- }
103
-
104
- .ios-modal .custom-modal-header .btn-close {
105
- position: absolute;
106
- right: 16px;
107
- top: 50%;
108
- transform: translateY(-50%) !important;
109
- margin: 0 !important;
110
- padding: 8px !important;
111
- background-size: 10px;
112
- border-radius: 50%;
113
- opacity: 0.8 !important;
114
- }
115
-
116
- .ios-modal .custom-modal-body {
117
- font-size: 0.95rem;
118
- line-height: 1.5;
119
- }
120
-
121
- .ios-modal .custom-modal-footer {
122
- border-top: 1px solid rgba(60, 60, 67, 0.12) !important;
123
- background-color: transparent !important;
124
- }
125
-
126
- .ios-modal .custom-btn-group .btn-modal {
127
- flex: 1 1 0;
128
- padding: 14px 10px;
129
- font-size: 1rem;
130
- font-weight: 400;
131
- text-align: center;
132
- }
133
-
134
- .ios-modal .btn-modal-cancel {
135
- font-weight: 600;
136
- }
137
-
138
- .ios-modal .custom-btn-group .btn-modal:not(:first-child)::before {
139
- content: "";
140
- position: absolute;
141
- top: 0;
142
- bottom: 0;
143
- left: 0;
144
- width: 1px;
145
- background-color: rgba(60, 60, 67, 0.12);
146
- }
147
-
148
- .ios-modal .btn-modal {
149
- background-color: transparent !important;
150
- border: none !important;
151
- box-shadow: none !important;
152
- outline: none !important;
153
- position: relative;
154
- box-sizing: border-box;
155
- }
156
-
157
- .ios-modal .btn-modal:hover {
158
- background-color: rgba(0, 0, 0, 0.04) !important;
159
- }
160
-
161
- .ios-modal .btn-modal:active {
162
- background-color: rgba(0, 0, 0, 0.08) !important;
163
- }
164
-
165
-
166
- /* ==========================================
167
- 3. ANDROID / MATERIAL DESIGN STYLE (.android-modal)
168
- ========================================== */
169
-
170
- .android-modal .modal-content {
171
- border: none !important;
172
- border-radius: 28px !important;
173
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15) !important;
174
- overflow: hidden;
175
- }
176
-
177
- .android-modal .custom-modal-header {
178
- border-bottom: none !important;
179
- padding-top: 24px;
180
- padding-bottom: 8px;
181
- }
182
-
183
- .android-modal .custom-modal-title {
184
- font-size: 1.35rem;
185
- color: #1d1b20;
186
- font-weight: 500 !important;
187
- }
188
-
189
- .android-modal .custom-modal-body {
190
- font-size: 0.95rem;
191
- }
192
-
193
- .android-modal .custom-modal-footer {
194
- border-top: 1px solid rgba(0, 0, 0, 0.08) !important;
195
- padding: 0 !important;
196
- }
197
-
198
- .android-modal .custom-btn-group .btn-modal {
199
- flex: 1 1 0;
200
- padding: 14px 10px;
201
- font-size: 0.9rem;
202
- font-weight: 500;
203
- text-transform: uppercase;
204
- letter-spacing: 0.5px;
205
- text-align: center;
206
- }
207
-
208
- .android-modal .custom-btn-group .btn-modal:not(:first-child)::before {
209
- content: "";
210
- position: absolute;
211
- top: 0;
212
- bottom: 0;
213
- left: -1px;
214
- width: 1px;
215
- height: auto;
216
- background-color: rgba(0, 0, 0, 0.08);
217
- }
218
-
219
- .android-modal .btn-modal {
220
- background-color: transparent !important;
221
- border: none !important;
222
- box-shadow: none !important;
223
- outline: none !important;
224
- position: relative;
225
- box-sizing: border-box;
226
- }
227
-
228
- .android-modal .btn-modal:hover {
229
- background-color: rgba(103, 80, 164, 0.08) !important;
230
- color: var(--lion-black);
231
- }
232
-
233
- .android-modal .btn-modal:active {
234
- background-color: rgba(103, 80, 164, 0.12) !important;
235
- color: var(--lion-black);
236
- }
@@ -1,43 +0,0 @@
1
- // components/buttons/AndroidButton.tsx
2
- import {type ButtonHTMLAttributes, type ReactNode } from 'react';
3
- import { VariantTypes } from '../../types/VariantTypes';
4
- import { SizeTypes } from '../../types/SizeTypes';
5
- import { ButtonTypes } from '../../types/ButtonTypes';
6
- import { AndroidStyleTypes } from '../../types/Android/AndroidStyleTypes';
7
- import { AndroidShapeTypes } from '../../types/Android/AndroidShapeTypes';
8
-
9
- export interface AndroidButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'size'> {
10
- children?: ReactNode;
11
- variant?: VariantTypes;
12
- styleType?: AndroidStyleTypes;
13
- shape?: AndroidShapeTypes;
14
- size?: SizeTypes;
15
- type?: ButtonTypes;
16
- className?: string;
17
- }
18
-
19
- export default function AndroidButton({
20
- children,
21
- variant = VariantTypes.PRIMARY,
22
- styleType = AndroidStyleTypes.FILLED,
23
- shape = AndroidShapeTypes.PILL,
24
- size = SizeTypes.MD,
25
- type = ButtonTypes.BUTTON,
26
- className = "",
27
- ...props
28
- }: AndroidButtonProps) {
29
- const styleClass = `android-btn-${styleType}`;
30
- const shapeClass = `android-btn-${shape}`;
31
- const variantClass = variant ? `btn-${variant}` : "";
32
-
33
- return (
34
- <button
35
- type={type}
36
- className={`android-btn android-btn-${size} ${styleClass} ${shapeClass} ${variantClass} ${className}`.trim()}
37
- {...props}
38
- >
39
- {children}
40
- <span className="ripple" />
41
- </button>
42
- );
43
- }