@orangecheck/design 0.32.1 → 0.32.3

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.
@@ -0,0 +1,205 @@
1
+ /*
2
+ * swagger.css — Swagger UI in the family's dark mode.
3
+ *
4
+ * swagger-ui.css ships light-only, with body text hard-coded to #3b4151, so on
5
+ * a dark page the explorer reads at ~1.6:1 and the Servers band is a white
6
+ * slab. This maps those colours onto the skin tokens under `.dark` only, so
7
+ * light mode is untouched. Opt-in, not part of styles.css; import it after
8
+ * swagger-ui.css:
9
+ *
10
+ * import 'swagger-ui-react/swagger-ui.css';
11
+ * import '@orangecheck/design/styles/swagger.css';
12
+ *
13
+ * The first block mirrors every swagger-ui rule that sets #3b4151 / #000 /
14
+ * #333 (text), #6b6b6b / #606060 / #929292 (secondary text) or a white fill.
15
+ */
16
+ .dark .swagger-ui,
17
+ .dark .swagger-ui .opblock-tag,
18
+ .dark .swagger-ui .opblock-tag small,
19
+ .dark .swagger-ui .parameter__type,
20
+ .dark .swagger-ui .opblock .opblock-section-header>label,
21
+ .dark .swagger-ui .opblock .opblock-section-header h4,
22
+ .dark .swagger-ui .opblock .opblock-summary-operation-id,
23
+ .dark .swagger-ui .opblock .opblock-summary-path,
24
+ .dark .swagger-ui .opblock .opblock-summary-path__deprecated,
25
+ .dark .swagger-ui .opblock .opblock-summary-description,
26
+ .dark .swagger-ui .tab li,
27
+ .dark .swagger-ui .opblock-description-wrapper,
28
+ .dark .swagger-ui .opblock-external-docs-wrapper,
29
+ .dark .swagger-ui .opblock-title_normal,
30
+ .dark .swagger-ui .opblock-description-wrapper h4,
31
+ .dark .swagger-ui .opblock-external-docs-wrapper h4,
32
+ .dark .swagger-ui .opblock-title_normal h4,
33
+ .dark .swagger-ui .opblock-description-wrapper p,
34
+ .dark .swagger-ui .opblock-external-docs-wrapper p,
35
+ .dark .swagger-ui .opblock-title_normal p,
36
+ .dark .swagger-ui .responses-inner h4,
37
+ .dark .swagger-ui .responses-inner h5,
38
+ .dark .swagger-ui .response-col_status,
39
+ .dark .swagger-ui .response-col_links,
40
+ .dark .swagger-ui .scheme-container .schemes>.schemes-server-container>label,
41
+ .dark .swagger-ui section h3,
42
+ .dark .swagger-ui .btn,
43
+ .dark .swagger-ui select,
44
+ .dark .swagger-ui label,
45
+ .dark .swagger-ui textarea,
46
+ .dark .swagger-ui .checkbox p,
47
+ .dark .swagger-ui .dialog-ux .modal-ux-content p,
48
+ .dark .swagger-ui .dialog-ux .modal-ux-content h4,
49
+ .dark .swagger-ui .dialog-ux .modal-ux-header h3,
50
+ .dark .swagger-ui .model,
51
+ .dark .swagger-ui .servers>label,
52
+ .dark .swagger-ui table.headers td,
53
+ .dark .swagger-ui table thead tr td,
54
+ .dark .swagger-ui table thead tr th,
55
+ .dark .swagger-ui .parameter__name,
56
+ .dark .swagger-ui .info h1,
57
+ .dark .swagger-ui .info h2,
58
+ .dark .swagger-ui .info h3,
59
+ .dark .swagger-ui .info h4,
60
+ .dark .swagger-ui .info h5,
61
+ .dark .swagger-ui .info li,
62
+ .dark .swagger-ui .info p,
63
+ .dark .swagger-ui .info table,
64
+ .dark .swagger-ui .info .base-url,
65
+ .dark .swagger-ui .info .title,
66
+ .dark .swagger-ui .auth-container .errors,
67
+ .dark .swagger-ui .scopes h2,
68
+ .dark .swagger-ui .errors-wrapper .errors h4,
69
+ .dark .swagger-ui .errors-wrapper hgroup h4,
70
+ .dark .swagger-ui .json-schema-2020-12-keyword--const .json-schema-2020-12-json-viewer__name,
71
+ .dark .swagger-ui .json-schema-2020-12-keyword--const .json-schema-2020-12-json-viewer__value,
72
+ .dark .swagger-ui .json-schema-2020-12__constraint,
73
+ .dark .swagger-ui .json-schema-2020-12-keyword--default .json-schema-2020-12-json-viewer__name,
74
+ .dark .swagger-ui .json-schema-2020-12-keyword--default .json-schema-2020-12-json-viewer__value,
75
+ .dark .swagger-ui .json-schema-2020-12-keyword--enum .json-schema-2020-12-json-viewer__name,
76
+ .dark .swagger-ui .json-schema-2020-12-keyword--enum .json-schema-2020-12-json-viewer__value,
77
+ .dark .swagger-ui .json-schema-2020-12-keyword--examples .json-schema-2020-12-json-viewer__name,
78
+ .dark .swagger-ui .json-schema-2020-12-keyword--examples .json-schema-2020-12-json-viewer__value,
79
+ .dark .swagger-ui .json-schema-2020-12-property .json-schema-2020-12__title,
80
+ .dark .swagger-ui .json-schema-2020-12-keyword__name--primary,
81
+ .dark .swagger-ui .json-schema-2020-12-keyword__value--primary,
82
+ .dark .swagger-ui .json-schema-2020-12-keyword__value--warning,
83
+ .dark .swagger-ui .json-schema-2020-12__attribute,
84
+ .dark .swagger-ui .json-schema-2020-12-json-viewer__name--primary,
85
+ .dark .swagger-ui .json-schema-2020-12-json-viewer__value--primary,
86
+ .dark .swagger-ui .json-schema-2020-12-json-viewer__value--warning {
87
+ color: var(--foreground);
88
+ }
89
+ .dark .swagger-ui .opblock .opblock-section-header,
90
+ .dark .swagger-ui textarea {
91
+ background-color: color-mix(in oklab, var(--card) 80%, transparent);
92
+ }
93
+ .dark .swagger-ui .scheme-container,
94
+ .dark .swagger-ui input[type=email],
95
+ .dark .swagger-ui input[type=file],
96
+ .dark .swagger-ui input[type=password],
97
+ .dark .swagger-ui input[type=search],
98
+ .dark .swagger-ui input[type=text],
99
+ .dark .swagger-ui textarea,
100
+ .dark .swagger-ui .dialog-ux .modal-ux {
101
+ background-color: var(--card);
102
+ }
103
+ .dark .swagger-ui input[disabled],
104
+ .dark .swagger-ui select[disabled],
105
+ .dark .swagger-ui textarea[disabled] {
106
+ background-color: var(--muted);
107
+ }
108
+ .dark .swagger-ui .model .property.primitive,
109
+ .dark .swagger-ui section.models h4,
110
+ .dark .swagger-ui .prop-format,
111
+ .dark .swagger-ui .errors-wrapper .errors small,
112
+ .dark .swagger-ui .json-schema-2020-12-keyword--description,
113
+ .dark .swagger-ui .json-schema-2020-12-json-viewer-extension-keyword .json-schema-2020-12-json-viewer__name,
114
+ .dark .swagger-ui .json-schema-2020-12-json-viewer-extension-keyword .json-schema-2020-12-json-viewer__value,
115
+ .dark .swagger-ui .json-schema-2020-12-keyword__name--secondary,
116
+ .dark .swagger-ui .json-schema-2020-12-keyword__name--extension,
117
+ .dark .swagger-ui .json-schema-2020-12-keyword__value,
118
+ .dark .swagger-ui .json-schema-2020-12-keyword__value--secondary,
119
+ .dark .swagger-ui .json-schema-2020-12-keyword__value--extension,
120
+ .dark .swagger-ui .json-schema-2020-12-json-viewer__name--secondary,
121
+ .dark .swagger-ui .json-schema-2020-12-json-viewer__name--extension,
122
+ .dark .swagger-ui .json-schema-2020-12-json-viewer__value,
123
+ .dark .swagger-ui .json-schema-2020-12-json-viewer__value--secondary,
124
+ .dark .swagger-ui .json-schema-2020-12-json-viewer__value--extension {
125
+ color: var(--muted-foreground);
126
+ }
127
+ .dark .swagger-ui .scheme-container {
128
+ box-shadow: none;
129
+ border-block: 1px solid var(--border);
130
+ }
131
+ .dark .swagger-ui .opblock-tag,
132
+ .dark .swagger-ui .opblock .opblock-section-header,
133
+ .dark .swagger-ui section.models,
134
+ .dark .swagger-ui section.models.is-open h4,
135
+ .dark .swagger-ui table thead tr td,
136
+ .dark .swagger-ui table thead tr th,
137
+ .dark .swagger-ui .responses-inner,
138
+ .dark .swagger-ui .opblock .opblock-summary {
139
+ border-color: var(--border);
140
+ }
141
+ .dark .swagger-ui input[type='email'],
142
+ .dark .swagger-ui input[type='file'],
143
+ .dark .swagger-ui input[type='password'],
144
+ .dark .swagger-ui input[type='search'],
145
+ .dark .swagger-ui input[type='text'],
146
+ .dark .swagger-ui select,
147
+ .dark .swagger-ui textarea {
148
+ border-color: var(--input);
149
+ color: var(--foreground);
150
+ background-color: var(--card);
151
+ }
152
+ .dark .swagger-ui select {
153
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='%23a1a1aa' d='M13.418 7.859a.695.695 0 0 1 .978 0 .68.68 0 0 1 0 .969l-3.908 3.83a.697.697 0 0 1-.979 0l-3.908-3.83a.68.68 0 0 1 0-.969.695.695 0 0 1 .978 0L10 11z'/%3E%3C/svg%3E");
154
+ box-shadow: none;
155
+ }
156
+ .dark .swagger-ui .arrow,
157
+ .dark .swagger-ui .opblock-control-arrow svg,
158
+ .dark .swagger-ui .expand-operation svg,
159
+ .dark .swagger-ui .models-control svg,
160
+ .dark .swagger-ui .opblock-tag svg,
161
+ .dark .swagger-ui .model-toggle::after {
162
+ fill: var(--muted-foreground);
163
+ }
164
+ .dark .swagger-ui .model-toggle::after {
165
+ filter: invert(1);
166
+ }
167
+ .dark .swagger-ui .markdown code,
168
+ .dark .swagger-ui .renderedMarkdown code {
169
+ color: var(--foreground);
170
+ background: var(--muted);
171
+ }
172
+ .dark .swagger-ui .info a,
173
+ .dark .swagger-ui .info .base-url a,
174
+ .dark .swagger-ui .info .link {
175
+ color: var(--primary);
176
+ }
177
+ .dark .swagger-ui .model-box,
178
+ .dark .swagger-ui section.models .model-container {
179
+ background: var(--muted);
180
+ }
181
+ .dark .swagger-ui .btn {
182
+ border-color: var(--border);
183
+ }
184
+ .dark .swagger-ui .dialog-ux .backdrop-ux {
185
+ background: rgb(0 0 0 / 0.6);
186
+ }
187
+ .dark .swagger-ui .dialog-ux .modal-ux-header {
188
+ border-color: var(--border);
189
+ }
190
+ .dark .swagger-ui .dialog-ux .modal-ux-header .close-modal svg {
191
+ fill: var(--foreground);
192
+ }
193
+ .dark .swagger-ui .model-title,
194
+ .dark .swagger-ui .json-schema-2020-12__title,
195
+ .dark .swagger-ui span.token-string,
196
+ .dark .swagger-ui span.token-not-formatted {
197
+ color: var(--foreground);
198
+ }
199
+ .dark .swagger-ui .model .property,
200
+ .dark .swagger-ui .model .external-docs,
201
+ .dark .swagger-ui table.model tr.description,
202
+ .dark .swagger-ui table.model tr.extension,
203
+ .dark .swagger-ui table.headers .header-example {
204
+ color: var(--muted-foreground);
205
+ }
@@ -102,6 +102,16 @@
102
102
  }
103
103
  }
104
104
 
105
+ /* iOS Safari zooms into any focused field under 16px. Unlayered on purpose: it
106
+ outranks every utility, so a `text-xs` override or a raw field cannot re-break it. */
107
+ @media (width < 48rem) {
108
+ input:not([type='checkbox'], [type='radio'], [type='range'], [type='color'], [type='file'], [type='hidden']),
109
+ textarea,
110
+ select {
111
+ font-size: 16px;
112
+ }
113
+ }
114
+
105
115
  /* Accordion animations */
106
116
  @keyframes accordion-down {
107
117
  from {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orangecheck/design",
3
- "version": "0.32.1",
3
+ "version": "0.32.3",
4
4
  "description": "OrangeCheck design system — multi-theme tokens, primitives, and family composites for the .ochk.io sub-sites. Tailwind 4 + Next.js Pages Router. Not for third-party integration.",
5
5
  "keywords": [
6
6
  "orangecheck",
@@ -71,6 +71,7 @@
71
71
  ],
72
72
  "scripts": {
73
73
  "build": "tsup && yarn copy:css",
74
+ "test": "node scripts/check-a11y-floors.mjs",
74
75
  "copy:css": "rm -rf dist/styles && mkdir -p dist/styles && cp src/styles.css dist/styles.css && cp -R src/styles/. dist/styles/",
75
76
  "dev": "tsup --watch",
76
77
  "type-check": "tsc --noEmit",