@wildwinter/app-shell 0.4.1 → 0.15.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.
Files changed (81) hide show
  1. package/README.md +35 -0
  2. package/dist/about.css +76 -0
  3. package/dist/about.css.map +1 -0
  4. package/dist/anchored.css +104 -0
  5. package/dist/anchored.css.map +1 -0
  6. package/dist/app-store.cjs +74 -0
  7. package/dist/app-store.cjs.map +1 -0
  8. package/dist/app-store.d.cts +75 -0
  9. package/dist/app-store.d.ts +75 -0
  10. package/dist/app-store.js +72 -0
  11. package/dist/app-store.js.map +1 -0
  12. package/dist/chunk-MDGOIT3O.js +58 -0
  13. package/dist/chunk-MDGOIT3O.js.map +1 -0
  14. package/dist/chunk-R6RO5TXB.js +16 -0
  15. package/dist/chunk-R6RO5TXB.js.map +1 -0
  16. package/dist/comments.css +134 -0
  17. package/dist/comments.css.map +1 -0
  18. package/dist/confirm.css +62 -0
  19. package/dist/confirm.css.map +1 -0
  20. package/dist/identity.css +62 -0
  21. package/dist/identity.css.map +1 -0
  22. package/dist/index.cjs +1020 -6
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +429 -3
  25. package/dist/index.d.ts +429 -3
  26. package/dist/index.js +987 -8
  27. package/dist/index.js.map +1 -1
  28. package/dist/job.cjs +61 -0
  29. package/dist/job.cjs.map +1 -0
  30. package/dist/job.css +70 -0
  31. package/dist/job.css.map +1 -0
  32. package/dist/job.d.cts +56 -0
  33. package/dist/job.d.ts +56 -0
  34. package/dist/job.js +3 -0
  35. package/dist/job.js.map +1 -0
  36. package/dist/menu.cjs +7 -0
  37. package/dist/menu.cjs.map +1 -1
  38. package/dist/menu.d.cts +20 -1
  39. package/dist/menu.d.ts +20 -1
  40. package/dist/menu.js +1 -1
  41. package/dist/notes-editor.css +107 -0
  42. package/dist/notes-editor.css.map +1 -0
  43. package/dist/session.cjs +52 -0
  44. package/dist/session.cjs.map +1 -0
  45. package/dist/session.d.cts +79 -0
  46. package/dist/session.d.ts +79 -0
  47. package/dist/session.js +50 -0
  48. package/dist/session.js.map +1 -0
  49. package/dist/tool-window.cjs +79 -0
  50. package/dist/tool-window.cjs.map +1 -0
  51. package/dist/tool-window.css +60 -0
  52. package/dist/tool-window.css.map +1 -0
  53. package/dist/tool-window.d.cts +63 -0
  54. package/dist/tool-window.d.ts +63 -0
  55. package/dist/tool-window.js +73 -0
  56. package/dist/tool-window.js.map +1 -0
  57. package/dist/tooltip.css +22 -0
  58. package/dist/tooltip.css.map +1 -0
  59. package/dist/updater.cjs +315 -0
  60. package/dist/updater.cjs.map +1 -0
  61. package/dist/updater.d.cts +53 -0
  62. package/dist/updater.d.ts +53 -0
  63. package/dist/updater.js +306 -0
  64. package/dist/updater.js.map +1 -0
  65. package/dist/vc-status.cjs +77 -0
  66. package/dist/vc-status.cjs.map +1 -0
  67. package/dist/vc-status.d.cts +40 -0
  68. package/dist/vc-status.d.ts +40 -0
  69. package/dist/vc-status.js +71 -0
  70. package/dist/vc-status.js.map +1 -0
  71. package/dist/vc.css +41 -0
  72. package/dist/vc.css.map +1 -0
  73. package/package.json +90 -1
  74. package/dist/chunk-KQT3XYRS.js +0 -10
  75. package/dist/chunk-KQT3XYRS.js.map +0 -1
  76. package/dist/pane-shell.d.cts +0 -2
  77. package/dist/pane-shell.d.ts +0 -2
  78. package/dist/settings.d.cts +0 -2
  79. package/dist/settings.d.ts +0 -2
  80. package/dist/tokens.d.cts +0 -2
  81. package/dist/tokens.d.ts +0 -2
@@ -0,0 +1,16 @@
1
+ // src/menu.ts
2
+ var EDIT_MENU = {
3
+ undo: { label: "Undo", accelerator: "CmdOrCtrl+Z" },
4
+ redo: { label: "Redo", accelerator: "Shift+CmdOrCtrl+Z" },
5
+ duplicate: { label: "Duplicate", accelerator: "CmdOrCtrl+D" },
6
+ find: { label: "Find\u2026", accelerator: "CmdOrCtrl+F" }
7
+ };
8
+ var PANE_MENU = {
9
+ showNav: { label: "Show Navigator", accelerator: "CmdOrCtrl+1" },
10
+ showInspector: { label: "Show Inspector", accelerator: "CmdOrCtrl+2" },
11
+ resetView: { label: "Reset View" }
12
+ };
13
+
14
+ export { EDIT_MENU, PANE_MENU };
15
+ //# sourceMappingURL=chunk-R6RO5TXB.js.map
16
+ //# sourceMappingURL=chunk-R6RO5TXB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/menu.ts"],"names":[],"mappings":";AA2BO,IAAM,SAAA,GAKT;AAAA,EACF,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,aAAa,aAAA,EAAc;AAAA,EAClD,IAAA,EAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,aAAa,mBAAA,EAAoB;AAAA,EACxD,SAAA,EAAW,EAAE,KAAA,EAAO,WAAA,EAAa,aAAa,aAAA,EAAc;AAAA,EAC5D,IAAA,EAAM,EAAE,KAAA,EAAO,YAAA,EAAS,aAAa,aAAA;AACvC;AAGO,IAAM,SAAA,GAIT;AAAA,EACF,OAAA,EAAS,EAAE,KAAA,EAAO,gBAAA,EAAkB,aAAa,aAAA,EAAc;AAAA,EAC/D,aAAA,EAAe,EAAE,KAAA,EAAO,gBAAA,EAAkB,aAAa,aAAA,EAAc;AAAA,EACrE,SAAA,EAAW,EAAE,KAAA,EAAO,YAAA;AACtB","file":"chunk-R6RO5TXB.js","sourcesContent":["// ---------------------------------------------------------------------------\n// Shell-owned menu naming: the labels + accelerators for the pane-frame menu\n// items, single-sourced so every app in the family names them identically\n// (and a rename here flows to all of them). Pure data - no electron, no DOM -\n// so a main-process menu builder can import it. Each app builds its own\n// MenuItem from these and wires the click to its shell controller.\n// ---------------------------------------------------------------------------\n\nexport interface MenuLabel {\n label: string;\n /** Electron accelerator string, when the item has one. */\n accelerator?: string;\n}\n\n/**\n * The Edit menu items the family shares.\n *\n * Undo and Redo are here and the MECHANISM is not, which is the whole finding\n * about undo: Patterpad's is ProseMirror's document history, Storyletter's is a\n * replay of file bytes, and those have nothing in common but this. See\n * `design/shared-shell.md`.\n *\n * The rule both apps discovered separately, and the reason these are spelled\n * out rather than left as Electron's `role: \"undo\"`: the native role runs a DOM\n * text-field undo, which knows nothing about either app's model and will\n * silently undo the wrong thing.\n */\nexport const EDIT_MENU: {\n undo: MenuLabel;\n redo: MenuLabel;\n duplicate: MenuLabel;\n find: MenuLabel;\n} = {\n undo: { label: \"Undo\", accelerator: \"CmdOrCtrl+Z\" },\n redo: { label: \"Redo\", accelerator: \"Shift+CmdOrCtrl+Z\" },\n duplicate: { label: \"Duplicate\", accelerator: \"CmdOrCtrl+D\" },\n find: { label: \"Find…\", accelerator: \"CmdOrCtrl+F\" },\n};\n\n/** The pane-frame menu items (a View menu, conventionally). */\nexport const PANE_MENU: {\n showNav: MenuLabel;\n showInspector: MenuLabel;\n resetView: MenuLabel;\n} = {\n showNav: { label: \"Show Navigator\", accelerator: \"CmdOrCtrl+1\" },\n showInspector: { label: \"Show Inspector\", accelerator: \"CmdOrCtrl+2\" },\n resetView: { label: \"Reset View\" },\n};\n"]}
@@ -0,0 +1,134 @@
1
+ /* src/comments.css */
2
+ .shell-cmt-list {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: 8px;
6
+ }
7
+ .shell-cmt-list.resolved {
8
+ opacity: 0.55;
9
+ }
10
+ .shell-cmt-msg-head {
11
+ display: flex;
12
+ gap: 8px;
13
+ align-items: baseline;
14
+ }
15
+ .shell-cmt-del {
16
+ margin-left: auto;
17
+ flex: none;
18
+ padding: 0 4px;
19
+ line-height: 1;
20
+ background: none;
21
+ border: none;
22
+ cursor: pointer;
23
+ font-size: 0.72rem;
24
+ color: var(--muted);
25
+ opacity: 0.55;
26
+ transition: opacity var(--dur-quick, 120ms) var(--ease-standard, ease), color var(--dur-quick, 120ms) var(--ease-standard, ease);
27
+ }
28
+ .shell-cmt-msg:hover .shell-cmt-del,
29
+ .shell-cmt-del:focus-visible {
30
+ opacity: 1;
31
+ }
32
+ .shell-cmt-del:hover {
33
+ opacity: 1;
34
+ color: var(--danger, #b00);
35
+ }
36
+ .shell-cmt-msg.gone .shell-cmt-body {
37
+ font-style: italic;
38
+ color: var(--muted);
39
+ }
40
+ .shell-cmt-author {
41
+ font: 600 0.76rem/1.2 var(--font-ui);
42
+ }
43
+ .shell-cmt-ts {
44
+ font: 0.68rem/1.2 var(--font-ui);
45
+ color: var(--muted);
46
+ }
47
+ .shell-cmt-body {
48
+ font: 0.82rem/1.45 var(--font-read, var(--font-ui));
49
+ white-space: pre-wrap;
50
+ }
51
+ .shell-cmt-input {
52
+ width: 100%;
53
+ box-sizing: border-box;
54
+ resize: vertical;
55
+ border: 1px solid var(--line-soft);
56
+ border-radius: var(--radius-sm);
57
+ background: var(--card);
58
+ color: var(--ink);
59
+ font: 0.82rem/1.4 var(--font-read, var(--font-ui));
60
+ padding: 6px 8px;
61
+ }
62
+ .shell-cmt-input:focus {
63
+ outline: none;
64
+ border-color: var(--accent);
65
+ }
66
+ .shell-cmt-actions {
67
+ display: flex;
68
+ gap: 6px;
69
+ justify-content: flex-end;
70
+ }
71
+ .shell-cmt-btn {
72
+ font: 0.76rem/1 var(--font-ui);
73
+ padding: 5px 10px;
74
+ border-radius: var(--radius-sm);
75
+ border: 1px solid var(--line);
76
+ background: var(--card);
77
+ color: var(--ink);
78
+ cursor: pointer;
79
+ }
80
+ .shell-cmt-btn.primary {
81
+ background: var(--accent);
82
+ border-color: var(--accent);
83
+ color: var(--on-accent, #fff);
84
+ }
85
+ .shell-cmt-row {
86
+ display: flex;
87
+ gap: 6px;
88
+ align-items: baseline;
89
+ width: 100%;
90
+ text-align: left;
91
+ border: 0;
92
+ background: none;
93
+ color: var(--ink);
94
+ cursor: pointer;
95
+ padding: 6px 4px;
96
+ border-radius: var(--radius-sm);
97
+ }
98
+ .shell-cmt-row:hover {
99
+ background: var(--accent-soft);
100
+ }
101
+ .shell-cmt-row.resolved {
102
+ opacity: 0.55;
103
+ }
104
+ .shell-cmt-row-author {
105
+ font: 600 0.74rem/1.2 var(--font-ui);
106
+ flex: none;
107
+ }
108
+ .shell-cmt-row-gist {
109
+ font: 0.78rem/1.3 var(--font-read, var(--font-ui));
110
+ color: var(--muted);
111
+ overflow: hidden;
112
+ text-overflow: ellipsis;
113
+ white-space: nowrap;
114
+ }
115
+ .shell-cmt-row-count {
116
+ margin-left: auto;
117
+ font: 0.7rem/1 var(--font-ui);
118
+ color: var(--muted);
119
+ }
120
+ .shell-cmt-new {
121
+ align-self: flex-start;
122
+ font: 0.76rem/1 var(--font-ui);
123
+ border: 1px dashed var(--line);
124
+ background: none;
125
+ color: var(--muted);
126
+ border-radius: var(--radius-sm);
127
+ padding: 5px 10px;
128
+ cursor: pointer;
129
+ }
130
+ .shell-cmt-new:hover {
131
+ color: var(--accent);
132
+ border-color: var(--accent);
133
+ }
134
+ /*# sourceMappingURL=comments.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/comments.css"],"sourcesContent":["/* A comment thread inside the anchored panel (comments.ts). */\n.shell-cmt-list { display: flex; flex-direction: column; gap: 8px; }\n.shell-cmt-list.resolved { opacity: 0.55; }\n.shell-cmt-msg-head { display: flex; gap: 8px; align-items: baseline; }\n/* The delete: QUIET but always there.\n It was rollover-revealed at first, following the grip grammar the lists use,\n and that was the wrong borrowing: a list row hides its grip because a dense\n column of them would be clutter, whereas this popover holds two or three\n messages and is already a surface you opened on purpose. Hidden, the only\n way to delete a comment was to discover that hovering one exact row revealed\n something - which is to say there was no way to delete a comment. Reported as\n \"there is apparently no delete option\", which is exactly right.\n Low contrast carries \"secondary\"; invisibility carries \"absent\". */\n.shell-cmt-del {\n margin-left: auto; flex: none; padding: 0 4px; line-height: 1;\n background: none; border: none; cursor: pointer;\n font-size: 0.72rem; color: var(--muted); opacity: 0.55;\n transition: opacity var(--dur-quick, 120ms) var(--ease-standard, ease),\n color var(--dur-quick, 120ms) var(--ease-standard, ease);\n}\n.shell-cmt-msg:hover .shell-cmt-del, .shell-cmt-del:focus-visible { opacity: 1; }\n.shell-cmt-del:hover { opacity: 1; color: var(--danger, #b00); }\n/* A withdrawn message keeps its place in the thread and stops asking to be read. */\n.shell-cmt-msg.gone .shell-cmt-body { font-style: italic; color: var(--muted); }\n.shell-cmt-author { font: 600 0.76rem/1.2 var(--font-ui); }\n.shell-cmt-ts { font: 0.68rem/1.2 var(--font-ui); color: var(--muted); }\n.shell-cmt-body { font: 0.82rem/1.45 var(--font-read, var(--font-ui)); white-space: pre-wrap; }\n.shell-cmt-input {\n width: 100%; box-sizing: border-box; resize: vertical;\n border: 1px solid var(--line-soft); border-radius: var(--radius-sm);\n background: var(--card); color: var(--ink);\n font: 0.82rem/1.4 var(--font-read, var(--font-ui)); padding: 6px 8px;\n}\n.shell-cmt-input:focus { outline: none; border-color: var(--accent); }\n.shell-cmt-actions { display: flex; gap: 6px; justify-content: flex-end; }\n.shell-cmt-btn {\n font: 0.76rem/1 var(--font-ui); padding: 5px 10px;\n border-radius: var(--radius-sm); border: 1px solid var(--line);\n background: var(--card); color: var(--ink); cursor: pointer;\n}\n.shell-cmt-btn.primary { background: var(--accent); border-color: var(--accent); color: var(--on-accent, #fff); }\n/* The picker, when one thing has more than one thread. */\n.shell-cmt-row {\n display: flex; gap: 6px; align-items: baseline; width: 100%; text-align: left;\n border: 0; background: none; color: var(--ink); cursor: pointer;\n padding: 6px 4px; border-radius: var(--radius-sm);\n}\n.shell-cmt-row:hover { background: var(--accent-soft); }\n.shell-cmt-row.resolved { opacity: 0.55; }\n.shell-cmt-row-author { font: 600 0.74rem/1.2 var(--font-ui); flex: none; }\n.shell-cmt-row-gist {\n font: 0.78rem/1.3 var(--font-read, var(--font-ui)); color: var(--muted);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.shell-cmt-row-count { margin-left: auto; font: 0.7rem/1 var(--font-ui); color: var(--muted); }\n.shell-cmt-new {\n align-self: flex-start; font: 0.76rem/1 var(--font-ui);\n border: 1px dashed var(--line); background: none; color: var(--muted);\n border-radius: var(--radius-sm); padding: 5px 10px; cursor: pointer;\n}\n.shell-cmt-new:hover { color: var(--accent); border-color: var(--accent); }\n"],"mappings":";AACA,CAAC;AAAiB,WAAS;AAAM,kBAAgB;AAAQ,OAAK;AAAK;AACnE,CADC,cACc,CAAC;AAAW,WAAS;AAAM;AAC1C,CAAC;AAAqB,WAAS;AAAM,OAAK;AAAK,eAAa;AAAU;AAUtE,CAAC;AACC,eAAa;AAAM,QAAM;AAAM,WAAS,EAAE;AAAK,eAAa;AAC5D,cAAY;AAAM,UAAQ;AAAM,UAAQ;AACxC,aAAW;AAAS,SAAO,IAAI;AAAU,WAAS;AAClD,cAAY,QAAQ,IAAI,WAAW,EAAE,OAAO,IAAI,eAAe,EAAE,KAAK,EACpE,MAAM,IAAI,WAAW,EAAE,OAAO,IAAI,eAAe,EAAE;AACvD;AACA,CAAC,aAAa,OAAO,CAPpB;AAOoC,CAPpC,aAOkD;AAAiB,WAAS;AAAG;AAChF,CARC,aAQa;AAAS,WAAS;AAAG,SAAO,IAAI,QAAQ,EAAE;AAAO;AAE/D,CAHC,aAGa,CAAC,KAAK,CAAC;AAAiB,cAAY;AAAQ,SAAO,IAAI;AAAU;AAC/E,CAAC;AAAmB,QAAM,IAAI,OAAO,CAAC,IAAI,IAAI;AAAY;AAC1D,CAAC;AAAe,QAAM,OAAO,CAAC,IAAI,IAAI;AAAY,SAAO,IAAI;AAAU;AACvE,CAHqB;AAGH,QAAM,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,IAAI;AAAa,eAAa;AAAU;AAC9F,CAAC;AACC,SAAO;AAAM,cAAY;AAAY,UAAQ;AAC7C,UAAQ,IAAI,MAAM,IAAI;AAAc,iBAAe,IAAI;AACvD,cAAY,IAAI;AAAS,SAAO,IAAI;AACpC,QAAM,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,IAAI;AAAa,WAAS,IAAI;AACnE;AACA,CANC,eAMe;AAAS,WAAS;AAAM,gBAAc,IAAI;AAAW;AACrE,CAAC;AAAoB,WAAS;AAAM,OAAK;AAAK,mBAAiB;AAAU;AACzE,CAAC;AACC,QAAM,OAAO,CAAC,EAAE,IAAI;AAAY,WAAS,IAAI;AAC7C,iBAAe,IAAI;AAAc,UAAQ,IAAI,MAAM,IAAI;AACvD,cAAY,IAAI;AAAS,SAAO,IAAI;AAAQ,UAAQ;AACtD;AACA,CALC,aAKa,CAAC;AAAU,cAAY,IAAI;AAAW,gBAAc,IAAI;AAAW,SAAO,IAAI,WAAW,EAAE;AAAO;AAEhH,CAAC;AACC,WAAS;AAAM,OAAK;AAAK,eAAa;AAAU,SAAO;AAAM,cAAY;AACzE,UAAQ;AAAG,cAAY;AAAM,SAAO,IAAI;AAAQ,UAAQ;AACxD,WAAS,IAAI;AAAK,iBAAe,IAAI;AACvC;AACA,CALC,aAKa;AAAS,cAAY,IAAI;AAAgB;AACvD,CANC,aAMa,CA9CE;AA8CU,WAAS;AAAM;AACzC,CAAC;AAAuB,QAAM,IAAI,OAAO,CAAC,IAAI,IAAI;AAAY,QAAM;AAAM;AAC1E,CAAC;AACC,QAAM,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,IAAI;AAAa,SAAO,IAAI;AAC/D,YAAU;AAAQ,iBAAe;AAAU,eAAa;AAC1D;AACA,CAAC;AAAsB,eAAa;AAAM,QAAM,MAAM,CAAC,EAAE,IAAI;AAAY,SAAO,IAAI;AAAU;AAC9F,CAAC;AACC,cAAY;AAAY,QAAM,OAAO,CAAC,EAAE,IAAI;AAC5C,UAAQ,IAAI,OAAO,IAAI;AAAS,cAAY;AAAM,SAAO,IAAI;AAC7D,iBAAe,IAAI;AAAc,WAAS,IAAI;AAAM,UAAQ;AAC9D;AACA,CALC,aAKa;AAAS,SAAO,IAAI;AAAW,gBAAc,IAAI;AAAW;","names":[]}
@@ -0,0 +1,62 @@
1
+ /* src/confirm.css */
2
+ .confirm-dialog {
3
+ background: var(--surface);
4
+ color: var(--ink);
5
+ border: 1px solid var(--line);
6
+ border-radius: var(--radius-lg);
7
+ box-shadow: var(--shadow-3);
8
+ padding: 1.1rem 1.2rem;
9
+ max-width: 24rem;
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: 0.5rem;
13
+ font-family: var(--font-ui);
14
+ animation: var(--anim-panel-in);
15
+ }
16
+ .confirm-dialog::backdrop {
17
+ background: color-mix(in oklab, var(--ink) 28%, transparent);
18
+ backdrop-filter: blur(3px);
19
+ animation: var(--anim-backdrop-in);
20
+ }
21
+ .confirm-title {
22
+ font: 700 0.95rem var(--font-ui);
23
+ }
24
+ .confirm-body {
25
+ font: 0.82rem/1.45 var(--font-ui);
26
+ color: var(--muted);
27
+ }
28
+ .confirm-actions {
29
+ display: flex;
30
+ justify-content: flex-end;
31
+ gap: 0.5rem;
32
+ margin-top: 0.4rem;
33
+ }
34
+ .confirm-btn {
35
+ border: 1px solid var(--line);
36
+ border-radius: var(--radius-sm);
37
+ cursor: pointer;
38
+ padding: 0.35rem 0.8rem;
39
+ font: 600 0.78rem var(--font-ui);
40
+ background: var(--bg);
41
+ color: var(--ink);
42
+ transition: background var(--dur-quick) var(--ease-standard), filter var(--dur-quick) var(--ease-standard);
43
+ }
44
+ .confirm-btn.cancel:hover {
45
+ background: color-mix(in oklab, var(--line) 30%, transparent);
46
+ }
47
+ .confirm-btn.danger {
48
+ background: var(--danger);
49
+ border-color: var(--danger);
50
+ color: var(--surface);
51
+ }
52
+ .confirm-btn.danger:hover {
53
+ filter: brightness(1.06);
54
+ }
55
+ .confirm-dialog.closing {
56
+ animation: var(--anim-panel-out);
57
+ pointer-events: none;
58
+ }
59
+ .confirm-dialog.closing::backdrop {
60
+ animation: var(--anim-backdrop-out);
61
+ }
62
+ /*# sourceMappingURL=confirm.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/confirm.css"],"sourcesContent":["/* ---------------------------------------------------------------------------\n The themed confirm (confirm.ts): panel + scrim in the host's palette and\n the shared motion tokens. The scrim derives from --ink so it stays\n palette-aware on any theme (the family's modal-scrim treatment). Requires\n the host to supply --danger alongside the standard palette tokens.\n --------------------------------------------------------------------------- */\n\n.confirm-dialog {\n background: var(--surface); color: var(--ink);\n border: 1px solid var(--line); border-radius: var(--radius-lg);\n box-shadow: var(--shadow-3); padding: 1.1rem 1.2rem; max-width: 24rem;\n display: flex; flex-direction: column; gap: 0.5rem;\n font-family: var(--font-ui);\n animation: var(--anim-panel-in);\n}\n.confirm-dialog::backdrop {\n background: color-mix(in oklab, var(--ink) 28%, transparent);\n backdrop-filter: blur(3px);\n animation: var(--anim-backdrop-in);\n}\n.confirm-title { font: 700 0.95rem var(--font-ui); }\n.confirm-body { font: 0.82rem/1.45 var(--font-ui); color: var(--muted); }\n.confirm-actions { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 0.4rem; }\n.confirm-btn {\n border: 1px solid var(--line); border-radius: var(--radius-sm); cursor: pointer;\n padding: 0.35rem 0.8rem; font: 600 0.78rem var(--font-ui);\n background: var(--bg); color: var(--ink);\n transition: background var(--dur-quick) var(--ease-standard),\n filter var(--dur-quick) var(--ease-standard);\n}\n.confirm-btn.cancel:hover { background: color-mix(in oklab, var(--line) 30%, transparent); }\n.confirm-btn.danger { background: var(--danger); border-color: var(--danger); color: var(--surface); }\n.confirm-btn.danger:hover { filter: brightness(1.06); }\n\n/* Exit: .closing swaps enter keyframes for their reverse; the fading panel\n must not catch a stray click. */\n.confirm-dialog.closing { animation: var(--anim-panel-out); pointer-events: none; }\n.confirm-dialog.closing::backdrop { animation: var(--anim-backdrop-out); }\n"],"mappings":";AAOA,CAAC;AACC,cAAY,IAAI;AAAY,SAAO,IAAI;AACvC,UAAQ,IAAI,MAAM,IAAI;AAAS,iBAAe,IAAI;AAClD,cAAY,IAAI;AAAa,WAAS,OAAO;AAAQ,aAAW;AAChE,WAAS;AAAM,kBAAgB;AAAQ,OAAK;AAC5C,eAAa,IAAI;AACjB,aAAW,IAAI;AACjB;AACA,CARC,cAQc;AACb,cAAY,UAAU,GAAG,KAAK,EAAE,IAAI,OAAO,GAAG,EAAE;AAChD,mBAAiB,KAAK;AACtB,aAAW,IAAI;AACjB;AACA,CAAC;AAAgB,QAAM,IAAI,QAAQ,IAAI;AAAY;AACnD,CAAC;AAAe,QAAM,OAAO,CAAC,KAAK,IAAI;AAAY,SAAO,IAAI;AAAU;AACxE,CAAC;AAAkB,WAAS;AAAM,mBAAiB;AAAU,OAAK;AAAQ,cAAY;AAAQ;AAC9F,CAAC;AACC,UAAQ,IAAI,MAAM,IAAI;AAAS,iBAAe,IAAI;AAAc,UAAQ;AACxE,WAAS,QAAQ;AAAQ,QAAM,IAAI,QAAQ,IAAI;AAC/C,cAAY,IAAI;AAAO,SAAO,IAAI;AAClC,cAAY,WAAW,IAAI,aAAa,IAAI,gBAAgB,EAC1D,OAAO,IAAI,aAAa,IAAI;AAChC;AACA,CAPC,WAOW,CAAC,MAAM;AAAS,cAAY,UAAU,GAAG,KAAK,EAAE,IAAI,QAAQ,GAAG,EAAE;AAAc;AAC3F,CARC,WAQW,CAAC;AAAS,cAAY,IAAI;AAAW,gBAAc,IAAI;AAAW,SAAO,IAAI;AAAY;AACrG,CATC,WASW,CADC,MACM;AAAS,UAAQ,WAAW;AAAO;AAItD,CA7BC,cA6Bc,CAAC;AAAU,aAAW,IAAI;AAAmB,kBAAgB;AAAM;AAClF,CA9BC,cA8Bc,CADC,OACO;AAAa,aAAW,IAAI;AAAsB;","names":[]}
@@ -0,0 +1,62 @@
1
+ /* src/identity.css */
2
+ .shell-ident {
3
+ width: min(400px, 90vw);
4
+ border: 1px solid var(--line);
5
+ border-radius: var(--radius-md);
6
+ background: var(--surface);
7
+ color: var(--ink);
8
+ padding: 16px 18px;
9
+ box-shadow: var(--shadow-2, var(--shadow-1));
10
+ }
11
+ .shell-ident::backdrop {
12
+ background: rgba(0, 0, 0, 0.28);
13
+ }
14
+ .shell-ident-title {
15
+ font: 600 0.95rem/1.3 var(--font-ui);
16
+ }
17
+ .shell-ident-hint {
18
+ font: 0.78rem/1.45 var(--font-ui);
19
+ color: var(--muted);
20
+ margin: 6px 0 0;
21
+ }
22
+ .shell-ident-fields {
23
+ display: flex;
24
+ flex-direction: column;
25
+ gap: 8px;
26
+ margin-top: 12px;
27
+ }
28
+ .shell-ident-input {
29
+ width: 100%;
30
+ box-sizing: border-box;
31
+ border: 1px solid var(--line-soft);
32
+ border-radius: var(--radius-sm);
33
+ background: var(--card);
34
+ color: var(--ink);
35
+ font: 0.85rem/1.4 var(--font-ui);
36
+ padding: 6px 8px;
37
+ }
38
+ .shell-ident-input:focus {
39
+ outline: none;
40
+ border-color: var(--accent);
41
+ }
42
+ .shell-ident-actions {
43
+ display: flex;
44
+ gap: 8px;
45
+ justify-content: flex-end;
46
+ margin-top: 14px;
47
+ }
48
+ .shell-ident-btn {
49
+ font: 0.8rem/1 var(--font-ui);
50
+ padding: 6px 14px;
51
+ border-radius: var(--radius-sm);
52
+ border: 1px solid var(--line);
53
+ background: var(--card);
54
+ color: var(--ink);
55
+ cursor: pointer;
56
+ }
57
+ .shell-ident-btn.primary {
58
+ background: var(--accent);
59
+ border-color: var(--accent);
60
+ color: var(--on-accent, #fff);
61
+ }
62
+ /*# sourceMappingURL=identity.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/identity.css"],"sourcesContent":["/* The identity dialog (identity.ts): asked once, skippable, and the same in\n every app in the family. */\n.shell-ident {\n width: min(400px, 90vw);\n border: 1px solid var(--line); border-radius: var(--radius-md);\n background: var(--surface); color: var(--ink);\n padding: 16px 18px;\n box-shadow: var(--shadow-2, var(--shadow-1));\n}\n.shell-ident::backdrop { background: rgba(0, 0, 0, 0.28); }\n.shell-ident-title { font: 600 0.95rem/1.3 var(--font-ui); }\n.shell-ident-hint { font: 0.78rem/1.45 var(--font-ui); color: var(--muted); margin: 6px 0 0; }\n.shell-ident-fields { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }\n.shell-ident-input {\n width: 100%; box-sizing: border-box;\n border: 1px solid var(--line-soft); border-radius: var(--radius-sm);\n background: var(--card); color: var(--ink);\n font: 0.85rem/1.4 var(--font-ui); padding: 6px 8px;\n}\n.shell-ident-input:focus { outline: none; border-color: var(--accent); }\n.shell-ident-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 14px; }\n.shell-ident-btn {\n font: 0.8rem/1 var(--font-ui); padding: 6px 14px;\n border-radius: var(--radius-sm); border: 1px solid var(--line);\n background: var(--card); color: var(--ink); cursor: pointer;\n}\n.shell-ident-btn.primary { background: var(--accent); border-color: var(--accent); color: var(--on-accent, #fff); }\n"],"mappings":";AAEA,CAAC;AACC,SAAO,IAAI,KAAK,EAAE;AAClB,UAAQ,IAAI,MAAM,IAAI;AAAS,iBAAe,IAAI;AAClD,cAAY,IAAI;AAAY,SAAO,IAAI;AACvC,WAAS,KAAK;AACd,cAAY,IAAI,UAAU,EAAE,IAAI;AAClC;AACA,CAPC,WAOW;AAAa,cAAY,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAAO;AAC1D,CAAC;AAAoB,QAAM,IAAI,OAAO,CAAC,IAAI,IAAI;AAAY;AAC3D,CAAC;AAAmB,QAAM,OAAO,CAAC,KAAK,IAAI;AAAY,SAAO,IAAI;AAAU,UAAQ,IAAI,EAAE;AAAG;AAC7F,CAAC;AAAqB,WAAS;AAAM,kBAAgB;AAAQ,OAAK;AAAK,cAAY;AAAM;AACzF,CAAC;AACC,SAAO;AAAM,cAAY;AACzB,UAAQ,IAAI,MAAM,IAAI;AAAc,iBAAe,IAAI;AACvD,cAAY,IAAI;AAAS,SAAO,IAAI;AACpC,QAAM,OAAO,CAAC,IAAI,IAAI;AAAY,WAAS,IAAI;AACjD;AACA,CANC,iBAMiB;AAAS,WAAS;AAAM,gBAAc,IAAI;AAAW;AACvE,CAAC;AAAsB,WAAS;AAAM,OAAK;AAAK,mBAAiB;AAAU,cAAY;AAAM;AAC7F,CAAC;AACC,QAAM,MAAM,CAAC,EAAE,IAAI;AAAY,WAAS,IAAI;AAC5C,iBAAe,IAAI;AAAc,UAAQ,IAAI,MAAM,IAAI;AACvD,cAAY,IAAI;AAAS,SAAO,IAAI;AAAQ,UAAQ;AACtD;AACA,CALC,eAKe,CAAC;AAAU,cAAY,IAAI;AAAW,gBAAc,IAAI;AAAW,SAAO,IAAI,WAAW,EAAE;AAAO;","names":[]}