@nice2dev/ui-core 1.0.21 → 1.0.23
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/core/filterToSql.d.ts +25 -0
- package/dist/core/filterToSql.d.ts.map +1 -0
- package/dist/core/tutorials.d.ts +106 -0
- package/dist/core/tutorials.d.ts.map +1 -0
- package/dist/core/types.d.ts +30 -8
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.cjs +44 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +2476 -2270
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { NiceFilterCondition, NiceFilterGroup, NiceSortExpression } from './datasource';
|
|
2
|
+
export interface NiceSqlWhere {
|
|
3
|
+
/** The WHERE body (no leading "WHERE"); empty string when there are no conditions. */
|
|
4
|
+
sql: string;
|
|
5
|
+
/** Positional parameters in the order their placeholders appear in `sql`. */
|
|
6
|
+
params: unknown[];
|
|
7
|
+
}
|
|
8
|
+
export interface FilterToSqlOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Placeholder for parameter at `index` (0-based). Default `'?'` (MySQL/SQLite).
|
|
11
|
+
* For Postgres pass `(i) => '$' + (i + 1)`.
|
|
12
|
+
*/
|
|
13
|
+
placeholder?: (index: number) => string;
|
|
14
|
+
/** Quote/escape an identifier. Default: bare if safe, else double-quoted. */
|
|
15
|
+
quoteField?: (field: string) => string;
|
|
16
|
+
}
|
|
17
|
+
/** Convert a {@link NiceFilterGroup} tree to a parameterised WHERE clause. */
|
|
18
|
+
export declare function filterGroupToWhere(group: NiceFilterGroup, opts?: FilterToSqlOptions): NiceSqlWhere;
|
|
19
|
+
/** Convert a sort model to an ORDER BY body (no leading "ORDER BY"). */
|
|
20
|
+
export declare function sortModelToOrderBy(sort: NiceSortExpression[], opts?: FilterToSqlOptions): string;
|
|
21
|
+
/** Evaluate a single condition against a row (same operator semantics as the SQL gen). */
|
|
22
|
+
export declare function matchesFilterCondition(row: Record<string, unknown>, c: NiceFilterCondition): boolean;
|
|
23
|
+
/** Evaluate a {@link NiceFilterGroup} tree against a row (empty group ⇒ matches). */
|
|
24
|
+
export declare function matchesFilterGroup(row: Record<string, unknown>, group: NiceFilterGroup): boolean;
|
|
25
|
+
//# sourceMappingURL=filterToSql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterToSql.d.ts","sourceRoot":"","sources":["../../src/core/filterToSql.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7F,MAAM,WAAW,YAAY;IAC3B,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAMD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,IAAI,GAAE,kBAAuB,GAC5B,YAAY,CA4Dd;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,IAAI,GAAE,kBAAuB,GAC5B,MAAM,CAMR;AAQD,0FAA0F;AAC1F,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,CAAC,EAAE,mBAAmB,GACrB,OAAO,CAuCT;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAOhG"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tutorial launcher — universal, decoupled "?" tutorial button + global toggle.
|
|
3
|
+
* @nice2dev/ui-core
|
|
4
|
+
*
|
|
5
|
+
* The rich overlay (`NiceTutorial`) lives in `@nice2dev/ui`. To let ANY package
|
|
6
|
+
* (even react-only ones) add a tutorial "?" button without importing the overlay,
|
|
7
|
+
* the launcher is split:
|
|
8
|
+
* - this module (ui-core, lowest level): the `?` button, a context, the global
|
|
9
|
+
* on/off flag, types and resolvers — no dependency on the overlay;
|
|
10
|
+
* - `NiceTutorialHost` (in `@nice2dev/ui`): bridges this context to the real
|
|
11
|
+
* `NiceTutorial`. The app mounts the host once; `enabled` comes from prefs
|
|
12
|
+
* (e.g. an OmniVerk "hide all tutorials" preference).
|
|
13
|
+
*
|
|
14
|
+
* Editors expose an optional `tutorial?: NiceComponentTutorial` prop and render
|
|
15
|
+
* `<NiceTutorialButton steps={resolveTutorial(tutorial, BUILTIN_TOUR)} />`.
|
|
16
|
+
*/
|
|
17
|
+
import React from 'react';
|
|
18
|
+
/** A tutorial step authored on a component (i18n-key aware). */
|
|
19
|
+
export interface NiceTutorialStepDef {
|
|
20
|
+
/** CSS selector for the highlighted element (use stable `data-tour="…"`). */
|
|
21
|
+
target: string;
|
|
22
|
+
/** Inline English default (authoritative fallback). */
|
|
23
|
+
title?: string;
|
|
24
|
+
content?: string;
|
|
25
|
+
/** i18n keys resolved via `t(key, default)` at launch (locale-aware). */
|
|
26
|
+
titleKey?: string;
|
|
27
|
+
contentKey?: string;
|
|
28
|
+
placement?: 'top' | 'bottom' | 'left' | 'right' | 'auto';
|
|
29
|
+
highlightPadding?: number;
|
|
30
|
+
showArrow?: boolean;
|
|
31
|
+
scrollIntoView?: boolean;
|
|
32
|
+
disableInteraction?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** A fully-resolved step (structurally compatible with `NiceTutorialStep`). */
|
|
35
|
+
export interface NiceResolvedTutorialStep {
|
|
36
|
+
target: string;
|
|
37
|
+
title: string;
|
|
38
|
+
content: string;
|
|
39
|
+
placement?: 'top' | 'bottom' | 'left' | 'right' | 'auto';
|
|
40
|
+
highlightPadding?: number;
|
|
41
|
+
showArrow?: boolean;
|
|
42
|
+
scrollIntoView?: boolean;
|
|
43
|
+
disableInteraction?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The optional `tutorial?` prop shape used across editors:
|
|
47
|
+
* - `true` → use the component's built-in tour;
|
|
48
|
+
* - `NiceTutorialStepDef[]` → custom steps;
|
|
49
|
+
* - `{ steps?, autoStart?, label? }` → custom steps (fallback to built-in) + options;
|
|
50
|
+
* - `false`/omitted → no "?" button.
|
|
51
|
+
*/
|
|
52
|
+
export type NiceComponentTutorial = boolean | NiceTutorialStepDef[] | {
|
|
53
|
+
steps?: NiceTutorialStepDef[];
|
|
54
|
+
autoStart?: boolean;
|
|
55
|
+
label?: string;
|
|
56
|
+
};
|
|
57
|
+
export interface NiceTutorialsContextValue {
|
|
58
|
+
/** Global on/off — when false, all `NiceTutorialButton`s render nothing. */
|
|
59
|
+
enabled: boolean;
|
|
60
|
+
/** Whether a tutorial is currently running (host-driven). */
|
|
61
|
+
active: boolean;
|
|
62
|
+
/** Launch resolved steps (wired by `NiceTutorialHost`; no-op without a host). */
|
|
63
|
+
run: (steps: NiceResolvedTutorialStep[], opts?: {
|
|
64
|
+
autoStart?: boolean;
|
|
65
|
+
}) => void;
|
|
66
|
+
}
|
|
67
|
+
export interface NiceTutorialsProviderProps {
|
|
68
|
+
/** Global enable flag (default `true`). Set `false` to hide every "?" button. */
|
|
69
|
+
enabled?: boolean;
|
|
70
|
+
/** Whether a tutorial is active (host-driven). */
|
|
71
|
+
active?: boolean;
|
|
72
|
+
/** Launcher implementation (provided by `NiceTutorialHost`). */
|
|
73
|
+
onRun?: (steps: NiceResolvedTutorialStep[], opts?: {
|
|
74
|
+
autoStart?: boolean;
|
|
75
|
+
}) => void;
|
|
76
|
+
children: React.ReactNode;
|
|
77
|
+
}
|
|
78
|
+
export declare const NiceTutorialsProvider: React.FC<NiceTutorialsProviderProps>;
|
|
79
|
+
/** Access the tutorials context (`enabled`, `active`, `run`). */
|
|
80
|
+
export declare function useNiceTutorials(): NiceTutorialsContextValue;
|
|
81
|
+
/** Convenience: whether tutorial "?" buttons should be shown globally. */
|
|
82
|
+
export declare function useNiceTutorialsEnabled(): boolean;
|
|
83
|
+
/** Normalise a `tutorial?` prop value (+ component built-in) to steps or null. */
|
|
84
|
+
export declare function resolveTutorial(tutorial: NiceComponentTutorial | undefined, builtin?: NiceTutorialStepDef[]): NiceTutorialStepDef[] | null;
|
|
85
|
+
/** Resolve i18n-key titles/content to strings using a `t(key, default)` fn. */
|
|
86
|
+
export declare function resolveStepsI18n(steps: NiceTutorialStepDef[], t: (key: string, defaultValue: string) => string): NiceResolvedTutorialStep[];
|
|
87
|
+
export interface NiceTutorialButtonProps {
|
|
88
|
+
/** Steps to run (already normalised via {@link resolveTutorial}). */
|
|
89
|
+
steps?: NiceTutorialStepDef[] | null;
|
|
90
|
+
/** Auto-start option forwarded to `run`. */
|
|
91
|
+
autoStart?: boolean;
|
|
92
|
+
/** Accessible label / tooltip. Defaults to the i18n `tutorial.startAria`. */
|
|
93
|
+
label?: string;
|
|
94
|
+
/** Size. Default `'md'`. */
|
|
95
|
+
size?: 'sm' | 'md';
|
|
96
|
+
className?: string;
|
|
97
|
+
style?: React.CSSProperties;
|
|
98
|
+
'data-testid'?: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Small "?" button that launches a tutorial. Renders nothing when tutorials are
|
|
102
|
+
* globally disabled or no steps are provided — so it's safe to render
|
|
103
|
+
* unconditionally as `<NiceTutorialButton steps={resolveTutorial(...)} />`.
|
|
104
|
+
*/
|
|
105
|
+
export declare const NiceTutorialButton: React.FC<NiceTutorialButtonProps>;
|
|
106
|
+
//# sourceMappingURL=tutorials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tutorials.d.ts","sourceRoot":"","sources":["../../src/core/tutorials.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAA6C,MAAM,OAAO,CAAC;AAMlE,gEAAgE;AAChE,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAC7B,OAAO,GACP,mBAAmB,EAAE,GACrB;IAAE,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAC;IAChB,iFAAiF;IACjF,GAAG,EAAE,CAAC,KAAK,EAAE,wBAAwB,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAClF;AAUD,MAAM,WAAW,0BAA0B;IACzC,iFAAiF;IACjF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACpF,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAWtE,CAAC;AAEF,iEAAiE;AACjE,wBAAgB,gBAAgB,IAAI,yBAAyB,CAE5D;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAID,kFAAkF;AAClF,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,qBAAqB,GAAG,SAAS,EAC3C,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAC9B,mBAAmB,EAAE,GAAG,IAAI,CAY9B;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,mBAAmB,EAAE,EAC5B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,GAC/C,wBAAwB,EAAE,CAW5B;AAID,MAAM,WAAW,uBAAuB;IACtC,qEAAqE;IACrE,KAAK,CAAC,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IACrC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmChE,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* T-shirt sizing used across all components for consistent visual density.
|
|
3
|
+
* The full names `'small' | 'medium' | 'large'` are accepted aliases for
|
|
4
|
+
* `'sm' | 'md' | 'lg'` (normalized internally via {@link normalizeSize}) — they
|
|
5
|
+
* exist so consumers coming from Material/Chakra/Ant don't hit a type error.
|
|
6
|
+
*/
|
|
7
|
+
export type NiceSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'small' | 'medium' | 'large';
|
|
8
|
+
/** The canonical (short) size tokens — what {@link normalizeSize} returns. */
|
|
9
|
+
export type NiceSizeCanonical = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
|
|
10
|
+
/** @deprecated Legacy size names — accepted aliases, see {@link NiceSize}. */
|
|
4
11
|
export type NiceSizeLegacy = 'small' | 'medium' | 'large';
|
|
5
12
|
/**
|
|
6
|
-
* Normalizes a size value
|
|
7
|
-
*
|
|
13
|
+
* Normalizes a size value to the canonical short token, mapping the accepted
|
|
14
|
+
* full-name aliases (`small`/`medium`/`large` → `sm`/`md`/`lg`). Pass any
|
|
15
|
+
* {@link NiceSize}; get back a {@link NiceSizeCanonical}. `componentName` is
|
|
16
|
+
* accepted for back-compat and ignored.
|
|
8
17
|
*/
|
|
9
|
-
export declare function normalizeSize(size: string | undefined, componentName?: string):
|
|
18
|
+
export declare function normalizeSize(size: string | undefined, componentName?: string): NiceSizeCanonical;
|
|
10
19
|
/**
|
|
11
20
|
* Layout sizing for editors, viewers and players.
|
|
12
21
|
* - `'minimal'` — smallest usable chrome, toolbar hidden or icon-only
|
|
@@ -15,8 +24,21 @@ export declare function normalizeSize(size: string | undefined, componentName?:
|
|
|
15
24
|
* - `'fullscreen'` — expands to fill the viewport
|
|
16
25
|
*/
|
|
17
26
|
export type NiceEditorSize = 'minimal' | 'compact' | 'standard' | 'fullscreen';
|
|
18
|
-
/**
|
|
19
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Visual style variant for buttons, alerts, badges and other themed controls.
|
|
29
|
+
* `'danger'` is an accepted alias for `'error'` (normalized internally via
|
|
30
|
+
* {@link normalizeVariant}) — it reads more naturally on destructive buttons
|
|
31
|
+
* (Delete, Reset) and matches Bootstrap/Ant/Material conventions.
|
|
32
|
+
*/
|
|
33
|
+
export type NiceVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'danger' | 'info' | 'ghost' | 'outline';
|
|
34
|
+
/** The canonical variant tokens — what {@link normalizeVariant} returns (`'danger'` collapses to `'error'`). */
|
|
35
|
+
export type NiceVariantCanonical = Exclude<NiceVariant, 'danger'>;
|
|
36
|
+
/**
|
|
37
|
+
* Normalizes a variant to its canonical token, mapping the `'danger'` alias to
|
|
38
|
+
* `'error'`. Components should call this before emitting `--${variant}` classes
|
|
39
|
+
* or token lookups so the alias renders identically to `'error'`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function normalizeVariant(variant: NiceVariant): NiceVariantCanonical;
|
|
20
42
|
/** Whitespace / padding density preset. */
|
|
21
43
|
export type NiceDensity = 'compact' | 'normal' | 'comfortable';
|
|
22
44
|
/**
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|