@knovator/pagecreator-admin 1.6.1 → 1.6.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.
- package/index.cjs +148 -6
- package/index.css +1 -1
- package/index.js +148 -6
- package/package.json +1 -1
- package/src/lib/api/list.d.ts +4 -0
- package/src/lib/components/common/Input/ReactSelect.d.ts +1 -1
- package/src/lib/types/api.d.ts +1 -1
- package/src/lib/types/components.d.ts +1 -0
package/index.cjs
CHANGED
|
@@ -2765,6 +2765,12 @@ const apiList = {
|
|
|
2765
2765
|
url: `${prefix}/languages`,
|
|
2766
2766
|
method: 'GET'
|
|
2767
2767
|
}),
|
|
2768
|
+
BLOG_CATEGORIES: ({
|
|
2769
|
+
prefix
|
|
2770
|
+
}) => ({
|
|
2771
|
+
url: `${prefix}/blog-categories`,
|
|
2772
|
+
method: 'GET'
|
|
2773
|
+
}),
|
|
2768
2774
|
// Image Upload API
|
|
2769
2775
|
IMAGE_UPLOAD: ({
|
|
2770
2776
|
prefix
|
|
@@ -3432,6 +3438,7 @@ const CustomReactSelect = ({
|
|
|
3432
3438
|
required,
|
|
3433
3439
|
isLoading,
|
|
3434
3440
|
isSearchable,
|
|
3441
|
+
isClearable,
|
|
3435
3442
|
loadOptions,
|
|
3436
3443
|
placeholder,
|
|
3437
3444
|
wrapperClassName,
|
|
@@ -3440,7 +3447,6 @@ const CustomReactSelect = ({
|
|
|
3440
3447
|
customStyles,
|
|
3441
3448
|
selectKey
|
|
3442
3449
|
}) => {
|
|
3443
|
-
console.log('selectedOptions: ', _selectedOptions);
|
|
3444
3450
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3445
3451
|
className: wrapperClassName
|
|
3446
3452
|
}, label && (/*#__PURE__*/React__default["default"].createElement("label", {
|
|
@@ -3456,6 +3462,7 @@ const CustomReactSelect = ({
|
|
|
3456
3462
|
onChange: onChange,
|
|
3457
3463
|
className: classNames__default["default"](className),
|
|
3458
3464
|
isMulti: isMulti,
|
|
3465
|
+
isClearable: isClearable,
|
|
3459
3466
|
defaultOptions: true,
|
|
3460
3467
|
isSearchable: isSearchable,
|
|
3461
3468
|
isLoading: isLoading,
|
|
@@ -3816,15 +3823,16 @@ const SimpleForm = /*#__PURE__*/React.forwardRef(({
|
|
|
3816
3823
|
label: schema.label,
|
|
3817
3824
|
error: (_b = (_a = errors[schema.accessor]) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
3818
3825
|
onChange: value => {
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3822
|
-
|
|
3826
|
+
// Handle clear (null value) and selection
|
|
3827
|
+
const fieldValue = value ? Array.isArray(value) ? value.map(item => item.value) : value.value : null;
|
|
3828
|
+
setValue(schema.accessor, fieldValue);
|
|
3829
|
+
if (schema.onChange) schema.onChange(value);
|
|
3823
3830
|
},
|
|
3824
3831
|
selectedOptions: schema.selectedOptions,
|
|
3825
3832
|
required: schema.required,
|
|
3826
3833
|
isMulti: schema.isMulti,
|
|
3827
3834
|
isSearchable: schema.isSearchable,
|
|
3835
|
+
isClearable: schema.isClearable,
|
|
3828
3836
|
isLoading: schema.isLoading,
|
|
3829
3837
|
placeholder: schema.placeholder,
|
|
3830
3838
|
wrapperClassName: schema.wrapperClassName,
|
|
@@ -7151,7 +7159,10 @@ const WidgetForm = ({
|
|
|
7151
7159
|
});
|
|
7152
7160
|
const {
|
|
7153
7161
|
switchClass,
|
|
7154
|
-
commonTranslations
|
|
7162
|
+
commonTranslations,
|
|
7163
|
+
baseUrl,
|
|
7164
|
+
token,
|
|
7165
|
+
widgetRoutesPrefix
|
|
7155
7166
|
} = useProviderState();
|
|
7156
7167
|
const {
|
|
7157
7168
|
data,
|
|
@@ -7182,6 +7193,10 @@ const WidgetForm = ({
|
|
|
7182
7193
|
const [selectedCollectionType, setSelectedCollectionType] = React.useState();
|
|
7183
7194
|
const [collectionItemsUpdated, setCollectionItemsUpdated] = React.useState(false);
|
|
7184
7195
|
const [tabCollectionItemsUpdated, setTabCollectionItemsUpdated] = React.useState([]);
|
|
7196
|
+
const [blogCategory, setBlogCategory] = React.useState(null);
|
|
7197
|
+
const [blogLimit, setBlogLimit] = React.useState(10);
|
|
7198
|
+
const [blogCategories, setBlogCategories] = React.useState([]);
|
|
7199
|
+
const [blogCategoriesLoading, setBlogCategoriesLoading] = React.useState(false);
|
|
7185
7200
|
React.useEffect(() => {
|
|
7186
7201
|
if (data && formState === 'UPDATE') {
|
|
7187
7202
|
const widgetType = widgetTypes.find(type => type.value === (data === null || data === void 0 ? void 0 : data.widgetType));
|
|
@@ -7209,6 +7224,92 @@ const WidgetForm = ({
|
|
|
7209
7224
|
reset(data);
|
|
7210
7225
|
}
|
|
7211
7226
|
}, [data, reset]);
|
|
7227
|
+
// Watch itemsType for blog category feature
|
|
7228
|
+
const currentItemsType = watch(constants.itemTypeAccessor);
|
|
7229
|
+
// Fetch blog categories when itemsType is 'blogs'
|
|
7230
|
+
React.useEffect(() => {
|
|
7231
|
+
if (currentItemsType === 'blogs' && blogCategories.length === 0) {
|
|
7232
|
+
const fetchBlogCategories = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
7233
|
+
var _a;
|
|
7234
|
+
try {
|
|
7235
|
+
setBlogCategoriesLoading(true);
|
|
7236
|
+
const response = yield commonApi({
|
|
7237
|
+
baseUrl,
|
|
7238
|
+
token,
|
|
7239
|
+
method: 'GET',
|
|
7240
|
+
url: `${widgetRoutesPrefix}/blog-categories`,
|
|
7241
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7242
|
+
onError: error => console.error('Error fetching blog categories:', error)
|
|
7243
|
+
});
|
|
7244
|
+
if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS' && Array.isArray((_a = response.data) === null || _a === void 0 ? void 0 : _a.docs)) {
|
|
7245
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7246
|
+
const categories = response.data.docs.map(cat => ({
|
|
7247
|
+
value: cat._id,
|
|
7248
|
+
label: cat.name,
|
|
7249
|
+
slug: cat.slug
|
|
7250
|
+
}));
|
|
7251
|
+
setBlogCategories(categories);
|
|
7252
|
+
}
|
|
7253
|
+
} catch (error) {
|
|
7254
|
+
console.error('Error fetching blog categories:', error);
|
|
7255
|
+
} finally {
|
|
7256
|
+
setBlogCategoriesLoading(false);
|
|
7257
|
+
}
|
|
7258
|
+
});
|
|
7259
|
+
fetchBlogCategories();
|
|
7260
|
+
}
|
|
7261
|
+
}, [currentItemsType, baseUrl, token, widgetRoutesPrefix, blogCategories.length]);
|
|
7262
|
+
// Auto-fetch blogs when category or limit changes
|
|
7263
|
+
React.useEffect(() => {
|
|
7264
|
+
if (currentItemsType === 'blogs' && blogCategory && blogLimit > 0) {
|
|
7265
|
+
const fetchBlogsByCategory = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
7266
|
+
var _a;
|
|
7267
|
+
try {
|
|
7268
|
+
setCollectionItemsUpdated(false);
|
|
7269
|
+
const response = yield commonApi({
|
|
7270
|
+
baseUrl,
|
|
7271
|
+
token,
|
|
7272
|
+
method: 'POST',
|
|
7273
|
+
url: `${widgetRoutesPrefix}/collection-data`,
|
|
7274
|
+
data: {
|
|
7275
|
+
search: '',
|
|
7276
|
+
collectionName: 'blogs',
|
|
7277
|
+
collectionItems: []
|
|
7278
|
+
},
|
|
7279
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7280
|
+
onError: error => console.error('Error fetching blogs:', error)
|
|
7281
|
+
});
|
|
7282
|
+
if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS' && Array.isArray((_a = response.data) === null || _a === void 0 ? void 0 : _a.docs)) {
|
|
7283
|
+
// Filter blogs by selected category
|
|
7284
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7285
|
+
const filteredBlogs = response.data.docs
|
|
7286
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7287
|
+
.filter(blog => Array.isArray(blog.category) &&
|
|
7288
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7289
|
+
blog.category.some(cat => cat.id === blogCategory.value)).slice(0, blogLimit)
|
|
7290
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7291
|
+
.map(blog => Object.assign(Object.assign({}, blog), {
|
|
7292
|
+
value: blog._id,
|
|
7293
|
+
label: blog.name || blog.title
|
|
7294
|
+
}));
|
|
7295
|
+
setSelectedCollectionItems(filteredBlogs);
|
|
7296
|
+
setCollectionItemsUpdated(true);
|
|
7297
|
+
}
|
|
7298
|
+
} catch (error) {
|
|
7299
|
+
console.error('Error fetching blogs:', error);
|
|
7300
|
+
}
|
|
7301
|
+
});
|
|
7302
|
+
fetchBlogsByCategory();
|
|
7303
|
+
}
|
|
7304
|
+
}, [blogCategory, blogLimit, currentItemsType, baseUrl, token, widgetRoutesPrefix]);
|
|
7305
|
+
// Reset blog category and limit when itemsType changes away from 'blogs'
|
|
7306
|
+
React.useEffect(() => {
|
|
7307
|
+
if (currentItemsType !== 'blogs') {
|
|
7308
|
+
setBlogCategory(null);
|
|
7309
|
+
setBlogLimit(10);
|
|
7310
|
+
setBlogCategories([]);
|
|
7311
|
+
}
|
|
7312
|
+
}, [currentItemsType]);
|
|
7212
7313
|
const onChangeSearch = (str, callback, collectionName) => {
|
|
7213
7314
|
let collectionItems = [];
|
|
7214
7315
|
let valueToSet = '';
|
|
@@ -7530,6 +7631,47 @@ const WidgetForm = ({
|
|
|
7530
7631
|
required: widgetTranslations.itemsTypePlaceholder
|
|
7531
7632
|
},
|
|
7532
7633
|
options: (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.linksWidgetTypeValue ? itemsTypes.filter(item => item.value === constants.pagesItemsTypeValue) : (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.tabsWidgetTypeValue || (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.collectionsOnly) ? itemsTypes.filter(item => item.label !== constants.imageItemsTypeValue && item.value !== constants.pagesItemsTypeValue) : (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.imageOnly) ? itemsTypes.filter(item => item.label === constants.imageItemsTypeValue) : itemsTypes.filter(item => item.value !== constants.pagesItemsTypeValue)
|
|
7634
|
+
}, {
|
|
7635
|
+
label: 'Blog Category',
|
|
7636
|
+
accessor: 'blogCategory',
|
|
7637
|
+
type: 'ReactSelect',
|
|
7638
|
+
selectedOptions: blogCategory ? [blogCategory] : [],
|
|
7639
|
+
isMulti: false,
|
|
7640
|
+
isSearchable: true,
|
|
7641
|
+
isClearable: true,
|
|
7642
|
+
onChange: selected => {
|
|
7643
|
+
setBlogCategory(Array.isArray(selected) ? selected[0] : selected);
|
|
7644
|
+
},
|
|
7645
|
+
loadOptions: (searchStr, callback) => {
|
|
7646
|
+
// Filter categories based on search string
|
|
7647
|
+
if (!callback) return;
|
|
7648
|
+
const filtered = searchStr ? blogCategories.filter(cat => cat.label.toLowerCase().includes(searchStr.toLowerCase())) : blogCategories;
|
|
7649
|
+
callback(filtered);
|
|
7650
|
+
},
|
|
7651
|
+
isLoading: blogCategoriesLoading,
|
|
7652
|
+
show: currentItemsType === 'blogs' && !itemsEnabled && ((selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.carouselWidgetTypeValue || (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.fixedCardWidgetTypeValue || !selectedWidgetType) && !!(selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.value),
|
|
7653
|
+
placeholder: 'Select blog category...',
|
|
7654
|
+
wrapperClassName: 'khb_grid-item-1of2 khb_padding-right-1',
|
|
7655
|
+
customStyles: reactSelectStyles || {},
|
|
7656
|
+
selectKey: `blog-category-select-${blogCategories.length}`
|
|
7657
|
+
}, {
|
|
7658
|
+
label: 'Max Blogs Limit',
|
|
7659
|
+
accessor: 'blogLimit',
|
|
7660
|
+
type: 'number',
|
|
7661
|
+
onInput: e => {
|
|
7662
|
+
const value = parseInt(e.target.value) || 0;
|
|
7663
|
+
setBlogLimit(value > 0 ? value : 1);
|
|
7664
|
+
return e;
|
|
7665
|
+
},
|
|
7666
|
+
show: currentItemsType === 'blogs' && !itemsEnabled && ((selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.carouselWidgetTypeValue || (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.fixedCardWidgetTypeValue || !selectedWidgetType) && !!(selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.value),
|
|
7667
|
+
placeholder: 'Enter maximum number of blogs',
|
|
7668
|
+
wrapperClassName: 'khb_grid-item-1of2 khb_padding-left-1',
|
|
7669
|
+
validations: {
|
|
7670
|
+
min: {
|
|
7671
|
+
value: 1,
|
|
7672
|
+
message: 'Minimum limit is 1'
|
|
7673
|
+
}
|
|
7674
|
+
}
|
|
7533
7675
|
}, {
|
|
7534
7676
|
label: widgetTranslations.webPerRow,
|
|
7535
7677
|
accessor: 'webPerRow',
|
package/index.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-space-x-reverse:0;--tw-space-y-reverse:0;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-leading:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-green-300:oklch(87.1% .15 154.449);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xl:36rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-2{margin-inline:calc(var(--spacing)*2)}.block{display:block}.grid{display:grid}.hidden{display:none}.table{display:table}.h-full{height:100%}.w-full{width:100%}.shrink{flex-shrink:1}.flex-grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-black{color:var(--color-black)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.khb_btn{margin:calc(var(--spacing)*1);border-radius:var(--radius-lg);text-align:center;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.khb_btn:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-outline-style:none;outline-style:none}.khb_btn:disabled{cursor:not-allowed}.khb_btn-primary{background-color:var(--color-blue-700);color:var(--color-white)}@media (hover:hover){.khb_btn-primary:hover{background-color:var(--color-blue-800)}}.khb_btn-primary:focus{--tw-ring-color:var(--color-blue-300)}.khb_btn-primary:disabled{background-color:var(--color-blue-800)}.khb_btn-secondary:disabled{background-color:var(--color-gray-100)}.khb_btn-secondary{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300);background-color:var(--color-white);color:var(--color-gray-900)}@media (hover:hover){.khb_btn-secondary:hover{background-color:var(--color-gray-100)}}.khb_btn-secondary:focus{--tw-ring-color:var(--color-gray-200)}.khb_btn-success{background-color:var(--color-green-700);color:var(--color-white)}@media (hover:hover){.khb_btn-success:hover{background-color:var(--color-green-800)}}.khb_btn-success:focus{--tw-ring-color:var(--color-green-300)}.khb_btn-danger{background-color:var(--color-red-700);color:var(--color-white)}@media (hover:hover){.khb_btn-danger:hover{background-color:var(--color-red-800)}}.khb_btn-danger:focus{--tw-ring-color:var(--color-red-300)}.khb_btn-danger:disabled{background-color:var(--color-red-800)}.khb_btn-xs{padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.khb_btn-sm{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.khb_btn-base{padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.khb_btn-lg{padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*3);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.khb_btn-loader{margin-right:calc(var(--spacing)*2);display:inline-block}.khb_table-container{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);overflow:hidden}.khb_table-height{justify-content:center;height:calc(100vh - 252px);overflow:auto}.khb_table-wrapper{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);position:relative;overflow-x:auto}@media (min-width:40rem){.khb_table-wrapper{border-radius:var(--radius-lg)}}.khb_table{text-align:left;width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-gray-500)}.khb_thead{background-color:var(--color-gray-50);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-gray-700);text-transform:uppercase}.khb_table-heading{padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*3)}.khb_table-row{border-bottom-style:var(--tw-border-style);background-color:var(--color-white);border-bottom-width:1px}@media (hover:hover){.khb_table-row:hover{background-color:var(--color-gray-50)}}.khb_table-row-heading{padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*4);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--color-gray-900)}.khb_table-row-data{padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*3)}.khb_table-row-actions{padding:calc(var(--spacing)*.5)}.khb_actions-update{margin:calc(var(--spacing)*1);border-radius:var(--radius-lg);background-color:var(--color-blue-700);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-white)}@media (hover:hover){.khb_actions-update:hover{background-color:var(--color-blue-800)}}.khb_actions-update:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-blue-300);--tw-outline-style:none;outline-style:none}.khb_actions-delete{margin:calc(var(--spacing)*1);border-radius:var(--radius-lg);background-color:var(--color-red-700);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-white)}@media (hover:hover){.khb_actions-delete:hover{background-color:var(--color-red-800)}}.khb_actions-delete:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-red-300);--tw-outline-style:none;outline-style:none}.khb_pagination{padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*2);justify-content:space-between;align-items:center;display:flex}.khb_pagination-total{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-gray-500)}.khb_pagination-total-showing,.khb_pagination-total-items{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-900)}.khb_pagination-actions{align-items:center;display:inline-flex}:where(.khb_pagination-actions>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(-1px*var(--tw-space-x-reverse));margin-inline-end:calc(-1px*calc(1 - var(--tw-space-x-reverse)))}.khb_pagination-pager{padding-inline:calc(var(--spacing)*1);flex-direction:row;align-items:center;display:flex}.khb_pagination-pager input{margin-block:calc(var(--spacing)*2);width:calc(var(--spacing)*16)}.khb_input{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300);background-color:var(--color-gray-50);width:100%;color:var(--color-gray-900);--tw-outline-style:none;outline-style:none}.khb_input:focus{border-color:var(--color-blue-500);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-blue-500)}.khb_input:disabled{cursor:not-allowed;border-color:var(--color-gray-300);background-color:var(--color-gray-100);color:var(--color-gray-500)}.khb_input-info{margin-top:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-gray-400)}.khb_input-error{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-red-600)}.khb_input-xs{padding:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.khb_input-sm{padding:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.khb_input-base{padding:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.khb_input-label{margin-bottom:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-900);display:block}.khb_input-label-required{color:var(--color-red-600)}.khb_input-srcset{flex-direction:row;align-items:center;display:flex}:where(.khb_input-srcset-items>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.khb_input-color{height:calc(var(--spacing)*14)}.khb_drawer-wrapper-1{inset:calc(var(--spacing)*0);position:fixed;overflow:hidden}.khb_drawer-wrapper-2{inset:calc(var(--spacing)*0);position:absolute;overflow:hidden}.khb_drawer-backdrop{inset:calc(var(--spacing)*0);background-color:var(--color-black);opacity:.75;--tw-backdrop-blur:blur(var(--blur-sm));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));position:absolute}.khb_drawer-container-1{inset-block:calc(var(--spacing)*0);right:calc(var(--spacing)*0);max-width:100%;padding-left:calc(var(--spacing)*10);display:flex;position:fixed}.khb_drawer-container-2{width:100vw;max-width:var(--container-6xl);position:relative}.khb_drawer-close-section{top:calc(var(--spacing)*0);left:calc(var(--spacing)*0);margin-left:calc(var(--spacing)*-8);padding-top:calc(var(--spacing)*4);padding-right:calc(var(--spacing)*2);display:flex;position:absolute}@media (min-width:40rem){.khb_drawer-close-section{margin-left:calc(var(--spacing)*-10);padding-right:calc(var(--spacing)*4)}}.khb_drawer-close-btn{height:calc(var(--spacing)*8);width:calc(var(--spacing)*8);background-color:var(--color-white);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}@media (hover:hover){.khb_drawer-close-btn:hover{rotate:90deg}}.khb_drawer-close-btn:focus{--tw-outline-style:none;outline-style:none}.khb_drawer-main{background-color:var(--color-white);--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);height:100%;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;display:flex;overflow-y:scroll}.khb_drawer-header{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-slate-400);background-color:var(--color-slate-300);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*6)}@media (min-width:40rem){.khb_drawer-header{padding-inline:calc(var(--spacing)*6)}}.khb_drawer-header-title{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.khb_darwer-content{padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*6);flex:1;position:relative;overflow:auto}.khb_drawer-footer{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-slate-400);background-color:var(--color-slate-50);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*4);justify-content:flex-end;align-items:center;display:flex}.khb_sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.khb_grid-item-1of3{width:33.3333%;display:inline-block}.khb_grid-item-1of2{width:50%;display:inline-block}.khb_padding-right-1{padding-right:calc(var(--spacing)*1)}.khb_padding-left-1{padding-left:calc(var(--spacing)*1)}.khb_align-top{vertical-align:top}.khb_margin-top-0{margin-top:calc(var(--spacing)*0)!important}.khb_drawer-enter{opacity:.1}.khb_drawer-enter.khb_drawer-enter-active{opacity:1;transition:opacity .2s ease-in}.khb_drawer-exit{opacity:1}.khb_drawer-exit.khb_drawer-exit-active{opacity:.01;transition:opacity .2s ease-in}.khb_form{row-gap:calc(var(--spacing)*3);grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));display:grid}.khb_accordian-header{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:2px;border-color:var(--color-gray-300);background-color:var(--color-gray-100);width:100%;padding:calc(var(--spacing)*4);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);justify-content:space-between;align-items:center;display:flex}@media (hover:hover){.khb_accordian-header:hover{background-color:var(--color-gray-200)}}.khb_accordian-body{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:2px;border-top-style:var(--tw-border-style);border-top-width:0;border-color:var(--color-gray-300)}.khb_accordian-content{padding:calc(var(--spacing)*2.5)}.khb_accordian-footer{flex-direction:row;justify-content:flex-end;display:flex}:where(.khb_accordian-footer>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}.khb_accordian-footer{border-top-style:var(--tw-border-style);border-top-width:2px;border-color:var(--color-gray-300);background-color:var(--color-gray-200);padding:calc(var(--spacing)*1)}:where(.khb_item-items>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.khb-form-items>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}.khb_modal-wrapper-1{inset:calc(var(--spacing)*0);z-index:20;position:fixed;overflow-y:auto}.khb_modal-wrapper-2{min-height:100vh;padding-inline:calc(var(--spacing)*4);padding-top:calc(var(--spacing)*4);padding-bottom:calc(var(--spacing)*20);text-align:center;justify-content:center;align-items:flex-end;display:flex;position:relative}@media (min-width:40rem){.khb_modal-wrapper-2{padding:calc(var(--spacing)*0);display:block}}.khb_modal-backdrop{inset:calc(var(--spacing)*0);background-color:var(--color-black);opacity:.75;--tw-backdrop-blur:blur(var(--blur-sm));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));position:absolute}.khb_modal-container-1{opacity:1;justify-content:center;align-items:center;min-height:100vh;display:flex}.khb_modal-container-2{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);border-radius:var(--radius-lg);text-align:left;vertical-align:bottom;--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:inline-block;overflow:hidden}@media (min-width:40rem){.khb_modal-container-2{margin-block:calc(var(--spacing)*8);width:100%;max-width:var(--container-xl);vertical-align:middle}}.khb_modal-main{background-color:var(--color-white)}.khb_modal-header{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-gray-200);padding:calc(var(--spacing)*4);padding-bottom:calc(var(--spacing)*4);position:relative}.khb_modal-title{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.khb_modal-close{top:calc(var(--spacing)*5);right:calc(var(--spacing)*5);position:absolute}.khb_modal-close:focus{--tw-outline-style:none;outline-style:none}.khb_modal-content{padding:calc(var(--spacing)*4)}.khb_delete-header{align-items:center;gap:calc(var(--spacing)*3);border-radius:var(--radius-lg);background-color:var(--color-red-200);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-black);display:flex}.khb_delete-content{margin-top:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-black)}.khb_delete-note{margin-top:calc(var(--spacing)*3)}.khb_delete-actions{margin-top:calc(var(--spacing)*3);gap:calc(var(--spacing)*3);flex-direction:row;display:flex}.khb_delete-input{flex-grow:1;width:100%}.khb_delete-buttons{grid-column:span 3/span 3}.khb_img-upload-wrapper-1{margin-top:calc(var(--spacing)*1);border-radius:var(--radius-md);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:2px;border-color:var(--color-slate-400)}.khb_img-upload-wrapper-2{cursor:pointer;justify-content:center;display:flex}:where(.khb_img-upload-wrapper-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.khb_img-upload-wrapper-2{padding-inline:calc(var(--spacing)*6);padding-top:calc(var(--spacing)*5);padding-bottom:calc(var(--spacing)*6);text-align:center}.khb_img-wrapper{display:inline-flex;position:relative}.khb_img-wrapper-img{height:calc(var(--spacing)*24);width:calc(var(--spacing)*24);-o-object-fit:cover;object-fit:cover}.khb_img-wrapper-del{top:calc(var(--spacing)*-2);right:calc(var(--spacing)*-2);height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);cursor:pointer;background-color:var(--color-red-500);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex;position:absolute}.khb_img-text-wrapper{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-gray-600);display:flex}.khb_img-text-label{border-radius:var(--radius-md);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);position:relative}.khb_img-text-label:focus-within{--tw-outline-style:none;outline-style:none}.khb_img-text-1{padding-left:calc(var(--spacing)*1);color:var(--color-gray-500)}.khb_img-text-2{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-gray-500)}.khb_img-upload-wrapper-3{margin-top:calc(var(--spacing)*6);cursor:pointer;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-white);padding:calc(var(--spacing)*3)}.khb_switch{width:60px;height:30px;display:inline-block;position:relative}.khb_switch input{opacity:0;width:0;height:0}.khb_switch .slider{cursor:pointer;background-color:#888;transition:all .4s ease-in;position:absolute;inset:0}.khb_switch .slider:before{content:"";background-color:#fff;width:22px;height:22px;transition:all .2s ease-in;position:absolute;bottom:4px;left:5px;box-shadow:0 0 6px #00000029}.khb_switch .slider.khb_btn{margin:calc(var(--spacing)*1);border-radius:var(--radius-lg);text-align:center;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.khb_switch .slider.khb_btn:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-outline-style:none;outline-style:none}.khb_switch .slider.round{border-radius:34px}.khb_switch .slider.round:before{border-radius:50%}input:checked+.slider{background-color:#16a34a}input:focus+.slider{box-shadow:0 0 1px #16a34a}input:checked+.slider:before{transform:translate(28px)}:where(.khb_DND-items>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}.khb_DND-item-text{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-black);overflow:hidden}.khb_DND-item-content{justify-content:space-between;align-items:center;gap:calc(var(--spacing)*3);display:flex}.khb_DND-item-settings{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing)*0);color:var(--color-slate-500);background-color:#0000;border-width:0;align-items:center;display:flex}.khb_DND-item-settings:disabled,.khb_DND-item-settings:disabled .khb_DND-item-settings-icon{cursor:not-allowed;color:var(--color-slate-300)}.khb_DND-item-settings-icon{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);color:var(--color-black)}.khb_DND-item{cursor:pointer;border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-500);background-color:var(--color-white);padding:calc(var(--spacing)*3);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;--tw-ease:var(--ease-in-out);transition-duration:.2s;transition-timing-function:var(--ease-in-out);overflow:hidden}@media (hover:hover){.khb_DND-item:hover{border-color:var(--color-blue-400);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.khb_tabs-container{border-style:var(--tw-border-style);padding:calc(var(--spacing)*3);border-width:1px;border-radius:.25rem}.khb-tabs{margin-bottom:calc(var(--spacing)*2)}.khb_tabs-item{cursor:pointer;border-radius:var(--radius-md);background-color:var(--color-gray-200);padding:calc(var(--spacing)*2);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));flex-direction:column;align-self:center;display:flex}.khb_tabs-item:hover{cursor:pointer;background-color:var(--color-gray-300)}.khb_tabs-input{min-width:calc(var(--spacing)*0);cursor:pointer;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:pre-wrap;color:var(--color-black);background-color:#0000}.khb_tabs-input:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.khb_tabs-item-selected{background-color:var(--color-gray-300);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.khb_tabs-remove{color:var(--color-red-600)}@media (hover:hover){.khb_tabs-remove:hover{color:var(--color-red-700)}}.khb_tabs-remove:focus{--tw-ring-color:var(--color-red-300)}.khb_tabs-list{-moz-column-gap:calc(var(--spacing)*4);column-gap:calc(var(--spacing)*4);row-gap:calc(var(--spacing)*2.5);flex-wrap:wrap;display:flex}.khb_tabs-body{padding-top:calc(var(--spacing)*2)}.khb_confirm-popover{z-index:20;border-style:var(--tw-border-style);background-color:var(--color-white);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2.5);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px;border-radius:.25rem;position:relative}.khb_confirm-popover-content{gap:calc(var(--spacing)*1.5);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}.khb_confirm-popover-title{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.khb_confirm-popover-footer{justify-content:center;display:flex}.khb_srcset-remove{height:calc(var(--spacing)*7);width:calc(var(--spacing)*7)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
|
2
|
+
@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-space-x-reverse:0;--tw-space-y-reverse:0;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-leading:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-green-300:oklch(87.1% .15 154.449);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xl:36rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-2{margin-inline:calc(var(--spacing)*2)}.block{display:block}.grid{display:grid}.hidden{display:none}.table{display:table}.h-full{height:100%}.w-full{width:100%}.shrink{flex-shrink:1}.flex-grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-black{color:var(--color-black)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.khb_btn{margin:calc(var(--spacing)*1);border-radius:var(--radius-lg);text-align:center;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.khb_btn:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-outline-style:none;outline-style:none}.khb_btn:disabled{cursor:not-allowed}.khb_btn-primary{background-color:var(--color-blue-700);color:var(--color-white)}@media (hover:hover){.khb_btn-primary:hover{background-color:var(--color-blue-800)}}.khb_btn-primary:focus{--tw-ring-color:var(--color-blue-300)}.khb_btn-primary:disabled{background-color:var(--color-blue-800)}.khb_btn-secondary:disabled{background-color:var(--color-gray-100)}.khb_btn-secondary{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300);background-color:var(--color-white);color:var(--color-gray-900)}@media (hover:hover){.khb_btn-secondary:hover{background-color:var(--color-gray-100)}}.khb_btn-secondary:focus{--tw-ring-color:var(--color-gray-200)}.khb_btn-success{background-color:var(--color-green-700);color:var(--color-white)}@media (hover:hover){.khb_btn-success:hover{background-color:var(--color-green-800)}}.khb_btn-success:focus{--tw-ring-color:var(--color-green-300)}.khb_btn-danger{background-color:var(--color-red-700);color:var(--color-white)}@media (hover:hover){.khb_btn-danger:hover{background-color:var(--color-red-800)}}.khb_btn-danger:focus{--tw-ring-color:var(--color-red-300)}.khb_btn-danger:disabled{background-color:var(--color-red-800)}.khb_btn-xs{padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.khb_btn-sm{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.khb_btn-base{padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.khb_btn-lg{padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*3);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.khb_btn-loader{margin-right:calc(var(--spacing)*2);display:inline-block}.khb_table-container{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);overflow:hidden}.khb_table-height{justify-content:center;height:calc(100vh - 252px);overflow:auto}.khb_table-wrapper{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);position:relative;overflow-x:auto}@media (min-width:40rem){.khb_table-wrapper{border-radius:var(--radius-lg)}}.khb_table{text-align:left;width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-gray-500)}.khb_thead{background-color:var(--color-gray-50);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-gray-700);text-transform:uppercase}.khb_table-heading{padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*3)}.khb_table-row{border-bottom-style:var(--tw-border-style);background-color:var(--color-white);border-bottom-width:1px}@media (hover:hover){.khb_table-row:hover{background-color:var(--color-gray-50)}}.khb_table-row-heading{padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*4);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--color-gray-900)}.khb_table-row-data{padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*3)}.khb_table-row-actions{padding:calc(var(--spacing)*.5)}.khb_actions-update{margin:calc(var(--spacing)*1);border-radius:var(--radius-lg);background-color:var(--color-blue-700);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-white)}@media (hover:hover){.khb_actions-update:hover{background-color:var(--color-blue-800)}}.khb_actions-update:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-blue-300);--tw-outline-style:none;outline-style:none}.khb_actions-delete{margin:calc(var(--spacing)*1);border-radius:var(--radius-lg);background-color:var(--color-red-700);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-white)}@media (hover:hover){.khb_actions-delete:hover{background-color:var(--color-red-800)}}.khb_actions-delete:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-red-300);--tw-outline-style:none;outline-style:none}.khb_pagination{padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*2);justify-content:space-between;align-items:center;display:flex}.khb_pagination-total{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-gray-500)}.khb_pagination-total-showing,.khb_pagination-total-items{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-900)}.khb_pagination-actions{align-items:center;display:inline-flex}:where(.khb_pagination-actions>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(-1px*var(--tw-space-x-reverse));margin-inline-end:calc(-1px*calc(1 - var(--tw-space-x-reverse)))}.khb_pagination-pager{padding-inline:calc(var(--spacing)*1);flex-direction:row;align-items:center;display:flex}.khb_pagination-pager input{margin-block:calc(var(--spacing)*2);width:calc(var(--spacing)*16)}.khb_input{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300);background-color:var(--color-gray-50);width:100%;color:var(--color-gray-900);--tw-outline-style:none;outline-style:none}.khb_input:focus{border-color:var(--color-blue-500);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-blue-500)}.khb_input:disabled{cursor:not-allowed;border-color:var(--color-gray-300);background-color:var(--color-gray-100);color:var(--color-gray-500)}.khb_input-info{margin-top:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-gray-400)}.khb_input-error{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-red-600)}.khb_input-xs{padding:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.khb_input-sm{padding:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.khb_input-base{padding:calc(var(--spacing)*1.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.khb_input-label{margin-bottom:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-900);display:block}.khb_input-label-required{color:var(--color-red-600)}.khb_input-srcset{flex-direction:row;align-items:center;display:flex}:where(.khb_input-srcset-items>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.khb_input-color{height:calc(var(--spacing)*14)}.khb_drawer-wrapper-1{inset:calc(var(--spacing)*0);position:fixed;overflow:hidden}.khb_drawer-wrapper-2{inset:calc(var(--spacing)*0);position:absolute;overflow:hidden}.khb_drawer-backdrop{inset:calc(var(--spacing)*0);background-color:var(--color-black);opacity:.75;--tw-backdrop-blur:blur(var(--blur-sm));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));position:absolute}.khb_drawer-container-1{inset-block:calc(var(--spacing)*0);right:calc(var(--spacing)*0);max-width:100%;padding-left:calc(var(--spacing)*10);display:flex;position:fixed}.khb_drawer-container-2{width:100vw;max-width:var(--container-6xl);position:relative}.khb_drawer-close-section{top:calc(var(--spacing)*0);left:calc(var(--spacing)*0);margin-left:calc(var(--spacing)*-8);padding-top:calc(var(--spacing)*4);padding-right:calc(var(--spacing)*2);display:flex;position:absolute}@media (min-width:40rem){.khb_drawer-close-section{margin-left:calc(var(--spacing)*-10);padding-right:calc(var(--spacing)*4)}}.khb_drawer-close-btn{height:calc(var(--spacing)*8);width:calc(var(--spacing)*8);background-color:var(--color-white);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}@media (hover:hover){.khb_drawer-close-btn:hover{rotate:90deg}}.khb_drawer-close-btn:focus{--tw-outline-style:none;outline-style:none}.khb_drawer-main{background-color:var(--color-white);--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);height:100%;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;display:flex;overflow-y:scroll}.khb_drawer-header{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-slate-400);background-color:var(--color-slate-300);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*6)}@media (min-width:40rem){.khb_drawer-header{padding-inline:calc(var(--spacing)*6)}}.khb_drawer-header-title{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.khb_darwer-content{padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*6);flex:1;position:relative;overflow:auto}.khb_drawer-footer{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-slate-400);background-color:var(--color-slate-50);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*4);justify-content:flex-end;align-items:center;display:flex}.khb_sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.khb_grid-item-1of3{width:33.3333%;display:inline-block}.khb_grid-item-1of2{width:50%;display:inline-block}.khb_padding-right-1{padding-right:calc(var(--spacing)*1)}.khb_padding-left-1{padding-left:calc(var(--spacing)*1)}.khb_align-top{vertical-align:top}.khb_margin-top-0{margin-top:calc(var(--spacing)*0)!important}.khb_drawer-enter{opacity:.1}.khb_drawer-enter.khb_drawer-enter-active{opacity:1;transition:opacity .2s ease-in}.khb_drawer-exit{opacity:1}.khb_drawer-exit.khb_drawer-exit-active{opacity:.01;transition:opacity .2s ease-in}.khb_form{row-gap:calc(var(--spacing)*3);grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));display:grid}.khb_accordian-header{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:2px;border-color:var(--color-gray-300);background-color:var(--color-gray-100);width:100%;padding:calc(var(--spacing)*4);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);justify-content:space-between;align-items:center;display:flex}@media (hover:hover){.khb_accordian-header:hover{background-color:var(--color-gray-200)}}.khb_accordian-body{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:2px;border-top-style:var(--tw-border-style);border-top-width:0;border-color:var(--color-gray-300)}.khb_accordian-content{padding:calc(var(--spacing)*2.5)}.khb_accordian-footer{flex-direction:row;justify-content:flex-end;display:flex}:where(.khb_accordian-footer>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}.khb_accordian-footer{border-top-style:var(--tw-border-style);border-top-width:2px;border-color:var(--color-gray-300);background-color:var(--color-gray-200);padding:calc(var(--spacing)*1)}:where(.khb_item-items>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.khb-form-items>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}.khb_modal-wrapper-1{inset:calc(var(--spacing)*0);z-index:20;position:fixed;overflow-y:auto}.khb_modal-wrapper-2{min-height:100vh;padding-inline:calc(var(--spacing)*4);padding-top:calc(var(--spacing)*4);padding-bottom:calc(var(--spacing)*20);text-align:center;justify-content:center;align-items:flex-end;display:flex;position:relative}@media (min-width:40rem){.khb_modal-wrapper-2{padding:calc(var(--spacing)*0);display:block}}.khb_modal-backdrop{inset:calc(var(--spacing)*0);background-color:var(--color-black);opacity:.75;--tw-backdrop-blur:blur(var(--blur-sm));backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));position:absolute}.khb_modal-container-1{opacity:1;justify-content:center;align-items:center;min-height:100vh;display:flex}.khb_modal-container-2{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);border-radius:var(--radius-lg);text-align:left;vertical-align:bottom;--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));display:inline-block;overflow:hidden}@media (min-width:40rem){.khb_modal-container-2{margin-block:calc(var(--spacing)*8);width:100%;max-width:var(--container-xl);vertical-align:middle}}.khb_modal-main{background-color:var(--color-white)}.khb_modal-header{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-gray-200);padding:calc(var(--spacing)*4);padding-bottom:calc(var(--spacing)*4);position:relative}.khb_modal-title{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.khb_modal-close{top:calc(var(--spacing)*5);right:calc(var(--spacing)*5);position:absolute}.khb_modal-close:focus{--tw-outline-style:none;outline-style:none}.khb_modal-content{padding:calc(var(--spacing)*4)}.khb_delete-header{align-items:center;gap:calc(var(--spacing)*3);border-radius:var(--radius-lg);background-color:var(--color-red-200);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-black);display:flex}.khb_delete-content{margin-top:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-black)}.khb_delete-note{margin-top:calc(var(--spacing)*3)}.khb_delete-actions{margin-top:calc(var(--spacing)*3);gap:calc(var(--spacing)*3);flex-direction:row;display:flex}.khb_delete-input{flex-grow:1;width:100%}.khb_delete-buttons{grid-column:span 3/span 3}.khb_img-upload-wrapper-1{margin-top:calc(var(--spacing)*1);border-radius:var(--radius-md);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:2px;border-color:var(--color-slate-400)}.khb_img-upload-wrapper-2{cursor:pointer;justify-content:center;display:flex}:where(.khb_img-upload-wrapper-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.khb_img-upload-wrapper-2{padding-inline:calc(var(--spacing)*6);padding-top:calc(var(--spacing)*5);padding-bottom:calc(var(--spacing)*6);text-align:center}.khb_img-wrapper{display:inline-flex;position:relative}.khb_img-wrapper-img{height:calc(var(--spacing)*24);width:calc(var(--spacing)*24);-o-object-fit:cover;object-fit:cover}.khb_img-wrapper-del{top:calc(var(--spacing)*-2);right:calc(var(--spacing)*-2);height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);cursor:pointer;background-color:var(--color-red-500);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex;position:absolute}.khb_img-text-wrapper{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-gray-600);display:flex}.khb_img-text-label{border-radius:var(--radius-md);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);position:relative}.khb_img-text-label:focus-within{--tw-outline-style:none;outline-style:none}.khb_img-text-1{padding-left:calc(var(--spacing)*1);color:var(--color-gray-500)}.khb_img-text-2{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-gray-500)}.khb_img-upload-wrapper-3{margin-top:calc(var(--spacing)*6);cursor:pointer;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-white);padding:calc(var(--spacing)*3)}.khb_switch{width:60px;height:30px;display:inline-block;position:relative}.khb_switch input{opacity:0;width:0;height:0}.khb_switch .slider{cursor:pointer;background-color:#888;transition:all .4s ease-in;position:absolute;inset:0}.khb_switch .slider:before{content:"";background-color:#fff;width:22px;height:22px;transition:all .2s ease-in;position:absolute;bottom:4px;left:5px;box-shadow:0 0 6px #00000029}.khb_switch .slider.khb_btn{margin:calc(var(--spacing)*1);border-radius:var(--radius-lg);text-align:center;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.khb_switch .slider.khb_btn:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-outline-style:none;outline-style:none}.khb_switch .slider.round{border-radius:34px}.khb_switch .slider.round:before{border-radius:50%}input:checked+.slider{background-color:#16a34a}input:focus+.slider{box-shadow:0 0 1px #16a34a}input:checked+.slider:before{transform:translate(28px)}:where(.khb_DND-items>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}.khb_DND-item-text{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-black);overflow:hidden}.khb_DND-item-content{justify-content:space-between;align-items:center;gap:calc(var(--spacing)*3);display:flex}.khb_DND-item-settings{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing)*0);color:var(--color-slate-500);background-color:#0000;border-width:0;align-items:center;display:flex}.khb_DND-item-settings:disabled,.khb_DND-item-settings:disabled .khb_DND-item-settings-icon{cursor:not-allowed;color:var(--color-slate-300)}.khb_DND-item-settings-icon{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);color:var(--color-black)}.khb_DND-item{cursor:pointer;border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-500);background-color:var(--color-white);padding:calc(var(--spacing)*3);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;--tw-ease:var(--ease-in-out);transition-duration:.2s;transition-timing-function:var(--ease-in-out);overflow:hidden}@media (hover:hover){.khb_DND-item:hover{border-color:var(--color-blue-400);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.khb_tabs-container{border-style:var(--tw-border-style);padding:calc(var(--spacing)*3);border-width:1px;border-radius:.25rem}.khb-tabs{margin-bottom:calc(var(--spacing)*2)}.khb_tabs-item{cursor:pointer;border-radius:var(--radius-md);background-color:var(--color-gray-200);padding:calc(var(--spacing)*2);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));flex-direction:column;align-self:center;display:flex}.khb_tabs-item:hover{cursor:pointer;background-color:var(--color-gray-300)}.khb_tabs-input{min-width:calc(var(--spacing)*0);cursor:pointer;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:pre-wrap;color:var(--color-black);background-color:#0000}.khb_tabs-input:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.khb_tabs-item-selected{background-color:var(--color-gray-300);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.khb_tabs-remove{color:var(--color-red-600)}@media (hover:hover){.khb_tabs-remove:hover{color:var(--color-red-700)}}.khb_tabs-remove:focus{--tw-ring-color:var(--color-red-300)}.khb_tabs-list{-moz-column-gap:calc(var(--spacing)*4);column-gap:calc(var(--spacing)*4);row-gap:calc(var(--spacing)*2.5);flex-wrap:wrap;display:flex}.khb_tabs-body{padding-top:calc(var(--spacing)*2)}.khb_confirm-popover{z-index:20;border-style:var(--tw-border-style);background-color:var(--color-white);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2.5);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px;border-radius:.25rem;position:relative}.khb_confirm-popover-content{gap:calc(var(--spacing)*1.5);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}.khb_confirm-popover-title{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.khb_confirm-popover-footer{justify-content:center;display:flex}.khb_srcset-remove{height:calc(var(--spacing)*7);width:calc(var(--spacing)*7)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
package/index.js
CHANGED
|
@@ -2753,6 +2753,12 @@ const apiList = {
|
|
|
2753
2753
|
url: `${prefix}/languages`,
|
|
2754
2754
|
method: 'GET'
|
|
2755
2755
|
}),
|
|
2756
|
+
BLOG_CATEGORIES: ({
|
|
2757
|
+
prefix
|
|
2758
|
+
}) => ({
|
|
2759
|
+
url: `${prefix}/blog-categories`,
|
|
2760
|
+
method: 'GET'
|
|
2761
|
+
}),
|
|
2756
2762
|
// Image Upload API
|
|
2757
2763
|
IMAGE_UPLOAD: ({
|
|
2758
2764
|
prefix
|
|
@@ -3420,6 +3426,7 @@ const CustomReactSelect = ({
|
|
|
3420
3426
|
required,
|
|
3421
3427
|
isLoading,
|
|
3422
3428
|
isSearchable,
|
|
3429
|
+
isClearable,
|
|
3423
3430
|
loadOptions,
|
|
3424
3431
|
placeholder,
|
|
3425
3432
|
wrapperClassName,
|
|
@@ -3428,7 +3435,6 @@ const CustomReactSelect = ({
|
|
|
3428
3435
|
customStyles,
|
|
3429
3436
|
selectKey
|
|
3430
3437
|
}) => {
|
|
3431
|
-
console.log('selectedOptions: ', _selectedOptions);
|
|
3432
3438
|
return /*#__PURE__*/React.createElement("div", {
|
|
3433
3439
|
className: wrapperClassName
|
|
3434
3440
|
}, label && (/*#__PURE__*/React.createElement("label", {
|
|
@@ -3444,6 +3450,7 @@ const CustomReactSelect = ({
|
|
|
3444
3450
|
onChange: onChange,
|
|
3445
3451
|
className: classNames(className),
|
|
3446
3452
|
isMulti: isMulti,
|
|
3453
|
+
isClearable: isClearable,
|
|
3447
3454
|
defaultOptions: true,
|
|
3448
3455
|
isSearchable: isSearchable,
|
|
3449
3456
|
isLoading: isLoading,
|
|
@@ -3804,15 +3811,16 @@ const SimpleForm = /*#__PURE__*/forwardRef(({
|
|
|
3804
3811
|
label: schema.label,
|
|
3805
3812
|
error: (_b = (_a = errors[schema.accessor]) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
3806
3813
|
onChange: value => {
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3814
|
+
// Handle clear (null value) and selection
|
|
3815
|
+
const fieldValue = value ? Array.isArray(value) ? value.map(item => item.value) : value.value : null;
|
|
3816
|
+
setValue(schema.accessor, fieldValue);
|
|
3817
|
+
if (schema.onChange) schema.onChange(value);
|
|
3811
3818
|
},
|
|
3812
3819
|
selectedOptions: schema.selectedOptions,
|
|
3813
3820
|
required: schema.required,
|
|
3814
3821
|
isMulti: schema.isMulti,
|
|
3815
3822
|
isSearchable: schema.isSearchable,
|
|
3823
|
+
isClearable: schema.isClearable,
|
|
3816
3824
|
isLoading: schema.isLoading,
|
|
3817
3825
|
placeholder: schema.placeholder,
|
|
3818
3826
|
wrapperClassName: schema.wrapperClassName,
|
|
@@ -7139,7 +7147,10 @@ const WidgetForm = ({
|
|
|
7139
7147
|
});
|
|
7140
7148
|
const {
|
|
7141
7149
|
switchClass,
|
|
7142
|
-
commonTranslations
|
|
7150
|
+
commonTranslations,
|
|
7151
|
+
baseUrl,
|
|
7152
|
+
token,
|
|
7153
|
+
widgetRoutesPrefix
|
|
7143
7154
|
} = useProviderState();
|
|
7144
7155
|
const {
|
|
7145
7156
|
data,
|
|
@@ -7170,6 +7181,10 @@ const WidgetForm = ({
|
|
|
7170
7181
|
const [selectedCollectionType, setSelectedCollectionType] = useState();
|
|
7171
7182
|
const [collectionItemsUpdated, setCollectionItemsUpdated] = useState(false);
|
|
7172
7183
|
const [tabCollectionItemsUpdated, setTabCollectionItemsUpdated] = useState([]);
|
|
7184
|
+
const [blogCategory, setBlogCategory] = useState(null);
|
|
7185
|
+
const [blogLimit, setBlogLimit] = useState(10);
|
|
7186
|
+
const [blogCategories, setBlogCategories] = useState([]);
|
|
7187
|
+
const [blogCategoriesLoading, setBlogCategoriesLoading] = useState(false);
|
|
7173
7188
|
useEffect(() => {
|
|
7174
7189
|
if (data && formState === 'UPDATE') {
|
|
7175
7190
|
const widgetType = widgetTypes.find(type => type.value === (data === null || data === void 0 ? void 0 : data.widgetType));
|
|
@@ -7197,6 +7212,92 @@ const WidgetForm = ({
|
|
|
7197
7212
|
reset(data);
|
|
7198
7213
|
}
|
|
7199
7214
|
}, [data, reset]);
|
|
7215
|
+
// Watch itemsType for blog category feature
|
|
7216
|
+
const currentItemsType = watch(constants.itemTypeAccessor);
|
|
7217
|
+
// Fetch blog categories when itemsType is 'blogs'
|
|
7218
|
+
useEffect(() => {
|
|
7219
|
+
if (currentItemsType === 'blogs' && blogCategories.length === 0) {
|
|
7220
|
+
const fetchBlogCategories = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
7221
|
+
var _a;
|
|
7222
|
+
try {
|
|
7223
|
+
setBlogCategoriesLoading(true);
|
|
7224
|
+
const response = yield commonApi({
|
|
7225
|
+
baseUrl,
|
|
7226
|
+
token,
|
|
7227
|
+
method: 'GET',
|
|
7228
|
+
url: `${widgetRoutesPrefix}/blog-categories`,
|
|
7229
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7230
|
+
onError: error => console.error('Error fetching blog categories:', error)
|
|
7231
|
+
});
|
|
7232
|
+
if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS' && Array.isArray((_a = response.data) === null || _a === void 0 ? void 0 : _a.docs)) {
|
|
7233
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7234
|
+
const categories = response.data.docs.map(cat => ({
|
|
7235
|
+
value: cat._id,
|
|
7236
|
+
label: cat.name,
|
|
7237
|
+
slug: cat.slug
|
|
7238
|
+
}));
|
|
7239
|
+
setBlogCategories(categories);
|
|
7240
|
+
}
|
|
7241
|
+
} catch (error) {
|
|
7242
|
+
console.error('Error fetching blog categories:', error);
|
|
7243
|
+
} finally {
|
|
7244
|
+
setBlogCategoriesLoading(false);
|
|
7245
|
+
}
|
|
7246
|
+
});
|
|
7247
|
+
fetchBlogCategories();
|
|
7248
|
+
}
|
|
7249
|
+
}, [currentItemsType, baseUrl, token, widgetRoutesPrefix, blogCategories.length]);
|
|
7250
|
+
// Auto-fetch blogs when category or limit changes
|
|
7251
|
+
useEffect(() => {
|
|
7252
|
+
if (currentItemsType === 'blogs' && blogCategory && blogLimit > 0) {
|
|
7253
|
+
const fetchBlogsByCategory = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
7254
|
+
var _a;
|
|
7255
|
+
try {
|
|
7256
|
+
setCollectionItemsUpdated(false);
|
|
7257
|
+
const response = yield commonApi({
|
|
7258
|
+
baseUrl,
|
|
7259
|
+
token,
|
|
7260
|
+
method: 'POST',
|
|
7261
|
+
url: `${widgetRoutesPrefix}/collection-data`,
|
|
7262
|
+
data: {
|
|
7263
|
+
search: '',
|
|
7264
|
+
collectionName: 'blogs',
|
|
7265
|
+
collectionItems: []
|
|
7266
|
+
},
|
|
7267
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7268
|
+
onError: error => console.error('Error fetching blogs:', error)
|
|
7269
|
+
});
|
|
7270
|
+
if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS' && Array.isArray((_a = response.data) === null || _a === void 0 ? void 0 : _a.docs)) {
|
|
7271
|
+
// Filter blogs by selected category
|
|
7272
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7273
|
+
const filteredBlogs = response.data.docs
|
|
7274
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7275
|
+
.filter(blog => Array.isArray(blog.category) &&
|
|
7276
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7277
|
+
blog.category.some(cat => cat.id === blogCategory.value)).slice(0, blogLimit)
|
|
7278
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7279
|
+
.map(blog => Object.assign(Object.assign({}, blog), {
|
|
7280
|
+
value: blog._id,
|
|
7281
|
+
label: blog.name || blog.title
|
|
7282
|
+
}));
|
|
7283
|
+
setSelectedCollectionItems(filteredBlogs);
|
|
7284
|
+
setCollectionItemsUpdated(true);
|
|
7285
|
+
}
|
|
7286
|
+
} catch (error) {
|
|
7287
|
+
console.error('Error fetching blogs:', error);
|
|
7288
|
+
}
|
|
7289
|
+
});
|
|
7290
|
+
fetchBlogsByCategory();
|
|
7291
|
+
}
|
|
7292
|
+
}, [blogCategory, blogLimit, currentItemsType, baseUrl, token, widgetRoutesPrefix]);
|
|
7293
|
+
// Reset blog category and limit when itemsType changes away from 'blogs'
|
|
7294
|
+
useEffect(() => {
|
|
7295
|
+
if (currentItemsType !== 'blogs') {
|
|
7296
|
+
setBlogCategory(null);
|
|
7297
|
+
setBlogLimit(10);
|
|
7298
|
+
setBlogCategories([]);
|
|
7299
|
+
}
|
|
7300
|
+
}, [currentItemsType]);
|
|
7200
7301
|
const onChangeSearch = (str, callback, collectionName) => {
|
|
7201
7302
|
let collectionItems = [];
|
|
7202
7303
|
let valueToSet = '';
|
|
@@ -7518,6 +7619,47 @@ const WidgetForm = ({
|
|
|
7518
7619
|
required: widgetTranslations.itemsTypePlaceholder
|
|
7519
7620
|
},
|
|
7520
7621
|
options: (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.linksWidgetTypeValue ? itemsTypes.filter(item => item.value === constants.pagesItemsTypeValue) : (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.tabsWidgetTypeValue || (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.collectionsOnly) ? itemsTypes.filter(item => item.label !== constants.imageItemsTypeValue && item.value !== constants.pagesItemsTypeValue) : (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.imageOnly) ? itemsTypes.filter(item => item.label === constants.imageItemsTypeValue) : itemsTypes.filter(item => item.value !== constants.pagesItemsTypeValue)
|
|
7622
|
+
}, {
|
|
7623
|
+
label: 'Blog Category',
|
|
7624
|
+
accessor: 'blogCategory',
|
|
7625
|
+
type: 'ReactSelect',
|
|
7626
|
+
selectedOptions: blogCategory ? [blogCategory] : [],
|
|
7627
|
+
isMulti: false,
|
|
7628
|
+
isSearchable: true,
|
|
7629
|
+
isClearable: true,
|
|
7630
|
+
onChange: selected => {
|
|
7631
|
+
setBlogCategory(Array.isArray(selected) ? selected[0] : selected);
|
|
7632
|
+
},
|
|
7633
|
+
loadOptions: (searchStr, callback) => {
|
|
7634
|
+
// Filter categories based on search string
|
|
7635
|
+
if (!callback) return;
|
|
7636
|
+
const filtered = searchStr ? blogCategories.filter(cat => cat.label.toLowerCase().includes(searchStr.toLowerCase())) : blogCategories;
|
|
7637
|
+
callback(filtered);
|
|
7638
|
+
},
|
|
7639
|
+
isLoading: blogCategoriesLoading,
|
|
7640
|
+
show: currentItemsType === 'blogs' && !itemsEnabled && ((selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.carouselWidgetTypeValue || (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.fixedCardWidgetTypeValue || !selectedWidgetType) && !!(selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.value),
|
|
7641
|
+
placeholder: 'Select blog category...',
|
|
7642
|
+
wrapperClassName: 'khb_grid-item-1of2 khb_padding-right-1',
|
|
7643
|
+
customStyles: reactSelectStyles || {},
|
|
7644
|
+
selectKey: `blog-category-select-${blogCategories.length}`
|
|
7645
|
+
}, {
|
|
7646
|
+
label: 'Max Blogs Limit',
|
|
7647
|
+
accessor: 'blogLimit',
|
|
7648
|
+
type: 'number',
|
|
7649
|
+
onInput: e => {
|
|
7650
|
+
const value = parseInt(e.target.value) || 0;
|
|
7651
|
+
setBlogLimit(value > 0 ? value : 1);
|
|
7652
|
+
return e;
|
|
7653
|
+
},
|
|
7654
|
+
show: currentItemsType === 'blogs' && !itemsEnabled && ((selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.carouselWidgetTypeValue || (selectedWidgetType === null || selectedWidgetType === void 0 ? void 0 : selectedWidgetType.value) === constants.fixedCardWidgetTypeValue || !selectedWidgetType) && !!(selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.value),
|
|
7655
|
+
placeholder: 'Enter maximum number of blogs',
|
|
7656
|
+
wrapperClassName: 'khb_grid-item-1of2 khb_padding-left-1',
|
|
7657
|
+
validations: {
|
|
7658
|
+
min: {
|
|
7659
|
+
value: 1,
|
|
7660
|
+
message: 'Minimum limit is 1'
|
|
7661
|
+
}
|
|
7662
|
+
}
|
|
7521
7663
|
}, {
|
|
7522
7664
|
label: widgetTranslations.webPerRow,
|
|
7523
7665
|
accessor: 'webPerRow',
|
package/package.json
CHANGED
package/src/lib/api/list.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ReactSelectProps } from '../../../types';
|
|
3
|
-
declare const CustomReactSelect: ({ onChange, label, error, className, isMulti, selectedOptions, required, isLoading, isSearchable, loadOptions, placeholder, wrapperClassName, formatOptionLabel, listCode, customStyles, selectKey, }: ReactSelectProps) => JSX.Element;
|
|
3
|
+
declare const CustomReactSelect: ({ onChange, label, error, className, isMulti, selectedOptions, required, isLoading, isSearchable, isClearable, loadOptions, placeholder, wrapperClassName, formatOptionLabel, listCode, customStyles, selectKey, }: ReactSelectProps) => JSX.Element;
|
|
4
4
|
export default CustomReactSelect;
|
package/src/lib/types/api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ACTION_TYPES = 'IMAGE_UPLOAD' | 'IMAGE_REMOVE' | 'CREATE' | 'LIST' | 'DELETE' | 'UPDATE' | 'ITEM' | 'PARTIAL_UPDATE' | 'WIDGET_TYPES' | 'SELECTION_TYPES' | 'COLLECTION_DATA' | 'GET_ONE' | 'LANGUAGES';
|
|
1
|
+
export type ACTION_TYPES = 'IMAGE_UPLOAD' | 'IMAGE_REMOVE' | 'CREATE' | 'LIST' | 'DELETE' | 'UPDATE' | 'ITEM' | 'PARTIAL_UPDATE' | 'WIDGET_TYPES' | 'SELECTION_TYPES' | 'COLLECTION_DATA' | 'GET_ONE' | 'LANGUAGES' | 'BLOG_CATEGORIES';
|
|
2
2
|
export type API_TYPE = {
|
|
3
3
|
url: string;
|
|
4
4
|
method: string;
|