@boost33/ui 0.4.0 → 0.5.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/README.md +27 -1
- package/dist/components/AccountMenu/AccountMenu.d.ts +131 -0
- package/dist/components/AccountMenu/icons.d.ts +11 -0
- package/dist/components/AccountMenu/labels.d.ts +39 -0
- package/dist/components/AppShell/AppShell.d.ts +71 -18
- package/dist/components/AppShell/AppShell.js +33 -35
- package/dist/components/AppShell/AppShell.js.map +1 -1
- package/dist/components/AppShell/AppShell.module.css.js +16 -16
- package/dist/components/AppSwitcher/AppSwitcher.d.ts +23 -1
- package/dist/components/AppSwitcher/AppSwitcher.js +49 -43
- package/dist/components/AppSwitcher/AppSwitcher.js.map +1 -1
- package/dist/components/AppSwitcher/AppSwitcher.module.css.js +28 -28
- package/dist/components/AppSwitcher/labels.js.map +1 -1
- package/dist/components/CommandPalette/CommandPalette.d.ts +127 -0
- package/dist/components/CommandPalette/icons.d.ts +8 -0
- package/dist/components/CommandPalette/labels.d.ts +94 -0
- package/dist/components/DotMatrixLoader/DotMatrixLoader.d.ts +21 -0
- package/dist/components/DotMatrixLoader/DotMatrixLoader.js +18 -0
- package/dist/components/DotMatrixLoader/DotMatrixLoader.js.map +1 -0
- package/dist/components/DotMatrixLoader/DotMatrixLoader.module.css.js +12 -0
- package/dist/components/DotMatrixLoader/DotMatrixLoader.module.css.js.map +1 -0
- package/dist/components/LaunchLoader/LaunchLoader.d.ts +50 -0
- package/dist/components/LaunchLoader/LaunchLoader.js +70 -0
- package/dist/components/LaunchLoader/LaunchLoader.js.map +1 -0
- package/dist/components/LaunchLoader/LaunchLoader.module.css.js +26 -0
- package/dist/components/LaunchLoader/LaunchLoader.module.css.js.map +1 -0
- package/dist/components/NavItem/NavItem.module.css.js +4 -4
- package/dist/components/NotificationCenter/NotificationCenter.d.ts +162 -0
- package/dist/components/NotificationCenter/icons.d.ts +34 -0
- package/dist/components/NotificationCenter/labels.d.ts +112 -0
- package/dist/components/ProductMark/ProductMark.d.ts +54 -1
- package/dist/components/ProductMark/ProductMark.js +23 -19
- package/dist/components/ProductMark/ProductMark.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.d.ts +17 -3
- package/dist/components/Sidebar/Sidebar.js +5 -5
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/TopBar/TopBar.module.css.js +4 -4
- package/dist/components/WalletChip/WalletChip.d.ts +150 -27
- package/dist/components/WalletChip/WalletChip.js +38 -35
- package/dist/components/WalletChip/WalletChip.js.map +1 -1
- package/dist/components/WalletChip/WalletChip.module.css.js +31 -31
- package/dist/components/WalletChip/labels.d.ts +65 -47
- package/dist/components/WalletChip/labels.js +15 -20
- package/dist/components/WalletChip/labels.js.map +1 -1
- package/dist/fill-template.d.ts +10 -0
- package/dist/fill-template.js +10 -0
- package/dist/fill-template.js.map +1 -0
- package/dist/index.d.ts +10 -4
- package/dist/index.js +41 -41
- package/dist/index.js.map +1 -1
- package/dist/launch-gradient.d.ts +112 -0
- package/dist/launch-gradient.js +60 -0
- package/dist/launch-gradient.js.map +1 -0
- package/dist/nav-height-budget.d.ts +4 -0
- package/dist/nav-height-budget.js +18 -19
- package/dist/nav-height-budget.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme.css +40 -14
- package/package.json +2 -1
package/dist/theme.css
CHANGED
|
@@ -17,13 +17,38 @@
|
|
|
17
17
|
* `text-sm` mean this package's values in that app, and keep meaning them
|
|
18
18
|
* across a version bump.
|
|
19
19
|
*
|
|
20
|
-
* This is
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* `:root` inside `@layer theme`, so a consumer importing both files
|
|
24
|
-
* every name twice; that is harmless for exactly as long as the
|
|
25
|
-
* and tests/theme-drift.test.ts is what keeps them agreeing.
|
|
26
|
-
* this file is how that stops being true.
|
|
20
|
+
* This is tokens.css's SYSTEM tokens, from the same dump, written by the same
|
|
21
|
+
* generator run and the same code path -- the prelude differs (`@theme static`
|
|
22
|
+
* here, `:root` there) and so does the token list. Tailwind emits an @theme
|
|
23
|
+
* block onto `:root` inside `@layer theme`, so a consumer importing both files
|
|
24
|
+
* declares every name here twice; that is harmless for exactly as long as the
|
|
25
|
+
* two agree, and tests/theme-drift.test.ts is what keeps them agreeing.
|
|
26
|
+
* Hand-editing this file is how that stops being true.
|
|
27
|
+
*
|
|
28
|
+
* WHAT IS DELIBERATELY ABSENT, and it is not an omission (ADR-0013, B33-1274).
|
|
29
|
+
* `static` mints a utility class for every name below, and a class name is a
|
|
30
|
+
* published API -- an unknown Tailwind class does not error, it silently stops
|
|
31
|
+
* matching, so withdrawing one later renders a consumer's element unstyled.
|
|
32
|
+
* Seven of the dump's tokens are measurements of ONE COMPONENT each, hand-added
|
|
33
|
+
* only because a literal in a component is forbidden, and every one of them is
|
|
34
|
+
* a number a fidelity gate is expected to move. They are marked
|
|
35
|
+
* `"scope": "component-private"` in data/paper-tokens.json and emitted to
|
|
36
|
+
* tokens.css alone:
|
|
37
|
+
*
|
|
38
|
+
* --color-grant, --color-purchased WalletChip's two bar segments
|
|
39
|
+
* --text-3xs AppSwitcher's avatar initials
|
|
40
|
+
* --text-nav-label the nav item label size
|
|
41
|
+
* --spacing-topup-reserve WalletChip's Top up strip
|
|
42
|
+
* --spacing-wallet-segment-min WalletChip's smallest honest mark
|
|
43
|
+
* --radius-product-tile ProductMark's tile corner
|
|
44
|
+
*
|
|
45
|
+
* They still reach this app on `:root` through style.css, unchanged and at the
|
|
46
|
+
* same values, so `var(--spacing-topup-reserve)` reads them exactly as before.
|
|
47
|
+
* What no longer exists is `bg-grant`, `bg-purchased`, `text-3xs`,
|
|
48
|
+
* `text-nav-label`, `p-topup-reserve` (and its spacing siblings),
|
|
49
|
+
* `w-wallet-segment-min` and `rounded-product-tile`. Reaching a
|
|
50
|
+
* component-private measurement through `var()` is a deliberate escape hatch;
|
|
51
|
+
* binding a class name to one was an accident.
|
|
27
52
|
*
|
|
28
53
|
* `static` rather than plain `@theme` on purpose: plain `@theme` emits only
|
|
29
54
|
* the variables a generated utility happens to reference, so a token nothing
|
|
@@ -97,8 +122,6 @@
|
|
|
97
122
|
--color-danger-subtle: var(--color-crimson-100);
|
|
98
123
|
--color-info: var(--color-blue-600);
|
|
99
124
|
--color-info-subtle: var(--color-blue-100);
|
|
100
|
-
--color-grant: var(--color-sand-600); /* Grant tokens — they expire. */
|
|
101
|
-
--color-purchased: var(--color-neutral-950); /* Purchased tokens — they never expire. Ink, because it is permanent. */
|
|
102
125
|
--shadow-overlay-color: rgb(29 29 27 / 20%); /* The one colour every shadow in the system is drawn in: --color-neutral-950, the brand black, at 20%. Added by hand on B33-530 rather than by recapture -- Paper carries it, this dump predates it -- and the value is the Wallet's, copied from its own elevation.css. The offsets it is composed into are not a Paper token type; see elevation-tokens.css. */
|
|
103
126
|
|
|
104
127
|
/* fontFamily */
|
|
@@ -107,7 +130,6 @@
|
|
|
107
130
|
--font-mono: var(--boost33-font-mono, 'Geist Mono'), ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace; /* Every token amount. Tabular, so money aligns in columns. */
|
|
108
131
|
|
|
109
132
|
/* fontSize */
|
|
110
|
-
--text-3xs: 9px; /* The AppSwitcher account avatar's initials, and nothing else today. Not a Paper token: added by hand the way --text-nav-label was, from the approved appswitcher-open baseline, where "AC" inks 12.5px in the 24px avatar tile -- Inter's advance for that pair is 12.2px at 9px/600 and 16.3px at 12px/600, which is what this package drew before B33-910. A step below --text-2xs and below anything a person is asked to read: the initials are aria-hidden decoration on a row whose name is beside them, so the contrast and size floors that govern body copy do not apply. Do not reach for it for text. */
|
|
111
133
|
--text-2xs: 11px;
|
|
112
134
|
--text-xs: 12px;
|
|
113
135
|
--text-sm: 13px;
|
|
@@ -121,7 +143,6 @@
|
|
|
121
143
|
--text-5xl: 46px;
|
|
122
144
|
--text-6xl: 60px;
|
|
123
145
|
--text-7xl: 78px; /* The balance figure. One per screen. */
|
|
124
|
-
--text-nav-label: 14px; /* Nav item label size, settled in the fidelity baseline. Sits between --text-sm (13px) and --text-base (15px) without sharing either slot -- reused by other nav-adjacent labels, not just NavItem. */
|
|
125
146
|
|
|
126
147
|
/* fontWeight */
|
|
127
148
|
--font-weight-light: 300;
|
|
@@ -152,7 +173,10 @@
|
|
|
152
173
|
/* container */
|
|
153
174
|
--container-sidebar: 264px; /* Shell sidebar. Matches BoostScore so the products feel like one system. */
|
|
154
175
|
--container-sidebar-rail: 56px; /* Shell sidebar collapsed to the rail. Added when Sidebar needed it; 56px is the settled rail width the WalletChip and NavItem rail specimens were already shot at (see CONTEXT.md, 'Rail'). */
|
|
176
|
+
--container-command-palette: 560px; /* CommandPalette's panel width. Not a Paper *token* -- it is the width of the Palette frame on the 'CommandPalette - search' artboard (page 004 Components), added by hand the way --container-sidebar-rail, --spacing-topup-reserve and --spacing-wallet-segment-min were, and named for the surface it sizes rather than for a place on a scale. It belongs in --container-* rather than --spacing-* for the same reason --container-sidebar does: it is one surface's own width, and 560px is not a step on the x4 scale and never will be. Nothing else derives from it -- the palette is the modal variant of the anchored overlay (ADR-0009), centred over the page rather than anchored to a trigger, so no sibling measurement constrains it. PROVISIONAL, and deliberately recorded as such: CommandPalette has not passed its fidelity gate, and CLAUDE.md is explicit that before the gate nothing is authoritative and Paper is only a starting drawing. This is the drawing's number, not an approved measurement, and the person at the gate may move it. See B33-495. */
|
|
155
177
|
--container-content: 1440px;
|
|
178
|
+
--container-account-menu: 312px; /* The AccountMenu popover panel's width, read off the AccountMenu drawings on Paper's 004 Components page and its origin on 103 Identity, which agree to the pixel. Not a Paper token and NOT a settled measurement, which is the part worth reading twice: the Wallet has never rendered an account menu, nothing in the spec records a popover width, and CLAUDE.md is explicit that before that component's fidelity gate no drawing is authoritative. This token exists because the first non-negotiable forbids a literal in a component, not because 312px is final -- the person at the gate may change it, and this sentence is what stops the next reader treating the value as approved. Off every scale here on purpose: it is one panel's width, the way --container-sidebar is one column's, and nothing else in the package reads it. */
|
|
179
|
+
--container-notification-panel: 360px; /* The NotificationCenter popover's width (B33-494). Not a Paper token: it is the width of the "NotificationCenter — popover" artboard's panel frame on page 004, read off the node rather than off a screenshot, and added by hand the way --container-sidebar-rail was. A container token and not a spacing step because it sizes a surface, which is what the namespace is for -- the AppSwitcher panel is --container-sidebar for the same reason, and the two differ because the switcher hangs off the 264px sidebar while this hangs off the top bar and is sized by its own content. NOTHING HAS APPROVED THIS VALUE YET: the Wallet never rendered this component, so there is no captured referent, and the number is settled by the person who approves the component at its fidelity gate and writes the measurement into the spec (CLAUDE.md, "The three components the Wallet never rendered"). It is a token rather than a literal so that when the gate moves it, it moves in one place. */
|
|
156
180
|
|
|
157
181
|
/* spacing */
|
|
158
182
|
--spacing-1: 4px;
|
|
@@ -162,9 +186,10 @@
|
|
|
162
186
|
--spacing-4_5: 18px; /* PageHeader's top padding. Off the x4 scale on purpose, same reasoning as --spacing-2_5: the Boost Outbound screens set the page header 18px from the top and 16px from the bottom, so it is not a symmetric --spacing-4 block -- the extra 2px at the top optically centres a cap-height that sits low in its line box. */
|
|
163
187
|
--spacing-5: 20px;
|
|
164
188
|
--spacing-6: 24px;
|
|
165
|
-
--spacing-7: 28px; /* On the x4 scale but absent from the captured dump. Added when PageHeader wanted a 28px top padding; the compact header (B33-768) moved to --spacing-4_5
|
|
189
|
+
--spacing-7: 28px; /* On the x4 scale but absent from the captured dump. Added when PageHeader wanted a 28px top padding; the compact header (B33-768) moved to --spacing-4_5, which left nothing in this package using it until B33-494 sized the NotificationCenter empty state's bell glyph at 28px. It was kept through that gap rather than dropped because tokens.css ships in style.css and a consumer may be holding it. */
|
|
166
190
|
--spacing-8: 32px;
|
|
167
191
|
--spacing-10: 40px;
|
|
192
|
+
--spacing-11: 44px; /* The NotificationCenter empty state's bottom padding (B33-494). On the x4 scale and absent from the captured dump, the same shape of gap --spacing-7 filled. The empty panel sets its bell-and-copy block 40px (--spacing-10) from the header and 44px from the foot, which is not a symmetric block: the drawing hangs the group slightly high so it reads as centred against a panel whose header has visual weight the bottom edge does not. Read off the "NotificationCenter — popover" artboard's empty frame on page 004, and unapproved like every other measurement in that component until a human captures its designed baseline (CLAUDE.md). */
|
|
168
193
|
--spacing-12: 48px;
|
|
169
194
|
--spacing-16: 64px;
|
|
170
195
|
--spacing-20: 80px;
|
|
@@ -174,7 +199,9 @@
|
|
|
174
199
|
--spacing-1_25: 5px; /* WalletChip's resting balance bar height, measured off the approved fidelity baselines in B33-527 (walletchip-resting and walletchip-unknown both render it at exactly 5px; the lifted states add --spacing-0_5). Off the x4 scale on purpose, same reasoning as --spacing-2_5. */
|
|
175
200
|
--spacing-0_5: 2px; /* WalletChip's rail bar height -- the split turned thin at 56px, settled in the fidelity baseline. Also the amount the chip opens up by when it lifts (B33-527) and the balance pill's vertical padding. Off the x4 scale on purpose, same reasoning as --spacing-2_5. */
|
|
176
201
|
--spacing-2_25: 9px; /* The AppSwitcher trigger's block padding, settled in the spec's 9 September recapture ("9px block / 8px inline padding"). Off the x4 scale on purpose, same reasoning as --spacing-2_5. */
|
|
177
|
-
--spacing-
|
|
202
|
+
--spacing-3_5: 14px; /* 14px, and two components measured it independently -- which is the strongest evidence a hand-added step is real rather than one drawing's accident. NotificationCenter (B33-494): the panel header's top padding, 14px from the top edge against 10px (--spacing-2_5) from the tab rule beneath it, the same shape of asymmetry --spacing-4_5 makes in PageHeader. AccountMenu (B33-493): the person block's block padding, the 38px avatar (--spacing-9_5) in 14px above and below making the 66px block the drawing measures. On the x4 scale (3.5 x 4) but absent from the captured Paper dump, the way --spacing-7 is. Read off UNAPPROVED drawings in both cases: neither component has been through its fidelity gate, so this value is provisional and the gate may move it. */
|
|
203
|
+
--spacing-0_25: 1px; /* The NotificationCenter's smallest step (B33-494): the unread-count pill's block padding, and the 1px the source mark drops to sit on the first line of the title beside it rather than on the line box's top. Off the x4 scale on purpose, same reasoning as --spacing-2_5, and a step below --spacing-0_5 (2px), which was the smallest until this. One px is a nudge rather than a space -- do not reach for it where a real gap is meant, and note that it is the width a hairline is already drawn at as a `1px` literal in every border rule here, which this token deliberately does not replace. */
|
|
204
|
+
--spacing-9_5: 38px; /* The AccountMenu person block's avatar: the circle carrying the signed-in person, and deliberately the largest avatar in the package -- the switcher's org tile is 24px and the account menu's own org tile 22px, because those two mark an organisation and this one is a portrait. On the x4 scale (9.5 x 4) and absent from the dump. Read off an UNAPPROVED drawing -- see --container-account-menu. */
|
|
178
205
|
|
|
179
206
|
/* radius */
|
|
180
207
|
--radius-none: 0px;
|
|
@@ -185,6 +212,5 @@
|
|
|
185
212
|
--radius-xl: 8px;
|
|
186
213
|
--radius-2xl: 12px;
|
|
187
214
|
--radius-full: 9999px;
|
|
188
|
-
--radius-product-tile: 25%; /* The corner on the ProductMark tile -- the rounded square the four product glyphs sit on. Not a Paper token: the marks are copied from boostledger's icons.tsx, whose tile is a 40-unit `rect` with `rx=10`, i.e. a quarter of the side. Added by hand (the way --spacing-2_5 was) so this package's no-ad-hoc-radius rule is met with a token rather than a literal. Kept as a proportion, not a px value, on purpose: unlike every other radius here it is applied to a `rect` inside a `viewBox=0 0 40 40` and must scale with the mark -- 25% resolves to rx=10 on that grid at every size, which is what lets one drawing render correctly from Paper's 96px down to 20px. A fixed px radius cannot do that. */
|
|
189
215
|
|
|
190
216
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@boost33/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "The app shell every Boost33 product renders inside.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"sidebar-overflow-check": "npm run specimen:build && npx tsx scripts/sidebar-overflow-check.mts",
|
|
42
42
|
"wallet-name-overflow-check": "npm run specimen:build && npx tsx scripts/wallet-name-overflow-check.mts",
|
|
43
43
|
"nav-height-budget-check": "npm run specimen:build && npx tsx scripts/nav-height-budget-check.mts",
|
|
44
|
+
"launch-contrast-check": "npm run specimen:build && npx tsx scripts/launch-contrast-check.mts",
|
|
44
45
|
"token-order-check": "npx tsx scripts/token-order-check.mts",
|
|
45
46
|
"afk": "npx tsx .sandcastle/main.mts",
|
|
46
47
|
"hooks:install": "git config core.hooksPath .githooks",
|