@shortwind/catalog 0.1.0-beta.12 → 0.1.0-beta.14

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.
Files changed (46) hide show
  1. package/dist/registry/badge/CHANGELOG.md +1 -1
  2. package/dist/registry/badge.css +17 -7
  3. package/dist/registry/{badge@0.0.1.css → badge@0.0.2.css} +17 -7
  4. package/dist/registry/button/CHANGELOG.md +1 -1
  5. package/dist/registry/button.css +49 -6
  6. package/dist/registry/button@0.0.2.css +117 -0
  7. package/dist/registry/index.json +5 -0
  8. package/dist/registry/layout/CHANGELOG.md +1 -1
  9. package/dist/registry/layout.css +9 -5
  10. package/dist/registry/{layout@0.0.1.css → layout@0.0.2.css} +9 -5
  11. package/dist/registry/list/CHANGELOG.md +1 -1
  12. package/dist/registry/list.css +16 -3
  13. package/dist/registry/{list@0.0.1.css → list@0.0.2.css} +16 -3
  14. package/dist/registry/manifest.json +858 -153
  15. package/dist/registry/menu/CHANGELOG.md +5 -0
  16. package/dist/registry/menu.css +30 -0
  17. package/dist/registry/menu@0.0.1.css +30 -0
  18. package/dist/registry/navigation/CHANGELOG.md +1 -1
  19. package/dist/registry/navigation.css +18 -5
  20. package/dist/registry/{navigation@0.0.1.css → navigation@0.0.2.css} +18 -5
  21. package/dist/registry/presets.json +1 -1
  22. package/dist/registry/recipes/badge.css +17 -7
  23. package/dist/registry/recipes/button.css +49 -6
  24. package/dist/registry/recipes/layout.css +9 -5
  25. package/dist/registry/recipes/list.css +16 -3
  26. package/dist/registry/recipes/menu.css +30 -0
  27. package/dist/registry/recipes/navigation.css +18 -5
  28. package/dist/registry/recipes/segmented.css +19 -0
  29. package/dist/registry/recipes/sheet.css +38 -0
  30. package/dist/registry/recipes/stat.css +30 -0
  31. package/dist/registry/recipes/switch.css +19 -0
  32. package/dist/registry/segmented/CHANGELOG.md +5 -0
  33. package/dist/registry/segmented.css +19 -0
  34. package/dist/registry/segmented@0.0.1.css +19 -0
  35. package/dist/registry/sheet/CHANGELOG.md +5 -0
  36. package/dist/registry/sheet.css +38 -0
  37. package/dist/registry/sheet@0.0.1.css +38 -0
  38. package/dist/registry/stat/CHANGELOG.md +5 -0
  39. package/dist/registry/stat.css +30 -0
  40. package/dist/registry/stat@0.0.1.css +30 -0
  41. package/dist/registry/switch/CHANGELOG.md +5 -0
  42. package/dist/registry/switch.css +19 -0
  43. package/dist/registry/switch@0.0.1.css +19 -0
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +2 -2
  46. package/dist/registry/button@0.0.1.css +0 -74
@@ -1,5 +1,5 @@
1
1
  # badge
2
2
 
3
- ## 0.0.1
3
+ ## 0.0.2
4
4
 
5
5
  Initial release.
@@ -1,10 +1,18 @@
1
- /* shortwind: badge@0.0.1 sha:8548b9a7305a0a59 */
1
+ /* shortwind: badge@0.0.2 sha:07c6ab5a8deb77e3 */
2
2
 
3
3
  /* @guide
4
- @badge is the neutral default; tone variants @badge-success/warning/danger/
5
- info carry their own color; @badge-outline is unfilled. One tone per badge.
6
- @badge-base is a color-less shell for building custom tones not for direct
7
- use.
4
+ @badge is the default. Its color is DATA-DRIVEN: it reads the --tone-bg /
5
+ --tone-fg CSS variables, so set the tone from your data with a data-tone
6
+ attribute instead of picking a different recipe name
7
+ `<span className="@badge" data-tone={severity}>`. Define your tones once in
8
+ CSS (init scaffolds neutral/success/warning/danger/info; add your own
9
+ `[data-tone="sev1"] { --tone-bg: …; --tone-fg: … }`). With no data-tone it
10
+ falls back to the neutral muted look, identical to before.
11
+
12
+ The static @badge-success/warning/danger/info variants still exist for when
13
+ the tone is known at author time; reach for data-tone when it's chosen from
14
+ data. @badge-outline is unfilled. @badge-base is a color-less shell for
15
+ building custom tones — not for direct use.
8
16
  */
9
17
 
10
18
  /* Badge shell — shape, sizing, focus ring. No bg/text/border color so
@@ -13,9 +21,11 @@
13
21
  inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2
14
22
  }
15
23
 
16
- /* Default neutral badge. */
24
+ /* Default badge — tone-aware. Reads --tone-bg/--tone-fg (set via data-tone),
25
+ falling back to the neutral muted tokens so it renders unchanged when no
26
+ tone is set. */
17
27
  @recipe badge {
18
- inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs font-medium text-muted-foreground
28
+ inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium bg-[var(--tone-bg,var(--muted))] text-[var(--tone-fg,var(--muted-foreground))]
19
29
  }
20
30
 
21
31
  /* Success tone badge. */
@@ -1,10 +1,18 @@
1
- /* shortwind: badge@0.0.1 sha:8548b9a7305a0a59 */
1
+ /* shortwind: badge@0.0.2 sha:07c6ab5a8deb77e3 */
2
2
 
3
3
  /* @guide
4
- @badge is the neutral default; tone variants @badge-success/warning/danger/
5
- info carry their own color; @badge-outline is unfilled. One tone per badge.
6
- @badge-base is a color-less shell for building custom tones not for direct
7
- use.
4
+ @badge is the default. Its color is DATA-DRIVEN: it reads the --tone-bg /
5
+ --tone-fg CSS variables, so set the tone from your data with a data-tone
6
+ attribute instead of picking a different recipe name
7
+ `<span className="@badge" data-tone={severity}>`. Define your tones once in
8
+ CSS (init scaffolds neutral/success/warning/danger/info; add your own
9
+ `[data-tone="sev1"] { --tone-bg: …; --tone-fg: … }`). With no data-tone it
10
+ falls back to the neutral muted look, identical to before.
11
+
12
+ The static @badge-success/warning/danger/info variants still exist for when
13
+ the tone is known at author time; reach for data-tone when it's chosen from
14
+ data. @badge-outline is unfilled. @badge-base is a color-less shell for
15
+ building custom tones — not for direct use.
8
16
  */
9
17
 
10
18
  /* Badge shell — shape, sizing, focus ring. No bg/text/border color so
@@ -13,9 +21,11 @@
13
21
  inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2
14
22
  }
15
23
 
16
- /* Default neutral badge. */
24
+ /* Default badge — tone-aware. Reads --tone-bg/--tone-fg (set via data-tone),
25
+ falling back to the neutral muted tokens so it renders unchanged when no
26
+ tone is set. */
17
27
  @recipe badge {
18
- inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs font-medium text-muted-foreground
28
+ inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium bg-[var(--tone-bg,var(--muted))] text-[var(--tone-fg,var(--muted-foreground))]
19
29
  }
20
30
 
21
31
  /* Success tone badge. */
@@ -1,5 +1,5 @@
1
1
  # button
2
2
 
3
- ## 0.0.1
3
+ ## 0.0.2
4
4
 
5
5
  Initial release.
@@ -1,11 +1,13 @@
1
- /* shortwind: button@0.0.1 sha:777fa510c4ab4aeb */
1
+ /* shortwind: button@0.0.2 sha:b0b08652cd757b90 */
2
2
 
3
3
  /* @guide
4
- Name order is @btn-<intent>[-<size>]: intent first (primary/secondary/ghost/
5
- danger/outline), size second (sm/lg; omit for default). One intent per
6
- button — never combine @btn-primary with @btn-danger. @btn-ghost is text-only,
7
- @btn-outline is bordered with no fill, @btn-icon is a square icon button.
8
- @btn-base is the shared shell; don't use it on its own.
4
+ Name order is @button-<intent>[-<size>]: intent first (primary/secondary/
5
+ ghost/danger/outline), size second (sm/lg; omit for default). One intent per
6
+ button — never combine @button-primary with @button-danger. @button-ghost is
7
+ text-only, @button-outline is bordered with no fill, @button-icon is a square
8
+ icon button. @button-base is the shared shell; don't use it on its own.
9
+ The short @btn-<intent> forms are aliases that expand identically; the
10
+ full-word @button-* names are canonical — prefer them.
9
11
  */
10
12
 
11
13
  /* Shared button base — sizing, focus ring, disabled state. */
@@ -72,3 +74,44 @@
72
74
  @recipe btn-icon {
73
75
  inline-flex h-9 w-9 items-center justify-center rounded-md text-foreground transition-colors hover:bg-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring disabled:cursor-not-allowed disabled:opacity-50
74
76
  }
77
+
78
+ /* Full-word canonical aliases — expand identically to the @btn-* short forms. */
79
+
80
+ /* Shared button shell (alias of @btn-base). */
81
+ @recipe button-base { @btn-base }
82
+
83
+ /* Primary call-to-action button (alias of @btn-primary). */
84
+ @recipe button-primary { @btn-primary }
85
+
86
+ /* Small primary button (alias of @btn-primary-sm). */
87
+ @recipe button-primary-sm { @btn-primary-sm }
88
+
89
+ /* Large primary button (alias of @btn-primary-lg). */
90
+ @recipe button-primary-lg { @btn-primary-lg }
91
+
92
+ /* Secondary button (alias of @btn-secondary). */
93
+ @recipe button-secondary { @btn-secondary }
94
+
95
+ /* Small secondary button (alias of @btn-secondary-sm). */
96
+ @recipe button-secondary-sm { @btn-secondary-sm }
97
+
98
+ /* Large secondary button (alias of @btn-secondary-lg). */
99
+ @recipe button-secondary-lg { @btn-secondary-lg }
100
+
101
+ /* Ghost button (alias of @btn-ghost). */
102
+ @recipe button-ghost { @btn-ghost }
103
+
104
+ /* Small ghost button (alias of @btn-ghost-sm). */
105
+ @recipe button-ghost-sm { @btn-ghost-sm }
106
+
107
+ /* Large ghost button (alias of @btn-ghost-lg). */
108
+ @recipe button-ghost-lg { @btn-ghost-lg }
109
+
110
+ /* Destructive button (alias of @btn-danger). */
111
+ @recipe button-danger { @btn-danger }
112
+
113
+ /* Outline button (alias of @btn-outline). */
114
+ @recipe button-outline { @btn-outline }
115
+
116
+ /* Square icon-only button (alias of @btn-icon). */
117
+ @recipe button-icon { @btn-icon }
@@ -0,0 +1,117 @@
1
+ /* shortwind: button@0.0.2 sha:b0b08652cd757b90 */
2
+
3
+ /* @guide
4
+ Name order is @button-<intent>[-<size>]: intent first (primary/secondary/
5
+ ghost/danger/outline), size second (sm/lg; omit for default). One intent per
6
+ button — never combine @button-primary with @button-danger. @button-ghost is
7
+ text-only, @button-outline is bordered with no fill, @button-icon is a square
8
+ icon button. @button-base is the shared shell; don't use it on its own.
9
+ The short @btn-<intent> forms are aliases that expand identically; the
10
+ full-word @button-* names are canonical — prefer them.
11
+ */
12
+
13
+ /* Shared button base — sizing, focus ring, disabled state. */
14
+ @recipe btn-base {
15
+ inline-flex items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring disabled:cursor-not-allowed disabled:opacity-50
16
+ }
17
+
18
+ /* Primary call-to-action button. */
19
+ @recipe btn-primary {
20
+ @btn-base bg-primary text-primary-foreground hover:bg-primary/90
21
+ }
22
+
23
+ /* Small primary button. */
24
+ @recipe btn-primary-sm {
25
+ @btn-primary px-3 py-1.5 text-xs
26
+ }
27
+
28
+ /* Large primary button. */
29
+ @recipe btn-primary-lg {
30
+ @btn-primary px-6 py-3 text-base
31
+ }
32
+
33
+ /* Secondary button — bordered surface tone. */
34
+ @recipe btn-secondary {
35
+ @btn-base border border-border bg-secondary text-secondary-foreground hover:bg-secondary/80
36
+ }
37
+
38
+ /* Small secondary button. */
39
+ @recipe btn-secondary-sm {
40
+ @btn-secondary px-3 py-1.5 text-xs
41
+ }
42
+
43
+ /* Large secondary button. */
44
+ @recipe btn-secondary-lg {
45
+ @btn-secondary px-6 py-3 text-base
46
+ }
47
+
48
+ /* Ghost button — text only, no background. */
49
+ @recipe btn-ghost {
50
+ @btn-base text-foreground hover:bg-muted
51
+ }
52
+
53
+ /* Small ghost button. */
54
+ @recipe btn-ghost-sm {
55
+ @btn-ghost px-3 py-1.5 text-xs
56
+ }
57
+
58
+ /* Large ghost button. */
59
+ @recipe btn-ghost-lg {
60
+ @btn-ghost px-6 py-3 text-base
61
+ }
62
+
63
+ /* Destructive button. */
64
+ @recipe btn-danger {
65
+ @btn-base bg-destructive text-destructive-foreground hover:bg-destructive/90
66
+ }
67
+
68
+ /* Outline button — bordered without fill. */
69
+ @recipe btn-outline {
70
+ @btn-base border border-primary text-primary hover:bg-primary/10
71
+ }
72
+
73
+ /* Square icon-only button. */
74
+ @recipe btn-icon {
75
+ inline-flex h-9 w-9 items-center justify-center rounded-md text-foreground transition-colors hover:bg-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring disabled:cursor-not-allowed disabled:opacity-50
76
+ }
77
+
78
+ /* Full-word canonical aliases — expand identically to the @btn-* short forms. */
79
+
80
+ /* Shared button shell (alias of @btn-base). */
81
+ @recipe button-base { @btn-base }
82
+
83
+ /* Primary call-to-action button (alias of @btn-primary). */
84
+ @recipe button-primary { @btn-primary }
85
+
86
+ /* Small primary button (alias of @btn-primary-sm). */
87
+ @recipe button-primary-sm { @btn-primary-sm }
88
+
89
+ /* Large primary button (alias of @btn-primary-lg). */
90
+ @recipe button-primary-lg { @btn-primary-lg }
91
+
92
+ /* Secondary button (alias of @btn-secondary). */
93
+ @recipe button-secondary { @btn-secondary }
94
+
95
+ /* Small secondary button (alias of @btn-secondary-sm). */
96
+ @recipe button-secondary-sm { @btn-secondary-sm }
97
+
98
+ /* Large secondary button (alias of @btn-secondary-lg). */
99
+ @recipe button-secondary-lg { @btn-secondary-lg }
100
+
101
+ /* Ghost button (alias of @btn-ghost). */
102
+ @recipe button-ghost { @btn-ghost }
103
+
104
+ /* Small ghost button (alias of @btn-ghost-sm). */
105
+ @recipe button-ghost-sm { @btn-ghost-sm }
106
+
107
+ /* Large ghost button (alias of @btn-ghost-lg). */
108
+ @recipe button-ghost-lg { @btn-ghost-lg }
109
+
110
+ /* Destructive button (alias of @btn-danger). */
111
+ @recipe button-danger { @btn-danger }
112
+
113
+ /* Outline button (alias of @btn-outline). */
114
+ @recipe button-outline { @btn-outline }
115
+
116
+ /* Square icon-only button (alias of @btn-icon). */
117
+ @recipe button-icon { @btn-icon }
@@ -12,10 +12,15 @@
12
12
  "layout",
13
13
  "list",
14
14
  "media",
15
+ "menu",
15
16
  "navigation",
16
17
  "progress",
18
+ "segmented",
19
+ "sheet",
17
20
  "skeleton",
21
+ "stat",
18
22
  "surface",
23
+ "switch",
19
24
  "table",
20
25
  "text",
21
26
  "tooltip"
@@ -1,5 +1,5 @@
1
1
  # layout
2
2
 
3
- ## 0.0.1
3
+ ## 0.0.2
4
4
 
5
5
  Initial release.
@@ -1,14 +1,18 @@
1
- /* shortwind: layout@0.0.1 sha:48a2a7b6e1a5d7ad */
1
+ /* shortwind: layout@0.0.2 sha:48025daeec83041a */
2
2
 
3
3
  /* @guide
4
4
  Composition primitives. @stack-* stacks children vertically (flex-col);
5
5
  @row* lays them out horizontally (flex-row). Choose the gap with the size
6
- suffix (xs/sm/md/lg on stacks). Use @grid-2/3/4 only for true multi-column
7
- grids, @center to center on both axes, @full to fill the parent. Common
8
- slips: there is no @flex-row (use @row) or @flex-col (use a @stack-*), and
9
- the grids are @grid-3, not @grid-cols-3.
6
+ suffix (xs/sm/md/lg on stacks); bare @stack is the default and equals
7
+ @stack-md. Use @grid-2/3/4 only for true multi-column grids, @center to
8
+ center on both axes, @full to fill the parent. Common slips: there is no
9
+ @flex-row (use @row) or @flex-col (use a @stack-*), and the grids are
10
+ @grid-3, not @grid-cols-3.
10
11
  */
11
12
 
13
+ /* Bare stack — default gap, alias for @stack-md. */
14
+ @recipe stack { @stack-md }
15
+
12
16
  /* Vertical stack with extra-small gap. */
13
17
  @recipe stack-xs {
14
18
  flex flex-col gap-1
@@ -1,14 +1,18 @@
1
- /* shortwind: layout@0.0.1 sha:48a2a7b6e1a5d7ad */
1
+ /* shortwind: layout@0.0.2 sha:48025daeec83041a */
2
2
 
3
3
  /* @guide
4
4
  Composition primitives. @stack-* stacks children vertically (flex-col);
5
5
  @row* lays them out horizontally (flex-row). Choose the gap with the size
6
- suffix (xs/sm/md/lg on stacks). Use @grid-2/3/4 only for true multi-column
7
- grids, @center to center on both axes, @full to fill the parent. Common
8
- slips: there is no @flex-row (use @row) or @flex-col (use a @stack-*), and
9
- the grids are @grid-3, not @grid-cols-3.
6
+ suffix (xs/sm/md/lg on stacks); bare @stack is the default and equals
7
+ @stack-md. Use @grid-2/3/4 only for true multi-column grids, @center to
8
+ center on both axes, @full to fill the parent. Common slips: there is no
9
+ @flex-row (use @row) or @flex-col (use a @stack-*), and the grids are
10
+ @grid-3, not @grid-cols-3.
10
11
  */
11
12
 
13
+ /* Bare stack — default gap, alias for @stack-md. */
14
+ @recipe stack { @stack-md }
15
+
12
16
  /* Vertical stack with extra-small gap. */
13
17
  @recipe stack-xs {
14
18
  flex flex-col gap-1
@@ -1,5 +1,5 @@
1
1
  # list
2
2
 
3
- ## 0.0.1
3
+ ## 0.0.2
4
4
 
5
5
  Initial release.
@@ -1,9 +1,11 @@
1
- /* shortwind: list@0.0.1 sha:f662887791fabb8d */
1
+ /* shortwind: list@0.0.2 sha:6a7f93aa95067c44 */
2
2
 
3
3
  /* @guide
4
4
  @list wraps a stack of @list-item rows; use @list-bordered for divided rows.
5
- Definition lists are separate: @dl with @dt (term) and @dd (description).
6
- For site navigation reach for the navigation family (@nav), not @list.
5
+ Definition lists are separate: @description-list with @description-term and
6
+ @description-detail. The short @dl / @dt / @dd forms are aliases that expand
7
+ identically; the spelled-out names are canonical — prefer them. For site
8
+ navigation reach for the navigation family (@navigation), not @list.
7
9
  */
8
10
 
9
11
  /* Vertical list with default gap. */
@@ -35,3 +37,14 @@
35
37
  @recipe dd {
36
38
  text-sm text-foreground sm:col-span-2
37
39
  }
40
+
41
+ /* Spelled-out canonical aliases — expand identically to @dl/@dt/@dd. */
42
+
43
+ /* Definition list container (alias of @dl). */
44
+ @recipe description-list { @dl }
45
+
46
+ /* Definition term (alias of @dt). */
47
+ @recipe description-term { @dt }
48
+
49
+ /* Definition description (alias of @dd). */
50
+ @recipe description-detail { @dd }
@@ -1,9 +1,11 @@
1
- /* shortwind: list@0.0.1 sha:f662887791fabb8d */
1
+ /* shortwind: list@0.0.2 sha:6a7f93aa95067c44 */
2
2
 
3
3
  /* @guide
4
4
  @list wraps a stack of @list-item rows; use @list-bordered for divided rows.
5
- Definition lists are separate: @dl with @dt (term) and @dd (description).
6
- For site navigation reach for the navigation family (@nav), not @list.
5
+ Definition lists are separate: @description-list with @description-term and
6
+ @description-detail. The short @dl / @dt / @dd forms are aliases that expand
7
+ identically; the spelled-out names are canonical — prefer them. For site
8
+ navigation reach for the navigation family (@navigation), not @list.
7
9
  */
8
10
 
9
11
  /* Vertical list with default gap. */
@@ -35,3 +37,14 @@
35
37
  @recipe dd {
36
38
  text-sm text-foreground sm:col-span-2
37
39
  }
40
+
41
+ /* Spelled-out canonical aliases — expand identically to @dl/@dt/@dd. */
42
+
43
+ /* Definition list container (alias of @dl). */
44
+ @recipe description-list { @dl }
45
+
46
+ /* Definition term (alias of @dt). */
47
+ @recipe description-term { @dt }
48
+
49
+ /* Definition description (alias of @dd). */
50
+ @recipe description-detail { @dd }