| 53 |
52
|
|
The heroicons installation itself is managed by your mix.exs */
|
| 54 |
53
|
|
@plugin "../vendor/heroicons";
|
| 55 |
54
|
|
|
| 56 |
|
- |
/* daisyUI Tailwind Plugin. */
|
| 57 |
|
- |
@plugin "daisyui/packages/bundle/daisyui" {
|
| 58 |
|
- |
themes: false;
|
| 59 |
|
- |
}
|
| 60 |
|
- |
|
| 61 |
|
- |
/* daisyUI theme plugin.
|
| 62 |
|
- |
We ship with two themes, a light one inspired on Phoenix colors and a dark one inspired
|
| 63 |
|
- |
on Elixir colors. Build your own at: https://daisyui.com/theme-generator/ */
|
| 64 |
|
- |
@plugin "daisyui/packages/bundle/daisyui-theme" {
|
| 65 |
|
- |
name: "dark";
|
| 66 |
|
- |
default: true;
|
| 67 |
|
- |
prefersdark: true;
|
| 68 |
|
- |
color-scheme: "dark";
|
| 69 |
|
- |
--color-base-100: #08090a;
|
| 70 |
|
- |
--color-base-200: #0f1011;
|
| 71 |
|
- |
--color-base-300: #1c1c1f;
|
| 72 |
|
- |
--color-base-content: #f7f8f8;
|
| 73 |
|
- |
--color-primary: #5e6ad2;
|
| 74 |
|
- |
--color-primary-content: #f7f8f8;
|
| 75 |
|
- |
--color-secondary: #1f2023;
|
| 76 |
|
- |
--color-secondary-content: #f7f8f8;
|
| 77 |
|
- |
--color-accent: #5e6ad2;
|
| 78 |
|
- |
--color-accent-content: #f7f8f8;
|
| 79 |
|
- |
--color-neutral: #62666d;
|
| 80 |
|
- |
--color-neutral-content: #f7f8f8;
|
| 81 |
|
- |
--color-info: #5e6ad2;
|
| 82 |
|
- |
--color-info-content: #f7f8f8;
|
| 83 |
|
- |
--color-success: #4cb782;
|
| 84 |
|
- |
--color-success-content: #08090a;
|
| 85 |
|
- |
--color-warning: #f2994a;
|
| 86 |
|
- |
--color-warning-content: #08090a;
|
| 87 |
|
- |
--color-error: #eb5757;
|
| 88 |
|
- |
--color-error-content: #f7f8f8;
|
| 89 |
|
- |
--radius-selector: 0.25rem;
|
| 90 |
|
- |
--radius-field: 0.375rem;
|
| 91 |
|
- |
--radius-box: 0.5rem;
|
| 92 |
|
- |
--size-selector: 0.21875rem;
|
| 93 |
|
- |
--size-field: 0.21875rem;
|
| 94 |
|
- |
--border: 1px;
|
| 95 |
|
- |
--depth: 1;
|
| 96 |
|
- |
--noise: 0;
|
| 97 |
|
- |
}
|
| 98 |
|
- |
|
| 99 |
|
- |
@plugin "daisyui/packages/bundle/daisyui-theme" {
|
| 100 |
|
- |
name: "light";
|
| 101 |
|
- |
default: false;
|
| 102 |
|
- |
prefersdark: false;
|
| 103 |
|
- |
color-scheme: "light";
|
| 104 |
|
- |
--color-base-100: oklch(98% 0 0);
|
| 105 |
|
- |
--color-base-200: oklch(96% 0.001 286.375);
|
| 106 |
|
- |
--color-base-300: oklch(92% 0.004 286.32);
|
| 107 |
|
- |
--color-base-content: oklch(21% 0.006 285.885);
|
| 108 |
|
- |
--color-primary: oklch(70% 0.213 47.604);
|
| 109 |
|
- |
--color-primary-content: oklch(98% 0.016 73.684);
|
| 110 |
|
- |
--color-secondary: oklch(55% 0.027 264.364);
|
| 111 |
|
- |
--color-secondary-content: oklch(98% 0.002 247.839);
|
| 112 |
|
- |
--color-accent: oklch(0% 0 0);
|
| 113 |
|
- |
--color-accent-content: oklch(100% 0 0);
|
| 114 |
|
- |
--color-neutral: oklch(44% 0.017 285.786);
|
| 115 |
|
- |
--color-neutral-content: oklch(98% 0 0);
|
| 116 |
|
- |
--color-info: oklch(62% 0.214 259.815);
|
| 117 |
|
- |
--color-info-content: oklch(97% 0.014 254.604);
|
| 118 |
|
- |
--color-success: oklch(70% 0.14 182.503);
|
| 119 |
|
- |
--color-success-content: oklch(98% 0.014 180.72);
|
| 120 |
|
- |
--color-warning: oklch(66% 0.179 58.318);
|
| 121 |
|
- |
--color-warning-content: oklch(98% 0.022 95.277);
|
| 122 |
|
- |
--color-error: oklch(58% 0.253 17.585);
|
| 123 |
|
- |
--color-error-content: oklch(96% 0.015 12.422);
|
| 124 |
|
- |
--radius-selector: 0.25rem;
|
| 125 |
|
- |
--radius-field: 0.25rem;
|
| 126 |
|
- |
--radius-box: 0.5rem;
|
| 127 |
|
- |
--size-selector: 0.21875rem;
|
| 128 |
|
- |
--size-field: 0.21875rem;
|
| 129 |
|
- |
--border: 1.5px;
|
| 130 |
|
- |
--depth: 1;
|
| 131 |
|
- |
--noise: 0;
|
|
55
|
+ |
/* ── Token ladder ───────────────────────────────────────────────────────────
|
|
56
|
+ |
* Ported from Sarah, where these are the two tiers of DESIGN.md "Color
|
|
57
|
+ |
* Tokens": PRIMITIVES are the hand-picked Aiur oklch values; DERIVATIONS are
|
|
58
|
+ |
* color-mix() steps off one ink, so the hover/focus/border grammar is
|
|
59
|
+ |
* systematic rather than accumulated.
|
|
60
|
+ |
*
|
|
61
|
+ |
* sarah.css consumes these but does not define them — it aliases them onto
|
|
62
|
+ |
* the Basecoat names (`--background`, `--card`, `--primary`, `--border`, …)
|
|
63
|
+ |
* in its own `:root`. Before this block existed those aliases resolved to
|
|
64
|
+ |
* nothing and the DaisyUI theme was carrying the palette instead, which is
|
|
65
|
+ |
* exactly the collision that made every SarahUI variant render identically.
|
|
66
|
+ |
*
|
|
67
|
+ |
* The three surfaces are a fixed relationship, not three loose colors: page
|
|
68
|
+ |
* and sidebar sit on the darkest (--ink-void), the working canvas one step up
|
|
69
|
+ |
* (--ink-surface), elevated components another step up (--ink-raised). New
|
|
70
|
+ |
* surfaces take a rung; they do not invent a fourth.
|
|
71
|
+ |
*
|
|
72
|
+ |
* The palette is dark-only, as Sarah's is (`color-scheme: dark`). The
|
|
73
|
+ |
* `data-theme` plumbing in root.html.heex still runs, but there is no second
|
|
74
|
+ |
* light palette behind it any more — DaisyUI's was the only one, and Sarah
|
|
75
|
+ |
* ships no light variant to replace it with.
|
|
76
|
+ |
*/
|
|
77
|
+ |
:root {
|
|
78
|
+ |
color-scheme: dark;
|
|
79
|
+ |
|
|
80
|
+ |
/* PRIMITIVES — the Aiur palette, verbatim. */
|
|
81
|
+ |
--ink-void: oklch(12.901% 0.01498 266.378); /* darkest: page, sidebar */
|
|
82
|
+ |
--ink-surface: oklch(18.311% 0.03089 263.383); /* +1: canvas, chrome */
|
|
83
|
+ |
--ink-raised: oklch(24.185% 0.04699 263.85); /* +2: elevated components */
|
|
84
|
+ |
--text-ink: oklch(96.386% 0.01695 267.792); /* the one text/icon/wash ink */
|
|
85
|
+ |
--accent: oklch(62.308% 0.18801 259.815);
|
|
86
|
+ |
--accent-bright: oklch(71.374% 0.14338 254.624);
|
|
87
|
+ |
--info: oklch(75.351% 0.13899 232.661);
|
|
88
|
+ |
--success: oklch(72.275% 0.19201 149.579);
|
|
89
|
+ |
--warning: oklch(76.859% 0.16466 70.08);
|
|
90
|
+ |
--danger: oklch(71.063% 0.16615 22.216);
|
|
91
|
+ |
|
|
92
|
+ |
/* DERIVATIONS — text tiers as alpha steps of the ink. The literals are the
|
|
93
|
+ |
Aiur values; the percentages beside them are the measured best-fit alpha
|
|
94
|
+ |
steps, recorded so a later theme can choose the ladder deliberately. */
|
|
95
|
+ |
--text-primary: color-mix(in oklab, var(--text-ink) 100%, transparent); /* 100% */
|
|
96
|
+ |
--text-body: oklch(90.551% 0.0307 265.325); /* exception; best fit 91% */
|
|
97
|
+ |
--text-muted: oklch(71.613% 0.04926 262.439); /* exception; best fit 65% */
|
|
98
|
+ |
--text-dim: oklch(65.775% 0.04389 274.477); /* exception; best fit 57% */
|
|
99
|
+ |
|
|
100
|
+ |
/* Icon tiers. Glyphs read lighter than text at the same alpha, so they get
|
|
101
|
+ |
their own ladder rather than borrowing the text one. */
|
|
102
|
+ |
--icon-primary: color-mix(in oklab, var(--text-ink) 100%, transparent); /* 100% */
|
|
103
|
+ |
--icon-secondary: color-mix(in oklab, var(--text-ink) 66%, transparent); /* 66% */
|
|
104
|
+ |
--icon-tertiary: color-mix(in oklab, var(--text-ink) 52%, transparent); /* 52% */
|
|
105
|
+ |
--icon-faint: color-mix(in oklab, var(--text-ink) 28%, transparent); /* 28% */
|
|
106
|
+ |
|
|
107
|
+ |
/* Washes — translucent ink laid over whatever surface is beneath, so hover
|
|
108
|
+ |
and selection read as the same gesture on every rung of the surface
|
|
109
|
+ |
ladder. Hover < active < selected < strong. */
|
|
110
|
+ |
--wash-hover: color-mix(in oklab, var(--text-ink) 6%, transparent); /* 6% */
|
|
111
|
+ |
--wash-active: color-mix(in oklab, var(--text-ink) 8%, transparent); /* 8% */
|
|
112
|
+ |
--wash-selected: color-mix(in oklab, var(--text-ink) 10%, transparent); /* 10% */
|
|
113
|
+ |
--wash-strong: color-mix(in oklab, var(--text-ink) 14%, transparent); /* 14% */
|
|
114
|
+ |
|
|
115
|
+ |
/* The hover surface is the wash resolved opaquely over the raised rung. */
|
|
116
|
+ |
--ink-hover: color-mix(in oklab, var(--text-ink) 4%, var(--ink-raised)); /* 4% over raised */
|
|
117
|
+ |
|
|
118
|
+ |
/* The one inverted control: the strongest ink as ground, the darkest rung as
|
|
119
|
+ |
glyph. State changes ride opacity so the fill never shifts hue. */
|
|
120
|
+ |
--control-inverse-bg: var(--text-primary);
|
|
121
|
+ |
--control-inverse-fg: var(--ink-void);
|
|
122
|
+ |
|
|
123
|
+ |
/* Borders. --line and --line-strong are the 12% and 20% rungs by role but
|
|
124
|
+ |
keep their literals (same chroma accounting as the text exceptions); the
|
|
125
|
+ |
soft and faint rungs are true ladder steps. */
|
|
126
|
+ |
--line: oklch(29.154% 0.0506 264.607); /* exception; best fit 11% */
|
|
127
|
+ |
--line-soft: color-mix(in oklab, var(--text-ink) 8%, transparent); /* 8% */
|
|
128
|
+ |
--line-faint: color-mix(in oklab, var(--text-ink) 4%, transparent); /* 4% */
|
|
129
|
+ |
--line-strong: oklch(36.455% 0.0696 264.888); /* exception; best fit 20% */
|
|
130
|
+ |
}
|
|
131
|
+ |
|
|
132
|
+ |
/* Utility namespaces on top of the ladder.
|
|
133
|
+ |
*
|
|
134
|
+ |
* `base-100/200/300` and `base-content` were DaisyUI's surface vocabulary and
|
|
135
|
+ |
* are still spoken by surfaces this change did not restyle (the component
|
|
136
|
+ |
* catalog, the marketing home template, and the sidebar/docs/chat CSS at the
|
|
137
|
+ |
* foot of this file). They are kept as aliases onto the three surface rungs so
|
|
138
|
+ |
* that vocabulary keeps resolving; they are now names for Sarah tokens, not a
|
|
139
|
+ |
* second palette. Prefer Basecoat's own `background` / `card` / `foreground` /
|
|
140
|
+ |
* `border` names in new markup.
|
|
141
|
+ |
*
|
|
142
|
+ |
* The semantic four are Sarah's, not DaisyUI's, and have no Basecoat
|
|
143
|
+ |
* equivalent — `--color-destructive` covers danger, but there is no success,
|
|
144
|
+ |
* warning, or info in the Basecoat base. */
|
|
145
|
+ |
@theme {
|
|
146
|
+ |
--color-base-100: var(--ink-void);
|
|
147
|
+ |
--color-base-200: var(--ink-surface);
|
|
148
|
+ |
--color-base-300: var(--ink-raised);
|
|
149
|
+ |
--color-base-content: var(--text-primary);
|
|
150
|
+ |
|
|
151
|
+ |
--color-success: var(--success);
|
|
152
|
+ |
--color-warning: var(--warning);
|
|
153
|
+ |
--color-info: var(--info);
|
|
154
|
+ |
--color-danger: var(--danger);
|
| 132 |
155
|
|
}
|
| 133 |
156
|
|
|
| 134 |
157
|
|
/* Add variants based on LiveView classes */
|