@su-record/vibe 2.8.39 → 2.8.41

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.
@@ -1,100 +0,0 @@
1
- # Figma Style → CSS/Tailwind Mapping Rules
2
-
3
- > This skill is merged into vibe.figma.convert. This rubric is the definitive reference for converting Figma design values to output CSS.
4
-
5
- ## Scale Factor Application
6
-
7
- ```
8
- scaledValue = Math.round(figmaValue × scaleFactor)
9
- ```
10
-
11
- Apply to: `px` units only (font-size, padding, margin, gap, width, height, top, left, inset, border-radius, box-shadow offsets, letter-spacing, blur radius).
12
-
13
- Never apply to: colors, opacity, unitless line-height, `%` values, z-index, degrees.
14
-
15
- ## Color Mapping
16
-
17
- | Figma Token / Tailwind | CSS Output | Token Name |
18
- |-----------------------|-----------|-----------|
19
- | `text-[#1B3A1D]` | `color: #1B3A1D` | `$color-heading` |
20
- | `text-white` | `color: #FFFFFF` | `$color-white` |
21
- | `bg-[#0A1628]` | `background-color: #0A1628` | `$color-bg-dark` |
22
- | `bg-[rgba(13,40,61,0.5)]` | `background: rgba(13,40,61,0.5)` | *(inline, no token)* |
23
- | `var(--color/grayscale/950,#171716)` | `color: #171716` | Use fallback value |
24
- | `border-[#E5E7EB]` | `border-color: #E5E7EB` | `$color-border` |
25
-
26
- Create a `$color-*` token for any hex value that appears in 2+ selectors.
27
-
28
- ## Typography Mapping
29
-
30
- | Figma / Tailwind | CSS Property | Scale? |
31
- |-----------------|-------------|--------|
32
- | `text-[48px]` | `font-size: 48px × SF` | Yes |
33
- | `font-black` | `font-weight: 900` | No |
34
- | `font-bold` | `font-weight: 700` | No |
35
- | `font-semibold` | `font-weight: 600` | No |
36
- | `font-medium` | `font-weight: 500` | No |
37
- | `font-normal` | `font-weight: 400` | No |
38
- | `leading-[1.4]` | `line-height: 1.4` | No (unitless) |
39
- | `leading-[48px]` | `line-height: 48px × SF` | Yes (has unit) |
40
- | `tracking-[-0.36px]` | `letter-spacing: -0.36px × SF` | Yes |
41
- | `text-center` | `text-align: center` | No |
42
- | `whitespace-nowrap` | `white-space: nowrap` | No |
43
- | `font-[family-name:var(--font/family/pretendard,...)]` | `font-family: 'Pretendard', sans-serif` | No |
44
-
45
- ## Spacing Mapping
46
-
47
- | Tailwind | CSS | Scale? |
48
- |---------|-----|--------|
49
- | `pt-[120px]` | `padding-top: 120px × SF` | Yes |
50
- | `px-[24px]` | `padding-left: 24px × SF; padding-right: 24px × SF` | Yes |
51
- | `gap-[24px]` | `gap: 24px × SF` | Yes |
52
- | `mt-[16px]` | `margin-top: 16px × SF` | Yes |
53
- | `rounded-[12px]` | `border-radius: 12px × SF` | Yes |
54
- | `inset-0` | `inset: 0` | No |
55
- | `inset-[-18.13%]` | `inset: -18.13%` | No (%) |
56
-
57
- ## Layout Mapping
58
-
59
- | Tailwind | CSS |
60
- |---------|-----|
61
- | `flex` | `display: flex` |
62
- | `flex-col` | `flex-direction: column` |
63
- | `items-center` | `align-items: center` |
64
- | `justify-center` | `justify-content: center` |
65
- | `justify-between` | `justify-content: space-between` |
66
- | `grid` | `display: grid` |
67
- | `absolute` | `position: absolute` |
68
- | `relative` | `position: relative` |
69
- | `overflow-clip` | `overflow: clip` ← not `overflow: hidden` |
70
- | `overflow-hidden` | `overflow: hidden` |
71
- | `size-full` | `width: 100%; height: 100%` |
72
- | `w-full` | `width: 100%` |
73
- | `max-w-none` | `max-width: none` |
74
- | `z-[10]` | `z-index: 10` |
75
- | `pointer-events-none` | `pointer-events: none` |
76
-
77
- ## Visual Effects Mapping
78
-
79
- | Tailwind | CSS | Scale? |
80
- |---------|-----|--------|
81
- | `opacity-40` | `opacity: 0.4` | No |
82
- | `blur-[3.5px]` | `filter: blur(3.5px)` | Yes |
83
- | `mix-blend-lighten` | `mix-blend-mode: lighten` | No |
84
- | `mix-blend-multiply` | `mix-blend-mode: multiply` | No |
85
- | `mix-blend-hue` | `mix-blend-mode: hue` | No |
86
- | `rotate-[149.7deg]` | `transform: rotate(149.7deg)` | No |
87
- | `-scale-y-100` | `transform: scaleY(-1)` | No |
88
- | `shadow-[0_4px_24px_rgba(0,0,0,0.4)]` | `box-shadow: 0 4px × SF 24px × SF rgba(0,0,0,0.4)` | Partial (px only) |
89
- | `object-cover` | `object-fit: cover` | No |
90
- | `object-contain` | `object-fit: contain` | No |
91
-
92
- ## Token Promotion Rules
93
-
94
- Promote a value to `_tokens.scss` when:
95
- - A color appears in 2+ different selectors
96
- - A font-size serves a named role (heading, body, caption)
97
- - A spacing value appears in 3+ places
98
- - A breakpoint threshold is used
99
-
100
- Do not promote one-off values used in a single selector — write them inline.