sdga-ui 1.0.31 → 1.0.33
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.
- package/README.md +23 -0
- package/css/dga-ui.css +80 -63
- package/css/dga-ui.css.map +1 -1
- package/package.json +3 -2
- package/theme/customizations/_forms-form-select.scss +156 -123
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# **DGA UI – Government-Style Bootstrap Theme**
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/sdga-ui)
|
|
4
|
+
[](https://www.npmjs.com/package/sdga-ui)
|
|
5
|
+
[](https://github.com/MahmoudAdel1996/dga-ui/stargazers)
|
|
6
|
+
[](https://github.com/MahmoudAdel1996/dga-ui/blob/main/LICENSE)
|
|
7
|
+
|
|
3
8
|
**DGA UI** is a customizable UI theme inspired by modern government and authority design systems.
|
|
4
9
|
Built on top of **Bootstrap**, it provides consistent colors, typography, spacing, and reusable UI patterns suitable for official portals, administrative dashboards, and public-sector applications.
|
|
5
10
|
|
|
@@ -43,6 +48,24 @@ Or with yarn:
|
|
|
43
48
|
yarn add sdga-ui
|
|
44
49
|
```
|
|
45
50
|
|
|
51
|
+
### **Or via CDN**
|
|
52
|
+
|
|
53
|
+
No installation needed — link directly to the compiled CSS:
|
|
54
|
+
|
|
55
|
+
```html
|
|
56
|
+
<!-- jsDelivr -->
|
|
57
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sdga-ui@latest/css/dga-ui.css">
|
|
58
|
+
|
|
59
|
+
<!-- unpkg -->
|
|
60
|
+
<link rel="stylesheet" href="https://unpkg.com/sdga-ui@latest/css/dga-ui.css">
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Pin to a specific version (recommended for production) instead of `@latest`:
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sdga-ui@1.0.31/css/dga-ui.css">
|
|
67
|
+
```
|
|
68
|
+
|
|
46
69
|
---
|
|
47
70
|
|
|
48
71
|
## **🔧 Usage**
|
package/css/dga-ui.css
CHANGED
|
@@ -28107,22 +28107,20 @@ html {
|
|
|
28107
28107
|
|
|
28108
28108
|
.form-select {
|
|
28109
28109
|
min-height: 2rem;
|
|
28110
|
-
|
|
28111
|
-
|
|
28110
|
+
position: relative;
|
|
28111
|
+
border-color: #9DA4AE;
|
|
28112
|
+
margin-bottom: 0;
|
|
28113
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23343a40' stroke-width='0.5' stroke-linecap='round' stroke-linejoin='round'><path d='M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9' /></svg>"), linear-gradient(to right, #0D121C 0%, #0D121C 100%);
|
|
28114
|
+
background-size: 24px 24px, 0% 2px;
|
|
28115
|
+
background-repeat: no-repeat, no-repeat;
|
|
28116
|
+
background-position: right 0.75rem center, center bottom;
|
|
28117
|
+
transition: background-size 0.3s ease-in-out, border-color 0.15s ease-in-out;
|
|
28112
28118
|
}
|
|
28113
28119
|
[dir=rtl] .form-select {
|
|
28114
|
-
background-position: left 0.5rem center;
|
|
28120
|
+
background-position: left 0.5rem center, center bottom;
|
|
28115
28121
|
padding-left: 1.75rem;
|
|
28116
28122
|
padding-right: 0.75rem;
|
|
28117
28123
|
}
|
|
28118
|
-
.form-select:focus {
|
|
28119
|
-
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23343a40' stroke-width='0.5' stroke-linecap='round' stroke-linejoin='round' transform='rotate(180)'><path d='M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9' /></svg>");
|
|
28120
|
-
}
|
|
28121
|
-
.form-select {
|
|
28122
|
-
position: relative;
|
|
28123
|
-
border-color: #9DA4AE;
|
|
28124
|
-
margin-bottom: 0;
|
|
28125
|
-
}
|
|
28126
28124
|
.form-select option {
|
|
28127
28125
|
background-color: #FFFFFF;
|
|
28128
28126
|
color: #161616;
|
|
@@ -28137,29 +28135,6 @@ html {
|
|
|
28137
28135
|
.form-select:has(option:disabled:checked) option:disabled:checked {
|
|
28138
28136
|
color: #6C737F;
|
|
28139
28137
|
}
|
|
28140
|
-
.form-select::after {
|
|
28141
|
-
content: "";
|
|
28142
|
-
position: absolute;
|
|
28143
|
-
bottom: 0;
|
|
28144
|
-
left: 50%;
|
|
28145
|
-
width: 100%;
|
|
28146
|
-
height: 2px;
|
|
28147
|
-
background: linear-gradient(to right, #0D121C 0%, #0D121C 100%);
|
|
28148
|
-
transform: translateX(-50%) scaleX(0);
|
|
28149
|
-
transform-origin: center;
|
|
28150
|
-
transition: transform 0.3s ease-in-out;
|
|
28151
|
-
}
|
|
28152
|
-
.form-select.filled {
|
|
28153
|
-
background-color: var(--dga-body-bg);
|
|
28154
|
-
}
|
|
28155
|
-
.form-select.filled-darker {
|
|
28156
|
-
border-color: transparent;
|
|
28157
|
-
background-color: #F3F4F6;
|
|
28158
|
-
}
|
|
28159
|
-
.form-select.filled-lighter {
|
|
28160
|
-
border-color: transparent;
|
|
28161
|
-
background-color: #FCFCFD;
|
|
28162
|
-
}
|
|
28163
28138
|
.form-select:hover {
|
|
28164
28139
|
border-color: #6C737F;
|
|
28165
28140
|
color: #161616;
|
|
@@ -28167,58 +28142,68 @@ html {
|
|
|
28167
28142
|
.form-select:active {
|
|
28168
28143
|
border-color: #0D121C;
|
|
28169
28144
|
background-color: #F3F4F6;
|
|
28145
|
+
background-size: 24px 24px, 100% 2px;
|
|
28170
28146
|
color: #161616;
|
|
28171
28147
|
}
|
|
28172
|
-
.form-select:
|
|
28173
|
-
|
|
28148
|
+
.form-select:focus-visible, .form-select:focus {
|
|
28149
|
+
border-color: #384250;
|
|
28150
|
+
background-size: 24px 24px, 100% 2px;
|
|
28151
|
+
outline: none !important;
|
|
28152
|
+
box-shadow: 0px 4px 8px -2px rgba(17, 25, 39, 0.1), 0px 2px 4px -2px rgba(17, 25, 39, 0.06);
|
|
28174
28153
|
}
|
|
28175
28154
|
.form-select[readonly] {
|
|
28176
28155
|
border-color: #D2D6DB;
|
|
28177
28156
|
color: #161616;
|
|
28178
28157
|
pointer-events: none;
|
|
28179
28158
|
}
|
|
28180
|
-
.form-select:focus-visible, .form-select:focus {
|
|
28181
|
-
border-color: #384250;
|
|
28182
|
-
outline: none !important;
|
|
28183
|
-
}
|
|
28184
|
-
.form-select:focus-visible::after, .form-select:focus::after {
|
|
28185
|
-
transform: translateX(-50%) scaleX(1);
|
|
28186
|
-
}
|
|
28187
|
-
.form-select:focus-visible, .form-select:focus {
|
|
28188
|
-
box-shadow: 0px 4px 8px -2px rgba(17, 25, 39, 0.1), 0px 2px 4px -2px rgba(17, 25, 39, 0.06);
|
|
28189
|
-
}
|
|
28190
28159
|
.form-select:disabled, .form-select[disabled] {
|
|
28191
28160
|
border-color: #D2D6DB;
|
|
28192
28161
|
background-color: var(--dga-body-bg);
|
|
28162
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23adb5bd' stroke-width='0.5' stroke-linecap='round' stroke-linejoin='round'><path d='M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9' /></svg>"), linear-gradient(to right, transparent 0%, transparent 100%);
|
|
28193
28163
|
color: #9DA4AE;
|
|
28194
28164
|
pointer-events: none;
|
|
28195
28165
|
}
|
|
28196
|
-
.form-select:user-invalid {
|
|
28166
|
+
.form-select.is-invalid, .form-select:user-invalid {
|
|
28197
28167
|
border-color: #B42318;
|
|
28168
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23343a40' stroke-width='0.5' stroke-linecap='round' stroke-linejoin='round'><path d='M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9' /></svg>"), linear-gradient(to right, #B42318 0%, #B42318 100%);
|
|
28169
|
+
background-size: 24px 24px, 100% 2px;
|
|
28198
28170
|
}
|
|
28199
|
-
.form-select:user-invalid
|
|
28200
|
-
background: linear-gradient(to right, #B42318 0%, #B42318 100%);
|
|
28201
|
-
}
|
|
28202
|
-
.form-select:user-invalid:hover {
|
|
28171
|
+
.form-select.is-invalid:hover, .form-select:user-invalid:hover {
|
|
28203
28172
|
border-color: #B42318;
|
|
28204
28173
|
}
|
|
28205
|
-
.form-select:user-invalid:
|
|
28206
|
-
border-color: #
|
|
28207
|
-
|
|
28208
|
-
.form-select:user-invalid:active::after {
|
|
28209
|
-
transform: translateX(-50%) scaleX(1);
|
|
28174
|
+
.form-select.is-invalid:focus-visible, .form-select.is-invalid:focus, .form-select:user-invalid:focus-visible, .form-select:user-invalid:focus {
|
|
28175
|
+
border-color: #B42318;
|
|
28176
|
+
background-size: 24px 24px, 100% 2px;
|
|
28210
28177
|
}
|
|
28211
|
-
.form-select:user-invalid[
|
|
28178
|
+
.form-select.is-invalid:disabled, .form-select.is-invalid[disabled], .form-select:user-invalid:disabled, .form-select:user-invalid[disabled] {
|
|
28212
28179
|
border-color: #D2D6DB;
|
|
28180
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23adb5bd' stroke-width='0.5' stroke-linecap='round' stroke-linejoin='round'><path d='M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9' /></svg>"), linear-gradient(to right, transparent 0%, transparent 100%);
|
|
28181
|
+
background-size: 24px 24px, 0% 2px;
|
|
28213
28182
|
}
|
|
28214
|
-
.form-select
|
|
28215
|
-
border-color: #
|
|
28183
|
+
.form-select.is-valid {
|
|
28184
|
+
border-color: #079455;
|
|
28185
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23343a40' stroke-width='0.5' stroke-linecap='round' stroke-linejoin='round'><path d='M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9' /></svg>"), linear-gradient(to right, #079455 0%, #079455 100%);
|
|
28186
|
+
background-size: 24px 24px, 100% 2px;
|
|
28216
28187
|
}
|
|
28217
|
-
.form-select
|
|
28218
|
-
|
|
28188
|
+
.form-select.is-valid:hover {
|
|
28189
|
+
border-color: #079455;
|
|
28190
|
+
}
|
|
28191
|
+
.form-select.is-valid:focus-visible, .form-select.is-valid:focus {
|
|
28192
|
+
border-color: #079455;
|
|
28193
|
+
background-size: 24px 24px, 100% 2px;
|
|
28219
28194
|
}
|
|
28220
|
-
.form-select
|
|
28195
|
+
.form-select.is-valid:disabled, .form-select.is-valid[disabled] {
|
|
28221
28196
|
border-color: #D2D6DB;
|
|
28197
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23adb5bd' stroke-width='0.5' stroke-linecap='round' stroke-linejoin='round'><path d='M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9' /></svg>"), linear-gradient(to right, transparent 0%, transparent 100%);
|
|
28198
|
+
background-size: 24px 24px, 0% 2px;
|
|
28199
|
+
}
|
|
28200
|
+
|
|
28201
|
+
.form-select-lg {
|
|
28202
|
+
min-height: 2.5rem;
|
|
28203
|
+
}
|
|
28204
|
+
|
|
28205
|
+
.form-select-sm {
|
|
28206
|
+
min-height: 1.5rem;
|
|
28222
28207
|
}
|
|
28223
28208
|
|
|
28224
28209
|
.select-wrapper {
|
|
@@ -28249,7 +28234,39 @@ html {
|
|
|
28249
28234
|
left: 0.75rem;
|
|
28250
28235
|
}
|
|
28251
28236
|
.select-wrapper .form-select {
|
|
28252
|
-
|
|
28237
|
+
--dga-form-select-bg-img: none;
|
|
28238
|
+
--dga-form-select-bg-icon: none;
|
|
28239
|
+
background-image: linear-gradient(to right, #0D121C 0%, #0D121C 100%) !important;
|
|
28240
|
+
background-size: 0% 2px !important;
|
|
28241
|
+
background-repeat: no-repeat !important;
|
|
28242
|
+
background-position: center bottom !important;
|
|
28243
|
+
transition: background-size 0.3s ease-in-out, border-color 0.15s ease-in-out !important;
|
|
28244
|
+
}
|
|
28245
|
+
.select-wrapper:focus-within .form-select {
|
|
28246
|
+
background-size: 100% 2px !important;
|
|
28247
|
+
}
|
|
28248
|
+
.select-wrapper:has(.form-select.is-invalid) .form-select, .select-wrapper:has(.form-select:user-invalid) .form-select {
|
|
28249
|
+
background-image: linear-gradient(to right, #B42318 0%, #B42318 100%) !important;
|
|
28250
|
+
background-size: 100% 2px !important;
|
|
28251
|
+
}
|
|
28252
|
+
.select-wrapper:has(.form-select.is-valid) .form-select {
|
|
28253
|
+
background-image: linear-gradient(to right, #079455 0%, #079455 100%) !important;
|
|
28254
|
+
background-size: 100% 2px !important;
|
|
28255
|
+
}
|
|
28256
|
+
.select-wrapper:has(.form-select:disabled), .select-wrapper:has(.form-select[disabled]) {
|
|
28257
|
+
pointer-events: none;
|
|
28258
|
+
}
|
|
28259
|
+
.select-wrapper:has(.form-select:disabled)::after, .select-wrapper:has(.form-select[disabled])::after {
|
|
28260
|
+
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' fill='none' stroke='%23adb5bd' stroke-width='0.5' stroke-linecap='round' stroke-linejoin='round'><path d='M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9' /></svg>");
|
|
28261
|
+
}
|
|
28262
|
+
.select-wrapper:has(.form-select:disabled) .form-select, .select-wrapper:has(.form-select[disabled]) .form-select {
|
|
28263
|
+
background-image: linear-gradient(to right, transparent 0%, transparent 100%) !important;
|
|
28264
|
+
background-size: 0% 2px !important;
|
|
28265
|
+
}
|
|
28266
|
+
|
|
28267
|
+
.input-group .select-wrapper {
|
|
28268
|
+
flex: 1 1 auto;
|
|
28269
|
+
min-width: 0;
|
|
28253
28270
|
}
|
|
28254
28271
|
|
|
28255
28272
|
.form-select-toggle {
|