Conversation
colors.css now holds the brand primitives under @theme static and registers the semantic tokens; semantic.css light/dark values reference primitives only. A new app changes the primitives and nothing else. @theme static keeps variables that only JS reads in the bundle, so the tab bar drops its fallback hex. Tab label colors become tokens read with useCSSVariable so they follow the theme. ESLint now fails on hex literals and Uniwind.getCSSVariable under src/; remaining example screens are listed in LEGACY_HEX_FILES. The prompt hook routes color questions to docs/colors-in-js.md, which records the decision, the light-only variant, and the rejected alternatives. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
feat(styles): primitive color layer and JS color guardrails
colors.css holds only the brand primitives; semantic.css registers the semantic tokens with light values and overrides them for dark. useColors reads every token through one useCSSVariable subscription and follows the theme, replacing the per-component reads and the tab-bar constant. ESLint now also fails on useCSSVariable outside use-colors.ts. use-colors.test checks token names, @theme static, and light/dark parity. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…alue iOS hides the keyboard on background but keeps the input focused, so tapping it after returning does nothing. Keyboard.dismiss() from the root layout clears the focus; keyboard-controller's dismiss() runs a frame late and has no effect here. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
textDecorationLine cannot set thickness or color and lands differently on iOS and Android. Both components draw the line as a view; the strikethrough sits at 50% minus half its height with no per-platform offset. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The three ../ imports (root layout css entry, tab button, deep-link gates) move to the alias. Same-folder ./ imports stay allowed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… dots Adds textClassName for the label alone, clamps the label to one line, skips the 60px Lottie for ghost/link so inline rows keep their layout, and recolors the white Lottie asset per variant through colorFilters read from useColors. The size variant and the template's shape are unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The h-11 box, border and background move from the TextInput to the wrapping view; the input keeps only font size (text-size-md, no line height) so Android does not push glyphs below the line box and out of alignment with the slots. Adds hint (shown when there is no error) and left/right slots, drops editable from the props in favor of disabled. Label and the template's shape stay. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Icon wraps the Svg and, when onPress is given, a Pressable with a 16pt default hitSlop. Pressable comes from react-native directly: importing the ui barrel from here creates a barrel/icons import cycle. The tab icons move onto it; their SVG paths are unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
lib/dayjs applies DEFAULT_LANGUAGE from lib/i18n once; callers import it instead of the dayjs package. formatUtils keeps only the locale-neutral helpers (number, signedNumber, parseNumber, optional, compactJoin, and date with a caller-supplied format). Currency, phone and address formats belong to each app. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- eslint.config.test.ts: stdin 과 가상 경로로 규칙 발동을 확인한다. 픽스처 파일이 없어 Metro 를 건드리지 않는다 - ui 배럴의 StyledSvg 삭제 — 사용처가 없고 SVG 색은 useColors() 문자열로 넘긴다 - global-overlays 의 View 를 @/components/ui 에서 가져온다 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
feat: port structure and behavior from carhartt-kr-app
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
chore(release): 0.1.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 0.1.0 — structure and behavior ported from carhartt-kr-app: primitive/semantic color tokens with
useColors(), Input wrapper structure with hint and slots, Button loading behavior, Icon base, UnderlineText/StrikethroughText, keyboard and debounce hooks, motion constants, dayjs and format helpers, import-path lint, and the color guardrail tests.Consumers: see
MIGRATION.md"v0.0.9 에서 올리기".🤖 Generated with Claude Code