@codefast/ui 0.4.0-canary.6 → 0.5.0-canary.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/CHANGELOG.md +132 -0
- package/dist/components/alert-dialog.mjs +1 -1
- package/dist/components/alert.mjs +1 -1
- package/dist/components/avatar.mjs +1 -1
- package/dist/components/calendar.mjs +2 -2
- package/dist/components/carousel.mjs +2 -2
- package/dist/components/context-menu.mjs +2 -2
- package/dist/components/dialog.mjs +2 -2
- package/dist/components/drawer.mjs +1 -1
- package/dist/components/dropdown-menu.mjs +2 -2
- package/dist/components/menubar.mjs +2 -2
- package/dist/components/native-select.mjs +1 -1
- package/dist/components/navigation-menu.mjs +2 -2
- package/dist/components/radio-cards.mjs +1 -1
- package/dist/components/radio-group.mjs +1 -1
- package/dist/components/resizable.mjs +1 -1
- package/dist/components/select.mjs +1 -1
- package/dist/components/sheet.mjs +1 -1
- package/dist/components/sidebar.mjs +5 -5
- package/dist/components/switch.mjs +1 -1
- package/dist/components/table.mjs +2 -2
- package/dist/components/tabs.mjs +1 -1
- package/dist/variants/sheet.mjs +2 -2
- package/package.json +23 -12
- package/src/components/alert-dialog.tsx +1 -1
- package/src/components/alert.tsx +1 -1
- package/src/components/avatar.tsx +1 -1
- package/src/components/calendar.tsx +2 -2
- package/src/components/carousel.tsx +4 -4
- package/src/components/context-menu.tsx +2 -2
- package/src/components/dialog.tsx +2 -2
- package/src/components/drawer.tsx +1 -1
- package/src/components/dropdown-menu.tsx +2 -2
- package/src/components/menubar.tsx +2 -2
- package/src/components/native-select.tsx +1 -1
- package/src/components/navigation-menu.tsx +2 -2
- package/src/components/radio-cards.tsx +1 -1
- package/src/components/radio-group.tsx +1 -1
- package/src/components/resizable.tsx +1 -1
- package/src/components/select.tsx +1 -1
- package/src/components/sheet.tsx +1 -1
- package/src/components/sidebar.tsx +5 -5
- package/src/components/switch.tsx +1 -1
- package/src/components/table.tsx +2 -2
- package/src/components/tabs.tsx +1 -1
- package/src/css/foundation/variants.css +4 -11
- package/src/css/themes/amber.css +2 -50
- package/src/css/themes/blue.css +2 -50
- package/src/css/themes/cyan.css +2 -50
- package/src/css/themes/emerald.css +2 -50
- package/src/css/themes/fuchsia.css +2 -50
- package/src/css/themes/gray.css +2 -50
- package/src/css/themes/green.css +2 -50
- package/src/css/themes/indigo.css +2 -50
- package/src/css/themes/lime.css +2 -50
- package/src/css/themes/neutral.css +2 -50
- package/src/css/themes/orange.css +2 -50
- package/src/css/themes/pink.css +2 -50
- package/src/css/themes/purple.css +2 -50
- package/src/css/themes/red.css +2 -50
- package/src/css/themes/rose.css +2 -50
- package/src/css/themes/sky.css +2 -50
- package/src/css/themes/slate.css +2 -50
- package/src/css/themes/stone.css +2 -50
- package/src/css/themes/teal.css +2 -50
- package/src/css/themes/violet.css +2 -50
- package/src/css/themes/yellow.css +2 -50
- package/src/css/themes/zinc.css +2 -50
- package/src/variants/sheet.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,137 @@
|
|
|
1
1
|
# @codefast/ui
|
|
2
2
|
|
|
3
|
+
## 0.5.0-canary.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @codefast/tailwind-variants@0.5.0-canary.0
|
|
9
|
+
|
|
10
|
+
## 0.4.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- [`aa7bb5c`](https://github.com/codefastlabs/codefast/commit/aa7bb5ce612302876aa437bcd43ef0da4507371c) Thanks [@thevuong](https://github.com/thevuong)! - feat(checkbox): render the indeterminate state across the checkbox family — fill the box and swap to a minus icon when `data-state="indeterminate"`, with a matching `data-indeterminate` variant
|
|
15
|
+
|
|
16
|
+
- [`6ed13a0`](https://github.com/codefastlabs/codefast/commit/6ed13a07713f4670b0f1813566af2c083989abd1) Thanks [@thevuong](https://github.com/thevuong)! - Add `--ease-exit` motion token and apply asymmetric enter/exit easing across overlay, popup, accordion, and sidebar components, syncing dialog overlay durations with content.
|
|
17
|
+
|
|
18
|
+
- [`0355d6b`](https://github.com/codefastlabs/codefast/commit/0355d6bfaf26bd465a811a6123e16f88fdb2fede) Thanks [@thevuong](https://github.com/thevuong)! - Add semantic motion duration tokens (`menu`, `popup`, `overlay`, `panel`, `expand`) and retune component timings for snappier feedback — menus 150/100ms, popovers 200/120ms, dialogs 220/150ms, sheets and drawers 320/220ms, accordion 200/150ms.
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- [`2397801`](https://github.com/codefastlabs/codefast/commit/239780172d7a71c3426382ec66309ec7f39bd883) Thanks [@thevuong](https://github.com/thevuong)! - chore: align package config globs
|
|
23
|
+
|
|
24
|
+
- [`be5fb85`](https://github.com/codefastlabs/codefast/commit/be5fb8568f871ea6a396b431caa48c1a9a7b6efb) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): update source file patterns in preset.css
|
|
25
|
+
|
|
26
|
+
- [`b126ce7`](https://github.com/codefastlabs/codefast/commit/b126ce79b786b282914a1b1bffaaeb9d32d528a7) Thanks [@thevuong](https://github.com/thevuong)! - feat(motion): add control duration tokens and apply them to form controls
|
|
27
|
+
|
|
28
|
+
Define two semantic timing tokens in the motion foundation and use them across Switch, Checkbox (+ Cards/Group) and Radio (+ Group/Cards):
|
|
29
|
+
|
|
30
|
+
- `--transition-duration-control: 200ms` — container/ring (switch track, checkbox & radio box)
|
|
31
|
+
- `--transition-duration-control-indicator: 300ms` — the moving part (switch thumb, check/dot, native radio dot)
|
|
32
|
+
|
|
33
|
+
They live in the `--transition-duration-*` namespace so they mint clean `duration-control` / `duration-control-indicator` utilities. Because `animate-in` falls back to `--tw-duration`, the same `duration-*` utility drives both the state transitions and the indicator keyframes — one token, one utility, no arbitrary `duration-(--…)` syntax.
|
|
34
|
+
|
|
35
|
+
- [`8a1a2e7`](https://github.com/codefastlabs/codefast/commit/8a1a2e74d985ae36a00855938c8ed7ab8699ad48) Thanks [@thevuong](https://github.com/thevuong)! - refactor(motion): shorten control transition durations (container 200→100ms, indicator 300→200ms) for snappier switches, checkboxes, and radios
|
|
36
|
+
|
|
37
|
+
- [`7242fb2`](https://github.com/codefastlabs/codefast/commit/7242fb2a10e1dbb4a23d95060e6ab22a52dd04ba) Thanks [@thevuong](https://github.com/thevuong)! - style(controls): differentiate motion tokens by role across form controls
|
|
38
|
+
|
|
39
|
+
Apply the design system's motion curves consistently: containers/rings use `ease-snappy`, while the moving/appearing indicators use `ease-spring`.
|
|
40
|
+
|
|
41
|
+
- Switch thumb now eases with `ease-spring` (the positional slide); the track keeps `ease-snappy`.
|
|
42
|
+
- Checkbox, CheckboxCards and CheckboxGroup indicators spring-scale in (`animate-in zoom-in-50 ease-spring`) instead of appearing instantly.
|
|
43
|
+
- RadioGroup and RadioCards dots spring-scale in, centering preserved.
|
|
44
|
+
|
|
45
|
+
- [`b80606a`](https://github.com/codefastlabs/codefast/commit/b80606ab8dd9f48afa0b0d8f8da025c0158f70fc) Thanks [@thevuong](https://github.com/thevuong)! - style(switch, checkbox): apply the ease-snappy motion token to control transitions
|
|
46
|
+
|
|
47
|
+
Switch (track + thumb slide) and the Checkbox family previously used bare `transition-*` utilities, falling back to Tailwind's hardcoded default curve. They now use the design system's `--ease-snappy` token so the timing stays consistent with the rest of the motion system and follows future theme retunes.
|
|
48
|
+
|
|
49
|
+
- [`2d80596`](https://github.com/codefastlabs/codefast/commit/2d80596025c11f61ecb4334a28c478ed81bfd409) Thanks [@thevuong](https://github.com/thevuong)! - Migrate physical CSS direction utilities to their logical (start/end) equivalents so components mirror correctly under RTL.
|
|
50
|
+
|
|
51
|
+
- [`36ced8f`](https://github.com/codefastlabs/codefast/commit/36ced8f754989c50b78722ef07cadb37349c155e) Thanks [@thevuong](https://github.com/thevuong)! - chore(deps): update catalog dependencies — radix-ui 1.5.0, react-hook-form 7.78.0, TanStack Router/Start patches, hono 4.12.25, oxfmt 0.54 / oxlint 1.69, knip 6.16, turbo 2.9.17-canary.7 — and bump pnpm to 11.5.2
|
|
52
|
+
|
|
53
|
+
- [`72ac094`](https://github.com/codefastlabs/codefast/commit/72ac0945e6901435c01a8d120e9c88e7506ecc1a) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): extract component variants into separate files
|
|
54
|
+
|
|
55
|
+
- [`81dfc17`](https://github.com/codefastlabs/codefast/commit/81dfc178bd2f01e711a3453036558a66240eb8fa) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): remove "use client" directive from multiple components
|
|
56
|
+
|
|
57
|
+
- [`61950fa`](https://github.com/codefastlabs/codefast/commit/61950fa1612011dfa0739a71014879097a1d39d5) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): replace @radix-ui/react-context with radix-ui package
|
|
58
|
+
|
|
59
|
+
- [`8f28029`](https://github.com/codefastlabs/codefast/commit/8f28029886f3e4d2fd4e8de4ef7fa5583afb2489) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): adjust border radius in input group styles
|
|
60
|
+
|
|
61
|
+
- [`92e085b`](https://github.com/codefastlabs/codefast/commit/92e085b8fe7afd4a3a43dcfe3e46aa1c2c3cb0e3) Thanks [@thevuong](https://github.com/thevuong)! - fix(ui): align ContextMenuSubTrigger spacing with ContextMenuItem so submenu trigger icons sit correctly
|
|
62
|
+
|
|
63
|
+
- [`4e60f6e`](https://github.com/codefastlabs/codefast/commit/4e60f6ee0366cea83a16c87162751112052204af) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): streamline component styling and className usage
|
|
64
|
+
|
|
65
|
+
- [`f79b333`](https://github.com/codefastlabs/codefast/commit/f79b333d0599c19028f29b9889afcbfb99db91a1) Thanks [@thevuong](https://github.com/thevuong)! - feat(dev): enable source condition for zero-rebuild HMR in apps/docs
|
|
66
|
+
|
|
67
|
+
- [`3602626`](https://github.com/codefastlabs/codefast/commit/3602626e720af8710c6cca058f84e96010853c86) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): enhance InputGroup component structure and styling
|
|
68
|
+
|
|
69
|
+
- [`81fa5b6`](https://github.com/codefastlabs/codefast/commit/81fa5b6ca3e332c0d088d47d2768543e23491350) Thanks [@thevuong](https://github.com/thevuong)! - feat(ui): enhance InputNumber component with new split variant and additional functionality
|
|
70
|
+
|
|
71
|
+
- [`354c97e`](https://github.com/codefastlabs/codefast/commit/354c97ec3109bd7d59e1200171a78da17dbdc59c) Thanks [@thevuong](https://github.com/thevuong)! - fix(menubar): align `menubar-label` styling with the dropdown/context menu family — use `text-xs` and `text-muted-foreground` to match `dropdown-menu-label` and `context-menu-label`
|
|
72
|
+
|
|
73
|
+
- [`ea62fa8`](https://github.com/codefastlabs/codefast/commit/ea62fa8243be7d06a9f2f097ac44d2843f003ef1) Thanks [@thevuong](https://github.com/thevuong)! - refactor(navigation-menu): pass the trigger `className` to `navigationMenuTriggerVariants` as a `ClassValue` array instead of pre-merging with `cn`, letting the variant resolver handle merging in one pass
|
|
74
|
+
|
|
75
|
+
- [`be02960`](https://github.com/codefastlabs/codefast/commit/be029601a0321c79e0d8b12121b144fef3274ef7) Thanks [@thevuong](https://github.com/thevuong)! - Fix navigation menu viewport scale animation by replacing the invalid `origin-top-center` class with `origin-[top_center]`.
|
|
76
|
+
|
|
77
|
+
- [`43029c0`](https://github.com/codefastlabs/codefast/commit/43029c0e9e2a6c70173f283a13de888c6e350616) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): update component styling for consistency and clarity
|
|
78
|
+
|
|
79
|
+
- [`5c82b5e`](https://github.com/codefastlabs/codefast/commit/5c82b5ea742701ac7836ffa8bb4bf4135e069d1d) Thanks [@thevuong](https://github.com/thevuong)! - Use minimum `>=` ranges in peerDependencies instead of `^` caret ranges.
|
|
80
|
+
|
|
81
|
+
- [`bea29d7`](https://github.com/codefastlabs/codefast/commit/bea29d73d18c7d0419db08ee33672794c414a827) Thanks [@thevuong](https://github.com/thevuong)! - Migrate reduced-motion handling to Tailwind `motion-reduce` utilities across UI components.
|
|
82
|
+
|
|
83
|
+
- [`e3ea150`](https://github.com/codefastlabs/codefast/commit/e3ea15046bc5a23d777719aa0f4ba46efda6d15d) Thanks [@thevuong](https://github.com/thevuong)! - fix(radio-group): lay the root out as a flex column instead of a grid so items stack predictably
|
|
84
|
+
|
|
85
|
+
- [`90a4aae`](https://github.com/codefastlabs/codefast/commit/90a4aae9720dc36cf89432139c582dba3b40e5bb) Thanks [@thevuong](https://github.com/thevuong)! - style(radio): spring the native radio dot, matching RadioGroup
|
|
86
|
+
|
|
87
|
+
The native `Radio` input drew its dot with a `::before` that doubled as the unchecked fill, so animating it made the dot shrink in — the opposite of the Radix-based RadioGroup/RadioCards dots, which scale up. Move the inner fill onto the input's own `bg-background`/`bg-input` so `::before` is purely the dot, then scale it `0 → 1` with `before:transition-transform before:ease-spring` on check. The dot now grows in with the same spring curve as the other radios; the static appearance is unchanged in light and dark.
|
|
88
|
+
|
|
89
|
+
- [`6c3ac44`](https://github.com/codefastlabs/codefast/commit/6c3ac44b7ddb9e5bcf3fbe0757e00ef86f27b513) Thanks [@thevuong](https://github.com/thevuong)! - Normalize import statement order and package.json key order repo-wide via the new oxfmt `sortImports`/`sortPackageJson` settings — purely mechanical, no runtime behavior change.
|
|
90
|
+
|
|
91
|
+
- [`908fdb9`](https://github.com/codefastlabs/codefast/commit/908fdb9e4470da6ab9329f705ba4cae8831b92c8) Thanks [@thevuong](https://github.com/thevuong)! - fix(ui): restore side-scoped slide animations on popover, hover-card, select, and tooltip
|
|
92
|
+
|
|
93
|
+
Reinstate ease-snappy easing with distinct open/close durations, scope slide-in
|
|
94
|
+
classes under data-open (and data-delayed-open for tooltip), and bring back
|
|
95
|
+
directional slide-out on close — matching the previously restored context menu,
|
|
96
|
+
dropdown menu, and menubar motion.
|
|
97
|
+
|
|
98
|
+
- [`d059a00`](https://github.com/codefastlabs/codefast/commit/d059a00c8beeff35fc887318486fd4f7a1883e38) Thanks [@thevuong](https://github.com/thevuong)! - fix(ui): flip transforms and resize cursors under `dir="rtl"`
|
|
99
|
+
|
|
100
|
+
Logical properties (`start-*`) flip in RTL but the paired `translate-x`/`cursor`
|
|
101
|
+
utilities do not, leaving elements offset. Add `rtl:` overrides so Dialog and
|
|
102
|
+
AlertDialog stay centred, the Switch thumb slides the correct way, and the
|
|
103
|
+
Carousel buttons, Resizable handle, Select popper offset, Sidebar rail cursors,
|
|
104
|
+
and RadioCards indicator all mirror correctly.
|
|
105
|
+
|
|
106
|
+
- [`0f9c31b`](https://github.com/codefastlabs/codefast/commit/0f9c31ba3daa6ab84b986277e9f459a03b2efac1) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): enhance BreadcrumbSeparator component styling and props
|
|
107
|
+
|
|
108
|
+
- [`6dfa3aa`](https://github.com/codefastlabs/codefast/commit/6dfa3aa9bd805870a37e49ec179a7901bc7c550b) Thanks [@thevuong](https://github.com/thevuong)! - Scope overlay enter/exit timing with `animation-duration-*` utilities (no more implicit all-property transitions from `duration-*`), make the navigation menu viewport size transition explicit, and fix the input OTP caret blink speed so the intended 1s duration actually applies.
|
|
109
|
+
|
|
110
|
+
- [`e7957a7`](https://github.com/codefastlabs/codefast/commit/e7957a7c7f054e27dc8ddc9a2d70dc9611aad86f) Thanks [@thevuong](https://github.com/thevuong)! - Refine component motion with spring, snappy, and gentle easing tokens, shimmer skeleton loading, consistent theme token ordering, polished transitions on overlay and form controls, and subtler checkbox, radio, and switch press feedback.
|
|
111
|
+
|
|
112
|
+
- [`2758038`](https://github.com/codefastlabs/codefast/commit/275803861ee088d876d736342697b08a5e8ff663) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): replace `react-day-picker` with `@daypicker/react`
|
|
113
|
+
|
|
114
|
+
- [`7f2916c`](https://github.com/codefastlabs/codefast/commit/7f2916c2048f2e770f29152e6bac0a67ce641e72) Thanks [@thevuong](https://github.com/thevuong)! - refactor(switch): align default size to the spacing grid
|
|
115
|
+
|
|
116
|
+
Replace the hand-computed `h-[18.4px]` track and `translate-x-[calc(100%-2px)]` thumb offsets with on-grid utilities (`h-4.5`, `translate-x-3.5`/`translate-x-2.5`). The checked thumb travel is unchanged (14px default, 10px small); the default track is 0.4px shorter (18.4px → 18px).
|
|
117
|
+
|
|
118
|
+
- [`2acd2a7`](https://github.com/codefastlabs/codefast/commit/2acd2a7fc256a9510fa6efbb62342679dbb0919f) Thanks [@thevuong](https://github.com/thevuong)! - Support system dark mode via prefers-color-scheme, soften dialog and sheet overlays with backdrop blur, and polish bottom sheet layout for mobile safe areas.
|
|
119
|
+
|
|
120
|
+
- [`19306bb`](https://github.com/codefastlabs/codefast/commit/19306bb40a6a7e8d34f071f90450224ef74cbf3b) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): simplify `utils.ts` imports and cleanup
|
|
121
|
+
|
|
122
|
+
- [`f37002d`](https://github.com/codefastlabs/codefast/commit/f37002d9e8e5a56d58bf9251a0bae7a6be0ad278) Thanks [@thevuong](https://github.com/thevuong)! - feat(ui): export DirectionProvider to propagate reading direction
|
|
123
|
+
|
|
124
|
+
- [`84ac2e0`](https://github.com/codefastlabs/codefast/commit/84ac2e02716f8c23956aa0045a48b0e8b117b354) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): simplify DirectionProvider and useDirection
|
|
125
|
+
|
|
126
|
+
- [`547cf34`](https://github.com/codefastlabs/codefast/commit/547cf34cc43c44f4b46680f66cbe30fb42e7ff2c) Thanks [@thevuong](https://github.com/thevuong)! - Tune dialog, alert-dialog, drawer, and sheet overlay animations with asymmetric open/close durations and gentle easing.
|
|
127
|
+
|
|
128
|
+
- [`339c794`](https://github.com/codefastlabs/codefast/commit/339c79460e287ac7ec5e12ff68496aad01b664a2) Thanks [@thevuong](https://github.com/thevuong)! - Replace directional `text-left` utilities with logical `text-start` in accordion, alert-dialog, drawer, field, item, table, alert, and sidebar so text alignment follows the document direction in RTL layouts.
|
|
129
|
+
|
|
130
|
+
- [`2dbf2ea`](https://github.com/codefastlabs/codefast/commit/2dbf2ea8779ed390f7d36ac4c80f63a9f61a6123) Thanks [@thevuong](https://github.com/thevuong)! - refactor(ui): drop redundant single-arg `cn(className)` in Breadcrumb, CalendarRoot, AlertDialogAction/Cancel, and SidebarTrigger — `className` already forwards through `...props`, so the extra destructure and wrapper added nothing
|
|
131
|
+
|
|
132
|
+
- Updated dependencies [[`2397801`](https://github.com/codefastlabs/codefast/commit/239780172d7a71c3426382ec66309ec7f39bd883), [`6350584`](https://github.com/codefastlabs/codefast/commit/635058490b7c08a07771897403107b3ae86fca19), [`f79b333`](https://github.com/codefastlabs/codefast/commit/f79b333d0599c19028f29b9889afcbfb99db91a1), [`8432414`](https://github.com/codefastlabs/codefast/commit/8432414b941a61f67800c378da73c8f45913913f), [`6c3ac44`](https://github.com/codefastlabs/codefast/commit/6c3ac44b7ddb9e5bcf3fbe0757e00ef86f27b513), [`d07b567`](https://github.com/codefastlabs/codefast/commit/d07b5671661e0fbef03fbbf42c1d603a65d796e5), [`649cf5a`](https://github.com/codefastlabs/codefast/commit/649cf5a63b654dd6517ff472a1c2a0e35db86fdf)]:
|
|
133
|
+
- @codefast/tailwind-variants@0.4.0
|
|
134
|
+
|
|
3
135
|
## 0.4.0-canary.6
|
|
4
136
|
|
|
5
137
|
### Patch Changes
|
|
@@ -31,7 +31,7 @@ function AlertDialogContent({ className, size = "default", ...props }) {
|
|
|
31
31
|
className: "fixed inset-0 z-50 bg-black/10 ease-gentle supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:animation-duration-overlay-in data-open:fade-in-0 data-closed:animate-out data-closed:ease-exit data-closed:animation-duration-overlay-out data-closed:fade-out-0",
|
|
32
32
|
"data-slot": "alert-dialog-overlay"
|
|
33
33
|
}), /* @__PURE__ */ jsx(AlertDialog$1.Content, {
|
|
34
|
-
className: cn("group/alert-dialog-content fixed
|
|
34
|
+
className: cn("group/alert-dialog-content fixed inset-s-1/2 top-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-full -translate-x-1/2 -translate-y-1/2 flex-col gap-6 overflow-y-auto rounded-xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/10 ease-ui outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg rtl:translate-x-1/2 data-open:animate-in data-open:animation-duration-overlay-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:ease-exit data-closed:animation-duration-overlay-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
35
35
|
"data-size": size,
|
|
36
36
|
"data-slot": "alert-dialog-content",
|
|
37
37
|
...props
|
|
@@ -41,7 +41,7 @@ function AlertDescription({ className, ...props }) {
|
|
|
41
41
|
*/
|
|
42
42
|
function AlertAction({ className, ...props }) {
|
|
43
43
|
return /* @__PURE__ */ jsx("div", {
|
|
44
|
-
className: cn("absolute
|
|
44
|
+
className: cn("absolute inset-e-3 top-2.5", className),
|
|
45
45
|
"data-slot": "alert-action",
|
|
46
46
|
...props
|
|
47
47
|
});
|
|
@@ -38,7 +38,7 @@ function AvatarFallback({ className, ...props }) {
|
|
|
38
38
|
*/
|
|
39
39
|
function AvatarBadge({ className, ...props }) {
|
|
40
40
|
return /* @__PURE__ */ jsx("span", {
|
|
41
|
-
className: cn("absolute
|
|
41
|
+
className: cn("absolute inset-e-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className),
|
|
42
42
|
"data-slot": "avatar-badge",
|
|
43
43
|
...props
|
|
44
44
|
});
|
|
@@ -33,9 +33,9 @@ function Calendar({ buttonVariant = "ghost", captionLayout = "label", className,
|
|
|
33
33
|
week_number_header: cn("w-(--cell-size) select-none", defaultClassNames.week_number_header),
|
|
34
34
|
week_number: cn("text-[0.8rem] text-muted-foreground select-none", defaultClassNames.week_number),
|
|
35
35
|
day: cn("group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-s-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius)", defaultClassNames.day),
|
|
36
|
-
range_start: cn("relative isolate z-0 rounded-s-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:
|
|
36
|
+
range_start: cn("relative isolate z-0 rounded-s-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:inset-e-0 after:w-4 after:bg-muted", defaultClassNames.range_start),
|
|
37
37
|
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
38
|
-
range_end: cn("relative isolate z-0 rounded-e-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:
|
|
38
|
+
range_end: cn("relative isolate z-0 rounded-e-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:inset-s-0 after:w-4 after:bg-muted", defaultClassNames.range_end),
|
|
39
39
|
today: cn("rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none", defaultClassNames.today),
|
|
40
40
|
outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
|
|
41
41
|
disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
@@ -125,7 +125,7 @@ function CarouselPrevious({ __scopeCarousel, className, size = "icon-sm", varian
|
|
|
125
125
|
const { canScrollPrev, orientation, scrollPrev } = useCarouselContext(CAROUSEL_PREVIOUS_NAME, __scopeCarousel);
|
|
126
126
|
return /* @__PURE__ */ jsxs(Button, {
|
|
127
127
|
"aria-label": "Previous slide",
|
|
128
|
-
className: cn("absolute touch-manipulation rounded-full", orientation === "horizontal" ? "-
|
|
128
|
+
className: cn("absolute touch-manipulation rounded-full", orientation === "horizontal" ? "-inset-s-12 top-1/2 -translate-y-1/2 active:not-aria-[haspopup]:translate-y-[calc(-50%+1px)]" : "inset-s-1/2 -top-12 -translate-x-1/2 rotate-90 rtl:translate-x-1/2", className),
|
|
129
129
|
"data-slot": "carousel-previous",
|
|
130
130
|
disabled: !canScrollPrev,
|
|
131
131
|
size,
|
|
@@ -146,7 +146,7 @@ function CarouselNext({ __scopeCarousel, className, size = "icon-sm", variant =
|
|
|
146
146
|
const { canScrollNext, orientation, scrollNext } = useCarouselContext(CAROUSEL_NEXT_NAME, __scopeCarousel);
|
|
147
147
|
return /* @__PURE__ */ jsxs(Button, {
|
|
148
148
|
"aria-label": "Next slide",
|
|
149
|
-
className: cn("absolute touch-manipulation rounded-full", orientation === "horizontal" ? "-
|
|
149
|
+
className: cn("absolute touch-manipulation rounded-full", orientation === "horizontal" ? "-inset-e-12 top-1/2 -translate-y-1/2 active:not-aria-[haspopup]:translate-y-[calc(-50%+1px)]" : "inset-s-1/2 -bottom-12 -translate-x-1/2 rotate-90 rtl:translate-x-1/2", className),
|
|
150
150
|
"data-slot": "carousel-next",
|
|
151
151
|
disabled: !canScrollNext,
|
|
152
152
|
size,
|
|
@@ -107,7 +107,7 @@ function ContextMenuCheckboxItem({ checked, children, className, inset, ...props
|
|
|
107
107
|
"data-slot": "context-menu-checkbox-item",
|
|
108
108
|
...props,
|
|
109
109
|
children: [/* @__PURE__ */ jsx("span", {
|
|
110
|
-
className: "pointer-events-none absolute
|
|
110
|
+
className: "pointer-events-none absolute inset-e-2",
|
|
111
111
|
children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
112
112
|
}), children]
|
|
113
113
|
});
|
|
@@ -122,7 +122,7 @@ function ContextMenuRadioItem({ children, className, inset, ...props }) {
|
|
|
122
122
|
"data-slot": "context-menu-radio-item",
|
|
123
123
|
...props,
|
|
124
124
|
children: [/* @__PURE__ */ jsx("span", {
|
|
125
|
-
className: "pointer-events-none absolute
|
|
125
|
+
className: "pointer-events-none absolute inset-e-2",
|
|
126
126
|
children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
127
127
|
}), children]
|
|
128
128
|
});
|
|
@@ -32,14 +32,14 @@ function DialogContent({ children, className, showCloseButton = true, ...props }
|
|
|
32
32
|
className: "fixed inset-0 isolate z-50 bg-black/10 ease-gentle supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:animation-duration-overlay-in data-open:fade-in-0 data-closed:animate-out data-closed:ease-exit data-closed:animation-duration-overlay-out data-closed:fade-out-0",
|
|
33
33
|
"data-slot": "dialog-overlay"
|
|
34
34
|
}), /* @__PURE__ */ jsxs(Dialog$1.Content, {
|
|
35
|
-
className: cn("fixed
|
|
35
|
+
className: cn("fixed inset-s-1/2 top-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 flex-col gap-6 overflow-y-auto rounded-xl bg-popover p-6 text-sm text-popover-foreground ring-1 ring-foreground/10 ease-ui outline-none sm:max-w-md rtl:translate-x-1/2 data-open:animate-in data-open:animation-duration-overlay-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:ease-exit data-closed:animation-duration-overlay-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
36
36
|
"data-slot": "dialog-content",
|
|
37
37
|
...props,
|
|
38
38
|
children: [children, showCloseButton ? /* @__PURE__ */ jsx(Dialog$1.Close, {
|
|
39
39
|
asChild: true,
|
|
40
40
|
"data-slot": "dialog-close",
|
|
41
41
|
children: /* @__PURE__ */ jsxs(Button, {
|
|
42
|
-
className: "absolute
|
|
42
|
+
className: "absolute inset-e-4 top-4",
|
|
43
43
|
size: "icon-sm",
|
|
44
44
|
variant: "ghost",
|
|
45
45
|
children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
@@ -32,7 +32,7 @@ function DrawerContent({ children, className, ...props }) {
|
|
|
32
32
|
className: "fixed inset-0 z-50 bg-black/10 ease-gentle supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:animation-duration-panel-in data-open:fade-in-0 data-closed:animate-out data-closed:ease-exit data-closed:animation-duration-panel-out data-closed:fade-out-0",
|
|
33
33
|
"data-slot": "drawer-overlay"
|
|
34
34
|
}), /* @__PURE__ */ jsxs(Drawer$1.Content, {
|
|
35
|
-
className: cn("group/drawer-content fixed z-50 flex h-auto flex-col bg-popover text-sm text-popover-foreground data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:
|
|
35
|
+
className: cn("group/drawer-content fixed z-50 flex h-auto flex-col bg-popover text-sm text-popover-foreground data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:inset-s-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-e-xl data-[vaul-drawer-direction=left]:border-e data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:inset-e-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-s-xl data-[vaul-drawer-direction=right]:border-s data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm", className),
|
|
36
36
|
"data-slot": "drawer-content",
|
|
37
37
|
...props,
|
|
38
38
|
children: [/* @__PURE__ */ jsx("div", { className: "mx-auto mt-4 hidden h-1.5 w-25 shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }), children]
|
|
@@ -111,7 +111,7 @@ function DropdownMenuCheckboxItem({ checked, children, className, inset, ...prop
|
|
|
111
111
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
112
112
|
...props,
|
|
113
113
|
children: [/* @__PURE__ */ jsx("span", {
|
|
114
|
-
className: "pointer-events-none absolute
|
|
114
|
+
className: "pointer-events-none absolute inset-e-2 flex items-center justify-center",
|
|
115
115
|
"data-slot": "dropdown-menu-checkbox-item-indicator",
|
|
116
116
|
children: /* @__PURE__ */ jsx(DropdownMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
117
117
|
}), children]
|
|
@@ -127,7 +127,7 @@ function DropdownMenuRadioItem({ children, className, inset, ...props }) {
|
|
|
127
127
|
"data-slot": "dropdown-menu-radio-item",
|
|
128
128
|
...props,
|
|
129
129
|
children: [/* @__PURE__ */ jsx("span", {
|
|
130
|
-
className: "pointer-events-none absolute
|
|
130
|
+
className: "pointer-events-none absolute inset-e-2 flex items-center justify-center",
|
|
131
131
|
"data-slot": "dropdown-menu-radio-item-indicator",
|
|
132
132
|
children: /* @__PURE__ */ jsx(DropdownMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
133
133
|
}), children]
|
|
@@ -123,7 +123,7 @@ function MenubarCheckboxItem({ checked, children, className, inset, ...props })
|
|
|
123
123
|
"data-slot": "menubar-checkbox-item",
|
|
124
124
|
...props,
|
|
125
125
|
children: [/* @__PURE__ */ jsx("span", {
|
|
126
|
-
className: "pointer-events-none absolute
|
|
126
|
+
className: "pointer-events-none absolute inset-s-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
|
|
127
127
|
children: /* @__PURE__ */ jsx(Menubar$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
128
128
|
}), children]
|
|
129
129
|
});
|
|
@@ -138,7 +138,7 @@ function MenubarRadioItem({ children, className, inset, ...props }) {
|
|
|
138
138
|
"data-slot": "menubar-radio-item",
|
|
139
139
|
...props,
|
|
140
140
|
children: [/* @__PURE__ */ jsx("span", {
|
|
141
|
-
className: "pointer-events-none absolute
|
|
141
|
+
className: "pointer-events-none absolute inset-s-2 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
|
|
142
142
|
children: /* @__PURE__ */ jsx(Menubar$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
143
143
|
}), children]
|
|
144
144
|
});
|
|
@@ -17,7 +17,7 @@ function NativeSelect({ className, size = "default", ...props }) {
|
|
|
17
17
|
...props
|
|
18
18
|
}), /* @__PURE__ */ jsx(ChevronDownIcon, {
|
|
19
19
|
"aria-hidden": "true",
|
|
20
|
-
className: "pointer-events-none absolute
|
|
20
|
+
className: "pointer-events-none absolute inset-e-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground select-none",
|
|
21
21
|
"data-slot": "native-select-icon"
|
|
22
22
|
})]
|
|
23
23
|
});
|
|
@@ -60,7 +60,7 @@ function NavigationMenuTrigger({ children, className, ...props }) {
|
|
|
60
60
|
*/
|
|
61
61
|
function NavigationMenuContent({ className, ...props }) {
|
|
62
62
|
return /* @__PURE__ */ jsx(NavigationMenu$1.Content, {
|
|
63
|
-
className: cn("
|
|
63
|
+
className: cn("inset-s-0 top-0 w-full p-2 pe-2.5 ease-snappy group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:animation-duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:ease-exit data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 data-closed:ease-exit group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95", className),
|
|
64
64
|
"data-slot": "navigation-menu-content",
|
|
65
65
|
...props
|
|
66
66
|
});
|
|
@@ -80,7 +80,7 @@ function NavigationMenuLink({ className, ...props }) {
|
|
|
80
80
|
*/
|
|
81
81
|
function NavigationMenuViewport({ className, ...props }) {
|
|
82
82
|
return /* @__PURE__ */ jsx("div", {
|
|
83
|
-
className: "absolute
|
|
83
|
+
className: "absolute inset-s-0 top-full isolate z-50 flex justify-center",
|
|
84
84
|
children: /* @__PURE__ */ jsx(NavigationMenu$1.Viewport, {
|
|
85
85
|
className: cn("relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full origin-[top_center] overflow-hidden rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 transition-[width,height] duration-100 ease-snappy md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:animation-duration-100 data-open:zoom-in-90 data-closed:animate-out data-closed:ease-exit data-closed:animation-duration-100 data-closed:zoom-out-90", className),
|
|
86
86
|
"data-slot": "navigation-menu-viewport",
|
|
@@ -26,7 +26,7 @@ function RadioCardsItem({ children, className, ...props }) {
|
|
|
26
26
|
children: /* @__PURE__ */ jsx(RadioGroup.Indicator, {
|
|
27
27
|
className: "flex size-4 items-center justify-center",
|
|
28
28
|
"data-slot": "radio-card-indicator",
|
|
29
|
-
children: /* @__PURE__ */ jsx("span", { className: "absolute
|
|
29
|
+
children: /* @__PURE__ */ jsx("span", { className: "absolute inset-s-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 animate-in rounded-full bg-primary-foreground duration-control-indicator ease-spring zoom-in-50 rtl:translate-x-1/2" })
|
|
30
30
|
})
|
|
31
31
|
}), children]
|
|
32
32
|
});
|
|
@@ -23,7 +23,7 @@ function RadioGroupItem({ className, ...props }) {
|
|
|
23
23
|
children: /* @__PURE__ */ jsx(RadioGroup$1.Indicator, {
|
|
24
24
|
className: "flex size-4 items-center justify-center",
|
|
25
25
|
"data-slot": "radio-group-indicator",
|
|
26
|
-
children: /* @__PURE__ */ jsx("span", { className: "absolute
|
|
26
|
+
children: /* @__PURE__ */ jsx("span", { className: "absolute inset-s-1/2 top-1/2 size-2 -translate-x-1/2 -translate-y-1/2 animate-in rounded-full bg-primary-foreground duration-control-indicator ease-spring zoom-in-50 rtl:translate-x-1/2" })
|
|
27
27
|
})
|
|
28
28
|
});
|
|
29
29
|
}
|
|
@@ -26,7 +26,7 @@ function ResizablePanel({ ...props }) {
|
|
|
26
26
|
*/
|
|
27
27
|
function ResizableSeparator({ className, withHandle, ...props }) {
|
|
28
28
|
return /* @__PURE__ */ jsx(ResizablePrimitive.Separator, {
|
|
29
|
-
className: cn("relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:
|
|
29
|
+
className: cn("relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:inset-s-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:inset-s-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 rtl:after:translate-x-1/2 rtl:aria-[orientation=horizontal]:after:translate-x-0 [&[aria-orientation=horizontal]>div]:rotate-90", className),
|
|
30
30
|
"data-slot": "resizable-separator",
|
|
31
31
|
...props,
|
|
32
32
|
children: withHandle ? /* @__PURE__ */ jsx("div", { className: "z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border" }) : null
|
|
@@ -112,7 +112,7 @@ function SelectItem({ children, className, ...props }) {
|
|
|
112
112
|
"data-slot": "select-item",
|
|
113
113
|
...props,
|
|
114
114
|
children: [/* @__PURE__ */ jsx("span", {
|
|
115
|
-
className: "pointer-events-none absolute
|
|
115
|
+
className: "pointer-events-none absolute inset-e-2 flex size-4 items-center justify-center",
|
|
116
116
|
children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" }) })
|
|
117
117
|
}), /* @__PURE__ */ jsx(Select$1.ItemText, { children })]
|
|
118
118
|
});
|
|
@@ -42,7 +42,7 @@ function SheetContent({ children, className, showCloseButton = true, side = "rig
|
|
|
42
42
|
...props,
|
|
43
43
|
children: [children, showCloseButton ? /* @__PURE__ */ jsxs(Dialog.Close, {
|
|
44
44
|
className: buttonVariants({
|
|
45
|
-
className: "absolute top-4
|
|
45
|
+
className: "absolute top-4 inset-e-4",
|
|
46
46
|
size: "icon-sm",
|
|
47
47
|
variant: "ghost"
|
|
48
48
|
}),
|
|
@@ -117,7 +117,7 @@ function Sidebar({ children, className, collapsible = "offcanvas", side = "left"
|
|
|
117
117
|
className: cn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-gentle group-data-[collapsible=offcanvas]:w-0 group-data-side-right:rotate-180", variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"),
|
|
118
118
|
"data-slot": "sidebar-gap"
|
|
119
119
|
}), /* @__PURE__ */ jsx("div", {
|
|
120
|
-
className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-gentle md:flex data-side-right:right-0 data-side-right:group-data-[collapsible=offcanvas]
|
|
120
|
+
className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-gentle md:flex data-side-right:right-0 data-side-right:group-data-[collapsible=offcanvas]:-right-(--sidebar-width) data-side-left:left-0 data-side-left:group-data-[collapsible=offcanvas]:-left-(--sidebar-width)", variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-side-right:border-l group-data-side-left:border-r", className),
|
|
121
121
|
"data-side": side,
|
|
122
122
|
"data-slot": "sidebar-container",
|
|
123
123
|
...props,
|
|
@@ -159,7 +159,7 @@ const SIDEBAR_RAIL_NAME = "SidebarRail";
|
|
|
159
159
|
function SidebarRail({ className, ...props }) {
|
|
160
160
|
const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);
|
|
161
161
|
return /* @__PURE__ */ jsx("button", {
|
|
162
|
-
className: cn("absolute inset-y-0 z-20 hidden w-4 transition-all ease-gentle group-data-[collapsible=offcanvas]:translate-x-0 group-data-side-right:left-0 group-data-side-left:-right-4 after:absolute after:inset-y-0 after:inset-s-1/2 after:w-0.5 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar hover:after:bg-sidebar-border in-data-side-right:cursor-e-resize in-data-side-left:cursor-w-resize sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2 rtl:group-data-[collapsible=offcanvas]
|
|
162
|
+
className: cn("absolute inset-y-0 z-20 hidden w-4 transition-all ease-gentle group-data-[collapsible=offcanvas]:translate-x-0 group-data-side-right:left-0 group-data-side-left:-right-4 after:absolute after:inset-y-0 after:inset-s-1/2 after:w-0.5 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar hover:after:bg-sidebar-border in-data-side-right:cursor-e-resize in-data-side-left:cursor-w-resize sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2 rtl:group-data-[collapsible=offcanvas]:translate-x-0 rtl:in-data-side-right:cursor-w-resize rtl:in-data-side-left:cursor-e-resize [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize rtl:[[data-side=left][data-state=collapsed]_&]:cursor-w-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize rtl:[[data-side=right][data-state=collapsed]_&]:cursor-e-resize", className),
|
|
163
163
|
"data-sidebar": "rail",
|
|
164
164
|
"data-slot": "sidebar-rail",
|
|
165
165
|
title: "Toggle Sidebar",
|
|
@@ -260,7 +260,7 @@ function SidebarGroupLabel({ asChild = false, className, ...props }) {
|
|
|
260
260
|
*/
|
|
261
261
|
function SidebarGroupAction({ asChild = false, className, ...props }) {
|
|
262
262
|
return /* @__PURE__ */ jsx(asChild ? Slot.Root : "button", {
|
|
263
|
-
className: cn("absolute
|
|
263
|
+
className: cn("absolute inset-e-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", className),
|
|
264
264
|
"data-sidebar": "group-action",
|
|
265
265
|
"data-slot": "sidebar-group-action",
|
|
266
266
|
...props
|
|
@@ -335,7 +335,7 @@ function SidebarMenuButton({ asChild = false, className, isActive = false, size
|
|
|
335
335
|
*/
|
|
336
336
|
function SidebarMenuAction({ asChild = false, className, showOnHover = false, ...props }) {
|
|
337
337
|
return /* @__PURE__ */ jsx(asChild ? Slot.Root : "button", {
|
|
338
|
-
className: cn("absolute
|
|
338
|
+
className: cn("absolute inset-e-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0", className),
|
|
339
339
|
"data-sidebar": "menu-action",
|
|
340
340
|
"data-slot": "sidebar-menu-action",
|
|
341
341
|
...props
|
|
@@ -346,7 +346,7 @@ function SidebarMenuAction({ asChild = false, className, showOnHover = false, ..
|
|
|
346
346
|
*/
|
|
347
347
|
function SidebarMenuBadge({ className, ...props }) {
|
|
348
348
|
return /* @__PURE__ */ jsx("div", {
|
|
349
|
-
className: cn("pointer-events-none absolute
|
|
349
|
+
className: cn("pointer-events-none absolute inset-e-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground", className),
|
|
350
350
|
"data-sidebar": "menu-badge",
|
|
351
351
|
"data-slot": "sidebar-menu-badge",
|
|
352
352
|
...props
|
|
@@ -12,7 +12,7 @@ function Switch({ className, size = "default", ...props }) {
|
|
|
12
12
|
"data-slot": "switch",
|
|
13
13
|
...props,
|
|
14
14
|
children: /* @__PURE__ */ jsx(Switch$1.Thumb, {
|
|
15
|
-
className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform duration-control-indicator ease-spring group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-3.5 group-data-[size=sm]/switch:data-checked:translate-x-2.5 rtl:group-data-[size=default]/switch:data-checked:-translate-x-3.5 rtl:group-data-[size=sm]/switch:data-checked:-translate-x-2.5 dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 rtl:group-data-[size=default]/switch:data-unchecked
|
|
15
|
+
className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform duration-control-indicator ease-spring group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-3.5 group-data-[size=sm]/switch:data-checked:translate-x-2.5 rtl:group-data-[size=default]/switch:data-checked:-translate-x-3.5 rtl:group-data-[size=sm]/switch:data-checked:-translate-x-2.5 dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 rtl:group-data-[size=default]/switch:data-unchecked:translate-x-0 rtl:group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground",
|
|
16
16
|
"data-slot": "switch-thumb"
|
|
17
17
|
})
|
|
18
18
|
});
|
|
@@ -60,7 +60,7 @@ function TableRow({ className, ...props }) {
|
|
|
60
60
|
*/
|
|
61
61
|
function TableHead({ className, ...props }) {
|
|
62
62
|
return /* @__PURE__ */ jsx("th", {
|
|
63
|
-
className: cn("h-10 px-2 text-start align-middle font-medium whitespace-nowrap text-foreground
|
|
63
|
+
className: cn("h-10 px-2 text-start align-middle font-medium whitespace-nowrap text-foreground has-[[role=checkbox]]:pe-0", className),
|
|
64
64
|
"data-slot": "table-head",
|
|
65
65
|
...props
|
|
66
66
|
});
|
|
@@ -70,7 +70,7 @@ function TableHead({ className, ...props }) {
|
|
|
70
70
|
*/
|
|
71
71
|
function TableCell({ className, ...props }) {
|
|
72
72
|
return /* @__PURE__ */ jsx("td", {
|
|
73
|
-
className: cn("p-2 align-middle whitespace-nowrap
|
|
73
|
+
className: cn("p-2 align-middle whitespace-nowrap has-[[role=checkbox]]:pe-0", className),
|
|
74
74
|
"data-slot": "table-cell",
|
|
75
75
|
...props
|
|
76
76
|
});
|
package/dist/components/tabs.mjs
CHANGED
|
@@ -34,7 +34,7 @@ function TabsList({ className, variant = "default", ...props }) {
|
|
|
34
34
|
*/
|
|
35
35
|
function TabsTrigger({ className, ...props }) {
|
|
36
36
|
return /* @__PURE__ */ jsx(Tabs$1.Trigger, {
|
|
37
|
-
className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:-bottom-1.25 group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-
|
|
37
|
+
className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:-bottom-1.25 group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-inset-e-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className),
|
|
38
38
|
"data-slot": "tabs-trigger",
|
|
39
39
|
...props
|
|
40
40
|
});
|
package/dist/variants/sheet.mjs
CHANGED
|
@@ -8,8 +8,8 @@ const sheetContentVariants = tv({
|
|
|
8
8
|
defaultVariants: { side: "right" },
|
|
9
9
|
variants: { side: {
|
|
10
10
|
bottom: "inset-x-0 bottom-0 h-auto border-t data-open:slide-in-from-bottom-10 data-closed:slide-out-to-bottom-10",
|
|
11
|
-
left: "inset-y-0
|
|
12
|
-
right: "inset-y-0
|
|
11
|
+
left: "inset-y-0 inset-s-0 h-full w-3/4 border-e sm:max-w-sm data-open:slide-in-from-left-10 data-closed:slide-out-to-left-10",
|
|
12
|
+
right: "inset-y-0 inset-e-0 h-full w-3/4 border-s sm:max-w-sm data-open:slide-in-from-right-10 data-closed:slide-out-to-right-10",
|
|
13
13
|
top: "inset-x-0 top-0 h-auto border-b data-open:slide-in-from-top-10 data-closed:slide-out-to-top-10"
|
|
14
14
|
} }
|
|
15
15
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codefast/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-canary.0",
|
|
4
4
|
"description": "Core UI components library built with React and Tailwind CSS",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"components",
|
|
@@ -526,36 +526,44 @@
|
|
|
526
526
|
"cmdk": "^1.1.1",
|
|
527
527
|
"embla-carousel-react": "^8.6.0",
|
|
528
528
|
"input-otp": "^1.4.2",
|
|
529
|
-
"lucide-react": "^1.
|
|
529
|
+
"lucide-react": "^1.21.0",
|
|
530
530
|
"next-themes": "^0.4.6",
|
|
531
|
-
"radix-ui": "^1.6.0
|
|
532
|
-
"react-hook-form": "^7.
|
|
531
|
+
"radix-ui": "^1.6.0",
|
|
532
|
+
"react-hook-form": "^7.80.0",
|
|
533
533
|
"react-resizable-panels": "^4.11.2",
|
|
534
|
-
"recharts": "^3.
|
|
534
|
+
"recharts": "^3.9.0",
|
|
535
535
|
"sonner": "^2.0.7",
|
|
536
536
|
"tw-animate-css": "^1.4.0",
|
|
537
537
|
"vaul": "^1.1.2",
|
|
538
|
-
"@codefast/tailwind-variants": "0.
|
|
538
|
+
"@codefast/tailwind-variants": "0.5.0-canary.0"
|
|
539
539
|
},
|
|
540
540
|
"devDependencies": {
|
|
541
|
+
"@storybook/addon-a11y": "^10.4.6",
|
|
542
|
+
"@storybook/addon-docs": "^10.4.6",
|
|
543
|
+
"@storybook/addon-vitest": "^10.4.6",
|
|
544
|
+
"@storybook/react-vite": "^10.4.6",
|
|
541
545
|
"@tailwindcss/postcss": "^4.3.1",
|
|
542
546
|
"@testing-library/dom": "^10.4.1",
|
|
543
547
|
"@testing-library/jest-dom": "^6.9.1",
|
|
544
548
|
"@testing-library/react": "^16.3.2",
|
|
545
549
|
"@testing-library/user-event": "^14.6.1",
|
|
546
550
|
"@types/jest-axe": "^3.5.9",
|
|
547
|
-
"@types/node": "^
|
|
548
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
549
|
-
"@vitejs/plugin-react": "^6.0.
|
|
551
|
+
"@types/node": "^26.0.1",
|
|
552
|
+
"@typescript/native-preview": "7.0.0-dev.20260624.1",
|
|
553
|
+
"@vitejs/plugin-react": "^6.0.3",
|
|
554
|
+
"@vitest/browser": "^4.1.9",
|
|
555
|
+
"@vitest/browser-playwright": "^4.1.9",
|
|
550
556
|
"@vitest/coverage-v8": "^4.1.9",
|
|
551
557
|
"jest-axe": "^10.0.0",
|
|
552
558
|
"jsdom": "^29.1.1",
|
|
559
|
+
"playwright": "^1.61.1",
|
|
553
560
|
"postcss": "^8.5.15",
|
|
561
|
+
"storybook": "^10.4.6",
|
|
554
562
|
"tailwindcss": "^4.3.1",
|
|
555
|
-
"tsdown": "^0.22.
|
|
563
|
+
"tsdown": "^0.22.3",
|
|
556
564
|
"typescript": "^6.0.3",
|
|
557
565
|
"vitest": "^4.1.9",
|
|
558
|
-
"@codefast/typescript-config": "0.
|
|
566
|
+
"@codefast/typescript-config": "0.5.0-canary.0"
|
|
559
567
|
},
|
|
560
568
|
"peerDependencies": {
|
|
561
569
|
"@types/react": ">=19.0.0",
|
|
@@ -576,12 +584,15 @@
|
|
|
576
584
|
},
|
|
577
585
|
"scripts": {
|
|
578
586
|
"build": "tsdown",
|
|
587
|
+
"build-storybook": "storybook build",
|
|
579
588
|
"check-types": "tsgo --noEmit",
|
|
580
|
-
"clean": "rm -rf dist",
|
|
589
|
+
"clean": "rm -rf dist storybook-static",
|
|
590
|
+
"storybook": "storybook dev -p 6006",
|
|
581
591
|
"test": "vitest run",
|
|
582
592
|
"test:coverage": "vitest run --coverage",
|
|
583
593
|
"test:e2e": "vitest run tests/e2e",
|
|
584
594
|
"test:integration": "vitest run tests/integration",
|
|
595
|
+
"test:stories": "vitest run --project=storybook",
|
|
585
596
|
"test:type": "vitest run tests/types",
|
|
586
597
|
"test:unit": "vitest run tests/unit",
|
|
587
598
|
"test:watch": "vitest"
|