@feraxjs/thselector 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -85,9 +85,6 @@ window.th = {
85
85
 
86
86
  window.th.remove = window.th.init();
87
87
 
88
- /**
89
- *
90
- */
91
88
  const th = window.th;
92
89
 
93
90
  function init_dropdown() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\n/**\n * \n */\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,138 +1,134 @@
1
- const THEME_STORAGE_KEY = '[fx-theme]';
2
- const META_ID = 'fth-meta';
3
-
4
- window.th = {
5
- verbose: false,
6
- themes: Object.freeze({
7
- light: 'light',
8
- dark: 'dark',
9
- system: 'dark light'
10
- }),
11
-
12
- setMetaTag(content) {
13
- let meta = document.getElementById(META_ID);
14
- if (!meta) {
15
- meta = document.createElement('meta');
16
- meta.id = META_ID;
17
- meta.name = 'color-scheme';
18
- document.head.appendChild(meta);
19
- }
20
- meta.content = content;
21
- },
22
-
23
- getSystemTheme() {
24
- return window.matchMedia('(prefers-color-scheme: dark)').matches
25
- ? 'dark'
26
- : 'light';
27
- },
28
-
29
- setTheme(theme) {
30
- if (!(theme in this.themes)) {
31
- console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);
32
- theme = 'system';
33
- }
34
-
35
- this.setMetaTag(this.themes[theme] || this.themes.system);
36
-
37
- const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;
38
-
39
- document.documentElement.setAttribute('theme', finalTheme);
40
-
41
- try { localStorage.setItem(THEME_STORAGE_KEY, theme); }
42
- catch (e) {
43
- if (this.verbose) console.debug("Error saving the theme:", e);
44
- }
45
-
46
- this.dispatchThemeChangeEvent(finalTheme, theme === 'system');
47
-
48
- return finalTheme;
49
- },
50
-
51
- dispatchThemeChangeEvent(theme, isSistem) {
52
- const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });
53
- document.dispatchEvent(event);
54
- },
55
-
56
- init() {
57
- try {
58
- const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';
59
- this.setTheme(savedTheme);
60
- } catch (error) {
61
- if (this.verbose) console.debug('Error loading theme:', error);
62
- this.setTheme('system');
63
- }
64
-
65
- if (!('matchMedia' in window)) {
66
- if (this.verbose) console.debug("The 'matchMedia' parameter is not present");
67
- }
68
-
69
- const listener = () => {
70
- const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);
71
- if (currentTheme === 'system') { this.setTheme('system'); }
72
- };
73
-
74
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);
75
-
76
- return () => {
77
- window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);
78
- }
79
- }
80
- };
81
-
82
- window.th.remove = window.th.init();
83
-
84
1
  /**
85
- *
2
+ * Global object for theme management.
3
+ * @namespace th
4
+ * @summary Manages global UI themes (light, dark, system) for the application.
5
+ *
6
+ * @description
7
+ * This object provides utilities to set, retrieve, and persist the user's preferred theme.
8
+ * It handles system theme detection, updates the `<html>` element's `theme` attribute,
9
+ * manages the `<meta name="color-scheme">` tag, and dispatches custom events
10
+ * when the theme changes.
86
11
  */
87
- const th = window.th;
88
-
89
- function init_dropdown() {
90
- const selector = document.getElementById("fth-select");
91
-
92
- if (selector) {
93
- const OPTIONS = {
94
- light: { id: 'fth-olight', text: 'Light', value: 'light' },
95
- dark: { id: 'fth-odark', text: 'Dark', value: 'dark' },
96
- system: { id: 'fth-osystem', text: 'System', value: 'system' }
97
- };
98
-
99
- function createOrUpdateOption(theme, config) {
100
- let option = document.getElementById(config.id);
101
-
102
- if (!option) {
103
- option = document.createElement("option");
104
- option.id = config.id;
105
- option.value = config.value; // Usa el valor definido en OPTIONS
106
- option.textContent = config.text;
107
- selector.appendChild(option);
108
- }
109
- return option;
110
- }
111
-
112
- const options = Object.values(OPTIONS).map(config => createOrUpdateOption(config.value, config));
113
-
114
-
115
- function setSelectedOption(theme) {
116
- const optionToSelect = options.find(option => option.value === theme);
117
- if (optionToSelect) {
118
- optionToSelect.selected = true;
119
- }
12
+ declare global {
13
+ interface Window {
14
+ th: {
15
+ /**
16
+ * If true, enables console debugging messages for theme-related operations. Defaults to `false`.
17
+ */
18
+ verbose: boolean;
19
+ /**
20
+ * An object containing available theme names.
21
+ * `light` and `dark` refer to the explicit themes. `system` indicates that the theme
22
+ * should follow the user's operating system preference and corresponds to 'dark light'
23
+ * for the `color-scheme` meta tag.
24
+ */
25
+ themes: Readonly<{
26
+ light: string;
27
+ dark: string;
28
+ system: string;
29
+ }>;
30
+ /**
31
+ * Sets the content for the `<meta name="color-scheme">` tag. If the tag does not exist, it will be created and appended to the document head.
32
+ * @param content - The content string for the 'color-scheme' meta tag (e.g., 'light', 'dark', 'dark light').
33
+ */
34
+ setMetaTag(content: string): void;
35
+ /**
36
+ * Detects the user's current system-wide preferred color scheme based on `window.matchMedia`.
37
+ * @returns The system's preferred color scheme ('light' or 'dark').
38
+ */
39
+ getSystemTheme(): 'light' | 'dark';
40
+ /**
41
+ * Sets the application's UI theme. This method updates the `<html>` element's `theme` attribute,
42
+ * the `<meta name="color-scheme">` tag, and persists the chosen theme in `localStorage`.
43
+ * It also dispatches a `th-changed` custom event.
44
+ * @param theme - The desired theme.
45
+ * - `'light'` sets the theme to light mode.
46
+ * - `'dark'` sets the theme to dark mode.
47
+ * - `'system'` automatically detects and applies the user's system preference.
48
+ * Invalid themes will fall back to 'system'.
49
+ * @returns The final theme applied after resolution (e.g., if 'system' was passed, it returns 'light' or 'dark').
50
+ */
51
+ setTheme(theme: 'light' | 'dark' | 'system'): 'light' | 'dark';
52
+ /**
53
+ * Dispatches a custom `th-changed` event to the `document`.
54
+ * @param theme - The actual theme that was applied (e.g., 'light' or 'dark').
55
+ * @param isSystem - True if the theme was determined by the system's preference; otherwise, false.
56
+ */
57
+ dispatchThemeChangeEvent(theme: 'light' | 'dark', isSystem: boolean): void;
58
+ /**
59
+ * Initializes the theme management system.
60
+ * It attempts to load a previously saved theme from `localStorage`. If no theme is saved or an error occurs,
61
+ * it defaults to the 'system' theme. It also sets up a listener for changes in the user's
62
+ * system color scheme preference to automatically update if the theme is set to 'system'.
63
+ * @returns A cleanup function that, when called, removes the system theme change listener.
64
+ */
65
+ init(): () => void;
66
+ /**
67
+ * A function to call to clean up event listeners created by `init()`.
68
+ * This property holds the return value of the initial `init()` call, allowing for manual cleanup.
69
+ */
70
+ remove: (() => void) | undefined;
71
+ };
120
72
  }
121
-
122
- const currentTheme = localStorage.getItem('[fx-theme]') ?? 'system';
123
- setSelectedOption(currentTheme);
124
-
125
- selector.addEventListener("change", (event) => {
126
- const newTheme = event.target.value;
127
- window.th.setTheme(newTheme);
128
- });
129
-
130
- document.addEventListener('th-changed', (event) => {
131
- if (event.detail.isSistem) setSelectedOption(OPTIONS.system);
132
- else setSelectedOption(event.detail.theme);
133
- });
134
- }
135
73
  }
74
+ declare const th: {
75
+ /**
76
+ * If true, enables console debugging messages for theme-related operations. Defaults to `false`.
77
+ */
78
+ verbose: boolean;
79
+ /**
80
+ * An object containing available theme names.
81
+ * `light` and `dark` refer to the explicit themes. `system` indicates that the theme
82
+ * should follow the user's operating system preference and corresponds to 'dark light'
83
+ * for the `color-scheme` meta tag.
84
+ */
85
+ themes: Readonly<{
86
+ light: string;
87
+ dark: string;
88
+ system: string;
89
+ }>;
90
+ /**
91
+ * Sets the content for the `<meta name="color-scheme">` tag. If the tag does not exist, it will be created and appended to the document head.
92
+ * @param content - The content string for the 'color-scheme' meta tag (e.g., 'light', 'dark', 'dark light').
93
+ */
94
+ setMetaTag(content: string): void;
95
+ /**
96
+ * Detects the user's current system-wide preferred color scheme based on `window.matchMedia`.
97
+ * @returns The system's preferred color scheme ('light' or 'dark').
98
+ */
99
+ getSystemTheme(): "light" | "dark";
100
+ /**
101
+ * Sets the application's UI theme. This method updates the `<html>` element's `theme` attribute,
102
+ * the `<meta name="color-scheme">` tag, and persists the chosen theme in `localStorage`.
103
+ * It also dispatches a `th-changed` custom event.
104
+ * @param theme - The desired theme.
105
+ * - `'light'` sets the theme to light mode.
106
+ * - `'dark'` sets the theme to dark mode.
107
+ * - `'system'` automatically detects and applies the user's system preference.
108
+ * Invalid themes will fall back to 'system'.
109
+ * @returns The final theme applied after resolution (e.g., if 'system' was passed, it returns 'light' or 'dark').
110
+ */
111
+ setTheme(theme: "light" | "dark" | "system"): "light" | "dark";
112
+ /**
113
+ * Dispatches a custom `th-changed` event to the `document`.
114
+ * @param theme - The actual theme that was applied (e.g., 'light' or 'dark').
115
+ * @param isSystem - True if the theme was determined by the system's preference; otherwise, false.
116
+ */
117
+ dispatchThemeChangeEvent(theme: "light" | "dark", isSystem: boolean): void;
118
+ /**
119
+ * Initializes the theme management system.
120
+ * It attempts to load a previously saved theme from `localStorage`. If no theme is saved or an error occurs,
121
+ * it defaults to the 'system' theme. It also sets up a listener for changes in the user's
122
+ * system color scheme preference to automatically update if the theme is set to 'system'.
123
+ * @returns A cleanup function that, when called, removes the system theme change listener.
124
+ */
125
+ init(): () => void;
126
+ /**
127
+ * A function to call to clean up event listeners created by `init()`.
128
+ * This property holds the return value of the initial `init()` call, allowing for manual cleanup.
129
+ */
130
+ remove: (() => void) | undefined;
131
+ };
132
+ declare function init_dropdown(): void;
136
133
 
137
134
  export { init_dropdown, th };
138
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -87,9 +87,6 @@
87
87
 
88
88
  window.th.remove = window.th.init();
89
89
 
90
- /**
91
- *
92
- */
93
90
  const th = window.th;
94
91
 
95
92
  function init_dropdown() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\n/**\n * \n */\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.min.js","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\n/**\n * \n */\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":["THEME_STORAGE_KEY","META_ID","window","th","verbose","themes","Object","freeze","light","dark","system","setMetaTag","content","meta","document","getElementById","createElement","id","name","head","appendChild","getSystemTheme","matchMedia","matches","setTheme","theme","this","console","warn","finalTheme","documentElement","setAttribute","localStorage","setItem","e","debug","dispatchThemeChangeEvent","isSistem","event","CustomEvent","detail","dispatchEvent","init","savedTheme","getItem","error","listener","addEventListener","removeEventListener","remove"],"mappings":"iPAAA,MAAMA,EAAoB,aACpBC,EAAU,WAEhBC,OAAOC,GAAK,CACRC,SAAS,EACTC,OAAQC,OAAOC,OAAO,CAClBC,MAAO,QACPC,KAAM,OACNC,OAAQ,eAGZ,UAAAC,CAAWC,GACP,IAAIC,EAAOC,SAASC,eAAed,GAC9BY,IACDA,EAAOC,SAASE,cAAc,QAC9BH,EAAKI,GAAKhB,EACVY,EAAKK,KAAO,eACZJ,SAASK,KAAKC,YAAYP,IAE9BA,EAAKD,QAAUA,CAClB,EAEDS,eAAc,IACHnB,OAAOoB,WAAW,gCAAgCC,QACnD,OACA,QAGV,QAAAC,CAASC,GACCA,KAASC,KAAKrB,SAChBsB,QAAQC,KAAK,kBAAkBH,oCAC/BA,EAAQ,UAGZC,KAAKf,WAAWe,KAAKrB,OAAOoB,IAAUC,KAAKrB,OAAOK,QAElD,MAAMmB,EAAuB,WAAVJ,EAAqBC,KAAKL,iBAAmBI,EAEhEX,SAASgB,gBAAgBC,aAAa,QAASF,GAE/C,IAAMG,aAAaC,QAAQjC,EAAmByB,EAAS,CACvD,MAAOS,GACDR,KAAKtB,SAASuB,QAAQQ,MAAM,0BAA2BD,EAC5D,CAID,OAFAR,KAAKU,yBAAyBP,EAAsB,WAAVJ,GAEnCI,CACV,EAED,wBAAAO,CAAyBX,EAAOY,GAC5B,MAAMC,EAAQ,IAAIC,YAAY,aAAc,CAAEC,OAAQ,CAAEf,QAAOY,cAC/DvB,SAAS2B,cAAcH,EAC1B,EAED,IAAAI,GACE,IACI,MAAMC,EAAaX,aAAaY,QAAQ5C,IAAsB,SAC9D0B,KAAKF,SAASmB,EACjB,CAAC,MAAOE,GACDnB,KAAKtB,SAASuB,QAAQQ,MAAM,uBAAwBU,GACxDnB,KAAKF,SAAS,SACjB,CAEK,eAAgBtB,QAChBwB,KAAKtB,SAASuB,QAAQQ,MAAM,6CAGlC,MAAMW,EAAW,KAEM,WADAd,aAAaY,QAAQ5C,IACT0B,KAAKF,SAAS,WAKjD,OAFAtB,OAAOoB,WAAW,gCAAgCyB,iBAAiB,SAAUD,GAEtE,KACL5C,OAAOoB,WAAW,gCAAgC0B,oBAAoB,SAAUF,GAEnF,GAGL5C,OAAOC,GAAG8C,OAAS/C,OAAOC,GAAGuC,OC5EhB,MAAAvC,EAAKD,OAAOC"}
1
+ {"version":3,"file":"index.min.js","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":["THEME_STORAGE_KEY","META_ID","window","th","verbose","themes","Object","freeze","light","dark","system","setMetaTag","content","meta","document","getElementById","createElement","id","name","head","appendChild","getSystemTheme","matchMedia","matches","setTheme","theme","this","console","warn","finalTheme","documentElement","setAttribute","localStorage","setItem","e","debug","dispatchThemeChangeEvent","isSistem","event","CustomEvent","detail","dispatchEvent","init","savedTheme","getItem","error","listener","addEventListener","removeEventListener","remove"],"mappings":"iPAAA,MAAMA,EAAoB,aACpBC,EAAU,WAEhBC,OAAOC,GAAK,CACRC,SAAS,EACTC,OAAQC,OAAOC,OAAO,CAClBC,MAAO,QACPC,KAAM,OACNC,OAAQ,eAGZ,UAAAC,CAAWC,GACP,IAAIC,EAAOC,SAASC,eAAed,GAC9BY,IACDA,EAAOC,SAASE,cAAc,QAC9BH,EAAKI,GAAKhB,EACVY,EAAKK,KAAO,eACZJ,SAASK,KAAKC,YAAYP,IAE9BA,EAAKD,QAAUA,CAClB,EAEDS,eAAc,IACHnB,OAAOoB,WAAW,gCAAgCC,QACnD,OACA,QAGV,QAAAC,CAASC,GACCA,KAASC,KAAKrB,SAChBsB,QAAQC,KAAK,kBAAkBH,oCAC/BA,EAAQ,UAGZC,KAAKf,WAAWe,KAAKrB,OAAOoB,IAAUC,KAAKrB,OAAOK,QAElD,MAAMmB,EAAuB,WAAVJ,EAAqBC,KAAKL,iBAAmBI,EAEhEX,SAASgB,gBAAgBC,aAAa,QAASF,GAE/C,IAAMG,aAAaC,QAAQjC,EAAmByB,EAAS,CACvD,MAAOS,GACDR,KAAKtB,SAASuB,QAAQQ,MAAM,0BAA2BD,EAC5D,CAID,OAFAR,KAAKU,yBAAyBP,EAAsB,WAAVJ,GAEnCI,CACV,EAED,wBAAAO,CAAyBX,EAAOY,GAC5B,MAAMC,EAAQ,IAAIC,YAAY,aAAc,CAAEC,OAAQ,CAAEf,QAAOY,cAC/DvB,SAAS2B,cAAcH,EAC1B,EAED,IAAAI,GACE,IACI,MAAMC,EAAaX,aAAaY,QAAQ5C,IAAsB,SAC9D0B,KAAKF,SAASmB,EACjB,CAAC,MAAOE,GACDnB,KAAKtB,SAASuB,QAAQQ,MAAM,uBAAwBU,GACxDnB,KAAKF,SAAS,SACjB,CAEK,eAAgBtB,QAChBwB,KAAKtB,SAASuB,QAAQQ,MAAM,6CAGlC,MAAMW,EAAW,KAEM,WADAd,aAAaY,QAAQ5C,IACT0B,KAAKF,SAAS,WAKjD,OAFAtB,OAAOoB,WAAW,gCAAgCyB,iBAAiB,SAAUD,GAEtE,KACL5C,OAAOoB,WAAW,gCAAgC0B,oBAAoB,SAAUF,GAEnF,GAGL5C,OAAOC,GAAG8C,OAAS/C,OAAOC,GAAGuC,OC/EhB,MAAAvC,EAAKD,OAAOC"}
package/dist/index.mjs CHANGED
@@ -81,9 +81,6 @@ window.th = {
81
81
 
82
82
  window.th.remove = window.th.init();
83
83
 
84
- /**
85
- *
86
- */
87
84
  const th = window.th;
88
85
 
89
86
  function init_dropdown() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\n/**\n * \n */\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@feraxjs/thselector",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "The simplest way to add theme management to your HTML. Easy to configure and set up.",
5
5
  "author": "feraxhp",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.cjs",
8
8
  "module": "dist/index.mjs",
9
+ "types": "dist/index.d.ts",
9
10
  "browser": "dist/index.js",
10
11
  "directories": {
11
12
  "doc": "docs"
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sources":["../src/core.js","../src/index.js"],"sourcesContent":["const THEME_STORAGE_KEY = '[fx-theme]';\nconst META_ID = 'fth-meta';\n\nwindow.th = {\n verbose: false,\n themes: Object.freeze({\n light: 'light',\n dark: 'dark',\n system: 'dark light'\n }),\n\n setMetaTag(content) {\n let meta = document.getElementById(META_ID);\n if (!meta) {\n meta = document.createElement('meta');\n meta.id = META_ID;\n meta.name = 'color-scheme';\n document.head.appendChild(meta);\n }\n meta.content = content;\n },\n\n getSystemTheme() {\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n },\n\n setTheme(theme) {\n if (!(theme in this.themes)) {\n console.warn(`Invalid theme: ${theme}. Falling back to system theme.`);\n theme = 'system';\n }\n \n this.setMetaTag(this.themes[theme] || this.themes.system);\n \n const finalTheme = theme === 'system' ? this.getSystemTheme() : theme;\n \n document.documentElement.setAttribute('theme', finalTheme);\n \n try { localStorage.setItem(THEME_STORAGE_KEY, theme); }\n catch (e) { \n if (this.verbose) console.debug(\"Error saving the theme:\", e)\n }\n \n this.dispatchThemeChangeEvent(finalTheme, theme === 'system');\n \n return finalTheme;\n },\n \n dispatchThemeChangeEvent(theme, isSistem) {\n const event = new CustomEvent('th-changed', { detail: { theme, isSistem } });\n document.dispatchEvent(event);\n },\n \n init() {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) ?? 'system';\n this.setTheme(savedTheme);\n } catch (error) {\n if (this.verbose) console.debug('Error loading theme:', error);\n this.setTheme('system');\n }\n \n if (!('matchMedia' in window)) {\n if (this.verbose) console.debug(\"The 'matchMedia' parameter is not present\")\n }\n \n const listener = () => {\n const currentTheme = localStorage.getItem(THEME_STORAGE_KEY);\n if (currentTheme === 'system') { this.setTheme('system'); }\n }\n \n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', listener);\n \n return () => {\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', listener);\n }\n }\n}\n\nwindow.th.remove = window.th.init();\n","import './core.js';\n\n/**\n * \n */\nexport const th = window.th;\n\nexport function init_dropdown() {\n// ./components/dropdown.js\n}\n"],"names":[],"mappings":"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"}