@shell-shock/plugin-theme 0.0.21 → 0.1.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 (40) hide show
  1. package/README.md +1 -1
  2. package/dist/index.cjs +22 -3
  3. package/dist/index.d.cts +2 -2
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.mts +2 -2
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +22 -3
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/style-dictionary/border-styles.cjs +259 -0
  10. package/dist/style-dictionary/border-styles.mjs +259 -0
  11. package/dist/style-dictionary/border-styles.mjs.map +1 -0
  12. package/dist/style-dictionary/{preprocessor.cjs → colors.cjs} +323 -550
  13. package/dist/style-dictionary/{preprocessor.mjs → colors.mjs} +325 -552
  14. package/dist/style-dictionary/colors.mjs.map +1 -0
  15. package/dist/style-dictionary/helpers.cjs +14 -0
  16. package/dist/style-dictionary/helpers.mjs +14 -1
  17. package/dist/style-dictionary/helpers.mjs.map +1 -1
  18. package/dist/style-dictionary/icons.cjs +133 -0
  19. package/dist/style-dictionary/icons.mjs +133 -0
  20. package/dist/style-dictionary/icons.mjs.map +1 -0
  21. package/dist/style-dictionary/labels.cjs +151 -0
  22. package/dist/style-dictionary/labels.mjs +151 -0
  23. package/dist/style-dictionary/labels.mjs.map +1 -0
  24. package/dist/style-dictionary/padding.cjs +274 -0
  25. package/dist/style-dictionary/padding.mjs +274 -0
  26. package/dist/style-dictionary/padding.mjs.map +1 -0
  27. package/dist/style-dictionary/settings.cjs +26 -0
  28. package/dist/style-dictionary/settings.mjs +26 -0
  29. package/dist/style-dictionary/settings.mjs.map +1 -0
  30. package/dist/themes/storm.cjs +50 -5
  31. package/dist/themes/storm.mjs +50 -5
  32. package/dist/themes/storm.mjs.map +1 -1
  33. package/dist/types/index.d.cts +2 -2
  34. package/dist/types/index.d.mts +2 -2
  35. package/dist/types/theme.d.cts +41 -1
  36. package/dist/types/theme.d.cts.map +1 -1
  37. package/dist/types/theme.d.mts +41 -1
  38. package/dist/types/theme.d.mts.map +1 -1
  39. package/package.json +7 -7
  40. package/dist/style-dictionary/preprocessor.mjs.map +0 -1
@@ -0,0 +1,133 @@
1
+ import { mergeThemes } from "./helpers.mjs";
2
+ import { isSetObject } from "@stryke/type-checks/is-set-object";
3
+ import { isSetString } from "@stryke/type-checks/is-set-string";
4
+
5
+ //#region src/style-dictionary/icons.ts
6
+ /**
7
+ * Shell Shock - Theme Icons Preprocessor
8
+ *
9
+ * @remarks
10
+ * This preprocessor applies custom value transformations to design tokens based on the provided configuration options.
11
+ */
12
+ const icons = (context) => ({
13
+ name: "shell-shock/icons",
14
+ preprocessor: (dictionary, _options) => {
15
+ const resolvedConfig = {};
16
+ resolvedConfig.name = dictionary.$theme ?? context.config.name;
17
+ resolvedConfig.icons ??= {
18
+ message: { header: {} },
19
+ banner: { header: {} },
20
+ prompt: {}
21
+ };
22
+ const icons$1 = dictionary.icons;
23
+ if (isSetString(icons$1)) resolvedConfig.icons = {
24
+ message: { header: {
25
+ help: icons$1,
26
+ success: icons$1,
27
+ info: icons$1,
28
+ debug: icons$1,
29
+ warning: icons$1,
30
+ danger: icons$1,
31
+ error: icons$1
32
+ } },
33
+ banner: { header: {
34
+ primary: icons$1,
35
+ secondary: icons$1,
36
+ tertiary: icons$1
37
+ } },
38
+ prompt: {
39
+ active: icons$1,
40
+ cancelled: icons$1,
41
+ warning: icons$1,
42
+ error: icons$1,
43
+ submitted: icons$1,
44
+ disabled: icons$1
45
+ }
46
+ };
47
+ else if (isSetObject(icons$1)) {
48
+ resolvedConfig.icons.message = {};
49
+ const message = icons$1.message;
50
+ if (isSetString(message)) resolvedConfig.icons.message = { header: {
51
+ help: message,
52
+ success: message,
53
+ info: message,
54
+ debug: message,
55
+ warning: message,
56
+ danger: message,
57
+ error: message
58
+ } };
59
+ else if (isSetObject(message)) {
60
+ resolvedConfig.icons.message.header ??= {};
61
+ const header = message.header;
62
+ if (isSetString(header)) resolvedConfig.icons.message = { header: {
63
+ help: header,
64
+ success: header,
65
+ info: header,
66
+ debug: header,
67
+ warning: header,
68
+ danger: header,
69
+ error: header
70
+ } };
71
+ else if (isSetObject(header)) {
72
+ if (isSetString(header.help)) resolvedConfig.icons.message.header.help = header.help;
73
+ if (isSetString(header.success)) resolvedConfig.icons.message.header.success = header.success;
74
+ if (isSetString(header.info)) resolvedConfig.icons.message.header.info = header.info;
75
+ if (isSetString(header.debug)) resolvedConfig.icons.message.header.debug = header.debug;
76
+ if (isSetString(header.warning)) resolvedConfig.icons.message.header.warning = header.warning;
77
+ if (isSetString(header.danger)) resolvedConfig.icons.message.header.danger = header.danger;
78
+ if (isSetString(header.error)) resolvedConfig.icons.message.header.error = header.error;
79
+ }
80
+ }
81
+ resolvedConfig.icons.banner ??= { header: {} };
82
+ const banner = icons$1.banner;
83
+ if (isSetString(banner)) resolvedConfig.icons.banner = { header: {
84
+ primary: banner,
85
+ secondary: banner,
86
+ tertiary: banner
87
+ } };
88
+ else if (isSetObject(banner)) {
89
+ resolvedConfig.icons.banner.header ??= {};
90
+ const header = banner.header;
91
+ if (isSetString(banner.header)) resolvedConfig.icons.banner = { header: {
92
+ primary: banner.header,
93
+ secondary: banner.header,
94
+ tertiary: banner.header
95
+ } };
96
+ else if (isSetObject(banner.header)) {
97
+ if (isSetString(header.primary)) resolvedConfig.icons.banner.header.primary = header.primary;
98
+ if (isSetString(header.secondary)) resolvedConfig.icons.banner.header.secondary = header.secondary;
99
+ if (isSetString(header.tertiary)) resolvedConfig.icons.banner.header.tertiary = header.tertiary;
100
+ }
101
+ }
102
+ resolvedConfig.icons.prompt ??= {};
103
+ const prompt = icons$1.prompt;
104
+ if (isSetString(prompt)) resolvedConfig.icons.prompt = {
105
+ active: prompt,
106
+ cancelled: prompt,
107
+ error: prompt,
108
+ warning: prompt,
109
+ submitted: prompt,
110
+ disabled: prompt
111
+ };
112
+ else if (isSetObject(prompt)) {
113
+ if (isSetString(prompt.active)) resolvedConfig.icons.prompt.active = prompt.active;
114
+ if (isSetString(prompt.cancelled)) resolvedConfig.icons.prompt.cancelled = prompt.cancelled;
115
+ if (isSetString(prompt.error)) resolvedConfig.icons.prompt.error = prompt.error;
116
+ if (isSetString(prompt.warning)) resolvedConfig.icons.prompt.warning = prompt.warning;
117
+ if (isSetString(prompt.submitted)) resolvedConfig.icons.prompt.submitted = prompt.submitted;
118
+ if (isSetString(prompt.disabled)) resolvedConfig.icons.prompt.disabled = prompt.disabled;
119
+ }
120
+ }
121
+ if (!resolvedConfig.icons.prompt?.active && resolvedConfig.icons?.banner?.header?.primary) resolvedConfig.icons.prompt.active = resolvedConfig.icons.banner.header.primary;
122
+ if (!resolvedConfig.icons.prompt?.submitted && resolvedConfig.icons.message?.header?.success) resolvedConfig.icons.prompt.submitted = resolvedConfig.icons.message.header.success;
123
+ if (!resolvedConfig.icons.prompt?.warning && resolvedConfig.icons.message?.header?.warning) resolvedConfig.icons.prompt.warning = resolvedConfig.icons.message.header.warning;
124
+ if (!resolvedConfig.icons.prompt?.error && resolvedConfig.icons.message?.header?.error) resolvedConfig.icons.prompt.error = resolvedConfig.icons.message.header.error;
125
+ if (!resolvedConfig.icons.prompt?.cancelled && resolvedConfig.icons.message?.header?.error) resolvedConfig.icons.prompt.cancelled = resolvedConfig.icons.message.header.error;
126
+ mergeThemes(context, resolvedConfig);
127
+ return dictionary;
128
+ }
129
+ });
130
+
131
+ //#endregion
132
+ export { icons };
133
+ //# sourceMappingURL=icons.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.mjs","names":["icons"],"sources":["../../src/style-dictionary/icons.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport type { Config, PlatformConfig } from \"style-dictionary\";\nimport type {\n DesignToken,\n PreprocessedTokens,\n Preprocessor\n} from \"style-dictionary/types\";\nimport type { ThemePluginContext } from \"../types/plugin\";\nimport type {\n ThemeIconMessageStateConfig,\n ThemeIconPromptState,\n ThemeIconsResolvedConfig,\n ThemeIconSubItemConfig,\n ThemeIconsUserConfig,\n ThemeIconTypeResolvedConfig,\n ThemeResolvedConfig\n} from \"../types/theme\";\nimport { mergeThemes } from \"./helpers\";\n\n/**\n * Shell Shock - Theme Icons Preprocessor\n *\n * @remarks\n * This preprocessor applies custom value transformations to design tokens based on the provided configuration options.\n */\nexport const icons = (context: ThemePluginContext): Preprocessor => ({\n name: \"shell-shock/icons\",\n preprocessor: (\n dictionary: PreprocessedTokens,\n _options: Config | PlatformConfig\n ): PreprocessedTokens => {\n const resolvedConfig = {} as ThemeResolvedConfig;\n resolvedConfig.name =\n (dictionary as DesignToken).$theme ?? context.config.name;\n\n // #region Tiered token resolution\n\n // #region Icons\n\n resolvedConfig.icons ??= {\n message: { header: {} },\n banner: { header: {} },\n prompt: {}\n } as ThemeIconsResolvedConfig;\n const icons = dictionary.icons as ThemeIconsUserConfig;\n\n if (isSetString(icons)) {\n resolvedConfig.icons = {\n message: {\n header: {\n help: icons,\n success: icons,\n info: icons,\n debug: icons,\n warning: icons,\n danger: icons,\n error: icons\n }\n },\n banner: {\n header: {\n primary: icons,\n secondary: icons,\n tertiary: icons\n }\n },\n prompt: {\n active: icons,\n cancelled: icons,\n warning: icons,\n error: icons,\n submitted: icons,\n disabled: icons\n }\n };\n } else if (isSetObject(icons)) {\n resolvedConfig.icons.message =\n {} as ThemeIconTypeResolvedConfig<ThemeIconMessageStateConfig>;\n const message = icons.message;\n\n if (isSetString(message)) {\n resolvedConfig.icons.message = {\n header: {\n help: message,\n success: message,\n info: message,\n debug: message,\n warning: message,\n danger: message,\n error: message\n }\n };\n } else if (isSetObject(message)) {\n resolvedConfig.icons.message.header ??=\n {} as ThemeIconMessageStateConfig;\n const header = message.header;\n\n if (isSetString(header)) {\n resolvedConfig.icons.message = {\n header: {\n help: header,\n success: header,\n info: header,\n debug: header,\n warning: header,\n danger: header,\n error: header\n }\n };\n } else if (isSetObject(header)) {\n if (isSetString(header.help)) {\n resolvedConfig.icons.message.header.help = header.help;\n }\n if (isSetString(header.success)) {\n resolvedConfig.icons.message.header.success = header.success;\n }\n if (isSetString(header.info)) {\n resolvedConfig.icons.message.header.info = header.info;\n }\n if (isSetString(header.debug)) {\n resolvedConfig.icons.message.header.debug = header.debug;\n }\n if (isSetString(header.warning)) {\n resolvedConfig.icons.message.header.warning = header.warning;\n }\n if (isSetString(header.danger)) {\n resolvedConfig.icons.message.header.danger = header.danger;\n }\n if (isSetString(header.error)) {\n resolvedConfig.icons.message.header.error = header.error;\n }\n }\n }\n\n resolvedConfig.icons.banner ??= {\n header: {}\n } as ThemeIconTypeResolvedConfig<ThemeIconSubItemConfig>;\n const banner = icons.banner;\n\n if (isSetString(banner)) {\n resolvedConfig.icons.banner = {\n header: {\n primary: banner,\n secondary: banner,\n tertiary: banner\n }\n };\n } else if (isSetObject(banner)) {\n resolvedConfig.icons.banner.header ??= {} as ThemeIconSubItemConfig;\n const header = banner.header as ThemeIconSubItemConfig;\n\n if (isSetString(banner.header)) {\n resolvedConfig.icons.banner = {\n header: {\n primary: banner.header,\n secondary: banner.header,\n tertiary: banner.header\n }\n };\n } else if (isSetObject(banner.header)) {\n if (isSetString(header.primary)) {\n resolvedConfig.icons.banner.header.primary = header.primary;\n }\n if (isSetString(header.secondary)) {\n resolvedConfig.icons.banner.header.secondary = header.secondary;\n }\n if (isSetString(header.tertiary)) {\n resolvedConfig.icons.banner.header.tertiary = header.tertiary;\n }\n }\n }\n\n resolvedConfig.icons.prompt ??= {} as ThemeIconPromptState;\n const prompt = icons.prompt;\n\n if (isSetString(prompt)) {\n resolvedConfig.icons.prompt = {\n active: prompt,\n cancelled: prompt,\n error: prompt,\n warning: prompt,\n submitted: prompt,\n disabled: prompt\n };\n } else if (isSetObject(prompt)) {\n if (isSetString(prompt.active)) {\n resolvedConfig.icons.prompt.active = prompt.active;\n }\n if (isSetString(prompt.cancelled)) {\n resolvedConfig.icons.prompt.cancelled = prompt.cancelled;\n }\n if (isSetString(prompt.error)) {\n resolvedConfig.icons.prompt.error = prompt.error;\n }\n if (isSetString(prompt.warning)) {\n resolvedConfig.icons.prompt.warning = prompt.warning;\n }\n if (isSetString(prompt.submitted)) {\n resolvedConfig.icons.prompt.submitted = prompt.submitted;\n }\n if (isSetString(prompt.disabled)) {\n resolvedConfig.icons.prompt.disabled = prompt.disabled;\n }\n }\n }\n\n // #endregion Icons\n\n // #endregion Tiered token resolution\n\n // #region Missing token defaulting\n\n if (\n !resolvedConfig.icons.prompt?.active &&\n resolvedConfig.icons?.banner?.header?.primary\n ) {\n resolvedConfig.icons.prompt.active =\n resolvedConfig.icons.banner.header.primary;\n }\n if (\n !resolvedConfig.icons.prompt?.submitted &&\n resolvedConfig.icons.message?.header?.success\n ) {\n resolvedConfig.icons.prompt.submitted =\n resolvedConfig.icons.message.header.success;\n }\n if (\n !resolvedConfig.icons.prompt?.warning &&\n resolvedConfig.icons.message?.header?.warning\n ) {\n resolvedConfig.icons.prompt.warning =\n resolvedConfig.icons.message.header.warning;\n }\n if (\n !resolvedConfig.icons.prompt?.error &&\n resolvedConfig.icons.message?.header?.error\n ) {\n resolvedConfig.icons.prompt.error =\n resolvedConfig.icons.message.header.error;\n }\n if (\n !resolvedConfig.icons.prompt?.cancelled &&\n resolvedConfig.icons.message?.header?.error\n ) {\n resolvedConfig.icons.prompt.cancelled =\n resolvedConfig.icons.message.header.error;\n }\n\n // #endregion Missing token defaulting\n\n mergeThemes(context, resolvedConfig);\n\n return dictionary;\n }\n});\n"],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_helpers = require('./helpers.cjs');
3
+ let __stryke_type_checks_is_set_object = require("@stryke/type-checks/is-set-object");
4
+ let __stryke_type_checks_is_set_string = require("@stryke/type-checks/is-set-string");
5
+
6
+ //#region src/style-dictionary/labels.ts
7
+ /**
8
+ * Shell Shock - Theme Labels Preprocessor
9
+ *
10
+ * @remarks
11
+ * This preprocessor applies custom value transformations to design tokens based on the provided configuration options.
12
+ */
13
+ const labels = (context) => ({
14
+ name: "shell-shock/labels",
15
+ preprocessor: (dictionary, _options) => {
16
+ const resolvedConfig = {};
17
+ resolvedConfig.name = dictionary.$theme ?? context.config.name;
18
+ resolvedConfig.labels ??= {
19
+ message: {
20
+ header: {},
21
+ footer: {}
22
+ },
23
+ banner: {
24
+ header: {},
25
+ footer: {}
26
+ }
27
+ };
28
+ const labels$1 = dictionary.labels;
29
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(labels$1)) resolvedConfig.labels = {
30
+ message: {
31
+ header: {
32
+ help: labels$1,
33
+ success: labels$1,
34
+ info: labels$1,
35
+ debug: labels$1,
36
+ warning: labels$1,
37
+ danger: labels$1,
38
+ error: labels$1
39
+ },
40
+ footer: {}
41
+ },
42
+ banner: {
43
+ header: {
44
+ primary: labels$1,
45
+ secondary: labels$1,
46
+ tertiary: labels$1
47
+ },
48
+ footer: {}
49
+ }
50
+ };
51
+ else if ((0, __stryke_type_checks_is_set_object.isSetObject)(labels$1)) {
52
+ resolvedConfig.labels.message ??= {};
53
+ const message = labels$1?.message;
54
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(message)) resolvedConfig.labels.message = {
55
+ header: {
56
+ help: message,
57
+ success: message,
58
+ info: message,
59
+ debug: message,
60
+ warning: message,
61
+ danger: message,
62
+ error: message
63
+ },
64
+ footer: {}
65
+ };
66
+ else if ((0, __stryke_type_checks_is_set_object.isSetObject)(message)) {
67
+ resolvedConfig.labels.message.header = {};
68
+ resolvedConfig.labels.message.footer = {};
69
+ const header = message.header;
70
+ const footer = message.footer;
71
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header)) resolvedConfig.labels.message.header = {
72
+ help: header,
73
+ success: header,
74
+ info: header,
75
+ debug: header,
76
+ warning: header,
77
+ danger: header,
78
+ error: header
79
+ };
80
+ else if ((0, __stryke_type_checks_is_set_object.isSetObject)(header)) {
81
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header.help)) resolvedConfig.labels.message.header.help = header.help;
82
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header.success)) resolvedConfig.labels.message.header.success = header.success;
83
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header.info)) resolvedConfig.labels.message.header.info = header.info;
84
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header.debug)) resolvedConfig.labels.message.header.debug = header.debug;
85
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header.warning)) resolvedConfig.labels.message.header.warning = header.warning;
86
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header.danger)) resolvedConfig.labels.message.header.danger = header.danger;
87
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header.error)) resolvedConfig.labels.message.header.error = header.error;
88
+ }
89
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer)) resolvedConfig.labels.message.footer = {
90
+ help: footer,
91
+ success: footer,
92
+ info: footer,
93
+ debug: footer,
94
+ warning: footer,
95
+ danger: footer,
96
+ error: footer
97
+ };
98
+ else if ((0, __stryke_type_checks_is_set_object.isSetObject)(footer)) {
99
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer.help)) resolvedConfig.labels.message.footer.help = footer.help;
100
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer.success)) resolvedConfig.labels.message.footer.success = footer.success;
101
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer.info)) resolvedConfig.labels.message.footer.info = footer.info;
102
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer.debug)) resolvedConfig.labels.message.footer.debug = footer.debug;
103
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer.warning)) resolvedConfig.labels.message.footer.warning = footer.warning;
104
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer.danger)) resolvedConfig.labels.message.footer.danger = footer.danger;
105
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer.error)) resolvedConfig.labels.message.footer.error = footer.error;
106
+ }
107
+ resolvedConfig.labels.banner ??= {};
108
+ const banner = labels$1?.banner;
109
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(banner)) resolvedConfig.labels.banner = {
110
+ header: {
111
+ primary: banner,
112
+ secondary: banner,
113
+ tertiary: banner
114
+ },
115
+ footer: {}
116
+ };
117
+ else if ((0, __stryke_type_checks_is_set_object.isSetObject)(banner)) {
118
+ resolvedConfig.labels.banner.header = {};
119
+ resolvedConfig.labels.banner.footer = {};
120
+ const header$1 = banner.header;
121
+ const footer$1 = banner.footer;
122
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header$1)) resolvedConfig.labels.banner.header = {
123
+ primary: header$1,
124
+ secondary: header$1,
125
+ tertiary: header$1
126
+ };
127
+ else if ((0, __stryke_type_checks_is_set_object.isSetObject)(header$1)) {
128
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header$1.primary)) resolvedConfig.labels.banner.header.primary = header$1.primary;
129
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header$1.secondary)) resolvedConfig.labels.banner.header.secondary = header$1.secondary;
130
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(header$1.tertiary)) resolvedConfig.labels.banner.header.tertiary = header$1.tertiary;
131
+ }
132
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer$1)) resolvedConfig.labels.banner.footer = {
133
+ primary: footer$1,
134
+ secondary: footer$1,
135
+ tertiary: footer$1
136
+ };
137
+ else if ((0, __stryke_type_checks_is_set_object.isSetObject)(footer$1)) {
138
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer$1.primary)) resolvedConfig.labels.banner.footer.primary = footer$1.primary;
139
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer$1.secondary)) resolvedConfig.labels.banner.footer.secondary = footer$1.secondary;
140
+ if ((0, __stryke_type_checks_is_set_string.isSetString)(footer$1.tertiary)) resolvedConfig.labels.banner.footer.tertiary = footer$1.tertiary;
141
+ }
142
+ }
143
+ }
144
+ }
145
+ require_helpers.mergeThemes(context, resolvedConfig);
146
+ return dictionary;
147
+ }
148
+ });
149
+
150
+ //#endregion
151
+ exports.labels = labels;
@@ -0,0 +1,151 @@
1
+ import { mergeThemes } from "./helpers.mjs";
2
+ import { isSetObject } from "@stryke/type-checks/is-set-object";
3
+ import { isSetString } from "@stryke/type-checks/is-set-string";
4
+
5
+ //#region src/style-dictionary/labels.ts
6
+ /**
7
+ * Shell Shock - Theme Labels Preprocessor
8
+ *
9
+ * @remarks
10
+ * This preprocessor applies custom value transformations to design tokens based on the provided configuration options.
11
+ */
12
+ const labels = (context) => ({
13
+ name: "shell-shock/labels",
14
+ preprocessor: (dictionary, _options) => {
15
+ const resolvedConfig = {};
16
+ resolvedConfig.name = dictionary.$theme ?? context.config.name;
17
+ resolvedConfig.labels ??= {
18
+ message: {
19
+ header: {},
20
+ footer: {}
21
+ },
22
+ banner: {
23
+ header: {},
24
+ footer: {}
25
+ }
26
+ };
27
+ const labels$1 = dictionary.labels;
28
+ if (isSetString(labels$1)) resolvedConfig.labels = {
29
+ message: {
30
+ header: {
31
+ help: labels$1,
32
+ success: labels$1,
33
+ info: labels$1,
34
+ debug: labels$1,
35
+ warning: labels$1,
36
+ danger: labels$1,
37
+ error: labels$1
38
+ },
39
+ footer: {}
40
+ },
41
+ banner: {
42
+ header: {
43
+ primary: labels$1,
44
+ secondary: labels$1,
45
+ tertiary: labels$1
46
+ },
47
+ footer: {}
48
+ }
49
+ };
50
+ else if (isSetObject(labels$1)) {
51
+ resolvedConfig.labels.message ??= {};
52
+ const message = labels$1?.message;
53
+ if (isSetString(message)) resolvedConfig.labels.message = {
54
+ header: {
55
+ help: message,
56
+ success: message,
57
+ info: message,
58
+ debug: message,
59
+ warning: message,
60
+ danger: message,
61
+ error: message
62
+ },
63
+ footer: {}
64
+ };
65
+ else if (isSetObject(message)) {
66
+ resolvedConfig.labels.message.header = {};
67
+ resolvedConfig.labels.message.footer = {};
68
+ const header = message.header;
69
+ const footer = message.footer;
70
+ if (isSetString(header)) resolvedConfig.labels.message.header = {
71
+ help: header,
72
+ success: header,
73
+ info: header,
74
+ debug: header,
75
+ warning: header,
76
+ danger: header,
77
+ error: header
78
+ };
79
+ else if (isSetObject(header)) {
80
+ if (isSetString(header.help)) resolvedConfig.labels.message.header.help = header.help;
81
+ if (isSetString(header.success)) resolvedConfig.labels.message.header.success = header.success;
82
+ if (isSetString(header.info)) resolvedConfig.labels.message.header.info = header.info;
83
+ if (isSetString(header.debug)) resolvedConfig.labels.message.header.debug = header.debug;
84
+ if (isSetString(header.warning)) resolvedConfig.labels.message.header.warning = header.warning;
85
+ if (isSetString(header.danger)) resolvedConfig.labels.message.header.danger = header.danger;
86
+ if (isSetString(header.error)) resolvedConfig.labels.message.header.error = header.error;
87
+ }
88
+ if (isSetString(footer)) resolvedConfig.labels.message.footer = {
89
+ help: footer,
90
+ success: footer,
91
+ info: footer,
92
+ debug: footer,
93
+ warning: footer,
94
+ danger: footer,
95
+ error: footer
96
+ };
97
+ else if (isSetObject(footer)) {
98
+ if (isSetString(footer.help)) resolvedConfig.labels.message.footer.help = footer.help;
99
+ if (isSetString(footer.success)) resolvedConfig.labels.message.footer.success = footer.success;
100
+ if (isSetString(footer.info)) resolvedConfig.labels.message.footer.info = footer.info;
101
+ if (isSetString(footer.debug)) resolvedConfig.labels.message.footer.debug = footer.debug;
102
+ if (isSetString(footer.warning)) resolvedConfig.labels.message.footer.warning = footer.warning;
103
+ if (isSetString(footer.danger)) resolvedConfig.labels.message.footer.danger = footer.danger;
104
+ if (isSetString(footer.error)) resolvedConfig.labels.message.footer.error = footer.error;
105
+ }
106
+ resolvedConfig.labels.banner ??= {};
107
+ const banner = labels$1?.banner;
108
+ if (isSetString(banner)) resolvedConfig.labels.banner = {
109
+ header: {
110
+ primary: banner,
111
+ secondary: banner,
112
+ tertiary: banner
113
+ },
114
+ footer: {}
115
+ };
116
+ else if (isSetObject(banner)) {
117
+ resolvedConfig.labels.banner.header = {};
118
+ resolvedConfig.labels.banner.footer = {};
119
+ const header$1 = banner.header;
120
+ const footer$1 = banner.footer;
121
+ if (isSetString(header$1)) resolvedConfig.labels.banner.header = {
122
+ primary: header$1,
123
+ secondary: header$1,
124
+ tertiary: header$1
125
+ };
126
+ else if (isSetObject(header$1)) {
127
+ if (isSetString(header$1.primary)) resolvedConfig.labels.banner.header.primary = header$1.primary;
128
+ if (isSetString(header$1.secondary)) resolvedConfig.labels.banner.header.secondary = header$1.secondary;
129
+ if (isSetString(header$1.tertiary)) resolvedConfig.labels.banner.header.tertiary = header$1.tertiary;
130
+ }
131
+ if (isSetString(footer$1)) resolvedConfig.labels.banner.footer = {
132
+ primary: footer$1,
133
+ secondary: footer$1,
134
+ tertiary: footer$1
135
+ };
136
+ else if (isSetObject(footer$1)) {
137
+ if (isSetString(footer$1.primary)) resolvedConfig.labels.banner.footer.primary = footer$1.primary;
138
+ if (isSetString(footer$1.secondary)) resolvedConfig.labels.banner.footer.secondary = footer$1.secondary;
139
+ if (isSetString(footer$1.tertiary)) resolvedConfig.labels.banner.footer.tertiary = footer$1.tertiary;
140
+ }
141
+ }
142
+ }
143
+ }
144
+ mergeThemes(context, resolvedConfig);
145
+ return dictionary;
146
+ }
147
+ });
148
+
149
+ //#endregion
150
+ export { labels };
151
+ //# sourceMappingURL=labels.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.mjs","names":["labels","header","footer"],"sources":["../../src/style-dictionary/labels.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport type { Config, PlatformConfig } from \"style-dictionary\";\nimport type {\n DesignToken,\n PreprocessedTokens,\n Preprocessor\n} from \"style-dictionary/types\";\nimport type { ThemePluginContext } from \"../types/plugin\";\nimport type {\n ThemeLabelBannerSubItemConfig,\n ThemeLabelMessageStateConfig,\n ThemeLabelsResolvedConfig,\n ThemeLabelsUserConfig,\n ThemeLabelTypeResolvedConfig,\n ThemeLabelTypeUserConfig,\n ThemeResolvedConfig\n} from \"../types/theme\";\nimport { mergeThemes } from \"./helpers\";\n\n/**\n * Shell Shock - Theme Labels Preprocessor\n *\n * @remarks\n * This preprocessor applies custom value transformations to design tokens based on the provided configuration options.\n */\nexport const labels = (context: ThemePluginContext): Preprocessor => ({\n name: \"shell-shock/labels\",\n preprocessor: (\n dictionary: PreprocessedTokens,\n _options: Config | PlatformConfig\n ): PreprocessedTokens => {\n const resolvedConfig = {} as ThemeResolvedConfig;\n resolvedConfig.name =\n (dictionary as DesignToken).$theme ?? context.config.name;\n\n // #region Tiered token resolution\n\n // #region Labels\n\n resolvedConfig.labels ??= {\n message: { header: {}, footer: {} },\n banner: { header: {}, footer: {} }\n } as ThemeLabelsResolvedConfig;\n const labels = dictionary.labels as ThemeLabelsUserConfig;\n\n if (isSetString(labels)) {\n resolvedConfig.labels = {\n message: {\n header: {\n help: labels,\n success: labels,\n info: labels,\n debug: labels,\n warning: labels,\n danger: labels,\n error: labels\n },\n footer: {}\n },\n banner: {\n header: {\n primary: labels,\n secondary: labels,\n tertiary: labels\n },\n footer: {}\n }\n };\n } else if (isSetObject(labels)) {\n resolvedConfig.labels.message ??=\n {} as ThemeLabelTypeResolvedConfig<ThemeLabelMessageStateConfig>;\n const message =\n labels?.message as ThemeLabelTypeUserConfig<ThemeLabelMessageStateConfig>;\n\n if (isSetString(message)) {\n resolvedConfig.labels.message = {\n header: {\n help: message,\n success: message,\n info: message,\n debug: message,\n warning: message,\n danger: message,\n error: message\n },\n footer: {}\n };\n } else if (isSetObject(message)) {\n resolvedConfig.labels.message.header =\n {} as ThemeLabelMessageStateConfig;\n resolvedConfig.labels.message.footer =\n {} as ThemeLabelMessageStateConfig;\n const header = message.header;\n const footer = message.footer;\n\n if (isSetString(header)) {\n resolvedConfig.labels.message.header = {\n help: header,\n success: header,\n info: header,\n debug: header,\n warning: header,\n danger: header,\n error: header\n };\n } else if (isSetObject(header)) {\n if (isSetString(header.help)) {\n resolvedConfig.labels.message.header.help = header.help;\n }\n if (isSetString(header.success)) {\n resolvedConfig.labels.message.header.success = header.success;\n }\n if (isSetString(header.info)) {\n resolvedConfig.labels.message.header.info = header.info;\n }\n if (isSetString(header.debug)) {\n resolvedConfig.labels.message.header.debug = header.debug;\n }\n if (isSetString(header.warning)) {\n resolvedConfig.labels.message.header.warning = header.warning;\n }\n if (isSetString(header.danger)) {\n resolvedConfig.labels.message.header.danger = header.danger;\n }\n if (isSetString(header.error)) {\n resolvedConfig.labels.message.header.error = header.error;\n }\n }\n\n if (isSetString(footer)) {\n resolvedConfig.labels.message.footer = {\n help: footer,\n success: footer,\n info: footer,\n debug: footer,\n warning: footer,\n danger: footer,\n error: footer\n };\n } else if (isSetObject(footer)) {\n if (isSetString(footer.help)) {\n resolvedConfig.labels.message.footer.help = footer.help;\n }\n if (isSetString(footer.success)) {\n resolvedConfig.labels.message.footer.success = footer.success;\n }\n if (isSetString(footer.info)) {\n resolvedConfig.labels.message.footer.info = footer.info;\n }\n if (isSetString(footer.debug)) {\n resolvedConfig.labels.message.footer.debug = footer.debug;\n }\n if (isSetString(footer.warning)) {\n resolvedConfig.labels.message.footer.warning = footer.warning;\n }\n if (isSetString(footer.danger)) {\n resolvedConfig.labels.message.footer.danger = footer.danger;\n }\n if (isSetString(footer.error)) {\n resolvedConfig.labels.message.footer.error = footer.error;\n }\n }\n\n resolvedConfig.labels.banner ??=\n {} as ThemeLabelTypeResolvedConfig<ThemeLabelBannerSubItemConfig>;\n const banner =\n labels?.banner as ThemeLabelTypeUserConfig<ThemeLabelBannerSubItemConfig>;\n\n if (isSetString(banner)) {\n resolvedConfig.labels.banner = {\n header: {\n primary: banner,\n secondary: banner,\n tertiary: banner\n },\n footer: {}\n };\n } else if (isSetObject(banner)) {\n resolvedConfig.labels.banner.header =\n {} as ThemeLabelBannerSubItemConfig;\n resolvedConfig.labels.banner.footer =\n {} as ThemeLabelBannerSubItemConfig;\n const header = banner.header;\n const footer = banner.footer;\n\n if (isSetString(header)) {\n resolvedConfig.labels.banner.header = {\n primary: header,\n secondary: header,\n tertiary: header\n };\n } else if (isSetObject(header)) {\n if (isSetString(header.primary)) {\n resolvedConfig.labels.banner.header.primary = header.primary;\n }\n if (isSetString(header.secondary)) {\n resolvedConfig.labels.banner.header.secondary = header.secondary;\n }\n if (isSetString(header.tertiary)) {\n resolvedConfig.labels.banner.header.tertiary = header.tertiary;\n }\n }\n\n if (isSetString(footer)) {\n resolvedConfig.labels.banner.footer = {\n primary: footer,\n secondary: footer,\n tertiary: footer\n };\n } else if (isSetObject(footer)) {\n if (isSetString(footer.primary)) {\n resolvedConfig.labels.banner.footer.primary = footer.primary;\n }\n if (isSetString(footer.secondary)) {\n resolvedConfig.labels.banner.footer.secondary = footer.secondary;\n }\n if (isSetString(footer.tertiary)) {\n resolvedConfig.labels.banner.footer.tertiary = footer.tertiary;\n }\n }\n }\n }\n }\n\n // #endregion Labels\n\n // #endregion Tiered token resolution\n\n mergeThemes(context, resolvedConfig);\n\n return dictionary;\n }\n});\n"],"mappings":"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"}