@rvx/ui 0.1.14 → 0.1.16

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.
@@ -70,6 +70,15 @@ export interface Theme {
70
70
  nav_list?: string;
71
71
  nav_list_item?: string;
72
72
  nav_list_item_current?: string;
73
+ notification_host?: string;
74
+ notification_area?: string;
75
+ notification?: string;
76
+ notification_raw?: string;
77
+ notification_default?: string;
78
+ notification_info?: string;
79
+ notification_success?: string;
80
+ notification_warning?: string;
81
+ notification_danger?: string;
73
82
  page?: string;
74
83
  page_scrollbar_comp?: string;
75
84
  page_content_col?: string;
@@ -1,13 +1,3 @@
1
- import { Expression } from "rvx";
2
1
  export type SizeContext = "content" | "control";
3
2
  export type AriaLive = "off" | "polite" | "assertive";
4
3
  export type AriaRelevant = "additions" | "removals" | "text" | "all" | "additions removals" | "additions text" | "removals text";
5
- /**
6
- * Utility to map expressions of strings or string arrays to (e.g. space) separated strings.
7
- *
8
- * @example
9
- * ```tsx
10
- * <a rel={separated(["noreferrer", "author"], " ")} />;
11
- * ```
12
- */
13
- export declare function separated(input: Expression<string | string[] | undefined>, sep: string): Expression<string | undefined>;
@@ -1,10 +1,2 @@
1
- import { map } from "rvx";
2
- export function separated(input, sep) {
3
- return map(input, v => {
4
- if (Array.isArray(v)) {
5
- return v.join(sep);
6
- }
7
- return v;
8
- });
9
- }
1
+ export {};
10
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/common/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,GAAG,EAAE,MAAM,KAAK,CAAC;AAetC,MAAM,UAAU,SAAS,CAAC,KAAgD,EAAE,GAAW;IACtF,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/common/types.tsx"],"names":[],"mappings":""}
@@ -6,8 +6,8 @@ export function Card(props) {
6
6
  const theme = THEME.current;
7
7
  return _jsx("div", { class: [
8
8
  theme?.card,
9
+ props.raw ? theme?.card_raw : undefined,
9
10
  map(props.variant, variant => theme?.[`card_${variant ?? "default"}`]),
10
- map(props.raw, unpadded => unpadded ? theme?.card_raw : undefined),
11
11
  ], children: props.raw
12
12
  ? props.children
13
13
  : _jsx(Column, { class: theme?.card_content, children: props.children }) });
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/components/card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAc,GAAG,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,MAAM,UAAU,IAAI,CAAC,KAIpB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,OAAO,cACN,KAAK,EAAE;YACN,KAAK,EAAE,IAAI;YACX,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;YACtE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;SAClE,YAEA,KAAK,CAAC,GAAG;YACT,CAAC,CAAC,KAAK,CAAC,QAAQ;YAChB,CAAC,CAAC,KAAC,MAAM,IAAC,KAAK,EAAE,KAAK,EAAE,YAAY,YAClC,KAAK,CAAC,QAAQ,GACP,GAEL,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/components/card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAc,GAAG,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,MAAM,UAAU,IAAI,CAAC,KAIpB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,OAAO,cACN,KAAK,EAAE;YACN,KAAK,EAAE,IAAI;YACX,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS;YACvC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;SACtE,YAEA,KAAK,CAAC,GAAG;YACT,CAAC,CAAC,KAAK,CAAC,QAAQ;YAChB,CAAC,CAAC,KAAC,MAAM,IAAC,KAAK,EAAE,KAAK,EAAE,YAAY,YAClC,KAAK,CAAC,QAAQ,GACP,GAEL,CAAC;AACR,CAAC"}
@@ -20,9 +20,7 @@ export declare function DialogBody(props: {
20
20
  title?: unknown;
21
21
  description?: unknown;
22
22
  inlineSize?: Expression<string | undefined>;
23
- maxInlineSize?: Expression<string | undefined>;
24
23
  blockSize?: Expression<string | undefined>;
25
- maxBlockSize?: Expression<string | undefined>;
26
24
  "aria-labelledby"?: Expression<string | undefined>;
27
25
  "aria-describedby"?: Expression<string | undefined>;
28
26
  }): unknown;
@@ -63,16 +63,17 @@ export function DialogBody(props) {
63
63
  const body = _jsx("div", { class: [
64
64
  theme?.dialog_container,
65
65
  props.class,
66
- ], style: props.style, role: map(props.role, v => v ?? "dialog"), "aria-labelledby": map(props["aria-labelledby"], v => v ?? titleId), "aria-describedby": map(props["aria-describedby"], v => v ?? descriptionId), children: _jsxs("div", { class: [
66
+ ], style: [
67
+ props.style,
68
+ {
69
+ "--dialog-inline-size": map(props.inlineSize, v => v ?? "auto"),
70
+ "--dialog-block-size": map(props.blockSize, v => v ?? "auto"),
71
+ },
72
+ ], role: map(props.role, v => v ?? "dialog"), "aria-labelledby": map(props["aria-labelledby"], v => v ?? titleId), "aria-describedby": map(props["aria-describedby"], v => v ?? descriptionId), children: _jsxs("div", { class: [
67
73
  theme?.column,
68
74
  theme?.column_content,
69
75
  theme?.dialog_body,
70
- ], style: {
71
- "inline-size": props.inlineSize,
72
- "max-inline-size": props.maxInlineSize,
73
- "block-size": props.blockSize,
74
- "max-block-size": props.maxBlockSize,
75
- }, children: [head, props.children] }) });
76
+ ], children: [head, props.children] }) });
76
77
  useMicrotask(() => {
77
78
  if (theme?.dialog_fadein) {
78
79
  body.offsetParent;
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/components/dialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/components/dialog.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,19 @@
1
- import { Context, Expression } from "rvx";
1
+ import { Component, Context, Expression } from "rvx";
2
2
  import { Action } from "../common/events.js";
3
3
  export declare const LAYER: Context<LayerHandle | undefined>;
4
4
  /**
5
5
  * Render content inside the root layer.
6
6
  */
7
7
  export declare function RootLayer(props: {
8
- children: () => unknown;
8
+ children: Component;
9
+ }): unknown;
10
+ /**
11
+ * Render content inside the top layer.
12
+ *
13
+ * This layer is not affected by other modal layers.
14
+ */
15
+ export declare function TopLayer(props: {
16
+ children: Component;
9
17
  }): unknown;
10
18
  /**
11
19
  * An input layer that is inert while there are other modal layers on top of it.
@@ -15,7 +23,7 @@ export declare function RootLayer(props: {
15
23
  * When disposed, focus is moved back to the previously focused element.
16
24
  */
17
25
  export declare function Layer(props: {
18
- children: () => unknown;
26
+ children: Component;
19
27
  /**
20
28
  * If true, all layers below this one are marked as inert until the current context is disposed.
21
29
  */
@@ -10,15 +10,20 @@ const LAYERS = $([
10
10
  autoFocusFallback: undefined,
11
11
  },
12
12
  ]);
13
+ const TOP_LAYER = {
14
+ roots: [],
15
+ modal: false,
16
+ inert: $(false),
17
+ autoFocusFallback: undefined,
18
+ };
13
19
  uncapture(() => watch(LAYERS, layers => {
14
20
  const modal = layers.findLastIndex(l => l.modal);
15
21
  for (let i = 0; i < layers.length; i++) {
16
22
  layers[i].inert.value = i < modal;
17
23
  }
18
24
  }));
19
- export function RootLayer(props) {
20
- const layer = LAYERS.value[0];
21
- const root = _jsx("div", { style: { display: "contents" }, inert: layer.inert, children: _jsx(Inject, { context: LAYER, value: new Handle(layer), children: props.children }) });
25
+ function staticLayer(layer, content) {
26
+ const root = _jsx("div", { style: { display: "contents" }, inert: layer.inert, children: _jsx(Inject, { context: LAYER, value: new Handle(layer), children: content }) });
22
27
  layer.roots.push(root);
23
28
  teardown(() => {
24
29
  const index = layer.roots.indexOf(root);
@@ -28,6 +33,12 @@ export function RootLayer(props) {
28
33
  });
29
34
  return root;
30
35
  }
36
+ export function RootLayer(props) {
37
+ return staticLayer(untrack(() => LAYERS.value[0]), props.children);
38
+ }
39
+ export function TopLayer(props) {
40
+ return staticLayer(TOP_LAYER, props.children);
41
+ }
31
42
  export function Layer(props) {
32
43
  const layer = {
33
44
  roots: [],
@@ -111,6 +122,9 @@ class Handle {
111
122
  return this.#instance.inert.value;
112
123
  }
113
124
  get top() {
125
+ if (this.#instance === TOP_LAYER) {
126
+ return true;
127
+ }
114
128
  const layers = LAYERS.value;
115
129
  return layers[layers.length - 1] === this.#instance;
116
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"layer.js","sourceRoot":"","sources":["../../src/components/layer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layer.js","sourceRoot":"","sources":["../../src/components/layer.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import { jsx as _jsx } from "rvx/jsx-runtime";
2
2
  import { get, map } from "rvx";
3
3
  import { isPending } from "rvx/async";
4
- import { optionalString } from "rvx/convert";
4
+ import { optionalString, separated } from "rvx/convert";
5
5
  import { handleActionEvent, keyFor } from "../common/events.js";
6
6
  import { THEME } from "../common/theme.js";
7
- import { separated } from "../common/types.js";
8
7
  export function Link(props) {
9
8
  const theme = THEME.current;
10
9
  const disabled = () => isPending() || get(props.disabled);
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,GAAG,EAAc,MAAM,KAAK,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAU,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAW/C,MAAM,UAAU,IAAI,CAAC,KAyDpB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,SAAS,MAAM,CAAC,KAAY;QAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,YACN,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,IAAI;YACX,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,mBACG,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,gBACzC,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,EACzC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACvD,QAAQ,EAAC,GAAG,EAEZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,EAClE,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,cAEjD,MAAM,gBACJ,KAAK,CAAC,EAAE;YACnB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;QACF,CAAC,YAEA,KAAK,CAAC,QAAQ,GACZ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,GAAG,EAAE,GAAG,EAAc,MAAM,KAAK,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAU,iBAAiB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAW3C,MAAM,UAAU,IAAI,CAAC,KAyDpB;IACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1D,SAAS,MAAM,CAAC,KAAY;QAC3B,IAAI,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,YACN,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE;YACN,KAAK,EAAE,IAAI;YACX,KAAK,CAAC,KAAK;SACX,EACD,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,EAAE,EAAE,KAAK,CAAC,EAAE,mBACG,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,gBACzC,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,EACzC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EACvD,QAAQ,EAAC,GAAG,EAEZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,EAClE,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,cAEjD,MAAM,gBACJ,KAAK,CAAC,EAAE;YACnB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,CAAC;YACf,CAAC;QACF,CAAC,YAEA,KAAK,CAAC,QAAQ,GACZ,CAAC;AACN,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Component } from "rvx";
2
+ export type NotificationVariant = "default" | "info" | "success" | "warning" | "danger";
3
+ export interface Notification {
4
+ dispose(): void;
5
+ }
6
+ export interface NotificationOptions {
7
+ variant?: NotificationVariant;
8
+ timeout?: number;
9
+ raw?: boolean;
10
+ }
11
+ export declare function showNotification(content: Component<Notification>, options?: NotificationOptions): Notification;
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx } from "rvx/jsx-runtime";
2
+ import { $, captureSelf, For, movable, render, teardown } from "rvx";
3
+ import { useTimeout } from "rvx/async";
4
+ import { THEME } from "../common/theme.js";
5
+ import { Collapse } from "./collapse.js";
6
+ import { Column } from "./column.js";
7
+ let host;
8
+ const instances = $([]);
9
+ export function showNotification(content, options) {
10
+ const theme = THEME.current;
11
+ if (!host) {
12
+ host = render(_jsx("div", { class: theme?.notification_host, children: _jsx(Column, { class: theme?.notification_area, children: _jsx(For, { each: instances, children: instance => instance() }) }) }));
13
+ }
14
+ host.appendTo(document.body);
15
+ let handle;
16
+ captureSelf(dispose => {
17
+ handle = { dispose };
18
+ const visible = $(true);
19
+ const instance = movable(_jsx(Collapse, { fadein: true, visible: visible, children: _jsx("div", { class: [
20
+ theme?.notification,
21
+ options?.raw ? theme?.notification_raw : undefined,
22
+ theme?.[`notification_${options?.variant ?? "default"}`],
23
+ ], children: options?.raw
24
+ ? content(handle)
25
+ : _jsx(Column, { children: content(handle) }) }) })).move;
26
+ instances.update(instances => {
27
+ instances.push(instance);
28
+ });
29
+ if (options?.timeout !== undefined) {
30
+ useTimeout(dispose, options.timeout);
31
+ }
32
+ teardown(() => {
33
+ visible.value = false;
34
+ setTimeout(() => {
35
+ instances.update(instances => {
36
+ const index = instances.indexOf(instance);
37
+ if (index >= 0) {
38
+ instances.splice(index, 1);
39
+ }
40
+ });
41
+ }, 1000);
42
+ });
43
+ });
44
+ return handle;
45
+ }
46
+ //# sourceMappingURL=notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/components/notifications.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,WAAW,EAAa,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAQ,MAAM,KAAK,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAcrC,IAAI,IAAsB,CAAC;AAC3B,MAAM,SAAS,GAAG,CAAC,CAAc,EAAE,CAAC,CAAC;AAErC,MAAM,UAAU,gBAAgB,CAAC,OAAgC,EAAE,OAA6B;IAC/F,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,IAAI,GAAG,MAAM,CAAC,cAAK,KAAK,EAAE,KAAK,EAAE,iBAAiB,YACjD,KAAC,MAAM,IAAC,KAAK,EAAE,KAAK,EAAE,iBAAiB,YACtC,KAAC,GAAG,IAAC,IAAI,EAAE,SAAS,YAClB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAClB,GACE,GACJ,CAAC,CAAC;IACT,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,MAAqB,CAAC;IAC1B,WAAW,CAAC,OAAO,CAAC,EAAE;QACrB,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAExB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAC,QAAQ,IAAC,MAAM,QAAC,OAAO,EAAE,OAAO,YACzD,cAAK,KAAK,EAAE;oBACX,KAAK,EAAE,YAAY;oBACnB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS;oBAClD,KAAK,EAAE,CAAC,gBAAgB,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC;iBACxD,YACC,OAAO,EAAE,GAAG;oBACZ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;oBACjB,CAAC,CAAC,KAAC,MAAM,cACP,OAAO,CAAC,MAAM,CAAC,GACR,GAEL,GACI,CAAC,CAAC,IAAI,CAAC;QAElB,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YAC5B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAGH,IAAI,OAAO,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YAEpC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,QAAQ,CAAC,GAAG,EAAE;YACb,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YACtB,UAAU,CAAC,GAAG,EAAE;gBACf,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;oBAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC1C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;wBAChB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC5B,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC,EAAE,IAAI,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -18,6 +18,7 @@ export * from "./components/label.js";
18
18
  export * from "./components/layer.js";
19
19
  export * from "./components/link.js";
20
20
  export * from "./components/nav-list.js";
21
+ export * from "./components/notifications.js";
21
22
  export * from "./components/page.js";
22
23
  export * from "./components/popout.js";
23
24
  export * from "./components/popover.js";
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ export * from "./components/label.js";
18
18
  export * from "./components/layer.js";
19
19
  export * from "./components/link.js";
20
20
  export * from "./components/nav-list.js";
21
+ export * from "./components/notifications.js";
21
22
  export * from "./components/page.js";
22
23
  export * from "./components/popout.js";
23
24
  export * from "./components/popover.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
@@ -423,8 +423,8 @@ body {
423
423
  inset: 0;
424
424
  background-color: var(--dialog-container-bg);
425
425
  display: grid;
426
- grid-template-columns: 1fr auto 1fr;
427
- grid-template-rows: 3fr auto 4fr;
426
+ grid-template-columns: 1fr minmax(auto, var(--dialog-inline-size)) 1fr;
427
+ grid-template-rows: 3fr minmax(auto, var(--dialog-block-size)) 4fr;
428
428
  overflow: auto;
429
429
  transition: opacity var(--layout-transition);
430
430
  opacity: 0;
@@ -650,6 +650,65 @@ h6.heading {
650
650
  z-index: 1;
651
651
  }
652
652
 
653
+ @media (prefers-color-scheme: dark) {
654
+ :root {
655
+ --notification-default-border: rgb(72, 72, 72);
656
+ --notification-info-border: rgb(0, 192, 255);
657
+ --notification-success-border: rgb(0, 255, 128);
658
+ --notification-warning-border: rgb(255, 200, 0);
659
+ --notification-danger-border: rgb(255, 0, 64);
660
+ --notification-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.5);
661
+ color-scheme: dark;
662
+ }
663
+ }
664
+ .notification_host {
665
+ --overflow-safe-area: .5rem;
666
+ display: grid;
667
+ grid-template-columns: 1fr minmax(auto, 32rem) 0;
668
+ grid-template-rows: 1fr auto 0;
669
+ overflow: auto;
670
+ position: fixed;
671
+ inset: 0;
672
+ pointer-events: none;
673
+ z-index: 2;
674
+ padding: 1rem;
675
+ }
676
+
677
+ .notification_area {
678
+ grid-area: 2/2;
679
+ }
680
+
681
+ .notification {
682
+ pointer-events: all;
683
+ box-shadow: var(--notification-shadow);
684
+ border-radius: var(--content-radius);
685
+ background-color: var(--bg);
686
+ }
687
+ .notification:not(.notification_raw) {
688
+ padding-block: calc(var(--content-pad-block-start) - var(--content-border)) calc(var(--content-pad-block-end) - var(--content-border));
689
+ padding-inline: calc(var(--content-pad-inline-start) - var(--content-border)) calc(var(--content-pad-inline-end) - var(--content-border));
690
+ }
691
+
692
+ .notification_default {
693
+ border: var(--content-border) solid var(--notification-default-border);
694
+ }
695
+
696
+ .notification_info {
697
+ border: var(--content-border) solid var(--notification-info-border);
698
+ }
699
+
700
+ .notification_success {
701
+ border: var(--content-border) solid var(--notification-success-border);
702
+ }
703
+
704
+ .notification_warning {
705
+ border: var(--content-border) solid var(--notification-warning-border);
706
+ }
707
+
708
+ .notification_danger {
709
+ border: var(--content-border) solid var(--notification-danger-border);
710
+ }
711
+
653
712
  .page {
654
713
  margin: 2rem;
655
714
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/theme/base.scss","../src/theme/common.scss","../src/theme/components/button.scss","../src/theme/components/card.scss","../src/theme/components/checkbox.scss","../src/theme/components/collapse.scss","../src/theme/components/column.scss","../src/theme/components/control-group.scss","../src/theme/components/dialog.scss","../src/theme/components/dropdown.scss","../src/theme/components/flex-space.scss","../src/theme/components/heading.scss","../src/theme/components/label.scss","../src/theme/components/link.scss","../src/theme/components/nav-list.scss","../src/theme/components/page.scss","../src/theme/components/popover.scss","../src/theme/components/radio-buttons.scss","../src/theme/components/row.scss","../src/theme/components/scroll-view.scss","../src/theme/components/slider.scss","../src/theme/components/tabs.scss","../src/theme/components/text-input.scss","../src/theme/components/text.scss","../src/theme/components/validation.scss","../src/theme/components/value.scss"],"names":[],"mappings":"AASA;EACC;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;ECOA;EACA;EACA;EACA;EDPA;EACA;EACA;EACA;EACA;EACA;ECDA;EACA;EACA;EACA;EDCA;EAEA;EAEA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;;;ACjCC;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;ADiDH;EACC;EACA;EAEA;;AACA;EALD;IAME;;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;ACrEC;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;ACgFH;EACC;EACA;EACA;EACA;EAEA;EAEA;EDnEC,eACC;EAED,gBACC;ECkEF;EACA;;AAGA;EACC;;AAGD;EACC;EACA;;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;;;ADhIC;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAUA;;;AEKH;EACC;EACA;;AAEA;EFYC,eACC;EAED,gBACC;;;AEVF;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AC9BF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AC3BD;EACC;EACA;EACA;;;AAGD;EACC,YACC;;;AAIF;EACC;IAAO;;EACP;IAAM;;EACN;IAAM;;EACN;IAAK;;;AAGN;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;AAEA;EACC,YACC;;AAIF;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC,YACC;;AAKF;EACC;EACA;EACA;;;AC3DF;EACC;EACA;;AAEA;EACC;;AAMD;EACC;;AAGD;EACC;;AAMD;EACC;;;AAKD;EACC;;AACA;EACC;;AAGD;ELAA,eACC;EAED,gBACC;;;AKVF;EACC;;AACA;EACC;;AAGD;ELAA,eACC;EAED,gBACC;;;AMvCH;EACC;EACA;EAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAED;EACC;EACA;;;ANHA;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AOEH;EACC;EACA;EAEA;EAEA;EACA;EACA;EAEA;EAEA;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;IACC;;;AAIF;EACC;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EP5BC,eACC;EAED,gBACC;;;AO4BH;EACC;;;APxDC;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AQEH;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;ERPC,eACC;EAED,gBACC;;AQMF;EACC;;;AC9CF;EACC;EACA;EACA;;;ACHD;EACC;EACA;;AAEA;EAEC;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;;AVxBC;EAFD;IANE;IAUA;;;AWPH;EACC;EACA;EAEA;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;;;AXRA;EAFD;IANE;IAUA;;;AYPH;EACC;EACA;EAEA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AZTA;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;AaiBH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EbhBC,eACC;EAED,gBACC;EaeF;EACA;;AAGA;EACC;EACA;;AAGD;EAEC;EACA;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;;;AC/ED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AdPC;EAFD;IANE;IAAA;IAAA;IAUA;;;AeDH;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EfnBC,eACC;EAED,gBACC;;;AgBvCH;EACC;EACA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;ACjCD;EACC;EACA;EACA;;;AAIA;EACC;EACA;;AACA;EACC;EACA;;;AALF;EACC;EACA;;AACA;EACC;EACA;;;AjBAD;EAFD;IANE;IAAA;IAUA;;;AkBJH;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;;AnBED;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;AoBQH;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA,eACC;EAED,gBACC;EAGD;EACA;EACA;EACA;EAEA;EACA;;AAGA;EAEC;EACA;;AAED;EACC;;;AAIF;EACC;EACA;;;AAGD;EpBjCE,eACC;EAED,gBACC;;;AA3BD;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AqBEH;EACC;EACA;EACA;EAEA;EAEA;ErBmBC,eACC;EAED,gBACC;EqBrBF;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;;;AC1CD;EACC;;AAEA;EAEC;EACA;EACA;EACA;;;AtBIA;EAFD;IANE;IAUA;;;AuBPH;EACC;;;AAGD;EACC;;;ACZD;EACC","file":"theme.module.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/theme/base.scss","../src/theme/common.scss","../src/theme/components/button.scss","../src/theme/components/card.scss","../src/theme/components/checkbox.scss","../src/theme/components/collapse.scss","../src/theme/components/column.scss","../src/theme/components/control-group.scss","../src/theme/components/dialog.scss","../src/theme/components/dropdown.scss","../src/theme/components/flex-space.scss","../src/theme/components/heading.scss","../src/theme/components/label.scss","../src/theme/components/link.scss","../src/theme/components/nav-list.scss","../src/theme/components/notifications.scss","../src/theme/components/page.scss","../src/theme/components/popover.scss","../src/theme/components/radio-buttons.scss","../src/theme/components/row.scss","../src/theme/components/scroll-view.scss","../src/theme/components/slider.scss","../src/theme/components/tabs.scss","../src/theme/components/text-input.scss","../src/theme/components/text.scss","../src/theme/components/validation.scss","../src/theme/components/value.scss"],"names":[],"mappings":"AASA;EACC;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;ECOA;EACA;EACA;EACA;EDPA;EACA;EACA;EACA;EACA;EACA;ECDA;EACA;EACA;EACA;EDCA;EAEA;EAEA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;;;ACjCC;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;ADiDH;EACC;EACA;EAEA;;AACA;EALD;IAME;;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;ACrEC;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;ACgFH;EACC;EACA;EACA;EACA;EAEA;EAEA;EDnEC,eACC;EAED,gBACC;ECkEF;EACA;;AAGA;EACC;;AAGD;EACC;EACA;;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAdF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;;;ADhIC;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAUA;;;AEKH;EACC;EACA;;AAEA;EFYC,eACC;EAED,gBACC;;;AEVF;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AC9BF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AC3BD;EACC;EACA;EACA;;;AAGD;EACC,YACC;;;AAIF;EACC;IAAO;;EACP;IAAM;;EACN;IAAM;;EACN;IAAK;;;AAGN;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;AAEA;EACC,YACC;;AAIF;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC,YACC;;AAKF;EACC;EACA;EACA;;;AC3DF;EACC;EACA;;AAEA;EACC;;AAMD;EACC;;AAGD;EACC;;AAMD;EACC;;;AAKD;EACC;;AACA;EACC;;AAGD;ELAA,eACC;EAED,gBACC;;;AKVF;EACC;;AACA;EACC;;AAGD;ELAA,eACC;EAED,gBACC;;;AMvCH;EACC;EACA;EAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAED;EACC;EACA;;;ANHA;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AOEH;EACC;EACA;EAEA;EAEA;EACA;EACA;EAEA;EAEA;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;IACC;;;AAIF;EACC;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EP5BC,eACC;EAED,gBACC;;;AO4BH;EACC;;;APxDC;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AQEH;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;ERPC,eACC;EAED,gBACC;;AQMF;EACC;;;AC9CF;EACC;EACA;EACA;;;ACHD;EACC;EACA;;AAEA;EAEC;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;;AVxBC;EAFD;IANE;IAUA;;;AWPH;EACC;EACA;EAEA;EACA;EACA;;AAEA;EAEC;EACA;EACA;EACA;;;AXRA;EAFD;IANE;IAUA;;;AYPH;EACC;EACA;EAEA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AZTA;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;AaiBH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EbhBC,eACC;EAED,gBACC;EaeF;EACA;;AAGA;EACC;EACA;;AAGD;EAEC;EACA;;AAGD;EACC;EACA;;;AAIF;EACC;EACA;EACA;EACA;;;AbnEC;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;AcSH;EACC;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EdbC,eACC;EAED,gBACC;;;AceF;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;AADD;EACC;;;ACvDF;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AfPC;EAFD;IANE;IAAA;IAAA;IAUA;;;AgBDH;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EhBnBC,eACC;EAED,gBACC;;;AiBvCH;EACC;EACA;EACA;;AAEA;EACC;EACA;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;ACjCD;EACC;EACA;EACA;;;AAIA;EACC;EACA;;AACA;EACC;EACA;;;AALF;EACC;EACA;;AACA;EACC;EACA;;;AlBAD;EAFD;IANE;IAAA;IAUA;;;AmBJH;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;;ApBED;EAFD;IANE;IAAA;IAAA;IAAA;IAAA;IAAA;IAUA;;;AqBQH;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA,eACC;EAED,gBACC;EAGD;EACA;EACA;EACA;EAEA;EACA;;AAGA;EAEC;EACA;;AAED;EACC;;;AAIF;EACC;EACA;;;AAGD;ErBjCE,eACC;EAED,gBACC;;;AA3BD;EAFD;IANE;IAAA;IAAA;IAAA;IAUA;;;AsBEH;EACC;EACA;EACA;EAEA;EAEA;EtBmBC,eACC;EAED,gBACC;EsBrBF;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;;;AC1CD;EACC;;AAEA;EAEC;EACA;EACA;EACA;;;AvBIA;EAFD;IANE;IAUA;;;AwBPH;EACC;;;AAGD;EACC;;;ACZD;EACC","file":"theme.module.css"}
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "rvx"
13
13
  ],
14
14
  "license": "MIT",
15
- "version": "0.1.14",
15
+ "version": "0.1.16",
16
16
  "type": "module",
17
17
  "main": "./dist/index.js",
18
18
  "sideEffects": false,
@@ -28,6 +28,6 @@
28
28
  "./dist/": "./dist/"
29
29
  },
30
30
  "dependencies": {
31
- "rvx": "^22.0.0"
31
+ "rvx": "^22.2.3"
32
32
  }
33
33
  }
@@ -85,6 +85,16 @@ export interface Theme {
85
85
  nav_list_item?: string;
86
86
  nav_list_item_current?: string;
87
87
 
88
+ notification_host?: string;
89
+ notification_area?: string;
90
+ notification?: string;
91
+ notification_raw?: string;
92
+ notification_default?: string;
93
+ notification_info?: string;
94
+ notification_success?: string;
95
+ notification_warning?: string;
96
+ notification_danger?: string;
97
+
88
98
  page?: string;
89
99
  page_scrollbar_comp?: string;
90
100
  page_content_col?: string;
@@ -1,23 +1,5 @@
1
- import { Expression, map } from "rvx";
2
1
 
3
2
  export type SizeContext = "content" | "control";
4
3
 
5
4
  export type AriaLive = "off" | "polite" | "assertive";
6
5
  export type AriaRelevant = "additions" | "removals" | "text" | "all" | "additions removals" | "additions text" | "removals text";
7
-
8
- /**
9
- * Utility to map expressions of strings or string arrays to (e.g. space) separated strings.
10
- *
11
- * @example
12
- * ```tsx
13
- * <a rel={separated(["noreferrer", "author"], " ")} />;
14
- * ```
15
- */
16
- export function separated(input: Expression<string | string[] | undefined>, sep: string): Expression<string | undefined> {
17
- return map(input, v => {
18
- if (Array.isArray(v)) {
19
- return v.join(sep);
20
- }
21
- return v;
22
- });
23
- }
@@ -13,8 +13,8 @@ export function Card(props: {
13
13
  return <div
14
14
  class={[
15
15
  theme?.card,
16
+ props.raw ? theme?.card_raw : undefined,
16
17
  map(props.variant, variant => theme?.[`card_${variant ?? "default"}`]),
17
- map(props.raw, unpadded => unpadded ? theme?.card_raw : undefined),
18
18
  ]}
19
19
  >
20
20
  {props.raw
@@ -74,9 +74,7 @@ export function DialogBody(props: {
74
74
  description?: unknown;
75
75
 
76
76
  inlineSize?: Expression<string | undefined>;
77
- maxInlineSize?: Expression<string | undefined>;
78
77
  blockSize?: Expression<string | undefined>;
79
- maxBlockSize?: Expression<string | undefined>;
80
78
 
81
79
  "aria-labelledby"?: Expression<string | undefined>;
82
80
  "aria-describedby"?: Expression<string | undefined>;
@@ -101,7 +99,13 @@ export function DialogBody(props: {
101
99
  theme?.dialog_container,
102
100
  props.class,
103
101
  ]}
104
- style={props.style}
102
+ style={[
103
+ props.style,
104
+ {
105
+ "--dialog-inline-size": map(props.inlineSize, v => v ?? "auto"),
106
+ "--dialog-block-size": map(props.blockSize, v => v ?? "auto"),
107
+ },
108
+ ]}
105
109
  role={map(props.role, v => v ?? "dialog")}
106
110
  aria-labelledby={map(props["aria-labelledby"], v => v ?? titleId)}
107
111
  aria-describedby={map(props["aria-describedby"], v => v ?? descriptionId)}
@@ -112,12 +116,6 @@ export function DialogBody(props: {
112
116
  theme?.column_content,
113
117
  theme?.dialog_body,
114
118
  ]}
115
- style={{
116
- "inline-size": props.inlineSize,
117
- "max-inline-size": props.maxInlineSize,
118
- "block-size": props.blockSize,
119
- "max-block-size": props.maxBlockSize,
120
- }}
121
119
  >
122
120
  {head}
123
121
  {props.children}
@@ -1,4 +1,4 @@
1
- import { $, Context, Expression, get, Inject, memo, Signal, teardown, uncapture, untrack, watch } from "rvx";
1
+ import { $, Component, Context, Expression, get, Inject, memo, Signal, teardown, uncapture, untrack, watch } from "rvx";
2
2
 
3
3
  import { Action, handleActionEvent, keyFor } from "../common/events.js";
4
4
 
@@ -24,6 +24,13 @@ const LAYERS = $<LayerInstance[]>([
24
24
  },
25
25
  ]);
26
26
 
27
+ const TOP_LAYER: LayerInstance = {
28
+ roots: [],
29
+ modal: false,
30
+ inert: $(false),
31
+ autoFocusFallback: undefined,
32
+ };
33
+
27
34
  uncapture(() => watch(LAYERS, layers => {
28
35
  const modal = layers.findLastIndex(l => l.modal);
29
36
  for (let i = 0; i < layers.length; i++) {
@@ -31,19 +38,13 @@ uncapture(() => watch(LAYERS, layers => {
31
38
  }
32
39
  }));
33
40
 
34
- /**
35
- * Render content inside the root layer.
36
- */
37
- export function RootLayer(props: {
38
- children: () => unknown;
39
- }): unknown {
40
- const layer = LAYERS.value[0];
41
+ function staticLayer(layer: LayerInstance, content: Component): unknown {
41
42
  const root = <div
42
43
  style={{ display: "contents" }}
43
44
  inert={layer.inert}
44
45
  >
45
46
  <Inject context={LAYER} value={new Handle(layer)}>
46
- {props.children}
47
+ {content}
47
48
  </Inject>
48
49
  </div> as HTMLDivElement;
49
50
  layer.roots.push(root);
@@ -56,6 +57,26 @@ export function RootLayer(props: {
56
57
  return root;
57
58
  }
58
59
 
60
+ /**
61
+ * Render content inside the root layer.
62
+ */
63
+ export function RootLayer(props: {
64
+ children: Component;
65
+ }): unknown {
66
+ return staticLayer(untrack(() => LAYERS.value[0]), props.children);
67
+ }
68
+
69
+ /**
70
+ * Render content inside the top layer.
71
+ *
72
+ * This layer is not affected by other modal layers.
73
+ */
74
+ export function TopLayer(props: {
75
+ children: Component;
76
+ }): unknown {
77
+ return staticLayer(TOP_LAYER, props.children);
78
+ }
79
+
59
80
  /**
60
81
  * An input layer that is inert while there are other modal layers on top of it.
61
82
  *
@@ -64,7 +85,7 @@ export function RootLayer(props: {
64
85
  * When disposed, focus is moved back to the previously focused element.
65
86
  */
66
87
  export function Layer(props: {
67
- children: () => unknown;
88
+ children: Component;
68
89
 
69
90
  /**
70
91
  * If true, all layers below this one are marked as inert until the current context is disposed.
@@ -240,6 +261,9 @@ class Handle implements LayerHandle {
240
261
  }
241
262
 
242
263
  get top(): boolean {
264
+ if (this.#instance === TOP_LAYER) {
265
+ return true;
266
+ }
243
267
  const layers = LAYERS.value;
244
268
  return layers[layers.length - 1] === this.#instance;
245
269
  }
@@ -276,7 +300,7 @@ class Handle implements LayerHandle {
276
300
  if (i < 0) {
277
301
  return this.contains(node);
278
302
  }
279
- for (;;) {
303
+ for (; ;) {
280
304
  if (instanceContains(layers[i], node)) {
281
305
  return true;
282
306
  }
@@ -1,9 +1,8 @@
1
1
  import { ClassValue, Expression, get, map, StyleValue } from "rvx";
2
2
  import { isPending } from "rvx/async";
3
- import { optionalString } from "rvx/convert";
3
+ import { optionalString, separated } from "rvx/convert";
4
4
  import { Action, handleActionEvent, keyFor } from "../common/events.js";
5
5
  import { THEME } from "../common/theme.js";
6
- import { separated } from "../common/types.js";
7
6
 
8
7
  export type LinkReferrerPolicy = "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
9
8
 
@@ -0,0 +1,79 @@
1
+ import { $, captureSelf, Component, For, movable, render, teardown, View } from "rvx";
2
+ import { useTimeout } from "rvx/async";
3
+ import { THEME } from "../common/theme.js";
4
+ import { Collapse } from "./collapse.js";
5
+ import { Column } from "./column.js";
6
+
7
+ export type NotificationVariant = "default" | "info" | "success" | "warning" | "danger";
8
+
9
+ export interface Notification {
10
+ dispose(): void;
11
+ }
12
+
13
+ export interface NotificationOptions {
14
+ variant?: NotificationVariant;
15
+ timeout?: number;
16
+ raw?: boolean;
17
+ }
18
+
19
+ let host: View | undefined;
20
+ const instances = $<Component[]>([]);
21
+
22
+ export function showNotification(content: Component<Notification>, options?: NotificationOptions): Notification {
23
+ const theme = THEME.current;
24
+ if (!host) {
25
+ host = render(<div class={theme?.notification_host}>
26
+ <Column class={theme?.notification_area}>
27
+ <For each={instances}>
28
+ {instance => instance()}
29
+ </For>
30
+ </Column>
31
+ </div>);
32
+ }
33
+ host.appendTo(document.body);
34
+
35
+ let handle!: Notification;
36
+ captureSelf(dispose => {
37
+ handle = { dispose };
38
+ const visible = $(true);
39
+
40
+ const instance = movable(<Collapse fadein visible={visible}>
41
+ <div class={[
42
+ theme?.notification,
43
+ options?.raw ? theme?.notification_raw : undefined,
44
+ theme?.[`notification_${options?.variant ?? "default"}`],
45
+ ]}>
46
+ {options?.raw
47
+ ? content(handle)
48
+ : <Column>
49
+ {content(handle)}
50
+ </Column>
51
+ }
52
+ </div>
53
+ </Collapse>).move;
54
+
55
+ instances.update(instances => {
56
+ instances.push(instance);
57
+ });
58
+ // TODO: Scroll notification into view.
59
+
60
+ if (options?.timeout !== undefined) {
61
+ // TODO: Pause & reset on notification area hover.
62
+ useTimeout(dispose, options.timeout);
63
+ }
64
+
65
+ teardown(() => {
66
+ visible.value = false;
67
+ setTimeout(() => {
68
+ instances.update(instances => {
69
+ const index = instances.indexOf(instance);
70
+ if (index >= 0) {
71
+ instances.splice(index, 1);
72
+ }
73
+ });
74
+ }, 1000);
75
+ });
76
+ });
77
+
78
+ return handle;
79
+ }
package/src/index.tsx CHANGED
@@ -18,6 +18,7 @@ export * from "./components/label.js";
18
18
  export * from "./components/layer.js";
19
19
  export * from "./components/link.js";
20
20
  export * from "./components/nav-list.js";
21
+ export * from "./components/notifications.js";
21
22
  export * from "./components/page.js";
22
23
  export * from "./components/popout.js";
23
24
  export * from "./components/popover.js";
@@ -22,8 +22,8 @@
22
22
  background-color: var(--dialog-container-bg);
23
23
 
24
24
  display: grid;
25
- grid-template-columns: 1fr auto 1fr;
26
- grid-template-rows: 3fr auto 4fr;
25
+ grid-template-columns: 1fr minmax(auto, var(--dialog-inline-size)) 1fr;
26
+ grid-template-rows: 3fr minmax(auto, var(--dialog-block-size)) 4fr;
27
27
 
28
28
  overflow: auto;
29
29
 
@@ -0,0 +1,59 @@
1
+ @use "../common";
2
+
3
+ // TODO: Maybe just use cards with extra marker class for optional style distinction.
4
+ @include common.theme((
5
+ notification-default-border: (
6
+ dark: rgb(72, 72, 72),
7
+ ),
8
+ notification-info-border: (
9
+ dark: rgb(0, 192, 255),
10
+ ),
11
+ notification-success-border: (
12
+ dark: rgb(0, 255, 128),
13
+ ),
14
+ notification-warning-border: (
15
+ dark: rgb(255, 200, 0),
16
+ ),
17
+ notification-danger-border: (
18
+ dark: rgb(255, 0, 64),
19
+ ),
20
+ notification-shadow: (
21
+ dark: 0 0 .5rem rgba(0, 0, 0, .5),
22
+ ),
23
+ ));
24
+
25
+ .notification_host {
26
+ --overflow-safe-area: .5rem;
27
+ display: grid;
28
+ // TODO: Globally configurable position & inline size.
29
+ grid-template-columns: 1fr minmax(auto, 32rem) 0;
30
+ grid-template-rows: 1fr auto 0;
31
+ overflow: auto;
32
+
33
+ position: fixed;
34
+ inset: 0;
35
+ pointer-events: none;
36
+ z-index: 2;
37
+ padding: 1rem;
38
+ }
39
+
40
+ .notification_area {
41
+ grid-area: 2 / 2;
42
+ }
43
+
44
+ .notification {
45
+ pointer-events: all;
46
+ box-shadow: var(--notification-shadow);
47
+ border-radius: var(--content-radius);
48
+ background-color: var(--bg);
49
+
50
+ &:not(.notification_raw) {
51
+ @include common.padding(content-pad, var(--content-border));
52
+ }
53
+ }
54
+
55
+ @each $name in (default, info, success, warning, danger) {
56
+ .notification_#{$name} {
57
+ border: var(--content-border) solid var(--notification-#{$name}-border);
58
+ }
59
+ }
@@ -13,6 +13,7 @@
13
13
  @forward "components/label";
14
14
  @forward "components/link";
15
15
  @forward "components/nav-list";
16
+ @forward "components/notifications";
16
17
  @forward "components/page";
17
18
  @forward "components/popover";
18
19
  @forward "components/radio-buttons";