@trebired/frontend 0.4.1 → 0.5.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 (115) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +61 -1
  3. package/dist/config/index.d.ts +6 -50
  4. package/dist/config/index.d.ts.map +1 -1
  5. package/dist/config/index.js +19 -266
  6. package/dist/config/index.js.map +1 -1
  7. package/dist/config/module.d.ts +5 -0
  8. package/dist/config/module.d.ts.map +1 -0
  9. package/dist/config/module.js +124 -0
  10. package/dist/config/module.js.map +1 -0
  11. package/dist/config/normalize.d.ts +10 -0
  12. package/dist/config/normalize.d.ts.map +1 -0
  13. package/dist/config/normalize.js +105 -0
  14. package/dist/config/normalize.js.map +1 -0
  15. package/dist/config/scss.d.ts +4 -0
  16. package/dist/config/scss.d.ts.map +1 -0
  17. package/dist/config/scss.js +84 -0
  18. package/dist/config/scss.js.map +1 -0
  19. package/dist/config/shared.d.ts +9 -0
  20. package/dist/config/shared.d.ts.map +1 -0
  21. package/dist/config/shared.js +27 -0
  22. package/dist/config/shared.js.map +1 -0
  23. package/dist/config/theme.d.ts +6 -0
  24. package/dist/config/theme.d.ts.map +1 -0
  25. package/dist/config/theme.js +133 -0
  26. package/dist/config/theme.js.map +1 -0
  27. package/dist/config/types.d.ts +62 -0
  28. package/dist/config/types.d.ts.map +1 -0
  29. package/dist/config/types.js +2 -0
  30. package/dist/config/types.js.map +1 -0
  31. package/dist/src/config/index.d.ts +6 -50
  32. package/dist/src/config/index.d.ts.map +1 -1
  33. package/dist/src/config/index.js +19 -266
  34. package/dist/src/config/index.js.map +1 -1
  35. package/dist/src/config/module.d.ts +5 -0
  36. package/dist/src/config/module.d.ts.map +1 -0
  37. package/dist/src/config/module.js +124 -0
  38. package/dist/src/config/module.js.map +1 -0
  39. package/dist/src/config/normalize.d.ts +10 -0
  40. package/dist/src/config/normalize.d.ts.map +1 -0
  41. package/dist/src/config/normalize.js +105 -0
  42. package/dist/src/config/normalize.js.map +1 -0
  43. package/dist/src/config/scss.d.ts +4 -0
  44. package/dist/src/config/scss.d.ts.map +1 -0
  45. package/dist/src/config/scss.js +84 -0
  46. package/dist/src/config/scss.js.map +1 -0
  47. package/dist/src/config/shared.d.ts +9 -0
  48. package/dist/src/config/shared.d.ts.map +1 -0
  49. package/dist/src/config/shared.js +27 -0
  50. package/dist/src/config/shared.js.map +1 -0
  51. package/dist/src/config/theme.d.ts +6 -0
  52. package/dist/src/config/theme.d.ts.map +1 -0
  53. package/dist/src/config/theme.js +133 -0
  54. package/dist/src/config/theme.js.map +1 -0
  55. package/dist/src/config/types.d.ts +62 -0
  56. package/dist/src/config/types.d.ts.map +1 -0
  57. package/dist/src/config/types.js +2 -0
  58. package/dist/src/config/types.js.map +1 -0
  59. package/dist/src/theme/apply.d.ts +26 -0
  60. package/dist/src/theme/apply.d.ts.map +1 -0
  61. package/dist/src/theme/apply.js +85 -0
  62. package/dist/src/theme/apply.js.map +1 -0
  63. package/dist/src/theme/boot.d.ts +4 -0
  64. package/dist/src/theme/boot.d.ts.map +1 -0
  65. package/dist/src/theme/boot.js +23 -0
  66. package/dist/src/theme/boot.js.map +1 -0
  67. package/dist/src/theme/components/index.d.ts +13 -5
  68. package/dist/src/theme/components/index.d.ts.map +1 -1
  69. package/dist/src/theme/components/index.js +22 -6
  70. package/dist/src/theme/components/index.js.map +1 -1
  71. package/dist/src/theme/constants.d.ts +12 -0
  72. package/dist/src/theme/constants.d.ts.map +1 -0
  73. package/dist/src/theme/constants.js +12 -0
  74. package/dist/src/theme/constants.js.map +1 -0
  75. package/dist/src/theme/controls.d.ts +15 -0
  76. package/dist/src/theme/controls.d.ts.map +1 -0
  77. package/dist/src/theme/controls.js +128 -0
  78. package/dist/src/theme/controls.js.map +1 -0
  79. package/dist/src/theme/index.d.ts +10 -24
  80. package/dist/src/theme/index.d.ts.map +1 -1
  81. package/dist/src/theme/index.js +15 -117
  82. package/dist/src/theme/index.js.map +1 -1
  83. package/dist/src/theme/modes.d.ts +36 -0
  84. package/dist/src/theme/modes.d.ts.map +1 -0
  85. package/dist/src/theme/modes.js +107 -0
  86. package/dist/src/theme/modes.js.map +1 -0
  87. package/dist/theme/apply.d.ts +26 -0
  88. package/dist/theme/apply.d.ts.map +1 -0
  89. package/dist/theme/apply.js +85 -0
  90. package/dist/theme/apply.js.map +1 -0
  91. package/dist/theme/boot.d.ts +4 -0
  92. package/dist/theme/boot.d.ts.map +1 -0
  93. package/dist/theme/boot.js +23 -0
  94. package/dist/theme/boot.js.map +1 -0
  95. package/dist/theme/components/index.d.ts +13 -5
  96. package/dist/theme/components/index.d.ts.map +1 -1
  97. package/dist/theme/components/index.js +22 -6
  98. package/dist/theme/components/index.js.map +1 -1
  99. package/dist/theme/constants.d.ts +12 -0
  100. package/dist/theme/constants.d.ts.map +1 -0
  101. package/dist/theme/constants.js +12 -0
  102. package/dist/theme/constants.js.map +1 -0
  103. package/dist/theme/controls.d.ts +15 -0
  104. package/dist/theme/controls.d.ts.map +1 -0
  105. package/dist/theme/controls.js +128 -0
  106. package/dist/theme/controls.js.map +1 -0
  107. package/dist/theme/index.d.ts +10 -24
  108. package/dist/theme/index.d.ts.map +1 -1
  109. package/dist/theme/index.js +15 -117
  110. package/dist/theme/index.js.map +1 -1
  111. package/dist/theme/modes.d.ts +36 -0
  112. package/dist/theme/modes.d.ts.map +1 -0
  113. package/dist/theme/modes.js +107 -0
  114. package/dist/theme/modes.js.map +1 -0
  115. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/config/module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { NormalizedTrebiredFrontendConfig, TrebiredFrontendIconPack, TrebiredFrontendSystemKey } from "./types.js";
2
+ declare const TREBIRED_FRONTEND_CONFIG_PATH = ".trebired/frontend/config.ts";
3
+ declare const THEME_MODE_ATTRIBUTE = "data-tbf-theme";
4
+ declare const SUPPORTED_ICON_PACKS: TrebiredFrontendIconPack[];
5
+ declare const SYSTEM_ORDER: TrebiredFrontendSystemKey[];
6
+ declare const SYSTEM_STYLE_IMPORTS: Partial<Record<TrebiredFrontendSystemKey, string>>;
7
+ declare const DEFAULT_TREBIRED_FRONTEND_CONFIG: NormalizedTrebiredFrontendConfig;
8
+ declare function normalizeTrebiredFrontendConfig(config?: unknown): NormalizedTrebiredFrontendConfig;
9
+ export { DEFAULT_TREBIRED_FRONTEND_CONFIG, SUPPORTED_ICON_PACKS, SYSTEM_ORDER, SYSTEM_STYLE_IMPORTS, THEME_MODE_ATTRIBUTE, TREBIRED_FRONTEND_CONFIG_PATH, normalizeTrebiredFrontendConfig, };
10
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/config/normalize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,6BAA6B,iCAAiC,CAAC;AAGrE,QAAA,MAAM,oBAAoB,mBAAmB,CAAC;AAE9C,QAAA,MAAM,oBAAoB,EAAE,wBAAwB,EAAkC,CAAC;AAEvF,QAAA,MAAM,YAAY,EAAE,yBAAyB,EAY5C,CAAC;AAEF,QAAA,MAAM,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAU5E,CAAC;AAEF,QAAA,MAAM,gCAAgC,EAAE,gCAetC,CAAC;AA+CH,iBAAS,+BAA+B,CAAC,MAAM,GAAE,OAAY,GAAG,gCAAgC,CAY/F;AAED,OAAO,EACL,gCAAgC,EAChC,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,6BAA6B,EAC7B,+BAA+B,GAChC,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { assertPlainObject, invalidConfig } from "./shared.js";
2
+ import { normalizeThemeConfig } from "./theme.js";
3
+ const TREBIRED_FRONTEND_CONFIG_PATH = ".trebired/frontend/config.ts";
4
+ /* Must stay in sync with THEME_ATTR exported from the ./theme runtime. */
5
+ const THEME_MODE_ATTRIBUTE = "data-tbf-theme";
6
+ const SUPPORTED_ICON_PACKS = ["remixicon", "simple-icons"];
7
+ const SYSTEM_ORDER = [
8
+ "theme",
9
+ "layer",
10
+ "icons",
11
+ "progress",
12
+ "flash",
13
+ "tooltip",
14
+ "popover",
15
+ "modal",
16
+ "inputs",
17
+ "actions",
18
+ "fullscreen",
19
+ ];
20
+ const SYSTEM_STYLE_IMPORTS = {
21
+ actions: "@trebired/frontend/actions/styles",
22
+ flash: "@trebired/frontend/flash/styles",
23
+ icons: "@trebired/frontend/icons/styles",
24
+ inputs: "@trebired/frontend/inputs/styles",
25
+ layer: "@trebired/frontend/layer/styles",
26
+ modal: "@trebired/frontend/modal/styles",
27
+ popover: "@trebired/frontend/popover/styles",
28
+ progress: "@trebired/frontend/progress/styles",
29
+ tooltip: "@trebired/frontend/tooltip/styles",
30
+ };
31
+ const DEFAULT_TREBIRED_FRONTEND_CONFIG = Object.freeze({
32
+ prefix: "tbf",
33
+ icons: Object.freeze({
34
+ endpoint: "/__icons/svg",
35
+ packs: Object.freeze([...SUPPORTED_ICON_PACKS]),
36
+ }),
37
+ systems: Object.freeze(Object.fromEntries(SYSTEM_ORDER.map((key) => [key, true]))),
38
+ theme: Object.freeze({
39
+ cssVariables: true,
40
+ dark: "",
41
+ defaultMode: "",
42
+ light: "",
43
+ modes: Object.freeze([]),
44
+ tokens: Object.freeze({}),
45
+ }),
46
+ });
47
+ function normalizePrefix(value) {
48
+ const prefix = String(value || DEFAULT_TREBIRED_FRONTEND_CONFIG.prefix).trim();
49
+ if (!/^[a-z][a-z0-9_-]*$/iu.test(prefix)) {
50
+ throw invalidConfig("prefix must start with a letter and contain only letters, numbers, underscores, or hyphens");
51
+ }
52
+ return prefix;
53
+ }
54
+ function normalizeEndpoint(value) {
55
+ const endpoint = String(value || DEFAULT_TREBIRED_FRONTEND_CONFIG.icons.endpoint).trim();
56
+ if (!endpoint || /[\s"'<>]/u.test(endpoint)) {
57
+ throw invalidConfig("icons.endpoint must be a URL path without whitespace");
58
+ }
59
+ return endpoint;
60
+ }
61
+ function normalizeIconPacks(value) {
62
+ const raw = value === undefined ? DEFAULT_TREBIRED_FRONTEND_CONFIG.icons.packs : value;
63
+ if (!Array.isArray(raw))
64
+ throw invalidConfig("icons.packs must be an array");
65
+ const packs = [];
66
+ for (const item of raw) {
67
+ if (!SUPPORTED_ICON_PACKS.includes(item)) {
68
+ throw invalidConfig(`unsupported icon pack ${String(item)}`);
69
+ }
70
+ if (!packs.includes(item))
71
+ packs.push(item);
72
+ }
73
+ return packs;
74
+ }
75
+ function normalizeSystems(value) {
76
+ if (value === undefined)
77
+ return { ...DEFAULT_TREBIRED_FRONTEND_CONFIG.systems };
78
+ const source = assertPlainObject(value, "systems");
79
+ const systems = { ...DEFAULT_TREBIRED_FRONTEND_CONFIG.systems };
80
+ for (const [key, enabled] of Object.entries(source)) {
81
+ if (!SYSTEM_ORDER.includes(key)) {
82
+ throw invalidConfig(`unsupported system ${key}`);
83
+ }
84
+ if (typeof enabled !== "boolean") {
85
+ throw invalidConfig(`systems.${key} must be boolean`);
86
+ }
87
+ systems[key] = enabled;
88
+ }
89
+ return systems;
90
+ }
91
+ function normalizeTrebiredFrontendConfig(config = {}) {
92
+ const source = assertPlainObject(config, "config");
93
+ const icons = source.icons === undefined ? {} : assertPlainObject(source.icons, "icons");
94
+ return {
95
+ prefix: normalizePrefix(source.prefix),
96
+ icons: {
97
+ endpoint: normalizeEndpoint(icons.endpoint),
98
+ packs: normalizeIconPacks(icons.packs),
99
+ },
100
+ systems: normalizeSystems(source.systems),
101
+ theme: normalizeThemeConfig(source.theme),
102
+ };
103
+ }
104
+ export { DEFAULT_TREBIRED_FRONTEND_CONFIG, SUPPORTED_ICON_PACKS, SYSTEM_ORDER, SYSTEM_STYLE_IMPORTS, THEME_MODE_ATTRIBUTE, TREBIRED_FRONTEND_CONFIG_PATH, normalizeTrebiredFrontendConfig, };
105
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/config/normalize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { NormalizedTrebiredFrontendConfig, TrebiredFrontendConfig } from "./types.js";
2
+ declare function generateTrebiredFrontendScss(configInput: TrebiredFrontendConfig | NormalizedTrebiredFrontendConfig): string;
3
+ export { generateTrebiredFrontendScss };
4
+ //# sourceMappingURL=scss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scss.d.ts","sourceRoot":"","sources":["../../../src/config/scss.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,gCAAgC,EAEhC,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AA+EpB,iBAAS,4BAA4B,CACnC,WAAW,EAAE,sBAAsB,GAAG,gCAAgC,GACrE,MAAM,CAWR;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
@@ -0,0 +1,84 @@
1
+ import { cssComment, cssString } from "./shared.js";
2
+ import { SYSTEM_ORDER, SYSTEM_STYLE_IMPORTS, THEME_MODE_ATTRIBUTE, normalizeTrebiredFrontendConfig, } from "./normalize.js";
3
+ import { flattenThemeTokens } from "./theme.js";
4
+ function tokenDeclarations(prefix, tokens) {
5
+ return flattenThemeTokens(tokens).map(([key, value]) => ` --${prefix}-${key}: ${String(value)};`);
6
+ }
7
+ function rootDeclarations(config) {
8
+ const { modes, defaultMode } = config.theme;
9
+ return [
10
+ ` --${config.prefix}-config-prefix: ${cssString(config.prefix)};`,
11
+ ` --${config.prefix}-icon-endpoint: ${cssString(config.icons.endpoint)};`,
12
+ ...(modes.length ? [` --${config.prefix}-theme-modes: ${cssString(modes.map((mode) => mode.key).join(" "))};`] : []),
13
+ ...(defaultMode ? [` --${config.prefix}-theme-default: ${cssString(defaultMode)};`] : []),
14
+ ...tokenDeclarations(config.prefix, config.theme.tokens),
15
+ ];
16
+ }
17
+ function modeDeclarations(config, mode) {
18
+ return [
19
+ ` color-scheme: ${mode.scheme};`,
20
+ ...tokenDeclarations(config.prefix, mode.tokens),
21
+ ];
22
+ }
23
+ function renderBlock(selector, declarations, indent = "") {
24
+ if (!declarations.length)
25
+ return [];
26
+ return [
27
+ `${indent}${selector} {`,
28
+ ...declarations.map((line) => `${indent}${line}`),
29
+ `${indent}}`,
30
+ ];
31
+ }
32
+ function renderModeBlocks(config) {
33
+ return config.theme.modes.flatMap((mode) => [
34
+ "",
35
+ `/* theme mode: ${cssComment(mode.key)} */`,
36
+ ...renderBlock(`[${THEME_MODE_ATTRIBUTE}="${mode.key}"]`, modeDeclarations(config, mode)),
37
+ ]);
38
+ }
39
+ function renderSystemPreferenceBlock(config, scheme) {
40
+ const key = scheme === "dark" ? config.theme.dark : config.theme.light;
41
+ const mode = config.theme.modes.find((item) => item.key === key);
42
+ if (!mode)
43
+ return [];
44
+ return [
45
+ "",
46
+ `@media (prefers-color-scheme: ${scheme}) {`,
47
+ ...renderBlock(`:root:not([${THEME_MODE_ATTRIBUTE}])`, modeDeclarations(config, mode), " "),
48
+ "}",
49
+ ];
50
+ }
51
+ function renderThemeCss(config) {
52
+ if (!config.theme.cssVariables)
53
+ return [];
54
+ return [
55
+ "",
56
+ ...renderBlock(":root", rootDeclarations(config)),
57
+ ...renderModeBlocks(config),
58
+ ...renderSystemPreferenceBlock(config, "dark"),
59
+ ...renderSystemPreferenceBlock(config, "light"),
60
+ ];
61
+ }
62
+ function renderSystemImports(config) {
63
+ const lines = [];
64
+ for (const system of SYSTEM_ORDER) {
65
+ const importPath = SYSTEM_STYLE_IMPORTS[system];
66
+ if (importPath && config.systems[system])
67
+ lines.push(`@use ${cssString(importPath)} as *;`);
68
+ }
69
+ return lines;
70
+ }
71
+ function generateTrebiredFrontendScss(configInput) {
72
+ const config = normalizeTrebiredFrontendConfig(configInput);
73
+ const lines = [
74
+ "/* Generated by @trebired/frontend. Do not edit directly. */",
75
+ `/* prefix: ${cssComment(config.prefix)} */`,
76
+ '@use "@trebired/frontend/styles/tokens" as *;',
77
+ '@use "@trebired/frontend/styles/utils" as *;',
78
+ ...renderSystemImports(config),
79
+ ...renderThemeCss(config),
80
+ ];
81
+ return `${lines.join("\n")}\n`;
82
+ }
83
+ export { generateTrebiredFrontendScss };
84
+ //# sourceMappingURL=scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scss.js","sourceRoot":"","sources":["../../../src/config/scss.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ declare const CONFIG_ERROR_PREFIX = "trebired-frontend-invalid-config";
2
+ declare function invalidConfig(message: string): Error;
3
+ declare function isPlainObject(value: unknown): value is Record<string, unknown>;
4
+ declare function assertPlainObject(value: unknown, pathLabel: string): Record<string, unknown>;
5
+ declare function normalizeBoolean(value: unknown, defaultValue: boolean, pathLabel: string): boolean;
6
+ declare function cssString(value: unknown): string;
7
+ declare function cssComment(value: unknown): string;
8
+ export { CONFIG_ERROR_PREFIX, assertPlainObject, cssComment, cssString, invalidConfig, isPlainObject, normalizeBoolean, };
9
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/config/shared.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,mBAAmB,qCAAqC,CAAC;AAE/D,iBAAS,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAE7C;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEvE;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGrF;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAI3F;AAED,iBAAS,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEzC;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE1C;AAED,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,27 @@
1
+ const CONFIG_ERROR_PREFIX = "trebired-frontend-invalid-config";
2
+ function invalidConfig(message) {
3
+ return new Error(`${CONFIG_ERROR_PREFIX} :: ${message}`);
4
+ }
5
+ function isPlainObject(value) {
6
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
7
+ }
8
+ function assertPlainObject(value, pathLabel) {
9
+ if (!isPlainObject(value))
10
+ throw invalidConfig(`${pathLabel} must be an object`);
11
+ return value;
12
+ }
13
+ function normalizeBoolean(value, defaultValue, pathLabel) {
14
+ if (value === undefined)
15
+ return defaultValue;
16
+ if (typeof value !== "boolean")
17
+ throw invalidConfig(`${pathLabel} must be boolean`);
18
+ return value;
19
+ }
20
+ function cssString(value) {
21
+ return JSON.stringify(String(value ?? ""));
22
+ }
23
+ function cssComment(value) {
24
+ return String(value || "").replace(/\*\//gu, "* /");
25
+ }
26
+ export { CONFIG_ERROR_PREFIX, assertPlainObject, cssComment, cssString, invalidConfig, isPlainObject, normalizeBoolean, };
27
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/config/shared.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,kCAAkC,CAAC;AAE/D,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,IAAI,KAAK,CAAC,GAAG,mBAAmB,OAAO,OAAO,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,SAAiB;IAC1D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,MAAM,aAAa,CAAC,GAAG,SAAS,oBAAoB,CAAC,CAAC;IACjF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,YAAqB,EAAE,SAAiB;IAChF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,MAAM,aAAa,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { NormalizedTrebiredFrontendThemeConfig, TrebiredFrontendThemeTokens } from "./types.js";
2
+ declare function normalizeThemeTokens(value: unknown, pathLabel?: string): TrebiredFrontendThemeTokens;
3
+ declare function normalizeThemeConfig(value: unknown): NormalizedTrebiredFrontendThemeConfig;
4
+ declare function flattenThemeTokens(tokens: TrebiredFrontendThemeTokens, prefix?: string[]): Array<[string, string | number]>;
5
+ export { flattenThemeTokens, normalizeThemeConfig, normalizeThemeTokens };
6
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/config/theme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qCAAqC,EAGrC,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAOpB,iBAAS,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,SAAiB,GAAG,2BAA2B,CAkBrG;AAgGD,iBAAS,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,qCAAqC,CAWnF;AAED,iBAAS,kBAAkB,CACzB,MAAM,EAAE,2BAA2B,EACnC,MAAM,GAAE,MAAM,EAAO,GACpB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAYlC;AAED,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { assertPlainObject, invalidConfig, isPlainObject, normalizeBoolean } from "./shared.js";
2
+ const THEME_MODE_KEY_RE = /^[a-z0-9][a-z0-9_-]*$/iu;
3
+ const THEME_TOKEN_KEY_RE = /^[a-z0-9_-]+$/iu;
4
+ const THEME_MODE_FIELDS = ["label", "scheme", "tokens"];
5
+ const DARK_KEY_RE = /(^|[-_])dark([-_]|$)/iu;
6
+ function normalizeThemeTokens(value, pathLabel = "theme.tokens") {
7
+ if (value === undefined)
8
+ return {};
9
+ const source = assertPlainObject(value, pathLabel);
10
+ const out = {};
11
+ for (const [key, item] of Object.entries(source).sort(([a], [b]) => a.localeCompare(b))) {
12
+ if (!THEME_TOKEN_KEY_RE.test(key)) {
13
+ throw invalidConfig(`${pathLabel}.${key} has an invalid token key`);
14
+ }
15
+ if (isPlainObject(item)) {
16
+ out[key] = normalizeThemeTokens(item, `${pathLabel}.${key}`);
17
+ continue;
18
+ }
19
+ if (typeof item !== "string" && typeof item !== "number") {
20
+ throw invalidConfig(`${pathLabel}.${key} must be a string, number, or token object`);
21
+ }
22
+ out[key] = item;
23
+ }
24
+ return out;
25
+ }
26
+ function normalizeThemeModeKey(key) {
27
+ const normalized = String(key || "").trim().toLowerCase();
28
+ if (!THEME_MODE_KEY_RE.test(normalized)) {
29
+ throw invalidConfig(`theme.modes.${key} must start with a letter or number and contain only letters, numbers, underscores, or hyphens`);
30
+ }
31
+ return normalized;
32
+ }
33
+ function normalizeThemeModeScheme(value, key) {
34
+ if (value === undefined)
35
+ return DARK_KEY_RE.test(key) ? "dark" : "light";
36
+ if (value !== "dark" && value !== "light") {
37
+ throw invalidConfig(`theme.modes.${key}.scheme must be "dark" or "light"`);
38
+ }
39
+ return value;
40
+ }
41
+ function normalizeThemeModeLabel(value, key) {
42
+ if (value === undefined) {
43
+ const words = key.replace(/[-_]+/gu, " ");
44
+ return words.charAt(0).toUpperCase() + words.slice(1);
45
+ }
46
+ if (typeof value !== "string" || !value.trim()) {
47
+ throw invalidConfig(`theme.modes.${key}.label must be a non-empty string`);
48
+ }
49
+ return value.trim();
50
+ }
51
+ function normalizeThemeMode(rawKey, source) {
52
+ const key = normalizeThemeModeKey(rawKey);
53
+ for (const field of Object.keys(source)) {
54
+ if (!THEME_MODE_FIELDS.includes(field)) {
55
+ throw invalidConfig(`theme.modes.${key}.${field} is not supported; declare custom properties under theme.modes.${key}.tokens`);
56
+ }
57
+ }
58
+ return {
59
+ key,
60
+ label: normalizeThemeModeLabel(source.label, key),
61
+ scheme: normalizeThemeModeScheme(source.scheme, key),
62
+ tokens: normalizeThemeTokens(source.tokens, `theme.modes.${key}.tokens`),
63
+ };
64
+ }
65
+ function themeModeEntries(value) {
66
+ if (!Array.isArray(value)) {
67
+ return Object.entries(assertPlainObject(value, "theme.modes")).map(([key, item]) => {
68
+ return [key, assertPlainObject(item, `theme.modes.${key}`)];
69
+ });
70
+ }
71
+ return value.map((item, index) => {
72
+ const { key, ...rest } = assertPlainObject(item, `theme.modes[${index}]`);
73
+ if (typeof key !== "string" || !key.trim()) {
74
+ throw invalidConfig(`theme.modes[${index}].key must be a non-empty string`);
75
+ }
76
+ return [key, rest];
77
+ });
78
+ }
79
+ function normalizeThemeModes(value) {
80
+ if (value === undefined)
81
+ return [];
82
+ const modes = [];
83
+ for (const [key, source] of themeModeEntries(value)) {
84
+ const mode = normalizeThemeMode(key, source);
85
+ if (modes.some((existing) => existing.key === mode.key)) {
86
+ throw invalidConfig(`theme.modes.${mode.key} is declared more than once`);
87
+ }
88
+ modes.push(mode);
89
+ }
90
+ return modes;
91
+ }
92
+ function resolveDeclaredMode(modes, value, pathLabel) {
93
+ if (value === undefined || value === "")
94
+ return "";
95
+ const key = String(value).trim().toLowerCase();
96
+ if (!modes.some((mode) => mode.key === key)) {
97
+ throw invalidConfig(`${pathLabel} must name a mode declared in theme.modes`);
98
+ }
99
+ return key;
100
+ }
101
+ function resolveSchemeMode(modes, value, scheme, pathLabel) {
102
+ const explicit = resolveDeclaredMode(modes, value, pathLabel);
103
+ if (explicit)
104
+ return explicit;
105
+ return modes.find((mode) => mode.scheme === scheme)?.key || "";
106
+ }
107
+ function normalizeThemeConfig(value) {
108
+ const source = value === undefined ? {} : assertPlainObject(value, "theme");
109
+ const modes = normalizeThemeModes(source.modes);
110
+ return {
111
+ cssVariables: normalizeBoolean(source.cssVariables, true, "theme.cssVariables"),
112
+ dark: resolveSchemeMode(modes, source.dark, "dark", "theme.dark"),
113
+ defaultMode: resolveDeclaredMode(modes, source.defaultMode, "theme.defaultMode"),
114
+ light: resolveSchemeMode(modes, source.light, "light", "theme.light"),
115
+ modes,
116
+ tokens: normalizeThemeTokens(source.tokens),
117
+ };
118
+ }
119
+ function flattenThemeTokens(tokens, prefix = []) {
120
+ const out = [];
121
+ for (const [key, value] of Object.entries(tokens).sort(([a], [b]) => a.localeCompare(b))) {
122
+ if (isPlainObject(value)) {
123
+ out.push(...flattenThemeTokens(value, [...prefix, key]));
124
+ continue;
125
+ }
126
+ if (typeof value === "string" || typeof value === "number") {
127
+ out.push([[...prefix, key].join("-"), value]);
128
+ }
129
+ }
130
+ return out;
131
+ }
132
+ export { flattenThemeTokens, normalizeThemeConfig, normalizeThemeTokens };
133
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/config/theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ type TrebiredFrontendIconPack = "remixicon" | "simple-icons";
2
+ type TrebiredFrontendSystemKey = "actions" | "flash" | "fullscreen" | "icons" | "inputs" | "layer" | "modal" | "popover" | "progress" | "theme" | "tooltip";
3
+ type TrebiredFrontendThemeTokens = Record<string, unknown>;
4
+ type TrebiredFrontendThemeModeScheme = "dark" | "light";
5
+ type TrebiredFrontendThemeMode = {
6
+ label?: string;
7
+ scheme?: TrebiredFrontendThemeModeScheme;
8
+ tokens?: TrebiredFrontendThemeTokens;
9
+ };
10
+ type TrebiredFrontendThemeConfig = {
11
+ cssVariables?: boolean;
12
+ dark?: string;
13
+ defaultMode?: string;
14
+ light?: string;
15
+ modes?: Record<string, TrebiredFrontendThemeMode>;
16
+ tokens?: TrebiredFrontendThemeTokens;
17
+ };
18
+ type TrebiredFrontendConfig = {
19
+ prefix?: string;
20
+ icons?: {
21
+ endpoint?: string;
22
+ packs?: readonly TrebiredFrontendIconPack[];
23
+ };
24
+ systems?: Partial<Record<TrebiredFrontendSystemKey, boolean>>;
25
+ theme?: TrebiredFrontendThemeConfig;
26
+ };
27
+ type NormalizedTrebiredFrontendThemeMode = {
28
+ key: string;
29
+ label: string;
30
+ scheme: TrebiredFrontendThemeModeScheme;
31
+ tokens: TrebiredFrontendThemeTokens;
32
+ };
33
+ type NormalizedTrebiredFrontendThemeConfig = {
34
+ cssVariables: boolean;
35
+ dark: string;
36
+ defaultMode: string;
37
+ light: string;
38
+ modes: NormalizedTrebiredFrontendThemeMode[];
39
+ tokens: TrebiredFrontendThemeTokens;
40
+ };
41
+ type NormalizedTrebiredFrontendConfig = {
42
+ prefix: string;
43
+ icons: {
44
+ endpoint: string;
45
+ packs: TrebiredFrontendIconPack[];
46
+ };
47
+ systems: Record<TrebiredFrontendSystemKey, boolean>;
48
+ theme: NormalizedTrebiredFrontendThemeConfig;
49
+ };
50
+ type LoadedTrebiredFrontendConfig = {
51
+ config: NormalizedTrebiredFrontendConfig;
52
+ configPath: string | null;
53
+ dependencies: string[];
54
+ generatedScss: string;
55
+ };
56
+ type LoadTrebiredFrontendConfigOptions = {
57
+ configPath?: string;
58
+ defaultIfMissing?: boolean;
59
+ searchFrom?: string;
60
+ };
61
+ export type { LoadTrebiredFrontendConfigOptions, LoadedTrebiredFrontendConfig, NormalizedTrebiredFrontendConfig, NormalizedTrebiredFrontendThemeConfig, NormalizedTrebiredFrontendThemeMode, TrebiredFrontendConfig, TrebiredFrontendIconPack, TrebiredFrontendSystemKey, TrebiredFrontendThemeConfig, TrebiredFrontendThemeMode, TrebiredFrontendThemeModeScheme, TrebiredFrontendThemeTokens, };
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,KAAK,wBAAwB,GAAG,WAAW,GAAG,cAAc,CAAC;AAE7D,KAAK,yBAAyB,GAC1B,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,OAAO,GACP,OAAO,GACP,SAAS,GACT,UAAU,GACV,OAAO,GACP,SAAS,CAAC;AAEd,KAAK,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3D,KAAK,+BAA+B,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,KAAK,yBAAyB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,+BAA+B,CAAC;IACzC,MAAM,CAAC,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;KAC7C,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,KAAK,CAAC,EAAE,2BAA2B,CAAC;CACrC,CAAC;AAEF,KAAK,mCAAmC,GAAG;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,+BAA+B,CAAC;IACxC,MAAM,EAAE,2BAA2B,CAAC;CACrC,CAAC;AAEF,KAAK,qCAAqC,GAAG;IAC3C,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,mCAAmC,EAAE,CAAC;IAC7C,MAAM,EAAE,2BAA2B,CAAC;CACrC,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,wBAAwB,EAAE,CAAC;KACnC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACpD,KAAK,EAAE,qCAAqC,CAAC;CAC9C,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,MAAM,EAAE,gCAAgC,CAAC;IACzC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,iCAAiC,GAAG;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,YAAY,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,mCAAmC,EACnC,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,GAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":""}
@@ -1,54 +1,10 @@
1
- type TrebiredFrontendIconPack = "remixicon" | "simple-icons";
2
- type TrebiredFrontendSystemKey = "actions" | "flash" | "fullscreen" | "icons" | "inputs" | "layer" | "modal" | "popover" | "progress" | "theme" | "tooltip";
3
- type TrebiredFrontendThemeTokens = Record<string, unknown>;
4
- type TrebiredFrontendConfig = {
5
- prefix?: string;
6
- icons?: {
7
- endpoint?: string;
8
- packs?: readonly TrebiredFrontendIconPack[];
9
- };
10
- systems?: Partial<Record<TrebiredFrontendSystemKey, boolean>>;
11
- theme?: {
12
- cssVariables?: boolean;
13
- tokens?: TrebiredFrontendThemeTokens;
14
- };
15
- };
16
- type NormalizedTrebiredFrontendConfig = {
17
- prefix: string;
18
- icons: {
19
- endpoint: string;
20
- packs: TrebiredFrontendIconPack[];
21
- };
22
- systems: Record<TrebiredFrontendSystemKey, boolean>;
23
- theme: {
24
- cssVariables: boolean;
25
- tokens: TrebiredFrontendThemeTokens;
26
- };
27
- };
28
- type LoadedTrebiredFrontendConfig = {
29
- config: NormalizedTrebiredFrontendConfig;
30
- configPath: string | null;
31
- generatedScss: string;
32
- generatedScssPath: string;
33
- };
34
- type LoadTrebiredFrontendConfigOptions = {
35
- configPath?: string;
36
- defaultIfMissing?: boolean;
37
- searchFrom?: string;
38
- };
39
- declare const TREBIRED_FRONTEND_CONFIG_PATH = ".trebired/frontend/config.ts";
40
- declare const TREBIRED_FRONTEND_GENERATED_DIR = ".trebired/frontend/generated";
41
- declare const TREBIRED_FRONTEND_GENERATED_SCSS_PATH = ".trebired/frontend/generated/styles.scss";
42
- declare const SUPPORTED_ICON_PACKS: TrebiredFrontendIconPack[];
43
- declare const SYSTEM_ORDER: TrebiredFrontendSystemKey[];
44
- declare const DEFAULT_TREBIRED_FRONTEND_CONFIG: NormalizedTrebiredFrontendConfig;
1
+ import type { LoadTrebiredFrontendConfigOptions, LoadedTrebiredFrontendConfig, TrebiredFrontendConfig } from "./types.js";
45
2
  declare function defineTrebiredFrontendConfig<T extends TrebiredFrontendConfig>(config: T): T;
46
- declare function normalizeTrebiredFrontendConfig(config?: unknown): NormalizedTrebiredFrontendConfig;
47
- declare function generateTrebiredFrontendScss(configInput: TrebiredFrontendConfig | NormalizedTrebiredFrontendConfig): string;
48
3
  declare function findTrebiredFrontendConfig(startDir?: string, boundaryDir?: string): Promise<string | null>;
49
4
  declare function loadTrebiredFrontendConfig(projectRoot?: string, options?: LoadTrebiredFrontendConfigOptions): Promise<LoadedTrebiredFrontendConfig>;
50
- declare function resolveTrebiredFrontendGeneratedScssPath(projectRoot?: string): string;
51
- declare function writeGeneratedTrebiredFrontendScss(projectRoot: string, config: TrebiredFrontendConfig | NormalizedTrebiredFrontendConfig): Promise<string>;
52
- export { DEFAULT_TREBIRED_FRONTEND_CONFIG, SUPPORTED_ICON_PACKS, SYSTEM_ORDER, TREBIRED_FRONTEND_CONFIG_PATH, TREBIRED_FRONTEND_GENERATED_DIR, TREBIRED_FRONTEND_GENERATED_SCSS_PATH, defineTrebiredFrontendConfig, findTrebiredFrontendConfig, generateTrebiredFrontendScss, loadTrebiredFrontendConfig, normalizeTrebiredFrontendConfig, resolveTrebiredFrontendGeneratedScssPath, writeGeneratedTrebiredFrontendScss, };
53
- export type { LoadedTrebiredFrontendConfig, LoadTrebiredFrontendConfigOptions, NormalizedTrebiredFrontendConfig, TrebiredFrontendConfig, TrebiredFrontendIconPack, TrebiredFrontendSystemKey, TrebiredFrontendThemeTokens, };
5
+ export { DEFAULT_TREBIRED_FRONTEND_CONFIG, SUPPORTED_ICON_PACKS, SYSTEM_ORDER, THEME_MODE_ATTRIBUTE, TREBIRED_FRONTEND_CONFIG_PATH, normalizeTrebiredFrontendConfig, } from "./normalize.js";
6
+ export { generateTrebiredFrontendScss } from "./scss.js";
7
+ export { collectConfigDependencies } from "./module.js";
8
+ export { defineTrebiredFrontendConfig, findTrebiredFrontendConfig, loadTrebiredFrontendConfig };
9
+ export type { LoadTrebiredFrontendConfigOptions, LoadedTrebiredFrontendConfig, NormalizedTrebiredFrontendConfig, NormalizedTrebiredFrontendThemeConfig, NormalizedTrebiredFrontendThemeMode, TrebiredFrontendConfig, TrebiredFrontendIconPack, TrebiredFrontendSystemKey, TrebiredFrontendThemeConfig, TrebiredFrontendThemeMode, TrebiredFrontendThemeModeScheme, TrebiredFrontendThemeTokens, } from "./types.js";
54
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,iBAAS,4BAA4B,CAAC,CAAC,SAAS,sBAAsB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAEpF;AAED,iBAAe,0BAA0B,CACvC,QAAQ,GAAE,MAAsB,EAChC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAYD,iBAAe,0BAA0B,CACvC,WAAW,GAAE,MAAsB,EACnC,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,4BAA4B,CAAC,CAyBvC;AAED,OAAO,EACL,gCAAgC,EAChC,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,CAAC;AAChG,YAAY,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,gCAAgC,EAChC,qCAAqC,EACrC,mCAAmC,EACnC,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}