@lilydesignsystem/themes 0.4.0 → 0.6.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 (59) hide show
  1. package/dist/abyss.css +360 -9
  2. package/dist/acid.css +360 -9
  3. package/dist/adobe-spectrum.css +360 -9
  4. package/dist/ant-design.css +3961 -0
  5. package/dist/aqua.css +360 -9
  6. package/dist/atlassian.css +3961 -0
  7. package/dist/autumn.css +360 -9
  8. package/dist/black.css +360 -9
  9. package/dist/bumblebee.css +360 -9
  10. package/dist/business.css +360 -9
  11. package/dist/cappuccino.css +3961 -0
  12. package/dist/caramellatte.css +360 -9
  13. package/dist/cmyk.css +360 -9
  14. package/dist/coffee.css +360 -9
  15. package/dist/corporate.css +360 -9
  16. package/dist/cupcake.css +360 -9
  17. package/dist/cyberpunk.css +360 -9
  18. package/dist/dark.css +360 -9
  19. package/dist/dim.css +360 -9
  20. package/dist/dracula.css +360 -9
  21. package/dist/emerald.css +360 -9
  22. package/dist/excel.css +3961 -0
  23. package/dist/fantasy.css +360 -9
  24. package/dist/fluent.css +3961 -0
  25. package/dist/forest.css +360 -9
  26. package/dist/garden.css +360 -9
  27. package/dist/github-primer.css +3961 -0
  28. package/dist/halloween.css +360 -9
  29. package/dist/ibm-carbon.css +3961 -0
  30. package/dist/lemonade.css +360 -9
  31. package/dist/light.css +360 -9
  32. package/dist/linear.css +3961 -0
  33. package/dist/lofi.css +360 -9
  34. package/dist/luxury.css +360 -9
  35. package/dist/mozilla-protocol.css +360 -9
  36. package/dist/night.css +360 -9
  37. package/dist/nord.css +360 -9
  38. package/dist/notion.css +3961 -0
  39. package/dist/pastel.css +360 -9
  40. package/dist/retro.css +360 -9
  41. package/dist/salesforce.css +3961 -0
  42. package/dist/sap-fiori.css +3961 -0
  43. package/dist/silk.css +360 -9
  44. package/dist/sunset.css +360 -9
  45. package/dist/synthwave.css +360 -9
  46. package/dist/united-kingdom-government-digital-service.css +360 -9
  47. package/dist/united-kingdom-national-health-service-england-for-patients.css +360 -9
  48. package/dist/united-kingdom-national-health-service-england-for-practitioners.css +360 -9
  49. package/dist/united-kingdom-national-health-service-scotland-for-patients.css +360 -9
  50. package/dist/united-kingdom-national-health-service-scotland-for-practitioners.css +360 -9
  51. package/dist/united-kingdom-national-health-service-wales-for-patients.css +362 -11
  52. package/dist/united-kingdom-national-health-service-wales-for-practitioners.css +362 -11
  53. package/dist/united-states-web-design-system.css +360 -9
  54. package/dist/valentine.css +360 -9
  55. package/dist/vercel.css +3961 -0
  56. package/dist/winter.css +360 -9
  57. package/dist/wireframe.css +360 -9
  58. package/index.md +14 -10
  59. package/package.json +5 -4
@@ -1,5 +1,5 @@
1
1
  /* ============================================================================
2
- * Theme: united-kingdom-national-health-service-wales-patients
2
+ * Theme: united-kingdom-national-health-service-wales-for-patients
3
3
  * Brand: NHS Wales / GIG Cymru (Gwasanaeth Iechyd Gwladol Cymru) — patients
4
4
  * Format: Lily standalone theme
5
5
  *
@@ -58,7 +58,7 @@
58
58
  * When NOT to use this theme:
59
59
  *
60
60
  * - Clinician-only workstations, EPR / eMAR / ePMA, results review
61
- * (use `united-kingdom-national-health-service-wales-practitioners.css`)
61
+ * (use `united-kingdom-national-health-service-wales-for-practitioners.css`)
62
62
  * - Any surface where staff need to scan many rows of clinical data —
63
63
  * this theme's rhythm makes that slow, not fast
64
64
  *
@@ -1441,7 +1441,7 @@
1441
1441
  color: var(--lily-text-muted);
1442
1442
  }
1443
1443
  /* Final crumb (the current page) — muted because it isn't a link. */
1444
- :where(.breadcrumb-list-item[aria-current="page"]) {
1444
+ :where(.breadcrumb-list-item[data-current], .breadcrumb-list-item[aria-current="page"]) {
1445
1445
  color: var(--lily-text-muted);
1446
1446
  }
1447
1447
 
@@ -1710,11 +1710,114 @@
1710
1710
  background-color: var(--color-primary);
1711
1711
  color: var(--color-primary-content);
1712
1712
  }
1713
- /* Today — outlined rather than filled, so a selected non-today date
1714
- still reads as the "selected" one. */
1713
+ /* Today — outlined and bold, never filled, so a selected non-today date still
1714
+ reads as "selected". The ring takes the cell's own text colour (currentColor),
1715
+ so it holds its contrast on a light page, a dark page and a selected cell
1716
+ alike, and the bold number says it without colour. */
1715
1717
  :where(.calendar-table-td[aria-current="date"]) {
1716
- outline: 2px solid var(--color-primary);
1717
- outline-offset: -2px;
1718
+ outline: 2px solid currentColor;
1719
+ outline-offset: -3px;
1720
+ font-weight: 700;
1721
+ }
1722
+ /* Fit a phone: day cells shrink and wrap instead of forcing the grid wider. */
1723
+ :where(.calendar-table) {
1724
+ table-layout: fixed;
1725
+ }
1726
+ :where(.calendar-table-td, .calendar-table-th) {
1727
+ min-width: 0;
1728
+ overflow-wrap: anywhere;
1729
+ }
1730
+
1731
+ /* --- Data grid: toolbar, sorting, pagination, column visibility, pinned columns ----- */
1732
+ :where(.data-grid-toolbar) {
1733
+ display: flex;
1734
+ flex-wrap: wrap;
1735
+ gap: var(--lily-space-sm);
1736
+ align-items: center;
1737
+ margin-block-end: var(--lily-space-sm);
1738
+ }
1739
+ :where(.data-grid-search, .data-grid-search-field) {
1740
+ padding: var(--lily-space-xs) var(--lily-space-sm);
1741
+ border: var(--border) solid var(--lily-border);
1742
+ border-radius: var(--lily-radius-sm);
1743
+ background-color: var(--lily-surface);
1744
+ color: var(--lily-text);
1745
+ font: inherit;
1746
+ }
1747
+ /* A sortable header is a button that looks like its text; the arrow follows aria-sort,
1748
+ so the state is in the markup for assistive technology and on screen for everyone. */
1749
+ :where(.data-grid-sort-button) {
1750
+ padding: 0;
1751
+ border: 0;
1752
+ background: none;
1753
+ color: inherit;
1754
+ font: inherit;
1755
+ text-align: start;
1756
+ cursor: pointer;
1757
+ }
1758
+ :where(.data-grid-sort-button:focus-visible) {
1759
+ outline: 2px solid var(--color-accent);
1760
+ outline-offset: 2px;
1761
+ }
1762
+ :where([aria-sort="none"] .data-grid-sort-button)::after {
1763
+ content: " \21C5";
1764
+ opacity: 0.5;
1765
+ }
1766
+ :where([aria-sort="ascending"] .data-grid-sort-button)::after {
1767
+ content: " \25B2";
1768
+ }
1769
+ :where([aria-sort="descending"] .data-grid-sort-button)::after {
1770
+ content: " \25BC";
1771
+ }
1772
+ :where(.data-grid-pagination) {
1773
+ display: flex;
1774
+ flex-wrap: wrap;
1775
+ gap: var(--lily-space-sm);
1776
+ align-items: center;
1777
+ justify-content: flex-end;
1778
+ margin-block-start: var(--lily-space-sm);
1779
+ }
1780
+ :where(.data-grid-page-previous, .data-grid-page-next, .data-grid-export-button) {
1781
+ padding: var(--lily-space-xs) var(--lily-space-md);
1782
+ border: var(--border) solid var(--lily-border);
1783
+ border-radius: var(--lily-radius-sm);
1784
+ background-color: var(--lily-surface);
1785
+ color: var(--lily-text);
1786
+ font: inherit;
1787
+ cursor: pointer;
1788
+ }
1789
+ :where(.data-grid-page-previous:disabled, .data-grid-page-next:disabled, .data-grid-export-button:disabled) {
1790
+ opacity: 0.5;
1791
+ cursor: not-allowed;
1792
+ }
1793
+ :where(.data-grid-column-visibility) {
1794
+ display: flex;
1795
+ flex-wrap: wrap;
1796
+ gap: var(--lily-space-sm);
1797
+ margin: 0;
1798
+ padding: var(--lily-space-xs) var(--lily-space-sm);
1799
+ border: var(--border) solid var(--lily-border);
1800
+ border-radius: var(--lily-radius-sm);
1801
+ }
1802
+ /* Pinned columns stay put while the rest scroll; the offset is logical, so it flips in right-to-left. */
1803
+ :where([data-pinned="start"]) {
1804
+ position: sticky;
1805
+ inset-inline-start: 0;
1806
+ z-index: 1;
1807
+ background-color: var(--lily-surface);
1808
+ }
1809
+ :where([data-pinned="end"]) {
1810
+ position: sticky;
1811
+ inset-inline-end: 0;
1812
+ z-index: 1;
1813
+ background-color: var(--lily-surface);
1814
+ }
1815
+ :where(th[data-pinned]) {
1816
+ z-index: 2;
1817
+ }
1818
+ /* A missing value: dimmed, and the grid's emptyValue text (for example a dash) reads as absence. */
1819
+ :where(.data-table-td[data-empty]) {
1820
+ opacity: 0.7;
1718
1821
  }
1719
1822
 
1720
1823
  /* --- Kanban specifics --------------------------------------------------- */
@@ -1728,6 +1831,20 @@
1728
1831
  min-width: 14rem;
1729
1832
  }
1730
1833
 
1834
+ /* Dragging a card: the column it would land in is outlined; one that refuses it
1835
+ (canMove, allowedColumns, a full strict WIP limit) is striped and shows the
1836
+ not-allowed cursor, so "you can't drop here" is visible before the drop. */
1837
+ :where(.kanban-table-td[data-drop-target]) {
1838
+ outline: 2px dashed var(--color-accent);
1839
+ outline-offset: -3px;
1840
+ }
1841
+ :where(.kanban-table-td[data-drop-blocked]) {
1842
+ outline: 2px solid var(--color-error);
1843
+ outline-offset: -3px;
1844
+ cursor: not-allowed;
1845
+ background-image: repeating-linear-gradient(135deg, transparent 0 6px, color-mix(in srgb, var(--color-error) 18%, transparent) 6px 8px);
1846
+ }
1847
+
1731
1848
  /* --- Gantt specifics ---------------------------------------------------- */
1732
1849
  /* Cells marked as bars are filled with the primary colour to render the
1733
1850
  schedule bar inline within the grid. */
@@ -1735,6 +1852,20 @@
1735
1852
  background-color: var(--color-primary);
1736
1853
  }
1737
1854
 
1855
+ /* Weekend, holiday and time-off shading (Gantt chart and calendar). A weekend
1856
+ is tinted; a day marked as a holiday or time off (data-unavailable /
1857
+ data-range) is striped as well, so no day is told apart by colour alone;
1858
+ a column only partly unavailable gets a bar under its header. */
1859
+ :where(.gantt-table-th[data-weekend], .gantt-table-td[data-weekend], .calendar-table-th[data-weekend], .calendar-table-td[data-weekend]) {
1860
+ background-color: color-mix(in srgb, var(--lily-surface) 92%, var(--lily-text));
1861
+ }
1862
+ :where(.gantt-table-th[data-unavailable], .gantt-table-td[data-unavailable], .calendar-table-td[data-range]) {
1863
+ background-image: repeating-linear-gradient(135deg, transparent 0 4px, color-mix(in srgb, var(--lily-text) 14%, transparent) 4px 5px);
1864
+ }
1865
+ :where(.gantt-table-th[data-partly-unavailable]) {
1866
+ box-shadow: inset 0 -3px 0 color-mix(in srgb, var(--lily-text) 45%, transparent);
1867
+ }
1868
+
1738
1869
  /* ==========================================================================
1739
1870
  * Cards, panels, surfaces
1740
1871
  * --------------------------------------------------------------------------
@@ -2892,8 +3023,11 @@
2892
3023
  .theme-picker,
2893
3024
  .locale-picker,
2894
3025
  .text-size-picker,
3026
+ .time-zone-picker,
2895
3027
  .search-picker,
2896
3028
  .link-picker,
3029
+ .menu-picker,
3030
+ .settings-picker,
2897
3031
  .share-picker,
2898
3032
  .date-time-picker
2899
3033
  ) {
@@ -2905,8 +3039,11 @@
2905
3039
  .theme-picker-button,
2906
3040
  .locale-picker-button,
2907
3041
  .text-size-picker-button,
3042
+ .time-zone-picker-button,
2908
3043
  .search-picker-button,
2909
3044
  .link-picker-button,
3045
+ .menu-picker-button,
3046
+ .settings-picker-button,
2910
3047
  .share-picker-button,
2911
3048
  .date-time-picker-button
2912
3049
  ) {
@@ -2941,8 +3078,11 @@
2941
3078
  .theme-picker-icon,
2942
3079
  .locale-picker-icon,
2943
3080
  .text-size-picker-icon,
3081
+ .time-zone-picker-icon,
2944
3082
  .motion-picker-icon,
2945
3083
  .link-picker-icon,
3084
+ .menu-picker-icon,
3085
+ .settings-picker-icon,
2946
3086
  .share-picker-icon,
2947
3087
  .search-picker-icon
2948
3088
  ) {
@@ -3306,8 +3446,11 @@
3306
3446
  .theme-picker-tooltip,
3307
3447
  .locale-picker-tooltip,
3308
3448
  .text-size-picker-tooltip,
3449
+ .time-zone-picker-tooltip,
3309
3450
  .motion-picker-tooltip,
3310
3451
  .link-picker-tooltip,
3452
+ .menu-picker-tooltip,
3453
+ .settings-picker-tooltip,
3311
3454
  .share-picker-tooltip,
3312
3455
  .search-picker-tooltip,
3313
3456
  .date-time-picker-tooltip
@@ -3331,8 +3474,11 @@
3331
3474
  .theme-picker-tooltip,
3332
3475
  .locale-picker-tooltip,
3333
3476
  .text-size-picker-tooltip,
3477
+ .time-zone-picker-tooltip,
3334
3478
  .motion-picker-tooltip,
3335
3479
  .link-picker-tooltip,
3480
+ .menu-picker-tooltip,
3481
+ .settings-picker-tooltip,
3336
3482
  .share-picker-tooltip,
3337
3483
  .search-picker-tooltip,
3338
3484
  .date-time-picker-tooltip
@@ -3348,8 +3494,11 @@
3348
3494
  .theme-picker-tooltip,
3349
3495
  .locale-picker-tooltip,
3350
3496
  .text-size-picker-tooltip,
3497
+ .time-zone-picker-tooltip,
3351
3498
  .motion-picker-tooltip,
3352
3499
  .link-picker-tooltip,
3500
+ .menu-picker-tooltip,
3501
+ .settings-picker-tooltip,
3353
3502
  .share-picker-tooltip,
3354
3503
  .search-picker-tooltip,
3355
3504
  .date-time-picker-tooltip
@@ -3402,8 +3551,11 @@
3402
3551
  .theme-picker-list,
3403
3552
  .locale-picker-list,
3404
3553
  .text-size-picker-list,
3554
+ .time-zone-picker-list,
3405
3555
  .motion-picker-list,
3406
3556
  .link-picker-list,
3557
+ .menu-picker-panel,
3558
+ .settings-picker-panel,
3407
3559
  .share-picker-list,
3408
3560
  .search-picker-panel
3409
3561
  ) {
@@ -3429,8 +3581,11 @@
3429
3581
  .theme-picker-list,
3430
3582
  .locale-picker-list,
3431
3583
  .text-size-picker-list,
3584
+ .time-zone-picker-list,
3432
3585
  .motion-picker-list,
3433
3586
  .link-picker-list,
3587
+ .menu-picker-panel,
3588
+ .settings-picker-panel,
3434
3589
  .share-picker-list,
3435
3590
  .search-picker-panel
3436
3591
  )[hidden] {
@@ -3447,23 +3602,32 @@
3447
3602
  :where(.theme-picker) { anchor-name: --lily-theme-picker; }
3448
3603
  :where(.locale-picker) { anchor-name: --lily-locale-picker; }
3449
3604
  :where(.text-size-picker) { anchor-name: --lily-text-size-picker; }
3605
+ :where(.time-zone-picker) { anchor-name: --lily-time-zone-picker; }
3450
3606
  :where(.motion-picker) { anchor-name: --lily-motion-picker; }
3451
3607
  :where(.link-picker) { anchor-name: --lily-link-picker; }
3608
+ :where(.menu-picker) { anchor-name: --lily-menu-picker; }
3609
+ :where(.settings-picker) { anchor-name: --lily-settings-picker; }
3452
3610
  :where(.share-picker) { anchor-name: --lily-share-picker; }
3453
3611
  :where(.search-picker) { anchor-name: --lily-search-picker; }
3454
3612
  :where(.theme-picker-list) { position-anchor: --lily-theme-picker; }
3455
3613
  :where(.locale-picker-list) { position-anchor: --lily-locale-picker; }
3456
3614
  :where(.text-size-picker-list) { position-anchor: --lily-text-size-picker; }
3615
+ :where(.time-zone-picker-list) { position-anchor: --lily-time-zone-picker; }
3457
3616
  :where(.motion-picker-list) { position-anchor: --lily-motion-picker; }
3458
3617
  :where(.link-picker-list) { position-anchor: --lily-link-picker; }
3618
+ :where(.menu-picker-panel) { position-anchor: --lily-menu-picker; }
3619
+ :where(.settings-picker-panel) { position-anchor: --lily-settings-picker; }
3459
3620
  :where(.share-picker-list) { position-anchor: --lily-share-picker; }
3460
3621
  :where(.search-picker-panel) { position-anchor: --lily-search-picker; }
3461
3622
  :where(
3462
3623
  .theme-picker-list,
3463
3624
  .locale-picker-list,
3464
3625
  .text-size-picker-list,
3626
+ .time-zone-picker-list,
3465
3627
  .motion-picker-list,
3466
3628
  .link-picker-list,
3629
+ .menu-picker-panel,
3630
+ .settings-picker-panel,
3467
3631
  .share-picker-list,
3468
3632
  .search-picker-panel
3469
3633
  ) {
@@ -3477,11 +3641,12 @@
3477
3641
  }
3478
3642
  }
3479
3643
 
3480
- :where(.theme-picker-list, .locale-picker-list, .text-size-picker-list, .motion-picker-list)
3644
+ :where(.theme-picker-list, .locale-picker-list, .text-size-picker-list, .time-zone-picker-list, .motion-picker-list)
3481
3645
  > :where(
3482
3646
  .theme-picker-option,
3483
3647
  .locale-picker-option,
3484
3648
  .text-size-picker-option,
3649
+ .time-zone-picker-option,
3485
3650
  .motion-picker-option
3486
3651
  ) {
3487
3652
  padding: var(--lily-space-xs) var(--lily-space-sm);
@@ -3491,7 +3656,7 @@
3491
3656
 
3492
3657
  /* data-active is the keyboard cursor (aria-activedescendant); focus
3493
3658
  stays on the listbox, so this is the only visible cue for it. */
3494
- :where(.theme-picker-list, .locale-picker-list, .text-size-picker-list, .motion-picker-list)
3659
+ :where(.theme-picker-list, .locale-picker-list, .text-size-picker-list, .time-zone-picker-list, .motion-picker-list)
3495
3660
  > :where([data-active]) {
3496
3661
  background-color: var(--lily-surface-alt);
3497
3662
  outline: var(--lily-focus-ring);
@@ -3500,7 +3665,7 @@
3500
3665
 
3501
3666
  /* aria-selected marks the applied theme/locale, which is not the
3502
3667
  same thing as the keyboard cursor. Both can be visible at once. */
3503
- :where(.theme-picker-list, .locale-picker-list, .text-size-picker-list, .motion-picker-list)
3668
+ :where(.theme-picker-list, .locale-picker-list, .text-size-picker-list, .time-zone-picker-list, .motion-picker-list)
3504
3669
  > :where([aria-selected="true"]) {
3505
3670
  font-weight: 600;
3506
3671
  background-color: var(--lily-surface-sunken);
@@ -3889,7 +4054,7 @@
3889
4054
  }
3890
4055
  /* Screen-reader-only — visually hidden but available to AT. The
3891
4056
  classic clip-rect pattern (works in every screen reader). */
3892
- :where(.screen-reader-span) {
4057
+ :where(.screen-reader-span, .middle-truncation-full) {
3893
4058
  position: absolute;
3894
4059
  width: 1px;
3895
4060
  height: 1px;
@@ -3900,6 +4065,42 @@
3900
4065
  white-space: nowrap;
3901
4066
  border: 0;
3902
4067
  }
4068
+ /* Middle truncation — a bounded one-line block; the shortened string is aria-hidden and the full
4069
+ text (hidden above) stays in the accessibility tree. */
4070
+ :where(.middle-truncation) {
4071
+ display: block;
4072
+ position: relative;
4073
+ overflow: hidden;
4074
+ white-space: nowrap;
4075
+ }
4076
+ /* Wheel picker — a scrolling listbox that snaps the chosen option to the centre. The selected option is filled with the
4077
+ primary colour (aria-selected, not colour alone: it is also the activedescendant and gets a bold weight). */
4078
+ :where(.wheel-picker-list) {
4079
+ max-block-size: 10em;
4080
+ overflow-y: auto;
4081
+ overscroll-behavior: contain;
4082
+ scroll-snap-type: y mandatory;
4083
+ border: 1px solid var(--color-base-300);
4084
+ border-radius: var(--lily-radius-md);
4085
+ }
4086
+ :where(.wheel-picker-list:focus-visible) {
4087
+ outline: 2px solid var(--lily-focus-ring);
4088
+ outline-offset: 2px;
4089
+ }
4090
+ :where(.wheel-picker-option) {
4091
+ padding: 0.5rem 1rem;
4092
+ scroll-snap-align: center;
4093
+ cursor: pointer;
4094
+ }
4095
+ :where(.wheel-picker-option[aria-selected="true"]) {
4096
+ background-color: var(--color-primary);
4097
+ color: var(--color-primary-content);
4098
+ font-weight: 600;
4099
+ }
4100
+ :where(.wheel-picker-option[aria-disabled="true"]) {
4101
+ opacity: 0.5;
4102
+ cursor: not-allowed;
4103
+ }
3903
4104
 
3904
4105
  /* ==========================================================================
3905
4106
  * Hero, figure, photo, media
@@ -4645,3 +4846,153 @@
4645
4846
  :where(a, code) {
4646
4847
  overflow-wrap: anywhere;
4647
4848
  }
4849
+
4850
+ /* ============================================================================
4851
+ * Helper packages — layout and look, shared verbatim by all themes.
4852
+ *
4853
+ * The data grid, kanban board, Gantt chart and calendar view are wide by nature.
4854
+ * Each root scrolls sideways inside its own box and its table sizes to its content,
4855
+ * so a narrow screen scrolls the table instead of wrapping every cell to a letter
4856
+ * (the overflow guard above lets cells break anywhere, which is right for prose and
4857
+ * wrong for a table that has a scroller). The toolbar controls of all four helpers
4858
+ * share the data grid's look, every button has a >=24px target (WCAG 2.2 2.5.8), and
4859
+ * the Gantt chart draws its bars from `data-in-range`, a milestone as a diamond and
4860
+ * today as a rule. :where() keeps specificity at zero, so any consumer rule wins.
4861
+ * ========================================================================= */
4862
+
4863
+ :where(.data-grid, .kanban-board, .gantt-chart, .calendar-view) {
4864
+ max-inline-size: 100%;
4865
+ overflow-x: auto;
4866
+ }
4867
+
4868
+ :where(.data-grid table, .kanban-board table, .gantt-chart table, .calendar-view table) {
4869
+ inline-size: max-content;
4870
+ min-inline-size: 100%;
4871
+ }
4872
+
4873
+ :where(.kanban-board-export, .gantt-chart-export, .gantt-chart-zoom, .calendar-view-export,
4874
+ .calendar-view-toolbar, .calendar-view-nav, .calendar-view-switcher) {
4875
+ display: flex;
4876
+ flex-wrap: wrap;
4877
+ gap: var(--lily-space-sm);
4878
+ align-items: center;
4879
+ margin-block-end: var(--lily-space-sm);
4880
+ }
4881
+
4882
+ :where(.kanban-board-search, .gantt-chart-search, .calendar-view-search) {
4883
+ padding: var(--lily-space-xs) var(--lily-space-sm);
4884
+ border: var(--border) solid var(--lily-border);
4885
+ border-radius: var(--lily-radius-sm);
4886
+ background-color: var(--lily-surface);
4887
+ color: var(--lily-text);
4888
+ font: inherit;
4889
+ min-block-size: 24px;
4890
+ }
4891
+
4892
+ :where(.kanban-board-export-button,
4893
+ .kanban-board-add-button,
4894
+ .kanban-board-undo-button,
4895
+ .kanban-board-collapse-button,
4896
+ .kanban-board-lane-toggle,
4897
+ .kanban-board-move-button,
4898
+ .gantt-chart-export-button,
4899
+ .gantt-chart-zoom-in-button,
4900
+ .gantt-chart-zoom-out-button,
4901
+ .gantt-chart-collapse-button,
4902
+ .gantt-chart-collapse-all-button,
4903
+ .gantt-chart-expand-all-button,
4904
+ .gantt-chart-save-button,
4905
+ .gantt-chart-cancel-button,
4906
+ .calendar-view-export-button,
4907
+ .calendar-view-previous-button,
4908
+ .calendar-view-next-button,
4909
+ .calendar-view-today-button,
4910
+ .calendar-view-switcher-button) {
4911
+ padding: var(--lily-space-xs) var(--lily-space-md);
4912
+ border: var(--border) solid var(--lily-border);
4913
+ border-radius: var(--lily-radius-sm);
4914
+ background-color: var(--lily-surface);
4915
+ color: var(--lily-text);
4916
+ font: inherit;
4917
+ cursor: pointer;
4918
+ min-inline-size: 24px;
4919
+ min-block-size: 24px;
4920
+ }
4921
+
4922
+ :where(.kanban-board-export-button:disabled,
4923
+ .kanban-board-add-button:disabled,
4924
+ .kanban-board-undo-button:disabled,
4925
+ .gantt-chart-export-button:disabled,
4926
+ .gantt-chart-zoom-in-button:disabled,
4927
+ .gantt-chart-zoom-out-button:disabled,
4928
+ .calendar-view-export-button:disabled,
4929
+ .calendar-view-previous-button[aria-disabled="true"],
4930
+ .calendar-view-next-button[aria-disabled="true"]) {
4931
+ opacity: 0.5;
4932
+ cursor: not-allowed;
4933
+ }
4934
+
4935
+ :where(.calendar-view-switcher-button[aria-pressed="true"]) {
4936
+ background-color: var(--color-base-300);
4937
+ font-weight: 600;
4938
+ }
4939
+
4940
+ :where(.kanban-board-status, .gantt-chart-status, .calendar-view-status) {
4941
+ margin-block-start: var(--lily-space-sm);
4942
+ font-size: 0.875em;
4943
+ opacity: 0.8;
4944
+ }
4945
+
4946
+ :where(.calendar-view-event) {
4947
+ display: block;
4948
+ padding: 0 var(--lily-space-xs);
4949
+ border-radius: var(--lily-radius-sm);
4950
+ background-color: color-mix(in srgb, var(--color-primary) 18%, transparent);
4951
+ font-size: 0.75rem;
4952
+ }
4953
+
4954
+ :where(.gantt-table-th) {
4955
+ min-inline-size: 2rem;
4956
+ padding-inline: 0.25rem;
4957
+ font-size: 0.75rem;
4958
+ text-align: center;
4959
+ white-space: nowrap;
4960
+ }
4961
+
4962
+ :where(.gantt-table-th[scope="row"], .gantt-table-th:first-child) {
4963
+ min-inline-size: 10rem;
4964
+ padding-inline: var(--lily-space-sm);
4965
+ font-size: inherit;
4966
+ text-align: start;
4967
+ white-space: normal;
4968
+ }
4969
+
4970
+ :where(.gantt-table-td) {
4971
+ min-block-size: 1.7rem;
4972
+ padding: 0;
4973
+ }
4974
+
4975
+ :where(.gantt-table-td[data-in-range]) {
4976
+ background-color: var(--color-primary);
4977
+ }
4978
+
4979
+ :where(.gantt-table-td[data-in-range][data-milestone]) {
4980
+ clip-path: polygon(50% 8%, 92% 50%, 50% 92%, 8% 50%);
4981
+ }
4982
+
4983
+ :where(.gantt-table-td[data-today]) {
4984
+ border-inline-start: 2px solid var(--color-accent);
4985
+ }
4986
+
4987
+ /* The time zone picker's options are long ("UTC+10:30 – Lord Howe Daylight Time"): size the list to its widest
4988
+ option up to a cap, then wrap, rather than clipping the name or running off a phone. */
4989
+ :where(.time-zone-picker-list) {
4990
+ inline-size: max-content;
4991
+ max-inline-size: min(26rem, 90vw);
4992
+ max-block-size: min(24rem, 70vh);
4993
+ overflow-y: auto;
4994
+ }
4995
+
4996
+ :where(.time-zone-picker-option) {
4997
+ overflow-wrap: anywhere;
4998
+ }