@lssm-tech/lib.ui-kit-core 3.8.9

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 (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/dist/browser/index.js +1 -0
  4. package/dist/browser/interfaces/collections.js +0 -0
  5. package/dist/browser/interfaces/common.js +0 -0
  6. package/dist/browser/interfaces/feedback.js +0 -0
  7. package/dist/browser/interfaces/forms.js +0 -0
  8. package/dist/browser/interfaces/index.js +1 -0
  9. package/dist/browser/interfaces/layout.js +0 -0
  10. package/dist/browser/interfaces/marketing.js +0 -0
  11. package/dist/browser/interfaces/registry.js +1 -0
  12. package/dist/browser/interfaces/visualization.js +0 -0
  13. package/dist/browser/ui-kit-core.feature.js +1 -0
  14. package/dist/browser/utils.js +1 -0
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.js +2 -0
  17. package/dist/interfaces/collections.d.ts +102 -0
  18. package/dist/interfaces/collections.js +1 -0
  19. package/dist/interfaces/common.d.ts +30 -0
  20. package/dist/interfaces/common.js +1 -0
  21. package/dist/interfaces/feedback.d.ts +29 -0
  22. package/dist/interfaces/feedback.js +1 -0
  23. package/dist/interfaces/forms.d.ts +66 -0
  24. package/dist/interfaces/forms.js +1 -0
  25. package/dist/interfaces/index.d.ts +8 -0
  26. package/dist/interfaces/index.js +2 -0
  27. package/dist/interfaces/layout.d.ts +17 -0
  28. package/dist/interfaces/layout.js +1 -0
  29. package/dist/interfaces/marketing.d.ts +26 -0
  30. package/dist/interfaces/marketing.js +1 -0
  31. package/dist/interfaces/registry.d.ts +2 -0
  32. package/dist/interfaces/registry.js +2 -0
  33. package/dist/interfaces/visualization.d.ts +7 -0
  34. package/dist/interfaces/visualization.js +1 -0
  35. package/dist/ui-kit-core.feature.d.ts +1 -0
  36. package/dist/ui-kit-core.feature.js +2 -0
  37. package/dist/utils.d.ts +2 -0
  38. package/dist/utils.js +2 -0
  39. package/package.json +208 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Chaman Ventures, SASU
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # @contractspec/lib.ui-kit-core
2
+
3
+ `@contractspec/lib.ui-kit-core` is the shared foundation for the UI packages. It provides the low-level `cn()` utility plus the canonical shared interface layer used by `ui-kit` and `ui-kit-web`.
4
+
5
+ Website: https://contractspec.io
6
+
7
+ ## Installation
8
+
9
+ `bun add @contractspec/lib.ui-kit-core`
10
+
11
+ or
12
+
13
+ `npm install @contractspec/lib.ui-kit-core`
14
+
15
+ ## What belongs here
16
+
17
+ This package is intentionally small:
18
+
19
+ - Very low-level, zero-surprise UI helpers shared across `ui-kit`, `ui-kit-web`, and `ui-link`.
20
+ - Small shared utilities that are useful across multiple UI packages and do not belong in a component package.
21
+ - Platform-neutral shared UI contracts under `./interfaces`.
22
+
23
+ ## API map
24
+
25
+ - root export: `.`
26
+ - shared interfaces subpath: `./interfaces`
27
+ - utility subpath: `./utils`
28
+ - core function: `cn(...inputs)`
29
+
30
+ ## Operational semantics and gotchas
31
+
32
+ - This package is intentionally tiny.
33
+ - `./interfaces` is the shared compatibility layer for semantically matching `ui-kit` and `ui-kit-web` exports.
34
+ - `cn()` composes `clsx` with `tailwind-merge`.
35
+ - Changes here ripple into all UI packages even though the file count is small.
36
+ - This package should stay boring and predictable.
37
+
38
+ ## When not to use this package
39
+
40
+ - Do not use it for components.
41
+ - Do not use it for design tokens.
42
+ - Do not use it for router or link abstractions.
43
+
44
+ ## Related packages
45
+
46
+ - `@contractspec/lib.ui-kit`
47
+ - `@contractspec/lib.ui-kit-web`
48
+ - `@contractspec/lib.ui-link`
49
+
50
+ ## Local commands
51
+
52
+ - `bun run lint:check`
53
+ - `bun run typecheck`
@@ -0,0 +1 @@
1
+ var r=["accordion","alert","alert-dialog","aspect-ratio","atoms/FilterSelect","atoms/FilterSelect/FilterSelect","atoms/FilterSelect/types","atoms/LoadingSpinner","atoms/LoadingSpinner/LoadingSpinner","atoms/Pagination","atoms/Pagination/Pagination","atoms/Pagination/types","atoms/SearchInput","atoms/SearchInput/SearchInput","atoms/SearchInput/types","avatar","badge","breadcrumb","button","card","carousel","checkbox","collapsible","combobox","command","context-menu","data-table","date-picker","date-range-picker","datetime-picker","dialog","dropdown-menu","empty","empty-state","field","form","hover-card","input","input-group","input-otp","input-password","label","list","loading-button","marketing","marketing/FeatureGrid","marketing/Hero","marketing/PricingTable","menubar","molecules/Autocomplete","molecules/SearchAndFilter","molecules/SearchAndFilter/SearchAndFilter","molecules/SearchAndFilter/types","molecules/SkeletonList","native-select","navigation-menu","organisms/ErrorBoundary","organisms/ErrorBoundary/ErrorBoundary","organisms/ListPage","organisms/ListPage/ListPage","organisms/ListPage/types","page-header","popover","progress","radio-group","select","separator","sheet","sidebar","skeleton","slider","stack","stepper","switch","table","tabs","text","textarea","time-picker","toast","toggle","toggle-group","tooltip","typography","useListState","usecases","usecases/UseCaseCard","usecases/UserStoryCard","visualization","visualization/Visualization"],a=["contracts.typecheck","link","utils"];import{defineFeature as t}from"@contractspec/lib.contracts-spec/features";var l=t({meta:{key:"libs.ui-kit-core",version:"1.0.0",title:"Ui Kit Core",description:"Core UI primitives and utilities",domain:"ui-kit-core",owners:["@contractspec-core"],tags:["package","libs","ui-kit-core"],stability:"experimental"}});import{clsx as o}from"clsx";import{twMerge as s}from"tailwind-merge";function m(...e){return s(o(e))}export{r as sharedUiContractKeys,a as sharedUiContractExclusions,m as cn,l as UiKitCoreFeature};
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ var e=["accordion","alert","alert-dialog","aspect-ratio","atoms/FilterSelect","atoms/FilterSelect/FilterSelect","atoms/FilterSelect/types","atoms/LoadingSpinner","atoms/LoadingSpinner/LoadingSpinner","atoms/Pagination","atoms/Pagination/Pagination","atoms/Pagination/types","atoms/SearchInput","atoms/SearchInput/SearchInput","atoms/SearchInput/types","avatar","badge","breadcrumb","button","card","carousel","checkbox","collapsible","combobox","command","context-menu","data-table","date-picker","date-range-picker","datetime-picker","dialog","dropdown-menu","empty","empty-state","field","form","hover-card","input","input-group","input-otp","input-password","label","list","loading-button","marketing","marketing/FeatureGrid","marketing/Hero","marketing/PricingTable","menubar","molecules/Autocomplete","molecules/SearchAndFilter","molecules/SearchAndFilter/SearchAndFilter","molecules/SearchAndFilter/types","molecules/SkeletonList","native-select","navigation-menu","organisms/ErrorBoundary","organisms/ErrorBoundary/ErrorBoundary","organisms/ListPage","organisms/ListPage/ListPage","organisms/ListPage/types","page-header","popover","progress","radio-group","select","separator","sheet","sidebar","skeleton","slider","stack","stepper","switch","table","tabs","text","textarea","time-picker","toast","toggle","toggle-group","tooltip","typography","useListState","usecases","usecases/UseCaseCard","usecases/UserStoryCard","visualization","visualization/Visualization"],r=["contracts.typecheck","link","utils"];export{e as sharedUiContractKeys,r as sharedUiContractExclusions};
File without changes
File without changes
@@ -0,0 +1 @@
1
+ var e=["accordion","alert","alert-dialog","aspect-ratio","atoms/FilterSelect","atoms/FilterSelect/FilterSelect","atoms/FilterSelect/types","atoms/LoadingSpinner","atoms/LoadingSpinner/LoadingSpinner","atoms/Pagination","atoms/Pagination/Pagination","atoms/Pagination/types","atoms/SearchInput","atoms/SearchInput/SearchInput","atoms/SearchInput/types","avatar","badge","breadcrumb","button","card","carousel","checkbox","collapsible","combobox","command","context-menu","data-table","date-picker","date-range-picker","datetime-picker","dialog","dropdown-menu","empty","empty-state","field","form","hover-card","input","input-group","input-otp","input-password","label","list","loading-button","marketing","marketing/FeatureGrid","marketing/Hero","marketing/PricingTable","menubar","molecules/Autocomplete","molecules/SearchAndFilter","molecules/SearchAndFilter/SearchAndFilter","molecules/SearchAndFilter/types","molecules/SkeletonList","native-select","navigation-menu","organisms/ErrorBoundary","organisms/ErrorBoundary/ErrorBoundary","organisms/ListPage","organisms/ListPage/ListPage","organisms/ListPage/types","page-header","popover","progress","radio-group","select","separator","sheet","sidebar","skeleton","slider","stack","stepper","switch","table","tabs","text","textarea","time-picker","toast","toggle","toggle-group","tooltip","typography","useListState","usecases","usecases/UseCaseCard","usecases/UserStoryCard","visualization","visualization/Visualization"],t=["contracts.typecheck","link","utils"];export{e as sharedUiContractKeys,t as sharedUiContractExclusions};
File without changes
@@ -0,0 +1 @@
1
+ import{defineFeature as g}from"@contractspec/lib.contracts-spec/features";var j=g({meta:{key:"libs.ui-kit-core",version:"1.0.0",title:"Ui Kit Core",description:"Core UI primitives and utilities",domain:"ui-kit-core",owners:["@contractspec-core"],tags:["package","libs","ui-kit-core"],stability:"experimental"}});export{j as UiKitCoreFeature};
@@ -0,0 +1 @@
1
+ import{clsx as e}from"clsx";import{twMerge as t}from"tailwind-merge";function s(...r){return t(e(r))}export{s as cn};
@@ -0,0 +1,3 @@
1
+ export * from './interfaces';
2
+ export * from './ui-kit-core.feature';
3
+ export * from './utils';
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ var r=["accordion","alert","alert-dialog","aspect-ratio","atoms/FilterSelect","atoms/FilterSelect/FilterSelect","atoms/FilterSelect/types","atoms/LoadingSpinner","atoms/LoadingSpinner/LoadingSpinner","atoms/Pagination","atoms/Pagination/Pagination","atoms/Pagination/types","atoms/SearchInput","atoms/SearchInput/SearchInput","atoms/SearchInput/types","avatar","badge","breadcrumb","button","card","carousel","checkbox","collapsible","combobox","command","context-menu","data-table","date-picker","date-range-picker","datetime-picker","dialog","dropdown-menu","empty","empty-state","field","form","hover-card","input","input-group","input-otp","input-password","label","list","loading-button","marketing","marketing/FeatureGrid","marketing/Hero","marketing/PricingTable","menubar","molecules/Autocomplete","molecules/SearchAndFilter","molecules/SearchAndFilter/SearchAndFilter","molecules/SearchAndFilter/types","molecules/SkeletonList","native-select","navigation-menu","organisms/ErrorBoundary","organisms/ErrorBoundary/ErrorBoundary","organisms/ListPage","organisms/ListPage/ListPage","organisms/ListPage/types","page-header","popover","progress","radio-group","select","separator","sheet","sidebar","skeleton","slider","stack","stepper","switch","table","tabs","text","textarea","time-picker","toast","toggle","toggle-group","tooltip","typography","useListState","usecases","usecases/UseCaseCard","usecases/UserStoryCard","visualization","visualization/Visualization"],a=["contracts.typecheck","link","utils"];import{defineFeature as t}from"@contractspec/lib.contracts-spec/features";var l=t({meta:{key:"libs.ui-kit-core",version:"1.0.0",title:"Ui Kit Core",description:"Core UI primitives and utilities",domain:"ui-kit-core",owners:["@contractspec-core"],tags:["package","libs","ui-kit-core"],stability:"experimental"}});import{clsx as o}from"clsx";import{twMerge as s}from"tailwind-merge";function m(...e){return s(o(e))}export{r as sharedUiContractKeys,a as sharedUiContractExclusions,m as cn,l as UiKitCoreFeature};
@@ -0,0 +1,102 @@
1
+ import type * as React from 'react';
2
+ import type { SharedActionConfig, SharedClassNameProps, SharedDisableableProps, SharedOption } from './common';
3
+ export interface SharedFilterSelectProps<TValue = string | SharedOption> extends SharedClassNameProps, SharedDisableableProps {
4
+ value: TValue;
5
+ options: SharedOption[];
6
+ onChange: (value: TValue | undefined) => void;
7
+ placeholder?: string;
8
+ label?: string;
9
+ showCounts?: boolean;
10
+ }
11
+ export interface SharedSearchInputProps extends SharedClassNameProps, SharedDisableableProps {
12
+ value: string;
13
+ onChange: (value: string) => void;
14
+ placeholder?: string;
15
+ onClear?: () => void;
16
+ autoFocus?: boolean;
17
+ }
18
+ export interface SharedPaginationProps extends SharedClassNameProps, SharedDisableableProps {
19
+ currentPage: number;
20
+ totalPages: number;
21
+ totalItems: number;
22
+ itemsPerPage: number;
23
+ onPageChange: (page: number) => void;
24
+ onItemsPerPageChange?: (itemsPerPage: number) => void;
25
+ showItemsPerPage?: boolean;
26
+ itemsPerPageOptions?: number[];
27
+ }
28
+ export interface SharedSearchAndFilterItem<TValue = string | SharedOption> {
29
+ key: string;
30
+ label: string;
31
+ value: string;
32
+ options: SharedOption[];
33
+ onChange: (value: TValue | undefined) => void;
34
+ showCounts?: boolean;
35
+ }
36
+ export interface SharedSearchAndFilterProps<TValue = string | SharedOption> extends SharedClassNameProps, SharedDisableableProps {
37
+ searchValue: string;
38
+ onSearchChange: (value: string) => void;
39
+ searchPlaceholder?: string;
40
+ filters?: SharedSearchAndFilterItem<TValue>[];
41
+ isLoading?: boolean;
42
+ collapsible?: boolean;
43
+ defaultCollapsed?: boolean;
44
+ }
45
+ export interface SharedUseListStateOptions {
46
+ initialSearch?: string;
47
+ initialFilters?: Record<string, string>;
48
+ initialPage?: number;
49
+ initialItemsPerPage?: number;
50
+ debounceMs?: number;
51
+ }
52
+ export interface SharedUseListStateReturn {
53
+ searchQuery: string;
54
+ setSearchQuery: (query: string) => void;
55
+ filters: Record<string, string>;
56
+ setFilter: (key: string, value: string) => void;
57
+ clearFilters: () => void;
58
+ currentPage: number;
59
+ itemsPerPage: number;
60
+ setCurrentPage: (page: number) => void;
61
+ setItemsPerPage: (itemsPerPage: number) => void;
62
+ queryParams: {
63
+ search: string;
64
+ page: number;
65
+ limit: number;
66
+ } & Record<string, string | number>;
67
+ resetAll: () => void;
68
+ }
69
+ export interface SharedDataTableProps<_TItem = unknown> extends SharedClassNameProps {
70
+ controller: unknown;
71
+ toolbar?: React.ReactNode;
72
+ footer?: React.ReactNode;
73
+ emptyState?: React.ReactNode;
74
+ loading?: boolean;
75
+ }
76
+ export interface SharedListPageFilter {
77
+ key: string;
78
+ label: string;
79
+ options: SharedOption[];
80
+ showCounts?: boolean;
81
+ }
82
+ export interface SharedListPageProps<T = unknown> extends SharedClassNameProps {
83
+ title: string;
84
+ description?: string;
85
+ header?: React.ReactNode;
86
+ items: T[];
87
+ totalItems: number;
88
+ totalPages: number;
89
+ isLoading: boolean;
90
+ isFetching?: boolean;
91
+ error?: Error | null;
92
+ listState: SharedUseListStateReturn;
93
+ searchPlaceholder?: string;
94
+ filters?: SharedListPageFilter[];
95
+ onRefresh?: () => void;
96
+ primaryAction?: SharedActionConfig;
97
+ toolbar?: React.ReactNode;
98
+ renderItem: (item: T, index: number) => React.ReactNode;
99
+ renderEmpty?: () => React.ReactNode;
100
+ renderStats?: (items: T[]) => React.ReactNode;
101
+ itemClassName?: string;
102
+ }
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,30 @@
1
+ import type * as React from 'react';
2
+ export type SharedDensity = 'compact' | 'default';
3
+ export type SharedSize = 'sm' | 'md' | 'lg';
4
+ export type SharedFieldOrientation = 'vertical' | 'horizontal' | 'responsive';
5
+ export interface SharedClassNameProps {
6
+ className?: string;
7
+ }
8
+ export interface SharedChildrenProps {
9
+ children?: React.ReactNode;
10
+ }
11
+ export interface SharedDisableableProps {
12
+ disabled?: boolean;
13
+ }
14
+ export interface SharedLoadableProps {
15
+ loading?: boolean;
16
+ }
17
+ export interface SharedOption {
18
+ value: string;
19
+ label: string;
20
+ count?: number;
21
+ }
22
+ export interface SharedActionConfig {
23
+ label: string;
24
+ href?: string;
25
+ onClick?: () => void;
26
+ icon?: React.ReactNode;
27
+ }
28
+ export interface SharedFieldError {
29
+ message?: string;
30
+ }
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,29 @@
1
+ import type * as React from 'react';
2
+ import type { SharedClassNameProps, SharedDensity, SharedDisableableProps } from './common';
3
+ export interface SharedEmptyStateProps extends SharedClassNameProps {
4
+ icon?: React.ReactNode;
5
+ title: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ primaryAction?: React.ReactNode;
8
+ secondaryAction?: React.ReactNode;
9
+ density?: SharedDensity | null;
10
+ }
11
+ export interface SharedPageHeaderProps extends SharedClassNameProps {
12
+ breadcrumb?: React.ReactNode;
13
+ title: React.ReactNode;
14
+ subtitle?: React.ReactNode;
15
+ actions?: React.ReactNode;
16
+ spacing?: 'sm' | 'md' | 'lg' | null;
17
+ }
18
+ export interface SharedStepperProps extends SharedClassNameProps {
19
+ current: number;
20
+ total: number;
21
+ size?: 'sm' | 'md' | null;
22
+ }
23
+ export interface SharedLoadingButtonProps extends SharedDisableableProps, SharedClassNameProps {
24
+ loading?: boolean;
25
+ }
26
+ export interface SharedToastProps extends SharedClassNameProps {
27
+ open?: boolean;
28
+ onOpenChange?: (open: boolean) => void;
29
+ }
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,66 @@
1
+ import type { SharedChildrenProps, SharedClassNameProps, SharedDisableableProps, SharedFieldError, SharedFieldOrientation } from './common';
2
+ export type SharedButtonVariant = 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
3
+ export type SharedButtonSize = 'default' | 'sm' | 'lg' | 'icon';
4
+ export interface SharedButtonProps extends SharedChildrenProps, SharedClassNameProps, SharedDisableableProps {
5
+ variant?: SharedButtonVariant;
6
+ size?: SharedButtonSize;
7
+ }
8
+ export interface SharedInputProps extends SharedClassNameProps, SharedDisableableProps {
9
+ value?: string | number | readonly string[];
10
+ defaultValue?: string | number | readonly string[];
11
+ placeholder?: string;
12
+ readOnly?: boolean;
13
+ }
14
+ export interface SharedTextareaProps extends SharedInputProps {
15
+ rows?: number;
16
+ }
17
+ export interface SharedDatePickerProps extends SharedClassNameProps, SharedDisableableProps {
18
+ value: Date | null;
19
+ onChange: (date: Date | null) => void;
20
+ minDate?: Date;
21
+ maxDate?: Date;
22
+ placeholder?: string;
23
+ }
24
+ export interface SharedDateRange {
25
+ start: Date | null;
26
+ end: Date | null;
27
+ }
28
+ export interface SharedDateRangePickerProps extends SharedClassNameProps, SharedDisableableProps {
29
+ value: SharedDateRange;
30
+ onChange: (range: SharedDateRange) => void;
31
+ minDate?: Date;
32
+ maxDate?: Date;
33
+ placeholders?: {
34
+ start?: string;
35
+ end?: string;
36
+ };
37
+ }
38
+ export interface SharedTimePickerProps extends SharedClassNameProps, SharedDisableableProps {
39
+ value: Date | null;
40
+ onChange: (date: Date | null) => void;
41
+ placeholder?: string;
42
+ is24Hour?: boolean;
43
+ }
44
+ export interface SharedDateTimePickerProps extends SharedTimePickerProps {
45
+ minDate?: Date;
46
+ maxDate?: Date;
47
+ }
48
+ export interface SharedFieldProps extends SharedClassNameProps {
49
+ orientation?: SharedFieldOrientation;
50
+ }
51
+ export interface SharedFieldLegendProps extends SharedClassNameProps {
52
+ variant?: 'legend' | 'label';
53
+ }
54
+ export interface SharedFieldErrorProps extends SharedChildrenProps, SharedClassNameProps {
55
+ errors?: SharedFieldError[];
56
+ }
57
+ export interface SharedSelectProps<TValue = string> extends SharedClassNameProps, SharedDisableableProps {
58
+ value?: TValue;
59
+ onChange?: (value: TValue) => void;
60
+ placeholder?: string;
61
+ }
62
+ export interface SharedFormFieldStateProps {
63
+ name?: string;
64
+ required?: boolean;
65
+ disabled?: boolean;
66
+ }
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,8 @@
1
+ export type { SharedDataTableProps, SharedFilterSelectProps, SharedListPageFilter, SharedListPageProps, SharedPaginationProps, SharedSearchAndFilterItem, SharedSearchAndFilterProps, SharedSearchInputProps, SharedUseListStateOptions, SharedUseListStateReturn, } from './collections';
2
+ export type { SharedActionConfig, SharedChildrenProps, SharedClassNameProps, SharedDensity, SharedDisableableProps, SharedFieldError, SharedFieldOrientation, SharedLoadableProps, SharedOption, SharedSize, } from './common';
3
+ export type { SharedEmptyStateProps, SharedLoadingButtonProps, SharedPageHeaderProps, SharedStepperProps, SharedToastProps, } from './feedback';
4
+ export type { SharedButtonProps, SharedButtonSize, SharedButtonVariant, SharedDatePickerProps, SharedDateRange, SharedDateRangePickerProps, SharedDateTimePickerProps, SharedFieldErrorProps, SharedFieldLegendProps, SharedFieldProps, SharedFormFieldStateProps, SharedInputProps, SharedSelectProps, SharedTextareaProps, SharedTimePickerProps, } from './forms';
5
+ export type { SharedDialogProps, SharedSliderProps, SharedStackProps, SharedTableProps, } from './layout';
6
+ export type { SharedFeatureGridProps, SharedFeatureItem, SharedPricingTableProps, SharedPricingTier, } from './marketing';
7
+ export { sharedUiContractExclusions, sharedUiContractKeys, } from './registry';
8
+ export type { SharedVisualizationInteractionHandler, SharedVisualizationProps, } from './visualization';
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ var e=["accordion","alert","alert-dialog","aspect-ratio","atoms/FilterSelect","atoms/FilterSelect/FilterSelect","atoms/FilterSelect/types","atoms/LoadingSpinner","atoms/LoadingSpinner/LoadingSpinner","atoms/Pagination","atoms/Pagination/Pagination","atoms/Pagination/types","atoms/SearchInput","atoms/SearchInput/SearchInput","atoms/SearchInput/types","avatar","badge","breadcrumb","button","card","carousel","checkbox","collapsible","combobox","command","context-menu","data-table","date-picker","date-range-picker","datetime-picker","dialog","dropdown-menu","empty","empty-state","field","form","hover-card","input","input-group","input-otp","input-password","label","list","loading-button","marketing","marketing/FeatureGrid","marketing/Hero","marketing/PricingTable","menubar","molecules/Autocomplete","molecules/SearchAndFilter","molecules/SearchAndFilter/SearchAndFilter","molecules/SearchAndFilter/types","molecules/SkeletonList","native-select","navigation-menu","organisms/ErrorBoundary","organisms/ErrorBoundary/ErrorBoundary","organisms/ListPage","organisms/ListPage/ListPage","organisms/ListPage/types","page-header","popover","progress","radio-group","select","separator","sheet","sidebar","skeleton","slider","stack","stepper","switch","table","tabs","text","textarea","time-picker","toast","toggle","toggle-group","tooltip","typography","useListState","usecases","usecases/UseCaseCard","usecases/UserStoryCard","visualization","visualization/Visualization"],r=["contracts.typecheck","link","utils"];export{e as sharedUiContractKeys,r as sharedUiContractExclusions};
@@ -0,0 +1,17 @@
1
+ import type { SharedClassNameProps, SharedFieldOrientation } from './common';
2
+ export interface SharedDialogProps {
3
+ open?: boolean;
4
+ onOpenChange?: (open: boolean) => void;
5
+ }
6
+ export interface SharedStackProps extends SharedClassNameProps {
7
+ direction?: Extract<SharedFieldOrientation, 'horizontal' | 'vertical'>;
8
+ }
9
+ export interface SharedSliderProps extends SharedClassNameProps {
10
+ disabled?: boolean;
11
+ min?: number;
12
+ max?: number;
13
+ step?: number;
14
+ value?: number | number[];
15
+ }
16
+ export interface SharedTableProps extends SharedClassNameProps {
17
+ }
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,26 @@
1
+ import type * as React from 'react';
2
+ import type { SharedClassNameProps } from './common';
3
+ export interface SharedFeatureItem {
4
+ title: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ icon?: React.ReactNode;
7
+ }
8
+ export interface SharedFeatureGridProps extends SharedClassNameProps {
9
+ items: SharedFeatureItem[];
10
+ columns?: 2 | 3 | 4;
11
+ }
12
+ export interface SharedPricingTier {
13
+ name: string;
14
+ price: string;
15
+ tagline?: string;
16
+ features: string[];
17
+ cta?: {
18
+ label: string;
19
+ href?: string;
20
+ onClick?: () => void;
21
+ };
22
+ highlighted?: boolean;
23
+ }
24
+ export interface SharedPricingTableProps extends SharedClassNameProps {
25
+ tiers: SharedPricingTier[];
26
+ }
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,2 @@
1
+ export declare const sharedUiContractKeys: readonly ["accordion", "alert", "alert-dialog", "aspect-ratio", "atoms/FilterSelect", "atoms/FilterSelect/FilterSelect", "atoms/FilterSelect/types", "atoms/LoadingSpinner", "atoms/LoadingSpinner/LoadingSpinner", "atoms/Pagination", "atoms/Pagination/Pagination", "atoms/Pagination/types", "atoms/SearchInput", "atoms/SearchInput/SearchInput", "atoms/SearchInput/types", "avatar", "badge", "breadcrumb", "button", "card", "carousel", "checkbox", "collapsible", "combobox", "command", "context-menu", "data-table", "date-picker", "date-range-picker", "datetime-picker", "dialog", "dropdown-menu", "empty", "empty-state", "field", "form", "hover-card", "input", "input-group", "input-otp", "input-password", "label", "list", "loading-button", "marketing", "marketing/FeatureGrid", "marketing/Hero", "marketing/PricingTable", "menubar", "molecules/Autocomplete", "molecules/SearchAndFilter", "molecules/SearchAndFilter/SearchAndFilter", "molecules/SearchAndFilter/types", "molecules/SkeletonList", "native-select", "navigation-menu", "organisms/ErrorBoundary", "organisms/ErrorBoundary/ErrorBoundary", "organisms/ListPage", "organisms/ListPage/ListPage", "organisms/ListPage/types", "page-header", "popover", "progress", "radio-group", "select", "separator", "sheet", "sidebar", "skeleton", "slider", "stack", "stepper", "switch", "table", "tabs", "text", "textarea", "time-picker", "toast", "toggle", "toggle-group", "tooltip", "typography", "useListState", "usecases", "usecases/UseCaseCard", "usecases/UserStoryCard", "visualization", "visualization/Visualization"];
2
+ export declare const sharedUiContractExclusions: readonly ["contracts.typecheck", "link", "utils"];
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ var e=["accordion","alert","alert-dialog","aspect-ratio","atoms/FilterSelect","atoms/FilterSelect/FilterSelect","atoms/FilterSelect/types","atoms/LoadingSpinner","atoms/LoadingSpinner/LoadingSpinner","atoms/Pagination","atoms/Pagination/Pagination","atoms/Pagination/types","atoms/SearchInput","atoms/SearchInput/SearchInput","atoms/SearchInput/types","avatar","badge","breadcrumb","button","card","carousel","checkbox","collapsible","combobox","command","context-menu","data-table","date-picker","date-range-picker","datetime-picker","dialog","dropdown-menu","empty","empty-state","field","form","hover-card","input","input-group","input-otp","input-password","label","list","loading-button","marketing","marketing/FeatureGrid","marketing/Hero","marketing/PricingTable","menubar","molecules/Autocomplete","molecules/SearchAndFilter","molecules/SearchAndFilter/SearchAndFilter","molecules/SearchAndFilter/types","molecules/SkeletonList","native-select","navigation-menu","organisms/ErrorBoundary","organisms/ErrorBoundary/ErrorBoundary","organisms/ListPage","organisms/ListPage/ListPage","organisms/ListPage/types","page-header","popover","progress","radio-group","select","separator","sheet","sidebar","skeleton","slider","stack","stepper","switch","table","tabs","text","textarea","time-picker","toast","toggle","toggle-group","tooltip","typography","useListState","usecases","usecases/UseCaseCard","usecases/UserStoryCard","visualization","visualization/Visualization"],t=["contracts.typecheck","link","utils"];export{e as sharedUiContractKeys,t as sharedUiContractExclusions};
@@ -0,0 +1,7 @@
1
+ import type { SharedClassNameProps } from './common';
2
+ export type SharedVisualizationInteractionHandler = (params: unknown) => void;
3
+ export interface SharedVisualizationProps extends SharedClassNameProps {
4
+ model: unknown;
5
+ height?: number;
6
+ onDataPointPress?: SharedVisualizationInteractionHandler;
7
+ }
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1 @@
1
+ export declare const UiKitCoreFeature: import("@contractspec/lib.contracts-spec").FeatureModuleSpec;
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{defineFeature as g}from"@contractspec/lib.contracts-spec/features";var j=g({meta:{key:"libs.ui-kit-core",version:"1.0.0",title:"Ui Kit Core",description:"Core UI primitives and utilities",domain:"ui-kit-core",owners:["@contractspec-core"],tags:["package","libs","ui-kit-core"],stability:"experimental"}});export{j as UiKitCoreFeature};
@@ -0,0 +1,2 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
package/dist/utils.js ADDED
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{clsx as e}from"clsx";import{twMerge as t}from"tailwind-merge";function s(...r){return t(e(r))}export{s as cn};
package/package.json ADDED
@@ -0,0 +1,208 @@
1
+ {
2
+ "name": "@lssm-tech/lib.ui-kit-core",
3
+ "version": "3.8.9",
4
+ "description": "Core UI primitives and utilities",
5
+ "keywords": [
6
+ "contractspec",
7
+ "ui",
8
+ "core",
9
+ "primitives",
10
+ "tailwind",
11
+ "typescript"
12
+ ],
13
+ "type": "module",
14
+ "types": "./dist/index.d.ts",
15
+ "sideEffects": false,
16
+ "scripts": {
17
+ "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
18
+ "publish:pkg:canary": "bun publish:pkg --tag canary",
19
+ "build": "bun run build:bundle && bun run build:types",
20
+ "build:bundle": "contractspec-bun-build transpile",
21
+ "build:types": "contractspec-bun-build types",
22
+ "dev": "contractspec-bun-build dev",
23
+ "clean": "rm -rf dist",
24
+ "lint": "bun run lint:fix",
25
+ "lint:fix": "node ../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../scripts/biome.cjs check --write .",
26
+ "lint:check": "node ../../../scripts/biome.cjs check .",
27
+ "prebuild": "contractspec-bun-build prebuild",
28
+ "typecheck": "tsc --noEmit"
29
+ },
30
+ "dependencies": {
31
+ "class-variance-authority": "^0.7.0",
32
+ "clsx": "^2.1.0",
33
+ "react": "19.2.0",
34
+ "react-dom": "19.2.0",
35
+ "tailwind-merge": "^3.5.0",
36
+ "tailwindcss": "4.2.2",
37
+ "tailwindcss-animate": "^1.0.7",
38
+ "@contractspec/lib.contracts-spec": "6.4.0"
39
+ },
40
+ "devDependencies": {
41
+ "@contractspec/tool.typescript": "3.7.13",
42
+ "typescript": "^5.9.3",
43
+ "@contractspec/tool.bun": "3.7.18"
44
+ },
45
+ "exports": {
46
+ ".": {
47
+ "types": "./dist/index.d.ts",
48
+ "browser": "./dist/browser/index.js",
49
+ "bun": "./dist/index.js",
50
+ "default": "./dist/index.js"
51
+ },
52
+ "./interfaces": {
53
+ "types": "./dist/interfaces/index.d.ts",
54
+ "browser": "./dist/browser/interfaces/index.js",
55
+ "bun": "./dist/interfaces/index.js",
56
+ "default": "./dist/interfaces/index.js"
57
+ },
58
+ "./interfaces/collections": {
59
+ "types": "./dist/interfaces/collections.d.ts",
60
+ "browser": "./dist/browser/interfaces/collections.js",
61
+ "bun": "./dist/interfaces/collections.js",
62
+ "default": "./dist/interfaces/collections.js"
63
+ },
64
+ "./interfaces/common": {
65
+ "types": "./dist/interfaces/common.d.ts",
66
+ "browser": "./dist/browser/interfaces/common.js",
67
+ "bun": "./dist/interfaces/common.js",
68
+ "default": "./dist/interfaces/common.js"
69
+ },
70
+ "./interfaces/feedback": {
71
+ "types": "./dist/interfaces/feedback.d.ts",
72
+ "browser": "./dist/browser/interfaces/feedback.js",
73
+ "bun": "./dist/interfaces/feedback.js",
74
+ "default": "./dist/interfaces/feedback.js"
75
+ },
76
+ "./interfaces/forms": {
77
+ "types": "./dist/interfaces/forms.d.ts",
78
+ "browser": "./dist/browser/interfaces/forms.js",
79
+ "bun": "./dist/interfaces/forms.js",
80
+ "default": "./dist/interfaces/forms.js"
81
+ },
82
+ "./interfaces/layout": {
83
+ "types": "./dist/interfaces/layout.d.ts",
84
+ "browser": "./dist/browser/interfaces/layout.js",
85
+ "bun": "./dist/interfaces/layout.js",
86
+ "default": "./dist/interfaces/layout.js"
87
+ },
88
+ "./interfaces/marketing": {
89
+ "types": "./dist/interfaces/marketing.d.ts",
90
+ "browser": "./dist/browser/interfaces/marketing.js",
91
+ "bun": "./dist/interfaces/marketing.js",
92
+ "default": "./dist/interfaces/marketing.js"
93
+ },
94
+ "./interfaces/registry": {
95
+ "types": "./dist/interfaces/registry.d.ts",
96
+ "browser": "./dist/browser/interfaces/registry.js",
97
+ "bun": "./dist/interfaces/registry.js",
98
+ "default": "./dist/interfaces/registry.js"
99
+ },
100
+ "./interfaces/visualization": {
101
+ "types": "./dist/interfaces/visualization.d.ts",
102
+ "browser": "./dist/browser/interfaces/visualization.js",
103
+ "bun": "./dist/interfaces/visualization.js",
104
+ "default": "./dist/interfaces/visualization.js"
105
+ },
106
+ "./ui-kit-core.feature": {
107
+ "types": "./dist/ui-kit-core.feature.d.ts",
108
+ "browser": "./dist/browser/ui-kit-core.feature.js",
109
+ "bun": "./dist/ui-kit-core.feature.js",
110
+ "default": "./dist/ui-kit-core.feature.js"
111
+ },
112
+ "./utils": {
113
+ "types": "./dist/utils.d.ts",
114
+ "browser": "./dist/browser/utils.js",
115
+ "bun": "./dist/utils.js",
116
+ "default": "./dist/utils.js"
117
+ }
118
+ },
119
+ "files": [
120
+ "dist",
121
+ "README.md"
122
+ ],
123
+ "publishConfig": {
124
+ "access": "public",
125
+ "exports": {
126
+ ".": {
127
+ "types": "./dist/index.d.ts",
128
+ "browser": "./dist/browser/index.js",
129
+ "bun": "./dist/index.js",
130
+ "default": "./dist/index.js"
131
+ },
132
+ "./interfaces": {
133
+ "types": "./dist/interfaces/index.d.ts",
134
+ "browser": "./dist/browser/interfaces/index.js",
135
+ "bun": "./dist/interfaces/index.js",
136
+ "default": "./dist/interfaces/index.js"
137
+ },
138
+ "./interfaces/collections": {
139
+ "types": "./dist/interfaces/collections.d.ts",
140
+ "browser": "./dist/browser/interfaces/collections.js",
141
+ "bun": "./dist/interfaces/collections.js",
142
+ "default": "./dist/interfaces/collections.js"
143
+ },
144
+ "./interfaces/common": {
145
+ "types": "./dist/interfaces/common.d.ts",
146
+ "browser": "./dist/browser/interfaces/common.js",
147
+ "bun": "./dist/interfaces/common.js",
148
+ "default": "./dist/interfaces/common.js"
149
+ },
150
+ "./interfaces/feedback": {
151
+ "types": "./dist/interfaces/feedback.d.ts",
152
+ "browser": "./dist/browser/interfaces/feedback.js",
153
+ "bun": "./dist/interfaces/feedback.js",
154
+ "default": "./dist/interfaces/feedback.js"
155
+ },
156
+ "./interfaces/forms": {
157
+ "types": "./dist/interfaces/forms.d.ts",
158
+ "browser": "./dist/browser/interfaces/forms.js",
159
+ "bun": "./dist/interfaces/forms.js",
160
+ "default": "./dist/interfaces/forms.js"
161
+ },
162
+ "./interfaces/layout": {
163
+ "types": "./dist/interfaces/layout.d.ts",
164
+ "browser": "./dist/browser/interfaces/layout.js",
165
+ "bun": "./dist/interfaces/layout.js",
166
+ "default": "./dist/interfaces/layout.js"
167
+ },
168
+ "./interfaces/marketing": {
169
+ "types": "./dist/interfaces/marketing.d.ts",
170
+ "browser": "./dist/browser/interfaces/marketing.js",
171
+ "bun": "./dist/interfaces/marketing.js",
172
+ "default": "./dist/interfaces/marketing.js"
173
+ },
174
+ "./interfaces/registry": {
175
+ "types": "./dist/interfaces/registry.d.ts",
176
+ "browser": "./dist/browser/interfaces/registry.js",
177
+ "bun": "./dist/interfaces/registry.js",
178
+ "default": "./dist/interfaces/registry.js"
179
+ },
180
+ "./interfaces/visualization": {
181
+ "types": "./dist/interfaces/visualization.d.ts",
182
+ "browser": "./dist/browser/interfaces/visualization.js",
183
+ "bun": "./dist/interfaces/visualization.js",
184
+ "default": "./dist/interfaces/visualization.js"
185
+ },
186
+ "./ui-kit-core.feature": {
187
+ "types": "./dist/ui-kit-core.feature.d.ts",
188
+ "browser": "./dist/browser/ui-kit-core.feature.js",
189
+ "bun": "./dist/ui-kit-core.feature.js",
190
+ "default": "./dist/ui-kit-core.feature.js"
191
+ },
192
+ "./utils": {
193
+ "types": "./dist/utils.d.ts",
194
+ "browser": "./dist/browser/utils.js",
195
+ "bun": "./dist/utils.js",
196
+ "default": "./dist/utils.js"
197
+ }
198
+ },
199
+ "registry": "https://registry.npmjs.org"
200
+ },
201
+ "license": "MIT",
202
+ "repository": {
203
+ "type": "git",
204
+ "url": "https://github.com/lssm-tech/contractspec.git",
205
+ "directory": "packages/libs/ui-kit-core"
206
+ },
207
+ "homepage": "https://contractspec.io"
208
+ }