@takazudo/zdtp 0.5.2 → 0.6.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.
Files changed (114) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/PORTABLE-CONTRACT.md +120 -0
  3. package/README.md +82 -0
  4. package/dist/apply/build-apply-overrides.d.ts +2 -2
  5. package/dist/apply/last-applied.d.ts +1 -1
  6. package/dist/apply/reconcile-applied.d.ts +2 -2
  7. package/dist/apply/route-tokens-to-files.d.ts +1 -1
  8. package/dist/apply/tier-resolver.d.ts +1 -1
  9. package/dist/apply-modal.d.ts +2 -2
  10. package/dist/astro/host-adapter.js +3 -3
  11. package/dist/astro/index.d.ts +8 -8
  12. package/dist/astro/index.js +1 -1
  13. package/dist/{autoload-state-BI4-9A58.js → autoload-state-CGnis85c.js} +1 -1
  14. package/dist/bulk/bulk-actions.d.ts +3 -3
  15. package/dist/bulk/index.d.ts +2 -2
  16. package/dist/chain/index.d.ts +2 -2
  17. package/dist/chain/token-chain-context.d.ts +3 -3
  18. package/dist/chain/token-chain-popover.d.ts +2 -2
  19. package/dist/changed/contribution.d.ts +5 -5
  20. package/dist/changed/footer-content.d.ts +4 -4
  21. package/dist/changed/index.d.ts +4 -4
  22. package/dist/components/color-picker/color-field.d.ts +1 -1
  23. package/dist/components/color-picker/index.d.ts +2 -2
  24. package/dist/components/palette-chart/index.d.ts +2 -2
  25. package/dist/components/palette-chart/palette-chart.d.ts +4 -4
  26. package/dist/config/cluster-config.d.ts +4 -4
  27. package/dist/config/color-scheme-utils.d.ts +1 -1
  28. package/dist/config/panel-config.d.ts +5 -5
  29. package/dist/controls/tier-ref-selector.d.ts +1 -1
  30. package/dist/dashboard/index.d.ts +4 -0
  31. package/dist/dashboard/index.js +407 -0
  32. package/dist/dashboard/model.d.ts +7 -0
  33. package/dist/dashboard/styles.css +294 -0
  34. package/dist/dashboard/token-dashboard.d.ts +23 -0
  35. package/dist/dashboard/types.d.ts +62 -0
  36. package/dist/dom-tweaker/dom-tweaker-diff-action-link.d.ts +1 -1
  37. package/dist/dom-tweaker/dom-tweaker-orchestrator.d.ts +1 -1
  38. package/dist/dom-tweaker/dom-tweaker-state.d.ts +1 -1
  39. package/dist/dom-tweaker/lazy/class-editor-popup.d.ts +1 -1
  40. package/dist/dom-tweaker/lazy/diff-export-modal.d.ts +1 -1
  41. package/dist/dom-tweaker/lazy/index.d.ts +2 -2
  42. package/dist/element-inspect/element-inspect-context.d.ts +1 -1
  43. package/dist/element-inspect/element-inspect-orchestrator.d.ts +3 -3
  44. package/dist/element-inspect/element-inspect-overlay.d.ts +1 -1
  45. package/dist/element-inspect/find-tokens-for-element.d.ts +1 -1
  46. package/dist/element-inspect/index.d.ts +8 -8
  47. package/dist/element-path/element-path-state.d.ts +1 -1
  48. package/dist/element-path/index.d.ts +7 -7
  49. package/dist/export-modal.d.ts +2 -2
  50. package/dist/highlight/highlight-orchestrator.d.ts +2 -2
  51. package/dist/highlight/highlight-state.d.ts +1 -1
  52. package/dist/highlight/highlight-toggle-button.d.ts +2 -2
  53. package/dist/history/buttons.d.ts +1 -1
  54. package/dist/history/index.d.ts +3 -3
  55. package/dist/history/rail.d.ts +2 -2
  56. package/dist/history/snapshots.d.ts +2 -2
  57. package/dist/import-modal.d.ts +2 -2
  58. package/dist/{index-ChsJ5u4d.js → index-DWs1XPfy.js} +993 -993
  59. package/dist/{index-CAQf4HKm.js → index-LYsbHWcy.js} +2 -2
  60. package/dist/index.d.ts +14 -14
  61. package/dist/index.js +14 -13
  62. package/dist/{panel-config-CqbuB0nh.js → panel-config-Crn5QJGy.js} +243 -208
  63. package/dist/panel.d.ts +2 -2
  64. package/dist/picker/index.d.ts +4 -4
  65. package/dist/search/command-palette.d.ts +3 -3
  66. package/dist/search/contribution.d.ts +1 -1
  67. package/dist/search/index.d.ts +4 -4
  68. package/dist/search/match-bar.d.ts +1 -1
  69. package/dist/search/token-search.d.ts +3 -3
  70. package/dist/server/create-apply-handler.d.ts +2 -2
  71. package/dist/server/index.d.ts +6 -6
  72. package/dist/shell/dock-mode-switch.d.ts +1 -1
  73. package/dist/shell/regions.d.ts +1 -1
  74. package/dist/shell/tab-bar.d.ts +1 -1
  75. package/dist/shell/tab-overflow-popover.d.ts +1 -1
  76. package/dist/specimen/on-page-specimen.d.ts +3 -3
  77. package/dist/specimen/preview-glyphs.d.ts +1 -1
  78. package/dist/specimen/specimen-state.d.ts +1 -1
  79. package/dist/specimen/specimen-tab-body.d.ts +5 -5
  80. package/dist/specimen/specimen-toolbar.d.ts +1 -1
  81. package/dist/specimen/specimen-values.d.ts +1 -1
  82. package/dist/state/autoload-state.d.ts +1 -1
  83. package/dist/state/history.d.ts +1 -1
  84. package/dist/state/persist.d.ts +3 -3
  85. package/dist/state/transaction.d.ts +3 -3
  86. package/dist/state/tweak-state.d.ts +12 -12
  87. package/dist/tabs/_generic-item-editor.d.ts +1 -1
  88. package/dist/tabs/color-tab.d.ts +6 -6
  89. package/dist/tabs/flat/flat-tab.d.ts +5 -5
  90. package/dist/tabs/flat/index.d.ts +8 -8
  91. package/dist/tabs/flat/scroll-to-token-row.d.ts +1 -1
  92. package/dist/tabs/flat/tier-section.d.ts +3 -3
  93. package/dist/tabs/flat/token-controller.d.ts +1 -1
  94. package/dist/tabs/flat/token-row.d.ts +2 -2
  95. package/dist/tabs/flat/types.d.ts +1 -1
  96. package/dist/tabs/font-tab.d.ts +6 -6
  97. package/dist/tabs/generic-tab.d.ts +4 -4
  98. package/dist/tabs/notes-tab.d.ts +1 -1
  99. package/dist/tabs/palette/palette-check-view.d.ts +3 -3
  100. package/dist/tabs/palette/palette-edit-view.d.ts +3 -3
  101. package/dist/tabs/palette/palette-readout.d.ts +1 -1
  102. package/dist/tabs/palette/palette-tab.d.ts +3 -3
  103. package/dist/tabs/size-tab.d.ts +5 -5
  104. package/dist/tabs/spacing-tab.d.ts +5 -5
  105. package/dist/testing.d.ts +6 -6
  106. package/dist/testing.js +16 -15
  107. package/dist/tokens/tier-model.d.ts +2 -2
  108. package/dist/{tweak-state-c53KtLHq.js → tweak-state-Dzr5kDhX.js} +210 -207
  109. package/dist/utils/color-oklch.d.ts +2 -2
  110. package/dist/utils/design-token-serde.d.ts +2 -2
  111. package/dist/utils/token-diff.d.ts +3 -3
  112. package/dist/utils/token-graph.d.ts +4 -4
  113. package/dist/utils/token-index.d.ts +2 -2
  114. package/package.json +11 -4
@@ -0,0 +1,294 @@
1
+ /* Static dashboard chrome deliberately uses no inventory custom properties.
2
+ The namespace and div/span markup protect documentation hosts from tag resets. */
3
+ .zdtp-dashboard,
4
+ .zdtp-dashboard * {
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ .zdtp-dashboard {
9
+ min-inline-size: 0;
10
+ max-inline-size: 100%;
11
+ border: 1px solid #dce1e8;
12
+ border-radius: 10px;
13
+ background: #f8fafc;
14
+ color: #182131;
15
+ color-scheme: light;
16
+ font: 400 14px/1.5 system-ui, sans-serif;
17
+ letter-spacing: normal;
18
+ text-align: start;
19
+ text-transform: none;
20
+ white-space: normal;
21
+ overflow-wrap: anywhere;
22
+ }
23
+
24
+ .zdtp-dashboard :where(div, span) {
25
+ min-inline-size: 0;
26
+ margin: 0;
27
+ padding: 0;
28
+ border: 0;
29
+ font: inherit;
30
+ color: inherit;
31
+ letter-spacing: inherit;
32
+ text-transform: none;
33
+ box-shadow: none;
34
+ }
35
+
36
+ .zdtp-dashboard__header {
37
+ display: grid;
38
+ gap: 8px;
39
+ padding: 20px;
40
+ border-block-end: 1px solid #dce1e8;
41
+ }
42
+
43
+ .zdtp-dashboard__title {
44
+ font-size: 22px;
45
+ font-weight: 700;
46
+ line-height: 1.25;
47
+ }
48
+
49
+ .zdtp-dashboard__summary {
50
+ display: flex;
51
+ flex-wrap: wrap;
52
+ align-items: baseline;
53
+ gap: 4px 16px;
54
+ color: #536174;
55
+ font-size: 12px;
56
+ }
57
+
58
+ .zdtp-dashboard__count {
59
+ color: #182131;
60
+ font-weight: 600;
61
+ }
62
+
63
+ .zdtp-dashboard__inventory {
64
+ display: grid;
65
+ gap: 32px;
66
+ padding: 20px;
67
+ }
68
+
69
+ .zdtp-dashboard__tab {
70
+ display: grid;
71
+ gap: 20px;
72
+ }
73
+
74
+ .zdtp-dashboard__tab-header {
75
+ display: flex;
76
+ flex-wrap: wrap;
77
+ align-items: baseline;
78
+ gap: 4px 12px;
79
+ padding-block-end: 8px;
80
+ border-block-end: 1px solid #dce1e8;
81
+ }
82
+
83
+ .zdtp-dashboard__tab-title {
84
+ font-size: 18px;
85
+ font-weight: 700;
86
+ }
87
+
88
+ .zdtp-dashboard__tab-count {
89
+ color: #536174;
90
+ font-size: 12px;
91
+ }
92
+
93
+ .zdtp-dashboard__tier {
94
+ display: grid;
95
+ gap: 10px;
96
+ }
97
+
98
+ .zdtp-dashboard__tier-title {
99
+ font-weight: 600;
100
+ }
101
+
102
+ .zdtp-dashboard__grid {
103
+ display: grid;
104
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr));
105
+ gap: 12px;
106
+ }
107
+
108
+ .zdtp-dashboard__token {
109
+ display: flex;
110
+ flex-direction: column;
111
+ border: 1px solid #dce1e8;
112
+ border-radius: 6px;
113
+ background: #fff;
114
+ color: #182131;
115
+ }
116
+
117
+ .zdtp-dashboard__token-content {
118
+ display: grid;
119
+ align-content: start;
120
+ gap: 5px;
121
+ padding: 12px;
122
+ }
123
+
124
+ .zdtp-dashboard__name {
125
+ font-weight: 600;
126
+ }
127
+
128
+ .zdtp-dashboard__variable,
129
+ .zdtp-dashboard__value,
130
+ .zdtp-dashboard__reference {
131
+ font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
132
+ font-size: 12px;
133
+ white-space: pre-wrap;
134
+ }
135
+
136
+ .zdtp-dashboard__variable,
137
+ .zdtp-dashboard__reference {
138
+ color: #536174;
139
+ }
140
+
141
+ .zdtp-dashboard__value {
142
+ padding-block-start: 5px;
143
+ color: #182131;
144
+ }
145
+
146
+ .zdtp-dashboard__diagnostic {
147
+ margin-block-start: 3px;
148
+ padding: 8px;
149
+ border-inline-start: 2px solid #9d641a;
150
+ background: #fff5e6;
151
+ color: #704612;
152
+ font-size: 12px;
153
+ }
154
+
155
+ .zdtp-dashboard__preview {
156
+ display: flex;
157
+ align-items: center;
158
+ padding: 16px;
159
+ block-size: 88px;
160
+ border-block-end: 1px solid #dce1e8;
161
+ border-start-start-radius: 5px;
162
+ border-start-end-radius: 5px;
163
+ background: #eef1f5;
164
+ color: #182131;
165
+ overflow: hidden;
166
+ }
167
+
168
+ .zdtp-dashboard[data-mode='dark'] .zdtp-dashboard__preview {
169
+ background: #222936;
170
+ color: #f1f5f9;
171
+ }
172
+
173
+ .zdtp-dashboard__sample {
174
+ display: block;
175
+ flex: none;
176
+ max-inline-size: 100%;
177
+ }
178
+
179
+ .zdtp-dashboard__preview--color {
180
+ padding: 0;
181
+ background: repeating-conic-gradient(#e2e6eb 0% 25%, #fff 0% 50%) 0 / 16px 16px;
182
+ }
183
+
184
+ .zdtp-dashboard[data-mode='dark'] .zdtp-dashboard__preview--color {
185
+ background: repeating-conic-gradient(#3e4652 0% 25%, #252c37 0% 50%) 0 / 16px 16px;
186
+ }
187
+
188
+ .zdtp-dashboard__sample--color {
189
+ inline-size: 100%;
190
+ block-size: 100%;
191
+ }
192
+
193
+ .zdtp-dashboard__sample--bar {
194
+ block-size: 16px;
195
+ background: currentColor;
196
+ }
197
+
198
+ .zdtp-dashboard__sample--radius,
199
+ .zdtp-dashboard__sample--shadow {
200
+ inline-size: 64px;
201
+ block-size: 48px;
202
+ background: #fff;
203
+ border: 1px solid #8290a3;
204
+ }
205
+
206
+ .zdtp-dashboard__sample--family,
207
+ .zdtp-dashboard__sample--weight,
208
+ .zdtp-dashboard__sample--line-height {
209
+ font-size: 18px;
210
+ }
211
+
212
+ .zdtp-dashboard__sample--line-height {
213
+ white-space: pre-line;
214
+ }
215
+
216
+ .zdtp-dashboard__empty {
217
+ color: #536174;
218
+ }
219
+
220
+ /* Wide rows use their embedding width, including narrow documentation columns. */
221
+ .zdtp-dashboard { container: zdtp-dashboard / inline-size; }
222
+ .zdtp-dashboard__token--wide {
223
+ grid-column: 1 / -1;
224
+ display: grid;
225
+ grid-template-columns: minmax(0, 1fr);
226
+ border-radius: 0;
227
+ }
228
+ .zdtp-dashboard__token--wide > .zdtp-dashboard__token-content { order: -1; }
229
+ .zdtp-dashboard__scroll {
230
+ max-inline-size: 100%;
231
+ overflow: auto;
232
+ overscroll-behavior-inline: contain;
233
+ }
234
+ .zdtp-dashboard__scroll:focus-visible {
235
+ outline: 2px solid #245caa;
236
+ outline-offset: -2px;
237
+ }
238
+ .zdtp-dashboard__ruler-wrap { padding: 12px; }
239
+ .zdtp-dashboard__ruler-caption,
240
+ .zdtp-dashboard__preview-unavailable {
241
+ color: #536174;
242
+ font-size: 12px;
243
+ padding: 12px;
244
+ }
245
+ .zdtp-dashboard__ruler-caption { padding: 0 0 8px; }
246
+ .zdtp-dashboard__ruler {
247
+ position: relative;
248
+ block-size: 64px;
249
+ padding-block-start: 36px;
250
+ background:
251
+ repeating-linear-gradient(to right, #8290a3 0 1px, transparent 1px 64px) left 24px / 100% 12px no-repeat,
252
+ repeating-linear-gradient(to right, #c4ccd7 0 1px, transparent 1px 8px) left 30px / 100% 6px no-repeat;
253
+ }
254
+ .zdtp-dashboard__ruler-origin { position: absolute; inset-block-start: 0; inset-inline-start: 0; font-size: 12px; }
255
+ .zdtp-dashboard__sample--bar {
256
+ max-inline-size: none;
257
+ min-inline-size: 0;
258
+ border: 0;
259
+ padding: 0;
260
+ background: #526c92;
261
+ }
262
+ .zdtp-dashboard__palette {
263
+ display: flex;
264
+ gap: 0;
265
+ inline-size: max-content;
266
+ min-inline-size: 100%;
267
+ }
268
+ .zdtp-dashboard__palette > .zdtp-dashboard__token {
269
+ display: grid;
270
+ grid-template-rows: minmax(88px, auto) 1fr;
271
+ align-content: start;
272
+ flex: 1 0 156px;
273
+ inline-size: 156px;
274
+ border-radius: 0;
275
+ }
276
+ .zdtp-dashboard__palette > .zdtp-dashboard__token > .zdtp-dashboard__token-content { grid-row: 2; }
277
+ .zdtp-dashboard__palette .zdtp-dashboard__preview { border-radius: 0; }
278
+ .zdtp-dashboard__preview--typography {
279
+ display: block;
280
+ block-size: auto;
281
+ padding: 20px;
282
+ border: 0;
283
+ border-radius: 0;
284
+ }
285
+ .zdtp-dashboard__preview--typography > .zdtp-dashboard__sample {
286
+ font: 400 18px/1.6 system-ui, sans-serif;
287
+ letter-spacing: normal;
288
+ white-space: pre-wrap;
289
+ overflow-wrap: anywhere;
290
+ max-inline-size: 100%;
291
+ }
292
+ @container zdtp-dashboard (min-width: 640px) {
293
+ .zdtp-dashboard__token--wide { grid-template-columns: 220px minmax(0, 1fr); }
294
+ }
@@ -0,0 +1,23 @@
1
+ import type { JSX } from 'preact';
2
+ import type { TabConfig, TierConfig } from "../tokens/tier-model.js";
3
+ import type { DashboardMode } from "./types.js";
4
+ /** Visual samples are independent from the panel's editor kind. */
5
+ export type DashboardPreviewKind = NonNullable<TierConfig['preview']> | 'color' | 'shadow' | 'text';
6
+ export interface TokenDashboardProps {
7
+ tabs: readonly TabConfig[];
8
+ /** Selects declared per-mode defaults. Does not read the host or panel mode. */
9
+ mode?: DashboardMode;
10
+ title?: string;
11
+ /** Static multiline typography specimen. Empty strings are preserved. */
12
+ previewText?: string;
13
+ /** Optional root ID. Supply distinct IDs when rendering multiple instances. */
14
+ id?: string;
15
+ /** Per-variable sample choices, including text-editor colors and shadows. */
16
+ previewOverrides?: Readonly<Record<string, DashboardPreviewKind>>;
17
+ }
18
+ /**
19
+ * A complete, read-only inventory of declared defaults. Works with Preact's
20
+ * server renderer without hydration, browser globals, or panel configuration.
21
+ * Include @takazudo/zdtp/dashboard/styles.css through the host's CSS pipeline.
22
+ */
23
+ export declare function TokenDashboard({ tabs, mode, title, id, previewOverrides, previewText, }: TokenDashboardProps): JSX.Element;
@@ -0,0 +1,62 @@
1
+ import type { TierConfig, TierValueKind } from "../tokens/tier-model.js";
2
+ /** Internal, render-independent description of declared token defaults. */
3
+ export type DashboardMode = 'light' | 'dark';
4
+ export interface DashboardDiagnostic {
5
+ code: string;
6
+ severity: 'warning' | 'error';
7
+ message: string;
8
+ rowKey?: string;
9
+ }
10
+ export interface DashboardReference {
11
+ key: string;
12
+ cssVar: string;
13
+ label: string;
14
+ }
15
+ export interface DashboardRow {
16
+ /** Positional identity stays unique even when a manifest repeats identifiers. */
17
+ key: string;
18
+ tabId: string;
19
+ tierId: string;
20
+ itemId: string;
21
+ label: string;
22
+ cssVar: string;
23
+ kind: TierValueKind['kind'];
24
+ source: 'item' | 'base-role';
25
+ defaultValue: string;
26
+ /** Human-readable selected-mode declaration, including explicit semantic overrides. */
27
+ declaredValue: string;
28
+ /** Safe local CSS declaration; null for an invalid or ambiguous declaration. */
29
+ cssValue: string | null;
30
+ /**
31
+ * Follows direct declared references only, never computes CSS. Expressions
32
+ * remain expressions. Null means invalid or dependent on unknown context;
33
+ * the renderer must not show a value preview in that case.
34
+ */
35
+ resolvedValue: string | null;
36
+ references: DashboardReference[];
37
+ diagnostics: DashboardDiagnostic[];
38
+ }
39
+ export interface DashboardTier {
40
+ key: string;
41
+ id: string;
42
+ label: string;
43
+ /** Nonsemantic, non-reference, color-only source tier. */
44
+ palette?: boolean;
45
+ preview?: TierConfig['preview'];
46
+ previewBase?: string;
47
+ rows: DashboardRow[];
48
+ }
49
+ export interface DashboardTab {
50
+ key: string;
51
+ id: string;
52
+ label: string;
53
+ tiers: DashboardTier[];
54
+ }
55
+ export interface DashboardModel {
56
+ mode: DashboardMode;
57
+ tabs: DashboardTab[];
58
+ rows: DashboardRow[];
59
+ /** Declare these on each preview scope, never on :root or the document. */
60
+ declarations: Readonly<Record<string, string>>;
61
+ diagnostics: DashboardDiagnostic[];
62
+ }
@@ -1,5 +1,5 @@
1
1
  import type { JSX } from 'preact';
2
- import type { PanelConfig } from '../config/panel-config';
2
+ import type { PanelConfig } from "../config/panel-config.js";
3
3
  export interface DomTweakerDiffActionLinkProps {
4
4
  instanceConfig: PanelConfig;
5
5
  onSelected?: () => void;
@@ -10,7 +10,7 @@
10
10
  * explicit scalar config values into that boundary.
11
11
  */
12
12
  import type { ComponentChildren, JSX } from 'preact';
13
- import type { PanelConfig } from '../config/panel-config';
13
+ import type { PanelConfig } from "../config/panel-config.js";
14
14
  export declare function DomTweakerOrchestrator({ children, instanceConfig, }: {
15
15
  children: ComponentChildren;
16
16
  instanceConfig: PanelConfig;
@@ -6,7 +6,7 @@
6
6
  * time (never at module init), so a late `configurePanel({ storagePrefix })`
7
7
  * is respected by no-arg callers.
8
8
  */
9
- import { type PanelConfig } from '../config/panel-config';
9
+ import { type PanelConfig } from "../config/panel-config.js";
10
10
  export declare function storageKey_domTweakerEnabled(cfg?: PanelConfig): string;
11
11
  /**
12
12
  * Load the persisted enabled flag from localStorage. Defaults to `false` on
@@ -1,5 +1,5 @@
1
1
  import type { JSX } from 'preact';
2
- import { type TrackedElementRect } from './pinned-selection-overlay';
2
+ import { type TrackedElementRect } from "./pinned-selection-overlay.js";
3
3
  export interface ClassEditorPopupProps {
4
4
  target: Element | null;
5
5
  selectorSummary: string;
@@ -1,5 +1,5 @@
1
1
  import type { JSX } from 'preact';
2
- import { type PanelConfig } from '../../config/panel-config';
2
+ import { type PanelConfig } from "../../config/panel-config.js";
3
3
  export interface DiffExportModalProps {
4
4
  diffText: string;
5
5
  onClose: () => void;
@@ -8,8 +8,8 @@
8
8
  * lazy boundary does not read global panel config.
9
9
  */
10
10
  import type { JSX } from 'preact';
11
- import type { DomTweakerRuntimeStatus } from '../dom-tweaker-context';
12
- export { buildStaticSuggestions, buildSuggestions, buildThemeSuggestions, filterSuggestions, STATIC_SUGGESTIONS, } from './suggestions';
11
+ import type { DomTweakerRuntimeStatus } from "../dom-tweaker-context.js";
12
+ export { buildStaticSuggestions, buildSuggestions, buildThemeSuggestions, filterSuggestions, STATIC_SUGGESTIONS, } from "./suggestions.js";
13
13
  export interface DomTweakerLazyBoundaryProps {
14
14
  enabled: boolean;
15
15
  storagePrefix: string;
@@ -1,4 +1,4 @@
1
- import type { FindTokensForElementResult } from './find-tokens-for-element';
1
+ import type { FindTokensForElementResult } from "./find-tokens-for-element.js";
2
2
  /** The synthetic tab id used by the transient element-inspect view. */
3
3
  export declare const ELEMENT_INSPECT_TAB_ID = "inspect";
4
4
  export interface ElementInspectContextValue {
@@ -1,7 +1,7 @@
1
1
  import type { ComponentChildren } from 'preact';
2
- import type { PanelConfig } from '../config/panel-config';
3
- import type { TweakState } from '../state/tweak-state';
4
- import type { CommitTweakStateOptions, TweakStateUpdater } from '../state/transaction';
2
+ import type { PanelConfig } from "../config/panel-config.js";
3
+ import type { TweakState } from "../state/tweak-state.js";
4
+ import type { CommitTweakStateOptions, TweakStateUpdater } from "../state/transaction.js";
5
5
  type CommitTweakState = (reason: string, next: TweakStateUpdater, options?: CommitTweakStateOptions) => void;
6
6
  export interface ElementInspectOrchestratorProps {
7
7
  children: ComponentChildren;
@@ -1,6 +1,6 @@
1
1
  import type { JSX } from 'preact';
2
2
  /** Body-level mount used by the picker and the pinned inspect marker. */
3
- export { ELEMENT_INSPECT_PORTAL_MOUNT_ID } from '../highlight/find-elements';
3
+ export { ELEMENT_INSPECT_PORTAL_MOUNT_ID } from "../highlight/find-elements.js";
4
4
  /** Class hooks shared by the hover picker and the pinned overlay. */
5
5
  export declare const ELEMENT_INSPECT_PICKER_CLASS_NAMES: {
6
6
  readonly box: "tokenpanel-element-inspect-box";
@@ -1,4 +1,4 @@
1
- import type { TokenAddress, TokenIndex, TokenIndexEntry } from '../utils/token-index';
1
+ import type { TokenAddress, TokenIndex, TokenIndexEntry } from "../utils/token-index.js";
2
2
  export interface ElementTokenMatch {
3
3
  property: string;
4
4
  cssVar: string;
@@ -1,8 +1,8 @@
1
- export { findTokensForElement } from './find-tokens-for-element';
2
- export type { ElementTokenMatch, ElementTokenPropertyGroup, FindTokensForElementResult, } from './find-tokens-for-element';
3
- export { ElementInspectOrchestrator, type ElementInspectOrchestratorProps, } from './element-inspect-orchestrator';
4
- export { ElementInspectOverlay, ELEMENT_INSPECT_PORTAL_MOUNT_ID } from './element-inspect-overlay';
5
- export { ElementInspectToggleButton } from './element-inspect-toggle-button';
6
- export { ElementInspectView, type ElementInspectViewProps } from './element-inspect-view';
7
- export { ElementInspectContext, ELEMENT_INSPECT_TAB_ID, } from './element-inspect-context';
8
- export type { ElementInspectContextValue } from './element-inspect-context';
1
+ export { findTokensForElement } from "./find-tokens-for-element.js";
2
+ export type { ElementTokenMatch, ElementTokenPropertyGroup, FindTokensForElementResult, } from "./find-tokens-for-element.js";
3
+ export { ElementInspectOrchestrator, type ElementInspectOrchestratorProps, } from "./element-inspect-orchestrator.js";
4
+ export { ElementInspectOverlay, ELEMENT_INSPECT_PORTAL_MOUNT_ID } from "./element-inspect-overlay.js";
5
+ export { ElementInspectToggleButton } from "./element-inspect-toggle-button.js";
6
+ export { ElementInspectView, type ElementInspectViewProps } from "./element-inspect-view.js";
7
+ export { ElementInspectContext, ELEMENT_INSPECT_TAB_ID, } from "./element-inspect-context.js";
8
+ export type { ElementInspectContextValue } from "./element-inspect-context.js";
@@ -10,7 +10,7 @@
10
10
  * `panelConfig.storagePrefix` at call-time (never at module init) so a host's
11
11
  * `configurePanel({ storagePrefix })` is respected.
12
12
  */
13
- import type { PanelConfig } from '../config/panel-config';
13
+ import type { PanelConfig } from "../config/panel-config.js";
14
14
  /**
15
15
  * Load the persisted enabled flag from localStorage. Defaults to `false`
16
16
  * (inspect mode off) on any parse/access failure or when absent.
@@ -5,10 +5,10 @@
5
5
  * DevTools-style highlight, click to copy an annotated path block to the
6
6
  * clipboard) for precise human↔AI communication about the page.
7
7
  */
8
- export { ElementPathOrchestrator } from './element-path-orchestrator';
9
- export { ElementPathToggleButton } from './element-path-toggle-button';
10
- export { ElementPathContext } from './element-path-context';
11
- export type { ElementPathContextValue } from './element-path-context';
12
- export { buildElementPath, buildElementPathString, formatElementPath, buildUniqueSelector, buildBreadcrumb, } from './build-element-path';
13
- export type { ElementPathResult } from './build-element-path';
14
- export { loadElementPathEnabled, saveElementPathEnabled } from './element-path-state';
8
+ export { ElementPathOrchestrator } from "./element-path-orchestrator.js";
9
+ export { ElementPathToggleButton } from "./element-path-toggle-button.js";
10
+ export { ElementPathContext } from "./element-path-context.js";
11
+ export type { ElementPathContextValue } from "./element-path-context.js";
12
+ export { buildElementPath, buildElementPathString, formatElementPath, buildUniqueSelector, buildBreadcrumb, } from "./build-element-path.js";
13
+ export type { ElementPathResult } from "./build-element-path.js";
14
+ export { loadElementPathEnabled, saveElementPathEnabled } from "./element-path-state.js";
@@ -22,8 +22,8 @@
22
22
  * programmatic "Close" button) routes through `dialog.close()` so the native
23
23
  * `close` event — and thus `onClose` — fires exactly once per dismissal.
24
24
  */
25
- import { type ColorTweakState, type TweakState } from './state/tweak-state';
26
- import { type PanelConfig } from './config/panel-config';
25
+ import { type ColorTweakState, type TweakState } from "./state/tweak-state.js";
26
+ import { type PanelConfig } from "./config/panel-config.js";
27
27
  export interface ExportModalProps {
28
28
  onClose: () => void;
29
29
  /** Full unified tweak state — the modal serializes all four categories. */
@@ -14,8 +14,8 @@
14
14
  * overlay persists even when the panel is closed.
15
15
  */
16
16
  import type { ComponentChildren } from 'preact';
17
- import { type PanelConfig } from '../config/panel-config';
18
- import type { TierValueKind } from '../tokens/tier-model';
17
+ import { type PanelConfig } from "../config/panel-config.js";
18
+ import type { TierValueKind } from "../tokens/tier-model.js";
19
19
  type ProbeKind = 'color' | 'length' | 'number' | 'text' | 'easing' | 'cursor' | 'content' | 'mask-image';
20
20
  export declare function tierKindToProbeKind(t: TierValueKind | undefined): ProbeKind | undefined;
21
21
  export interface HighlightOrchestratorProps {
@@ -14,7 +14,7 @@
14
14
  * outlineWidth → localStorage (survives full page reload — user width setting kept)
15
15
  * active → sessionStorage (cleared on reload — inspection set is ephemeral)
16
16
  */
17
- import { type PanelConfig } from '../config/panel-config';
17
+ import { type PanelConfig } from "../config/panel-config.js";
18
18
  export interface HighlightSlotSpec {
19
19
  color: string;
20
20
  }
@@ -11,8 +11,8 @@
11
11
  * module.
12
12
  */
13
13
  import type { JSX } from 'preact';
14
- import type { HighlightState, HighlightSlotSpec } from './highlight-state';
15
- import type { TokenAddress } from '../utils/token-index';
14
+ import type { HighlightState, HighlightSlotSpec } from "./highlight-state.js";
15
+ import type { TokenAddress } from "../utils/token-index.js";
16
16
  export interface HighlightContextValue {
17
17
  state: HighlightState;
18
18
  toggle: (cssVar: string) => void;
@@ -1,4 +1,4 @@
1
- import type { TweakHistorySnapshot } from '../state/history';
1
+ import type { TweakHistorySnapshot } from "../state/history.js";
2
2
  export interface HistoryButtonProps {
3
3
  canUndo: boolean;
4
4
  onUndo: () => void;
@@ -1,3 +1,3 @@
1
- export { HistoryButtons, HistoryRedoButton, HistoryShortcuts, HistoryUndoButton, type HistoryButtonProps, type HistoryButtonsProps, type HistoryShortcutsProps, } from './buttons';
2
- export { HistoryRail, type HistoryRailProps } from './rail';
3
- export { clearSnapshots, getSnapshotKey, isSnapshotState, loadSnapshot, loadSnapshots, removeSnapshot, restoreSnapshotState, saveSnapshot, storageKey_snapshotA, storageKey_snapshotB, useSnapshots, type SnapshotRestoreResult, type SnapshotSlot, type SnapshotSlots, type TweakSnapshot, } from './snapshots';
1
+ export { HistoryButtons, HistoryRedoButton, HistoryShortcuts, HistoryUndoButton, type HistoryButtonProps, type HistoryButtonsProps, type HistoryShortcutsProps, } from "./buttons.js";
2
+ export { HistoryRail, type HistoryRailProps } from "./rail.js";
3
+ export { clearSnapshots, getSnapshotKey, isSnapshotState, loadSnapshot, loadSnapshots, removeSnapshot, restoreSnapshotState, saveSnapshot, storageKey_snapshotA, storageKey_snapshotB, useSnapshots, type SnapshotRestoreResult, type SnapshotSlot, type SnapshotSlots, type TweakSnapshot, } from "./snapshots.js";
@@ -1,5 +1,5 @@
1
- import type { TweakHistorySnapshot } from '../state/history';
2
- import type { SnapshotSlot, SnapshotSlots } from './snapshots';
1
+ import type { TweakHistorySnapshot } from "../state/history.js";
2
+ import type { SnapshotSlot, SnapshotSlots } from "./snapshots.js";
3
3
  export interface HistoryRailProps {
4
4
  history: TweakHistorySnapshot;
5
5
  snapshots: SnapshotSlots;
@@ -1,5 +1,5 @@
1
- import { storageKey_snapshotA, storageKey_snapshotB, type PanelConfig } from '../config/panel-config';
2
- import type { TweakState } from '../state/tweak-state';
1
+ import { storageKey_snapshotA, storageKey_snapshotB, type PanelConfig } from "../config/panel-config.js";
2
+ import type { TweakState } from "../state/tweak-state.js";
3
3
  export type SnapshotSlot = 'A' | 'B';
4
4
  export interface TweakSnapshot {
5
5
  state: TweakState;
@@ -20,8 +20,8 @@
20
20
  * programmatic "Close" button) routes through `dialog.close()` so the native
21
21
  * `close` event — and thus `onClose` — fires exactly once per dismissal.
22
22
  */
23
- import type { ColorTweakState, TweakState } from './state/tweak-state';
24
- import { type PanelConfig } from './config/panel-config';
23
+ import type { ColorTweakState, TweakState } from "./state/tweak-state.js";
24
+ import { type PanelConfig } from "./config/panel-config.js";
25
25
  export interface ImportModalProps {
26
26
  onClose: () => void;
27
27
  /** Called with the parsed state when the user hits "Load". The caller is