@iyulab/u-widgets 0.8.1 → 0.9.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iyulab/u-widgets",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "Declarative, data-driven widget system for visualization and input",
5
5
  "type": "module",
6
6
  "module": "./dist/u-widgets.js",
@@ -1,89 +0,0 @@
1
- import { g } from "./formdown-BWJ6QGJs.js";
2
- import { css as r } from "lit";
3
- function o(a) {
4
- const e = { ...a };
5
- if (e.mapping && "fields" in e.mapping && !e.fields) {
6
- const { fields: t, ...i } = e.mapping;
7
- e.fields = t, e.mapping = Object.keys(i).length > 0 ? i : void 0;
8
- }
9
- if (e.formdown && !e.fields)
10
- try {
11
- const i = g()(e.formdown, e.data);
12
- e.fields = i.fields, i.actions.length > 0 && !e.actions && (e.actions = i.actions);
13
- } catch (t) {
14
- console.warn("[u-widget:normalize] Failed to parse formdown:", t.message);
15
- }
16
- return e;
17
- }
18
- function p(a) {
19
- const { y: e, ...t } = a;
20
- return {
21
- ...t,
22
- y: e == null ? void 0 : typeof e == "string" ? [e] : e
23
- };
24
- }
25
- const n = r`
26
- :host {
27
- /* ── Colors (Light defaults) ── */
28
- --u-widget-bg: #fff;
29
- --u-widget-surface: #f1f5f9;
30
- --u-widget-text: #1a1a2e;
31
- --u-widget-text-secondary: #64748b;
32
- --u-widget-border: #e2e8f0;
33
- --u-widget-primary: #4f46e5;
34
- --u-widget-positive: #16a34a;
35
- --u-widget-negative: #dc2626;
36
- --u-widget-warning: #d97706;
37
-
38
- /* ── Spacing ── */
39
- --u-widget-gap: 16px;
40
- --u-widget-radius: 6px;
41
-
42
- /* ── Typography ── */
43
- --u-widget-font-family: system-ui, -apple-system, sans-serif;
44
- --u-widget-font-size: 0.875rem;
45
-
46
- /* ── Chart ── */
47
- --u-widget-chart-height: 300px;
48
-
49
- /* ── Shadow ── */
50
- --u-widget-shadow: 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06);
51
- --u-widget-shadow-hover: 0 4px 12px rgba(0,0,0,0.10), 0 2px 4px rgba(0,0,0,0.06);
52
- }
53
-
54
- @media (prefers-color-scheme: dark) {
55
- :host(:not([theme="light"])) {
56
- --u-widget-bg: #1e1e2e;
57
- --u-widget-surface: #2a2a3e;
58
- --u-widget-text: #e2e8f0;
59
- --u-widget-text-secondary: #94a3b8;
60
- --u-widget-border: #374151;
61
- --u-widget-primary: #818cf8;
62
- --u-widget-positive: #4ade80;
63
- --u-widget-negative: #f87171;
64
- --u-widget-warning: #fbbf24;
65
- --u-widget-shadow: 0 1px 3px rgba(0,0,0,0.3), 0 1px 2px rgba(0,0,0,0.2);
66
- --u-widget-shadow-hover: 0 4px 12px rgba(0,0,0,0.4), 0 2px 4px rgba(0,0,0,0.2);
67
- }
68
- }
69
-
70
- :host([theme="dark"]) {
71
- --u-widget-bg: #1e1e2e;
72
- --u-widget-surface: #2a2a3e;
73
- --u-widget-text: #e2e8f0;
74
- --u-widget-text-secondary: #94a3b8;
75
- --u-widget-border: #374151;
76
- --u-widget-primary: #818cf8;
77
- --u-widget-positive: #4ade80;
78
- --u-widget-negative: #f87171;
79
- --u-widget-warning: #fbbf24;
80
- --u-widget-shadow: 0 1px 3px rgba(0,0,0,0.3), 0 1px 2px rgba(0,0,0,0.2);
81
- --u-widget-shadow-hover: 0 4px 12px rgba(0,0,0,0.4), 0 2px 4px rgba(0,0,0,0.2);
82
- }
83
- `;
84
- export {
85
- p as a,
86
- o as n,
87
- n as t
88
- };
89
- //# sourceMappingURL=tokens-D5aWvczs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens-D5aWvczs.js","sources":["../src/core/normalize.ts","../src/styles/tokens.ts"],"sourcesContent":["import type { UWidgetSpec, NormalizedMapping, UWidgetMapping } from './types.js';\nimport { getFormdownParser } from './formdown.js';\n\n/**\n * Normalize a spec for internal processing.\n *\n * Transformations applied:\n * 1. Deprecated `mapping.fields` → top-level `fields`\n * 2. `formdown` string → parsed `fields` + `actions`\n *\n * Returns a shallow copy; the original spec is not mutated.\n *\n * @param spec - The widget spec to normalize.\n * @returns A normalized copy of the spec.\n */\nexport function normalize(spec: UWidgetSpec): UWidgetSpec {\n const result = { ...spec };\n\n // Normalize deprecated mapping.fields → top-level fields\n if (result.mapping && 'fields' in result.mapping && !result.fields) {\n const { fields, ...restMapping } = result.mapping as UWidgetMapping & {\n fields?: UWidgetSpec['fields'];\n };\n result.fields = fields;\n result.mapping = Object.keys(restMapping).length > 0 ? restMapping : undefined;\n }\n\n // Normalize formdown → fields + actions\n if (result.formdown && !result.fields) {\n try {\n const parser = getFormdownParser();\n const parsed = parser(result.formdown, result.data as Record<string, unknown> | undefined);\n result.fields = parsed.fields;\n if (parsed.actions.length > 0 && !result.actions) {\n result.actions = parsed.actions;\n }\n } catch (e) {\n console.warn('[u-widget:normalize] Failed to parse formdown:', (e as Error).message);\n }\n }\n\n return result;\n}\n\n/**\n * Normalize `mapping.y` to always be `string[]`.\n *\n * Converts `y: \"field\"` → `y: [\"field\"]` and passes arrays through unchanged.\n *\n * @param mapping - The original mapping from a widget spec.\n * @returns A new mapping object with `y` guaranteed to be `string[]` or `undefined`.\n */\nexport function normalizeMapping(mapping: UWidgetMapping): NormalizedMapping {\n const { y, ...rest } = mapping;\n return {\n ...rest,\n y: y == null ? undefined : typeof y === 'string' ? [y] : y,\n };\n}\n","import { css } from 'lit';\n\n/**\n * Shared CSS custom property tokens for all u-widget elements.\n *\n * **Token categories:**\n * - Colors: bg, surface, text, text-secondary, border, primary, positive, negative, warning\n * - Spacing: gap, radius\n * - Typography: font-family, font-size\n * - Chart: chart-height, chart-color-1..10\n *\n * **Theme modes:**\n * 1. Light mode: `:host` sets explicit color defaults for all tokens.\n * 2. Dark mode via `prefers-color-scheme: dark` (automatic, unless `theme=\"light\"`)\n * 3. Dark mode via `theme=\"dark\"` attribute (manual override)\n *\n * Host applications can override any `--u-widget-*` variable by styling the\n * element directly (e.g., `u-widget { --u-widget-text: blue; }`).\n * The `theme=\"dark\"` attribute is still useful for component-specific overrides\n * (e.g., code syntax highlight colors).\n */\nexport const themeStyles = css`\n :host {\n /* ── Colors (Light defaults) ── */\n --u-widget-bg: #fff;\n --u-widget-surface: #f1f5f9;\n --u-widget-text: #1a1a2e;\n --u-widget-text-secondary: #64748b;\n --u-widget-border: #e2e8f0;\n --u-widget-primary: #4f46e5;\n --u-widget-positive: #16a34a;\n --u-widget-negative: #dc2626;\n --u-widget-warning: #d97706;\n\n /* ── Spacing ── */\n --u-widget-gap: 16px;\n --u-widget-radius: 6px;\n\n /* ── Typography ── */\n --u-widget-font-family: system-ui, -apple-system, sans-serif;\n --u-widget-font-size: 0.875rem;\n\n /* ── Chart ── */\n --u-widget-chart-height: 300px;\n\n /* ── Shadow ── */\n --u-widget-shadow: 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06);\n --u-widget-shadow-hover: 0 4px 12px rgba(0,0,0,0.10), 0 2px 4px rgba(0,0,0,0.06);\n }\n\n @media (prefers-color-scheme: dark) {\n :host(:not([theme=\"light\"])) {\n --u-widget-bg: #1e1e2e;\n --u-widget-surface: #2a2a3e;\n --u-widget-text: #e2e8f0;\n --u-widget-text-secondary: #94a3b8;\n --u-widget-border: #374151;\n --u-widget-primary: #818cf8;\n --u-widget-positive: #4ade80;\n --u-widget-negative: #f87171;\n --u-widget-warning: #fbbf24;\n --u-widget-shadow: 0 1px 3px rgba(0,0,0,0.3), 0 1px 2px rgba(0,0,0,0.2);\n --u-widget-shadow-hover: 0 4px 12px rgba(0,0,0,0.4), 0 2px 4px rgba(0,0,0,0.2);\n }\n }\n\n :host([theme=\"dark\"]) {\n --u-widget-bg: #1e1e2e;\n --u-widget-surface: #2a2a3e;\n --u-widget-text: #e2e8f0;\n --u-widget-text-secondary: #94a3b8;\n --u-widget-border: #374151;\n --u-widget-primary: #818cf8;\n --u-widget-positive: #4ade80;\n --u-widget-negative: #f87171;\n --u-widget-warning: #fbbf24;\n --u-widget-shadow: 0 1px 3px rgba(0,0,0,0.3), 0 1px 2px rgba(0,0,0,0.2);\n --u-widget-shadow-hover: 0 4px 12px rgba(0,0,0,0.4), 0 2px 4px rgba(0,0,0,0.2);\n }\n`;\n"],"names":["normalize","spec","result","fields","restMapping","parsed","getFormdownParser","e","normalizeMapping","mapping","y","rest","themeStyles","css"],"mappings":";;AAeO,SAASA,EAAUC,GAAgC;AACxD,QAAMC,IAAS,EAAE,GAAGD,EAAA;AAGpB,MAAIC,EAAO,WAAW,YAAYA,EAAO,WAAW,CAACA,EAAO,QAAQ;AAClE,UAAM,EAAE,QAAAC,GAAQ,GAAGC,EAAA,IAAgBF,EAAO;AAG1C,IAAAA,EAAO,SAASC,GAChBD,EAAO,UAAU,OAAO,KAAKE,CAAW,EAAE,SAAS,IAAIA,IAAc;AAAA,EACvE;AAGA,MAAIF,EAAO,YAAY,CAACA,EAAO;AAC7B,QAAI;AAEF,YAAMG,IADSC,EAAA,EACOJ,EAAO,UAAUA,EAAO,IAA2C;AACzF,MAAAA,EAAO,SAASG,EAAO,QACnBA,EAAO,QAAQ,SAAS,KAAK,CAACH,EAAO,YACvCA,EAAO,UAAUG,EAAO;AAAA,IAE5B,SAASE,GAAG;AACV,cAAQ,KAAK,kDAAmDA,EAAY,OAAO;AAAA,IACrF;AAGF,SAAOL;AACT;AAUO,SAASM,EAAiBC,GAA4C;AAC3E,QAAM,EAAE,GAAAC,GAAG,GAAGC,EAAA,IAASF;AACvB,SAAO;AAAA,IACL,GAAGE;AAAA,IACH,GAAGD,KAAK,OAAO,SAAY,OAAOA,KAAM,WAAW,CAACA,CAAC,IAAIA;AAAA,EAAA;AAE7D;ACrCO,MAAME,IAAcC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}