@rfdtech/components 1.21.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +244 -74
- package/dist/adapters/context-adapter.d.ts +18 -0
- package/dist/adapters/context-adapter.d.ts.map +1 -0
- package/dist/adapters/next-adapter.d.ts +23 -0
- package/dist/adapters/next-adapter.d.ts.map +1 -0
- package/dist/adapters/react-router-adapter.d.ts +9 -0
- package/dist/adapters/react-router-adapter.d.ts.map +1 -0
- package/dist/adapters/registry.d.ts +19 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/components/app-header/AppHeader.d.ts +3 -2
- package/dist/components/app-header/AppHeader.d.ts.map +1 -1
- package/dist/components/app-header/AppHeaderNotificationItem.d.ts +3 -0
- package/dist/components/app-header/AppHeaderNotificationItem.d.ts.map +1 -0
- package/dist/components/app-header/AppHeaderProfile.d.ts +5 -0
- package/dist/components/app-header/AppHeaderProfile.d.ts.map +1 -1
- package/dist/components/app-header/index.d.ts +4 -2
- package/dist/components/app-header/index.d.ts.map +1 -1
- package/dist/components/app-layout/AppLayout.d.ts +6 -0
- package/dist/components/app-layout/AppLayout.d.ts.map +1 -1
- package/dist/components/app-layout/AppLayoutInner.d.ts +1 -0
- package/dist/components/app-layout/AppLayoutInner.d.ts.map +1 -1
- package/dist/components/app-switcher/AppIconTile.d.ts +10 -0
- package/dist/components/app-switcher/AppIconTile.d.ts.map +1 -0
- package/dist/components/app-switcher/AppSwitcher.d.ts +1 -1
- package/dist/components/app-switcher/AppSwitcher.d.ts.map +1 -1
- package/dist/components/app-switcher/AppSwitcherItem.d.ts.map +1 -1
- package/dist/components/app-switcher/IconPatterns.d.ts +8 -0
- package/dist/components/app-switcher/IconPatterns.d.ts.map +1 -0
- package/dist/components/app-switcher/SystemAppIcon.d.ts.map +1 -1
- package/dist/components/app-switcher/index.d.ts +2 -0
- package/dist/components/app-switcher/index.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/BulkImportModal.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/steps/ValidateDataStep.d.ts.map +1 -1
- package/dist/components/button/Button.d.ts +1 -1
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Spinner.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +4 -0
- package/dist/components/combobox/Combobox.d.ts.map +1 -0
- package/dist/components/combobox/Combobox.test.d.ts +2 -0
- package/dist/components/combobox/Combobox.test.d.ts.map +1 -0
- package/dist/components/combobox/index.d.ts +3 -0
- package/dist/components/combobox/index.d.ts.map +1 -0
- package/dist/components/country-selector/CountrySelector.d.ts +7 -0
- package/dist/components/country-selector/CountrySelector.d.ts.map +1 -1
- package/dist/components/country-selector/index.d.ts +1 -0
- package/dist/components/country-selector/index.d.ts.map +1 -1
- package/dist/components/date-range-selector/DateRangeSelector.d.ts +2 -2
- package/dist/components/date-range-selector/DateRangeSelector.d.ts.map +1 -1
- package/dist/components/date-range-selector/index.d.ts +1 -1
- package/dist/components/date-range-selector/index.d.ts.map +1 -1
- package/dist/components/date-selector/DateSelector.d.ts.map +1 -1
- package/dist/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/export-button/ExportButton.d.ts +3 -0
- package/dist/components/export-button/ExportButton.d.ts.map +1 -0
- package/dist/components/export-button/ExportButton.test.d.ts +2 -0
- package/dist/components/export-button/ExportButton.test.d.ts.map +1 -0
- package/dist/components/export-button/index.d.ts +3 -0
- package/dist/components/export-button/index.d.ts.map +1 -0
- package/dist/components/launchpad/Launchpad.d.ts +4 -0
- package/dist/components/launchpad/Launchpad.d.ts.map +1 -0
- package/dist/components/launchpad/Launchpad.test.d.ts +2 -0
- package/dist/components/launchpad/Launchpad.test.d.ts.map +1 -0
- package/dist/components/launchpad/LaunchpadGridIcon.d.ts +2 -0
- package/dist/components/launchpad/LaunchpadGridIcon.d.ts.map +1 -0
- package/dist/components/launchpad/LaunchpadIconTile.d.ts +10 -0
- package/dist/components/launchpad/LaunchpadIconTile.d.ts.map +1 -0
- package/dist/components/launchpad/LaunchpadItem.d.ts +8 -0
- package/dist/components/launchpad/LaunchpadItem.d.ts.map +1 -0
- package/dist/components/launchpad/LaunchpadOverlays.d.ts +3 -0
- package/dist/components/launchpad/LaunchpadOverlays.d.ts.map +1 -0
- package/dist/components/launchpad/SystemLaunchpadIcon.d.ts +5 -0
- package/dist/components/launchpad/SystemLaunchpadIcon.d.ts.map +1 -0
- package/dist/components/launchpad/hooks/useLaunchpad.d.ts +3 -0
- package/dist/components/launchpad/hooks/useLaunchpad.d.ts.map +1 -0
- package/dist/components/launchpad/index.d.ts +10 -0
- package/dist/components/launchpad/index.d.ts.map +1 -0
- package/dist/components/metric-card/MetricCard.d.ts.map +1 -1
- package/dist/components/metric-card/index.d.ts +1 -1
- package/dist/components/metric-card/index.d.ts.map +1 -1
- package/dist/components/network-operator/NetworkOperator.d.ts +4 -0
- package/dist/components/network-operator/NetworkOperator.d.ts.map +1 -1
- package/dist/components/network-operator/index.d.ts +1 -0
- package/dist/components/network-operator/index.d.ts.map +1 -1
- package/dist/components/notice/Notice.d.ts +4 -0
- package/dist/components/notice/Notice.d.ts.map +1 -0
- package/dist/components/notice/Notice.test.d.ts +2 -0
- package/dist/components/notice/Notice.test.d.ts.map +1 -0
- package/dist/components/notice/index.d.ts +3 -0
- package/dist/components/notice/index.d.ts.map +1 -0
- package/dist/components/phone-number-input/PhoneNumberInput.d.ts.map +1 -1
- package/dist/components/popup/Popup.d.ts +15 -0
- package/dist/components/popup/Popup.d.ts.map +1 -0
- package/dist/components/popup/Popup.test.d.ts +2 -0
- package/dist/components/popup/Popup.test.d.ts.map +1 -0
- package/dist/components/popup/index.d.ts +3 -0
- package/dist/components/popup/index.d.ts.map +1 -0
- package/dist/components/profile-popover/ProfilePopover.d.ts +4 -0
- package/dist/components/profile-popover/ProfilePopover.d.ts.map +1 -0
- package/dist/components/profile-popover/ProfilePopover.test.d.ts +2 -0
- package/dist/components/profile-popover/ProfilePopover.test.d.ts.map +1 -0
- package/dist/components/profile-popover/index.d.ts +3 -0
- package/dist/components/profile-popover/index.d.ts.map +1 -0
- package/dist/components/role-select/RoleSelect.d.ts +4 -0
- package/dist/components/role-select/RoleSelect.d.ts.map +1 -0
- package/dist/components/role-select/RoleSelect.test.d.ts +2 -0
- package/dist/components/role-select/RoleSelect.test.d.ts.map +1 -0
- package/dist/components/role-select/index.d.ts +3 -0
- package/dist/components/role-select/index.d.ts.map +1 -0
- package/dist/components/section-header/SectionHeader.d.ts +7 -0
- package/dist/components/section-header/SectionHeader.d.ts.map +1 -0
- package/dist/components/section-header/SectionHeader.test.d.ts +2 -0
- package/dist/components/section-header/SectionHeader.test.d.ts.map +1 -0
- package/dist/components/section-header/index.d.ts +3 -0
- package/dist/components/section-header/index.d.ts.map +1 -0
- package/dist/components/sidebar/Sidebar.d.ts +3 -3
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/sidebar/SidebarContext.d.ts +6 -0
- package/dist/components/sidebar/SidebarContext.d.ts.map +1 -1
- package/dist/components/sidebar/index.d.ts +1 -1
- package/dist/components/sidebar/index.d.ts.map +1 -1
- package/dist/components/stepper/Stepper.d.ts +12 -0
- package/dist/components/stepper/Stepper.d.ts.map +1 -0
- package/dist/components/stepper/Stepper.test.d.ts +2 -0
- package/dist/components/stepper/Stepper.test.d.ts.map +1 -0
- package/dist/components/stepper/StepperContext.d.ts +4 -0
- package/dist/components/stepper/StepperContext.d.ts.map +1 -0
- package/dist/components/stepper/index.d.ts +3 -0
- package/dist/components/stepper/index.d.ts.map +1 -0
- package/dist/components/switch/Switch.d.ts +4 -0
- package/dist/components/switch/Switch.d.ts.map +1 -0
- package/dist/components/switch/Switch.test.d.ts +2 -0
- package/dist/components/switch/Switch.test.d.ts.map +1 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/table/Table.d.ts +3 -6
- package/dist/components/table/Table.d.ts.map +1 -1
- package/dist/components/table/TableHeader.d.ts +3 -10
- package/dist/components/table/TableHeader.d.ts.map +1 -1
- package/dist/components/table/TablePagination.d.ts.map +1 -1
- package/dist/components/table/index.d.ts +1 -1
- package/dist/components/table/index.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/hooks/useTabsLineIndicator.d.ts.map +1 -1
- package/dist/components/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/components/theme/cletTheme.d.ts +11 -0
- package/dist/components/theme/cletTheme.d.ts.map +1 -0
- package/dist/components/theme/cletTheme.test-d.d.ts +2 -0
- package/dist/components/theme/cletTheme.test-d.d.ts.map +1 -0
- package/dist/components/theme/cletTheme.test.d.ts +2 -0
- package/dist/components/theme/cletTheme.test.d.ts.map +1 -0
- package/dist/components/theme/index.d.ts +3 -1
- package/dist/components/theme/index.d.ts.map +1 -1
- package/dist/components/timeline/Timeline.d.ts +8 -0
- package/dist/components/timeline/Timeline.d.ts.map +1 -0
- package/dist/components/timeline/Timeline.test.d.ts +2 -0
- package/dist/components/timeline/Timeline.test.d.ts.map +1 -0
- package/dist/components/timeline/index.d.ts +3 -0
- package/dist/components/timeline/index.d.ts.map +1 -0
- package/dist/components/upload-field/UploadField.d.ts +5 -0
- package/dist/components/upload-field/UploadField.d.ts.map +1 -1
- package/dist/components/upload-field/index.d.ts +2 -2
- package/dist/components/upload-field/index.d.ts.map +1 -1
- package/dist/contexts/router-adapter-context.d.ts +27 -0
- package/dist/contexts/router-adapter-context.d.ts.map +1 -0
- package/dist/generated/components.theme.d.ts +313 -0
- package/dist/generated/components.theme.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useHasMounted.d.ts +10 -0
- package/dist/hooks/useHasMounted.d.ts.map +1 -0
- package/dist/hooks/useTableFilter.d.ts.map +1 -1
- package/dist/hooks/useTablePagination.d.ts.map +1 -1
- package/dist/hooks/useTableState.d.ts +1 -1
- package/dist/hooks/useTableState.d.ts.map +1 -1
- package/dist/index.cjs +85 -55
- package/dist/index.css +1 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19423 -31378
- package/dist/mcp/cli.js +75 -0
- package/dist/mcp/docs.js +122 -0
- package/dist/mcp/generated/components.json +3593 -0
- package/dist/mcp/generated/examples.json +1233 -0
- package/dist/mcp/generated/index.meta.json +252 -0
- package/dist/mcp/generated/rules.json +629 -0
- package/dist/mcp/generated/search.json +1618 -0
- package/dist/mcp/generated/tokens.json +1022 -0
- package/dist/mcp/index.js +337 -0
- package/dist/mcp/indexer.js +370 -0
- package/dist/mcp/installers/claude.js +37 -0
- package/dist/mcp/installers/codex.js +24 -0
- package/dist/mcp/installers/cursor.js +33 -0
- package/dist/mcp/installers/doctor.js +36 -0
- package/dist/mcp/installers/opencode.js +36 -0
- package/dist/mcp/installers/setup.js +34 -0
- package/dist/mcp/installers/util.js +41 -0
- package/dist/mcp/paths.js +63 -0
- package/dist/mcp/skill/SKILL.md +36 -0
- package/dist/mcp/skill/image-to-components.md +49 -0
- package/dist/next-index.d.ts +44 -0
- package/dist/next-index.d.ts.map +1 -0
- package/dist/next.cjs +282 -0
- package/dist/next.css +1 -0
- package/dist/next.d.ts +29 -0
- package/dist/next.js +37774 -0
- package/dist/types/app-header.d.ts +70 -10
- package/dist/types/app-header.d.ts.map +1 -1
- package/dist/types/app-switcher.d.ts +10 -1
- package/dist/types/app-switcher.d.ts.map +1 -1
- package/dist/types/avatar.d.ts +9 -0
- package/dist/types/avatar.d.ts.map +1 -1
- package/dist/types/combobox.d.ts +43 -0
- package/dist/types/combobox.d.ts.map +1 -0
- package/dist/types/country-selector.d.ts +4 -0
- package/dist/types/country-selector.d.ts.map +1 -1
- package/dist/types/date-range-selector.d.ts +11 -0
- package/dist/types/date-range-selector.d.ts.map +1 -1
- package/dist/types/dropdown.d.ts +8 -0
- package/dist/types/dropdown.d.ts.map +1 -1
- package/dist/types/export-button.d.ts +24 -0
- package/dist/types/export-button.d.ts.map +1 -0
- package/dist/types/launchpad.d.ts +79 -0
- package/dist/types/launchpad.d.ts.map +1 -0
- package/dist/types/metric-card.d.ts +7 -0
- package/dist/types/metric-card.d.ts.map +1 -1
- package/dist/types/network-operator.d.ts +8 -0
- package/dist/types/network-operator.d.ts.map +1 -1
- package/dist/types/notice.d.ts +24 -0
- package/dist/types/notice.d.ts.map +1 -0
- package/dist/types/popup.d.ts +43 -0
- package/dist/types/popup.d.ts.map +1 -0
- package/dist/types/profile-popover.d.ts +97 -0
- package/dist/types/profile-popover.d.ts.map +1 -0
- package/dist/types/role-select.d.ts +28 -0
- package/dist/types/role-select.d.ts.map +1 -0
- package/dist/types/router-adapter.d.ts +46 -0
- package/dist/types/router-adapter.d.ts.map +1 -0
- package/dist/types/section-header.d.ts +26 -0
- package/dist/types/section-header.d.ts.map +1 -0
- package/dist/types/sidebar.d.ts +16 -0
- package/dist/types/sidebar.d.ts.map +1 -1
- package/dist/types/stepper.d.ts +45 -0
- package/dist/types/stepper.d.ts.map +1 -0
- package/dist/types/switch.d.ts +24 -0
- package/dist/types/switch.d.ts.map +1 -0
- package/dist/types/table.d.ts +90 -1
- package/dist/types/table.d.ts.map +1 -1
- package/dist/types/tabs.d.ts +1 -1
- package/dist/types/tabs.d.ts.map +1 -1
- package/dist/types/theme.d.ts +28 -8
- package/dist/types/theme.d.ts.map +1 -1
- package/dist/types/timeline.d.ts +52 -0
- package/dist/types/timeline.d.ts.map +1 -0
- package/dist/types/upload-field.d.ts +23 -0
- package/dist/types/upload-field.d.ts.map +1 -1
- package/dist/utils/export.d.ts +15 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/stringToColor.d.ts +25 -0
- package/dist/utils/stringToColor.d.ts.map +1 -1
- package/package.json +43 -7
- package/scripts/postinstall.mjs +40 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { HTMLAttributes, LiHTMLAttributes, OlHTMLAttributes, ReactNode } from "react";
|
|
2
|
+
export type TimelineItemMode = "primary" | "success" | "warning" | "error" | "muted";
|
|
3
|
+
export interface TimelineClassNames {
|
|
4
|
+
root?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface TimelineProps extends Omit<OlHTMLAttributes<HTMLOListElement>, "className"> {
|
|
7
|
+
classNames?: TimelineClassNames;
|
|
8
|
+
className?: string;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export interface TimelineItemClassNames {
|
|
12
|
+
root?: string;
|
|
13
|
+
rail?: string;
|
|
14
|
+
dot?: string;
|
|
15
|
+
connector?: string;
|
|
16
|
+
content?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface TimelineItemProps extends Omit<LiHTMLAttributes<HTMLLIElement>, "className"> {
|
|
19
|
+
mode?: TimelineItemMode;
|
|
20
|
+
color?: string;
|
|
21
|
+
icon?: ReactNode;
|
|
22
|
+
classNames?: TimelineItemClassNames;
|
|
23
|
+
className?: string;
|
|
24
|
+
children?: ReactNode;
|
|
25
|
+
isLast?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface TimelineTitleClassNames {
|
|
28
|
+
title?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface TimelineTitleProps extends Omit<HTMLAttributes<HTMLHeadingElement>, "className"> {
|
|
31
|
+
as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
|
|
32
|
+
classNames?: TimelineTitleClassNames;
|
|
33
|
+
className?: string;
|
|
34
|
+
children: ReactNode;
|
|
35
|
+
}
|
|
36
|
+
export interface TimelineDataClassNames {
|
|
37
|
+
data?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface TimelineDataProps extends Omit<HTMLAttributes<HTMLParagraphElement>, "className"> {
|
|
40
|
+
classNames?: TimelineDataClassNames;
|
|
41
|
+
className?: string;
|
|
42
|
+
children: ReactNode;
|
|
43
|
+
}
|
|
44
|
+
export interface TimelineFooterClassNames {
|
|
45
|
+
footer?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface TimelineFooterProps extends Omit<HTMLAttributes<HTMLDivElement>, "className"> {
|
|
48
|
+
classNames?: TimelineFooterClassNames;
|
|
49
|
+
className?: string;
|
|
50
|
+
children: ReactNode;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/types/timeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACV,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAErF,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CACzC,gBAAgB,CAAC,gBAAgB,CAAC,EAClC,WAAW,CACZ;IACC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,gBAAgB,CAAC,aAAa,CAAC,EAC/B,WAAW,CACZ;IACC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAC9C,cAAc,CAAC,kBAAkB,CAAC,EAClC,WAAW,CACZ;IACC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAC7C,cAAc,CAAC,oBAAoB,CAAC,EACpC,WAAW,CACZ;IACC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,cAAc,CAAC,cAAc,CAAC,EAC9B,WAAW,CACZ;IACC,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import type { HTMLAttributes } from "react";
|
|
2
|
+
export type UploadFieldFileStatusKind = "uploading" | "completed" | "failed";
|
|
3
|
+
export interface UploadFieldFileStatus {
|
|
4
|
+
status: UploadFieldFileStatusKind;
|
|
5
|
+
/** 0–100, read when `status` is `"uploading"`. */
|
|
6
|
+
progress?: number;
|
|
7
|
+
/** Shown when `status` is `"failed"`; falls back to "Failed" when omitted. */
|
|
8
|
+
error?: string;
|
|
9
|
+
}
|
|
2
10
|
export interface UploadFieldClassNames {
|
|
3
11
|
root?: string;
|
|
4
12
|
icon?: string;
|
|
@@ -8,6 +16,11 @@ export interface UploadFieldClassNames {
|
|
|
8
16
|
fileCard?: string;
|
|
9
17
|
fileName?: string;
|
|
10
18
|
fileSize?: string;
|
|
19
|
+
fileProgress?: string;
|
|
20
|
+
fileStatusText?: string;
|
|
21
|
+
retryButton?: string;
|
|
22
|
+
cancelButton?: string;
|
|
23
|
+
completedIcon?: string;
|
|
11
24
|
removeButton?: string;
|
|
12
25
|
actionButton?: string;
|
|
13
26
|
}
|
|
@@ -21,5 +34,15 @@ export interface UploadFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, "
|
|
|
21
34
|
value?: File | File[] | null;
|
|
22
35
|
onChange?: (file: File | File[] | null) => void;
|
|
23
36
|
name?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Optional per-file status overlay — index-aligned with `value` (a single
|
|
39
|
+
* `File` value is treated as index 0). Omit entirely for the default plain
|
|
40
|
+
* attach/remove look with no uploading/completed/failed affordances.
|
|
41
|
+
*/
|
|
42
|
+
fileStatuses?: UploadFieldFileStatus[];
|
|
43
|
+
/** Called when the cancel (×) control is clicked on a file with status `"uploading"`. */
|
|
44
|
+
onCancel?: (file: File, index: number) => void;
|
|
45
|
+
/** Called when "Try Again" is clicked on a file with status `"failed"`. */
|
|
46
|
+
onRetry?: (file: File, index: number) => void;
|
|
24
47
|
}
|
|
25
48
|
//# sourceMappingURL=upload-field.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-field.d.ts","sourceRoot":"","sources":["../../src/types/upload-field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,CAAC;IACnH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"upload-field.d.ts","sourceRoot":"","sources":["../../src/types/upload-field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,yBAAyB,CAAC;IAClC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,CAAC;IACnH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACvC,yFAAyF;IACzF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,2EAA2E;IAC3E,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ExportColumn<T> {
|
|
2
|
+
header: string;
|
|
3
|
+
accessor: (row: T) => string | number | null | undefined;
|
|
4
|
+
}
|
|
5
|
+
export interface ExportMeta {
|
|
6
|
+
title: string;
|
|
7
|
+
recordCount?: number;
|
|
8
|
+
filters?: string;
|
|
9
|
+
generatedAt?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function formatFilenameTimestamp(date: Date): string;
|
|
12
|
+
export declare function exportToCsv<T>(data: T[], columns: ExportColumn<T>[], filename: string): void;
|
|
13
|
+
export declare function exportToXlsx<T>(data: T[], columns: ExportColumn<T>[], filename: string): void;
|
|
14
|
+
export declare function exportToPdf<T>(data: T[], columns: ExportColumn<T>[], filename: string, meta: ExportMeta): void;
|
|
15
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/utils/export.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC1D;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAaD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAG1D;AAoBD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC1B,QAAQ,EAAE,MAAM,QAgBjB;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC1B,QAAQ,EAAE,MAAM,QAsBjB;AAuFD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,QA0BjB"}
|
|
@@ -2,8 +2,33 @@
|
|
|
2
2
|
* Deterministic hue from a string (0-360). Same string always produces the same hue.
|
|
3
3
|
*/
|
|
4
4
|
export declare function stringToHue(str: string): number;
|
|
5
|
+
/**
|
|
6
|
+
* Deterministic index into a fixed-size set of `count` items, derived from a
|
|
7
|
+
* string. Same string always produces the same index. Hashed separately from
|
|
8
|
+
* `stringToHue` (a distinguishing suffix is mixed in) so pattern selection
|
|
9
|
+
* doesn't visually correlate 1:1 with hue selection for the same string.
|
|
10
|
+
*/
|
|
11
|
+
export declare function patternIndexFromString(str: string, count: number): number;
|
|
5
12
|
/**
|
|
6
13
|
* Subtle pastel gradient from a string — pastel in light mode, richer in dark.
|
|
14
|
+
* Intended for a dark-text-on-light-background pairing (e.g. Avatar initials).
|
|
7
15
|
*/
|
|
8
16
|
export declare function gradientFromString(str: string, theme?: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Deterministic saturated gradient from a string, dark enough in both themes
|
|
19
|
+
* to carry white foreground content (e.g. an icon glyph or initials).
|
|
20
|
+
*/
|
|
21
|
+
export declare function vividGradientFromString(str: string, theme?: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Deterministic index into a fixed-size set of `count` gradients, derived
|
|
24
|
+
* from a string. Same string always produces the same index.
|
|
25
|
+
*/
|
|
26
|
+
export declare function gradientIndexFromString(str: string, count: number): number;
|
|
27
|
+
/**
|
|
28
|
+
* Deterministic index into a fixed-size set of `count` decorative overlays,
|
|
29
|
+
* derived from a string. Hashed separately from `gradientIndexFromString`
|
|
30
|
+
* (a distinguishing suffix is mixed in) so the overlay choice varies
|
|
31
|
+
* independently of the gradient choice for the same string.
|
|
32
|
+
*/
|
|
33
|
+
export declare function overlayIndexFromString(str: string, count: number): number;
|
|
9
34
|
//# sourceMappingURL=stringToColor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringToColor.d.ts","sourceRoot":"","sources":["../../src/utils/stringToColor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stringToColor.d.ts","sourceRoot":"","sources":["../../src/utils/stringToColor.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAUtE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rfdtech/components",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Shared React component library for
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Shared React component library for Clet projects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -30,22 +30,42 @@
|
|
|
30
30
|
"import": "./dist/index.css",
|
|
31
31
|
"require": "./dist/index.css",
|
|
32
32
|
"default": "./dist/index.css"
|
|
33
|
+
},
|
|
34
|
+
"./next": {
|
|
35
|
+
"import": {
|
|
36
|
+
"types": "./dist/next-index.d.ts",
|
|
37
|
+
"default": "./dist/next.js"
|
|
38
|
+
},
|
|
39
|
+
"require": {
|
|
40
|
+
"types": "./dist/next-index.d.ts",
|
|
41
|
+
"default": "./dist/next.cjs"
|
|
42
|
+
}
|
|
33
43
|
}
|
|
34
44
|
},
|
|
35
45
|
"files": [
|
|
36
|
-
"dist"
|
|
46
|
+
"dist",
|
|
47
|
+
"scripts/postinstall.mjs"
|
|
37
48
|
],
|
|
49
|
+
"bin": {
|
|
50
|
+
"components-mcp": "dist/mcp/index.js",
|
|
51
|
+
"rfdui": "dist/mcp/cli.js"
|
|
52
|
+
},
|
|
38
53
|
"scripts": {
|
|
39
|
-
"
|
|
54
|
+
"prepare": "npm run generate:tokens",
|
|
55
|
+
"postinstall": "node scripts/postinstall.mjs",
|
|
56
|
+
"generate:tokens": "node scripts/generate-theme-tokens.mjs",
|
|
57
|
+
"build": "npm run generate:tokens && BUILD_TARGET=default npx vite build && BUILD_TARGET=next npx vite build && mv dist/next-index.css dist/next.css && node -e \"var fs=require('fs');['dist/next.js','dist/next.cjs'].forEach(f=>fs.writeFileSync(f,fs.readFileSync(f,'utf8').replace('./next-index.css','./next.css')))\" && tsc -p tsconfig.build.json && cp src/next.d.ts dist/next.d.ts && (cd mcp && npx tsc -p tsconfig.json) && node mcp/scripts/prepare-dist.mjs",
|
|
58
|
+
"build:mcp": "(cd mcp && npx tsc -p tsconfig.json) && node mcp/scripts/prepare-dist.mjs",
|
|
40
59
|
"dev": "vite-react-ssg dev -c vite.demo.config.ts",
|
|
41
60
|
"demo": "vite-react-ssg build -c vite.demo.config.ts",
|
|
42
61
|
"test": "vitest run",
|
|
43
62
|
"test:watch": "vitest",
|
|
63
|
+
"test:types": "vitest --typecheck run",
|
|
44
64
|
"lint": "eslint .",
|
|
45
65
|
"lint:css": "stylelint 'src/**/*.css' --max-warnings 0",
|
|
46
66
|
"lint:css:fix": "stylelint 'src/**/*.css' --fix",
|
|
47
67
|
"typecheck": "tsc --noEmit",
|
|
48
|
-
"prepublishOnly": "npm run lint:css && npm run lint && npm run typecheck && npm run test && npm run build"
|
|
68
|
+
"prepublishOnly": "npm run generate:tokens && npm run lint:css && npm run lint && npm run typecheck && npm run test && npm run test:types && npm run build"
|
|
49
69
|
},
|
|
50
70
|
"peerDependencies": {
|
|
51
71
|
"@hookform/resolvers": ">=3.0.0",
|
|
@@ -55,12 +75,15 @@
|
|
|
55
75
|
"@radix-ui/react-popover": "^1.1.0",
|
|
56
76
|
"@radix-ui/react-radio-group": "^1.4.0",
|
|
57
77
|
"@radix-ui/react-select": "^2.3.0",
|
|
78
|
+
"@radix-ui/react-switch": "^1.2.0",
|
|
58
79
|
"@radix-ui/react-tabs": "^1.1.0",
|
|
59
80
|
"lucide-react": ">=1.0.0",
|
|
81
|
+
"next": ">=14.0.0",
|
|
60
82
|
"react": ">=18.0.0",
|
|
61
83
|
"react-dom": ">=18.0.0",
|
|
62
84
|
"react-hook-form": ">=7.0.0",
|
|
63
85
|
"react-router-dom": ">=7.0.0",
|
|
86
|
+
"xlsx": ">=0.18.5",
|
|
64
87
|
"zod": ">=3.0.0"
|
|
65
88
|
},
|
|
66
89
|
"peerDependenciesMeta": {
|
|
@@ -70,8 +93,14 @@
|
|
|
70
93
|
"zod": {
|
|
71
94
|
"optional": true
|
|
72
95
|
},
|
|
96
|
+
"next": {
|
|
97
|
+
"optional": true
|
|
98
|
+
},
|
|
73
99
|
"@hookform/resolvers": {
|
|
74
100
|
"optional": true
|
|
101
|
+
},
|
|
102
|
+
"xlsx": {
|
|
103
|
+
"optional": true
|
|
75
104
|
}
|
|
76
105
|
},
|
|
77
106
|
"devDependencies": {
|
|
@@ -87,6 +116,7 @@
|
|
|
87
116
|
"@radix-ui/react-popover": "^1.1.16",
|
|
88
117
|
"@radix-ui/react-radio-group": "^1.4.0",
|
|
89
118
|
"@radix-ui/react-select": "^2.3.0",
|
|
119
|
+
"@radix-ui/react-switch": "^1.3.3",
|
|
90
120
|
"@radix-ui/react-tabs": "^1.1.14",
|
|
91
121
|
"@testing-library/jest-dom": "^6.9.1",
|
|
92
122
|
"@testing-library/react": "^16.3.2",
|
|
@@ -95,6 +125,7 @@
|
|
|
95
125
|
"@types/react": "^19.1.8",
|
|
96
126
|
"@types/react-dom": "^19.1.6",
|
|
97
127
|
"@vitejs/plugin-react": "^5.0.0",
|
|
128
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
98
129
|
"eslint": "^10.5.0",
|
|
99
130
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
100
131
|
"jsdom": "^29.1.1",
|
|
@@ -115,13 +146,14 @@
|
|
|
115
146
|
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
116
147
|
"vite-react-ssg": "^0.9.1-beta.1",
|
|
117
148
|
"vitest": "^4.1.8",
|
|
149
|
+
"xlsx": "^0.18.5",
|
|
118
150
|
"zod": "^4.4.3"
|
|
119
151
|
},
|
|
120
152
|
"keywords": [
|
|
121
153
|
"react",
|
|
122
154
|
"components",
|
|
123
155
|
"gsl",
|
|
124
|
-
"
|
|
156
|
+
"clet",
|
|
125
157
|
"app-switcher",
|
|
126
158
|
"app-launcher",
|
|
127
159
|
"google-apps",
|
|
@@ -135,11 +167,15 @@
|
|
|
135
167
|
"@dnd-kit/core": "^6.3.1",
|
|
136
168
|
"@dnd-kit/sortable": "^10.0.0",
|
|
137
169
|
"@dnd-kit/utilities": "^3.2.2",
|
|
170
|
+
"@fontsource/lato": "^5.2.7",
|
|
171
|
+
"@fontsource/roboto-serif": "^5.2.9",
|
|
172
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
138
173
|
"@tanstack/react-virtual": "^3.14.3",
|
|
139
174
|
"cmdk": "^1.1.1",
|
|
175
|
+
"country-flag-icons": "^1.6.20",
|
|
140
176
|
"libphonenumber-js": "^1.13.7",
|
|
141
177
|
"lottie-react": "^2.4.1",
|
|
142
178
|
"sonner": "^2.0.7",
|
|
143
|
-
"
|
|
179
|
+
"zod": ">=3.0.0"
|
|
144
180
|
}
|
|
145
181
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Auto-wires AI coding tools (Claude Code, Cursor, Codex, OpenCode) with the
|
|
3
|
+
// @rfdtech/components MCP server + skill doc, so `npm install` alone is
|
|
4
|
+
// enough to get MCP-aware, real-component-first UI generation — no manual
|
|
5
|
+
// `npx rfdui setup` step required. Set RFDUI_SKIP_SETUP to skip (e.g. in CI).
|
|
6
|
+
import { existsSync } from "node:fs";
|
|
7
|
+
import { spawnSync } from "node:child_process";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
|
|
11
|
+
const skip = process.env.RFDUI_SKIP_SETUP;
|
|
12
|
+
if (skip && skip !== "0" && skip.toLowerCase() !== "false") {
|
|
13
|
+
process.exit(0);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
17
|
+
const cliPath = path.join(__dirname, "..", "dist", "mcp", "cli.js");
|
|
18
|
+
|
|
19
|
+
// Unbuilt checkout (e.g. a contributor's `npm install` before `npm run
|
|
20
|
+
// build` has produced dist/) — nothing to run yet, and that's fine.
|
|
21
|
+
if (!existsSync(cliPath)) {
|
|
22
|
+
process.exit(0);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// npm sets INIT_CWD to the directory the top-level `npm install` was run
|
|
26
|
+
// from. process.cwd() during a dependency's postinstall is the package's
|
|
27
|
+
// own folder inside node_modules — the wrong place to write .claude/,
|
|
28
|
+
// .cursor/, etc. Always target the consumer's actual project root.
|
|
29
|
+
const targetDir = process.env.INIT_CWD || process.cwd();
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
spawnSync(process.execPath, [cliPath, "setup"], {
|
|
33
|
+
cwd: targetDir,
|
|
34
|
+
stdio: "inherit",
|
|
35
|
+
});
|
|
36
|
+
} catch {
|
|
37
|
+
// Never fail `npm install` over optional AI-tool setup.
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
process.exit(0);
|