@ponchia/ui 0.2.1 → 0.3.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.
Files changed (48) hide show
  1. package/README.md +128 -54
  2. package/behaviors/index.d.ts +36 -0
  3. package/behaviors/index.js +321 -7
  4. package/classes/index.d.ts +228 -3
  5. package/classes/index.js +139 -4
  6. package/css/app.css +64 -64
  7. package/css/base.css +136 -24
  8. package/css/content.css +324 -0
  9. package/css/core.css +9 -5
  10. package/css/disclosure.css +323 -0
  11. package/css/dots.css +125 -8
  12. package/css/feedback.css +243 -0
  13. package/css/fonts.css +11 -0
  14. package/css/forms.css +41 -14
  15. package/css/motion.css +29 -5
  16. package/css/navigation.css +22 -86
  17. package/css/overlay.css +206 -0
  18. package/css/primitives.css +37 -18
  19. package/css/site.css +295 -0
  20. package/css/table.css +9 -9
  21. package/css/tokens.css +84 -20
  22. package/dist/bronto.css +1 -0
  23. package/dist/css/app.css +1 -0
  24. package/dist/css/base.css +1 -0
  25. package/dist/css/content.css +1 -0
  26. package/dist/css/disclosure.css +1 -0
  27. package/dist/css/dots.css +1 -0
  28. package/dist/css/feedback.css +1 -0
  29. package/dist/css/fonts.css +1 -0
  30. package/dist/css/forms.css +1 -0
  31. package/dist/css/motion.css +1 -0
  32. package/dist/css/navigation.css +1 -0
  33. package/dist/css/overlay.css +1 -0
  34. package/dist/css/primitives.css +1 -0
  35. package/dist/css/site.css +1 -0
  36. package/dist/css/table.css +1 -0
  37. package/dist/css/tokens.css +1 -0
  38. package/package.json +62 -21
  39. package/shiki/nothing.json +83 -0
  40. package/tokens/index.d.ts +18 -10
  41. package/tokens/index.js +16 -14
  42. package/tokens/index.json +32 -28
  43. package/tokens/tokens.dtcg.json +589 -0
  44. package/css/cards.css +0 -336
  45. package/css/index.css +0 -5
  46. package/css/layout.css +0 -219
  47. package/css/responsive.css +0 -157
  48. package/css/typography.css +0 -139
package/css/cards.css DELETED
@@ -1,336 +0,0 @@
1
- .metric-grid {
2
- display: grid;
3
- gap: 0.9rem;
4
- grid-template-columns: repeat(3, minmax(0, 1fr));
5
- }
6
-
7
- .metric-tile,
8
- .principle-card,
9
- .surface-card,
10
- .archive-note,
11
- .project-card,
12
- .post-card,
13
- .essay-card,
14
- .project-teaser,
15
- .misc-card {
16
- border-radius: var(--radius-lg);
17
- padding: 0.9rem;
18
- }
19
-
20
- .metric-tile,
21
- .principle-card,
22
- .surface-card,
23
- .archive-note,
24
- .project-card,
25
- .post-card,
26
- .essay-card,
27
- .project-teaser,
28
- .misc-card,
29
- .project-pager__link {
30
- transition:
31
- background-color var(--duration-base) var(--ease-standard),
32
- border-color var(--duration-base) var(--ease-standard),
33
- box-shadow var(--duration-base) var(--ease-standard),
34
- transform var(--duration-base) var(--ease-standard);
35
- }
36
-
37
- .metric-tile strong {
38
- display: block;
39
- font-family: var(--display);
40
- font-size: 1.85rem;
41
- letter-spacing: 0;
42
- margin-top: 0.35rem;
43
- }
44
-
45
- .metric-tile p,
46
- .principle-card p,
47
- .surface-card p,
48
- .archive-note p {
49
- margin: 0.55rem 0 0;
50
- }
51
-
52
- .project-card,
53
- .project-teaser,
54
- .misc-card {
55
- display: grid;
56
- gap: 0.9rem;
57
- }
58
-
59
- .notes-strip {
60
- align-items: center;
61
- border-bottom: 1px solid var(--line);
62
- border-top: 1px solid var(--line);
63
- display: grid;
64
- gap: 1.2rem;
65
- grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
66
- padding: 1rem 0;
67
- }
68
-
69
- .notes-strip__copy h2,
70
- .notes-strip__latest h3 {
71
- margin: 0;
72
- }
73
-
74
- .notes-strip__copy p,
75
- .notes-strip__latest p {
76
- margin: 0.45rem 0 0;
77
- }
78
-
79
- .notes-strip__latest {
80
- border-left: 1px solid var(--line);
81
- display: grid;
82
- gap: 0.45rem;
83
- min-width: 0;
84
- padding-left: 1.2rem;
85
- }
86
-
87
- .notes-strip__topline {
88
- align-items: center;
89
- display: flex;
90
- gap: 0.7rem;
91
- justify-content: space-between;
92
- }
93
-
94
- .project-card__header,
95
- .section-head,
96
- .post-card__meta,
97
- .post-header__meta,
98
- .project-teaser__topline,
99
- .project-page__headline,
100
- .misc-card__header {
101
- align-items: flex-start;
102
- display: flex;
103
- gap: 0.7rem;
104
- justify-content: space-between;
105
- }
106
-
107
- .section-head p {
108
- margin: 0;
109
- max-width: 60ch;
110
- }
111
-
112
- .section-head--stacked {
113
- display: grid;
114
- gap: 0.6rem;
115
- }
116
-
117
- .project-card__category {
118
- color: var(--text-dim);
119
- margin-top: 0.15rem;
120
- }
121
-
122
- .project-category-label {
123
- align-items: center;
124
- display: inline-flex;
125
- gap: 0.36rem;
126
- }
127
-
128
- .project-category-label__icon {
129
- display: inline-block;
130
- fill: none;
131
- flex: 0 0 auto;
132
- height: 1em;
133
- stroke: currentColor;
134
- stroke-linecap: round;
135
- stroke-linejoin: round;
136
- stroke-width: 2;
137
- width: 1em;
138
- }
139
-
140
- .project-card__summary,
141
- .project-card__detail,
142
- .project-teaser__summary,
143
- .misc-card__summary,
144
- .post-header__summary {
145
- margin: 0;
146
- }
147
-
148
- .misc-card {
149
- align-content: start;
150
- }
151
-
152
- .misc-card__header h2 {
153
- font-size: 1.45rem;
154
- }
155
-
156
- .misc-card__status {
157
- background: var(--panel-soft);
158
- border: 1px solid var(--line);
159
- border-radius: var(--radius-md);
160
- color: var(--text);
161
- flex: 0 0 auto;
162
- font-size: 0.72rem;
163
- font-weight: 700;
164
- line-height: 1;
165
- padding: 0.45rem 0.62rem;
166
- text-transform: uppercase;
167
- }
168
-
169
- .misc-card__boundary {
170
- border-top: 1px solid var(--line);
171
- display: grid;
172
- gap: 0.35rem;
173
- padding-top: 0.85rem;
174
- }
175
-
176
- .misc-card__boundary p {
177
- margin: 0;
178
- }
179
-
180
- .post-card__meta,
181
- .post-header__meta {
182
- color: var(--text-dim);
183
- flex-wrap: wrap;
184
- font-size: 0.88rem;
185
- }
186
-
187
- .post-card h3 {
188
- font-size: 1.45rem;
189
- margin-top: 0.35rem;
190
- }
191
-
192
- .post-card p {
193
- margin: 0.55rem 0 0;
194
- }
195
-
196
- .contact-stub-card {
197
- max-width: 48rem;
198
- }
199
-
200
- .project-pager {
201
- display: grid;
202
- gap: 1rem;
203
- grid-template-columns: repeat(2, minmax(0, 1fr));
204
- }
205
-
206
- .project-pager--single {
207
- grid-template-columns: minmax(0, 1fr);
208
- justify-items: end;
209
- }
210
-
211
- .project-pager__link {
212
- display: grid;
213
- gap: 0.45rem;
214
- background: var(--panel);
215
- border: 1px solid var(--line);
216
- border-radius: var(--radius-lg);
217
- box-shadow: var(--shadow);
218
- min-height: 6rem;
219
- padding: 1rem 1.05rem;
220
- width: 100%;
221
- }
222
-
223
- .project-pager__link strong {
224
- color: var(--text);
225
- font-size: 1.2rem;
226
- }
227
-
228
- .project-pager__link--next {
229
- text-align: right;
230
- }
231
-
232
- @media (hover: hover) {
233
- .project-card:has(a:hover),
234
- .post-card:has(a:hover),
235
- .essay-card:has(a:hover),
236
- .project-teaser:has(a:hover),
237
- .misc-card:has(a:hover),
238
- .project-pager__link:hover {
239
- border-color: var(--line-strong);
240
- box-shadow: var(--shadow-raised);
241
- transform: translateY(-2px);
242
- }
243
- }
244
-
245
- .project-card:focus-within,
246
- .post-card:focus-within,
247
- .essay-card:focus-within,
248
- .project-teaser:focus-within,
249
- .misc-card:focus-within,
250
- .project-pager__link:focus-visible {
251
- border-color: var(--line-strong);
252
- }
253
-
254
- .tag-list {
255
- display: flex;
256
- flex-wrap: wrap;
257
- gap: 0.5rem;
258
- list-style: none;
259
- margin: 0;
260
- padding: 0;
261
- }
262
-
263
- .tag-list li {
264
- background: var(--panel-soft);
265
- border: 1px solid var(--line);
266
- border-radius: var(--radius-md);
267
- color: var(--text-soft);
268
- font-size: 0.8rem;
269
- padding: 0.32rem 0.62rem;
270
- transition:
271
- background-color var(--duration-fast) var(--ease-standard),
272
- border-color var(--duration-fast) var(--ease-standard),
273
- color var(--duration-fast) var(--ease-standard);
274
- }
275
-
276
- .tag-list--project li {
277
- color: var(--text);
278
- }
279
-
280
- .tag-list--compact {
281
- gap: 0.38rem;
282
- }
283
-
284
- .tag-list--compact li {
285
- font-size: 0.72rem;
286
- padding: 0.25rem 0.5rem;
287
- }
288
-
289
- .tag-list--compact li:first-child {
290
- background: var(--accent-soft);
291
- border-color: color-mix(in srgb, var(--accent) 42%, var(--line));
292
- color: var(--accent);
293
- }
294
-
295
- .focus-list,
296
- .link-list {
297
- display: grid;
298
- gap: 0.75rem;
299
- margin: 0;
300
- padding-left: 1.1rem;
301
- }
302
-
303
- .focus-list--dense {
304
- margin-top: 0.2rem;
305
- }
306
-
307
- .focus-list li,
308
- .link-list li {
309
- color: var(--text-soft);
310
- }
311
-
312
- .profile-link-list {
313
- display: grid;
314
- gap: 0.75rem;
315
- margin: 1rem 0 0;
316
- }
317
-
318
- .profile-link-list div {
319
- border-top: 1px solid var(--line);
320
- display: grid;
321
- gap: 0.25rem;
322
- padding-top: 0.75rem;
323
- }
324
-
325
- .profile-link-list dd {
326
- color: var(--text);
327
- margin: 0;
328
- }
329
-
330
- .profile-link-list a,
331
- .link-list a {
332
- color: var(--text);
333
- text-decoration: underline;
334
- text-decoration-color: color-mix(in srgb, var(--accent) 50%, transparent);
335
- text-underline-offset: 0.22rem;
336
- }
package/css/index.css DELETED
@@ -1,5 +0,0 @@
1
- /* @ponchia/ui — full bundle: core + responsive breakpoint overrides.
2
- responsive.css joins the same `bronto` layer and, being imported last,
3
- wins the within-layer cascade over the base rules it overrides. */
4
- @import url('./core.css');
5
- @import url('./responsive.css') layer(bronto);
package/css/layout.css DELETED
@@ -1,219 +0,0 @@
1
- .site-background {
2
- inset: 0;
3
- overflow: hidden;
4
- pointer-events: none;
5
- position: fixed;
6
- z-index: 0;
7
- }
8
-
9
- .site-background__grid {
10
- position: absolute;
11
- display: none;
12
- }
13
-
14
- .site-shell {
15
- margin: 0 auto;
16
- max-width: 1320px;
17
- padding: 0.9rem;
18
- position: relative;
19
- z-index: 1;
20
- }
21
-
22
- .site-header,
23
- .site-footer,
24
- .hero,
25
- .page-head,
26
- .project-card,
27
- .post-card,
28
- .post-shell,
29
- .focus-panel,
30
- .surface-card,
31
- .essay-card,
32
- .metric-tile,
33
- .principle-card,
34
- .archive-note,
35
- .signal-panel,
36
- .problem-panel,
37
- .callout,
38
- .aside-block,
39
- .quote-block,
40
- .timeline,
41
- .worklog-summary,
42
- .project-teaser,
43
- .misc-card {
44
- background: var(--panel);
45
- border: 1px solid var(--line);
46
- box-shadow: var(--shadow);
47
- }
48
-
49
- .site-header {
50
- align-items: center;
51
- background: var(--panel);
52
- border-radius: var(--radius-lg);
53
- display: flex;
54
- gap: 1rem;
55
- justify-content: space-between;
56
- margin: 0 auto 0.9rem;
57
- padding: 0.55rem 0.65rem;
58
- position: sticky;
59
- top: 0.65rem;
60
- z-index: 10;
61
- }
62
-
63
- .site-header__actions {
64
- align-items: center;
65
- display: flex;
66
- gap: 0.7rem;
67
- }
68
-
69
- .site-mark {
70
- align-items: center;
71
- display: inline-flex;
72
- font-family: var(--display);
73
- font-size: 0.9rem;
74
- gap: 0.35rem;
75
- letter-spacing: 0;
76
- text-transform: uppercase;
77
- }
78
-
79
- .site-mark__primary {
80
- color: var(--text);
81
- }
82
-
83
- .site-main {
84
- display: grid;
85
- gap: 1.35rem;
86
- grid-template-columns: minmax(0, 1fr);
87
- }
88
-
89
- .site-footer {
90
- align-items: center;
91
- border-radius: var(--radius-lg);
92
- display: flex;
93
- gap: 1rem;
94
- justify-content: space-between;
95
- margin-top: 1rem;
96
- padding: 0.85rem 1rem;
97
- }
98
-
99
- .site-footer p {
100
- font-size: 0.9rem;
101
- margin: 0;
102
- }
103
-
104
- .site-footer__copy {
105
- display: grid;
106
- gap: 0.25rem;
107
- }
108
-
109
- .site-footer__links {
110
- display: flex;
111
- flex-wrap: wrap;
112
- gap: 0.7rem;
113
- justify-content: flex-end;
114
- }
115
-
116
- .site-footer__links a {
117
- color: var(--text);
118
- font-size: 0.86rem;
119
- text-decoration: underline;
120
- text-decoration-color: color-mix(in srgb, var(--accent) 42%, transparent);
121
- text-underline-offset: 0.2rem;
122
- transition:
123
- color var(--duration-fast) var(--ease-standard),
124
- text-decoration-color var(--duration-fast) var(--ease-standard);
125
- }
126
-
127
- .site-footer__links a:hover {
128
- color: var(--accent-strong);
129
- text-decoration-color: var(--accent-strong);
130
- }
131
-
132
- .hero,
133
- .page-head,
134
- .post-shell {
135
- border-radius: var(--radius-xl);
136
- max-width: 100%;
137
- overflow: hidden;
138
- padding: 1.35rem;
139
- position: relative;
140
- width: 100%;
141
- }
142
-
143
- .hero {
144
- display: grid;
145
- gap: 1.6rem;
146
- grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.95fr);
147
- }
148
-
149
- .hero::before,
150
- .page-head::before,
151
- .post-shell::before {
152
- display: none;
153
- }
154
-
155
- .hero > *,
156
- .page-head > *,
157
- .post-shell > * {
158
- position: relative;
159
- z-index: 1;
160
- }
161
-
162
- .hero__copy,
163
- .hero__panel,
164
- .panel-stack,
165
- .card-stack,
166
- .home-section,
167
- .page-section {
168
- display: grid;
169
- gap: 1rem;
170
- grid-template-columns: minmax(0, 1fr);
171
- }
172
-
173
- .hero__panel {
174
- align-self: start;
175
- }
176
-
177
- .home-section,
178
- .page-section {
179
- padding-block: 0.2rem;
180
- }
181
-
182
- .profile-grid,
183
- .project-teaser-grid,
184
- .project-detail-grid,
185
- .project-grid,
186
- .home-grid,
187
- .essay-grid,
188
- .principle-grid,
189
- .project-detail-layout,
190
- .misc-grid {
191
- display: grid;
192
- gap: 1rem;
193
- }
194
-
195
- .profile-grid,
196
- .project-detail-grid {
197
- grid-template-columns: repeat(2, minmax(0, 1fr));
198
- }
199
-
200
- .project-detail-layout {
201
- align-items: start;
202
- gap: 1.6rem;
203
- grid-template-columns: minmax(0, 1.35fr) minmax(300px, 0.65fr);
204
- }
205
-
206
- .project-grid,
207
- .project-teaser-grid,
208
- .home-grid,
209
- .essay-grid {
210
- grid-template-columns: repeat(2, minmax(0, 1fr));
211
- }
212
-
213
- .principle-grid {
214
- grid-template-columns: repeat(3, minmax(0, 1fr));
215
- }
216
-
217
- .misc-grid {
218
- grid-template-columns: repeat(3, minmax(0, 1fr));
219
- }
@@ -1,157 +0,0 @@
1
- /* ==========================================================================
2
- responsive — breakpoint overrides
3
- Keyframes and reduced-motion handling now live in motion.css.
4
- ========================================================================== */
5
-
6
- @media (max-width: 1120px) {
7
- .hero,
8
- .profile-grid,
9
- .project-detail-grid,
10
- .project-detail-layout,
11
- .project-artifact {
12
- grid-template-columns: 1fr;
13
- }
14
-
15
- .project-side {
16
- position: static;
17
- }
18
-
19
- .metric-grid,
20
- .principle-grid {
21
- grid-template-columns: repeat(2, minmax(0, 1fr));
22
- }
23
- }
24
-
25
- @media (max-width: 820px) {
26
- .site-shell {
27
- padding: 0.9rem;
28
- }
29
-
30
- .hero,
31
- .page-head,
32
- .post-shell {
33
- padding: 1.25rem;
34
- }
35
-
36
- .site-footer,
37
- .section-head,
38
- .signal-panel__readout,
39
- .project-card__header,
40
- .post-card__meta,
41
- .post-header__meta,
42
- .project-teaser__topline,
43
- .project-page__headline {
44
- align-items: flex-start;
45
- flex-direction: column;
46
- }
47
-
48
- .site-footer__links {
49
- justify-content: flex-start;
50
- }
51
-
52
- .site-nav--desktop {
53
- display: none;
54
- }
55
-
56
- .site-header__actions {
57
- align-items: center;
58
- margin-left: auto;
59
- }
60
-
61
- .site-menu {
62
- display: block;
63
- }
64
-
65
- .site-menu[open] {
66
- min-width: 0;
67
- }
68
-
69
- .site-menu[open] .site-nav--mobile {
70
- display: grid;
71
- }
72
-
73
- .site-nav--mobile {
74
- background: var(--panel-strong);
75
- border: 1px solid var(--line);
76
- border-radius: var(--radius-lg);
77
- box-shadow: var(--shadow-raised);
78
- display: none;
79
- gap: 0.35rem;
80
- margin-top: 0;
81
- padding: 0.6rem;
82
- position: absolute;
83
- right: 0;
84
- top: calc(100% + 0.7rem);
85
- width: min(12rem, calc(100vw - 1.8rem));
86
- z-index: 20;
87
- }
88
-
89
- .site-nav--mobile a {
90
- width: 100%;
91
- }
92
-
93
- .hero--home .problem-panel {
94
- border-left: 0;
95
- border-top: 1px solid var(--line);
96
- padding: 1rem 0 0;
97
- }
98
-
99
- .metric-grid,
100
- .project-grid,
101
- .project-teaser-grid,
102
- .misc-grid,
103
- .home-grid,
104
- .essay-grid,
105
- .principle-grid,
106
- .profile-grid,
107
- .project-detail-grid,
108
- .project-pager {
109
- grid-template-columns: 1fr;
110
- }
111
-
112
- .notes-strip {
113
- grid-template-columns: 1fr;
114
- }
115
-
116
- .notes-strip__latest {
117
- border-left: 0;
118
- border-top: 1px solid var(--line);
119
- padding-left: 0;
120
- padding-top: 1rem;
121
- }
122
-
123
- .hero--home .hero__panel {
124
- display: grid;
125
- }
126
-
127
- .dot-field {
128
- grid-template-columns: repeat(8, minmax(0, 1fr));
129
- }
130
-
131
- h1 {
132
- font-size: 2.65rem;
133
- }
134
-
135
- .page-head h1 {
136
- font-size: 2.25rem;
137
- }
138
-
139
- .page-head h1,
140
- .post-header h1 {
141
- overflow-wrap: anywhere;
142
- }
143
-
144
- h2 {
145
- font-size: 1.9rem;
146
- }
147
- }
148
-
149
- @media (max-width: 460px) {
150
- .theme-toggle__prefix {
151
- display: none;
152
- }
153
-
154
- .theme-toggle__button {
155
- min-width: 4.2rem;
156
- }
157
- }