@pure-ds/storybook 0.4.15 → 0.4.17

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/.storybook/addons/html-preview/Panel.jsx +75 -23
  2. package/.storybook/addons/html-preview/preview.js +27 -1
  3. package/.storybook/docs.css +7 -0
  4. package/.storybook/htmlPreview.css +6 -6
  5. package/.storybook/htmlPreview.js +27 -1
  6. package/.storybook/manager-head.html +13 -0
  7. package/.storybook/preview-head.html +5 -0
  8. package/.storybook/preview.js +1 -1
  9. package/dist/pds-reference.json +2 -7
  10. package/package.json +2 -2
  11. package/public/assets/js/app.js +617 -10565
  12. package/public/assets/js/lit.js +3 -1048
  13. package/public/assets/js/pds.js +396 -7354
  14. package/public/assets/pds/components/pds-calendar.js +1 -1
  15. package/public/assets/pds/custom-elements.json +263 -18
  16. package/public/assets/pds/pds-runtime-config.json +1 -1
  17. package/public/assets/pds/styles/pds-components.css +83 -221
  18. package/public/assets/pds/styles/pds-components.css.js +166 -442
  19. package/public/assets/pds/styles/pds-styles.css +240 -437
  20. package/public/assets/pds/styles/pds-styles.css.js +479 -881
  21. package/public/assets/pds/styles/pds-utilities.css +151 -214
  22. package/public/assets/pds/styles/pds-utilities.css.js +302 -428
  23. package/src/js/pds-configurator/pds-demo.js +11 -1
  24. package/src/js/pds-core/pds-generator.js +88 -38
  25. package/src/js/pds-core/pds-ontology.js +1 -1
  26. package/stories/components/PdsCalendar.stories.js +2 -2
  27. package/stories/components/PdsDrawer.stories.js +15 -15
  28. package/stories/components/PdsJsonform.stories.js +78 -0
  29. package/stories/components/PdsRichtext.stories.js +4 -17
  30. package/stories/components/PdsScrollrow.stories.js +224 -72
  31. package/stories/components/PdsSplitpanel.stories.js +63 -28
  32. package/stories/components/PdsTabstrip.stories.js +7 -7
  33. package/stories/enhancements/Accordion.stories.js +2 -2
  34. package/stories/enhancements/Dropdowns.stories.js +13 -10
  35. package/stories/enhancements/RangeSliders.stories.js +9 -9
  36. package/stories/enhancements/RequiredFields.stories.js +8 -8
  37. package/stories/enhancements/Toggles.stories.js +45 -36
  38. package/stories/enhancements/_enhancement-header.js +2 -2
  39. package/stories/foundations/Colors.stories.js +13 -13
  40. package/stories/foundations/HTMLDefaults.stories.js +4 -4
  41. package/stories/foundations/Icons.stories.js +123 -288
  42. package/stories/foundations/MeshGradients.stories.js +161 -250
  43. package/stories/foundations/SmartSurfaces.stories.js +147 -64
  44. package/stories/foundations/Spacing.stories.js +30 -30
  45. package/stories/foundations/Typography.stories.js +352 -723
  46. package/stories/foundations/ZIndex.stories.js +124 -141
  47. package/stories/layout/LayoutOverview.stories.js +343 -250
  48. package/stories/layout/LayoutSystem.stories.js +60 -76
  49. package/stories/patterns/InteractiveStates.stories.js +29 -29
  50. package/stories/patterns/Utilities.stories.js +17 -5
  51. package/stories/primitives/Alerts.stories.js +6 -6
  52. package/stories/primitives/Cards.stories.js +22 -11
  53. package/stories/primitives/Forms.stories.js +17 -8
  54. package/stories/primitives/Media.stories.js +23 -20
  55. package/stories/utilities/Backdrop.stories.js +68 -27
  56. package/stories/utils/PdsAsk.stories.js +1 -1
  57. package/public/assets/js/app.js.map +0 -7
  58. package/public/assets/js/lit.js.map +0 -7
  59. package/public/assets/js/pds.js.map +0 -7
@@ -39,6 +39,36 @@ components.replaceSync(`@layer components {
39
39
  height: 0;
40
40
  }
41
41
 
42
+ /* Labeled horizontal rule: <hr data-content="OR"> */
43
+ :where(hr[data-content]) {
44
+ position: relative;
45
+ border: none;
46
+ text-align: center;
47
+ height: auto;
48
+ overflow: visible;
49
+
50
+ &::before {
51
+ content: "";
52
+ position: absolute;
53
+ left: 0;
54
+ top: 50%;
55
+ width: 100%;
56
+ height: 1px;
57
+ background: linear-gradient(to right, transparent, var(--color-border), transparent);
58
+ }
59
+
60
+ &::after {
61
+ content: attr(data-content);
62
+ position: relative;
63
+ display: inline-block;
64
+ padding: 0 var(--spacing-3);
65
+ background-color: var(--color-surface-base);
66
+ color: var(--color-text-muted);
67
+ font-size: var(--font-size-sm);
68
+ line-height: var(--font-line-height-normal);
69
+ }
70
+ }
71
+
42
72
  :where(dl) {
43
73
  margin: 0 0 var(--spacing-4) 0;
44
74
  }
@@ -66,6 +96,11 @@ components.replaceSync(`@layer components {
66
96
  width: 100%;
67
97
  }
68
98
 
99
+ /* Headings within header elements have tight spacing for intro content */
100
+ :where(header) > :where(h1, h2, h3, h4, h5, h6) {
101
+ margin: 0;
102
+ }
103
+
69
104
  :where(article), :where(section), :where(aside) {
70
105
  display: block;
71
106
  margin-bottom: var(--spacing-6);
@@ -172,7 +207,7 @@ form {
172
207
  }
173
208
 
174
209
  fieldset {
175
- margin: 0 0 var(--spacing-2) 0;
210
+ margin: 0;
176
211
  padding: var(--spacing-5);
177
212
  width: 100%;
178
213
  background-color: color-mix(in oklab, var(--color-surface-subtle) 50%, transparent 50%);
@@ -247,7 +282,6 @@ fieldset fieldset fieldset > legend { font-size: var(--font-size-sm); }
247
282
 
248
283
  label {
249
284
  display: block;
250
- margin-bottom: var(--spacing-3);
251
285
  font-weight: var(--font-weight-medium);
252
286
  color: var(--color-text-primary);
253
287
  font-size: var(--font-size-sm);
@@ -951,16 +985,7 @@ a.btn-working {
951
985
  border: 1px solid var(--color-border);
952
986
  border-radius: var(--radius-md);
953
987
  background-color: var(--color-surface-base);
954
-
955
- fieldset {
956
- background-color: transparent;
957
- margin-bottom: var(--spacing-3);
958
-
959
- &:last-of-type {
960
- margin-bottom: 0;
961
- }
962
- }
963
-
988
+
964
989
  .array-controls {
965
990
  padding-top: var(--spacing-3);
966
991
  border-top: 1px solid var(--color-border);
@@ -1108,82 +1133,30 @@ a.btn-working {
1108
1133
  vertical-align: middle;
1109
1134
  background-color: var(--color-gray-200);
1110
1135
  color: var(--color-gray-800);
1111
- border-radius: var(--radius-full);
1112
- }
1113
-
1114
- .badge-primary {
1115
- background-color: var(--color-primary-600);
1116
- color: white;
1117
- }
1118
-
1119
- .badge-secondary {
1120
- background-color: var(--color-secondary-600);
1121
- color: white;
1122
- }
1123
-
1124
- .badge-success {
1125
- background-color: var(--color-success-600);
1126
- color: white;
1127
- }
1128
-
1129
- .badge-info {
1130
- background-color: var(--color-info-600);
1131
- color: white;
1132
- }
1133
-
1134
- .badge-warning {
1135
- background-color: var(--color-warning-600);
1136
- color: white;
1137
1136
  }
1138
1137
 
1139
- .badge-danger {
1140
- background-color: var(--color-danger-600);
1141
- color: white;
1142
- }
1138
+ .badge-primary, .badge-secondary, .badge-success, .badge-info, .badge-warning, .badge-danger { color: white; }
1139
+ .badge-primary { background-color: var(--color-primary-600); }
1140
+ .badge-secondary { background-color: var(--color-secondary-600); }
1141
+ .badge-success { background-color: var(--color-success-600); }
1142
+ .badge-info { background-color: var(--color-info-600); }
1143
+ .badge-warning { background-color: var(--color-warning-600); }
1144
+ .badge-danger { background-color: var(--color-danger-600); }
1143
1145
 
1144
1146
  .badge-outline {
1145
1147
  background-color: transparent;
1146
1148
  border: 1px solid currentColor;
1147
-
1148
- &.badge-primary {
1149
- color: var(--color-text-primary);
1150
- }
1151
-
1152
- &.badge-secondary {
1153
- color: var(--color-secondary-600);
1154
- }
1155
-
1156
- &.badge-success {
1157
- color: var(--color-success-600);
1158
- }
1159
-
1160
- &.badge-info {
1161
- color: var(--color-info-600);
1162
- }
1163
-
1164
- &.badge-warning {
1165
- color: var(--color-warning-600);
1166
- }
1167
-
1168
- &.badge-danger {
1169
- color: var(--color-danger-600);
1170
- }
1171
- }
1172
-
1173
- .badge-sm {
1174
- padding: 2px var(--spacing-1);
1175
- font-size: 10px;
1149
+ &.badge-primary { color: var(--color-text-primary); }
1150
+ &.badge-secondary { color: var(--color-secondary-600); }
1151
+ &.badge-success { color: var(--color-success-600); }
1152
+ &.badge-info { color: var(--color-info-600); }
1153
+ &.badge-warning { color: var(--color-warning-600); }
1154
+ &.badge-danger { color: var(--color-danger-600); }
1176
1155
  }
1177
1156
 
1178
- .badge-lg {
1179
- padding: var(--spacing-2) var(--spacing-3);
1180
- font-size: var(--font-size-sm);
1181
- }
1182
-
1183
- .pill {
1184
- padding: var(--spacing-1) var(--spacing-3);
1185
- border-radius: var(--radius-full);
1186
- }
1157
+ .badge-sm { padding: 2px var(--spacing-1); font-size: 10px; }
1158
+ .badge-lg { padding: var(--spacing-2) var(--spacing-3); font-size: var(--font-size-sm); }
1159
+ .pill { padding: var(--spacing-1) var(--spacing-3); border-radius: var(--radius-full); }
1187
1160
 
1188
1161
 
1189
1162
 
@@ -1217,8 +1190,7 @@ dialog {
1217
1190
  overlay 0.2s ease allow-discrete,
1218
1191
  display 0.2s ease allow-discrete;
1219
1192
 
1220
- /* Overflow handling */
1221
- overflow: hidden;
1193
+
1222
1194
  }
1223
1195
 
1224
1196
  /* Open state */
@@ -1320,7 +1292,7 @@ dialog {
1320
1292
  form > article,
1321
1293
  .dialog-body {
1322
1294
  flex: 1;
1323
- padding: var(--spacing-6);
1295
+ padding: var(--spacing-3) var(--spacing-6);
1324
1296
  overflow-y: auto;
1325
1297
  overflow-x: hidden;
1326
1298
  }
@@ -1340,50 +1312,20 @@ dialog {
1340
1312
  }
1341
1313
 
1342
1314
  /* Dialog size modifiers */
1343
- dialog.dialog-sm {
1344
- max-width: min(400px, calc(100vw - var(--spacing-8)));
1345
- }
1346
-
1347
- dialog.dialog-lg {
1348
- max-width: min(800px, calc(100vw - var(--spacing-8)));
1349
- }
1350
-
1351
- dialog.dialog-xl {
1352
- max-width: min(1200px, calc(100vw - var(--spacing-8)));
1353
- }
1354
-
1355
- dialog.dialog-full {
1356
- max-width: calc(100vw - var(--spacing-8));
1357
- max-height: calc(100vh - var(--spacing-8));
1358
- }
1315
+ dialog.dialog-sm { max-width: min(400px, calc(100vw - var(--spacing-8))); }
1316
+ dialog.dialog-lg { max-width: min(800px, calc(100vw - var(--spacing-8))); }
1317
+ dialog.dialog-xl { max-width: min(1200px, calc(100vw - var(--spacing-8))); }
1318
+ dialog.dialog-full { max-width: calc(100vw - var(--spacing-8)); max-height: calc(100vh - var(--spacing-8)); }
1359
1319
 
1360
1320
  /* Mobile responsiveness */
1361
1321
  @media (max-width: 639px) {
1362
- dialog {
1363
- max-width: 100vw;
1364
- max-height: 100vh;
1365
- border-radius: 0;
1366
- top: 50%;
1367
- transform: translateY(-50%);
1368
- margin: 0;
1369
- }
1370
-
1371
- dialog header,
1372
- dialog form > header,
1373
- dialog article,
1374
- dialog form > article,
1375
- dialog footer,
1376
- dialog form > footer {
1377
- padding: var(--spacing-4);
1378
- }
1322
+ dialog { max-width: 100vw; max-height: 100vh; border-radius: 0; top: 50%; transform: translateY(-50%); margin: 0; }
1323
+ dialog header, dialog form > header, dialog article, dialog form > article, dialog footer, dialog form > footer { padding: var(--spacing-4); }
1379
1324
  }
1380
1325
 
1381
1326
  /* Reduced motion support */
1382
1327
  @media (prefers-reduced-motion: reduce) {
1383
- dialog,
1384
- dialog::backdrop {
1385
- transition-duration: 0.01s !important;
1386
- }
1328
+ dialog, dialog::backdrop { transition-duration: 0.01s !important; }
1387
1329
  }
1388
1330
 
1389
1331
 
@@ -1706,30 +1648,15 @@ pds-tabstrip {
1706
1648
  }
1707
1649
 
1708
1650
  @keyframes tabFadeIn {
1709
- from {
1710
- opacity: 0;
1711
- transform: translateY(8px);
1712
- }
1713
- to {
1714
- opacity: 1;
1715
- transform: translateY(0);
1716
- }
1651
+ from { opacity: 0; transform: translateY(8px); }
1652
+ to { opacity: 1; transform: translateY(0); }
1717
1653
  }
1718
1654
 
1719
1655
  /* Mobile responsive */
1720
1656
  @media (max-width: 639px) {
1721
- pds-tabstrip > nav {
1722
- gap: var(--spacing-1);
1723
- }
1724
-
1725
- pds-tabstrip > nav > a {
1726
- padding: var(--spacing-2) var(--spacing-3);
1727
- font-size: var(--font-size-sm);
1728
- }
1729
-
1730
- pds-tabstrip > pds-tabpanel[data-tabpanel] {
1731
- padding: var(--spacing-3) 0;
1732
- }
1657
+ pds-tabstrip > nav { gap: var(--spacing-1); }
1658
+ pds-tabstrip > nav > a { padding: var(--spacing-2) var(--spacing-3); font-size: var(--font-size-sm); }
1659
+ pds-tabstrip > pds-tabpanel[data-tabpanel] { padding: var(--spacing-3) 0; }
1733
1660
  }
1734
1661
 
1735
1662
 
@@ -1843,106 +1770,41 @@ tbody {
1843
1770
  }
1844
1771
 
1845
1772
  /* Custom Scrollbars */
1846
-
1847
- ::-webkit-scrollbar {
1848
- width: 12px;
1849
- height: 12px;
1850
- }
1851
-
1852
- ::-webkit-scrollbar-track {
1853
- background: transparent;
1854
- }
1855
-
1773
+ ::-webkit-scrollbar { width: 12px; height: 12px; }
1774
+ ::-webkit-scrollbar-track { background: transparent; }
1856
1775
  ::-webkit-scrollbar-thumb {
1857
1776
  background: var(--color-secondary-300);
1858
1777
  border-radius: var(--radius-full);
1859
1778
  border: 3px solid transparent;
1860
1779
  background-clip: padding-box;
1861
1780
  transition: background-color var(--transition-fast);
1862
-
1863
- &:hover {
1864
- background: var(--color-secondary-400);
1865
- border: 2px solid transparent;
1866
- background-clip: padding-box;
1867
- }
1868
-
1869
- &:active {
1870
- background: var(--color-secondary-500);
1871
- border: 2px solid transparent;
1872
- background-clip: padding-box;
1873
- }
1874
-
1781
+ &:hover { background: var(--color-secondary-400); border: 2px solid transparent; background-clip: padding-box; }
1782
+ &:active { background: var(--color-secondary-500); border: 2px solid transparent; background-clip: padding-box; }
1875
1783
  @media (prefers-color-scheme: dark) {
1876
1784
  background: var(--color-secondary-600);
1877
-
1878
- &:hover {
1879
- background: var(--color-secondary-500);
1880
- }
1881
-
1882
- &:active {
1883
- background: var(--color-secondary-400);
1884
- }
1785
+ &:hover { background: var(--color-secondary-500); }
1786
+ &:active { background: var(--color-secondary-400); }
1885
1787
  }
1886
1788
  }
1887
1789
 
1888
1790
  * {
1889
1791
  scrollbar-width: thin;
1890
1792
  scrollbar-color: var(--color-secondary-300) transparent;
1891
-
1892
- @media (prefers-color-scheme: dark) {
1893
- scrollbar-color: var(--color-secondary-600) transparent;
1894
- }
1895
- }
1896
-
1897
- /* Hover effect for scrollable containers */
1898
- *:hover {
1899
- scrollbar-color: var(--color-secondary-400) transparent;
1900
- }
1901
-
1902
- @media (prefers-color-scheme: dark) {
1903
- *:hover {
1904
- scrollbar-color: var(--color-secondary-500) transparent;
1905
- }
1793
+ @media (prefers-color-scheme: dark) { scrollbar-color: var(--color-secondary-600) transparent; }
1906
1794
  }
1795
+ *:hover { scrollbar-color: var(--color-secondary-400) transparent; }
1796
+ @media (prefers-color-scheme: dark) { *:hover { scrollbar-color: var(--color-secondary-500) transparent; } }
1907
1797
 
1908
1798
 
1909
1799
 
1910
1800
  /* Alert dark mode adjustments */
1911
- html[data-theme="dark"] .alert-success {
1912
- background-color: var(--color-success-50);
1913
- border-color: var(--color-success-500);
1914
- color: var(--color-success-900);
1915
- }
1916
-
1917
- html[data-theme="dark"] .alert-info {
1918
- background-color: var(--color-info-50);
1919
- border-color: var(--color-info-500);
1920
- color: var(--color-info-900);
1921
- }
1922
-
1923
- html[data-theme="dark"] .alert-warning {
1924
- background-color: var(--color-warning-50);
1925
- border-color: var(--color-warning-500);
1926
- color: var(--color-warning-900);
1927
- }
1928
-
1929
- html[data-theme="dark"] .alert-danger,
1930
- html[data-theme="dark"] .alert-error {
1931
- background-color: var(--color-danger-50);
1932
- border-color: var(--color-danger-500);
1933
- color: var(--color-danger-900);
1934
- }
1935
-
1936
- /* Dim images in dark mode */
1937
- html[data-theme="dark"] img,
1938
- html[data-theme="dark"] video {
1939
- opacity: 0.8;
1940
- transition: opacity var(--transition-normal);
1941
- }
1942
-
1943
- html[data-theme="dark"] img:hover,
1944
- html[data-theme="dark"] video:hover {
1945
- opacity: 1;
1801
+ html[data-theme="dark"] {
1802
+ .alert-success { background-color: var(--color-success-50); border-color: var(--color-success-500); color: var(--color-success-900); }
1803
+ .alert-info { background-color: var(--color-info-50); border-color: var(--color-info-500); color: var(--color-info-900); }
1804
+ .alert-warning { background-color: var(--color-warning-50); border-color: var(--color-warning-500); color: var(--color-warning-900); }
1805
+ .alert-danger, .alert-error { background-color: var(--color-danger-50); border-color: var(--color-danger-500); color: var(--color-danger-900); }
1806
+ img, video { opacity: 0.8; transition: opacity var(--transition-normal); }
1807
+ img:hover, video:hover { opacity: 1; }
1946
1808
  }
1947
1809
 
1948
1810
  }
@@ -1985,6 +1847,36 @@ export const componentsCSS = `@layer components {
1985
1847
  height: 0;
1986
1848
  }
1987
1849
 
1850
+ /* Labeled horizontal rule: <hr data-content="OR"> */
1851
+ :where(hr[data-content]) {
1852
+ position: relative;
1853
+ border: none;
1854
+ text-align: center;
1855
+ height: auto;
1856
+ overflow: visible;
1857
+
1858
+ &::before {
1859
+ content: "";
1860
+ position: absolute;
1861
+ left: 0;
1862
+ top: 50%;
1863
+ width: 100%;
1864
+ height: 1px;
1865
+ background: linear-gradient(to right, transparent, var(--color-border), transparent);
1866
+ }
1867
+
1868
+ &::after {
1869
+ content: attr(data-content);
1870
+ position: relative;
1871
+ display: inline-block;
1872
+ padding: 0 var(--spacing-3);
1873
+ background-color: var(--color-surface-base);
1874
+ color: var(--color-text-muted);
1875
+ font-size: var(--font-size-sm);
1876
+ line-height: var(--font-line-height-normal);
1877
+ }
1878
+ }
1879
+
1988
1880
  :where(dl) {
1989
1881
  margin: 0 0 var(--spacing-4) 0;
1990
1882
  }
@@ -2012,6 +1904,11 @@ export const componentsCSS = `@layer components {
2012
1904
  width: 100%;
2013
1905
  }
2014
1906
 
1907
+ /* Headings within header elements have tight spacing for intro content */
1908
+ :where(header) > :where(h1, h2, h3, h4, h5, h6) {
1909
+ margin: 0;
1910
+ }
1911
+
2015
1912
  :where(article), :where(section), :where(aside) {
2016
1913
  display: block;
2017
1914
  margin-bottom: var(--spacing-6);
@@ -2118,7 +2015,7 @@ form {
2118
2015
  }
2119
2016
 
2120
2017
  fieldset {
2121
- margin: 0 0 var(--spacing-2) 0;
2018
+ margin: 0;
2122
2019
  padding: var(--spacing-5);
2123
2020
  width: 100%;
2124
2021
  background-color: color-mix(in oklab, var(--color-surface-subtle) 50%, transparent 50%);
@@ -2193,7 +2090,6 @@ fieldset fieldset fieldset > legend { font-size: var(--font-size-sm); }
2193
2090
 
2194
2091
  label {
2195
2092
  display: block;
2196
- margin-bottom: var(--spacing-3);
2197
2093
  font-weight: var(--font-weight-medium);
2198
2094
  color: var(--color-text-primary);
2199
2095
  font-size: var(--font-size-sm);
@@ -2897,16 +2793,7 @@ a.btn-working {
2897
2793
  border: 1px solid var(--color-border);
2898
2794
  border-radius: var(--radius-md);
2899
2795
  background-color: var(--color-surface-base);
2900
-
2901
- fieldset {
2902
- background-color: transparent;
2903
- margin-bottom: var(--spacing-3);
2904
-
2905
- &:last-of-type {
2906
- margin-bottom: 0;
2907
- }
2908
- }
2909
-
2796
+
2910
2797
  .array-controls {
2911
2798
  padding-top: var(--spacing-3);
2912
2799
  border-top: 1px solid var(--color-border);
@@ -3054,82 +2941,30 @@ a.btn-working {
3054
2941
  vertical-align: middle;
3055
2942
  background-color: var(--color-gray-200);
3056
2943
  color: var(--color-gray-800);
3057
- border-radius: var(--radius-full);
3058
- }
3059
-
3060
- .badge-primary {
3061
- background-color: var(--color-primary-600);
3062
- color: white;
3063
- }
3064
-
3065
- .badge-secondary {
3066
- background-color: var(--color-secondary-600);
3067
- color: white;
3068
- }
3069
-
3070
- .badge-success {
3071
- background-color: var(--color-success-600);
3072
- color: white;
3073
- }
3074
-
3075
- .badge-info {
3076
- background-color: var(--color-info-600);
3077
- color: white;
3078
- }
3079
-
3080
- .badge-warning {
3081
- background-color: var(--color-warning-600);
3082
- color: white;
3083
2944
  }
3084
2945
 
3085
- .badge-danger {
3086
- background-color: var(--color-danger-600);
3087
- color: white;
3088
- }
2946
+ .badge-primary, .badge-secondary, .badge-success, .badge-info, .badge-warning, .badge-danger { color: white; }
2947
+ .badge-primary { background-color: var(--color-primary-600); }
2948
+ .badge-secondary { background-color: var(--color-secondary-600); }
2949
+ .badge-success { background-color: var(--color-success-600); }
2950
+ .badge-info { background-color: var(--color-info-600); }
2951
+ .badge-warning { background-color: var(--color-warning-600); }
2952
+ .badge-danger { background-color: var(--color-danger-600); }
3089
2953
 
3090
2954
  .badge-outline {
3091
2955
  background-color: transparent;
3092
2956
  border: 1px solid currentColor;
3093
-
3094
- &.badge-primary {
3095
- color: var(--color-text-primary);
3096
- }
3097
-
3098
- &.badge-secondary {
3099
- color: var(--color-secondary-600);
3100
- }
3101
-
3102
- &.badge-success {
3103
- color: var(--color-success-600);
3104
- }
3105
-
3106
- &.badge-info {
3107
- color: var(--color-info-600);
3108
- }
3109
-
3110
- &.badge-warning {
3111
- color: var(--color-warning-600);
3112
- }
3113
-
3114
- &.badge-danger {
3115
- color: var(--color-danger-600);
3116
- }
3117
- }
3118
-
3119
- .badge-sm {
3120
- padding: 2px var(--spacing-1);
3121
- font-size: 10px;
2957
+ &.badge-primary { color: var(--color-text-primary); }
2958
+ &.badge-secondary { color: var(--color-secondary-600); }
2959
+ &.badge-success { color: var(--color-success-600); }
2960
+ &.badge-info { color: var(--color-info-600); }
2961
+ &.badge-warning { color: var(--color-warning-600); }
2962
+ &.badge-danger { color: var(--color-danger-600); }
3122
2963
  }
3123
2964
 
3124
- .badge-lg {
3125
- padding: var(--spacing-2) var(--spacing-3);
3126
- font-size: var(--font-size-sm);
3127
- }
3128
-
3129
- .pill {
3130
- padding: var(--spacing-1) var(--spacing-3);
3131
- border-radius: var(--radius-full);
3132
- }
2965
+ .badge-sm { padding: 2px var(--spacing-1); font-size: 10px; }
2966
+ .badge-lg { padding: var(--spacing-2) var(--spacing-3); font-size: var(--font-size-sm); }
2967
+ .pill { padding: var(--spacing-1) var(--spacing-3); border-radius: var(--radius-full); }
3133
2968
 
3134
2969
 
3135
2970
 
@@ -3163,8 +2998,7 @@ dialog {
3163
2998
  overlay 0.2s ease allow-discrete,
3164
2999
  display 0.2s ease allow-discrete;
3165
3000
 
3166
- /* Overflow handling */
3167
- overflow: hidden;
3001
+
3168
3002
  }
3169
3003
 
3170
3004
  /* Open state */
@@ -3266,7 +3100,7 @@ dialog {
3266
3100
  form > article,
3267
3101
  .dialog-body {
3268
3102
  flex: 1;
3269
- padding: var(--spacing-6);
3103
+ padding: var(--spacing-3) var(--spacing-6);
3270
3104
  overflow-y: auto;
3271
3105
  overflow-x: hidden;
3272
3106
  }
@@ -3286,50 +3120,20 @@ dialog {
3286
3120
  }
3287
3121
 
3288
3122
  /* Dialog size modifiers */
3289
- dialog.dialog-sm {
3290
- max-width: min(400px, calc(100vw - var(--spacing-8)));
3291
- }
3292
-
3293
- dialog.dialog-lg {
3294
- max-width: min(800px, calc(100vw - var(--spacing-8)));
3295
- }
3296
-
3297
- dialog.dialog-xl {
3298
- max-width: min(1200px, calc(100vw - var(--spacing-8)));
3299
- }
3300
-
3301
- dialog.dialog-full {
3302
- max-width: calc(100vw - var(--spacing-8));
3303
- max-height: calc(100vh - var(--spacing-8));
3304
- }
3123
+ dialog.dialog-sm { max-width: min(400px, calc(100vw - var(--spacing-8))); }
3124
+ dialog.dialog-lg { max-width: min(800px, calc(100vw - var(--spacing-8))); }
3125
+ dialog.dialog-xl { max-width: min(1200px, calc(100vw - var(--spacing-8))); }
3126
+ dialog.dialog-full { max-width: calc(100vw - var(--spacing-8)); max-height: calc(100vh - var(--spacing-8)); }
3305
3127
 
3306
3128
  /* Mobile responsiveness */
3307
3129
  @media (max-width: 639px) {
3308
- dialog {
3309
- max-width: 100vw;
3310
- max-height: 100vh;
3311
- border-radius: 0;
3312
- top: 50%;
3313
- transform: translateY(-50%);
3314
- margin: 0;
3315
- }
3316
-
3317
- dialog header,
3318
- dialog form > header,
3319
- dialog article,
3320
- dialog form > article,
3321
- dialog footer,
3322
- dialog form > footer {
3323
- padding: var(--spacing-4);
3324
- }
3130
+ dialog { max-width: 100vw; max-height: 100vh; border-radius: 0; top: 50%; transform: translateY(-50%); margin: 0; }
3131
+ dialog header, dialog form > header, dialog article, dialog form > article, dialog footer, dialog form > footer { padding: var(--spacing-4); }
3325
3132
  }
3326
3133
 
3327
3134
  /* Reduced motion support */
3328
3135
  @media (prefers-reduced-motion: reduce) {
3329
- dialog,
3330
- dialog::backdrop {
3331
- transition-duration: 0.01s !important;
3332
- }
3136
+ dialog, dialog::backdrop { transition-duration: 0.01s !important; }
3333
3137
  }
3334
3138
 
3335
3139
 
@@ -3652,30 +3456,15 @@ pds-tabstrip {
3652
3456
  }
3653
3457
 
3654
3458
  @keyframes tabFadeIn {
3655
- from {
3656
- opacity: 0;
3657
- transform: translateY(8px);
3658
- }
3659
- to {
3660
- opacity: 1;
3661
- transform: translateY(0);
3662
- }
3459
+ from { opacity: 0; transform: translateY(8px); }
3460
+ to { opacity: 1; transform: translateY(0); }
3663
3461
  }
3664
3462
 
3665
3463
  /* Mobile responsive */
3666
3464
  @media (max-width: 639px) {
3667
- pds-tabstrip > nav {
3668
- gap: var(--spacing-1);
3669
- }
3670
-
3671
- pds-tabstrip > nav > a {
3672
- padding: var(--spacing-2) var(--spacing-3);
3673
- font-size: var(--font-size-sm);
3674
- }
3675
-
3676
- pds-tabstrip > pds-tabpanel[data-tabpanel] {
3677
- padding: var(--spacing-3) 0;
3678
- }
3465
+ pds-tabstrip > nav { gap: var(--spacing-1); }
3466
+ pds-tabstrip > nav > a { padding: var(--spacing-2) var(--spacing-3); font-size: var(--font-size-sm); }
3467
+ pds-tabstrip > pds-tabpanel[data-tabpanel] { padding: var(--spacing-3) 0; }
3679
3468
  }
3680
3469
 
3681
3470
 
@@ -3789,106 +3578,41 @@ tbody {
3789
3578
  }
3790
3579
 
3791
3580
  /* Custom Scrollbars */
3792
-
3793
- ::-webkit-scrollbar {
3794
- width: 12px;
3795
- height: 12px;
3796
- }
3797
-
3798
- ::-webkit-scrollbar-track {
3799
- background: transparent;
3800
- }
3801
-
3581
+ ::-webkit-scrollbar { width: 12px; height: 12px; }
3582
+ ::-webkit-scrollbar-track { background: transparent; }
3802
3583
  ::-webkit-scrollbar-thumb {
3803
3584
  background: var(--color-secondary-300);
3804
3585
  border-radius: var(--radius-full);
3805
3586
  border: 3px solid transparent;
3806
3587
  background-clip: padding-box;
3807
3588
  transition: background-color var(--transition-fast);
3808
-
3809
- &:hover {
3810
- background: var(--color-secondary-400);
3811
- border: 2px solid transparent;
3812
- background-clip: padding-box;
3813
- }
3814
-
3815
- &:active {
3816
- background: var(--color-secondary-500);
3817
- border: 2px solid transparent;
3818
- background-clip: padding-box;
3819
- }
3820
-
3589
+ &:hover { background: var(--color-secondary-400); border: 2px solid transparent; background-clip: padding-box; }
3590
+ &:active { background: var(--color-secondary-500); border: 2px solid transparent; background-clip: padding-box; }
3821
3591
  @media (prefers-color-scheme: dark) {
3822
3592
  background: var(--color-secondary-600);
3823
-
3824
- &:hover {
3825
- background: var(--color-secondary-500);
3826
- }
3827
-
3828
- &:active {
3829
- background: var(--color-secondary-400);
3830
- }
3593
+ &:hover { background: var(--color-secondary-500); }
3594
+ &:active { background: var(--color-secondary-400); }
3831
3595
  }
3832
3596
  }
3833
3597
 
3834
3598
  * {
3835
3599
  scrollbar-width: thin;
3836
3600
  scrollbar-color: var(--color-secondary-300) transparent;
3837
-
3838
- @media (prefers-color-scheme: dark) {
3839
- scrollbar-color: var(--color-secondary-600) transparent;
3840
- }
3841
- }
3842
-
3843
- /* Hover effect for scrollable containers */
3844
- *:hover {
3845
- scrollbar-color: var(--color-secondary-400) transparent;
3846
- }
3847
-
3848
- @media (prefers-color-scheme: dark) {
3849
- *:hover {
3850
- scrollbar-color: var(--color-secondary-500) transparent;
3851
- }
3601
+ @media (prefers-color-scheme: dark) { scrollbar-color: var(--color-secondary-600) transparent; }
3852
3602
  }
3603
+ *:hover { scrollbar-color: var(--color-secondary-400) transparent; }
3604
+ @media (prefers-color-scheme: dark) { *:hover { scrollbar-color: var(--color-secondary-500) transparent; } }
3853
3605
 
3854
3606
 
3855
3607
 
3856
3608
  /* Alert dark mode adjustments */
3857
- html[data-theme="dark"] .alert-success {
3858
- background-color: var(--color-success-50);
3859
- border-color: var(--color-success-500);
3860
- color: var(--color-success-900);
3861
- }
3862
-
3863
- html[data-theme="dark"] .alert-info {
3864
- background-color: var(--color-info-50);
3865
- border-color: var(--color-info-500);
3866
- color: var(--color-info-900);
3867
- }
3868
-
3869
- html[data-theme="dark"] .alert-warning {
3870
- background-color: var(--color-warning-50);
3871
- border-color: var(--color-warning-500);
3872
- color: var(--color-warning-900);
3873
- }
3874
-
3875
- html[data-theme="dark"] .alert-danger,
3876
- html[data-theme="dark"] .alert-error {
3877
- background-color: var(--color-danger-50);
3878
- border-color: var(--color-danger-500);
3879
- color: var(--color-danger-900);
3880
- }
3881
-
3882
- /* Dim images in dark mode */
3883
- html[data-theme="dark"] img,
3884
- html[data-theme="dark"] video {
3885
- opacity: 0.8;
3886
- transition: opacity var(--transition-normal);
3887
- }
3888
-
3889
- html[data-theme="dark"] img:hover,
3890
- html[data-theme="dark"] video:hover {
3891
- opacity: 1;
3609
+ html[data-theme="dark"] {
3610
+ .alert-success { background-color: var(--color-success-50); border-color: var(--color-success-500); color: var(--color-success-900); }
3611
+ .alert-info { background-color: var(--color-info-50); border-color: var(--color-info-500); color: var(--color-info-900); }
3612
+ .alert-warning { background-color: var(--color-warning-50); border-color: var(--color-warning-500); color: var(--color-warning-900); }
3613
+ .alert-danger, .alert-error { background-color: var(--color-danger-50); border-color: var(--color-danger-500); color: var(--color-danger-900); }
3614
+ img, video { opacity: 0.8; transition: opacity var(--transition-normal); }
3615
+ img:hover, video:hover { opacity: 1; }
3892
3616
  }
3893
3617
 
3894
3618
  }