@mdbase-dev/ui 0.1.0-beta.126 → 0.1.0-beta.148

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 (74) hide show
  1. package/README.md +168 -0
  2. package/css/collections.css +978 -0
  3. package/css/controls.css +33 -1
  4. package/css/screens.css +44 -2
  5. package/dist/AppSwitcher.js +187 -33
  6. package/dist/Checkbox.d.ts +14 -0
  7. package/dist/Checkbox.js +32 -0
  8. package/dist/CollectionModeControl.d.ts +11 -0
  9. package/dist/CollectionModeControl.js +290 -0
  10. package/dist/CommandPalette.d.ts +4 -2
  11. package/dist/CommandPalette.js +275 -103
  12. package/dist/Dialog.js +72 -25
  13. package/dist/Feedback.js +763 -229
  14. package/dist/FeedbackMarkup.d.ts +1 -1
  15. package/dist/FeedbackMarkup.js +326 -125
  16. package/dist/FeedbackVerification.js +115 -68
  17. package/dist/SaveNotice.js +71 -28
  18. package/dist/Select.js +183 -135
  19. package/dist/SelectList.js +59 -14
  20. package/dist/ThemeSelect.js +55 -4
  21. package/dist/apps.d.ts +1 -0
  22. package/dist/apps.js +50 -29
  23. package/dist/brand.js +251 -68
  24. package/dist/codemirror.js +116 -87
  25. package/dist/collections/CollectionGate.d.ts +52 -0
  26. package/dist/collections/CollectionGate.js +456 -0
  27. package/dist/collections/CollectionSaveWarning.d.ts +10 -0
  28. package/dist/collections/CollectionSaveWarning.js +28 -0
  29. package/dist/collections/CollectionSwitcher.d.ts +51 -0
  30. package/dist/collections/CollectionSwitcher.js +598 -0
  31. package/dist/collections/SetupReview.d.ts +9 -0
  32. package/dist/collections/SetupReview.js +216 -0
  33. package/dist/collections/copy.d.ts +100 -0
  34. package/dist/collections/copy.js +937 -0
  35. package/dist/collections/dialogs.d.ts +27 -0
  36. package/dist/collections/dialogs.js +169 -0
  37. package/dist/collections/model.d.ts +146 -0
  38. package/dist/collections/model.js +337 -0
  39. package/dist/collections/mount.d.ts +19 -0
  40. package/dist/collections/mount.js +56 -0
  41. package/dist/collections/parts.d.ts +86 -0
  42. package/dist/collections/parts.js +439 -0
  43. package/dist/collections/testing.d.ts +19 -0
  44. package/dist/collections/testing.js +39 -0
  45. package/dist/collections/use-collection-ui.d.ts +140 -0
  46. package/dist/collections/use-collection-ui.js +236 -0
  47. package/dist/collections.d.ts +19 -0
  48. package/dist/collections.js +13 -0
  49. package/dist/feedback-data.d.ts +13 -12
  50. package/dist/feedback-data.js +365 -168
  51. package/dist/flock.d.ts +63 -0
  52. package/dist/flock.js +140 -0
  53. package/dist/i18n.d.ts +6 -0
  54. package/dist/i18n.js +71 -0
  55. package/dist/locales/de/messages.json +1 -0
  56. package/dist/locales/en/messages.json +1 -0
  57. package/dist/locales/es/messages.json +1 -0
  58. package/dist/locales/fr/messages.json +1 -0
  59. package/dist/locales/it/messages.json +1 -0
  60. package/dist/locales/ja/messages.json +1 -0
  61. package/dist/locales/ko/messages.json +1 -0
  62. package/dist/locales/pt/messages.json +1 -0
  63. package/dist/locales/ru/messages.json +1 -0
  64. package/dist/locales/zh/messages.json +1 -0
  65. package/dist/mark-activity.js +82 -75
  66. package/dist/permission-selection.js +27 -17
  67. package/dist/popover.js +138 -130
  68. package/dist/screens.d.ts +20 -3
  69. package/dist/screens.js +275 -6
  70. package/dist/select-model.js +34 -28
  71. package/dist/text-diff.d.ts +1 -0
  72. package/dist/text-diff.js +106 -74
  73. package/dist/theme.js +34 -40
  74. package/package.json +56 -7
package/dist/theme.js CHANGED
@@ -2,58 +2,52 @@
2
2
  export const THEME_STORAGE_KEY = "mdbase:theme";
3
3
  export const themePreferences = ["system", "light", "dark"];
4
4
  /** Browser chrome colours matching the light and dark canvas tokens. */
5
- export const themeColors = { light: "#fcfcfd", dark: "#1b1d23" };
5
+ export const themeColors = {
6
+ light: "#fcfcfd",
7
+ dark: "#1b1d23"
8
+ };
6
9
  export function normalizeThemePreference(value) {
7
- return themePreferences.includes(value)
8
- ? value
9
- : "system";
10
+ return themePreferences.includes(value) ? value : "system";
10
11
  }
11
12
  /** Storage may be absent (server rendering, extension pages) or blocked; both mean System. */
12
13
  export function loadThemePreference(storage) {
13
- try {
14
- return normalizeThemePreference((storage ?? localStorage).getItem(THEME_STORAGE_KEY));
15
- }
16
- catch {
17
- return "system";
18
- }
14
+ try {
15
+ return normalizeThemePreference((storage ?? localStorage).getItem(THEME_STORAGE_KEY));
16
+ } catch {
17
+ return "system";
18
+ }
19
19
  }
20
20
  function prefersDark() {
21
- return typeof matchMedia === "function"
22
- && matchMedia("(prefers-color-scheme: dark)").matches;
21
+ return typeof matchMedia === "function" && matchMedia("(prefers-color-scheme: dark)").matches;
23
22
  }
24
23
  export function resolveDarkTheme(root = document.documentElement) {
25
- const applied = root.dataset.theme;
26
- return applied === "dark" || (applied !== "light" && prefersDark());
24
+ const applied = root.dataset.theme;
25
+ return applied === "dark" || applied !== "light" && prefersDark();
27
26
  }
28
27
  export function observeTheme(listener, root = document.documentElement) {
29
- const observer = new MutationObserver(listener);
30
- observer.observe(root, { attributeFilter: ["data-theme"] });
31
- const media = typeof matchMedia === "function"
32
- ? matchMedia("(prefers-color-scheme: dark)")
33
- : null;
34
- media?.addEventListener("change", listener);
35
- return () => {
36
- observer.disconnect();
37
- media?.removeEventListener("change", listener);
38
- };
28
+ const observer = new MutationObserver(listener);
29
+ observer.observe(root, {
30
+ attributeFilter: ["data-theme"]
31
+ });
32
+ const media = typeof matchMedia === "function" ? matchMedia("(prefers-color-scheme: dark)") : null;
33
+ media?.addEventListener("change", listener);
34
+ return () => {
35
+ observer.disconnect();
36
+ media?.removeEventListener("change", listener);
37
+ };
39
38
  }
40
39
  export function applyThemePreference(preference, root = document.documentElement) {
41
- if (preference === "system")
42
- root.removeAttribute("data-theme");
43
- else
44
- root.dataset.theme = preference;
45
- const dark = preference === "dark" || (preference === "system" && prefersDark());
46
- if (typeof document !== "undefined") {
47
- document.querySelector('meta[name="theme-color"]')
48
- ?.setAttribute("content", dark ? themeColors.dark : themeColors.light);
49
- }
40
+ if (preference === "system") root.removeAttribute("data-theme");else root.dataset.theme = preference;
41
+ const dark = preference === "dark" || preference === "system" && prefersDark();
42
+ if (typeof document !== "undefined") {
43
+ document.querySelector('meta[name="theme-color"]')?.setAttribute("content", dark ? themeColors.dark : themeColors.light);
44
+ }
50
45
  }
51
46
  export function saveThemePreference(preference, storage, root = document.documentElement) {
52
- try {
53
- (storage ?? localStorage).setItem(THEME_STORAGE_KEY, preference);
54
- }
55
- catch {
56
- // Theme selection still applies for this session when storage is unavailable.
57
- }
58
- applyThemePreference(preference, root);
47
+ try {
48
+ (storage ?? localStorage).setItem(THEME_STORAGE_KEY, preference);
49
+ } catch {
50
+ // Theme selection still applies for this session when storage is unavailable.
51
+ }
52
+ applyThemePreference(preference, root);
59
53
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdbase-dev/ui",
3
- "version": "0.1.0-beta.126",
3
+ "version": "0.1.0-beta.148",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -11,9 +11,14 @@
11
11
  },
12
12
  "homepage": "https://mdbase.dev",
13
13
  "sideEffects": [
14
- "*.css"
14
+ "*.css",
15
+ "./dist/i18n.js"
15
16
  ],
16
17
  "exports": {
18
+ "./i18n": {
19
+ "types": "./dist/i18n.d.ts",
20
+ "import": "./dist/i18n.js"
21
+ },
17
22
  "./app-switcher": {
18
23
  "types": "./dist/AppSwitcher.d.ts",
19
24
  "import": "./dist/AppSwitcher.js"
@@ -26,10 +31,22 @@
26
31
  "types": "./dist/brand.d.ts",
27
32
  "import": "./dist/brand.js"
28
33
  },
34
+ "./checkbox": {
35
+ "types": "./dist/Checkbox.d.ts",
36
+ "import": "./dist/Checkbox.js"
37
+ },
29
38
  "./codemirror": {
30
39
  "types": "./dist/codemirror.d.ts",
31
40
  "import": "./dist/codemirror.js"
32
41
  },
42
+ "./collections": {
43
+ "types": "./dist/collections.d.ts",
44
+ "import": "./dist/collections.js"
45
+ },
46
+ "./collections/testing": {
47
+ "types": "./dist/collections/testing.d.ts",
48
+ "import": "./dist/collections/testing.js"
49
+ },
33
50
  "./command-palette": {
34
51
  "types": "./dist/CommandPalette.d.ts",
35
52
  "import": "./dist/CommandPalette.js"
@@ -38,6 +55,10 @@
38
55
  "types": "./dist/Feedback.d.ts",
39
56
  "import": "./dist/Feedback.js"
40
57
  },
58
+ "./collection-mode": {
59
+ "types": "./dist/CollectionModeControl.d.ts",
60
+ "import": "./dist/CollectionModeControl.js"
61
+ },
41
62
  "./dialog": {
42
63
  "types": "./dist/Dialog.d.ts",
43
64
  "import": "./dist/Dialog.js"
@@ -79,6 +100,7 @@
79
100
  "import": "./dist/ThemeSelect.js"
80
101
  },
81
102
  "./brand.css": "./css/brand.css",
103
+ "./collections.css": "./css/collections.css",
82
104
  "./controls.css": "./css/controls.css",
83
105
  "./fonts.css": "./css/fonts.css",
84
106
  "./feedback.css": "./css/feedback.css",
@@ -98,25 +120,52 @@
98
120
  },
99
121
  "peerDependencies": {
100
122
  "@codemirror/view": "^6.0.0",
101
- "react": "^19.2.0"
123
+ "@lingui/core": "6.9.0",
124
+ "@lingui/react": "6.9.0",
125
+ "@mdbase-dev/i18n": "*",
126
+ "@mdbase-dev/sdk": "*",
127
+ "react": "^19.2.0",
128
+ "react-dom": "^19.2.0"
102
129
  },
103
130
  "devDependencies": {
131
+ "@babel/core": "^7.29.7",
132
+ "@babel/plugin-transform-react-jsx": "^7.29.7",
104
133
  "@codemirror/view": "^6.43.12",
134
+ "@lingui/babel-plugin-lingui-macro": "6.9.0",
135
+ "@lingui/cli": "6.9.0",
136
+ "@lingui/core": "6.9.0",
137
+ "@lingui/format-po": "6.9.0",
138
+ "@lingui/react": "6.9.0",
139
+ "@lingui/vite-plugin": "6.9.0",
140
+ "@mdbase-dev/sdk": "file:vendor/sdk-0.0.0-bd131b16.tgz",
141
+ "@rolldown/plugin-babel": "^0.2.4",
105
142
  "@types/react": "^19.3.0",
106
143
  "@types/react-dom": "^19.3.0",
144
+ "jsdom": "^29.1.1",
107
145
  "react": "^19.3.0",
108
146
  "react-dom": "^19.3.0",
109
147
  "typescript": "^7.0.2",
110
- "vitest": "^4.1.11"
148
+ "vitest": "^4.1.11",
149
+ "@mdbase-dev/i18n": "0.1.0-beta.148"
111
150
  },
112
151
  "peerDependenciesMeta": {
113
152
  "@codemirror/view": {
114
153
  "optional": true
154
+ },
155
+ "@mdbase-dev/sdk": {
156
+ "optional": true
157
+ },
158
+ "react-dom": {
159
+ "optional": true
115
160
  }
116
161
  },
117
162
  "scripts": {
118
- "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json",
119
- "test": "node ../../scripts/ci/vitest.mjs",
120
- "typecheck": "tsc -p tsconfig.json --noEmit"
163
+ "verify:shared": "pnpm --filter @mdbase-dev/i18n build && pnpm i18n:check && pnpm --filter @mdbase/connect-ui i18n:check && pnpm build && pnpm test && pnpm --filter @mdbase/connect-ui build && pnpm --filter @mdbase/connect-ui test && pnpm --filter @mdbase/connect-ui typecheck",
164
+ "i18n:extract": "mdbase-i18n extract",
165
+ "i18n:compile": "mdbase-i18n compile",
166
+ "i18n:check": "mdbase-i18n check",
167
+ "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && node scripts/compile-catalogues.mjs && tsc -p tsconfig.json && node scripts/compile-macros.mjs",
168
+ "test": "node scripts/compile-catalogues.mjs && node ../../scripts/ci/vitest.mjs",
169
+ "typecheck": "node scripts/compile-catalogues.mjs && tsc -p tsconfig.json --noEmit"
121
170
  }
122
171
  }