@floegence/floe-webapp-core 0.87.0 → 0.87.1

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/floe.css CHANGED
@@ -22,6 +22,7 @@
22
22
  @import './themes/light.css';
23
23
  @import './themes/dark.css';
24
24
  @import './themes/shell-presets.generated.css';
25
+ @import './themes/porcelain-light.css';
25
26
 
26
27
 
27
28
  /*
@@ -9,5 +9,6 @@
9
9
  @import './themes/light.css';
10
10
  @import './themes/dark.css';
11
11
  @import './themes/shell-presets.generated.css';
12
+ @import './themes/porcelain-light.css';
12
13
  @import './surface.css';
13
14
  @import './input-focus.css';
@@ -1,5 +1,5 @@
1
1
  import { LIGHT_WINDOW_TOKENS } from './windowTokens.ts';
2
- import type { FloeThemePreset, FloeThemePresetMode } from './index';
2
+ import type { FloeMonacoThemeDefinition, FloeThemePreset, FloeThemePresetMode, FloeThemeTokenMap } from './index';
3
3
  export type FloeShellThemeMode = 'light' | 'dark';
4
4
  export interface FloeShellThemeSelection {
5
5
  version: 1;
@@ -49,6 +49,10 @@ interface ShellThemePaletteDefinition {
49
49
  fileIconColors?: Partial<Record<'primary' | 'warning' | 'info' | 'success' | 'error', string>>;
50
50
  status?: Partial<Record<keyof typeof LIGHT_STATUS, string>>;
51
51
  windowTokens?: Partial<Record<keyof typeof LIGHT_WINDOW_TOKENS, string>>;
52
+ /** Authored material and reading roles, shared by CSS and non-renderer hosts. */
53
+ semanticTokens?: FloeThemeTokenMap;
54
+ /** Complete inherited editor roles when the base syntax is unsuitable. */
55
+ monaco?: Partial<Pick<FloeMonacoThemeDefinition, 'rules' | 'colors'>>;
52
56
  syntax?: {
53
57
  comment: string;
54
58
  keyword: string;
@@ -88,7 +92,7 @@ export declare const builtInShellThemePresets: readonly [FloeThemePreset, FloeTh
88
92
  border?: string;
89
93
  colors: readonly [string, string, string, string, string];
90
94
  };
91
- monaco?: Partial<Record<"light" | "dark", import("./index").FloeMonacoThemeDefinition>>;
95
+ monaco?: Partial<Record<"light" | "dark", FloeMonacoThemeDefinition>>;
92
96
  }, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, {
93
97
  inheritsBaseTokens: true;
94
98
  semanticTokens: Readonly<Partial<Record<`--${string}`, string>>>;
@@ -105,7 +109,7 @@ export declare const builtInShellThemePresets: readonly [FloeThemePreset, FloeTh
105
109
  border?: string;
106
110
  colors: readonly [string, string, string, string, string];
107
111
  };
108
- monaco?: Partial<Record<"light" | "dark", import("./index").FloeMonacoThemeDefinition>>;
112
+ monaco?: Partial<Record<"light" | "dark", FloeMonacoThemeDefinition>>;
109
113
  }, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset, FloeThemePreset];
110
114
  export declare const BUILT_IN_SHELL_THEME_DEFAULTS: {
111
115
  readonly light: "classic-light";
@@ -1,5 +1,5 @@
1
- import { createProgressTokens as B } from "./progressTokens.js";
2
- import { DARK_WINDOW_TOKENS as k, LIGHT_WINDOW_TOKENS as E } from "./windowTokens.js";
1
+ import { createProgressTokens as k } from "./progressTokens.js";
2
+ import { DARK_WINDOW_TOKENS as B, LIGHT_WINDOW_TOKENS as E } from "./windowTokens.js";
3
3
  import { CLASSIC_LIGHT_SEMANTIC_TOKENS as t, CLASSIC_DARK_SEMANTIC_TOKENS as F } from "./classicSemanticTokens.js";
4
4
  const T = [
5
5
  "--floe-window-background",
@@ -112,7 +112,7 @@ function o(r) {
112
112
  function: s,
113
113
  constant: i
114
114
  }, g = {
115
- ...r.mode === "dark" ? k : E,
115
+ ...r.mode === "dark" ? B : E,
116
116
  ...r.windowTokens,
117
117
  "--background": r.background,
118
118
  "--foreground": r.foreground,
@@ -182,10 +182,10 @@ function o(r) {
182
182
  // selectionBackground so we don't inherit a near-white primary as glow source.
183
183
  "--glow": r.glow ?? (r.mode === "light" ? r.primary : r.selectionBackground)
184
184
  };
185
- Object.assign(g, B(r.mode, g));
186
- for (const [l, b] of Object.entries(r.fileIconColors ?? {}))
187
- g[`--floe-file-icon-${l}`] = b;
188
- return {
185
+ Object.assign(g, k(r.mode, g));
186
+ for (const [m, b] of Object.entries(r.fileIconColors ?? {}))
187
+ g[`--floe-file-icon-${m}`] = b;
188
+ return Object.assign(g, r.semanticTokens), {
189
189
  name: r.name,
190
190
  displayName: r.displayName,
191
191
  description: r.description,
@@ -220,7 +220,8 @@ function o(r) {
220
220
  { token: "entity.name.function", foreground: a.function },
221
221
  { token: "support.function", foreground: a.function },
222
222
  { token: "constant.language", foreground: a.constant },
223
- { token: "variable.predefined", foreground: a.constant }
223
+ { token: "variable.predefined", foreground: a.constant },
224
+ ...r.monaco?.rules ?? []
224
225
  ],
225
226
  colors: {
226
227
  "editor.background": r.background,
@@ -254,7 +255,8 @@ function o(r) {
254
255
  "editorInfo.foreground": e.info,
255
256
  "scrollbarSlider.background": `${r.input}66`,
256
257
  "scrollbarSlider.hoverBackground": `${r.input}99`,
257
- "scrollbarSlider.activeBackground": `${r.input}CC`
258
+ "scrollbarSlider.activeBackground": `${r.input}CC`,
259
+ ...r.monaco?.colors
258
260
  }
259
261
  }
260
262
  },
@@ -329,38 +331,88 @@ const C = {
329
331
  inheritsBaseTokens: !0,
330
332
  semanticTokens: F,
331
333
  tokens: void 0
332
- }, D = [
334
+ }, h = [
333
335
  o({
334
336
  name: "porcelain-light",
335
- inlineCode: { foreground: "#006A85", background: "#E9EBE8" },
337
+ inlineCode: { foreground: "#674778", background: "#F0F0F0" },
336
338
  displayName: "Porcelain Light",
337
- description: "Original Redeven warm ivory and blue-gray ink, with quiet modern surfaces.",
339
+ description: "Clean porcelain whites, neutral layers, and restrained charcoal.",
338
340
  fileIconColors: {
339
- primary: "hsl(214 26% 17%)",
341
+ primary: "#343434",
340
342
  warning: "hsl(38 92% 50%)",
341
343
  info: "hsl(217 91% 60%)",
342
344
  success: "oklch(0.68 0.16 150)",
343
345
  error: "oklch(0.65 0.2 25)"
344
346
  },
345
347
  mode: "light",
346
- background: "#F4F1ED",
347
- foreground: "#202A37",
348
- card: "#FFFDFA",
349
- muted: "#F1EFEC",
350
- accent: "#E4E1DD",
351
- mutedForeground: "#576579",
352
- primary: "#202A37",
353
- primaryForeground: "#FFFDFA",
354
- border: "#D8D3CC",
355
- input: "#828891",
356
- sidebar: "#EEECE9",
348
+ background: "#FAFAFA",
349
+ foreground: "#292929",
350
+ card: "#FFFFFF",
351
+ muted: "#F4F4F4",
352
+ accent: "#EEEEEE",
353
+ mutedForeground: "#686868",
354
+ primary: "#343434",
355
+ primaryForeground: "#FFFFFF",
356
+ border: "#DEDEDE",
357
+ input: "#878787",
358
+ sidebar: "#F7F7F7",
357
359
  terminalBackground: "#202A37",
358
360
  terminalForeground: "#EBEBEB",
359
- selectionBackground: "#2671D9",
361
+ selectionBackground: "#343434",
360
362
  selectionForeground: "#FFFFFF",
361
- chart: ["#202A37", "#5A687C", "#2671D9", "#287A4B", "#835800"],
363
+ chart: ["#343434", "#626262", "#2671D9", "#287A4B", "#835800"],
364
+ semanticTokens: {
365
+ "--accent-foreground": "#353535",
366
+ "--sidebar-accent": "#E9E9E9",
367
+ "--sidebar-accent-foreground": "#353535",
368
+ "--activity-bar-foreground-active": "#343434",
369
+ "--selection-on-primary-bg": "#EAEAEA",
370
+ "--selection-on-primary-fg": "#292929",
371
+ "--selection-code-bg": "#EAEAEA",
372
+ "--selection-code-fg": "#292929",
373
+ "--floe-progress-text-base": "#292929",
374
+ "--floe-progress-text-peak": "#686868",
375
+ "--floe-progress-primary-base": "#343434",
376
+ "--floe-field-fill": "#FAFAFA",
377
+ "--floe-field-fill-hover": "#F5F5F5",
378
+ "--floe-field-placeholder": "#686868",
379
+ "--floe-ink-quiet": "#686868",
380
+ "--floe-ink-ghost": "#686868",
381
+ "--floe-field-edge": "#C4C4C4",
382
+ "--floe-field-edge-hover": "#A3A3A3",
383
+ "--floe-control-edge": "#878787",
384
+ "--floe-control-edge-hover": "#686868",
385
+ "--floe-well": "#F6F6F6",
386
+ "--floe-well-strong": "#F0F0F0",
387
+ "--floe-well-on-plane": "#F6F6F6",
388
+ "--floe-workbench-canvas": "#F4F4F4"
389
+ },
390
+ monaco: {
391
+ rules: [
392
+ { token: "attribute.name", foreground: "#9C225E" },
393
+ { token: "attribute.value", foreground: "#26736F" },
394
+ { token: "attribute.value.number", foreground: "#8A5A00" },
395
+ { token: "attribute.value.unit", foreground: "#8A5A00" },
396
+ { token: "tag", foreground: "#245B9B" },
397
+ { token: "metatag", foreground: "#005FB8" },
398
+ { token: "metatag.content", foreground: "#26736F" },
399
+ { token: "delimiter", foreground: "#292929" },
400
+ { token: "delimiter.bracket", foreground: "#292929" },
401
+ { token: "operator", foreground: "#292929" },
402
+ { token: "regexp", foreground: "#26736F" },
403
+ { token: "invalid", foreground: "#B32635" },
404
+ { token: "string.invalid", foreground: "#B32635" }
405
+ ],
406
+ colors: {
407
+ "editor.inactiveSelectionBackground": "#EAEAEA",
408
+ "editor.selectionHighlightBackground": "#EAEAEA",
409
+ "editor.findMatchBackground": "#EAEAEA",
410
+ "editor.findMatchHighlightBackground": "#EEEEEE",
411
+ "editor.findMatchBorder": "#343434"
412
+ }
413
+ },
362
414
  syntax: {
363
- comment: "#5A687C",
415
+ comment: "#686868",
364
416
  keyword: "#005FB8",
365
417
  string: "#26736F",
366
418
  number: "#8A5A00",
@@ -1085,12 +1137,12 @@ const C = {
1085
1137
  light: "classic-light",
1086
1138
  dark: "classic-dark"
1087
1139
  };
1088
- function h(r, e) {
1140
+ function f(r, e) {
1089
1141
  const n = r.mode ?? "both";
1090
1142
  return n === "both" || n === e;
1091
1143
  }
1092
- function f(r, e) {
1093
- return r.filter((n) => h(n, e));
1144
+ function D(r, e) {
1145
+ return r.filter((n) => f(n, e));
1094
1146
  }
1095
1147
  function w(r) {
1096
1148
  const e = /* @__PURE__ */ new Set();
@@ -1100,27 +1152,27 @@ function w(r) {
1100
1152
  e.add(n.name);
1101
1153
  }
1102
1154
  }
1103
- function m(r, e, n, d) {
1104
- const c = f(r, e);
1155
+ function l(r, e, n, d) {
1156
+ const c = D(r, e);
1105
1157
  return n && c.some((u) => u.name === n) ? n : d && c.some((u) => u.name === d) ? d : c[0]?.name;
1106
1158
  }
1107
1159
  function L(r, e, n = {}) {
1108
1160
  const d = typeof r == "object" && r !== null && !Array.isArray(r) ? r : void 0, c = d?.version === 1, u = c && typeof d.light == "string" ? d.light : void 0, i = c && typeof d.dark == "string" ? d.dark : void 0;
1109
1161
  return {
1110
1162
  version: 1,
1111
- light: m(e, "light", u, n.light),
1112
- dark: m(e, "dark", i, n.dark)
1163
+ light: l(e, "light", u, n.light),
1164
+ dark: l(e, "dark", i, n.dark)
1113
1165
  };
1114
1166
  }
1115
- w(D);
1167
+ w(h);
1116
1168
  export {
1117
1169
  x as BUILT_IN_SHELL_THEME_DEFAULTS,
1118
1170
  T as REQUIRED_SHELL_THEME_TOKENS,
1119
1171
  w as assertUniqueThemePresetNames,
1120
- D as builtInShellThemePresets,
1172
+ h as builtInShellThemePresets,
1121
1173
  o as createShellThemePreset,
1122
- f as getShellThemePresetsForMode,
1174
+ D as getShellThemePresetsForMode,
1123
1175
  L as normalizeShellThemeSelection,
1124
- h as presetSupportsMode,
1125
- m as resolveShellThemePresetName
1176
+ f as presetSupportsMode,
1177
+ l as resolveShellThemePresetName
1126
1178
  };