@still-forest/canopy 0.33.0 → 0.34.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.
@@ -1,5 +1,5 @@
1
1
  import { j as e } from "./jsx-runtime-B0GD0xBr.js";
2
- import { T as s } from "./Heading-DpEVkX3a.js";
2
+ import { T as s } from "./Heading-Bzl2l0K-.js";
3
3
  const r = ({ children: o, ...t }) => /* @__PURE__ */ e.jsx(s, { className: "inline-block w-fit rounded bg-accent px-2", family: "mono", size: "sm", variant: "accent", ...t, children: o });
4
4
  export {
5
5
  r as C
@@ -0,0 +1,263 @@
1
+ import { j as a } from "./jsx-runtime-B0GD0xBr.js";
2
+ import h from "react";
3
+ import { c as p } from "./index-CRiPKpXj.js";
4
+ const y = h.forwardRef(
5
+ ({
6
+ className: c,
7
+ as: x,
8
+ size: o,
9
+ weight: f,
10
+ variant: t = "default",
11
+ align: l,
12
+ leading: r,
13
+ // No default: Tailwind applies a default from text size classes
14
+ tracking: s,
15
+ family: n = "body",
16
+ asForeground: e = !1,
17
+ truncate: u = !1,
18
+ numeric: m = !1,
19
+ ...b
20
+ }, i) => {
21
+ const g = x || "p";
22
+ return /* @__PURE__ */ a.jsx(
23
+ g,
24
+ {
25
+ className: p(
26
+ // Font sizes
27
+ {
28
+ "text-xs": o === "xs",
29
+ "text-sm": o === "sm",
30
+ "text-base": o === "base" || o === "md",
31
+ "text-lg": o === "lg",
32
+ "text-xl": o === "xl",
33
+ "text-2xl": o === "2xl",
34
+ "text-3xl": o === "3xl",
35
+ "text-4xl": o === "4xl",
36
+ "text-5xl": o === "5xl",
37
+ "text-6xl": o === "6xl",
38
+ "text-7xl": o === "7xl",
39
+ "text-8xl": o === "8xl",
40
+ "text-9xl": o === "9xl"
41
+ },
42
+ // Font weights
43
+ {
44
+ "font-thin": f === "thin",
45
+ "font-extralight": f === "extralight",
46
+ "font-light": f === "light",
47
+ "font-normal": f === "normal",
48
+ "font-medium": f === "medium",
49
+ "font-semibold": f === "semibold",
50
+ "font-bold": f === "bold",
51
+ "font-extrabold": f === "extrabold",
52
+ "font-black": f === "black"
53
+ },
54
+ // Text colors (variants)
55
+ {
56
+ "text-foreground": t === "default",
57
+ "text-inherit": t === "inherit",
58
+ "text-muted-foreground": t === "muted",
59
+ "text-accent-foreground": t === "accent",
60
+ // Action colors
61
+ "text-primary-foreground": t === "primary",
62
+ "text-secondary-foreground": t === "secondary",
63
+ // Brand color
64
+ "text-brand": !e && t === "brand",
65
+ "text-brand-foreground": e && t === "brand",
66
+ // Accent colors (rich color variants)
67
+ "text-info": !e && t === "info",
68
+ "text-warning": !e && t === "warning",
69
+ "text-destructive": !e && t === "destructive",
70
+ "text-success": !e && t === "success",
71
+ // Accent colors (foreground variants)
72
+ "text-info-foreground": e && t === "info",
73
+ "text-warning-foreground": e && t === "warning",
74
+ "text-destructive-foreground": e && t === "destructive",
75
+ "text-success-foreground": e && t === "success"
76
+ },
77
+ // Text alignment
78
+ {
79
+ "text-left": l === "left",
80
+ "text-center": l === "center",
81
+ "text-right": l === "right",
82
+ "text-justify": l === "justify",
83
+ "text-start": l === "start",
84
+ "text-end": l === "end"
85
+ },
86
+ // Leading (line height)
87
+ {
88
+ "leading-none": r === "none",
89
+ "leading-tight": r === "tight",
90
+ "leading-snug": r === "snug",
91
+ "leading-normal": r === "normal",
92
+ "leading-relaxed": r === "relaxed",
93
+ "leading-loose": r === "loose"
94
+ },
95
+ // Tracking (letter spacing)
96
+ {
97
+ "tracking-tighter": s === "tighter",
98
+ "tracking-tight": s === "tight",
99
+ "tracking-normal": s === "normal",
100
+ "tracking-wide": s === "wide",
101
+ "tracking-wider": s === "wider",
102
+ "tracking-widest": s === "widest"
103
+ },
104
+ // Font family
105
+ {
106
+ "font-display": n === "display",
107
+ "font-heading": n === "heading",
108
+ "font-body": n === "body",
109
+ "font-brand": n === "brand",
110
+ "font-sans": n === "sans",
111
+ "font-serif": n === "serif",
112
+ "font-mono": n === "mono"
113
+ },
114
+ // Truncation
115
+ u && "truncate",
116
+ // Tabular numerals
117
+ m && "tabular-nums",
118
+ c
119
+ ),
120
+ ref: i,
121
+ ...b
122
+ }
123
+ );
124
+ }
125
+ );
126
+ y.displayName = "Text";
127
+ const j = h.forwardRef(
128
+ ({
129
+ className: c,
130
+ variant: x = "default",
131
+ level: o = "2",
132
+ size: f,
133
+ weight: t = "bold",
134
+ // Typical default browser style for headings
135
+ align: l,
136
+ leading: r,
137
+ // No default: Tailwind applies a default from text size classes
138
+ tracking: s,
139
+ family: n = "heading",
140
+ asForeground: e = !1,
141
+ truncate: u = !1,
142
+ numeric: m = !1,
143
+ ...b
144
+ }, i) => {
145
+ const g = `h${o}`, d = f || {
146
+ 1: "4xl",
147
+ 2: "3xl",
148
+ 3: "2xl",
149
+ 4: "xl",
150
+ 5: "lg",
151
+ 6: "base"
152
+ }[o];
153
+ return /* @__PURE__ */ a.jsx(
154
+ g,
155
+ {
156
+ className: p(
157
+ // Size scales
158
+ {
159
+ "text-xs": d === "xs",
160
+ "text-sm": d === "sm",
161
+ "text-base": d === "base" || d === "md",
162
+ "text-lg": d === "lg",
163
+ "text-xl": d === "xl",
164
+ "text-2xl": d === "2xl",
165
+ "text-3xl": d === "3xl",
166
+ "text-4xl": d === "4xl",
167
+ "text-5xl": d === "5xl",
168
+ "text-6xl": d === "6xl",
169
+ "text-7xl": d === "7xl",
170
+ "text-8xl": d === "8xl",
171
+ "text-9xl": d === "9xl"
172
+ },
173
+ // Font weights
174
+ {
175
+ "font-thin": t === "thin",
176
+ "font-extralight": t === "extralight",
177
+ "font-light": t === "light",
178
+ "font-normal": t === "normal",
179
+ "font-medium": t === "medium",
180
+ "font-semibold": t === "semibold",
181
+ "font-bold": t === "bold",
182
+ "font-extrabold": t === "extrabold",
183
+ "font-black": t === "black"
184
+ },
185
+ // Text colors (variants)
186
+ {
187
+ "text-foreground": x === "default",
188
+ "text-inherit": x === "inherit",
189
+ "text-muted-foreground": x === "muted",
190
+ "text-accent-foreground": x === "accent",
191
+ // Action colors
192
+ "text-primary-foreground": x === "primary",
193
+ "text-secondary-foreground": x === "secondary",
194
+ // Brand color
195
+ "text-brand": x === "brand",
196
+ "text-brand-foreground": e && x === "brand",
197
+ // Accent colors (rich color variants)
198
+ "text-info": !e && x === "info",
199
+ "text-warning": !e && x === "warning",
200
+ "text-destructive": !e && x === "destructive",
201
+ "text-success": !e && x === "success",
202
+ // Accent colors (foreground variants)
203
+ "text-info-foreground": e && x === "info",
204
+ "text-warning-foreground": e && x === "warning",
205
+ "text-destructive-foreground": e && x === "destructive",
206
+ "text-success-foreground": e && x === "success"
207
+ },
208
+ // Text alignment
209
+ {
210
+ "text-left": l === "left",
211
+ "text-center": l === "center",
212
+ "text-right": l === "right",
213
+ "text-justify": l === "justify",
214
+ "text-start": l === "start",
215
+ "text-end": l === "end"
216
+ },
217
+ // Leading (line height)
218
+ {
219
+ "leading-none": r === "none",
220
+ "leading-tight": r === "tight",
221
+ "leading-snug": r === "snug",
222
+ "leading-normal": r === "normal",
223
+ "leading-relaxed": r === "relaxed",
224
+ "leading-loose": r === "loose"
225
+ },
226
+ // Tracking (letter spacing)
227
+ {
228
+ "tracking-tighter": s === "tighter",
229
+ "tracking-tight": s === "tight",
230
+ "tracking-normal": s === "normal",
231
+ "tracking-wide": s === "wide",
232
+ "tracking-wider": s === "wider",
233
+ "tracking-widest": s === "widest"
234
+ },
235
+ // Font family
236
+ {
237
+ "font-brand": n === "brand",
238
+ "font-heading": n === "heading",
239
+ "font-body": n === "body",
240
+ "font-display": n === "display",
241
+ "font-sans": n === "sans",
242
+ "font-serif": n === "serif",
243
+ "font-mono": n === "mono"
244
+ },
245
+ // Truncation
246
+ u && "truncate",
247
+ // Tabular numerals
248
+ m && "tabular-nums",
249
+ // Add some scroll margin for better anchor navigation
250
+ "scroll-m-20",
251
+ c
252
+ ),
253
+ ref: i,
254
+ ...b
255
+ }
256
+ );
257
+ }
258
+ );
259
+ j.displayName = "Heading";
260
+ export {
261
+ j as H,
262
+ y as T
263
+ };
@@ -1,4 +1,4 @@
1
- import { j as m } from "./jsx-runtime-B0GD0xBr.js";
1
+ import { j as u } from "./jsx-runtime-B0GD0xBr.js";
2
2
  import y from "react";
3
3
  import { c as f } from "./index-CRiPKpXj.js";
4
4
  const i = y.forwardRef(
@@ -15,9 +15,9 @@ const i = y.forwardRef(
15
15
  overflow: c,
16
16
  overflowX: b,
17
17
  overflowY: d,
18
- rounded: u,
18
+ rounded: m,
19
19
  ...p
20
- }, v) => /* @__PURE__ */ m.jsx(
20
+ }, j) => /* @__PURE__ */ u.jsx(
21
21
  t,
22
22
  {
23
23
  className: f(
@@ -30,7 +30,8 @@ const i = y.forwardRef(
30
30
  "bg-info text-info-foreground": n === "info",
31
31
  "bg-success text-success-foreground": n === "success",
32
32
  "bg-warning text-warning-foreground": n === "warning",
33
- "bg-destructive text-destructive-foreground": n === "destructive"
33
+ "bg-destructive text-destructive-foreground": n === "destructive",
34
+ "bg-brand text-brand-foreground": n === "brand"
34
35
  },
35
36
  // Size
36
37
  {
@@ -226,20 +227,20 @@ const i = y.forwardRef(
226
227
  },
227
228
  // Rounded
228
229
  {
229
- rounded: u === !0,
230
- "rounded-none": u === "none",
231
- "rounded-xs": u === "xs",
232
- "rounded-sm": u === "sm",
233
- "rounded-md": u === "md",
234
- "rounded-lg": u === "lg",
235
- "rounded-xl": u === "xl",
236
- "rounded-2xl": u === "2xl",
237
- "rounded-3xl": u === "3xl",
238
- "rounded-full": u === "full"
230
+ rounded: m === !0,
231
+ "rounded-none": m === "none",
232
+ "rounded-xs": m === "xs",
233
+ "rounded-sm": m === "sm",
234
+ "rounded-md": m === "md",
235
+ "rounded-lg": m === "lg",
236
+ "rounded-xl": m === "xl",
237
+ "rounded-2xl": m === "2xl",
238
+ "rounded-3xl": m === "3xl",
239
+ "rounded-full": m === "full"
239
240
  },
240
241
  a
241
242
  ),
242
- ref: v,
243
+ ref: j,
243
244
  ...p
244
245
  }
245
246
  )
@@ -254,10 +255,10 @@ const g = ({ children: a, className: t, direction: n = "col", separation: r = "m
254
255
  "py-4 md:py-6": r === "lg",
255
256
  "py-6 md:py-8": r === "xl"
256
257
  });
257
- return o === "block" ? /* @__PURE__ */ m.jsx(i, { className: s, ...l, children: a }) : /* @__PURE__ */ m.jsx(w, { className: s, direction: n, ...l, children: a });
258
- }, j = ({ flex: a, className: t, as: n, children: r, ...e }) => {
258
+ return o === "block" ? /* @__PURE__ */ u.jsx(i, { className: s, ...l, children: a }) : /* @__PURE__ */ u.jsx(w, { className: s, direction: n, ...l, children: a });
259
+ }, v = ({ flex: a, className: t, as: n, children: r, ...e }) => {
259
260
  const o = n || "div";
260
- return /* @__PURE__ */ m.jsx(
261
+ return /* @__PURE__ */ u.jsx(
261
262
  o,
262
263
  {
263
264
  className: f(
@@ -274,7 +275,7 @@ const g = ({ children: a, className: t, direction: n = "col", separation: r = "m
274
275
  }
275
276
  );
276
277
  }, N = y.forwardRef(
277
- ({ className: a, as: t = "div", direction: n, align: r, justify: e, grow: o, wrap: l, gap: s, gapX: x, gapY: c, ...b }, d) => /* @__PURE__ */ m.jsx(
278
+ ({ className: a, as: t = "div", direction: n, align: r, justify: e, grow: o, wrap: l, gap: s, gapX: x, gapY: c, ...b }, d) => /* @__PURE__ */ u.jsx(
278
279
  t,
279
280
  {
280
281
  className: f(
@@ -392,8 +393,8 @@ const g = ({ children: a, className: t, direction: n = "col", separation: r = "m
392
393
  ...b
393
394
  }
394
395
  )
395
- ), w = Object.assign(N, { Item: j }), k = ({ children: a, className: t, ...n }) => /* @__PURE__ */ m.jsx(g, { as: "footer", className: f("bottom-0 mt-auto pb-2", t), justify: "between", ...n, children: a }), R = y.forwardRef(
396
- ({ className: a, as: t = "div", cols: n, rows: r, gap: e, gapX: o, gapY: l, flow: s, ...x }, c) => /* @__PURE__ */ m.jsx(
396
+ ), w = Object.assign(N, { Item: v }), k = ({ children: a, className: t, ...n }) => /* @__PURE__ */ u.jsx(g, { as: "footer", className: f("bottom-0 mt-auto pb-2", t), justify: "between", ...n, children: a }), R = y.forwardRef(
397
+ ({ className: a, as: t = "div", cols: n, rows: r, gap: e, gapX: o, gapY: l, flow: s, ...x }, c) => /* @__PURE__ */ u.jsx(
397
398
  t,
398
399
  {
399
400
  className: f(
@@ -513,10 +514,10 @@ const g = ({ children: a, className: t, direction: n = "col", separation: r = "m
513
514
  )
514
515
  );
515
516
  R.displayName = "Grid";
516
- const C = ({ children: a, sticky: t = !1, className: n, ...r }) => /* @__PURE__ */ m.jsx(g, { as: "header", className: f("top-0 ", t && "z-50 sticky", n), justify: "between", ...r, children: a }), F = ({ children: a, className: t, withContainer: n = !1, ...r }) => {
517
+ const C = ({ children: a, sticky: t = !1, className: n, ...r }) => /* @__PURE__ */ u.jsx(g, { as: "header", className: f("top-0 ", t && "z-50 sticky", n), justify: "between", ...r, children: a }), F = ({ children: a, className: t, withContainer: n = !1, ...r }) => {
517
518
  const e = f("flex-1 grow", t);
518
- return n ? /* @__PURE__ */ m.jsx(g, { as: "main", className: e, display: "block", ...r, children: a }) : /* @__PURE__ */ m.jsx(w.Item, { as: "main", className: e, ...r, children: a });
519
- }, B = y.forwardRef(({ children: a, className: t, ...n }, r) => /* @__PURE__ */ m.jsx(
519
+ return n ? /* @__PURE__ */ u.jsx(g, { as: "main", className: e, display: "block", ...r, children: a }) : /* @__PURE__ */ u.jsx(w.Item, { as: "main", className: e, ...r, children: a });
520
+ }, B = y.forwardRef(({ children: a, className: t, ...n }, r) => /* @__PURE__ */ u.jsx(
520
521
  w,
521
522
  {
522
523
  className: f("mx-auto w-full max-w-screen-xl h-screen flex-1", t),
@@ -1,9 +1,9 @@
1
1
  import { j as e } from "./jsx-runtime-B0GD0xBr.js";
2
- import { c, B as l } from "./calendar-B5XoIqC2.js";
2
+ import { c, B as l } from "./calendar-DKwGFkIw.js";
3
3
  import "react";
4
- import { F as o, B as d } from "./Layout-CjE5bQn7.js";
5
- import { C as m } from "./Code-C8KML31r.js";
6
- import { H as h } from "./Heading-DpEVkX3a.js";
4
+ import { F as o, B as d } from "./Layout-CvVv48kM.js";
5
+ import { C as m } from "./Code-BA5638r9.js";
6
+ import { H as h } from "./Heading-Bzl2l0K-.js";
7
7
  import { c as x } from "./index-CRiPKpXj.js";
8
8
  /**
9
9
  * @license lucide-react v0.543.0 - ISC
@@ -1,6 +1,6 @@
1
1
  import { j as o } from "./jsx-runtime-B0GD0xBr.js";
2
2
  import { c as t } from "./index-CRiPKpXj.js";
3
- import { T as p } from "./Heading-DpEVkX3a.js";
3
+ import { T as p } from "./Heading-Bzl2l0K-.js";
4
4
  const i = ({ children: r, className: s, as: a = "p", ...m }) => /* @__PURE__ */ o.jsx(p, { as: a, className: t("mb-4", s), ...m, children: r });
5
5
  export {
6
6
  i as P
@@ -1,11 +1,11 @@
1
1
  import { j as o } from "./jsx-runtime-B0GD0xBr.js";
2
- import { c as E, u as I, f as At, g as kt, B as Dt, h as Et, S as Pt, b as It } from "./calendar-B5XoIqC2.js";
2
+ import { c as E, u as I, f as At, g as kt, B as Dt, h as Et, S as Pt, b as It } from "./calendar-DKwGFkIw.js";
3
3
  import * as l from "react";
4
4
  import T, { Fragment as St } from "react";
5
5
  import { c as p } from "./index-CRiPKpXj.js";
6
- import { a as H, c as U, b as O, P as N, e as w, d as $, f as Ot, g as Mt, u as $t, h as Ne, i as Lt, R as zt, j as Ft, F as Ht, D as Re, k as Bt, l as Ae, m as Gt, A as Vt, n as Wt, C as qt, o as Kt, p as Ut, q as Yt, r as Xt, s as Zt } from "./popover-nVL6yIZo.js";
7
- import { F as ke } from "./Layout-CjE5bQn7.js";
8
- import { T as De } from "./Heading-DpEVkX3a.js";
6
+ import { a as H, c as U, b as O, P as N, e as w, d as $, f as Ot, g as Mt, u as $t, h as Ne, i as Lt, R as zt, j as Ft, F as Ht, D as Re, k as Bt, l as Ae, m as Gt, A as Vt, n as Wt, C as qt, o as Kt, p as Ut, q as Yt, r as Xt, s as Zt } from "./popover-ByOImpZC.js";
7
+ import { F as ke } from "./Layout-CvVv48kM.js";
8
+ import { T as De } from "./Heading-Bzl2l0K-.js";
9
9
  /**
10
10
  * @license lucide-react v0.543.0 - ISC
11
11
  *
@@ -1,11 +1,11 @@
1
1
  import { j as i } from "./jsx-runtime-B0GD0xBr.js";
2
- import { c as re, u as V, f as kt, B as ct, i as fr, j as Ne, h as pr } from "./calendar-B5XoIqC2.js";
2
+ import { c as re, u as V, f as kt, B as ct, i as fr, j as Ne, h as pr } from "./calendar-DKwGFkIw.js";
3
3
  import * as a from "react";
4
4
  import { useState as lt, useEffect as mr, useMemo as hr } from "react";
5
- import { F as ae, G as vr } from "./Layout-CjE5bQn7.js";
6
- import { T as Ae } from "./Heading-DpEVkX3a.js";
5
+ import { F as ae, G as vr } from "./Layout-CvVv48kM.js";
6
+ import { T as Ae } from "./Heading-Bzl2l0K-.js";
7
7
  import { c as $ } from "./index-CRiPKpXj.js";
8
- import { c as we, d as jt, P as k, a as ye, e as L, t as Pt, g as _t, b as Z, u as dt, v as Me, l as Tt, m as gr, A as xr, f as ne, h as Dt, V as br, i as At, j as yr, R as Mt, F as Ot, D as wr, C as Cr, n as Sr, q as Lt, r as Ft, s as Bt, p as $t, w as Er, x as Ir, k as Rr } from "./popover-nVL6yIZo.js";
8
+ import { c as we, d as jt, P as k, a as ye, e as L, t as Pt, g as _t, b as Z, u as dt, v as Me, l as Tt, m as gr, A as xr, f as ne, h as Dt, V as br, i as At, j as yr, R as Mt, F as Ot, D as wr, C as Cr, n as Sr, q as Lt, r as Ft, s as Bt, p as $t, w as Er, x as Ir, k as Rr } from "./popover-ByOImpZC.js";
9
9
  import * as Vt from "react-dom";
10
10
  /**
11
11
  * @license lucide-react v0.543.0 - ISC
@@ -1,5 +1,5 @@
1
1
  import { j as P } from "./jsx-runtime-B0GD0xBr.js";
2
- import { F as mt } from "./Layout-CjE5bQn7.js";
2
+ import { F as mt } from "./Layout-CvVv48kM.js";
3
3
  import { a as Dn, c as _ } from "./index-CRiPKpXj.js";
4
4
  import * as j from "react";
5
5
  import h, { forwardRef as yt, createElement as He, createContext as On, useContext as Cn, useCallback as Q, useRef as Se, useLayoutEffect as Nn, useState as qe, useEffect as xn, useMemo as Fe } from "react";
@@ -1,4 +1,4 @@
1
- import { c as Vn, f as Me, u as Y } from "./calendar-B5XoIqC2.js";
1
+ import { c as Vn, f as Me, u as Y } from "./calendar-DKwGFkIw.js";
2
2
  import * as l from "react";
3
3
  import oe, { useState as Un, useLayoutEffect as Yn } from "react";
4
4
  import { j as S } from "./jsx-runtime-B0GD0xBr.js";
package/dist/forms.js CHANGED
@@ -1,5 +1,5 @@
1
- import { B as e, a as s } from "./chunks/calendar-B5XoIqC2.js";
2
- import { C as o, a as r, b as n, D as p, I as c, c as I, L as b, N as l, R as x, d as B, e as S, S as i, f as m, T as D } from "./chunks/Textarea-DuVdR28E.js";
1
+ import { B as e, a as s } from "./chunks/calendar-DKwGFkIw.js";
2
+ import { C as o, a as r, b as n, D as p, I as c, c as I, L as b, N as l, R as x, d as B, e as S, S as i, f as m, T as D } from "./chunks/Textarea-BliW4-88.js";
3
3
  export {
4
4
  e as Button,
5
5
  s as ButtonGroup,
package/dist/index.d.ts CHANGED
@@ -419,7 +419,7 @@ export declare const Layout: typeof LayoutComponent & {
419
419
  Footer: typeof Footer;
420
420
  };
421
421
 
422
- declare const LAYOUT_VARIANTS: readonly ["default", "primary", "secondary", "muted", "accent", "info", "success", "warning", "destructive"];
422
+ declare const LAYOUT_VARIANTS: readonly ["default", "primary", "secondary", "muted", "accent", "info", "success", "warning", "destructive", "brand"];
423
423
 
424
424
  declare const LayoutComponent: default_2.ForwardRefExoticComponent<LayoutProps & default_2.RefAttributes<HTMLDivElement>>;
425
425
 
@@ -776,7 +776,7 @@ declare type TooltipTriggerProps = React.ComponentProps<typeof TooltipTrigger> &
776
776
 
777
777
  declare const TYPOGRAPHY_ELEMENTS: readonly ["p", "span", "label", "div", "h1", "h2", "h3", "h4", "h5", "h6"];
778
778
 
779
- declare const TYPOGRAPHY_VARIANTS: readonly ["default", "inherit", "primary", "secondary", "muted", "accent", "info", "success", "warning", "destructive"];
779
+ declare const TYPOGRAPHY_VARIANTS: readonly ["default", "inherit", "primary", "secondary", "muted", "accent", "info", "success", "warning", "destructive", "brand"];
780
780
 
781
781
  declare type TypographyElement = (typeof TYPOGRAPHY_ELEMENTS)[number];
782
782
 
package/dist/index.js CHANGED
@@ -1,19 +1,19 @@
1
- import { R, T as P, C as F, c as V, X as O, d as H, D as q, P as K, O as X, e as J } from "./chunks/SidebarLayout-wO9WdfoD.js";
2
- import { A as Na, f as ka, g as wa, M as Ta, h as Ca, a as _a, b as Ia, S as Ma, r as Sa, i as za, j as Aa, k as $a, l as Da, m as Ea, n as Ba, o as La, p as Ga, q as Ra } from "./chunks/SidebarLayout-wO9WdfoD.js";
1
+ import { R, T as P, C as F, c as V, X as O, d as H, D as q, P as K, O as X, e as J } from "./chunks/SidebarLayout-B4Mz7YXF.js";
2
+ import { A as Na, f as ka, g as wa, M as Ta, h as Ca, a as _a, b as Ia, S as Ma, r as Sa, i as za, j as Aa, k as $a, l as Da, m as Ea, n as Ba, o as La, p as Ga, q as Ra } from "./chunks/SidebarLayout-B4Mz7YXF.js";
3
3
  import { j as t } from "./chunks/jsx-runtime-B0GD0xBr.js";
4
- import { c as g, b as N, S as T, C, d as Q, e as U } from "./chunks/calendar-B5XoIqC2.js";
5
- import { B as Fa, a as Va } from "./chunks/calendar-B5XoIqC2.js";
4
+ import { c as g, b as N, S as T, C, d as Q, e as U } from "./chunks/calendar-DKwGFkIw.js";
5
+ import { B as Fa, a as Va } from "./chunks/calendar-DKwGFkIw.js";
6
6
  import { c as i } from "./chunks/index-CRiPKpXj.js";
7
7
  import * as x from "react";
8
8
  import { Fragment as W, useState as Y, useEffect as Z, useMemo as ee } from "react";
9
- import { u as ae, a as te, c as re, b as se, P as h, d as ne, e as j } from "./chunks/popover-nVL6yIZo.js";
10
- import { g as _, h as oe, i as ie } from "./chunks/Textarea-DuVdR28E.js";
11
- import { C as Ha, a as qa, b as Ka, D as Xa, I as Ja, c as Qa, L as Ua, N as Wa, R as Ya, d as Za, e as et, S as at, f as tt, T as rt } from "./chunks/Textarea-DuVdR28E.js";
12
- import { E as nt, a as ot, I as it, P as lt, b as ct } from "./chunks/PageNotFound-9R7TbMOe.js";
13
- import { B as ut, C as bt, F as mt, a as gt, G as pt, H as xt, L as ft } from "./chunks/Layout-CjE5bQn7.js";
14
- import { C as ht } from "./chunks/Code-C8KML31r.js";
15
- import { H as jt, T as Nt } from "./chunks/Heading-DpEVkX3a.js";
16
- import { P as wt } from "./chunks/Paragraph-DiAQlGea.js";
9
+ import { u as ae, a as te, c as re, b as se, P as h, d as ne, e as j } from "./chunks/popover-ByOImpZC.js";
10
+ import { g as _, h as oe, i as ie } from "./chunks/Textarea-BliW4-88.js";
11
+ import { C as Ha, a as qa, b as Ka, D as Xa, I as Ja, c as Qa, L as Ua, N as Wa, R as Ya, d as Za, e as et, S as at, f as tt, T as rt } from "./chunks/Textarea-BliW4-88.js";
12
+ import { E as nt, a as ot, I as it, P as lt, b as ct } from "./chunks/PageNotFound-BqT3XThZ.js";
13
+ import { B as ut, C as bt, F as mt, a as gt, G as pt, H as xt, L as ft } from "./chunks/Layout-CvVv48kM.js";
14
+ import { C as ht } from "./chunks/Code-BA5638r9.js";
15
+ import { H as jt, T as Nt } from "./chunks/Heading-Bzl2l0K-.js";
16
+ import { P as wt } from "./chunks/Paragraph-3sal3gja.js";
17
17
  /**
18
18
  * @license lucide-react v0.543.0 - ISC
19
19
  *
@@ -1,4 +1,4 @@
1
- import { E as o, a as e, I as s, P as t, b as l } from "./chunks/PageNotFound-9R7TbMOe.js";
1
+ import { E as o, a as e, I as s, P as t, b as l } from "./chunks/PageNotFound-BqT3XThZ.js";
2
2
  export {
3
3
  o as ErrorFallback,
4
4
  e as ErrorOverlay,
package/dist/layout.d.ts CHANGED
@@ -141,7 +141,7 @@ export declare const Layout: typeof LayoutComponent & {
141
141
  Footer: typeof Footer;
142
142
  };
143
143
 
144
- declare const LAYOUT_VARIANTS: readonly ["default", "primary", "secondary", "muted", "accent", "info", "success", "warning", "destructive"];
144
+ declare const LAYOUT_VARIANTS: readonly ["default", "primary", "secondary", "muted", "accent", "info", "success", "warning", "destructive", "brand"];
145
145
 
146
146
  declare const LayoutComponent: default_2.ForwardRefExoticComponent<LayoutProps & default_2.RefAttributes<HTMLDivElement>>;
147
147
 
package/dist/layout.js CHANGED
@@ -1,4 +1,4 @@
1
- import { B as s, C as e, F as r, a as t, G as x, H as F, L as d } from "./chunks/Layout-CjE5bQn7.js";
1
+ import { B as s, C as e, F as r, a as t, G as x, H as F, L as d } from "./chunks/Layout-CvVv48kM.js";
2
2
  export {
3
3
  s as Box,
4
4
  e as Container,
@@ -1,4 +1,4 @@
1
- import { M as r, a as b, b as i, S as s } from "./chunks/SidebarLayout-wO9WdfoD.js";
1
+ import { M as r, a as b, b as i, S as s } from "./chunks/SidebarLayout-B4Mz7YXF.js";
2
2
  export {
3
3
  r as MenuItemText,
4
4
  b as Sidebar,
@@ -80,7 +80,7 @@ declare type TextTracking = (typeof TEXT_TRACKINGS)[number];
80
80
 
81
81
  declare const TYPOGRAPHY_ELEMENTS: readonly ["p", "span", "label", "div", "h1", "h2", "h3", "h4", "h5", "h6"];
82
82
 
83
- declare const TYPOGRAPHY_VARIANTS: readonly ["default", "inherit", "primary", "secondary", "muted", "accent", "info", "success", "warning", "destructive"];
83
+ declare const TYPOGRAPHY_VARIANTS: readonly ["default", "inherit", "primary", "secondary", "muted", "accent", "info", "success", "warning", "destructive", "brand"];
84
84
 
85
85
  declare type TypographyElement = (typeof TYPOGRAPHY_ELEMENTS)[number];
86
86
 
@@ -1,6 +1,6 @@
1
- import { C as o } from "./chunks/Code-C8KML31r.js";
2
- import { H as p, T as s } from "./chunks/Heading-DpEVkX3a.js";
3
- import { P as x } from "./chunks/Paragraph-DiAQlGea.js";
1
+ import { C as o } from "./chunks/Code-BA5638r9.js";
2
+ import { H as p, T as s } from "./chunks/Heading-Bzl2l0K-.js";
3
+ import { P as x } from "./chunks/Paragraph-3sal3gja.js";
4
4
  export {
5
5
  o as Code,
6
6
  p as Heading,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@still-forest/canopy",
3
- "version": "0.33.0",
3
+ "version": "0.34.0",
4
4
  "author": "John Szymanowski",
5
5
  "license": "MIT",
6
6
  "description": "React components, built with Tailwind CSS, Shadcn, and VisX",
@@ -80,7 +80,7 @@
80
80
  "react-router": "^7.8.2"
81
81
  },
82
82
  "devDependencies": {
83
- "@biomejs/biome": "2.2.0",
83
+ "@biomejs/biome": "2.2.5",
84
84
  "@still-forest/biomejs-config": "2.1.0",
85
85
  "@storybook/addon-docs": "9.1.5",
86
86
  "@storybook/addon-themes": "9.1.5",
@@ -91,22 +91,22 @@
91
91
  "@testing-library/react": "16.3.0",
92
92
  "@testing-library/user-event": "14.6.1",
93
93
  "@types/node": "22.15.33",
94
- "@types/react": "19.1.12",
95
- "@types/react-dom": "19.1.9",
94
+ "@types/react": "19.2.0",
95
+ "@types/react-dom": "19.2.0",
96
96
  "@vitejs/plugin-react": "5.0.2",
97
97
  "@vitest/browser": "3.2.4",
98
98
  "@vitest/coverage-v8": "3.2.4",
99
99
  "class-variance-authority": "0.7.1",
100
100
  "clsx": "2.1.1",
101
101
  "jsdom": "27.0.0",
102
- "react": "19.1.1",
103
- "react-dom": "19.1.1",
102
+ "react": "19.2.0",
103
+ "react-dom": "19.2.0",
104
104
  "release-it": "19.0.4",
105
105
  "storybook": "9.1.5",
106
106
  "tailwind-merge": "3.3.1",
107
107
  "tailwindcss": "4.1.13",
108
108
  "tw-animate-css": "1.3.8",
109
- "typescript": "5.9.2",
109
+ "typescript": "5.9.3",
110
110
  "vite": "7.1.5",
111
111
  "vite-plugin-dts": "4.5.4",
112
112
  "vite-plugin-lib-inject-css": "2.2.2",
@@ -1,257 +0,0 @@
1
- import { j as a } from "./jsx-runtime-B0GD0xBr.js";
2
- import h from "react";
3
- import { c as p } from "./index-CRiPKpXj.js";
4
- const y = h.forwardRef(
5
- ({
6
- className: c,
7
- as: o,
8
- size: e,
9
- weight: f,
10
- variant: t = "default",
11
- align: d,
12
- leading: s,
13
- // No default: Tailwind applies a default from text size classes
14
- tracking: r,
15
- family: n = "body",
16
- asForeground: x = !1,
17
- truncate: u = !1,
18
- numeric: m = !1,
19
- ...i
20
- }, b) => {
21
- const g = o || "p";
22
- return /* @__PURE__ */ a.jsx(
23
- g,
24
- {
25
- className: p(
26
- // Font sizes
27
- {
28
- "text-xs": e === "xs",
29
- "text-sm": e === "sm",
30
- "text-base": e === "base" || e === "md",
31
- "text-lg": e === "lg",
32
- "text-xl": e === "xl",
33
- "text-2xl": e === "2xl",
34
- "text-3xl": e === "3xl",
35
- "text-4xl": e === "4xl",
36
- "text-5xl": e === "5xl",
37
- "text-6xl": e === "6xl",
38
- "text-7xl": e === "7xl",
39
- "text-8xl": e === "8xl",
40
- "text-9xl": e === "9xl"
41
- },
42
- // Font weights
43
- {
44
- "font-thin": f === "thin",
45
- "font-extralight": f === "extralight",
46
- "font-light": f === "light",
47
- "font-normal": f === "normal",
48
- "font-medium": f === "medium",
49
- "font-semibold": f === "semibold",
50
- "font-bold": f === "bold",
51
- "font-extrabold": f === "extrabold",
52
- "font-black": f === "black"
53
- },
54
- // Text colors (variants)
55
- {
56
- "text-foreground": t === "default",
57
- "text-inherit": t === "inherit",
58
- "text-muted-foreground": t === "muted",
59
- "text-accent-foreground": t === "accent",
60
- // Action colors
61
- "text-primary-foreground": t === "primary",
62
- "text-secondary-foreground": t === "secondary",
63
- // Accent colors (rich color variants)
64
- "text-info": !x && t === "info",
65
- "text-warning": !x && t === "warning",
66
- "text-destructive": !x && t === "destructive",
67
- "text-success": !x && t === "success",
68
- // Accent colors (foreground variants)
69
- "text-info-foreground": x && t === "info",
70
- "text-warning-foreground": x && t === "warning",
71
- "text-destructive-foreground": x && t === "destructive",
72
- "text-success-foreground": x && t === "success"
73
- },
74
- // Text alignment
75
- {
76
- "text-left": d === "left",
77
- "text-center": d === "center",
78
- "text-right": d === "right",
79
- "text-justify": d === "justify",
80
- "text-start": d === "start",
81
- "text-end": d === "end"
82
- },
83
- // Leading (line height)
84
- {
85
- "leading-none": s === "none",
86
- "leading-tight": s === "tight",
87
- "leading-snug": s === "snug",
88
- "leading-normal": s === "normal",
89
- "leading-relaxed": s === "relaxed",
90
- "leading-loose": s === "loose"
91
- },
92
- // Tracking (letter spacing)
93
- {
94
- "tracking-tighter": r === "tighter",
95
- "tracking-tight": r === "tight",
96
- "tracking-normal": r === "normal",
97
- "tracking-wide": r === "wide",
98
- "tracking-wider": r === "wider",
99
- "tracking-widest": r === "widest"
100
- },
101
- // Font family
102
- {
103
- "font-display": n === "display",
104
- "font-heading": n === "heading",
105
- "font-body": n === "body",
106
- "font-brand": n === "brand",
107
- "font-sans": n === "sans",
108
- "font-serif": n === "serif",
109
- "font-mono": n === "mono"
110
- },
111
- // Truncation
112
- u && "truncate",
113
- // Tabular numerals
114
- m && "tabular-nums",
115
- c
116
- ),
117
- ref: b,
118
- ...i
119
- }
120
- );
121
- }
122
- );
123
- y.displayName = "Text";
124
- const j = h.forwardRef(
125
- ({
126
- className: c,
127
- variant: o = "default",
128
- level: e = "2",
129
- size: f,
130
- weight: t = "bold",
131
- // Typical default browser style for headings
132
- align: d,
133
- leading: s,
134
- // No default: Tailwind applies a default from text size classes
135
- tracking: r,
136
- family: n = "heading",
137
- asForeground: x = !1,
138
- truncate: u = !1,
139
- numeric: m = !1,
140
- ...i
141
- }, b) => {
142
- const g = `h${e}`, l = f || {
143
- 1: "4xl",
144
- 2: "3xl",
145
- 3: "2xl",
146
- 4: "xl",
147
- 5: "lg",
148
- 6: "base"
149
- }[e];
150
- return /* @__PURE__ */ a.jsx(
151
- g,
152
- {
153
- className: p(
154
- // Size scales
155
- {
156
- "text-xs": l === "xs",
157
- "text-sm": l === "sm",
158
- "text-base": l === "base" || l === "md",
159
- "text-lg": l === "lg",
160
- "text-xl": l === "xl",
161
- "text-2xl": l === "2xl",
162
- "text-3xl": l === "3xl",
163
- "text-4xl": l === "4xl",
164
- "text-5xl": l === "5xl",
165
- "text-6xl": l === "6xl",
166
- "text-7xl": l === "7xl",
167
- "text-8xl": l === "8xl",
168
- "text-9xl": l === "9xl"
169
- },
170
- // Font weights
171
- {
172
- "font-thin": t === "thin",
173
- "font-extralight": t === "extralight",
174
- "font-light": t === "light",
175
- "font-normal": t === "normal",
176
- "font-medium": t === "medium",
177
- "font-semibold": t === "semibold",
178
- "font-bold": t === "bold",
179
- "font-extrabold": t === "extrabold",
180
- "font-black": t === "black"
181
- },
182
- // Text colors (variants)
183
- {
184
- "text-foreground": o === "default",
185
- "text-inherit": o === "inherit",
186
- "text-muted-foreground": o === "muted",
187
- "text-accent-foreground": o === "accent",
188
- // Action colors
189
- "text-primary-foreground": o === "primary",
190
- "text-secondary-foreground": o === "secondary",
191
- // Accent colors (rich color variants)
192
- "text-info": !x && o === "info",
193
- "text-warning": !x && o === "warning",
194
- "text-destructive": !x && o === "destructive",
195
- "text-success": !x && o === "success",
196
- // Accent colors (foreground variants)
197
- "text-info-foreground": x && o === "info",
198
- "text-warning-foreground": x && o === "warning",
199
- "text-destructive-foreground": x && o === "destructive",
200
- "text-success-foreground": x && o === "success"
201
- },
202
- // Text alignment
203
- {
204
- "text-left": d === "left",
205
- "text-center": d === "center",
206
- "text-right": d === "right",
207
- "text-justify": d === "justify",
208
- "text-start": d === "start",
209
- "text-end": d === "end"
210
- },
211
- // Leading (line height)
212
- {
213
- "leading-none": s === "none",
214
- "leading-tight": s === "tight",
215
- "leading-snug": s === "snug",
216
- "leading-normal": s === "normal",
217
- "leading-relaxed": s === "relaxed",
218
- "leading-loose": s === "loose"
219
- },
220
- // Tracking (letter spacing)
221
- {
222
- "tracking-tighter": r === "tighter",
223
- "tracking-tight": r === "tight",
224
- "tracking-normal": r === "normal",
225
- "tracking-wide": r === "wide",
226
- "tracking-wider": r === "wider",
227
- "tracking-widest": r === "widest"
228
- },
229
- // Font family
230
- {
231
- "font-brand": n === "brand",
232
- "font-heading": n === "heading",
233
- "font-body": n === "body",
234
- "font-display": n === "display",
235
- "font-sans": n === "sans",
236
- "font-serif": n === "serif",
237
- "font-mono": n === "mono"
238
- },
239
- // Truncation
240
- u && "truncate",
241
- // Tabular numerals
242
- m && "tabular-nums",
243
- // Add some scroll margin for better anchor navigation
244
- "scroll-m-20",
245
- c
246
- ),
247
- ref: b,
248
- ...i
249
- }
250
- );
251
- }
252
- );
253
- j.displayName = "Heading";
254
- export {
255
- j as H,
256
- y as T
257
- };