@almanaclabs/blaze-ui 0.6.0 → 0.7.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.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # `@almanaclabs/blaze-ui`
2
2
 
3
- Shared React components and semantic design tokens for Blaze.
3
+ Shared React components and semantic design tokens for Huck.
4
4
 
5
5
  The components use shadcn's `b0` preset: Base UI primitives, the Nova style,
6
- neutral colors, Inter, and Tabler outline and filled icons. Component source is
7
- owned by this package so Blaze-specific changes stay reviewable.
6
+ Huck's warm palette, DM Sans and Fraunces typography, and Tabler icons.
7
+ Component source is owned by this package so design changes stay reviewable.
8
8
 
9
9
  ## Install
10
10
 
@@ -62,7 +62,7 @@ function d({ className: t, ...n }) {
62
62
  function f({ className: t, ...n }) {
63
63
  return /* @__PURE__ */ r("span", {
64
64
  "data-slot": "attachment-description",
65
- className: e("mt-0.5 block min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive/80", "max-w-full", t),
65
+ className: e("mt-0.5 block min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive", "max-w-full", t),
66
66
  ...n
67
67
  });
68
68
  }
@@ -3,22 +3,22 @@ import { cva as t } from "class-variance-authority";
3
3
  import { mergeProps as n } from "@base-ui/react/merge-props";
4
4
  import { useRender as r } from "@base-ui/react/use-render";
5
5
  //#region src/components/badge/badge.tsx
6
- var i = t("group/badge inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent font-medium whitespace-nowrap transition-all [--icon-stroke-width:var(--icon-stroke-12)] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", {
6
+ var i = t("group/badge inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent font-semibold whitespace-nowrap transition-all [--icon-stroke-width:var(--icon-stroke-12)] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", {
7
7
  variants: {
8
8
  variant: {
9
- default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
9
+ default: "bg-secondary text-muted-foreground [a]:hover:bg-muted",
10
10
  secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
11
- destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
12
- success: "bg-success/10 text-success focus-visible:ring-success/20 dark:bg-success/15 dark:focus-visible:ring-success/30 [a]:hover:bg-success/15",
13
- warning: "bg-warning/10 text-warning focus-visible:ring-warning/20 dark:bg-warning/15 dark:focus-visible:ring-warning/30 [a]:hover:bg-warning/15",
11
+ destructive: "bg-destructive-soft text-destructive focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive-soft",
12
+ success: "bg-success-soft text-success focus-visible:ring-success/20 dark:focus-visible:ring-success/30 [a]:hover:bg-success-soft",
13
+ warning: "bg-warning-soft text-warning-foreground focus-visible:ring-warning/20 dark:focus-visible:ring-warning/30 [a]:hover:bg-warning-soft",
14
14
  info: "bg-info/10 text-info focus-visible:ring-info/20 dark:bg-info/15 dark:focus-visible:ring-info/30 [a]:hover:bg-info/15",
15
15
  outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
16
16
  ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
17
- link: "text-primary underline-offset-4 hover:underline"
17
+ link: "text-link underline-offset-4 hover:underline"
18
18
  },
19
19
  size: {
20
- default: "h-5 px-2 py-0.5 text-xs",
21
- md: "h-7 px-2.5 py-1 text-xs"
20
+ default: "min-h-6 px-2 py-1 text-[11px]",
21
+ md: "min-h-7 px-2.5 py-1 text-xs"
22
22
  }
23
23
  },
24
24
  defaultVariants: {
@@ -5,7 +5,7 @@ import { Button as r } from "@base-ui/react/button";
5
5
  import { cva as i } from "class-variance-authority";
6
6
  import { jsx as a } from "react/jsx-runtime";
7
7
  //#region src/components/button/button.tsx
8
- var o = "bg-primary text-primary-foreground hover:bg-primary/80 aria-expanded:bg-primary/80", s = "border-border bg-background text-foreground hover:border-foreground/15 hover:bg-background aria-expanded:border-foreground/15 aria-expanded:bg-background", c = "bg-transparent text-foreground hover:bg-muted aria-expanded:bg-muted dark:hover:bg-muted/50", l = `${e.xs} gap-0.5 [--icon-stroke-width:var(--icon-stroke-14)] has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 [&_svg:not([class*='size-'])]:size-[14px]`, u = `${e.sm} gap-1 [--icon-stroke-width:var(--icon-stroke-15)] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-[15px]`, d = `${e.md} gap-[5px] [--icon-stroke-width:var(--icon-stroke-15)] has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-[15px]`, f = `${e.lg} gap-1.5 [--icon-stroke-width:var(--icon-stroke-18)] has-data-[icon=inline-end]:pr-[9px] has-data-[icon=inline-start]:pl-[9px] [&_svg:not([class*='size-'])]:size-[18px]`, p = `${e.xl} gap-2 [--icon-stroke-width:var(--icon-stroke-24)] has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-6`, m = i("group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding font-normal whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-border-subtle active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-40 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive/60 dark:aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
8
+ var o = "bg-primary text-primary-foreground hover:bg-[var(--primary-hover)] aria-expanded:bg-[var(--primary-hover)]", s = "border-border bg-background text-foreground hover:border-foreground/15 hover:bg-background aria-expanded:border-foreground/15 aria-expanded:bg-background", c = "bg-transparent text-foreground hover:bg-muted aria-expanded:bg-muted dark:hover:bg-muted/50", l = `${e.xs} gap-0.5 [--icon-stroke-width:var(--icon-stroke-14)] has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 [&_svg:not([class*='size-'])]:size-[14px]`, u = `${e.sm} gap-1 [--icon-stroke-width:var(--icon-stroke-15)] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-[15px]`, d = `${e.md} gap-[5px] [--icon-stroke-width:var(--icon-stroke-15)] has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-[15px]`, f = `${e.lg} gap-1.5 [--icon-stroke-width:var(--icon-stroke-18)] has-data-[icon=inline-end]:pr-[9px] has-data-[icon=inline-start]:pl-[9px] [&_svg:not([class*='size-'])]:size-[18px]`, p = `${e.xl} rounded-lg gap-2 [--icon-stroke-width:var(--icon-stroke-24)] has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-6`, m = i("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding font-semibold whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-border-subtle active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-40 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive/60 dark:aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
9
9
  variants: {
10
10
  variant: {
11
11
  primary: o,
@@ -13,7 +13,7 @@ var o = "bg-primary text-primary-foreground hover:bg-primary/80 aria-expanded:bg
13
13
  tertiary: c,
14
14
  subtle: "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
15
15
  destructive: "bg-destructive/10 text-destructive hover:bg-destructive/15 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/10 dark:hover:bg-destructive/15 dark:focus-visible:ring-destructive/40",
16
- link: "text-primary underline-offset-4 hover:underline"
16
+ link: "text-link underline-offset-4 hover:underline"
17
17
  },
18
18
  size: {
19
19
  xs: l,
@@ -24,19 +24,19 @@ var o = "bg-primary text-primary-foreground hover:bg-primary/80 aria-expanded:bg
24
24
  "icon-xs": "size-6 rounded-[6px] [--icon-stroke-width:var(--icon-stroke-14)] [&_svg:not([class*='size-'])]:size-[14px]",
25
25
  "icon-sm": "size-7 rounded-[6px] [--icon-stroke-width:var(--icon-stroke-15)] [&_svg:not([class*='size-'])]:size-[15px]",
26
26
  "icon-md": "size-8 rounded-[8px] [--icon-stroke-width:var(--icon-stroke-15)] [&_svg:not([class*='size-'])]:size-[15px]",
27
- "icon-lg": "size-9 rounded-[8px] [--icon-stroke-width:var(--icon-stroke-18)] [&_svg:not([class*='size-'])]:size-[18px]",
27
+ "icon-lg": "size-10 rounded-[8px] [--icon-stroke-width:var(--icon-stroke-18)] [&_svg:not([class*='size-'])]:size-[18px]",
28
28
  "icon-xl": "size-12 rounded-[10px] [--icon-stroke-width:var(--icon-stroke-24)] [&_svg:not([class*='size-'])]:size-6"
29
29
  }
30
30
  },
31
31
  defaultVariants: {
32
32
  variant: "primary",
33
- size: "md"
33
+ size: "xl"
34
34
  }
35
35
  });
36
36
  function h({ className: e, ...n }) {
37
37
  return /* @__PURE__ */ a("span", {
38
38
  "data-slot": "button-label",
39
- className: t("inline-flex min-w-0 items-center justify-center pb-px", e),
39
+ className: t("inline-flex min-w-0 items-center justify-center", e),
40
40
  ...n
41
41
  });
42
42
  }
@@ -47,7 +47,7 @@ function g(e) {
47
47
  }
48
48
  return typeof e == "number" ? /* @__PURE__ */ a(h, { children: e }) : e;
49
49
  }
50
- function _({ className: e, variant: i = "primary", size: o = "md", children: s, ...c }) {
50
+ function _({ className: e, variant: i = "primary", size: o = "xl", children: s, ...c }) {
51
51
  let l = m({
52
52
  variant: i,
53
53
  size: o
@@ -84,7 +84,7 @@ function d({ className: n, day: a, modifiers: o, locale: s, ...c }) {
84
84
  "data-range-start": o.range_start,
85
85
  "data-range-end": o.range_end,
86
86
  "data-range-middle": o.range_middle,
87
- className: e("relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70", u.day, n),
87
+ className: e("relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs", u.day, n),
88
88
  ...c
89
89
  });
90
90
  }
@@ -6,7 +6,7 @@ function n({ className: n, size: r = "default", ...i }) {
6
6
  return /* @__PURE__ */ t("div", {
7
7
  "data-slot": "card",
8
8
  "data-size": r,
9
- className: e("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl border border-border bg-card py-(--card-spacing) text-sm text-card-foreground [--card-spacing:--spacing(5)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", n),
9
+ className: e("group/card type-body flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl border border-border bg-card py-(--card-spacing) text-card-foreground [--card-spacing:19px] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:14px] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", n),
10
10
  ...i
11
11
  });
12
12
  }
@@ -20,14 +20,14 @@ function r({ className: n, ...r }) {
20
20
  function i({ className: n, ...r }) {
21
21
  return /* @__PURE__ */ t("div", {
22
22
  "data-slot": "card-title",
23
- className: e("type-content font-heading font-medium group-data-[size=sm]/card:text-sm", n),
23
+ className: e("type-section-title font-heading group-data-[size=sm]/card:text-sm", n),
24
24
  ...r
25
25
  });
26
26
  }
27
27
  function a({ className: n, ...r }) {
28
28
  return /* @__PURE__ */ t("div", {
29
29
  "data-slot": "card-description",
30
- className: e("text-sm text-muted-foreground", n),
30
+ className: e("type-body text-muted-foreground", n),
31
31
  ...r
32
32
  });
33
33
  }
@@ -10,11 +10,11 @@ var a = n("w-full min-w-0 rounded-md border border-input bg-background text-fore
10
10
  sm: `${e.sm} pb-px file:h-6 file:text-sm`,
11
11
  md: `${e.md} pb-px file:h-6 file:text-sm`,
12
12
  lg: `${e.lg} pb-px file:h-7 file:text-base`,
13
- xl: `${e.xl} pb-px file:h-8 file:text-base`
13
+ xl: `${e.xl} file:h-8 file:text-base`
14
14
  } },
15
- defaultVariants: { size: "md" }
15
+ defaultVariants: { size: "xl" }
16
16
  });
17
- function o({ className: e, type: n, controlSize: o = "md", ...s }) {
17
+ function o({ className: e, type: n, controlSize: o = "xl", ...s }) {
18
18
  let c = a({ size: o });
19
19
  return /* @__PURE__ */ r(i, {
20
20
  type: n,
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.d.ts","sourceRoot":"","sources":["../../../src/components/input-group/input-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE5E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG1C,QAAA,MAAM,kBAAkB;;8EAgBvB,CAAA;AAED,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAChD,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAIzC,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,IAAW,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,qBAcxE;AAED,QAAA,MAAM,uBAAuB;;8EAmB5B,CAAA;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,KAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,qBAgB5E;AAED,QAAA,MAAM,wBAAwB;;8EAgB7B,CAAA;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,IAAe,EACf,OAAoB,EACpB,IAAW,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GAC3D,YAAY,CAAC,OAAO,wBAAwB,CAAC,GAAG;IAC9C,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;CACrC,qBAUF;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAU5E;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,WAAW,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,EAAE,aAAa,CAAC,GAAG;IAC3D,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,qBAcA;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,qBAWlC;AAED,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,CAAA"}
1
+ {"version":3,"file":"input-group.d.ts","sourceRoot":"","sources":["../../../src/components/input-group/input-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE5E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG1C,QAAA,MAAM,kBAAkB;;8EAgBvB,CAAA;AAED,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAChD,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAIzC,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,IAAW,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,qBAcxE;AAED,QAAA,MAAM,uBAAuB;;8EAmB5B,CAAA;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,KAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,qBAgB5E;AAED,QAAA,MAAM,wBAAwB;;8EAgB7B,CAAA;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,IAAe,EACf,OAAoB,EACpB,IAAW,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GAC3D,YAAY,CAAC,OAAO,wBAAwB,CAAC,GAAG;IAC9C,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;CACrC,qBAWF;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAU5E;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,WAAW,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,EAAE,aAAa,CAAC,GAAG;IAC3D,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,qBAcA;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,qBAWlC;AAED,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,CAAA"}
@@ -15,10 +15,10 @@ var c = o("group/input-group relative flex w-full min-w-0 items-center rounded-m
15
15
  lg: `${e.lg} px-0 [--input-group-icon-size:18px] [--icon-stroke-width:var(--icon-stroke-18)]`,
16
16
  xl: `${e.xl} px-0 [--input-group-icon-size:24px] [--icon-stroke-width:var(--icon-stroke-24)]`
17
17
  } },
18
- defaultVariants: { size: "md" }
19
- }), l = a.createContext("md");
20
- function u({ className: e, size: n = "md", ...r }) {
21
- let i = n ?? "md";
18
+ defaultVariants: { size: "xl" }
19
+ }), l = a.createContext("xl");
20
+ function u({ className: e, size: n = "xl", ...r }) {
21
+ let i = n ?? "xl";
22
22
  return /* @__PURE__ */ s(l.Provider, {
23
23
  value: i,
24
24
  children: /* @__PURE__ */ s("div", {
@@ -64,6 +64,7 @@ function m({ className: e, type: r = "button", variant: i = "tertiary", size: a
64
64
  return /* @__PURE__ */ s(n, {
65
65
  type: r,
66
66
  "data-size": a,
67
+ size: a === "sm" ? "md" : a === "icon-sm" ? "icon-md" : a,
67
68
  variant: i,
68
69
  className: t(p({ size: a }), e),
69
70
  ...o
@@ -30,7 +30,7 @@ var c = n("group/item flex w-full flex-wrap items-center rounded-lg border text-
30
30
  muted: "border-transparent bg-muted/50"
31
31
  },
32
32
  size: {
33
- default: "gap-2.5 px-3 py-2.5",
33
+ default: "gap-3 px-3.5 py-3.5",
34
34
  sm: "gap-2.5 px-3 py-2.5",
35
35
  xs: "gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0"
36
36
  }
@@ -85,14 +85,14 @@ function f({ className: t, ...n }) {
85
85
  function p({ className: t, ...n }) {
86
86
  return /* @__PURE__ */ r("div", {
87
87
  "data-slot": "item-title",
88
- className: e("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4", t),
88
+ className: e("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-semibold underline-offset-4", t),
89
89
  ...n
90
90
  });
91
91
  }
92
92
  function m({ className: t, ...n }) {
93
93
  return /* @__PURE__ */ r("p", {
94
94
  "data-slot": "item-description",
95
- className: e("line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", t),
95
+ className: e("line-clamp-2 text-left text-xs leading-[1.4] font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", t),
96
96
  ...n
97
97
  });
98
98
  }
@@ -4,7 +4,7 @@ import "react";
4
4
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
5
  import { IconChevronDown as i } from "@tabler/icons-react";
6
6
  //#region src/components/native-select/native-select.tsx
7
- function a({ className: a, size: o = "md", "aria-label": s = "Select an option", ...c }) {
7
+ function a({ className: a, size: o = "xl", "aria-label": s = "Select an option", ...c }) {
8
8
  return /* @__PURE__ */ r("div", {
9
9
  className: t("group/native-select relative w-fit", a),
10
10
  "data-slot": "native-select-wrapper",
@@ -13,7 +13,7 @@ function a({ className: a, size: o = "md", "aria-label": s = "Select an option",
13
13
  "aria-label": s,
14
14
  "data-slot": "native-select",
15
15
  "data-size": o,
16
- className: t("w-full min-w-0 appearance-none border border-input bg-background pt-[calc(var(--sohne-control-optical-offset)+var(--sohne-control-optical-offset))] text-foreground transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground hover:border-foreground/15 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-border-subtle disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-surface-subtle disabled:text-foreground-tertiary aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive/60 dark:aria-invalid:ring-destructive/20", e[o], o === "xs" && "pr-7", (o === "sm" || o === "md") && "pr-8", o === "lg" && "pr-9", o === "xl" && "pr-10"),
16
+ className: t("w-full min-w-0 appearance-none border border-input bg-background pt-[calc(var(--control-optical-offset,var(--sohne-control-optical-offset))+var(--control-optical-offset,var(--sohne-control-optical-offset)))] text-foreground transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground hover:border-foreground/15 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-border-subtle disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-surface-subtle disabled:text-foreground-tertiary aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive/60 dark:aria-invalid:ring-destructive/20", e[o], o === "xs" && "pr-7", (o === "sm" || o === "md") && "pr-8", o === "lg" && "pr-9", o === "xl" && "pr-10"),
17
17
  ...c
18
18
  }), /* @__PURE__ */ n(i, {
19
19
  className: t("pointer-events-none absolute top-1/2 -translate-y-1/2 text-muted-foreground select-none", o === "xs" && "icon-optical-14 right-1.5", (o === "sm" || o === "md") && "icon-optical-15 right-2", o === "lg" && "icon-optical-18 right-[13px]", o === "xl" && "icon-optical-24 right-[18px]"),
@@ -16,11 +16,11 @@ function l({ className: e, ...r }) {
16
16
  function u({ className: e, ...r }) {
17
17
  return /* @__PURE__ */ n(s.Value, {
18
18
  "data-slot": "select-value",
19
- className: t("flex flex-1 translate-y-[var(--sohne-control-optical-offset)] text-left", e),
19
+ className: t("flex flex-1 translate-y-[var(--control-optical-offset,var(--sohne-control-optical-offset))] text-left", e),
20
20
  ...r
21
21
  });
22
22
  }
23
- function d({ className: i, size: o = "md", children: c, "aria-label": l = "Select an option", ...u }) {
23
+ function d({ className: i, size: o = "xl", children: c, "aria-label": l = "Select an option", ...u }) {
24
24
  return /* @__PURE__ */ r(s.Trigger, {
25
25
  "aria-label": l,
26
26
  "data-slot": "select-trigger",
@@ -314,7 +314,7 @@ function G({ className: t, ...n }) {
314
314
  var K = h("type-body peer/menu-button group/menu-button flex w-full items-center overflow-hidden text-left ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:shrink-0 [&>span:last-child]:truncate", {
315
315
  variants: {
316
316
  variant: {
317
- default: "bg-transparent text-foreground hover:bg-muted hover:text-foreground active:bg-muted active:text-foreground data-open:hover:bg-muted data-open:hover:text-foreground data-active:bg-navigation-selected data-active:font-medium data-active:text-foreground data-active:hover:bg-navigation-selected",
317
+ default: "bg-transparent text-foreground hover:bg-muted hover:text-foreground active:bg-muted active:text-foreground data-open:hover:bg-muted data-open:hover:text-foreground data-active:bg-navigation-selected data-active:text-foreground data-active:hover:bg-navigation-selected",
318
318
  outline: "bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"
319
319
  },
320
320
  size: {
@@ -5,7 +5,7 @@ import { jsx as t } from "react/jsx-runtime";
5
5
  function n({ className: n, ...r }) {
6
6
  return /* @__PURE__ */ t("textarea", {
7
7
  "data-slot": "textarea",
8
- className: e("type-content flex field-sizing-content min-h-[92px] w-full rounded-md border border-input bg-background px-3.5 pt-[9px] pb-[11px] text-foreground transition-colors outline-none placeholder:text-foreground-tertiary hover:border-foreground/15 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-border-subtle disabled:cursor-not-allowed disabled:bg-surface-subtle disabled:text-foreground-tertiary aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive/60 dark:aria-invalid:ring-destructive/20", n),
8
+ className: e("type-content flex field-sizing-content min-h-[92px] w-full rounded-md border border-input bg-background px-[13px] py-3 text-foreground transition-colors outline-none placeholder:text-foreground-tertiary hover:border-foreground/15 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-border-subtle disabled:cursor-not-allowed disabled:bg-surface-subtle disabled:text-foreground-tertiary aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive/60 dark:aria-invalid:ring-destructive/20", n),
9
9
  ...r
10
10
  });
11
11
  }
@@ -2,8 +2,8 @@ export declare const controlSizeClassNames: {
2
2
  readonly xs: "h-6 rounded-[6px] px-1.5 text-[13px] leading-[14px] tracking-[0.01em] [--control-padding-inline:0.375rem]";
3
3
  readonly sm: "h-7 rounded-[6px] px-2 text-sm leading-5 tracking-[0.01em] [--control-padding-inline:0.5rem]";
4
4
  readonly md: "h-8 rounded-[8px] px-[11px] text-sm leading-[15px] tracking-[0.01em] [--control-padding-inline:11px]";
5
- readonly lg: "h-9 rounded-[8px] px-[13px] text-base leading-[15px] [--control-padding-inline:13px]";
6
- readonly xl: "h-12 rounded-[10px] px-[18px] text-base leading-5 [--control-padding-inline:18px]";
5
+ readonly lg: "h-10 rounded-[8px] px-[13px] text-base leading-[15px] [--control-padding-inline:13px]";
6
+ readonly xl: "h-12 rounded-md px-4 text-base leading-5 [--control-padding-inline:1rem]";
7
7
  };
8
8
  export type ControlSize = keyof typeof controlSizeClassNames;
9
9
  //# sourceMappingURL=control-size.d.ts.map
@@ -3,8 +3,8 @@ var e = {
3
3
  xs: "h-6 rounded-[6px] px-1.5 text-[13px] leading-[14px] tracking-[0.01em] [--control-padding-inline:0.375rem]",
4
4
  sm: "h-7 rounded-[6px] px-2 text-sm leading-5 tracking-[0.01em] [--control-padding-inline:0.5rem]",
5
5
  md: "h-8 rounded-[8px] px-[11px] text-sm leading-[15px] tracking-[0.01em] [--control-padding-inline:11px]",
6
- lg: "h-9 rounded-[8px] px-[13px] text-base leading-[15px] [--control-padding-inline:13px]",
7
- xl: "h-12 rounded-[10px] px-[18px] text-base leading-5 [--control-padding-inline:18px]"
6
+ lg: "h-10 rounded-[8px] px-[13px] text-base leading-[15px] [--control-padding-inline:13px]",
7
+ xl: "h-12 rounded-md px-4 text-base leading-5 [--control-padding-inline:1rem]"
8
8
  };
9
9
  //#endregion
10
10
  export { e as controlSizeClassNames };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almanaclabs/blaze-ui",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Shared React components and design tokens for Blaze",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -44,7 +44,8 @@
44
44
  "tailwindcss": ">=4.3.0 <5"
45
45
  },
46
46
  "dependencies": {
47
- "@fontsource-variable/inter": "5.3.0",
47
+ "@fontsource-variable/dm-sans": "5.3.0",
48
+ "@fontsource-variable/fraunces": "5.3.0",
48
49
  "@tabler/icons-react": "3.31.0",
49
50
  "@tanstack/react-table": "8.21.3",
50
51
  "class-variance-authority": "0.7.1",
@@ -11,6 +11,7 @@ and advance through a gated sequence.
11
11
  - One controlled contextual rail for switching among sibling work items.
12
12
  - A single scrollable canvas for the selected item's domain content.
13
13
  - Back, secondary, status, and primary actions in a persistent workflow footer.
14
+ - Large Back and primary actions in a tighter persistent footer.
14
15
  - Responsive behavior that moves the rail above the canvas on smaller screens.
15
16
  - Semantic Blaze UI colors, spacing, focus treatment, and public components.
16
17
  - Divider-separated `GuidedWorkflowSection` blocks for task questions that share
@@ -402,14 +402,14 @@ export function GuidedWorkflowFooter({
402
402
  return (
403
403
  <footer
404
404
  className={cn(
405
- 'flex flex-wrap items-center justify-between gap-3 border-t bg-background px-4 py-3 md:px-6',
406
- variant === 'compact' ? 'min-h-[88px]' : 'min-h-16',
405
+ 'flex flex-wrap items-center justify-between gap-3 border-t bg-background px-4 py-2 md:px-6',
406
+ variant === 'compact' ? 'min-h-[72px]' : 'min-h-16',
407
407
  className,
408
408
  )}
409
409
  >
410
410
  <div className="flex min-w-0 items-center gap-3">
411
411
  {onBack ? (
412
- <Button type="button" variant="secondary" size="md" onClick={onBack}>
412
+ <Button type="button" variant="secondary" size="lg" onClick={onBack}>
413
413
  {backLabel}
414
414
  </Button>
415
415
  ) : null}
@@ -423,7 +423,7 @@ export function GuidedWorkflowFooter({
423
423
  {secondaryActions}
424
424
  <Button
425
425
  type="button"
426
- size="md"
426
+ size="lg"
427
427
  disabled={continueDisabled}
428
428
  onClick={onContinue}
429
429
  >
@@ -12,8 +12,8 @@ own navigation, workflow header, canvas, and actions through slots.
12
12
  canvas scrolling, while the optional shell footer stays pinned.
13
13
 
14
14
  Both modes preserve the same account sidebar, outer workspace gutter, rounded
15
- workspace frame, and 56px channel header. A focused workflow is content inside the
16
- workspace shell, not a second application shell.
15
+ workspace frame, and 44px channel header with a bottom divider. A focused workflow
16
+ is content inside the workspace shell, not a second application shell.
17
17
 
18
18
  ## Preserve
19
19
 
@@ -582,7 +582,7 @@ export function WorkspaceShellRecipe({
582
582
  aria-label={channelTitle}
583
583
  className="flex min-h-0 flex-1 flex-col overflow-hidden border bg-background md:rounded-[10px]"
584
584
  >
585
- <header className="flex h-14 shrink-0 items-center gap-1 px-4 md:px-5">
585
+ <header className="flex h-11 shrink-0 items-center gap-1 border-b px-4 md:px-5">
586
586
  <WorkspaceFrameSidebarTrigger />
587
587
  <div className="flex min-w-0 items-center gap-2">
588
588
  {channelMark}
@@ -1,28 +1,6 @@
1
1
  @import 'tw-animate-css';
2
-
3
- @font-face {
4
- font-family: 'Sohne';
5
- font-style: normal;
6
- font-display: swap;
7
- font-weight: 400;
8
- src: url('./fonts/Sohne-Book.woff2') format('woff2');
9
- }
10
-
11
- @font-face {
12
- font-family: 'Sohne';
13
- font-style: normal;
14
- font-display: swap;
15
- font-weight: 500;
16
- src: url('./fonts/Sohne-Medium.woff2') format('woff2');
17
- }
18
-
19
- @font-face {
20
- font-family: 'Sohne';
21
- font-style: normal;
22
- font-display: swap;
23
- font-weight: 600;
24
- src: url('./fonts/Sohne-Semi.woff2') format('woff2');
25
- }
2
+ @import '@fontsource-variable/dm-sans/standard.css';
3
+ @import '@fontsource-variable/fraunces/standard.css';
26
4
 
27
5
  @custom-variant dark (&:is(.dark *));
28
6
 
@@ -46,7 +24,14 @@
46
24
  }
47
25
 
48
26
  --font-heading: var(--font-sans);
49
- --font-sans: 'Sohne', -apple-system, BlinkMacSystemFont, sans-serif;
27
+ --font-sans: 'DM Sans Variable', system-ui, sans-serif;
28
+ --font-accent: 'Fraunces Variable', Georgia, serif;
29
+ --color-canvas: var(--canvas);
30
+ --color-brand-surface: var(--brand-surface);
31
+ --color-brand-surface-foreground: var(--brand-surface-foreground);
32
+ --color-success-soft: var(--success-soft);
33
+ --color-warning-soft: var(--warning-soft);
34
+ --color-destructive-soft: var(--destructive-soft);
50
35
  --color-sidebar-ring: var(--sidebar-ring);
51
36
  --color-sidebar-border: var(--sidebar-border);
52
37
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
@@ -66,6 +51,9 @@
66
51
  --color-destructive: var(--destructive);
67
52
  --color-success: var(--success);
68
53
  --color-warning: var(--warning);
54
+ --color-warning-foreground: var(--warning-foreground);
55
+ --color-brand-accent: var(--brand-accent);
56
+ --color-link: var(--link);
69
57
  --color-info: var(--info);
70
58
  --color-foreground-secondary: var(--foreground-secondary);
71
59
  --color-foreground-tertiary: var(--foreground-tertiary);
@@ -87,36 +75,37 @@
87
75
  --color-card: var(--card);
88
76
  --color-foreground: var(--foreground);
89
77
  --color-background: var(--background);
90
- --radius-sm: 0.375rem;
91
- --radius-md: 0.5rem;
78
+ --radius-sm: 0.75rem;
79
+ --radius-md: 0.8125rem;
92
80
  --radius-lg: var(--radius);
93
- --radius-xl: 0.75rem;
94
- --radius-2xl: 0.875rem;
95
- --radius-3xl: 1rem;
96
- --radius-4xl: 1.25rem;
81
+ --radius-xl: 1.125rem;
82
+ --radius-2xl: 1.375rem;
83
+ --radius-3xl: 2rem;
84
+ --radius-4xl: 9999px;
97
85
  }
98
86
 
99
87
  :root {
100
- --type-page-title-size: 1.5rem;
101
- --type-page-title-line-height: 1.1;
102
- --type-page-title-letter-spacing: -0.0125rem;
103
- --type-section-title-size: 1.375rem;
104
- --type-section-title-line-height: 1.2727;
88
+ --type-page-title-size: 1.75rem;
89
+ --type-page-title-line-height: 1.14;
90
+ --type-page-title-letter-spacing: -0.035em;
91
+ --type-section-title-size: 1.0625rem;
92
+ --type-section-title-line-height: 1.3;
105
93
  --type-section-title-letter-spacing: 0;
94
+ --type-accent-title-size: 1.5625rem;
95
+ --type-accent-title-line-height: 1.12;
106
96
  --type-content-size: 1rem;
107
97
  --type-content-line-height: 1.4;
108
- --type-content-letter-spacing: 0.02em;
98
+ --type-content-letter-spacing: 0;
109
99
  --type-label-size: 0.875rem;
110
- --type-label-line-height: 1.4286;
111
- --type-label-letter-spacing: 0.02em;
112
- --type-body-size: 0.875rem;
113
- --type-body-line-height: 1.5;
114
- --type-body-letter-spacing: 0.02em;
100
+ --type-label-line-height: 1.3;
101
+ --type-label-letter-spacing: 0;
102
+ --type-body-size: 0.9375rem;
103
+ --type-body-line-height: 1.45;
104
+ --type-body-letter-spacing: 0;
115
105
  --type-meta-size: 0.75rem;
116
- --type-meta-line-height: 1.5;
117
- --type-meta-letter-spacing: 0.02em;
118
- /* Positive values move editable/selectable values down from line-box center. */
119
- --sohne-control-optical-offset: 0.0625rem;
106
+ --type-meta-line-height: 1.4;
107
+ --type-meta-letter-spacing: 0;
108
+ --sohne-control-optical-offset: 0;
120
109
  /*
121
110
  * These are rendered CSS-pixel widths, not Tabler view-box units. Shape-level
122
111
  * non-scaling strokes keep them stable as icons resize. The scale uses only
@@ -132,90 +121,110 @@
132
121
  --icon-stroke-20: 1.5px;
133
122
  --icon-stroke-24: 1.5px;
134
123
  --icon-stroke-32: 1.5px;
135
- --background: #fff;
136
- --foreground: rgb(0 0 0 / 90%);
137
- --foreground-secondary: rgb(0 0 0 / 60%);
138
- --foreground-tertiary: rgb(0 0 0 / 56%);
124
+ --canvas: #f2ede5;
125
+ --background: #fffaf0;
126
+ --foreground: #251613;
127
+ --foreground-secondary: #74635d;
128
+ --foreground-tertiary: #74635d;
139
129
  --card: #fff;
140
- --card-foreground: rgb(0 0 0 / 90%);
130
+ --card-foreground: #251613;
141
131
  --popover: #fff;
142
- --popover-foreground: rgb(0 0 0 / 90%);
143
- --primary: rgb(0 0 0 / 90%);
144
- --primary-foreground: #fff;
145
- --secondary: rgb(0 0 0 / 3%);
146
- --secondary-foreground: rgb(0 0 0 / 90%);
147
- --muted: rgb(0 0 0 / 3%);
148
- --muted-foreground: rgb(0 0 0 / 60%);
149
- --accent: rgb(0 0 0 / 5%);
150
- --accent-foreground: rgb(0 0 0 / 90%);
151
- --surface-subtle: rgb(0 0 0 / 2%);
152
- --surface-muted: rgb(0 0 0 / 3%);
153
- --navigation-selected: rgb(0 0 0 / 8%);
154
- --destructive: #ad0006;
155
- --success: #005f45;
156
- --warning: #896900;
132
+ --popover-foreground: #251613;
133
+ --brand-accent: #ef4f40;
134
+ --primary: #c83c31;
135
+ --primary-hover: #b83e34;
136
+ --primary-foreground: #fff8e7;
137
+ --link: #c83c31;
138
+ --secondary: #f7eee3;
139
+ --secondary-foreground: #251613;
140
+ --muted: #f7eee3;
141
+ --muted-foreground: #74635d;
142
+ --accent: #f7eee3;
143
+ --accent-foreground: #251613;
144
+ --surface-subtle: #fff8e7;
145
+ --surface-muted: #f7eee3;
146
+ --navigation-selected: #f7eee3;
147
+ --brand-surface: #5a170f;
148
+ --brand-surface-foreground: #fff8e7;
149
+ --destructive: #b83e34;
150
+ --destructive-soft: #fae4e1;
151
+ --success: #2b704b;
152
+ --success-soft: #e4f2e8;
153
+ --warning: #9d651b;
154
+ --warning-foreground: #916017;
155
+ --warning-soft: #fbedd3;
157
156
  --info: #2b6595;
158
- --border: rgb(0 0 0 / 8%);
159
- --border-subtle: rgb(0 0 0 / 5%);
160
- --input: rgb(0 0 0 / 8%);
161
- --ring: rgb(0 0 0 / 40%);
157
+ --border: #e6d9cc;
158
+ --border-subtle: #e6d9cc;
159
+ --input: #e6d9cc;
160
+ --ring: #5a170f;
162
161
  --chart-1: oklch(0.87 0 0);
163
162
  --chart-2: oklch(0.556 0 0);
164
163
  --chart-3: oklch(0.439 0 0);
165
164
  --chart-4: oklch(0.371 0 0);
166
165
  --chart-5: oklch(0.269 0 0);
167
- --radius: 0.625rem;
168
- --sidebar: #f5f5f5;
169
- --sidebar-foreground: oklch(0.145 0 0);
170
- --sidebar-primary: oklch(0.205 0 0);
171
- --sidebar-primary-foreground: oklch(0.985 0 0);
166
+ --radius: 0.875rem;
167
+ --sidebar: #fffaf0;
168
+ --sidebar-foreground: #251613;
169
+ --sidebar-primary: #c83c31;
170
+ --sidebar-primary-foreground: #fff8e7;
172
171
  --sidebar-accent: var(--navigation-selected);
173
- --sidebar-accent-foreground: oklch(0.205 0 0);
174
- --sidebar-border: oklch(0.922 0 0);
175
- --sidebar-ring: oklch(0.708 0 0);
172
+ --sidebar-accent-foreground: #251613;
173
+ --sidebar-border: #e6d9cc;
174
+ --sidebar-ring: #5a170f;
176
175
  }
177
176
 
178
177
  .dark {
179
- --background: oklch(0.145 0 0);
180
- --foreground: rgb(255 255 255 / 90%);
181
- --foreground-secondary: rgb(255 255 255 / 60%);
182
- --foreground-tertiary: rgb(255 255 255 / 56%);
183
- --card: oklch(0.205 0 0);
184
- --card-foreground: rgb(255 255 255 / 90%);
185
- --popover: oklch(0.205 0 0);
186
- --popover-foreground: rgb(255 255 255 / 90%);
187
- --primary: rgb(255 255 255 / 90%);
188
- --primary-foreground: oklch(0.205 0 0);
189
- --secondary: rgb(255 255 255 / 6%);
190
- --secondary-foreground: rgb(255 255 255 / 90%);
191
- --muted: rgb(255 255 255 / 6%);
192
- --muted-foreground: rgb(255 255 255 / 60%);
193
- --accent: rgb(255 255 255 / 8%);
194
- --accent-foreground: rgb(255 255 255 / 90%);
195
- --surface-subtle: rgb(255 255 255 / 4%);
196
- --surface-muted: rgb(255 255 255 / 6%);
197
- --navigation-selected: rgb(255 255 255 / 10%);
198
- --destructive: oklch(0.704 0.191 22.216);
199
- --success: #65c9a6;
200
- --warning: #e5c559;
178
+ --canvas: #1a100e;
179
+ --background: #251613;
180
+ --foreground: #fffaf0;
181
+ --foreground-secondary: #d7c5b9;
182
+ --foreground-tertiary: #bba79a;
183
+ --card: #39241f;
184
+ --card-foreground: #fffaf0;
185
+ --popover: #39241f;
186
+ --popover-foreground: #fffaf0;
187
+ --brand-accent: #ef4f40;
188
+ --primary: #c83c31;
189
+ --primary-hover: #b83e34;
190
+ --primary-foreground: #fff8e7;
191
+ --link: #ef857b;
192
+ --secondary: #49312a;
193
+ --secondary-foreground: #fffaf0;
194
+ --muted: #49312a;
195
+ --muted-foreground: #d7c5b9;
196
+ --accent: #49312a;
197
+ --accent-foreground: #fffaf0;
198
+ --surface-subtle: #30201b;
199
+ --surface-muted: #49312a;
200
+ --navigation-selected: #49312a;
201
+ --brand-surface: #5a170f;
202
+ --brand-surface-foreground: #fff8e7;
203
+ --destructive: #ef857b;
204
+ --destructive-soft: #572a27;
205
+ --success: #86cda4;
206
+ --success-soft: #244a34;
207
+ --warning: #e9c270;
208
+ --warning-foreground: #e9c270;
209
+ --warning-soft: #59401e;
201
210
  --info: #7bb5e3;
202
- --border: rgb(255 255 255 / 12%);
203
- --border-subtle: rgb(255 255 255 / 8%);
204
- --input: rgb(255 255 255 / 12%);
205
- --ring: rgb(255 255 255 / 45%);
211
+ --border: #66483e;
212
+ --border-subtle: #49312a;
213
+ --input: #66483e;
214
+ --ring: #ef857b;
206
215
  --chart-1: oklch(0.87 0 0);
207
216
  --chart-2: oklch(0.556 0 0);
208
217
  --chart-3: oklch(0.439 0 0);
209
218
  --chart-4: oklch(0.371 0 0);
210
219
  --chart-5: oklch(0.269 0 0);
211
- --sidebar: oklch(0.205 0 0);
212
- --sidebar-foreground: oklch(0.985 0 0);
213
- --sidebar-primary: oklch(0.488 0.243 264.376);
214
- --sidebar-primary-foreground: oklch(0.985 0 0);
215
- --sidebar-accent: oklch(0.269 0 0);
216
- --sidebar-accent-foreground: oklch(0.985 0 0);
217
- --sidebar-border: oklch(1 0 0 / 10%);
218
- --sidebar-ring: oklch(0.556 0 0);
220
+ --sidebar: #30201b;
221
+ --sidebar-foreground: #fffaf0;
222
+ --sidebar-primary: #c83c31;
223
+ --sidebar-primary-foreground: #fff8e7;
224
+ --sidebar-accent: #49312a;
225
+ --sidebar-accent-foreground: #fffaf0;
226
+ --sidebar-border: #66483e;
227
+ --sidebar-ring: #ef857b;
219
228
  }
220
229
 
221
230
  @layer base {
@@ -230,9 +239,8 @@
230
239
  background-color: var(--background);
231
240
  color: var(--foreground);
232
241
  font-family: var(--font-sans);
233
- font-size: var(--type-body-size);
234
- line-height: var(--type-body-line-height);
235
- letter-spacing: var(--type-body-letter-spacing);
242
+ font-size: 1rem;
243
+ line-height: 1.5;
236
244
  }
237
245
 
238
246
  button:not(:disabled):not([aria-disabled='true']),
@@ -243,15 +251,26 @@
243
251
 
244
252
  @layer utilities {
245
253
  .type-page-title {
254
+ font-family: var(--font-heading);
246
255
  font-size: var(--type-page-title-size);
247
256
  line-height: var(--type-page-title-line-height);
248
257
  letter-spacing: var(--type-page-title-letter-spacing);
258
+ font-weight: 600;
249
259
  }
250
260
 
251
261
  .type-section-title {
262
+ font-family: var(--font-heading);
252
263
  font-size: var(--type-section-title-size);
253
264
  line-height: var(--type-section-title-line-height);
254
265
  letter-spacing: var(--type-section-title-letter-spacing);
266
+ font-weight: 600;
267
+ }
268
+
269
+ .type-accent-title {
270
+ font-family: var(--font-accent);
271
+ font-size: var(--type-accent-title-size);
272
+ line-height: var(--type-accent-title-line-height);
273
+ font-weight: 700;
255
274
  }
256
275
 
257
276
  .type-body-lg {
@@ -270,6 +289,7 @@
270
289
  font-size: var(--type-label-size);
271
290
  line-height: var(--type-label-line-height);
272
291
  letter-spacing: var(--type-label-letter-spacing);
292
+ font-weight: 600;
273
293
  }
274
294
 
275
295
  .type-body {
Binary file
Binary file
Binary file