@mdbase-dev/ui 0.1.0-beta.125 → 0.1.0-beta.147

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 (77) hide show
  1. package/README.md +159 -0
  2. package/css/brand.css +10 -10
  3. package/css/collections.css +978 -0
  4. package/css/controls.css +220 -43
  5. package/css/feedback.css +20 -20
  6. package/css/fonts.css +2 -3
  7. package/css/palette.css +10 -10
  8. package/css/screens.css +58 -16
  9. package/css/tokens.css +43 -3
  10. package/dist/AppSwitcher.js +187 -33
  11. package/dist/Checkbox.d.ts +14 -0
  12. package/dist/Checkbox.js +32 -0
  13. package/dist/CommandPalette.d.ts +4 -2
  14. package/dist/CommandPalette.js +275 -103
  15. package/dist/Dialog.js +72 -25
  16. package/dist/Feedback.js +763 -229
  17. package/dist/FeedbackMarkup.d.ts +1 -1
  18. package/dist/FeedbackMarkup.js +326 -125
  19. package/dist/FeedbackVerification.js +115 -68
  20. package/dist/SaveNotice.js +71 -28
  21. package/dist/Select.js +183 -135
  22. package/dist/SelectList.js +59 -14
  23. package/dist/ThemeSelect.js +55 -4
  24. package/dist/apps.d.ts +1 -0
  25. package/dist/apps.js +50 -29
  26. package/dist/brand.js +251 -68
  27. package/dist/codemirror.js +116 -87
  28. package/dist/collections/CollectionGate.d.ts +52 -0
  29. package/dist/collections/CollectionGate.js +456 -0
  30. package/dist/collections/CollectionSaveWarning.d.ts +10 -0
  31. package/dist/collections/CollectionSaveWarning.js +28 -0
  32. package/dist/collections/CollectionSwitcher.d.ts +26 -0
  33. package/dist/collections/CollectionSwitcher.js +579 -0
  34. package/dist/collections/SetupReview.d.ts +9 -0
  35. package/dist/collections/SetupReview.js +175 -0
  36. package/dist/collections/copy.d.ts +100 -0
  37. package/dist/collections/copy.js +937 -0
  38. package/dist/collections/dialogs.d.ts +27 -0
  39. package/dist/collections/dialogs.js +169 -0
  40. package/dist/collections/model.d.ts +146 -0
  41. package/dist/collections/model.js +337 -0
  42. package/dist/collections/mount.d.ts +18 -0
  43. package/dist/collections/mount.js +56 -0
  44. package/dist/collections/parts.d.ts +86 -0
  45. package/dist/collections/parts.js +439 -0
  46. package/dist/collections/testing.d.ts +19 -0
  47. package/dist/collections/testing.js +39 -0
  48. package/dist/collections/use-collection-ui.d.ts +140 -0
  49. package/dist/collections/use-collection-ui.js +236 -0
  50. package/dist/collections.d.ts +19 -0
  51. package/dist/collections.js +13 -0
  52. package/dist/feedback-data.d.ts +13 -12
  53. package/dist/feedback-data.js +365 -168
  54. package/dist/flock.d.ts +63 -0
  55. package/dist/flock.js +140 -0
  56. package/dist/i18n.d.ts +6 -0
  57. package/dist/i18n.js +71 -0
  58. package/dist/locales/de/messages.json +1 -0
  59. package/dist/locales/en/messages.json +1 -0
  60. package/dist/locales/es/messages.json +1 -0
  61. package/dist/locales/fr/messages.json +1 -0
  62. package/dist/locales/it/messages.json +1 -0
  63. package/dist/locales/ja/messages.json +1 -0
  64. package/dist/locales/ko/messages.json +1 -0
  65. package/dist/locales/pt/messages.json +1 -0
  66. package/dist/locales/ru/messages.json +1 -0
  67. package/dist/locales/zh/messages.json +1 -0
  68. package/dist/mark-activity.js +82 -75
  69. package/dist/permission-selection.js +27 -17
  70. package/dist/popover.js +138 -130
  71. package/dist/screens.d.ts +20 -3
  72. package/dist/screens.js +275 -6
  73. package/dist/select-model.js +34 -28
  74. package/dist/text-diff.d.ts +1 -0
  75. package/dist/text-diff.js +106 -74
  76. package/dist/theme.js +34 -40
  77. package/package.json +53 -8
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.125",
3
+ "version": "0.1.0-beta.147",
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"
@@ -79,6 +96,7 @@
79
96
  "import": "./dist/ThemeSelect.js"
80
97
  },
81
98
  "./brand.css": "./css/brand.css",
99
+ "./collections.css": "./css/collections.css",
82
100
  "./controls.css": "./css/controls.css",
83
101
  "./fonts.css": "./css/fonts.css",
84
102
  "./feedback.css": "./css/feedback.css",
@@ -93,30 +111,57 @@
93
111
  "README.md"
94
112
  ],
95
113
  "dependencies": {
96
- "@fontsource/atkinson-hyperlegible": "^5.3.0",
114
+ "@fontsource-variable/atkinson-hyperlegible-next": "^5.3.0",
97
115
  "@fontsource/azeret-mono": "^5.3.0"
98
116
  },
99
117
  "peerDependencies": {
100
118
  "@codemirror/view": "^6.0.0",
101
- "react": "^19.2.0"
119
+ "@lingui/core": "6.9.0",
120
+ "@lingui/react": "6.9.0",
121
+ "@mdbase-dev/i18n": "*",
122
+ "@mdbase-dev/sdk": "*",
123
+ "react": "^19.2.0",
124
+ "react-dom": "^19.2.0"
102
125
  },
103
126
  "devDependencies": {
127
+ "@babel/core": "^7.29.7",
128
+ "@babel/plugin-transform-react-jsx": "^7.29.7",
104
129
  "@codemirror/view": "^6.43.12",
130
+ "@lingui/babel-plugin-lingui-macro": "6.9.0",
131
+ "@lingui/cli": "6.9.0",
132
+ "@lingui/core": "6.9.0",
133
+ "@lingui/format-po": "6.9.0",
134
+ "@lingui/react": "6.9.0",
135
+ "@lingui/vite-plugin": "6.9.0",
136
+ "@mdbase-dev/sdk": "file:vendor/sdk-0.0.0-bd131b16.tgz",
137
+ "@rolldown/plugin-babel": "^0.2.4",
105
138
  "@types/react": "^19.3.0",
106
139
  "@types/react-dom": "^19.3.0",
140
+ "jsdom": "^29.1.1",
107
141
  "react": "^19.3.0",
108
142
  "react-dom": "^19.3.0",
109
143
  "typescript": "^7.0.2",
110
- "vitest": "^4.1.10"
144
+ "vitest": "^4.1.11",
145
+ "@mdbase-dev/i18n": "0.1.0-beta.147"
111
146
  },
112
147
  "peerDependenciesMeta": {
113
148
  "@codemirror/view": {
114
149
  "optional": true
150
+ },
151
+ "@mdbase-dev/sdk": {
152
+ "optional": true
153
+ },
154
+ "react-dom": {
155
+ "optional": true
115
156
  }
116
157
  },
117
158
  "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"
159
+ "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",
160
+ "i18n:extract": "mdbase-i18n extract",
161
+ "i18n:compile": "mdbase-i18n compile",
162
+ "i18n:check": "mdbase-i18n check",
163
+ "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",
164
+ "test": "node scripts/compile-catalogues.mjs && node ../../scripts/ci/vitest.mjs",
165
+ "typecheck": "node scripts/compile-catalogues.mjs && tsc -p tsconfig.json --noEmit"
121
166
  }
122
167
  }