@volter/world-platform 2.0.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.
- package/LICENSE +202 -0
- package/README.md +29 -0
- package/client/platform.css +228 -0
- package/client/platform.tsx +1049 -0
- package/client/reserved.ts +3 -0
- package/dist/client/platform.bundle.js +237 -0
- package/dist/client/platform.css +228 -0
- package/dist/client/platform.tsx +1049 -0
- package/dist/client/reserved.d.ts +1 -0
- package/dist/client/reserved.js +3 -0
- package/dist/client/reserved.ts +3 -0
- package/dist/src/audit.d.ts +24 -0
- package/dist/src/audit.js +23 -0
- package/dist/src/backup.d.ts +37 -0
- package/dist/src/backup.js +94 -0
- package/dist/src/biller.d.ts +59 -0
- package/dist/src/biller.js +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +112 -0
- package/dist/src/db/migrations/0000_init.sql +143 -0
- package/dist/src/db/migrations/meta/0000_snapshot.json +877 -0
- package/dist/src/db/migrations/meta/_journal.json +13 -0
- package/dist/src/db/migrations.d.ts +4 -0
- package/dist/src/db/migrations.js +33 -0
- package/dist/src/db/open.d.ts +11 -0
- package/dist/src/db/open.js +114 -0
- package/dist/src/db/pack-migrations.d.ts +1 -0
- package/dist/src/db/pack-migrations.js +33 -0
- package/dist/src/db/schema.d.ts +1803 -0
- package/dist/src/db/schema.js +123 -0
- package/dist/src/directory.d.ts +75 -0
- package/dist/src/directory.js +199 -0
- package/dist/src/doors.d.ts +16 -0
- package/dist/src/doors.js +123 -0
- package/dist/src/identity.d.ts +88 -0
- package/dist/src/identity.js +314 -0
- package/dist/src/labs.d.ts +14 -0
- package/dist/src/labs.js +7 -0
- package/dist/src/mail.d.ts +16 -0
- package/dist/src/mail.js +27 -0
- package/dist/src/pages.d.ts +15 -0
- package/dist/src/pages.js +73 -0
- package/dist/src/platform.d.ts +77 -0
- package/dist/src/platform.js +1845 -0
- package/dist/src/sample.d.ts +11 -0
- package/dist/src/sample.js +93 -0
- package/dist/src/store.d.ts +110 -0
- package/dist/src/store.js +142 -0
- package/dist/src/tokens.d.ts +69 -0
- package/dist/src/tokens.js +96 -0
- package/dist/src/webhooks.d.ts +60 -0
- package/dist/src/webhooks.js +92 -0
- package/package.json +78 -0
- package/src/audit.ts +26 -0
- package/src/backup.ts +73 -0
- package/src/biller.ts +45 -0
- package/src/cli.ts +99 -0
- package/src/db/migrations/0000_init.sql +143 -0
- package/src/db/migrations/meta/0000_snapshot.json +877 -0
- package/src/db/migrations/meta/_journal.json +13 -0
- package/src/db/migrations.ts +33 -0
- package/src/db/open.ts +92 -0
- package/src/db/pack-migrations.ts +19 -0
- package/src/db/schema.ts +137 -0
- package/src/directory.ts +216 -0
- package/src/doors.ts +138 -0
- package/src/identity.ts +279 -0
- package/src/labs.ts +8 -0
- package/src/mail.ts +27 -0
- package/src/pages.ts +69 -0
- package/src/platform.ts +1183 -0
- package/src/sample.ts +84 -0
- package/src/store.ts +154 -0
- package/src/tokens.ts +94 -0
- package/src/webhooks.ts +85 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/* THE PLATFORM'S PAGES, over the kit (apps/console/client/kit/kit.css, served first): only what an org's pages show.
|
|
2
|
+
Every colour is a role of the brand, as the kit's are; dark follows the system through the brand's light-dark roles. */
|
|
3
|
+
|
|
4
|
+
/* the support view's standing notice, above the top bar */
|
|
5
|
+
.banner { margin: 0; border-radius: 0; border-width: 0 0 1px; text-align: center; }
|
|
6
|
+
button.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
|
|
7
|
+
button.primary:hover:not(:disabled) { color: var(--accent-ink); filter: brightness(1.06); }
|
|
8
|
+
a.button { background: var(--surface); border-color: var(--line-strong); color: var(--ink); }
|
|
9
|
+
a.button.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
|
|
10
|
+
.link-button { justify-self: start; border: 0; background: none; padding: 2px 0; color: var(--ink); text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
|
|
11
|
+
.link-button:hover:not(:disabled) { color: var(--ink); text-decoration-color: currentColor; }
|
|
12
|
+
.mono { font-family: var(--mono); font-size: 12px; }
|
|
13
|
+
.nowrap { white-space: nowrap; }
|
|
14
|
+
.small { font-size: 12px; }
|
|
15
|
+
.grow { flex: 1; min-width: 0; }
|
|
16
|
+
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
|
|
17
|
+
.pre { white-space: pre-wrap; }
|
|
18
|
+
.warn-text { color: var(--warn); }
|
|
19
|
+
|
|
20
|
+
/* the sign-in card: the brand, one way in */
|
|
21
|
+
body.portal #root { width: min(440px, 100%); }
|
|
22
|
+
body.portal .card { width: 100%; }
|
|
23
|
+
body.portal .card .brand h1 { font-size: 15px; margin: 0; }
|
|
24
|
+
body.portal .card .brand h1 a { color: var(--ink); text-decoration: none; }
|
|
25
|
+
main.boot { max-width: 520px; display: grid; gap: 14px; padding-top: 18vh; }
|
|
26
|
+
|
|
27
|
+
/* the top bar: the drawer's button on a phone, the brand, where you are, search, and you */
|
|
28
|
+
main.app > header { gap: 12px; }
|
|
29
|
+
.search-button { margin-left: auto; display: inline-flex; align-items: center; gap: 24px; padding: 5px 8px 5px 12px; color: var(--muted); background: var(--surface-2); border-color: var(--line); min-width: 200px; justify-content: space-between; }
|
|
30
|
+
.search-button:hover:not(:disabled) { color: var(--ink); border-color: var(--line-strong); }
|
|
31
|
+
kbd { font: 11px/1 var(--mono); padding: 3px 5px; border: 1px solid var(--line-strong); border-radius: 4px; background: var(--surface); color: var(--muted); }
|
|
32
|
+
.head-link { color: var(--muted); font-size: 13px; }
|
|
33
|
+
.avatar-menu > summary { list-style: none; cursor: pointer; border-radius: 999px; }
|
|
34
|
+
.avatar-menu > summary::-webkit-details-marker { display: none; }
|
|
35
|
+
.avatar-menu .mark { border-radius: 999px; width: 28px; height: 28px; }
|
|
36
|
+
.avatar-menu .popover { width: 240px; }
|
|
37
|
+
.menu-who { display: grid; padding: 6px 10px 8px; margin-bottom: 4px; border-bottom: 1px solid var(--line); }
|
|
38
|
+
.menu-list a[aria-current] { background: var(--surface-2); }
|
|
39
|
+
|
|
40
|
+
/* the org switcher's popover */
|
|
41
|
+
.top-picker .popover { gap: 6px; }
|
|
42
|
+
.top-picker .popover input { width: 100%; }
|
|
43
|
+
.top-picker .branch-list .vendor-cell { font-weight: 500; }
|
|
44
|
+
.top-picker .popover > a.button { text-align: center; }
|
|
45
|
+
|
|
46
|
+
/* a page: its head (title, count, actions), its lede, and a toolbar */
|
|
47
|
+
.page-head { margin: 0 0 16px; }
|
|
48
|
+
.page-head .content-head { margin: 0; }
|
|
49
|
+
.page-head .lede { margin: 4px 0 0; color: var(--muted); max-width: 720px; }
|
|
50
|
+
.count { display: inline-block; margin-left: 8px; padding: 0 8px; border-radius: 999px; background: var(--surface-2); border: 1px solid var(--line); color: var(--muted); font-size: 12px; font-weight: 600; vertical-align: middle; }
|
|
51
|
+
.toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
|
|
52
|
+
.toolbar input[type="search"], .toolbar-search { min-width: 240px; }
|
|
53
|
+
.content .block { margin-bottom: 16px; overflow-x: auto; }
|
|
54
|
+
.table-note { padding: 10px 14px; border-top: 1px solid var(--line); margin: 0; }
|
|
55
|
+
.row-actions { display: flex; justify-content: flex-end; align-items: center; gap: 4px; }
|
|
56
|
+
.marks { display: inline-flex; align-items: center; gap: 4px; }
|
|
57
|
+
.marks .mode { margin-left: 6px; }
|
|
58
|
+
.who { display: grid; line-height: 1.3; }
|
|
59
|
+
.who a { color: var(--ink); text-decoration: none; font-weight: 600; }
|
|
60
|
+
.who a:hover { text-decoration: underline; }
|
|
61
|
+
.badge.ok { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 40%, var(--line)); background: var(--volter-status-healthy-soft); }
|
|
62
|
+
.badge.warn { color: var(--warn); border-color: var(--volter-status-attention-line); background: var(--warn-soft); }
|
|
63
|
+
.badge.info { color: var(--ink); background: var(--accent-soft); border-color: var(--line-strong); }
|
|
64
|
+
.badge.you { margin-left: 6px; text-transform: none; letter-spacing: 0; }
|
|
65
|
+
.content td select { padding: 4px 26px 4px 8px; font-size: 13px; }
|
|
66
|
+
|
|
67
|
+
/* cards */
|
|
68
|
+
section.card { margin: 0 0 16px; padding: 18px 20px; }
|
|
69
|
+
section.card h3 { margin: 0 0 6px; font-size: 15px; }
|
|
70
|
+
section.card.flush { padding: 0; overflow: hidden; }
|
|
71
|
+
.card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 16px 20px; border-bottom: 1px solid var(--line); }
|
|
72
|
+
.card-head h3 { margin: 0 0 2px; }
|
|
73
|
+
.card-head p { margin: 0; max-width: 620px; }
|
|
74
|
+
.card-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 12px; }
|
|
75
|
+
.stack { display: grid; gap: 12px; max-width: none; margin: 0; }
|
|
76
|
+
.stack label { font-size: 13px; }
|
|
77
|
+
.stack > button[type="submit"] { justify-self: start; }
|
|
78
|
+
.field-error { color: var(--danger-text); font-size: 12.5px; margin: -6px 0 0; }
|
|
79
|
+
.stack > .mode { margin: -6px 0 0; }
|
|
80
|
+
input[aria-invalid="true"] { border-color: var(--danger); }
|
|
81
|
+
label.check { display: flex; align-items: flex-start; gap: 8px; color: var(--ink); font-size: 13px; }
|
|
82
|
+
label.check input { margin-top: 3px; }
|
|
83
|
+
.two { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
|
|
84
|
+
textarea { font: inherit; font-size: 14px; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--surface); color: var(--ink); resize: vertical; }
|
|
85
|
+
.narrow { max-width: 640px; }
|
|
86
|
+
|
|
87
|
+
/* a setting: what it is on the left, its control on the right */
|
|
88
|
+
.setting-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 0; border-top: 1px solid var(--line); }
|
|
89
|
+
section.card > .setting-row:first-child, section.card > p + .setting-row { border-top: 0; }
|
|
90
|
+
.setting-row p { margin: 2px 0 0; }
|
|
91
|
+
.setting-row.stack-row { align-items: flex-end; max-width: none; }
|
|
92
|
+
.setting-row.stack-row label { display: grid; gap: 4px; color: var(--ink); }
|
|
93
|
+
.settings { max-width: 820px; }
|
|
94
|
+
.danger-zone { border-color: color-mix(in srgb, var(--danger) 45%, var(--line)); }
|
|
95
|
+
.danger-zone h3 { color: var(--danger-text); }
|
|
96
|
+
.danger-zone .setting-row { border-top: 0; padding-bottom: 0; }
|
|
97
|
+
.switch { position: relative; display: inline-block; flex: none; width: 38px; height: 22px; }
|
|
98
|
+
.switch input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; z-index: 1; }
|
|
99
|
+
.switch span { position: absolute; inset: 0; border-radius: 999px; background: var(--volter-surface-inset); border: 1px solid var(--line-strong); transition: background var(--volter-motion-fast, 140ms); }
|
|
100
|
+
.switch span::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 999px; background: var(--surface); box-shadow: var(--volter-shadow-resting); transition: transform var(--volter-motion-fast, 140ms); }
|
|
101
|
+
.switch input:checked + span { background: var(--accent); border-color: var(--accent); }
|
|
102
|
+
.switch input:checked + span::after { transform: translateX(16px); background: var(--accent-ink); }
|
|
103
|
+
.switch input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
104
|
+
.switch input:disabled + span { opacity: 0.5; }
|
|
105
|
+
|
|
106
|
+
/* choices as cards (a token's access, a webhook's events) */
|
|
107
|
+
fieldset.choice, fieldset.vendor-picker { border: 0; padding: 0; margin: 0; display: grid; gap: 8px; min-width: 0; }
|
|
108
|
+
fieldset legend { font-size: 13px; color: var(--muted); padding: 0; margin-bottom: 6px; }
|
|
109
|
+
.choice-card { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius); cursor: pointer; color: var(--ink); }
|
|
110
|
+
.choice-card.on { border-color: var(--accent); background: var(--accent-soft); }
|
|
111
|
+
.choice-card input { margin-top: 3px; }
|
|
112
|
+
.choice-card > span { display: grid; gap: 2px; }
|
|
113
|
+
.scope-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px 12px; }
|
|
114
|
+
.scope-grid label { display: grid; gap: 4px; color: var(--ink); }
|
|
115
|
+
.scope-grid label.check { display: flex; }
|
|
116
|
+
|
|
117
|
+
/* the vendor picker: what is picked as chips, the catalog as a grid of marks */
|
|
118
|
+
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
119
|
+
.chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px 3px 4px; border-radius: 999px; background: var(--surface-2); border-color: var(--line); font-size: 12.5px; }
|
|
120
|
+
.chip .mark { width: 18px; height: 18px; }
|
|
121
|
+
.vendor-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; max-height: 280px; overflow-y: auto; padding: 2px; }
|
|
122
|
+
.vendor-option { display: flex; align-items: center; gap: 8px; text-align: left; padding: 7px 10px; background: var(--surface); border-color: var(--line); }
|
|
123
|
+
.vendor-option .vendor-label { flex: 1; min-width: 0; line-height: 1.25; overflow-wrap: anywhere; }
|
|
124
|
+
.vendor-option[aria-pressed="true"] { border-color: var(--accent); background: var(--accent-soft); color: var(--ink); }
|
|
125
|
+
.vendor-option[aria-pressed="true"]:hover:not(:disabled) { color: var(--ink); }
|
|
126
|
+
|
|
127
|
+
/* invitations: an address and a role per row */
|
|
128
|
+
.invite-row { display: flex; align-items: flex-end; gap: 8px; }
|
|
129
|
+
.invite-row label { display: grid; gap: 4px; }
|
|
130
|
+
|
|
131
|
+
/* notices: a restriction, a payment, a warning in a dialog */
|
|
132
|
+
.notice { padding: 10px 14px; border-radius: var(--radius); border: 1px solid var(--line); background: var(--surface); margin: 0 0 14px; color: var(--ink); }
|
|
133
|
+
.notice.ok { background: var(--volter-status-healthy-soft); border-color: color-mix(in srgb, var(--ok) 35%, var(--line)); }
|
|
134
|
+
.notice.warn { background: var(--warn-soft); border-color: var(--volter-status-attention-line); }
|
|
135
|
+
.notice.danger { background: var(--danger-soft); border-color: color-mix(in srgb, var(--danger) 40%, var(--line)); color: var(--ink); }
|
|
136
|
+
.notice.info { background: var(--accent-soft); border-color: var(--line-strong); }
|
|
137
|
+
.dialog-body .notice { margin: 0; }
|
|
138
|
+
|
|
139
|
+
/* billing: the plan, the period's usage against its limits, the plans side by side */
|
|
140
|
+
.billing-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 16px; align-items: start; }
|
|
141
|
+
.billing-grid section.card { margin: 0; }
|
|
142
|
+
.eyebrow { margin: 0 0 6px; color: var(--muted); font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; }
|
|
143
|
+
.price-line { margin: 4px 0; }
|
|
144
|
+
.price { font-size: 26px; font-weight: 600; letter-spacing: -0.02em; }
|
|
145
|
+
.meters { display: grid; gap: 16px; margin: 8px 0 14px; }
|
|
146
|
+
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; margin: 0 0 8px; padding-top: 12px; border-top: 1px solid var(--line); }
|
|
147
|
+
.stats dt { color: var(--muted); font-size: 12px; }
|
|
148
|
+
.stats dd { margin: 0; font-weight: 600; font-variant-numeric: tabular-nums; }
|
|
149
|
+
.day-bars { display: flex; align-items: flex-end; gap: 4px; height: 120px; padding-top: 8px; }
|
|
150
|
+
.day-bar { flex: 1; display: grid; grid-template-rows: 1fr auto; height: 100%; align-items: end; text-align: center; }
|
|
151
|
+
.day-bar span { display: block; border-radius: 3px 3px 0 0; background: var(--volter-data-base); }
|
|
152
|
+
.day-bar em { font-style: normal; font-size: 10.5px; color: var(--faint); }
|
|
153
|
+
.section-title { margin: 24px 0 10px; font-size: 15px; }
|
|
154
|
+
.plans { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; }
|
|
155
|
+
.plans section.card { margin: 0; display: grid; gap: 6px; align-content: start; }
|
|
156
|
+
.plans h4 { margin: 0; font-size: 15px; color: var(--ink); text-transform: none; letter-spacing: 0; }
|
|
157
|
+
.plan.current { border-color: var(--accent); }
|
|
158
|
+
.checks { list-style: none; padding: 0; margin: 6px 0 10px; display: grid; gap: 4px; }
|
|
159
|
+
.checks li { position: relative; padding-left: 20px; }
|
|
160
|
+
.checks li::before { content: "✓"; position: absolute; left: 0; color: var(--ok); font-weight: 600; }
|
|
161
|
+
.plans button { justify-self: start; }
|
|
162
|
+
|
|
163
|
+
/* account */
|
|
164
|
+
.profile { display: flex; align-items: center; gap: 16px; }
|
|
165
|
+
.profile > .mark { width: 52px; height: 52px; border-radius: 999px; font-size: 20px; }
|
|
166
|
+
.profile h3 { margin: 0; }
|
|
167
|
+
.profile p { margin: 2px 0 0; }
|
|
168
|
+
.profile .card-actions { margin: 0; }
|
|
169
|
+
.sent h3 { margin-top: 0; }
|
|
170
|
+
|
|
171
|
+
/* ⌘K */
|
|
172
|
+
.palette { list-style: none; padding: 0; margin: 0; display: grid; gap: 2px; max-height: 360px; overflow-y: auto; }
|
|
173
|
+
.palette button { display: flex; width: 100%; justify-content: space-between; gap: 12px; border: 0; background: transparent; padding: 8px 10px; text-align: left; color: var(--ink); }
|
|
174
|
+
.palette li[aria-selected="true"] button { background: var(--surface-2); }
|
|
175
|
+
.palette button:hover:not(:disabled) { color: var(--ink); }
|
|
176
|
+
|
|
177
|
+
/* the first run: a checklist with its progress */
|
|
178
|
+
.onboarding { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 18px; margin: 0 0 16px; box-shadow: none; }
|
|
179
|
+
.onboarding-head { display: flex; align-items: center; gap: 12px; }
|
|
180
|
+
.onboarding-head h3 { margin: 0; font-size: 14px; }
|
|
181
|
+
.progress { flex: 1; max-width: 160px; height: 6px; border-radius: 999px; background: var(--surface-2); border: 1px solid var(--line); overflow: hidden; }
|
|
182
|
+
.progress span { display: block; height: 100%; background: var(--volter-status-live-base); }
|
|
183
|
+
.onboarding-head .icon-button { margin-left: auto; }
|
|
184
|
+
.onboarding ol { list-style: none; padding: 0; margin: 10px 0 0; display: grid; gap: 6px; }
|
|
185
|
+
/* the other way through: a prompt for the person's coding agent, copied whole */
|
|
186
|
+
.ask-agent { margin: 12px 0 0; border-top: 1px solid var(--line); padding-top: 10px; }
|
|
187
|
+
.ask-agent > summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; font-size: 13px; font-weight: 500; color: var(--ink); }
|
|
188
|
+
.ask-agent > summary::-webkit-details-marker { display: none; }
|
|
189
|
+
.ask-agent > summary > span::before { content: "\25B8"; display: inline-block; width: 1em; color: var(--muted); }
|
|
190
|
+
.ask-agent[open] > summary > span::before { content: "\25BE"; }
|
|
191
|
+
.ask-agent pre { margin: 10px 0 6px; white-space: pre-wrap; font-size: 12.5px; line-height: 1.55; max-width: none; }
|
|
192
|
+
.ask-agent .mode { margin: 0; font-size: 12.5px; }
|
|
193
|
+
.onboarding li { display: flex; align-items: center; gap: 10px; margin: 0; }
|
|
194
|
+
.onboarding .tick { display: inline-grid; place-items: center; flex: none; width: 20px; height: 20px; border-radius: 999px; border: 1px solid var(--line-strong); font-size: 11px; color: var(--muted); }
|
|
195
|
+
.onboarding li.done { color: var(--muted); }
|
|
196
|
+
.onboarding li.done .tick { background: var(--volter-status-live-base); border-color: var(--volter-status-live-base); color: var(--volter-text-on-strong); }
|
|
197
|
+
.onboarding-alt { margin: 10px 0 0 30px; font-size: 12.5px; }
|
|
198
|
+
|
|
199
|
+
/* the first paint */
|
|
200
|
+
main.booting .side .skeleton, main.booting .content .skeleton { border: 0; background: transparent; }
|
|
201
|
+
|
|
202
|
+
/* a phone: the header keeps the menu, the brand, the place and you on one line; the sidebar is a drawer */
|
|
203
|
+
@media (max-width: 900px) { .billing-grid { grid-template-columns: 1fr; } }
|
|
204
|
+
@media (max-width: 720px) {
|
|
205
|
+
main.app > header { flex-wrap: nowrap; }
|
|
206
|
+
main.app > header .brand-name { display: none; }
|
|
207
|
+
main.app > header .crumbs { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
|
|
208
|
+
.search-button { min-width: 0; margin-left: auto; gap: 0; }
|
|
209
|
+
.search-button span, .search-button kbd, .head-link { display: none; }
|
|
210
|
+
.search-button::before { content: "⌕"; font-size: 16px; }
|
|
211
|
+
.two { grid-template-columns: 1fr; }
|
|
212
|
+
.toolbar-search, .toolbar input[type="search"] { min-width: 0; width: 100%; }
|
|
213
|
+
.content-head .head-actions { width: 100%; }
|
|
214
|
+
.worlds-table th:nth-child(2), .worlds-table td:nth-child(2), .worlds-table th:nth-child(3), .worlds-table td:nth-child(3), .worlds-table th:nth-child(4), .worlds-table td:nth-child(4), .tokens-table th:nth-child(3), .tokens-table td:nth-child(3), .tokens-table th:nth-child(5), .tokens-table td:nth-child(5), .pending-table th:nth-child(3), .pending-table td:nth-child(3) { display: none; }
|
|
215
|
+
.profile { flex-wrap: wrap; }
|
|
216
|
+
.setting-row { flex-wrap: wrap; }
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* the Worlds empty state: Create World beside the sample, and the sample's note on its own line */
|
|
220
|
+
.actions-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
|
|
221
|
+
.empty-body .sample-note { display: block; margin-top: 8px; font-size: 12.5px; }
|
|
222
|
+
|
|
223
|
+
/* a World's pull-request previews, under its row */
|
|
224
|
+
.preview-row td { padding-top: 0; padding-bottom: 10px; border-top: 0; }
|
|
225
|
+
.preview-row td > .mode { font-size: 12px; margin-right: 10px; }
|
|
226
|
+
.previews { display: inline-flex; flex-wrap: wrap; gap: 6px 16px; list-style: none; margin: 0; padding: 0; vertical-align: middle; }
|
|
227
|
+
.previews li { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; }
|
|
228
|
+
.worlds-table tr:has(+ .preview-row) td { border-bottom: 0; }
|