@godxjp/ui 28.13.0 → 30.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/agent/START-HERE.md +29 -10
- package/agent/components/Anchor.json +6 -1
- package/agent/components/AppShell.json +1 -1
- package/agent/components/AreaChart.json +19 -1
- package/agent/components/BarChart.json +11 -1
- package/agent/components/Cascader.json +1 -1
- package/agent/components/CompactBarTrend.json +1 -1
- package/agent/components/DataState.json +1 -1
- package/agent/components/DataTable.json +4 -4
- package/agent/components/FormField.json +1 -1
- package/agent/components/InfiniteQueryState.json +1 -1
- package/agent/components/Input.json +1 -1
- package/agent/components/LineChart.json +20 -2
- package/agent/components/ListRow.json +1 -1
- package/agent/components/Masonry.json +1 -1
- package/agent/components/MasterDetail.json +1 -1
- package/agent/components/PasswordStrength.json +1 -1
- package/agent/components/PermissionMatrix.json +1 -1
- package/agent/components/Select.json +1 -0
- package/agent/components/Sidebar.json +1 -1
- package/agent/components/Table.json +8 -3
- package/agent/components/ThemeScope.json +49 -0
- package/agent/components/Topbar.json +1 -0
- package/agent/components/TopbarItem.json +2 -1
- package/agent/components/Transfer.json +1 -1
- package/agent/components/TreeSelect.json +1 -1
- package/agent/components/UploadCropDialog.json +1 -1
- package/agent/components/formatDate.json +1 -1
- package/agent/components-index.json +5 -0
- package/agent/components.json +138 -30
- package/agent/index.json +19 -9
- package/agent/llms.txt +10 -10
- package/agent/patterns/tenant-brand-color.json +28 -0
- package/agent/patterns-index.json +27 -0
- package/agent/patterns.json +28 -0
- package/agent/rules.json +15 -0
- package/agent/tokens.json +5055 -1060
- package/dist/app/index.d.ts +3 -0
- package/dist/app/index.js +3 -0
- package/dist/app/tenant-theme.d.ts +80 -0
- package/dist/app/tenant-theme.js +154 -0
- package/dist/app/theme-axes.d.ts +14 -1
- package/dist/app/theme-axes.js +24 -31
- package/dist/components/charts/chart-cartesian.d.ts +5 -1
- package/dist/components/charts/chart-cartesian.js +15 -8
- package/dist/components/data-display/badge.d.ts +1 -1
- package/dist/components/data-display/badge.js +21 -3
- package/dist/components/data-display/carousel.js +4 -4
- package/dist/components/data-display/data-table.js +13 -2
- package/dist/components/data-display/permission-matrix.js +1 -1
- package/dist/components/data-display/table.d.ts +11 -2
- package/dist/components/data-display/table.js +19 -3
- package/dist/components/data-entry/control-appearance.d.ts +12 -6
- package/dist/components/data-entry/control-appearance.js +1 -1
- package/dist/components/data-entry/select.js +4 -3
- package/dist/components/feedback/dialog.js +6 -3
- package/dist/components/feedback/overlay-header-tone.d.ts +7 -0
- package/dist/components/feedback/overlay-header-tone.js +4 -4
- package/dist/components/feedback/sheet.d.ts +1 -1
- package/dist/components/feedback/sheet.js +6 -9
- package/dist/components/feedback/sonner.js +16 -3
- package/dist/components/general/button.js +22 -5
- package/dist/components/layout/affix.js +15 -1
- package/dist/components/layout/sidebar.js +7 -1
- package/dist/components/navigation/anchor.d.ts +1 -1
- package/dist/components/navigation/anchor.js +5 -4
- package/dist/components/navigation/app-setting-picker.js +1 -1
- package/dist/components/navigation/pagination.js +1 -1
- package/dist/components/navigation/tabs.js +15 -2
- package/dist/components/query/infinite-query-state.d.ts +22 -6
- package/dist/contracts/measurement.json +1 -1
- package/dist/lib/control-styles.d.ts +31 -11
- package/dist/lib/control-styles.js +6 -6
- package/dist/lib/overlay-portal.d.ts +20 -0
- package/dist/lib/overlay-portal.js +93 -0
- package/dist/props/components/app.prop.d.ts +12 -0
- package/dist/props/components/charts.prop.d.ts +30 -0
- package/dist/props/components/index.d.ts +1 -1
- package/dist/props/components/navigation.prop.d.ts +21 -2
- package/dist/props/components/query.prop.d.ts +36 -2
- package/dist/props/registry.d.ts +46 -1
- package/dist/props/registry.js +38 -3
- package/dist/styles/alert-layout.css +39 -19
- package/dist/styles/badge-layout.css +11 -7
- package/dist/styles/base.css +14 -5
- package/dist/styles/card-layout.css +29 -16
- package/dist/styles/chart-layout.css +27 -5
- package/dist/styles/control.css +225 -103
- package/dist/styles/data-display-layout.css +178 -76
- package/dist/styles/data-entry-layout.css +35 -99
- package/dist/styles/dialog-layout.css +58 -28
- package/dist/styles/float-button-layout.css +5 -5
- package/dist/styles/focus-ring.css +11 -7
- package/dist/styles/layout.css +53 -25
- package/dist/styles/logo-layout.css +3 -3
- package/dist/styles/motion.css +2 -2
- package/dist/styles/navigation-layout.css +117 -44
- package/dist/styles/shell-layout.css +90 -124
- package/dist/styles/table-layout.css +66 -24
- package/dist/styles/text-layout.css +13 -4
- package/dist/styles/toggle.css +9 -3
- package/dist/tokens/components/actions.css +1 -1
- package/dist/tokens/components/attachments.css +4 -4
- package/dist/tokens/components/badge.css +4 -4
- package/dist/tokens/components/banner.css +1 -1
- package/dist/tokens/components/callout.css +1 -1
- package/dist/tokens/components/card.css +13 -8
- package/dist/tokens/components/chart.css +11 -2
- package/dist/tokens/components/chat-bubble.css +2 -2
- package/dist/tokens/components/control.css +41 -22
- package/dist/tokens/components/conversations.css +2 -1
- package/dist/tokens/components/data-display.css +23 -18
- package/dist/tokens/components/data-entry.css +1 -1
- package/dist/tokens/components/descriptions.css +2 -2
- package/dist/tokens/components/draggable-panel.css +2 -2
- package/dist/tokens/components/feedback.css +29 -9
- package/dist/tokens/components/float-button.css +1 -1
- package/dist/tokens/components/legal-document.css +2 -2
- package/dist/tokens/components/logo.css +2 -2
- package/dist/tokens/components/mega-menu.css +6 -4
- package/dist/tokens/components/navigation.css +27 -13
- package/dist/tokens/components/segmented.css +11 -6
- package/dist/tokens/components/separator.css +1 -1
- package/dist/tokens/components/shell.css +24 -10
- package/dist/tokens/components/table.css +13 -5
- package/dist/tokens/components/thought-chain.css +2 -2
- package/dist/tokens/components/toggle.css +3 -1
- package/dist/tokens/components/tree.css +3 -1
- package/dist/tokens/components/upload.css +8 -8
- package/dist/tokens/components/welcome.css +1 -1
- package/dist/tokens/foundation.css +30 -3
- package/docs/COMPOSITION-VS-COMPONENT.md +31 -0
- package/docs/CUSTOMER-THEMING.md +637 -1
- package/docs/FRAME-COVERAGE-REPORT.md +3 -2
- package/docs/GLASSMORPHISM-STANDARD.md +196 -0
- package/docs/THEME-API-COVERAGE.md +538 -0
- package/docs/TOKEN-RESOLUTION.md +195 -0
- package/docs/TOKENS.md +63 -24
- package/docs/asset-modules.d.ts +7 -0
- package/docs/data-display/charts.tsx +80 -0
- package/docs/data-display/data-table/index.tsx +30 -0
- package/docs/data-display/popover.tsx +1 -1
- package/docs/data-display/table.tsx +52 -0
- package/docs/feedback/sheet.tsx +10 -10
- package/docs/foundation/density.tsx +4 -4
- package/docs/i18n/messages/en.json +506 -0
- package/docs/i18n/messages/ja.json +506 -0
- package/docs/i18n/messages/vi.json +506 -0
- package/docs/layout/account-chip.tsx +2 -2
- package/docs/layout/responsive-grid.tsx +1 -1
- package/docs/navigation/toolbar.tsx +20 -12
- package/docs/providers/theme-scope.tsx +186 -0
- package/docs/showcase/caimono-price-comparison.tsx +911 -0
- package/docs/showcase/case4-login.tsx +2 -2
- package/docs/showcase/permission-matrix.tsx +13 -5
- package/docs/showcase/table-pagination.tsx +2 -1
- package/docs/showcase/tenant-brand-color.tsx +338 -0
- package/docs/showcase/theme-lab.tsx +2125 -0
- package/docs/themes/flat.css +462 -0
- package/docs/themes/glassmorphism.css +958 -0
- package/docs/themes/index.ts +219 -0
- package/docs/themes/neubrutalism.css +475 -0
- package/package.json +4 -3
- package/scripts/explain-token.mjs +382 -0
|
@@ -56,8 +56,8 @@ function DensitySample({ idPrefix }: { idPrefix: string }) {
|
|
|
56
56
|
return (
|
|
57
57
|
<Flex direction="col" gap="md">
|
|
58
58
|
<Input defaultValue="株式会社ベトヤ" aria-label="取引先名" />
|
|
59
|
-
<Select defaultValue="paid" name={`${idPrefix}-status`}>
|
|
60
|
-
<SelectTrigger id={`${idPrefix}-status`}
|
|
59
|
+
<Select aria-label="状態" defaultValue="paid" name={`${idPrefix}-status`}>
|
|
60
|
+
<SelectTrigger id={`${idPrefix}-status`}>
|
|
61
61
|
<SelectValue placeholder="状態を選択" />
|
|
62
62
|
</SelectTrigger>
|
|
63
63
|
<SelectContent>
|
|
@@ -216,8 +216,8 @@ export default function Demo() {
|
|
|
216
216
|
>
|
|
217
217
|
<Flex direction="col" gap="md">
|
|
218
218
|
<Input defaultValue="2024-04-12" aria-label="発行日" />
|
|
219
|
-
<Select defaultValue="JPY" name="page-currency">
|
|
220
|
-
<SelectTrigger id="page-currency"
|
|
219
|
+
<Select aria-label="通貨" defaultValue="JPY" name="page-currency">
|
|
220
|
+
<SelectTrigger id="page-currency">
|
|
221
221
|
<SelectValue placeholder="通貨を選択" />
|
|
222
222
|
</SelectTrigger>
|
|
223
223
|
<SelectContent>
|
|
@@ -695,5 +695,511 @@
|
|
|
695
695
|
}
|
|
696
696
|
}
|
|
697
697
|
}
|
|
698
|
+
},
|
|
699
|
+
"caimono": {
|
|
700
|
+
"brand": "Caimono",
|
|
701
|
+
"eyebrow": "Understand the price. Choose where to buy.",
|
|
702
|
+
"demo": "Interactive prototype. Products, merchants and prices are illustrative.",
|
|
703
|
+
"synthetic": "Illustrative product",
|
|
704
|
+
"product": "Aero H1 Wireless",
|
|
705
|
+
"productMeta": "Model AERO-H1 · {count} item · excludes H2 and bundles",
|
|
706
|
+
"variant": "Colour to compare",
|
|
707
|
+
"black": "Black · H1-BK",
|
|
708
|
+
"cream": "Cream · H1-CR",
|
|
709
|
+
"condition": "Condition",
|
|
710
|
+
"new": "New",
|
|
711
|
+
"used": "Used",
|
|
712
|
+
"lowest": "Lowest eligible total",
|
|
713
|
+
"noEligible": "No eligible price",
|
|
714
|
+
"incl": "Includes tax and known domestic delivery fees",
|
|
715
|
+
"couponActive": "Hako coupon deducted with your confirmation",
|
|
716
|
+
"couponInactive": "No coupon or reward points deducted",
|
|
717
|
+
"bestDetails": "View lowest offer",
|
|
718
|
+
"priceAlert": "Set price alert",
|
|
719
|
+
"save": "Save product",
|
|
720
|
+
"saved": "Product saved",
|
|
721
|
+
"offers": "Compare merchants",
|
|
722
|
+
"snapshot": "Illustrative data as of {date} (Japan time)",
|
|
723
|
+
"findShop": "Find a merchant in this table",
|
|
724
|
+
"searchPlaceholder": "Merchant name…",
|
|
725
|
+
"deliverTo": "Domestic delivery to",
|
|
726
|
+
"Tokyo": "Tokyo",
|
|
727
|
+
"Osaka": "Osaka",
|
|
728
|
+
"sort": "Sort by",
|
|
729
|
+
"totalSort": "Total: lowest first",
|
|
730
|
+
"deliverySort": "Delivery: soonest first",
|
|
731
|
+
"free": "Free domestic delivery",
|
|
732
|
+
"stockOnly": "In stock only",
|
|
733
|
+
"fast": "Delivery within {duration}",
|
|
734
|
+
"reset": "Clear filters",
|
|
735
|
+
"counts": "Offers: {total} · Eligible for ranking: {eligible}",
|
|
736
|
+
"shop": "Merchant",
|
|
737
|
+
"cash": "Total payable",
|
|
738
|
+
"delivery": "Delivery & warranty",
|
|
739
|
+
"action": "Action",
|
|
740
|
+
"breakdown": "Price breakdown",
|
|
741
|
+
"detailFor": "Price breakdown — {merchant}",
|
|
742
|
+
"best": "Lowest total",
|
|
743
|
+
"observed": "Observed {date}",
|
|
744
|
+
"itemValue": "Item: {amount}",
|
|
745
|
+
"shippingValue": "Domestic delivery: {amount}",
|
|
746
|
+
"discountValue": "Eligible coupon: −{amount}",
|
|
747
|
+
"unknownTotal": "Total cannot be calculated",
|
|
748
|
+
"unknown": "Unknown",
|
|
749
|
+
"eta": "Estimated {duration} (demo)",
|
|
750
|
+
"pointsValue": "Reward points: {count} · not deducted",
|
|
751
|
+
"stale": "Old price — recheck required",
|
|
752
|
+
"outStock": "Out of stock",
|
|
753
|
+
"needsShipping": "Delivery fee needs confirmation",
|
|
754
|
+
"inStock": "In stock",
|
|
755
|
+
"manufacturer": "Manufacturer warranty (demo)",
|
|
756
|
+
"sellerWarranty": "Merchant warranty (demo)",
|
|
757
|
+
"noResultTitle": "No matching merchants",
|
|
758
|
+
"noResultBody": "Try clearing filters or changing the merchant name. Missing data does not mean a zero price.",
|
|
759
|
+
"limitNote": "Only matching models, colours, conditions and markets with known totals are ranked. Confirm the final price with the merchant.",
|
|
760
|
+
"couponTitle": "Have a Hako coupon?",
|
|
761
|
+
"couponLabel": "I checked my eligibility for the {amount} discount",
|
|
762
|
+
"couponHelp": "Illustrative new-account coupon for Hako Market only. Never enabled automatically.",
|
|
763
|
+
"expires": "Expires {date} (Japan time)",
|
|
764
|
+
"whyRank": "How offers are ranked",
|
|
765
|
+
"rule1": "Same variant, condition and market.",
|
|
766
|
+
"rule2": "Fresh prices, available stock and complete fees come first.",
|
|
767
|
+
"rule3": "Commission does not determine ranking.",
|
|
768
|
+
"kaimiBody": "Reward points are not an immediate cash discount. Check the total first, then the conditions and expiry of points.",
|
|
769
|
+
"buyAssist": "Need help buying from Japan?",
|
|
770
|
+
"buyAssistBody": "Service fees, international shipping and unknown charges are separate. Domestic cost is not the landed cost.",
|
|
771
|
+
"quote": "View quote structure",
|
|
772
|
+
"historyTitle": "Lowest price over time",
|
|
773
|
+
"historyScope": "Illustrative data · black / new / Tokyo · before coupons · independent of current filters",
|
|
774
|
+
"period": "History period",
|
|
775
|
+
"historyMetric": "Known total, before reward points",
|
|
776
|
+
"date": "Sample date",
|
|
777
|
+
"price": "Sample total",
|
|
778
|
+
"reviewTitle": "Choose the right product before the lowest price",
|
|
779
|
+
"editorial": "Editorial reviews",
|
|
780
|
+
"editorialBody": "This illustrative product has not been tested. No test score or verified badge is shown.",
|
|
781
|
+
"community": "Community reviews",
|
|
782
|
+
"communityBody": "No reviews yet. Merchant ratings are not product quality ratings.",
|
|
783
|
+
"specTitle": "Illustrative specifications",
|
|
784
|
+
"model": "Model",
|
|
785
|
+
"modelValue": "AERO-H1",
|
|
786
|
+
"connection": "Connection",
|
|
787
|
+
"wireless": "Wireless",
|
|
788
|
+
"unit": "Items per offer",
|
|
789
|
+
"market": "Market",
|
|
790
|
+
"japan": "Japan",
|
|
791
|
+
"disclosure": "Commercial transparency",
|
|
792
|
+
"disclosureText": "No affiliate links are connected in this prototype. A live service must disclose commissions near the table and label sponsored placements separately. This demo excludes prices older than {duration} from the lowest-price claim.",
|
|
793
|
+
"footerNote": "Prototype · No live shops, payments or notifications.",
|
|
794
|
+
"close": "Close",
|
|
795
|
+
"breakdownTitle": "Understand what you pay",
|
|
796
|
+
"breakdownNote": "Illustrative data. No transaction or merchant-site redirect.",
|
|
797
|
+
"item": "Item price",
|
|
798
|
+
"shipping": "Domestic delivery",
|
|
799
|
+
"fee": "Mandatory fees",
|
|
800
|
+
"discount": "Eligible coupon",
|
|
801
|
+
"points": "Expected reward points",
|
|
802
|
+
"notDeducted": "Reward points are not deducted from cash payable.",
|
|
803
|
+
"notRankedExplain": "This offer is not eligible for the lowest-total label. The original price remains visible to explain stale or incomplete data.",
|
|
804
|
+
"alertTitle": "Set your target price",
|
|
805
|
+
"alertBody": "This demo stores a threshold on this device only. It sends no emails or notifications.",
|
|
806
|
+
"alertScope": "AERO-H1 · {variant} · {condition} · {destination} · JPY",
|
|
807
|
+
"alertLabel": "Alert when the total is at most (JPY)",
|
|
808
|
+
"alertHelp": "Positive whole amount. Excludes personal coupons and reward points.",
|
|
809
|
+
"alertSave": "Save demo threshold",
|
|
810
|
+
"alertSaved": "Threshold saved on this device. No real notification has been created.",
|
|
811
|
+
"storageFail": "Browser storage is unavailable. Your change was not saved.",
|
|
812
|
+
"favoriteOn": "Product saved in this browser.",
|
|
813
|
+
"favoriteOff": "Product removed from saved items in this browser.",
|
|
814
|
+
"quoteTitle": "Buying assistance: a two-stage quote",
|
|
815
|
+
"quoteBody": "This is an explanation, not a service quote. Known costs and charges needing confirmation must remain separate.",
|
|
816
|
+
"domestic": "Selected domestic purchase cost",
|
|
817
|
+
"assistFee": "Buying service fee",
|
|
818
|
+
"intlShip": "International shipping",
|
|
819
|
+
"importCost": "Import taxes and fees",
|
|
820
|
+
"landed": "Landed total",
|
|
821
|
+
"pendingQuote": "Quote required",
|
|
822
|
+
"notFinal": "Not yet confirmed",
|
|
823
|
+
"quoteNote": "No checkout while fees are unknown. The next step in a real service is requesting a quote.",
|
|
824
|
+
"merchants": {
|
|
825
|
+
"mori": "Mori Store",
|
|
826
|
+
"aoi": "Aoi Direct",
|
|
827
|
+
"hako": "Hako Market",
|
|
828
|
+
"kumo": "Kumo Shop",
|
|
829
|
+
"haru": "Haru Select",
|
|
830
|
+
"mika": "Mika Audio",
|
|
831
|
+
"neko": "Neko Outlet",
|
|
832
|
+
"other": "Other Model Shop"
|
|
833
|
+
}
|
|
834
|
+
},
|
|
835
|
+
"dataTableDocs": {
|
|
836
|
+
"stackedRecordWide": "Record collection (wide — stays a table)",
|
|
837
|
+
"stackedRecordFolded": "Same table, same column definitions (narrow — folds into cards)"
|
|
838
|
+
},
|
|
839
|
+
"chartsDocs": {
|
|
840
|
+
"areaSplitTitle": "AreaChart · fill apart from stroke / cropped value axis",
|
|
841
|
+
"areaSplitBody": "series[].fillColor sets the band's colour independently of the line's color, and valueDomain / valueTicks state the value axis outright. A non-zero baseline is legitimate only where the SHAPE is the message and zero is not a meaningful reference — a price, a temperature, an index, a latency percentile. In any figure that asks the reader to compare magnitudes (every bar chart), it exaggerates the wobble and misleads. If you crop, say the range and keep the grid.",
|
|
842
|
+
"areaSplitLabel": "Weekly price (cropped to ¥24,000–31,000)",
|
|
843
|
+
"areaSplitDescription": "Not zero-based. The axis runs ¥24,000–31,000.",
|
|
844
|
+
"priceSeries": "Price",
|
|
845
|
+
"tokenScopeTitle": "Theme tokens · scoped to a region",
|
|
846
|
+
"tokenScopeBody": "Stroke weight, band density and grid dash are house style, so they are tokens rather than props. --chart-series-stroke-width / --chart-area-fill-alpha / --chart-grid-line-dash are set on the block below and nowhere else. No page-local CSS, no raw recharts.",
|
|
847
|
+
"tokenScopeLabel": "Weekly price (themed)"
|
|
848
|
+
},
|
|
849
|
+
"themeScopeDocs": {
|
|
850
|
+
"page": {
|
|
851
|
+
"subtitle": "A themed region whose overlays keep the region's tokens.",
|
|
852
|
+
"title": "ThemeScope"
|
|
853
|
+
},
|
|
854
|
+
"intro": {
|
|
855
|
+
"title": "Why a region needs this at all",
|
|
856
|
+
"description": "Every overlay portals to document.body, so custom-property inheritance stops at the portal boundary.",
|
|
857
|
+
"body": "A region that themes itself themes its own subtree and nothing it opens: measured on a scoped theme, the region read --primary 204 100% 37% and the Dialog it opened read 268.7 100% 50%, the package default. ThemeScope carries the computed difference between the region and the document root to a host at the portal destination, so the overlay inherits it by containment. It has no theme prop — it reads the DOM, which is why an inline style, a class and a stylesheet rule all behave the same."
|
|
858
|
+
},
|
|
859
|
+
"region": {
|
|
860
|
+
"description": "Open anything here. The panel it opens is painted by this region.",
|
|
861
|
+
"pending": "Awaiting review",
|
|
862
|
+
"queue": "12 submissions in the queue",
|
|
863
|
+
"reviewerLabel": "Assign a reviewer",
|
|
864
|
+
"reviewerPlaceholder": "Choose a reviewer",
|
|
865
|
+
"approve": "Approve submission",
|
|
866
|
+
"history": "Review history",
|
|
867
|
+
"notify": "Notify the submitter"
|
|
868
|
+
},
|
|
869
|
+
"dialog": {
|
|
870
|
+
"title": "Approve this submission",
|
|
871
|
+
"description": "The approval is recorded against your account and the submitter is notified immediately.",
|
|
872
|
+
"confirm": "Approve",
|
|
873
|
+
"body": "Three submissions from this customer are waiting on the same evidence pack."
|
|
874
|
+
},
|
|
875
|
+
"popover": {
|
|
876
|
+
"body": "Returned once for missing evidence, resubmitted the same day."
|
|
877
|
+
},
|
|
878
|
+
"toast": {
|
|
879
|
+
"approved": "Submission approved",
|
|
880
|
+
"saved": "The submitter has been notified"
|
|
881
|
+
},
|
|
882
|
+
"acme": {
|
|
883
|
+
"name": "ACME Logistics"
|
|
884
|
+
},
|
|
885
|
+
"night": {
|
|
886
|
+
"name": "Night shift console"
|
|
887
|
+
},
|
|
888
|
+
"without": {
|
|
889
|
+
"title": "The same region without ThemeScope",
|
|
890
|
+
"description": "The tokens are declared exactly as above — only the wrapper is a plain div.",
|
|
891
|
+
"open": "Approve submission",
|
|
892
|
+
"dialogTitle": "Approve this submission",
|
|
893
|
+
"dialogDescription": "This panel is the defect: it is painted by the package defaults, not by the region that opened it.",
|
|
894
|
+
"dialogBody": "Compare the button that opened it with the button inside it: the region's colour did not travel."
|
|
895
|
+
}
|
|
896
|
+
},
|
|
897
|
+
"tableDocs": {
|
|
898
|
+
"title": "Cash movements · row tone",
|
|
899
|
+
"item": "Item",
|
|
900
|
+
"amount": "Amount",
|
|
901
|
+
"status": "Status",
|
|
902
|
+
"fee": "Transfer fee",
|
|
903
|
+
"done": "Processed",
|
|
904
|
+
"overdue": "Payment 3 days overdue",
|
|
905
|
+
"check": "Needs review",
|
|
906
|
+
"failed": "Direct debit failed",
|
|
907
|
+
"failedBadge": "Failed"
|
|
908
|
+
},
|
|
909
|
+
"themeLab": {
|
|
910
|
+
"page": {
|
|
911
|
+
"title": "Theme lab",
|
|
912
|
+
"subtitle": "One page, every component that can render, several themes, several seed colours. A theme here is custom properties and nothing else.",
|
|
913
|
+
"footer": "The URL carries the theme and the seed, so a screenshot and a measurement address the same cell of the matrix."
|
|
914
|
+
},
|
|
915
|
+
"product": "Theme Lab",
|
|
916
|
+
"switch": {
|
|
917
|
+
"title": "Theme and seed",
|
|
918
|
+
"note": "Adding a theme is one CSS file plus one row in docs/themes/index.ts. This page is never edited for it.",
|
|
919
|
+
"themeLabel": "Theme",
|
|
920
|
+
"seedLabel": "Seed colour",
|
|
921
|
+
"modeLabel": "Polarity",
|
|
922
|
+
"seedHex": "Seed",
|
|
923
|
+
"seedInk": "Label on the seed",
|
|
924
|
+
"seedContrast": "Label contrast, WCAG 2.2 SC 1.4.3",
|
|
925
|
+
"legendPass": "4.5:1 or better",
|
|
926
|
+
"legendFail": "below AA"
|
|
927
|
+
},
|
|
928
|
+
"mode": {
|
|
929
|
+
"light": "Light",
|
|
930
|
+
"dark": "Dark"
|
|
931
|
+
},
|
|
932
|
+
"theme": {
|
|
933
|
+
"base": {
|
|
934
|
+
"name": "Default",
|
|
935
|
+
"note": "The library's own theme. No theme file and no overrides — the control that shows what these components look like unthemed."
|
|
936
|
+
},
|
|
937
|
+
"glass": {
|
|
938
|
+
"name": "Glassmorphism",
|
|
939
|
+
"note": "Frosted translucent panels, a backdrop blur with saturation, a thin light edge and layered depth over a vivid ground."
|
|
940
|
+
},
|
|
941
|
+
"flat": {
|
|
942
|
+
"name": "Flat",
|
|
943
|
+
"note": "No corners, no shadow, opaque surfaces separated by a line. Squaring one number costs sixty-seven declarations."
|
|
944
|
+
},
|
|
945
|
+
"neubrutalism": {
|
|
946
|
+
"name": "Neubrutalism",
|
|
947
|
+
"note": "Thick black borders, hard offset shadows with no blur, square corners and loud saturated fills. Thickening a border costs 22 declarations and still reaches only a fifth of them."
|
|
948
|
+
}
|
|
949
|
+
},
|
|
950
|
+
"seed": {
|
|
951
|
+
"violet": "Violet",
|
|
952
|
+
"azure": "Azure",
|
|
953
|
+
"coral": "Coral",
|
|
954
|
+
"citron": "Citron",
|
|
955
|
+
"navy": "Navy"
|
|
956
|
+
},
|
|
957
|
+
"nav": {
|
|
958
|
+
"section": "Workspace",
|
|
959
|
+
"overview": "Overview",
|
|
960
|
+
"reports": "Reports",
|
|
961
|
+
"people": "People",
|
|
962
|
+
"settings": "Settings",
|
|
963
|
+
"role": "Administrator",
|
|
964
|
+
"footer": "Signed in"
|
|
965
|
+
},
|
|
966
|
+
"app": {
|
|
967
|
+
"console": "Console",
|
|
968
|
+
"billing": "Billing"
|
|
969
|
+
},
|
|
970
|
+
"topbar": {
|
|
971
|
+
"notifications": "Notifications",
|
|
972
|
+
"account": "Account"
|
|
973
|
+
},
|
|
974
|
+
"menu": {
|
|
975
|
+
"profile": "Profile",
|
|
976
|
+
"billing": "Billing",
|
|
977
|
+
"logout": "Sign out"
|
|
978
|
+
},
|
|
979
|
+
"popover": {
|
|
980
|
+
"title": "Two new items",
|
|
981
|
+
"body": "Nothing needs your attention right now.",
|
|
982
|
+
"action": "Mark all as read"
|
|
983
|
+
},
|
|
984
|
+
"section": {
|
|
985
|
+
"type": "Type, marks and rhythm",
|
|
986
|
+
"typeNote": "The ink ramp is the first thing a translucent surface breaks, so every step of it is on the page at once.",
|
|
987
|
+
"actions": "Actions",
|
|
988
|
+
"display": "Status and data display",
|
|
989
|
+
"tables": "Tables",
|
|
990
|
+
"charts": "Charts",
|
|
991
|
+
"fields": "Form controls",
|
|
992
|
+
"fieldsNote": "A field has to read as a place you can type before it reads as a theme: fill, border, focus ring, placeholder and the filled and empty states are all here.",
|
|
993
|
+
"nav": "Navigation",
|
|
994
|
+
"feedback": "Feedback",
|
|
995
|
+
"overlays": "Overlays",
|
|
996
|
+
"overlaysNote": "These are opened by the measurement, not merely present. Each one portals out of this subtree and reaches the theme through ThemeScope's overlay host.",
|
|
997
|
+
"regions": "Regions that nest",
|
|
998
|
+
"chat": "Conversational",
|
|
999
|
+
"absent": "Could not be rendered",
|
|
1000
|
+
"absentNote": "An absence nobody can see is an absence nobody accounts for."
|
|
1001
|
+
},
|
|
1002
|
+
"absent": {
|
|
1003
|
+
"export": "Export",
|
|
1004
|
+
"reason": "Reason",
|
|
1005
|
+
"provider": "A provider, already mounted above this page by the preview runtime.",
|
|
1006
|
+
"overlayPortal": "A provider that re-parents every overlay portal; mounting it here would replace the ThemeScope host this page exists to measure.",
|
|
1007
|
+
"themeScope": "It is this page's own wrapper.",
|
|
1008
|
+
"ownsPage": "A shell that owns the whole document; it cannot nest inside AppShell.",
|
|
1009
|
+
"hook": "A hook. It has no surface of its own to paint.",
|
|
1010
|
+
"function": "A function, not a component.",
|
|
1011
|
+
"inertia": "An Inertia adapter; it needs a router this preview does not have.",
|
|
1012
|
+
"needsFile": "It needs a real File chosen from a file input.",
|
|
1013
|
+
"needsNetwork": "It needs a network image; committed assets are used instead.",
|
|
1014
|
+
"needsRouter": "It needs a route and a prefetchable query.",
|
|
1015
|
+
"needsQuery": "It needs a live TanStack Query result, which is data rather than theme.",
|
|
1016
|
+
"invisible": "It is on the page, and by definition it paints nothing.",
|
|
1017
|
+
"needsSchema": "It needs a zod schema, and check:example-imports allows a docs page to import only react, lucide-react and @godxjp/ui.",
|
|
1018
|
+
"sameSurface": "The composed form of AlertDialog, which is on the page; it paints no new surface."
|
|
1019
|
+
},
|
|
1020
|
+
"action": {
|
|
1021
|
+
"save": "Save",
|
|
1022
|
+
"cancel": "Cancel",
|
|
1023
|
+
"secondary": "Secondary",
|
|
1024
|
+
"outline": "Outline",
|
|
1025
|
+
"ghost": "Ghost",
|
|
1026
|
+
"dashed": "Dashed",
|
|
1027
|
+
"destructive": "Delete",
|
|
1028
|
+
"link": "Link",
|
|
1029
|
+
"disabled": "Disabled",
|
|
1030
|
+
"search": "Search",
|
|
1031
|
+
"bold": "Bold",
|
|
1032
|
+
"unread": "Unread",
|
|
1033
|
+
"retry": "Try again",
|
|
1034
|
+
"more": "More",
|
|
1035
|
+
"share": "Share",
|
|
1036
|
+
"open": "Open"
|
|
1037
|
+
},
|
|
1038
|
+
"align": {
|
|
1039
|
+
"start": "Start",
|
|
1040
|
+
"center": "Centre",
|
|
1041
|
+
"end": "End"
|
|
1042
|
+
},
|
|
1043
|
+
"label": {
|
|
1044
|
+
"variants": "Variants",
|
|
1045
|
+
"sizes": "Sizes",
|
|
1046
|
+
"toggles": "Toggles and rating",
|
|
1047
|
+
"actionsBar": "Response actions",
|
|
1048
|
+
"badges": "Badges and swatches",
|
|
1049
|
+
"items": "items",
|
|
1050
|
+
"align": "Alignment",
|
|
1051
|
+
"progress": "Storage used",
|
|
1052
|
+
"people": "Team",
|
|
1053
|
+
"tools": "Tools",
|
|
1054
|
+
"schedule": "Schedule",
|
|
1055
|
+
"week": "Week",
|
|
1056
|
+
"start": "Start of range",
|
|
1057
|
+
"end": "End of range",
|
|
1058
|
+
"permissions": "Permissions",
|
|
1059
|
+
"quickPick": "Quick pick",
|
|
1060
|
+
"noResults": "Nothing to show",
|
|
1061
|
+
"available": "Available",
|
|
1062
|
+
"selected": "Selected",
|
|
1063
|
+
"qr": "Enrolment QR code",
|
|
1064
|
+
"thumbnail": "A dashboard screenshot",
|
|
1065
|
+
"credential": "API key",
|
|
1066
|
+
"detail": "Detail",
|
|
1067
|
+
"master": "List",
|
|
1068
|
+
"catalog": "Add from the catalogue",
|
|
1069
|
+
"mainNav": "Main navigation",
|
|
1070
|
+
"onThisPage": "On this page",
|
|
1071
|
+
"pinned": "Pinned bar",
|
|
1072
|
+
"skeletons": "Loading placeholders",
|
|
1073
|
+
"assistant": "Assistant",
|
|
1074
|
+
"loading": "Loading",
|
|
1075
|
+
"rating": "Rating"
|
|
1076
|
+
},
|
|
1077
|
+
"table": {
|
|
1078
|
+
"name": "Name",
|
|
1079
|
+
"owner": "Owner",
|
|
1080
|
+
"status": "Status",
|
|
1081
|
+
"amount": "Amount"
|
|
1082
|
+
},
|
|
1083
|
+
"tone": {
|
|
1084
|
+
"neutral": "Neutral",
|
|
1085
|
+
"success": "Approved",
|
|
1086
|
+
"warning": "Waiting",
|
|
1087
|
+
"destructive": "Rejected",
|
|
1088
|
+
"info": "Information"
|
|
1089
|
+
},
|
|
1090
|
+
"stat": {
|
|
1091
|
+
"members": "Members",
|
|
1092
|
+
"revenue": "Revenue",
|
|
1093
|
+
"usage": "Usage",
|
|
1094
|
+
"open": "Open requests",
|
|
1095
|
+
"hint": "Up 3% on last month"
|
|
1096
|
+
},
|
|
1097
|
+
"chart": {
|
|
1098
|
+
"trend": "Plan against actual",
|
|
1099
|
+
"plan": "Plan",
|
|
1100
|
+
"actual": "Actual",
|
|
1101
|
+
"byMonth": "By month",
|
|
1102
|
+
"stacked": "Stacked",
|
|
1103
|
+
"split": "Split",
|
|
1104
|
+
"weekly": "Last seven days"
|
|
1105
|
+
},
|
|
1106
|
+
"field": {
|
|
1107
|
+
"name": "Name",
|
|
1108
|
+
"namePlaceholder": "Two to sixty characters",
|
|
1109
|
+
"email": "Email",
|
|
1110
|
+
"emailError": "That is not an email address.",
|
|
1111
|
+
"search": "Search",
|
|
1112
|
+
"searchPlaceholder": "Search by name or id",
|
|
1113
|
+
"quantity": "Quantity",
|
|
1114
|
+
"password": "Password",
|
|
1115
|
+
"notes": "Notes",
|
|
1116
|
+
"tags": "Labels",
|
|
1117
|
+
"role": "Role",
|
|
1118
|
+
"date": "Date",
|
|
1119
|
+
"time": "Time",
|
|
1120
|
+
"timeRange": "Shift",
|
|
1121
|
+
"colour": "Brand colour",
|
|
1122
|
+
"volume": "Volume",
|
|
1123
|
+
"region": "Region",
|
|
1124
|
+
"account": "Account",
|
|
1125
|
+
"notify": "Email notifications",
|
|
1126
|
+
"agree": "I accept the terms",
|
|
1127
|
+
"scope": "Applies to"
|
|
1128
|
+
},
|
|
1129
|
+
"role": {
|
|
1130
|
+
"viewer": "Viewer",
|
|
1131
|
+
"editor": "Editor",
|
|
1132
|
+
"admin": "Administrator"
|
|
1133
|
+
},
|
|
1134
|
+
"perm": {
|
|
1135
|
+
"read": "Read",
|
|
1136
|
+
"write": "Write",
|
|
1137
|
+
"admin": "Administer"
|
|
1138
|
+
},
|
|
1139
|
+
"overlay": {
|
|
1140
|
+
"dialog": "Open dialog",
|
|
1141
|
+
"sheet": "Open sheet",
|
|
1142
|
+
"alertDialog": "Confirm deletion",
|
|
1143
|
+
"tooltip": "Hover for a tooltip",
|
|
1144
|
+
"toast": "Show toast",
|
|
1145
|
+
"toastMessage": "Saved.",
|
|
1146
|
+
"twoFactor": "Set up two-factor",
|
|
1147
|
+
"inlineNote": "The Select listbox is an overlay too: it needs the most opaque fill of the three, because a menu sits over arbitrary content."
|
|
1148
|
+
},
|
|
1149
|
+
"error": {
|
|
1150
|
+
"title": "You do not have access to this report"
|
|
1151
|
+
},
|
|
1152
|
+
"auth": {
|
|
1153
|
+
"title": "Sign in",
|
|
1154
|
+
"requester": "Theme Lab is requesting access",
|
|
1155
|
+
"switch": "Switch account",
|
|
1156
|
+
"or": "or",
|
|
1157
|
+
"terms": "Terms",
|
|
1158
|
+
"privacy": "Privacy"
|
|
1159
|
+
},
|
|
1160
|
+
"chat": {
|
|
1161
|
+
"welcomeTitle": "Good afternoon",
|
|
1162
|
+
"welcomeBody": "Ask about invoices, expenses or attendance.",
|
|
1163
|
+
"assistant": "How can I help?",
|
|
1164
|
+
"user": "Summarise yesterday's invoices.",
|
|
1165
|
+
"assistantName": "Assistant",
|
|
1166
|
+
"userName": "You",
|
|
1167
|
+
"thoughts": "Steps taken",
|
|
1168
|
+
"placeholder": "Write a message"
|
|
1169
|
+
},
|
|
1170
|
+
"sample": {
|
|
1171
|
+
"alpha": "Northern district",
|
|
1172
|
+
"beta": "Central office",
|
|
1173
|
+
"gamma": "Southern depot",
|
|
1174
|
+
"delta": "Harbour annexe",
|
|
1175
|
+
"epsilon": "Field team",
|
|
1176
|
+
"one": "Pham Thai Duong",
|
|
1177
|
+
"two": "Mai Sato",
|
|
1178
|
+
"three": "Diego Costa",
|
|
1179
|
+
"short": "Updated a few minutes ago.",
|
|
1180
|
+
"long": "A tidy board is the defect, not the deliverable: this row carries a three-line label beside a one-word one, an unbreakable token beside an empty slot, and the longest string the layout will ever be handed.",
|
|
1181
|
+
"headline": "Can this component set wear a complex theme?",
|
|
1182
|
+
"linkLabel": "Read the token-resolution rules",
|
|
1183
|
+
"codeLabel": "Theme excerpt",
|
|
1184
|
+
"secure": "Session is encrypted",
|
|
1185
|
+
"syncing": "Syncing",
|
|
1186
|
+
"marqueeLabel": "Pause the scrolling list",
|
|
1187
|
+
"aspectTitle": "A fixed-ratio region"
|
|
1188
|
+
},
|
|
1189
|
+
"launcher": {
|
|
1190
|
+
"trigger": "Apps",
|
|
1191
|
+
"title": "Switch app"
|
|
1192
|
+
},
|
|
1193
|
+
"org": {
|
|
1194
|
+
"trigger": "Organisation"
|
|
1195
|
+
},
|
|
1196
|
+
"twoFactor": {
|
|
1197
|
+
"title": "Set up two-factor authentication",
|
|
1198
|
+
"description": "Scan the code with an authenticator app, then enter the six digits it shows.",
|
|
1199
|
+
"manualKey": "Or enter this key by hand",
|
|
1200
|
+
"code": "Six-digit code",
|
|
1201
|
+
"recovery": "Store these recovery codes somewhere safe. They are shown once.",
|
|
1202
|
+
"acknowledge": "I have saved them"
|
|
1203
|
+
}
|
|
698
1204
|
}
|
|
699
1205
|
}
|