zdp-design-system 0.43.8

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 (110) hide show
  1. package/CHANGELOG.md +449 -0
  2. package/LICENSE +21 -0
  3. package/README.md +568 -0
  4. package/THIRD_PARTY_NOTICES.md +34 -0
  5. package/dist/code.ts +2 -0
  6. package/dist/combobox.ts +9 -0
  7. package/dist/command.ts +1 -0
  8. package/dist/components/Accordion.svelte +97 -0
  9. package/dist/components/Avatar.svelte +90 -0
  10. package/dist/components/Badge.svelte +61 -0
  11. package/dist/components/Breadcrumb.svelte +97 -0
  12. package/dist/components/Button.svelte +163 -0
  13. package/dist/components/Callout.svelte +81 -0
  14. package/dist/components/Card.svelte +151 -0
  15. package/dist/components/CardHeader.svelte +58 -0
  16. package/dist/components/Checkbox.svelte +135 -0
  17. package/dist/components/CodeBlock.svelte +247 -0
  18. package/dist/components/Combobox.svelte +552 -0
  19. package/dist/components/CommandField.svelte +230 -0
  20. package/dist/components/ConfirmAction.svelte +307 -0
  21. package/dist/components/Container.svelte +63 -0
  22. package/dist/components/Dialog.svelte +303 -0
  23. package/dist/components/Disclosure.svelte +176 -0
  24. package/dist/components/Divider.svelte +41 -0
  25. package/dist/components/EmptyState.svelte +79 -0
  26. package/dist/components/ErrorText.svelte +18 -0
  27. package/dist/components/Field.svelte +38 -0
  28. package/dist/components/Grid.svelte +76 -0
  29. package/dist/components/HelpText.svelte +17 -0
  30. package/dist/components/Icon.svelte +45 -0
  31. package/dist/components/IconButton.svelte +162 -0
  32. package/dist/components/IdentityChip.svelte +130 -0
  33. package/dist/components/Inline.svelte +85 -0
  34. package/dist/components/InlineCode.svelte +27 -0
  35. package/dist/components/Input.svelte +109 -0
  36. package/dist/components/Kbd.svelte +63 -0
  37. package/dist/components/KeyValue.svelte +73 -0
  38. package/dist/components/Label.svelte +43 -0
  39. package/dist/components/Link.svelte +70 -0
  40. package/dist/components/LocaleSwitcher.svelte +209 -0
  41. package/dist/components/Menu.svelte +491 -0
  42. package/dist/components/Page.svelte +36 -0
  43. package/dist/components/PageHeader.svelte +93 -0
  44. package/dist/components/Pagination.svelte +297 -0
  45. package/dist/components/Popover.svelte +208 -0
  46. package/dist/components/Progress.svelte +111 -0
  47. package/dist/components/Radio.svelte +132 -0
  48. package/dist/components/Section.svelte +52 -0
  49. package/dist/components/SegmentedControl.svelte +190 -0
  50. package/dist/components/Select.svelte +88 -0
  51. package/dist/components/ShareDock.svelte +304 -0
  52. package/dist/components/Sheet.svelte +332 -0
  53. package/dist/components/ShortcutHint.svelte +52 -0
  54. package/dist/components/Skeleton.svelte +82 -0
  55. package/dist/components/SkipLink.svelte +40 -0
  56. package/dist/components/SortHeader.svelte +138 -0
  57. package/dist/components/Spinner.svelte +82 -0
  58. package/dist/components/Stack.svelte +62 -0
  59. package/dist/components/StatusToast.svelte +133 -0
  60. package/dist/components/Surface.svelte +53 -0
  61. package/dist/components/Switch.svelte +152 -0
  62. package/dist/components/Table.svelte +94 -0
  63. package/dist/components/TableToolbar.svelte +195 -0
  64. package/dist/components/Tabs.svelte +205 -0
  65. package/dist/components/TermSheet.svelte +392 -0
  66. package/dist/components/TermTrigger.svelte +70 -0
  67. package/dist/components/TextScaleControl.svelte +219 -0
  68. package/dist/components/Textarea.svelte +106 -0
  69. package/dist/components/ThemeToggle.svelte +148 -0
  70. package/dist/components/Toast.svelte +180 -0
  71. package/dist/components/Toolbar.svelte +83 -0
  72. package/dist/components/Tooltip.svelte +199 -0
  73. package/dist/components/VisuallyHidden.svelte +18 -0
  74. package/dist/disclosure.ts +11 -0
  75. package/dist/focusable.ts +36 -0
  76. package/dist/identity.ts +5 -0
  77. package/dist/index.d.ts +106 -0
  78. package/dist/index.js +76 -0
  79. package/dist/index.ts +106 -0
  80. package/dist/menu.ts +12 -0
  81. package/dist/modal-layer.ts +108 -0
  82. package/dist/pagination.ts +10 -0
  83. package/dist/preferences.js +14 -0
  84. package/dist/preferences.ts +36 -0
  85. package/dist/progress.ts +4 -0
  86. package/dist/schemas/design-tokens.schema.json +119 -0
  87. package/dist/segmented.ts +8 -0
  88. package/dist/share.d.ts +48 -0
  89. package/dist/share.js +115 -0
  90. package/dist/share.ts +99 -0
  91. package/dist/sheet.ts +3 -0
  92. package/dist/shortcuts.js +125 -0
  93. package/dist/shortcuts.ts +153 -0
  94. package/dist/styles/brand-fonts.css +10 -0
  95. package/dist/styles/components.css +4686 -0
  96. package/dist/styles/expressive-fonts.css +2 -0
  97. package/dist/styles/index.css +2 -0
  98. package/dist/styles/locale-fonts.css +4 -0
  99. package/dist/styles/tokens.css +413 -0
  100. package/dist/table-tools.ts +10 -0
  101. package/dist/term.ts +16 -0
  102. package/dist/theme.ts +2 -0
  103. package/dist/toast.ts +14 -0
  104. package/dist/tokens/zdp.tokens.json +241 -0
  105. package/dist/tokens.js +122 -0
  106. package/dist/tokens.ts +123 -0
  107. package/docs/CONSUMER_CONTRACT.md +482 -0
  108. package/docs/EXTERNAL_UI_ADOPTION.md +141 -0
  109. package/docs/INTERACTIVE_PRIMITIVE_AUDIT.md +127 -0
  110. package/package.json +78 -0
@@ -0,0 +1,2 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=Cabin:ital,wght@0,400..700;1,400..700&family=Caesar+Dressing&family=Copse&family=Fredericka+the+Great&family=Google+Sans&family=Libertinus+Keyboard&family=Merriweather:ital,wght@0,400;0,700;1,400&family=Tangerine:wght@400;700&display=swap");
2
+
@@ -0,0 +1,2 @@
1
+ @import "./tokens.css";
2
+ @import "./components.css";
@@ -0,0 +1,4 @@
1
+ @import url("https://cdn.jsdelivr.net/npm/@fontsource-variable/manrope@5.2.8/index.css");
2
+ @import url("https://cdn.jsdelivr.net/npm/@fontsource-variable/noto-sans-sc@5.2.10/index.css");
3
+ @import url("https://cdn.jsdelivr.net/npm/@fontsource-variable/noto-sans-devanagari@5.2.8/index.css");
4
+ @import url("https://cdn.jsdelivr.net/npm/@fontsource-variable/noto-sans-jp@5.2.10/index.css");
@@ -0,0 +1,413 @@
1
+ @import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css");
2
+
3
+ :root,
4
+ [data-zdp-theme="light"] {
5
+ --zdp-color-ink-strong: #2f2418;
6
+ --zdp-color-ink-normal: #4a3826;
7
+ --zdp-color-ink-muted: #776955;
8
+ --zdp-color-ink-inverse: #fff8ea;
9
+ --zdp-color-surface-canvas: #f7f1e3;
10
+ --zdp-color-surface-panel: #fff8ea;
11
+ --zdp-color-surface-raised: #f1e4cc;
12
+ --zdp-color-surface-inverse: #2f2418;
13
+ --zdp-color-line-subtle: #d8c8ac;
14
+ --zdp-color-line-strong: #b89a6a;
15
+ --zdp-color-line-focus: #8b6f45;
16
+ --zdp-color-focus-surface: #e7c97a;
17
+ --zdp-color-focus-text: #1f160d;
18
+ --zdp-color-focus-line: #1f160d;
19
+ --zdp-color-scrollbar-track: #f1e4cc;
20
+ --zdp-color-scrollbar-thumb: #b89a6a;
21
+ --zdp-color-scrollbar-thumb-hover: #8b6f45;
22
+ --zdp-color-selection-surface: #e7c97a;
23
+ --zdp-color-selection-text: #1f160d;
24
+ --zdp-color-accent-primary: #d8c8ac;
25
+ --zdp-color-accent-primary-strong: #b89a6a;
26
+ --zdp-color-accent-primary-soft: #f1e4cc;
27
+ --zdp-color-accent-success: #8a9076;
28
+ --zdp-color-accent-warning: #a9824f;
29
+ --zdp-color-accent-danger: #8b5a4d;
30
+ --zdp-space-0: 0;
31
+ --zdp-space-1: 0.25rem;
32
+ --zdp-space-2: 0.5rem;
33
+ --zdp-space-3: 0.75rem;
34
+ --zdp-space-4: 1rem;
35
+ --zdp-space-5: 1.25rem;
36
+ --zdp-space-6: 1.5rem;
37
+ --zdp-space-8: 2rem;
38
+ --zdp-space-10: 2.5rem;
39
+ --zdp-space-12: 3rem;
40
+ --zdp-radius-none: 0;
41
+ --zdp-radius-sm: 0.25rem;
42
+ --zdp-radius-md: 0.375rem;
43
+ --zdp-radius-lg: 0.5rem;
44
+ --zdp-radius-pill: 999px;
45
+ --zdp-font-family-sans: "Pretendard Variable", Pretendard, "Manrope Variable", Manrope, "Inter Variable", Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
46
+ --zdp-font-family-latin: "Manrope Variable", Manrope, "Inter Variable", Inter, "Pretendard Variable", Pretendard, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
47
+ --zdp-font-family-korean: "Pretendard Variable", Pretendard, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
48
+ --zdp-font-family-chinese: "Noto Sans SC Variable", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Pretendard Variable", Pretendard, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
49
+ --zdp-font-family-devanagari: "Noto Sans Devanagari Variable", "Noto Sans Devanagari", "Nirmala UI", "Kohinoor Devanagari", ui-sans-serif, system-ui, sans-serif;
50
+ --zdp-font-family-japanese: "Noto Sans JP Variable", "Noto Sans JP", "Hiragino Sans", "Yu Gothic", "Meiryo", "Pretendard Variable", Pretendard, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
51
+ --zdp-font-family-multiscript: "Pretendard Variable", Pretendard, "Manrope Variable", Manrope, "Inter Variable", Inter, "Noto Sans SC Variable", "Noto Sans SC", "Noto Sans JP Variable", "Noto Sans JP", "Noto Sans Devanagari Variable", "Noto Sans Devanagari", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "PingFang SC", "Microsoft YaHei", "Hiragino Sans", "Yu Gothic", "Meiryo", "Nirmala UI", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
52
+ --zdp-font-family-serif: Cardo, Georgia, "Times New Roman", ui-serif, serif;
53
+ --zdp-font-family-display: "Pretendard Variable", Pretendard, "Manrope Variable", Manrope, "Inter Variable", Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
54
+ --zdp-font-family-brand: "Playwrite AU VIC Guides", "Pretendard Variable", Pretendard, "Manrope Variable", Manrope, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
55
+ --zdp-font-family-expression-script: Tangerine, "Playwrite AU VIC Guides", cursive;
56
+ --zdp-font-family-expression-inscription: "Caesar Dressing", "Fredericka the Great", fantasy;
57
+ --zdp-font-family-expression-sketch: "Fredericka the Great", "Caesar Dressing", fantasy;
58
+ --zdp-font-family-expression-editorial: Merriweather, Copse, Cardo, Georgia, "Times New Roman", ui-serif, serif;
59
+ --zdp-font-family-expression-sans: "Google Sans", Cabin, "Pretendard Variable", Pretendard, "Manrope Variable", Manrope, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
60
+ --zdp-font-family-expression-keyboard: "Libertinus Keyboard", "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
61
+ --zdp-font-family-mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
62
+ --zdp-font-size-xs: 0.875rem;
63
+ --zdp-font-size-sm: 1rem;
64
+ --zdp-font-size-md: 1.0625rem;
65
+ --zdp-font-size-lg: 1.1875rem;
66
+ --zdp-font-size-xl: 1.375rem;
67
+ --zdp-font-weight-regular: 400;
68
+ --zdp-font-weight-medium: 500;
69
+ --zdp-font-weight-semibold: 600;
70
+ --zdp-font-weight-bold: 700;
71
+ --zdp-font-line-height-tight: 1.2;
72
+ --zdp-font-line-height-normal: 1.6;
73
+ --zdp-font-line-height-relaxed: 1.65;
74
+ --zdp-type-body-size: 1.125rem;
75
+ --zdp-type-body-line-height: 1.6;
76
+ --zdp-type-body-small-size: 1rem;
77
+ --zdp-type-body-small-line-height: 1.6;
78
+ --zdp-type-page-title-size: 2.75rem;
79
+ --zdp-type-page-title-compact-size: 2rem;
80
+ --zdp-type-page-title-line-height: 1.15;
81
+ --zdp-type-title-size: 1.375rem;
82
+ --zdp-type-title-line-height: 1.2;
83
+ --zdp-type-label-size: 0.875rem;
84
+ --zdp-type-label-line-height: 1.2;
85
+ --zdp-type-caption-size: 0.875rem;
86
+ --zdp-type-caption-line-height: 1.4;
87
+ --zdp-type-control-size: 1rem;
88
+ --zdp-type-control-line-height: 1.2;
89
+ --zdp-type-data-size: 1rem;
90
+ --zdp-type-data-line-height: 1.4;
91
+ --zdp-breakpoint-mobile: 40rem;
92
+ --zdp-breakpoint-tablet: 64rem;
93
+ --zdp-breakpoint-desktop: 80rem;
94
+ --zdp-breakpoint-wide: 96rem;
95
+ --zdp-control-height-sm: 2.25rem;
96
+ --zdp-control-height-md: 2.75rem;
97
+ --zdp-control-icon-sm: 2.25rem;
98
+ --zdp-control-icon-md: 2.75rem;
99
+ --zdp-control-glyph-sm: 1rem;
100
+ --zdp-control-glyph-md: 1.25rem;
101
+ --zdp-control-choice-size: 1.25rem;
102
+ --zdp-control-choice-indicator-size: 0.5rem;
103
+ --zdp-control-switch-width: 2.25rem;
104
+ --zdp-control-switch-height: 1.25rem;
105
+ --zdp-control-switch-thumb-size: 0.875rem;
106
+ --zdp-control-switch-thumb-offset: 0.125rem;
107
+ --zdp-control-switch-thumb-checked-offset: 1.125rem;
108
+ --zdp-control-radius: 0.375rem;
109
+ --zdp-control-border-width: 1px;
110
+ --zdp-control-focus-outline-width: 3px;
111
+ --zdp-control-focus-outline-offset: 2px;
112
+ --zdp-control-focus-underline-width: 3px;
113
+ --zdp-control-scrollbar-size: 0.5rem;
114
+ --zdp-control-hit-target: 2.75rem;
115
+ --zdp-i18n-text-wrap: pretty;
116
+ --zdp-i18n-word-break: normal;
117
+ --zdp-i18n-overflow-wrap: anywhere;
118
+ --zdp-i18n-hyphens: auto;
119
+ /* Flat UI contract: use surface tones and borders for depth, not decorative shadows. */
120
+ --zdp-shadow-focus: none;
121
+ --zdp-shadow-sm: none;
122
+ --zdp-shadow-md: none;
123
+ --zdp-motion-fast: 120ms;
124
+ --zdp-motion-normal: 180ms;
125
+ }
126
+
127
+ [data-zdp-theme="dark"] {
128
+ --zdp-color-ink-strong: #fff8ea;
129
+ --zdp-color-ink-normal: #f1e4cc;
130
+ --zdp-color-ink-muted: #d8c8ac;
131
+ --zdp-color-ink-inverse: #2f2418;
132
+ --zdp-color-surface-canvas: #241c14;
133
+ --zdp-color-surface-panel: #2f2418;
134
+ --zdp-color-surface-raised: #44321f;
135
+ --zdp-color-surface-inverse: #fff8ea;
136
+ --zdp-color-line-subtle: #68553a;
137
+ --zdp-color-line-strong: #b89a6a;
138
+ --zdp-color-line-focus: #d8c8ac;
139
+ --zdp-color-focus-surface: #e7c97a;
140
+ --zdp-color-focus-text: #1f160d;
141
+ --zdp-color-focus-line: #1f160d;
142
+ --zdp-color-scrollbar-track: #44321f;
143
+ --zdp-color-scrollbar-thumb: #b89a6a;
144
+ --zdp-color-scrollbar-thumb-hover: #d8c8ac;
145
+ --zdp-color-selection-surface: #e7c97a;
146
+ --zdp-color-selection-text: #1f160d;
147
+ --zdp-color-accent-primary: #d8c8ac;
148
+ --zdp-color-accent-primary-strong: #e7c97a;
149
+ --zdp-color-accent-primary-soft: #68553a;
150
+ --zdp-color-accent-success: #a8ad91;
151
+ --zdp-color-accent-warning: #c6a46a;
152
+ --zdp-color-accent-danger: #bd8a78;
153
+ }
154
+
155
+ @supports (color: oklch(50% 0.1 240)) {
156
+ :root,
157
+ [data-zdp-theme="light"] {
158
+ --zdp-color-ink-strong: oklch(27% 0.04 70);
159
+ --zdp-color-ink-normal: oklch(36% 0.05 70);
160
+ --zdp-color-ink-muted: oklch(50% 0.035 82);
161
+ --zdp-color-ink-inverse: oklch(98% 0.025 86);
162
+ --zdp-color-surface-canvas: oklch(95% 0.03 86);
163
+ --zdp-color-surface-panel: oklch(98% 0.025 86);
164
+ --zdp-color-surface-raised: oklch(91% 0.045 82);
165
+ --zdp-color-surface-inverse: oklch(27% 0.04 70);
166
+ --zdp-color-line-subtle: oklch(82% 0.045 82);
167
+ --zdp-color-line-strong: oklch(70% 0.08 76);
168
+ --zdp-color-line-focus: oklch(55% 0.075 76);
169
+ --zdp-color-focus-surface: oklch(84% 0.1 86);
170
+ --zdp-color-focus-text: oklch(20% 0.035 70);
171
+ --zdp-color-focus-line: oklch(20% 0.035 70);
172
+ --zdp-color-scrollbar-track: oklch(91% 0.045 82);
173
+ --zdp-color-scrollbar-thumb: oklch(70% 0.08 76);
174
+ --zdp-color-scrollbar-thumb-hover: oklch(55% 0.075 76);
175
+ --zdp-color-selection-surface: oklch(84% 0.1 86);
176
+ --zdp-color-selection-text: oklch(20% 0.035 70);
177
+ --zdp-color-accent-primary: oklch(82% 0.045 82);
178
+ --zdp-color-accent-primary-strong: oklch(70% 0.08 76);
179
+ --zdp-color-accent-primary-soft: oklch(91% 0.045 82);
180
+ --zdp-color-accent-success: oklch(63% 0.035 105);
181
+ --zdp-color-accent-warning: oklch(60% 0.075 68);
182
+ --zdp-color-accent-danger: oklch(48% 0.06 35);
183
+ }
184
+
185
+ [data-zdp-theme="dark"] {
186
+ --zdp-color-ink-strong: oklch(98% 0.025 86);
187
+ --zdp-color-ink-normal: oklch(91% 0.045 82);
188
+ --zdp-color-ink-muted: oklch(82% 0.045 82);
189
+ --zdp-color-ink-inverse: oklch(27% 0.04 70);
190
+ --zdp-color-surface-canvas: oklch(23% 0.035 70);
191
+ --zdp-color-surface-panel: oklch(27% 0.04 70);
192
+ --zdp-color-surface-raised: oklch(34% 0.05 70);
193
+ --zdp-color-surface-inverse: oklch(98% 0.025 86);
194
+ --zdp-color-line-subtle: oklch(43% 0.055 76);
195
+ --zdp-color-line-strong: oklch(70% 0.08 76);
196
+ --zdp-color-line-focus: oklch(82% 0.045 82);
197
+ --zdp-color-focus-surface: oklch(84% 0.1 86);
198
+ --zdp-color-focus-text: oklch(20% 0.035 70);
199
+ --zdp-color-focus-line: oklch(20% 0.035 70);
200
+ --zdp-color-scrollbar-track: oklch(34% 0.05 70);
201
+ --zdp-color-scrollbar-thumb: oklch(70% 0.08 76);
202
+ --zdp-color-scrollbar-thumb-hover: oklch(82% 0.045 82);
203
+ --zdp-color-selection-surface: oklch(84% 0.1 86);
204
+ --zdp-color-selection-text: oklch(20% 0.035 70);
205
+ --zdp-color-accent-primary: oklch(82% 0.045 82);
206
+ --zdp-color-accent-primary-strong: oklch(84% 0.1 86);
207
+ --zdp-color-accent-primary-soft: oklch(43% 0.055 76);
208
+ --zdp-color-accent-success: oklch(72% 0.035 105);
209
+ --zdp-color-accent-warning: oklch(70% 0.065 70);
210
+ --zdp-color-accent-danger: oklch(66% 0.055 35);
211
+ }
212
+ }
213
+
214
+ .zdp-surface-reset {
215
+ box-sizing: border-box;
216
+ color: var(--zdp-color-ink-normal);
217
+ font-family: var(--zdp-font-family-sans);
218
+ line-height: var(--zdp-font-line-height-normal);
219
+ hyphens: var(--zdp-i18n-hyphens);
220
+ overflow-wrap: var(--zdp-i18n-overflow-wrap);
221
+ scrollbar-color: var(--zdp-color-scrollbar-thumb) var(--zdp-color-scrollbar-track);
222
+ scrollbar-width: thin;
223
+ text-wrap: var(--zdp-i18n-text-wrap);
224
+ word-break: var(--zdp-i18n-word-break);
225
+ }
226
+
227
+ .zdp-surface-reset *,
228
+ .zdp-surface-reset {
229
+ scrollbar-color: var(--zdp-color-scrollbar-thumb) var(--zdp-color-scrollbar-track);
230
+ scrollbar-width: thin;
231
+ }
232
+
233
+ .zdp-surface-reset::-webkit-scrollbar,
234
+ .zdp-surface-reset *::-webkit-scrollbar {
235
+ height: var(--zdp-control-scrollbar-size);
236
+ width: var(--zdp-control-scrollbar-size);
237
+ }
238
+
239
+ .zdp-surface-reset::-webkit-scrollbar-track,
240
+ .zdp-surface-reset *::-webkit-scrollbar-track {
241
+ background: var(--zdp-color-scrollbar-track);
242
+ }
243
+
244
+ .zdp-surface-reset::-webkit-scrollbar-thumb,
245
+ .zdp-surface-reset *::-webkit-scrollbar-thumb {
246
+ background-color: var(--zdp-color-scrollbar-thumb);
247
+ border: 1px solid var(--zdp-color-scrollbar-track);
248
+ border-radius: var(--zdp-radius-sm);
249
+ }
250
+
251
+ .zdp-surface-reset::-webkit-scrollbar-thumb:hover,
252
+ .zdp-surface-reset *::-webkit-scrollbar-thumb:hover {
253
+ background-color: var(--zdp-color-scrollbar-thumb-hover);
254
+ }
255
+
256
+ .zdp-surface-reset::selection,
257
+ .zdp-surface-reset *::selection {
258
+ background: var(--zdp-color-selection-surface);
259
+ color: var(--zdp-color-selection-text);
260
+ }
261
+
262
+ .zdp-surface-reset::-webkit-scrollbar-corner,
263
+ .zdp-surface-reset *::-webkit-scrollbar-corner {
264
+ background: var(--zdp-color-scrollbar-track);
265
+ }
266
+
267
+ .zdp-surface-reset:lang(en),
268
+ .zdp-surface-reset:lang(es),
269
+ .zdp-surface-reset:lang(fr) {
270
+ --zdp-font-family-sans: var(--zdp-font-family-latin);
271
+ --zdp-font-family-display: var(--zdp-font-family-latin);
272
+ hyphens: auto;
273
+ }
274
+
275
+ .zdp-surface-reset :lang(en),
276
+ .zdp-surface-reset :lang(es),
277
+ .zdp-surface-reset :lang(fr) {
278
+ font-family: var(--zdp-font-family-latin);
279
+ hyphens: auto;
280
+ }
281
+
282
+ .zdp-surface-reset:lang(ko) {
283
+ --zdp-font-family-sans: var(--zdp-font-family-korean);
284
+ --zdp-font-family-display: var(--zdp-font-family-korean);
285
+ letter-spacing: -0.01em;
286
+ overflow-wrap: break-word;
287
+ word-break: keep-all;
288
+ }
289
+
290
+ .zdp-surface-reset :lang(ko) {
291
+ font-family: var(--zdp-font-family-korean);
292
+ letter-spacing: -0.01em;
293
+ overflow-wrap: break-word;
294
+ word-break: keep-all;
295
+ }
296
+
297
+ .zdp-surface-reset:lang(zh),
298
+ .zdp-surface-reset:lang(zh-CN),
299
+ .zdp-surface-reset:lang(zh-Hans) {
300
+ --zdp-font-family-sans: var(--zdp-font-family-chinese);
301
+ --zdp-font-family-display: var(--zdp-font-family-chinese);
302
+ letter-spacing: 0.02em;
303
+ line-break: strict;
304
+ word-break: normal;
305
+ }
306
+
307
+ .zdp-surface-reset :lang(zh),
308
+ .zdp-surface-reset :lang(zh-CN),
309
+ .zdp-surface-reset :lang(zh-Hans) {
310
+ font-family: var(--zdp-font-family-chinese);
311
+ letter-spacing: 0.02em;
312
+ line-break: strict;
313
+ word-break: normal;
314
+ }
315
+
316
+ .zdp-surface-reset:lang(hi) {
317
+ --zdp-font-family-sans: var(--zdp-font-family-devanagari);
318
+ --zdp-font-family-display: var(--zdp-font-family-devanagari);
319
+ word-break: normal;
320
+ }
321
+
322
+ .zdp-surface-reset :lang(hi) {
323
+ font-family: var(--zdp-font-family-devanagari);
324
+ word-break: normal;
325
+ }
326
+
327
+ .zdp-surface-reset:lang(ja) {
328
+ --zdp-font-family-sans: var(--zdp-font-family-japanese);
329
+ --zdp-font-family-display: var(--zdp-font-family-japanese);
330
+ line-break: strict;
331
+ word-break: normal;
332
+ }
333
+
334
+ .zdp-surface-reset :lang(ja) {
335
+ font-family: var(--zdp-font-family-japanese);
336
+ line-break: strict;
337
+ word-break: normal;
338
+ }
339
+
340
+ .zdp-surface-reset *,
341
+ .zdp-surface-reset *::before,
342
+ .zdp-surface-reset *::after {
343
+ box-sizing: inherit;
344
+ }
345
+
346
+ .zdp-surface-reset a:not(.zdp-button):not(.zdp-icon-button):not(.zdp-share-action) {
347
+ color: var(--zdp-color-ink-normal);
348
+ font-weight: var(--zdp-font-weight-semibold);
349
+ text-decoration-line: none;
350
+ transition: color var(--zdp-motion-fast) ease;
351
+ }
352
+
353
+ .zdp-surface-reset a:not(.zdp-button):not(.zdp-icon-button):not(.zdp-share-action):hover {
354
+ color: var(--zdp-color-ink-strong);
355
+ }
356
+
357
+ .zdp-surface-reset a:not(.zdp-button):not(.zdp-icon-button):not(.zdp-share-action):focus-visible {
358
+ background: var(--zdp-color-focus-surface);
359
+ border-bottom: var(--zdp-control-focus-underline-width) solid var(--zdp-color-focus-line);
360
+ border-radius: var(--zdp-radius-none);
361
+ box-decoration-break: clone;
362
+ color: var(--zdp-color-focus-text);
363
+ outline: var(--zdp-control-focus-outline-width) solid var(--zdp-color-focus-surface);
364
+ outline-offset: 0;
365
+ text-decoration-line: none;
366
+ -webkit-box-decoration-break: clone;
367
+ }
368
+
369
+ [data-zdp-theme="dark"].zdp-surface-reset a:not(.zdp-button):not(.zdp-icon-button):not(.zdp-share-action),
370
+ [data-zdp-theme="dark"] .zdp-surface-reset a:not(.zdp-button):not(.zdp-icon-button):not(.zdp-share-action) {
371
+ color: var(--zdp-color-ink-normal);
372
+ }
373
+
374
+ [data-zdp-theme="dark"].zdp-surface-reset a:not(.zdp-button):not(.zdp-icon-button):not(.zdp-share-action):hover,
375
+ [data-zdp-theme="dark"] .zdp-surface-reset a:not(.zdp-button):not(.zdp-icon-button):not(.zdp-share-action):hover {
376
+ color: var(--zdp-color-ink-strong);
377
+ }
378
+
379
+ .zdp-surface-reset :where(input, textarea, select) {
380
+ background: var(--zdp-color-surface-panel);
381
+ border: var(--zdp-control-border-width) solid var(--zdp-color-line-strong);
382
+ border-radius: var(--zdp-control-radius);
383
+ color: var(--zdp-color-ink-strong);
384
+ font: inherit;
385
+ font-size: var(--zdp-type-control-size);
386
+ line-height: var(--zdp-type-control-line-height);
387
+ min-height: var(--zdp-control-height-md);
388
+ padding: 0 var(--zdp-space-3);
389
+ transition:
390
+ background-color var(--zdp-motion-fast) ease,
391
+ border-color var(--zdp-motion-fast) ease,
392
+ color var(--zdp-motion-fast) ease;
393
+ }
394
+
395
+ .zdp-surface-reset :where(textarea) {
396
+ min-height: 6rem;
397
+ padding-bottom: var(--zdp-space-3);
398
+ padding-top: var(--zdp-space-3);
399
+ }
400
+
401
+ .zdp-surface-reset :where(input, textarea, select):focus-visible {
402
+ border-color: var(--zdp-color-focus-line);
403
+ outline: var(--zdp-control-focus-outline-width) solid var(--zdp-color-focus-surface);
404
+ outline-offset: var(--zdp-control-focus-outline-offset);
405
+ }
406
+
407
+ @media (prefers-reduced-motion: reduce) {
408
+ :root,
409
+ [data-zdp-theme] {
410
+ --zdp-motion-fast: 1ms;
411
+ --zdp-motion-normal: 1ms;
412
+ }
413
+ }
@@ -0,0 +1,10 @@
1
+ export type ZdpSortDirection = 'none' | 'ascending' | 'descending';
2
+
3
+ export type ZdpTableDensity = 'default' | 'compact';
4
+
5
+ export interface ZdpTableToolbarDensityItem {
6
+ readonly id: ZdpTableDensity;
7
+ readonly label: string;
8
+ readonly ariaLabel?: string;
9
+ readonly disabled?: boolean;
10
+ }
package/dist/term.ts ADDED
@@ -0,0 +1,16 @@
1
+ export interface ZdpTermRelatedTerm {
2
+ readonly id: string;
3
+ readonly label: string;
4
+ }
5
+
6
+ export interface ZdpTermSheetTerm {
7
+ readonly id: string;
8
+ readonly label: string;
9
+ readonly short: string;
10
+ readonly long?: string;
11
+ readonly example?: string;
12
+ readonly relatedTerms?: readonly ZdpTermRelatedTerm[];
13
+ readonly canonicalPath?: string;
14
+ }
15
+
16
+ export type ZdpTermSheetPlacement = 'right' | 'bottom';
package/dist/theme.ts ADDED
@@ -0,0 +1,2 @@
1
+ export type ZdpThemeMode = 'light' | 'dark';
2
+ export type ZdpThemeToggleSize = 'sm' | 'md';
package/dist/toast.ts ADDED
@@ -0,0 +1,14 @@
1
+ export type ZdpToastTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger';
2
+
3
+ export interface ZdpStatusToastItem {
4
+ readonly id: string;
5
+ readonly tone?: ZdpToastTone;
6
+ readonly title?: string;
7
+ readonly message: string;
8
+ readonly dismissLabel?: string;
9
+ readonly actionLabel?: string;
10
+ readonly href?: string;
11
+ readonly target?: '_self' | '_blank' | '_parent' | '_top';
12
+ readonly rel?: string;
13
+ readonly onclick?: (event: MouseEvent, item: ZdpStatusToastItem) => void;
14
+ }