nk_jtb 0.25.0 → 0.25.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.
@@ -4,8 +4,10 @@ Invoke the `jtb-layouts-and-structures` skill before starting.
4
4
 
5
5
  ## Output
6
6
 
7
- Check `index.html` — if it contains no meaningful content, write there. If it
8
- already has content, ask whether to add to it or create a new file.
7
+ Check `index.html`.
8
+
9
+ - If it contains no meaningful content, write there.
10
+ - If it already has content, ask whether to add to it or create a new file.
9
11
 
10
12
  ## Design Reference
11
13
 
@@ -13,7 +15,7 @@ already has content, ask whether to add to it or create a new file.
13
15
 
14
16
  ## Responsive Behaviour
15
17
 
16
- [Describe how this should adapt, or leave blank and Claude will ask.]
18
+ [Describe how this should adapt, or leave blank for ai to ask.]
17
19
 
18
20
  ## Target Markup
19
21
 
@@ -23,9 +25,15 @@ already has content, ask whether to add to it or create a new file.
23
25
 
24
26
  After building, report only actionable items:
25
27
 
26
- - **Issues** — anything that couldn't be expressed cleanly. State the problem
27
- and what workaround was used.
28
- - **Recommendations** — patterns or utilities that would have made the build
29
- cleaner. Flag as candidates worth considering.
30
-
31
- Do not report clean decisions or resolved choices.
28
+ - **Issues** — anything that could not be expressed cleanly in JTB. State the
29
+ problem and what workaround was used.
30
+ - **Framework Gaps** — utilities, tokens, patterns, or primitives that seem
31
+ missing, weak, or awkward.
32
+ - **Guideline Gaps** — places where the component-creation guidance or JTB docs
33
+ were unclear or insufficient.
34
+ - **Skill Gaps** — places where the invoked skill was unclear, insufficient,
35
+ misleading, or failed to help with a relevant decision.
36
+ - **Recommendations** — concrete, minimal changes worth considering.
37
+
38
+ Do not report clean decisions or resolved choices unless they expose a real
39
+ problem.
@@ -1,13 +1,18 @@
1
1
  ---
2
2
  name: jtb-conversion
3
3
  description: >-
4
- Use this skill whenever applying or converting to NK JTB classes and
5
- components, regardless of the source Tailwind, custom CSS, plain HTML,
6
- PHP, JS, or any other context. Do not wait for an explicit request — if JTB
7
- classes or components are being applied or converted, this skill applies.
4
+ Use this skill whenever translating an existing implementation into NK JTB
5
+ classes and components for example from Tailwind, custom CSS, plain HTML,
6
+ PHP, JS, or another framework. Do not wait for an explicit request — if
7
+ there is a source implementation that needs to be converted into JTB, this
8
+ skill applies.
8
9
  ---
9
10
 
10
- For layout decisions during conversion, invoke the `jtb-layout` skill.
11
+ Do not use this skill for greenfield JTB component builds, design-to-code work
12
+ from screenshots/mockups, or general component composition from scratch.
13
+
14
+ For layout decisions during conversion, invoke the
15
+ `jtb-layouts-and-structures` skill.
11
16
 
12
17
  If the output file is not specified, ask before proceeding.
13
18
 
@@ -11,6 +11,7 @@ For layout or responsive work, read:
11
11
 
12
12
  - `docs/responsive-design.md`
13
13
  - `docs/layouts-and-structures.md`
14
+ - `docs/magic-classes.md`
14
15
 
15
16
  ## Scope
16
17
 
@@ -34,8 +35,11 @@ Do not use this skill for general documentation or for framework-internals work.
34
35
  - `grid` with `cols-*` for column-based structures
35
36
  - `flex` for linear, single-axis arrangements
36
37
  - `container-*` for width and placement
37
- 3. Build mobile-first. Add responsive enhancements with `{bp}:` prefixes.
38
- 4. Only escalate to custom solutions when documented primitives cannot express
38
+ 3. Check whether JTB already provides an approved magic or composite class that
39
+ reduces responsive noise for the pattern you need.
40
+ 4. Build mobile-first. Add explicit `{bp}:` responsive utilities only when no
41
+ documented higher-level pattern expresses the layout cleanly.
42
+ 5. Only escalate to custom solutions when documented primitives cannot express
39
43
  the need cleanly.
40
44
 
41
45
  ## Markup
@@ -45,6 +49,13 @@ Do not use this skill for general documentation or for framework-internals work.
45
49
  ## Rules
46
50
 
47
51
  - Prefer mobile-first base layouts with responsive enhancement.
52
+ - Default to the fewest structural elements that cleanly express the layout.
53
+ - Combine width, rhythm, and internal layout on the same element when they do
54
+ not need isolation.
55
+ - Do not split `container`, padding, and grid/flex across extra wrappers unless
56
+ one of those concerns genuinely needs its own box.
57
+ - Put shared layout/presentation utilities on the highest valid parent. Only
58
+ repeat them on children when a child genuinely needs a different value.
48
59
  - Treat `container-*` as a layout primitive with built-in inline gutter. Do not
49
60
  add extra horizontal padding on the same element.
50
61
  - Let the component own its internal padding. Use the container for width and
@@ -52,5 +63,8 @@ Do not use this skill for general documentation or for framework-internals work.
52
63
  - Default section rhythm:
53
64
  - `py-4-3-2` for standard sections
54
65
  - `py-5-3-2` for more prominent sections
66
+ - Prefer approved magic/composite classes when they express an established
67
+ responsive pattern more clearly than explicit breakpoint chains. Common
68
+ examples include `py-*`, `gap-*`, and `cols-*` patterns.
55
69
  - Use `{bp}:` for progressive layout changes.
56
70
  - Use `to-` and `on-` primarily for visibility windows, not layout progression.
package/AGENTS.md CHANGED
@@ -85,7 +85,8 @@ use `gap` instead.
85
85
 
86
86
  **Stop and ask when:**
87
87
 
88
- - Modifying files not mentioned in the request, unless clearly required to complete the task correctly.
88
+ - Modifying files not mentioned in the request, unless clearly required to
89
+ complete the task correctly.
89
90
  - Multiple valid approaches exist and the choice has real consequences.
90
91
  - Something conflicts with existing patterns in a way that needs a decision.
91
92
  - Your interpretation of the request is genuinely ambiguous.
@@ -95,13 +96,15 @@ use `gap` instead.
95
96
  - "I'll also…" — unsolicited additions
96
97
  - "While I'm at it…" — scope expansion
97
98
  - Using flags, options, or commands not present in the existing code or docs
98
- - Expanding scope because something "requires" it — name the prerequisite and
99
- ask first
99
+ - Expanding scope because something "requires" extra work — name the
100
+ prerequisite and ask first
100
101
 
101
102
  ## Assumptions
102
103
 
103
- If proceeding depends on an assumption, state it plainly. If the assumption
104
- has real consequences, stop and ask instead.
104
+ State assumptions plainly. If an assumption has real consequences, do not
105
+ proceed without raising it.
106
+
107
+ If you are not sure, say so directly. Do not present guesses as facts.
105
108
 
106
109
  ## Disagreement and Pushback
107
110
 
@@ -130,13 +133,30 @@ follow the direction.
130
133
  - **Name it before fixing it** — if something needs prerequisite work, say what
131
134
  and why before doing it
132
135
 
133
- ## Behaviour
134
-
135
- - Do not add adjacent improvements, refactors, or cleanup unless explicitly
136
- requested or clearly required to complete the task.
137
- - Do not bundle unrelated cleanup, renaming, formatting changes, or
138
- reorganisation into the requested task unless asked or required.
139
- - If you are not sure, say so directly. Do not present guesses as facts.
136
+ ## Scope Discipline
137
+
138
+ - Do not add adjacent improvements, refactors, cleanup, renaming, formatting,
139
+ reorganisation, or bundled unrelated changes unless explicitly requested or
140
+ clearly required to complete the task correctly.
141
+ - Do not introduce flags, options, or commands that are not already part of the
142
+ existing code, docs, or agreed approach without raising them first.
143
+ - If something "requires" extra work, name the prerequisite and ask before
144
+ expanding scope.
145
+
146
+ ## Execution Style
147
+
148
+ - For small, explicit tasks, do the work directly and report the result.
149
+ - For multi-step, risky, or ambiguous work, use incremental check-ins.
150
+ - Show the approach before executing when scope, risk, or consequences justify
151
+ it.
152
+ - If the work starts taking a different shape than expected, surface that early
153
+ instead of finishing and explaining afterwards.
154
+ - Once a concrete change is agreed, make the update instead of asking for
155
+ another confirmation.
156
+ - Do not repeat agreement back unless there is a new risk, conflict, or
157
+ decision to surface.
158
+ - Keep responses concise. Avoid long explanations when the next action is
159
+ already clear.
140
160
 
141
161
  ## Frustrations to Avoid
142
162
 
@@ -146,39 +166,44 @@ follow the direction.
146
166
  - Burying a concern in the middle of a response instead of leading with it
147
167
  - Being indirect or vague to avoid conflict
148
168
 
149
- ## Iteration Style
169
+ ## Session Management
150
170
 
151
- - For multi-step, risky, or ambiguous work use incremental check-ins.
152
- - For small, explicit tasks — complete the work directly and report the result.
153
- - Show the approach before executing when the scope, risk, or consequences justify it.
154
- - If something is taking a different shape than expected, surface it early
155
- rather than finishing and explaining after.
171
+ - Keep track of the main topic, current focus, queued items, parked tangents,
172
+ and open process steps throughout the session.
173
+ - Work one issue at a time. Do not answer several unresolved points in a single
174
+ response.
175
+ - If a tangent appears, keep the main thread state visible so it is easy to
176
+ return to the original track.
177
+ - If a required review, status, or process step becomes due, keep it visible
178
+ even while discussing a tangent.
156
179
 
157
- ## Skills
180
+ ## Skills and File References
158
181
 
159
- When a skill system is available and a skill's trigger condition matches the
160
- current task, invoke the skill before proceeding unless it conflicts with the
161
- user's explicit request. Do not read SKILL.md files directly as a substitute
162
- for invocation reading is not the same as invoking.
182
+ - When a skill system is available and a skill applies, invoke it before
183
+ proceeding unless it conflicts with the user's explicit request.
184
+ - Do not treat reading a `SKILL.md` file as a substitute for invoking the skill.
185
+ - When a skill or prompt references a file that cannot be read, first try
186
+ resolving it from the repository root.
187
+ - If the file still cannot be found, stop and ask before proceeding.
188
+ - Do not make assumptions in place of missing references.
163
189
 
164
- ## File References
190
+ ## Task Tracking
165
191
 
166
- When a skill or prompt references a file that cannot be read, first try
167
- resolving the path from the repository root. If it
168
- still can't be found, stop and ask before proceeding. Do not make assumptions
169
- in place of missing information.
192
+ `tasks.md` in the project root is a memory aid. It preserves useful context
193
+ across sessions, especially when conversations branch or go off on tangents.
170
194
 
171
- ## Task Tracking
195
+ **What belongs:**
172
196
 
173
- `tasks.md` in the project root is a memory aid — it keeps work on track and
174
- preserves important context across sessions.
197
+ - Specific findings or decisions that would otherwise be lost
198
+ - Items discussed but not being worked on right now
199
+ - Durable context worth remembering later
175
200
 
176
- **What belongs:** specific findings or decisions from a conversation that would
177
- otherwise be lost. These are things often identified when going off on tangents
178
- or having multiple topics on the go at once.
201
+ **What does not belong:**
179
202
 
180
- **What does not belong:** status of active work, things Nathan obviously knows,
181
- vague reminders, obvious next steps.
203
+ - Status of active work
204
+ - Things Nathan obviously knows
205
+ - Vague reminders
206
+ - Obvious next steps
182
207
 
183
208
  Three buckets:
184
209
 
@@ -188,5 +213,5 @@ Three buckets:
188
213
 
189
214
  ## Off-Limits Directories
190
215
 
191
- - **`/tmp`** Nathan's personal scratch space. Never read, modify, delete, or
192
- reference files here unless explicitly asked.
216
+ - `/tmp` is Nathan's personal scratch space. Never read, modify, delete, or
217
+ reference files there unless explicitly asked.
package/CLAUDE.md CHANGED
@@ -85,7 +85,8 @@ use `gap` instead.
85
85
 
86
86
  **Stop and ask when:**
87
87
 
88
- - Modifying files not mentioned in the request, unless clearly required to complete the task correctly.
88
+ - Modifying files not mentioned in the request, unless clearly required to
89
+ complete the task correctly.
89
90
  - Multiple valid approaches exist and the choice has real consequences.
90
91
  - Something conflicts with existing patterns in a way that needs a decision.
91
92
  - Your interpretation of the request is genuinely ambiguous.
@@ -95,13 +96,15 @@ use `gap` instead.
95
96
  - "I'll also…" — unsolicited additions
96
97
  - "While I'm at it…" — scope expansion
97
98
  - Using flags, options, or commands not present in the existing code or docs
98
- - Expanding scope because something "requires" it — name the prerequisite and
99
- ask first
99
+ - Expanding scope because something "requires" extra work — name the
100
+ prerequisite and ask first
100
101
 
101
102
  ## Assumptions
102
103
 
103
- If proceeding depends on an assumption, state it plainly. If the assumption
104
- has real consequences, stop and ask instead.
104
+ State assumptions plainly. If an assumption has real consequences, do not
105
+ proceed without raising it.
106
+
107
+ If you are not sure, say so directly. Do not present guesses as facts.
105
108
 
106
109
  ## Disagreement and Pushback
107
110
 
@@ -130,13 +133,30 @@ follow the direction.
130
133
  - **Name it before fixing it** — if something needs prerequisite work, say what
131
134
  and why before doing it
132
135
 
133
- ## Behaviour
134
-
135
- - Do not add adjacent improvements, refactors, or cleanup unless explicitly
136
- requested or clearly required to complete the task.
137
- - Do not bundle unrelated cleanup, renaming, formatting changes, or
138
- reorganisation into the requested task unless asked or required.
139
- - If you are not sure, say so directly. Do not present guesses as facts.
136
+ ## Scope Discipline
137
+
138
+ - Do not add adjacent improvements, refactors, cleanup, renaming, formatting,
139
+ reorganisation, or bundled unrelated changes unless explicitly requested or
140
+ clearly required to complete the task correctly.
141
+ - Do not introduce flags, options, or commands that are not already part of the
142
+ existing code, docs, or agreed approach without raising them first.
143
+ - If something "requires" extra work, name the prerequisite and ask before
144
+ expanding scope.
145
+
146
+ ## Execution Style
147
+
148
+ - For small, explicit tasks, do the work directly and report the result.
149
+ - For multi-step, risky, or ambiguous work, use incremental check-ins.
150
+ - Show the approach before executing when scope, risk, or consequences justify
151
+ it.
152
+ - If the work starts taking a different shape than expected, surface that early
153
+ instead of finishing and explaining afterwards.
154
+ - Once a concrete change is agreed, make the update instead of asking for
155
+ another confirmation.
156
+ - Do not repeat agreement back unless there is a new risk, conflict, or
157
+ decision to surface.
158
+ - Keep responses concise. Avoid long explanations when the next action is
159
+ already clear.
140
160
 
141
161
  ## Frustrations to Avoid
142
162
 
@@ -146,39 +166,44 @@ follow the direction.
146
166
  - Burying a concern in the middle of a response instead of leading with it
147
167
  - Being indirect or vague to avoid conflict
148
168
 
149
- ## Iteration Style
169
+ ## Session Management
150
170
 
151
- - For multi-step, risky, or ambiguous work use incremental check-ins.
152
- - For small, explicit tasks — complete the work directly and report the result.
153
- - Show the approach before executing when the scope, risk, or consequences justify it.
154
- - If something is taking a different shape than expected, surface it early
155
- rather than finishing and explaining after.
171
+ - Keep track of the main topic, current focus, queued items, parked tangents,
172
+ and open process steps throughout the session.
173
+ - Work one issue at a time. Do not answer several unresolved points in a single
174
+ response.
175
+ - If a tangent appears, keep the main thread state visible so it is easy to
176
+ return to the original track.
177
+ - If a required review, status, or process step becomes due, keep it visible
178
+ even while discussing a tangent.
156
179
 
157
- ## Skills
180
+ ## Skills and File References
158
181
 
159
- When a skill system is available and a skill's trigger condition matches the
160
- current task, invoke the skill before proceeding unless it conflicts with the
161
- user's explicit request. Do not read SKILL.md files directly as a substitute
162
- for invocation reading is not the same as invoking.
182
+ - When a skill system is available and a skill applies, invoke it before
183
+ proceeding unless it conflicts with the user's explicit request.
184
+ - Do not treat reading a `SKILL.md` file as a substitute for invoking the skill.
185
+ - When a skill or prompt references a file that cannot be read, first try
186
+ resolving it from the repository root.
187
+ - If the file still cannot be found, stop and ask before proceeding.
188
+ - Do not make assumptions in place of missing references.
163
189
 
164
- ## File References
190
+ ## Task Tracking
165
191
 
166
- When a skill or prompt references a file that cannot be read, first try
167
- resolving the path from the repository root. If it
168
- still can't be found, stop and ask before proceeding. Do not make assumptions
169
- in place of missing information.
192
+ `tasks.md` in the project root is a memory aid. It preserves useful context
193
+ across sessions, especially when conversations branch or go off on tangents.
170
194
 
171
- ## Task Tracking
195
+ **What belongs:**
172
196
 
173
- `tasks.md` in the project root is a memory aid — it keeps work on track and
174
- preserves important context across sessions.
197
+ - Specific findings or decisions that would otherwise be lost
198
+ - Items discussed but not being worked on right now
199
+ - Durable context worth remembering later
175
200
 
176
- **What belongs:** specific findings or decisions from a conversation that would
177
- otherwise be lost. These are things often identified when going off on tangents
178
- or having multiple topics on the go at once.
201
+ **What does not belong:**
179
202
 
180
- **What does not belong:** status of active work, things Nathan obviously knows,
181
- vague reminders, obvious next steps.
203
+ - Status of active work
204
+ - Things Nathan obviously knows
205
+ - Vague reminders
206
+ - Obvious next steps
182
207
 
183
208
  Three buckets:
184
209
 
@@ -188,5 +213,5 @@ Three buckets:
188
213
 
189
214
  ## Off-Limits Directories
190
215
 
191
- - **`/tmp`** Nathan's personal scratch space. Never read, modify, delete, or
192
- reference files here unless explicitly asked.
216
+ - `/tmp` is Nathan's personal scratch space. Never read, modify, delete, or
217
+ reference files there unless explicitly asked.
@@ -1,87 +1,87 @@
1
- # Button (review)
2
-
3
- Buttons work with all themes just like other components. Apply `.primary`,
4
- `.secondary`, or any other theme class to get consistent branding throughout
5
- your interface.
6
-
7
- <div class="flex flex-wrap gap-025">
8
- <button class="btn w-6 red">red</button>
9
- <button class="btn w-6 orange">orange</button>
10
- <button class="btn w-6 amber">amber</button>
11
- <button class="btn w-6 yellow">yellow</button>
12
- <button class="btn w-6 lime">lime</button>
13
- <button class="btn w-6 green">green</button>
14
- <button class="btn w-6 emerald">emerald</button>
15
- <button class="btn w-6 teal">teal</button>
16
- <button class="btn w-6 cyan">cyan</button>
17
- <button class="btn w-6 sky">sky</button>
18
- <button class="btn w-6 blue">blue</button>
19
- <button class="btn w-6 indigo">indigo</button>
20
- <button class="btn w-6 violet">violet</button>
21
- <button class="btn w-6 purple">purple</button>
22
- <button class="btn w-6 fuchsia">fuchsia</button>
23
- <button class="btn w-6 pink">pink</button>
24
- <button class="btn w-6 rose">rose</button>
25
- <button class="btn w-6 slate">slate</button>
26
- <button class="btn w-6 gray">gray</button>
27
- <button class="btn w-6 zinc">zinc</button>
28
- <button class="btn w-6 stone">stone</button>
29
- <button class="btn w-6 neutral">neutral</button>
30
- </div>
31
-
32
- <div class="flex flex-wrap gap-025 my">
33
- <button class="btn w-6 red-outline">red</button>
34
- <button class="btn w-6 orange-outline">orange</button>
35
- <button class="btn w-6 amber-outline">amber</button>
36
- <button class="btn w-6 yellow-outline">yellow</button>
37
- <button class="btn w-6 lime-outline">lime</button>
38
- <button class="btn w-6 green-outline">green</button>
39
- <button class="btn w-6 emerald-outline">emerald</button>
40
- <button class="btn w-6 teal-outline">teal</button>
41
- <button class="btn w-6 cyan-outline">cyan</button>
42
- <button class="btn w-6 sky-outline">sky</button>
43
- <button class="btn w-6 blue-outline">blue</button>
44
- <button class="btn w-6 indigo-outline">indigo</button>
45
- <button class="btn w-6 violet-outline">violet</button>
46
- <button class="btn w-6 purple-outline">purple</button>
47
- <button class="btn w-6 fuchsia-outline">fuchsia</button>
48
- <button class="btn w-6 pink-outline">pink</button>
49
- <button class="btn w-6 rose-outline">rose</button>
50
- <button class="btn w-6 slate-outline">slate</button>
51
- <button class="btn w-6 gray-outline">gray</button>
52
- <button class="btn w-6 zinc-outline">zinc</button>
53
- <button class="btn w-6 stone-outline">stone</button>
54
- <button class="btn w-6 neutral-outline">neutral</button>
55
- </div>
56
-
57
- ## Basic Button (review)
58
-
59
- ```html +demo-folded class="bx"
60
- <button class="btn">Default Button</button>
61
- ```
62
-
63
- ## Button Themes (review)
64
-
65
- Apply theme modifiers for different colors:
66
-
67
- ```html +demo-folded class="bx"
68
- <div class="flex flex-wrap gap-1">
69
- <button class="btn primary">Primary</button>
70
- <button class="btn secondary">Secondary</button>
71
- <button class="btn red">Red</button>
72
- <button class="btn green">Green</button>
73
- <button class="btn blue">Blue</button>
74
- </div>
75
- ```
76
-
77
- ## Button Sizes (review)
78
-
79
- ```html +demo-folded class="bx"
80
- <div class="flex flex-wrap gap-1 items-center">
81
- <button class="btn xs">Extra Small</button>
82
- <button class="btn sm">Small</button>
83
- <button class="btn">Default</button>
84
- <button class="btn lg">Large</button>
85
- </div>
86
- ```
1
+ # Button (review)
2
+
3
+ Buttons work with all themes just like other components. Apply `.primary`,
4
+ `.secondary`, or any other theme class to get consistent branding throughout
5
+ your interface.
6
+
7
+ <div class="flex flex-wrap gap-025">
8
+ <button class="btn w-6 red">red</button>
9
+ <button class="btn w-6 orange">orange</button>
10
+ <button class="btn w-6 amber">amber</button>
11
+ <button class="btn w-6 yellow">yellow</button>
12
+ <button class="btn w-6 lime">lime</button>
13
+ <button class="btn w-6 green">green</button>
14
+ <button class="btn w-6 emerald">emerald</button>
15
+ <button class="btn w-6 teal">teal</button>
16
+ <button class="btn w-6 cyan">cyan</button>
17
+ <button class="btn w-6 sky">sky</button>
18
+ <button class="btn w-6 blue">blue</button>
19
+ <button class="btn w-6 indigo">indigo</button>
20
+ <button class="btn w-6 violet">violet</button>
21
+ <button class="btn w-6 purple">purple</button>
22
+ <button class="btn w-6 fuchsia">fuchsia</button>
23
+ <button class="btn w-6 pink">pink</button>
24
+ <button class="btn w-6 rose">rose</button>
25
+ <button class="btn w-6 slate">slate</button>
26
+ <button class="btn w-6 gray">gray</button>
27
+ <button class="btn w-6 zinc">zinc</button>
28
+ <button class="btn w-6 stone">stone</button>
29
+ <button class="btn w-6 neutral">neutral</button>
30
+ </div>
31
+
32
+ <div class="flex flex-wrap gap-025 my">
33
+ <button class="btn w-6 red-outline">red</button>
34
+ <button class="btn w-6 orange-outline">orange</button>
35
+ <button class="btn w-6 amber-outline">amber</button>
36
+ <button class="btn w-6 yellow-outline">yellow</button>
37
+ <button class="btn w-6 lime-outline">lime</button>
38
+ <button class="btn w-6 green-outline">green</button>
39
+ <button class="btn w-6 emerald-outline">emerald</button>
40
+ <button class="btn w-6 teal-outline">teal</button>
41
+ <button class="btn w-6 cyan-outline">cyan</button>
42
+ <button class="btn w-6 sky-outline">sky</button>
43
+ <button class="btn w-6 blue-outline">blue</button>
44
+ <button class="btn w-6 indigo-outline">indigo</button>
45
+ <button class="btn w-6 violet-outline">violet</button>
46
+ <button class="btn w-6 purple-outline">purple</button>
47
+ <button class="btn w-6 fuchsia-outline">fuchsia</button>
48
+ <button class="btn w-6 pink-outline">pink</button>
49
+ <button class="btn w-6 rose-outline">rose</button>
50
+ <button class="btn w-6 slate-outline">slate</button>
51
+ <button class="btn w-6 gray-outline">gray</button>
52
+ <button class="btn w-6 zinc-outline">zinc</button>
53
+ <button class="btn w-6 stone-outline">stone</button>
54
+ <button class="btn w-6 neutral-outline">neutral</button>
55
+ </div>
56
+
57
+ ## Basic Button (review)
58
+
59
+ ```html +demo-folded class="bx"
60
+ <button class="btn">Default Button</button>
61
+ ```
62
+
63
+ ## Button Themes (review)
64
+
65
+ Apply theme modifiers for different colors:
66
+
67
+ ```html +demo-folded class="bx"
68
+ <div class="flex flex-wrap gap-1">
69
+ <button class="btn primary">Primary</button>
70
+ <button class="btn secondary">Secondary</button>
71
+ <button class="btn red">Red</button>
72
+ <button class="btn green">Green</button>
73
+ <button class="btn blue">Blue</button>
74
+ </div>
75
+ ```
76
+
77
+ ## Button Sizes (review)
78
+
79
+ ```html +demo-folded class="bx"
80
+ <div class="flex flex-wrap gap-1 items-center">
81
+ <button class="btn xs">Extra Small</button>
82
+ <button class="btn sm">Small</button>
83
+ <button class="btn">Default</button>
84
+ <button class="btn lg">Large</button>
85
+ </div>
86
+ ```
87
87