@commonpub/layer 0.54.0 → 0.55.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.
@@ -190,6 +190,16 @@ const missingSubmission = computed(() => stages.value.length > 0 && !stages.valu
190
190
  </template>
191
191
 
192
192
  <style scoped>
193
+ /* Self-contained form-control styles (tokenised) — Vue scoped CSS doesn't cross
194
+ component boundaries, so this extracted editor styles its own inputs rather than
195
+ relying on the parent page. Mirrors the contest pages' controls. */
196
+ .cpub-form-field { display: flex; flex-direction: column; gap: var(--space-1); margin-bottom: var(--space-3); }
197
+ .cpub-form-field:last-child { margin-bottom: 0; }
198
+ .cpub-form-input, .cpub-form-textarea { width: 100%; padding: var(--space-2) var(--space-3); border: var(--border-width-default) solid var(--border); background: var(--surface); color: var(--text); font-size: var(--text-sm); font-family: var(--font-sans); }
199
+ .cpub-form-input:focus, .cpub-form-textarea:focus { border-color: var(--accent); outline: none; box-shadow: var(--shadow-accent); }
200
+ .cpub-form-textarea { resize: vertical; }
201
+ .cpub-form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-3); }
202
+
193
203
  .cpub-stages-standard { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
194
204
  .cpub-stage-tophead { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
195
205
  .cpub-stage-count { font-size: 11px; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--text-faint); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commonpub/layer",
3
- "version": "0.54.0",
3
+ "version": "0.55.0",
4
4
  "type": "module",
5
5
  "main": "./nuxt.config.ts",
6
6
  "files": [
@@ -55,14 +55,14 @@
55
55
  "zod": "^4.3.6",
56
56
  "@commonpub/auth": "0.8.0",
57
57
  "@commonpub/config": "0.18.0",
58
- "@commonpub/editor": "0.7.11",
59
58
  "@commonpub/docs": "0.6.3",
60
- "@commonpub/protocol": "0.13.0",
61
59
  "@commonpub/explainer": "0.7.15",
60
+ "@commonpub/protocol": "0.13.0",
61
+ "@commonpub/editor": "0.7.11",
62
62
  "@commonpub/learning": "0.5.2",
63
63
  "@commonpub/server": "2.77.0",
64
- "@commonpub/ui": "0.9.2",
65
- "@commonpub/schema": "0.30.0"
64
+ "@commonpub/schema": "0.30.0",
65
+ "@commonpub/ui": "0.9.2"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@testing-library/jest-dom": "^6.9.1",
@@ -574,9 +574,12 @@ async function transitionStatus(newStatus: string): Promise<void> {
574
574
  .cpub-edit-side { display: flex; flex-direction: column; gap: 16px; position: sticky; top: 76px; }
575
575
  .cpub-form-section { border: var(--border-width-default) solid var(--border); background: var(--surface); padding: 20px; box-shadow: var(--shadow-md); }
576
576
  .cpub-form-section-title { font-size: 14px; font-weight: 700; margin-bottom: 14px; }
577
- /* `.cpub-form-input/-textarea/-field/-row/-label` are sourced from the global
578
- theme (forms.css) so the extracted ContestStagesEditor inherits them across the
579
- Vue scoped-style boundary don't re-scope them here. */
577
+ .cpub-form-field { display: flex; flex-direction: column; gap: var(--space-1); margin-bottom: var(--space-3); }
578
+ .cpub-form-field:last-child { margin-bottom: 0; }
579
+ .cpub-form-input, .cpub-form-textarea { width: 100%; padding: var(--space-2) var(--space-3); border: var(--border-width-default) solid var(--border); background: var(--surface); color: var(--text); font-size: var(--text-sm); font-family: var(--font-sans); }
580
+ .cpub-form-input:focus, .cpub-form-textarea:focus { border-color: var(--accent); outline: none; box-shadow: var(--shadow-accent); }
581
+ .cpub-form-textarea { resize: vertical; }
582
+ .cpub-form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-3); }
580
583
 
581
584
  .cpub-form-error { font-size: 12px; color: var(--red); margin-top: 8px; }
582
585
  .cpub-form-check { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text-dim); cursor: pointer; }
@@ -403,8 +403,12 @@ function prizeLabel(prize: Prize): string {
403
403
  .cpub-form-section-title { font-size: 14px; font-weight: 700; margin-bottom: 16px; }
404
404
  .cpub-form-section-header .cpub-form-section-title { margin-bottom: 0; }
405
405
 
406
- /* `.cpub-form-input/-textarea/-field/-row/-label` come from the global theme
407
- (forms.css) shared with the extracted ContestStagesEditor. */
406
+ .cpub-form-field { display: flex; flex-direction: column; gap: var(--space-1); margin-bottom: var(--space-3); }
407
+ .cpub-form-field:last-child { margin-bottom: 0; }
408
+ .cpub-form-input, .cpub-form-textarea { width: 100%; padding: var(--space-2) var(--space-3); border: var(--border-width-default) solid var(--border); background: var(--surface); color: var(--text); font-size: var(--text-sm); font-family: var(--font-sans); }
409
+ .cpub-form-input:focus, .cpub-form-textarea:focus { border-color: var(--accent); outline: none; box-shadow: var(--shadow-accent); }
410
+ .cpub-form-textarea { resize: vertical; }
411
+ .cpub-form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-3); }
408
412
 
409
413
  .cpub-prize-card { border: var(--border-width-default) solid var(--border); padding: 14px; margin-bottom: 10px; background: var(--surface2); }
410
414
  .cpub-prize-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }