funuicss 3.8.8 → 3.8.9
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/css/fun.css +311 -0
- package/index.d.ts +2 -0
- package/index.js +6 -2
- package/package.json +1 -1
- package/ui/button/Button.d.ts +4 -4
- package/ui/button/Button.js +187 -82
- package/ui/feature/Feature.d.ts +9 -38
- package/ui/feature/Feature.js +62 -147
- package/ui/flex/Flex.d.ts +11 -10
- package/ui/flex/Flex.js +102 -6
- package/ui/form/Form.d.ts +21 -12
- package/ui/form/Form.js +382 -316
- package/ui/input/Input.d.ts +16 -21
- package/ui/input/Input.js +135 -359
- package/ui/products/ProductDetail.js +31 -23
- package/ui/products/Store.js +5 -5
- package/ui/sidebar/SideBar.js +1 -2
- package/ui/specials/CircleGroup.d.ts +2 -1
- package/ui/specials/CircleGroup.js +3 -3
package/css/fun.css
CHANGED
|
@@ -5999,6 +5999,316 @@ color: var(--primary) !important;
|
|
|
5999
5999
|
}
|
|
6000
6000
|
|
|
6001
6001
|
|
|
6002
|
+
|
|
6003
|
+
/* form */
|
|
6004
|
+
/* Form Component CSS */
|
|
6005
|
+
.funui-form {
|
|
6006
|
+
width: 100%;
|
|
6007
|
+
}
|
|
6008
|
+
|
|
6009
|
+
.funui-form-wrapper {
|
|
6010
|
+
width: 100%;
|
|
6011
|
+
max-width: 100%;
|
|
6012
|
+
}
|
|
6013
|
+
|
|
6014
|
+
/* Form Labels */
|
|
6015
|
+
.funui-form-label {
|
|
6016
|
+
display: block;
|
|
6017
|
+
margin-bottom: 0.5rem;
|
|
6018
|
+
font-weight: 500;
|
|
6019
|
+
color: var(--text);
|
|
6020
|
+
}
|
|
6021
|
+
|
|
6022
|
+
.funui-form-label.required::after {
|
|
6023
|
+
content: " *";
|
|
6024
|
+
color: var(--danger);
|
|
6025
|
+
}
|
|
6026
|
+
|
|
6027
|
+
/* Form Fields */
|
|
6028
|
+
.funui-form-field {
|
|
6029
|
+
margin-bottom: 1.5rem;
|
|
6030
|
+
width: 100%;
|
|
6031
|
+
}
|
|
6032
|
+
|
|
6033
|
+
.funui-form-field-error {
|
|
6034
|
+
animation: shake 0.3s ease-in-out;
|
|
6035
|
+
}
|
|
6036
|
+
|
|
6037
|
+
@keyframes shake {
|
|
6038
|
+
0%, 100% { transform: translateX(0); }
|
|
6039
|
+
10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
|
|
6040
|
+
20%, 40%, 60%, 80% { transform: translateX(5px); }
|
|
6041
|
+
}
|
|
6042
|
+
|
|
6043
|
+
/* Checkbox Styles */
|
|
6044
|
+
.funui-form-checkbox {
|
|
6045
|
+
display: flex;
|
|
6046
|
+
align-items: center;
|
|
6047
|
+
gap: 0.75rem;
|
|
6048
|
+
cursor: pointer;
|
|
6049
|
+
user-select: none;
|
|
6050
|
+
padding: 0.5rem 0;
|
|
6051
|
+
transition: all 0.2s ease;
|
|
6052
|
+
width: fit-content;
|
|
6053
|
+
border-radius: 0.375rem;
|
|
6054
|
+
}
|
|
6055
|
+
|
|
6056
|
+
.funui-form-checkbox:hover {
|
|
6057
|
+
background-color: rgba(var(--primary-rgb, 59, 130, 246), 0.05);
|
|
6058
|
+
}
|
|
6059
|
+
|
|
6060
|
+
.funui-form-checkbox.disabled {
|
|
6061
|
+
cursor: not-allowed;
|
|
6062
|
+
opacity: 0.6;
|
|
6063
|
+
}
|
|
6064
|
+
|
|
6065
|
+
.funui-form-checkbox-box {
|
|
6066
|
+
width: 1.25rem;
|
|
6067
|
+
height: 1.25rem;
|
|
6068
|
+
border: 2px solid var(--border);
|
|
6069
|
+
border-radius: 0.375rem;
|
|
6070
|
+
background-color: white;
|
|
6071
|
+
position: relative;
|
|
6072
|
+
transition: all 0.2s ease;
|
|
6073
|
+
flex-shrink: 0;
|
|
6074
|
+
display: flex;
|
|
6075
|
+
align-items: center;
|
|
6076
|
+
justify-content: center;
|
|
6077
|
+
}
|
|
6078
|
+
|
|
6079
|
+
.funui-form-checkbox-box:hover {
|
|
6080
|
+
border-color: var(--primary-light);
|
|
6081
|
+
}
|
|
6082
|
+
|
|
6083
|
+
.funui-form-checkbox-box.checked {
|
|
6084
|
+
border-color: var(--primary);
|
|
6085
|
+
background-color: var(--primary);
|
|
6086
|
+
}
|
|
6087
|
+
|
|
6088
|
+
.funui-form-checkbox-box.checked::after {
|
|
6089
|
+
content: '';
|
|
6090
|
+
position: absolute;
|
|
6091
|
+
width: 0.75rem;
|
|
6092
|
+
height: 0.75rem;
|
|
6093
|
+
background-color: white;
|
|
6094
|
+
border-radius: 0.125rem;
|
|
6095
|
+
transform: scale(1);
|
|
6096
|
+
transition: transform 0.2s ease;
|
|
6097
|
+
}
|
|
6098
|
+
|
|
6099
|
+
/* Alternative checkmark style (using SVG-like pseudo-element) */
|
|
6100
|
+
.funui-form-checkbox-box.checked.checkmark::after {
|
|
6101
|
+
content: '';
|
|
6102
|
+
width: 0.375rem;
|
|
6103
|
+
height: 0.75rem;
|
|
6104
|
+
border: solid white;
|
|
6105
|
+
border-width: 0 2px 2px 0;
|
|
6106
|
+
background-color: transparent;
|
|
6107
|
+
border-radius: 0;
|
|
6108
|
+
transform: rotate(45deg) translate(-1px, -1px);
|
|
6109
|
+
margin-top: -2px;
|
|
6110
|
+
}
|
|
6111
|
+
|
|
6112
|
+
.funui-form-checkbox-label {
|
|
6113
|
+
font-size: 0.9375rem;
|
|
6114
|
+
color: var(--text);
|
|
6115
|
+
font-weight: 400;
|
|
6116
|
+
line-height: 1.4;
|
|
6117
|
+
}
|
|
6118
|
+
|
|
6119
|
+
.funui-form-checkbox-label.checked {
|
|
6120
|
+
font-weight: 500;
|
|
6121
|
+
color: var(--primary);
|
|
6122
|
+
}
|
|
6123
|
+
|
|
6124
|
+
.funui-form-checkbox-label.required::after {
|
|
6125
|
+
content: " *";
|
|
6126
|
+
color: var(--danger);
|
|
6127
|
+
}
|
|
6128
|
+
|
|
6129
|
+
/* Radio Button Styles */
|
|
6130
|
+
.funui-form-radio {
|
|
6131
|
+
display: flex;
|
|
6132
|
+
align-items: center;
|
|
6133
|
+
gap: 0.75rem;
|
|
6134
|
+
cursor: pointer;
|
|
6135
|
+
user-select: none;
|
|
6136
|
+
padding: 0.5rem 0;
|
|
6137
|
+
transition: all 0.2s ease;
|
|
6138
|
+
width: fit-content;
|
|
6139
|
+
border-radius: 0.375rem;
|
|
6140
|
+
}
|
|
6141
|
+
|
|
6142
|
+
.funui-form-radio:hover {
|
|
6143
|
+
background-color: rgba(var(--primary-rgb, 59, 130, 246), 0.05);
|
|
6144
|
+
}
|
|
6145
|
+
|
|
6146
|
+
.funui-form-radio.disabled {
|
|
6147
|
+
cursor: not-allowed;
|
|
6148
|
+
opacity: 0.6;
|
|
6149
|
+
}
|
|
6150
|
+
|
|
6151
|
+
.funui-form-radio-circle {
|
|
6152
|
+
width: 1.25rem;
|
|
6153
|
+
height: 1.25rem;
|
|
6154
|
+
border: 2px solid var(--border);
|
|
6155
|
+
border-radius: 50%;
|
|
6156
|
+
background-color: white;
|
|
6157
|
+
position: relative;
|
|
6158
|
+
transition: all 0.2s ease;
|
|
6159
|
+
flex-shrink: 0;
|
|
6160
|
+
display: flex;
|
|
6161
|
+
align-items: center;
|
|
6162
|
+
justify-content: center;
|
|
6163
|
+
}
|
|
6164
|
+
|
|
6165
|
+
.funui-form-radio-circle:hover {
|
|
6166
|
+
border-color: var(--primary-light);
|
|
6167
|
+
}
|
|
6168
|
+
|
|
6169
|
+
.funui-form-radio-circle.checked {
|
|
6170
|
+
border-color: var(--primary);
|
|
6171
|
+
}
|
|
6172
|
+
|
|
6173
|
+
.funui-form-radio-circle.checked::after {
|
|
6174
|
+
content: '';
|
|
6175
|
+
position: absolute;
|
|
6176
|
+
width: 0.75rem;
|
|
6177
|
+
height: 0.75rem;
|
|
6178
|
+
background-color: var(--primary);
|
|
6179
|
+
border-radius: 50%;
|
|
6180
|
+
transform: scale(1);
|
|
6181
|
+
transition: transform 0.2s ease;
|
|
6182
|
+
}
|
|
6183
|
+
|
|
6184
|
+
.funui-form-radio-label {
|
|
6185
|
+
font-size: 0.9375rem;
|
|
6186
|
+
color: var(--text);
|
|
6187
|
+
font-weight: 400;
|
|
6188
|
+
line-height: 1.4;
|
|
6189
|
+
}
|
|
6190
|
+
|
|
6191
|
+
.funui-form-radio-label.checked {
|
|
6192
|
+
font-weight: 500;
|
|
6193
|
+
color: var(--primary);
|
|
6194
|
+
}
|
|
6195
|
+
|
|
6196
|
+
.funui-form-radio-label.required::after {
|
|
6197
|
+
content: " *";
|
|
6198
|
+
color: var(--danger);
|
|
6199
|
+
}
|
|
6200
|
+
|
|
6201
|
+
/* Form Groups (for multiple checkboxes/radios) */
|
|
6202
|
+
.funui-form-group {
|
|
6203
|
+
display: flex;
|
|
6204
|
+
flex-direction: column;
|
|
6205
|
+
gap: 0.75rem;
|
|
6206
|
+
margin-bottom: 1rem;
|
|
6207
|
+
}
|
|
6208
|
+
|
|
6209
|
+
.funui-form-group.horizontal {
|
|
6210
|
+
flex-direction: row;
|
|
6211
|
+
flex-wrap: wrap;
|
|
6212
|
+
gap: 1.5rem;
|
|
6213
|
+
}
|
|
6214
|
+
|
|
6215
|
+
/* Form States */
|
|
6216
|
+
.funui-form-checkbox-box.error,
|
|
6217
|
+
.funui-form-radio-circle.error {
|
|
6218
|
+
border-color: var(--danger);
|
|
6219
|
+
animation: pulse-error 1.5s ease-in-out infinite;
|
|
6220
|
+
}
|
|
6221
|
+
|
|
6222
|
+
.funui-form-checkbox-box.success,
|
|
6223
|
+
.funui-form-radio-circle.success {
|
|
6224
|
+
border-color: var(--success);
|
|
6225
|
+
}
|
|
6226
|
+
|
|
6227
|
+
.funui-form-checkbox-box.warning,
|
|
6228
|
+
.funui-form-radio-circle.warning {
|
|
6229
|
+
border-color: var(--warning);
|
|
6230
|
+
}
|
|
6231
|
+
|
|
6232
|
+
@keyframes pulse-error {
|
|
6233
|
+
0%, 100% { box-shadow: 0 0 0 0 rgba(var(--danger-rgb, 239, 68, 68), 0.4); }
|
|
6234
|
+
50% { box-shadow: 0 0 0 4px rgba(var(--danger-rgb, 239, 68, 68), 0); }
|
|
6235
|
+
}
|
|
6236
|
+
|
|
6237
|
+
/* Focus States */
|
|
6238
|
+
.funui-form-checkbox input[type="checkbox"]:focus + .funui-form-checkbox-box,
|
|
6239
|
+
.funui-form-radio input[type="radio"]:focus + .funui-form-radio-circle {
|
|
6240
|
+
outline: 2px solid var(--primary-light);
|
|
6241
|
+
outline-offset: 2px;
|
|
6242
|
+
}
|
|
6243
|
+
|
|
6244
|
+
/* Compact Variant */
|
|
6245
|
+
.funui-form-checkbox.compact,
|
|
6246
|
+
.funui-form-radio.compact {
|
|
6247
|
+
padding: 0.25rem 0;
|
|
6248
|
+
gap: 0.5rem;
|
|
6249
|
+
}
|
|
6250
|
+
|
|
6251
|
+
.funui-form-checkbox.compact .funui-form-checkbox-box,
|
|
6252
|
+
.funui-form-radio.compact .funui-form-radio-circle {
|
|
6253
|
+
width: 1rem;
|
|
6254
|
+
height: 1rem;
|
|
6255
|
+
}
|
|
6256
|
+
|
|
6257
|
+
.funui-form-checkbox.compact .funui-form-checkbox-box.checked::after,
|
|
6258
|
+
.funui-form-radio.compact .funui-form-radio-circle.checked::after {
|
|
6259
|
+
width: 0.5rem;
|
|
6260
|
+
height: 0.5rem;
|
|
6261
|
+
}
|
|
6262
|
+
|
|
6263
|
+
/* Full Width Variant */
|
|
6264
|
+
.funui-form-checkbox.full-width,
|
|
6265
|
+
.funui-form-radio.full-width {
|
|
6266
|
+
width: 100%;
|
|
6267
|
+
justify-content: space-between;
|
|
6268
|
+
padding: 0.75rem 1rem;
|
|
6269
|
+
border: 1px solid var(--border);
|
|
6270
|
+
border-radius: 0.5rem;
|
|
6271
|
+
background-color: white;
|
|
6272
|
+
}
|
|
6273
|
+
|
|
6274
|
+
.funui-form-checkbox.full-width:hover,
|
|
6275
|
+
.funui-form-radio.full-width:hover {
|
|
6276
|
+
border-color: var(--primary-light);
|
|
6277
|
+
background-color: rgba(var(--primary-rgb, 59, 130, 246), 0.03);
|
|
6278
|
+
}
|
|
6279
|
+
|
|
6280
|
+
.funui-form-checkbox.full-width.checked,
|
|
6281
|
+
.funui-form-radio.full-width.checked {
|
|
6282
|
+
border-color: var(--primary);
|
|
6283
|
+
background-color: rgba(var(--primary-rgb, 59, 130, 246), 0.08);
|
|
6284
|
+
}
|
|
6285
|
+
|
|
6286
|
+
/* Accessibility */
|
|
6287
|
+
.funui-form-checkbox input[type="checkbox"],
|
|
6288
|
+
.funui-form-radio input[type="radio"] {
|
|
6289
|
+
position: absolute;
|
|
6290
|
+
opacity: 0;
|
|
6291
|
+
width: 1px;
|
|
6292
|
+
height: 1px;
|
|
6293
|
+
margin: -1px;
|
|
6294
|
+
padding: 0;
|
|
6295
|
+
overflow: hidden;
|
|
6296
|
+
clip: rect(0, 0, 0, 0);
|
|
6297
|
+
white-space: nowrap;
|
|
6298
|
+
border: 0;
|
|
6299
|
+
}
|
|
6300
|
+
|
|
6301
|
+
/* Form Error States */
|
|
6302
|
+
.funui-form-error {
|
|
6303
|
+
padding: 0.75rem;
|
|
6304
|
+
background-color: var(--danger-light);
|
|
6305
|
+
border: 1px solid var(--danger);
|
|
6306
|
+
border-radius: 0.375rem;
|
|
6307
|
+
margin-bottom: 1rem;
|
|
6308
|
+
animation: slideDown 0.3s ease;
|
|
6309
|
+
}
|
|
6310
|
+
|
|
6311
|
+
|
|
6002
6312
|
/* Spinner Animation */
|
|
6003
6313
|
.spin {
|
|
6004
6314
|
animation: spin 1s linear infinite;
|
|
@@ -6020,6 +6330,7 @@ color: var(--primary) !important;
|
|
|
6020
6330
|
}
|
|
6021
6331
|
|
|
6022
6332
|
|
|
6333
|
+
|
|
6023
6334
|
|
|
6024
6335
|
|
|
6025
6336
|
/* Spinner Animation */
|
package/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as Alert } from "./ui/alert/Alert";
|
|
2
2
|
export { default as ThemeProvider } from "./ui/theme/theme";
|
|
3
3
|
export { default as Button } from "./ui/button/Button";
|
|
4
|
+
export { default as Badge } from "./ui/button/Button";
|
|
4
5
|
export { default as Card } from "./ui/card/Card";
|
|
5
6
|
export { default as BreadCrumb } from "./ui/breadcrumb/BreadCrumb";
|
|
6
7
|
export { default as Container } from "./ui/container/Container";
|
|
@@ -34,6 +35,7 @@ export { default as Tip } from "./ui/tooltip/Tip";
|
|
|
34
35
|
export { default as RowFlex } from "./ui/specials/RowFlex";
|
|
35
36
|
export { default as Section } from "./ui/specials/Section";
|
|
36
37
|
export { default as Hr } from "./ui/specials/Hr";
|
|
38
|
+
export { default as Divider } from "./ui/specials/Hr";
|
|
37
39
|
export { default as Circle } from "./ui/specials/Circle";
|
|
38
40
|
export { default as CircleGroup } from "./ui/specials/CircleGroup";
|
|
39
41
|
export { default as FullCenteredPage } from "./ui/specials/FullCenteredPage";
|
package/index.js
CHANGED
|
@@ -3,14 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.GoogleAnalytics = exports.FunGet = exports.useVariables = exports.useAssets = exports.useAssetValue = exports.useAssetType = exports.useAsset = exports.useVariable = exports.Cookie = exports.Form = exports.Empty = exports.Store = exports.Feature = exports.Footer = exports.FileUpload = exports.Select = exports.ScrollToTop = exports.FlexItem = exports.Slider = exports.Vista = exports.Calendar = exports.DatePicker = void 0;
|
|
6
|
+
exports.Accordion = exports.Flex = exports.RichText = exports.Carousel = exports.Video = exports.SideBar = exports.ChartPie = exports.Lines = exports.Bars = exports.FullCenteredPage = exports.CircleGroup = exports.Circle = exports.Divider = exports.Hr = exports.Section = exports.RowFlex = exports.Tip = exports.AppBar = exports.ToolTip = exports.Notification = exports.FunLoader = exports.ProgressBar = exports.DropMenu = exports.DropItem = exports.Dropdown = exports.DropDown = exports.DropUp = exports.UnAuthorized = exports.NotFound = exports.StepLine = exports.StepHeader = exports.Step = exports.StepContainer = exports.Div = exports.Text = exports.List = exports.Table = exports.Modal = exports.Loader = exports.SearchableInput = exports.Input = exports.Col = exports.Grid = exports.Container = exports.BreadCrumb = exports.Card = exports.Badge = exports.Button = exports.ThemeProvider = exports.Alert = void 0;
|
|
7
|
+
exports.GoogleAnalytics = exports.FunGet = exports.useVariables = exports.useAssets = exports.useAssetValue = exports.useAssetType = exports.useAsset = exports.useVariable = exports.Cookie = exports.Form = exports.Empty = exports.Store = exports.Feature = exports.Footer = exports.FileUpload = exports.Select = exports.ScrollToTop = exports.FlexItem = exports.Slider = exports.Vista = exports.Calendar = exports.DatePicker = exports.View = exports.ScrollInView = void 0;
|
|
8
8
|
var Alert_1 = require("./ui/alert/Alert");
|
|
9
9
|
Object.defineProperty(exports, "Alert", { enumerable: true, get: function () { return __importDefault(Alert_1).default; } });
|
|
10
10
|
var theme_1 = require("./ui/theme/theme");
|
|
11
11
|
Object.defineProperty(exports, "ThemeProvider", { enumerable: true, get: function () { return __importDefault(theme_1).default; } });
|
|
12
12
|
var Button_1 = require("./ui/button/Button");
|
|
13
13
|
Object.defineProperty(exports, "Button", { enumerable: true, get: function () { return __importDefault(Button_1).default; } });
|
|
14
|
+
var Button_2 = require("./ui/button/Button");
|
|
15
|
+
Object.defineProperty(exports, "Badge", { enumerable: true, get: function () { return __importDefault(Button_2).default; } });
|
|
14
16
|
var Card_1 = require("./ui/card/Card");
|
|
15
17
|
Object.defineProperty(exports, "Card", { enumerable: true, get: function () { return __importDefault(Card_1).default; } });
|
|
16
18
|
var BreadCrumb_1 = require("./ui/breadcrumb/BreadCrumb");
|
|
@@ -77,6 +79,8 @@ var Section_1 = require("./ui/specials/Section");
|
|
|
77
79
|
Object.defineProperty(exports, "Section", { enumerable: true, get: function () { return __importDefault(Section_1).default; } });
|
|
78
80
|
var Hr_1 = require("./ui/specials/Hr");
|
|
79
81
|
Object.defineProperty(exports, "Hr", { enumerable: true, get: function () { return __importDefault(Hr_1).default; } });
|
|
82
|
+
var Hr_2 = require("./ui/specials/Hr");
|
|
83
|
+
Object.defineProperty(exports, "Divider", { enumerable: true, get: function () { return __importDefault(Hr_2).default; } });
|
|
80
84
|
var Circle_1 = require("./ui/specials/Circle");
|
|
81
85
|
Object.defineProperty(exports, "Circle", { enumerable: true, get: function () { return __importDefault(Circle_1).default; } });
|
|
82
86
|
var CircleGroup_1 = require("./ui/specials/CircleGroup");
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.8.
|
|
2
|
+
"version": "3.8.9",
|
|
3
3
|
"name": "funuicss",
|
|
4
4
|
"description": "React and Next.js component UI Library for creating Easy and good looking websites with fewer lines of code. Elevate your web development experience with our cutting-edge React/Next.js component UI Library. Craft stunning websites effortlessly, boasting both seamless functionality and aesthetic appeal—all achieved with minimal lines of code. Unleash the power of simplicity and style in your projects!",
|
|
5
5
|
"main": "index.js",
|
package/ui/button/Button.d.ts
CHANGED
|
@@ -3,12 +3,12 @@ interface ButtonProps {
|
|
|
3
3
|
color?: string;
|
|
4
4
|
bg?: string;
|
|
5
5
|
funcss?: string;
|
|
6
|
-
startIcon?: ReactNode;
|
|
7
|
-
endIcon?: ReactNode;
|
|
6
|
+
startIcon?: ReactNode | string;
|
|
7
|
+
endIcon?: ReactNode | string;
|
|
8
8
|
stringPrefix?: string;
|
|
9
9
|
stringSuffix?: string;
|
|
10
|
-
prefix?: ReactNode;
|
|
11
|
-
suffix?: ReactNode;
|
|
10
|
+
prefix?: ReactNode | string;
|
|
11
|
+
suffix?: ReactNode | string;
|
|
12
12
|
iconSize?: number | string;
|
|
13
13
|
iconLineHeight?: string | number;
|
|
14
14
|
text?: string;
|