@treeseed/core 0.8.7 → 0.8.9

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 (73) hide show
  1. package/dist/components/content/ContentStatusLegend.astro +4 -4
  2. package/dist/components/docs/BookFontControls.astro +9 -9
  3. package/dist/components/docs/DesktopSidebarToggle.astro +8 -8
  4. package/dist/components/docs/Footer.astro +6 -6
  5. package/dist/components/docs/PageTitle.astro +1 -1
  6. package/dist/components/docs/ThemeSelect.astro +3 -1
  7. package/dist/components/forms/ContactForm.astro +21 -21
  8. package/dist/components/forms/FooterSubscribeForm.astro +9 -9
  9. package/dist/components/site/BookList.astro +7 -7
  10. package/dist/components/site/CTASection.astro +4 -4
  11. package/dist/components/site/ChronicleList.astro +6 -6
  12. package/dist/components/site/Hero.astro +3 -3
  13. package/dist/components/site/PathCard.astro +5 -5
  14. package/dist/components/site/ProfileList.astro +5 -5
  15. package/dist/components/site/RouteNotFound.astro +5 -5
  16. package/dist/components/site/SectionIntro.astro +3 -3
  17. package/dist/components/site/StageBanner.astro +2 -2
  18. package/dist/components/site/TrustCallout.astro +3 -3
  19. package/dist/components/ui/data/ActionList.astro +51 -0
  20. package/dist/components/ui/data/Badge.astro +19 -0
  21. package/dist/components/ui/data/DataTable.astro +51 -0
  22. package/dist/components/ui/data/KeyValueList.astro +28 -0
  23. package/dist/components/ui/data/MetricCard.astro +25 -0
  24. package/dist/components/ui/data/MetricGrid.astro +27 -0
  25. package/dist/components/ui/data/StatusPill.astro +20 -0
  26. package/dist/components/ui/forms/Button.astro +52 -0
  27. package/dist/components/ui/forms/Field.astro +39 -0
  28. package/dist/components/ui/forms/FormActions.astro +12 -0
  29. package/dist/components/ui/forms/PasswordMeter.astro +80 -0
  30. package/dist/components/ui/forms/RadioGroup.astro +55 -0
  31. package/dist/components/ui/forms/Select.astro +44 -0
  32. package/dist/components/ui/forms/TextInput.astro +58 -0
  33. package/dist/components/ui/forms/Textarea.astro +45 -0
  34. package/dist/components/ui/layout/PageHeader.astro +45 -0
  35. package/dist/components/ui/shell/AppShell.astro +110 -0
  36. package/dist/components/ui/shell/BottomNav.astro +35 -0
  37. package/dist/components/ui/shell/ProjectHeader.astro +66 -0
  38. package/dist/components/ui/shell/PublicShell.astro +108 -0
  39. package/dist/components/ui/shell/RailNav.astro +35 -0
  40. package/dist/components/ui/shell/TopBar.astro +52 -0
  41. package/dist/components/ui/surface/Card.astro +46 -0
  42. package/dist/components/ui/surface/EmptyState.astro +45 -0
  43. package/dist/components/ui/surface/Panel.astro +54 -0
  44. package/dist/components/ui/theme/ThemeMenu.astro +32 -0
  45. package/dist/components/ui/theme/ThemePreviewSwatch.astro +18 -0
  46. package/dist/components/ui/theme/ThemeScript.astro +105 -0
  47. package/dist/components/ui/theme/ThemeSelector.astro +202 -0
  48. package/dist/components/ui/types.js +0 -0
  49. package/dist/dev.js +14 -2
  50. package/dist/layouts/AuthoredEntryLayout.astro +27 -27
  51. package/dist/layouts/BookLayout.astro +10 -10
  52. package/dist/layouts/ContentLayout.astro +4 -4
  53. package/dist/layouts/MainLayout.astro +27 -25
  54. package/dist/layouts/NoteLayout.astro +6 -6
  55. package/dist/layouts/ProfileLayout.astro +17 -17
  56. package/dist/pages/404.astro +6 -6
  57. package/dist/pages/contact.astro +4 -4
  58. package/dist/pages/docs-runtime/[...slug].astro +12 -12
  59. package/dist/pages/docs-runtime/index.astro +13 -13
  60. package/dist/pages/index.astro +28 -28
  61. package/dist/pages/ui/index.astro +216 -0
  62. package/dist/site.js +3 -2
  63. package/dist/styles/app-shell.css +398 -0
  64. package/dist/styles/forms.css +258 -0
  65. package/dist/styles/global.css +119 -119
  66. package/dist/styles/prose.css +11 -11
  67. package/dist/styles/theme.css +177 -0
  68. package/dist/styles/tokens.css +62 -22
  69. package/dist/styles/ui.css +551 -0
  70. package/dist/utils/content-status.js +5 -5
  71. package/dist/utils/site-config.js +2 -2
  72. package/dist/utils/theme.js +352 -40
  73. package/package.json +35 -2
@@ -0,0 +1,258 @@
1
+ .ts-field {
2
+ display: grid;
3
+ gap: var(--ts-space-2);
4
+ min-width: 0;
5
+ }
6
+
7
+ .ts-field--full {
8
+ grid-column: 1 / -1;
9
+ }
10
+
11
+ .ts-field__label,
12
+ .ts-radio-group__legend {
13
+ color: var(--ts-color-text);
14
+ font-size: 0.875rem;
15
+ font-weight: 700;
16
+ line-height: 1.35;
17
+ }
18
+
19
+ .ts-field__required {
20
+ color: var(--ts-color-danger-text);
21
+ margin-left: 0.25rem;
22
+ }
23
+
24
+ .ts-field__control {
25
+ min-width: 0;
26
+ }
27
+
28
+ .ts-field__help,
29
+ .ts-field__error {
30
+ font-size: 0.8125rem;
31
+ line-height: 1.45;
32
+ margin: 0;
33
+ }
34
+
35
+ .ts-field__help {
36
+ color: var(--ts-color-text-muted);
37
+ }
38
+
39
+ .ts-field__error {
40
+ color: var(--ts-color-danger-text);
41
+ font-weight: 650;
42
+ }
43
+
44
+ .ts-control {
45
+ appearance: none;
46
+ background: var(--ts-color-surface);
47
+ border: 1px solid var(--ts-color-border);
48
+ border-radius: var(--ts-radius-md);
49
+ color: var(--ts-color-text);
50
+ font: inherit;
51
+ font-size: 0.95rem;
52
+ line-height: 1.4;
53
+ min-height: 2.25rem;
54
+ padding: 0.45rem 0.65rem;
55
+ transition:
56
+ background-color 140ms ease,
57
+ border-color 140ms ease,
58
+ box-shadow 140ms ease;
59
+ width: 100%;
60
+ }
61
+
62
+ .ts-control::placeholder {
63
+ color: var(--ts-color-text-subtle);
64
+ }
65
+
66
+ .ts-control:focus {
67
+ border-color: var(--ts-color-focus);
68
+ box-shadow: 0 0 0 3px var(--ts-color-accent-soft);
69
+ outline: none;
70
+ }
71
+
72
+ .ts-control:disabled,
73
+ .ts-control:read-only {
74
+ background: var(--ts-color-surface-muted);
75
+ color: var(--ts-color-text-muted);
76
+ }
77
+
78
+ .ts-control--select {
79
+ background-image:
80
+ linear-gradient(45deg, transparent 50%, currentColor 50%),
81
+ linear-gradient(135deg, currentColor 50%, transparent 50%);
82
+ background-position:
83
+ calc(100% - 1rem) 50%,
84
+ calc(100% - 0.7rem) 50%;
85
+ background-size:
86
+ 0.32rem 0.32rem,
87
+ 0.32rem 0.32rem;
88
+ background-repeat: no-repeat;
89
+ padding-right: 2rem;
90
+ }
91
+
92
+ .ts-control--textarea {
93
+ min-height: 7rem;
94
+ resize: vertical;
95
+ }
96
+
97
+ .ts-radio-group {
98
+ border: 0;
99
+ display: grid;
100
+ gap: var(--ts-space-3);
101
+ margin: 0;
102
+ min-inline-size: 0;
103
+ padding: 0;
104
+ }
105
+
106
+ .ts-radio-group__options {
107
+ display: grid;
108
+ gap: var(--ts-space-2);
109
+ }
110
+
111
+ .ts-radio-option {
112
+ align-items: flex-start;
113
+ background: var(--ts-color-surface);
114
+ border: 1px solid var(--ts-color-border);
115
+ border-radius: var(--ts-radius-md);
116
+ color: var(--ts-color-text);
117
+ cursor: pointer;
118
+ display: flex;
119
+ gap: var(--ts-space-2);
120
+ padding: var(--ts-space-2);
121
+ }
122
+
123
+ .ts-radio-option:hover {
124
+ background: var(--ts-color-surface-raised);
125
+ border-color: var(--ts-color-border-strong);
126
+ }
127
+
128
+ .ts-radio-option input {
129
+ accent-color: var(--ts-color-accent);
130
+ margin-top: 0.15rem;
131
+ }
132
+
133
+ .ts-radio-option:has(input:checked) {
134
+ background: var(--ts-color-accent-soft);
135
+ border-color: var(--ts-color-accent);
136
+ }
137
+
138
+ .ts-radio-option:has(input:focus-visible) {
139
+ outline: 3px solid var(--ts-color-focus);
140
+ outline-offset: 2px;
141
+ }
142
+
143
+ .ts-radio-option[data-disabled='true'] {
144
+ cursor: not-allowed;
145
+ opacity: 0.58;
146
+ }
147
+
148
+ .ts-radio-option__body {
149
+ display: grid;
150
+ gap: 0.25rem;
151
+ }
152
+
153
+ .ts-radio-option__label {
154
+ font-weight: 700;
155
+ }
156
+
157
+ .ts-radio-option__help {
158
+ color: var(--ts-color-text-muted);
159
+ font-size: 0.8125rem;
160
+ line-height: 1.45;
161
+ }
162
+
163
+ .ts-form-actions {
164
+ display: flex;
165
+ flex-wrap: wrap;
166
+ gap: var(--ts-space-2);
167
+ }
168
+
169
+ .ts-form-actions--start {
170
+ justify-content: flex-start;
171
+ }
172
+
173
+ .ts-form-actions--end {
174
+ justify-content: flex-end;
175
+ }
176
+
177
+ .ts-form-actions--between {
178
+ justify-content: space-between;
179
+ }
180
+
181
+ .ts-password-meter {
182
+ display: grid;
183
+ gap: var(--ts-space-2);
184
+ }
185
+
186
+ .ts-password-meter__header {
187
+ align-items: center;
188
+ color: var(--ts-color-text-muted);
189
+ display: flex;
190
+ font-size: 0.8125rem;
191
+ font-weight: 650;
192
+ justify-content: space-between;
193
+ }
194
+
195
+ .ts-password-meter__track {
196
+ background: var(--ts-color-surface-muted);
197
+ border-radius: 999px;
198
+ height: 0.5rem;
199
+ overflow: hidden;
200
+ }
201
+
202
+ .ts-password-meter__bar {
203
+ background: var(--ts-color-danger);
204
+ border-radius: inherit;
205
+ display: block;
206
+ height: 100%;
207
+ transform-origin: left;
208
+ transition:
209
+ background-color 140ms ease,
210
+ width 140ms ease;
211
+ width: calc((var(--ts-password-strength, 0) / 4) * 100%);
212
+ }
213
+
214
+ .ts-password-meter[data-strength='2'] .ts-password-meter__bar {
215
+ background: var(--ts-color-warning);
216
+ }
217
+
218
+ .ts-password-meter[data-strength='3'] .ts-password-meter__bar {
219
+ background: var(--ts-color-info);
220
+ }
221
+
222
+ .ts-password-meter[data-strength='4'] .ts-password-meter__bar {
223
+ background: var(--ts-color-success);
224
+ }
225
+
226
+ .ts-password-meter__rules {
227
+ color: var(--ts-color-text-muted);
228
+ display: grid;
229
+ font-size: 0.8125rem;
230
+ gap: 0.25rem;
231
+ line-height: 1.45;
232
+ list-style: none;
233
+ margin: 0;
234
+ padding: 0;
235
+ }
236
+
237
+ .ts-password-meter__rules li {
238
+ align-items: center;
239
+ display: flex;
240
+ gap: 0.45rem;
241
+ }
242
+
243
+ .ts-password-meter__rules li::before {
244
+ border: 1px solid currentColor;
245
+ border-radius: 999px;
246
+ content: '';
247
+ display: inline-block;
248
+ height: 0.55rem;
249
+ width: 0.55rem;
250
+ }
251
+
252
+ .ts-password-meter__rules li[data-passed='true'] {
253
+ color: var(--ts-color-success-text);
254
+ }
255
+
256
+ .ts-password-meter__rules li[data-passed='true']::before {
257
+ background: currentColor;
258
+ }