@fayz-ai/ui 0.12.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ChartWidgetInner-GDE5PBTR.js → ChartWidgetInner-IOLIUYTB.js} +21 -8
- package/dist/ChartWidgetInner-IOLIUYTB.js.map +1 -0
- package/dist/analytics/AnalyticsCard.d.ts.map +1 -1
- package/dist/analytics/AnalyticsControls.d.ts +5 -1
- package/dist/analytics/AnalyticsControls.d.ts.map +1 -1
- package/dist/chunk-3OVZ5JJQ.js +540 -0
- package/dist/chunk-3OVZ5JJQ.js.map +1 -0
- package/dist/{chunk-22EVFMS3.js → chunk-4GK6IHOI.js} +17 -3
- package/dist/chunk-4GK6IHOI.js.map +1 -0
- package/dist/{chunk-7BMXN7MP.js → chunk-5KMAEQA3.js} +25 -24
- package/dist/chunk-5KMAEQA3.js.map +1 -0
- package/dist/chunk-AASANYXN.js +601 -0
- package/dist/chunk-AASANYXN.js.map +1 -0
- package/dist/chunk-FFJ2C5YH.js +92 -0
- package/dist/chunk-FFJ2C5YH.js.map +1 -0
- package/dist/chunk-J7F3Z52K.js +152 -0
- package/dist/chunk-J7F3Z52K.js.map +1 -0
- package/dist/{chunk-JGJNRNQW.js → chunk-KD2V3TAX.js} +290 -67
- package/dist/chunk-KD2V3TAX.js.map +1 -0
- package/dist/{chunk-ZDRHCKRK.js → chunk-NA3GE4H3.js} +746 -533
- package/dist/chunk-NA3GE4H3.js.map +1 -0
- package/dist/{chunk-7BHG3XGJ.js → chunk-SLWTKHNY.js} +296 -269
- package/dist/chunk-SLWTKHNY.js.map +1 -0
- package/dist/dashboard/ChartWidgetInner.d.ts.map +1 -1
- package/dist/dashboard/DashboardCanvas.d.ts.map +1 -1
- package/dist/dashboard/DashboardCustomizeMenu.d.ts.map +1 -1
- package/dist/dashboard/DashboardRange.d.ts +8 -2
- package/dist/dashboard/DashboardRange.d.ts.map +1 -1
- package/dist/dashboard/index.js +4 -4
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -99
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.d.ts +8 -2
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/ModulePage.d.ts +24 -1
- package/dist/layout/ModulePage.d.ts.map +1 -1
- package/dist/layout/Sidebar.d.ts +27 -4
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/Topbar.d.ts +10 -3
- package/dist/layout/Topbar.d.ts.map +1 -1
- package/dist/layout/index.d.ts +2 -1
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +4 -4
- package/dist/layout/rail-flyout.d.ts +10 -0
- package/dist/layout/rail-flyout.d.ts.map +1 -1
- package/dist/primitives/SearchCombobox.d.ts +9 -1
- package/dist/primitives/SearchCombobox.d.ts.map +1 -1
- package/dist/primitives/bulk-action-bar.d.ts +3 -1
- package/dist/primitives/bulk-action-bar.d.ts.map +1 -1
- package/dist/primitives/color-palette.d.ts +24 -0
- package/dist/primitives/color-palette.d.ts.map +1 -0
- package/dist/primitives/header-tabs.d.ts +47 -7
- package/dist/primitives/header-tabs.d.ts.map +1 -1
- package/dist/primitives/image-drop.d.ts +28 -0
- package/dist/primitives/image-drop.d.ts.map +1 -0
- package/dist/primitives/index.d.ts +9 -3
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +6 -3
- package/dist/primitives/list-view.d.ts +9 -1
- package/dist/primitives/list-view.d.ts.map +1 -1
- package/dist/primitives/option-select.d.ts +46 -0
- package/dist/primitives/option-select.d.ts.map +1 -0
- package/dist/primitives/page-toolbar.d.ts +80 -0
- package/dist/primitives/page-toolbar.d.ts.map +1 -0
- package/dist/primitives/search-select.d.ts +3 -1
- package/dist/primitives/search-select.d.ts.map +1 -1
- package/dist/primitives/sheet.d.ts.map +1 -1
- package/dist/primitives/step-progress.d.ts +20 -0
- package/dist/primitives/step-progress.d.ts.map +1 -0
- package/dist/primitives/tabs.d.ts.map +1 -1
- package/dist/primitives/use-row-selection.d.ts +50 -0
- package/dist/primitives/use-row-selection.d.ts.map +1 -0
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/page-header.store.d.ts +26 -2
- package/dist/stores/page-header.store.d.ts.map +1 -1
- package/dist/styles.css +74 -17
- package/dist/wizard/Wizard.d.ts +38 -0
- package/dist/wizard/Wizard.d.ts.map +1 -0
- package/dist/wizard/WizardField.d.ts +22 -0
- package/dist/wizard/WizardField.d.ts.map +1 -0
- package/dist/wizard/index.d.ts +6 -0
- package/dist/wizard/index.d.ts.map +1 -0
- package/dist/wizard/index.js +5 -0
- package/dist/wizard/index.js.map +1 -0
- package/dist/wizard/logic.d.ts +39 -0
- package/dist/wizard/logic.d.ts.map +1 -0
- package/dist/wizard/types.d.ts +95 -0
- package/dist/wizard/types.d.ts.map +1 -0
- package/dist/wizard/useWizard.d.ts +47 -0
- package/dist/wizard/useWizard.d.ts.map +1 -0
- package/package.json +14 -8
- package/dist/ChartWidgetInner-GDE5PBTR.js.map +0 -1
- package/dist/chunk-22EVFMS3.js.map +0 -1
- package/dist/chunk-7BHG3XGJ.js.map +0 -1
- package/dist/chunk-7BMXN7MP.js.map +0 -1
- package/dist/chunk-JGJNRNQW.js.map +0 -1
- package/dist/chunk-VAKWUUVC.js +0 -425
- package/dist/chunk-VAKWUUVC.js.map +0 -1
- package/dist/chunk-ZBQ772DU.js +0 -17
- package/dist/chunk-ZBQ772DU.js.map +0 -1
- package/dist/chunk-ZDRHCKRK.js.map +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import type { SelectableOption } from '../primitives/option-select';
|
|
3
|
+
/** Everything answered so far, keyed by field id. */
|
|
4
|
+
export type WizardValues = Record<string, unknown>;
|
|
5
|
+
export type WizardFieldKind = 'text' | 'textarea' | 'email' | 'phone' | 'slug' | 'cards' | 'chips' | 'toggle' | 'image' | 'palette';
|
|
6
|
+
export interface WizardFieldDef {
|
|
7
|
+
id: string;
|
|
8
|
+
kind: WizardFieldKind;
|
|
9
|
+
label?: string;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
hint?: string;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
/** cards/chips only. */
|
|
14
|
+
options?: ReadonlyArray<SelectableOption>;
|
|
15
|
+
multi?: boolean;
|
|
16
|
+
/** cards only — how many per row on wide screens. */
|
|
17
|
+
columns?: 1 | 2 | 3;
|
|
18
|
+
/**
|
|
19
|
+
* Reveal this field only when the answers say so. This is what makes
|
|
20
|
+
* "outro sistema" open a "qual?" box and "local fixo" open the address.
|
|
21
|
+
*/
|
|
22
|
+
visibleWhen?: (values: WizardValues) => boolean;
|
|
23
|
+
/** Return a message to block advancing, or null/undefined when the value is fine. */
|
|
24
|
+
validate?: (value: unknown, values: WizardValues) => string | null | undefined;
|
|
25
|
+
/** slug/text only — rewrite what the user typed on the way into state. */
|
|
26
|
+
normalize?: (raw: string) => string;
|
|
27
|
+
/**
|
|
28
|
+
* Async check run while typing (slug availability). Debounced by the field.
|
|
29
|
+
* Return a message to show as an error, or null when it is fine.
|
|
30
|
+
*/
|
|
31
|
+
checkAsync?: (value: string, values: WizardValues) => Promise<string | null>;
|
|
32
|
+
/** image only. */
|
|
33
|
+
onUpload?: (file: File) => Promise<string>;
|
|
34
|
+
/** Seed the field the first time the step is reached, from earlier answers. */
|
|
35
|
+
derive?: (values: WizardValues) => unknown;
|
|
36
|
+
/**
|
|
37
|
+
* The async counterpart to `derive`: takes this field's value somewhere that
|
|
38
|
+
* knows more — a crawl of the site they just typed — and comes back with
|
|
39
|
+
* answers to OTHER fields, anywhere in the flow.
|
|
40
|
+
*
|
|
41
|
+
* Debounced like `checkAsync`. A field the user has answered is never
|
|
42
|
+
* overwritten, so a slow reply cannot land on top of what they typed while
|
|
43
|
+
* waiting for it. Return null when there is nothing to suggest.
|
|
44
|
+
*/
|
|
45
|
+
suggest?: (value: string, values: WizardValues) => Promise<WizardValues | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Set `false` to keep a `suggest` from ever answering this field.
|
|
48
|
+
*
|
|
49
|
+
* For questions nothing outside the business can know — how many SKUs they
|
|
50
|
+
* carry, what system they run the back office on, how many orders a day. A
|
|
51
|
+
* model handed one of those will find something that looks like evidence and
|
|
52
|
+
* answer at high confidence, and a confidently wrong answer in a field the
|
|
53
|
+
* user has no reason to doubt costs more than an empty one.
|
|
54
|
+
*/
|
|
55
|
+
suggestable?: boolean;
|
|
56
|
+
/** palette only — how many colour slots to show (default 4). */
|
|
57
|
+
slots?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The panel beside the form. This is the slot images live in — a step with no
|
|
61
|
+
* media falls back to a themed gradient, so the flow never looks half-built.
|
|
62
|
+
*/
|
|
63
|
+
export interface WizardMedia {
|
|
64
|
+
src?: string;
|
|
65
|
+
/** Swapped in when the app renders dark. */
|
|
66
|
+
srcDark?: string;
|
|
67
|
+
alt?: string;
|
|
68
|
+
/** Anything richer than an image: a testimonial, a feature list, a mock. */
|
|
69
|
+
node?: React.ReactNode;
|
|
70
|
+
}
|
|
71
|
+
export interface WizardStepDef {
|
|
72
|
+
id: string;
|
|
73
|
+
/** Small uppercase line above the title. */
|
|
74
|
+
eyebrow?: string;
|
|
75
|
+
title: string;
|
|
76
|
+
subtitle?: string;
|
|
77
|
+
fields?: ReadonlyArray<WizardFieldDef>;
|
|
78
|
+
media?: WizardMedia;
|
|
79
|
+
/** Replaces the whole form column — used by the final summary/confirm step. */
|
|
80
|
+
render?: (ctx: WizardRenderContext) => React.ReactNode;
|
|
81
|
+
/** Label for the advance button on this step (default: the wizard's `nextLabel`). */
|
|
82
|
+
nextLabel?: string;
|
|
83
|
+
visibleWhen?: (values: WizardValues) => boolean;
|
|
84
|
+
/** Step-level gate, on top of per-field validation. */
|
|
85
|
+
validate?: (values: WizardValues) => string | null | undefined;
|
|
86
|
+
}
|
|
87
|
+
export interface WizardRenderContext {
|
|
88
|
+
values: WizardValues;
|
|
89
|
+
setValue: (id: string, value: unknown) => void;
|
|
90
|
+
/** Steps actually on screen for this set of answers, in order. */
|
|
91
|
+
steps: ReadonlyArray<WizardStepDef>;
|
|
92
|
+
index: number;
|
|
93
|
+
submitting: boolean;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/wizard/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { WizardFieldDef, WizardStepDef, WizardValues } from './types';
|
|
2
|
+
export interface UseWizardOptions {
|
|
3
|
+
steps: ReadonlyArray<WizardStepDef>;
|
|
4
|
+
initialValues?: WizardValues;
|
|
5
|
+
/**
|
|
6
|
+
* localStorage key for the in-progress draft. Someone who closes the tab
|
|
7
|
+
* mid-flow should not have to answer everything again. Omit to keep it in memory.
|
|
8
|
+
*/
|
|
9
|
+
draftKey?: string;
|
|
10
|
+
onSubmit?: (values: WizardValues) => Promise<void> | void;
|
|
11
|
+
}
|
|
12
|
+
export interface UseWizardResult {
|
|
13
|
+
/** Only the steps whose `visibleWhen` passes for the current answers. */
|
|
14
|
+
steps: ReadonlyArray<WizardStepDef>;
|
|
15
|
+
step: WizardStepDef | undefined;
|
|
16
|
+
index: number;
|
|
17
|
+
total: number;
|
|
18
|
+
values: WizardValues;
|
|
19
|
+
setValue: (id: string, value: unknown) => void;
|
|
20
|
+
/** Per-field messages for the current step, keyed by field id. */
|
|
21
|
+
fieldErrors: Record<string, string | null>;
|
|
22
|
+
/** The step-level blocking message, or null. Field-level ones live in `fieldErrors`. */
|
|
23
|
+
blocker: string | null;
|
|
24
|
+
canAdvance: boolean;
|
|
25
|
+
isFirst: boolean;
|
|
26
|
+
isLast: boolean;
|
|
27
|
+
submitting: boolean;
|
|
28
|
+
error: string | null;
|
|
29
|
+
next: () => void;
|
|
30
|
+
back: () => void;
|
|
31
|
+
goTo: (index: number) => void;
|
|
32
|
+
submit: () => Promise<void>;
|
|
33
|
+
/** True once the user has answered anything, or resumed a draft that had. */
|
|
34
|
+
touched: boolean;
|
|
35
|
+
/** Forget the persisted draft — call after a successful submit. */
|
|
36
|
+
clearDraft: () => void;
|
|
37
|
+
/** Fields of the current step that pass their own `visibleWhen`. */
|
|
38
|
+
visibleFields: ReadonlyArray<WizardFieldDef>;
|
|
39
|
+
/** Id of the field whose `suggest` is in flight, or null. */
|
|
40
|
+
suggesting: string | null;
|
|
41
|
+
/** Fields currently holding a suggested answer rather than one the user gave. */
|
|
42
|
+
suggested: ReadonlySet<string>;
|
|
43
|
+
/** Drop a suggestion the user disagrees with, and stop marking the field. */
|
|
44
|
+
clearSuggestion: (id: string) => void;
|
|
45
|
+
}
|
|
46
|
+
export declare function useWizard({ steps, initialValues, draftKey, onSubmit }: UseWizardOptions): UseWizardResult;
|
|
47
|
+
//# sourceMappingURL=useWizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWizard.d.ts","sourceRoot":"","sources":["../../src/wizard/useWizard.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACnC,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC1D;AAED,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACnC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,YAAY,CAAA;IACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IAC1C,wFAAwF;IACxF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAA;IAChB,mEAAmE;IACnE,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,oEAAoE;IACpE,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC5C,6DAA6D;IAC7D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,iFAAiF;IACjF,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC9B,6EAA6E;IAC7E,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC;AAWD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,gBAAgB,GAAG,eAAe,CAgQzG"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"fayz": {
|
|
4
4
|
"status": "beta"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.15.0",
|
|
7
7
|
"description": "Fayz SDK UI — Radix + Tailwind component library with CRUD engine and layout shells",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"sideEffects": [
|
|
@@ -33,6 +33,10 @@
|
|
|
33
33
|
"types": "./dist/dashboard/index.d.ts",
|
|
34
34
|
"import": "./dist/dashboard/index.js"
|
|
35
35
|
},
|
|
36
|
+
"./wizard": {
|
|
37
|
+
"types": "./dist/wizard/index.d.ts",
|
|
38
|
+
"import": "./dist/wizard/index.js"
|
|
39
|
+
},
|
|
36
40
|
"./icons": {
|
|
37
41
|
"types": "./dist/icons.d.ts",
|
|
38
42
|
"import": "./dist/icons.js"
|
|
@@ -75,30 +79,32 @@
|
|
|
75
79
|
"clsx": "^2.1.0",
|
|
76
80
|
"recharts": "^2.15.0",
|
|
77
81
|
"tailwind-merge": "^2.4.0",
|
|
78
|
-
"@fayz-ai/core": "^0.
|
|
82
|
+
"@fayz-ai/core": "^0.15.0"
|
|
79
83
|
},
|
|
80
84
|
"devDependencies": {
|
|
81
85
|
"@types/react": "^18.3.0",
|
|
82
86
|
"@types/react-dom": "^18.3.0",
|
|
83
87
|
"autoprefixer": "^10.4.0",
|
|
88
|
+
"lucide-react": "^0.400.0",
|
|
84
89
|
"postcss": "^8.4.0",
|
|
85
90
|
"react": "^18.3.0",
|
|
86
91
|
"react-dom": "^18.3.0",
|
|
92
|
+
"sonner": "^2.0.7",
|
|
87
93
|
"tailwindcss": "^3.4.0",
|
|
88
94
|
"tsup": "^8.2.0",
|
|
89
95
|
"typescript": "^5.5.0",
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"sonner": "^2.0.7"
|
|
96
|
+
"vitest": "^4.1.5",
|
|
97
|
+
"zustand": "^4.5.0"
|
|
93
98
|
},
|
|
94
99
|
"license": "MIT",
|
|
95
100
|
"publishConfig": {
|
|
96
101
|
"access": "public"
|
|
97
102
|
},
|
|
98
103
|
"scripts": {
|
|
99
|
-
"build": "tsup && mkdir -p dist && cp src/styles.css dist/styles.css && tsc
|
|
104
|
+
"build": "tsup && mkdir -p dist && cp src/styles.css dist/styles.css && tsc -b --force",
|
|
100
105
|
"dev": "tsup --watch",
|
|
101
|
-
"typecheck": "tsc
|
|
102
|
-
"clean": "rm -rf dist"
|
|
106
|
+
"typecheck": "tsc -b",
|
|
107
|
+
"clean": "rm -rf dist .tsbuildinfo",
|
|
108
|
+
"test": "vitest run"
|
|
103
109
|
}
|
|
104
110
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dashboard/ChartWidgetInner.tsx"],"names":[],"mappings":"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","file":"ChartWidgetInner-GDE5PBTR.js","sourcesContent":["import * as React from 'react'\nimport {\n ResponsiveContainer,\n LineChart, Line,\n BarChart, Bar,\n AreaChart, Area,\n PieChart, Pie, Cell,\n XAxis, YAxis, CartesianGrid, Tooltip, Legend,\n} from 'recharts'\nimport type { ChartSeries, ChartType } from './types'\n\n/** Theme-driven palette (HSL triplet CSS vars defined in styles.css). */\nconst PALETTE = [\n 'hsl(var(--info))',\n 'hsl(var(--magic))',\n 'hsl(var(--success))',\n 'hsl(var(--warning))',\n 'hsl(var(--destructive))',\n]\nconst AXIS = 'hsl(var(--muted-foreground))'\nconst GRID = 'hsl(var(--border))'\n\nexport interface ChartWidgetInnerProps {\n type: ChartType\n data: Array<Record<string, string | number>>\n series: ChartSeries[]\n categoryKey: string\n height: number\n}\n\n// recharts-backed chart body. Default export + own module so ChartWidget can\n// React.lazy it — recharts (~400 KB min) then lives in an async chunk instead\n// of every consumer's entry bundle.\nexport default function ChartWidgetInner({ type, data, series, categoryKey, height }: ChartWidgetInnerProps) {\n const color = (i: number, explicit?: string) => explicit ?? PALETTE[i % PALETTE.length]\n\n return (\n <ResponsiveContainer width=\"100%\" height={height}>\n {type === 'pie' ? (\n <PieChart>\n <Tooltip />\n <Pie data={data} dataKey={series[0]?.dataKey ?? 'value'} nameKey={categoryKey} innerRadius={50} outerRadius={80} paddingAngle={2}>\n {data.map((_, i) => <Cell key={i} fill={color(i, series[0]?.color)} />)}\n </Pie>\n <Legend />\n </PieChart>\n ) : type === 'bar' ? (\n <BarChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={GRID} vertical={false} />\n <XAxis dataKey={categoryKey} stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} />\n <YAxis stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} width={36} />\n <Tooltip cursor={{ fill: GRID, opacity: 0.3 }} />\n {series.length > 1 && <Legend />}\n {series.map((s, i) => (\n <Bar key={s.dataKey} dataKey={s.dataKey} name={s.label ?? s.dataKey} fill={color(i, s.color)} radius={[4, 4, 0, 0]} />\n ))}\n </BarChart>\n ) : type === 'area' ? (\n <AreaChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={GRID} vertical={false} />\n <XAxis dataKey={categoryKey} stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} />\n <YAxis stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} width={36} />\n <Tooltip />\n {series.length > 1 && <Legend />}\n {series.map((s, i) => (\n <Area key={s.dataKey} dataKey={s.dataKey} name={s.label ?? s.dataKey} stroke={color(i, s.color)} fill={color(i, s.color)} fillOpacity={0.15} />\n ))}\n </AreaChart>\n ) : (\n <LineChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={GRID} vertical={false} />\n <XAxis dataKey={categoryKey} stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} />\n <YAxis stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} width={36} />\n <Tooltip />\n {series.length > 1 && <Legend />}\n {series.map((s, i) => (\n <Line key={s.dataKey} dataKey={s.dataKey} name={s.label ?? s.dataKey} stroke={color(i, s.color)} strokeWidth={2} dot={false} />\n ))}\n </LineChart>\n )}\n </ResponsiveContainer>\n )\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/icons.ts"],"names":[],"mappings":"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","file":"chunk-22EVFMS3.js","sourcesContent":["import type { LucideIcon } from 'lucide-react'\nimport {\n Activity, AlertTriangle, Apple, ArrowDownCircle, ArrowDownRight, ArrowLeftRight, ArrowUpCircle, ArrowUpRight,\n Award, BadgeDollarSign, Ban, Banknote, BarChart3, Bell, Bike, BookOpen,\n BookOpenCheck, Box, Boxes, Briefcase, Building2, Calendar, CalendarCheck, CalendarCheck2,\n CalendarClock, CalendarDays, CalendarPlus, CalendarX, Camera, Cat, Check, CheckCircle,\n CheckSquare, ChefHat, ChevronsUpDown, Circle, CircleCheck, CircleDollarSign, Clapperboard, ClipboardList,\n Clock, Clock3, Command, Compass, Contact, CreditCard, Disc3, Dog,\n DollarSign, DoorOpen, Egg, ExternalLink, Eye, FileCheck2, FileDown,\n FileText, Filter, Flame, FolderOpen, Globe, GraduationCap, Handshake, Heart,\n FolderTree, Home, Image, Images, Inbox, Instagram, Landmark, Layers, LayoutDashboard, LayoutTemplate,\n Leaf, LeafyGreen, Link, List, ListChecks, ListMusic, ListPlus, Lock,\n Mail, Map, MapPin, Megaphone, MessageCircle, MessageSquare, Mic, MoreHorizontal,\n MousePointerClick, Music, Newspaper, Package, PackageCheck, Palette, PartyPopper, PawPrint,\n Pencil, Percent, Phone, PieChart, Plug, Plus, PlusCircle, Puzzle, Radio,\n Receipt, Repeat, RotateCcw, Ruler, Search, Send, Settings, Shield,\n ShieldCheck, ShoppingBag, ShoppingCart, Sigma, SlidersHorizontal, Sparkles, Star, Tag,\n Tags, Target, ToggleLeft, TreePalm, TrendingDown, TrendingUp, Trophy, Truck,\n User, UserCheck, UserCog, UserPlus, UserX, Users, UsersRound, Utensils,\n UtensilsCrossed, Wallet, Warehouse, Wheat, Workflow, Wrench, X, XCircle,\n Zap,\n} from 'lucide-react'\n\n// ---------------------------------------------------------------------------\n// Central lucide icon registry. The SDK's manifest-driven surfaces resolve\n// icons by string name; a namespace import (`import * as LucideIcons`) defeats\n// tree-shaking and drags all ~1,500 icons (~500 KB min) into every bundle, so\n// the SDK ships this curated set instead — the union of every icon name the\n// SDK, plugins, and app templates reference. Apps using names outside the set\n// call registerIcons({ Name: Component }) with their own named imports.\n// ---------------------------------------------------------------------------\n\nconst registry: Record<string, LucideIcon> = {\n Activity, AlertTriangle, Apple, ArrowDownCircle, ArrowDownRight, ArrowLeftRight, ArrowUpCircle, ArrowUpRight,\n Award, BadgeDollarSign, Ban, Banknote, BarChart3, Bell, Bike, BookOpen,\n BookOpenCheck, Box, Boxes, Briefcase, Building2, Calendar, CalendarCheck, CalendarCheck2,\n CalendarClock, CalendarDays, CalendarPlus, CalendarX, Camera, Cat, Check, CheckCircle,\n CheckSquare, ChefHat, ChevronsUpDown, Circle, CircleCheck, CircleDollarSign, Clapperboard, ClipboardList,\n Clock, Clock3, Command, Compass, Contact, CreditCard, Disc3, Dog,\n DollarSign, DoorOpen, Egg, ExternalLink, Eye, FileCheck2, FileDown,\n FileText, Filter, Flame, FolderOpen, Globe, GraduationCap, Handshake, Heart,\n FolderTree, Home, Image, Images, Inbox, Instagram, Landmark, Layers, LayoutDashboard, LayoutTemplate,\n Leaf, LeafyGreen, Link, List, ListChecks, ListMusic, ListPlus, Lock,\n Mail, Map, MapPin, Megaphone, MessageCircle, MessageSquare, Mic, MoreHorizontal,\n MousePointerClick, Music, Newspaper, Package, PackageCheck, Palette, PartyPopper, PawPrint,\n Pencil, Percent, Phone, PieChart, Plug, Plus, PlusCircle, Puzzle, Radio,\n Receipt, Repeat, RotateCcw, Ruler, Search, Send, Settings, Shield,\n ShieldCheck, ShoppingBag, ShoppingCart, Sigma, SlidersHorizontal, Sparkles, Star, Tag,\n Tags, Target, ToggleLeft, TreePalm, TrendingDown, TrendingUp, Trophy, Truck,\n User, UserCheck, UserCog, UserPlus, UserX, Users, UsersRound, Utensils,\n UtensilsCrossed, Wallet, Warehouse, Wheat, Workflow, Wrench, X, XCircle,\n Zap,\n}\n\n/** Add or override icons resolvable by string name (e.g. from app manifests). */\nexport function registerIcons(icons: Record<string, LucideIcon>): void {\n Object.assign(registry, icons)\n}\n\n/** Resolve a lucide icon by name; undefined when not registered. */\nexport function getLucideIcon(name: string): LucideIcon | undefined {\n return registry[name]\n}\n\n/** The registered icon map (live reference — do not mutate directly). */\nexport const ICON_MAP = registry\n"]}
|