intlayer-editor 8.5.1 → 8.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/client/dist/assets/{CodeBlockShiki-DoD2Sc7u.js → CodeBlockShiki-ie_3x4KO.js} +28 -16
  2. package/client/dist/assets/{HTMLRendererPlugin-B6Eld7in.js → HTMLRendererPlugin-CoI--J8B.js} +17 -123
  3. package/client/dist/assets/{MarkdownRendererPlugin-qmrNTiKL.js → MarkdownRendererPlugin-C1_aJQ4G.js} +1 -1
  4. package/client/dist/assets/{bundle-web-CuX3_94g.js → bundle-web-aAx76M0Q.js} +1 -1
  5. package/client/dist/assets/css-CTHFYSjB.js +2 -0
  6. package/client/dist/assets/{index-B57zBtFg.js → index-BjBCv2LY.js} +626 -1514
  7. package/client/dist/assets/markdown-Cmyn5Xy8.js +2 -0
  8. package/client/dist/assets/svelte-DMcLNmwI.js +2 -0
  9. package/client/dist/index.html +1 -1
  10. package/package.json +15 -17
  11. /package/client/dist/assets/{github-dark-BwJSAZXP.js → github-dark-DosaLwNa.js} +0 -0
  12. /package/client/dist/assets/{github-light-CZ2m4Dvz.js → github-light-CYtEMkHi.js} +0 -0
  13. /package/client/dist/assets/{html-DLt87G20.js → html-Cb0ZmUHM.js} +0 -0
  14. /package/client/dist/assets/{javascript-Bj8xG5Bf.js → javascript-DHYR7yZ_.js} +0 -0
  15. /package/client/dist/assets/{json-DJtgMbAe.js → json-D2W2Fuwx.js} +0 -0
  16. /package/client/dist/assets/{json5-O7Bjs0LT.js → json5-CEEuERju.js} +0 -0
  17. /package/client/dist/assets/{tsx-BFOKZky4.js → tsx-CSGK_lzi.js} +0 -0
  18. /package/client/dist/assets/{typescript-BapAS8lG.js → typescript-CP6J4fn4.js} +0 -0
  19. /package/client/dist/assets/{unmerged_dictionaries-DFHIR2QQ.js → unmerged_dictionaries-DoWpZ8yJ.js} +0 -0
  20. /package/client/dist/assets/{vue-B4mAn0SQ.js → vue-Ds_55swf.js} +0 -0
  21. /package/client/dist/assets/{wasm-cxA-GdWm.js → wasm-DzIIgKhR.js} +0 -0
  22. /package/client/dist/assets/{xml-lldD3Wzd.js → xml-Dpr5QH3c.js} +0 -0
  23. /package/client/dist/assets/{yaml-D0P8Qywa.js → yaml-C2x5Mymk.js} +0 -0
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HTMLRendererPlugin-B6Eld7in.js","assets/chunk-C0u3WHrm.js","assets/react-BI_C_976.js","assets/CodeBlockShiki-DoD2Sc7u.js","assets/preload-helper-B4JcPOPd.js","assets/jsx-runtime-BkWmzJHO.js","assets/dist-D8J9DkzO.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HTMLRendererPlugin-CoI--J8B.js","assets/chunk-C0u3WHrm.js","assets/jsx-runtime-BkWmzJHO.js","assets/react-BI_C_976.js","assets/CodeBlockShiki-ie_3x4KO.js","assets/preload-helper-B4JcPOPd.js","assets/dist-D8J9DkzO.js"])))=>i.map(i=>d[i]);
2
2
  import { a as __toESM, i as __toCommonJS, n as __esmMin, r as __exportAll, t as __commonJSMin } from "./chunk-C0u3WHrm.js";
3
3
  import { t as require_react } from "./react-BI_C_976.js";
4
4
  import { t as require_jsx_runtime } from "./jsx-runtime-BkWmzJHO.js";
@@ -9515,8 +9515,8 @@ var require_react_dom_client_production = /* @__PURE__ */ __commonJSMin(((export
9515
9515
  };
9516
9516
  }));
9517
9517
  //#endregion
9518
- //#region .intlayer/config/configuration.mjs
9519
- var import_client = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
9518
+ //#region ../../node_modules/.bun/react-dom@19.2.4+b1ab299f0a400331/node_modules/react-dom/client.js
9519
+ var require_client = /* @__PURE__ */ __commonJSMin(((exports, module) => {
9520
9520
  function checkDCE() {
9521
9521
  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") return;
9522
9522
  try {
@@ -9527,8 +9527,11 @@ var import_client = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
9527
9527
  }
9528
9528
  checkDCE();
9529
9529
  module.exports = require_react_dom_client_production();
9530
- })))();
9530
+ }));
9531
+ //#endregion
9532
+ //#region .intlayer/config/configuration.mjs
9531
9533
  var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
9534
+ var import_client = require_client();
9532
9535
  var configuration = {
9533
9536
  internationalization: {
9534
9537
  "locales": [
@@ -9550,7 +9553,12 @@ var configuration = {
9550
9553
  },
9551
9554
  routing: {
9552
9555
  "mode": "prefix-no-default",
9553
- "storage": ["cookie", "header"],
9556
+ "storage": {
9557
+ "cookies": [],
9558
+ "localStorage": [{ "name": "INTLAYER_LOCALE" }],
9559
+ "sessionStorage": [],
9560
+ "headers": []
9561
+ },
9554
9562
  "basePath": ""
9555
9563
  },
9556
9564
  editor: {
@@ -9570,7 +9578,7 @@ var configuration = {
9570
9578
  },
9571
9579
  metadata: {
9572
9580
  "name": "Intlayer",
9573
- "version": "8.5.1",
9581
+ "version": "8.6.0",
9574
9582
  "doc": "https://intlayer.org/docs"
9575
9583
  }
9576
9584
  };
@@ -9714,107 +9722,6 @@ var deepTransformNode = (node, props) => {
9714
9722
  return result;
9715
9723
  };
9716
9724
  //#endregion
9717
- //#region ../@intlayer/core/dist/esm/interpreter/getEnumeration.mjs
9718
- /**
9719
- * Find the matching condition for a quantity.
9720
- *
9721
- * Usage:
9722
- *
9723
- * ```ts
9724
- * const key = findMatchingCondition({
9725
- * '<=-2.3': 'You have less than -2.3',
9726
- * '<1': 'You have less than one',
9727
- * '2': 'You have two',
9728
- * '>=3': 'You have three or more',
9729
- * }, 2);
9730
- * // '2'
9731
- * ```
9732
- *
9733
- * The order of the keys will define the priority of the content.
9734
- *
9735
- * ```ts
9736
- * const key = findMatchingCondition({
9737
- * '<4': 'You have less than four',
9738
- * '2': 'You have two',
9739
- * }, 2);
9740
- * // '<4'
9741
- * ```
9742
- *
9743
- * If no keys match, the default key is '1'.
9744
- */
9745
- var findMatchingCondition = (enumerationContent, quantity) => {
9746
- const numericKeys = Object.keys(enumerationContent);
9747
- for (const key of numericKeys) {
9748
- const isEqual = !key.startsWith(">") && !key.startsWith("<") && !key.startsWith("=") && parseFloat(key) === quantity || key.startsWith("=") && parseFloat(key.slice(1)) === quantity;
9749
- const isSuperior = key.startsWith(">") && quantity > parseFloat(key.slice(1));
9750
- const isSuperiorOrEqual = key.startsWith(">=") && quantity >= parseFloat(key.slice(2));
9751
- const isInferior = key.startsWith("<") && quantity < parseFloat(key.slice(1));
9752
- const isInferiorOrEqual = key.startsWith("<=") && quantity <= parseFloat(key.slice(2));
9753
- if (isEqual || isSuperior || isSuperiorOrEqual || isInferior || isInferiorOrEqual) return key;
9754
- }
9755
- };
9756
- /**
9757
- * Picks content from an enumeration map based on a provided quantity.
9758
- *
9759
- * Supported keys in the enumeration map:
9760
- * - Specific numbers: '0', '1', '2'
9761
- * - Comparison operators: '<5', '>=10', '<=2'
9762
- * - Fallback: 'fallback'
9763
- *
9764
- * The first matching key in the object's iteration order will be selected.
9765
- *
9766
- * @param enumerationContent - A map of conditions/quantities to content.
9767
- * @param quantity - The number to match against the conditions.
9768
- * @returns The matching content.
9769
- *
9770
- * @example
9771
- * ```ts
9772
- * const content = getEnumeration({
9773
- * '0': 'No items',
9774
- * '1': 'One item',
9775
- * '>1': 'Many items',
9776
- * }, 5);
9777
- * // 'Many items'
9778
- * ```
9779
- */
9780
- var getEnumeration = (enumerationContent, quantity) => {
9781
- return enumerationContent[findMatchingCondition(enumerationContent, quantity) ?? "fallback"];
9782
- };
9783
- //#endregion
9784
- //#region ../@intlayer/core/dist/esm/interpreter/getGender.mjs
9785
- var getGenderEntry = (gender) => {
9786
- if (gender === "m" || gender === "male") return "male";
9787
- if (gender === "f" || gender === "female") return "female";
9788
- return "fallback";
9789
- };
9790
- /**
9791
- * Allow to pick a content based on a gender.
9792
- *
9793
- * Usage:
9794
- *
9795
- * ```ts
9796
- * const content = getGender({
9797
- * 'true': 'The gender is validated',
9798
- * 'false': 'The gender is not validated',
9799
- * }, true);
9800
- * // 'The gender is validated'
9801
- * ```
9802
- *
9803
- * The last key provided will be used as the fallback value.
9804
- *
9805
- * ```ts
9806
- * const content = getGender({
9807
- * 'false': 'The gender is not validated',
9808
- * 'true': 'The gender is validated',
9809
- * }, undefined);
9810
- * // 'The gender is validated'
9811
- */
9812
- var getGender = (genderContent, gender) => {
9813
- const stateList = Object.keys(genderContent);
9814
- const fallbackState = stateList[stateList.length - 1];
9815
- return genderContent[getGenderEntry(gender)] ?? genderContent.fallback ?? genderContent[fallbackState];
9816
- };
9817
- //#endregion
9818
9725
  //#region ../@intlayer/core/dist/esm/interpreter/getInsertion.mjs
9819
9726
  /**
9820
9727
  * Allow to insert values in a string.
@@ -9833,121 +9740,6 @@ var getInsertion = (content, values) => content.replace(/\{\{\s*(.*?)\s*\}\}/g,
9833
9740
  return (values[key.trim()] ?? "").toString();
9834
9741
  });
9835
9742
  //#endregion
9836
- //#region ../@intlayer/config/dist/esm/colors.mjs
9837
- var RESET = "\x1B[0m";
9838
- var BLUE = "\x1B[34m";
9839
- var RED = "\x1B[31m";
9840
- var GREEN = "\x1B[32m";
9841
- var BEIGE = "\x1B[38;5;3m";
9842
- //#endregion
9843
- //#region ../@intlayer/config/dist/esm/logger.mjs
9844
- var loggerPrefix;
9845
- var getPrefix$1 = (configPrefix) => {
9846
- if (typeof loggerPrefix !== "undefined") return loggerPrefix;
9847
- return configPrefix;
9848
- };
9849
- var logger = (content, details) => {
9850
- const isVerbose = details?.isVerbose ?? false;
9851
- const mode = details?.config?.mode ?? "default";
9852
- const level = details?.level ?? "info";
9853
- const prefix = getPrefix$1(details?.config?.prefix);
9854
- const log = details?.config?.log ?? console.log;
9855
- const info = details?.config?.info ?? console.info;
9856
- const warn = details?.config?.warn ?? console.warn;
9857
- const error = details?.config?.error ?? console.error;
9858
- const debug = details?.config?.debug ?? console.debug;
9859
- if (mode === "disabled") return;
9860
- if (isVerbose && mode !== "verbose") return;
9861
- const flatContent = prefix ? [prefix, ...[content].flat()] : [content].flat();
9862
- if (level === "debug") return debug(...flatContent);
9863
- if (level === "info") return info(...flatContent);
9864
- if (level === "warn") return warn(...flatContent);
9865
- if (level === "error") return error(...flatContent);
9866
- log(...flatContent);
9867
- };
9868
- /**
9869
- * The appLogger function takes the logger and merges it with the configuration from the intlayer config file.
9870
- * It allows overriding the default configuration by passing a config object in the details parameter.
9871
- * The configuration is merged with the default configuration from the intlayer config file.
9872
- */
9873
- var getAppLogger = (configuration, globalDetails) => (content, details) => logger(content, {
9874
- ...details ?? {},
9875
- config: {
9876
- ...configuration?.log,
9877
- ...globalDetails?.config,
9878
- ...details?.config ?? {}
9879
- }
9880
- });
9881
- var colorize = (s, color, reset) => color ? `${color}${s}${reset ? typeof reset === "boolean" ? RESET : reset : RESET}` : s;
9882
- var colorizeKey = (keyPath, color = BEIGE, reset = RESET) => [keyPath].flat().map((key) => colorize(key, color, reset)).join(`, `);
9883
- colorize("✗", RED);
9884
- colorize("✓", GREEN);
9885
- colorize("⏲", BLUE);
9886
- //#endregion
9887
- //#region .intlayer/main/dictionaries.mjs
9888
- var dictionaries = {};
9889
- var getDictionaries = () => dictionaries;
9890
- //#endregion
9891
- //#region ../@intlayer/core/dist/esm/interpreter/getIntlayer.mjs
9892
- /**
9893
- * Creates a Recursive Proxy that returns the path of the accessed key
9894
- * stringified. This prevents the app from crashing on undefined access.
9895
- */
9896
- var createSafeFallback = (path = "") => {
9897
- return new Proxy(() => path, {
9898
- get: (_target, prop) => {
9899
- if (prop === "toJSON" || prop === Symbol.toPrimitive || prop === "toString") return () => path;
9900
- if (prop === "then") return;
9901
- return createSafeFallback(path ? `${path}.${String(prop)}` : String(prop));
9902
- },
9903
- apply: () => {
9904
- return path;
9905
- }
9906
- });
9907
- };
9908
- var getIntlayer = (key, locale, plugins) => {
9909
- const dictionary = getDictionaries()[key];
9910
- if (!dictionary) {
9911
- getAppLogger(configuration)(`Dictionary ${colorizeKey(key)} was not found. Using fallback proxy.`, {
9912
- level: "warn",
9913
- isVerbose: true
9914
- });
9915
- return createSafeFallback(key);
9916
- }
9917
- return getDictionary$1(dictionary, locale, plugins);
9918
- };
9919
- //#endregion
9920
- //#region ../@intlayer/core/dist/esm/interpreter/getNesting.mjs
9921
- /**
9922
- * Extracts content from another dictionary by its key and an optional path.
9923
- *
9924
- * This allows for reusing content across different dictionaries.
9925
- *
9926
- * @param dictionaryKey - The key of the dictionary to nest.
9927
- * @param path - Optional dot-separated path to a specific field within the nested dictionary.
9928
- * @param props - Optional properties like locale and plugins.
9929
- * @returns The nested content.
9930
- *
9931
- * @example
9932
- * ```ts
9933
- * const content = getNesting("common", "buttons.save");
9934
- * // 'Save'
9935
- * ```
9936
- */
9937
- var getNesting = (dictionaryKey, path, props) => {
9938
- const dictionary = getIntlayer(dictionaryKey, props?.locale, props?.plugins);
9939
- if (typeof path === "string") {
9940
- const pathArray = path.split(".");
9941
- let current = dictionary;
9942
- for (const key of pathArray) {
9943
- current = current?.[key];
9944
- if (current === void 0) return dictionary;
9945
- }
9946
- return current;
9947
- }
9948
- return dictionary;
9949
- };
9950
- //#endregion
9951
9743
  //#region ../@intlayer/core/dist/esm/interpreter/getTranslation.mjs
9952
9744
  /**
9953
9745
  * Check if a value is a plain object that can be safely merged.
@@ -10052,30 +9844,6 @@ var translationPlugin = (locale, fallback) => ({
10052
9844
  return getTranslation(result, locale, fallback);
10053
9845
  }
10054
9846
  });
10055
- /** Enumeration plugin. Replaces node with a function that takes quantity => string. */
10056
- var enumerationPlugin = {
10057
- id: "enumeration-plugin",
10058
- canHandle: (node) => typeof node === "object" && node?.nodeType === "enumeration",
10059
- transform: (node, props, deepTransformNode) => {
10060
- const result = { ...node[ENUMERATION] };
10061
- for (const key in result) {
10062
- const child = result[key];
10063
- result[key] = deepTransformNode(child, {
10064
- ...props,
10065
- children: child,
10066
- keyPath: [...props.keyPath, {
10067
- type: ENUMERATION,
10068
- key
10069
- }]
10070
- });
10071
- }
10072
- return (arg) => {
10073
- const subResult = getEnumeration(result, typeof arg === "number" ? arg : arg.count);
10074
- if (typeof subResult === "function" && typeof arg === "object") return subResult(arg);
10075
- return subResult;
10076
- };
10077
- }
10078
- };
10079
9847
  /** Condition plugin. Replaces node with a function that takes boolean => string. */
10080
9848
  var conditionPlugin = {
10081
9849
  id: "condition-plugin",
@@ -10135,55 +9903,17 @@ var insertionPlugin$1 = {
10135
9903
  });
10136
9904
  }
10137
9905
  };
10138
- /** Gender plugin. Replaces node with a function that takes gender => string. */
10139
- var genderPlugin = {
10140
- id: "gender-plugin",
10141
- canHandle: (node) => typeof node === "object" && node?.nodeType === "gender",
10142
- transform: (node, props, deepTransformNode) => {
10143
- const result = { ...node[GENDER] };
10144
- for (const key in result) {
10145
- const child = result[key];
10146
- result[key] = deepTransformNode(child, {
10147
- ...props,
10148
- children: child,
10149
- keyPath: [...props.keyPath, {
10150
- type: GENDER,
10151
- key
10152
- }]
10153
- });
10154
- }
10155
- return (value) => getGender(result, value);
10156
- }
10157
- };
10158
- /** Nested plugin. Replaces node with the result of `getNesting`. */
10159
- var nestedPlugin = (locale) => ({
10160
- id: "nested-plugin",
10161
- canHandle: (node) => typeof node === "object" && (node?.nodeType === "nested" || node?.nodeType === "n"),
10162
- transform: (node, props) => getNesting(node[NESTED].dictionaryKey, node[NESTED].path, {
10163
- ...props,
10164
- locale: locale ?? props.locale
10165
- })
10166
- });
10167
- /** File plugin. Replaces node with the result of `getNesting`. */
10168
- var filePlugin = {
10169
- id: "file-plugin",
10170
- canHandle: (node) => typeof node === "object" && node?.nodeType === "file",
10171
- transform: (node, props, deepTransform) => deepTransform(node.content, {
10172
- ...props,
10173
- children: node.content
10174
- })
10175
- };
10176
9906
  //#endregion
10177
9907
  //#region ../@intlayer/core/dist/esm/interpreter/getContent/getContent.mjs
10178
9908
  var getBasePlugins = (locale, fallback = true) => [
10179
- translationPlugin(locale ?? configuration.internationalization.defaultLocale, fallback ? configuration.internationalization.defaultLocale : void 0),
10180
- enumerationPlugin,
10181
- conditionPlugin,
10182
- insertionPlugin$1,
10183
- nestedPlugin(locale ?? configuration.internationalization.defaultLocale),
10184
- filePlugin,
10185
- genderPlugin
10186
- ];
9909
+ {}.INTLAYER_NODE_TYPE_TRANSLATION !== "false" && translationPlugin(locale ?? configuration.internationalization.defaultLocale, fallback ? configuration.internationalization.defaultLocale : void 0),
9910
+ false,
9911
+ {}.INTLAYER_NODE_TYPE_CONDITION !== "false" && conditionPlugin,
9912
+ {}.INTLAYER_NODE_TYPE_INSERTION !== "false" && insertionPlugin$1,
9913
+ false,
9914
+ false,
9915
+ false
9916
+ ].filter(Boolean);
10187
9917
  /**
10188
9918
  * Transforms a node in a single pass, applying each plugin as needed.
10189
9919
  *
@@ -10219,388 +9949,27 @@ var getDictionary$1 = (dictionary, locale, plugins = getBasePlugins(locale)) =>
10219
9949
  * Check if a value is a complex object (not a primitive)
10220
9950
  * Used to determine if values need to be wrapped in fragments
10221
9951
  */
10222
- var isComplexValue = (value) => {
10223
- return value !== null && value !== void 0 && typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean";
10224
- };
10225
- /**
10226
- * Core logic for splitting insertion strings and joining with values.
10227
- * Returns an array of parts that can be wrapped by framework-specific Fragment implementations.
10228
- *
10229
- * @param template - The template string with {{ placeholder }} syntax
10230
- * @param values - Map of placeholder names to their replacement values
10231
- * @returns Object with `isSimple` flag and `parts` array
10232
- *
10233
- * @example
10234
- * ```ts
10235
- * const result = splitInsertionTemplate('Hello {{ name }}!', { name: 'World' });
10236
- * // { isSimple: true, parts: 'Hello World!' }
10237
- *
10238
- * const result = splitInsertionTemplate('Hello {{ name }}!', { name: <Component /> });
10239
- * // { isSimple: false, parts: ['Hello ', <Component />, '!'] }
10240
- * ```
10241
- */
9952
+ var isComplexValue = (value) => value != null && typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean";
9953
+ var insertionRegex = /\{\{\s*(.*?)\s*\}\}/g;
10242
9954
  var splitInsertionTemplate = (template, values = {}) => {
10243
- const safeValues = values ?? {};
10244
- if (!Object.values(safeValues).some(isComplexValue)) return {
9955
+ if (!Object.values(values).some(isComplexValue)) return {
10245
9956
  isSimple: true,
10246
- parts: template.replace(/\{\{\s*(.*?)\s*\}\}/g, (_, key) => {
10247
- return (safeValues[key.trim()] ?? "").toString();
10248
- })
9957
+ parts: template.replace(insertionRegex, (_, key) => (values[key.trim()] ?? "").toString())
10249
9958
  };
9959
+ const chunks = template.split(insertionRegex);
10250
9960
  const parts = [];
10251
- let lastIndex = 0;
10252
- const regex = /\{\{\s*(.*?)\s*\}\}/g;
10253
- let match = regex.exec(template);
10254
- while (match !== null) {
10255
- if (match.index > lastIndex) parts.push(template.substring(lastIndex, match.index));
10256
- const value = safeValues[match[1].trim()];
10257
- if (value !== void 0 && value !== null) parts.push(value);
10258
- lastIndex = match.index + match[0].length;
10259
- match = regex.exec(template);
10260
- }
10261
- if (lastIndex < template.length) parts.push(template.substring(lastIndex));
9961
+ for (let i = 0; i < chunks.length; i++) if (i % 2 === 0) {
9962
+ if (chunks[i]) parts.push(chunks[i]);
9963
+ } else {
9964
+ const val = values[chunks[i].trim()];
9965
+ if (val != null) parts.push(val);
9966
+ }
10262
9967
  return {
10263
9968
  isSimple: false,
10264
9969
  parts
10265
9970
  };
10266
9971
  };
10267
9972
  //#endregion
10268
- //#region ../@intlayer/core/dist/esm/utils/parseYaml.mjs
10269
- var parseYaml = (input) => {
10270
- const text = input.trim();
10271
- if (!text) return null;
10272
- let index = 0;
10273
- const isWhitespace = (ch) => ch === " " || ch === "\n" || ch === " " || ch === "\r";
10274
- const peek = () => text[index];
10275
- const next = () => text[index++];
10276
- const eof = () => index >= text.length;
10277
- const skipWhitespace = () => {
10278
- while (!eof() && isWhitespace(peek())) index++;
10279
- };
10280
- const parseQuotedString = (quote) => {
10281
- next();
10282
- let result = "";
10283
- while (!eof()) {
10284
- const ch = next();
10285
- if (ch === quote) return result;
10286
- if (ch === "\\" && !eof()) {
10287
- const escaped = next();
10288
- result += escaped;
10289
- } else result += ch;
10290
- }
10291
- throw new SyntaxError("Unterminated string");
10292
- };
10293
- const isStopChar = (ch, stops) => !!ch && stops.includes(ch);
10294
- const parseUnquotedToken = (stops) => {
10295
- let result = "";
10296
- while (!eof()) {
10297
- if (isStopChar(peek(), stops)) break;
10298
- result += next();
10299
- }
10300
- return result.trim();
10301
- };
10302
- const toTypedValue = (raw) => {
10303
- if (raw === "true" || raw === "false" || raw === "null" || raw === "undefined" || raw === "yes" || raw === "no" || raw === "on" || raw === "off") return raw;
10304
- if (raw === "NaN" || raw === "Infinity" || raw === "-Infinity") return raw;
10305
- if (/^0x[0-9a-fA-F]+$/.test(raw) || /^#/.test(raw)) return raw;
10306
- if (/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i.test(raw)) {
10307
- if (raw === "3.14159265359") return Math.PI;
10308
- return Number(raw);
10309
- }
10310
- return raw;
10311
- };
10312
- const parseValue = (stops) => {
10313
- skipWhitespace();
10314
- if (eof()) throw new SyntaxError("Unexpected end of input");
10315
- const ch = peek();
10316
- if (ch === "[") return parseArray();
10317
- if (ch === "{") return parseObject();
10318
- if (ch === "\"" || ch === "'") return parseQuotedString(ch);
10319
- const token = parseUnquotedToken(stops);
10320
- if (token === "") throw new SyntaxError("Empty token");
10321
- return toTypedValue(token);
10322
- };
10323
- const parseArray = () => {
10324
- next();
10325
- const arr = [];
10326
- skipWhitespace();
10327
- if (peek() === "]") {
10328
- next();
10329
- return arr;
10330
- }
10331
- while (true) {
10332
- skipWhitespace();
10333
- arr.push(parseValue([",", "]"]));
10334
- skipWhitespace();
10335
- const ch = next();
10336
- if (ch === "]") break;
10337
- if (ch !== ",") throw new SyntaxError("Expected ',' or ']' after array element");
10338
- skipWhitespace();
10339
- if (peek() === "]") throw new SyntaxError("Trailing comma in array");
10340
- }
10341
- return arr;
10342
- };
10343
- const parseYamlListItem = () => {
10344
- next();
10345
- skipWhitespace();
10346
- if (peek() === "{") return parseObject();
10347
- const ch = peek();
10348
- if (ch === "\"" || ch === "'") return parseQuotedString(ch);
10349
- let hasColon = false;
10350
- let tempIdx = index;
10351
- while (tempIdx < text.length && text[tempIdx] !== "\n") {
10352
- if (text[tempIdx] === ":" && tempIdx + 1 < text.length && text[tempIdx + 1] === " ") {
10353
- hasColon = true;
10354
- break;
10355
- }
10356
- tempIdx++;
10357
- }
10358
- if (hasColon) return parseIndentedObject();
10359
- return toTypedValue(parseUnquotedToken(["\n"]));
10360
- };
10361
- const parseIndentedObject = () => {
10362
- const obj = {};
10363
- const baseIndent = getCurrentIndent();
10364
- while (!eof()) {
10365
- const lineStart = index;
10366
- const prevChar = text[lineStart - 1];
10367
- skipWhitespace();
10368
- const currentIndent = getCurrentIndent();
10369
- if ((lineStart === 0 || prevChar === "\n") && currentIndent <= baseIndent) {
10370
- index = lineStart;
10371
- break;
10372
- }
10373
- const ch = peek();
10374
- if (ch === "-" || eof()) {
10375
- index = lineStart;
10376
- break;
10377
- }
10378
- let key = "";
10379
- if (ch === "\"" || ch === "'") key = parseQuotedString(ch);
10380
- else {
10381
- while (!eof() && peek() !== ":") key += next();
10382
- key = key.trim();
10383
- }
10384
- if (eof() || next() !== ":") break;
10385
- skipWhitespace();
10386
- if (peek() === "\n") {
10387
- next();
10388
- skipWhitespace();
10389
- if (peek() === "-") {
10390
- obj[key] = parseYamlList();
10391
- continue;
10392
- }
10393
- }
10394
- obj[key] = toTypedValue(parseUnquotedToken(["\n"]));
10395
- if (peek() === "\n") next();
10396
- }
10397
- return obj;
10398
- };
10399
- const getCurrentIndent = () => {
10400
- let indent = 0;
10401
- let i = index;
10402
- while (i > 0 && text[i - 1] !== "\n") i--;
10403
- while (i < text.length && text[i] === " ") {
10404
- indent++;
10405
- i++;
10406
- }
10407
- return indent;
10408
- };
10409
- const parseYamlList = () => {
10410
- const arr = [];
10411
- const baseIndent = getCurrentIndent();
10412
- while (!eof()) {
10413
- while (!eof() && isWhitespace(peek())) {
10414
- next();
10415
- if (peek() === "-") break;
10416
- }
10417
- if (eof()) break;
10418
- if (getCurrentIndent() < baseIndent) break;
10419
- if (peek() !== "-") break;
10420
- arr.push(parseYamlListItem());
10421
- }
10422
- return arr;
10423
- };
10424
- const parseObjectBody = (stops) => {
10425
- const obj = {};
10426
- skipWhitespace();
10427
- while (true) {
10428
- skipWhitespace();
10429
- if (eof()) return obj;
10430
- if (isStopChar(peek(), stops)) return obj;
10431
- let key = "";
10432
- const ch = peek();
10433
- if (ch === "\"" || ch === "'") key = parseQuotedString(ch);
10434
- else {
10435
- while (!eof()) {
10436
- const c = peek();
10437
- if (c === ":") break;
10438
- if (c === "\n") break;
10439
- if (isStopChar(c, stops)) throw new SyntaxError("Expected ':' in object entry");
10440
- key += next();
10441
- }
10442
- key = key.trim();
10443
- }
10444
- if (!key) return obj;
10445
- if (eof() || next() !== ":") throw new SyntaxError("Expected ':' after key");
10446
- if (!eof() && peek() === " ") next();
10447
- while (!eof() && (peek() === " " || peek() === " ")) next();
10448
- if (eof()) {
10449
- obj[key] = "";
10450
- return obj;
10451
- }
10452
- if (peek() === "\n") {
10453
- next();
10454
- const afterNewlinePos = index;
10455
- skipWhitespace();
10456
- if (peek() === "-") {
10457
- obj[key] = parseYamlList();
10458
- skipWhitespace();
10459
- continue;
10460
- } else {
10461
- index = afterNewlinePos;
10462
- skipWhitespace();
10463
- if (!eof()) {
10464
- const nextChar = peek();
10465
- if (nextChar && !isStopChar(nextChar, stops) && nextChar !== "-") {
10466
- obj[key] = "";
10467
- continue;
10468
- }
10469
- }
10470
- obj[key] = "";
10471
- return obj;
10472
- }
10473
- }
10474
- obj[key] = parseValue(stops.includes("}") ? [
10475
- ",",
10476
- "\n",
10477
- ...stops
10478
- ] : ["\n", ...stops]);
10479
- if (eof()) return obj;
10480
- let sep = peek();
10481
- if (sep === ",") {
10482
- next();
10483
- skipWhitespace();
10484
- continue;
10485
- }
10486
- if (sep === "\n") {
10487
- next();
10488
- skipWhitespace();
10489
- continue;
10490
- }
10491
- if (sep === " " || sep === " ") {
10492
- while (!eof() && (peek() === " " || peek() === " ")) next();
10493
- sep = peek();
10494
- if (sep === "\n") {
10495
- next();
10496
- skipWhitespace();
10497
- continue;
10498
- }
10499
- if (eof() || isStopChar(sep, stops)) return obj;
10500
- continue;
10501
- }
10502
- if (isStopChar(sep, stops)) return obj;
10503
- if (!eof()) continue;
10504
- return obj;
10505
- }
10506
- };
10507
- const parseObject = () => {
10508
- next();
10509
- skipWhitespace();
10510
- if (peek() === "}") {
10511
- next();
10512
- return {};
10513
- }
10514
- const obj = parseObjectBody(["}"]);
10515
- if (peek() !== "}") throw new SyntaxError("Expected '}' at end of object");
10516
- next();
10517
- return obj;
10518
- };
10519
- const hasTopLevelKeyColonSpace = (s) => {
10520
- let i = 0;
10521
- let depth = 0;
10522
- let quote = null;
10523
- while (i < s.length) {
10524
- const char = s[i];
10525
- if (quote) {
10526
- if (char === "\\" && i + 1 < s.length) {
10527
- i += 2;
10528
- continue;
10529
- }
10530
- if (char === quote) {
10531
- quote = null;
10532
- i++;
10533
- continue;
10534
- }
10535
- i++;
10536
- continue;
10537
- }
10538
- if (char === "\"" || char === "'") {
10539
- quote = char;
10540
- i++;
10541
- continue;
10542
- }
10543
- if (char === "[" || char === "{") {
10544
- depth++;
10545
- i++;
10546
- continue;
10547
- }
10548
- if (char === "]" || char === "}") {
10549
- depth = Math.max(0, depth - 1);
10550
- i++;
10551
- continue;
10552
- }
10553
- if (depth === 0 && char === ":") {
10554
- const nextCh = s[i + 1];
10555
- if (nextCh === " " || nextCh === "\n" || nextCh === void 0) return true;
10556
- }
10557
- i++;
10558
- }
10559
- return false;
10560
- };
10561
- if (text.startsWith("]") || text.startsWith("}")) throw new SyntaxError("Unexpected closing bracket");
10562
- if (text.startsWith("[")) {
10563
- const value = parseArray();
10564
- skipWhitespace();
10565
- if (!eof()) throw new SyntaxError("Unexpected trailing characters");
10566
- return value;
10567
- }
10568
- if (text.startsWith("{")) {
10569
- const value = parseObject();
10570
- skipWhitespace();
10571
- if (!eof()) throw new SyntaxError("Unexpected trailing characters");
10572
- return value;
10573
- }
10574
- if (hasTopLevelKeyColonSpace(text)) {
10575
- const value = parseObjectBody([]);
10576
- skipWhitespace();
10577
- if (!eof()) throw new SyntaxError("Unexpected trailing characters");
10578
- return value;
10579
- }
10580
- const single = parseValue([]);
10581
- skipWhitespace();
10582
- if (!eof()) throw new SyntaxError("Unexpected trailing characters");
10583
- return single;
10584
- };
10585
- //#endregion
10586
- //#region ../@intlayer/core/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs
10587
- var getMarkdownMetadata = (markdown) => {
10588
- try {
10589
- const lines = markdown.split(/\r?\n/);
10590
- const firstNonEmptyLine = lines.find((line) => line.trim() !== "");
10591
- if (!firstNonEmptyLine || firstNonEmptyLine.trim() !== "---") return {};
10592
- let metadataEndIndex = -1;
10593
- for (let i = 1; i < lines.length; i++) if (lines[i].trim() === "---") {
10594
- metadataEndIndex = i;
10595
- break;
10596
- }
10597
- if (metadataEndIndex === -1) return {};
10598
- return parseYaml(lines.slice(1, metadataEndIndex).join("\n")) ?? {};
10599
- } catch {
10600
- return {};
10601
- }
10602
- };
10603
- //#endregion
10604
9973
  //#region ../@intlayer/core/dist/esm/markdown/constants.mjs
10605
9974
  /**
10606
9975
  * Analogous to `node.type`. Please note that the values here may change at any time,
@@ -12087,10 +11456,8 @@ var compile = (markdown = "", ctx, options = {}) => {
12087
11456
  key: def.identifier
12088
11457
  }, def.identifier, emitter(parser(def.footnote, { inline: true }), { inline: true }))))) : node;
12089
11458
  };
12090
- //#endregion
12091
- //#region ../react-intlayer/dist/esm/plugins.mjs
12092
- var LazyMarkdownRendererPlugin = (0, import_react.lazy)(() => __vitePreload(() => import("./MarkdownRendererPlugin-qmrNTiKL.js").then((m) => ({ default: m.MarkdownRendererPlugin })), []));
12093
- var LazyHTMLRendererPlugin = (0, import_react.lazy)(() => __vitePreload(() => import("./HTMLRendererPlugin-B6Eld7in.js").then((m) => ({ default: m.HTMLRendererPlugin })), __vite__mapDeps([0,1,2])));
11459
+ (0, import_react.lazy)(() => __vitePreload(() => import("./MarkdownRendererPlugin-C1_aJQ4G.js").then((m) => ({ default: m.MarkdownRendererPlugin })), []));
11460
+ (0, import_react.lazy)(() => __vitePreload(() => import("./HTMLRendererPlugin-CoI--J8B.js").then((m) => ({ default: m.HTMLRendererPlugin })), __vite__mapDeps([0,1,2,3])));
12094
11461
  /** Translation plugin. Replaces node with a locale string if nodeType = Translation. */
12095
11462
  var intlayerNodePlugins = {
12096
11463
  id: "intlayer-node-plugin",
@@ -12098,7 +11465,10 @@ var intlayerNodePlugins = {
12098
11465
  transform: (_node, { plugins, ...rest }) => renderIntlayerNode({
12099
11466
  ...rest,
12100
11467
  value: rest.children,
12101
- children: rest.children
11468
+ children: configuration.editor.enabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ContentSelector, {
11469
+ ...rest,
11470
+ children: rest.children
11471
+ }) : rest.children
12102
11472
  })
12103
11473
  };
12104
11474
  /** Translation plugin. Replaces node with a locale string if nodeType = Translation. */
@@ -12108,7 +11478,10 @@ var reactNodePlugins = {
12108
11478
  transform: (node, { plugins, ...rest }) => renderIntlayerNode({
12109
11479
  ...rest,
12110
11480
  value: "[[react-element]]",
12111
- children: renderReactElement(node)
11481
+ children: configuration.editor.enabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ContentSelector, {
11482
+ ...rest,
11483
+ children: renderReactElement(node)
11484
+ }) : renderReactElement(node)
12112
11485
  })
12113
11486
  };
12114
11487
  /**
@@ -12160,464 +11533,83 @@ var insertionPlugin = {
12160
11533
  return result;
12161
11534
  }
12162
11535
  };
12163
- /** Markdown string plugin. Replaces string node with a component that render the markdown. */
12164
- var markdownStringPlugin = {
12165
- id: "markdown-string-plugin",
12166
- canHandle: (node) => typeof node === "string",
12167
- transform: (node, props, deepTransformNode) => {
12168
- const { plugins, ...rest } = props;
12169
- const metadataNodes = deepTransformNode(getMarkdownMetadata(node) ?? {}, {
12170
- plugins: [{
12171
- id: "markdown-metadata-plugin",
12172
- canHandle: (metadataNode) => typeof metadataNode === "string" || typeof metadataNode === "number" || typeof metadataNode === "boolean" || !metadataNode,
12173
- transform: (metadataNode, props) => renderIntlayerNode({
12174
- ...props,
12175
- value: metadataNode,
12176
- children: node
12177
- })
12178
- }],
12179
- dictionaryKey: rest.dictionaryKey,
12180
- keyPath: []
12181
- });
12182
- const render = (components) => renderIntlayerNode({
12183
- ...props,
12184
- value: node,
12185
- children: configuration.editor.enabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ContentSelector, {
12186
- ...rest,
12187
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
12188
- fallback: node,
12189
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LazyMarkdownRendererPlugin, {
12190
- ...rest,
12191
- components,
12192
- children: node
12193
- })
12194
- })
12195
- }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
12196
- fallback: node,
12197
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LazyMarkdownRendererPlugin, {
12198
- ...rest,
12199
- components,
12200
- children: node
12201
- })
12202
- }),
12203
- additionalProps: { metadata: metadataNodes }
12204
- });
12205
- const element = render();
12206
- return new Proxy(element, { get(target, prop, receiver) {
12207
- if (prop === "value") return node;
12208
- if (prop === "metadata") return metadataNodes;
12209
- if (prop === "use") return (components) => render(components);
12210
- return Reflect.get(target, prop, receiver);
12211
- } });
12212
- }
12213
- };
12214
- var markdownPlugin = {
12215
- id: "markdown-plugin",
12216
- canHandle: (node) => typeof node === "object" && node?.nodeType === "markdown",
12217
- transform: (node, props, deepTransformNode) => {
12218
- const newKeyPath = [...props.keyPath, { type: MARKDOWN }];
12219
- const children = node[MARKDOWN];
12220
- return deepTransformNode(children, {
12221
- ...props,
12222
- children,
12223
- keyPath: newKeyPath,
12224
- plugins: [markdownStringPlugin, ...props.plugins ?? []]
12225
- });
12226
- }
12227
- };
12228
- /** HTML plugin. Replaces node with a function that takes components => ReactNode. */
12229
- var htmlPlugin = {
12230
- id: "html-plugin",
12231
- canHandle: (node) => typeof node === "object" && node?.nodeType === "html",
12232
- transform: (node, props) => {
12233
- const html = node[HTML];
12234
- const { plugins, ...rest } = props;
12235
- const render = (userComponents) => (0, import_react.createElement)(import_react.Suspense, { fallback: html }, (0, import_react.createElement)(LazyHTMLRendererPlugin, {
12236
- ...rest,
12237
- html,
12238
- userComponents
12239
- }));
12240
- const element = render();
12241
- return new Proxy(element, { get(target, prop, receiver) {
12242
- if (prop === "value") return html;
12243
- if (prop === "use") return (userComponents) => render(userComponents);
12244
- return Reflect.get(target, prop, receiver);
12245
- } });
12246
- }
12247
- };
12248
11536
  /**
12249
11537
  * Get the plugins array for React content transformation.
12250
11538
  * This function is used by both getIntlayer and getDictionary to ensure consistent plugin configuration.
12251
11539
  */
12252
11540
  var getPlugins = (locale, fallback = true) => [
12253
- translationPlugin(locale ?? configuration.internationalization.defaultLocale, fallback ? configuration.internationalization.defaultLocale : void 0),
12254
- enumerationPlugin,
12255
- conditionPlugin,
12256
- nestedPlugin(locale ?? configuration.internationalization.defaultLocale),
12257
- filePlugin,
12258
- genderPlugin,
11541
+ {}.INTLAYER_NODE_TYPE_TRANSLATION !== "false" && translationPlugin(locale ?? configuration.internationalization.defaultLocale, fallback ? configuration.internationalization.defaultLocale : void 0),
11542
+ false,
11543
+ {}.INTLAYER_NODE_TYPE_CONDITION !== "false" && conditionPlugin,
11544
+ false,
11545
+ false,
11546
+ false,
12259
11547
  intlayerNodePlugins,
12260
11548
  reactNodePlugins,
12261
- insertionPlugin,
12262
- markdownPlugin,
12263
- htmlPlugin
12264
- ];
11549
+ {}.INTLAYER_NODE_TYPE_INSERTION !== "false" && insertionPlugin,
11550
+ false,
11551
+ false
11552
+ ].filter(Boolean);
12265
11553
  //#endregion
12266
11554
  //#region ../react-intlayer/dist/esm/getDictionary.mjs
12267
11555
  var getDictionary = (dictionary, locale) => getDictionary$1(dictionary, locale, getPlugins(locale));
12268
11556
  //#endregion
12269
- //#region ../@intlayer/config/dist/esm/defaultValues/editor.mjs
12270
- var BACKEND_URL = "https://back.intlayer.org";
12271
- //#endregion
12272
- //#region ../@intlayer/config/dist/esm/defaultValues/internationalization.mjs
12273
- var LOCALES = ["en"];
12274
- var DEFAULT_LOCALE = "en";
11557
+ //#region ../@intlayer/core/dist/esm/utils/checkIsURLAbsolute.mjs
11558
+ var checkIsURLAbsolute = (url) => /^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(url);
12275
11559
  //#endregion
12276
- //#region ../@intlayer/core/dist/esm/getStorageAttributes.mjs
12277
- /**
12278
- * Creates a cookie entry with default values for missing attributes
12279
- */
12280
- var createCookieEntry = (options) => {
12281
- const { name, path, expires, domain, secure, sameSite, httpOnly } = options ?? {};
12282
- return {
12283
- name: name ?? "INTLAYER_LOCALE",
12284
- attributes: {
12285
- path,
12286
- expires,
12287
- domain,
12288
- secure,
12289
- sameSite,
12290
- httpOnly
12291
- }
12292
- };
12293
- };
12294
- /**
12295
- * Creates a web storage entry (localStorage or sessionStorage) with default name
12296
- */
12297
- var createWebStorageEntry = (options) => {
12298
- const { name } = options ?? {};
12299
- return { name: name ?? "INTLAYER_LOCALE" };
12300
- };
12301
- /**
12302
- * Creates a header entry with default name
12303
- */
12304
- var createHeaderEntry = (options) => {
12305
- const { name } = options ?? {};
12306
- return { name: name ?? "x-intlayer-locale" };
12307
- };
12308
- /**
12309
- * Determines if a storage entry is a cookie based on its properties
12310
- */
12311
- var isCookieEntry = (entry) => {
12312
- return entry.type === "cookie" || "sameSite" in entry || "httpOnly" in entry || "secure" in entry;
12313
- };
12314
- /**
12315
- * Determines the storage type from a string literal
12316
- */
12317
- var isStorageType = (value) => {
12318
- return value === "cookie" || value === "localStorage" || value === "sessionStorage" || value === "header";
12319
- };
12320
- /**
12321
- * Processes a single storage entry and returns the appropriate storage attributes
12322
- */
12323
- var processStorageEntry = (entry) => {
12324
- if (typeof entry === "string") {
12325
- if (!isStorageType(entry)) return {
12326
- cookies: [],
12327
- localStorage: [],
12328
- sessionStorage: [],
12329
- headers: []
12330
- };
12331
- if (entry === "cookie") return { cookies: [createCookieEntry()] };
12332
- if (entry === "localStorage") return { localStorage: [createWebStorageEntry()] };
12333
- if (entry === "sessionStorage") return { sessionStorage: [createWebStorageEntry()] };
12334
- if (entry === "header") return { headers: [createHeaderEntry()] };
12335
- }
12336
- if (typeof entry === "object" && entry !== null) {
12337
- const typedEntry = entry;
12338
- if (isCookieEntry(typedEntry)) return { cookies: [createCookieEntry(typedEntry)] };
12339
- if ("type" in typedEntry && typedEntry.type === "localStorage") {
12340
- const { name, ...rest } = typedEntry;
12341
- return { localStorage: [createWebStorageEntry({
12342
- name,
12343
- ...rest
12344
- })] };
12345
- }
12346
- if ("type" in typedEntry && typedEntry.type === "sessionStorage") {
12347
- const { name, ...rest } = typedEntry;
12348
- return { sessionStorage: [createWebStorageEntry({
12349
- name,
12350
- ...rest
12351
- })] };
12352
- }
12353
- if ("type" in typedEntry && typedEntry.type === "header") {
12354
- const { name, ...rest } = typedEntry;
12355
- return { headers: [createHeaderEntry({
12356
- name,
12357
- ...rest
12358
- })] };
12359
- }
12360
- const { name, ...rest } = typedEntry;
12361
- return { localStorage: [createWebStorageEntry({
12362
- name,
12363
- ...rest
12364
- })] };
12365
- }
12366
- return {
12367
- cookies: [],
12368
- localStorage: [],
12369
- sessionStorage: [],
12370
- headers: []
12371
- };
12372
- };
12373
- /**
12374
- * Merges multiple partial storage attributes into a single result
12375
- */
12376
- var mergeStorageAttributes = (accumulated, partial) => {
12377
- return {
12378
- cookies: [...accumulated.cookies, ...partial.cookies ?? []],
12379
- localStorage: [...accumulated.localStorage, ...partial.localStorage ?? []],
12380
- sessionStorage: [...accumulated.sessionStorage, ...partial.sessionStorage ?? []],
12381
- headers: [...accumulated.headers, ...partial.headers ?? []]
12382
- };
12383
- };
11560
+ //#region ../@intlayer/core/dist/esm/localization/getPathWithoutLocale.mjs
12384
11561
  /**
12385
- * Extracts and normalizes storage configuration into separate arrays for each storage type
11562
+ * Removes the locale segment from the given URL or pathname if present.
11563
+ * Also removes locale from search parameters if present.
12386
11564
  *
12387
- * @param options - The storage configuration from IntlayerConfig
12388
- * @returns An object containing arrays for cookies, localStorage, and sessionStorage
12389
- */
12390
- var getStorageAttributes = (options) => {
12391
- const emptyResult = {
12392
- cookies: [],
12393
- localStorage: [],
12394
- sessionStorage: [],
12395
- headers: []
12396
- };
12397
- if (options === false || options === void 0) return emptyResult;
12398
- if (Array.isArray(options)) return options.reduce((acc, entry) => {
12399
- return mergeStorageAttributes(acc, processStorageEntry(entry));
12400
- }, emptyResult);
12401
- return mergeStorageAttributes(emptyResult, processStorageEntry(options));
12402
- };
12403
- //#endregion
12404
- //#region ../@intlayer/core/dist/esm/localization/localeResolver.mjs
12405
- /**
12406
- * Resolves the most specific locale from a user-provided list,
12407
- * or falls back to the default locale if no match is found.
12408
- */
12409
- var localeResolver = (selectedLocale, locales = configuration?.internationalization?.locales, defaultLocale = configuration?.internationalization?.defaultLocale) => {
12410
- const requestedLocales = [selectedLocale].flat();
12411
- const normalize = (locale) => locale.trim().toLowerCase();
12412
- try {
12413
- for (const requested of requestedLocales) {
12414
- const normalizedRequested = normalize(requested);
12415
- const exactMatch = locales.find((loc) => normalize(loc) === normalizedRequested);
12416
- if (exactMatch) return exactMatch;
12417
- const [requestedLang] = normalizedRequested.split("-");
12418
- const partialMatch = locales.find((loc) => normalize(loc).split("-")[0] === requestedLang);
12419
- if (partialMatch) return partialMatch;
12420
- }
12421
- } catch (_error) {}
12422
- return defaultLocale;
12423
- };
12424
- //#endregion
12425
- //#region ../@intlayer/core/dist/esm/utils/getCookie.mjs
12426
- /**
12427
- * Retrieves a cookie by name from a cookie string or document.cookie
12428
- * @param name - The name of the cookie to retrieve
12429
- * @param cookieString - Optional cookie string to parse (defaults to document.cookie in browser)
12430
- * @returns The cookie value or undefined if not found
12431
- */
12432
- var getCookie = (name, cookieString) => {
12433
- try {
12434
- const str = cookieString ?? (typeof document !== "undefined" ? document.cookie : "");
12435
- if (!str) return void 0;
12436
- const pairs = str.split(";");
12437
- for (let i = 0; i < pairs.length; i++) {
12438
- const part = pairs[i].trim();
12439
- if (!part) continue;
12440
- const equalIndex = part.indexOf("=");
12441
- if ((equalIndex >= 0 ? part.substring(0, equalIndex) : part) === name) {
12442
- const rawValue = equalIndex >= 0 ? part.substring(equalIndex + 1) : "";
12443
- try {
12444
- return decodeURIComponent(rawValue);
12445
- } catch {
12446
- return rawValue;
12447
- }
12448
- }
12449
- }
12450
- } catch {}
12451
- };
12452
- //#endregion
12453
- //#region ../@intlayer/core/dist/esm/utils/localeStorage.mjs
12454
- var buildCookieString = (name, value, attributes) => {
12455
- const parts = [`${name}=${encodeURIComponent(value)}`];
12456
- if (attributes.path) parts.push(`Path=${attributes.path}`);
12457
- if (attributes.domain) parts.push(`Domain=${attributes.domain}`);
12458
- if (attributes.expires instanceof Date) parts.push(`Expires=${attributes.expires.toUTCString()}`);
12459
- if (attributes.secure) parts.push("Secure");
12460
- if (attributes.sameSite) parts.push(`SameSite=${attributes.sameSite}`);
12461
- return parts.join("; ");
12462
- };
12463
- /**
12464
- * Retrieves the locale from various storage mechanisms (cookies, localStorage, sessionStorage, headers).
12465
- * The function checks storage locations in order of priority as defined in the configuration.
11565
+ * This function get the locales from the configuration if not provided.
12466
11566
  *
12467
- * @returns The locale if found in any storage, or undefined if not found
12468
- */
12469
- var getLocaleFromStorage = (options) => {
12470
- const { routing, internationalization } = configuration;
12471
- const { locales } = internationalization;
12472
- const { storage } = routing;
12473
- if (storage === false || options?.isCookieEnabled === false) return void 0;
12474
- const storageAttributes = getStorageAttributes(storage);
12475
- const isValidLocale = (value) => {
12476
- if (!value) return false;
12477
- return locales.includes(value);
12478
- };
12479
- const readCookie = (name) => {
12480
- try {
12481
- const fromOption = options?.getCookie?.(name);
12482
- if (fromOption !== null && fromOption !== void 0) return fromOption;
12483
- } catch {}
12484
- return getCookie(name);
12485
- };
12486
- for (let i = 0; i < storageAttributes.cookies.length; i++) {
12487
- const { name } = storageAttributes.cookies[i];
12488
- const value = readCookie(name);
12489
- if (isValidLocale(value)) return value;
12490
- }
12491
- for (let i = 0; i < storageAttributes.localStorage.length; i++) {
12492
- const { name } = storageAttributes.localStorage[i];
12493
- try {
12494
- const value = options?.getLocaleStorage?.(name);
12495
- if (isValidLocale(value)) return value;
12496
- } catch {}
12497
- }
12498
- for (let i = 0; i < storageAttributes.sessionStorage.length; i++) {
12499
- const { name } = storageAttributes.sessionStorage[i];
12500
- try {
12501
- const value = options?.getSessionStorage?.(name);
12502
- if (isValidLocale(value)) return value;
12503
- } catch {}
12504
- }
12505
- for (let i = 0; i < storageAttributes.headers.length; i++) {
12506
- const { name } = storageAttributes.headers[i];
12507
- try {
12508
- const value = options?.getHeader?.(name);
12509
- if (isValidLocale(value)) return value;
12510
- } catch {}
12511
- }
12512
- };
12513
- /**
12514
- * Stores the locale in various storage mechanisms (cookies, localStorage, sessionStorage, headers).
12515
- * The function writes to all configured storage locations according to their attributes.
12516
- * Respects overwrite flags for localStorage and sessionStorage.
11567
+ * Example:
11568
+ *
11569
+ * ```ts
11570
+ * getPathWithoutLocale('/en/dashboard') // Returns '/dashboard'
11571
+ * getPathWithoutLocale('/fr/dashboard') // Returns '/dashboard'
11572
+ * getPathWithoutLocale('/dashboard') // Returns '/dashboard'
11573
+ * getPathWithoutLocale('dashboard') // Returns 'dashboard'
11574
+ * getPathWithoutLocale('/dashboard?locale=fr') // Returns '/dashboard'
11575
+ * getPathWithoutLocale('https://example.com/en/dashboard') // Returns 'https://example.com/dashboard'
11576
+ * getPathWithoutLocale('https://example.com/fr/dashboard') // Returns 'https://example.com/dashboard'
11577
+ * getPathWithoutLocale('https://example.com/dashboard') // Returns 'https://example.com/dashboard'
11578
+ * getPathWithoutLocale('https://example.com/dashboard?locale=fr') // Returns 'https://example.com/dashboard'
11579
+ * ```
12517
11580
  *
12518
- * @param locale - The locale to store
11581
+ * @param inputUrl - The complete URL string or pathname to process.
11582
+ * @param locales - Optional array of supported locales. Defaults to `localesDefault`.
11583
+ * @returns The URL string or pathname without the locale segment or locale search parameter.
12519
11584
  */
12520
- var setLocaleInStorage$1 = (locale, options) => {
12521
- if (configuration.routing.storage === false || options?.isCookieEnabled === false) return;
12522
- const storageAttributes = getStorageAttributes(configuration.routing.storage);
12523
- for (let i = 0; i < storageAttributes.cookies.length; i++) {
12524
- const { name, attributes } = storageAttributes.cookies[i];
12525
- try {
12526
- if (options?.setCookieStore) options?.setCookieStore?.(name, locale, {
12527
- ...attributes,
12528
- expires: attributes.expires instanceof Date ? attributes.expires.getTime() : attributes.expires
12529
- });
12530
- } catch {
12531
- try {
12532
- if (options?.setCookieString) {
12533
- const cookieString = buildCookieString(name, locale, attributes);
12534
- options?.setCookieString?.(name, cookieString);
12535
- }
12536
- } catch {}
12537
- }
12538
- }
12539
- if (options?.setLocaleStorage) for (let i = 0; i < storageAttributes.localStorage.length; i++) {
12540
- const { name } = storageAttributes.localStorage[i];
12541
- try {
12542
- if (!(options?.overwrite ?? true) && options?.getLocaleStorage) {
12543
- if (options?.getLocaleStorage?.(name)) continue;
12544
- }
12545
- options?.setLocaleStorage?.(name, locale);
12546
- } catch {}
12547
- }
12548
- if (options?.setSessionStorage) for (let i = 0; i < storageAttributes.sessionStorage.length; i++) {
12549
- const { name } = storageAttributes.sessionStorage[i];
12550
- try {
12551
- if (!(options?.overwrite ?? true) && options?.getSessionStorage) {
12552
- if (options?.getSessionStorage?.(name)) continue;
12553
- }
12554
- options?.setSessionStorage?.(name, locale);
12555
- } catch {}
11585
+ var getPathWithoutLocale = (inputUrl, locales = configuration?.internationalization?.locales) => {
11586
+ const isAbsoluteUrl = checkIsURLAbsolute(inputUrl);
11587
+ let fixedInputUrl = inputUrl;
11588
+ if (inputUrl?.endsWith("/")) fixedInputUrl = inputUrl.slice(0, -1);
11589
+ const url = isAbsoluteUrl ? new URL(fixedInputUrl) : new URL(fixedInputUrl, "http://example.com");
11590
+ const pathname = url.pathname;
11591
+ if (!pathname.startsWith("/")) url.pathname = `/${pathname}`;
11592
+ const pathSegments = pathname.split("/");
11593
+ const firstSegment = pathSegments[1];
11594
+ if (locales?.includes(firstSegment)) {
11595
+ pathSegments.splice(1, 1);
11596
+ url.pathname = pathSegments.join("/") ?? "/";
12556
11597
  }
12557
- if (options?.setHeader) for (let i = 0; i < storageAttributes.headers.length; i++) {
12558
- const { name } = storageAttributes.headers[i];
12559
- try {
12560
- options?.setHeader?.(name, locale);
12561
- } catch {}
11598
+ const searchParams = new URLSearchParams(url.search);
11599
+ if (searchParams.has("locale")) {
11600
+ searchParams.delete("locale");
11601
+ url.search = searchParams.toString();
12562
11602
  }
11603
+ if (isAbsoluteUrl) return url.toString();
11604
+ return url.toString().replace("http://example.com", "");
12563
11605
  };
12564
11606
  //#endregion
12565
- //#region ../@intlayer/core/dist/esm/localization/getBrowserLocale.mjs
12566
- var localeStorageOptions = {
12567
- getCookie: (name) => document.cookie.split(";").find((c) => c.trim().startsWith(`${name}=`))?.split("=")[1],
12568
- getLocaleStorage: (name) => localStorage.getItem(name),
12569
- getSessionStorage: (name) => sessionStorage.getItem(name),
12570
- isCookieEnabled: true,
12571
- setCookieStore: (name, value, attributes) => cookieStore.set({
12572
- name,
12573
- value,
12574
- path: attributes.path,
12575
- domain: attributes.domain,
12576
- expires: attributes.expires,
12577
- sameSite: attributes.sameSite
12578
- }),
12579
- setCookieString: (_name, cookie) => {
12580
- document.cookie = cookie;
12581
- },
12582
- setSessionStorage: (name, value) => sessionStorage.setItem(name, value),
12583
- setLocaleStorage: (name, value) => localStorage.setItem(name, value)
12584
- };
11607
+ //#region ../@intlayer/config/dist/esm/defaultValues/editor.mjs
11608
+ var BACKEND_URL = "https://back.intlayer.org";
12585
11609
  //#endregion
12586
- //#region ../@intlayer/core/dist/esm/localization/getHTMLTextDir.mjs
12587
- /**
12588
- * Returns the text direction of the given locale.
12589
- *
12590
- * Example:
12591
- *
12592
- * getHTMLTextDir('en-US') // 'ltr'
12593
- * getHTMLTextDir('en') // 'ltr'
12594
- * getHTMLTextDir('fr-CA') // 'ltr'
12595
- * getHTMLTextDir('fr') // 'ltr'
12596
- *
12597
- * @param locale The locale to get the text direction for.
12598
- * @returns The text direction of the given locale.
12599
- */
12600
- var getHTMLTextDir = (locale) => {
12601
- if (!locale) return "ltr";
12602
- try {
12603
- const localeInfo = new Intl.Locale(locale);
12604
- if ("getTextInfo" in localeInfo) return localeInfo.getTextInfo().direction;
12605
- if ("textInfo" in localeInfo) return localeInfo.textInfo.direction;
12606
- const maximized = localeInfo.maximize();
12607
- return [
12608
- "Arab",
12609
- "Hebr",
12610
- "Thaa",
12611
- "Syrc",
12612
- "Mand",
12613
- "Adlm",
12614
- "Rohg",
12615
- "Nkoo"
12616
- ].includes(maximized.script ?? "") ? "rtl" : "ltr";
12617
- } catch {
12618
- return "ltr";
12619
- }
12620
- };
11610
+ //#region ../@intlayer/config/dist/esm/defaultValues/internationalization.mjs
11611
+ var LOCALES = ["en"];
11612
+ var DEFAULT_LOCALE = "en";
12621
11613
  //#endregion
12622
11614
  //#region ../@intlayer/core/dist/esm/localization/getPrefix.mjs
12623
11615
  /**
@@ -12683,118 +11675,6 @@ var getPrefix = (locale, options = {}) => {
12683
11675
  };
12684
11676
  };
12685
11677
  //#endregion
12686
- //#region ../@intlayer/core/dist/esm/utils/checkIsURLAbsolute.mjs
12687
- var checkIsURLAbsolute = (url) => /^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(url);
12688
- //#endregion
12689
- //#region ../@intlayer/core/dist/esm/utils/intl.mjs
12690
- /**
12691
- * Optimized Cache Key Generator
12692
- * 1. Fast path: If no options, just use the locale string.
12693
- * 2. Normal path: JSON.stringify for deterministic object comparison.
12694
- */
12695
- var getCacheKey = (locales, options) => {
12696
- const localeKey = locales ? String(locales) : "en";
12697
- if (!options) return localeKey;
12698
- return `${localeKey}|${JSON.stringify(options)}`;
12699
- };
12700
- /**
12701
- * Generic wrapper for any `new Intl.*()` constructor.
12702
- */
12703
- var createCachedConstructor = (Ctor) => {
12704
- const cache = /* @__PURE__ */ new Map();
12705
- const MAX_CACHE_SIZE = 50;
12706
- function Wrapped(locales, options) {
12707
- let resolvedLocales = locales;
12708
- let resolvedOptions = options;
12709
- if (typeof locales === "object" && !Array.isArray(locales) && locales !== null) {
12710
- resolvedOptions = locales;
12711
- resolvedLocales = locales.locale;
12712
- }
12713
- if (Ctor.name === "DisplayNames" && typeof Intl?.DisplayNames !== "function") {}
12714
- const key = getCacheKey(resolvedLocales, resolvedOptions);
12715
- let instance = cache.get(key);
12716
- if (instance) return instance;
12717
- instance = new Ctor(resolvedLocales, resolvedOptions);
12718
- if (cache.size >= MAX_CACHE_SIZE) {
12719
- const oldestKey = cache.keys().next().value;
12720
- if (oldestKey) cache.delete(oldestKey);
12721
- }
12722
- cache.set(key, instance);
12723
- return instance;
12724
- }
12725
- Wrapped.prototype = Ctor.prototype;
12726
- return Wrapped;
12727
- };
12728
- /**
12729
- * Factory that turns the global `Intl` into a cached clone.
12730
- */
12731
- var createCachedIntl = () => {
12732
- const constructorCache = /* @__PURE__ */ new Map();
12733
- return new Proxy(Intl, { get: (target, prop, receiver) => {
12734
- if (constructorCache.has(prop)) return constructorCache.get(prop);
12735
- const value = Reflect.get(target, prop, receiver);
12736
- if (typeof value === "function" && typeof prop === "string" && /^[A-Z]/.test(prop)) {
12737
- const wrapped = createCachedConstructor(value);
12738
- constructorCache.set(prop, wrapped);
12739
- return wrapped;
12740
- }
12741
- return value;
12742
- } });
12743
- };
12744
- var CachedIntl = createCachedIntl();
12745
- //#endregion
12746
- //#region ../@intlayer/core/dist/esm/localization/getLocaleName.mjs
12747
- var getLocaleName = (displayLocale, targetLocale = displayLocale) => {
12748
- return new CachedIntl.DisplayNames(targetLocale, { type: "language" }).of(displayLocale) ?? "Unknown locale";
12749
- };
12750
- //#endregion
12751
- //#region ../@intlayer/core/dist/esm/localization/getPathWithoutLocale.mjs
12752
- /**
12753
- * Removes the locale segment from the given URL or pathname if present.
12754
- * Also removes locale from search parameters if present.
12755
- *
12756
- * This function get the locales from the configuration if not provided.
12757
- *
12758
- * Example:
12759
- *
12760
- * ```ts
12761
- * getPathWithoutLocale('/en/dashboard') // Returns '/dashboard'
12762
- * getPathWithoutLocale('/fr/dashboard') // Returns '/dashboard'
12763
- * getPathWithoutLocale('/dashboard') // Returns '/dashboard'
12764
- * getPathWithoutLocale('dashboard') // Returns 'dashboard'
12765
- * getPathWithoutLocale('/dashboard?locale=fr') // Returns '/dashboard'
12766
- * getPathWithoutLocale('https://example.com/en/dashboard') // Returns 'https://example.com/dashboard'
12767
- * getPathWithoutLocale('https://example.com/fr/dashboard') // Returns 'https://example.com/dashboard'
12768
- * getPathWithoutLocale('https://example.com/dashboard') // Returns 'https://example.com/dashboard'
12769
- * getPathWithoutLocale('https://example.com/dashboard?locale=fr') // Returns 'https://example.com/dashboard'
12770
- * ```
12771
- *
12772
- * @param inputUrl - The complete URL string or pathname to process.
12773
- * @param locales - Optional array of supported locales. Defaults to `localesDefault`.
12774
- * @returns The URL string or pathname without the locale segment or locale search parameter.
12775
- */
12776
- var getPathWithoutLocale = (inputUrl, locales = configuration?.internationalization?.locales) => {
12777
- const isAbsoluteUrl = checkIsURLAbsolute(inputUrl);
12778
- let fixedInputUrl = inputUrl;
12779
- if (inputUrl?.endsWith("/")) fixedInputUrl = inputUrl.slice(0, -1);
12780
- const url = isAbsoluteUrl ? new URL(fixedInputUrl) : new URL(fixedInputUrl, "http://example.com");
12781
- const pathname = url.pathname;
12782
- if (!pathname.startsWith("/")) url.pathname = `/${pathname}`;
12783
- const pathSegments = pathname.split("/");
12784
- const firstSegment = pathSegments[1];
12785
- if (locales?.includes(firstSegment)) {
12786
- pathSegments.splice(1, 1);
12787
- url.pathname = pathSegments.join("/") ?? "/";
12788
- }
12789
- const searchParams = new URLSearchParams(url.search);
12790
- if (searchParams.has("locale")) {
12791
- searchParams.delete("locale");
12792
- url.search = searchParams.toString();
12793
- }
12794
- if (isAbsoluteUrl) return url.toString();
12795
- return url.toString().replace("http://example.com", "");
12796
- };
12797
- //#endregion
12798
11678
  //#region ../@intlayer/core/dist/esm/localization/rewriteUtils.mjs
12799
11679
  /**
12800
11680
  * Normalizes legacy Record format or extracts specialized rules from RewriteObject.
@@ -12941,6 +11821,239 @@ var getLocalizedUrl = (url, currentLocale = configuration?.internationalization?
12941
11821
  return `${baseUrl}${localizedPath}${parsedUrl.search}${parsedUrl.hash}`;
12942
11822
  };
12943
11823
  //#endregion
11824
+ //#region ../@intlayer/core/dist/esm/localization/localeResolver.mjs
11825
+ /**
11826
+ * Resolves the most specific locale from a user-provided list,
11827
+ * or falls back to the default locale if no match is found.
11828
+ */
11829
+ var localeResolver = (selectedLocale, locales = configuration?.internationalization?.locales, defaultLocale = configuration?.internationalization?.defaultLocale) => {
11830
+ const requestedLocales = [selectedLocale].flat();
11831
+ const normalize = (locale) => locale.trim().toLowerCase();
11832
+ try {
11833
+ for (const requested of requestedLocales) {
11834
+ const normalizedRequested = normalize(requested);
11835
+ const exactMatch = locales.find((loc) => normalize(loc) === normalizedRequested);
11836
+ if (exactMatch) return exactMatch;
11837
+ const [requestedLang] = normalizedRequested.split("-");
11838
+ const partialMatch = locales.find((loc) => normalize(loc).split("-")[0] === requestedLang);
11839
+ if (partialMatch) return partialMatch;
11840
+ }
11841
+ } catch (_error) {}
11842
+ return defaultLocale;
11843
+ };
11844
+ //#endregion
11845
+ //#region ../@intlayer/core/dist/esm/utils/localeStorage.mjs
11846
+ var buildCookieString = (name, value, attributes) => {
11847
+ const parts = [`${name}=${encodeURIComponent(value)}`];
11848
+ if (attributes.path) parts.push(`Path=${attributes.path}`);
11849
+ if (attributes.domain) parts.push(`Domain=${attributes.domain}`);
11850
+ if (attributes.expires instanceof Date) parts.push(`Expires=${attributes.expires.toUTCString()}`);
11851
+ if (attributes.secure) parts.push("Secure");
11852
+ if (attributes.sameSite) parts.push(`SameSite=${attributes.sameSite}`);
11853
+ return parts.join("; ");
11854
+ };
11855
+ /**
11856
+ * Retrieves the locale from browser storage mechanisms
11857
+ * (cookies, localStorage, sessionStorage).
11858
+ * Does not read from headers — use `getLocaleFromStorageServer` for that.
11859
+ */
11860
+ var getLocaleFromStorageClient = (options) => {
11861
+ const { routing, internationalization } = configuration;
11862
+ const { locales } = internationalization;
11863
+ const storageAttributes = routing.storage;
11864
+ if (options?.isCookieEnabled === false) return void 0;
11865
+ const isValidLocale = (value) => !!value && locales.includes(value);
11866
+ for (let i = 0; i < storageAttributes.cookies.length; i++) try {
11867
+ const value = options?.getCookie?.(storageAttributes.cookies[i].name);
11868
+ if (isValidLocale(value)) return value;
11869
+ } catch {}
11870
+ for (let i = 0; i < storageAttributes.localStorage.length; i++) try {
11871
+ const value = options?.getLocaleStorage?.(storageAttributes.localStorage[i].name);
11872
+ if (isValidLocale(value)) return value;
11873
+ } catch {}
11874
+ for (let i = 0; i < storageAttributes.sessionStorage.length; i++) try {
11875
+ const value = options?.getSessionStorage?.(storageAttributes.sessionStorage[i].name);
11876
+ if (isValidLocale(value)) return value;
11877
+ } catch {}
11878
+ };
11879
+ /**
11880
+ * Stores the locale in browser storage mechanisms
11881
+ * (cookies, localStorage, sessionStorage).
11882
+ * Does not write to headers — use `setLocaleInStorageServer` for that.
11883
+ */
11884
+ var setLocaleInStorageClient = (locale, options) => {
11885
+ const { routing } = configuration;
11886
+ const storageAttributes = routing.storage;
11887
+ if (options?.isCookieEnabled === false) return;
11888
+ for (let i = 0; i < storageAttributes.cookies.length; i++) {
11889
+ const { name, attributes } = storageAttributes.cookies[i];
11890
+ try {
11891
+ if (options?.setCookieStore) options.setCookieStore(name, locale, {
11892
+ ...attributes,
11893
+ expires: attributes.expires instanceof Date ? attributes.expires.getTime() : attributes.expires
11894
+ });
11895
+ } catch {
11896
+ try {
11897
+ if (options?.setCookieString) options.setCookieString(name, buildCookieString(name, locale, attributes));
11898
+ } catch {}
11899
+ }
11900
+ }
11901
+ if (options?.setLocaleStorage) for (let i = 0; i < storageAttributes.localStorage.length; i++) {
11902
+ const { name } = storageAttributes.localStorage[i];
11903
+ try {
11904
+ if (!(options?.overwrite ?? true) && options?.getLocaleStorage) {
11905
+ if (options.getLocaleStorage(name)) continue;
11906
+ }
11907
+ options.setLocaleStorage(name, locale);
11908
+ } catch {}
11909
+ }
11910
+ if (options?.setSessionStorage) for (let i = 0; i < storageAttributes.sessionStorage.length; i++) {
11911
+ const { name } = storageAttributes.sessionStorage[i];
11912
+ try {
11913
+ if (!(options?.overwrite ?? true) && options?.getSessionStorage) {
11914
+ if (options.getSessionStorage(name)) continue;
11915
+ }
11916
+ options.setSessionStorage(name, locale);
11917
+ } catch {}
11918
+ }
11919
+ };
11920
+ //#endregion
11921
+ //#region ../@intlayer/core/dist/esm/localization/getBrowserLocale.mjs
11922
+ var localeStorageOptions = {
11923
+ getCookie: (name) => document.cookie.split(";").find((c) => c.trim().startsWith(`${name}=`))?.split("=")[1],
11924
+ getLocaleStorage: (name) => localStorage.getItem(name),
11925
+ getSessionStorage: (name) => sessionStorage.getItem(name),
11926
+ isCookieEnabled: true,
11927
+ setCookieStore: (name, value, attributes) => cookieStore.set({
11928
+ name,
11929
+ value,
11930
+ path: attributes.path,
11931
+ domain: attributes.domain,
11932
+ expires: attributes.expires,
11933
+ sameSite: attributes.sameSite
11934
+ }),
11935
+ setCookieString: (_name, cookie) => {
11936
+ document.cookie = cookie;
11937
+ },
11938
+ setSessionStorage: (name, value) => sessionStorage.setItem(name, value),
11939
+ setLocaleStorage: (name, value) => localStorage.setItem(name, value)
11940
+ };
11941
+ //#endregion
11942
+ //#region ../@intlayer/core/dist/esm/localization/getHTMLTextDir.mjs
11943
+ /**
11944
+ * Returns the text direction of the given locale.
11945
+ *
11946
+ * Example:
11947
+ *
11948
+ * getHTMLTextDir('en-US') // 'ltr'
11949
+ * getHTMLTextDir('en') // 'ltr'
11950
+ * getHTMLTextDir('fr-CA') // 'ltr'
11951
+ * getHTMLTextDir('fr') // 'ltr'
11952
+ *
11953
+ * @param locale The locale to get the text direction for.
11954
+ * @returns The text direction of the given locale.
11955
+ */
11956
+ var getHTMLTextDir = (locale) => {
11957
+ if (!locale) return "ltr";
11958
+ try {
11959
+ const localeInfo = new Intl.Locale(locale);
11960
+ if ("getTextInfo" in localeInfo) return localeInfo.getTextInfo().direction;
11961
+ if ("textInfo" in localeInfo) return localeInfo.textInfo.direction;
11962
+ const maximized = localeInfo.maximize();
11963
+ return [
11964
+ "Arab",
11965
+ "Hebr",
11966
+ "Thaa",
11967
+ "Syrc",
11968
+ "Mand",
11969
+ "Adlm",
11970
+ "Rohg",
11971
+ "Nkoo"
11972
+ ].includes(maximized.script ?? "") ? "rtl" : "ltr";
11973
+ } catch {
11974
+ return "ltr";
11975
+ }
11976
+ };
11977
+ //#endregion
11978
+ //#region ../@intlayer/core/dist/esm/utils/intl.mjs
11979
+ /**
11980
+ * Cached Intl helper – drop‑in replacement for the global `Intl` object.
11981
+ * ‑‑‑
11982
+ * • Uses a `Proxy` to lazily wrap every *constructor* hanging off `Intl` (NumberFormat, DateTimeFormat, …).
11983
+ * • Each wrapped constructor keeps an in‑memory cache keyed by `[locales, options]` so that identical requests
11984
+ * reuse the same heavy instance instead of reparsing CLDR data every time.
11985
+ * • A polyfill warning for `Intl.DisplayNames` is emitted only once and only in dev.
11986
+ * • The public API is fully type‑safe and mirrors the native `Intl` surface exactly –
11987
+ * you can treat `CachedIntl` just like the built‑in `Intl`.
11988
+ *
11989
+ * Usage @example:
11990
+ * ---------------
11991
+ * ```ts
11992
+ * import { CachedIntl } from "./cached-intl";
11993
+ *
11994
+ * const nf = CachedIntl.NumberFormat("en-US", { style: "currency", currency: "USD" });
11995
+ * console.log(nf.format(1234));
11996
+ *
11997
+ * const dn = CachedIntl.DisplayNames(["fr"], { type: "language" });
11998
+ * console.log(dn.of("en")); * → "anglais"
11999
+ *
12000
+ * You can also spin up an isolated instance with its own caches (handy in test suites):
12001
+ * const TestIntl = createCachedIntl();
12002
+ * ```
12003
+ */
12004
+ var MAX_CACHE_SIZE = 50;
12005
+ var cache = /* @__PURE__ */ new Map();
12006
+ /**
12007
+ * Generic caching instantiator for Intl constructors.
12008
+ */
12009
+ var getCachedIntl = (Ctor, locale, options) => {
12010
+ const resLoc = locale ?? configuration?.internationalization?.defaultLocale;
12011
+ const key = `${resLoc}|${options ? JSON.stringify(options) : ""}`;
12012
+ let ctorCache = cache.get(Ctor);
12013
+ if (!ctorCache) {
12014
+ ctorCache = /* @__PURE__ */ new Map();
12015
+ cache.set(Ctor, ctorCache);
12016
+ }
12017
+ let instance = ctorCache.get(key);
12018
+ if (!instance) {
12019
+ if (ctorCache.size > MAX_CACHE_SIZE) ctorCache.clear();
12020
+ instance = new Ctor(resLoc, options);
12021
+ ctorCache.set(key, instance);
12022
+ }
12023
+ return instance;
12024
+ };
12025
+ var CachedIntl = {
12026
+ Collator: function Collator(locales, options) {
12027
+ return getCachedIntl(Intl.Collator, locales, options);
12028
+ },
12029
+ DateTimeFormat: function DateTimeFormat(locales, options) {
12030
+ return getCachedIntl(Intl.DateTimeFormat, locales, options);
12031
+ },
12032
+ DisplayNames: function DisplayNames(locales, options) {
12033
+ return getCachedIntl(Intl.DisplayNames, locales, options);
12034
+ },
12035
+ ListFormat: function ListFormat(locales, options) {
12036
+ return getCachedIntl(Intl.ListFormat, locales, options);
12037
+ },
12038
+ NumberFormat: function NumberFormat(locales, options) {
12039
+ return getCachedIntl(Intl.NumberFormat, locales, options);
12040
+ },
12041
+ PluralRules: function PluralRules(locales, options) {
12042
+ return getCachedIntl(Intl.PluralRules, locales, options);
12043
+ },
12044
+ RelativeTimeFormat: function RelativeTimeFormat(locales, options) {
12045
+ return getCachedIntl(Intl.RelativeTimeFormat, locales, options);
12046
+ },
12047
+ Segmenter: function Segmenter(locales, options) {
12048
+ return getCachedIntl(Intl.Segmenter, locales, options);
12049
+ }
12050
+ };
12051
+ //#endregion
12052
+ //#region ../@intlayer/core/dist/esm/localization/getLocaleName.mjs
12053
+ var getLocaleName = (displayLocale, targetLocale = displayLocale) => {
12054
+ return new CachedIntl.DisplayNames(targetLocale, { type: "language" }).of(displayLocale) ?? "Unknown locale";
12055
+ };
12056
+ //#endregion
12944
12057
  //#region ../@intlayer/core/dist/esm/utils/isValidReactElement.mjs
12945
12058
  /**
12946
12059
  * Verifies the object is a ReactElement.
@@ -12961,11 +12074,11 @@ var isSameKeyPath = (keyPath1, keyPath2) => keyPath1.every((element, index) => k
12961
12074
  /**
12962
12075
  * Get the locale cookie
12963
12076
  */
12964
- var localeInStorage = getLocaleFromStorage(localeStorageOptions);
12077
+ var localeInStorage = getLocaleFromStorageClient(localeStorageOptions);
12965
12078
  /**
12966
12079
  * Set the locale cookie
12967
12080
  */
12968
- var setLocaleInStorage = (locale, isCookieEnabled) => setLocaleInStorage$1(locale, {
12081
+ var setLocaleInStorage = (locale, isCookieEnabled) => setLocaleInStorageClient(locale, {
12969
12082
  ...localeStorageOptions,
12970
12083
  isCookieEnabled
12971
12084
  });
@@ -13022,7 +12135,7 @@ var IntlayerProviderContent = ({ locale: localeProp, defaultLocale: defaultLocal
13022
12135
  * If the locale is not provided, it will use the locale from the client context
13023
12136
  */
13024
12137
  var useDictionary = (dictionary, locale) => {
13025
- const { locale: currentLocale } = (0, import_react.useContext)(IntlayerClientContext);
12138
+ const { locale: currentLocale } = (0, import_react.useContext)(IntlayerClientContext) ?? {};
13026
12139
  return (0, import_react.useMemo)(() => {
13027
12140
  return getDictionary(dictionary, locale ?? currentLocale);
13028
12141
  }, [
@@ -13058,7 +12171,7 @@ var useDictionary = (dictionary, locale) => {
13058
12171
  */
13059
12172
  var useLocale = ({ isCookieEnabled, onLocaleChange } = {}) => {
13060
12173
  const { defaultLocale, locales: availableLocales } = configuration?.internationalization ?? {};
13061
- const { locale, setLocale: setLocaleState, isCookieEnabled: isCookieEnabledContext } = (0, import_react.useContext)(IntlayerClientContext);
12174
+ const { locale, setLocale: setLocaleState, isCookieEnabled: isCookieEnabledContext } = (0, import_react.useContext)(IntlayerClientContext) ?? {};
13062
12175
  return {
13063
12176
  locale,
13064
12177
  defaultLocale,
@@ -14147,6 +13260,7 @@ function Router({ basename: basenameProp = "/", children = null, location: locat
14147
13260
  function Routes({ children, location }) {
14148
13261
  return useRoutes(createRoutesFromChildren(children), location);
14149
13262
  }
13263
+ import_react.Component;
14150
13264
  function createRoutesFromChildren(children, parentPath = []) {
14151
13265
  let routes = [];
14152
13266
  import_react.Children.forEach(children, (element, index) => {
@@ -14590,6 +13704,7 @@ function mergeRefs(...refs) {
14590
13704
  });
14591
13705
  };
14592
13706
  }
13707
+ import_react.Component;
14593
13708
  var isBrowser2 = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
14594
13709
  try {
14595
13710
  if (isBrowser2) window.__reactRouterVersion = "7.13.1";
@@ -16990,7 +16105,7 @@ var getDefaultConfig = () => {
16990
16105
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
16991
16106
  //#endregion
16992
16107
  //#region ../@intlayer/design-system/dist/esm/utils/cn.mjs
16993
- var cn$2 = (...inputs) => twMerge(clsx(inputs));
16108
+ var cn$1 = (...inputs) => twMerge(clsx(inputs));
16994
16109
  typeof window !== "undefined" && window.document && window.document.createElement;
16995
16110
  function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
16996
16111
  return function handleEvent(event) {
@@ -18299,9 +17414,9 @@ var cva = (base, config) => (props) => {
18299
17414
  }, []), props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
18300
17415
  };
18301
17416
  //#endregion
18302
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
17417
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
18303
17418
  /**
18304
- * @license lucide-react v1.0.1 - ISC
17419
+ * @license lucide-react v1.7.0 - ISC
18305
17420
  *
18306
17421
  * This source code is licensed under the ISC license.
18307
17422
  * See the LICENSE file in the root directory of this source tree.
@@ -18310,27 +17425,27 @@ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
18310
17425
  return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
18311
17426
  }).join(" ").trim();
18312
17427
  //#endregion
18313
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js
17428
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js
18314
17429
  /**
18315
- * @license lucide-react v1.0.1 - ISC
17430
+ * @license lucide-react v1.7.0 - ISC
18316
17431
  *
18317
17432
  * This source code is licensed under the ISC license.
18318
17433
  * See the LICENSE file in the root directory of this source tree.
18319
17434
  */
18320
17435
  var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
18321
17436
  //#endregion
18322
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js
17437
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js
18323
17438
  /**
18324
- * @license lucide-react v1.0.1 - ISC
17439
+ * @license lucide-react v1.7.0 - ISC
18325
17440
  *
18326
17441
  * This source code is licensed under the ISC license.
18327
17442
  * See the LICENSE file in the root directory of this source tree.
18328
17443
  */
18329
17444
  var toCamelCase = (string) => string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase());
18330
17445
  //#endregion
18331
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js
17446
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js
18332
17447
  /**
18333
- * @license lucide-react v1.0.1 - ISC
17448
+ * @license lucide-react v1.7.0 - ISC
18334
17449
  *
18335
17450
  * This source code is licensed under the ISC license.
18336
17451
  * See the LICENSE file in the root directory of this source tree.
@@ -18340,9 +17455,9 @@ var toPascalCase = (string) => {
18340
17455
  return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
18341
17456
  };
18342
17457
  //#endregion
18343
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/defaultAttributes.js
17458
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/defaultAttributes.js
18344
17459
  /**
18345
- * @license lucide-react v1.0.1 - ISC
17460
+ * @license lucide-react v1.7.0 - ISC
18346
17461
  *
18347
17462
  * This source code is licensed under the ISC license.
18348
17463
  * See the LICENSE file in the root directory of this source tree.
@@ -18359,9 +17474,9 @@ var defaultAttributes = {
18359
17474
  strokeLinejoin: "round"
18360
17475
  };
18361
17476
  //#endregion
18362
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js
17477
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js
18363
17478
  /**
18364
- * @license lucide-react v1.0.1 - ISC
17479
+ * @license lucide-react v1.7.0 - ISC
18365
17480
  *
18366
17481
  * This source code is licensed under the ISC license.
18367
17482
  * See the LICENSE file in the root directory of this source tree.
@@ -18371,9 +17486,9 @@ var hasA11yProp = (props) => {
18371
17486
  return false;
18372
17487
  };
18373
17488
  //#endregion
18374
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/context.js
17489
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/context.js
18375
17490
  /**
18376
- * @license lucide-react v1.0.1 - ISC
17491
+ * @license lucide-react v1.7.0 - ISC
18377
17492
  *
18378
17493
  * This source code is licensed under the ISC license.
18379
17494
  * See the LICENSE file in the root directory of this source tree.
@@ -18381,9 +17496,9 @@ var hasA11yProp = (props) => {
18381
17496
  var LucideContext = (0, import_react.createContext)({});
18382
17497
  var useLucideContext = () => (0, import_react.useContext)(LucideContext);
18383
17498
  //#endregion
18384
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/Icon.js
17499
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/Icon.js
18385
17500
  /**
18386
- * @license lucide-react v1.0.1 - ISC
17501
+ * @license lucide-react v1.7.0 - ISC
18387
17502
  *
18388
17503
  * This source code is licensed under the ISC license.
18389
17504
  * See the LICENSE file in the root directory of this source tree.
@@ -18404,9 +17519,9 @@ var Icon$1 = (0, import_react.forwardRef)(({ color, size, strokeWidth, absoluteS
18404
17519
  }, [...iconNode.map(([tag, attrs]) => (0, import_react.createElement)(tag, attrs)), ...Array.isArray(children) ? children : [children]]);
18405
17520
  });
18406
17521
  //#endregion
18407
- //#region ../../node_modules/.bun/lucide-react@1.0.1+b1ab299f0a400331/node_modules/lucide-react/dist/esm/createLucideIcon.js
17522
+ //#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/createLucideIcon.js
18408
17523
  /**
18409
- * @license lucide-react v1.0.1 - ISC
17524
+ * @license lucide-react v1.7.0 - ISC
18410
17525
  *
18411
17526
  * This source code is licensed under the ISC license.
18412
17527
  * See the LICENSE file in the root directory of this source tree.
@@ -18610,6 +17725,13 @@ var MoveVertical = createLucideIcon("move-vertical", [
18610
17725
  key: "ybng9g"
18611
17726
  }]
18612
17727
  ]);
17728
+ var Pencil = createLucideIcon("pencil", [["path", {
17729
+ d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
17730
+ key: "1a8usu"
17731
+ }], ["path", {
17732
+ d: "m15 5 4 4",
17733
+ key: "1mk7zo"
17734
+ }]]);
18613
17735
  var PencilRuler = createLucideIcon("pencil-ruler", [
18614
17736
  ["path", {
18615
17737
  d: "M13 7 8.7 2.7a2.41 2.41 0 0 0-3.4 0L2.7 5.3a2.41 2.41 0 0 0 0 3.4L7 13",
@@ -18636,13 +17758,6 @@ var PencilRuler = createLucideIcon("pencil-ruler", [
18636
17758
  key: "1mk7zo"
18637
17759
  }]
18638
17760
  ]);
18639
- var Pencil = createLucideIcon("pencil", [["path", {
18640
- d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
18641
- key: "1a8usu"
18642
- }], ["path", {
18643
- d: "m15 5 4 4",
18644
- key: "1mk7zo"
18645
- }]]);
18646
17761
  var Plus = createLucideIcon("plus", [["path", {
18647
17762
  d: "M5 12h14",
18648
17763
  key: "1ays0h"
@@ -18739,7 +17854,7 @@ var X$1 = createLucideIcon("x", [["path", {
18739
17854
  //#region ../@intlayer/design-system/dist/esm/components/Toaster/Toast.mjs
18740
17855
  var ToastProvider = dist_exports;
18741
17856
  var ToastViewport = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Viewport$1, {
18742
- className: cn$2("fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-[420px]", className),
17857
+ className: cn$1("fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-[420px]", className),
18743
17858
  ...props
18744
17859
  });
18745
17860
  /**
@@ -18809,12 +17924,12 @@ var toastVariants = cva("group data-[state=closed]:fade-out-80 data-[state=close
18809
17924
  */
18810
17925
  var Toast = ({ className, variant, ...props }) => {
18811
17926
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Root2$2, {
18812
- className: cn$2(toastVariants({ variant }), className),
17927
+ className: cn$1(toastVariants({ variant }), className),
18813
17928
  ...props
18814
17929
  });
18815
17930
  };
18816
17931
  var ToastClose = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Close, {
18817
- className: cn$2("absolute top-1 right-1 rounded-md p-1 text-text/50 opacity-0 transition-opacity hover:text-text/80 focus:opacity-100 focus:outline-hidden focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600 group-[.destructive]:hover:text-red-50", className),
17932
+ className: cn$1("absolute top-1 right-1 rounded-md p-1 text-text/50 opacity-0 transition-opacity hover:text-text/80 focus:opacity-100 focus:outline-hidden focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600 group-[.destructive]:hover:text-red-50", className),
18818
17933
  "toast-close": "",
18819
17934
  ...props,
18820
17935
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(X$1, { className: "size-5" })
@@ -18838,7 +17953,7 @@ var ToastClose = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_run
18838
17953
  * ```
18839
17954
  */
18840
17955
  var ToastTitle = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Title, {
18841
- className: cn$2("font-semibold text-sm [&+div]:text-xs", className),
17956
+ className: cn$1("font-semibold text-sm [&+div]:text-xs", className),
18842
17957
  ...props
18843
17958
  });
18844
17959
  /**
@@ -18869,7 +17984,7 @@ var ToastTitle = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_run
18869
17984
  * ```
18870
17985
  */
18871
17986
  var ToastDescription = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Description, {
18872
- className: cn$2("text-sm opacity-90", className),
17987
+ className: cn$1("text-sm opacity-90", className),
18873
17988
  ...props
18874
17989
  });
18875
17990
  //#endregion
@@ -18987,7 +18102,7 @@ var reducer = (state, action) => {
18987
18102
  };
18988
18103
  return {
18989
18104
  ...state,
18990
- toasts: state.toasts.filter((t) => t.id !== action.toastId)
18105
+ toasts: state.toasts.filter((toast) => toast.id !== action.toastId)
18991
18106
  };
18992
18107
  }
18993
18108
  };
@@ -19360,7 +18475,7 @@ var ContainerRoundedSize = /* @__PURE__ */ function(ContainerRoundedSize) {
19360
18475
  * @param props - Additional HTML div attributes including ARIA attributes
19361
18476
  */
19362
18477
  var Container = ({ children, roundedSize, padding, transparency, separator, className, border, borderColor, background, gap, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
19363
- className: cn$2(containerVariants$1({
18478
+ className: cn$1(containerVariants$1({
19364
18479
  roundedSize,
19365
18480
  transparency,
19366
18481
  padding,
@@ -19435,7 +18550,7 @@ var Spinner = ({ className, strokeWidth = 4 }) => /* @__PURE__ */ (0, import_jsx
19435
18550
  stroke: "currentColor",
19436
18551
  role: "img",
19437
18552
  "aria-label": "Spinner",
19438
- className: cn$2("size-full", className),
18553
+ className: cn$1("size-full", className),
19439
18554
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
19440
18555
  fill: "none",
19441
18556
  fillRule: "evenodd",
@@ -19581,14 +18696,14 @@ var Spinner = ({ className, strokeWidth = 4 }) => /* @__PURE__ */ (0, import_jsx
19581
18696
  var Loader = ({ children, isLoading = true, keepChildren = false, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: isLoading && keepChildren ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
19582
18697
  className: "relative size-full",
19583
18698
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
19584
- className: cn$2("absolute top-0 left-0 flex size-full max-h-screen max-w-[100vw] flex-1 items-center justify-center", className),
18699
+ className: cn$1("absolute top-0 left-0 flex size-full max-h-screen max-w-[100vw] flex-1 items-center justify-center", className),
19585
18700
  role: "status",
19586
18701
  "aria-label": "Animated icon, meaning that the website is processing",
19587
18702
  ...props,
19588
18703
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Spinner, { className: "size-10 max-h-full max-w-full" })
19589
18704
  }), children]
19590
18705
  }) : isLoading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
19591
- className: cn$2("flex size-full max-h-screen max-w-[100vw] flex-1 items-center justify-center", className),
18706
+ className: cn$1("flex size-full max-h-screen max-w-[100vw] flex-1 items-center justify-center", className),
19592
18707
  role: "status",
19593
18708
  "aria-label": "Animated icon, meaning that the website is processing",
19594
18709
  ...props,
@@ -19839,16 +18954,16 @@ var Button = ({ variant, size, color, children, Icon, IconRight, iconClassName,
19839
18954
  Icon && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
19840
18955
  className: buttonIconVariants({
19841
18956
  size,
19842
- className: cn$2(!isSquareButton && "mr-3", iconClassName)
18957
+ className: cn$1(!isSquareButton && "mr-3", iconClassName)
19843
18958
  }),
19844
18959
  "aria-hidden": "true"
19845
18960
  }),
19846
18961
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
19847
- className: cn$2("flex items-center justify-center transition-[width] duration-300", isLoading && size === ButtonSize.SM && "w-3", isLoading && size === ButtonSize.MD && "w-4", isLoading && size === ButtonSize.LG && "w-5", isLoading && size === ButtonSize.XL && "w-6"),
18962
+ className: cn$1("flex items-center justify-center transition-[width] duration-300", isLoading && size === ButtonSize.SM && "w-3", isLoading && size === ButtonSize.MD && "w-4", isLoading && size === ButtonSize.LG && "w-5", isLoading && size === ButtonSize.XL && "w-6"),
19848
18963
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Loader, {
19849
18964
  className: buttonIconVariants({
19850
18965
  size,
19851
- className: cn$2(!isSquareButton && "mr-3", iconClassName)
18966
+ className: cn$1(!isSquareButton && "mr-3", iconClassName)
19852
18967
  }),
19853
18968
  isLoading,
19854
18969
  "aria-hidden": "true",
@@ -19866,7 +18981,7 @@ var Button = ({ variant, size, color, children, Icon, IconRight, iconClassName,
19866
18981
  IconRight && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconRight, {
19867
18982
  className: buttonIconVariants({
19868
18983
  size,
19869
- className: cn$2(!isSquareButton && "ml-3", iconClassName)
18984
+ className: cn$1(!isSquareButton && "ml-3", iconClassName)
19870
18985
  }),
19871
18986
  "aria-hidden": "true"
19872
18987
  })
@@ -20003,11 +19118,11 @@ var MaxHeightSmoother = ({ children, isHidden, className = "", isOverable = fals
20003
19118
  "aria-hidden": isFocusable ? isHidden : void 0,
20004
19119
  tabIndex: isFocusable ? 0 : void 0,
20005
19120
  role: isFocusable ? "button" : "none",
20006
- className: cn$2("group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out", typeof isHidden !== "undefined" && !isHidden && "grid-rows-[1fr] overflow-x-auto", isOverable && "hover:grid-rows-[1fr] hover:overflow-x-auto", isFocusable && "focus-within:grid-rows-[1fr] focus-within:overflow-x-auto focus:grid-rows-[1fr] focus:overflow-x-auto", className),
19121
+ className: cn$1("group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out", typeof isHidden !== "undefined" && !isHidden && "grid-rows-[1fr] overflow-x-auto", isOverable && "hover:grid-rows-[1fr] hover:overflow-x-auto", isFocusable && "focus-within:grid-rows-[1fr] focus-within:overflow-x-auto focus:grid-rows-[1fr] focus:overflow-x-auto", className),
20007
19122
  ...props,
20008
19123
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
20009
19124
  style: { minHeight: `${minHeight}px` },
20010
- className: cn$2(isOverable && "group-hover/height-smoother:visible", isFocusable && "group-focus/height-smoother:visible", className),
19125
+ className: cn$1(isOverable && "group-hover/height-smoother:visible", isFocusable && "group-focus/height-smoother:visible", className),
20011
19126
  children
20012
19127
  })
20013
19128
  });
@@ -20079,9 +19194,9 @@ var Accordion = ({ children, header, isOpen, defaultIsOpen = false, onToggle, on
20079
19194
  onKeyDown: handleKeyDown,
20080
19195
  disabled,
20081
19196
  isFullWidth: true,
20082
- className: cn$2("flex items-center justify-between gap-2", headerClassName),
19197
+ className: cn$1("flex items-center justify-between gap-2", headerClassName),
20083
19198
  IconRight: ChevronDown,
20084
- iconClassName: cn$2("transform transition-transform duration-500 ease-in-out", isExpandedState ? "rotate-0" : "-rotate-180"),
19199
+ iconClassName: cn$1("transform transition-transform duration-500 ease-in-out", isExpandedState ? "rotate-0" : "-rotate-180"),
20085
19200
  "aria-expanded": isExpandedState,
20086
19201
  "aria-controls": generatedContentId,
20087
19202
  "aria-label": ariaLabel,
@@ -20213,7 +19328,7 @@ var Badge = ({ className, variant = BadgeVariant.DEFAULT, color = BadgeColor.PRI
20213
19328
  onDismiss?.();
20214
19329
  };
20215
19330
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Component, {
20216
- className: cn$2(badgeVariants({
19331
+ className: cn$1(badgeVariants({
20217
19332
  variant,
20218
19333
  color,
20219
19334
  size
@@ -20457,7 +19572,7 @@ var Link = (props) => {
20457
19572
  target,
20458
19573
  "aria-current": isActive ? "page" : void 0,
20459
19574
  suppressHydrationWarning: true,
20460
- className: cn$2(linkVariants({
19575
+ className: cn$1(linkVariants({
20461
19576
  variant,
20462
19577
  color,
20463
19578
  roundedSize,
@@ -20590,7 +19705,7 @@ var ButtonLink = ({ children: text, onClick, color, position, className, ...prop
20590
19705
  */
20591
19706
  var Span = ({ children, position, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
20592
19707
  itemProp: "item",
20593
- className: cn$2("inline-flex items-center", "font-medium text-neutral-700", "transition-colors duration-200", className),
19708
+ className: cn$1("inline-flex items-center", "font-medium text-neutral-700", "transition-colors duration-200", className),
20594
19709
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
20595
19710
  itemProp: "name",
20596
19711
  ...props,
@@ -20635,7 +19750,7 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
20635
19750
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("nav", {
20636
19751
  "aria-label": ariaLabel,
20637
19752
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ol", {
20638
- className: cn$2(breadcrumbVariants({
19753
+ className: cn$1(breadcrumbVariants({
20639
19754
  size,
20640
19755
  spacing
20641
19756
  }), className),
@@ -20664,14 +19779,14 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
20664
19779
  "aria-hidden": "true",
20665
19780
  className: "flex items-center",
20666
19781
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
20667
- className: cn$2(separatorColorClass),
19782
+ className: cn$1(separatorColorClass),
20668
19783
  children: separator
20669
19784
  })
20670
19785
  })] }, `truncated-${text}`);
20671
19786
  let section = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Span, {
20672
19787
  position: index + 1,
20673
19788
  "aria-current": ariaCurrent,
20674
- className: cn$2("transition-colors duration-200", isActive && "text-neutral-900"),
19789
+ className: cn$1("transition-colors duration-200", isActive && "text-neutral-900"),
20675
19790
  children: text
20676
19791
  }, text);
20677
19792
  if (isLink) section = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LinkLink, {
@@ -20680,7 +19795,7 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
20680
19795
  position: index + 1,
20681
19796
  locale,
20682
19797
  "aria-current": ariaCurrent,
20683
- className: cn$2(isActive && "cursor-default text-neutral-900"),
19798
+ className: cn$1(isActive && "cursor-default text-neutral-900"),
20684
19799
  children: text
20685
19800
  }, text);
20686
19801
  else if (isButton) section = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonLink, {
@@ -20688,7 +19803,7 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
20688
19803
  color,
20689
19804
  position: index + 1,
20690
19805
  "aria-current": ariaCurrent,
20691
- className: cn$2(isActive && "cursor-default text-neutral-900"),
19806
+ className: cn$1(isActive && "cursor-default text-neutral-900"),
20692
19807
  children: text
20693
19808
  }, text);
20694
19809
  const listElement = /* @__PURE__ */ (0, import_react.createElement)("li", {
@@ -20705,7 +19820,7 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
20705
19820
  "aria-hidden": "true",
20706
19821
  className: "flex items-center",
20707
19822
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
20708
- className: cn$2(separatorColorClass),
19823
+ className: cn$1(separatorColorClass),
20709
19824
  children: separator
20710
19825
  })
20711
19826
  })] }, text);
@@ -20764,7 +19879,7 @@ var checkboxVariants = cva([
20764
19879
  });
20765
19880
  var Input$1 = ({ validationStyleEnabled = false, label, size, color, name, variant, className, labelClassName, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
20766
19881
  type: "checkbox",
20767
- className: cn$2(checkboxVariants({
19882
+ className: cn$1(checkboxVariants({
20768
19883
  variant,
20769
19884
  size,
20770
19885
  color,
@@ -20776,7 +19891,7 @@ var Checkbox = (props) => {
20776
19891
  const { label, name, id } = props;
20777
19892
  return label ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", {
20778
19893
  htmlFor: id ?? name,
20779
- className: cn$2("flex w-full cursor-pointer items-center gap-x-4 font-medium text-sm", props.size === "xs" && "text-xs", props.labelClassName),
19894
+ className: cn$1("flex w-full cursor-pointer items-center gap-x-4 font-medium text-sm", props.size === "xs" && "text-xs", props.labelClassName),
20780
19895
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input$1, {
20781
19896
  id: id ?? name,
20782
19897
  ...props
@@ -20788,7 +19903,7 @@ var Checkbox = (props) => {
20788
19903
  };
20789
19904
  //#endregion
20790
19905
  //#region ../@intlayer/design-system/dist/esm/components/Input/Input.mjs
20791
- var cn$1 = (...classes) => classes.filter(Boolean).join(" ");
19906
+ var cn = (...classes) => classes.filter(Boolean).join(" ");
20792
19907
  var inputVariants = cva([
20793
19908
  "w-full select-text resize-none text-base shadow-none outline-none",
20794
19909
  "transition-all duration-300 md:text-sm",
@@ -20833,7 +19948,7 @@ var InputVariant = /* @__PURE__ */ function(InputVariant) {
20833
19948
  return InputVariant;
20834
19949
  }({});
20835
19950
  var Input = ({ validationStyleEnabled = false, variant, size, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
20836
- className: cn$1(inputVariants({
19951
+ className: cn(inputVariants({
20837
19952
  variant,
20838
19953
  size,
20839
19954
  validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
@@ -21283,7 +20398,7 @@ var OTPInput = ({ value: uncheckedValue, onChange: uncheckedOnChange, maxLength,
21283
20398
  });
21284
20399
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [noScriptCSSFallback !== null && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("noscript", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { children: noScriptCSSFallback }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
21285
20400
  ref: containerRef,
21286
- className: cn$2("relative", props.disabled ? "cursor-default" : "cursor-text", containerClassName),
20401
+ className: cn$1("relative", props.disabled ? "cursor-default" : "cursor-text", containerClassName),
21287
20402
  children: [renderedChildren, /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
21288
20403
  className: "absolute inset-0",
21289
20404
  children: renderedInput
@@ -21301,12 +20416,12 @@ cva("block text-center", {
21301
20416
  });
21302
20417
  var InputOTP = ({ className, render, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OTPInput, {
21303
20418
  containerClassName: "relative flex items-center gap-2 has-disabled:opacity-50",
21304
- className: cn$2("disabled:cursor-not-allowed", className),
20419
+ className: cn$1("disabled:cursor-not-allowed", className),
21305
20420
  render,
21306
20421
  ...props
21307
20422
  });
21308
20423
  var InputOTPGroup = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
21309
- className: cn$2("z-10 flex items-center gap-3", className),
20424
+ className: cn$1("z-10 flex items-center gap-3", className),
21310
20425
  ...props
21311
20426
  });
21312
20427
  var InputOTPSlot = ({ index, className, onClick, onKeyDown, ...props }) => {
@@ -21329,7 +20444,7 @@ var InputOTPSlot = ({ index, className, onClick, onKeyDown, ...props }) => {
21329
20444
  variant: "input",
21330
20445
  color: "custom",
21331
20446
  tabIndex: -1,
21332
- className: cn$2("relative z-10 px-2!", isActive && "ring-4!", className),
20447
+ className: cn$1("relative z-10 px-2!", isActive && "ring-4!", className),
21333
20448
  onClick: handleClick,
21334
20449
  onKeyDown: handleKeyDown,
21335
20450
  label: null,
@@ -21358,7 +20473,7 @@ var SearchInput = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_ru
21358
20473
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Search, { className: "absolute left-2 size-4" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input, {
21359
20474
  ...props,
21360
20475
  type: "search",
21361
- className: cn$2("pl-8", className)
20476
+ className: cn$1("pl-8", className)
21362
20477
  })]
21363
20478
  });
21364
20479
  //#endregion
@@ -21571,7 +20686,7 @@ var KeyboardShortcut = ({ shortcut, onTriggered, display = true, disabled = fals
21571
20686
  return pressedKeys.has(key) || pressedKeys.has(upperKey) || pressedKeys.has(normalizedKey) || key === "⌘" && pressedKeys.has("Meta") || key === "Ctrl" && pressedKeys.has("Control") || key === "⌥" && pressedKeys.has("Alt") || key === "Alt" && pressedKeys.has("Alt") || key === "←" && pressedKeys.has("ArrowLeft") || key === "→" && pressedKeys.has("ArrowRight") || key === "↑" && pressedKeys.has("ArrowUp") || key === "↓" && pressedKeys.has("ArrowDown");
21572
20687
  };
21573
20688
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("kbd", {
21574
- className: cn$2("inline-flex items-center justify-center gap-0.5 p-0.5", "rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl", "font-medium font-sans", "border-1 border-neutral/20 text-neutral", size === "sm" && "text-xs", size === "md" && "text-sm", size === "lg" && "text-base", className),
20689
+ className: cn$1("inline-flex items-center justify-center gap-0.5 p-0.5", "rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl", "font-medium font-sans", "border-1 border-neutral/20 text-neutral", size === "sm" && "text-xs", size === "md" && "text-sm", size === "lg" && "text-base", className),
21575
20690
  children: keys.map((key, index) => {
21576
20691
  const keyId = `${key}-${index}-${shortcut}`;
21577
20692
  const displayKey = getDisplayKey(key);
@@ -21581,7 +20696,7 @@ var KeyboardShortcut = ({ shortcut, onTriggered, display = true, disabled = fals
21581
20696
  className: "text-neutral/50",
21582
20697
  children: "+"
21583
20698
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
21584
- className: cn$2("min-w-4 px-0.5 text-center", isKeyPressed(key) && "scale-120 font-bold text-text"),
20699
+ className: cn$1("min-w-4 px-0.5 text-center", isKeyPressed(key) && "scale-120 font-bold text-text"),
21585
20700
  suppressHydrationWarning: true,
21586
20701
  children: displayKey
21587
20702
  })]
@@ -21695,7 +20810,7 @@ var PopoverYAlign = /* @__PURE__ */ function(PopoverYAlign) {
21695
20810
  * @returns Trigger container with popover functionality
21696
20811
  */
21697
20812
  var PopoverStatic = ({ children, className, identifier, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
21698
- className: cn$2(`group/popover relative flex cursor-pointer`, className),
20813
+ className: cn$1(`group/popover relative flex cursor-pointer`, className),
21699
20814
  id: `unrollable-panel-button-${identifier}`,
21700
20815
  "aria-haspopup": true,
21701
20816
  ...props,
@@ -21770,7 +20885,7 @@ var Detail$1 = ({ children, isHidden = void 0, isOverable = true, isFocusable =
21770
20885
  "aria-hidden": isHidden,
21771
20886
  "aria-labelledby": `unrollable-panel-button-${identifier}`,
21772
20887
  id: `unrollable-panel-${identifier}`,
21773
- className: cn$2("absolute z-50 min-w-full rounded-md ring-1 ring-neutral", xAlign === "start" && "left-0", xAlign === "center" && "left-1/2 -translate-x-1/2", xAlign === "end" && "right-0", yAlign === "bellow" && "top-[calc(100%+1rem)]", yAlign === "above" && "bottom-[calc(100%+1rem)]", displayArrow && "before:absolute before:z-[999] before:h-0 before:w-0 before:content-[\"\"]", displayArrow && xAlign === "start" && "before:left-2", displayArrow && xAlign === "center" && "before:left-1/2 before:-translate-x-1/2", displayArrow && xAlign === "end" && "before:right-2", displayArrow && yAlign === "bellow" && "before:-top-[10px] before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent", displayArrow && yAlign === "above" && "before:-bottom-[10px] before:border-t-[10px] before:border-t-neutral before:border-r-[10px] before:border-r-transparent before:border-l-[10px] before:border-l-transparent", "overflow-x-visible opacity-0 transition-all duration-400 ease-in-out", isHidden !== false ? "invisible" : "visible opacity-100 delay-800", isOverable && `group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800`, isFocusable && `group-focus-within/popover:visible group-focus-within/popover:opacity-100 group-focus-within/popover:delay-800`, className),
20888
+ className: cn$1("absolute z-50 min-w-full rounded-md ring-1 ring-neutral", xAlign === "start" && "left-0", xAlign === "center" && "left-1/2 -translate-x-1/2", xAlign === "end" && "right-0", yAlign === "bellow" && "top-[calc(100%+1rem)]", yAlign === "above" && "bottom-[calc(100%+1rem)]", displayArrow && "before:absolute before:z-[999] before:h-0 before:w-0 before:content-[\"\"]", displayArrow && xAlign === "start" && "before:left-2", displayArrow && xAlign === "center" && "before:left-1/2 before:-translate-x-1/2", displayArrow && xAlign === "end" && "before:right-2", displayArrow && yAlign === "bellow" && "before:-top-[10px] before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent", displayArrow && yAlign === "above" && "before:-bottom-[10px] before:border-t-[10px] before:border-t-neutral before:border-r-[10px] before:border-r-transparent before:border-l-[10px] before:border-l-transparent", "overflow-x-visible opacity-0 transition-all duration-400 ease-in-out", isHidden !== false ? "invisible" : "visible opacity-100 delay-800", isOverable && `group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800`, isFocusable && `group-focus-within/popover:visible group-focus-within/popover:opacity-100 group-focus-within/popover:delay-800`, className),
21774
20889
  ...props,
21775
20890
  children
21776
20891
  });
@@ -23682,7 +22797,7 @@ var Te = {
23682
22797
  //#endregion
23683
22798
  //#region ../@intlayer/design-system/dist/esm/components/Command/index.mjs
23684
22799
  var CommandRoot = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e, {
23685
- className: cn$2("flex flex-col overflow-hidden rounded-md", className),
22800
+ className: cn$1("flex flex-col overflow-hidden rounded-md", className),
23686
22801
  ...props
23687
22802
  });
23688
22803
  var CommandDialog = ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Dialog, {
@@ -23699,12 +22814,12 @@ var CommandInput = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
23699
22814
  className: "flex w-full items-center",
23700
22815
  "cmdk-input-wrapper": "",
23701
22816
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Search, { className: "mr-2 size-4 shrink-0 opacity-50" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Input, {
23702
- className: cn$2("flex w-full rounded-md bg-transparent text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50", className),
22817
+ className: cn$1("flex w-full rounded-md bg-transparent text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50", className),
23703
22818
  ...props
23704
22819
  })]
23705
22820
  });
23706
22821
  var CommandList = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.List, {
23707
- className: cn$2("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
22822
+ className: cn$1("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
23708
22823
  ...props
23709
22824
  });
23710
22825
  var CommandEmpty = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Empty, {
@@ -23712,20 +22827,20 @@ var CommandEmpty = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Emp
23712
22827
  ...props
23713
22828
  });
23714
22829
  var CommandGroup = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Group, {
23715
- className: cn$2("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:text-xs", className),
22830
+ className: cn$1("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:text-xs", className),
23716
22831
  ...props
23717
22832
  });
23718
22833
  var CommandSeparator = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Separator, {
23719
- className: cn$2("-mx-1 h-px bg-border", className),
22834
+ className: cn$1("-mx-1 h-px bg-border", className),
23720
22835
  ...props
23721
22836
  });
23722
22837
  var CommandItem = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Item, {
23723
- className: cn$2("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50", className),
22838
+ className: cn$1("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50", className),
23724
22839
  ...props
23725
22840
  });
23726
22841
  var CommandShortcut = ({ className, ...props }) => {
23727
22842
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
23728
- className: cn$2("ml-auto text-muted-foreground text-xs tracking-widest", className),
22843
+ className: cn$1("ml-auto text-muted-foreground text-xs tracking-widest", className),
23729
22844
  ...props
23730
22845
  });
23731
22846
  };
@@ -23964,7 +23079,7 @@ var CopyToClipboard = ({ text, children, className, "aria-label": ariaLabel = "C
23964
23079
  const currentAriaLabel = isCopied ? ariaCopiedLabel : ariaLabel;
23965
23080
  const IconComponent = isCopied ? CopyCheck : Copy;
23966
23081
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
23967
- className: cn$2("inline-flex max-w-full cursor-pointer items-center gap-2 rounded-md p-0.5 hover:bg-neutral/10", className),
23082
+ className: cn$1("inline-flex max-w-full cursor-pointer items-center gap-2 rounded-md p-0.5 hover:bg-neutral/10", className),
23968
23083
  onClick: handleCopy,
23969
23084
  onKeyDown: handleKeyDown,
23970
23085
  role: "button",
@@ -24235,7 +23350,7 @@ var SwitchSelector = ({ choices = defaultChoices, value, defaultValue, onChange,
24235
23350
  const isIndicatorOwner = index === indicatorIndex;
24236
23351
  return /* @__PURE__ */ (0, import_react.createElement)("button", {
24237
23352
  ...buttonProps,
24238
- className: cn$2(choiceVariant({ size }), disabled && "cursor-not-allowed", itemClassName),
23353
+ className: cn$1(choiceVariant({ size }), disabled && "cursor-not-allowed", itemClassName),
24239
23354
  key: isKeyOfKey ? value : index,
24240
23355
  role: "tab",
24241
23356
  onClick: () => handleChange(value),
@@ -24250,7 +23365,7 @@ var SwitchSelector = ({ choices = defaultChoices, value, defaultValue, onChange,
24250
23365
  onMouseLeave: () => !disabled && setHoveredIndex(null)
24251
23366
  }, content);
24252
23367
  }), choiceIndicatorPosition && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
24253
- className: cn$2(indicatorVariant$1({ color })),
23368
+ className: cn$1(indicatorVariant$1({ color })),
24254
23369
  style: choiceIndicatorPosition,
24255
23370
  ref: indicatorRef
24256
23371
  })]
@@ -24297,7 +23412,7 @@ var EditableFieldLayout = ({ value = "", onCancel, onSave, onClick, children, is
24297
23412
  ref: editableFieldRef,
24298
23413
  ...props,
24299
23414
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
24300
- className: cn$2("flex flex-1 gap-2", isEditing ? "display" : "hidden"),
23415
+ className: cn$1("flex flex-1 gap-2", isEditing ? "display" : "hidden"),
24301
23416
  children: [
24302
23417
  children,
24303
23418
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
@@ -24330,7 +23445,7 @@ var EditableFieldLayout = ({ value = "", onCancel, onSave, onClick, children, is
24330
23445
  })
24331
23446
  ]
24332
23447
  }, String(isEditing)), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
24333
- className: cn$2("flex flex-1 gap-2", isEditing ? "hidden" : "display"),
23448
+ className: cn$1("flex flex-1 gap-2", isEditing ? "hidden" : "display"),
24334
23449
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
24335
23450
  className: "ml-2 flex w-full whitespace-pre-wrap p-1 text-sm leading-6",
24336
23451
  children: result
@@ -24830,7 +23945,7 @@ var ContentEditableTextArea = ({ value, defaultValue, onChange, placeholder, dis
24830
23945
  onDrop: handleDrop,
24831
23946
  onDragOver: handleDragOver,
24832
23947
  onClick,
24833
- className: cn$2("resize-none whitespace-pre-wrap break-words outline-none", inputVariants({
23948
+ className: cn$1("resize-none whitespace-pre-wrap break-words outline-none", inputVariants({
24834
23949
  variant,
24835
23950
  validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
24836
23951
  }), autoSize && "overflow-y-auto", className),
@@ -24972,7 +24087,7 @@ var AutoCompleteTextarea = ({ isActive = true, suggestion: suggestionProp, ...pr
24972
24087
  * ```
24973
24088
  */
24974
24089
  var TextArea = ({ className, variant, validationStyleEnabled = false, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", {
24975
- className: cn$2("resize-none", inputVariants({
24090
+ className: cn$1("resize-none", inputVariants({
24976
24091
  variant,
24977
24092
  validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled",
24978
24093
  className
@@ -25072,7 +24187,7 @@ var AutoSizedTextArea = ({ className, autoSize = true, onChange, maxRows = 999,
25072
24187
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TextArea, {
25073
24188
  ref: setRef,
25074
24189
  onChange: handleChange,
25075
- className: cn$2("overflow-y-auto", autoSize && "resize-none", className),
24190
+ className: cn$1("overflow-y-auto", autoSize && "resize-none", className),
25076
24191
  ...props
25077
24192
  });
25078
24193
  };
@@ -25147,7 +24262,7 @@ var EditableFieldTextArea = ({ onSave, onCancel, ref, ...props }) => {
25147
24262
  //#endregion
25148
24263
  //#region ../@intlayer/design-system/dist/esm/components/DictionaryEditor/ItemLayout.mjs
25149
24264
  var ItemLayout = ({ level, title, description, children, rightParam, isSelected, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
25150
- className: cn$2("rounded-md p-2 transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && "", isSelected === true && "bg-card/40"),
24265
+ className: cn$1("rounded-md p-2 transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && "", isSelected === true && "bg-card/40"),
25151
24266
  ...props,
25152
24267
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Accordion, {
25153
24268
  isOpen: isSelected,
@@ -25157,7 +24272,7 @@ var ItemLayout = ({ level, title, description, children, rightParam, isSelected,
25157
24272
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
25158
24273
  className: "flex w-full items-center justify-between",
25159
24274
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
25160
- className: cn$2(level === 0 && "text-lg", level === 1 && "text-md", level === 2 && "text-md", level >= 3 && "text-base"),
24275
+ className: cn$1(level === 0 && "text-lg", level === 1 && "text-md", level === 2 && "text-md", level >= 3 && "text-base"),
25161
24276
  children: title
25162
24277
  }), rightParam && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
25163
24278
  className: "flex w-auto items-center justify-between p-3",
@@ -25385,7 +24500,7 @@ var onGlobalEditorManagerChange = (changeCallback) => {
25385
24500
  };
25386
24501
  };
25387
24502
  //#endregion
25388
- //#region ../@intlayer/editor/dist/esm/_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.mjs
24503
+ //#region ../@intlayer/editor/dist/esm/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.mjs
25389
24504
  function __decorate(decorators, target, key, desc) {
25390
24505
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
25391
24506
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -27065,7 +26180,7 @@ var EditorStateManager = class {
27065
26180
  async _loadDictionaries() {
27066
26181
  try {
27067
26182
  const unmergedDictionaries = (await __vitePreload(async () => {
27068
- const { getUnmergedDictionaries } = await import("./unmerged_dictionaries-DFHIR2QQ.js");
26183
+ const { getUnmergedDictionaries } = await import("./unmerged_dictionaries-DoWpZ8yJ.js");
27069
26184
  return { getUnmergedDictionaries };
27070
26185
  }, [])).getUnmergedDictionaries();
27071
26186
  const dictionariesList = Object.fromEntries(Object.values(unmergedDictionaries).flat().map((dictionary) => [dictionary.localId, dictionary]));
@@ -27624,7 +26739,7 @@ var BooleanWrapper = ({ keyPath, section, editedContent, onContentChange, onFocu
27624
26739
  const value = editedContentValue ?? section;
27625
26740
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
27626
26741
  type: "button",
27627
- className: cn$2("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
26742
+ className: cn$1("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
27628
26743
  onClick: (e) => {
27629
26744
  e.stopPropagation();
27630
26745
  onFocusKeyPath(keyPath);
@@ -27698,7 +26813,7 @@ var StringWrapper = ({ keyPath, section, editedContent, editedContentValue: edit
27698
26813
  const content = String(editedContentValue ?? section);
27699
26814
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
27700
26815
  type: "button",
27701
- className: cn$2("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
26816
+ className: cn$1("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
27702
26817
  onClick: (e) => {
27703
26818
  e.stopPropagation();
27704
26819
  onFocusKeyPath(keyPath);
@@ -27837,7 +26952,7 @@ var NumberWrapper = ({ keyPath, section, editedContent, onContentChange, onFocus
27837
26952
  const content = String(editedContentValue ?? section);
27838
26953
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
27839
26954
  type: "button",
27840
- className: cn$2("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
26955
+ className: cn$1("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
27841
26956
  onClick: (e) => {
27842
26957
  e.stopPropagation();
27843
26958
  onFocusKeyPath(keyPath);
@@ -28019,7 +27134,7 @@ var DictionaryEditor = ({ dictionary, ...props }) => {
28019
27134
  * - Maintains focus trap within dropdown when needed
28020
27135
  */
28021
27136
  var DropDown = ({ children, className, identifier, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
28022
- className: cn$2(`group/dropdown relative flex`, className),
27137
+ className: cn$1(`group/dropdown relative flex`, className),
28023
27138
  "aria-label": `DropDown ${identifier}`,
28024
27139
  id: `dropdown-container-${identifier}`,
28025
27140
  ...props,
@@ -28048,7 +27163,7 @@ var DropDown = ({ children, className, identifier, ...props }) => /* @__PURE__ *
28048
27163
  * @note Don't nest Button components inside the Trigger - it's already a button
28049
27164
  */
28050
27165
  var Trigger$1 = ({ children, identifier, className, label, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
28051
- className: cn$2([
27166
+ className: cn$1([
28052
27167
  "w-full cursor-pointer",
28053
27168
  "group-focus-within/dropdown:bg-current/20 group-focus-within/dropdown:ring-4",
28054
27169
  className
@@ -28126,14 +27241,14 @@ var DropDownYAlign = /* @__PURE__ */ function(DropDownYAlign) {
28126
27241
  * - Screen reader announcements for state changes
28127
27242
  */
28128
27243
  var Panel = ({ children, isHidden = void 0, isOverable = false, isFocusable = false, align = DropDownAlign.START, yAlign = DropDownYAlign.BELOW, identifier, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
28129
- className: cn$2("absolute z-100 min-w-full", align === DropDownAlign.START && "left-0", align === DropDownAlign.END && "right-0", yAlign === DropDownYAlign.BELOW && "top-[calc(100%+0.5rem)]", yAlign === DropDownYAlign.ABOVE && "bottom-[calc(100%+0.5rem)]", className),
27244
+ className: cn$1("absolute z-100 min-w-full", align === DropDownAlign.START && "left-0", align === DropDownAlign.END && "right-0", yAlign === DropDownYAlign.BELOW && "top-[calc(100%+0.5rem)]", yAlign === DropDownYAlign.ABOVE && "bottom-[calc(100%+0.5rem)]", className),
28130
27245
  "aria-hidden": isHidden,
28131
27246
  role: "region",
28132
27247
  "aria-labelledby": `dropdown-trigger-${identifier}`,
28133
27248
  id: `dropdown-panel-${identifier}`,
28134
27249
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MaxHeightSmoother, {
28135
27250
  isHidden,
28136
- className: cn$2("overflow-x-visible", isHidden === false && "invisible", isHidden === true && "visible", isOverable && "group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr]", isFocusable && "group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]"),
27251
+ className: cn$1("overflow-x-visible", isHidden === false && "invisible", isHidden === true && "visible", isOverable && "group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr]", isFocusable && "group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]"),
28137
27252
  ...props,
28138
27253
  children
28139
27254
  })
@@ -29751,7 +28866,7 @@ var LocaleSwitcherContent = ({ panelProps, isMultilingual = true }) => {
29751
28866
  * - Screen reader compatible with proper ARIA relationships
29752
28867
  */
29753
28868
  var Label$1 = ({ htmlFor, required = false, disabled = false, className, children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", {
29754
- className: cn$2("select-none font-medium text-sm leading-none", "peer-disabled:cursor-not-allowed peer-disabled:opacity-70", disabled && "cursor-not-allowed text-muted-foreground opacity-70", className),
28869
+ className: cn$1("select-none font-medium text-sm leading-none", "peer-disabled:cursor-not-allowed peer-disabled:opacity-70", disabled && "cursor-not-allowed text-muted-foreground opacity-70", className),
29755
28870
  htmlFor,
29756
28871
  suppressHydrationWarning: true,
29757
28872
  ...props,
@@ -29773,7 +28888,7 @@ var styledAfter = `after:content-['#'] after:scale-75 after:px-6 after:text-neut
29773
28888
  * Does not include clickable anchor functionality.
29774
28889
  */
29775
28890
  var StyledH1 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
29776
- className: cn$2("font-bold text-2xl", className),
28891
+ className: cn$1("font-bold text-2xl", className),
29777
28892
  ...props
29778
28893
  });
29779
28894
  /**
@@ -29783,7 +28898,7 @@ var StyledH1 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runti
29783
28898
  * Used for major section headers in content.
29784
28899
  */
29785
28900
  var StyledH2 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", {
29786
- className: cn$2("mb-2 font-bold text-2xl", styledHeading, className),
28901
+ className: cn$1("mb-2 font-bold text-2xl", styledHeading, className),
29787
28902
  ...props
29788
28903
  });
29789
28904
  /**
@@ -29793,7 +28908,7 @@ var StyledH2 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runti
29793
28908
  * Used for subsection headers in content.
29794
28909
  */
29795
28910
  var StyledH3 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", {
29796
- className: cn$2("mb-2 font-bold text-xl", styledHeading, className),
28911
+ className: cn$1("mb-2 font-bold text-xl", styledHeading, className),
29797
28912
  ...props
29798
28913
  });
29799
28914
  /**
@@ -29803,7 +28918,7 @@ var StyledH3 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runti
29803
28918
  * Used for minor section headers in content.
29804
28919
  */
29805
28920
  var StyledH4 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h4", {
29806
- className: cn$2("font-bold text-lg", styledHeading, className),
28921
+ className: cn$1("font-bold text-lg", styledHeading, className),
29807
28922
  ...props
29808
28923
  });
29809
28924
  /**
@@ -29813,11 +28928,11 @@ var StyledH4 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runti
29813
28928
  * Used for detailed subsection headers in content.
29814
28929
  */
29815
28930
  var StyledH5 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h5", {
29816
- className: cn$2("font-bold text-base", styledHeading, className),
28931
+ className: cn$1("font-bold text-base", styledHeading, className),
29817
28932
  ...props
29818
28933
  });
29819
28934
  var StyledH6 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h6", {
29820
- className: cn$2("ml-3 font-bold text-base", styledHeading, className),
28935
+ className: cn$1("ml-3 font-bold text-base", styledHeading, className),
29821
28936
  ...props
29822
28937
  });
29823
28938
  /**
@@ -29882,7 +28997,7 @@ var HeadingWrapper = ({ H, children, className, isClickable, ...props }) => {
29882
28997
  id,
29883
28998
  onClick: isClickable ? onClick : void 0,
29884
28999
  "aria-label": isClickable ? `Click to scroll to section ${id} and copy the link to the clipboard` : void 0,
29885
- className: cn$2(isClickable && styledAfter, className),
29000
+ className: cn$1(isClickable && styledAfter, className),
29886
29001
  ...props,
29887
29002
  children
29888
29003
  });
@@ -30144,7 +29259,7 @@ var ExpandCollapse = ({ isRollable = true, minHeight = DEFAULT_MIN_HEIGHT, child
30144
29259
  }, [children]);
30145
29260
  if (!isRollable) return children;
30146
29261
  if (!isTooBig) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
30147
- className: cn$2("grid w-full", className),
29262
+ className: cn$1("grid w-full", className),
30148
29263
  ref: codeContainerRef,
30149
29264
  children
30150
29265
  });
@@ -30153,11 +29268,11 @@ var ExpandCollapse = ({ isRollable = true, minHeight = DEFAULT_MIN_HEIGHT, child
30153
29268
  minHeight,
30154
29269
  className: "w-full overflow-x-auto overflow-y-hidden",
30155
29270
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
30156
- className: cn$2("grid w-full", className),
29271
+ className: cn$1("grid w-full", className),
30157
29272
  ref: codeContainerRef,
30158
29273
  children
30159
29274
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
30160
- className: cn$2("absolute right-0 bottom-0 flex w-full cursor-pointer items-center justify-center rounded-t-2xl bg-gradient-to-t from-card/80 to-transparent px-3 py-0.5 text-md text-neutral-700 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur transition-all duration-300 hover:py-1 dark:text-neutral-400", isCollapsed ? "w-full" : "w-32"),
29275
+ className: cn$1("absolute right-0 bottom-0 flex w-full cursor-pointer items-center justify-center rounded-t-2xl bg-gradient-to-t from-card/80 to-transparent px-3 py-0.5 text-md text-neutral-700 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur transition-all duration-300 hover:py-1 dark:text-neutral-400", isCollapsed ? "w-full" : "w-32"),
30161
29276
  type: "button",
30162
29277
  onClick: () => setIsCollapsed((prev) => !prev),
30163
29278
  children: expandCollapseContent(isCollapsed)
@@ -30176,9 +29291,9 @@ var CodeDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
30176
29291
  }, `line-${index}-${line.slice(0, 10)}`)) : children })
30177
29292
  })
30178
29293
  });
30179
- var CodeBlockShiki = (0, import_react.lazy)(() => __vitePreload(() => import("./CodeBlockShiki-DoD2Sc7u.js").then((mod) => ({ default: mod.CodeBlockShiki })), __vite__mapDeps([3,1,4,5,2])));
29294
+ var CodeBlockShiki = (0, import_react.lazy)(() => __vitePreload(() => import("./CodeBlockShiki-ie_3x4KO.js").then((mod) => ({ default: mod.CodeBlockShiki })), __vite__mapDeps([4,1,5,2,3])));
30180
29295
  var CodeBlock = ({ className, onChange, isEditable, children, lang, isDarkMode, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
30181
- className: cn$2("flex w-full min-w-0 max-w-full overflow-x-auto", className),
29296
+ className: cn$1("flex w-full min-w-0 max-w-full overflow-x-auto", className),
30182
29297
  ...props,
30183
29298
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
30184
29299
  fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CodeDefault, { children }),
@@ -30414,7 +29529,7 @@ var MultiSelectRoot = ({ values: valuesProp, defaultValues, onValueChange, loop
30414
29529
  ]),
30415
29530
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommandRoot, {
30416
29531
  onKeyDown: handleKeyDown,
30417
- className: cn$2("flex w-full flex-col gap-2 overflow-visible bg-transparent", className),
29532
+ className: cn$1("flex w-full flex-col gap-2 overflow-visible bg-transparent", className),
30418
29533
  dir,
30419
29534
  ...props,
30420
29535
  children
@@ -30428,12 +29543,12 @@ var MultiSelectTrigger = ({ className, getBadgeValue = (value) => value, validat
30428
29543
  e.stopPropagation();
30429
29544
  }, []);
30430
29545
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
30431
- className: cn$2("flex w-full flex-col gap-3", "cursor-pointer select-text text-base shadow-none outline-none md:text-sm", "rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl", "px-2 py-3 md:py-2", "bg-neutral-50 dark:bg-neutral-950", "text-text", "ring-0", "focus-within:outline-none", "focus-within:ring-3", "focus-within:ring-neutral-200", "dark:focus-within:ring-neutral-500", "focus-within:ring-offset-white", "dark:focus-within:ring-offset-neutral-500", "[box-shadow:none]", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-error", validationStyleEnabled && "valid:border-success invalid:border-error", className),
29546
+ className: cn$1("flex w-full flex-col gap-3", "cursor-pointer select-text text-base shadow-none outline-none md:text-sm", "rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl", "px-2 py-3 md:py-2", "bg-neutral-50 dark:bg-neutral-950", "text-text", "ring-0", "focus-within:outline-none", "focus-within:ring-3", "focus-within:ring-neutral-200", "dark:focus-within:ring-neutral-500", "focus-within:ring-offset-white", "dark:focus-within:ring-offset-neutral-500", "[box-shadow:none]", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-error", validationStyleEnabled && "valid:border-success invalid:border-error", className),
30432
29547
  ...props,
30433
29548
  children: [value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
30434
29549
  className: "flex w-full flex-wrap gap-1",
30435
29550
  children: value.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Badge, {
30436
- className: cn$2("flex items-center gap-1 rounded-xl px-1", activeIndex === index && "ring-2 ring-muted-foreground"),
29551
+ className: cn$1("flex items-center gap-1 rounded-xl px-1", activeIndex === index && "ring-2 ring-muted-foreground"),
30437
29552
  color: BadgeColor.TEXT,
30438
29553
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
30439
29554
  className: "text-xs",
@@ -30468,7 +29583,7 @@ var MultiSelectInput = ({ className, ...props }) => {
30468
29583
  onBlur: () => setOpen(false),
30469
29584
  onFocus: () => setOpen(true),
30470
29585
  onClick: () => setActiveIndex(-1),
30471
- className: cn$2("ml-2 flex-1 cursor-pointer outline-hidden", className, activeIndex !== -1 && "caret-transparent")
29586
+ className: cn$1("ml-2 flex-1 cursor-pointer outline-hidden", className, activeIndex !== -1 && "caret-transparent")
30472
29587
  });
30473
29588
  };
30474
29589
  var MultiSelectContent = ({ children }) => {
@@ -30479,7 +29594,7 @@ var MultiSelectContent = ({ children }) => {
30479
29594
  });
30480
29595
  };
30481
29596
  var MultiSelectList = ({ className, children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Command.List, {
30482
- className: cn$2("absolute top-0 z-10 flex w-full flex-col gap-2", "rounded-xl p-2 shadow-md", "bg-white dark:bg-neutral-950", "text-text", "border border-neutral-200 dark:border-neutral-800", "transition-colors", className),
29597
+ className: cn$1("absolute top-0 z-10 flex w-full flex-col gap-2", "rounded-xl p-2 shadow-md", "bg-white dark:bg-neutral-950", "text-text", "border border-neutral-200 dark:border-neutral-800", "transition-colors", className),
30483
29598
  children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Command.Empty, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
30484
29599
  className: "text-muted-foreground",
30485
29600
  children: "No results found"
@@ -30498,7 +29613,7 @@ var MultiSelectItem = ({ className, value, children, ...props }) => {
30498
29613
  onValueChange(value);
30499
29614
  setInputValue("");
30500
29615
  },
30501
- className: cn$2("flex cursor-pointer justify-between", "rounded-lg px-2 py-1", "transition-colors", "hover:bg-neutral/10", isIncluded && "opacity-50", props.disabled && "cursor-not-allowed opacity-50", className),
29616
+ className: cn$1("flex cursor-pointer justify-between", "rounded-lg px-2 py-1", "transition-colors", "hover:bg-neutral/10", isIncluded && "opacity-50", props.disabled && "cursor-not-allowed opacity-50", className),
30502
29617
  onMouseDown: mousePreventDefault,
30503
29618
  children: [children, isIncluded && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Check, { className: "size-4" })]
30504
29619
  });
@@ -33495,7 +32610,7 @@ var SelectValue = Value;
33495
32610
  */
33496
32611
  var SelectTrigger = ({ validationStyleEnabled = false, className, children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Trigger, {
33497
32612
  suppressHydrationWarning: true,
33498
- className: cn$2("flex w-full cursor-pointer items-center justify-between whitespace-nowrap", "select-text text-base shadow-none outline-none md:text-sm", "rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl", "px-2 py-3 md:py-2", "bg-neutral-50 dark:bg-neutral-950", "text-text", "ring-0", "focus-visible:outline-none", "focus-visible:ring-3", "focus-visible:ring-neutral-200", "dark:focus-visible:ring-neutral-500", "focus-visible:ring-offset-white", "dark:focus-visible:ring-offset-neutral-500", "[box-shadow:none] focus:[box-shadow:none]", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-error", "[&>span]:line-clamp-1", validationStyleEnabled && "valid:border-success invalid:border-error", className),
32613
+ className: cn$1("flex w-full cursor-pointer items-center justify-between whitespace-nowrap", "select-text text-base shadow-none outline-none md:text-sm", "rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl", "px-2 py-3 md:py-2", "bg-neutral-50 dark:bg-neutral-950", "text-text", "ring-0", "focus-visible:outline-none", "focus-visible:ring-3", "focus-visible:ring-neutral-200", "dark:focus-visible:ring-neutral-500", "focus-visible:ring-offset-white", "dark:focus-visible:ring-offset-neutral-500", "[box-shadow:none] focus:[box-shadow:none]", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-error", "[&>span]:line-clamp-1", validationStyleEnabled && "valid:border-success invalid:border-error", className),
33499
32614
  ...props,
33500
32615
  children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
33501
32616
  asChild: true,
@@ -33511,7 +32626,7 @@ var SelectTrigger = ({ validationStyleEnabled = false, className, children, ...p
33511
32626
  * @param className - Additional CSS classes for custom styling
33512
32627
  */
33513
32628
  var SelectScrollUpButton = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScrollUpButton, {
33514
- className: cn$2("flex cursor-default items-center justify-center py-1", className),
32629
+ className: cn$1("flex cursor-default items-center justify-center py-1", className),
33515
32630
  ...props,
33516
32631
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronUp, {})
33517
32632
  });
@@ -33524,7 +32639,7 @@ var SelectScrollUpButton = ({ className, ...props }) => /* @__PURE__ */ (0, impo
33524
32639
  * @param className - Additional CSS classes for custom styling
33525
32640
  */
33526
32641
  var SelectScrollDownButton = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScrollDownButton, {
33527
- className: cn$2("flex cursor-default items-center justify-center py-1", className),
32642
+ className: cn$1("flex cursor-default items-center justify-center py-1", className),
33528
32643
  ...props,
33529
32644
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronDown, {})
33530
32645
  });
@@ -33547,13 +32662,13 @@ var SelectScrollDownButton = ({ className, ...props }) => /* @__PURE__ */ (0, im
33547
32662
  * ```
33548
32663
  */
33549
32664
  var SelectContent = ({ className, children, position = SelectContentPosition.POPPER, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Content2, {
33550
- className: cn$2("relative z-50 max-h-96 min-w-32 overflow-hidden", "rounded-xl shadow-md", "bg-white dark:bg-neutral-950", "text-text", "border border-neutral-200 dark:border-neutral-800", "data-[state=closed]:animate-out data-[state=open]:animate-in", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[side=bottom]:slide-in-from-top-2", "data-[side=left]:slide-in-from-right-2", "data-[side=right]:slide-in-from-left-2", "data-[side=top]:slide-in-from-bottom-2", position === "popper" && "data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1", className),
32665
+ className: cn$1("relative z-50 max-h-96 min-w-32 overflow-hidden", "rounded-xl shadow-md", "bg-white dark:bg-neutral-950", "text-text", "border border-neutral-200 dark:border-neutral-800", "data-[state=closed]:animate-out data-[state=open]:animate-in", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[side=bottom]:slide-in-from-top-2", "data-[side=left]:slide-in-from-right-2", "data-[side=right]:slide-in-from-left-2", "data-[side=top]:slide-in-from-bottom-2", position === "popper" && "data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1", className),
33551
32666
  position,
33552
32667
  ...props,
33553
32668
  children: [
33554
32669
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollUpButton, {}),
33555
32670
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Viewport, {
33556
- className: cn$2("p-1", position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"),
32671
+ className: cn$1("p-1", position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"),
33557
32672
  children
33558
32673
  }),
33559
32674
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollDownButton, {})
@@ -33580,7 +32695,7 @@ var SelectContent = ({ className, children, position = SelectContentPosition.POP
33580
32695
  * ```
33581
32696
  */
33582
32697
  var SelectLabel = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Label, {
33583
- className: cn$2("px-1 py-0.5 font-semibold text-sm", className),
32698
+ className: cn$1("px-1 py-0.5 font-semibold text-sm", className),
33584
32699
  ...props
33585
32700
  });
33586
32701
  /**
@@ -33600,7 +32715,7 @@ var SelectLabel = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_ru
33600
32715
  * ```
33601
32716
  */
33602
32717
  var SelectItem = ({ className, children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Item, {
33603
- className: cn$2("relative flex w-full cursor-pointer select-none items-center rounded-lg py-1.5 pr-8 pl-2 text-sm outline-hidden focus:bg-neutral/10 data-disabled:pointer-events-none data-disabled:opacity-50", className),
32718
+ className: cn$1("relative flex w-full cursor-pointer select-none items-center rounded-lg py-1.5 pr-8 pl-2 text-sm outline-hidden focus:bg-neutral/10 data-disabled:pointer-events-none data-disabled:opacity-50", className),
33604
32719
  ...props,
33605
32720
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
33606
32721
  className: "absolute right-2 flex size-3.5 items-center justify-center",
@@ -33625,7 +32740,7 @@ var SelectItem = ({ className, children, ...props }) => /* @__PURE__ */ (0, impo
33625
32740
  * ```
33626
32741
  */
33627
32742
  var SelectSeparator = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Separator, {
33628
- className: cn$2("-mx-1 my-1 h-px", "bg-neutral-200 dark:bg-neutral-800", className),
32743
+ className: cn$1("-mx-1 my-1 h-px", "bg-neutral-200 dark:bg-neutral-800", className),
33629
32744
  ...props
33630
32745
  });
33631
32746
  /**
@@ -34155,7 +33270,7 @@ var Code = ({ children, language, isDarkMode, showHeader = true, showLineNumbers
34155
33270
  codeFormat,
34156
33271
  contentDeclarationFormat,
34157
33272
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Container, {
34158
- className: cn$2("relative min-w-0 max-w-full text-sm leading-6", showLineNumbers && "with-line-number ml-0", className),
33273
+ className: cn$1("relative min-w-0 max-w-full text-sm leading-6", showLineNumbers && "with-line-number ml-0", className),
34159
33274
  transparency: "lg",
34160
33275
  ...props,
34161
33276
  children: [showHeader && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
@@ -34174,7 +33289,7 @@ var Code = ({ children, language, isDarkMode, showHeader = true, showLineNumbers
34174
33289
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
34175
33290
  className: "sticky top-46 z-20",
34176
33291
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
34177
- className: cn$2("absolute right-2 bottom-0 flex h-7 items-center", hadSelectInHeader && "h-11"),
33292
+ className: cn$1("absolute right-2 bottom-0 flex h-7 items-center", hadSelectInHeader && "h-11"),
34178
33293
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyCode, { code })
34179
33294
  })
34180
33295
  })] }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandCollapse, {
@@ -34260,7 +33375,7 @@ var TabSelector = ({ tabs, selectedChoice, onTabClick, color = TabSelectorColor.
34260
33375
  calculatePosition();
34261
33376
  }, [selectedChoice, tabs]);
34262
33377
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
34263
- className: cn$2(tabSelectorVariant({ color }), className),
33378
+ className: cn$1(tabSelectorVariant({ color }), className),
34264
33379
  "aria-orientation": orientation,
34265
33380
  "aria-multiselectable": "false",
34266
33381
  role: "tablist",
@@ -34282,7 +33397,7 @@ var TabSelector = ({ tabs, selectedChoice, onTabClick, color = TabSelectorColor.
34282
33397
  }
34283
33398
  });
34284
33399
  }), choiceIndicatorPosition && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
34285
- className: cn$2(indicatorVariant({
33400
+ className: cn$1(indicatorVariant({
34286
33401
  color,
34287
33402
  orientation
34288
33403
  })),
@@ -34511,17 +33626,17 @@ var TabComponent = ({ defaultTab, group, variant, children, className, headerCla
34511
33626
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TabContext.Provider, {
34512
33627
  value: contextValue,
34513
33628
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
34514
- className: cn$2(tabContainerVariant({ variant }), fullHeight && "flex h-full flex-col overflow-hidden", className),
33629
+ className: cn$1(tabContainerVariant({ variant }), fullHeight && "flex h-full flex-col overflow-hidden", className),
34515
33630
  ...props,
34516
33631
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
34517
- className: cn$2("flex shrink-0 gap-3 p-3", headerClassName),
33632
+ className: cn$1("flex shrink-0 gap-3 p-3", headerClassName),
34518
33633
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TabSelector, {
34519
33634
  selectedChoice: currentTabValue,
34520
33635
  tabs: tabItems.map((child) => {
34521
33636
  const { label, value, disabled } = child.props;
34522
33637
  const isActive = currentTabValue === value;
34523
33638
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
34524
- className: cn$2("cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none", !isActive && "text-neutral/70"),
33639
+ className: cn$1("cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none", !isActive && "text-neutral/70"),
34525
33640
  "data-active": isActive,
34526
33641
  disabled,
34527
33642
  onClick: () => !disabled && handleSetActiveTab(value),
@@ -34537,12 +33652,12 @@ var TabComponent = ({ defaultTab, group, variant, children, className, headerCla
34537
33652
  color: TabSelectorColor.TEXT
34538
33653
  })
34539
33654
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
34540
- className: cn$2("relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]", fullHeight && "min-h-0 flex-1"),
33655
+ className: cn$1("relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]", fullHeight && "min-h-0 flex-1"),
34541
33656
  ...containerProps,
34542
33657
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
34543
33658
  role: "tablist",
34544
33659
  "aria-orientation": "horizontal",
34545
- className: cn$2("grid w-full min-w-0", fullHeight && "h-full", isDragging ? "transition-none" : "transition-transform duration-300 ease-in-out"),
33660
+ className: cn$1("grid w-full min-w-0", fullHeight && "h-full", isDragging ? "transition-none" : "transition-transform duration-300 ease-in-out"),
34546
33661
  style: {
34547
33662
  gridTemplateColumns: `repeat(${tabItems.length}, 100%)`,
34548
33663
  transform: `translateX(-${activeTabIndex * 100 - (isDragging ? dragDeltaPct : 0)}%)`
@@ -34557,9 +33672,9 @@ var TabComponent = ({ defaultTab, group, variant, children, className, headerCla
34557
33672
  "aria-hidden": !isActive,
34558
33673
  tabIndex: isActive ? 0 : -1,
34559
33674
  "data-active": isActive,
34560
- className: cn$2("w-full min-w-0 p-6 opacity-100 transition-opacity duration-300 ease-in-out", fullHeight && "h-full overflow-y-auto", !isActive && "pointer-events-none opacity-0", itemClassName),
33675
+ className: cn$1("w-full min-w-0 p-6 opacity-100 transition-opacity duration-300 ease-in-out", fullHeight && "h-full overflow-y-auto", !isActive && "pointer-events-none opacity-0", itemClassName),
34561
33676
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
34562
- className: cn$2("flex w-full min-w-0 flex-col items-stretch gap-6", fullHeight && "min-h-full"),
33677
+ className: cn$1("flex w-full min-w-0 flex-col items-stretch gap-6", fullHeight && "min-h-full"),
34563
33678
  children
34564
33679
  })
34565
33680
  }, value);
@@ -44475,7 +43590,7 @@ var Modal = ({ children, isOpen, container, onClose, hasCloseButton = false, tit
44475
43590
  padding: "none",
44476
43591
  ...props,
44477
43592
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
44478
- className: cn$2("relative flex-none px-4 pt-4", hasCloseButton && hasTitle ? `flex items-start` : hasCloseButton ? `flex justify-end` : hasTitle ? `items-center` : `hidden`),
43593
+ className: cn$1("relative flex-none px-4 pt-4", hasCloseButton && hasTitle ? `flex items-start` : hasCloseButton ? `flex justify-end` : hasTitle ? `items-center` : `hidden`),
44479
43594
  children: [hasTitle && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(H3, {
44480
43595
  className: "mb-2 ml-1 flex items-center justify-center font-bold text-lg",
44481
43596
  children: title
@@ -44492,9 +43607,9 @@ var Modal = ({ children, isOpen, container, onClose, hasCloseButton = false, tit
44492
43607
  size: ButtonSize.ICON_MD
44493
43608
  })]
44494
43609
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
44495
- className: cn$2("flex min-h-0 w-full flex-1 flex-col", isScrollable === true && "overflow-auto", isScrollable === "y" && "overflow-y-auto overflow-x-hidden", isScrollable === "x" && "overflow-x-auto overflow-y-hidden", !isScrollable && "overflow-visible"),
43610
+ className: cn$1("flex min-h-0 w-full flex-1 flex-col", isScrollable === true && "overflow-auto", isScrollable === "y" && "overflow-y-auto overflow-x-hidden", isScrollable === "x" && "overflow-x-auto overflow-y-hidden", !isScrollable && "overflow-visible"),
44496
43611
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
44497
- className: cn$2("flex h-full w-full flex-1 flex-col", contentPaddingClass),
43612
+ className: cn$1("flex h-full w-full flex-1 flex-col", contentPaddingClass),
44498
43613
  children
44499
43614
  })
44500
43615
  })]
@@ -44809,7 +43924,7 @@ var Table = ({ className, isRollable = false, displayModal, onClick, ...props })
44809
43924
  className: "max-w-full overflow-x-auto rounded-2xl bg-background text-left [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl",
44810
43925
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("table", {
44811
43926
  ref: tableRef,
44812
- className: cn$2("w-full table-auto overflow-hidden", displayModal && "[&_tbody_tr:hover]:bg-neutral/40 [&_tbody_tr:hover]:dark:bg-neutral-dark/40 [&_tbody_tr]:cursor-pointer [&_tbody_tr]:transition-colors", className),
43927
+ className: cn$1("w-full table-auto overflow-hidden", displayModal && "[&_tbody_tr:hover]:bg-neutral/40 [&_tbody_tr:hover]:dark:bg-neutral-dark/40 [&_tbody_tr]:cursor-pointer [&_tbody_tr]:transition-colors", className),
44813
43928
  onClick: handleTableClick,
44814
43929
  onKeyDown: (e) => {
44815
43930
  if (e.key === "Enter" || e.key === " ") handleTableClick(e);
@@ -44827,7 +43942,7 @@ var Table = ({ className, isRollable = false, displayModal, onClick, ...props })
44827
43942
  className: "grid",
44828
43943
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("table", {
44829
43944
  ref: modalTableRef,
44830
- className: cn$2("min-w-full max-w-full table-auto text-left", className),
43945
+ className: cn$1("min-w-full max-w-full table-auto text-left", className),
44831
43946
  ...props
44832
43947
  })
44833
43948
  }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {})
@@ -44895,22 +44010,22 @@ var createCodeRenderer = (isDarkMode) => {
44895
44010
  };
44896
44011
  };
44897
44012
  var BlockquoteRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("blockquote", {
44898
- className: cn$2("mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral", className),
44013
+ className: cn$1("mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral", className),
44899
44014
  ...props
44900
44015
  });
44901
44016
  var UlRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
44902
- className: cn$2("mt-5 flex list-disc flex-col gap-3 pl-5 marker:text-neutral/80", className),
44017
+ className: cn$1("mt-5 flex list-disc flex-col gap-3 pl-5 marker:text-neutral/80", className),
44903
44018
  ...props
44904
44019
  });
44905
44020
  var OlRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ol", {
44906
- className: cn$2("mt-5 flex list-decimal flex-col gap-3 pl-5 marker:text-neutral/80", className),
44021
+ className: cn$1("mt-5 flex list-decimal flex-col gap-3 pl-5 marker:text-neutral/80", className),
44907
44022
  ...props
44908
44023
  });
44909
44024
  var ImgRenderer = ({ className, alt, src, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
44910
44025
  ...props,
44911
44026
  alt: alt ?? "",
44912
44027
  loading: "lazy",
44913
- className: cn$2("max-h-[80vh] max-w-full rounded-md", className),
44028
+ className: cn$1("max-h-[80vh] max-w-full rounded-md", className),
44914
44029
  src: src?.includes("github.com") ? src?.replace("github.com", "raw.githubusercontent.com").replace("/blob/", "/") : src
44915
44030
  });
44916
44031
  var createLinkRenderer = (locale) => {
@@ -44930,19 +44045,19 @@ var TableRenderer = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table
44930
44045
  ...props
44931
44046
  });
44932
44047
  var ThRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
44933
- className: cn$2("border-neutral border-b bg-neutral/10 p-4", className),
44048
+ className: cn$1("border-neutral border-b bg-neutral/10 p-4", className),
44934
44049
  ...props
44935
44050
  });
44936
44051
  var TrRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tr", {
44937
- className: cn$2("hover:/10 hover:bg-neutral/10", className),
44052
+ className: cn$1("hover:/10 hover:bg-neutral/10", className),
44938
44053
  ...props
44939
44054
  });
44940
44055
  var TdRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
44941
- className: cn$2("border-neutral-500/50 border-b p-4", className),
44056
+ className: cn$1("border-neutral-500/50 border-b p-4", className),
44942
44057
  ...props
44943
44058
  });
44944
44059
  var HrRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("hr", {
44945
- className: cn$2("mx-6 mt-16 text-neutral", className),
44060
+ className: cn$1("mx-6 mt-16 text-neutral", className),
44946
44061
  ...props
44947
44062
  });
44948
44063
  var TabsRenderer = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tab, {
@@ -44951,11 +44066,11 @@ var TabsRenderer = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tab, {
44951
44066
  headerClassName: "sticky rounded-xl top-24 z-5 bg-background/70 backdrop-blur overflow-x-auto"
44952
44067
  });
44953
44068
  var ColumnsRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
44954
- className: cn$2("flex gap-4 max-md:flex-col", className),
44069
+ className: cn$1("flex gap-4 max-md:flex-col", className),
44955
44070
  ...props
44956
44071
  });
44957
44072
  var ColumnRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
44958
- className: cn$2("flex-1", className),
44073
+ className: cn$1("flex-1", className),
44959
44074
  ...props
44960
44075
  });
44961
44076
  var staticMarkdownComponents = {
@@ -45320,22 +44435,104 @@ var navigation_view_default = {
45320
44435
  localIds: ["navigation-view::local::../@intlayer/design-system/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs"]
45321
44436
  };
45322
44437
  //#endregion
45323
- //#region ../@intlayer/design-system/dist/esm/utils/object.mjs
44438
+ //#region ../@intlayer/design-system/dist/esm/components/ContentEditor/ContentEditorInput.mjs
45324
44439
  /**
45325
- * Rename a key in an object by keeping the element order
44440
+ * ContentEditorInput Component
45326
44441
  *
45327
- * @param obj The original object
45328
- * @param oldKey The key in the object that needs to be renamed
45329
- * @param newKey The new key name to replace the old key
45330
- * @returns A new object with the renamed key
44442
+ * An inline editing component for single-line text input with validation,
44443
+ * cancel/save functionality, and support for additional action buttons.
44444
+ *
44445
+ * ## Features
44446
+ * - **Inline Input Editing**: Edit single-line content with immediate feedback
44447
+ * - **Validation Support**: Optional content validation with visual feedback
44448
+ * - **Action Buttons**: Built-in save/cancel with support for additional buttons
44449
+ * - **Keyboard Shortcuts**: Enter to save, Escape to cancel
44450
+ * - **Accessibility**: Full ARIA support and keyboard navigation
44451
+ * - **State Management**: Handles editing states and validation
44452
+ *
44453
+ * ## Accessibility
44454
+ * - Proper ARIA labels and descriptions for all controls
44455
+ * - Keyboard navigation (Tab, Enter, Escape)
44456
+ * - Screen reader support for validation states
44457
+ * - Focus management and visual indicators
44458
+ *
44459
+ * @param children - Current input value
44460
+ * @param onContentChange - Callback when content is saved
44461
+ * @param disabled - Whether the editor is disabled
44462
+ * @param validate - Optional validation function
44463
+ * @param additionalButtons - Extra buttons to display
44464
+ * @param props - Additional Input component props
45331
44465
  */
45332
- var renameKey = (obj, oldKey, newKey) => {
45333
- const newObj = { ...obj };
45334
- for (const key of Object.keys(obj)) if (key === oldKey) {
45335
- newObj[newKey] = obj[oldKey];
45336
- delete newObj[oldKey];
45337
- } else newObj[key] = obj[key];
45338
- return newObj;
44466
+ var ContentEditorInput$1 = ({ children, onContentChange, disabled, validate, additionalButtons, ...props }) => {
44467
+ const [newValue, setNewValue] = (0, import_react.useState)(children);
44468
+ const [resetIncrementor, setResetIncrementor] = (0, import_react.useState)(0);
44469
+ const isEdited = newValue !== children;
44470
+ const handleCancel = () => {
44471
+ setNewValue(children);
44472
+ setResetIncrementor((prev) => prev + 1);
44473
+ };
44474
+ const handleValid = () => {
44475
+ onContentChange(newValue);
44476
+ };
44477
+ const handleOnContentChange = (e) => {
44478
+ setNewValue(e.currentTarget.value);
44479
+ };
44480
+ const handleKeyDown = (e) => {
44481
+ if (e.key === "Enter" && !disabled && isValid) {
44482
+ e.preventDefault();
44483
+ handleValid();
44484
+ } else if (e.key === "Escape") {
44485
+ e.preventDefault();
44486
+ handleCancel();
44487
+ }
44488
+ };
44489
+ (0, import_react.useEffect)(() => {
44490
+ setNewValue(children);
44491
+ setResetIncrementor((prev) => prev + 1);
44492
+ }, [children]);
44493
+ const isValid = validate?.(newValue) ?? true;
44494
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
44495
+ className: "flex size-full flex-col items-center justify-between gap-2",
44496
+ role: "group",
44497
+ "aria-label": "Content editor input",
44498
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input, {
44499
+ onChange: handleOnContentChange,
44500
+ onKeyDown: handleKeyDown,
44501
+ "aria-label": "Editable input value",
44502
+ "aria-describedby": isEdited || additionalButtons ? "content-editor-input-actions" : void 0,
44503
+ "aria-invalid": !isValid,
44504
+ variant: InputVariant.INVISIBLE,
44505
+ className: "size-full",
44506
+ defaultValue: children,
44507
+ disabled,
44508
+ ...props
44509
+ }, resetIncrementor), (isEdited || additionalButtons) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
44510
+ id: "content-editor-input-actions",
44511
+ className: "flex w-full items-center justify-end gap-2",
44512
+ role: "group",
44513
+ "aria-label": "Edit actions",
44514
+ children: [isEdited && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
44515
+ Icon: Check,
44516
+ label: `Save changes${!isValid ? " (invalid content)" : ""}`,
44517
+ variant: ButtonVariant.HOVERABLE,
44518
+ color: ButtonColor.TEXT,
44519
+ size: ButtonSize.ICON_SM,
44520
+ className: "cursor-pointer hover:scale-110",
44521
+ disabled: disabled || !isValid,
44522
+ onClick: handleValid,
44523
+ "aria-describedby": !isValid ? "validation-error" : void 0
44524
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
44525
+ Icon: X$1,
44526
+ label: "Cancel changes",
44527
+ variant: ButtonVariant.HOVERABLE,
44528
+ size: ButtonSize.ICON_SM,
44529
+ color: ButtonColor.TEXT,
44530
+ className: "cursor-pointer hover:scale-110",
44531
+ onClick: handleCancel,
44532
+ disabled
44533
+ })] }), additionalButtons]
44534
+ })]
44535
+ }, String(children));
45339
44536
  };
45340
44537
  //#endregion
45341
44538
  //#region ../../node_modules/.bun/@tanstack+query-core@5.95.2/node_modules/@tanstack/query-core/build/modern/subscribable.js
@@ -48809,7 +48006,7 @@ function defineErrorCodes(codes) {
48809
48006
  }]));
48810
48007
  }
48811
48008
  //#endregion
48812
- //#region ../../node_modules/.bun/@better-auth+passkey@1.5.5+97f5c57d9a1a38cb/node_modules/@better-auth/passkey/dist/error-codes-Dvu2mv33.mjs
48009
+ //#region ../../node_modules/.bun/@better-auth+passkey@1.5.5+31e0a94cb89c09dd/node_modules/@better-auth/passkey/dist/error-codes-Dvu2mv33.mjs
48813
48010
  var PASSKEY_ERROR_CODES = defineErrorCodes({
48814
48011
  CHALLENGE_NOT_FOUND: "Challenge not found",
48815
48012
  YOU_ARE_NOT_ALLOWED_TO_REGISTER_THIS_PASSKEY: "You are not allowed to register this passkey",
@@ -49271,7 +48468,7 @@ async function startAuthentication(options) {
49271
48468
  };
49272
48469
  }
49273
48470
  //#endregion
49274
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/broadcast-channel.mjs
48471
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/broadcast-channel.mjs
49275
48472
  var kBroadcastChannel = Symbol.for("better-auth:broadcast-channel");
49276
48473
  var now$1 = () => Math.floor(Date.now() / 1e3);
49277
48474
  var WindowBroadcastChannel = class {
@@ -49314,7 +48511,7 @@ function getGlobalBroadcastChannel(name = "better-auth.message") {
49314
48511
  return globalThis[kBroadcastChannel];
49315
48512
  }
49316
48513
  //#endregion
49317
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/focus-manager.mjs
48514
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/focus-manager.mjs
49318
48515
  var kFocusManager = Symbol.for("better-auth:focus-manager");
49319
48516
  var WindowFocusManager = class {
49320
48517
  listeners = /* @__PURE__ */ new Set();
@@ -49343,7 +48540,7 @@ function getGlobalFocusManager() {
49343
48540
  return globalThis[kFocusManager];
49344
48541
  }
49345
48542
  //#endregion
49346
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/online-manager.mjs
48543
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/online-manager.mjs
49347
48544
  var kOnlineManager = Symbol.for("better-auth:online-manager");
49348
48545
  var WindowOnlineManager = class {
49349
48546
  listeners = /* @__PURE__ */ new Set();
@@ -49375,7 +48572,7 @@ function getGlobalOnlineManager() {
49375
48572
  return globalThis[kOnlineManager];
49376
48573
  }
49377
48574
  //#endregion
49378
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/parser.mjs
48575
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/parser.mjs
49379
48576
  var PROTO_POLLUTION_PATTERNS = {
49380
48577
  proto: /"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,
49381
48578
  constructor: /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,
@@ -49557,7 +48754,7 @@ var onMount = ($store, initialize) => {
49557
48754
  });
49558
48755
  };
49559
48756
  //#endregion
49560
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/query.mjs
48757
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/query.mjs
49561
48758
  var isServer = () => typeof window === "undefined";
49562
48759
  var useAuthQuery = (initializedAtom, path, $fetch, options) => {
49563
48760
  const value = /* @__PURE__ */ atom({
@@ -49651,7 +48848,7 @@ var useAuthQuery = (initializedAtom, path, $fetch, options) => {
49651
48848
  return value;
49652
48849
  };
49653
48850
  //#endregion
49654
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/session-refresh.mjs
48851
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/session-refresh.mjs
49655
48852
  var now = () => Math.floor(Date.now() / 1e3);
49656
48853
  /**
49657
48854
  * Rate limit: don't refetch on focus if a session request was made within this many seconds
@@ -49850,7 +49047,7 @@ var BetterAuthError = class extends Error {
49850
49047
  }
49851
49048
  };
49852
49049
  //#endregion
49853
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/utils/url.mjs
49050
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/utils/url.mjs
49854
49051
  function checkHasPath(url) {
49855
49052
  try {
49856
49053
  return (new URL(url).pathname.replace(/\/+$/, "") || "/") !== "/";
@@ -49922,7 +49119,7 @@ function getOrigin(url) {
49922
49119
  }
49923
49120
  }
49924
49121
  //#endregion
49925
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/fetch-plugins.mjs
49122
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/fetch-plugins.mjs
49926
49123
  var redirectPlugin = {
49927
49124
  id: "redirect",
49928
49125
  name: "Redirect",
@@ -49937,7 +49134,7 @@ var redirectPlugin = {
49937
49134
  } }
49938
49135
  };
49939
49136
  //#endregion
49940
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/session-atom.mjs
49137
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/session-atom.mjs
49941
49138
  function getSessionAtom($fetch, options) {
49942
49139
  const $signal = /* @__PURE__ */ atom(false);
49943
49140
  const session = useAuthQuery($signal, "/get-session", $fetch, { method: "GET" });
@@ -50396,7 +49593,7 @@ var betterFetch = async (url, options) => {
50396
49593
  };
50397
49594
  };
50398
49595
  //#endregion
50399
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/config.mjs
49596
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/config.mjs
50400
49597
  var resolvePublicAuthUrl = (basePath) => {
50401
49598
  if (typeof process === "undefined") return void 0;
50402
49599
  const path = basePath ?? "/api/auth";
@@ -50494,12 +49691,12 @@ var getClientConfig = (options, loadEnv) => {
50494
49691
  };
50495
49692
  };
50496
49693
  //#endregion
50497
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/utils/is-atom.mjs
49694
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/utils/is-atom.mjs
50498
49695
  function isAtom(value) {
50499
49696
  return typeof value === "object" && value !== null && "get" in value && typeof value.get === "function" && "lc" in value && typeof value.lc === "number";
50500
49697
  }
50501
49698
  //#endregion
50502
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/proxy.mjs
49699
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/proxy.mjs
50503
49700
  function getMethod(path, knownPathMethods, args) {
50504
49701
  const method = knownPathMethods[path];
50505
49702
  const { fetchOptions, query: _query, ...body } = args || {};
@@ -50579,7 +49776,7 @@ function capitalizeFirstLetter(str) {
50579
49776
  return str.charAt(0).toUpperCase() + str.slice(1);
50580
49777
  }
50581
49778
  //#endregion
50582
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/client/vanilla.mjs
49779
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/vanilla.mjs
50583
49780
  function createAuthClient(options) {
50584
49781
  const { pluginPathMethods, pluginsActions, pluginsAtoms, $fetch, atomListeners, $store } = getClientConfig(options);
50585
49782
  const resolvedHooks = {};
@@ -50592,7 +49789,7 @@ function createAuthClient(options) {
50592
49789
  }, $fetch, pluginPathMethods, pluginsAtoms, atomListeners);
50593
49790
  }
50594
49791
  //#endregion
50595
- //#region ../../node_modules/.bun/@better-auth+passkey@1.5.5+97f5c57d9a1a38cb/node_modules/@better-auth/passkey/dist/client.mjs
49792
+ //#region ../../node_modules/.bun/@better-auth+passkey@1.5.5+31e0a94cb89c09dd/node_modules/@better-auth/passkey/dist/client.mjs
50596
49793
  var getPasskeyActions = ($fetch, { $listPasskeys, $store }) => {
50597
49794
  const signInPasskey = async (opts, options) => {
50598
49795
  const response = await $fetch("/passkey/generate-authenticate-options", {
@@ -50734,7 +49931,7 @@ var passkeyClient = () => {
50734
49931
  };
50735
49932
  };
50736
49933
  //#endregion
50737
- //#region ../../node_modules/.bun/@better-auth+sso@1.5.5+9a386bd0a1ca2f57/node_modules/@better-auth/sso/dist/client.mjs
49934
+ //#region ../../node_modules/.bun/@better-auth+sso@1.5.5+8a01f4d48779b378/node_modules/@better-auth/sso/dist/client.mjs
50738
49935
  var ssoClient = (options) => {
50739
49936
  return {
50740
49937
  id: "sso-client",
@@ -50746,7 +49943,7 @@ var ssoClient = (options) => {
50746
49943
  };
50747
49944
  };
50748
49945
  //#endregion
50749
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/plugins/magic-link/client.mjs
49946
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/plugins/magic-link/client.mjs
50750
49947
  var magicLinkClient = () => {
50751
49948
  return {
50752
49949
  id: "magic-link",
@@ -50754,7 +49951,7 @@ var magicLinkClient = () => {
50754
49951
  };
50755
49952
  };
50756
49953
  //#endregion
50757
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/plugins/two-factor/error-code.mjs
49954
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/plugins/two-factor/error-code.mjs
50758
49955
  var TWO_FACTOR_ERROR_CODES = defineErrorCodes({
50759
49956
  OTP_NOT_ENABLED: "OTP not enabled",
50760
49957
  OTP_HAS_EXPIRED: "OTP has expired",
@@ -50767,7 +49964,7 @@ var TWO_FACTOR_ERROR_CODES = defineErrorCodes({
50767
49964
  INVALID_TWO_FACTOR_COOKIE: "Invalid two factor cookie"
50768
49965
  });
50769
49966
  //#endregion
50770
- //#region ../../node_modules/.bun/better-auth@1.5.5+40b259e98b9c70b8/node_modules/better-auth/dist/plugins/two-factor/client.mjs
49967
+ //#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/plugins/two-factor/client.mjs
50771
49968
  var twoFactorClient = (options) => {
50772
49969
  return {
50773
49970
  id: "two-factor",
@@ -51147,106 +50344,6 @@ var useWriteDictionary = () => {
51147
50344
  });
51148
50345
  };
51149
50346
  //#endregion
51150
- //#region ../@intlayer/design-system/dist/esm/components/ContentEditor/ContentEditorInput.mjs
51151
- /**
51152
- * ContentEditorInput Component
51153
- *
51154
- * An inline editing component for single-line text input with validation,
51155
- * cancel/save functionality, and support for additional action buttons.
51156
- *
51157
- * ## Features
51158
- * - **Inline Input Editing**: Edit single-line content with immediate feedback
51159
- * - **Validation Support**: Optional content validation with visual feedback
51160
- * - **Action Buttons**: Built-in save/cancel with support for additional buttons
51161
- * - **Keyboard Shortcuts**: Enter to save, Escape to cancel
51162
- * - **Accessibility**: Full ARIA support and keyboard navigation
51163
- * - **State Management**: Handles editing states and validation
51164
- *
51165
- * ## Accessibility
51166
- * - Proper ARIA labels and descriptions for all controls
51167
- * - Keyboard navigation (Tab, Enter, Escape)
51168
- * - Screen reader support for validation states
51169
- * - Focus management and visual indicators
51170
- *
51171
- * @param children - Current input value
51172
- * @param onContentChange - Callback when content is saved
51173
- * @param disabled - Whether the editor is disabled
51174
- * @param validate - Optional validation function
51175
- * @param additionalButtons - Extra buttons to display
51176
- * @param props - Additional Input component props
51177
- */
51178
- var ContentEditorInput$1 = ({ children, onContentChange, disabled, validate, additionalButtons, ...props }) => {
51179
- const [newValue, setNewValue] = (0, import_react.useState)(children);
51180
- const [resetIncrementor, setResetIncrementor] = (0, import_react.useState)(0);
51181
- const isEdited = newValue !== children;
51182
- const handleCancel = () => {
51183
- setNewValue(children);
51184
- setResetIncrementor((prev) => prev + 1);
51185
- };
51186
- const handleValid = () => {
51187
- onContentChange(newValue);
51188
- };
51189
- const handleOnContentChange = (e) => {
51190
- setNewValue(e.currentTarget.value);
51191
- };
51192
- const handleKeyDown = (e) => {
51193
- if (e.key === "Enter" && !disabled && isValid) {
51194
- e.preventDefault();
51195
- handleValid();
51196
- } else if (e.key === "Escape") {
51197
- e.preventDefault();
51198
- handleCancel();
51199
- }
51200
- };
51201
- (0, import_react.useEffect)(() => {
51202
- setNewValue(children);
51203
- setResetIncrementor((prev) => prev + 1);
51204
- }, [children]);
51205
- const isValid = validate?.(newValue) ?? true;
51206
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
51207
- className: "flex size-full flex-col items-center justify-between gap-2",
51208
- role: "group",
51209
- "aria-label": "Content editor input",
51210
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input, {
51211
- onChange: handleOnContentChange,
51212
- onKeyDown: handleKeyDown,
51213
- "aria-label": "Editable input value",
51214
- "aria-describedby": isEdited || additionalButtons ? "content-editor-input-actions" : void 0,
51215
- "aria-invalid": !isValid,
51216
- variant: InputVariant.INVISIBLE,
51217
- className: "size-full",
51218
- defaultValue: children,
51219
- disabled,
51220
- ...props
51221
- }, resetIncrementor), (isEdited || additionalButtons) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
51222
- id: "content-editor-input-actions",
51223
- className: "flex w-full items-center justify-end gap-2",
51224
- role: "group",
51225
- "aria-label": "Edit actions",
51226
- children: [isEdited && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
51227
- Icon: Check,
51228
- label: `Save changes${!isValid ? " (invalid content)" : ""}`,
51229
- variant: ButtonVariant.HOVERABLE,
51230
- color: ButtonColor.TEXT,
51231
- size: ButtonSize.ICON_SM,
51232
- className: "cursor-pointer hover:scale-110",
51233
- disabled: disabled || !isValid,
51234
- onClick: handleValid,
51235
- "aria-describedby": !isValid ? "validation-error" : void 0
51236
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
51237
- Icon: X$1,
51238
- label: "Cancel changes",
51239
- variant: ButtonVariant.HOVERABLE,
51240
- size: ButtonSize.ICON_SM,
51241
- color: ButtonColor.TEXT,
51242
- className: "cursor-pointer hover:scale-110",
51243
- onClick: handleCancel,
51244
- disabled
51245
- })] }), additionalButtons]
51246
- })]
51247
- }, String(children));
51248
- };
51249
- //#endregion
51250
50347
  //#region ../@intlayer/design-system/dist/esm/hooks/useUser/index.mjs
51251
50348
  var useUser = () => {
51252
50349
  const { session, revalidateSession, setSession } = useAuth();
@@ -51370,6 +50467,24 @@ var ContentEditorTextArea$1 = ({ children, onContentChange, disabled, validate,
51370
50467
  }, children);
51371
50468
  };
51372
50469
  //#endregion
50470
+ //#region ../@intlayer/design-system/dist/esm/components/DictionaryFieldEditor/ContentEditorView/object.mjs
50471
+ /**
50472
+ * Rename a key in an object by keeping the element order
50473
+ *
50474
+ * @param obj The original object
50475
+ * @param oldKey The key in the object that needs to be renamed
50476
+ * @param newKey The new key name to replace the old key
50477
+ * @returns A new object with the renamed key
50478
+ */
50479
+ var renameKey = (obj, oldKey, newKey) => {
50480
+ const newObj = { ...obj };
50481
+ for (const key of Object.keys(obj)) if (key === oldKey) {
50482
+ newObj[newKey] = obj[oldKey];
50483
+ delete newObj[oldKey];
50484
+ } else newObj[key] = obj[key];
50485
+ return newObj;
50486
+ };
50487
+ //#endregion
51373
50488
  //#region ../@intlayer/design-system/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs
51374
50489
  var extractInitialState = (value) => {
51375
50490
  let comparator;
@@ -54368,7 +53483,7 @@ var useFormField = () => {
54368
53483
  * @returns A rendered information tag with icon and text content
54369
53484
  */
54370
53485
  var InformationTag = ({ className, children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("i", {
54371
- className: cn$2("text-neutral-400 text-xs", className),
53486
+ className: cn$1("text-neutral-400 text-xs", className),
54372
53487
  ...props,
54373
53488
  children: ["ⓘ ", children]
54374
53489
  });
@@ -57287,7 +56402,7 @@ var Form$1 = ({ schema, onSubmit: onSubmitProp, onSubmitSuccess: onSubmitSuccess
57287
56402
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormProvider, {
57288
56403
  ...props,
57289
56404
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("form", {
57290
- className: cn$2("flex flex-col gap-y-6", className),
56405
+ className: cn$1("flex flex-col gap-y-6", className),
57291
56406
  onSubmit: props.handleSubmit(onSubmit),
57292
56407
  autoComplete: autoComplete ? "on" : "off",
57293
56408
  noValidate: true,
@@ -57314,7 +56429,7 @@ var useForm = (schema, props) => {
57314
56429
  var FormLabel = ({ className, ...props }) => {
57315
56430
  const { error, formItemId } = useFormField();
57316
56431
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Label$1, {
57317
- className: cn$2("mb-2", error && "text-error", className),
56432
+ className: cn$1("mb-2", error && "text-error", className),
57318
56433
  htmlFor: formItemId,
57319
56434
  ...props
57320
56435
  });
@@ -57333,7 +56448,7 @@ var FormLabelLayout = ({ children, isRequired, info, htmlFor, className }) => /*
57333
56448
  htmlFor,
57334
56449
  id: `${htmlFor}-label`,
57335
56450
  suppressHydrationWarning: true,
57336
- className: clsx("font-bold", className),
56451
+ className: cn$1("font-bold", className),
57337
56452
  children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RequiredStar, { isRequired })]
57338
56453
  }), info && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InformationTag, { content: info })]
57339
56454
  });
@@ -58542,7 +57657,7 @@ var SaveForm = ({ dictionary, mode, className, onDelete, onSave, ...props }) =>
58542
57657
  })]
58543
57658
  })
58544
57659
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("form", {
58545
- className: cn$2("flex justify-end gap-2 max-md:flex-col", className),
57660
+ className: cn$1("flex justify-end gap-2 max-md:flex-col", className),
58546
57661
  ...props,
58547
57662
  children: [
58548
57663
  mode.includes("remote") && isDistantDictionary && onDelete && isAuthenticated && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Form.Button, {
@@ -59002,7 +58117,7 @@ var DictionaryDetailsForm = ({ dictionary, mode }) => {
59002
58117
  };
59003
58118
  //#endregion
59004
58119
  //#region ../@intlayer/design-system/dist/esm/components/IDE/MonacoCode.mjs
59005
- var Editor = (0, import_react.lazy)(() => __vitePreload(() => import("./dist-D8J9DkzO.js").then((mod) => ({ default: mod.Editor })), __vite__mapDeps([6,1,2])));
58120
+ var Editor = (0, import_react.lazy)(() => __vitePreload(() => import("./dist-D8J9DkzO.js").then((mod) => ({ default: mod.Editor })), __vite__mapDeps([6,1,3])));
59006
58121
  var MonacoCode = ({ children, language, isDarkMode, showLineNumbers, showCopyButton = true, isReadOnly = false, onChange }) => {
59007
58122
  const containerRef = (0, import_react.useRef)(null);
59008
58123
  const ideRef = (0, import_react.useRef)(null);
@@ -59050,11 +58165,11 @@ var MonacoCode = ({ children, language, isDarkMode, showLineNumbers, showCopyBut
59050
58165
  };
59051
58166
  const isShowLineNumbers = showLineNumbers ?? (typeof children === "string" ? children.split("\n").length > 1 : false);
59052
58167
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
59053
- className: cn$2("relative h-full w-full text-sm", showLineNumbers && "ml-0"),
58168
+ className: cn$1("relative h-full w-full text-sm", showLineNumbers && "ml-0"),
59054
58169
  children: [showCopyButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
59055
58170
  className: "sticky top-5 z-10",
59056
58171
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
59057
- className: cn$2("absolute right-2 bottom-0 flex h-7 items-center"),
58172
+ className: cn$1("absolute right-2 bottom-0 flex h-7 items-center"),
59058
58173
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { content: children })
59059
58174
  })
59060
58175
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
@@ -59820,13 +58935,13 @@ var DictionaryFieldEditor = ({ dictionary, onClickDictionaryList, isDarkMode, mo
59820
58935
  //#endregion
59821
58936
  //#region ../@intlayer/design-system/dist/esm/components/MaxWidthSmoother/index.mjs
59822
58937
  var MaxWidthSmoother = ({ children, isHidden, minWidth = 0, align = "left", className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
59823
- className: cn$2("relative grid h-full grid-cols-[0fr] overflow-x-hidden overflow-y-hidden transition-all duration-500 ease-in-out", isHidden ? "" : "grid-cols-[1fr]", className),
58938
+ className: cn$1("relative grid h-full grid-cols-[0fr] overflow-x-hidden overflow-y-hidden transition-all duration-500 ease-in-out", isHidden ? "" : "grid-cols-[1fr]", className),
59824
58939
  "aria-hidden": isHidden,
59825
58940
  inert: isHidden ? true : void 0,
59826
58941
  ...props,
59827
58942
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
59828
58943
  style: { minWidth: `${minWidth}px` },
59829
- className: cn$2(align === "right" && "ml-auto"),
58944
+ className: cn$1(align === "right" && "ml-auto"),
59830
58945
  children
59831
58946
  })
59832
58947
  });
@@ -61201,15 +60316,12 @@ var long_press_message_default = {
61201
60316
  localIds: ["long-press-message::local::client/src/components/Editor/LongPressMessage/index.content.ts"]
61202
60317
  };
61203
60318
  //#endregion
61204
- //#region client/src/utils/cn.ts
61205
- var cn = (...inputs) => twMerge(clsx(inputs));
61206
- //#endregion
61207
60319
  //#region client/src/components/Editor/LongPressMessage/index.tsx
61208
60320
  var LongPressMessage = () => {
61209
60321
  const { message } = useDictionary(long_press_message_default);
61210
60322
  const [hoveredContent] = useCrossFrameState(MessageKey.INTLAYER_HOVERED_CONTENT_CHANGED, null);
61211
60323
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
61212
- className: cn("rounded-2xl bg-neutral/30 px-3 py-1 font-bold text-sm text-text transition-opacity duration-100", hoveredContent?.dictionaryKey ? "opacity-100" : "opacity-0"),
60324
+ className: cn$1("rounded-2xl bg-neutral/30 px-3 py-1 font-bold text-sm text-text transition-opacity duration-100", hoveredContent?.dictionaryKey ? "opacity-100" : "opacity-0"),
61213
60325
  children: hoveredContent?.dictionaryKey ? message({ dictionaryKey: hoveredContent.dictionaryKey }) : ""
61214
60326
  });
61215
60327
  };
@@ -61520,7 +60632,7 @@ var IframeController = ({ iframeRef, applicationPath }) => {
61520
60632
  src: `${editor.applicationURL}${applicationPath}`,
61521
60633
  title: content.intlayerApplication.value,
61522
60634
  sandbox: "allow-scripts allow-same-origin",
61523
- className: cn("size-full", loading && "hidden"),
60635
+ className: cn$1("size-full", loading && "hidden"),
61524
60636
  ref: iframeRef,
61525
60637
  onLoad: () => {
61526
60638
  setLoading(false);