@dialpad/dialtone-css 8.80.0-next.3 → 8.80.0-next.5

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 (128) hide show
  1. package/lib/build/js/dialtone_migrate_chip_interactive/index.mjs +367 -0
  2. package/lib/build/js/dialtone_migrate_chip_interactive/test.mjs +244 -0
  3. package/lib/build/js/dialtone_migrate_scrollbar_always/index.mjs +225 -0
  4. package/lib/build/less/components/box.less +2 -0
  5. package/lib/build/less/components/link.less +14 -19
  6. package/lib/build/less/components/notice.less +1 -1
  7. package/lib/build/less/components/rich-text-editor.less +24 -0
  8. package/lib/build/less/components/scrollbar.less +22 -0
  9. package/lib/build/less/dialtone.less +7 -0
  10. package/lib/dist/dialtone-default-theme.css +334 -293
  11. package/lib/dist/dialtone-default-theme.min.css +1 -1
  12. package/lib/dist/dialtone-docs.json +1 -1
  13. package/lib/dist/dialtone.css +50 -15
  14. package/lib/dist/dialtone.min.css +1 -1
  15. package/lib/dist/js/dialtone_migrate_chip_interactive/index.mjs +367 -0
  16. package/lib/dist/js/dialtone_migrate_chip_interactive/test.mjs +244 -0
  17. package/lib/dist/js/dialtone_migrate_scrollbar_always/index.mjs +225 -0
  18. package/lib/dist/tokens/tokens-101-dark.css +141 -135
  19. package/lib/dist/tokens/tokens-101-light.css +164 -158
  20. package/lib/dist/tokens/tokens-102-dark.css +141 -135
  21. package/lib/dist/tokens/tokens-102-light.css +164 -158
  22. package/lib/dist/tokens/tokens-103-dark.css +141 -135
  23. package/lib/dist/tokens/tokens-103-light.css +164 -158
  24. package/lib/dist/tokens/tokens-104-dark.css +141 -135
  25. package/lib/dist/tokens/tokens-104-light.css +164 -158
  26. package/lib/dist/tokens/tokens-105-dark.css +141 -135
  27. package/lib/dist/tokens/tokens-105-light.css +164 -158
  28. package/lib/dist/tokens/tokens-106-dark.css +141 -135
  29. package/lib/dist/tokens/tokens-106-light.css +164 -158
  30. package/lib/dist/tokens/tokens-107-dark.css +141 -135
  31. package/lib/dist/tokens/tokens-107-light.css +164 -158
  32. package/lib/dist/tokens/tokens-108-dark.css +141 -135
  33. package/lib/dist/tokens/tokens-108-light.css +164 -158
  34. package/lib/dist/tokens/tokens-109-dark.css +141 -135
  35. package/lib/dist/tokens/tokens-109-light.css +164 -158
  36. package/lib/dist/tokens/tokens-110-dark.css +141 -135
  37. package/lib/dist/tokens/tokens-110-light.css +164 -158
  38. package/lib/dist/tokens/tokens-111-dark.css +141 -135
  39. package/lib/dist/tokens/tokens-111-light.css +164 -158
  40. package/lib/dist/tokens/tokens-112-dark.css +141 -135
  41. package/lib/dist/tokens/tokens-112-light.css +164 -158
  42. package/lib/dist/tokens/tokens-113-dark.css +141 -135
  43. package/lib/dist/tokens/tokens-113-light.css +164 -158
  44. package/lib/dist/tokens/tokens-114-dark.css +141 -135
  45. package/lib/dist/tokens/tokens-114-light.css +164 -158
  46. package/lib/dist/tokens/tokens-115-dark.css +141 -135
  47. package/lib/dist/tokens/tokens-115-light.css +164 -158
  48. package/lib/dist/tokens/tokens-116-dark.css +141 -135
  49. package/lib/dist/tokens/tokens-116-light.css +164 -158
  50. package/lib/dist/tokens/tokens-117-dark.css +141 -135
  51. package/lib/dist/tokens/tokens-117-light.css +164 -158
  52. package/lib/dist/tokens/tokens-118-dark.css +141 -135
  53. package/lib/dist/tokens/tokens-118-light.css +164 -158
  54. package/lib/dist/tokens/tokens-119-dark.css +141 -135
  55. package/lib/dist/tokens/tokens-119-light.css +164 -158
  56. package/lib/dist/tokens/tokens-120-dark.css +141 -135
  57. package/lib/dist/tokens/tokens-120-light.css +164 -158
  58. package/lib/dist/tokens/tokens-121-dark.css +141 -135
  59. package/lib/dist/tokens/tokens-121-light.css +164 -158
  60. package/lib/dist/tokens/tokens-122-dark.css +141 -135
  61. package/lib/dist/tokens/tokens-122-light.css +164 -158
  62. package/lib/dist/tokens/tokens-123-dark.css +141 -135
  63. package/lib/dist/tokens/tokens-123-light.css +164 -158
  64. package/lib/dist/tokens/tokens-124-dark.css +141 -135
  65. package/lib/dist/tokens/tokens-124-light.css +164 -158
  66. package/lib/dist/tokens/tokens-125-dark.css +141 -135
  67. package/lib/dist/tokens/tokens-125-light.css +164 -158
  68. package/lib/dist/tokens/tokens-126-dark.css +141 -135
  69. package/lib/dist/tokens/tokens-126-light.css +164 -158
  70. package/lib/dist/tokens/tokens-127-dark.css +141 -135
  71. package/lib/dist/tokens/tokens-127-light.css +164 -158
  72. package/lib/dist/tokens/tokens-128-dark.css +141 -135
  73. package/lib/dist/tokens/tokens-128-light.css +164 -158
  74. package/lib/dist/tokens/tokens-129-dark.css +141 -135
  75. package/lib/dist/tokens/tokens-129-light.css +164 -158
  76. package/lib/dist/tokens/tokens-130-dark.css +141 -135
  77. package/lib/dist/tokens/tokens-130-light.css +164 -158
  78. package/lib/dist/tokens/tokens-131-dark.css +141 -135
  79. package/lib/dist/tokens/tokens-131-light.css +164 -158
  80. package/lib/dist/tokens/tokens-132-dark.css +141 -135
  81. package/lib/dist/tokens/tokens-132-light.css +164 -158
  82. package/lib/dist/tokens/tokens-133-dark.css +141 -135
  83. package/lib/dist/tokens/tokens-133-light.css +164 -158
  84. package/lib/dist/tokens/tokens-134-dark.css +141 -135
  85. package/lib/dist/tokens/tokens-134-light.css +164 -158
  86. package/lib/dist/tokens/tokens-135-dark.css +141 -135
  87. package/lib/dist/tokens/tokens-135-light.css +164 -158
  88. package/lib/dist/tokens/tokens-136-dark.css +141 -135
  89. package/lib/dist/tokens/tokens-136-light.css +164 -158
  90. package/lib/dist/tokens/tokens-137-dark.css +141 -135
  91. package/lib/dist/tokens/tokens-137-light.css +164 -158
  92. package/lib/dist/tokens/tokens-aegean-dark.css +164 -158
  93. package/lib/dist/tokens/tokens-aegean-light.css +184 -178
  94. package/lib/dist/tokens/tokens-base-dark.css +98 -98
  95. package/lib/dist/tokens/tokens-base-light.css +98 -98
  96. package/lib/dist/tokens/tokens-botany-dark.css +149 -143
  97. package/lib/dist/tokens/tokens-botany-light.css +171 -165
  98. package/lib/dist/tokens/tokens-buttercream-dark.css +148 -142
  99. package/lib/dist/tokens/tokens-buttercream-light.css +171 -165
  100. package/lib/dist/tokens/tokens-ceruleo-dark.css +164 -158
  101. package/lib/dist/tokens/tokens-ceruleo-light.css +184 -178
  102. package/lib/dist/tokens/tokens-contrast-high-dark.css +3 -3
  103. package/lib/dist/tokens/tokens-contrast-high-light.css +10 -10
  104. package/lib/dist/tokens/tokens-debug-dp.css +28 -22
  105. package/lib/dist/tokens/tokens-dp-dark.css +166 -160
  106. package/lib/dist/tokens/tokens-dp-light.css +186 -180
  107. package/lib/dist/tokens/tokens-expressive-dark.css +163 -157
  108. package/lib/dist/tokens/tokens-expressive-light.css +186 -180
  109. package/lib/dist/tokens/tokens-expressive-sm-dark.css +163 -157
  110. package/lib/dist/tokens/tokens-expressive-sm-light.css +186 -180
  111. package/lib/dist/tokens/tokens-high-desert-dark.css +144 -138
  112. package/lib/dist/tokens/tokens-high-desert-light.css +164 -158
  113. package/lib/dist/tokens/tokens-melon-dark.css +145 -139
  114. package/lib/dist/tokens/tokens-melon-light.css +165 -159
  115. package/lib/dist/tokens/tokens-plum-dark.css +153 -147
  116. package/lib/dist/tokens/tokens-plum-light.css +164 -158
  117. package/lib/dist/tokens/tokens-prota-deuter-dark.css +292 -262
  118. package/lib/dist/tokens/tokens-prota-deuter-light.css +315 -285
  119. package/lib/dist/tokens/tokens-sunflower-dark.css +154 -148
  120. package/lib/dist/tokens/tokens-sunflower-light.css +174 -168
  121. package/lib/dist/tokens/tokens-tmo-dark.css +165 -159
  122. package/lib/dist/tokens/tokens-tmo-light.css +185 -179
  123. package/lib/dist/tokens/tokens-trita-dark.css +239 -197
  124. package/lib/dist/tokens/tokens-trita-light.css +263 -221
  125. package/lib/dist/tokens/tokens-verdant-haze-dark.css +144 -138
  126. package/lib/dist/tokens/tokens-verdant-haze-light.css +164 -158
  127. package/lib/dist/tokens-docs.json +1 -1
  128. package/package.json +11 -4
@@ -0,0 +1,225 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * @fileoverview Migration script for v-dt-scrollbar :never → :always rename.
5
+ *
6
+ * DLT-3158 The `:never` directive argument was renamed to `:always` to reflect
7
+ * its actual meaning (always show the scrollbar, never auto-hide it).
8
+ * The `DtBox` `scrollbar="never"` prop value is similarly renamed to
9
+ * `scrollbar="always"`.
10
+ *
11
+ * This script:
12
+ * - Replaces `v-dt-scrollbar:never` with `v-dt-scrollbar:always` in .vue and .html files.
13
+ * - Replaces `scrollbar="never"` with `scrollbar="always"` (DtBox prop) in .vue files.
14
+ * - Replaces `:scrollbar="'never'"` and `scrollbar='never'` variants in .vue files.
15
+ *
16
+ * Usage:
17
+ * npx dialtone-migrate-scrollbar-always [options]
18
+ *
19
+ * Options:
20
+ * --cwd <path> Working directory (default: cwd)
21
+ * --dry-run Show changes without applying them
22
+ * --yes Apply all changes without prompting
23
+ * --help Show help
24
+ */
25
+
26
+ import fs from 'fs/promises';
27
+ import { realpathSync } from 'node:fs';
28
+ import path from 'path';
29
+ import readline from 'readline';
30
+ import { fileURLToPath } from 'node:url';
31
+
32
+ // ---------------------------------------------------------------------------
33
+ // Transform
34
+ // ---------------------------------------------------------------------------
35
+
36
+ /**
37
+ * Apply all renames to a single file's content.
38
+ * Returns the transformed string (may be identical to input if no matches).
39
+ */
40
+ export function transformContent (content) {
41
+ return content
42
+ // v-dt-scrollbar:never → v-dt-scrollbar:always
43
+ .replace(/v-dt-scrollbar:never\b/g, 'v-dt-scrollbar:always')
44
+ // DtBox scrollbar prop: match the entire opening <dt-box>/<DtBox> tag, rewrite only within it
45
+ .replace(/<(dt-box|DtBox)\b[\s\S]*?>/g, tag =>
46
+ tag
47
+ // scrollbar="never" → scrollbar="always" (unbound prop only; negative lookbehind excludes :scrollbar="never")
48
+ .replace(/(?<!:)\bscrollbar="never"/g, 'scrollbar="always"')
49
+ // scrollbar='never' → scrollbar='always' (unbound prop only)
50
+ .replace(/(?<!:)\bscrollbar='never'/g, 'scrollbar=\'always\'')
51
+ // :scrollbar="'never'" → :scrollbar="'always'"
52
+ .replace(/:scrollbar="'never'"/g, ':scrollbar="\'always\'"')
53
+ // :scrollbar="\"never\"" → :scrollbar="\"always\""
54
+ .replace(/:scrollbar='"never"'/g, ':scrollbar=\'"always"\''),
55
+ );
56
+ }
57
+
58
+ // ---------------------------------------------------------------------------
59
+ // File walker
60
+ // ---------------------------------------------------------------------------
61
+
62
+ function isIgnoredPath (fullPath, ignore) {
63
+ const segments = fullPath.split(path.sep);
64
+ return ignore.some(ig => {
65
+ if (ig.includes('/')) {
66
+ const parts = ig.split('/');
67
+ for (let i = 0; i + parts.length <= segments.length; i++) {
68
+ if (parts.every((p, j) => segments[i + j] === p)) return true;
69
+ }
70
+ return false;
71
+ }
72
+ return segments.includes(ig);
73
+ });
74
+ }
75
+
76
+ async function findFiles (dir, extensions, ignore = []) {
77
+ const results = [];
78
+ async function walk (currentDir) {
79
+ let entries;
80
+ try {
81
+ entries = await fs.readdir(currentDir, { withFileTypes: true });
82
+ } catch {
83
+ return;
84
+ }
85
+ for (const entry of entries) {
86
+ const fullPath = path.join(currentDir, entry.name);
87
+ if (isIgnoredPath(fullPath, ignore)) continue;
88
+ if (entry.isDirectory()) {
89
+ await walk(fullPath);
90
+ } else if (entry.isFile() && extensions.some(ext => entry.name.endsWith(ext))) {
91
+ results.push(fullPath);
92
+ }
93
+ }
94
+ }
95
+ await walk(dir);
96
+ return results;
97
+ }
98
+
99
+ // ---------------------------------------------------------------------------
100
+ // CLI plumbing
101
+ // ---------------------------------------------------------------------------
102
+
103
+ function printHelp () {
104
+ console.log(`
105
+ Usage: npx dialtone-migrate-scrollbar-always [options]
106
+
107
+ Renames the v-dt-scrollbar ":never" directive argument to ":always" (DLT-3158).
108
+ Also renames the DtBox scrollbar="never" prop value to scrollbar="always".
109
+
110
+ Options:
111
+ --cwd <path> Working directory (default: cwd)
112
+ --dry-run Show changes without applying them
113
+ --yes Apply all changes without prompting
114
+ --help Show help
115
+
116
+ Examples:
117
+ npx dialtone-migrate-scrollbar-always
118
+ npx dialtone-migrate-scrollbar-always --dry-run
119
+ npx dialtone-migrate-scrollbar-always --cwd ./src
120
+ npx dialtone-migrate-scrollbar-always --yes
121
+ `);
122
+ }
123
+
124
+ function parseArgs (args) {
125
+ const cwdIndex = args.indexOf('--cwd');
126
+ return {
127
+ help: args.includes('--help'),
128
+ dryRun: args.includes('--dry-run'),
129
+ autoYes: args.includes('--yes'),
130
+ cwd: cwdIndex !== -1 && args[cwdIndex + 1]
131
+ ? path.resolve(args[cwdIndex + 1])
132
+ : process.cwd(),
133
+ };
134
+ }
135
+
136
+ async function prompt (question) {
137
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
138
+ return new Promise(resolve => {
139
+ rl.question(question, answer => {
140
+ rl.close();
141
+ resolve(answer.trim().toLowerCase());
142
+ });
143
+ });
144
+ }
145
+
146
+ async function scanFiles (cwd) {
147
+ const extensions = ['.vue', '.html'];
148
+ const ignore = ['node_modules', 'dist', '.git', '.vuepress/public', '.vuepress/.temp', '.vuepress/.cache', 'storybook-static'];
149
+ const files = await findFiles(cwd, extensions, ignore);
150
+
151
+ const changes = [];
152
+
153
+ for (const file of files) {
154
+ const content = await fs.readFile(file, 'utf8');
155
+ const transformed = transformContent(content);
156
+ if (transformed !== content) {
157
+ changes.push({ file, content, transformed });
158
+ }
159
+ }
160
+
161
+ return changes;
162
+ }
163
+
164
+ async function applyChanges (changes, autoYes) {
165
+ if (!autoYes) {
166
+ const answer = await prompt('\nApply changes? (y/N) ');
167
+ if (answer !== 'y' && answer !== 'yes') {
168
+ console.log('Cancelled.');
169
+ return false;
170
+ }
171
+ }
172
+ for (const { file, transformed } of changes) {
173
+ await fs.writeFile(file, transformed, 'utf8');
174
+ }
175
+ return true;
176
+ }
177
+
178
+ function printChangeSummary (changes, cwd) {
179
+ console.log(`\nFound changes in ${changes.length} file(s):\n`);
180
+ for (const { file } of changes) {
181
+ console.log(` ${path.relative(cwd, file)}`);
182
+ }
183
+ }
184
+
185
+ async function main () {
186
+ const opts = parseArgs(process.argv.slice(2));
187
+ if (opts.help) {
188
+ printHelp();
189
+ process.exit(0);
190
+ }
191
+
192
+ console.log(`\nScanning ${opts.cwd} for v-dt-scrollbar:never and scrollbar="never" usages...`);
193
+
194
+ const changes = await scanFiles(opts.cwd);
195
+
196
+ if (changes.length === 0) {
197
+ console.log('No usages found. Nothing to migrate.');
198
+ process.exit(0);
199
+ }
200
+
201
+ printChangeSummary(changes, opts.cwd);
202
+
203
+ if (opts.dryRun) {
204
+ console.log('\n--dry-run: No files were modified.');
205
+ process.exit(0);
206
+ }
207
+
208
+ const applied = await applyChanges(changes, opts.autoYes);
209
+ if (applied) console.log(`\nMigrated ${changes.length} file(s).\n`);
210
+ }
211
+
212
+ const isDirectRun = (() => {
213
+ try {
214
+ return realpathSync(process.argv[1]) === fileURLToPath(import.meta.url);
215
+ } catch {
216
+ return false;
217
+ }
218
+ })();
219
+
220
+ if (isDirectRun) {
221
+ main().catch(err => {
222
+ console.error(err);
223
+ process.exit(1);
224
+ });
225
+ }
@@ -99,6 +99,7 @@
99
99
  });
100
100
  }
101
101
 
102
+
102
103
  // ============================================================================
103
104
  // $ VALUE LISTS
104
105
  // ----------------------------------------------------------------------------
@@ -140,6 +141,7 @@
140
141
  // Padding cascade: specific → axis → shorthand → 0
141
142
  padding-block: var(--box-pbs, var(--box-pbl, var(--box-p, 0))) var(--box-pbe, var(--box-pbl, var(--box-p, 0)));
142
143
  padding-inline: var(--box-pis, var(--box-pi, var(--box-p, 0))) var(--box-pie, var(--box-pi, var(--box-p, 0)));
144
+
143
145
  }
144
146
 
145
147
  // ============================================================================
@@ -52,7 +52,6 @@
52
52
  }
53
53
 
54
54
  &:active {
55
- // --link-text-decoration: underline;
56
55
  color: var(--link-color-default);
57
56
  }
58
57
 
@@ -191,36 +190,32 @@
191
190
  &--inverted-mention {
192
191
  --link-color-default: var(--dt-color-link-primary-inverted);
193
192
  --link-color-default-hover: var(--dt-color-link-primary-inverted-hover);
194
- --link-text-decoration: none;
195
193
  --link-padding: 0 var(--dt-spacing-25);
196
- --link-background-color: oklch(from var(--dt-color-surface-brand-strong) l c h /0.3);
194
+ --link-background-color: var(--dt-color-link-mention-inverted-background);
197
195
 
198
196
  line-height: var(--dt-font-line-height-200);
199
- border-radius: var(--dt-size-radius-200);
197
+ border-radius: var(--dt-size-radius-300);
198
+
199
+ &:hover {
200
+ --link-background-color: var(--dt-color-link-mention-inverted-background-hover);
201
+ }
200
202
  }
201
203
 
202
204
  // $$ MENTION
203
205
  // ----------------------------------------------------------------------------
204
- // Styling specific to mentions such as @brad.paugh. The underline highlighting
205
- // is reversed compared to a regular link, and it has a light background.
206
+ // Styling for @mention links (e.g. @brad.paugh). Displays as a pill-shaped
207
+ // background using brand surface tokens. Background changes on hover.
206
208
  &--mention {
207
- --link-text-decoration: none;
208
- --link-padding: 0 var(--dt-spacing-25);
209
- --link-background-color: oklch(from var(--dt-color-surface-brand-strong) l c h /0.1);
209
+ --link-color-default: var(--dt-color-link-mention);
210
+ --link-color-default-hover: var(--dt-color-link-mention-hover);
211
+ --link-padding: var(--dt-spacing-1) var(--dt-spacing-25);
212
+ --link-background-color: var(--dt-color-link-mention-background);
210
213
 
211
214
  line-height: var(--dt-font-line-height-200);
212
- border-radius: var(--dt-size-radius-200);
215
+ border-radius: var(--dt-size-radius-300);
213
216
 
214
217
  &:hover {
215
- --link-text-decoration: underline;
216
- --link-background-color: oklch(from var(--dt-color-surface-brand-strong) l c h /0.25);
217
-
218
- text-underline-offset: var(--dt-spacing-25);
219
- text-decoration-thickness: var(--dt-size-border-100);
220
- }
221
-
222
- &:active {
223
- --link-background-color: oklch(from var(--dt-color-surface-brand-strong) l c h /0.1);
218
+ --link-background-color: var(--dt-color-link-mention-background-hover);
224
219
  }
225
220
  }
226
221
  }
@@ -114,7 +114,7 @@
114
114
  .d-notice.d-notice--important,
115
115
  .d-banner.d-banner--important,
116
116
  .d-toast.d-toast--important {
117
- --notice-color-background: var(--dt-color-surface-strong);
117
+ --notice-color-background: var(--dt-color-surface-primary-inverted);
118
118
  --notice-color-text: var(--dt-color-foreground-primary-inverted);
119
119
  --notice-color-icon: var(--notice-color-text);
120
120
  --notice-color-shadow: transparent;
@@ -41,10 +41,34 @@
41
41
  list-style-type: disc;
42
42
  }
43
43
 
44
+ ul ul > li {
45
+ list-style-type: circle;
46
+ }
47
+
48
+ ul ul ul > li {
49
+ list-style-type: square;
50
+ }
51
+
52
+ ul ul ul ul > li {
53
+ list-style-type: disc;
54
+ }
55
+
44
56
  ol > li {
45
57
  list-style-type: decimal;
46
58
  }
47
59
 
60
+ ol ol > li {
61
+ list-style-type: lower-alpha;
62
+ }
63
+
64
+ ol ol ol > li {
65
+ list-style-type: lower-roman;
66
+ }
67
+
68
+ ol ol ol ol > li {
69
+ list-style-type: decimal;
70
+ }
71
+
48
72
  blockquote {
49
73
  margin-inline-start: 0;
50
74
  padding-inline-start: var(--dt-spacing-100);
@@ -30,6 +30,28 @@
30
30
  opacity: var(--dt-opacity-1100);
31
31
  }
32
32
  }
33
+
34
+ // Track offsets via CSS custom properties set by v-dt-scrollbar directive.
35
+ // The base rules (0,3,0) beat OS's non-cornerless rules (0,1,0).
36
+ // The cornerless overrides (0,4,0) beat OS's cornerless rules (0,3,0) which reset
37
+ // top/bottom on vertical and left/right on horizontal — regardless of import order.
38
+ &.os-scrollbar-vertical {
39
+ inset-block-start: var(--dt-scrollbar-offset-block-start, 0);
40
+ inset-inline-end: var(--dt-scrollbar-offset-inline-end, 0);
41
+ }
42
+
43
+ &.os-scrollbar-vertical.os-scrollbar-cornerless {
44
+ inset-block: var(--dt-scrollbar-offset-block-start, 0) var(--dt-scrollbar-offset-block-end, 0);
45
+ }
46
+
47
+ &.os-scrollbar-horizontal {
48
+ inset-block-end: var(--dt-scrollbar-offset-block-end, 0);
49
+ inset-inline-start: var(--dt-scrollbar-offset-inline-start, 0);
50
+ }
51
+
52
+ &.os-scrollbar-horizontal.os-scrollbar-cornerless {
53
+ inset-inline: var(--dt-scrollbar-offset-inline-start, 0) var(--dt-scrollbar-offset-inline-end, 0);
54
+ }
33
55
  }
34
56
  }
35
57
 
@@ -133,3 +133,10 @@
133
133
  }
134
134
  }
135
135
  }
136
+
137
+ @layer dialtone.utilities {
138
+ /*
139
+ [data-dt-brand="prota-deuter"] { --dt-color-surface-info-opaque: oklch(from var(--dt-color-blue-300) l c h / 0.5) !important; }
140
+ [data-dt-brand="prota-deuter"][data-dt-mode="dark"] { --dt-color-surface-info-opaque: oklch(from var(--dt-color-blue-300) l c h / 0.6) !important; }
141
+ */
142
+ }