@fluencypassdevs/cycle 0.7.0 → 0.7.2
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 +16 -1
- package/bin/mcp.mjs +25 -8
- package/cli/CLAUDE-section.md +29 -3
- package/dist/styles/tokens.css +101 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,7 +5,22 @@ Design System da [Fluencypass](https://fluencypass.com), construido sobre shadcn
|
|
|
5
5
|
## Instalacao
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install @fluencypassdevs/cycle
|
|
8
|
+
npm install @fluencypassdevs/cycle geist
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
No `src/app/layout.tsx`, configurar a fonte Geist:
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { GeistSans } from "geist/font/sans"
|
|
15
|
+
import { GeistMono } from "geist/font/mono"
|
|
16
|
+
|
|
17
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
18
|
+
return (
|
|
19
|
+
<html lang="pt-BR" className={`${GeistSans.variable} ${GeistMono.variable}`}>
|
|
20
|
+
<body>{children}</body>
|
|
21
|
+
</html>
|
|
22
|
+
)
|
|
23
|
+
}
|
|
9
24
|
```
|
|
10
25
|
|
|
11
26
|
No `globals.css`:
|
package/bin/mcp.mjs
CHANGED
|
@@ -742,10 +742,29 @@ import { Home } from "lucide-react" // PROIBIDO
|
|
|
742
742
|
|
|
743
743
|
## 1. Instalar o pacote:
|
|
744
744
|
\`\`\`bash
|
|
745
|
-
npm install @fluencypassdevs/cycle
|
|
745
|
+
npm install @fluencypassdevs/cycle geist
|
|
746
746
|
\`\`\`
|
|
747
747
|
|
|
748
|
-
## 2. Configurar
|
|
748
|
+
## 2. Configurar a fonte Geist (OBRIGATORIO):
|
|
749
|
+
|
|
750
|
+
No \`src/app/layout.tsx\`:
|
|
751
|
+
|
|
752
|
+
\`\`\`tsx
|
|
753
|
+
import { GeistSans } from "geist/font/sans"
|
|
754
|
+
import { GeistMono } from "geist/font/mono"
|
|
755
|
+
|
|
756
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
757
|
+
return (
|
|
758
|
+
<html lang="pt-BR" className={\`\${GeistSans.variable} \${GeistMono.variable}\`}>
|
|
759
|
+
<body>{children}</body>
|
|
760
|
+
</html>
|
|
761
|
+
)
|
|
762
|
+
}
|
|
763
|
+
\`\`\`
|
|
764
|
+
|
|
765
|
+
> Sem isso, todos os textos usam a fonte do sistema em vez da Geist.
|
|
766
|
+
|
|
767
|
+
## 3. Configurar CSS (globals.css):
|
|
749
768
|
|
|
750
769
|
\`\`\`css
|
|
751
770
|
@import "tailwindcss";
|
|
@@ -754,26 +773,24 @@ npm install @fluencypassdevs/cycle
|
|
|
754
773
|
|
|
755
774
|
So isso! O \`@source\` do Tailwind v4 ja esta embutido dentro do CSS do pacote — nao precisa adicionar manualmente.
|
|
756
775
|
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
## 3. Importar componentes:
|
|
776
|
+
## 4. Importar componentes:
|
|
760
777
|
\`\`\`tsx
|
|
761
778
|
import { Button, Input, Badge } from "@fluencypassdevs/cycle"
|
|
762
779
|
\`\`\`
|
|
763
780
|
|
|
764
|
-
##
|
|
781
|
+
## 5. Importar icones (OBRIGATORIO via Cycle):
|
|
765
782
|
\`\`\`tsx
|
|
766
783
|
import { CycleIcon } from "@fluencypassdevs/cycle"
|
|
767
784
|
import { Home } from "@fluencypassdevs/cycle/icons/lucide"
|
|
768
785
|
// NUNCA: import { Home } from "lucide-react" ❌
|
|
769
786
|
\`\`\`
|
|
770
787
|
|
|
771
|
-
##
|
|
788
|
+
## 6. Utilidades:
|
|
772
789
|
\`\`\`tsx
|
|
773
790
|
import { cn } from "@fluencypassdevs/cycle/lib/utils"
|
|
774
791
|
\`\`\`
|
|
775
792
|
|
|
776
|
-
##
|
|
793
|
+
## 7. Configurar regras para IA (opcional):
|
|
777
794
|
\`\`\`bash
|
|
778
795
|
npx cycle init
|
|
779
796
|
\`\`\`
|
package/cli/CLAUDE-section.md
CHANGED
|
@@ -17,6 +17,31 @@ import { CycleIcon } from "@fluencypassdevs/cycle/icons"
|
|
|
17
17
|
import { cn } from "@fluencypassdevs/cycle/lib/utils"
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
## Fonte Geist (OBRIGATORIO)
|
|
21
|
+
|
|
22
|
+
O Cycle usa a fonte **Geist**. Instalar junto com o pacote:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install @fluencypassdevs/cycle geist
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
No `src/app/layout.tsx`:
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
import { GeistSans } from "geist/font/sans"
|
|
32
|
+
import { GeistMono } from "geist/font/mono"
|
|
33
|
+
|
|
34
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
35
|
+
return (
|
|
36
|
+
<html lang="pt-BR" className={`${GeistSans.variable} ${GeistMono.variable}`}>
|
|
37
|
+
<body>{children}</body>
|
|
38
|
+
</html>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> Sem isso, todos os textos usam a fonte do sistema em vez da Geist.
|
|
44
|
+
|
|
20
45
|
## CSS (globals.css)
|
|
21
46
|
|
|
22
47
|
O `globals.css` DEVE conter:
|
|
@@ -31,9 +56,10 @@ O `globals.css` DEVE conter:
|
|
|
31
56
|
### Troubleshooting: Componentes sem estilo
|
|
32
57
|
|
|
33
58
|
Se componentes Cycle aparecem sem estilo, verifique:
|
|
34
|
-
1.
|
|
35
|
-
2. O
|
|
36
|
-
3.
|
|
59
|
+
1. A fonte Geist esta configurada no layout.tsx?
|
|
60
|
+
2. O `@import "@fluencypassdevs/cycle/styles.css";` esta presente no globals.css?
|
|
61
|
+
3. O pacote esta instalado? `npm list @fluencypassdevs/cycle`
|
|
62
|
+
4. Versao >= 0.7.2? Fixes criticos de CSS nesta versao.
|
|
37
63
|
|
|
38
64
|
## Regras para IA (IMPORTANTE)
|
|
39
65
|
|
package/dist/styles/tokens.css
CHANGED
|
@@ -544,13 +544,15 @@
|
|
|
544
544
|
}
|
|
545
545
|
|
|
546
546
|
/* === Base layer === */
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
547
|
+
@layer base {
|
|
548
|
+
*, *::before, *::after {
|
|
549
|
+
border-color: var(--border);
|
|
550
|
+
}
|
|
550
551
|
|
|
551
|
-
body {
|
|
552
|
-
|
|
553
|
-
|
|
552
|
+
body {
|
|
553
|
+
background-color: var(--background);
|
|
554
|
+
color: var(--foreground);
|
|
555
|
+
}
|
|
554
556
|
}
|
|
555
557
|
|
|
556
558
|
/* === Animations === */
|
|
@@ -683,3 +685,96 @@ body {
|
|
|
683
685
|
line-height: 3.75rem; /* 60px */
|
|
684
686
|
letter-spacing: -0.05em;
|
|
685
687
|
}
|
|
688
|
+
|
|
689
|
+
/* --- Display --- */
|
|
690
|
+
@utility display-md {
|
|
691
|
+
font-family: var(--font-sans);
|
|
692
|
+
font-size: 4rem; /* 64px */
|
|
693
|
+
font-weight: 700;
|
|
694
|
+
line-height: 5.125rem; /* 82px */
|
|
695
|
+
letter-spacing: -0.05em;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
@utility display-md-light {
|
|
699
|
+
font-family: var(--font-sans);
|
|
700
|
+
font-size: 4rem; /* 64px */
|
|
701
|
+
font-weight: 300;
|
|
702
|
+
line-height: 5.125rem; /* 82px */
|
|
703
|
+
letter-spacing: -0.05em;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
@utility display-lg {
|
|
707
|
+
font-family: var(--font-sans);
|
|
708
|
+
font-size: 4.5rem; /* 72px */
|
|
709
|
+
font-weight: 700;
|
|
710
|
+
line-height: 5.625rem; /* 90px */
|
|
711
|
+
letter-spacing: -0.05em;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
@utility display-lg-light {
|
|
715
|
+
font-family: var(--font-sans);
|
|
716
|
+
font-size: 4.5rem; /* 72px */
|
|
717
|
+
font-weight: 300;
|
|
718
|
+
line-height: 5.625rem; /* 90px */
|
|
719
|
+
letter-spacing: -0.05em;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/* --- Button --- */
|
|
723
|
+
@utility button-sm {
|
|
724
|
+
font-family: var(--font-sans);
|
|
725
|
+
font-size: 0.75rem; /* 12px */
|
|
726
|
+
font-weight: 500;
|
|
727
|
+
line-height: 0.75rem; /* 12px — 1:1 ratio */
|
|
728
|
+
letter-spacing: 0em;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
@utility button-md {
|
|
732
|
+
font-family: var(--font-sans);
|
|
733
|
+
font-size: 0.875rem; /* 14px */
|
|
734
|
+
font-weight: 500;
|
|
735
|
+
line-height: 0.875rem; /* 14px — 1:1 ratio */
|
|
736
|
+
letter-spacing: 0em;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
@utility button-lg {
|
|
740
|
+
font-family: var(--font-sans);
|
|
741
|
+
font-size: 1rem; /* 16px */
|
|
742
|
+
font-weight: 500;
|
|
743
|
+
line-height: 1rem; /* 16px — 1:1 ratio */
|
|
744
|
+
letter-spacing: 0em;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/* --- UI --- */
|
|
748
|
+
@utility ui-label {
|
|
749
|
+
font-family: var(--font-sans);
|
|
750
|
+
font-size: 0.875rem; /* 14px */
|
|
751
|
+
font-weight: 500;
|
|
752
|
+
line-height: 0.875rem; /* 14px */
|
|
753
|
+
letter-spacing: 0em;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
@utility ui-caption {
|
|
757
|
+
font-family: var(--font-sans);
|
|
758
|
+
font-size: 0.75rem; /* 12px */
|
|
759
|
+
font-weight: 400;
|
|
760
|
+
line-height: 1rem; /* 16px */
|
|
761
|
+
letter-spacing: 0em;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
@utility ui-overline {
|
|
765
|
+
font-family: var(--font-sans);
|
|
766
|
+
font-size: 0.75rem; /* 12px */
|
|
767
|
+
font-weight: 500;
|
|
768
|
+
line-height: 1rem; /* 16px */
|
|
769
|
+
letter-spacing: 0.025em;
|
|
770
|
+
text-transform: uppercase;
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
/* --- Animations --- */
|
|
774
|
+
@utility animate-like-pop {
|
|
775
|
+
animation: like-pop 350ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
@utility animate-like-burst {
|
|
779
|
+
animation: like-burst 500ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
|
|
780
|
+
}
|