@fluencypassdevs/cycle 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -4
- package/bin/init.mjs +95 -0
- package/cli/CLAUDE-section.md +100 -0
- package/dist/chunk-2EKU7RP4.js +18 -0
- package/dist/chunk-2EKU7RP4.js.map +1 -0
- package/dist/chunk-5AZSRHJE.js +180 -0
- package/dist/chunk-5AZSRHJE.js.map +1 -0
- package/dist/chunk-EF6FQT4Y.js +78 -0
- package/dist/chunk-EF6FQT4Y.js.map +1 -0
- package/dist/chunk-F2Q3E2ZM.js +102 -0
- package/dist/chunk-F2Q3E2ZM.js.map +1 -0
- package/dist/chunk-IGMII4BK.js +58 -0
- package/dist/chunk-IGMII4BK.js.map +1 -0
- package/dist/chunk-LHSUEXOW.js +70 -0
- package/dist/chunk-LHSUEXOW.js.map +1 -0
- package/dist/{chunk-PM6ZUCMQ.js → chunk-MTKKVYNS.js} +3 -3
- package/dist/chunk-MTKKVYNS.js.map +1 -0
- package/dist/{chunk-QTL6W4I2.js → chunk-NYJMA2T7.js} +3 -3
- package/dist/{chunk-QTL6W4I2.js.map → chunk-NYJMA2T7.js.map} +1 -1
- package/dist/chunk-POQUVBVT.js +110 -0
- package/dist/chunk-POQUVBVT.js.map +1 -0
- package/dist/chunk-PY2BIZNB.js +52 -0
- package/dist/chunk-PY2BIZNB.js.map +1 -0
- package/dist/chunk-RI3ULQHH.js +91 -0
- package/dist/chunk-RI3ULQHH.js.map +1 -0
- package/dist/chunk-SZUWVHP4.js +187 -0
- package/dist/chunk-SZUWVHP4.js.map +1 -0
- package/dist/chunk-TZ7BEYQ7.js +147 -0
- package/dist/chunk-TZ7BEYQ7.js.map +1 -0
- package/dist/{chunk-VECLN5AT.js → chunk-WRJZHQNY.js} +4 -4
- package/dist/{chunk-VECLN5AT.js.map → chunk-WRJZHQNY.js.map} +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.js +15 -4
- package/dist/styles/tokens.css +3 -2
- package/dist/ui/alert-dialog.d.ts +23 -0
- package/dist/ui/alert-dialog.js +6 -0
- package/dist/ui/alert-dialog.js.map +1 -0
- package/dist/ui/alert.d.ts +17 -0
- package/dist/ui/alert.js +7 -0
- package/dist/ui/alert.js.map +1 -0
- package/dist/ui/audio-player.js +1 -1
- package/dist/ui/badge.d.ts +2 -2
- package/dist/ui/button.d.ts +2 -2
- package/dist/ui/checkbox.d.ts +1 -1
- package/dist/ui/dialog.d.ts +20 -0
- package/dist/ui/dialog.js +6 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/empty.d.ts +15 -0
- package/dist/ui/empty.js +5 -0
- package/dist/ui/empty.js.map +1 -0
- package/dist/ui/file-card.d.ts +1 -1
- package/dist/ui/like-dislike.d.ts +1 -1
- package/dist/ui/popover.d.ts +13 -0
- package/dist/ui/popover.js +5 -0
- package/dist/ui/popover.js.map +1 -0
- package/dist/ui/progress-dot.d.ts +22 -0
- package/dist/ui/progress-dot.js +5 -0
- package/dist/ui/progress-dot.js.map +1 -0
- package/dist/ui/progress-stage.d.ts +1 -1
- package/dist/ui/progress-stage.js +1 -1
- package/dist/ui/progress.d.ts +1 -1
- package/dist/ui/progress.js +1 -1
- package/dist/ui/radio-group.d.ts +1 -1
- package/dist/ui/resizable.d.ts +10 -0
- package/dist/ui/resizable.js +5 -0
- package/dist/ui/resizable.js.map +1 -0
- package/dist/ui/select.d.ts +18 -0
- package/dist/ui/select.js +5 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/skeleton.d.ts +5 -0
- package/dist/ui/skeleton.js +5 -0
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/ui/slider.d.ts +1 -1
- package/dist/ui/sonner.d.ts +29 -0
- package/dist/ui/sonner.js +7 -0
- package/dist/ui/sonner.js.map +1 -0
- package/dist/ui/switch.d.ts +1 -1
- package/dist/ui/toggle.d.ts +1 -1
- package/dist/ui/tooltip.d.ts +10 -0
- package/dist/ui/tooltip.js +5 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/package.json +12 -1
- package/dist/chunk-PM6ZUCMQ.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,23 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
Design System da [Fluencypass](https://fluencypass.com), construido sobre shadcn/ui + Next.js 16 + Tailwind CSS 4.
|
|
4
4
|
|
|
5
|
-
## Instalacao
|
|
5
|
+
## Instalacao
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
npm install @fluencypassdevs/cycle
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
No `globals.css`:
|
|
12
|
+
|
|
13
|
+
```css
|
|
14
|
+
@import "tailwindcss";
|
|
15
|
+
@source "../../node_modules/@fluencypassdevs/cycle/dist";
|
|
16
|
+
@import "@fluencypassdevs/cycle/styles.css";
|
|
17
|
+
```
|
|
18
|
+
|
|
11
19
|
```tsx
|
|
12
20
|
import { Button, Badge, CycleIcon } from "@fluencypassdevs/cycle"
|
|
13
|
-
import "@fluencypassdevs/cycle/styles.css"
|
|
14
21
|
```
|
|
15
22
|
|
|
16
|
-
##
|
|
23
|
+
## Configurar IA (Claude Code, Cursor, Copilot)
|
|
17
24
|
|
|
18
25
|
```bash
|
|
19
|
-
npx
|
|
26
|
+
npx cycle init
|
|
20
27
|
```
|
|
21
28
|
|
|
29
|
+
Adiciona as regras do Cycle Design System ao seu CLAUDE.md, .cursorrules e outros spec-kits automaticamente. Preserva regras existentes.
|
|
30
|
+
|
|
22
31
|
## Documentacao
|
|
23
32
|
|
|
24
33
|
- **Setup Guide**: https://cycle-design.fluencypass.com/docs
|
package/bin/init.mjs
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from "fs"
|
|
4
|
+
import path from "path"
|
|
5
|
+
|
|
6
|
+
const cwd = process.cwd()
|
|
7
|
+
|
|
8
|
+
// --- Cycle Design System section content ---
|
|
9
|
+
const CYCLE_SECTION_MARKER = "<!-- CYCLE-DESIGN-SYSTEM-START -->"
|
|
10
|
+
const CYCLE_SECTION_END = "<!-- CYCLE-DESIGN-SYSTEM-END -->"
|
|
11
|
+
|
|
12
|
+
const cycleContent = fs.readFileSync(
|
|
13
|
+
new URL("../cli/CLAUDE-section.md", import.meta.url),
|
|
14
|
+
"utf-8"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
const cycleSection = `${CYCLE_SECTION_MARKER}\n${cycleContent}\n${CYCLE_SECTION_END}`
|
|
18
|
+
|
|
19
|
+
// --- Helper functions ---
|
|
20
|
+
|
|
21
|
+
function hasExistingCycleSection(content) {
|
|
22
|
+
return content.includes(CYCLE_SECTION_MARKER)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function replaceCycleSection(content) {
|
|
26
|
+
const startIdx = content.indexOf(CYCLE_SECTION_MARKER)
|
|
27
|
+
const endIdx = content.indexOf(CYCLE_SECTION_END)
|
|
28
|
+
if (startIdx === -1 || endIdx === -1) return content
|
|
29
|
+
const endOfMarker = endIdx + CYCLE_SECTION_END.length
|
|
30
|
+
return content.slice(0, startIdx) + cycleSection + content.slice(endOfMarker)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function mergeIntoFile(filePath, fileName) {
|
|
34
|
+
if (!fs.existsSync(filePath)) {
|
|
35
|
+
// File doesn't exist — create with Cycle content only
|
|
36
|
+
fs.writeFileSync(filePath, cycleSection + "\n")
|
|
37
|
+
console.log(` ✓ ${fileName} criado com regras do Cycle Design System`)
|
|
38
|
+
return
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const existing = fs.readFileSync(filePath, "utf-8")
|
|
42
|
+
|
|
43
|
+
if (hasExistingCycleSection(existing)) {
|
|
44
|
+
// Update existing Cycle section
|
|
45
|
+
const updated = replaceCycleSection(existing)
|
|
46
|
+
fs.writeFileSync(filePath, updated)
|
|
47
|
+
console.log(` ✓ ${fileName} atualizado (secao Cycle substituida)`)
|
|
48
|
+
return
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Append Cycle section to existing file
|
|
52
|
+
const separator = existing.endsWith("\n") ? "\n" : "\n\n"
|
|
53
|
+
fs.writeFileSync(filePath, existing + separator + cycleSection + "\n")
|
|
54
|
+
console.log(` ✓ ${fileName} atualizado (secao Cycle adicionada ao final)`)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// --- Main ---
|
|
58
|
+
|
|
59
|
+
console.log("")
|
|
60
|
+
console.log(" Cycle Design System — Init")
|
|
61
|
+
console.log(" ─────────────────────────")
|
|
62
|
+
console.log("")
|
|
63
|
+
|
|
64
|
+
// 1. CLAUDE.md (Claude Code)
|
|
65
|
+
mergeIntoFile(path.join(cwd, "CLAUDE.md"), "CLAUDE.md")
|
|
66
|
+
|
|
67
|
+
// 2. .cursorrules (Cursor)
|
|
68
|
+
const cursorrules = path.join(cwd, ".cursorrules")
|
|
69
|
+
if (fs.existsSync(cursorrules)) {
|
|
70
|
+
mergeIntoFile(cursorrules, ".cursorrules")
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// 3. .cursorprompt (Cursor newer)
|
|
74
|
+
const cursorprompt = path.join(cwd, ".cursorprompt")
|
|
75
|
+
if (fs.existsSync(cursorprompt)) {
|
|
76
|
+
mergeIntoFile(cursorprompt, ".cursorprompt")
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// 4. .github/copilot-instructions.md (GitHub Copilot)
|
|
80
|
+
const copilotInstructions = path.join(cwd, ".github", "copilot-instructions.md")
|
|
81
|
+
if (fs.existsSync(copilotInstructions)) {
|
|
82
|
+
mergeIntoFile(copilotInstructions, ".github/copilot-instructions.md")
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// 5. AGENTS.md (Generic AI agents)
|
|
86
|
+
const agentsMd = path.join(cwd, "AGENTS.md")
|
|
87
|
+
if (fs.existsSync(agentsMd)) {
|
|
88
|
+
mergeIntoFile(agentsMd, "AGENTS.md")
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
console.log("")
|
|
92
|
+
console.log(" Pronto! As regras do Cycle Design System foram configuradas.")
|
|
93
|
+
console.log(" Para atualizar apos upgrade do pacote, rode novamente:")
|
|
94
|
+
console.log(" npx @fluencypassdevs/cycle init")
|
|
95
|
+
console.log("")
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Cycle Design System
|
|
2
|
+
|
|
3
|
+
Este projeto usa o **Cycle Design System** (`@fluencypassdevs/cycle`).
|
|
4
|
+
|
|
5
|
+
> **REGRA PRINCIPAL**: Todos os componentes UI vem do pacote npm `@fluencypassdevs/cycle`.
|
|
6
|
+
> NUNCA copiar, clonar ou recriar componentes que ja existem na biblioteca.
|
|
7
|
+
|
|
8
|
+
## Como importar
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
// Import principal (recomendado)
|
|
12
|
+
import { Button, Input, Badge } from "@fluencypassdevs/cycle"
|
|
13
|
+
|
|
14
|
+
// Import granular (tree-shaking)
|
|
15
|
+
import { Button } from "@fluencypassdevs/cycle/ui/button"
|
|
16
|
+
import { CycleIcon } from "@fluencypassdevs/cycle/icons"
|
|
17
|
+
import { cn } from "@fluencypassdevs/cycle/lib/utils"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## CSS (globals.css)
|
|
21
|
+
|
|
22
|
+
```css
|
|
23
|
+
@import "tailwindcss";
|
|
24
|
+
@source "../../node_modules/@fluencypassdevs/cycle/dist";
|
|
25
|
+
@import "@fluencypassdevs/cycle/styles.css";
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
> **IMPORTANTE**: O `@source` e obrigatorio. Sem ele, o Tailwind v4 nao escaneia `node_modules` e remove (purge) todas as classes usadas internamente pelos componentes do Cycle.
|
|
29
|
+
|
|
30
|
+
## Regras para IA (IMPORTANTE)
|
|
31
|
+
|
|
32
|
+
### Regras de Componentes
|
|
33
|
+
|
|
34
|
+
1. **SEMPRE importar de `@fluencypassdevs/cycle`** — NUNCA criar componentes em `components/ui/` se ja existem na biblioteca
|
|
35
|
+
2. **NUNCA copiar codigo-fonte** de componentes do Design System para dentro do projeto
|
|
36
|
+
3. **Se um componente nao existe na biblioteca, sinalize** — nao invente um substituto
|
|
37
|
+
4. **Composites do projeto** ficam em `src/components/composites/` e usam primitives da biblioteca
|
|
38
|
+
5. **Nunca criar um componente custom se o Cycle ja resolve** — custom so existe se nao ha equivalente
|
|
39
|
+
|
|
40
|
+
### Regras de Estilo
|
|
41
|
+
|
|
42
|
+
6. **Sempre usar `cn()` de `@fluencypassdevs/cycle/lib/utils`** para merge de classes CSS
|
|
43
|
+
7. **NUNCA usar cores hardcoded** (ex: `bg-blue-500`, `text-[#333]`) — usar semantic tokens: `bg-primary`, `text-muted-foreground`, `border-border`, etc.
|
|
44
|
+
8. **NUNCA usar valores de spacing hardcoded fora da escala Tailwind** — usar a escala padrao: `p-4`, `gap-6`, `mt-8`, etc.
|
|
45
|
+
9. **Dark mode via classe `.dark`** — tokens light/dark ja estao definidos nos tokens do Cycle
|
|
46
|
+
10. **Usar variaveis de radius** — `rounded-sm`, `rounded-md`, `rounded-lg`, `rounded-xl`
|
|
47
|
+
|
|
48
|
+
### Regras de Codigo
|
|
49
|
+
|
|
50
|
+
11. **Usar TypeScript strict** — tipar todas as props, nunca usar `any`
|
|
51
|
+
12. **Icones via CycleIcon** — `import { CycleIcon } from "@fluencypassdevs/cycle"` + `<CycleIcon icon={Home} size="sm" />`
|
|
52
|
+
13. **Imports com alias `@/`** — para codigo do projeto. Componentes do DS sempre de `@fluencypassdevs/cycle`
|
|
53
|
+
|
|
54
|
+
## Componentes Disponiveis
|
|
55
|
+
|
|
56
|
+
Todos importados de `@fluencypassdevs/cycle`:
|
|
57
|
+
|
|
58
|
+
| Componente | Descricao |
|
|
59
|
+
|------------|-----------|
|
|
60
|
+
| Button | 6 variants, 8 sizes, suporte a temas |
|
|
61
|
+
| Input | 2 variantes (outline, filled), 3 sizes |
|
|
62
|
+
| Textarea | 2 variantes (outline, filled), 3 sizes |
|
|
63
|
+
| Label | Rotulo acessivel para campos |
|
|
64
|
+
| Badge | 10 variants, 3 sizes |
|
|
65
|
+
| Accordion | Secoes colapsaveis |
|
|
66
|
+
| Tabs | 2 variants (default, line) |
|
|
67
|
+
| Sheet | Overlay lateral/bottom |
|
|
68
|
+
| ScrollArea, ScrollBar | Scroll customizado |
|
|
69
|
+
| Checkbox | 3 sizes, 2 variants |
|
|
70
|
+
| RadioGroup, RadioGroupItem | 3 sizes |
|
|
71
|
+
| Switch | 3 sizes |
|
|
72
|
+
| Slider | 3 sizes, suporte a range |
|
|
73
|
+
| Toggle | 2 variants, 8 sizes |
|
|
74
|
+
| Progress | 4 sizes, 4 variants |
|
|
75
|
+
| ProgressDot | Progresso compacto com dots (2-10 stages) |
|
|
76
|
+
| ProgressStage | Progresso segmentado (2-10 stages) |
|
|
77
|
+
| FileCard | Download card, 3 sizes |
|
|
78
|
+
| Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup | Sistema de avatar |
|
|
79
|
+
| ChatBubble | Bolha de mensagem |
|
|
80
|
+
| ChatPanel | Painel de chat completo |
|
|
81
|
+
| LikeDislike | Botoes like/dislike |
|
|
82
|
+
| LiveWaiting | Tela de espera para lives |
|
|
83
|
+
| AudioPlayer | Player de audio (Vidstack) |
|
|
84
|
+
| VideoPlayer | Player de video (Vidstack) |
|
|
85
|
+
| Toaster, cycleToast | Notificacoes toast |
|
|
86
|
+
| Alert, AlertAction, AlertClose | Alertas informativos |
|
|
87
|
+
| AlertDialog | Dialog de confirmacao |
|
|
88
|
+
| Select | Dropdown de selecao |
|
|
89
|
+
| Popover | Conteudo flutuante |
|
|
90
|
+
| Tooltip, TooltipProvider | Dica de texto |
|
|
91
|
+
| ResizablePanel, ResizableHandle | Paineis redimensionaveis |
|
|
92
|
+
| Empty | Estado vazio |
|
|
93
|
+
| Skeleton | Placeholder de carregamento |
|
|
94
|
+
| Dialog | Modal dialog |
|
|
95
|
+
| CycleIcon | Wrapper para icones Lucide |
|
|
96
|
+
|
|
97
|
+
## Documentacao
|
|
98
|
+
|
|
99
|
+
- **Componentes**: https://cycle-design.fluencypass.com/docs/components
|
|
100
|
+
- **Tokens**: https://cycle-design.fluencypass.com/docs/tokens
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { cn } from './chunk-TYCPXAXF.js';
|
|
2
|
+
import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
function Skeleton(_a) {
|
|
6
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
7
|
+
return /* @__PURE__ */ jsx(
|
|
8
|
+
"div",
|
|
9
|
+
__spreadValues({
|
|
10
|
+
"data-slot": "skeleton",
|
|
11
|
+
className: cn("animate-pulse rounded-md bg-accent", className)
|
|
12
|
+
}, props)
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { Skeleton };
|
|
17
|
+
//# sourceMappingURL=chunk-2EKU7RP4.js.map
|
|
18
|
+
//# sourceMappingURL=chunk-2EKU7RP4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/skeleton.tsx"],"names":[],"mappings":";;;;AAEA,SAAS,SAAS,EAAA,EAAsD;AAAtD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAFpB,GAEkB,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AAClB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS;AAAA,KAAA,EACzD,KAAA;AAAA,GACN;AAEJ","file":"chunk-2EKU7RP4.js","sourcesContent":["import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"animate-pulse rounded-md bg-accent\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"]}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { Button } from './chunk-7UMEJDC3.js';
|
|
2
|
+
import { cn } from './chunk-TYCPXAXF.js';
|
|
3
|
+
import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
|
|
4
|
+
import { AlertDialog as AlertDialog$1 } from 'radix-ui';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function AlertDialog(_a) {
|
|
8
|
+
var props = __objRest(_a, []);
|
|
9
|
+
return /* @__PURE__ */ jsx(AlertDialog$1.Root, __spreadValues({ "data-slot": "alert-dialog" }, props));
|
|
10
|
+
}
|
|
11
|
+
function AlertDialogTrigger(_a) {
|
|
12
|
+
var props = __objRest(_a, []);
|
|
13
|
+
return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, __spreadValues({ "data-slot": "alert-dialog-trigger" }, props));
|
|
14
|
+
}
|
|
15
|
+
function AlertDialogPortal(_a) {
|
|
16
|
+
var props = __objRest(_a, []);
|
|
17
|
+
return /* @__PURE__ */ jsx(AlertDialog$1.Portal, __spreadValues({ "data-slot": "alert-dialog-portal" }, props));
|
|
18
|
+
}
|
|
19
|
+
function AlertDialogOverlay(_a) {
|
|
20
|
+
var _b = _a, {
|
|
21
|
+
className
|
|
22
|
+
} = _b, props = __objRest(_b, [
|
|
23
|
+
"className"
|
|
24
|
+
]);
|
|
25
|
+
return /* @__PURE__ */ jsx(
|
|
26
|
+
AlertDialog$1.Overlay,
|
|
27
|
+
__spreadValues({
|
|
28
|
+
"data-slot": "alert-dialog-overlay",
|
|
29
|
+
className: cn(
|
|
30
|
+
"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
|
|
31
|
+
className
|
|
32
|
+
)
|
|
33
|
+
}, props)
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
function AlertDialogContent(_a) {
|
|
37
|
+
var _b = _a, {
|
|
38
|
+
className,
|
|
39
|
+
size = "default"
|
|
40
|
+
} = _b, props = __objRest(_b, [
|
|
41
|
+
"className",
|
|
42
|
+
"size"
|
|
43
|
+
]);
|
|
44
|
+
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
45
|
+
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
46
|
+
/* @__PURE__ */ jsx(
|
|
47
|
+
AlertDialog$1.Content,
|
|
48
|
+
__spreadValues({
|
|
49
|
+
"data-slot": "alert-dialog-content",
|
|
50
|
+
"data-size": size,
|
|
51
|
+
className: cn(
|
|
52
|
+
"group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg",
|
|
53
|
+
className
|
|
54
|
+
)
|
|
55
|
+
}, props)
|
|
56
|
+
)
|
|
57
|
+
] });
|
|
58
|
+
}
|
|
59
|
+
function AlertDialogHeader(_a) {
|
|
60
|
+
var _b = _a, {
|
|
61
|
+
className
|
|
62
|
+
} = _b, props = __objRest(_b, [
|
|
63
|
+
"className"
|
|
64
|
+
]);
|
|
65
|
+
return /* @__PURE__ */ jsx(
|
|
66
|
+
"div",
|
|
67
|
+
__spreadValues({
|
|
68
|
+
"data-slot": "alert-dialog-header",
|
|
69
|
+
className: cn(
|
|
70
|
+
"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-6 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]",
|
|
71
|
+
className
|
|
72
|
+
)
|
|
73
|
+
}, props)
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
function AlertDialogFooter(_a) {
|
|
77
|
+
var _b = _a, {
|
|
78
|
+
className
|
|
79
|
+
} = _b, props = __objRest(_b, [
|
|
80
|
+
"className"
|
|
81
|
+
]);
|
|
82
|
+
return /* @__PURE__ */ jsx(
|
|
83
|
+
"div",
|
|
84
|
+
__spreadValues({
|
|
85
|
+
"data-slot": "alert-dialog-footer",
|
|
86
|
+
className: cn(
|
|
87
|
+
"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
|
|
88
|
+
className
|
|
89
|
+
)
|
|
90
|
+
}, props)
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
function AlertDialogTitle(_a) {
|
|
94
|
+
var _b = _a, {
|
|
95
|
+
className
|
|
96
|
+
} = _b, props = __objRest(_b, [
|
|
97
|
+
"className"
|
|
98
|
+
]);
|
|
99
|
+
return /* @__PURE__ */ jsx(
|
|
100
|
+
AlertDialog$1.Title,
|
|
101
|
+
__spreadValues({
|
|
102
|
+
"data-slot": "alert-dialog-title",
|
|
103
|
+
className: cn(
|
|
104
|
+
"text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
|
|
105
|
+
className
|
|
106
|
+
)
|
|
107
|
+
}, props)
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
function AlertDialogDescription(_a) {
|
|
111
|
+
var _b = _a, {
|
|
112
|
+
className
|
|
113
|
+
} = _b, props = __objRest(_b, [
|
|
114
|
+
"className"
|
|
115
|
+
]);
|
|
116
|
+
return /* @__PURE__ */ jsx(
|
|
117
|
+
AlertDialog$1.Description,
|
|
118
|
+
__spreadValues({
|
|
119
|
+
"data-slot": "alert-dialog-description",
|
|
120
|
+
className: cn("text-sm text-muted-foreground", className)
|
|
121
|
+
}, props)
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
function AlertDialogMedia(_a) {
|
|
125
|
+
var _b = _a, {
|
|
126
|
+
className
|
|
127
|
+
} = _b, props = __objRest(_b, [
|
|
128
|
+
"className"
|
|
129
|
+
]);
|
|
130
|
+
return /* @__PURE__ */ jsx(
|
|
131
|
+
"div",
|
|
132
|
+
__spreadValues({
|
|
133
|
+
"data-slot": "alert-dialog-media",
|
|
134
|
+
className: cn(
|
|
135
|
+
"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8",
|
|
136
|
+
className
|
|
137
|
+
)
|
|
138
|
+
}, props)
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
function AlertDialogAction(_a) {
|
|
142
|
+
var _b = _a, {
|
|
143
|
+
className,
|
|
144
|
+
variant = "default",
|
|
145
|
+
size = "default"
|
|
146
|
+
} = _b, props = __objRest(_b, [
|
|
147
|
+
"className",
|
|
148
|
+
"variant",
|
|
149
|
+
"size"
|
|
150
|
+
]);
|
|
151
|
+
return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
|
|
152
|
+
AlertDialog$1.Action,
|
|
153
|
+
__spreadValues({
|
|
154
|
+
"data-slot": "alert-dialog-action",
|
|
155
|
+
className: cn(className)
|
|
156
|
+
}, props)
|
|
157
|
+
) });
|
|
158
|
+
}
|
|
159
|
+
function AlertDialogCancel(_a) {
|
|
160
|
+
var _b = _a, {
|
|
161
|
+
className,
|
|
162
|
+
variant = "outline",
|
|
163
|
+
size = "default"
|
|
164
|
+
} = _b, props = __objRest(_b, [
|
|
165
|
+
"className",
|
|
166
|
+
"variant",
|
|
167
|
+
"size"
|
|
168
|
+
]);
|
|
169
|
+
return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
|
|
170
|
+
AlertDialog$1.Cancel,
|
|
171
|
+
__spreadValues({
|
|
172
|
+
"data-slot": "alert-dialog-cancel",
|
|
173
|
+
className: cn(className)
|
|
174
|
+
}, props)
|
|
175
|
+
) });
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
|
|
179
|
+
//# sourceMappingURL=chunk-5AZSRHJE.js.map
|
|
180
|
+
//# sourceMappingURL=chunk-5AZSRHJE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/alert-dialog.tsx"],"names":["AlertDialogPrimitive"],"mappings":"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","file":"chunk-5AZSRHJE.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"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-6 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]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n </Button>\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n {...props}\n />\n </Button>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n"]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { cn } from './chunk-TYCPXAXF.js';
|
|
2
|
+
import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
|
|
3
|
+
import { Popover as Popover$1 } from 'radix-ui';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
function Popover(_a) {
|
|
7
|
+
var props = __objRest(_a, []);
|
|
8
|
+
return /* @__PURE__ */ jsx(Popover$1.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
9
|
+
}
|
|
10
|
+
function PopoverTrigger(_a) {
|
|
11
|
+
var props = __objRest(_a, []);
|
|
12
|
+
return /* @__PURE__ */ jsx(Popover$1.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
|
|
13
|
+
}
|
|
14
|
+
function PopoverContent(_a) {
|
|
15
|
+
var _b = _a, {
|
|
16
|
+
className,
|
|
17
|
+
align = "center",
|
|
18
|
+
sideOffset = 4
|
|
19
|
+
} = _b, props = __objRest(_b, [
|
|
20
|
+
"className",
|
|
21
|
+
"align",
|
|
22
|
+
"sideOffset"
|
|
23
|
+
]);
|
|
24
|
+
return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
25
|
+
Popover$1.Content,
|
|
26
|
+
__spreadValues({
|
|
27
|
+
"data-slot": "popover-content",
|
|
28
|
+
align,
|
|
29
|
+
sideOffset,
|
|
30
|
+
className: cn(
|
|
31
|
+
"z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
|
|
32
|
+
className
|
|
33
|
+
)
|
|
34
|
+
}, props)
|
|
35
|
+
) });
|
|
36
|
+
}
|
|
37
|
+
function PopoverAnchor(_a) {
|
|
38
|
+
var props = __objRest(_a, []);
|
|
39
|
+
return /* @__PURE__ */ jsx(Popover$1.Anchor, __spreadValues({ "data-slot": "popover-anchor" }, props));
|
|
40
|
+
}
|
|
41
|
+
function PopoverHeader(_a) {
|
|
42
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
43
|
+
return /* @__PURE__ */ jsx(
|
|
44
|
+
"div",
|
|
45
|
+
__spreadValues({
|
|
46
|
+
"data-slot": "popover-header",
|
|
47
|
+
className: cn("flex flex-col gap-1 text-sm", className)
|
|
48
|
+
}, props)
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
function PopoverTitle(_a) {
|
|
52
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
"div",
|
|
55
|
+
__spreadValues({
|
|
56
|
+
"data-slot": "popover-title",
|
|
57
|
+
className: cn("font-medium", className)
|
|
58
|
+
}, props)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
function PopoverDescription(_a) {
|
|
62
|
+
var _b = _a, {
|
|
63
|
+
className
|
|
64
|
+
} = _b, props = __objRest(_b, [
|
|
65
|
+
"className"
|
|
66
|
+
]);
|
|
67
|
+
return /* @__PURE__ */ jsx(
|
|
68
|
+
"p",
|
|
69
|
+
__spreadValues({
|
|
70
|
+
"data-slot": "popover-description",
|
|
71
|
+
className: cn("text-muted-foreground", className)
|
|
72
|
+
}, props)
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
|
|
77
|
+
//# sourceMappingURL=chunk-EF6FQT4Y.js.map
|
|
78
|
+
//# sourceMappingURL=chunk-EF6FQT4Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/popover.tsx"],"names":["PopoverPrimitive"],"mappings":";;;;;AAOA,SAAS,QAAQ,EAAA,EAEsC;AAFtC,EAAA,IACZ,kBADY,EAAA,EACZ,EAAA,CAAA;AAEH,EAAA,2BAAQA,SAAA,CAAiB,IAAA,EAAjB,cAAA,CAAA,EAAsB,WAAA,EAAU,aAAc,KAAA,CAAO,CAAA;AAC/D;AAEA,SAAS,eAAe,EAAA,EAEkC;AAFlC,EAAA,IACnB,kBADmB,EAAA,EACnB,EAAA,CAAA;AAEH,EAAA,2BAAQA,SAAA,CAAiB,OAAA,EAAjB,cAAA,CAAA,EAAyB,WAAA,EAAU,qBAAsB,KAAA,CAAO,CAAA;AAC1E;AAEA,SAAS,eAAe,EAAA,EAKkC;AALlC,EAAA,IAAA,EAAA,GAAA,EAAA,EACtB;AAAA,IAAA,SAAA;AAAA,IACA,KAAA,GAAQ,QAAA;AAAA,IACR,UAAA,GAAa;AAAA,GAtBf,GAmBwB,EAAA,EAInB,KAAA,GAAA,SAAA,CAJmB,EAAA,EAInB;AAAA,IAHH,WAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA,CAACA,SAAA,CAAiB,MAAA,EAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAACA,SAAA,CAAiB,OAAA;AAAA,IAAjB,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,geAAA;AAAA,QACA;AAAA;AACF,KAAA,EACI,KAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAEA,SAAS,cAAc,EAAA,EAEkC;AAFlC,EAAA,IAClB,kBADkB,EAAA,EAClB,EAAA,CAAA;AAEH,EAAA,2BAAQA,SAAA,CAAiB,MAAA,EAAjB,cAAA,CAAA,EAAwB,WAAA,EAAU,oBAAqB,KAAA,CAAO,CAAA;AACxE;AAEA,SAAS,cAAc,EAAA,EAAsD;AAAtD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EA/CzB,GA+CuB,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AACvB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS;AAAA,KAAA,EAClD,KAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAa,EAAA,EAAqD;AAArD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAzDxB,GAyDsB,EAAA,EAAgB,KAAA,GAAA,SAAA,CAAhB,IAAgB,CAAd,WAAA,CAAA,CAAA;AACtB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS;AAAA,KAAA,EAClC,KAAA;AAAA,GACN;AAEJ;AAEA,SAAS,mBAAmB,EAAA,EAGE;AAHF,EAAA,IAAA,EAAA,GAAA,EAAA,EAC1B;AAAA,IAAA;AAAA,GApEF,GAmE4B,EAAA,EAEvB,KAAA,GAAA,SAAA,CAFuB,EAAA,EAEvB;AAAA,IADH;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS;AAAA,KAAA,EAC5C,KAAA;AAAA,GACN;AAEJ","file":"chunk-EF6FQT4Y.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-1 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n return (\n <div\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n}\n"]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { cn } from './chunk-TYCPXAXF.js';
|
|
2
|
+
import { __objRest, __spreadValues } from './chunk-YINJ5YZ5.js';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
function Empty(_a) {
|
|
7
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
8
|
+
return /* @__PURE__ */ jsx(
|
|
9
|
+
"div",
|
|
10
|
+
__spreadValues({
|
|
11
|
+
"data-slot": "empty",
|
|
12
|
+
className: cn(
|
|
13
|
+
"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12",
|
|
14
|
+
className
|
|
15
|
+
)
|
|
16
|
+
}, props)
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
function EmptyHeader(_a) {
|
|
20
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
21
|
+
return /* @__PURE__ */ jsx(
|
|
22
|
+
"div",
|
|
23
|
+
__spreadValues({
|
|
24
|
+
"data-slot": "empty-header",
|
|
25
|
+
className: cn(
|
|
26
|
+
"flex max-w-sm flex-col items-center gap-2 text-center",
|
|
27
|
+
className
|
|
28
|
+
)
|
|
29
|
+
}, props)
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
var emptyMediaVariants = cva(
|
|
33
|
+
"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
34
|
+
{
|
|
35
|
+
variants: {
|
|
36
|
+
variant: {
|
|
37
|
+
default: "bg-transparent",
|
|
38
|
+
icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
defaultVariants: {
|
|
42
|
+
variant: "default"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
function EmptyMedia(_a) {
|
|
47
|
+
var _b = _a, {
|
|
48
|
+
className,
|
|
49
|
+
variant = "default"
|
|
50
|
+
} = _b, props = __objRest(_b, [
|
|
51
|
+
"className",
|
|
52
|
+
"variant"
|
|
53
|
+
]);
|
|
54
|
+
return /* @__PURE__ */ jsx(
|
|
55
|
+
"div",
|
|
56
|
+
__spreadValues({
|
|
57
|
+
"data-slot": "empty-icon",
|
|
58
|
+
"data-variant": variant,
|
|
59
|
+
className: cn(emptyMediaVariants({ variant, className }))
|
|
60
|
+
}, props)
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
function EmptyTitle(_a) {
|
|
64
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
65
|
+
return /* @__PURE__ */ jsx(
|
|
66
|
+
"div",
|
|
67
|
+
__spreadValues({
|
|
68
|
+
"data-slot": "empty-title",
|
|
69
|
+
className: cn("text-lg font-medium tracking-tight", className)
|
|
70
|
+
}, props)
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
function EmptyDescription(_a) {
|
|
74
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
75
|
+
return /* @__PURE__ */ jsx(
|
|
76
|
+
"div",
|
|
77
|
+
__spreadValues({
|
|
78
|
+
"data-slot": "empty-description",
|
|
79
|
+
className: cn(
|
|
80
|
+
"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
81
|
+
className
|
|
82
|
+
)
|
|
83
|
+
}, props)
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
function EmptyContent(_a) {
|
|
87
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
88
|
+
return /* @__PURE__ */ jsx(
|
|
89
|
+
"div",
|
|
90
|
+
__spreadValues({
|
|
91
|
+
"data-slot": "empty-content",
|
|
92
|
+
className: cn(
|
|
93
|
+
"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
|
|
94
|
+
className
|
|
95
|
+
)
|
|
96
|
+
}, props)
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
|
|
101
|
+
//# sourceMappingURL=chunk-F2Q3E2ZM.js.map
|
|
102
|
+
//# sourceMappingURL=chunk-F2Q3E2ZM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/empty.tsx"],"names":[],"mappings":"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","file":"chunk-F2Q3E2ZM.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"flex max-w-sm flex-col items-center gap-2 text-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-lg font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n"]}
|