@contractspec/lib.ui-kit-web 3.7.6 → 3.8.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 +33 -88
- package/dist/browser/ui/accordion.js +4 -4
- package/dist/browser/ui/alert-dialog.js +9 -9
- package/dist/browser/ui/alert.js +4 -4
- package/dist/browser/ui/atoms/FilterSelect/FilterSelect.js +51 -51
- package/dist/browser/ui/atoms/FilterSelect/index.js +51 -51
- package/dist/browser/ui/atoms/LoadingSpinner/LoadingSpinner.js +1 -1
- package/dist/browser/ui/atoms/Pagination/Pagination.js +13 -13
- package/dist/browser/ui/atoms/Pagination/index.js +13 -13
- package/dist/browser/ui/atoms/SearchInput/SearchInput.js +8 -8
- package/dist/browser/ui/atoms/SearchInput/index.js +8 -8
- package/dist/browser/ui/avatar.js +1 -1
- package/dist/browser/ui/badge.js +3 -3
- package/dist/browser/ui/breadcrumb.js +4 -4
- package/dist/browser/ui/button.js +5 -5
- package/dist/browser/ui/calendar.js +21 -21
- package/dist/browser/ui/card.js +2 -2
- package/dist/browser/ui/carousel.js +6 -6
- package/dist/browser/ui/checkbox.js +2 -2
- package/dist/browser/ui/command.js +14 -14
- package/dist/browser/ui/confirm-dialog.js +9 -9
- package/dist/browser/ui/context-menu.js +10 -10
- package/dist/browser/ui/cta.js +5 -5
- package/dist/browser/ui/data-table.js +1005 -0
- package/dist/browser/ui/data-table.parts.js +463 -0
- package/dist/browser/ui/date-picker.js +26 -26
- package/dist/browser/ui/date-range-picker.js +24 -24
- package/dist/browser/ui/datetime-picker.js +29 -29
- package/dist/browser/ui/dialog.js +5 -5
- package/dist/browser/ui/drawer.js +5 -5
- package/dist/browser/ui/dropdown-menu.js +10 -10
- package/dist/browser/ui/empty-state.js +5 -5
- package/dist/browser/ui/empty.js +7 -7
- package/dist/browser/ui/field.js +12 -12
- package/dist/browser/ui/form.js +4 -4
- package/dist/browser/ui/hover-card.js +2 -2
- package/dist/browser/ui/input-group.js +16 -16
- package/dist/browser/ui/input-otp.js +4 -4
- package/dist/browser/ui/input.js +1 -1
- package/dist/browser/ui/label.js +2 -2
- package/dist/browser/ui/loading-button.js +8 -8
- package/dist/browser/ui/marketing/FeatureGrid.js +3 -3
- package/dist/browser/ui/marketing/Hero.js +7 -7
- package/dist/browser/ui/marketing/PricingTable.js +10 -10
- package/dist/browser/ui/menubar.js +12 -12
- package/dist/browser/ui/molecules/Autocomplete/index.js +26 -26
- package/dist/browser/ui/molecules/SearchAndFilter/SearchAndFilter.js +62 -62
- package/dist/browser/ui/molecules/SearchAndFilter/index.js +62 -62
- package/dist/browser/ui/molecules/SkeletonList.js +1 -1
- package/dist/browser/ui/nav-layout.js +22 -22
- package/dist/browser/ui/navigation-menu.js +7 -7
- package/dist/browser/ui/organisms/ErrorBoundary/ErrorBoundary.js +11 -11
- package/dist/browser/ui/organisms/ListPage/ListPage.js +84 -84
- package/dist/browser/ui/page-header.js +4 -4
- package/dist/browser/ui/pagination.js +6 -6
- package/dist/browser/ui/popover.js +2 -2
- package/dist/browser/ui/progress.js +3 -3
- package/dist/browser/ui/radio-group.js +3 -3
- package/dist/browser/ui/resizable.js +3 -3
- package/dist/browser/ui/scroll-area.js +4 -4
- package/dist/browser/ui/section.js +1 -1
- package/dist/browser/ui/select.js +6 -6
- package/dist/browser/ui/separator.js +2 -2
- package/dist/browser/ui/sheet.js +5 -5
- package/dist/browser/ui/sidebar.js +64 -64
- package/dist/browser/ui/skeleton.js +1 -1
- package/dist/browser/ui/slider.js +6 -6
- package/dist/browser/ui/stack.js +1 -1
- package/dist/browser/ui/stat-card-group.js +5 -5
- package/dist/browser/ui/stepper.js +2 -2
- package/dist/browser/ui/switch.js +3 -3
- package/dist/browser/ui/table.js +5 -5
- package/dist/browser/ui/tabs.js +3 -3
- package/dist/browser/ui/text.js +2 -2
- package/dist/browser/ui/textarea.js +1 -1
- package/dist/browser/ui/time-picker.js +10 -10
- package/dist/browser/ui/toast.js +5 -5
- package/dist/browser/ui/toaster.js +5 -5
- package/dist/browser/ui/toggle-group.js +7 -7
- package/dist/browser/ui/toggle.js +5 -5
- package/dist/browser/ui/tooltip.js +3 -3
- package/dist/browser/ui/typography.js +14 -14
- package/dist/browser/ui/usecases/UseCaseCard.js +8 -8
- package/dist/browser/ui/usecases/UserStoryCard.js +3 -3
- package/dist/browser/ui/visualization/Visualization.js +439 -0
- package/dist/browser/ui/visualization/Visualization.support.js +128 -0
- package/dist/browser/ui/visualization/index.js +10 -0
- package/dist/ui/accordion.d.ts +2 -2
- package/dist/ui/accordion.js +4 -4
- package/dist/ui/alert-dialog.d.ts +2 -2
- package/dist/ui/alert-dialog.js +9 -9
- package/dist/ui/alert.d.ts +2 -2
- package/dist/ui/alert.js +4 -4
- package/dist/ui/atoms/FilterSelect/FilterSelect.js +51 -51
- package/dist/ui/atoms/FilterSelect/index.d.ts +1 -1
- package/dist/ui/atoms/FilterSelect/index.js +51 -51
- package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js +1 -1
- package/dist/ui/atoms/LoadingSpinner/index.d.ts +1 -1
- package/dist/ui/atoms/Pagination/Pagination.js +13 -13
- package/dist/ui/atoms/Pagination/index.js +13 -13
- package/dist/ui/atoms/SearchInput/SearchInput.js +8 -8
- package/dist/ui/atoms/SearchInput/index.js +8 -8
- package/dist/ui/avatar.d.ts +2 -2
- package/dist/ui/avatar.js +1 -1
- package/dist/ui/badge.d.ts +1 -1
- package/dist/ui/badge.js +3 -3
- package/dist/ui/breadcrumb.d.ts +1 -1
- package/dist/ui/breadcrumb.js +4 -4
- package/dist/ui/button.d.ts +1 -1
- package/dist/ui/button.js +5 -5
- package/dist/ui/calendar.js +21 -21
- package/dist/ui/card.d.ts +1 -1
- package/dist/ui/card.js +2 -2
- package/dist/ui/carousel.d.ts +2 -2
- package/dist/ui/carousel.js +6 -6
- package/dist/ui/checkbox.d.ts +1 -1
- package/dist/ui/checkbox.js +2 -2
- package/dist/ui/collapsible.d.ts +1 -1
- package/dist/ui/command.d.ts +2 -2
- package/dist/ui/command.js +14 -14
- package/dist/ui/confirm-dialog.js +9 -9
- package/dist/ui/context-menu.d.ts +2 -2
- package/dist/ui/context-menu.js +10 -10
- package/dist/ui/cta.js +5 -5
- package/dist/ui/data-table.d.ts +12 -0
- package/dist/ui/data-table.js +1000 -0
- package/dist/ui/data-table.parts.d.ts +14 -0
- package/dist/ui/data-table.parts.js +458 -0
- package/dist/ui/date-picker.js +26 -26
- package/dist/ui/date-range-picker.js +24 -24
- package/dist/ui/datetime-picker.js +29 -29
- package/dist/ui/dialog.d.ts +1 -1
- package/dist/ui/dialog.js +5 -5
- package/dist/ui/drawer.d.ts +1 -1
- package/dist/ui/drawer.js +5 -5
- package/dist/ui/dropdown-menu.d.ts +2 -2
- package/dist/ui/dropdown-menu.js +10 -10
- package/dist/ui/empty-state.d.ts +1 -1
- package/dist/ui/empty-state.js +5 -5
- package/dist/ui/empty.d.ts +2 -2
- package/dist/ui/empty.js +7 -7
- package/dist/ui/field.d.ts +2 -2
- package/dist/ui/field.js +12 -12
- package/dist/ui/form.d.ts +3 -3
- package/dist/ui/form.js +4 -4
- package/dist/ui/hover-card.d.ts +2 -2
- package/dist/ui/hover-card.js +2 -2
- package/dist/ui/input-group.d.ts +2 -2
- package/dist/ui/input-group.js +16 -16
- package/dist/ui/input-otp.d.ts +2 -2
- package/dist/ui/input-otp.js +4 -4
- package/dist/ui/input.js +1 -1
- package/dist/ui/label.d.ts +1 -1
- package/dist/ui/label.js +2 -2
- package/dist/ui/loading-button.js +8 -8
- package/dist/ui/map/index.d.ts +1 -1
- package/dist/ui/marketing/FeatureGrid.js +3 -3
- package/dist/ui/marketing/Hero.js +7 -7
- package/dist/ui/marketing/PricingTable.js +10 -10
- package/dist/ui/marketing/index.d.ts +1 -1
- package/dist/ui/menubar.d.ts +2 -2
- package/dist/ui/menubar.js +12 -12
- package/dist/ui/molecules/Autocomplete/index.js +26 -26
- package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +62 -62
- package/dist/ui/molecules/SearchAndFilter/index.js +62 -62
- package/dist/ui/molecules/SkeletonList.js +1 -1
- package/dist/ui/nav-layout.d.ts +1 -1
- package/dist/ui/nav-layout.js +22 -22
- package/dist/ui/navigation-menu.d.ts +2 -2
- package/dist/ui/navigation-menu.js +7 -7
- package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js +11 -11
- package/dist/ui/organisms/ErrorBoundary/index.d.ts +1 -1
- package/dist/ui/organisms/ListPage/ListPage.js +84 -84
- package/dist/ui/organisms/ListPage/index.d.ts +1 -1
- package/dist/ui/organisms/ListPage/types.d.ts +1 -1
- package/dist/ui/page-header.d.ts +1 -1
- package/dist/ui/page-header.js +4 -4
- package/dist/ui/pagination.js +6 -6
- package/dist/ui/popover.d.ts +2 -2
- package/dist/ui/popover.js +2 -2
- package/dist/ui/progress.d.ts +1 -1
- package/dist/ui/progress.js +3 -3
- package/dist/ui/radio-group.d.ts +1 -1
- package/dist/ui/radio-group.js +3 -3
- package/dist/ui/resizable.d.ts +2 -2
- package/dist/ui/resizable.js +3 -3
- package/dist/ui/scroll-area.d.ts +1 -1
- package/dist/ui/scroll-area.js +4 -4
- package/dist/ui/section.d.ts +1 -1
- package/dist/ui/section.js +1 -1
- package/dist/ui/select.d.ts +1 -1
- package/dist/ui/select.js +6 -6
- package/dist/ui/separator.d.ts +1 -1
- package/dist/ui/separator.js +2 -2
- package/dist/ui/sheet.d.ts +2 -2
- package/dist/ui/sheet.js +5 -5
- package/dist/ui/sidebar.d.ts +1 -1
- package/dist/ui/sidebar.js +64 -64
- package/dist/ui/skeleton.js +1 -1
- package/dist/ui/slider.d.ts +1 -1
- package/dist/ui/slider.js +6 -6
- package/dist/ui/stack.d.ts +4 -4
- package/dist/ui/stack.js +1 -1
- package/dist/ui/stat-card-group.js +5 -5
- package/dist/ui/stepper.js +2 -2
- package/dist/ui/switch.d.ts +1 -1
- package/dist/ui/switch.js +3 -3
- package/dist/ui/table.d.ts +1 -1
- package/dist/ui/table.js +5 -5
- package/dist/ui/tabs.d.ts +2 -2
- package/dist/ui/tabs.js +3 -3
- package/dist/ui/text.js +2 -2
- package/dist/ui/textarea.js +1 -1
- package/dist/ui/time-picker.js +10 -10
- package/dist/ui/toast.d.ts +2 -2
- package/dist/ui/toast.js +5 -5
- package/dist/ui/toaster.js +5 -5
- package/dist/ui/toggle-group.d.ts +1 -1
- package/dist/ui/toggle-group.js +7 -7
- package/dist/ui/toggle.d.ts +1 -1
- package/dist/ui/toggle.js +5 -5
- package/dist/ui/tooltip.d.ts +2 -2
- package/dist/ui/tooltip.js +3 -3
- package/dist/ui/typography.js +14 -14
- package/dist/ui/use-toast.d.ts +1 -1
- package/dist/ui/usecases/UseCaseCard.js +8 -8
- package/dist/ui/usecases/UserStoryCard.js +3 -3
- package/dist/ui/visualization/Visualization.d.ts +9 -0
- package/dist/ui/visualization/Visualization.js +434 -0
- package/dist/ui/visualization/Visualization.support.d.ts +15 -0
- package/dist/ui/visualization/Visualization.support.js +123 -0
- package/dist/ui/visualization/index.d.ts +1 -0
- package/dist/ui/visualization/index.js +5 -0
- package/package.json +72 -9
package/README.md
CHANGED
|
@@ -1,109 +1,54 @@
|
|
|
1
1
|
# @contractspec/lib.ui-kit-web
|
|
2
2
|
|
|
3
|
-
Website: https://contractspec.io
|
|
3
|
+
Website: https://contractspec.io
|
|
4
4
|
|
|
5
|
+
**Web UI components built on Radix primitives with design-system token integration.**
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
## What It Provides
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
To provide a comprehensive set of accessible, high-performance UI components specifically optimized for the modern web. While `@contractspec/lib.ui-kit` focuses on universal (native + web) compatibility, this library leverages web-only capabilities like portals, heavy data tables, and mapping libraries.
|
|
9
|
+
- **Layer**: lib
|
|
10
|
+
- **Consumers**: design-system, example-shared-ui, presentation-runtime-react, bundles
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
npm install @contractspec/lib.ui-kit-web
|
|
16
|
-
# or
|
|
17
|
-
bun add @contractspec/lib.ui-kit-web
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Key Concepts
|
|
21
|
-
|
|
22
|
-
- **Radix UI Primitives**: Most components are unstyled accessible wrappers around Radix UI.
|
|
23
|
-
- **Shadcn UI Compatible**: Structure and styling closely follow the popular shadcn/ui patterns, making it easy to adopt and extend.
|
|
24
|
-
- **Web Optimizations**: Includes `SkipLink`, `VisuallyHidden`, and `LiveRegion` for WCAG compliance.
|
|
25
|
-
- **Mapping**: Integrated `maplibre-gl` components for geo-spatial visualizations.
|
|
26
|
-
|
|
27
|
-
## Exports
|
|
28
|
-
|
|
29
|
-
### Core UI
|
|
14
|
+
`npm install @contractspec/lib.ui-kit-web`
|
|
30
15
|
|
|
31
|
-
|
|
32
|
-
- Forms: `input`, `select`, `checkbox`, `switch`, `slider`, `radio-group`.
|
|
33
|
-
- Feedback: `toast`, `alert`, `progress`, `skeleton`.
|
|
16
|
+
or
|
|
34
17
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- `ui/map/*`: `MapBase`, `MapGeoJsonOverlay`, `MapHeatmapH3`, `MapMarkers`.
|
|
38
|
-
- `ui/resizable`: Resizable panel layouts.
|
|
39
|
-
- `ui/scroll-area`: Custom cross-browser scrollbars.
|
|
40
|
-
- `ui/sonner`: High-performance toast notifications.
|
|
41
|
-
|
|
42
|
-
### Accessibility
|
|
43
|
-
|
|
44
|
-
- `ui/skip-link`: For keyboard navigation users.
|
|
45
|
-
- `ui/visually-hidden`: For screen-reader only content.
|
|
46
|
-
- `ui/live-region`: Announce dynamic changes.
|
|
47
|
-
- `ui/route-announcer`: Announce page changes in SPAs.
|
|
18
|
+
`bun add @contractspec/lib.ui-kit-web`
|
|
48
19
|
|
|
49
20
|
## Usage
|
|
50
21
|
|
|
51
|
-
|
|
52
|
-
import { Button } from '@contractspec/lib.ui-kit-web/ui/button';
|
|
53
|
-
import {
|
|
54
|
-
Dialog,
|
|
55
|
-
DialogContent,
|
|
56
|
-
DialogTrigger,
|
|
57
|
-
} from '@contractspec/lib.ui-kit-web/ui/dialog';
|
|
58
|
-
import { Input } from '@contractspec/lib.ui-kit-web/ui/input';
|
|
59
|
-
|
|
60
|
-
export function LoginModal() {
|
|
61
|
-
return (
|
|
62
|
-
<Dialog>
|
|
63
|
-
<DialogTrigger asChild>
|
|
64
|
-
<Button variant="outline">Login</Button>
|
|
65
|
-
</DialogTrigger>
|
|
66
|
-
<DialogContent className="sm:max-w-[425px]">
|
|
67
|
-
<div className="grid gap-4 py-4">
|
|
68
|
-
<Input id="email" placeholder="Email" />
|
|
69
|
-
<Button type="submit">Sign in</Button>
|
|
70
|
-
</div>
|
|
71
|
-
</DialogContent>
|
|
72
|
-
</Dialog>
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
22
|
+
Import the root entrypoint from `@contractspec/lib.ui-kit-web`, or use one of the documented subpaths when you want a narrower surface area.
|
|
102
23
|
|
|
24
|
+
## Public Entry Points
|
|
103
25
|
|
|
26
|
+
- `.` — main entry
|
|
27
|
+
- `./ui/*` — individual component exports (many components)
|
|
104
28
|
|
|
29
|
+
## Local Commands
|
|
105
30
|
|
|
31
|
+
- `bun run dev` — contractspec-bun-build dev
|
|
32
|
+
- `bun run build` — bun run prebuild && bun run build:bundle && bun run build:types
|
|
33
|
+
- `bun run test` — jest --passWithNoTests
|
|
34
|
+
- `bun run lint` — bun run lint:fix
|
|
35
|
+
- `bun run lint:check` — biome check .
|
|
36
|
+
- `bun run lint:fix` — biome check --write --unsafe --only=nursery/useSortedClasses . && biome check --write .
|
|
37
|
+
- `bun run typecheck` — tsc --noEmit
|
|
38
|
+
- `bun run publish:pkg` — bun publish --tolerate-republish --ignore-scripts --verbose
|
|
39
|
+
- `bun run publish:pkg:canary` — bun publish:pkg --tag canary
|
|
40
|
+
- `bun run clean` — rm -rf dist
|
|
41
|
+
- `bun run build:bundle` — contractspec-bun-build transpile
|
|
42
|
+
- `bun run build:types` — contractspec-bun-build types
|
|
106
43
|
|
|
44
|
+
## Recent Updates
|
|
107
45
|
|
|
46
|
+
- Missing dependencies (thanks to knip)
|
|
47
|
+
- Replace eslint+prettier by biomejs to optimize speed
|
|
48
|
+
- Add data visualization capabilities
|
|
108
49
|
|
|
50
|
+
## Notes
|
|
109
51
|
|
|
52
|
+
- Radix primitive wrappers must stay accessible (ARIA, keyboard nav)
|
|
53
|
+
- Component API must align with design-system tokens
|
|
54
|
+
- Do not bypass Radix for custom implementations without justification
|
|
@@ -7,9 +7,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// ui/accordion.tsx
|
|
10
|
+
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
10
11
|
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
11
12
|
import { ChevronDownIcon } from "lucide-react";
|
|
12
|
-
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
13
13
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
14
14
|
"use client";
|
|
15
15
|
function Accordion({
|
|
@@ -39,12 +39,12 @@ function AccordionTrigger({
|
|
|
39
39
|
className: "flex",
|
|
40
40
|
children: /* @__PURE__ */ jsxDEV(AccordionPrimitive.Trigger, {
|
|
41
41
|
"data-slot": "accordion-trigger",
|
|
42
|
-
className: cn("
|
|
42
|
+
className: cn("flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left font-medium text-sm outline-hidden transition-all hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className),
|
|
43
43
|
...props,
|
|
44
44
|
children: [
|
|
45
45
|
children,
|
|
46
46
|
/* @__PURE__ */ jsxDEV(ChevronDownIcon, {
|
|
47
|
-
className: "
|
|
47
|
+
className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200"
|
|
48
48
|
}, undefined, false, undefined, this)
|
|
49
49
|
]
|
|
50
50
|
}, undefined, true, undefined, this)
|
|
@@ -57,7 +57,7 @@ function AccordionContent({
|
|
|
57
57
|
}) {
|
|
58
58
|
return /* @__PURE__ */ jsxDEV(AccordionPrimitive.Content, {
|
|
59
59
|
"data-slot": "accordion-content",
|
|
60
|
-
className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down
|
|
60
|
+
className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
61
61
|
...props,
|
|
62
62
|
children: /* @__PURE__ */ jsxDEV("div", {
|
|
63
63
|
className: cn("pt-0 pb-4", className),
|
|
@@ -7,23 +7,23 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// ui/button.tsx
|
|
10
|
+
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
10
11
|
import { Slot } from "@radix-ui/react-slot";
|
|
11
12
|
import { cva } from "class-variance-authority";
|
|
12
|
-
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
13
13
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
14
|
-
var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm
|
|
14
|
+
var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-hidden transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
|
|
15
15
|
variants: {
|
|
16
16
|
variant: {
|
|
17
17
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
18
|
-
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40
|
|
19
|
-
outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:
|
|
18
|
+
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
|
|
19
|
+
outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
20
20
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
21
21
|
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
22
22
|
link: "text-primary underline-offset-4 hover:underline"
|
|
23
23
|
},
|
|
24
24
|
size: {
|
|
25
25
|
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
26
|
-
sm: "h-8
|
|
26
|
+
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
|
|
27
27
|
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
28
28
|
icon: "size-9"
|
|
29
29
|
}
|
|
@@ -56,8 +56,8 @@ function Button({
|
|
|
56
56
|
}, undefined, false, undefined, this);
|
|
57
57
|
}
|
|
58
58
|
// ui/alert-dialog.tsx
|
|
59
|
-
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
60
59
|
import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
|
|
60
|
+
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
61
61
|
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
62
62
|
"use client";
|
|
63
63
|
function AlertDialog({
|
|
@@ -90,7 +90,7 @@ function AlertDialogOverlay({
|
|
|
90
90
|
}) {
|
|
91
91
|
return /* @__PURE__ */ jsxDEV2(AlertDialogPrimitive.Overlay, {
|
|
92
92
|
"data-slot": "alert-dialog-overlay",
|
|
93
|
-
className: cn2("data-[state=
|
|
93
|
+
className: cn2("data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in", className),
|
|
94
94
|
...props
|
|
95
95
|
}, undefined, false, undefined, this);
|
|
96
96
|
}
|
|
@@ -103,7 +103,7 @@ function AlertDialogContent({
|
|
|
103
103
|
/* @__PURE__ */ jsxDEV2(AlertDialogOverlay, {}, undefined, false, undefined, this),
|
|
104
104
|
/* @__PURE__ */ jsxDEV2(AlertDialogPrimitive.Content, {
|
|
105
105
|
"data-slot": "alert-dialog-content",
|
|
106
|
-
className: cn2("
|
|
106
|
+
className: cn2("data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in sm:max-w-lg", className),
|
|
107
107
|
...props
|
|
108
108
|
}, undefined, false, undefined, this)
|
|
109
109
|
]
|
|
@@ -135,7 +135,7 @@ function AlertDialogTitle({
|
|
|
135
135
|
}) {
|
|
136
136
|
return /* @__PURE__ */ jsxDEV2(AlertDialogPrimitive.Title, {
|
|
137
137
|
"data-slot": "alert-dialog-title",
|
|
138
|
-
className: cn2("text-lg
|
|
138
|
+
className: cn2("font-semibold text-lg", className),
|
|
139
139
|
...props
|
|
140
140
|
}, undefined, false, undefined, this);
|
|
141
141
|
}
|
package/dist/browser/ui/alert.js
CHANGED
|
@@ -7,14 +7,14 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// ui/alert.tsx
|
|
10
|
-
import { cva } from "class-variance-authority";
|
|
11
10
|
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
11
|
+
import { cva } from "class-variance-authority";
|
|
12
12
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
13
|
-
var alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm
|
|
13
|
+
var alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
|
|
14
14
|
variants: {
|
|
15
15
|
variant: {
|
|
16
16
|
default: "bg-card text-card-foreground",
|
|
17
|
-
destructive: "
|
|
17
|
+
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
defaultVariants: {
|
|
@@ -49,7 +49,7 @@ function AlertDescription({
|
|
|
49
49
|
}) {
|
|
50
50
|
return /* @__PURE__ */ jsxDEV("div", {
|
|
51
51
|
"data-slot": "alert-description",
|
|
52
|
-
className: cn("
|
|
52
|
+
className: cn("col-start-2 grid justify-items-start gap-1 text-muted-foreground text-sm [&_p]:leading-relaxed", className),
|
|
53
53
|
...props
|
|
54
54
|
}, undefined, false, undefined, this);
|
|
55
55
|
}
|
|
@@ -6,16 +6,31 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
6
6
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
+
// ui/label.tsx
|
|
10
|
+
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
11
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
12
|
+
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
13
|
+
"use client";
|
|
14
|
+
function Label({
|
|
15
|
+
className,
|
|
16
|
+
...props
|
|
17
|
+
}) {
|
|
18
|
+
return /* @__PURE__ */ jsxDEV(LabelPrimitive.Root, {
|
|
19
|
+
"data-slot": "label",
|
|
20
|
+
className: cn("flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50", className),
|
|
21
|
+
...props
|
|
22
|
+
}, undefined, false, undefined, this);
|
|
23
|
+
}
|
|
9
24
|
// ui/select.tsx
|
|
25
|
+
import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
|
|
10
26
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
11
27
|
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
12
|
-
import {
|
|
13
|
-
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
28
|
+
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
14
29
|
"use client";
|
|
15
30
|
function Select({
|
|
16
31
|
...props
|
|
17
32
|
}) {
|
|
18
|
-
return /* @__PURE__ */
|
|
33
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.Root, {
|
|
19
34
|
"data-slot": "select",
|
|
20
35
|
...props
|
|
21
36
|
}, undefined, false, undefined, this);
|
|
@@ -23,7 +38,7 @@ function Select({
|
|
|
23
38
|
function SelectGroup({
|
|
24
39
|
...props
|
|
25
40
|
}) {
|
|
26
|
-
return /* @__PURE__ */
|
|
41
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.Group, {
|
|
27
42
|
"data-slot": "select-group",
|
|
28
43
|
...props
|
|
29
44
|
}, undefined, false, undefined, this);
|
|
@@ -31,7 +46,7 @@ function SelectGroup({
|
|
|
31
46
|
function SelectValue({
|
|
32
47
|
...props
|
|
33
48
|
}) {
|
|
34
|
-
return /* @__PURE__ */
|
|
49
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.Value, {
|
|
35
50
|
"data-slot": "select-value",
|
|
36
51
|
...props
|
|
37
52
|
}, undefined, false, undefined, this);
|
|
@@ -42,16 +57,16 @@ function SelectTrigger({
|
|
|
42
57
|
children,
|
|
43
58
|
...props
|
|
44
59
|
}) {
|
|
45
|
-
return /* @__PURE__ */
|
|
60
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.Trigger, {
|
|
46
61
|
"data-slot": "select-trigger",
|
|
47
62
|
"data-size": size,
|
|
48
|
-
className:
|
|
63
|
+
className: cn2("flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-2xs outline-hidden transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[size=default]:h-9 data-[size=sm]:h-8 data-placeholder:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:hover:bg-input/50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0", className),
|
|
49
64
|
...props,
|
|
50
65
|
children: [
|
|
51
66
|
children,
|
|
52
|
-
/* @__PURE__ */
|
|
67
|
+
/* @__PURE__ */ jsxDEV2(SelectPrimitive.Icon, {
|
|
53
68
|
asChild: true,
|
|
54
|
-
children: /* @__PURE__ */
|
|
69
|
+
children: /* @__PURE__ */ jsxDEV2(ChevronDownIcon, {
|
|
55
70
|
className: "size-4 opacity-50"
|
|
56
71
|
}, undefined, false, undefined, this)
|
|
57
72
|
}, undefined, false, undefined, this)
|
|
@@ -64,19 +79,19 @@ function SelectContent({
|
|
|
64
79
|
position = "popper",
|
|
65
80
|
...props
|
|
66
81
|
}) {
|
|
67
|
-
return /* @__PURE__ */
|
|
68
|
-
children: /* @__PURE__ */
|
|
82
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.Portal, {
|
|
83
|
+
children: /* @__PURE__ */ jsxDEV2(SelectPrimitive.Content, {
|
|
69
84
|
"data-slot": "select-content",
|
|
70
|
-
className:
|
|
85
|
+
className: cn2("data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in", position === "popper" && "data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1", className),
|
|
71
86
|
position,
|
|
72
87
|
...props,
|
|
73
88
|
children: [
|
|
74
|
-
/* @__PURE__ */
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
-
className:
|
|
89
|
+
/* @__PURE__ */ jsxDEV2(SelectScrollUpButton, {}, undefined, false, undefined, this),
|
|
90
|
+
/* @__PURE__ */ jsxDEV2(SelectPrimitive.Viewport, {
|
|
91
|
+
className: cn2("p-1", position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1"),
|
|
77
92
|
children
|
|
78
93
|
}, undefined, false, undefined, this),
|
|
79
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ jsxDEV2(SelectScrollDownButton, {}, undefined, false, undefined, this)
|
|
80
95
|
]
|
|
81
96
|
}, undefined, true, undefined, this)
|
|
82
97
|
}, undefined, false, undefined, this);
|
|
@@ -85,9 +100,9 @@ function SelectLabel({
|
|
|
85
100
|
className,
|
|
86
101
|
...props
|
|
87
102
|
}) {
|
|
88
|
-
return /* @__PURE__ */
|
|
103
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.Label, {
|
|
89
104
|
"data-slot": "select-label",
|
|
90
|
-
className:
|
|
105
|
+
className: cn2("px-2 py-1.5 text-muted-foreground text-xs", className),
|
|
91
106
|
...props
|
|
92
107
|
}, undefined, false, undefined, this);
|
|
93
108
|
}
|
|
@@ -96,20 +111,20 @@ function SelectItem({
|
|
|
96
111
|
children,
|
|
97
112
|
...props
|
|
98
113
|
}) {
|
|
99
|
-
return /* @__PURE__ */
|
|
114
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.Item, {
|
|
100
115
|
"data-slot": "select-item",
|
|
101
|
-
className:
|
|
116
|
+
className: cn2("relative flex w-full cursor-default select-none items-center gap-2 rounded-xs py-1.5 pr-8 pl-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
|
|
102
117
|
...props,
|
|
103
118
|
children: [
|
|
104
|
-
/* @__PURE__ */
|
|
119
|
+
/* @__PURE__ */ jsxDEV2("span", {
|
|
105
120
|
className: "absolute right-2 flex size-3.5 items-center justify-center",
|
|
106
|
-
children: /* @__PURE__ */
|
|
107
|
-
children: /* @__PURE__ */
|
|
121
|
+
children: /* @__PURE__ */ jsxDEV2(SelectPrimitive.ItemIndicator, {
|
|
122
|
+
children: /* @__PURE__ */ jsxDEV2(CheckIcon, {
|
|
108
123
|
className: "size-4"
|
|
109
124
|
}, undefined, false, undefined, this)
|
|
110
125
|
}, undefined, false, undefined, this)
|
|
111
126
|
}, undefined, false, undefined, this),
|
|
112
|
-
/* @__PURE__ */
|
|
127
|
+
/* @__PURE__ */ jsxDEV2(SelectPrimitive.ItemText, {
|
|
113
128
|
children
|
|
114
129
|
}, undefined, false, undefined, this)
|
|
115
130
|
]
|
|
@@ -119,9 +134,9 @@ function SelectSeparator({
|
|
|
119
134
|
className,
|
|
120
135
|
...props
|
|
121
136
|
}) {
|
|
122
|
-
return /* @__PURE__ */
|
|
137
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.Separator, {
|
|
123
138
|
"data-slot": "select-separator",
|
|
124
|
-
className:
|
|
139
|
+
className: cn2("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
125
140
|
...props
|
|
126
141
|
}, undefined, false, undefined, this);
|
|
127
142
|
}
|
|
@@ -129,11 +144,11 @@ function SelectScrollUpButton({
|
|
|
129
144
|
className,
|
|
130
145
|
...props
|
|
131
146
|
}) {
|
|
132
|
-
return /* @__PURE__ */
|
|
147
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.ScrollUpButton, {
|
|
133
148
|
"data-slot": "select-scroll-up-button",
|
|
134
|
-
className:
|
|
149
|
+
className: cn2("flex cursor-default items-center justify-center py-1", className),
|
|
135
150
|
...props,
|
|
136
|
-
children: /* @__PURE__ */
|
|
151
|
+
children: /* @__PURE__ */ jsxDEV2(ChevronUpIcon, {
|
|
137
152
|
className: "size-4"
|
|
138
153
|
}, undefined, false, undefined, this)
|
|
139
154
|
}, undefined, false, undefined, this);
|
|
@@ -142,30 +157,15 @@ function SelectScrollDownButton({
|
|
|
142
157
|
className,
|
|
143
158
|
...props
|
|
144
159
|
}) {
|
|
145
|
-
return /* @__PURE__ */
|
|
160
|
+
return /* @__PURE__ */ jsxDEV2(SelectPrimitive.ScrollDownButton, {
|
|
146
161
|
"data-slot": "select-scroll-down-button",
|
|
147
|
-
className:
|
|
162
|
+
className: cn2("flex cursor-default items-center justify-center py-1", className),
|
|
148
163
|
...props,
|
|
149
|
-
children: /* @__PURE__ */
|
|
164
|
+
children: /* @__PURE__ */ jsxDEV2(ChevronDownIcon, {
|
|
150
165
|
className: "size-4"
|
|
151
166
|
}, undefined, false, undefined, this)
|
|
152
167
|
}, undefined, false, undefined, this);
|
|
153
168
|
}
|
|
154
|
-
// ui/label.tsx
|
|
155
|
-
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
156
|
-
import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
|
|
157
|
-
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
158
|
-
"use client";
|
|
159
|
-
function Label2({
|
|
160
|
-
className,
|
|
161
|
-
...props
|
|
162
|
-
}) {
|
|
163
|
-
return /* @__PURE__ */ jsxDEV2(LabelPrimitive.Root, {
|
|
164
|
-
"data-slot": "label",
|
|
165
|
-
className: cn2("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
|
|
166
|
-
...props
|
|
167
|
-
}, undefined, false, undefined, this);
|
|
168
|
-
}
|
|
169
169
|
// ui/atoms/FilterSelect/FilterSelect.tsx
|
|
170
170
|
import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
|
|
171
171
|
var FilterSelect = ({
|
|
@@ -181,8 +181,8 @@ var FilterSelect = ({
|
|
|
181
181
|
return /* @__PURE__ */ jsxDEV3("div", {
|
|
182
182
|
className: `space-y-2 ${className}`,
|
|
183
183
|
children: [
|
|
184
|
-
label && /* @__PURE__ */ jsxDEV3(
|
|
185
|
-
className: "
|
|
184
|
+
label && /* @__PURE__ */ jsxDEV3(Label, {
|
|
185
|
+
className: "font-medium text-base text-foreground",
|
|
186
186
|
children: label
|
|
187
187
|
}, undefined, false, undefined, this),
|
|
188
188
|
/* @__PURE__ */ jsxDEV3(Select, {
|
|
@@ -204,7 +204,7 @@ var FilterSelect = ({
|
|
|
204
204
|
children: [
|
|
205
205
|
"Tous",
|
|
206
206
|
showCounts && /* @__PURE__ */ jsxDEV3("span", {
|
|
207
|
-
className: "text-muted-foreground
|
|
207
|
+
className: "ml-2 text-muted-foreground text-sm",
|
|
208
208
|
children: [
|
|
209
209
|
"(",
|
|
210
210
|
options.reduce((sum, option) => sum + (option.count || 0), 0),
|
|
@@ -222,7 +222,7 @@ var FilterSelect = ({
|
|
|
222
222
|
children: option.label
|
|
223
223
|
}, undefined, false, undefined, this),
|
|
224
224
|
showCounts && option.count !== undefined && /* @__PURE__ */ jsxDEV3("span", {
|
|
225
|
-
className: "text-muted-foreground
|
|
225
|
+
className: "ml-2 text-muted-foreground text-sm",
|
|
226
226
|
children: [
|
|
227
227
|
"(",
|
|
228
228
|
option.count,
|