@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 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
- if (value) {
3820
- setValue(schema.accessor, Array.isArray(value) ? value.map(item => item.value) : value.value);
3821
- if (schema.onChange) schema.onChange(value);
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
- if (value) {
3808
- setValue(schema.accessor, Array.isArray(value) ? value.map(item => item.value) : value.value);
3809
- if (schema.onChange) schema.onChange(value);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knovator/pagecreator-admin",
3
- "version": "1.6.1",
3
+ "version": "1.6.2",
4
4
  "dependencies": {
5
5
  "classnames": "^2.3.1",
6
6
  "react-beautiful-dnd": "^13.1.0",
@@ -44,6 +44,10 @@ declare const apiList: {
44
44
  url: string;
45
45
  method: string;
46
46
  };
47
+ BLOG_CATEGORIES: ({ prefix }: API_INPUT_TYPE) => {
48
+ url: string;
49
+ method: string;
50
+ };
47
51
  IMAGE_UPLOAD: ({ prefix }: API_INPUT_TYPE) => {
48
52
  url: string;
49
53
  method: string;
@@ -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;
@@ -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;
@@ -121,6 +121,7 @@ export interface ReactSelectProps {
121
121
  }[];
122
122
  isLoading?: boolean;
123
123
  isSearchable?: boolean;
124
+ isClearable?: boolean;
124
125
  placeholder?: string;
125
126
  formatOptionLabel?: (code: string, data: any) => JSX.Element;
126
127
  listCode?: string;