@lilydesignsystem/themes 0.1.0 → 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 (46) hide show
  1. package/dist/abyss.css +366 -6
  2. package/dist/acid.css +366 -6
  3. package/dist/adobe-spectrum.css +366 -6
  4. package/dist/aqua.css +366 -6
  5. package/dist/autumn.css +366 -6
  6. package/dist/black.css +366 -6
  7. package/dist/bumblebee.css +366 -6
  8. package/dist/business.css +366 -6
  9. package/dist/caramellatte.css +366 -6
  10. package/dist/cmyk.css +366 -6
  11. package/dist/coffee.css +366 -6
  12. package/dist/corporate.css +366 -6
  13. package/dist/cupcake.css +366 -6
  14. package/dist/cyberpunk.css +366 -6
  15. package/dist/dark.css +366 -6
  16. package/dist/dim.css +366 -6
  17. package/dist/dracula.css +366 -6
  18. package/dist/emerald.css +366 -6
  19. package/dist/fantasy.css +366 -6
  20. package/dist/forest.css +366 -6
  21. package/dist/garden.css +366 -6
  22. package/dist/halloween.css +366 -6
  23. package/dist/lemonade.css +366 -6
  24. package/dist/light.css +366 -6
  25. package/dist/lofi.css +366 -6
  26. package/dist/luxury.css +366 -6
  27. package/dist/mozilla-protocol.css +366 -6
  28. package/dist/night.css +366 -6
  29. package/dist/nord.css +366 -6
  30. package/dist/pastel.css +366 -6
  31. package/dist/retro.css +366 -6
  32. package/dist/silk.css +366 -6
  33. package/dist/sunset.css +366 -6
  34. package/dist/synthwave.css +366 -6
  35. package/dist/united-kingdom-government-digital-service.css +366 -6
  36. package/dist/united-kingdom-national-health-service-england-for-patients.css +366 -6
  37. package/dist/united-kingdom-national-health-service-england-for-practitioners.css +366 -6
  38. package/dist/united-kingdom-national-health-service-scotland-for-patients.css +366 -6
  39. package/dist/united-kingdom-national-health-service-scotland-for-practitioners.css +366 -6
  40. package/dist/united-kingdom-national-health-service-wales-for-patients.css +366 -6
  41. package/dist/united-kingdom-national-health-service-wales-for-practitioners.css +366 -6
  42. package/dist/united-states-web-design-system.css +366 -6
  43. package/dist/valentine.css +366 -6
  44. package/dist/winter.css +366 -6
  45. package/dist/wireframe.css +366 -6
  46. package/package.json +1 -1
package/dist/black.css CHANGED
@@ -155,6 +155,14 @@
155
155
  /* Primary body-copy colour. Maps to the theme's high-contrast
156
156
  reading colour. */
157
157
  --lily-text: var(--color-base-content);
158
+ /* Error text: the theme's error colour pulled toward the theme's own reading colour (`--color-base-content`, not `--lily-text`, which a host page may override) so it
159
+ keeps WCAG contrast as text on the page and on the error-tinted
160
+ callout surface (`--color-error` itself is a fill colour). */
161
+ --lily-error-text: color-mix(
162
+ in oklch,
163
+ var(--color-error) 22%,
164
+ var(--color-base-content)
165
+ );
158
166
  /* Muted / secondary text — mixed 70% with transparent to keep the
159
167
  hue but lower contrast for captions, helptext, placeholders. */
160
168
  --lily-text-muted: color-mix(
@@ -894,7 +902,7 @@
894
902
  }
895
903
  :where(.dont-list-item)::marker {
896
904
  content: "✗ ";
897
- color: var(--color-error);
905
+ color: var(--lily-error-text);
898
906
  }
899
907
 
900
908
  /* --- Tree --------------------------------------------------------------- */
@@ -976,7 +984,7 @@
976
984
  color: var(--color-success);
977
985
  }
978
986
  :where(.validation-list-item[data-status="failed"]) {
979
- color: var(--color-error);
987
+ color: var(--lily-error-text);
980
988
  }
981
989
  :where(.validation-list-item[data-status="pending"]) {
982
990
  color: var(--lily-text-muted);
@@ -1334,7 +1342,7 @@
1334
1342
 
1335
1343
  /* Error message — inline form-validation message. */
1336
1344
  :where(.error-message) {
1337
- color: var(--color-error);
1345
+ color: var(--lily-error-text);
1338
1346
  font-weight: 600;
1339
1347
  }
1340
1348
  /* Error summary — heavyweight 4px border (GOV.UK pattern) so users
@@ -2069,6 +2077,7 @@
2069
2077
  .theme-picker,
2070
2078
  .locale-picker,
2071
2079
  .text-size-picker,
2080
+ .search-picker,
2072
2081
  .share-picker,
2073
2082
  .date-time-picker
2074
2083
  ) {
@@ -2080,6 +2089,7 @@
2080
2089
  .theme-picker-button,
2081
2090
  .locale-picker-button,
2082
2091
  .text-size-picker-button,
2092
+ .search-picker-button,
2083
2093
  .share-picker-button,
2084
2094
  .date-time-picker-button
2085
2095
  ) {
@@ -2115,7 +2125,8 @@
2115
2125
  .locale-picker-icon,
2116
2126
  .text-size-picker-icon,
2117
2127
  .motion-picker-icon,
2118
- .share-picker-icon
2128
+ .share-picker-icon,
2129
+ .search-picker-icon
2119
2130
  ) {
2120
2131
  display: inline-flex;
2121
2132
  align-items: center;
@@ -2194,11 +2205,359 @@
2194
2205
  line-height: 0;
2195
2206
  }
2196
2207
 
2208
+ /* Components added 2026-10-05: kbd-shortcut, show-more, thinking,
2209
+ empty-state, file-tree, one-time-password-input, multi-select, and
2210
+ the four calendar views. The calendar views reuse the
2211
+ calendar-table-* sub-element hooks, so they only need the table
2212
+ root rule. show-more's clamp is keyed on data-expanded (the
2213
+ component never sets an inline style); file-tree hides a closed
2214
+ folder's group via aria-expanded. */
2215
+ :where(.calendar-year-table, .calendar-month-table, .calendar-week-table, .calendar-day-table) {
2216
+ width: 100%;
2217
+ border-collapse: collapse;
2218
+ }
2219
+
2220
+ :where(.kbd-shortcut) {
2221
+ display: inline-flex;
2222
+ align-items: center;
2223
+ gap: var(--lily-space-xs);
2224
+ }
2225
+
2226
+ :where(.kbd-shortcut-key) {
2227
+ display: inline-block;
2228
+ padding: 0.125rem 0.4rem;
2229
+ font-family: var(--lily-font-mono);
2230
+ font-size: 0.85em;
2231
+ background-color: var(--lily-surface-alt);
2232
+ border: var(--border) solid var(--lily-border-strong);
2233
+ border-bottom-width: 2px;
2234
+ border-radius: var(--lily-radius-sm);
2235
+ }
2236
+
2237
+ :where(.show-more-content[data-expanded="false"]) {
2238
+ max-height: 6em;
2239
+ overflow: hidden;
2240
+ }
2241
+
2242
+ :where(.show-more-button) {
2243
+ margin-block-start: var(--lily-space-xs);
2244
+ padding: var(--lily-space-xs);
2245
+ font: inherit;
2246
+ color: inherit;
2247
+ text-decoration: underline;
2248
+ background: none;
2249
+ border: 0;
2250
+ cursor: pointer;
2251
+ }
2252
+
2253
+ :where(.thinking) {
2254
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2255
+ color: var(--lily-text-muted);
2256
+ border: var(--border) solid var(--lily-border-strong);
2257
+ border-radius: var(--lily-radius-md);
2258
+ }
2259
+
2260
+ :where(.thinking-summary) {
2261
+ cursor: pointer;
2262
+ }
2263
+
2264
+ :where(.thinking[data-streaming] .thinking-summary) {
2265
+ font-style: italic;
2266
+ }
2267
+
2268
+ :where(.empty-state) {
2269
+ padding: var(--lily-space-lg);
2270
+ text-align: center;
2271
+ color: var(--lily-text-muted);
2272
+ }
2273
+
2274
+ :where(.file-tree, .file-tree [role="group"]) {
2275
+ margin: 0;
2276
+ padding-inline-start: 0;
2277
+ list-style: none;
2278
+ }
2279
+
2280
+ :where(.file-tree [role="group"]) {
2281
+ padding-inline-start: var(--lily-space-md);
2282
+ }
2283
+
2284
+ :where(.file-tree [role="treeitem"]) {
2285
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2286
+ cursor: pointer;
2287
+ }
2288
+
2289
+ :where(.file-tree [role="treeitem"][aria-expanded="false"] > [role="group"]) {
2290
+ display: none;
2291
+ }
2292
+
2293
+ :where(.file-tree [role="treeitem"]:focus-visible) {
2294
+ outline: var(--lily-focus-ring);
2295
+ outline-offset: -2px;
2296
+ }
2297
+
2298
+ :where(.one-time-password-input, .multi-select, .multi-select-with-extras select) {
2299
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2300
+ font: inherit;
2301
+ color: var(--lily-text);
2302
+ background-color: var(--lily-surface);
2303
+ border: var(--border) solid var(--lily-border-strong);
2304
+ border-radius: var(--lily-radius-sm);
2305
+ }
2306
+
2307
+ :where(.one-time-password-input) {
2308
+ font-family: var(--lily-font-mono);
2309
+ letter-spacing: 0.25em;
2310
+ }
2311
+
2312
+ /* Chart containers added 2026-10-05 (gauge, heatmap, radar, sankey, pie,
2313
+ ring, funnel, candlestick, composed, choropleth, sunburst) join the
2314
+ existing five as block figures. Every chart's optional data-table
2315
+ wrapper sits below the graphic; the table itself inherits the
2316
+ catalog's table styling. */
2317
+ :where(
2318
+ .gauge-chart,
2319
+ .heatmap-chart,
2320
+ .radar-chart,
2321
+ .sankey-chart,
2322
+ .pie-chart,
2323
+ .ring-chart,
2324
+ .funnel-chart,
2325
+ .candlestick-chart,
2326
+ .composed-chart,
2327
+ .choropleth-chart,
2328
+ .sunburst-chart
2329
+ ) {
2330
+ display: block;
2331
+ margin: 0;
2332
+ }
2333
+
2334
+ :where(
2335
+ .area-chart-data-table,
2336
+ .bar-chart-data-table,
2337
+ .column-chart-data-table,
2338
+ .line-chart-data-table,
2339
+ .scatter-chart-data-table,
2340
+ .gauge-chart-data-table,
2341
+ .heatmap-chart-data-table,
2342
+ .radar-chart-data-table,
2343
+ .sankey-chart-data-table,
2344
+ .pie-chart-data-table,
2345
+ .ring-chart-data-table,
2346
+ .funnel-chart-data-table,
2347
+ .candlestick-chart-data-table,
2348
+ .composed-chart-data-table,
2349
+ .choropleth-chart-data-table,
2350
+ .sunburst-chart-data-table
2351
+ ) {
2352
+ margin-block-start: var(--lily-space-sm);
2353
+ overflow-x: auto;
2354
+ }
2355
+
2356
+ /* tool-call (2026-10-05): a bordered disclosure; the status word sits next
2357
+ to the name in the summary and is never the only cue. [data-status] is
2358
+ the consumer hook for a spinner or icon. */
2359
+ :where(.tool-call) {
2360
+ border: var(--border) solid var(--lily-border-strong);
2361
+ border-radius: var(--lily-radius-md);
2362
+ background-color: var(--lily-surface);
2363
+ color: var(--lily-text);
2364
+ }
2365
+
2366
+ :where(.tool-call-summary) {
2367
+ display: flex;
2368
+ align-items: center;
2369
+ gap: var(--lily-space-sm);
2370
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2371
+ cursor: pointer;
2372
+ }
2373
+
2374
+ :where(.tool-call-content) {
2375
+ display: grid;
2376
+ gap: var(--lily-space-xs);
2377
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2378
+ border-block-start: var(--border) solid var(--lily-border-strong);
2379
+ }
2380
+
2381
+ :where(.tool-call-name) {
2382
+ font-family: var(--lily-font-mono);
2383
+ }
2384
+
2385
+ :where(.tool-call-status) {
2386
+ color: var(--lily-text-muted);
2387
+ }
2388
+
2389
+ :where(.tool-call-input pre, .tool-call-output pre) {
2390
+ margin: 0;
2391
+ overflow-x: auto;
2392
+ font-family: var(--lily-font-mono);
2393
+ }
2394
+
2395
+ :where(.tool-call-error) {
2396
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2397
+ border: var(--border) solid var(--lily-border-strong);
2398
+ border-radius: var(--lily-radius-sm);
2399
+ font-weight: 600;
2400
+ }
2401
+
2402
+ /* mark (2026-10-05): the native <mark> highlight. The UA default is a
2403
+ fixed yellow; this uses the theme's own surface and text tokens so the
2404
+ pair keeps its contrast in every theme (including dark ones). */
2405
+ :where(.mark) {
2406
+ padding-inline: 0.15em;
2407
+ color: var(--lily-text);
2408
+ background-color: var(--lily-surface-alt);
2409
+ border-radius: var(--lily-radius-sm);
2410
+ box-shadow: 0 0 0 1px var(--lily-border-strong);
2411
+ }
2412
+
2413
+ /* chat-composer (2026-10-05): one row, textarea growing, one button. The
2414
+ button's visible word is its accessible name — hide it visually, never
2415
+ with display:none, if you replace it with an icon. */
2416
+ :where(.chat-composer) {
2417
+ display: flex;
2418
+ align-items: flex-end;
2419
+ gap: var(--lily-space-xs);
2420
+ }
2421
+
2422
+ :where(.chat-composer-input) {
2423
+ flex: 1;
2424
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2425
+ font: inherit;
2426
+ color: var(--lily-text);
2427
+ background-color: var(--lily-surface);
2428
+ border: var(--border) solid var(--lily-border-strong);
2429
+ border-radius: var(--lily-radius-md);
2430
+ resize: none;
2431
+ }
2432
+
2433
+ :where(.chat-composer-button) {
2434
+ min-width: 2.5rem;
2435
+ min-height: 2.5rem;
2436
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2437
+ font: inherit;
2438
+ color: var(--lily-text);
2439
+ background-color: var(--lily-surface);
2440
+ border: var(--border) solid var(--lily-border-strong);
2441
+ border-radius: var(--lily-radius-md);
2442
+ cursor: pointer;
2443
+ }
2444
+
2445
+ :where(.chat-composer-button:disabled) {
2446
+ cursor: not-allowed;
2447
+ opacity: 0.6;
2448
+ }
2449
+
2450
+ /* Picker tooltips (added 2026-10-04): a visual-only role="tooltip"
2451
+ element beside each picker's icon button, holding the same text as
2452
+ its aria-label. The component toggles [hidden]; position and look
2453
+ are here. It sits just below the button, in the inverse of the
2454
+ page colours so it never disappears into the surface. A ::before
2455
+ strip bridges the gap to the button so the pointer can travel onto
2456
+ the tooltip without it closing (WCAG 1.4.13, hoverable). */
2457
+ :where(.motion-picker) {
2458
+ position: relative;
2459
+ display: inline-block;
2460
+ }
2461
+
2462
+ :where(
2463
+ .theme-picker-tooltip,
2464
+ .locale-picker-tooltip,
2465
+ .text-size-picker-tooltip,
2466
+ .motion-picker-tooltip,
2467
+ .share-picker-tooltip,
2468
+ .search-picker-tooltip,
2469
+ .date-time-picker-tooltip
2470
+ ) {
2471
+ position: absolute;
2472
+ z-index: 11;
2473
+ inset-inline-start: 0;
2474
+ inset-block-start: 100%;
2475
+ margin-block-start: var(--lily-space-xs);
2476
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2477
+ font-size: 0.875em;
2478
+ line-height: 1.3;
2479
+ white-space: nowrap;
2480
+ color: var(--lily-surface);
2481
+ background-color: var(--lily-text);
2482
+ border-radius: var(--lily-radius-sm);
2483
+ box-shadow: var(--lily-shadow-md);
2484
+ }
2485
+
2486
+ :where(
2487
+ .theme-picker-tooltip,
2488
+ .locale-picker-tooltip,
2489
+ .text-size-picker-tooltip,
2490
+ .motion-picker-tooltip,
2491
+ .share-picker-tooltip,
2492
+ .search-picker-tooltip,
2493
+ .date-time-picker-tooltip
2494
+ )::before {
2495
+ content: "";
2496
+ position: absolute;
2497
+ inset-inline: 0;
2498
+ inset-block-end: 100%;
2499
+ height: var(--lily-space-xs);
2500
+ }
2501
+
2502
+ :where(
2503
+ .theme-picker-tooltip,
2504
+ .locale-picker-tooltip,
2505
+ .text-size-picker-tooltip,
2506
+ .motion-picker-tooltip,
2507
+ .share-picker-tooltip,
2508
+ .search-picker-tooltip,
2509
+ .date-time-picker-tooltip
2510
+ )[hidden] {
2511
+ display: none;
2512
+ }
2513
+
2514
+ /* search-picker's panel holds a search form rather than a list: the
2515
+ field and the ⏎ submit button sit in one row, the button at the
2516
+ field's inline end (right in LTR, left under dir="rtl"). The ⏎
2517
+ button matches the picker trigger buttons' size and border. */
2518
+ :where(.search-picker-form) {
2519
+ display: flex;
2520
+ align-items: stretch;
2521
+ gap: var(--lily-space-xs);
2522
+ margin: 0;
2523
+ }
2524
+
2525
+ :where(.search-picker-input) {
2526
+ min-width: 14rem;
2527
+ padding: var(--lily-space-xs) var(--lily-space-sm);
2528
+ font: inherit;
2529
+ color: var(--lily-text);
2530
+ background-color: var(--lily-surface);
2531
+ border: var(--border) solid var(--lily-border-strong);
2532
+ border-radius: var(--lily-radius-sm);
2533
+ }
2534
+
2535
+ :where(.search-picker-submit) {
2536
+ display: inline-flex;
2537
+ align-items: center;
2538
+ justify-content: center;
2539
+ min-width: 2.5rem;
2540
+ min-height: 2.5rem;
2541
+ padding: var(--lily-space-xs);
2542
+ font: inherit;
2543
+ line-height: 1;
2544
+ color: var(--lily-text);
2545
+ background-color: var(--lily-surface);
2546
+ border: var(--border) solid var(--lily-border-strong);
2547
+ border-radius: var(--lily-radius-md);
2548
+ cursor: pointer;
2549
+ }
2550
+
2551
+ :where(.search-picker-submit:hover) {
2552
+ background-color: var(--lily-surface-alt);
2553
+ }
2554
+
2197
2555
  :where(
2198
2556
  .theme-picker-list,
2199
2557
  .locale-picker-list,
2200
2558
  .text-size-picker-list,
2201
- .share-picker-list
2559
+ .share-picker-list,
2560
+ .search-picker-panel
2202
2561
  ) {
2203
2562
  position: absolute;
2204
2563
  z-index: 10;
@@ -2222,7 +2581,8 @@
2222
2581
  .theme-picker-list,
2223
2582
  .locale-picker-list,
2224
2583
  .text-size-picker-list,
2225
- .share-picker-list
2584
+ .share-picker-list,
2585
+ .search-picker-panel
2226
2586
  )[hidden] {
2227
2587
  display: none;
2228
2588
  }