@signal9/era-ui 12.1.2 → 13.0.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/dist/dev/audit-overlay.svelte +1 -1
- package/dist/docs/css-utilities.js +6 -1
- package/dist/docs/notes.md +12 -11
- package/dist/era-ui.css +1 -1
- package/dist/generated-docs/badge.md +3 -0
- package/dist/generated-docs/button.md +4 -0
- package/dist/generated-docs/chip.md +3 -0
- package/dist/generated-docs/llms-full.txt +53 -31
- package/dist/generated-docs/llms.txt +1 -1
- package/dist/generated-docs/manifest.json +17 -17
- package/dist/generated-docs/notes.md +12 -11
- package/dist/generated-docs/utilities.json +10 -10
- package/dist/generated-docs/utilities.md +30 -19
- package/dist/os/index.d.ts +0 -1
- package/dist/os/index.js +0 -1
- package/dist/os/notification-center.svelte +1 -2
- package/dist/os/taskbar.svelte +2 -3
- package/dist/os/toaster.svelte +2 -3
- package/dist/styles/index.css +77 -12
- package/dist/styles/layers.css +48 -0
- package/dist/styles/surfaces/base.css +4 -2
- package/dist/styles/surfaces/glass.css +0 -13
- package/dist/theme/index.d.ts +87 -0
- package/dist/theme/index.js +86 -0
- package/dist/ui/alert-dialog/alert-dialog-content.svelte +2 -2
- package/dist/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/dist/ui/badge/badge.svelte +14 -1
- package/dist/ui/badge/badge.svelte.d.ts +4 -0
- package/dist/ui/button/button.svelte +37 -7
- package/dist/ui/button/button.svelte.d.ts +6 -0
- package/dist/ui/chip/chip.svelte +14 -1
- package/dist/ui/chip/chip.svelte.d.ts +4 -0
- package/dist/ui/combobox/combobox-content.svelte +1 -1
- package/dist/ui/command-bar/command-bar.svelte +1 -1
- package/dist/ui/context-menu/context-menu-content.svelte +1 -1
- package/dist/ui/context-menu/context-menu-sub-content.svelte +1 -1
- package/dist/ui/date-picker/date-picker-content.svelte +1 -1
- package/dist/ui/date-range-picker/date-range-picker-content.svelte +1 -1
- package/dist/ui/dialog/dialog-content.svelte +1 -1
- package/dist/ui/dialog/dialog-overlay.svelte +5 -1
- package/dist/ui/dropdown-menu/dropdown-menu-content.svelte +1 -1
- package/dist/ui/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
- package/dist/ui/link-preview/link-preview-content.svelte +1 -1
- package/dist/ui/menubar/menubar-content.svelte +1 -1
- package/dist/ui/menubar/menubar-sub-content.svelte +1 -1
- package/dist/ui/popover/popover-content.svelte +1 -1
- package/dist/ui/select/select-content.svelte +1 -1
- package/dist/ui/sheet/sheet-content.svelte +1 -1
- package/dist/ui/sheet/sheet-content.svelte.d.ts +1 -1
- package/dist/ui/tooltip/tooltip-content.svelte +1 -1
- package/package.json +9 -12
- package/dist/apps/index.d.ts +0 -20
- package/dist/apps/index.js +0 -20
- package/dist/apps/llm-shell/index.d.ts +0 -2
- package/dist/apps/llm-shell/index.js +0 -1
- package/dist/apps/llm-shell/llm-shell.svelte +0 -334
- package/dist/apps/llm-shell/llm-shell.svelte.d.ts +0 -57
- package/dist/apps/llm-shell/llm-swarm.svelte +0 -79
- package/dist/apps/llm-shell/llm-swarm.svelte.d.ts +0 -25
- package/dist/apps/llm-shell/types.d.ts +0 -103
- package/dist/apps/llm-shell/types.js +0 -1
- package/dist/apps/notes/editor/bubble-menu.svelte.d.ts +0 -11
- package/dist/apps/notes/editor/bubble-menu.svelte.js +0 -165
- package/dist/apps/notes/editor/bubble-toolbar.svelte +0 -55
- package/dist/apps/notes/editor/bubble-toolbar.svelte.d.ts +0 -22
- package/dist/apps/notes/editor/extensions.d.ts +0 -18
- package/dist/apps/notes/editor/extensions.js +0 -88
- package/dist/apps/notes/editor/floating.d.ts +0 -25
- package/dist/apps/notes/editor/floating.js +0 -54
- package/dist/apps/notes/editor/link.d.ts +0 -9
- package/dist/apps/notes/editor/link.js +0 -22
- package/dist/apps/notes/editor/list-cleanup-rule.d.ts +0 -14
- package/dist/apps/notes/editor/list-cleanup-rule.js +0 -47
- package/dist/apps/notes/editor/slash-command.svelte.d.ts +0 -22
- package/dist/apps/notes/editor/slash-command.svelte.js +0 -215
- package/dist/apps/notes/editor/slash-menu.svelte +0 -82
- package/dist/apps/notes/editor/slash-menu.svelte.d.ts +0 -23
- package/dist/apps/notes/index.d.ts +0 -11
- package/dist/apps/notes/index.js +0 -13
- package/dist/apps/notes/markdown.d.ts +0 -12
- package/dist/apps/notes/markdown.js +0 -165
- package/dist/apps/notes/note-editor.svelte +0 -176
- package/dist/apps/notes/note-editor.svelte.d.ts +0 -36
- package/dist/apps/notes/notes-store.svelte.d.ts +0 -64
- package/dist/apps/notes/notes-store.svelte.js +0 -234
- package/dist/apps/notes/notes.svelte +0 -501
- package/dist/apps/notes/notes.svelte.d.ts +0 -53
- package/dist/apps/notes/tree.d.ts +0 -70
- package/dist/apps/notes/tree.js +0 -185
- package/dist/apps/notes/types.d.ts +0 -49
- package/dist/apps/notes/types.js +0 -11
- package/dist/os/layers.d.ts +0 -23
- package/dist/os/layers.js +0 -23
|
@@ -18,6 +18,9 @@ Inherits all props from `HTMLAttributes<HTMLDivElement>`.
|
|
|
18
18
|
| `size?` | `'chip' \| 'pill'` | `'chip'` | `sm` (default) is the standalone free chip; `pill` is the smaller pill
|
|
19
19
|
that nests inside an md container (a select trigger, a button). |
|
|
20
20
|
| `ondismiss?` | `() => void` | — | — |
|
|
21
|
+
| `lead?` | `Snippet` | — | Icon rendered BEFORE the label, outside it. Use this rather than putting
|
|
22
|
+
an icon in `children`: the label then gets its own box, which is the only
|
|
23
|
+
place era's ink centring can reach. |
|
|
21
24
|
| `children?` | `Snippet` | — | — |
|
|
22
25
|
|
|
23
26
|
## Usage
|
|
@@ -63,6 +63,7 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
|
|
|
63
63
|
- `era-ink-center` — on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.
|
|
64
64
|
- `era-token-ink` — the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box, CENTRED horizontally and with no icon sibling. For a left-aligned sentence-case label use era-label-ink; when an icon really must sit beside the text, see the note there.
|
|
65
65
|
- `era-label-ink` — the ink centring for a fixed-height control holding ONE line of sentence-case text and no icon — a menu item, a nav trigger, a button label. Never alongside `truncate` (the trimmed box becomes the clip).
|
|
66
|
+
- `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
66
67
|
- `era-shimmer` — the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
67
68
|
- `era-collapse` — the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden).
|
|
68
69
|
- `h-icon · h-pill · h-chip · h-control · h-bar` — the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*).
|
|
@@ -87,7 +88,6 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
|
|
|
87
88
|
- `ease-base` — Motion — bare transition utilities default to the motion axis, so
|
|
88
89
|
- `bg-divider · text-divider · border-divider · bg-divider-faded · text-divider-faded · border-divider-faded · bg-background · text-background · … (66 in all)` — Surface divider colors: border-divider, bg-divider-faded, …
|
|
89
90
|
- `bg-fill · text-fill · border-fill · bg-link · text-link · border-link · bg-primary · text-primary · … (33 in all)` — The standing pill fill — --era-fill, the latched counterpart of the
|
|
90
|
-
- `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
91
91
|
|
|
92
92
|
Full reference (what each emits, when to use it): `/utilities.md`. Machine-readable list: `/utilities.json`.
|
|
93
93
|
|
|
@@ -195,6 +195,7 @@ source uses it where a name exists.
|
|
|
195
195
|
| `era-ink-center` | on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim. |
|
|
196
196
|
| `era-token-ink` | the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box, CENTRED horizontally and with no icon sibling. For a left-aligned sentence-case label use era-label-ink; when an icon really must sit beside the text, see the note there. |
|
|
197
197
|
| `era-label-ink` | the ink centring for a fixed-height control holding ONE line of sentence-case text and no icon — a menu item, a nav trigger, a button label. Never alongside `truncate` (the trimmed box becomes the clip). |
|
|
198
|
+
| `glass-blur` | the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface. |
|
|
198
199
|
| `era-shimmer` | the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text. |
|
|
199
200
|
| `era-collapse` | the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden). |
|
|
200
201
|
| `h-icon` `h-pill` `h-chip` `h-control` `h-bar` | the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*). |
|
|
@@ -219,7 +220,6 @@ source uses it where a name exists.
|
|
|
219
220
|
| `ease-base` | — |
|
|
220
221
|
| `bg-divider` `text-divider` `border-divider` `bg-divider-faded` `text-divider-faded` `border-divider-faded` `bg-background` `text-background` `border-background` `bg-foreground` `text-foreground` `border-foreground` `bg-1` `text-1` `border-1` `bg-2` `text-2` `border-2` `bg-3` `text-3` `border-3` `bg-4` `text-4` `border-4` `bg-5` `text-5` `border-5` `bg-6` `text-6` `border-6` `bg-7` `text-7` `border-7` `bg-8` `text-8` `border-8` `bg-9` `text-9` `border-9` `bg-10` `text-10` `border-10` `bg-11` `text-11` `border-11` `bg-12` `text-12` `border-12` `bg-border` `text-border` `border-border` `bg-surface` `text-surface` `border-surface` `bg-hover` `text-hover` `border-hover` `bg-fg` `text-fg` `border-fg` `bg-bright` `text-bright` `border-bright` `bg-muted` `text-muted` `border-muted` | — |
|
|
221
222
|
| `bg-fill` `text-fill` `border-fill` `bg-link` `text-link` `border-link` `bg-primary` `text-primary` `border-primary` `bg-primary-fg` `text-primary-fg` `border-primary-fg` `bg-primary-hover` `text-primary-hover` `border-primary-hover` `bg-destructive` `text-destructive` `border-destructive` `bg-destructive-fg` `text-destructive-fg` `border-destructive-fg` `bg-success` `text-success` `border-success` `bg-success-fg` `text-success-fg` `border-success-fg` `bg-warning` `text-warning` `border-warning` `bg-warning-fg` `text-warning-fg` `border-warning-fg` | — |
|
|
222
|
-
| `glass-blur` | the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface. |
|
|
223
223
|
|
|
224
224
|
## era-interactive
|
|
225
225
|
|
|
@@ -517,6 +517,35 @@ Declared in `index.css`.
|
|
|
517
517
|
}
|
|
518
518
|
```
|
|
519
519
|
|
|
520
|
+
## glass-blur
|
|
521
|
+
|
|
522
|
+
**Use it for:** the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
523
|
+
|
|
524
|
+
Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter
|
|
525
|
+
is a registered utility, gated to glass subtrees.
|
|
526
|
+
|
|
527
|
+
It lives HERE rather than in surfaces/glass.css, where a surface's own
|
|
528
|
+
chrome would naturally sit, because glass.css is imported into a cascade
|
|
529
|
+
layer and `@utility` cannot be nested inside one. Surface-scoped RULES stay
|
|
530
|
+
in their surface file; surface-scoped UTILITIES have to come out.
|
|
531
|
+
|
|
532
|
+
Declared in `index.css`.
|
|
533
|
+
|
|
534
|
+
```css
|
|
535
|
+
@utility` cannot be nested inside one. Surface-scoped RULES stay
|
|
536
|
+
* in their surface file; surface-scoped UTILITIES have to come out.
|
|
537
|
+
*
|
|
538
|
+
* @use the backdrop blur for a floating panel (popover, dialog, taskbar) — it
|
|
539
|
+
* applies only inside a data-surface="glass" subtree and is inert elsewhere,
|
|
540
|
+
* so it is safe to leave on a panel that renders under every surface. */
|
|
541
|
+
@utility glass-blur {
|
|
542
|
+
[data-surface='glass'] & {
|
|
543
|
+
backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
|
|
544
|
+
-webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
```
|
|
548
|
+
|
|
520
549
|
## era-shimmer
|
|
521
550
|
|
|
522
551
|
**Use it for:** the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
@@ -1040,24 +1069,6 @@ Declared in `index.css`.
|
|
|
1040
1069
|
}
|
|
1041
1070
|
```
|
|
1042
1071
|
|
|
1043
|
-
## glass-blur
|
|
1044
|
-
|
|
1045
|
-
**Use it for:** the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
1046
|
-
|
|
1047
|
-
Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter
|
|
1048
|
-
is a registered utility, gated to glass subtrees.
|
|
1049
|
-
|
|
1050
|
-
Declared in `surfaces/glass.css`.
|
|
1051
|
-
|
|
1052
|
-
```css
|
|
1053
|
-
@utility glass-blur {
|
|
1054
|
-
[data-surface='glass'] & {
|
|
1055
|
-
backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
|
|
1056
|
-
-webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
|
|
1057
|
-
}
|
|
1058
|
-
}
|
|
1059
|
-
```
|
|
1060
|
-
|
|
1061
1072
|
<!-- end: utilities -->
|
|
1062
1073
|
|
|
1063
1074
|
<!-- begin: draggable -->
|
|
@@ -1100,19 +1111,20 @@ A complete notes app — rich-text editor, slash commands, local persistence.
|
|
|
1100
1111
|
|
|
1101
1112
|
## Usage
|
|
1102
1113
|
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1114
|
+
**Notes is not published.** It lives in `src/apps/` in the era-ui repository,
|
|
1115
|
+
outside the packaged `src/lib`, so there is no import path that reaches it — the
|
|
1116
|
+
`@signal9/era-ui/apps` subpath was removed in v13.
|
|
1106
1117
|
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1118
|
+
A design system that also ships a note-taking application is two products in one
|
|
1119
|
+
package: Notes alone brings fifteen TipTap packages, and its release cadence and
|
|
1120
|
+
support expectations are nothing like a primitive's. It stays in the repo as a
|
|
1121
|
+
reference implementation and a demo — read it, copy it, or lift it into the
|
|
1122
|
+
product that renders it.
|
|
1111
1123
|
|
|
1112
|
-
|
|
1113
|
-
|
|
1124
|
+
What era DOES publish is the part that generalises: `@signal9/era-ui/styles/prose`
|
|
1125
|
+
is the document typography Notes uses, available to anyone building an editor.
|
|
1114
1126
|
|
|
1115
|
-
|
|
1127
|
+
Read as a reference, the integration is: a sidebar with filter, pin, and delete; a TipTap
|
|
1116
1128
|
document with a `/` command menu and a selection toolbar; and persistence to
|
|
1117
1129
|
`localStorage` under `era-ui:notes`.
|
|
1118
1130
|
|
|
@@ -1146,7 +1158,7 @@ Persistence is one small interface, so server-backed hosting is a drop-in swap
|
|
|
1146
1158
|
`load`/`save` may be sync or async:
|
|
1147
1159
|
|
|
1148
1160
|
```ts
|
|
1149
|
-
import { Notes, NotesStore } from '
|
|
1161
|
+
import { Notes, NotesStore } from '$apps/index.js'; // in-repo; not published
|
|
1150
1162
|
|
|
1151
1163
|
const store = new NotesStore({
|
|
1152
1164
|
adapter: {
|
|
@@ -1225,6 +1237,9 @@ Inherits all props from `HTMLAttributes<HTMLSpanElement>`.
|
|
|
1225
1237
|
|------|------|---------|-------|
|
|
1226
1238
|
| `ref?` | `HTMLSpanElement \| null` | `null` | bindable |
|
|
1227
1239
|
| `tone?` | `'default' \| 'accent' \| 'destructive' \| 'success' \| 'warning'` | `'default'` | — |
|
|
1240
|
+
| `lead?` | `Snippet` | — | Icon rendered BEFORE the label, outside it. Use this rather than putting
|
|
1241
|
+
an icon in `children`: the label then gets its own box, which is the only
|
|
1242
|
+
place era's ink centring can reach. |
|
|
1228
1243
|
| `children?` | `Snippet` | — | — |
|
|
1229
1244
|
|
|
1230
1245
|
## Usage
|
|
@@ -1347,6 +1362,10 @@ Inherits all props from `Button.RootProps`.
|
|
|
1347
1362
|
spinner. The existing label stays rendered so focus, click targets,
|
|
1348
1363
|
and screen-reader accessible names don't change shape mid-flight. |
|
|
1349
1364
|
| `loadingLabel?` | `string` | — | Screen-reader-only label announced while `loading` is true. |
|
|
1365
|
+
| `lead?` | `Snippet` | — | Icon rendered BEFORE the label, outside it. Use this rather than putting
|
|
1366
|
+
an icon in `children`: the label then gets its own box, which is the only
|
|
1367
|
+
place era's ink centring can reach (see era-label-ink). |
|
|
1368
|
+
| `trail?` | `Snippet` | — | Icon rendered AFTER the label, outside it. Same reason as `lead`. |
|
|
1350
1369
|
| `children?` | `Snippet` | — | — |
|
|
1351
1370
|
| `ref?` | `(forwarded)` | `null` | bindable |
|
|
1352
1371
|
|
|
@@ -1490,6 +1509,9 @@ Inherits all props from `HTMLAttributes<HTMLDivElement>`.
|
|
|
1490
1509
|
| `size?` | `'chip' \| 'pill'` | `'chip'` | `sm` (default) is the standalone free chip; `pill` is the smaller pill
|
|
1491
1510
|
that nests inside an md container (a select trigger, a button). |
|
|
1492
1511
|
| `ondismiss?` | `() => void` | — | — |
|
|
1512
|
+
| `lead?` | `Snippet` | — | Icon rendered BEFORE the label, outside it. Use this rather than putting
|
|
1513
|
+
an icon in `children`: the label then gets its own box, which is the only
|
|
1514
|
+
place era's ink centring can reach. |
|
|
1493
1515
|
| `children?` | `Snippet` | — | — |
|
|
1494
1516
|
|
|
1495
1517
|
## Usage
|
|
@@ -101,6 +101,7 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
|
|
|
101
101
|
- `era-ink-center` — on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim.
|
|
102
102
|
- `era-token-ink` — the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box, CENTRED horizontally and with no icon sibling. For a left-aligned sentence-case label use era-label-ink; when an icon really must sit beside the text, see the note there.
|
|
103
103
|
- `era-label-ink` — the ink centring for a fixed-height control holding ONE line of sentence-case text and no icon — a menu item, a nav trigger, a button label. Never alongside `truncate` (the trimmed box becomes the clip).
|
|
104
|
+
- `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
104
105
|
- `era-shimmer` — the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
105
106
|
- `era-collapse` — the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden).
|
|
106
107
|
- `h-icon · h-pill · h-chip · h-control · h-bar` — the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*).
|
|
@@ -125,6 +126,5 @@ Classes, not components — they need no import beyond the stylesheet. Reach for
|
|
|
125
126
|
- `ease-base` — Motion — bare transition utilities default to the motion axis, so
|
|
126
127
|
- `bg-divider · text-divider · border-divider · bg-divider-faded · text-divider-faded · border-divider-faded · bg-background · text-background · … (66 in all)` — Surface divider colors: border-divider, bg-divider-faded, …
|
|
127
128
|
- `bg-fill · text-fill · border-fill · bg-link · text-link · border-link · bg-primary · text-primary · … (33 in all)` — The standing pill fill — --era-fill, the latched counterpart of the
|
|
128
|
-
- `glass-blur` — the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
129
129
|
|
|
130
130
|
Full reference (what each emits, when to use it): `{{ORIGIN}}/utilities.md`. Machine-readable list: `{{ORIGIN}}/utilities.json`.
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"slug": "utilities",
|
|
45
45
|
"title": "Utilities",
|
|
46
46
|
"summary": "The CSS classes era ships alongside the components — links, ink-centred text, shimmer, hidden scrollbars.",
|
|
47
|
-
"tokenEstimate":
|
|
47
|
+
"tokenEstimate": 10518,
|
|
48
48
|
"sections": [
|
|
49
49
|
"Overview",
|
|
50
50
|
"era-interactive",
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
"era-ink-center",
|
|
57
57
|
"era-token-ink",
|
|
58
58
|
"era-label-ink",
|
|
59
|
+
"glass-blur",
|
|
59
60
|
"era-shimmer",
|
|
60
61
|
"era-collapse",
|
|
61
62
|
"h-icon · h-pill · h-chip · h-control · h-bar",
|
|
@@ -79,8 +80,7 @@
|
|
|
79
80
|
"bg-field · text-field · border-field · bg-field-highlight · text-field-highlight · border-field-highlight",
|
|
80
81
|
"ease-base",
|
|
81
82
|
"bg-divider · text-divider · border-divider · bg-divider-faded · text-divider-faded · border-divider-faded · bg-background · text-background · … (66 in all)",
|
|
82
|
-
"bg-fill · text-fill · border-fill · bg-link · text-link · border-link · bg-primary · text-primary · … (33 in all)"
|
|
83
|
-
"glass-blur"
|
|
83
|
+
"bg-fill · text-fill · border-fill · bg-link · text-link · border-link · bg-primary · text-primary · … (33 in all)"
|
|
84
84
|
],
|
|
85
85
|
"file": "utilities.md"
|
|
86
86
|
},
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"slug": "notes",
|
|
121
121
|
"title": "Notes",
|
|
122
122
|
"summary": "A complete notes app — rich-text editor, slash commands, local persistence.",
|
|
123
|
-
"tokenEstimate":
|
|
123
|
+
"tokenEstimate": 1005,
|
|
124
124
|
"sections": [
|
|
125
125
|
"Usage",
|
|
126
126
|
"Peer dependencies",
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
"slug": "badge",
|
|
147
147
|
"title": "Badge",
|
|
148
148
|
"summary": "A small label for status or categorization.",
|
|
149
|
-
"tokenEstimate":
|
|
149
|
+
"tokenEstimate": 279,
|
|
150
150
|
"sections": [
|
|
151
151
|
"Import",
|
|
152
152
|
"Props",
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
"slug": "button",
|
|
184
184
|
"title": "Button",
|
|
185
185
|
"summary": "A flexible button or link element.",
|
|
186
|
-
"tokenEstimate":
|
|
186
|
+
"tokenEstimate": 538,
|
|
187
187
|
"sections": [
|
|
188
188
|
"Import",
|
|
189
189
|
"Props",
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
"slug": "chip",
|
|
230
230
|
"title": "Chip",
|
|
231
231
|
"summary": "An interactive, optionally dismissible token.",
|
|
232
|
-
"tokenEstimate":
|
|
232
|
+
"tokenEstimate": 329,
|
|
233
233
|
"sections": [
|
|
234
234
|
"Import",
|
|
235
235
|
"Props",
|
|
@@ -1064,6 +1064,16 @@
|
|
|
1064
1064
|
"description": "LABEL INK — era-token-ink's mixed-case sibling, and the general answer to\n\"this fixed-height control holds one line of text\".\n\nSame mechanism, same reason: `text-box-trim` needs a BLOCK box, so the row\nbecomes one and `align-content` (block-container alignment) does the\ncentring. What differs is the band and the alignment, because the content\nclass differs — a label is sentence case, so the x-height band is the visual\nmass to centre (cap-band reads low on \"System\"), and it is laid out against\nthe row's padding rather than centred in it.\n\nWHY IT EXISTS AT ALL: era's controls are flex, and a flex container's bare\ntext is an ANONYMOUS flex item — a box no selector reaches and no\nnon-inherited property touches. So `era-text-trim` on a flex row is inert,\ncontributing only its `line-height: 1`, and the ink falls back to line-box\ncentring by font metrics. era-token-ink already fixed that for centred\ntokens; this fixes it for everything else.\n\nTHE ICON CASE IS NOT SOLVED, and cannot be from CSS: an icon beside the text\nneeds the box to stay flex, which re-creates the anonymous item. A component\nwhose children are an opaque slot therefore guards it —\n`not-has-[svg]:era-label-ink` — and ink-centres the text-only case while\nleaving the icon case on line-box centring. Splitting icon and label into\nseparate slots is what would close it; typography/inert-trim reports every\nsite still on the fallback.",
|
|
1065
1065
|
"css": "@utility era-label-ink {\n\tdisplay: block;\n\talign-content: center;\n\tline-height: 1;\n\ttext-box: trim-both ex alphabetic;\n}"
|
|
1066
1066
|
},
|
|
1067
|
+
{
|
|
1068
|
+
"name": "glass-blur",
|
|
1069
|
+
"names": [
|
|
1070
|
+
"glass-blur"
|
|
1071
|
+
],
|
|
1072
|
+
"file": "index.css",
|
|
1073
|
+
"useCase": "the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface=\"glass\" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.",
|
|
1074
|
+
"description": "Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter\nis a registered utility, gated to glass subtrees.\n\nIt lives HERE rather than in surfaces/glass.css, where a surface's own\nchrome would naturally sit, because glass.css is imported into a cascade\nlayer and `@utility` cannot be nested inside one. Surface-scoped RULES stay\nin their surface file; surface-scoped UTILITIES have to come out.",
|
|
1075
|
+
"css": "@utility` cannot be nested inside one. Surface-scoped RULES stay\n * in their surface file; surface-scoped UTILITIES have to come out.\n *\n * @use the backdrop blur for a floating panel (popover, dialog, taskbar) — it\n * applies only inside a data-surface=\"glass\" subtree and is inert elsewhere,\n * so it is safe to leave on a panel that renders under every surface. */\n@utility glass-blur {\n\t[data-surface='glass'] & {\n\t\tbackdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));\n\t\t-webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));\n\t}\n}"
|
|
1076
|
+
},
|
|
1067
1077
|
{
|
|
1068
1078
|
"name": "era-shimmer",
|
|
1069
1079
|
"names": [
|
|
@@ -1512,16 +1522,6 @@
|
|
|
1512
1522
|
"file": "index.css",
|
|
1513
1523
|
"description": "The standing pill fill — --era-fill, the latched counterpart of the\ntransient highlight. Surface-owned: a composing wash on flat/bevel, the\nopaque swatch on glass.",
|
|
1514
1524
|
"css": "@theme inline {\n\t--color-fill: var(--era-fill);\n\t--color-link: var(--color-link);\n\t--color-primary: var(--color-primary);\n\t--color-primary-fg: var(--color-primary-fg);\n\t--color-primary-hover: var(--color-primary-hover);\n\t--color-destructive: var(--color-destructive);\n\t--color-destructive-fg: var(--color-destructive-fg);\n\t--color-success: var(--color-success);\n\t--color-success-fg: var(--color-success-fg);\n\t--color-warning: var(--color-warning);\n\t--color-warning-fg: var(--color-warning-fg);\n}"
|
|
1515
|
-
},
|
|
1516
|
-
{
|
|
1517
|
-
"name": "glass-blur",
|
|
1518
|
-
"names": [
|
|
1519
|
-
"glass-blur"
|
|
1520
|
-
],
|
|
1521
|
-
"file": "surfaces/glass.css",
|
|
1522
|
-
"useCase": "the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface=\"glass\" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.",
|
|
1523
|
-
"description": "Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter\nis a registered utility, gated to glass subtrees.",
|
|
1524
|
-
"css": "@utility glass-blur {\n\t[data-surface='glass'] & {\n\t\tbackdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));\n\t\t-webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));\n\t}\n}"
|
|
1525
1525
|
}
|
|
1526
1526
|
]
|
|
1527
1527
|
}
|
|
@@ -4,19 +4,20 @@ A complete notes app — rich-text editor, slash commands, local persistence.
|
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
**Notes is not published.** It lives in `src/apps/` in the era-ui repository,
|
|
8
|
+
outside the packaged `src/lib`, so there is no import path that reaches it — the
|
|
9
|
+
`@signal9/era-ui/apps` subpath was removed in v13.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
A design system that also ships a note-taking application is two products in one
|
|
12
|
+
package: Notes alone brings fifteen TipTap packages, and its release cadence and
|
|
13
|
+
support expectations are nothing like a primitive's. It stays in the repo as a
|
|
14
|
+
reference implementation and a demo — read it, copy it, or lift it into the
|
|
15
|
+
product that renders it.
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
What era DOES publish is the part that generalises: `@signal9/era-ui/styles/prose`
|
|
18
|
+
is the document typography Notes uses, available to anyone building an editor.
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
Read as a reference, the integration is: a sidebar with filter, pin, and delete; a TipTap
|
|
20
21
|
document with a `/` command menu and a selection toolbar; and persistence to
|
|
21
22
|
`localStorage` under `era-ui:notes`.
|
|
22
23
|
|
|
@@ -50,7 +51,7 @@ Persistence is one small interface, so server-backed hosting is a drop-in swap
|
|
|
50
51
|
`load`/`save` may be sync or async:
|
|
51
52
|
|
|
52
53
|
```ts
|
|
53
|
-
import { Notes, NotesStore } from '
|
|
54
|
+
import { Notes, NotesStore } from '$apps/index.js'; // in-repo; not published
|
|
54
55
|
|
|
55
56
|
const store = new NotesStore({
|
|
56
57
|
adapter: {
|
|
@@ -90,6 +90,16 @@
|
|
|
90
90
|
"description": "LABEL INK — era-token-ink's mixed-case sibling, and the general answer to\n\"this fixed-height control holds one line of text\".\n\nSame mechanism, same reason: `text-box-trim` needs a BLOCK box, so the row\nbecomes one and `align-content` (block-container alignment) does the\ncentring. What differs is the band and the alignment, because the content\nclass differs — a label is sentence case, so the x-height band is the visual\nmass to centre (cap-band reads low on \"System\"), and it is laid out against\nthe row's padding rather than centred in it.\n\nWHY IT EXISTS AT ALL: era's controls are flex, and a flex container's bare\ntext is an ANONYMOUS flex item — a box no selector reaches and no\nnon-inherited property touches. So `era-text-trim` on a flex row is inert,\ncontributing only its `line-height: 1`, and the ink falls back to line-box\ncentring by font metrics. era-token-ink already fixed that for centred\ntokens; this fixes it for everything else.\n\nTHE ICON CASE IS NOT SOLVED, and cannot be from CSS: an icon beside the text\nneeds the box to stay flex, which re-creates the anonymous item. A component\nwhose children are an opaque slot therefore guards it —\n`not-has-[svg]:era-label-ink` — and ink-centres the text-only case while\nleaving the icon case on line-box centring. Splitting icon and label into\nseparate slots is what would close it; typography/inert-trim reports every\nsite still on the fallback.",
|
|
91
91
|
"css": "@utility era-label-ink {\n\tdisplay: block;\n\talign-content: center;\n\tline-height: 1;\n\ttext-box: trim-both ex alphabetic;\n}"
|
|
92
92
|
},
|
|
93
|
+
{
|
|
94
|
+
"name": "glass-blur",
|
|
95
|
+
"names": [
|
|
96
|
+
"glass-blur"
|
|
97
|
+
],
|
|
98
|
+
"file": "index.css",
|
|
99
|
+
"useCase": "the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface=\"glass\" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.",
|
|
100
|
+
"description": "Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter\nis a registered utility, gated to glass subtrees.\n\nIt lives HERE rather than in surfaces/glass.css, where a surface's own\nchrome would naturally sit, because glass.css is imported into a cascade\nlayer and `@utility` cannot be nested inside one. Surface-scoped RULES stay\nin their surface file; surface-scoped UTILITIES have to come out.",
|
|
101
|
+
"css": "@utility` cannot be nested inside one. Surface-scoped RULES stay\n * in their surface file; surface-scoped UTILITIES have to come out.\n *\n * @use the backdrop blur for a floating panel (popover, dialog, taskbar) — it\n * applies only inside a data-surface=\"glass\" subtree and is inert elsewhere,\n * so it is safe to leave on a panel that renders under every surface. */\n@utility glass-blur {\n\t[data-surface='glass'] & {\n\t\tbackdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));\n\t\t-webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));\n\t}\n}"
|
|
102
|
+
},
|
|
93
103
|
{
|
|
94
104
|
"name": "era-shimmer",
|
|
95
105
|
"names": [
|
|
@@ -538,16 +548,6 @@
|
|
|
538
548
|
"file": "index.css",
|
|
539
549
|
"description": "The standing pill fill — --era-fill, the latched counterpart of the\ntransient highlight. Surface-owned: a composing wash on flat/bevel, the\nopaque swatch on glass.",
|
|
540
550
|
"css": "@theme inline {\n\t--color-fill: var(--era-fill);\n\t--color-link: var(--color-link);\n\t--color-primary: var(--color-primary);\n\t--color-primary-fg: var(--color-primary-fg);\n\t--color-primary-hover: var(--color-primary-hover);\n\t--color-destructive: var(--color-destructive);\n\t--color-destructive-fg: var(--color-destructive-fg);\n\t--color-success: var(--color-success);\n\t--color-success-fg: var(--color-success-fg);\n\t--color-warning: var(--color-warning);\n\t--color-warning-fg: var(--color-warning-fg);\n}"
|
|
541
|
-
},
|
|
542
|
-
{
|
|
543
|
-
"name": "glass-blur",
|
|
544
|
-
"names": [
|
|
545
|
-
"glass-blur"
|
|
546
|
-
],
|
|
547
|
-
"file": "surfaces/glass.css",
|
|
548
|
-
"useCase": "the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface=\"glass\" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.",
|
|
549
|
-
"description": "Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter\nis a registered utility, gated to glass subtrees.",
|
|
550
|
-
"css": "@utility glass-blur {\n\t[data-surface='glass'] & {\n\t\tbackdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));\n\t\t-webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));\n\t}\n}"
|
|
551
551
|
}
|
|
552
552
|
]
|
|
553
553
|
}
|
|
@@ -58,6 +58,7 @@ source uses it where a name exists.
|
|
|
58
58
|
| `era-ink-center` | on a native single-line <input> (or the text layer that must mirror one) inside a fixed-height field — never alongside era-text-trim. |
|
|
59
59
|
| `era-token-ink` | the ink centring for a token pill — a badge, a KV value, any short caps-or-digits label in a fixed-height box, CENTRED horizontally and with no icon sibling. For a left-aligned sentence-case label use era-label-ink; when an icon really must sit beside the text, see the note there. |
|
|
60
60
|
| `era-label-ink` | the ink centring for a fixed-height control holding ONE line of sentence-case text and no icon — a menu item, a nav trigger, a button label. Never alongside `truncate` (the trimmed box becomes the clip). |
|
|
61
|
+
| `glass-blur` | the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface. |
|
|
61
62
|
| `era-shimmer` | the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text. |
|
|
62
63
|
| `era-collapse` | the height sweep for a bits-ui Collapsible.Content — put it on the Content element itself (it carries its own overflow: hidden). |
|
|
63
64
|
| `h-icon` `h-pill` `h-chip` `h-control` `h-bar` | the tier-height ladder — h-icon (icon) · h-pill (nested pill) · h-chip (standalone pill) · h-control (control) · h-bar (bar); the named form of h-(--era-h-*). |
|
|
@@ -82,7 +83,6 @@ source uses it where a name exists.
|
|
|
82
83
|
| `ease-base` | — |
|
|
83
84
|
| `bg-divider` `text-divider` `border-divider` `bg-divider-faded` `text-divider-faded` `border-divider-faded` `bg-background` `text-background` `border-background` `bg-foreground` `text-foreground` `border-foreground` `bg-1` `text-1` `border-1` `bg-2` `text-2` `border-2` `bg-3` `text-3` `border-3` `bg-4` `text-4` `border-4` `bg-5` `text-5` `border-5` `bg-6` `text-6` `border-6` `bg-7` `text-7` `border-7` `bg-8` `text-8` `border-8` `bg-9` `text-9` `border-9` `bg-10` `text-10` `border-10` `bg-11` `text-11` `border-11` `bg-12` `text-12` `border-12` `bg-border` `text-border` `border-border` `bg-surface` `text-surface` `border-surface` `bg-hover` `text-hover` `border-hover` `bg-fg` `text-fg` `border-fg` `bg-bright` `text-bright` `border-bright` `bg-muted` `text-muted` `border-muted` | — |
|
|
84
85
|
| `bg-fill` `text-fill` `border-fill` `bg-link` `text-link` `border-link` `bg-primary` `text-primary` `border-primary` `bg-primary-fg` `text-primary-fg` `border-primary-fg` `bg-primary-hover` `text-primary-hover` `border-primary-hover` `bg-destructive` `text-destructive` `border-destructive` `bg-destructive-fg` `text-destructive-fg` `border-destructive-fg` `bg-success` `text-success` `border-success` `bg-success-fg` `text-success-fg` `border-success-fg` `bg-warning` `text-warning` `border-warning` `bg-warning-fg` `text-warning-fg` `border-warning-fg` | — |
|
|
85
|
-
| `glass-blur` | the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface. |
|
|
86
86
|
|
|
87
87
|
## era-interactive
|
|
88
88
|
|
|
@@ -380,6 +380,35 @@ Declared in `index.css`.
|
|
|
380
380
|
}
|
|
381
381
|
```
|
|
382
382
|
|
|
383
|
+
## glass-blur
|
|
384
|
+
|
|
385
|
+
**Use it for:** the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
386
|
+
|
|
387
|
+
Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter
|
|
388
|
+
is a registered utility, gated to glass subtrees.
|
|
389
|
+
|
|
390
|
+
It lives HERE rather than in surfaces/glass.css, where a surface's own
|
|
391
|
+
chrome would naturally sit, because glass.css is imported into a cascade
|
|
392
|
+
layer and `@utility` cannot be nested inside one. Surface-scoped RULES stay
|
|
393
|
+
in their surface file; surface-scoped UTILITIES have to come out.
|
|
394
|
+
|
|
395
|
+
Declared in `index.css`.
|
|
396
|
+
|
|
397
|
+
```css
|
|
398
|
+
@utility` cannot be nested inside one. Surface-scoped RULES stay
|
|
399
|
+
* in their surface file; surface-scoped UTILITIES have to come out.
|
|
400
|
+
*
|
|
401
|
+
* @use the backdrop blur for a floating panel (popover, dialog, taskbar) — it
|
|
402
|
+
* applies only inside a data-surface="glass" subtree and is inert elsewhere,
|
|
403
|
+
* so it is safe to leave on a panel that renders under every surface. */
|
|
404
|
+
@utility glass-blur {
|
|
405
|
+
[data-surface='glass'] & {
|
|
406
|
+
backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
|
|
407
|
+
-webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
383
412
|
## era-shimmer
|
|
384
413
|
|
|
385
414
|
**Use it for:** the in-progress text treatment — put it on a "working…" / "thinking…" label while a task streams, instead of a spinner beside the text.
|
|
@@ -902,21 +931,3 @@ Declared in `index.css`.
|
|
|
902
931
|
--color-warning-fg: var(--color-warning-fg);
|
|
903
932
|
}
|
|
904
933
|
```
|
|
905
|
-
|
|
906
|
-
## glass-blur
|
|
907
|
-
|
|
908
|
-
**Use it for:** the backdrop blur for a floating panel (popover, dialog, taskbar) — it applies only inside a data-surface="glass" subtree and is inert elsewhere, so it is safe to leave on a panel that renders under every surface.
|
|
909
|
-
|
|
910
|
-
Tailwind v4 cannot resolve var() inside backdrop-blur-[], so the filter
|
|
911
|
-
is a registered utility, gated to glass subtrees.
|
|
912
|
-
|
|
913
|
-
Declared in `surfaces/glass.css`.
|
|
914
|
-
|
|
915
|
-
```css
|
|
916
|
-
@utility glass-blur {
|
|
917
|
-
[data-surface='glass'] & {
|
|
918
|
-
backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
|
|
919
|
-
-webkit-backdrop-filter: blur(var(--era-blur)) saturate(var(--era-saturate));
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
```
|
package/dist/os/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ export { PaneManager, getPaneManager, tryGetPaneManager, setPaneManagerContext,
|
|
|
2
2
|
export { persistWorkspace, loadWorkspace, saveWorkspace, clearWorkspace, WORKSPACE_STORAGE_KEY } from './workspace-storage.svelte.js';
|
|
3
3
|
export { type SnapZone, type Workspace } from './pane-manager.svelte.js';
|
|
4
4
|
export { NotificationService, getNotifications, setNotificationContext, type AppNotification, type NotifyOptions, type NotificationAction, type NotificationTone } from './notifications.svelte.js';
|
|
5
|
-
export { LAYER } from './layers.js';
|
|
6
5
|
export { default as Desktop } from './desktop.svelte';
|
|
7
6
|
export { default as Pane } from './pane.svelte';
|
|
8
7
|
export { default as Taskbar } from './taskbar.svelte';
|
package/dist/os/index.js
CHANGED
|
@@ -6,7 +6,6 @@ export { PaneManager, getPaneManager, tryGetPaneManager, setPaneManagerContext,
|
|
|
6
6
|
export { persistWorkspace, loadWorkspace, saveWorkspace, clearWorkspace, WORKSPACE_STORAGE_KEY } from './workspace-storage.svelte.js';
|
|
7
7
|
export {} from './pane-manager.svelte.js';
|
|
8
8
|
export { NotificationService, getNotifications, setNotificationContext } from './notifications.svelte.js';
|
|
9
|
-
export { LAYER } from './layers.js';
|
|
10
9
|
export { default as Desktop } from './desktop.svelte';
|
|
11
10
|
export { default as Pane } from './pane.svelte';
|
|
12
11
|
export { default as Taskbar } from './taskbar.svelte';
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
import { cn } from '../utils/index.js';
|
|
7
7
|
import { getNotifications, type AppNotification } from './notifications.svelte.js';
|
|
8
8
|
import { getPaneManager } from './pane-manager.svelte.js';
|
|
9
|
-
import { LAYER } from './layers.js';
|
|
10
9
|
|
|
11
10
|
let { open = $bindable(false) }: { open?: boolean } = $props();
|
|
12
11
|
const notif = getNotifications();
|
|
@@ -34,7 +33,7 @@
|
|
|
34
33
|
</script>
|
|
35
34
|
|
|
36
35
|
{#if open}
|
|
37
|
-
<div class={cn('absolute inset-0'
|
|
36
|
+
<div class={cn('absolute inset-0 z-drawer')}>
|
|
38
37
|
<!-- Click-away scrim (transparent) -->
|
|
39
38
|
<button
|
|
40
39
|
class="absolute inset-0 cursor-default"
|
package/dist/os/taskbar.svelte
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
import { cn } from '../utils/index.js';
|
|
12
12
|
import { getPaneManager } from './pane-manager.svelte.js';
|
|
13
13
|
import { getNotifications } from './notifications.svelte.js';
|
|
14
|
-
import { LAYER } from './layers.js';
|
|
15
14
|
|
|
16
15
|
let {
|
|
17
16
|
position = 'bottom',
|
|
@@ -209,7 +208,7 @@
|
|
|
209
208
|
'inset-x-0 border-divider-faded',
|
|
210
209
|
position === 'top' ? 'top-0 rounded-b-bar border-b' : 'bottom-0 rounded-t-bar border-t'
|
|
211
210
|
),
|
|
212
|
-
|
|
211
|
+
'z-chrome',
|
|
213
212
|
className
|
|
214
213
|
)}
|
|
215
214
|
{...restProps}
|
|
@@ -332,7 +331,7 @@
|
|
|
332
331
|
data-mode="touch"
|
|
333
332
|
class={cn(
|
|
334
333
|
'absolute right-gutter bottom-[max(var(--era-gap),env(safe-area-inset-bottom))] sm:hidden',
|
|
335
|
-
|
|
334
|
+
'z-chrome'
|
|
336
335
|
)}
|
|
337
336
|
>
|
|
338
337
|
<!-- A STANDARD era Button, just floated: era corners (rd-xs at this tier) and
|
package/dist/os/toaster.svelte
CHANGED
|
@@ -3,21 +3,20 @@
|
|
|
3
3
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
4
|
import { cn } from '../utils/index.js';
|
|
5
5
|
import { getNotifications } from './notifications.svelte.js';
|
|
6
|
-
import { LAYER } from './layers.js';
|
|
7
6
|
import Toast from './toast.svelte';
|
|
8
7
|
|
|
9
8
|
let { class: className, ...restProps }: HTMLAttributes<HTMLDivElement> = $props();
|
|
10
9
|
const notif = getNotifications();
|
|
11
10
|
</script>
|
|
12
11
|
|
|
13
|
-
<!-- Toast stack, above the taskbar and above bits-ui overlays (
|
|
12
|
+
<!-- Toast stack, above the taskbar and above bits-ui overlays (z-toast).
|
|
14
13
|
flex-col-reverse: the newest toast (index 0) sits at the bottom, nearest the
|
|
15
14
|
tray it came from. pointer-events-none on the column so gaps don't block the
|
|
16
15
|
desktop; each toast re-enables its own. -->
|
|
17
16
|
<div
|
|
18
17
|
class={cn(
|
|
19
18
|
'pointer-events-none absolute right-card bottom-(--era-h-bar) flex flex-col-reverse gap-inset-chip',
|
|
20
|
-
|
|
19
|
+
'z-toast',
|
|
21
20
|
className
|
|
22
21
|
)}
|
|
23
22
|
{...restProps}
|