@seamline-kit/seamline-settings 0.0.3 → 0.0.5

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/main.cjs CHANGED
@@ -1 +1,165 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./lib-cjGq4QSq.cjs`);function t(){return{render(){return n()}}}function n(){return e.t(`div`,[e.t(`h2`,`Settings`)])}exports.init=t;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ let hastscript_jsx_runtime = require("hastscript/jsx-runtime");
3
+
4
+ //#region src/settings-page-names.ts
5
+ const DEFAULT_PREFIX = "slk-settings";
6
+ const SETTINGS_PAGE_NAMES = {
7
+ appearanceTitle: `${DEFAULT_PREFIX}-appearance-title`,
8
+ appearanceForm: `${DEFAULT_PREFIX}-appearance-form`,
9
+ themeSystem: `${DEFAULT_PREFIX}-theme-system`,
10
+ themeLight: `${DEFAULT_PREFIX}-theme-light`,
11
+ themeDark: `${DEFAULT_PREFIX}-theme-dark`
12
+ };
13
+
14
+ //#endregion
15
+ //#region src/theme.ts
16
+ const THEMES = [
17
+ "system",
18
+ "light",
19
+ "dark"
20
+ ];
21
+ const THEME_FIELD_NAME = `${DEFAULT_PREFIX}-theme`;
22
+ const DEFAULT_THEME = THEMES[0];
23
+ function isTheme(value) {
24
+ return THEMES.some((theme) => theme === value);
25
+ }
26
+
27
+ //#endregion
28
+ //#region src/settings-page.tsx
29
+ function SettingsPage({ defaultTheme }) {
30
+ return /* @__PURE__ */ (0, hastscript_jsx_runtime.jsxs)(hastscript_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("h1", { children: "Settings" }), /* @__PURE__ */ (0, hastscript_jsx_runtime.jsxs)("section", {
31
+ "aria-labelledby": SETTINGS_PAGE_NAMES.appearanceTitle,
32
+ children: [/* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("h2", {
33
+ id: SETTINGS_PAGE_NAMES.appearanceTitle,
34
+ children: "Appearance"
35
+ }), /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("form", {
36
+ id: SETTINGS_PAGE_NAMES.appearanceForm,
37
+ children: /* @__PURE__ */ (0, hastscript_jsx_runtime.jsxs)("fieldset", { children: [
38
+ /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("legend", { children: "Theme" }),
39
+ /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("input", {
40
+ type: "radio",
41
+ id: SETTINGS_PAGE_NAMES.themeSystem,
42
+ name: THEME_FIELD_NAME,
43
+ value: "system",
44
+ checked: defaultTheme === "system"
45
+ }),
46
+ /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("label", {
47
+ for: SETTINGS_PAGE_NAMES.themeSystem,
48
+ children: "System"
49
+ }),
50
+ /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("input", {
51
+ type: "radio",
52
+ id: SETTINGS_PAGE_NAMES.themeLight,
53
+ name: THEME_FIELD_NAME,
54
+ value: "light",
55
+ checked: defaultTheme === "light"
56
+ }),
57
+ /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("label", {
58
+ for: SETTINGS_PAGE_NAMES.themeLight,
59
+ children: "Light"
60
+ }),
61
+ /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("input", {
62
+ type: "radio",
63
+ id: SETTINGS_PAGE_NAMES.themeDark,
64
+ name: THEME_FIELD_NAME,
65
+ value: "dark",
66
+ checked: defaultTheme === "dark"
67
+ }),
68
+ /* @__PURE__ */ (0, hastscript_jsx_runtime.jsx)("label", {
69
+ for: SETTINGS_PAGE_NAMES.themeDark,
70
+ children: "Dark"
71
+ })
72
+ ] })
73
+ })]
74
+ })] });
75
+ }
76
+
77
+ //#endregion
78
+ //#region src/theme-persistence.ts
79
+ const THEME_STORAGE_KEY = `${DEFAULT_PREFIX}-theme`;
80
+ function getStorage() {
81
+ try {
82
+ return globalThis.localStorage ?? null;
83
+ } catch {
84
+ return null;
85
+ }
86
+ }
87
+ function readPersistedTheme() {
88
+ const storage = getStorage();
89
+ if (!storage) return null;
90
+ let value = null;
91
+ try {
92
+ value = storage.getItem(THEME_STORAGE_KEY);
93
+ } catch {
94
+ return null;
95
+ }
96
+ if (!isTheme(value)) return null;
97
+ return value;
98
+ }
99
+ function persistTheme(theme) {
100
+ const storage = getStorage();
101
+ if (!storage) return;
102
+ try {
103
+ storage.setItem(THEME_STORAGE_KEY, theme);
104
+ } catch {
105
+ return;
106
+ }
107
+ }
108
+ const THEME_BOOTSTRAP_SCRIPT = "try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}";
109
+
110
+ //#endregion
111
+ //#region src/theme-form-controller.ts
112
+ function getSelectedTheme(form) {
113
+ const theme = new FormData(form).get(THEME_FIELD_NAME);
114
+ if (!isTheme(theme)) return null;
115
+ return theme;
116
+ }
117
+ function syncThemeStateToDom(radios, theme) {
118
+ for (const radio of radios) {
119
+ const checked = radio.value === theme;
120
+ radio.checked = checked;
121
+ radio.defaultChecked = checked;
122
+ }
123
+ document.documentElement.setAttribute(`data-${THEME_FIELD_NAME}`, theme);
124
+ }
125
+ function bindThemeForm(onThemeChange) {
126
+ const form = document.getElementById(SETTINGS_PAGE_NAMES.appearanceForm);
127
+ const radios = form.querySelectorAll(`input[name="${THEME_FIELD_NAME}"]`);
128
+ function syncThemeFromForm() {
129
+ const selectedTheme = getSelectedTheme(form);
130
+ if (!selectedTheme) return;
131
+ onThemeChange(selectedTheme);
132
+ persistTheme(selectedTheme);
133
+ }
134
+ const persistedTheme = readPersistedTheme();
135
+ if (persistedTheme) syncThemeStateToDom(radios, persistedTheme);
136
+ const initialSelectedTheme = persistedTheme ?? getSelectedTheme(form);
137
+ if (initialSelectedTheme) onThemeChange(initialSelectedTheme);
138
+ form.addEventListener("change", syncThemeFromForm);
139
+ return {
140
+ sync(theme) {
141
+ syncThemeStateToDom(radios, theme);
142
+ persistTheme(theme);
143
+ },
144
+ unbind() {
145
+ form.removeEventListener("change", syncThemeFromForm);
146
+ }
147
+ };
148
+ }
149
+
150
+ //#endregion
151
+ //#region src/main.ts
152
+ function init({ defaultTheme = DEFAULT_THEME } = {}) {
153
+ return { render() {
154
+ return render(defaultTheme);
155
+ } };
156
+ }
157
+ function render(defaultTheme) {
158
+ return SettingsPage({ defaultTheme });
159
+ }
160
+
161
+ //#endregion
162
+ exports.DEFAULT_THEME = DEFAULT_THEME;
163
+ exports.THEME_BOOTSTRAP_SCRIPT = THEME_BOOTSTRAP_SCRIPT;
164
+ exports.bindThemeForm = bindThemeForm;
165
+ exports.init = init;
@@ -0,0 +1,30 @@
1
+ import { Result } from "hastscript";
2
+
3
+ //#region src/theme.d.ts
4
+ declare const THEMES: readonly ["system", "light", "dark"];
5
+ type Theme = (typeof THEMES)[number];
6
+ declare const DEFAULT_THEME: Theme;
7
+ //#endregion
8
+ //#region src/theme-persistence.d.ts
9
+ declare const THEME_BOOTSTRAP_SCRIPT = "try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}";
10
+ //#endregion
11
+ //#region src/theme-form-controller.d.ts
12
+ interface ThemeFormBinding {
13
+ sync: (theme: Theme) => void;
14
+ unbind: () => void;
15
+ }
16
+ declare function bindThemeForm(onThemeChange: (theme: Theme) => void): ThemeFormBinding;
17
+ //#endregion
18
+ //#region src/main.d.ts
19
+ interface InitOptions {
20
+ defaultTheme?: Theme;
21
+ }
22
+ interface SettingsRenderer {
23
+ render: () => Result;
24
+ }
25
+ declare function init({
26
+ defaultTheme
27
+ }?: InitOptions): SettingsRenderer;
28
+ //#endregion
29
+ export { DEFAULT_THEME, THEME_BOOTSTRAP_SCRIPT, type Theme, bindThemeForm, init };
30
+ //# sourceMappingURL=main.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.cts","names":[],"sources":["../src/theme.ts","../src/theme-persistence.ts","../src/theme-form-controller.ts","../src/main.ts"],"mappings":";;;cAEM,MAAA;AAAA,KACM,KAAA,WAAgB,MAAA;AAAA,cAGf,aAAA,EAAe,KAAA;;;cCwCf,sBAAA;;;UC1CH,gBAAA;EACR,IAAA,GAAO,KAAA,EAAO,KAAA;EACd,MAAA;AAAA;AAAA,iBAsBc,aAAA,CAAc,aAAA,GAAgB,KAAA,EAAO,KAAA,YAAiB,gBAAA;;;UCvB5D,WAAA;EACR,YAAA,GAAe,KAAA;AAAA;AAAA,UAGP,gBAAA;EACR,MAAA,QAAc,MAAA;AAAA;AAAA,iBAGA,IAAA,CAAA;EAAO;AAAA,IAAgC,WAAA,GAAmB,gBAAA"}
package/dist/main.d.ts CHANGED
@@ -1,4 +1,30 @@
1
- export declare function init(): {
2
- render(): import("hast").Element;
3
- };
1
+ import { Result } from "hastscript";
2
+
3
+ //#region src/theme.d.ts
4
+ declare const THEMES: readonly ["system", "light", "dark"];
5
+ type Theme = (typeof THEMES)[number];
6
+ declare const DEFAULT_THEME: Theme;
7
+ //#endregion
8
+ //#region src/theme-persistence.d.ts
9
+ declare const THEME_BOOTSTRAP_SCRIPT = "try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}";
10
+ //#endregion
11
+ //#region src/theme-form-controller.d.ts
12
+ interface ThemeFormBinding {
13
+ sync: (theme: Theme) => void;
14
+ unbind: () => void;
15
+ }
16
+ declare function bindThemeForm(onThemeChange: (theme: Theme) => void): ThemeFormBinding;
17
+ //#endregion
18
+ //#region src/main.d.ts
19
+ interface InitOptions {
20
+ defaultTheme?: Theme;
21
+ }
22
+ interface SettingsRenderer {
23
+ render: () => Result;
24
+ }
25
+ declare function init({
26
+ defaultTheme
27
+ }?: InitOptions): SettingsRenderer;
28
+ //#endregion
29
+ export { DEFAULT_THEME, THEME_BOOTSTRAP_SCRIPT, type Theme, bindThemeForm, init };
4
30
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAEA,wBAAgB,IAAI;;EAMnB"}
1
+ {"version":3,"file":"main.d.ts","names":[],"sources":["../src/theme.ts","../src/theme-persistence.ts","../src/theme-form-controller.ts","../src/main.ts"],"mappings":";;;cAEM,MAAA;AAAA,KACM,KAAA,WAAgB,MAAA;AAAA,cAGf,aAAA,EAAe,KAAA;;;cCwCf,sBAAA;;;UC1CH,gBAAA;EACR,IAAA,GAAO,KAAA,EAAO,KAAA;EACd,MAAA;AAAA;AAAA,iBAsBc,aAAA,CAAc,aAAA,GAAgB,KAAA,EAAO,KAAA,YAAiB,gBAAA;;;UCvB5D,WAAA;EACR,YAAA,GAAe,KAAA;AAAA;AAAA,UAGP,gBAAA;EACR,MAAA,QAAc,MAAA;AAAA;AAAA,iBAGA,IAAA,CAAA;EAAO;AAAA,IAAgC,WAAA,GAAmB,gBAAA"}
package/dist/main.js CHANGED
@@ -1,10 +1,162 @@
1
- import { t as e } from "./lib-DIb46Sli.js";
2
- function t() {
1
+ import { Fragment, jsx, jsxs } from "hastscript/jsx-runtime";
2
+
3
+ //#region src/settings-page-names.ts
4
+ const DEFAULT_PREFIX = "slk-settings";
5
+ const SETTINGS_PAGE_NAMES = {
6
+ appearanceTitle: `${DEFAULT_PREFIX}-appearance-title`,
7
+ appearanceForm: `${DEFAULT_PREFIX}-appearance-form`,
8
+ themeSystem: `${DEFAULT_PREFIX}-theme-system`,
9
+ themeLight: `${DEFAULT_PREFIX}-theme-light`,
10
+ themeDark: `${DEFAULT_PREFIX}-theme-dark`
11
+ };
12
+
13
+ //#endregion
14
+ //#region src/theme.ts
15
+ const THEMES = [
16
+ "system",
17
+ "light",
18
+ "dark"
19
+ ];
20
+ const THEME_FIELD_NAME = `${DEFAULT_PREFIX}-theme`;
21
+ const DEFAULT_THEME = THEMES[0];
22
+ function isTheme(value) {
23
+ return THEMES.some((theme) => theme === value);
24
+ }
25
+
26
+ //#endregion
27
+ //#region src/settings-page.tsx
28
+ function SettingsPage({ defaultTheme }) {
29
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("h1", { children: "Settings" }), /* @__PURE__ */ jsxs("section", {
30
+ "aria-labelledby": SETTINGS_PAGE_NAMES.appearanceTitle,
31
+ children: [/* @__PURE__ */ jsx("h2", {
32
+ id: SETTINGS_PAGE_NAMES.appearanceTitle,
33
+ children: "Appearance"
34
+ }), /* @__PURE__ */ jsx("form", {
35
+ id: SETTINGS_PAGE_NAMES.appearanceForm,
36
+ children: /* @__PURE__ */ jsxs("fieldset", { children: [
37
+ /* @__PURE__ */ jsx("legend", { children: "Theme" }),
38
+ /* @__PURE__ */ jsx("input", {
39
+ type: "radio",
40
+ id: SETTINGS_PAGE_NAMES.themeSystem,
41
+ name: THEME_FIELD_NAME,
42
+ value: "system",
43
+ checked: defaultTheme === "system"
44
+ }),
45
+ /* @__PURE__ */ jsx("label", {
46
+ for: SETTINGS_PAGE_NAMES.themeSystem,
47
+ children: "System"
48
+ }),
49
+ /* @__PURE__ */ jsx("input", {
50
+ type: "radio",
51
+ id: SETTINGS_PAGE_NAMES.themeLight,
52
+ name: THEME_FIELD_NAME,
53
+ value: "light",
54
+ checked: defaultTheme === "light"
55
+ }),
56
+ /* @__PURE__ */ jsx("label", {
57
+ for: SETTINGS_PAGE_NAMES.themeLight,
58
+ children: "Light"
59
+ }),
60
+ /* @__PURE__ */ jsx("input", {
61
+ type: "radio",
62
+ id: SETTINGS_PAGE_NAMES.themeDark,
63
+ name: THEME_FIELD_NAME,
64
+ value: "dark",
65
+ checked: defaultTheme === "dark"
66
+ }),
67
+ /* @__PURE__ */ jsx("label", {
68
+ for: SETTINGS_PAGE_NAMES.themeDark,
69
+ children: "Dark"
70
+ })
71
+ ] })
72
+ })]
73
+ })] });
74
+ }
75
+
76
+ //#endregion
77
+ //#region src/theme-persistence.ts
78
+ const THEME_STORAGE_KEY = `${DEFAULT_PREFIX}-theme`;
79
+ function getStorage() {
80
+ try {
81
+ return globalThis.localStorage ?? null;
82
+ } catch {
83
+ return null;
84
+ }
85
+ }
86
+ function readPersistedTheme() {
87
+ const storage = getStorage();
88
+ if (!storage) return null;
89
+ let value = null;
90
+ try {
91
+ value = storage.getItem(THEME_STORAGE_KEY);
92
+ } catch {
93
+ return null;
94
+ }
95
+ if (!isTheme(value)) return null;
96
+ return value;
97
+ }
98
+ function persistTheme(theme) {
99
+ const storage = getStorage();
100
+ if (!storage) return;
101
+ try {
102
+ storage.setItem(THEME_STORAGE_KEY, theme);
103
+ } catch {
104
+ return;
105
+ }
106
+ }
107
+ const THEME_BOOTSTRAP_SCRIPT = "try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}";
108
+
109
+ //#endregion
110
+ //#region src/theme-form-controller.ts
111
+ function getSelectedTheme(form) {
112
+ const theme = new FormData(form).get(THEME_FIELD_NAME);
113
+ if (!isTheme(theme)) return null;
114
+ return theme;
115
+ }
116
+ function syncThemeStateToDom(radios, theme) {
117
+ for (const radio of radios) {
118
+ const checked = radio.value === theme;
119
+ radio.checked = checked;
120
+ radio.defaultChecked = checked;
121
+ }
122
+ document.documentElement.setAttribute(`data-${THEME_FIELD_NAME}`, theme);
123
+ }
124
+ function bindThemeForm(onThemeChange) {
125
+ const form = document.getElementById(SETTINGS_PAGE_NAMES.appearanceForm);
126
+ const radios = form.querySelectorAll(`input[name="${THEME_FIELD_NAME}"]`);
127
+ function syncThemeFromForm() {
128
+ const selectedTheme = getSelectedTheme(form);
129
+ if (!selectedTheme) return;
130
+ onThemeChange(selectedTheme);
131
+ persistTheme(selectedTheme);
132
+ }
133
+ const persistedTheme = readPersistedTheme();
134
+ if (persistedTheme) syncThemeStateToDom(radios, persistedTheme);
135
+ const initialSelectedTheme = persistedTheme ?? getSelectedTheme(form);
136
+ if (initialSelectedTheme) onThemeChange(initialSelectedTheme);
137
+ form.addEventListener("change", syncThemeFromForm);
138
+ return {
139
+ sync(theme) {
140
+ syncThemeStateToDom(radios, theme);
141
+ persistTheme(theme);
142
+ },
143
+ unbind() {
144
+ form.removeEventListener("change", syncThemeFromForm);
145
+ }
146
+ };
147
+ }
148
+
149
+ //#endregion
150
+ //#region src/main.ts
151
+ function init({ defaultTheme = DEFAULT_THEME } = {}) {
3
152
  return { render() {
4
- return n();
153
+ return render(defaultTheme);
5
154
  } };
6
155
  }
7
- function n() {
8
- return e("div", [e("h2", "Settings")]);
156
+ function render(defaultTheme) {
157
+ return SettingsPage({ defaultTheme });
9
158
  }
10
- export { t as init };
159
+
160
+ //#endregion
161
+ export { DEFAULT_THEME, THEME_BOOTSTRAP_SCRIPT, bindThemeForm, init };
162
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","names":[],"sources":["../src/settings-page-names.ts","../src/theme.ts","../src/settings-page.tsx","../src/theme-persistence.ts","../src/theme-form-controller.ts","../src/main.ts"],"sourcesContent":["export const DEFAULT_PREFIX = \"slk-settings\";\n\nexport interface SettingsPageNames {\n appearanceTitle: string;\n appearanceForm: string;\n themeSystem: string;\n themeLight: string;\n themeDark: string;\n}\n\nexport const SETTINGS_PAGE_NAMES: SettingsPageNames = {\n appearanceTitle: `${DEFAULT_PREFIX}-appearance-title`,\n appearanceForm: `${DEFAULT_PREFIX}-appearance-form`,\n themeSystem: `${DEFAULT_PREFIX}-theme-system`,\n themeLight: `${DEFAULT_PREFIX}-theme-light`,\n themeDark: `${DEFAULT_PREFIX}-theme-dark`,\n};\n","import { DEFAULT_PREFIX } from \"./settings-page-names\";\n\nconst THEMES = [\"system\", \"light\", \"dark\"] as const;\nexport type Theme = (typeof THEMES)[number];\n\nexport const THEME_FIELD_NAME: string = `${DEFAULT_PREFIX}-theme`;\nexport const DEFAULT_THEME: Theme = THEMES[0];\n\nexport function isTheme(value: unknown): value is Theme {\n return THEMES.some((theme) => theme === value);\n}\n","/** @jsxImportSource hastscript */\n\nimport type { Result as HastResult } from \"hastscript\";\nimport { SETTINGS_PAGE_NAMES } from \"./settings-page-names\";\nimport { THEME_FIELD_NAME, type Theme } from \"./theme\";\n\nexport interface SettingsPageProps {\n defaultTheme: Theme;\n}\n\nexport function SettingsPage({ defaultTheme }: SettingsPageProps): HastResult {\n return (\n <>\n <h1>Settings</h1>\n <section aria-labelledby={SETTINGS_PAGE_NAMES.appearanceTitle}>\n <h2 id={SETTINGS_PAGE_NAMES.appearanceTitle}>Appearance</h2>\n <form id={SETTINGS_PAGE_NAMES.appearanceForm}>\n <fieldset>\n <legend>Theme</legend>\n <input\n type=\"radio\"\n id={SETTINGS_PAGE_NAMES.themeSystem}\n name={THEME_FIELD_NAME}\n value=\"system\"\n checked={defaultTheme === \"system\"}\n />\n <label for={SETTINGS_PAGE_NAMES.themeSystem}>System</label>\n <input\n type=\"radio\"\n id={SETTINGS_PAGE_NAMES.themeLight}\n name={THEME_FIELD_NAME}\n value=\"light\"\n checked={defaultTheme === \"light\"}\n />\n <label for={SETTINGS_PAGE_NAMES.themeLight}>Light</label>\n <input\n type=\"radio\"\n id={SETTINGS_PAGE_NAMES.themeDark}\n name={THEME_FIELD_NAME}\n value=\"dark\"\n checked={defaultTheme === \"dark\"}\n />\n <label for={SETTINGS_PAGE_NAMES.themeDark}>Dark</label>\n </fieldset>\n </form>\n </section>\n </>\n );\n}\n","import { DEFAULT_PREFIX } from \"./settings-page-names\";\nimport { isTheme, type Theme } from \"./theme\";\n\nconst THEME_STORAGE_KEY: string = `${DEFAULT_PREFIX}-theme`;\n\nfunction getStorage(): Storage | null {\n try {\n return globalThis.localStorage ?? null;\n } catch {\n return null;\n }\n}\n\nexport function readPersistedTheme(): Theme | null {\n const storage = getStorage();\n if (!storage) {\n return null;\n }\n\n let value: string | null = null;\n try {\n value = storage.getItem(THEME_STORAGE_KEY);\n } catch {\n return null;\n }\n\n if (!isTheme(value)) {\n return null;\n }\n\n return value;\n}\n\nexport function persistTheme(theme: Theme): void {\n const storage = getStorage();\n if (!storage) {\n return;\n }\n\n try {\n storage.setItem(THEME_STORAGE_KEY, theme);\n } catch {\n return;\n }\n}\n\nexport const THEME_BOOTSTRAP_SCRIPT =\n \"try{let theme=localStorage.getItem('slk-settings-theme');if(['system','light','dark'].includes(theme)){document.documentElement.setAttribute('data-slk-settings-theme',theme)}}catch{}\";\n","import { SETTINGS_PAGE_NAMES } from \"./settings-page-names\";\nimport { isTheme, THEME_FIELD_NAME, type Theme } from \"./theme\";\nimport { persistTheme, readPersistedTheme } from \"./theme-persistence\";\n\ninterface ThemeFormBinding {\n sync: (theme: Theme) => void;\n unbind: () => void;\n}\n\nfunction getSelectedTheme(form: HTMLFormElement): Theme | null {\n const theme = new FormData(form).get(THEME_FIELD_NAME);\n if (!isTheme(theme)) {\n return null;\n }\n\n return theme;\n}\n\nfunction syncThemeStateToDom(radios: NodeListOf<HTMLInputElement>, theme: Theme) {\n for (const radio of radios) {\n const checked = radio.value === theme;\n radio.checked = checked;\n radio.defaultChecked = checked;\n }\n\n document.documentElement.setAttribute(`data-${THEME_FIELD_NAME}`, theme);\n}\n\nexport function bindThemeForm(onThemeChange: (theme: Theme) => void): ThemeFormBinding {\n const form = document.getElementById(SETTINGS_PAGE_NAMES.appearanceForm) as HTMLFormElement;\n const radios = form.querySelectorAll<HTMLInputElement>(`input[name=\"${THEME_FIELD_NAME}\"]`);\n\n function syncThemeFromForm() {\n const selectedTheme = getSelectedTheme(form);\n if (!selectedTheme) {\n return;\n }\n\n onThemeChange(selectedTheme);\n persistTheme(selectedTheme);\n }\n\n const persistedTheme = readPersistedTheme();\n if (persistedTheme) {\n syncThemeStateToDom(radios, persistedTheme);\n }\n\n const initialSelectedTheme = persistedTheme ?? getSelectedTheme(form);\n if (initialSelectedTheme) {\n onThemeChange(initialSelectedTheme);\n }\n\n form.addEventListener(\"change\", syncThemeFromForm);\n\n return {\n sync(theme: Theme) {\n syncThemeStateToDom(radios, theme);\n persistTheme(theme);\n },\n unbind() {\n form.removeEventListener(\"change\", syncThemeFromForm);\n },\n };\n}\n","import type { Result as HastResult } from \"hastscript\";\nimport { SettingsPage } from \"./settings-page\";\nimport { DEFAULT_THEME, type Theme } from \"./theme\";\nimport { THEME_BOOTSTRAP_SCRIPT } from \"./theme-persistence\";\n\ninterface InitOptions {\n defaultTheme?: Theme;\n}\n\ninterface SettingsRenderer {\n render: () => HastResult;\n}\n\nexport function init({ defaultTheme = DEFAULT_THEME }: InitOptions = {}): SettingsRenderer {\n return {\n render() {\n return render(defaultTheme);\n },\n };\n}\n\nfunction render(defaultTheme: Theme): HastResult {\n return SettingsPage({ defaultTheme });\n}\n\nexport { bindThemeForm } from \"./theme-form-controller\";\nexport { DEFAULT_THEME, type Theme } from \"./theme\";\nexport { THEME_BOOTSTRAP_SCRIPT };\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamline-kit/seamline-settings",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"
@@ -14,44 +14,34 @@
14
14
  "types": "./dist/main.d.ts",
15
15
  "import": "./dist/main.js",
16
16
  "require": "./dist/main.cjs"
17
- },
18
- "./solid": {
19
- "types": "./dist/adapters/solid.d.ts",
20
- "import": "./dist/adapters/solid.js",
21
- "require": "./dist/adapters/solid.cjs"
22
17
  }
23
18
  },
24
19
  "publishConfig": {
25
20
  "access": "public"
26
21
  },
27
- "scripts": {
28
- "build": "vite build && pnpm run build:types",
29
- "build:types": "tsc -p tsconfig.build.json",
30
- "typecheck": "tsc -p tsconfig.build.json --noEmit",
31
- "lint": "oxlint",
32
- "lint:fix": "oxlint --fix",
33
- "format": "oxfmt --ignore-path ../../.gitignore .",
34
- "format:check": "oxfmt --check --ignore-path ../../.gitignore ."
35
- },
36
22
  "dependencies": {
37
- "hast-util-to-jsx-runtime": "2.3.6",
38
- "hastscript": "9.0.1",
39
- "solid-jsx": "1.1.4"
23
+ "hastscript": "9.0.1"
40
24
  },
41
25
  "devDependencies": {
26
+ "@vitest/browser-playwright": "4.0.18",
42
27
  "oxfmt": "0.32.0",
43
28
  "oxlint": "1.47.0",
44
- "solid-js": "1.9.11",
45
- "typescript": "~5.9.3",
46
- "vite": "8.0.0-beta.14"
47
- },
48
- "peerDependencies": {
49
- "solid-js": "1.x"
29
+ "tsdown": "0.20.3",
30
+ "vitest": "4.0.18"
50
31
  },
51
- "peerDependenciesMeta": {
52
- "solid-js": {
53
- "optional": true
54
- }
55
- },
56
- "packageManager": "pnpm@10.29.3"
57
- }
32
+ "scripts": {
33
+ "dev": "tsdown --watch",
34
+ "build": "tsdown",
35
+ "test": "vitest run",
36
+ "test:watch": "vitest",
37
+ "test:browser": "vitest run --config=vitest.browser.config.ts",
38
+ "test:browser:watch": "vitest --config=vitest.browser.config.ts",
39
+ "test:browser:headless": "vitest run --browser.headless --config=vitest.browser.config.ts",
40
+ "test:browser:headless:watch": "vitest --browser.headless --config=vitest.browser.config.ts",
41
+ "typecheck": "tsgo -p tsconfig.build.json --noEmit",
42
+ "lint": "oxlint",
43
+ "lint:fix": "oxlint --fix",
44
+ "format": "oxfmt --ignore-path ../../.gitignore .",
45
+ "format:check": "oxfmt --check --ignore-path ../../.gitignore ."
46
+ }
47
+ }
@@ -1,2 +0,0 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../lib-cjGq4QSq.cjs`),t=require(`../main.cjs`);let n=require(`solid-jsx/jsx-runtime`);var r=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,i=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,a={};function o(e,t){return((t||a).jsx?i:r).test(e)}var s=/[ \t\n\f\r]/g;function c(e){return typeof e==`object`?e.type===`text`?l(e.value):!1:l(e)}function l(e){return e.replace(s,``)===``}var u=e.c(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g,u=`
2
- `,d=`/`,f=`*`,p=``,m=`comment`,h=`declaration`;function g(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,g=1;function v(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(u);g=~n?e.length-n:g+e.length}function y(){var e={line:l,column:g};return function(t){return t.position=new b(e),C(),t}}function b(e){this.start=e,this.end={line:l,column:g},this.source=t.source}b.prototype.content=e;function x(n){var r=Error(t.source+`:`+l+`:`+g+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=g,r.source=e,!t.silent)throw r}function S(t){var n=t.exec(e);if(n){var r=n[0];return v(r),e=e.slice(r.length),n}}function C(){S(i)}function w(e){var t;for(e||=[];t=T();)t!==!1&&e.push(t);return e}function T(){var t=y();if(!(d!=e.charAt(0)||f!=e.charAt(1))){for(var n=2;p!=e.charAt(n)&&(f!=e.charAt(n)||d!=e.charAt(n+1));)++n;if(n+=2,p===e.charAt(n-1))return x(`End of comment missing`);var r=e.slice(2,n-2);return g+=2,v(r),e=e.slice(n),g+=2,t({type:m,comment:r})}}function E(){var e=y(),t=S(a);if(t){if(T(),!S(o))return x(`property missing ':'`);var r=S(s),i=e({type:h,property:_(t[0].replace(n,p)),value:r?_(r[0].replace(n,p)):p});return S(c),i}}function D(){var e=[];w(e);for(var t;t=E();)t!==!1&&(e.push(t),w(e));return e}return C(),D()}function _(e){return e?e.replace(l,p):p}t.exports=g})),d=e.c((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.default=r;var n=t(u());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),f=e.c((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),p=e.c(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(d()),r=f();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i}));const m=h(`start`);function h(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function g(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?v(e.position):`start`in e||`end`in e?v(e):`line`in e||`column`in e?_(e):``}function _(e){return y(e&&e.line)+`:`+y(e&&e.column)}function v(e){return _(e&&e.start)+`-`+_(e&&e.end)}function y(e){return e&&typeof e==`number`?e:1}var b=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=g(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};b.prototype.file=``,b.prototype.name=``,b.prototype.reason=``,b.prototype.message=``,b.prototype.stack=``,b.prototype.column=void 0,b.prototype.line=void 0,b.prototype.ancestors=void 0,b.prototype.cause=void 0,b.prototype.fatal=void 0,b.prototype.place=void 0,b.prototype.ruleId=void 0,b.prototype.source=void 0;var x=e.l(p(),1),S={}.hasOwnProperty,C=new Map,w=/[A-Z]/g,T=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),E=new Set([`td`,`th`]),D=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function O(t,n){if(!n||n.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let r=n.filePath||void 0,i;if(n.development){if(typeof n.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");i=z(r,n.jsxDEV)}else{if(typeof n.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof n.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");i=R(r,n.jsx,n.jsxs)}let a={Fragment:n.Fragment,ancestors:[],components:n.components||{},create:i,elementAttributeNameCase:n.elementAttributeNameCase||`react`,evaluater:n.createEvaluater?n.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:n.ignoreInvalidStyle||!1,passKeys:n.passKeys!==!1,passNode:n.passNode||!1,schema:n.space===`svg`?e.a:e.i,stylePropertyNameCase:n.stylePropertyNameCase||`dom`,tableCellAlignToStyle:n.tableCellAlignToStyle!==!1},o=k(a,t,void 0);return o&&typeof o!=`string`?o:a.create(t,a.Fragment,{children:o||void 0},void 0)}function k(e,t,n){if(t.type===`element`)return A(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return j(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return N(e,t,n);if(t.type===`mdxjsEsm`)return M(e,t);if(t.type===`root`)return P(e,t,n);if(t.type===`text`)return F(e,t)}function A(t,n,r){let i=t.schema,a=i;n.tagName.toLowerCase()===`svg`&&i.space===`html`&&(a=e.a,t.schema=a),t.ancestors.push(n);let o=G(t,n.tagName,!1),s=B(t,n),l=H(t,n);return T.has(n.tagName)&&(l=l.filter(function(e){return typeof e==`string`?!c(e):!0})),I(t,s,o,n),L(s,l),t.ancestors.pop(),t.schema=i,t.create(n,o,s,r)}function j(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}K(e,t.position)}function M(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);K(e,t.position)}function N(t,n,r){let i=t.schema,a=i;n.name===`svg`&&i.space===`html`&&(a=e.a,t.schema=a),t.ancestors.push(n);let o=n.name===null?t.Fragment:G(t,n.name,!0),s=V(t,n),c=H(t,n);return I(t,s,o,n),L(s,c),t.ancestors.pop(),t.schema=i,t.create(n,o,s,r)}function P(e,t,n){let r={};return L(r,H(e,t)),e.create(t,e.Fragment,r,n)}function F(e,t){return t.value}function I(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function L(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function R(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function z(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=m(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function B(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&S.call(t.properties,i)){let a=U(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&E.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function V(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`)if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else K(e,t.position);else{let i=r.name,a;if(r.value&&typeof r.value==`object`)if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else K(e,t.position);else a=r.value===null?!0:r.value;n[i]=a}return n}function H(e,t){let n=[],r=-1,i=e.passKeys?new Map:C;for(;++r<t.children.length;){let a=t.children[r],o;if(e.passKeys){let e=a.type===`element`?a.tagName:a.type===`mdxJsxFlowElement`||a.type===`mdxJsxTextElement`?a.name:void 0;if(e){let t=i.get(e)||0;o=e+`-`+t,i.set(e,t+1)}}let s=k(e,a,o);s!==void 0&&n.push(s)}return n}function U(t,n,r){let i=e.o(t.schema,n);if(!(r==null||typeof r==`number`&&Number.isNaN(r))){if(Array.isArray(r)&&(r=i.commaSeparated?e.r(r):e.n(r)),i.property===`style`){let e=typeof r==`object`?r:W(t,String(r));return t.stylePropertyNameCase===`css`&&(e=q(e)),[`style`,e]}return[t.elementAttributeNameCase===`react`&&i.space?e.s[i.property]||i.property:i.attribute,r]}}function W(e,t){try{return(0,x.default)(t,{reactCompat:!0})}catch(t){if(e.ignoreInvalidStyle)return{};let n=t,r=new b("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:n,ruleId:`style`,source:`hast-util-to-jsx-runtime`});throw r.file=e.filePath||void 0,r.url=D+`#cannot-parse-style-attribute`,r}}function G(e,t,n){let r;if(!n)r={type:`Literal`,value:t};else if(t.includes(`.`)){let e=t.split(`.`),n=-1,i;for(;++n<e.length;){let t=o(e[n])?{type:`Identifier`,name:e[n]}:{type:`Literal`,value:e[n]};i=i?{type:`MemberExpression`,object:i,property:t,computed:!!(n&&t.type===`Literal`),optional:!1}:t}r=i}else r=o(t)&&!/^[a-z]/.test(t)?{type:`Identifier`,name:t}:{type:`Literal`,value:t};if(r.type===`Literal`){let t=r.value;return S.call(e.components,t)?e.components[t]:t}if(e.evaluater)return e.evaluater.evaluateExpression(r);K(e)}function K(e,t){let n=new b("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:`mdx-estree`,source:`hast-util-to-jsx-runtime`});throw n.file=e.filePath||void 0,n.url=D+`#cannot-handle-mdx-estrees-without-createevaluater`,n}function q(e){let t={},n;for(n in e)S.call(e,n)&&(t[J(n)]=e[n]);return t}function J(e){let t=e.replace(w,Y);return t.slice(0,3)===`ms-`&&(t=`-`+t),t}function Y(e){return`-`+e.toLowerCase()}function X(){return O(t.init().render(),{Fragment:n.Fragment,jsx:n.jsx,jsxs:n.jsxs,elementAttributeNameCase:`html`,stylePropertyNameCase:`css`})}exports.SeamlineSettings=X,exports.default=X;
@@ -1,3 +0,0 @@
1
- export declare function SeamlineSettings(): JSX.Element;
2
- export default SeamlineSettings;
3
- //# sourceMappingURL=solid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/adapters/solid.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,gBAU/B;AAED,eAAe,gBAAgB,CAAC"}