Skip to content

Fix/progress bar track color attr#6

Merged
shanerbaner82 merged 8 commits into
mainfrom
fix/progress-bar-track-color-attr
Jul 12, 2026
Merged

Fix/progress bar track color attr#6
shanerbaner82 merged 8 commits into
mainfrom
fix/progress-bar-track-color-attr

Conversation

@shanerbaner82

Copy link
Copy Markdown
Contributor

No description provided.

shanerbaner82 and others added 8 commits July 11, 2026 12:01
applyAttributes only matched trackColor, but attributes reach elements
verbatim and the docs use track-color — the documented spelling was
silently dropped. Accept both, matching every other element.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
line-height / line-height-px now work alongside the camelCase forms,
matching how every other attribute on these elements is matched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Light/dark color tokens now resolve through core's
TailwindParser::resolveColorValue() on load/merge, so the config
accepts Tailwind palette names ('violet-600'), opacity modifiers
('red-300/20', '#8B5CF6/50'), and CSS alpha hex ('#8B5CF680') alongside
plain hex. Unrecognized strings pass through untouched.

Dark-mode auto-derivation (invertLuminance) now carries the alpha byte
through instead of skipping 8-digit values.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every element color prop — ActivityIndicator/BareTextInput/Icon/
ProgressBar color setters, ListItem's styling setters, monogram and
icon-tile colors, and the badge color / swipe-action tint payloads —
now routes through the shared ResolvesColorValues trait, so
'red-300', 'red-300/20', and '#8B5CF680' work everywhere hex did.
Unrecognized strings still pass through to the native fallbacks.

Icon also accepts :ios / :android platform enum attributes in blade,
matching the programmatic Icon::make(ios: …, android: …) shape.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Secondary: iOS used `.bordered` (renders its tint at ~15% opacity — the
fuchsia token washed to pale pink under a white onSecondary label) and
Android baked in a 0.7 tonal alpha. Both now fill the secondary token
solid like every other variant; a tonal look is authored on the token
itself ('secondary' => 'fuchsia-500/70').

Disabled/loading: both platforms now draw surface-variant fill +
on-surface-variant label instead of the platform defaults (M3's
onSurface-at-38%; iOS's system gray under a persisted explicit white
foregroundStyle). The iOS loading spinner gets an explicit tint so it
no longer inherits the pale disabled fill and vanishes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Document the shared authoring grammar — Tailwind palette names,
/N opacity modifiers, CSS #RRGGBBAA alpha hex — for theme tokens,
element color props, and arbitrary classes; the surface-variant /
on-surface-variant disabled-state tokens; and blade <icon :ios/:android>
enum attributes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d chrome

The theme's font-family token (config/native-ui.php) was plumbed to the
native stores but consumed by nothing. Every visible-text site now falls
back to it, with precedence: element font attr > font-serif/font-mono >
theme default > system.

iOS: nuiScaledFont resolves the default inside NUIScaledFontModifier
(theme-observing), the composed text-run path mirrors it, and
NativeUITheme.apply() sets UINavigationBar appearance title fonts so
system-drawn (large) titles follow the app default. 12 renderer sites
converted from semantic fonts to nuiScaledFont (list items, list section
headers/footers, checkbox/radio/select labels, nav titles/labels).

Android: nuiThemeDefaultFontFamily/nuiDefaultFontFamily helpers + a
fontFamily pass at 29 Text sites (badge, chips, checkboxes, radios,
toggle, tabs, list + list items, select, input slots, nav). Core chrome
fonts wholesale through the new NativeUIThemeProvider typography seam,
populated with nuiThemeDefaultTypography (all 15 M3 styles, family-only
swap); per-bar font_name props resolve through the fontFamilyResolver
seam registered in registerNativeUIChrome.

Intentionally skipped: SwiftUI Menu items and the modal close glyph
(system-styled). Element-level font/leading serialization pinned in
tests/FontTypographyTest.php.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…onts

php artisan native:font Lobster ("Rock Salt", multiple families,
--weights=400,700, --italic) downloads TTFs straight from Google with no
API key: the css2 endpoint serves truetype src urls to non-browser user
agents, so we request the stylesheet, parse the @font-face blocks, and
fetch the files. A 400 doubles as family-not-found. Files land as
<Family>-<Style>.ttf (Google's zip naming) — ready-made font="…" tokens.

--default (or an interactive confirm) writes the theme's font-family in
config/native-ui.php, publishing the stub first when the app hasn't.
Pure logic (spec building, css parsing, filenames, config rewrite) lives
in Fonts\GoogleFonts — the plugin test env has no illuminate/console, so
testable code can't sit on the Command. Covered in GoogleFontsTest,
including a regression guard that the config rewrite keeps matching the
shipped stub.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@shanerbaner82 shanerbaner82 merged commit 42bcf7a into main Jul 12, 2026
2 checks passed
@shanerbaner82 shanerbaner82 deleted the fix/progress-bar-track-color-attr branch July 12, 2026 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant