@nubisco/ui 3.2.0 → 3.3.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 (82) hide show
  1. package/dist/components/Button.vue.d.ts.map +1 -1
  2. package/dist/components/Charts/GanttChart.vue.d.ts.map +1 -1
  3. package/dist/components/Charts/InterpolationChart.vue.d.ts.map +1 -1
  4. package/dist/components/Charts/shared/palette.d.ts +76 -1
  5. package/dist/components/Charts/shared/palette.d.ts.map +1 -1
  6. package/dist/components/CommandPalette.vue.d.ts.map +1 -1
  7. package/dist/components/Confirm.d.ts +199 -0
  8. package/dist/components/Confirm.env.d.ts +52 -0
  9. package/dist/components/Confirm.env.d.ts.map +1 -0
  10. package/dist/components/Confirm.vue.d.ts +61 -0
  11. package/dist/components/Confirm.vue.d.ts.map +1 -0
  12. package/dist/components/DatePicker.vue.d.ts +1 -1
  13. package/dist/components/InlineLoading.d.ts +37 -0
  14. package/dist/components/InlineLoading.vue.d.ts +30 -0
  15. package/dist/components/InlineLoading.vue.d.ts.map +1 -0
  16. package/dist/components/MenuItem.vue.d.ts +1 -1
  17. package/dist/components/Modal.d.ts +35 -1
  18. package/dist/components/Modal.vue.d.ts +10 -1
  19. package/dist/components/Modal.vue.d.ts.map +1 -1
  20. package/dist/components/NotificationCenter.d.ts +184 -0
  21. package/dist/components/NotificationCenter.vue.d.ts +130 -0
  22. package/dist/components/NotificationCenter.vue.d.ts.map +1 -0
  23. package/dist/components/NotificationCenterItem.d.ts +53 -0
  24. package/dist/components/NotificationCenterItem.vue.d.ts +36 -0
  25. package/dist/components/NotificationCenterItem.vue.d.ts.map +1 -0
  26. package/dist/components/ProgressBar.vue.d.ts.map +1 -1
  27. package/dist/components/Shell.d.ts +138 -8
  28. package/dist/components/Shell.vue.d.ts +30 -3
  29. package/dist/components/Shell.vue.d.ts.map +1 -1
  30. package/dist/components/ShellPanel.d.ts +16 -0
  31. package/dist/components/ShellPanel.vue.d.ts +1 -0
  32. package/dist/components/ShellPanel.vue.d.ts.map +1 -1
  33. package/dist/components/SidebarLink.d.ts +14 -1
  34. package/dist/components/Skeleton.d.ts +87 -0
  35. package/dist/components/Skeleton.vue.d.ts +17 -0
  36. package/dist/components/Skeleton.vue.d.ts.map +1 -0
  37. package/dist/components/Spinner.d.ts +80 -0
  38. package/dist/components/Spinner.overlay.d.ts +56 -0
  39. package/dist/components/Spinner.overlay.d.ts.map +1 -0
  40. package/dist/components/Spinner.vue.d.ts +25 -0
  41. package/dist/components/Spinner.vue.d.ts.map +1 -0
  42. package/dist/components/Stepper.context.d.ts +48 -0
  43. package/dist/components/Stepper.context.d.ts.map +1 -0
  44. package/dist/components/Stepper.d.ts +101 -0
  45. package/dist/components/Stepper.vue.d.ts +31 -0
  46. package/dist/components/Stepper.vue.d.ts.map +1 -0
  47. package/dist/components/StepperStep.vue.d.ts +24 -0
  48. package/dist/components/StepperStep.vue.d.ts.map +1 -0
  49. package/dist/components/TextInput.vue.d.ts +2 -2
  50. package/dist/components/TextInput.vue.d.ts.map +1 -1
  51. package/dist/components/Toast.vue.d.ts +43 -0
  52. package/dist/components/Toast.vue.d.ts.map +1 -1
  53. package/dist/components/Toaster.d.ts +93 -0
  54. package/dist/components/Toaster.vue.d.ts +30 -0
  55. package/dist/components/Toaster.vue.d.ts.map +1 -0
  56. package/dist/components/UserMenu.vue.d.ts.map +1 -1
  57. package/dist/components/index.d.ts.map +1 -1
  58. package/dist/composables/useConfirm.composable.d.ts +45 -0
  59. package/dist/composables/useConfirm.composable.d.ts.map +1 -0
  60. package/dist/composables/useInlineLoading.composable.d.ts +43 -0
  61. package/dist/composables/useInlineLoading.composable.d.ts.map +1 -0
  62. package/dist/composables/useLoadingAnnouncer.composable.d.ts +63 -0
  63. package/dist/composables/useLoadingAnnouncer.composable.d.ts.map +1 -0
  64. package/dist/composables/useScrollLock.composable.d.ts +47 -0
  65. package/dist/composables/useScrollLock.composable.d.ts.map +1 -0
  66. package/dist/composables/useShellSlot.composable.d.ts +193 -0
  67. package/dist/composables/useShellSlot.composable.d.ts.map +1 -0
  68. package/dist/composables/useToast.composable.d.ts +325 -0
  69. package/dist/composables/useToast.composable.d.ts.map +1 -0
  70. package/dist/directives/ToolTip.content.d.ts +20 -0
  71. package/dist/directives/ToolTip.content.d.ts.map +1 -0
  72. package/dist/directives/ToolTip.directive.d.ts +94 -8
  73. package/dist/directives/ToolTip.directive.d.ts.map +1 -1
  74. package/dist/global.d.ts +18 -0
  75. package/dist/index.cjs +8 -9
  76. package/dist/index.mjs +17643 -14497
  77. package/dist/main.d.ts +43 -2
  78. package/dist/main.d.ts.map +1 -1
  79. package/dist/ui.css +1 -1
  80. package/package.json +1 -1
  81. package/src/styles/_theme.scss +171 -0
  82. package/src/styles/directives/_tooltip.scss +143 -21
@@ -0,0 +1,325 @@
1
+ import { type ComputedRef, type InjectionKey, type Ref } from 'vue';
2
+ import type { TToastVariant, IToastCta } from '../components/Toast.vue';
3
+ /**
4
+ * The toast queue: the clock, the cap and the ordering that `NbToaster`
5
+ * renders.
6
+ *
7
+ * The split matters. `NbToast` knows how one message looks, `NbToaster` knows
8
+ * where the stack sits and how it moves, and this file knows *when* a message
9
+ * leaves. Timing lives here rather than in the item because the whole region
10
+ * pauses together: while the pointer rests on the top toast, the two below it
11
+ * must stop counting down as well, and an item that owns its own timer cannot
12
+ * know that. Three applications hand-rolled a host over `NbToast` and all
13
+ * three got a different part of this wrong, which is why it is now library
14
+ * code.
15
+ */
16
+ /**
17
+ * Why a toast ended. Passed to `IToastOptions.onDismiss`.
18
+ *
19
+ * - `user`: the close button, or Escape while the toast held focus.
20
+ * - `timeout`: the countdown ran out.
21
+ * - `action`: the reader pressed the toast's own action.
22
+ * - `replaced`: a newer message took its place, either because a `key` push
23
+ * claimed its slot or because the stack was full of toasts that can never
24
+ * expire.
25
+ * - `navigated`: `dismissTransient()`, from a router guard.
26
+ * - `cleared`: `dismissAll()`, typically sign-out.
27
+ *
28
+ * The reason is the only thing that separates "Deleted. [Undo]" committing
29
+ * from cancelling, so it is never collapsed into a boolean.
30
+ */
31
+ export type TToastDismissReason = 'user' | 'timeout' | 'action' | 'replaced' | 'navigated' | 'cleared';
32
+ /** Everything a caller can say about a toast. Only `message` is required. */
33
+ export interface IToastOptions {
34
+ /** The news, in one sentence. Written in the past tense: "Draft saved". */
35
+ message: string;
36
+ /** Tone. Also decides the icon, the politeness and the default duration. */
37
+ variant?: TToastVariant;
38
+ /** Optional short heading. Skip it when the message already stands alone. */
39
+ title?: string;
40
+ /**
41
+ * Milliseconds on screen. `0` means it stays until dismissed. Omit it and
42
+ * the variant decides (see `NB_TOAST_DURATIONS`).
43
+ */
44
+ duration?: number;
45
+ /**
46
+ * One action. A toast that carries one never auto-dismisses unless an
47
+ * explicit `duration` says it should: an action that removes itself while
48
+ * it is being reached for is not an action.
49
+ */
50
+ cta?: IToastCta;
51
+ /**
52
+ * De-duplication key. Pushing again with a key that is already queued takes
53
+ * over that toast's slot instead of adding a second one, so a double-clicked
54
+ * Save button produces one "Saved", not two.
55
+ *
56
+ * The second push replaces the message wholesale: only the id, the slot and
57
+ * the position survive, and every field the new call leaves out goes back to
58
+ * its default rather than lingering from the previous one. A first push with
59
+ * a `title` and an `error` variant followed by a bare
60
+ * `push({ key, message })` is a plain info toast, not the old error wearing
61
+ * a new sentence. The displaced message's `onDismiss` fires with reason
62
+ * `replaced` before the new one takes the slot.
63
+ */
64
+ key?: string;
65
+ /**
66
+ * Survive a route change.
67
+ *
68
+ * A toast is scoped to the moment, and the moment usually ends with the
69
+ * route: "Draft saved" outliving the draft's page is news about a screen
70
+ * the user has left, and its `Undo` acts on a record they can no longer
71
+ * see. `dismissTransient()`, called from a router guard, clears everything
72
+ * that does not set this.
73
+ *
74
+ * Set it for news that is true wherever the user ends up: "Signed out",
75
+ * "Export ready", "Connection restored".
76
+ */
77
+ retain?: boolean;
78
+ /**
79
+ * Called once, when the toast leaves the queue, with the reason it left.
80
+ *
81
+ * This is the observation point the CTA pattern needs. "Deleted. [Undo]"
82
+ * only works if something commits the delete when the toast goes and
83
+ * cancels it when Undo is pressed, and the difference between those two is
84
+ * exactly the reason:
85
+ *
86
+ * ```ts
87
+ * let undone = false
88
+ * toast.push({
89
+ * message: 'Comment deleted',
90
+ * cta: { label: 'Undo', action: () => { undone = true; restore(row) } },
91
+ * onDismiss: (reason) => { if (!undone) commitDelete(row) },
92
+ * })
93
+ * ```
94
+ *
95
+ * It fires exactly once per pushed message, and the reason is always the
96
+ * true one. Two rules keep that promise:
97
+ *
98
+ * - `update()` is not an end of life, so a progress toast that becomes a
99
+ * result calls it once, at the end. `update()` therefore cannot change
100
+ * the callback either: it is not in `TToastPatch`.
101
+ * - A second `push()` sharing a `key` is a *different* message taking over
102
+ * the slot, so the message being displaced ends first, with reason
103
+ * `replaced`, and the new callback takes over from there. Deleting row 1
104
+ * and then row 2 under one key commits row 1 and then row 2, in that
105
+ * order, rather than committing row 1 twice.
106
+ */
107
+ onDismiss?: (reason: TToastDismissReason) => void;
108
+ }
109
+ /**
110
+ * A partial change to a live toast, as accepted by `IToastHandle.update()`.
111
+ *
112
+ * `onDismiss` is deliberately not in it. The callback is the commit point of
113
+ * the message that was pushed, and an update only rewrites the words of that
114
+ * same message: swapping the callback halfway would either drop a commit or
115
+ * run it twice, which is the one thing this queue promises never to do. When
116
+ * the *message* really is a new one, push it (with a `key` if it should reuse
117
+ * the slot) and the queue ends the old one first, with reason `replaced`.
118
+ *
119
+ * Passing it anyway is ignored, and warns outside production.
120
+ */
121
+ export type TToastPatch = Omit<Partial<IToastOptions>, 'onDismiss'>;
122
+ /** A queued toast, as `NbToaster` reads it. */
123
+ export interface IToastRecord extends IToastOptions {
124
+ /** Queue-unique id. Stable for the life of the toast. */
125
+ id: string;
126
+ variant: TToastVariant;
127
+ /** Resolved duration: never undefined here, `0` means persistent. */
128
+ duration: number;
129
+ /** `true` once it holds one of the visible slots. */
130
+ visible: boolean;
131
+ /**
132
+ * Incremented every time the countdown restarts (admission, or an update
133
+ * that changed the message). `NbToaster` keys the timer bar on it so the
134
+ * bar restarts with the clock instead of continuing from where it was.
135
+ */
136
+ cycle: number;
137
+ }
138
+ /**
139
+ * What `push()` hands back so the caller can keep talking about a toast it
140
+ * created: the save-in-progress that becomes a save-succeeded.
141
+ */
142
+ export interface IToastHandle {
143
+ /** The record id, for `queue.dismiss(id)` or logging. */
144
+ readonly id: string;
145
+ /**
146
+ * Rewrite the toast in place. It keeps its slot and its position, so the
147
+ * stack does not jump. The countdown restarts, because the words changed
148
+ * and the reader has not seen the new ones yet.
149
+ *
150
+ * Passing a `variant` without a `duration` adopts that variant's default,
151
+ * which is what turns a persistent "Saving..." into a self-clearing
152
+ * "Saved". Fields left out of the patch are left alone.
153
+ *
154
+ * `onDismiss` is not patchable: see `TToastPatch`.
155
+ */
156
+ update(patch: TToastPatch): void;
157
+ /**
158
+ * Remove it now. Safe to call after it has already gone. The reason is
159
+ * forwarded to `onDismiss`; it defaults to `user` because the usual caller
160
+ * is a control the reader pressed.
161
+ */
162
+ dismiss(reason?: TToastDismissReason): void;
163
+ /** `false` once it has been dismissed or has expired. */
164
+ isActive(): boolean;
165
+ }
166
+ /** Options for a standalone queue. */
167
+ export interface IToastQueueOptions {
168
+ /** How many toasts may be on screen at once. Default `3`. */
169
+ max?: number;
170
+ /** Per-variant duration overrides, merged over `NB_TOAST_DURATIONS`. */
171
+ durations?: Partial<Record<TToastVariant, number>>;
172
+ /**
173
+ * The visually hidden severity word each variant is announced with, for
174
+ * applications that are not in English. Merged over `NB_TOAST_STATUS_LABELS`.
175
+ * An empty string suppresses the word for that variant.
176
+ */
177
+ statusLabels?: Partial<Record<TToastVariant, string>>;
178
+ /** Accessible name of every close button in this queue. */
179
+ closeLabel?: string;
180
+ }
181
+ /** The strings `NbToaster` reads out of its queue. */
182
+ export interface IToastLabels {
183
+ status: Record<TToastVariant, string>;
184
+ close: string;
185
+ }
186
+ /** The queue object shared by `useToast()` and `NbToaster`. */
187
+ export interface IToastQueue {
188
+ /** Everything queued: the visible slots first, then whatever is waiting. */
189
+ readonly items: ComputedRef<IToastRecord[]>;
190
+ /** The records `NbToaster` renders, oldest first. */
191
+ readonly visible: ComputedRef<IToastRecord[]>;
192
+ /** Records admitted but waiting for a free slot. */
193
+ readonly pending: ComputedRef<IToastRecord[]>;
194
+ /** `true` while the clock is held (pointer, focus, or a hidden tab). */
195
+ readonly paused: Ref<boolean>;
196
+ /** Visible-slot cap. Writable, so a host can widen it for one screen. */
197
+ readonly max: Ref<number>;
198
+ /**
199
+ * Translated strings for this queue. `NbToaster` passes them to every
200
+ * toast, so a Spanish product states them once instead of per call.
201
+ */
202
+ readonly labels: IToastLabels;
203
+ /** Queue a toast. Returns the handle. */
204
+ push(options: IToastOptions): IToastHandle;
205
+ /** `variant: 'info'`, message-first for the common call. */
206
+ info(message: string, options?: Omit<IToastOptions, 'message' | 'variant'>): IToastHandle;
207
+ /** `variant: 'success'`. */
208
+ success(message: string, options?: Omit<IToastOptions, 'message' | 'variant'>): IToastHandle;
209
+ /** `variant: 'warning'`. */
210
+ warning(message: string, options?: Omit<IToastOptions, 'message' | 'variant'>): IToastHandle;
211
+ /** `variant: 'error'`. Persistent by default. */
212
+ error(message: string, options?: Omit<IToastOptions, 'message' | 'variant'>): IToastHandle;
213
+ /** Rewrite a live toast by id, field by field. No-op if it has gone. */
214
+ update(id: string, patch: TToastPatch): void;
215
+ /** Remove one toast and let the next pending one in. */
216
+ dismiss(id: string, reason?: TToastDismissReason): void;
217
+ /**
218
+ * Clear the whole queue, visible and pending, `retain` included. Sign-out,
219
+ * tenant switch, anything after which no queued message is still true.
220
+ */
221
+ dismissAll(reason?: TToastDismissReason): void;
222
+ /**
223
+ * Clear everything that did not ask to survive a route change. Call it from
224
+ * a router guard:
225
+ *
226
+ * ```ts
227
+ * router.afterEach(() => toast.dismissTransient())
228
+ * ```
229
+ *
230
+ * Nothing in this file knows about a router, and it must not: the library
231
+ * has no dependency on one and cannot guess whether a product's tab switch
232
+ * is a navigation. The queue provides the operation, the application says
233
+ * when.
234
+ */
235
+ dismissTransient(reason?: TToastDismissReason): void;
236
+ /** Hold every countdown. Idempotent. */
237
+ pause(): void;
238
+ /** Resume from the exact remaining time, not from the start. */
239
+ resume(): void;
240
+ /** Remaining milliseconds for a record, for tests and instrumentation. */
241
+ remaining(id: string): number;
242
+ }
243
+ /**
244
+ * Default time on screen, per variant.
245
+ *
246
+ * The scale is reading time, not importance: a success is four words the user
247
+ * expected, a warning is a sentence they did not. An error stays until it is
248
+ * dismissed, because "it failed" is the start of a task and a message that
249
+ * removes itself before the user can act on it is worse than no message.
250
+ */
251
+ export declare const NB_TOAST_DURATIONS: Record<TToastVariant, number>;
252
+ /**
253
+ * The word a screen reader hears before the message, per variant.
254
+ *
255
+ * Severity is otherwise carried by an icon (aria-hidden) and an accent colour,
256
+ * which is exactly the WCAG 1.4.1 failure: "Could not reach the server" with
257
+ * no indication that it is an error. Override the map per queue rather than
258
+ * per toast when the product is not in English.
259
+ */
260
+ export declare const NB_TOAST_STATUS_LABELS: Record<TToastVariant, string>;
261
+ /**
262
+ * Build an isolated queue. Applications use `useToast()`, which shares one
263
+ * queue per page; tests and stories want their own so one spec cannot leave a
264
+ * toast behind for the next.
265
+ */
266
+ export declare function createToastQueue(options?: IToastQueueOptions): IToastQueue;
267
+ /**
268
+ * Injection key for a queue scoped to one application instance.
269
+ *
270
+ * ```ts
271
+ * app.provide(NB_TOAST_QUEUE_KEY, createToastQueue())
272
+ * ```
273
+ *
274
+ * `useToast()` prefers it whenever it is called from a component, and
275
+ * `NbToaster` renders it without being given a `:queue`. Two reasons to use
276
+ * it: server rendering, where a module-level singleton is shared by every
277
+ * request the Node process is handling concurrently, and a host application
278
+ * that mounts several Vue apps in one page and does not want one app's toasts
279
+ * announced by another's toaster.
280
+ *
281
+ * It cannot be reached from a plain module (a service, a router guard, a
282
+ * store action) because there is no component instance there, which is why the
283
+ * shared queue below stays the default rather than being replaced by this.
284
+ */
285
+ export declare const NB_TOAST_QUEUE_KEY: InjectionKey<IToastQueue>;
286
+ /**
287
+ * The toast queue for the current context.
288
+ *
289
+ * Inside a component, an app-scoped queue provided under
290
+ * `NB_TOAST_QUEUE_KEY` wins. Everywhere else, and when nothing was provided,
291
+ * this is one shared queue per page, created on first use, so a service
292
+ * module, a route guard and a deeply nested component all reach the same
293
+ * stack without prop drilling or a plugin install. Mount a single
294
+ * `<NbToaster />` to render it.
295
+ *
296
+ * @example
297
+ * const toast = useToast()
298
+ * toast.success('Draft saved')
299
+ *
300
+ * @example Progress that resolves into its own result
301
+ * const saving = toast.info('Saving changes...', { duration: 0 })
302
+ * try {
303
+ * await save()
304
+ * saving.update({ variant: 'success', message: 'Changes saved' })
305
+ * } catch {
306
+ * saving.update({ variant: 'error', message: 'Could not save changes' })
307
+ * }
308
+ */
309
+ export declare function useToast(): IToastQueue;
310
+ /**
311
+ * Drop the shared queue, clearing whatever was in it.
312
+ *
313
+ * For tests, so one spec cannot leave a toast behind for the next, and for a
314
+ * single-render script (a static build, a prerender pass) that wants the
315
+ * module back in its initial state.
316
+ *
317
+ * It is not request isolation. A module-level singleton is shared by every
318
+ * request a Node process is serving at once, and resetting it globally
319
+ * between awaits would empty a queue another request is still filling. Server
320
+ * rendering with concurrent requests wants a queue per application instance:
321
+ * `app.provide(NB_TOAST_QUEUE_KEY, createToastQueue())`, which is scoped to
322
+ * the app that `createSSRApp()` returned and dies with it.
323
+ */
324
+ export declare function resetToastQueue(): void;
325
+ //# sourceMappingURL=useToast.composable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToast.composable.d.ts","sourceRoot":"","sources":["../../src/composables/useToast.composable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Tooltip content rendering, and nothing else.
3
+ *
4
+ * Split out of `ToolTip.directive.ts` because it answers a different question
5
+ * from the rest of it. Everything in that file is about WHEN a chip exists
6
+ * and WHERE it sits; everything here is about what is allowed inside one when
7
+ * the text did not come from the person writing the template. The two change
8
+ * for unrelated reasons: a new allowed tag is a security review, a new
9
+ * placement rule is a layout bug.
10
+ *
11
+ * Private to the directive. Nothing here is part of the public API.
12
+ */
13
+ import type { IComponentContent } from '../types/ContentRenderer';
14
+ declare const devWarn: (key: string, message: string) => void;
15
+ /**
16
+ * Renders tooltip content - supports both string and complex content structure
17
+ */
18
+ declare const renderTooltipContent: (content: string | Array<IComponentContent> | undefined | null) => string;
19
+ export { renderTooltipContent, devWarn };
20
+ //# sourceMappingURL=ToolTip.content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolTip.content.d.ts","sourceRoot":"","sources":["../../src/directives/ToolTip.content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAwPhE,QAAA,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,SAAS,MAAM,SAM5C,CAAA;AA2DD;;GAEG;AACH,QAAA,MAAM,oBAAoB,GACxB,SAAS,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,SAAS,GAAG,IAAI,KAC5D,MAYF,CAAA;AAED,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAA"}
@@ -1,17 +1,96 @@
1
- import type { App } from 'vue';
1
+ import type { App, ObjectDirective } from 'vue';
2
2
  import type { IComponentContent } from '../types/ContentRenderer';
3
3
  export interface ITooltipOptions {
4
- body?: string | Array<IComponentContent>;
5
- header?: string | Array<IComponentContent>;
6
- tip?: string | Array<IComponentContent>;
7
- flavor?: string;
4
+ /** The three content slots accept `null` as well as `undefined`, because an
5
+ * application binding a value straight from its state (`projectPath`, a
6
+ * fetched description, an optional field) usually has `string | null` and
7
+ * the runtime has always treated any falsy value as "no tooltip" via
8
+ * `hasContent`. Rejecting `null` in the type while accepting it at runtime
9
+ * only forced `?? undefined` at every call site. Found by type-checking
10
+ * `v-nb-tooltip` in a real consumer for the first time. */
11
+ body?: string | Array<IComponentContent> | null;
12
+ header?: string | Array<IComponentContent> | null;
13
+ tip?: string | Array<IComponentContent> | null;
14
+ /** The chip's tone, from the same vocabulary the rest of the library uses
15
+ * (`NbBanner.status`, `EVariant`). `default` is the inverted chip and is
16
+ * what a labelling tooltip should stay on: a coloured chip on a plain icon
17
+ * button reads as a state the control does not have. Reach for `danger` or
18
+ * `warning` only when the tooltip is explaining a blocked or destructive
19
+ * action, which is the case the fleet actually has. */
20
+ status?: TTooltipStatus;
21
+ /** @deprecated Use `status`. Kept because it is the name every existing
22
+ * binding uses and removing it would break them silently. `status` wins
23
+ * when both are given. Typed now, where it used to be `string`: the four
24
+ * values that were only ever documented are now the four the compiler
25
+ * accepts, plus `success` and `warning`, which the library's own status
26
+ * vocabulary has and this directive was missing. */
27
+ flavor?: TTooltipStatus;
8
28
  delay?: number;
29
+ /** Milliseconds the chip stays up after the pointer or focus leaves.
30
+ * Defaults to 150. Raise it when the anchor sits next to a target the
31
+ * user must cross to reach, lower it for dense toolbars. */
32
+ hideDelay?: number;
33
+ /** How the tooltip is wired to assistive technology.
34
+ * - `label`: the tooltip IS the anchor's accessible name (icon-only
35
+ * controls). Applied as a permanent `aria-label`, because a name that
36
+ * only exists while a chip is on screen is not a name.
37
+ * - `description`: the tooltip adds to an anchor that is already named.
38
+ * Applied as `aria-describedby` on the visible chip only.
39
+ * - `none`: no aria wiring at all. For decorative or duplicated text.
40
+ * - `auto` (default): `label` when the anchor has no accessible name,
41
+ * `description` when it does. */
42
+ aria?: TTooltipAria;
43
+ /** Add `tabindex="0"` to an anchor that cannot otherwise take focus, so
44
+ * keyboard users can reach the tooltip. Only for anchors that carry
45
+ * information nothing else conveys (a truncated cell, a status dot).
46
+ * Never needed on a button or a link. */
47
+ focusable?: boolean;
48
+ /** Open on touch (tap) as well as hover and focus. Default true. */
49
+ touch?: boolean;
9
50
  animationTime?: number;
10
51
  position?: 'top' | 'bottom' | 'left' | 'right' | 'cursor';
11
52
  followCursor?: boolean;
12
53
  overflowOnly?: boolean;
54
+ /** Extra classes for the CHIP (not for the anchor, which keeps its own
55
+ * `class` attribute untouched). Use it for a one-off width or a product
56
+ * skin; the supported knobs are the three custom properties in the docs. */
57
+ chipClass?: string;
58
+ /** @deprecated Use `chipClass`, which says which element it lands on.
59
+ * `classExtra` is a name nothing else in this library uses. */
13
60
  classExtra?: string;
61
+ /** Controlled visibility. When this is a boolean, the chip is on screen if
62
+ * and only if it is `true`, and hover / focus / tap stop opening and
63
+ * closing it themselves: they report what the user did through
64
+ * `onOpenChange` and leave the decision to you. This is what an onboarding
65
+ * highlight, a "show me" button and a visual-regression snapshot of the
66
+ * open state need, and there was previously no way to get any of them
67
+ * without synthesising MouseEvents. Leave it `undefined` for the ordinary
68
+ * uncontrolled tooltip. */
69
+ open?: boolean;
70
+ /** Open once, on mount, and behave normally afterwards. Uncontrolled: the
71
+ * first hover-out closes it for good. For a hint that should be seen once
72
+ * without taking the tooltip away from the user. */
73
+ defaultOpen?: boolean;
74
+ /** Called on every transition, with what caused it. In controlled mode this
75
+ * is the only way the user's pointer and keyboard reach you. */
76
+ onOpenChange?: (open: boolean, reason: TTooltipReason) => void;
14
77
  }
78
+ export type TTooltipAria = 'auto' | 'label' | 'description' | 'none';
79
+ /** What opened a chip. `program` is a controlled or `defaultOpen` show, which
80
+ * never waits out the hover-intent delay. */
81
+ export type TTooltipTrigger = 'pointer' | 'focus' | 'touch' | 'program';
82
+ /** What caused a transition reported through `onOpenChange`.
83
+ * - `dismiss`: the user got rid of it. Escape, a pointerdown outside, the
84
+ * window losing focus, a drag starting, the anchor scrolling out of sight.
85
+ * - `superseded`: another anchor opened a chip, and only one chip is ever on
86
+ * screen. Nothing the user did was a dismissal OF THIS tooltip, which is
87
+ * why it is not called one: a host that treats every `false` as "the user
88
+ * is done with this hint" would otherwise cancel an onboarding highlight
89
+ * the moment the pointer crossed an unrelated icon button. */
90
+ export type TTooltipReason = TTooltipTrigger | 'dismiss' | 'superseded';
91
+ /** The chip's tone. Same words as `NbBanner.status` and `EVariant`, minus the
92
+ * ones a 55-character chip has no use for. */
93
+ export type TTooltipStatus = 'default' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
15
94
  declare const tooltipDirective: (app: App) => void;
16
95
  /** Dismiss every currently-visible tooltip. Useful for view switches
17
96
  * in single-page apps where the trigger element gets unmounted by a
@@ -19,9 +98,16 @@ declare const tooltipDirective: (app: App) => void;
19
98
  * tooltip element about to be appended) leaves orphan chips behind.
20
99
  * Call from the host on route / view change.
21
100
  *
22
- * Exposed via `useTooltip()` (composable) and `Tooltip.dismissAll`
23
- * (named export) so consumers don't need to dig through registered
24
- * state directly. */
101
+ * Exported by name from the library entry, alongside the directive
102
+ * installer, so consumers do not have to reach into registered state. */
25
103
  export declare function dismissAllTooltips(): void;
104
+ export type TTooltipDirective = ObjectDirective<HTMLElement, ITooltipOptions>;
105
+ declare module 'vue' {
106
+ interface GlobalDirectives {
107
+ /** Attach a tooltip to any element. See `ITooltipOptions` for the
108
+ * binding value: at minimum one of `header`, `body` or `tip`. */
109
+ vNbTooltip: TTooltipDirective;
110
+ }
111
+ }
26
112
  export default tooltipDirective;
27
113
  //# sourceMappingURL=ToolTip.directive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolTip.directive.d.ts","sourceRoot":"","sources":["../../src/directives/ToolTip.directive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAoB,MAAM,KAAK,CAAA;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAgChE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACxC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAC1C,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACzD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAuKD,QAAA,MAAM,gBAAgB,GAAI,KAAK,GAAG,SAkGjC,CAAA;AAkTD;;;;;;;;sBAQsB;AACtB,wBAAgB,kBAAkB,SASjC;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"ToolTip.directive.d.ts","sourceRoot":"","sources":["../../src/directives/ToolTip.directive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAoB,eAAe,EAAE,MAAM,KAAK,CAAA;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAuGhE,MAAM,WAAW,eAAe;IAC9B;;;;;;gEAM4D;IAC5D,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;IAC/C,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;IACjD,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;IAC9C;;;;;4DAKwD;IACxD,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB;;;;;yDAKqD;IACrD,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;iEAE6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;wCAQoC;IACpC,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB;;;8CAG0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACzD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;iFAE6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;oEACgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;gCAO4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;yDAEqD;IACrD,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;qEACiE;IACjE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;CAC/D;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAA;AACpE;8CAC8C;AAC9C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AACvE;;;;;;;iEAOiE;AACjE,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,SAAS,GAAG,YAAY,CAAA;AACvE;+CAC+C;AAC/C,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,QAAQ,CAAA;AA83BZ,QAAA,MAAM,gBAAgB,GAAI,KAAK,GAAG,SAyQjC,CAAA;AAsgBD;;;;;;;0EAO0E;AAC1E,wBAAgB,kBAAkB,SAmBjC;AAeD,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AAE7E,OAAO,QAAQ,KAAK,CAAC;IAInB,UAAU,gBAAgB;QACxB;0EACkE;QAClE,UAAU,EAAE,iBAAiB,CAAA;KAC9B;CACF;AAED,eAAe,gBAAgB,CAAA"}
package/dist/global.d.ts CHANGED
@@ -24,6 +24,7 @@ import Checkbox from './components/Checkbox.vue'
24
24
  import CheckboxGroup from './components/CheckboxGroup.vue'
25
25
  import ColorStrip from './components/ColorStrip.vue'
26
26
  import CommandPalette from './components/CommandPalette.vue'
27
+ import Confirm from './components/Confirm.vue'
27
28
  import DataTable from './components/DataTable.vue'
28
29
  import DatePicker from './components/DatePicker.vue'
29
30
  import DefinitionList from './components/DefinitionList.vue'
@@ -38,6 +39,7 @@ import Grid from './components/Grid.vue'
38
39
  import Icon from './components/Icon.vue'
39
40
  import ImageCropper from './components/ImageCropper.vue'
40
41
  import InfoHint from './components/InfoHint.vue'
42
+ import InlineLoading from './components/InlineLoading.vue'
41
43
  import InterpolationChart from './components/Charts/InterpolationChart.vue'
42
44
  import JsonTree from './components/JsonTree.vue'
43
45
  import Label from './components/Label.vue'
@@ -50,6 +52,8 @@ import MenuDivider from './components/MenuDivider.vue'
50
52
  import MenuItem from './components/MenuItem.vue'
51
53
  import Message from './components/Message.vue'
52
54
  import Modal from './components/Modal.vue'
55
+ import NotificationCenter from './components/NotificationCenter.vue'
56
+ import NotificationCenterItem from './components/NotificationCenterItem.vue'
53
57
  import NubiscoMark from './components/NubiscoMark.vue'
54
58
  import NubiscoPlatformMark from './components/NubiscoPlatformMark.vue'
55
59
  import NumberInput from './components/NumberInput.vue'
@@ -68,14 +72,19 @@ import SidebarMenu from './components/SidebarMenu.vue'
68
72
  import SidebarMenuGroup from './components/SidebarMenuGroup.vue'
69
73
  import SidebarMenuItem from './components/SidebarMenuItem.vue'
70
74
  import SidebarVariantScope from './components/SidebarVariantScope.vue'
75
+ import Skeleton from './components/Skeleton.vue'
71
76
  import Slider from './components/Slider.vue'
72
77
  import Sparkline from './components/Charts/Sparkline.vue'
78
+ import Spinner from './components/Spinner.vue'
79
+ import Stepper from './components/Stepper.vue'
80
+ import StepperStep from './components/StepperStep.vue'
73
81
  import Submenu from './components/Submenu.vue'
74
82
  import SurfaceLayerScope from './components/SurfaceLayerScope.vue'
75
83
  import Switch from './components/Switch.vue'
76
84
  import Tabs from './components/Tabs.vue'
77
85
  import TextInput from './components/TextInput.vue'
78
86
  import Toast from './components/Toast.vue'
87
+ import Toaster from './components/Toaster.vue'
79
88
  import Tree from './components/Tree.vue'
80
89
  import TreeNode from './components/TreeNode.vue'
81
90
  import UserMenu from './components/UserMenu.vue'
@@ -107,6 +116,7 @@ declare module 'vue' {
107
116
  NbCheckboxGroup: typeof CheckboxGroup
108
117
  NbColorStrip: typeof ColorStrip
109
118
  NbCommandPalette: typeof CommandPalette
119
+ NbConfirm: typeof Confirm
110
120
  NbDataTable: typeof DataTable
111
121
  NbDatePicker: typeof DatePicker
112
122
  NbDefinitionList: typeof DefinitionList
@@ -121,6 +131,7 @@ declare module 'vue' {
121
131
  NbIcon: typeof Icon
122
132
  NbImageCropper: typeof ImageCropper
123
133
  NbInfoHint: typeof InfoHint
134
+ NbInlineLoading: typeof InlineLoading
124
135
  NbInterpolationChart: typeof InterpolationChart
125
136
  NbJsonTree: typeof JsonTree
126
137
  NbLabel: typeof Label
@@ -133,6 +144,8 @@ declare module 'vue' {
133
144
  NbMenuItem: typeof MenuItem
134
145
  NbMessage: typeof Message
135
146
  NbModal: typeof Modal
147
+ NbNotificationCenter: typeof NotificationCenter
148
+ NbNotificationCenterItem: typeof NotificationCenterItem
136
149
  NbNubiscoMark: typeof NubiscoMark
137
150
  NbNubiscoPlatformMark: typeof NubiscoPlatformMark
138
151
  NbNumberInput: typeof NumberInput
@@ -151,14 +164,19 @@ declare module 'vue' {
151
164
  NbSidebarMenuGroup: typeof SidebarMenuGroup
152
165
  NbSidebarMenuItem: typeof SidebarMenuItem
153
166
  NbSidebarVariantScope: typeof SidebarVariantScope
167
+ NbSkeleton: typeof Skeleton
154
168
  NbSlider: typeof Slider
155
169
  NbSparkline: typeof Sparkline
170
+ NbSpinner: typeof Spinner
171
+ NbStepper: typeof Stepper
172
+ NbStepperStep: typeof StepperStep
156
173
  NbSubmenu: typeof Submenu
157
174
  NbSurfaceLayerScope: typeof SurfaceLayerScope
158
175
  NbSwitch: typeof Switch
159
176
  NbTabs: typeof Tabs
160
177
  NbTextInput: typeof TextInput
161
178
  NbToast: typeof Toast
179
+ NbToaster: typeof Toaster
162
180
  NbTree: typeof Tree
163
181
  NbTreeNode: typeof TreeNode
164
182
  NbUserMenu: typeof UserMenu