@badnpm/ui 0.0.0 → 0.0.1
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 +11 -11
- package/dist/cjs/components/accordion.cjs +24 -0
- package/dist/cjs/components/alert-dialog.cjs +56 -0
- package/dist/cjs/components/alert.cjs +34 -0
- package/dist/cjs/components/aspect-ratio.cjs +12 -0
- package/dist/cjs/components/attachment.cjs +80 -0
- package/dist/cjs/components/avatar.cjs +31 -0
- package/dist/cjs/components/badge.cjs +38 -0
- package/dist/cjs/components/breadcrumb.cjs +46 -0
- package/dist/cjs/components/bubble.cjs +66 -0
- package/dist/cjs/components/button-group.cjs +43 -0
- package/dist/cjs/components/calendar.cjs +100 -0
- package/dist/cjs/components/card.cjs +34 -0
- package/dist/cjs/components/carousel.cjs +113 -0
- package/dist/cjs/components/chart.cjs +160 -0
- package/dist/cjs/components/checkbox.cjs +13 -0
- package/dist/cjs/components/code-block.cjs +110 -0
- package/dist/cjs/components/collapsible.cjs +18 -0
- package/dist/cjs/components/combobox.cjs +96 -0
- package/dist/cjs/components/command.cjs +46 -0
- package/dist/cjs/components/context-menu.cjs +69 -0
- package/dist/cjs/components/dialog.cjs +50 -0
- package/dist/cjs/components/drawer.cjs +108 -0
- package/dist/cjs/components/dropdown-menu.cjs +68 -0
- package/dist/cjs/components/empty.cjs +42 -0
- package/dist/cjs/components/field.cjs +80 -0
- package/dist/cjs/components/hover-card.cjs +20 -0
- package/dist/cjs/components/input-group.cjs +66 -0
- package/dist/cjs/components/input-otp.cjs +46 -0
- package/dist/cjs/components/item.cjs +91 -0
- package/dist/cjs/components/kbd.cjs +14 -0
- package/dist/cjs/components/label.cjs +11 -0
- package/dist/cjs/components/marker.cjs +41 -0
- package/dist/cjs/components/menubar.cjs +75 -0
- package/dist/cjs/components/message-scroller.cjs +45 -0
- package/dist/cjs/components/message.cjs +30 -0
- package/dist/cjs/components/native-select.cjs +19 -0
- package/dist/cjs/components/navigation-menu.cjs +43 -0
- package/dist/cjs/components/pagination.cjs +36 -0
- package/dist/cjs/components/popover.cjs +31 -0
- package/dist/cjs/components/progress.cjs +28 -0
- package/dist/cjs/components/questionnaire.cjs +70 -0
- package/dist/cjs/components/radio-group.cjs +16 -0
- package/dist/cjs/components/resizable.cjs +39 -0
- package/dist/cjs/components/scroll-area.cjs +15 -0
- package/dist/cjs/components/select.cjs +47 -0
- package/dist/cjs/components/separator.cjs +11 -0
- package/dist/cjs/components/sheet.cjs +47 -0
- package/dist/cjs/components/sidebar.cjs +301 -0
- package/dist/cjs/components/skeleton.cjs +10 -0
- package/dist/cjs/components/slider.cjs +16 -0
- package/dist/cjs/components/spinner.cjs +11 -0
- package/dist/cjs/components/switch.cjs +12 -0
- package/dist/cjs/components/table.cjs +38 -0
- package/dist/cjs/components/tabs.cjs +37 -0
- package/dist/cjs/components/textarea.cjs +10 -0
- package/dist/cjs/components/toast.cjs +82 -0
- package/dist/cjs/components/toggle-group.cjs +47 -0
- package/dist/cjs/components/toggle.cjs +30 -0
- package/dist/cjs/components/tooltip.cjs +24 -0
- package/dist/cjs/components/trace.cjs +40 -0
- package/dist/cjs/hooks/use-highlighted-code.cjs +73 -0
- package/dist/cjs/hooks/use-hydrated.cjs +2 -2
- package/dist/cjs/hooks/use-mobile.cjs +36 -0
- package/dist/cjs/index.cjs +467 -0
- package/dist/cjs/lib/highlighter.cjs +96 -0
- package/dist/cjs/providers/preference-provider.cjs +13 -13
- package/dist/cjs/providers/theme-provider.cjs +10 -10
- package/dist/cjs/types/components/accordion.d.ts +9 -0
- package/dist/cjs/types/components/alert-dialog.d.ts +20 -0
- package/dist/cjs/types/components/alert.d.ts +13 -0
- package/dist/cjs/types/components/aspect-ratio.d.ts +7 -0
- package/dist/cjs/types/components/attachment.d.ts +26 -0
- package/dist/cjs/types/components/avatar.d.ts +13 -0
- package/dist/cjs/types/components/badge.d.ts +11 -0
- package/dist/cjs/types/components/breadcrumb.d.ts +12 -0
- package/dist/cjs/types/components/bubble.d.ts +19 -0
- package/dist/cjs/types/components/button-group.d.ts +14 -0
- package/dist/cjs/types/components/button.d.ts +4 -4
- package/dist/cjs/types/components/calendar.d.ts +12 -0
- package/dist/cjs/types/components/card.d.ts +13 -0
- package/dist/cjs/types/components/carousel.d.ts +31 -0
- package/dist/cjs/types/components/chart.d.ts +47 -0
- package/dist/cjs/types/components/checkbox.d.ts +6 -0
- package/dist/cjs/types/components/code-block.d.ts +29 -0
- package/dist/cjs/types/components/collapsible.d.ts +8 -0
- package/dist/cjs/types/components/combobox.d.ts +26 -0
- package/dist/cjs/types/components/command.d.ts +21 -0
- package/dist/cjs/types/components/context-menu.d.ts +31 -0
- package/dist/cjs/types/components/dialog.d.ts +19 -0
- package/dist/cjs/types/components/direction.d.ts +1 -0
- package/dist/cjs/types/components/drawer.d.ts +18 -0
- package/dist/cjs/types/components/dropdown-menu.d.ts +31 -0
- package/dist/cjs/types/components/empty.d.ts +15 -0
- package/dist/cjs/types/components/field.d.ts +28 -0
- package/dist/cjs/types/components/hover-card.d.ts +8 -0
- package/dist/cjs/types/components/index.d.ts +62 -0
- package/dist/cjs/types/components/input-group.d.ts +21 -0
- package/dist/cjs/types/components/input-otp.d.ts +13 -0
- package/dist/cjs/types/components/input.d.ts +2 -2
- package/dist/cjs/types/components/item.d.ts +25 -0
- package/dist/cjs/types/components/kbd.d.ts +6 -0
- package/dist/cjs/types/components/label.d.ts +5 -0
- package/dist/cjs/types/components/marker.d.ts +13 -0
- package/dist/cjs/types/components/menubar.d.ts +31 -0
- package/dist/cjs/types/components/message-scroller.d.ts +13 -0
- package/dist/cjs/types/components/message.d.ts +12 -0
- package/dist/cjs/types/components/native-select.d.ts +10 -0
- package/dist/cjs/types/components/navigation-menu.d.ts +15 -0
- package/dist/cjs/types/components/pagination.d.ts +19 -0
- package/dist/cjs/types/components/popover.d.ts +11 -0
- package/dist/cjs/types/components/progress.d.ts +10 -0
- package/dist/cjs/types/components/questionnaire.d.ts +21 -0
- package/dist/cjs/types/components/radio-group.d.ts +8 -0
- package/dist/cjs/types/components/resizable.d.ts +10 -0
- package/dist/cjs/types/components/scroll-area.d.ts +7 -0
- package/dist/cjs/types/components/select.d.ts +17 -0
- package/dist/cjs/types/components/separator.d.ts +6 -0
- package/dist/cjs/types/components/sheet.d.ts +16 -0
- package/dist/cjs/types/components/sidebar.d.ts +66 -0
- package/dist/cjs/types/components/skeleton.d.ts +5 -0
- package/dist/cjs/types/components/slider.d.ts +6 -0
- package/dist/cjs/types/components/spinner.d.ts +5 -0
- package/dist/cjs/types/components/switch.d.ts +8 -0
- package/dist/cjs/types/components/table.d.ts +12 -0
- package/dist/cjs/types/components/tabs.d.ts +14 -0
- package/dist/cjs/types/components/textarea.d.ts +5 -0
- package/dist/cjs/types/components/theme-toggle.d.ts +2 -2
- package/dist/cjs/types/components/toast.d.ts +19 -0
- package/dist/cjs/types/components/toggle-group.d.ts +13 -0
- package/dist/cjs/types/components/toggle.d.ts +12 -0
- package/dist/cjs/types/components/tooltip.d.ts +9 -0
- package/dist/cjs/types/components/trace.d.ts +20 -0
- package/dist/cjs/types/hooks/index.d.ts +2 -0
- package/dist/cjs/types/hooks/use-highlighted-code.d.ts +3 -0
- package/dist/cjs/types/hooks/use-mobile.d.ts +3 -0
- package/dist/cjs/types/index.d.ts +65 -0
- package/dist/cjs/types/lib/highlighter.d.ts +11 -0
- package/dist/cjs/types/lib/index.d.ts +1 -0
- package/dist/cjs/types/providers/preference-provider.d.ts +2 -2
- package/dist/cjs/types/providers/theme-provider.d.ts +2 -2
- package/dist/esm/components/accordion.js +19 -0
- package/dist/esm/components/alert-dialog.js +43 -0
- package/dist/esm/components/alert.js +29 -0
- package/dist/esm/components/aspect-ratio.js +10 -0
- package/dist/esm/components/attachment.js +70 -0
- package/dist/esm/components/avatar.js +24 -0
- package/dist/esm/components/badge.js +35 -0
- package/dist/esm/components/breadcrumb.js +38 -0
- package/dist/esm/components/bubble.js +61 -0
- package/dist/esm/components/button-group.js +38 -0
- package/dist/esm/components/calendar.js +78 -0
- package/dist/esm/components/card.js +26 -0
- package/dist/esm/components/carousel.js +87 -0
- package/dist/esm/components/chart.js +133 -0
- package/dist/esm/components/checkbox.js +11 -0
- package/dist/esm/components/code-block.js +82 -0
- package/dist/esm/components/collapsible.js +14 -0
- package/dist/esm/components/combobox.js +60 -0
- package/dist/esm/components/command.js +36 -0
- package/dist/esm/components/context-menu.js +53 -0
- package/dist/esm/components/dialog.js +39 -0
- package/dist/esm/components/drawer.js +77 -0
- package/dist/esm/components/dropdown-menu.js +52 -0
- package/dist/esm/components/empty.js +35 -0
- package/dist/esm/components/field.js +69 -0
- package/dist/esm/components/hover-card.js +16 -0
- package/dist/esm/components/input-group.js +59 -0
- package/dist/esm/components/input-otp.js +22 -0
- package/dist/esm/components/item.js +80 -0
- package/dist/esm/components/kbd.js +11 -0
- package/dist/esm/components/label.js +9 -0
- package/dist/esm/components/marker.js +36 -0
- package/dist/esm/components/menubar.js +58 -0
- package/dist/esm/components/message-scroller.js +27 -0
- package/dist/esm/components/message.js +23 -0
- package/dist/esm/components/native-select.js +15 -0
- package/dist/esm/components/navigation-menu.js +33 -0
- package/dist/esm/components/pagination.js +28 -0
- package/dist/esm/components/popover.js +24 -0
- package/dist/esm/components/progress.js +22 -0
- package/dist/esm/components/questionnaire.js +54 -0
- package/dist/esm/components/radio-group.js +13 -0
- package/dist/esm/components/resizable.js +16 -0
- package/dist/esm/components/scroll-area.js +12 -0
- package/dist/esm/components/select.js +36 -0
- package/dist/esm/components/separator.js +9 -0
- package/dist/esm/components/sheet.js +38 -0
- package/dist/esm/components/sidebar.js +257 -0
- package/dist/esm/components/skeleton.js +8 -0
- package/dist/esm/components/slider.js +14 -0
- package/dist/esm/components/spinner.js +9 -0
- package/dist/esm/components/switch.js +10 -0
- package/dist/esm/components/table.js +29 -0
- package/dist/esm/components/tabs.js +31 -0
- package/dist/esm/components/textarea.js +8 -0
- package/dist/esm/components/toast.js +68 -0
- package/dist/esm/components/toggle-group.js +25 -0
- package/dist/esm/components/toggle.js +27 -0
- package/dist/esm/components/tooltip.js +19 -0
- package/dist/esm/components/trace.js +31 -0
- package/dist/esm/hooks/use-highlighted-code.js +52 -0
- package/dist/esm/hooks/use-mobile.js +15 -0
- package/dist/esm/index.js +65 -0
- package/dist/esm/lib/highlighter.js +93 -0
- package/dist/styles/custom.css +2 -0
- package/dist/styles/index.css +1 -1
- package/dist/types/components/accordion.d.ts +9 -0
- package/dist/types/components/alert-dialog.d.ts +20 -0
- package/dist/types/components/alert.d.ts +13 -0
- package/dist/types/components/aspect-ratio.d.ts +7 -0
- package/dist/types/components/attachment.d.ts +26 -0
- package/dist/types/components/avatar.d.ts +13 -0
- package/dist/types/components/badge.d.ts +11 -0
- package/dist/types/components/breadcrumb.d.ts +12 -0
- package/dist/types/components/bubble.d.ts +19 -0
- package/dist/types/components/button-group.d.ts +14 -0
- package/dist/types/components/button.d.ts +4 -4
- package/dist/types/components/calendar.d.ts +12 -0
- package/dist/types/components/card.d.ts +13 -0
- package/dist/types/components/carousel.d.ts +31 -0
- package/dist/types/components/chart.d.ts +47 -0
- package/dist/types/components/checkbox.d.ts +6 -0
- package/dist/types/components/code-block.d.ts +29 -0
- package/dist/types/components/collapsible.d.ts +8 -0
- package/dist/types/components/combobox.d.ts +26 -0
- package/dist/types/components/command.d.ts +21 -0
- package/dist/types/components/context-menu.d.ts +31 -0
- package/dist/types/components/dialog.d.ts +19 -0
- package/dist/types/components/direction.d.ts +1 -0
- package/dist/types/components/drawer.d.ts +18 -0
- package/dist/types/components/dropdown-menu.d.ts +31 -0
- package/dist/types/components/empty.d.ts +15 -0
- package/dist/types/components/field.d.ts +28 -0
- package/dist/types/components/hover-card.d.ts +8 -0
- package/dist/types/components/index.d.ts +62 -0
- package/dist/types/components/input-group.d.ts +21 -0
- package/dist/types/components/input-otp.d.ts +13 -0
- package/dist/types/components/input.d.ts +2 -2
- package/dist/types/components/item.d.ts +25 -0
- package/dist/types/components/kbd.d.ts +6 -0
- package/dist/types/components/label.d.ts +5 -0
- package/dist/types/components/marker.d.ts +13 -0
- package/dist/types/components/menubar.d.ts +31 -0
- package/dist/types/components/message-scroller.d.ts +13 -0
- package/dist/types/components/message.d.ts +12 -0
- package/dist/types/components/native-select.d.ts +10 -0
- package/dist/types/components/navigation-menu.d.ts +15 -0
- package/dist/types/components/pagination.d.ts +19 -0
- package/dist/types/components/popover.d.ts +11 -0
- package/dist/types/components/progress.d.ts +10 -0
- package/dist/types/components/questionnaire.d.ts +21 -0
- package/dist/types/components/radio-group.d.ts +8 -0
- package/dist/types/components/resizable.d.ts +10 -0
- package/dist/types/components/scroll-area.d.ts +7 -0
- package/dist/types/components/select.d.ts +17 -0
- package/dist/types/components/separator.d.ts +6 -0
- package/dist/types/components/sheet.d.ts +16 -0
- package/dist/types/components/sidebar.d.ts +66 -0
- package/dist/types/components/skeleton.d.ts +5 -0
- package/dist/types/components/slider.d.ts +6 -0
- package/dist/types/components/spinner.d.ts +5 -0
- package/dist/types/components/switch.d.ts +8 -0
- package/dist/types/components/table.d.ts +12 -0
- package/dist/types/components/tabs.d.ts +14 -0
- package/dist/types/components/textarea.d.ts +5 -0
- package/dist/types/components/theme-toggle.d.ts +2 -2
- package/dist/types/components/toast.d.ts +19 -0
- package/dist/types/components/toggle-group.d.ts +13 -0
- package/dist/types/components/toggle.d.ts +12 -0
- package/dist/types/components/tooltip.d.ts +9 -0
- package/dist/types/components/trace.d.ts +20 -0
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/use-highlighted-code.d.ts +3 -0
- package/dist/types/hooks/use-mobile.d.ts +3 -0
- package/dist/types/index.d.ts +65 -0
- package/dist/types/lib/highlighter.d.ts +11 -0
- package/dist/types/lib/index.d.ts +1 -0
- package/dist/types/providers/preference-provider.d.ts +2 -2
- package/dist/types/providers/theme-provider.d.ts +2 -2
- package/dist/umd/index.js +86764 -3487
- package/package.json +39 -4
- package/dist/styles/body.css +0 -7
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ React 19 组件库,提供 ESM、CommonJS、UMD 三种产物,以及独立的
|
|
|
10
10
|
npm install @badnpm/ui react@^19 react-dom@^19
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
组件包公开发布到 npm;发布前可使用本地 tarball 验证。下文统一使用当前包名 `@badnpm/ui`。
|
|
14
14
|
|
|
15
15
|
## 样式入口
|
|
16
16
|
|
|
@@ -19,10 +19,10 @@ npm install @badnpm/ui react@^19 react-dom@^19
|
|
|
19
19
|
| 样式入口 | 用途 | 引入方式 |
|
|
20
20
|
| ---------------------------------- | ------------------------------------------- | ---------------------------- |
|
|
21
21
|
| `@badnpm/ui/styles/index.css` | Tailwind 重置、组件工具类、主题和基础色变量 | 使用内置组件样式时引入 |
|
|
22
|
-
| `@badnpm/ui/styles/
|
|
22
|
+
| `@badnpm/ui/styles/custom.css` | 页面主题配色和滚动条样式 | 按需引入,与默认样式配合使用 |
|
|
23
23
|
| `@badnpm/ui/styles/font/geist.css` | 加载 Geist 字体,并设置默认无衬线字体 | 按需引入 |
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
仅引入默认样式即可使用组件。页面配色与滚动条作为一组可选样式,字体可以单独选择,字体文件随包提供。
|
|
26
26
|
主题和基础色已包含在默认样式中。`@badnpm/ui/globals.css` 是默认样式的兼容入口,使用示例统一采用 `styles/index.css`。
|
|
27
27
|
|
|
28
28
|
使用方无需安装 Tailwind、shadcn、tw-animate-css 或 Geist 字体包。
|
|
@@ -39,8 +39,8 @@ import { Button, ThemeProvider, ThemeToggle } from '@badnpm/ui';
|
|
|
39
39
|
|
|
40
40
|
// 默认组件样式。
|
|
41
41
|
import '@badnpm/ui/styles/index.css';
|
|
42
|
-
//
|
|
43
|
-
import '@badnpm/ui/styles/
|
|
42
|
+
// 可选,应用页面主题配色和滚动条样式。
|
|
43
|
+
import '@badnpm/ui/styles/custom.css';
|
|
44
44
|
// 可选,使用 Geist 字体。
|
|
45
45
|
import '@badnpm/ui/styles/font/geist.css';
|
|
46
46
|
|
|
@@ -56,7 +56,7 @@ function App() {
|
|
|
56
56
|
createRoot(document.getElementById('root')!).render(<App />);
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
按需引入 custom.css 和字体入口,分别控制页面配色、滚动条和字体。
|
|
60
60
|
`ThemeToggle` 通过 `ThemeProvider` 读取并切换深浅模式,单独使用 `Button`、`Input` 时可直接渲染。
|
|
61
61
|
|
|
62
62
|
## CommonJS
|
|
@@ -70,8 +70,8 @@ const { Button, ThemeProvider, ThemeToggle } = require('@badnpm/ui');
|
|
|
70
70
|
|
|
71
71
|
// 这些 CSS require 由应用的打包器处理。
|
|
72
72
|
require('@badnpm/ui/styles/index.css');
|
|
73
|
-
//
|
|
74
|
-
require('@badnpm/ui/styles/
|
|
73
|
+
// 可选页面配色和滚动条样式。
|
|
74
|
+
require('@badnpm/ui/styles/custom.css');
|
|
75
75
|
// 可选字体。
|
|
76
76
|
require('@badnpm/ui/styles/font/geist.css');
|
|
77
77
|
|
|
@@ -113,8 +113,8 @@ React 19 的浏览器加载示例采用 ESM CDN,并将 React 显式共享给 R
|
|
|
113
113
|
|
|
114
114
|
<!-- 默认组件样式。 -->
|
|
115
115
|
<link rel="stylesheet" href="/vendor/ui/styles/index.css" />
|
|
116
|
-
<!--
|
|
117
|
-
<link rel="stylesheet" href="/vendor/ui/styles/
|
|
116
|
+
<!-- 可选,应用页面主题配色和滚动条样式。 -->
|
|
117
|
+
<link rel="stylesheet" href="/vendor/ui/styles/custom.css" />
|
|
118
118
|
<!-- 可选,删除此行后使用应用自己的字体。 -->
|
|
119
119
|
<link rel="stylesheet" href="/vendor/ui/styles/font/geist.css" />
|
|
120
120
|
|
|
@@ -186,7 +186,7 @@ dist/
|
|
|
186
186
|
├── types/ # 按源码结构生成的 ESM 类型声明
|
|
187
187
|
├── cjs/ # CommonJS 模块,types 子目录提供逐文件类型声明
|
|
188
188
|
├── umd/index.js # 浏览器单文件,导出 window.BadUI
|
|
189
|
-
└── styles/ #
|
|
189
|
+
└── styles/ # 默认样式、可选页面配色、滚动条和字体资源
|
|
190
190
|
```
|
|
191
191
|
|
|
192
192
|
TypeScript 插件编译 JS,rollup-plugin-dts 配合 preserveModules 按源码目录逐文件生成类型声明。PostCSS 编译独立 CSS 并处理字体资源,样式规则集中在 `postcss.config.mjs`。
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var accordion = require('@base-ui/react/accordion');
|
|
5
|
+
var cn = require('cn');
|
|
6
|
+
var lucideReact = require('lucide-react');
|
|
7
|
+
|
|
8
|
+
function Accordion({ className, ...props }) {
|
|
9
|
+
return (jsxRuntime.jsx(accordion.Accordion.Root, { "data-slot": "accordion", className: cn.cn("flex w-full flex-col", className), ...props }));
|
|
10
|
+
}
|
|
11
|
+
function AccordionItem({ className, ...props }) {
|
|
12
|
+
return (jsxRuntime.jsx(accordion.Accordion.Item, { "data-slot": "accordion-item", className: cn.cn("not-last:border-b", className), ...props }));
|
|
13
|
+
}
|
|
14
|
+
function AccordionTrigger({ className, children, ...props }) {
|
|
15
|
+
return (jsxRuntime.jsx(accordion.Accordion.Header, { className: "flex", children: jsxRuntime.jsxs(accordion.Accordion.Trigger, { "data-slot": "accordion-trigger", className: cn.cn("group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground", className), ...props, children: [children, jsxRuntime.jsx(lucideReact.ChevronDownIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" }), jsxRuntime.jsx(lucideReact.ChevronUpIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" })] }) }));
|
|
16
|
+
}
|
|
17
|
+
function AccordionContent({ className, children, ...props }) {
|
|
18
|
+
return (jsxRuntime.jsx(accordion.Accordion.Panel, { "data-slot": "accordion-content", className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up", ...props, children: jsxRuntime.jsx("div", { className: cn.cn("h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), children: children }) }));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
exports.Accordion = Accordion;
|
|
22
|
+
exports.AccordionContent = AccordionContent;
|
|
23
|
+
exports.AccordionItem = AccordionItem;
|
|
24
|
+
exports.AccordionTrigger = AccordionTrigger;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var alertDialog = require('@base-ui/react/alert-dialog');
|
|
5
|
+
var cn = require('cn');
|
|
6
|
+
var button = require('./button.cjs');
|
|
7
|
+
|
|
8
|
+
function AlertDialog({ ...props }) {
|
|
9
|
+
return jsxRuntime.jsx(alertDialog.AlertDialog.Root, { "data-slot": "alert-dialog", ...props });
|
|
10
|
+
}
|
|
11
|
+
function AlertDialogTrigger({ ...props }) {
|
|
12
|
+
return (jsxRuntime.jsx(alertDialog.AlertDialog.Trigger, { "data-slot": "alert-dialog-trigger", ...props }));
|
|
13
|
+
}
|
|
14
|
+
function AlertDialogPortal({ ...props }) {
|
|
15
|
+
return (jsxRuntime.jsx(alertDialog.AlertDialog.Portal, { "data-slot": "alert-dialog-portal", ...props }));
|
|
16
|
+
}
|
|
17
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
18
|
+
return (jsxRuntime.jsx(alertDialog.AlertDialog.Backdrop, { "data-slot": "alert-dialog-overlay", className: cn.cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className), ...props }));
|
|
19
|
+
}
|
|
20
|
+
function AlertDialogContent({ className, size = "default", ...props }) {
|
|
21
|
+
return (jsxRuntime.jsxs(AlertDialogPortal, { children: [jsxRuntime.jsx(AlertDialogOverlay, {}), jsxRuntime.jsx(alertDialog.AlertDialog.Popup, { "data-slot": "alert-dialog-content", "data-size": size, className: cn.cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props })] }));
|
|
22
|
+
}
|
|
23
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
24
|
+
return (jsxRuntime.jsx("div", { "data-slot": "alert-dialog-header", className: cn.cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className), ...props }));
|
|
25
|
+
}
|
|
26
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
27
|
+
return (jsxRuntime.jsx("div", { "data-slot": "alert-dialog-footer", className: cn.cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className), ...props }));
|
|
28
|
+
}
|
|
29
|
+
function AlertDialogMedia({ className, ...props }) {
|
|
30
|
+
return (jsxRuntime.jsx("div", { "data-slot": "alert-dialog-media", className: cn.cn("mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6", className), ...props }));
|
|
31
|
+
}
|
|
32
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
33
|
+
return (jsxRuntime.jsx(alertDialog.AlertDialog.Title, { "data-slot": "alert-dialog-title", className: cn.cn("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className), ...props }));
|
|
34
|
+
}
|
|
35
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
36
|
+
return (jsxRuntime.jsx(alertDialog.AlertDialog.Description, { "data-slot": "alert-dialog-description", className: cn.cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className), ...props }));
|
|
37
|
+
}
|
|
38
|
+
function AlertDialogAction({ className, ...props }) {
|
|
39
|
+
return (jsxRuntime.jsx(button.Button, { "data-slot": "alert-dialog-action", className: cn.cn(className), ...props }));
|
|
40
|
+
}
|
|
41
|
+
function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
|
|
42
|
+
return (jsxRuntime.jsx(alertDialog.AlertDialog.Close, { "data-slot": "alert-dialog-cancel", className: cn.cn(className), render: jsxRuntime.jsx(button.Button, { variant: variant, size: size }), ...props }));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exports.AlertDialog = AlertDialog;
|
|
46
|
+
exports.AlertDialogAction = AlertDialogAction;
|
|
47
|
+
exports.AlertDialogCancel = AlertDialogCancel;
|
|
48
|
+
exports.AlertDialogContent = AlertDialogContent;
|
|
49
|
+
exports.AlertDialogDescription = AlertDialogDescription;
|
|
50
|
+
exports.AlertDialogFooter = AlertDialogFooter;
|
|
51
|
+
exports.AlertDialogHeader = AlertDialogHeader;
|
|
52
|
+
exports.AlertDialogMedia = AlertDialogMedia;
|
|
53
|
+
exports.AlertDialogOverlay = AlertDialogOverlay;
|
|
54
|
+
exports.AlertDialogPortal = AlertDialogPortal;
|
|
55
|
+
exports.AlertDialogTitle = AlertDialogTitle;
|
|
56
|
+
exports.AlertDialogTrigger = AlertDialogTrigger;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
5
|
+
var cn = require('cn');
|
|
6
|
+
|
|
7
|
+
const alertVariants = classVarianceAuthority.cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default: "bg-card text-card-foreground",
|
|
11
|
+
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
defaultVariants: {
|
|
15
|
+
variant: "default",
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
function Alert({ className, variant, ...props }) {
|
|
19
|
+
return (jsxRuntime.jsx("div", { "data-slot": "alert", role: "alert", className: cn.cn(alertVariants({ variant }), className), ...props }));
|
|
20
|
+
}
|
|
21
|
+
function AlertTitle({ className, ...props }) {
|
|
22
|
+
return (jsxRuntime.jsx("div", { "data-slot": "alert-title", className: cn.cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function AlertDescription({ className, ...props }) {
|
|
25
|
+
return (jsxRuntime.jsx("div", { "data-slot": "alert-description", className: cn.cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
function AlertAction({ className, ...props }) {
|
|
28
|
+
return (jsxRuntime.jsx("div", { "data-slot": "alert-action", className: cn.cn("absolute top-2 right-2", className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
exports.Alert = Alert;
|
|
32
|
+
exports.AlertAction = AlertAction;
|
|
33
|
+
exports.AlertDescription = AlertDescription;
|
|
34
|
+
exports.AlertTitle = AlertTitle;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var cn = require('cn');
|
|
5
|
+
|
|
6
|
+
function AspectRatio({ ratio, className, ...props }) {
|
|
7
|
+
return (jsxRuntime.jsx("div", { "data-slot": "aspect-ratio", style: {
|
|
8
|
+
"--ratio": ratio,
|
|
9
|
+
}, className: cn.cn("relative aspect-(--ratio)", className), ...props }));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.AspectRatio = AspectRatio;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var mergeProps = require('@base-ui/react/merge-props');
|
|
5
|
+
var useRender = require('@base-ui/react/use-render');
|
|
6
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
7
|
+
var cn = require('cn');
|
|
8
|
+
var button = require('./button.cjs');
|
|
9
|
+
|
|
10
|
+
const attachmentVariants = classVarianceAuthority.cva("group/attachment relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-xl border bg-card text-card-foreground transition-colors focus-within:ring-1 focus-within:ring-ring/50 has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive/30 data-[state=idle]:border-dashed", {
|
|
11
|
+
variants: {
|
|
12
|
+
size: {
|
|
13
|
+
default: "gap-2 text-sm has-data-[slot=attachment-content]:px-2.5 has-data-[slot=attachment-content]:py-2 has-data-[slot=attachment-media]:p-2",
|
|
14
|
+
sm: "gap-2.5 text-xs has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5",
|
|
15
|
+
xs: "gap-1.5 rounded-lg text-xs has-data-[slot=attachment-content]:px-1.5 has-data-[slot=attachment-content]:py-1 has-data-[slot=attachment-media]:p-1",
|
|
16
|
+
},
|
|
17
|
+
orientation: {
|
|
18
|
+
horizontal: "min-w-40 items-center",
|
|
19
|
+
vertical: "w-24 flex-col has-data-[slot=attachment-content]:w-30",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
function Attachment({ className, state = "done", size = "default", orientation = "horizontal", ...props }) {
|
|
24
|
+
return (jsxRuntime.jsx("div", { "data-slot": "attachment", "data-state": state, "data-size": size, "data-orientation": orientation, className: cn.cn(attachmentVariants({ size, orientation }), className), ...props }));
|
|
25
|
+
}
|
|
26
|
+
const attachmentMediaVariants = classVarianceAuthority.cva("relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-muted text-foreground group-data-[orientation=vertical]/attachment:w-full group-data-[size=sm]/attachment:w-8 group-data-[size=xs]/attachment:w-7 group-data-[size=xs]/attachment:rounded-md group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5", {
|
|
27
|
+
variants: {
|
|
28
|
+
variant: {
|
|
29
|
+
icon: "",
|
|
30
|
+
image: "opacity-60 group-data-[state=done]/attachment:opacity-100 group-data-[state=idle]/attachment:opacity-100 *:[img]:aspect-square *:[img]:w-full *:[img]:object-cover",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
defaultVariants: {
|
|
34
|
+
variant: "icon",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
function AttachmentMedia({ className, variant = "icon", ...props }) {
|
|
38
|
+
return (jsxRuntime.jsx("div", { "data-slot": "attachment-media", "data-variant": variant, className: cn.cn(attachmentMediaVariants({ variant }), className), ...props }));
|
|
39
|
+
}
|
|
40
|
+
function AttachmentContent({ className, ...props }) {
|
|
41
|
+
return (jsxRuntime.jsx("div", { "data-slot": "attachment-content", className: cn.cn("max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1", className), ...props }));
|
|
42
|
+
}
|
|
43
|
+
function AttachmentTitle({ className, ...props }) {
|
|
44
|
+
return (jsxRuntime.jsx("span", { "data-slot": "attachment-title", className: cn.cn("block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:shimmer group-data-[state=uploading]/attachment:shimmer", className), ...props }));
|
|
45
|
+
}
|
|
46
|
+
function AttachmentDescription({ className, ...props }) {
|
|
47
|
+
return (jsxRuntime.jsx("span", { "data-slot": "attachment-description", className: cn.cn("mt-0.5 block min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive", "max-w-full", className), ...props }));
|
|
48
|
+
}
|
|
49
|
+
function AttachmentActions({ className, ...props }) {
|
|
50
|
+
return (jsxRuntime.jsx("div", { "data-slot": "attachment-actions", className: cn.cn("relative z-20 flex shrink-0 items-center group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:right-3 group-data-[orientation=vertical]/attachment:gap-1", className), ...props }));
|
|
51
|
+
}
|
|
52
|
+
function AttachmentAction({ className, variant, size = "icon-xs", ...props }) {
|
|
53
|
+
return (jsxRuntime.jsx(button.Button, { "data-slot": "attachment-action", variant: variant ?? "ghost", size: size, className: cn.cn(className), ...props }));
|
|
54
|
+
}
|
|
55
|
+
function AttachmentTrigger({ className, render, type, ...props }) {
|
|
56
|
+
return useRender.useRender({
|
|
57
|
+
defaultTagName: "button",
|
|
58
|
+
props: mergeProps.mergeProps({
|
|
59
|
+
type: render ? type : (type ?? "button"),
|
|
60
|
+
className: cn.cn("absolute inset-0 z-10 outline-none", className),
|
|
61
|
+
}, props),
|
|
62
|
+
render,
|
|
63
|
+
state: {
|
|
64
|
+
slot: "attachment-trigger",
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function AttachmentGroup({ className, ...props }) {
|
|
69
|
+
return (jsxRuntime.jsx("div", { "data-slot": "attachment-group", className: cn.cn("flex min-w-0 scroll-fade-x snap-x snap-mandatory scroll-px-1 scrollbar-none gap-3 overflow-x-auto overscroll-x-contain py-1 *:data-[slot=attachment]:flex-none *:data-[slot=attachment]:snap-start", className), ...props }));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
exports.Attachment = Attachment;
|
|
73
|
+
exports.AttachmentAction = AttachmentAction;
|
|
74
|
+
exports.AttachmentActions = AttachmentActions;
|
|
75
|
+
exports.AttachmentContent = AttachmentContent;
|
|
76
|
+
exports.AttachmentDescription = AttachmentDescription;
|
|
77
|
+
exports.AttachmentGroup = AttachmentGroup;
|
|
78
|
+
exports.AttachmentMedia = AttachmentMedia;
|
|
79
|
+
exports.AttachmentTitle = AttachmentTitle;
|
|
80
|
+
exports.AttachmentTrigger = AttachmentTrigger;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var avatar = require('@base-ui/react/avatar');
|
|
5
|
+
var cn = require('cn');
|
|
6
|
+
|
|
7
|
+
function Avatar({ className, size = "default", ...props }) {
|
|
8
|
+
return (jsxRuntime.jsx(avatar.Avatar.Root, { "data-slot": "avatar", "data-size": size, className: cn.cn("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", className), ...props }));
|
|
9
|
+
}
|
|
10
|
+
function AvatarImage({ className, ...props }) {
|
|
11
|
+
return (jsxRuntime.jsx(avatar.Avatar.Image, { "data-slot": "avatar-image", className: cn.cn("aspect-square size-full rounded-full object-cover", className), ...props }));
|
|
12
|
+
}
|
|
13
|
+
function AvatarFallback({ className, ...props }) {
|
|
14
|
+
return (jsxRuntime.jsx(avatar.Avatar.Fallback, { "data-slot": "avatar-fallback", className: cn.cn("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs", className), ...props }));
|
|
15
|
+
}
|
|
16
|
+
function AvatarBadge({ className, ...props }) {
|
|
17
|
+
return (jsxRuntime.jsx("span", { "data-slot": "avatar-badge", className: cn.cn("absolute right-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), ...props }));
|
|
18
|
+
}
|
|
19
|
+
function AvatarGroup({ className, ...props }) {
|
|
20
|
+
return (jsxRuntime.jsx("div", { "data-slot": "avatar-group", className: cn.cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
function AvatarGroupCount({ className, ...props }) {
|
|
23
|
+
return (jsxRuntime.jsx("div", { "data-slot": "avatar-group-count", className: cn.cn("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", className), ...props }));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.Avatar = Avatar;
|
|
27
|
+
exports.AvatarBadge = AvatarBadge;
|
|
28
|
+
exports.AvatarFallback = AvatarFallback;
|
|
29
|
+
exports.AvatarGroup = AvatarGroup;
|
|
30
|
+
exports.AvatarGroupCount = AvatarGroupCount;
|
|
31
|
+
exports.AvatarImage = AvatarImage;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var mergeProps = require('@base-ui/react/merge-props');
|
|
4
|
+
var useRender = require('@base-ui/react/use-render');
|
|
5
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
6
|
+
var cn = require('cn');
|
|
7
|
+
|
|
8
|
+
const badgeVariants = classVarianceAuthority.cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", {
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
12
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
13
|
+
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
|
|
14
|
+
outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
15
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
16
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
variant: "default",
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
function Badge({ className, variant = "default", render, ...props }) {
|
|
24
|
+
return useRender.useRender({
|
|
25
|
+
defaultTagName: "span",
|
|
26
|
+
props: mergeProps.mergeProps({
|
|
27
|
+
className: cn.cn(badgeVariants({ variant }), className),
|
|
28
|
+
}, props),
|
|
29
|
+
render,
|
|
30
|
+
state: {
|
|
31
|
+
slot: "badge",
|
|
32
|
+
variant,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
exports.Badge = Badge;
|
|
38
|
+
exports.badgeVariants = badgeVariants;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var mergeProps = require('@base-ui/react/merge-props');
|
|
5
|
+
var useRender = require('@base-ui/react/use-render');
|
|
6
|
+
var cn = require('cn');
|
|
7
|
+
var lucideReact = require('lucide-react');
|
|
8
|
+
|
|
9
|
+
function Breadcrumb({ className, ...props }) {
|
|
10
|
+
return (jsxRuntime.jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", className: cn.cn(className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function BreadcrumbList({ className, ...props }) {
|
|
13
|
+
return (jsxRuntime.jsx("ol", { "data-slot": "breadcrumb-list", className: cn.cn("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground", className), ...props }));
|
|
14
|
+
}
|
|
15
|
+
function BreadcrumbItem({ className, ...props }) {
|
|
16
|
+
return (jsxRuntime.jsx("li", { "data-slot": "breadcrumb-item", className: cn.cn("inline-flex items-center gap-1", className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function BreadcrumbLink({ className, render, ...props }) {
|
|
19
|
+
return useRender.useRender({
|
|
20
|
+
defaultTagName: "a",
|
|
21
|
+
props: mergeProps.mergeProps({
|
|
22
|
+
className: cn.cn("transition-colors hover:text-foreground", className),
|
|
23
|
+
}, props),
|
|
24
|
+
render,
|
|
25
|
+
state: {
|
|
26
|
+
slot: "breadcrumb-link",
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function BreadcrumbPage({ className, ...props }) {
|
|
31
|
+
return (jsxRuntime.jsx("span", { "data-slot": "breadcrumb-page", role: "link", "aria-disabled": "true", "aria-current": "page", className: cn.cn("font-normal text-foreground", className), ...props }));
|
|
32
|
+
}
|
|
33
|
+
function BreadcrumbSeparator({ children, className, ...props }) {
|
|
34
|
+
return (jsxRuntime.jsx("li", { "data-slot": "breadcrumb-separator", role: "presentation", "aria-hidden": "true", className: cn.cn("[&>svg]:size-3.5", className), ...props, children: children ?? (jsxRuntime.jsx(lucideReact.ChevronRightIcon, {})) }));
|
|
35
|
+
}
|
|
36
|
+
function BreadcrumbEllipsis({ className, ...props }) {
|
|
37
|
+
return (jsxRuntime.jsxs("span", { "data-slot": "breadcrumb-ellipsis", role: "presentation", "aria-hidden": "true", className: cn.cn("flex size-5 items-center justify-center [&>svg]:size-4", className), ...props, children: [jsxRuntime.jsx(lucideReact.MoreHorizontalIcon, {}), jsxRuntime.jsx("span", { className: "sr-only", children: "More" })] }));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
exports.Breadcrumb = Breadcrumb;
|
|
41
|
+
exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
|
|
42
|
+
exports.BreadcrumbItem = BreadcrumbItem;
|
|
43
|
+
exports.BreadcrumbLink = BreadcrumbLink;
|
|
44
|
+
exports.BreadcrumbList = BreadcrumbList;
|
|
45
|
+
exports.BreadcrumbPage = BreadcrumbPage;
|
|
46
|
+
exports.BreadcrumbSeparator = BreadcrumbSeparator;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var mergeProps = require('@base-ui/react/merge-props');
|
|
5
|
+
var useRender = require('@base-ui/react/use-render');
|
|
6
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
7
|
+
var cn = require('cn');
|
|
8
|
+
|
|
9
|
+
function BubbleGroup({ className, ...props }) {
|
|
10
|
+
return (jsxRuntime.jsx("div", { "data-slot": "bubble-group", className: cn.cn("flex min-w-0 flex-col gap-2", className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
const bubbleVariants = classVarianceAuthority.cva("group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full", {
|
|
13
|
+
variants: {
|
|
14
|
+
variant: {
|
|
15
|
+
default: "*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80",
|
|
16
|
+
secondary: "*:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)]",
|
|
17
|
+
muted: "*:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--muted),var(--foreground)_5%)]",
|
|
18
|
+
tinted: "*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-foreground dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.35_calc(c*0.5)_h)]",
|
|
19
|
+
outline: "*:data-[slot=bubble-content]:border-border *:data-[slot=bubble-content]:bg-background [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-input/30",
|
|
20
|
+
ghost: "border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted/50",
|
|
21
|
+
destructive: "*:data-[slot=bubble-content]:bg-destructive/10 *:data-[slot=bubble-content]:text-destructive dark:*:data-[slot=bubble-content]:bg-destructive/20 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/20 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/30",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
defaultVariants: {
|
|
25
|
+
variant: "default",
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
function Bubble({ variant = "default", align = "start", className, ...props }) {
|
|
29
|
+
return (jsxRuntime.jsx("div", { "data-slot": "bubble", "data-variant": variant, "data-align": align, className: cn.cn(bubbleVariants({ variant }), className), ...props }));
|
|
30
|
+
}
|
|
31
|
+
function BubbleContent({ className, render, ...props }) {
|
|
32
|
+
return useRender.useRender({
|
|
33
|
+
defaultTagName: "div",
|
|
34
|
+
props: mergeProps.mergeProps({
|
|
35
|
+
className: cn.cn("w-fit max-w-full min-w-0 overflow-hidden rounded-xl border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-3 [button,a]:focus-visible:ring-ring/50", className),
|
|
36
|
+
}, props),
|
|
37
|
+
render,
|
|
38
|
+
state: {
|
|
39
|
+
slot: "bubble-content",
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const bubbleReactionsVariants = classVarianceAuthority.cva("absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-full bg-muted px-1.5 py-0.5 text-sm ring-3 ring-card has-[button]:p-0", {
|
|
44
|
+
variants: {
|
|
45
|
+
side: {
|
|
46
|
+
top: "top-0 -translate-y-3/4",
|
|
47
|
+
bottom: "bottom-0 translate-y-3/4",
|
|
48
|
+
},
|
|
49
|
+
align: {
|
|
50
|
+
start: "left-3",
|
|
51
|
+
end: "right-3",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
defaultVariants: {
|
|
55
|
+
side: "bottom",
|
|
56
|
+
align: "end",
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
function BubbleReactions({ side = "bottom", align = "end", className, ...props }) {
|
|
60
|
+
return (jsxRuntime.jsx("div", { "data-slot": "bubble-reactions", "data-align": align, "data-side": side, className: cn.cn(bubbleReactionsVariants({ side, align }), className), ...props }));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
exports.Bubble = Bubble;
|
|
64
|
+
exports.BubbleContent = BubbleContent;
|
|
65
|
+
exports.BubbleGroup = BubbleGroup;
|
|
66
|
+
exports.BubbleReactions = BubbleReactions;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var mergeProps = require('@base-ui/react/merge-props');
|
|
5
|
+
var useRender = require('@base-ui/react/use-render');
|
|
6
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
7
|
+
var cn = require('cn');
|
|
8
|
+
var separator = require('./separator.cjs');
|
|
9
|
+
|
|
10
|
+
const buttonGroupVariants = classVarianceAuthority.cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
|
|
11
|
+
variants: {
|
|
12
|
+
orientation: {
|
|
13
|
+
horizontal: "*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0",
|
|
14
|
+
vertical: "flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
defaultVariants: {
|
|
18
|
+
orientation: "horizontal",
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
function ButtonGroup({ className, orientation, ...props }) {
|
|
22
|
+
return (jsxRuntime.jsx("div", { role: "group", "data-slot": "button-group", "data-orientation": orientation, className: cn.cn(buttonGroupVariants({ orientation }), className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function ButtonGroupText({ className, render, ...props }) {
|
|
25
|
+
return useRender.useRender({
|
|
26
|
+
defaultTagName: "div",
|
|
27
|
+
props: mergeProps.mergeProps({
|
|
28
|
+
className: cn.cn("flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
|
|
29
|
+
}, props),
|
|
30
|
+
render,
|
|
31
|
+
state: {
|
|
32
|
+
slot: "button-group-text",
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
|
|
37
|
+
return (jsxRuntime.jsx(separator.Separator, { "data-slot": "button-group-separator", orientation: orientation, className: cn.cn("relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto", className), ...props }));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
exports.ButtonGroup = ButtonGroup;
|
|
41
|
+
exports.ButtonGroupSeparator = ButtonGroupSeparator;
|
|
42
|
+
exports.ButtonGroupText = ButtonGroupText;
|
|
43
|
+
exports.buttonGroupVariants = buttonGroupVariants;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var cn = require('cn');
|
|
7
|
+
var reactDayPicker = require('react-day-picker');
|
|
8
|
+
var button = require('./button.cjs');
|
|
9
|
+
var lucideReact = require('lucide-react');
|
|
10
|
+
|
|
11
|
+
function _interopNamespaceDefault(e) {
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n.default = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
29
|
+
|
|
30
|
+
function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", locale, formatters, components, ...props }) {
|
|
31
|
+
const defaultClassNames = reactDayPicker.getDefaultClassNames();
|
|
32
|
+
return (jsxRuntime.jsx(reactDayPicker.DayPicker, { showOutsideDays: showOutsideDays, className: cn.cn("group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent", String.raw `rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw `rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className), captionLayout: captionLayout, locale: locale, formatters: {
|
|
33
|
+
formatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: "short" }),
|
|
34
|
+
...formatters,
|
|
35
|
+
}, classNames: {
|
|
36
|
+
root: cn.cn("w-fit", defaultClassNames.root),
|
|
37
|
+
months: cn.cn("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
|
|
38
|
+
month: cn.cn("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
39
|
+
nav: cn.cn("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", defaultClassNames.nav),
|
|
40
|
+
button_previous: cn.cn(button.buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
|
|
41
|
+
button_next: cn.cn(button.buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
|
|
42
|
+
month_caption: cn.cn("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)", defaultClassNames.month_caption),
|
|
43
|
+
dropdowns: cn.cn("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
|
|
44
|
+
dropdown_root: cn.cn("relative rounded-(--cell-radius)", defaultClassNames.dropdown_root),
|
|
45
|
+
dropdown: cn.cn("absolute inset-0 bg-popover opacity-0", defaultClassNames.dropdown),
|
|
46
|
+
caption_label: cn.cn("font-medium select-none", captionLayout === "label"
|
|
47
|
+
? "text-sm"
|
|
48
|
+
: "flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", defaultClassNames.caption_label),
|
|
49
|
+
month_grid: cn.cn("w-full border-collapse", defaultClassNames.month_grid),
|
|
50
|
+
weekdays: cn.cn("flex", defaultClassNames.weekdays),
|
|
51
|
+
weekday: cn.cn("flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none", defaultClassNames.weekday),
|
|
52
|
+
week: cn.cn("mt-2 flex w-full", defaultClassNames.week),
|
|
53
|
+
week_number_header: cn.cn("w-(--cell-size) select-none", defaultClassNames.week_number_header),
|
|
54
|
+
week_number: cn.cn("text-[0.8rem] text-muted-foreground select-none", defaultClassNames.week_number),
|
|
55
|
+
day: cn.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-r-(--cell-radius)", props.showWeekNumber
|
|
56
|
+
? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)"
|
|
57
|
+
: "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)", defaultClassNames.day),
|
|
58
|
+
range_start: cn.cn("relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted", defaultClassNames.range_start),
|
|
59
|
+
range_middle: cn.cn("rounded-none", defaultClassNames.range_middle),
|
|
60
|
+
range_end: cn.cn("relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted", defaultClassNames.range_end),
|
|
61
|
+
today: cn.cn("rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none", defaultClassNames.today),
|
|
62
|
+
outside: cn.cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
|
|
63
|
+
disabled: cn.cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
64
|
+
hidden: cn.cn("invisible", defaultClassNames.hidden),
|
|
65
|
+
...classNames,
|
|
66
|
+
}, components: {
|
|
67
|
+
Root: ({ className, rootRef, ...props }) => {
|
|
68
|
+
return (jsxRuntime.jsx("div", { "data-slot": "calendar", ref: rootRef, className: cn.cn(className), ...props }));
|
|
69
|
+
},
|
|
70
|
+
Chevron: ({ className, orientation, ...props }) => {
|
|
71
|
+
if (orientation === "left") {
|
|
72
|
+
return (jsxRuntime.jsx(lucideReact.ChevronLeftIcon, { className: cn.cn("size-4", className), ...props }));
|
|
73
|
+
}
|
|
74
|
+
if (orientation === "right") {
|
|
75
|
+
return (jsxRuntime.jsx(lucideReact.ChevronRightIcon, { className: cn.cn("size-4", className), ...props }));
|
|
76
|
+
}
|
|
77
|
+
return (jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: cn.cn("size-4", className), ...props }));
|
|
78
|
+
},
|
|
79
|
+
DayButton: ({ ...props }) => (jsxRuntime.jsx(CalendarDayButton, { locale: locale, ...props })),
|
|
80
|
+
WeekNumber: ({ children, week, ...props }) => {
|
|
81
|
+
return (jsxRuntime.jsx("th", { ...props, "data-week-number": week.weekNumber, children: jsxRuntime.jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children: children }) }));
|
|
82
|
+
},
|
|
83
|
+
...components,
|
|
84
|
+
}, ...props }));
|
|
85
|
+
}
|
|
86
|
+
function CalendarDayButton({ className, day, modifiers, locale, ...props }) {
|
|
87
|
+
const defaultClassNames = reactDayPicker.getDefaultClassNames();
|
|
88
|
+
const ref = React__namespace.useRef(null);
|
|
89
|
+
React__namespace.useEffect(() => {
|
|
90
|
+
if (modifiers.focused)
|
|
91
|
+
ref.current?.focus();
|
|
92
|
+
}, [modifiers.focused]);
|
|
93
|
+
return (jsxRuntime.jsx(button.Button, { variant: "ghost", size: "icon", "data-day": day.date.toLocaleDateString(locale?.code), "data-selected-single": modifiers.selected &&
|
|
94
|
+
!modifiers.range_start &&
|
|
95
|
+
!modifiers.range_end &&
|
|
96
|
+
!modifiers.range_middle, "data-range-start": modifiers.range_start, "data-range-end": modifiers.range_end, "data-range-middle": modifiers.range_middle, className: cn.cn("relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className), ...props }));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
exports.Calendar = Calendar;
|
|
100
|
+
exports.CalendarDayButton = CalendarDayButton;
|